유니티(Unity) 실습 예제 - 총알을 발사하는 씬 구성하기

반응형

유니티(Unity) 실습 예제 - 총알을 발사하는 씬 구성하기

1)씬에 새로운 큐브(cube) 오브젝트를 생성하고 바닥(Ground)과 벽(Wall)을 구성합니다.


2)총알로 사용할 3D 모델을 프로젝트에 가져오기(import)하고 씬에 오브젝트를 추가합니다(Bullet)


3)총알 모델의 오브젝트 로컬(local) 축을 확인합니다. z축이 모델의 측면 방향으로 설정되어있는것을 확인할수있습니다.


4)새로운 게임 오브젝트를 생성합니다(create empty)


5)총알 모델의 오브젝트(Bullet)를 GameObject의 자식 오브젝트로 설정하고 위치(position)를 초기화합니다(0, 0, 0)


6)총알 모델의 앞 방향이 GameObject의 z축 방향과 일치하도록 회전시킵니다.

 

7)GameObject이 벽을 향하도록 회전시킵니다.


8)가져오기한 3D 모델의 크기를 재설정하려면 import settings의  scale factor 수치를 입력하고 적용합니다.


9)GameObject의 이름을 설정하고(Bullet) 오브젝트에 리지드바디(rigidbody) 컴포넌트를 추가합니다.


10)리지드바디의 중력을 비활성화하려면 use gravity를 체크해제합니다. 


11)Wall 오브젝트에 리지드바디(rigidbody) 컴포넌트를 추가합니다.

 

12)상위 Bullet 게임 오브젝트에 캡슐 콜라이더(Capsule Collider) 컴포넌트를 추가합니다.


13)콜라이더의 중심(center), 반지름(Radius), 높이(Height), 방향(Direction)을 설정합니다.


14)새로운 사용자 스크립트를 생성합니다(Fire)


15)스크립트를 상위 Bullet 게임 오브젝트에 추가합니다.


16)게임을 시작하면 스크립트의 오브젝트를 앞방향(z축)으로 힘을 가합니다.

rb.AddForce(transform.forward*BulletSpeed);


17)BulletSpeed의 수치를 입력하여 총알의 이동속도를 설정합니다.


18)게임을 시작하면 총알이 앞 방향으로 이동하고 벽(Wall)과 충돌합니다.

 

19)새로운 태그를 추가합니다(Bullet)

 

20)상위 Bullet 오브젝트의 태그를 설정합니다(Bullet)

 

21)Wall 오브젝트에 새로운 스크립트(Wall)를 추가합니다.
OnCollisionEnter 함수는 이 스크립트의 오브젝트 Collider/rigidbody가 다른 오브젝트의 Collider/rigidbody와 충돌했을때 호출됩니다.

충돌 이벤트가 발생하면 충돌 대상(other)의 게임오브젝트 태그를 출력합니다.

충돌한 콜라이더(other)의 오브젝트 태그가 Bullet이면 해당 오브젝트를 제거합니다

Destroy(other.gameObject);


22)게임을 시작하면 총알이 앞방향으로 이동하고 콘솔 패널(Console)에 문자열 Untagged를 출력합니다.

 

23)이것은 벽(Wall)과 바닥(Ground)의 Collider/rigidbody가 충돌하기때문입니다.


24)총알이 벽에 충돌하면 총알이 제거되고 콘솔 패널에서 총알 오브젝트의 태그가 출력된것을 확인할수있습니다.

반응형

댓글

Designed by JB FACTORY