https://hyunjunstar.tistory.com/99
이전 글인 위 링크의 Unreal C++ 싱글플레이 FPS 슈터 게임 팀 프로젝트 적 AI - 2 에서는 Behavior Tree와 Blackboard 기반으로 적 AI 캐릭터를 구현 하였다.
이번 글에서는 Behavior Tree와 Blackboard의 블루프린트 구조를 정리하고,
EnemyCharacter 블루프린트를 생성 해보려고 한다.
New Key로 TargetActor를 추가하여 Key Type은 Object로 설정하고,
Base Class에 Actor를 지정하였다.
TargetActor는 AI가 추적하거나 공격할 대상을 저장하는 값이며,
EnemyAIController에서 플레이어를 감지하면 Blackboard의 TargetActor에 플레이어 Pawn을 저장하고,
Behavior Tree는 이 값을 기준으로 추적과 공격을 판단한다.

Selector를 기준으로 공격, 추적, 대기 흐름을 나누었다.
TargetActor가 존재하고 공격 범위 안에 있으면 Sequence_Attack이 실행된다.
이 Sequence 안에서는 BTDecorator_IsInAttackRange 조건을 확인한 뒤,
BTTask_AttackTarget을 실행해 공격을 실행한다.
TargetActor는 존재하지만 공격 범위 밖이라면 Sequence_Chase가 실행된다.
이때 Move To 노드를 사용해 플레이어를 추적한다.
공격과 추적 조건을 모두 만족하지 않으면 Wait 노드가 실행되어 잠시 대기하도록 구성하였다.

EnemyCharacter를 상속받는 블루프린트 클래스 생성 후,
Class Defaults - Details - Pawn 에서 AI Controller Class에 EnemyAIController 지정 후,
Mesh에서 Skeletal Mesh Asset에 SKM_Manny를 지정해주었다.


SK_Mannequin 스켈레톤 선택 후, AnimInstance를 상속받는 Animation Blueprint 클래스 생성

생성 후 BP_EnemyCharacter에 Class Defaults - Details - Mesh - Location Z축 -88, Rotation Z축 270도로 설정,
그리고 Animation - Anim Class에 ABP_EnemyCharacter 지정

좌측 Place Actors에서 Nav Mesh Bounds Volume 검색 후 배치를 해주었다.

이렇게 C++로 구현한 적 AI 기능을 기반으로,
Unreal Editor에서 Blackboard, Behavior Tree, BP_EnemyCharacter, ABP_EnemyCharacter를 설정하였다.
Blackboard에는 AI가 추적할 대상을 저장하기 위해 TargetActor 키를 추가하였고,
Behavior Tree에서는 이 값을 기준으로 공격, 추적, 대기 흐름을 구성하였다.
또한 EnemyCharacter를 상속받는 블루프린트를 생성하고 EnemyAIController, SKM_Manny, ABP_EnemyCharacter를 연결하여 적 캐릭터가 AI 컨트롤러와 애니메이션 블루프린트를 기반으로 동작할 수 있도록 설정하였다.
| Unreal C++ 싱글플레이 FPS 슈터 게임 팀 프로젝트 구조 정리 및 트러블슈팅 (0) | 2026.05.26 |
|---|---|
| Unreal C++ 싱글플레이 FPS 슈터 게임 팀 프로젝트 적 AI - 4 (0) | 2026.05.23 |
| Unreal C++ 싱글플레이 FPS 슈터 게임 팀 프로젝트 적 AI - 2 (0) | 2026.05.20 |
| Unreal C++ 싱글플레이 FPS 슈터 게임 팀 프로젝트 적 AI - 1 (0) | 2026.05.19 |
| Unreal C++ 게임 루프 및 UI 설계 후 코인 획득 게임 구현 트러블슈팅 (0) | 2026.04.30 |