Rage Tank 3D

Unity Web Player | Rage Tanks 3D
Unity Web Player | Rage Tanks 3D

ACTION KEY
이동 W, A, S, D
포탑 회전 Q, E
포각 조절 R, F
Fire Ctrl

Unity 3D 환경에서 간단한 게임도 만들고, NGUI 3.7버전이 새로 나와 사용도 해볼 겸 만든 테스트용 3D 탱크 게임입니다. 지금은 시간 관계상, 기초적인 부분만 구현되어 있습니다.

제작 과정
  1. 맵을 제작한다: Unity 3D에서 Terrain이라는 게임 오브젝트를 만들어, 맵을 만듭니다. 그 후, 에셋에서 적당한 사막 Material을 받아 맵에 적용시키면, 사막 같은 지형이 만들어 집니다. 스카이 박스도 적당한 에셋을 받아 스카이 박스에 적용하는 식으로 제작하였습니다.
  2. 플레이어 탱크를 만든다: 에셋에서 모델링된 탱크를 이용하였습니다. 탱크의 머리 부분과 몸통 부분을 나눠 따로 Box Collider를 적용하였으며, 플레이어가 포탑의 조종을 원할시 머리 부분에 스크립트를 추가하여 포탑 부위를 조종할 수 있도록 구현하였습니다.
  3. 포탄을 제작한다: 포탄은 간단한 Sphere를 만들고, 대충 어두운 Material을 붙여 구현하였습니다. 탱크와 포탄은 각각 Rigidbody에 mass를 지니고 있어, 포탄의 무게에 따라 포가 멀리 나가거나 짧게 나갑니다. 마찬가지로 포탄과 탱크의 무게 비율에 따라 포를 쏠 때, 탱크가 반동으로 얼마나 뒤로 밀려날지를 결정합니다. 탱크가 가볍고, 포가 무거울수록 혹은 포를 쏘는 힘이 클 수록 탱크가 더 많이 뒤로 밀려나게 됩니다. (허나, 현재 게임에선 탱크가 한 종류 뿐이므로 판단할 길이없죠. 탱크가 1mm정도 밀리는건 포를 쏠 시 확인 가능)
  4. 카메라를 만든다: 단순히 아군 플레이어 탱크의 뒷부분을 따라가는 카메라를 붙였습니다. 장애물이 플레이어 탱크의 뒤에 붙어있으면 시야가 안보이는 큰 문제점이 있음. 개인적으로 Lerp를 써서 좀 더 자연스러운 카메라를 만들려다가 회전할 때, Qurternion을 쓰는데서 버그가 자꾸 생겨서 보류함.
  5. 적 탱크를 만든다: 적 탱크에는 포탄의 사정거리가 입력되어 있는데, 기본적으로 Raycast를 쏘는 오브젝트를 추가적으로 달아주어, 항상 플레이어의 탱크에 적 탱크의 포탄 사거리가 닿는지를 체크합니다. 또한, 거리와 방향 뿐만 아니라 중간의 방해물이 있을 경우 실제 포탄이 유효타가 될지 방해물에 막혀 무효타가 될지도 판단합니다. 만약, 플레이어 탱크가 적 탱크의 사정거리 이내로 접근 시 Raycast가 바라보던 방향으로 적 탱크가 Rotation하게 됩니다. 그리고, 지정한 포탄 Delay에 맞춰서 포탄을 쏩니다. 범위 밖으로 빠져나가면 포탄 쏘는 것을 멈추게 됩니다. 원래 적 탱크가 플레이어 탱크를 발견하면, 빙빙 돌면서 쫓아 오도록 하려고했는데, 잘 안되서 일단 보류함. 덕분에 그냥 제자리에서 포탄을 쏘는 바보 탱크가 됨.
  6. 파티클 제작: 포탄을 쏘는 순간과 피격 당하는 순간 사용될 파티클을 제작. 탱크가 움직일 때, 뒷바퀴 부근에서 스모크 파티클을 적용하여 먼지가 날리는듯한 효과를 만들어 적용하였습니다.
  7. 사운드 붙이기: 포탄을 발사할 때, 펑하는 사운드를 추가함.
  8. NGUI로 GUI 구성하기: NGUI를 이용하여, 현재 점수와 Life를 표시하는 GUI를 구현하였습니다.

0 개의 댓글:

댓글 쓰기