Priv's Blog
Programming Basics: Unit 2 - Basic Gameplay) Lesson 2.3 - Random Animal Stampede 본문
Programming Basics: Unit 2 - Basic Gameplay) Lesson 2.3 - Random Animal Stampede
Priv 2021. 2. 14. 15:07출처
1. 서언
(영상: 링크 참조)
2. spawn manager 생성하기
여러분이 이러한 복잡한 오브젝트 생성을 모두 처리하시려면, 프로세스를 관리하기 위한 전용 스크립트와 연결할 오브젝트가 필요합니다.
(영상: 링크 참조)
- hierarchy에서 빈 오브젝트(empty object) "SpawnManager"를 생성해주세요.
- "SpawnManager" 라는 이름의 새로운 스크립트를 생성하시고, Spawn Manager 오브젝트에 연결 후 파일을 열어주세요.
- public GameObject[] animalPrefabs;를 새로 선언해주세요.
- inspectior에서, 배열 크기를 여러분의 동물 수만큼 조정해주시고, 여러분의 동물들을 배열에 드래그하여 할당해주세요.
3. S 키를 눌렀을 때 동물이 생성되도록 만들기
이제 배열을 생성했고, 이 배열에 여러분의 동물들을 할당해주었습니다. 하지만 아직 게임이 진행되는 동안 동물들이 생성되는 기능을 구현할 때까지는 별 의미가 없습니다. 이번에는 동물들의 생성 및 선택을 위한 임시 해결책을 만들어보겠습니다.
(영상: 링크 참조)
- Update() 내에 if문을 작성하여 S 키를 입력했을 때, 새로운 동물 프리팹이 화면 상단에서 인스턴스화 되도록 만들어주세요.
- public int animalIndex 를 새로 선언하시고, 이를 Instantiate 호출 코드에 기입하셔서 Inspector에서 값을 수정할 수 있는지 테스트해주세요.
public GameObject[] animalPrefabs;
public int animalIndex;
void Update() {
if (Input.GetKeyDown(KeyCode.S)) {
Instantiate(animalPrefabs[animalIndex], new Vector3(0, 0, 20),
animalPrefabs[animalIndex].transform.rotation);
}
}
4. 배열을 이용해 동물이 무작위로 생성되게 만들기
S 키를 누르면 동물이 생성되도록 만들었지만 여러분이 지정한 배열의 인덱스 값에 해당되는 동물만 생성되고 있습니다. 이제 무작위 선정 기능을 통해 S 키를 눌렀을 때, 여러분의 지정한 값이 아닌 인덱스 값에 기반하여 동물들이 무작위로 생성되도록 만들어야 합니다.
(영상: 링크 참조)
- if 문을 이용해 S 키를 눌렀을 때, 0부터 배열의 길이 사이의 int animalIndex 값을 무작위로 생성하도록 만들어주세요.
- if 문 내에는 지역 변수만 필요하므로, animalIndex 전역 변수를 삭제해주세요.
public GameObject[] animalPrefabs;
void Update() {
if (Input.GetKeyDown(KeyCode.S)) {
int animalIndex = Random.Range(0, animalPrefabs.Length);
Instantiate(animalPrefabs[animalIndex], new Vector3(0, 0, 20),
animalPrefabs[animalIndex].transform.rotation);
}
}
5. 생성 좌표 무작위로 설정하기
S 키를 눌러 무작위로 animalIndex 변수 값을 사용해 동물들을 생성할 수 있게 되었지만, 동물들이 모두 같은 위치에 생성되고 있습니다! 동물들의 생성 위치를 무작위로 지정하여 동물들이 화면에서 일직선으로 행진하지 않도록 만들어야 합니다.
(영상: 링크 참조)
- Vector3의 X 값을 Random.Range(-20, 20)으로 바꾸고 테스트해주세요.
- if문 안에 새로운 지역 번수, Vector3 spawnPos을 선언해주세요.
- 클래스 상단에 private float 변수로 spawnRangeX와 spawnPosZ 을 선언해주세요.
private float spawnRangeX = 20;
private float spawnPosZ = 20;
void Update() {
if (Input.GetKeyDown(KeyCode.S)) {
// Randomly generate animal index and spawn position
Vector3 spawnPos = new Vector3(Random.Range(-spawnRangeX, spawnRangeX), 0, spawnPosZ);
int animalIndex = Random.Range(0, animalPrefabs.Length);
Instantiate(animal.Prefabs[animalIndex], spawnPos,
animalPrefabs[animalIndex].transform.rotation);
}
}
6. 카메라 관점 변경하기
여러분의 Spawn Manager가 정상적으로 작동되고 있으므로, 잠시 휴식을 취하고 카메라를 좀 더 건드려보겠습니다. 카메라의 관점을 변경하면 아마 탑-다운 게임에 더 적합한 시야를 제공할 수 있을 것입니다.
(영상: 링크 참조)
- Perspective 뷰와 Isometric 뷰 를 전환하여 Scene 뷰 상에의 차이점을 확인해주세요.
- camera를 선택하시고 Projection을 "Perspective"에서 "Orthographic"으로 변경해주세요.
7. 내용 복습
(영상: 링크 참조)
- 새로 배운 기능들
- 플레이어가 S 키를 눌러 동물을 생성할 수 있도록 만들기
- 동물의 선택과 생성 위치를 랜덤화하기
- 카메라 프로젝션 (perspective/prthographic) 선택하기
- 새로 배운 개념과 기술들
- Spawn Manager
- 배열
- Keycodes
- 랜덤 생성
- 지역변수와 전역 변수 비교
- Perspective와 Isometric 프로젝션 비교
- 다음 시간에 학습할 내용
- collision을 사용해 여러분의 동물들에게 먹이를 주도록 만들어봅시다!