Composit
- 셀렉터 - 여러 행동중 하나의 행동을 지정 (제어문)
- 시퀀스 - 여러 행동을 모두 수행 (순차 처리)
- 패러랠 - 여러 행동을 함께 수행 (? 동시수행)
컴포짓 하위에 존재하는 행동(Action)의 처리과정에서 결과타입을 4가지로 받아올수있다.
행동 결과 타입
- 성공
- 실패
- 중지 - 외부 요인으로 인한 행동의 실패
- 진행중
커포짓 노드 마다 다른 결과 처리
- 셀렉터 - 성공이 나오면 종료된다
- 시퀀스 - 실패가 나올때까지 진행한다 성공이 나오면 다음 행동을 처리한다.
부가기능
- 데코레이터 컴포짓 노드가 실행되는 조건을 지정 (제어문)
- 서비스 컴포짓 노트가 활성화될 때 주기적으로 실행하는 부가 명령
- 관찰자 중단(abort) 데코레이터 조건에 부합되면 컴포짓 내 활동을 모두 중단
객체 Ai 적용 구조
- AIControllerClass - Ai구성하는 행동과 컴포짓을 이루는 클래스이다.
- AutoProssess - Ai를 적용 시킬 대상의 타입을 정의한다.
AutoProssess 위치확인
폰 디테일 최하단 -> AutoPossess Ai 속성 : Ai를 적용시킬 타입 정의
- 월드에 배치된 액터
- 스폰함수에 의해 생성된 액터
- 둘다 포함
AiContorllerClass 생성
1. Ai Controller Class 상속받는 클래스 생성
2. Ai 구성요소 생성자 오버로딩에서 초기화
#include "Character/ABCharacterNonPlayer.h"
#include "Engine/AssetManager.h"
#include "AI/ABAIController.h"
AABCharacterNonPlayer::AABCharacterNonPlayer()
{
GetMesh()->SetHiddenInGame(true);
AIControllerClass = AABAIController::StaticClass();
AutoPossessAI = EAutoPossessAI::PlacedInWorldOrSpawned;
}
AI Controller Class에 반드시 들어가야할 기본 구성요소
protected:
virtual void OnPossess(APawn* InPawn) override;
private:
UPROPERTY()
TObjectPtr<class UBlackboardData> BBAsset;
UPROPERTY()
TObjectPtr<class UBehaviorTree> BTAsset;
Ai 구동
UBlackboardComponent* BlackboardPtr = Blackboard.Get();
if (UseBlackboard(BBAsset, BlackboardPtr))
{
bool RunResult = RunBehaviorTree(BTAsset);
ensure(RunResult);
}
Ai 정지
UBehaviorTreeComponent* BTComponent = Cast<UBehaviorTreeComponent>(BrainComponent);
if (BTComponent)
{
BTComponent->StopTree();
}
BrainComponenet는 AiControllerClass가 가지고있다.
'언리얼5 > 공부기록' 카테고리의 다른 글
UE 어빌리티 시스템 1_1 (정리) ASC , GA TAG (2) | 2024.03.29 |
---|---|
UE 콜리전 사용법 정리 (0) | 2024.03.27 |
UE 액터와 컴포넌트 이해 (0) | 2024.03.26 |
UE Ai Task Unreal C++에서 구현방법 (0) | 2024.03.24 |
UE 게임 데이터 관리 (0) | 2024.03.24 |