관리 메뉴

Unwound Developer

유니티 - 닷지 오브젝트 자동 생성하기 본문

Unity/Unity, C#

유니티 - 닷지 오브젝트 자동 생성하기

unwind 2022. 1. 7. 16:52
반응형

만들었던 Bullet을 자동으로 여기저기서 나오게 해야겠죠.

 

일단, Bullet을 계속 자동 생성해줄 오브젝트를 만들어요.

Spawner라고 할게요.

이렇게 원기둥 네 개를 배치했어요.

원기둥은 3D 오브젝트에 Cylinder라는 것 입니다.

 

이 스크립트에서 사용할 변수들 이에요.

사실, 책에서 사용하는 방법 말고도 오브젝트 생성기를 만들 방법은 다양할 것 같아요.

일단 책에 나온 방법대로 했어요.

 

bulletPrefab은 총알 오브젝트 변수에요.

0.5 ~ 3초 사이에 자동으로 생성되도록 변수를 두개 생성했어요.

 

그리고, target변수는 플레이어를 향해서 총알 오브젝트가 생성될 수 있도록

플레이어 오브젝트의 방향을 설정해줄 변수에요.

 

그리고, spawnRate와 timeAfterSpawn은 계속해서 총알이 생성될 수 있게 시간을 판별해주는 변수에요.

 

우선 Start 메소드에요.

timeAfterSpawn변수는 총알이 생성될 때마다 0으로 만들어버릴겁니다.

게임이 처음 시작됐을때도 총알이 생성되어야 하니까 Start 메소드에서 우선 0으로 초기화를 해줘요.

 

spawnRate는 0.5~3초 사이의 숫자가 랜덤으로 초기화 됩니다.

 

FindObjectOfType메소드는 플레이어 객체를 찾아내서 target에 위치정보(transform)를 할당했어요. 

 

deltaTime은 Update가 실행될때마다 그 실행 간격을 반환해줘요. 60프레임이라면 1/60을, 20프레임이라면 1/20을요.

timeAfterSpawn에 deltaTime을 더해주면 Update가 실행 시간사이의 간격이 더해져서,

결국 시간이 얼마나 흘렀는지 timeAfterSpawn에 저장되는 거에요.

 

그래서 timeAfterSpawn >= spawnRate 조건은,

start메소드에서 spawnRate에 0.5~3초 사이의 숫자를 랜덤으로 할당했었는데,

그 숫자만큼 시간이 흘렀을 때를 판별하는거에요.

 

spawnRate가 1이었다면, timeAfterSpawn은 1초 뒤에 실행되는 거죠.

 

1초라고 가정해보면, 1초가 지난뒤에 다시금 timeAfterSpawn변수를 0으로 초기화시키고,

bullet을 Instantiate 메소드를 생성하는 겁니다.

인스턴스로는 bulletPrefab이라는 bullet 오브젝트, bullet생성기의 위치, bullet생성기의 회전을 넘겨줘요.

bullet이 bullet생성기의 위치에 생성된거죠.

 

그리고, LookAt 메소드에 target을 넘겨주는것으로 플레이어를 향하게 해요.

 

마지막으로 다시 spawnRate를 0.5~3사이의 숫자를 랜덤으로 할당해줘요.

 

bullet생성기의 스크립트도 끝났어요.

다른 오브젝트와 같이 스크립트를 생성기에 드래그&드롭 하면 끝이에요.

반응형