728x90
반응형
- 개요
이전에 생성한 BTService_FindNearestPlayer 클래스를 오버라이드하여
주기적으로 몬스터가 플레이어를 찾아서 추적할 수 있도록 설정한다
1) BTService_FindNearestPlayer 클래스

위와 같이 멤버함수와 멤버변수를 추가한다
Blackboard에서 저장하는 데이터는 BlackboardKey로서 저장한다
멤버변수는 각각 다음과 같다
- TagetToFollowSelector : Object로서, 몬스터가 추적할 플레이어
- DistanceToTargetSelector : Float로서, 몬스터가 추적할 거리

TickNode 함수는 주기적으로 수행하는 Service에서 주기적으로 호출하는 함수이다
로직은 다음과 같다
- 부모 클래스의 멤버변수인 AIOwner를 통해 AIController를 소유한 Pawn을 가져온다
- Pawn이 갖고 있는 Tag를 비교하여 지역변수 TargetTag를 설정한다
- 지역 컨테이너 변수 ActorsWithTag에 World를 탐색하여 TargetTag에 해당하는 Actor를 저장한다
- 이후 ActorsWithTag를 순회하면서 다음의 로직을 진행한다
- AIController를 소유한 Pawn과 Actor의 거리 차이를 비교하여 지역변수 ClosestDistance에 저장한다
- ClosestDistance 이내에 위치한 Actor를 지역변수 ClosestActor에 저장한다
- 순회가 끝난후 다음의 로직을 진행한다
- TagetToFollowSelector에 ClosestActor를 UObject로 저장한다
- DistanceToTargetSelector에 ClosestDistance를 float로 저장한다
2) 언리얼 에디터
2 - 1) BTS_FindNearestPlayer 블루프린트

위와 같이 ReceiveTickAI 노드만 생성하고 나머지 로직은 제거한다
2 - 2) BT_EnemyBehaviorTree 블루프린트

Selector 노드 - FindNearestPlayer 서비스를 설정하고
Blackboard의 TargetToFollow와 DistanceToTarget을 사용하도록 설정한다
이후 수행하는 MoveTo 태스크는 Blackboard의 TargetToFollow를 사용하도록 설정한다
2 - 3) BP_EnemyBase 블루프린트

몬스터의 Tags 옵션을 위와 같이 설정한다
- 최종 실행 결과
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 AI - 5) Task 클래스를 이용한 몬스터의 공격 구현 (0) | 2025.09.20 |
|---|---|
| 몬스터 AI - 4) 추적 AI & 적과 GE를 적용하는 Actor 클래스 개선 (0) | 2025.09.20 |
| 몬스터 AI - 2) AIController 클래스와 Service 클래스 (0) | 2025.09.19 |
| 몬스터 AI - 1) AI의 구성과 동작방식 (0) | 2025.09.19 |
| 데미지 처리 심화 - 최종) 속성 공격 / 저항의 추가와 공격 스킬의 세분화 (0) | 2025.09.14 |