1. AI 컨트롤러 생성하기
커스텀 AI 컨트롤러 클래스를 생성하여 에너미의 행동을 제어하도록 해보자.
AI 컨트롤러 클래스를 생성한다.
빌드.CS 파일로 들어가 모듈을 추가해주자.
"AIModule"
이제 AI 컨트롤러 클래스에서 블랙보드와 행동트리를 제어할 것이다.
생성자와 행동트리컴포넌트를 담을 포인터를 만들어주자.
public:
AAuraAIController();
protected:
UPROPERTY()
TObjectPtr<UBehaviorTreeComponent> BehaviorTreeComponent ;
생성자에서 실제로 할당해준다.
AAuraAIController::AAuraAIController()
{
Blackboard = CreateDefaultSubobject<UBlackboardComponent>("BlackboardComponent");
check(Blackboard);
BehaviorTreeComponent = CreateDefaultSubobject<UBehaviorTreeComponent>("BehaviorTreeComponent");
check(BehaviorTreeComponent);
}
블랙보드 변수의 경우 기본적으로 AI 컨트롤러 클래스에 존재하기 때문에 그냥 호출해서 할당하면 된다.
이제 에너미 클래스로 가서 행동트리 클래스를 만들어준다.
UPROPERTY(EditDefaultsOnly, Category="AI")
TObjectPtr<UBehaviorTree> BehaviorTree;
UPROPERTY()
TObjectPtr<AAuraAIController> AuraAIController;
행동트리와 AI 컨트롤러를 담을 포인터를 선언해주었다. 이것을 실제로 할당해주는 작업을 해야할 것이다. 그리고 이것을 할당하기 좋은 시점은 에너미가 컨트롤러에의해 소유될 때이다.
virtual void PossessedBy(AController* NewController) override;
void AAuraEnemy::PossessedBy(AController* NewController)
{
Super::PossessedBy(NewController);
AuraAIController = Cast<AAuraAIController>(NewController);
}
2. 블루프린트에서 블랙보드와 행동트리 만들기
AI 컨트롤러 블루프린트 클래스를 만들었다.
에너미 클래스로 가서 컨트롤러를 설정해준다.
이제 블랙보드와 행동트리를 만들어보자.
에너미 클래스에서 행동트리를 설정해주는 것을 잊지 말자.
이제 행동트리를 설정했으니 이것을 어떻게 실행하는 지 알아보자.
3. 행동트리 실행하기
행동트리를 실행하기에 앞서 블랙보드를 초기화 해주어야 한다. 아래의 과정을 통해 가능해진다.
AuraAIController->GetBlackboardComponent()->InitializeBlackboard(*BehaviorTree->BlackboardAsset);
이제 행동트리를 실행시키면 된다.
AuraAIController->RunBehaviorTree(BehaviorTree);
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 57. 블랙보드 키 만들고 가장 가까이 있는 원하는 액터 설정하기 (0) | 2024.12.28 |
---|---|
[실습2] 56. 행동트리 커스텀 서비스 만들기 (0) | 2024.12.28 |
[실습2] 54. 커스텀 게임플레이 이펙트 컨텍스트 사용하기 (0) | 2024.12.07 |
[실습2] 53. 네트워크 직렬화 (0) | 2024.12.07 |
[실습2] 52. 커스텀 게임플레이 이펙트 컨텍스트 만들기 (0) | 2024.12.06 |