개요

유니티에서 이동하며 추척하는 적을 구현하는데 사용한다.
평면만을 이동하지 않고 계단등의 경사로나 이동하거나 점프등의 행동을 구현할 수 있다.
내비게이션 시스템은 다음의 요소로 구성된다.
구성 요소
- NavMesh : 게임 월드안에 움직일 수 있는 표면
- NavMesh Agent : 표면을 움직이는 캐릭터(에이전트)
- Off-Mesh Link : 표면 이외에 내비게이션 단축키, 점프, 문 열기등의 행동
- NavMesh Obstacle : 에이전트가 피하는 장애물
NavMesh

게임 월드안에 에이전트가 움직일 수 있는 표면으로 지나갈 수 있는 길의 기준이 된다.
NavMesh Surface 컴포넌트를 한 오브젝트에 추가하여 베이크를 통해 길을 만든다.
Collect Objects
베이크할 때 사용할 오브젝트를 정의한다.
- All : 기본값, 모든 오브젝트를 검사한다
- Volume : 경계 체적과 겹치는 게임 오브젝트만 검사
- Children : NavMesh Surface 컴포넌트의 오브젝트
Include Layers
베이크할 때 사용할 오브젝트의 레이어를 정의
Use Geometry
베이크에 사용할 지오메트리를 선택
- Render Mesh : 렌더메시를 기준으로 베이크
- Physics Colliders : 콜라이더를 기준으로 베이크
NavMesh Agent

목표를 향해 이동할 오브젝트(에이전트)
이동시에는 내비메시를 이용하여 경로를 설정하고 장애물을 회피한다.
- Radius
에이전트의 반경으로 다른 에이전트간의 충돌 계산에 사용
- Height
장애물 밑으로 지나갈 수 있는 높이 간격
- Base offset
충돌 실린더의 오프셋
- Speed
최대 이동속도(초당 월드 단위)
- Angular Speed
최대 회적 속도(초당 각도)
- Acceleration
최대 가속도
- Stopping distance
목표에 가까워졌을 때 정지할 거리
- Auto Braking
목표에 가까워졌을때 감속
- Quality
장애물 회피를 얼마나 적극적을 할지 여부
- Priority
다른 에이전트가 해당 오브젝트를 얼마나 피할지의 정도
- Auto Traverse OffMesh Link
오프메시링크를 가로지르지 위해 true로 설정한다.
- Auto Repath
참이라면 경로에 끝에 도달시 재탐색한다.
- Area Mask
지나갈 수 있는 영역, 영역을 추가하는 것으로 에이전트별로 다른 영역을 이동할 수 있다.
Off-Mesh Link

오프메시 링크는 표면 이외에 이동경로를 정의한다.
예를 들어 도랑, 울타리, 문등에 사용할 수 있다.
점프나 절벽등 특별한 길을 구현할 수 있다.
- Start
오프메시 링크의 시작/도착점
- End
오프메시 링크의 도착/시작점
- Cost Override
양수라면 이동 비용을 해당 값으로 대신한다. 이를 조정하여 지름길을 구현할 수 있다.
- Bi-Directional
오프 메시링크가 양방향으로 이동 가능할지 여부
- Activated
오프 메시링크를 탐색에 사용할지를 결정
- Auto Update Positions
도착점에 도달할 시 내비메시에 연결하여 추척을 개시할지 여부
- Navigation Area
오프 메시링크의 에리어를 정의하여 특정 에이전트가 사용할 수 있게 한다.
NavMesh Obstacle

NavMesh Obstacle 컴포넌트를 추가하면 오브젝트는 에이전트가 피해야 될 장애물이 된다.
정지된 장애물에 경우는 그 모양만큼 내비메시에 구멍이 생긴다.