반응형

01 반복문을 이용한 오브젝트 생성

반복에 사용되는 변수 i를 이용해 오브젝트 x위치와 회전을 서서히 증가되도록 설정했다.

위와 같이 10개의 오브젝트가 생성되었고, x위치가 1씩 증가하게 되며 회전 값이 z축으로 10씩 회전하는 것을 확인할 수 있다.

 

이중 반복문을 사용해서 격자형태의 맵을 생성할 수 있다.

 

반복문 내부에서 조건문을 사용해 특정 위치에 오브젝트를 생성하지 않을 수도 있다.

위와 같이 대각선 형태로 x와 y가 같으면 오브젝트가 생성되지 않는 것을 확인할 수 있다.

 

x+y == 9라는 조건을 추가했다.

조건에 따라 다음과 같이 x형태로 오브젝트가 생성되지 않는 것을 확인할 수 있다.

 

마름모 형태로 오브젝트가 생성되지 않도록 조건문을 수정했다.

 

 

02 임의의 프리팹으로 오브젝트 생성

여러 종류의 프리팹 중 임의의 프리팹이 생성되게 하는 예제

Circle과 Triangle 프리팹을 만든다.

 

게임오브젝트를 배열 형태로 받는다. 배열이기 때문에 동일한 타입의 여러 개 프리팹을 등록할 수 있다.

Random.Range(int main, int max) 함수 : min ~ max-1까지 정수 중에서 임의의 숫자를 index에 저장하고 있다.

 

실행을 하기 전에 Prefab Array의 사이즈를 3으로 늘리고, Box, Circle, Triangle 프리팹을 등록한다.

 

실행을 하면 위와 같이 10개가 생성되지만, 어떤 프리팹으로 생성될지는 모른다.

매번 결과가 다름

 

03 임의의 위치에서 오브젝트 생성 

Random.Range() 함수를 사용해서 오브젝트가 생성되는 x y의 위치를 임의로 설정하고 오브젝트를 생성한다.

게임을 실행하면 30개의 오브젝트가 각각 임의의 위치에 생성되었다.

매번 결과가 다름

 

04 SpawnPoint에서 오브젝트 생성

우리가 맵에 배치한 특정 오브젝트에 위치에서 오브젝트가 생성되도록하는 예제

두 게임오브젝트를 생성하고, 크기는 0.2, 위치는 각각 -6, -4와 6, 4로 설정한다.

미리 설정한 spawnPoint 중에 한 곳에서 오브젝트가 생성된다.

Spawn Point Array에 생성했던 게임오브젝트를 추가하고 실행한다.

현재는 겹쳐져서 하나로 보이지만 30개의 오브젝트가 양쪽에서 생성되었다.

 

이 오브젝트들이 움직일 수 있도록 코드를 작성한다.

전에 사용했던 Movement2D 스크립트이다.

Setup 함수를 이용해서 이동방향을 설정해 줄 수 있도록 하였고, 설정된 이동 방향으로 직선이동을 할 수 있다.

ObjectSpawner 스크립트도 수정해 준다.

삼항연산자를 이용해서 spawnIndex가 0일 때 이동 방향을 오른쪽으로 설정했고, 0이 아니면 왼쪽으로 이동하도록 설정했다.

이 moveDirection을 Setup 함수에 적용을 하면 Movement2D를 가지고 있는 오브젝트가 해당 방향으로 움직이게 될 것이다.

Box, Circle, Triangle에 Movement2D를 넣어주고 실행을 한다.

 

실행을 하면 위와 같이 움직이는데 겹쳐져서 하나로 움직이는 것처럼 보일 것이다.

 

생성되는 시간을 조절해서 하나씩 생성되도록 한다.

Awake 함수를 사용하면 한 번에 실행되기 때문에 Update 함수로 변경한다.

0.5초마다 하나씩 오브젝트가 생성되는데 양쪽에 있는 spawnPoint 중에 어디에서 호출되는지, 어떤 오브젝트가 호출되는지는 랜덤인 것을 확인할 수 있다.

 

 

05 플레이어 위치에서 오브젝트 생성

슈팅게임에서 활용할 수 있도록 플레이어의 역할을 하는 게임오브젝트를 하나 생성하고, 이 플레이어의 위치에서 우리가 특정 키를 입력했을 때 오브젝트가 생성되는 예제

 

Player라는 오브젝트를 하나 생성하고, 이미지를 설정한다.

 

플레이어를 움직이기 위한 스크립트를 작성한다.

Input.GetKeyDown(KeyCodeFire)은 키보드 입력을 뜻한다. KeyCodeFire라는 변수에 있는 KeyCode.Space는 스페이스바를 의미한다.

→ 스페이스 바를 누르게 되면 if문 안에 있는 코드가 실행된다.

이때 Instantiate를 이용해서 bulletPrefab라는 프리팹을 생성한다.

  • Input.GetKeyDown(Key) : 키보드의 Key 버튼을 눌렀을 때 1회 호출
  • Input.GetKey(Key) : 키보드의 Key 버튼을 누르고 있는 동안 매 프레임 호출
  • Input.GetKeyUp(Key) : 키보드의 Key 버튼을 눌렀다가 뗄 때 1회 호출

Player에 Player Controller를 넣고, Key Code Fire에서 스페이스가 아닌 다른 키로 변경을 하는 것도 가능하다.

그리고 Bullet Prefab에 Circle을 넣는다.

스페이스 바를 누를 때마다 플레이어의 위치에서 오브젝트가 생성되는 것을 확인할 수 있다.

 

스페이스를 누를 때 생성되는 오브젝트가 움직이도록 설정을 한다.

 

반응형