UE5

NavMesh Invoker

개발꼬순내 ㅣ 2025. 4. 23. 15:00

NavMeshBoundVolume를 AI주변으로만 동적으로 세팅하도록 만들어주는 기능. 꼭 AI가 아니라도 Navigation Invoker Component를 가진 액터라면 모두 적용가능하다. 왜 동적으로 해야하냐? 거대한 레벨을 전부 navMeshVolume을 깔기에는 쓰지도 않는 부분까지 계산해야하기에 비효율적이기 때문.

 

.h 세팅코드

	UPROPERTY(BlueprintReadWrite, Category = Navigation, meta = (AllowPrivateAccess = "true"))
	UNavigationInvokerComponent* NavInvoker;
    
    	/** 네비게이션 메시 생성 반경 */
	float NavGenerationRadius;

	/** 네비게이션 메시 제거 반경 */
	float NavRemovalRadius;

 

 

FORCEINLINE class UNavigationInvokerComponent* GetNavInvoker() const { return NavInvoker; }

 

 

.cpp 세팅코드

// 활성화될 범위 설정. 테스트를 위해 매우 작은 값 부여.
NavGenerationRadius = 10.0f;
NavRemovalRadius = 15.0f;

// Navigation Invoker 컴포넌트 생성 및 초기값 셋업.
NavInvoker = CreateDefaultSubobject<UNavigationInvokerComponent>(TEXT("NavInvoker"));
// SetGenerationRadii 함수를 사용하여 생성 반경과 제거 반경 설정. Protected 멤버변수이므로 함수를 통해 수정 필요.
NavInvoker->SetGenerationRadii(NavGenerationRadius, NavRemovalRadius);

 

Build.cs에 NavigationSystem을 추가.

		PublicDependencyModuleNames.AddRange(new string[] { 
			"Core", 
			"CoreUObject", 
			"Engine", 
			"InputCore", 
			"EnhancedInput",
			"NavigationSystem" // 여기 NavigationSystem 모듈 추가!
		});

 

Project Setting -> Navigation System -> Runtime Generation -> Dynamic

// -> Navigation Enforcing -> Invoker Check

 

 

 

 

 

'UE5' 카테고리의 다른 글

언리얼 Monster AI 구현(4): 통신  (0) 2025.04.22
언리얼 Monster AI 구현(3): Animation  (0) 2025.04.22
언리얼 Monster AI구현(2): Behavior Tree  (0) 2025.04.15
언리얼 Monster AI 구현(1): 전투  (0) 2025.04.15
C++ Behavior Tree  (0) 2025.04.08