Unity ) NavMesh

강성현
∙∙조회 6

Unity에서 제공하는 내장 네비게이션 시스템으로, AI 캐릭터가 복잡한 3D 환경에서 이동할 수 있는 경로를 찾아 주기 위해 사용됩니다.

 

좋은 기능이긴 하지만, 너무 많은 오브젝트가 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의 Agent Type과 같아야 합니다

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==가 된다.

하지만, 어쩔 수 없는 상황이 아니라면 메모리 사용 측면에서 추천하지 않는 기능이다.