Unreal5 공부/TIL

2026/5/6 TIL

anna59 2026. 5. 6. 22:58

 

 

AI BehaviorTree 만들기

 

Root
└── Selector
    ├── Sequence [1순위 - 서포트]
    │   ├── Decorator: 서포트 조건 충족?
    │   └── Task: 서포트 실행
    ├── Sequence [2순위 - 전투]
    │   ├── Decorator: TargetActor 있음?
    │   ├── Task: 타겟으로 이동
    │   └── Task: 공격
    └── Task [3순위 - 대기/탐색]

 

 

서포트 조건 충족 여부 확인

Sequence
├── Decorator: 플레이어 체력 30% 이하? ← 이게 BTDecorator
│   → false면 이 Sequence 통째로 스킵
└── Task: 서포트 실행

 

Decorator를 C++로 작성해야함.

 

 

*코드 팁

#pragma region 

코드를 접고펼 수 있게 구역을 나누는 것.

 

 

BTTask에서 실제 행동을 실행하는 함수는 ExecuteTask

 
cpp
virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
  • EBTNodeResult::Succeeded → 태스크 성공
  • EBTNodeResult::Failed → 태스크 실패
  • EBTNodeResult::InProgress → 태스크 진행 중
1. OwnerComp에서 AIController 가져오기
2. AIController에서 Pawn 가져오기
3. Pawn에서 HealthComponent 가져오기
4. 힐 실행
5. EBTNodeResult::Succeeded 반환

 

 

Todo: TargetActor -> EnemyActor 이름 바꾸기

 

Task: Attack

히트스캔 공격 흐름

1. Blackboard에서 TargetActor 가져오기
2. AI 위치에서 TargetActor 방향으로 라인 트레이싱
3. Hit 판정 → TargetActor의 HealthComponent에 데미지 적용
4. EBTNodeResult::Succeeded 반환