[UE5] Enemy AI Pass Finder
by 브이담곰1. Navigation System
1.모듈 추가
언리얼 엔진의 내비게이션 시스템을 사용하기 위해서는 먼저 관련 모듈을 추가해주어야 한다.
"NavigationSystem", "AIModule" 를 AddRage()안에 추가해준다.
.Build.cs
public class TPSProject : ModuleRules
{
public TPSProject(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput","UMG", "NavigationSystem", "AIModule" });
}
}
2. EnemyFsm 클래스에 AAIController 멤버변수를 추가한다.
.cpp파일의 BeginPlay에서 변수에 컨트롤러를 할당 할 때, ACharacter을 상속받고 있는 Enemy 클래스에서 GetController()함수를 통해 AController*타입의 인스턴스를 가져오고, AAIController*로 캐스팅 한다.
//EnemyFSM.cpp
//BeginPlay()
//Allocate AIController
ai = Cast<AAIController>(me->GetController());
3.
플레이어를 가리도록 벽을 늘린 후 플레이해보면 벽을 피해서 플레이어를 쫓아오는 것을 볼 수 있다.
맵이 클 때 적이 너무나도 최적의 경로로 플레이어를 찾아오는 것은 부자연스럽다.
2. Navigation Invoker : AI가 이동하면 그에 따라 갖고 있는 내비게이션 데이터 영역 갱신을 제공해주는 기능.
1. 네비게이션 데이터가 Navigation Invoker 기능을 갖고 있는 AI 근처에서 만들어지도록 설정해야한다.
Edit > ProjectSetting > Navigation System
2. AI는 계속 움직이는 대상이기 때문에 동적인 업데이트가 필요하다.
Edit > ProjectSetting > Navigation Mesh
3. Enemy BP에 Navigation Invoker 컴포넌트 추가하기.
Tile Generation Radius : 내비게이션 인보커 컴포넌트를 소유하고 있는 액터 주위로 Nav Mesh 데이터를 생성할 영역
Tile Removal Radius: 액터 이동 시 기존에 있던 Nav Mesh 데이터를 삭제하기 위한 영역. 지정된 영역을 벗어나면 기존 데이터는 삭제된다.
https://docs.unrealengine.com/5.0/ko/using-navigation-invokers-in-unreal-engine/
'Client > UnrealEngine5' 카테고리의 다른 글
[UE5] 델리게이트 동작 구조 (1) | 2023.05.26 |
---|---|
[UE5] Animation BluePrint에 상속변수가 안보이는 경우 (0) | 2023.05.19 |
[UE5] LineTrace를 이용한 총알 발사 (0) | 2023.05.12 |
[UE5] C++ 클래스 기반으로 블루프린트 생성하기 (0) | 2023.05.10 |
[UE5] 유틸리티 매크로 작성하기 (0) | 2023.05.10 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰