유니티 3D에서 플레이어를 자동으로 추적하는 적을 만드는 법을 정리해 보겠습니다.
먼저 Window -> AI -> Navigation을 눌러 Navigation 창을 띄워줍니다.
그러면 Inspector 창 옆에 Navigation 창이 뜨게되는데 여기서 Bake탭의 우측하단에 Bake 버튼을 누르면 유니티에서
해당 오브젝트의 3D 모델의 메쉬정보를 기준으로 네비게이션 길을 자동으로 만들어줍니다.
단, 여기서 중요한 점이 Bake를 할 오브젝트는 반드시 static 상태여야만 합니다.
이유는 static상태가 아닐경우 해당 오브젝트의 3D 메쉬정보를 재대로 읽어오지 못할 수 있기 때문입니다.
그러므로 장애물(길)이 될 오브젝트의 Inspector의 static 탭을 눌러 Navigation을 체크해주도록 합시다.
이제 Static상태의 오브젝트를 Navigation탭에서 Bake버튼을 눌러줘 베이크 해줍니다.
파란색 영역은 지나갈 수 있는 영역을 의미하고 파란색으로 채워지지 않고 구멍이 난 영역은 장애물로 판단하게될 것입니다.
이후 추적을 할 오브젝트에 AddComponent를 눌러 Nav Mesh Agent를 추가해줍니다.
이제 추적할 대상을 연결해줘야하는데 추적할 대상은 스크립트를 통해 알려줘야합니다.
추적할 대상(Player)의 Trasform값(Vec 3) 그리고 NavMesgAgent를 연결해주면 준비가 완료되는데
여기서 NavMeshAgent를 사용하려면 반드시 using UnityEngine.AI를 선언해 주어야한 사용할 수 있으니 주의해야합니다.
플레이어 추적은 단순히 NavMeshAgent.detination에 목표위치를 설정해주면 끝입니다.
NavMeshAgent.detination은 추적할 목표의 위치를 지정하는 속성입니다.
또는 NavMeshAgent.SetDestination(Vector3 pos) 메서드를 사용해도 동작은 같습니다.
NavMeshAgent.Stop()은 추적을 중지하는 메서드,
NavMeshAgent.Resume()은 추적을 재개하는 메서드입니다.
NavMeshAgent.speed 값을 변경하여 추적속도 값 또한 조절이 가능합니다.
정리하자면, 순서는 다음 아래와 같습니다.
1.window 탭의 AI -> Navigation을 클릭하여 창을 띄운다.
2.길 혹은 장애물이 될 오브젝트의 속성을 static -> Navigation으로 지정한다.
3.Navigation탭의 Bake탭의 Bake버튼으로 해당 오브젝트를 베이크한다.
4.추적할 오브젝트에 Nav Mesh Agent를 컴포넌트한다.
5.스크립트로 추적할 오브젝트에 추적 대상(추적할 목표의 위치)를 지정해준다.
(NavMeshAgent.detination 값 변경 혹은 NavMeshAgent.SetDestination(Vector3 pos))
6.이후 Nav Mesh Agent 컴포넌트의 필요한 설정값을 디테일하게 변경한다.
활용 예시
'Unity > 3D' 카테고리의 다른 글
유니티에서 오브젝트를 찾는 방법 (0) | 2023.11.21 |
---|---|
Unity 3D에서 플레이어 이동시키기 (0) | 2023.11.16 |