- 개요
고블린 주술사의 AI를 개선하여 상황에 따라 임프를 소환하도록 설정한다
또 코드를 일부 수정하여 효율적으로 동작할 수 있도록 개선한다
1) C++ 사이드
1 - 1) CombatInterface 클래스

IncrementMinionCount 함수를 추가하여 소환한 소환수의 수를 조절할 수 있다
1 - 2) AuraCharacterBase 클래스


CombatInterface에서 추가한 IncrementMinionCount 함수를 위와 같이 오버라이드한다
1 - 3) AuraProjectileSpell 클래스


SpawnProjectile 함수에 bOverridePitch 인자 + PitchOverride 인자를 추가하여
bOverride 인자가 True라면, 투사체의 Pitch값을 PitchOverride로 덮어씌우도록 수정한다
따라서 투사체의 높이값을 원하는 값으로 설정하고 싶다면 bOverridePitch를 True로 설정하면 된다
1 - 4) ExecCalc_Damage 클래스

GetSetByCallerMagnitude 함수에서 WarnIfNotFound 인자의 값을 False로 설정하여
SetByCaller 값이 존재하지 않으면 로그를 출력하지 않고 기본값을 반환하도록 설정한다
2) 블루프린트 사이드
2 - 1) BTT_Attack_Elementalist 블루프린트

BehaviorTree를 소유하고 있는 Pawn을 가져와 ControlledPawn으로 저장하고,
Blackboard로부터 TargetToFollow를 가져와 ControlledPawn의 CombatTarget으로 설정한다
따라서 플레이어는 고블린 주술사의 CombatTarget으로 설정된다

ControlledPawn이 소환된 소환수의 수를 판단한다
만약, 소환할 수 있다면 Abilities.Summon 태그를 통해 소환하는 GA를 발동하고
소환할 수 없다면 Abilities.Attack 태그를 통해 마법 공격 GA를 발동한다
2 - 2) BT_EnemyBehaviorTree_Elemetalist 블루프린트

BTT_Attack_Elementalist 태스크를 수행하도록 BehaviorTree를 위와 같이 구성하였다
2 - 3) GA_SummonAbility 블루프린트

GA를 통해 소환하는 소환수들에게 Destroyed 이벤트를 바인딩한다
소환수가 파괴되면 AvatarActor의 IncrementMinionCount 함수를 호출하여 소환수의 수를 감소시킨다
2 - 4) GA_RangedAttack 블루프린트


일반적인 투사체를 생성하는 GA_RangedAttack에서는 ShouldOverridePitch를 True로 설정하여
투사체의 높이를 PitchOverride로 설정한다
2 - 5) GA_EnemyFirebolt 블루프린트

화염구를 생성하는 GA_EnemyFirebolt에서는 ShouldOverridePitch를 False로 설정하여
투사체의 높이를 강제로 설정하지 않는다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 코스트와 쿨타임 - 1) 스킬 UI + 경험치 UI (0) | 2025.10.17 |
|---|---|
| 맵 제작 - 최종) 기본 맵 변경 + 맵 오브젝트 Fade In / Fade Out (0) | 2025.10.16 |
| 몬스터 마무리 - 4) 임프 소환 GameplayAbility 구현 (0) | 2025.10.11 |
| 몬스터 마무리 - 3) 임프 추가 및 기본 설정 (0) | 2025.10.10 |
| 몬스터 마무리 - 2) 쓰러지는 몬스터의 SFX 효과 추가 (0) | 2025.10.09 |