TXT파일로 적들이 편대를 이뤄 날아오도록 구현해보겠습니다.
바탕화면에 TXT파일을 하나 생성해주고, 유니티 프로젝트에도 빈 폴더를 하나 생성해, 그곳에 드래그 앤드랍으로 넣어줍니다.
위 Stage0을 더블클릭하면 VS가 열리는데, 여기서 txt 파일을 수정하여 인게임에 적용시킬 수 있습니다.
txt 내용은 아래 형식처럼 스폰딜레이 시간, 적 타입, 스폰 포지션 순이며 커서가 마지막 줄 바로 오른쪽에 있도록 합니다.
그리고 Spawn 스크립트를 하나 만들어주고 아래 코드를 입력합니다.
public class Spawn //MonoBehaviour 상속 불필요!
{
public float delay; //스폰 딜레이
public string type; //적 타입
public int point; // 스폰 포지션
}
GameManager 스크립트에 코드를 추가합니다.
using System.IO; //파일 입출력 처리
//File
public List<Spawn> spawnList;
public int spawnIndex;
public bool spawnEnd;
void Awake()
{
spawnList = new List<Spawn>(); //리스트 초기화
enemyObjs = new string[] { "EnemyS", "EnemyM", "EnemyL"};
readSpawnFile(); //파일 초기화 함수 호출
}
void readSpawnFile() {
//변수 초기화
spawnList.Clear();
spawnIndex = 0;
spawnEnd = false;
//리스폰 파일 읽기
TextAsset textFile = Resources.Load("Stage0") as TextAsset;
StringReader stringReader = new StringReader(textFile.text);
while (stringReader != null)
{
string line = stringReader.ReadLine();
if (line == null) break;
//리스폰 데이터 생성
Spawn spawnData = new Spawn();
spawnData.delay = float.Parse(line.Split(',')[0]);
spawnData.type = line.Split(',')[1];
spawnData.point = int.Parse(line.Split(',')[2]);
spawnList.Add(spawnData);
}
//텍스트 파일 닫기
stringReader.Close();
//첫번째 스폰 딜레이 적용
nextSpawnDelay = spawnList[0].delay;
}
void spawnEnemy() {
//Enemy Spawn
int enemyIndex = 0;
switch (spawnList[spawnIndex].type) {
case "S":
enemyIndex = 0;
break;
case "M":
enemyIndex = 1;
break;
case "L":
enemyIndex = 2;
break;
}
int enemyPoint = spawnList[spawnIndex].point;
//int ranEnemy = Random.Range(0, 3);
//int ranPoint = Random.Range(0, 9);
GameObject enemy = objectManager.makeObj(enemyObjs[enemyIndex]);
//Instantiate(enemyObjs[ranEnemy], spawnPoint[ranPoint].position, spawnPoint[ranPoint].rotation);
enemy.transform.position = spawnPoint[enemyPoint].position;
...
// 리스폰 인덱스 증가
spawnIndex++;
if (spawnIndex == spawnList.Count) {
spawnEnd = true;
return;
}
//다음 리스폰 딜레이 갱신
nextSpawnDelay = spawnList[spawnIndex].delay;
}
결과
'종스크롤 슈팅게임(1942)' 카테고리의 다른 글
11. 탄막슈팅 보스만들기 (0) | 2022.01.27 |
---|---|
10. 보조슈터 만들기 (0) | 2022.01.25 |
8. 오브젝트 풀링 (0) | 2022.01.25 |
7. 원근감 있는 무한 배경 만들기 (0) | 2022.01.21 |
6. 아이템과 필살기 구현하기 (0) | 2022.01.20 |