Unity/TPS

3. Bullet, Gizmos, TrailRender, Particle

에린_1 2023. 10. 24. 22:44
728x90

게임에서 총기류 발사 방식은 Projectile 방식과 Raycast 방식으로 크게 두 가지 방식으로 구현된다.

 

- Projectile

  총알이 물리적으로 발사되는 방식으로 총알이 직접 날아가 적에게  타격을 입힌다. 따라서 총알이 시각적으로 표현되지만 짧은 시간 동안 여러 개의 총알을 생성하게 되면 게임의 속도가 저하되는 단점이 있다. 이 단점을 보완하기 위해 총알은 될 수 있으면 로우폴리(Low Poly) 모델이나 평면 Mesh 모델에 텍스처를 입혀 사용한다. 총알 역시 동적으로 생성하기보다는 오브젝트 풀(Object Pool) 개념을 도입해 총알을 미리 생성해 두고 번갈아 가며 발사되도록 구현하는 편이 속도 향상에 유리하다.

 

- Raycast 방식

  Raycast 방식은 FPS 게임에서 저격총 발사 루틴을 구현하는 데 자주 활용된다. 실제 총알이 발사되는 방식이 아니라 레이저 빔과 같이 눈에 보이지 않는 광선을 발사해 적 또는 물체를 검출하는 방식. 총을 쏘면 총구 화염이 표시ㅣ됨과 동시에 멀리 떨어져 있는 적이 피격되는 효과를 연출할 수 있다. Raycast 방식은 총알 발사 루틴뿐 아니라 미로를 탐색하는 로봇의 센서 기능이나 추적 기능을 구현할 때도 활용할 수 있다.

 

Projectile 방식으로 총알 발사를 구현하고 적 캐릭터의 피격 루틴을 완성한 후에 Raycast 방식으로 변경하겠다.

 

 

충돌 감지 조건

Bullet이 발사되어 일정 거리를 날아가 벽이나 적에게 맞았을 대 충돌을 감지하려면 다음의 두 가지 조건을 만족해야 한다.

- 충돌을 일으키는 양쪽 게임오브젝트 모두 Collider 컴포넌트가 추가돼있어야 한다.

- 두 게임오브젝트 중 움직이는 쪽에는 반드시 Rigidbody 컴포넌트가 있어야 한다.

 

Bullet과 Firepos를 설정해줬다.

정확한 위치를 육안으로 확인하기 위해서 Gizmos를 이용했다.

Gizmos란 씬이 있는 게임오브젝트와 관련된 그래픽으로 시각적 디버깅을 위해 사용된다.

MouseButtonDown으로 Bullet이 생성되도록하고 FirePos로 위치를 잡아줬다.

 

Bullet의 모습

 

궤적효과를 만드는 Trail Renderer를 사용해서 Bullet의 궤적을 만들어주었다.

 

Cartridge와 muzzleflash particle을 적용시켜줬다.

728x90

'Unity > TPS' 카테고리의 다른 글

2. Ctrl, Animation, Shadow, LODGroup  (0) 2023.10.22
1. Stage, Meterial  (0) 2023.10.19