When?
인공지능을 통해 Actor가 목표 지점으로 길찾기를 할 때 쓰인다.
Why?
Actor가 목표 지점으로의 길을 찾아야 할 때, 어떤 길, 어떤 경사로 등 다양한 조건들을 체크할 수 있어야 한다.
Actor의 높이나, 넓이에 따라 선택적으로 길을 찾을 수 있어야 하며, 지형 정보에 따라 선호하는 길을 찾을 수 도 있어야 한다.
이런 것을 NavMesh를 통해 구현할 수 있으며, 이는 Detour & Recast Library를 Unreal에 통합하여 Engine에서 지원하는 것으로 보인다.
How?
1. NavMesh Bounds Volume
먼저 어떤 길에 NavMesh를 생성하려면 어디서부터 어디까지 생성할지 범위에 대한 지정이 필요하다.
그것을 NavMesh Bounds Volume을 통해 지정할 수 있다.
Nav Mesh Bounds Volume의 크기를 키워 생성할 범위를 지정할 수 있다.
이때, Project Settings에서 NavMesh의 특성을 설정할 수 있다.
NavMesh를 통해 길을 찾을 Actor를 Agent라 칭하며, 여기서 전역적으로 설정되는 Agent에 맞게 NavMesh가 만들어진다.
예를 들어, Slope를 높이면, 경사가 높은 부분에 대해서는 NavMesh가 생성되지 않는다.
2. Nav Modifier Volume
NavMesh가 생성되었을 때, 특정 부분에 대해서 전역적이지 않은 설정을 하고 싶을 수도 있다.
나의 경우에는, 경사로의 옆면에 대해서 바로 올라가지 않고, 빙 돌아서 올라가게 하고 싶었다.
이럴 때, Modifier를 이용해 NavArea_Null을 설정하면, 저 부분에 있는 NavMesh가 사라지고, Agent는 저 경로를 사용하지 못하게 된다.
이 밖에도 다양한 NavArea에 대한 설정을 만들어, 적용시킬 수 있다.
3. Agent
Agent는 MovementComponent를 통해 NavMesh와 상호작용 한다.
나의 경우 Pawn을 사용하고 있으므로, FloatingPawnMovement Component를 Agent에 달고, Agent에 대한 설정을 해주었다.