728x90
반응형
- 개요
몬스터가 플레이어와의 거리차이를 이용하여 추적하는 방법은 장애물을 마주했을 경우 동작하기 어렵다
따라서 AIModule에서 지원하는 Environment Query System 줄여서 EQS를 사용하는 것이 효율적이다
EQS는 AI가 환경으로부터 데이터를 수집하는 데 사용함으로써 쿼리를 통해 동작한다
- EQS의 동작방식과 구성

AIController가 빙의된 Pawn을 기준으로 Generator를 사용하여 평면을 생성하여 동작한다
생성한 평면을 구성하는 점들을 Items라고 표현한다
Items를 구성한 각각의 점들로부터 Test라고 불리는 사용자 설계 쿼리를 수행한다
쿼리 수행결과의 가중치가 가장 높은 점이 AI가 동작할 최상의 위치를 의미한다

Test의 설정요소는 위와 같은데, 표시한 3개의 요소를 알아본다
- Test Purpose : Test에서 수행하는 작업
- 필터링 / 우선순위 메기기 / 필터링 + 우선순위 메기기
- Context : Test의 타겟을 지정
- EnvQueryContextBlueprintBase 블루프린트를 생성하고 선택한 함수를 오버라이드하여 지정
- Bool Match : False로 설정하여 Context를 볼 수 없는 Items의 점을 필터링
1) EQS_PlayerContext 블루프린트

4개의 함수 중에서 ProvideActorsSet 함수를 오버라이드하여 로직을 구성한다
BP_AuraCharacter 클래스의 Actor들을 찾아서 반환한다
2) EQ_FindRangedAttackPosition 블루프린트

위와 같이 EnvQuery를 설정하였다
로직은 다음과 같다
- Grid 제너레이터 : 원거리 몬스터를 기준으로 800의 범위만큼의 격자를 생성
- Trace (Filter Only) 테스트 : 플레이어를 대상으로 Trace를 수행
- Distance (Score Only)테스트 : 원거리 몬스터로부터 플레이어와의 거리를 비교하여 우선순위 설정
3) BT_EnemyBehaviorTree 블루프린트

원거리 몬스터가 수행하는 Sequence 노드에 위의 Task 노드들을 추가한다
- RunEQSQuery 태스크 : EQ_FindRangeAttackPosition 쿼리를 수행하여 결과를 MoveToLocation에 저장
- MoveTo 태스크 : 저장한 MoveToLocation을 향해 이동
- BTT_Attack 태스크 : TargetToFollow를 대상으로 공격
- Wait 태스크 : 공격한 후에 랜덤한 시간만큼 대기
- 최종 실행 결과
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 근접 공격 - 2) 모션 워핑의 사용 (0) | 2025.09.26 |
|---|---|
| 몬스터 근접 공격 - 1) 근접 공격 GameplayAbility 생성 (0) | 2025.09.26 |
| 몬스터 AI - 5) Task 클래스를 이용한 몬스터의 공격 구현 (0) | 2025.09.20 |
| 몬스터 AI - 4) 추적 AI & 적과 GE를 적용하는 Actor 클래스 개선 (0) | 2025.09.20 |
| 몬스터 AI - 3) Service 클래스를 이용한 몬스터의 추적 구현 (0) | 2025.09.19 |