유니티 3D 쿼터뷰 액션게임 만들기
👾 목표를 추적하는 AI 만들기 👾
1. 오브젝트 생성
🔻 올려진 적 오브젝트에 물리와 스크립트 세팅하기
🔻 MeshRenderer를 가져오는 GetComponent() -> GetComponentInChildren() 바꾸기
- 태그와 레이어를 Enemy로 설정
2. 내비게이션
✏️ 유니티가 제공하는 내비게이션 AI 시스템 사용
📣 Nav 관련 클래스는 UnityEngine.AI 네임 스페이스 사용
📌 NavMeshAgent
Navigation을 사용하는 인공지능 컴포넌트
NavMeshAgent 컴포넌트 가져오기 초기화
📌 SetDestination()
도착할 목표 위치 지정 함수
🔻 목표물 변수에 Player를 할당
📣 NavAgent를 사용하기 위해서는 NavMesh가 필요!
📌 NavMesh
NavAgent가 경로를 그리기 위한 바탕 캔버스 (Mesh)
Windows - AI - Navigation 열기
📣 NavMesh는 Static 오브젝트만 Bake 가능
- Navigation 창에서 NavMesh를 Bake로 생성 , 목표물 Player를 따라다님
- Navigation의 Agent세팅 값으로 NavMesh 범위가 결정됨
- 벽 하나를 복사해서 기둥으로 만들기
📣 지형이 바뀌었다면 다시 Bake를 눌러 NavMesh 재생성
- Player와 Enemy가 충돌하면 물리속도에 의해 움직임에 변화가 생김, Enemy가 추적하지 못하고 밀려남
- 물리력에 NavAgent 이동을 방해하지 않도록 로직 추가
- FixedUpdate()에서 꾸준히 velocity 속도와 angularVelocity 회전 속도를 0으로 만들어서 밀려나지 않음
3. 애니메이션
✏️ Enemy의 애니메이션 설정 & 사망 리액션 설정
- EnemyA 이름의 Animator Controller 생성 후 Mesh Object에 추가
- 모델에 포함된 애니메이션을 애니메이터로 드래그
🔻 파라메터와 Transition을 세팅하여 애니메이터 완성하기
- 적이 죽는 시점에서도 애니메이션과 플래그 세팅
- 추적을 결정하는 bool 변수 추가 (Chasing)
- 플레이 시, 2초 후에 추적시작 (ChaseStart)
- 추적중일 때, Walking 애니메이션 실행
🔻 추적중 true 이면, target Player를 추적 / 밀려나는 속도나 회전값 0
** Update() 로직 변경 !
- curHealth 현재 체력이 0보다 작으면 추적 중지
- NavAgent 비활성화
- 죽으면 애니메이션 트리거 실행, 4초 후 오브젝트 비활성화
'유니티' 카테고리의 다른 글
Terrain 지형 만들기 (0) | 2022.05.04 |
---|---|
유니티 3D 쿼터뷰 액션게임 만들기 - 돌격형, 원거리형 몬스터 / 공격 데미지 (0) | 2022.04.25 |
유니티 3D 쿼터뷰 액션게임 - 수류탄 구현하기 / 투척, 던지기 / 폭발 (0) | 2022.04.24 |
유니티 3D 쿼터뷰 액션게임 - 피격 테스터 만들기 (0) | 2022.04.24 |
유니티 3D 쿼터뷰 액션게임 - Player 물리문제 고치기 / 벽 관통 방지 / 아이템 고정 (0) | 2022.04.23 |