[Unreal] Decorator Blackboard 블랙보드 데코레이터는 블랙 보드에 설정된 값을 체크하여 노드의 실행 여부를 판단 설정 정보 플로우 컨트롤해당 노드를 다시 평가하는 조건관찰자 노티파이 에 설정된 조건이 충족되는 경우 관찰자 중단 에 설정된 방식으로 동작 관찰자 노티파이 (EBTBlackboardRestart)ValueChange : 값이 변경되는 경우 재평가ResultChange : 상태가 변경되는 경우 재평가 관찰자 중단 (EBTFlowAbortMode)None : 중단하지 않음LowerPriority : 해당 데코레이터가 붙은 노드의 우측 노드들를 중단State 1 노드(Sequence노드의 하위 노드)가 실행되는 상태에서 블랙보드의 State값이 20으로 설정되는 경우바로 중지되지 않고 State 2까지 완료된후에 다시 조건이 평가.. 2024. 8. 4. [Unreal] BehaviorTree 기본 설정 필요 클래스 및 에셋 AAIController를 상속받은 AI 컨트롤러 BlackBoard BehaviorTree에서 참조할 상태정보 BehaviorTree BlackBoard에 설정된 상태를 참조하여 처리할 행동 로직 설정 1. AAIController를 상속받은 AI클래스 생성 콘텐츠 브라우저에서 우클릭 -> 블루프린트 클래스 -> AIController를 부모로 BP_EnemyController 를 생성 2. BlackBoard / BehaviorTree 에셋 생성 콘텐츠 브라우저에서 우클릭 -> 인공지능 - 블랙보드를 선택하여 에셋을 만들고 이름은 BB_Enemy - 비헤비어 트리를 선택하여 에셋을 만들고 이름은 BT_Enemy로 설정 3. 비헤비어트리에 블랙보드 설정 BT_Enemy의 디테일 -.. 2023. 11. 22. [Unreal] TaskNode에서 멤버 변수 사용 UBTTask_Wait 참조 1. 사용할 정보를 가지는 구조체를 선언struct FBTWaitTaskMemory{ /** time left */ float RemainingWaitTime;};2. GetInstanceMemorySize를 오버라이딩 하여 해당 구조체 사이즈를 리턴uint16 UBTTask_Wait::GetInstanceMemorySize() const{ return sizeof(FBTWaitTaskMemory);}3. 각 멤버 함수들의 인자로 넘어오는 NodeMemory를 정의한 구조체로 캐스팅해서 정보를 사용EBTNodeResult::Type UBTTask_Wait::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory){ .. 2023. 1. 29. [Unreal] Custom TaskNode UBTTaskNode를 상속 받고 필요한 함수를 재정의 중요 재정의 함수들 virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override; - TaskNode가 실행될때 호출 virtual void TickTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override; - TaskNode가 실행되는 동안 매틱 호출 - TickTask를 사용하려면 1. 생성자에서 bNotifyTick = true로 설정 2. ExecuteTask()의 리턴 값을 EBTNodeResult::InProgress로.. 2023. 1. 16. 이전 1 다음