▣ c++ 클래스 생성에서 BTTaskNode를 선택하여 생성합니다.
블랙보드 키가 필요하지 않을 경우 BTTaskNode로 생성합니다.
▣ Build.cs 파일로 가서 "GameplayTasks"를 추가합니다.
▣ 그리고 h 헤더파일로 가서 생성자 및 ExecuteTask 함수를 선언합니다.
▣ ExecuteTask : Task가 실행되기 시작할 때 호출되는 함수
▣ AbortTask : 실행을 중단해야 한다고 판단할 때 호출하는 함수 조건함수
▣ TickTask : Task가 실행될 때마다 발생하지만 첫 Task에서는 아닙니다. 첫 번째는 ExecuteTask가 호출됩니다. 그 이후에
▣ OnMessage : 메시지를 보내려 할 때
▣ cpp파일로 가서 필요한 헤더를 선언합니다.
EnemyCharacter1.h는 가지고 올 적 Ai에 클래스를 선언하시면 됩니다.
▣ 생성자에서 NodeName에 Task에 NodeName을 지정합니다.
그리고 GetAiOwner() 함수를 활용하여 AiController에 Owner을 접근하여 얻고자 하는 Pawn이나 Character, Actor를 가져와서 Cast 하는 코드를 작성합니다.
▣ ExecuteTask() 함수에 반환값은 EBTNodeResult::에 맞게 지정합니다.
Aborted : 중단 완료 = 실패
Failed : 실패로 끝났다.
Succeeded : 성공으로 끝났다.
InProgress : 아직 끝나지 않았다. 진행 중
▣ 컴파일 후 BehaviorTree로 돌아가서 아까 생성한 NodeName Fire를 검색하면 Task가 나오고 추가해서 연결합니다.
▣ 플레이를 해서 적 AI에 시선에 있으면 Attack 함수가 호출되고 텍스트가 출력되는 걸 확인할 수 있습니다.
▣ BlackboardBase 같은 경우 블랙보드 키가 필요한 경우 사용하는 Task입니다.
아까와 동일하게 생성하고 OwnerComp안을 접근하는데 그 이유는 태스크 클래스는 블랙보드 전체에서 하나밖에 없기 때문에 OwnerCompo을 통해서 공유하기 때문에 OwnerComp 접근하여 GetblackboardComponent() 함수를 접근 그리고 GetSelectedBlackboardKey() 함수로 접근하여 BehaviorTree에서 지정한 BlackboardKey에 값을 가져와 사용할 수 있습니다.
▣ BehaviorTree에서 아까 생성한 BlackboardBase NodeName을 검색하면 나오고 그걸 클릭하면 디테일탭에 BlackboardKey를 선택할 수 있습니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 c++ CharacterMovement (0) | 2024.05.04 |
---|---|
언리얼엔진5 c++ BehaviorTree(BTService 생성 및 사용) (0) | 2024.04.30 |
언리얼엔진5 c++ BehaviorTree(Decorator, Selector, 플레이어 발견, 원위치로) (0) | 2024.04.28 |
언리얼엔진5 c++ BehaviorTree(Blackboard Set, Ai Move) (0) | 2024.04.27 |
언리얼엔진5 c++ AIController(LineOfSightTo : 시선방향) (2) | 2024.04.27 |
댓글