Priv's Blog

Programming Basics: Unit 2 - Basic Gameplay) Lesson 2.3 - Random Animal Stampede 본문

Unity Learn/Pathway: Junior Programmer

Programming Basics: Unit 2 - Basic Gameplay) Lesson 2.3 - Random Animal Stampede

Priv 2021. 2. 14. 15:07

출처

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

 

1. 서언


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 


 

2. spawn manager 생성하기

여러분이 이러한 복잡한 오브젝트 생성을 모두 처리하시려면, 프로세스를 관리하기 위한 전용 스크립트와 연결할 오브젝트가 필요합니다. 

 


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

  1. hierarchy에서 빈 오브젝트(empty object) "SpawnManager"를 생성해주세요.
  2. "SpawnManager" 라는 이름의 새로운 스크립트를 생성하시고, Spawn Manager 오브젝트에 연결 후 파일을 열어주세요.
  3. public GameObject[] animalPrefabs;를 새로 선언해주세요.
  4. inspectior에서, 배열 크기를 여러분의 동물 수만큼 조정해주시고, 여러분의 동물들을 배열에 드래그하여 할당해주세요.

 


 

3. S 키를 눌렀을 때 동물이 생성되도록 만들기

이제 배열을 생성했고, 이 배열에 여러분의 동물들을 할당해주었습니다. 하지만 아직 게임이 진행되는 동안 동물들이 생성되는 기능을 구현할 때까지는 별 의미가 없습니다. 이번에는 동물들의 생성 및 선택을 위한 임시 해결책을 만들어보겠습니다.

 


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

  1. Update() 내에 if문을 작성하여 S 키를 입력했을 때, 새로운 동물 프리팹이 화면 상단에서 인스턴스화 되도록 만들어주세요.
  2. 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 키를 눌렀을 때, 여러분의 지정한 값이 아닌 인덱스 값에 기반하여 동물들이 무작위로 생성되도록 만들어야 합니다.

 


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

  1. if 문을 이용해 S 키를 눌렀을 때, 0부터 배열의 길이 사이의 int animalIndex 값을 무작위로 생성하도록 만들어주세요.
  2. 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 변수 값을 사용해 동물들을 생성할 수 있게 되었지만, 동물들이 모두 같은 위치에 생성되고 있습니다! 동물들의 생성 위치를 무작위로 지정하여 동물들이 화면에서 일직선으로 행진하지 않도록 만들어야 합니다.

 


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

  1. Vector3의 X 값을 Random.Range(-20, 20)으로 바꾸고 테스트해주세요.
  2. if문 안에 새로운 지역 번수, Vector3 spawnPos을 선언해주세요.
  3. 클래스 상단에 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가 정상적으로 작동되고 있으므로, 잠시 휴식을 취하고 카메라를 좀 더 건드려보겠습니다. 카메라의 관점을 변경하면 아마 탑-다운 게임에 더 적합한 시야를 제공할 수 있을 것입니다.

 


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

  1. Perspective 뷰와 Isometric 뷰 를 전환하여 Scene 뷰 상에의 차이점을 확인해주세요.
  2. camera를 선택하시고 Projection을 "Perspective"에서 "Orthographic"으로 변경해주세요.

 


 

7. 내용 복습


(영상: 링크 참조)

 

Lesson 2.3 - Random Animal Stampede - Unity Learn

Overview: Our animal prefabs walk across the screen and get destroyed out of bounds, but they don’t actually appear in the game unless we drag them in! In this lesson we will allow the animals to spawn on their own, in a random location at the top of the

learn.unity.com


 

-  새로 배운 기능들

  • 플레이어가 S 키를 눌러 동물을 생성할 수 있도록 만들기
  • 동물의 선택과 생성 위치를 랜덤화하기
  • 카메라 프로젝션 (perspective/prthographic) 선택하기

 

- 새로 배운 개념과 기술들

  • Spawn Manager
  • 배열
  • Keycodes
  • 랜덤 생성
  • 지역변수와 전역 변수 비교
  • Perspective와 Isometric 프로젝션 비교

 

- 다음 시간에 학습할 내용

  • collision을 사용해 여러분의 동물들에게 먹이를 주도록 만들어봅시다!

 


 


수고하셨습니다!


Comments