언리얼에서 AI캐릭터는 Navigation Mesh로 감지된 영역으로만 다닐 수 있다.
Navigation Mesh는 본인의 영역안의 지형을 파악해서 AI가 다닐수있는 영역을 연산해서 전달한다.

만약 지형이 변하지 않는다면 스태틱으로 사전에 영역 정보를 저장해서 AI에게 팜플릿 주듯 제공하면 되겠지만,
지형이 변할 가능성이 있다면, Navigation Mesh는 실시간으로 계속 맵 정보를 연산해서 전달해줘야한다.
맵이 좁다면야 그정도는 상관없겠지만, 맵이 넓거나 오픈월드라면 시스템에게도 꽤나 고된 작업일 수 있다.
그럴 때 쓸 수 있는 게 Navigation Invoker다.
Navigation Invoker란 AI캐릭터의 주변 일정 영역 안에서만 Navigation Mesh 계산을 하도록해서 부하를 줄여줄 수 있는 시스템이다. 캐릭터에 코드 몇줄만 추가해주면 사용이 가능하다.
//Character.h
#include "NavigationInvokerComponent.h"
UPROPERTY(BlueprintReadWrite, Category = Navigation, meta = (AllowPrivateAccess = "true"))
UNavigationInvokerComponent* NavInvoker;
float NavGenerationRadius;
float NavRemovalRadius;
FORCEINLINE class UNavigationInvokerComponent* GetNavInvoker() const { return NavInvoker; }
//Character.cpp
#include "NavigationInvokerComponent.h"
//생성자 안에
NavGenerationRadius = 10.0f;
NavRemovalRadius = 15.0f;
NavInvoker = CreateDefaultSubobject<UNavigationInvokerComponent>(TEXT("NavInvoker"));
NavInvoker->SetGenerationRadii(NavGenerationRadius, NavRemovalRadius);
//build.cs
public SpartaAI(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "NavigationSystem" });
}
// NavigationSystem 추가
그리고 프로젝트 세팅에서




두가지 설정을 해주면 기본적인 세팅이 끝난다.

캐릭터 주변에만 연산되어 표시되었다.
'게임 개발 공부 > 언리얼엔진' 카테고리의 다른 글
| UE5 - 나이아가라 불꽃놀이 (0) | 2025.04.21 |
|---|---|
| UE5 | C++ - 랜덤 스폰 : 지형 메시 사용과 가장자리 제외 (0) | 2025.04.10 |
| UE5 - 데이터 애셋 (0) | 2025.04.08 |
| UE5 - 비헤이비어트리 기본 용어 (0) | 2025.04.02 |
| UE5 - GameInstanceSubsystem (0) | 2025.03.25 |