▣ 먼저 Behavior Tree와 Blackboard를 생성합니다.
각각 이름 앞에 BT, BB를 붙여서 어떤 파일인지 의도에 맞게 작성합니다.
▣ 비헤이비어 트리는 블루프린트와 유사한 시각적 방식으로 생성됩니다. 비헤이비어 트리 그래프(Behavior Tree Graph)에 기능이 탑재된 다양한 노드를 추가하고 연결하는 방식입니다. 비헤이비어 트리가 로직을 실행하는 한편, 비헤이비어 트리가 결정을 내리는 데 필요한 정보인 블랙보드 키(Blackboard Key)는 블랙보드(Blackboard)라는 별도의 에셋에 저장됩니다. 일반적인 워크플로는 블랙보드를 생성하고, 블랙보드 키를 추가한 다음, 블랙보드 에셋을 사용하는 비헤이비어 트리를 생성하는 순서입니다. 블랙보드는 아래 이미지에서처럼 비헤이비어 트리에 할당됩니다.
▣ Behavior Tree창에 가서 디테일탭에서 아까 생성한 Blackboard으로 설정합니다.
▣ AiController c++ 코드에서 Behavior Tree에 대한 데이터를 저장할 변수를 선언합니다.
▣ cpp 파일로 가서 "BehaviorTree/BehaviorTree.h" 헤더를 추가합니다.
그리고 ConstructorHelpers::FObjectFinder <UBehaviorTree> 코드로 BT오브젝트를 가져오는 코드를 완성합니다.
여기서 중요한 건 경로 텍스처에 맨 앞에 BehaviorTree가 들어가야 합니다.
▣ BeginPlay()에서 RunBehaviorTree함수를 활용하여 BehaviorTree를 실행하는 코드를 완성합니다.
▣ 저장 및 컴파일 후 AiController 블루프린트에서 변수가 잘 대입되어 있는지 확인할 수 있고 AiController가 BehaviorTree와 잘 연결되는 것도 확인할 수 있습니다.
▣ 다시. cpp로 돌아가서 #include "BehaviorTree/BlackboardComponent.h" 헤더를 추가하고
GetBlackboardComponent()->SetValueAsVector 코드로 Blackoard를 세팅하는 함수를 작성합니다.
이 코드는 Blackboard에 있는 데이터를 플레이어 위치로 세팅하는 코드입니다.
▣ 컴파일 후 Blackboard로 돌아가서 아까 세팅한 SetValueAsVector함수처럼 동일한 이름과 형식으로 데이터를 추가하고 저장 후
▣ 플레이를 하고 확인하면 Player위치가 세팅되는 걸 확인할 수 있습니다.
▣. cpp파일에서 DefaultLocation를 추가하는데 이건 현재 Ai에 위치를 세팅하는 코드입니다.
▣ Blackboard에 동일한 Vector 값을 추가합니다.
▣ Behavior Tree로 가서 Sequence를 먼저 추가하고 Move to와 Wait Tasks를 추가하여 연결합니다.
말 그래도 Move to 이동, Wait 대기하는 노드입니다.
그리고 Tasks에 Move To는 PlayerLocation과 DefaultLocation로 각각 이동할 위치를 지정합니다.
그럼 Sequence에 기준으로 왼쪽부터 1,2,3,4 이렇게 반복해서 Tasks가 실행됩니다.
▣ 저장 후 플레이를 해보면 ai가 계속 이동하는 걸 확인할 수 있습니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 c++ BehaviorTree(BTTask 생성 및 Character 호출) (0) | 2024.04.29 |
---|---|
언리얼엔진5 c++ BehaviorTree(Decorator, Selector, 플레이어 발견, 원위치로) (0) | 2024.04.28 |
언리얼엔진5 c++ AIController(LineOfSightTo : 시선방향) (2) | 2024.04.27 |
언리얼엔진5 c++ AIController(Focus, Move) (0) | 2024.04.27 |
언리얼엔진5 엘리베이터 (2) | 2024.04.26 |
댓글