[Unity]03.서바이벌 슈터 따라하기 #3 - 적 캐릭터 만들기

안녕하세요 유랑입니다.



오늘은 적 캐릭터에 대해서 알아보겠습니다.




1. 서바이벌 슈터



서바이벌 슈터는 유니티에서 제공하는 3d 캐주얼 fps게임입니다.

튜토리얼이 제공되어 있어서 공부겸 글을 올려보겠습니다^^







1-1) 적 캐릭터 만들기 - ㉠캐릭터 생성



적 캐릭터를 생성하겠습니다.

ZomBunny를 하이라키뷰에 드래그앤 드랍을 이용해서 생성해 주세요.






적이 맞았을 시 타격 효과를 주기 위해서 파티클 오브젝트를 추가해 주겠습니다.

HitParticles를 적 캐릭터 자식으로 생성해 주세요.





캐릭터가 공격할 때 적 캐릭터만을 충돌 처리 효과를 주기 위해서 Layer를 다음과 같이 설정해 주겠습니다.






1-2) 적 캐릭터 만들기 - ㉡충돌처리 조건



플레이어와 마찬가지로 적에게도 충돌 처리 기능을 적용해 주겠습니다.
Rigidbody와 CapsuleCollider 컴포넌트를 추가해 주세요.
적 이동은 rigidbody를 사용하지 않고 네비게이션 기능을 사용하므로 저항값은 따로 설정하지 않겠습니다.





적 캐릭터에게는 공격 처리를 위해서 콜라이더를 하나더 추가하겠습니다.

적 캐릭터가 플레이어에게 부딪치면 공격이 되는 형식이기 때문입니다.

Is Trigger를 체크해주면 충돌처리는 되지만, 통과할 수 있기 때문에 해당 기능만 사용이 가능합니다.






1-3) 적 캐릭터 만들기 - ㉢효과음


적에게도 물론 오디오 소스 컴포넌트를 적용하고 해당 효과음까지 넣어주겠습니다.

Player On Awake를 언체크해주는 이유는 피격 시에만 효과음 적용을 원하기 때문입니다.







1-4) 길 찾기 AI 만들기 - ㉠NavMeshAgent



적이 플레이어를 찾는 알고리즘은 어렵습니다.

A*알고리즘, 다익스트라 알고리즘 등이 있는데요.

유니티에서 제공해 주는 길 찾기 알고리즘을 사용하면 쉽게 구현이 가능합니다.

적 캐릭터에 NavMeshAgent 컴포넌트를 추가해 주세요.


- Speed : 추적하는 속도

- Stopping Distance : 목표와의 거리(거리가 만족시 정지)

- Radius : Agent의 반경

- Height : Agent의 높이







1-5) 길 찾기 AI 만들기 - ㉡NavMesh 



적이 플레이어를 추적하려면 지도가 필요하겠죠?

상단에 있는 메뉴 Window => AI => Navigation을 클릭해 주세요.






보통 NavMesh Data를 만들어 주는 작업을 Bake라는 표현으로 대체합니다.

Floor 오브젝트를 클릭 후 Bake해주겠습니다.

Floor 오브젝트 위에  길 찾기가 가능한 맵이 구워지며, 적과 장애물을 판단해서 생성이 됩니다.





Bake가 완료되면 씬이름으로 폴더와 함께 NavMesh 파일이 생성됩니다.

장애물 주변에는 못 가도록 구현된 거 보이시나요? 정말 신기하네요.






1-6) 길 찾기 AI 만들기 - ㉢Enemy Movement 스크립트



해당 기능으로 추적이 되면 좋겠지만 코드 작성도 필요합니다.

EnemyMovement 스크립트를 찾아 적 캐릭터에 적용하고,

코드를 수정해 주겠습니다.






해당 코드는 플레이어를 찾아 추적하는 내용을 담고 있습니다.





태그를 사용하기 때문에 Player 오브젝트 태그를 다음과 같이 설정해 주세요.





적 캐릭터가 장애물을 피해서 캐릭터를 찾는걸 볼 수 있습니다.






1-7) 적 애니메이션 - ㉠애니메이터



적 애니메이터를 생성한 후 애니메이션 상태들을 적용해 주겠습니다.

애니메이션은 Zombunny 모델에 있으며 저는 프리팹 폴더에 옮겨주어 사용중입니다.

Death, Idle, Move를 애니메이터 창으로 옮겨 주세요.






적 캐릭터에는 트리거 파라미터 두 개를 만들어 주겠습니다.





Move에서 Idle로 트랜지션을 만들어 줄텐데, 

반대로는 만들어 주지 않습니다. 이유는 플레이어가 사망전까지는 계속 이동해야 되기 때문이죠.





Death는 Any State상태와 이어주세요.

사망시 해당 애니메이션 상태로 넘어가게 됩니다.








2. 마무리



오늘 강의는 여기까지입니다.

서바이벌 슈터를 따라하면서 적 캐릭터를 만들어 보았습니다.

다음 시간에는 캐릭터 체력과 UI에 대해서 다뤄보겠습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-3D-





댓글

Designed by JB FACTORY