
유니티의 Navigation 시스템을 이용하면 씬 내에서 지능적으로 탐색하여 이동하는 오브젝트를 생성할 수 있다.
이때 NavMesh는 게임 월드에서 걸을 수 있는 표면을 의미하며, NavMeshAgent는 NavMesh 위에서 목적지까지 경로를 찾고 이동하는 오브젝트를 의미한다.

NavMeshAgent가 목적지까지의 경로를 추론하기 위해서 두 단계를 거친다.
1. Global Navigation(전역 네비게이션)
2. Local Navigation(지역 네비게이션)
전역 네비게이션은 NavMesh를 살펴 마땅한 경로를 찾아 통로를 만드는 작업이다.
전역 네비게이션 단계에서는 세부적인 장애물 탐색과 회피, 이동에 관련된 작업은 하지 않는다.
지역 네비게이션은 전역 네비게이션을 통해 생성된 통로를 통해 이동하는 과정을 만드는 작업이다.
지역 네비게이션 단계에서는 세부적인 장애물의 위치를 탐색하고 이를 회피하는 경로를 탐색하며, 이 경로를 따라 이동하는 작업과 통로를 갱신하는 작업이 이루어진다.
| 필드 | 설명 |
|---|---|
| hasPath | Agent가 목적지를 가지고 있는지의 여부 |
| isOnNavMesh | Agent가 NavMesh 위에 존재하는지의 여부 |
| remainingDistance | Agent와 목적지의 직선 거리 만약 중간에 장애물이 있다면 Infinity |
| 메서드 | 설명 |
|---|---|
| SetDestination(Vector3 position) | Agent의 목적지 경로를 설정하거나 업데이트 몇 프레임 간에 경로를 계산하고, 유효한 경로가 추론되면 이동을 시작 |
| Warp(Vector3 position) | Agent를 특정 위치로 순간이동 |
| Stop() | 목적지 경로를 유지한 채, Agent의 이동을 정지 |
| Resume() | 목적지 경로를 유지한 채, Agent의 이동을 재개 |
| Move(Vector3 offset) | Agent를 오프셋만큼 이동 Agent가 경로를 가진 경우, 경로가 조정됨 |