728x90
반응형
- 개요
플레이어에 근접한 몬스터가 공격하기 위한 두개의 Task 블루프린트를 생성한다
이때 생성하는 방식을 2개로 분리하여 다음과 같이 진행한다
- BTTask_BlueprintBase 클래스를 상속받은 C++ 클래스를 부모로 블루프린트를 생성
- BTTask_BlueprintBase 클래스로부터 블루프린트를 바로 생성
1) BTTask_Attack 클래스

BTTask_BlueprintBase 클래스로부터 BTTask_Attack 클래스를 생성한다
해당 클래스로부터 Task를 생성하여 동작시키기 위한 ExecuteTask 함수를 오버라이드한다

ExecuteTask 함수의 로직은 위와 같은데, 부모 버전의 함수를 호출한다
2) 언리얼 에디터
2 - 1) BTT_Attack 블루프린트 - 상속받은 C++ 클래스로부터 생성

ExecuteTask 이벤트 노드를 추가하고 위와 같이 로직을 구성한다
플레이어에게 근접했다면 몬스터의 위치에 디버그 스피어를 그리고 Task를 종료한다
2 - 2) BTT_GoAroundTarget 블루프린트 - 원본 C++ 클래스로부터 생성

ExecuteTask 이벤트 노드를 추가하고 위와 같이 로직을 구성한다
Blackboard에 Object로 저장한 플레이어를 Actor로 가져오고 해당 Actor를 기준으로 무작위 위치값을 가져온다
가져온 위치값을 Blackboard에 Vector로 저장하고 Task를 종료한다
2 - 3) BT_EnemyBehaviorTree 블루프린트

근접 몬스터가 수행하는 Sequence 노드에 위와 같이 Tasks 노드들을 추가한다
각각 다음과 같다
- MoveTo 태스크 : TargetToFollow로 이동
- BTT_Attack 태스크 : TargetToFollow에 근접했으므로 공격(현재는 디버그 스피어를 그림)
- Wait 태스크 : 공격한 후 랜덤한 시간동안 대기
- BTT_GoAroundTarget 태스크 : TargetToFollow를 기준으로 300의 범위에서 무작위로 가져온 값을 MoveToLocation에 저장
- TimeLimit 데코레이터 : 2초 후에 abort를 발생시켜 Root 노드부터 다시 실행
- MoveTo 태스크 : MoveToLocation으로 이동
최종적으로 근접 몬스터는 인접한 플레이어를 공격하고 무작위 위치로 이동하는 로직을 2초마다 수행한다
- 최종 실행 결과
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 근접 공격 - 1) 근접 공격 GameplayAbility 생성 (0) | 2025.09.26 |
|---|---|
| 몬스터 AI - 최종) EQS를 사용한 원거리 몬스터 AI 설정 (0) | 2025.09.21 |
| 몬스터 AI - 4) 추적 AI & 적과 GE를 적용하는 Actor 클래스 개선 (0) | 2025.09.20 |
| 몬스터 AI - 3) Service 클래스를 이용한 몬스터의 추적 구현 (0) | 2025.09.19 |
| 몬스터 AI - 2) AIController 클래스와 Service 클래스 (0) | 2025.09.19 |