Unity ) NavMesh
NavMesh 사용 전 주의해야할 사항
Unity에서 제공하는 내장 네비게이션 시스템으로, AI 캐릭터가 복잡한 3D 환경에서 이동할 수 있는 경로를 찾아 주기 위해 사용됩니다.
좋은 기능이긴 하지만, 너무 많은 오브젝트가 NavMesh를 사용하고 있는것은 지양해야한다.
NavMesh
1. NavMesh Surface와 Bake
오브젝트가 이동할 Ground에 ==NavMesh Surface== Component를 추가해줍니다.

- Object Collection의 Include Layers를 통해 LayerMask도 설정할 수 있습니다.
- 벽을 옮기거나 새로 놓으면 다시 Bake를 해줍니다.
Bake 진행한 Ground는 아래와 같이 색이 변하게 됩니다.
2. Navigation
Bake 할때 어떠한 조건으로 Bake를 진행할지 정하는 곳입니다.
==Window > AI > Navigation== 에 있습니다.
값 | 정하는 것 | 면에 생기는 일 |
|---|---|---|
Radius | 원기둥의 반지름. 에이전트 중심이 벽이나 낭떠러지에 얼마나 가까이 갈 수 있는지 | 벽과 낭떠러지에서 이만큼 떨어진 곳까지만 면이 만들어집니다 |
Height | 원기둥의 높이 | 이보다 낮은 틈 아래에는 면이 만들어지지 않습니다 |
Step Height | 넘어갈 수 있는 턱의 높이 | 이보다 높은 턱은 면이 이어지지 않습니다 |
Max Slope | 올라갈 수 있는 경사의 각도(도) | 이보다 가파른 경사에는 면이 만들어지지 않습니다 |
3. NavMesh Agent
캐릭터에 붙여 길찾기와 이동을 함께 맡기는 컴포넌트입니다.

칸 | 정하는 것 |
|---|---|
Agent Type | 이 에이전트가 어느 Agent Type의 면을 걸을지. NavMesh Surface의 |
Base Offset | Transform의 기준점과 에이전트 원기둥 바닥 사이의 높이 차. 기준점이 가운데에 있는 Capsule·Cube가 바닥에 묻히거나 떠 있으면 이 값을 봅니다 |
Speed | 길을 따라 움직이는 최고 속도(초당 거리) |
Angular Speed | 방향을 트는 최고 속도(초당 각도) |
Acceleration | 속도를 올리고 내리는 빠르기 |
Stopping Distance | 목적지에서 이 거리 안에 들어오면 멈춥니다 |
Auto Braking | 켜져 있으면 목적지에 가까워질 때 속도를 줄입니다 |
Obstacle Avoidance 묶음 | 다른 에이전트를 피할 때 쓰는 크기와 피하는 정도 |
Path Finding 묶음 | 길찾기 관련 설정. |
4. Nav Mesh Obstacle
Bake 후에 추가된 오브젝트같은 경우는 Bake를 새로 해주지 않으면 agent가 인식하지 못합니다.
그럴때 ==Nav Mesh Obstacle== Component 를 추가하고, Carve 옵션을 켜주게 되면 동작하는 중에도 ==자동으로 Bake==가 된다.
하지만, 어쩔 수 없는 상황이 아니라면 메모리 사용 측면에서 추천하지 않는 기능이다.


