1. 주요 개념

(1) 비헤이비어 트리(Behavior Tree)

AI의 주요 행동을 조직, 관리할 수 있는 트리.

다양한 노드를 배치하여 AI의 행동을 제어할 수 있다.

 

(2) 블랙 보드(Black Board)

AI가 탐색하고 저장하는 데이터 공간.

목표, 목표 지점등의 데이터를 키로 지정한다.

키-값 쌍을 사용한다.

 

 

2. 비헤이비어 트리와 블랙 보드 구성 - ShooterAIController.cpp

아래 헤더 파일을 추가한다.

#include "BehaviorTree/BlackboardComponent.h"
void AShooterAIController::BeginPlay()
{
    Super::BeginPlay();

    if (AIBehavior)
    {
        RunBehaviorTree(AIBehavior);

        APawn* PlayerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0);

        GetBlackboardComponent()->SetValueAsVector(TEXT("PlayerLocation"), PlayerPawn->GetActorLocation());
    }
}

GetBlackboardComponent를 이용하여 블랙보드를 가져와 PlayerLocation의 키와 플레이어 폰의 값을 쌍으로 만든다.

이후 블랙 보드를 에디터에서 켜서 PlayerLocation인 벡터 Key를 만들고 테스트한다.

폰에 빙의 후 F8을 눌러 BB_EnemyAI에서 PlayerLocation Key 옆에 정상적으로 위치가 뜨는지 확인한다.

그렇지 않다면 BP_ShooterAIController의 디테일 창에서 비헤이비어 트리가 정상적으로 설정되어 있는지 확인한다.