1. NPC 캐릭터 클래스 생성 후 메시, 컬라이더,캡슐 설정
2. NPC 캐릭터 애님인스턴스 클래스 생성 후 설정
3. AI 컨트롤러 클래스 생성
4. 블랙트리, 블랙보드 생성 후 바인딩
- 위 2개를 C++ 코드를 사용할라면 bulid.cs 에 'AIModule' 모듈을 추가해야한다
- Task도 사용할 예정이므로 추가
using UnrealBuildTool;
public class KGame : ModuleRules
{
public KGame(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","UMG", "NavigationSystem", "AIModule", "GameplayTasks" });
PrivateDependencyModuleNames.AddRange(new string[] { });
}
}
////h
UCLASS()
class KGAME_API AKAIController : public AAIController
{
GENERATED_BODY()
public:
AKAIController();
private:
UPROPERTY()
class UBehaviorTree* BTAsset;
UPROPERTY()
class UBlackboardData* BDAsset;
};
////cpp
#include "BehaviorTree/BehaviorTree.h"
#include "BehaviorTree/BlackboardData.h"
#include "BehaviorTree/BlackboardComponent.h"
AKAIController::AKAIController()
{
static ConstructorHelpers::FObjectFinder<UBlackboardData> BDObject(TEXT("BlackboardData'/Game/_ANIM/Zombie/BD_Zombie.BD_Zombie'"));
if (BDObject.Succeeded())
{
BDAsset = BDObject.Object;
}
static ConstructorHelpers::FObjectFinder<UBehaviorTree> BTObject(TEXT("BehaviorTree'/Game/_ANIM/Zombie/BT_Zombie.BT_Zombie'"));
if (BTObject.Succeeded())
{
BTAsset = BTObject.Object;
}
}
5. 블랙보드 키 바인딩
키를 생성하고, class에서 키 이름을 입력해서 바인딩을 한다.
////h
class KGAME_API AKAIController : public AAIController
{
public:
static const FName HomePosKey;
static const FName PatrolPosKey;
static const FName TargetKey;
}
////cpp
const FName AKAIController::HomePosKey(TEXT("HomePos"));
const FName AKAIController::PatrolPosKey(TEXT("PatrolPos"));
const FName AKAIController::TargetKey(TEXT("Target"));
'Unreal > Game 2 ' 카테고리의 다른 글
10.2 AI 추격 (0) | 2019.07.02 |
---|---|
10.1 AI 정찰 (0) | 2019.07.02 |
9.3 PlayerState - 작성 중 (0) | 2019.06.30 |
9.2 플레이어 HUD (0) | 2019.06.30 |
9.1 StatComponent (0) | 2019.06.30 |