오픈월드 같은 게임들은 맵이 어마무시하게 크다.
또한, 러닝게임 같은 부류들은 맵이 계속 동적으로 생성되며, 어디까지 사용될지 알 수 없다.
이러한 레벨에서는 NavMeshBoundsVolume을 어떻게 배치할까?
일단 무지성으로 NavMeshBoundsVolume을 크게 늘리면 다음과 같이 연산이 엄청 오래 걸린다.



NavigationInvoker
이렇게 NavMeshVolume의 크기를 가늠할 수 없을 때, 사용하는 것이 NavigationInvoker이다.
이를 사용하기 위해서는 프로젝트 설정을 몇 가지 해줘야 한다.
먼저, Navigation 연산을 런 타임에 할 수 있도록 Runtime Generation 옵션을 Dynamic으로 설정한다.

다음으로, Navigation 생성을 NavigationInvoker를 통해서만 하겠다고 하는 설정을 해준다.

이제 레벨에 NavMeshBoundsVolume을 배치하면, Navigation이 그려지지 않는 것을 확인할 수 있다.

이제 이 NavMeshBoundsVolume의 스케일을 엄청 키운다.
Navigation을 동적으로 생성할 수 있는 모든 지역을 다 포함하도록 늘려줘야 한다.

이제 Navigation을 동적으로 생성시킬 주체가 있어야 한다.
보통 플레이어의 위치가 게임의 기준이니, 플레이어로 한다.
플레이어에게 NavigationInvoker 컴포넌트를 추가한다.
NavigationInvoker Component에서 2가지 설정을 한다.
- Tile Generation Redius: Navigation Tile을 생성시킬 범위
- Tile Removal Radius: Navigation Tile을 제거할 범위

이제 플레이어를 움직여보면, 플레이어의 위치에 따라 Navigation이 생성되었다가 지워졌다가 하는 것을 확인할 수 있다.

'📘Unreal Engine > 📝Unreal Engine' 카테고리의 다른 글
| [Unreal Engine] 열거형의 DisplayName을 문자열로 가져오기 (0) | 2025.11.14 |
|---|---|
| [Unreal Engine] AI 회피 시스템 (0) | 2025.09.29 |
| [Unreal Engine] 간단한 정찰 AI 만들기 (0) | 2025.09.10 |
| [Unreal Engine] 레벨 스트리밍, 여러 레벨 관리하기 (0) | 2025.09.04 |
| [Unreal Engine] 클라이언트에서 애니메이션 끊김 현상 (0) | 2025.03.11 |