본문 바로가기

언리얼5/공부기록

UE Ai Behavior Tree 기본용어 (공부 정리)

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가 가지고있다.