언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

몬스터 마무리 - 최종) 고블린 주술사 AI 구성 + 코드 개선

monstro 2025. 10. 12. 15:26
728x90
반응형

- 개요

고블린 주술사의 AI를 개선하여 상황에 따라 임프를 소환하도록 설정한다

코드를 일부 수정하여 효율적으로 동작할 수 있도록 개선한다

 

1) C++ 사이드

1 - 1) CombatInterface 클래스

함수 추가

 

IncrementMinionCount 함수를 추가하여 소환한 소환수의 수를 조절할 수 있다

 

1 - 2) AuraCharacterBase 클래스

함수 오버라이드

 

함수 오버라이드 (2)

 

CombatInterface에서 추가한 IncrementMinionCount 함수를 위와 같이 오버라이드한다

 

1 - 3) AuraProjectileSpell 클래스

SpawnProjectile 함수의 인자 수정

 

SpawnProjectile 함수 로직 수정

 

SpawnProjectile 함수bOverridePitch 인자 + PitchOverride 인자를 추가하여

bOverride 인자가 True라면, 투사체의 Pitch값PitchOverride로 덮어씌우도록 수정한다

따라서 투사체의 높이값원하는 값으로 설정하고 싶다면 bOverridePitchTrue로 설정하면 된다

 

1 - 4) ExecCalc_Damage 클래스

Execute_Implementation 함수 로직 수정

 

GetSetByCallerMagnitude 함수에서 WarnIfNotFound 인자의 값을 False로 설정하여

SetByCaller 값이 존재하지 않으면 로그를 출력하지 않고 기본값을 반환하도록 설정한다

 

2) 블루프린트 사이드

2 - 1) BTT_Attack_Elementalist 블루프린트

ReceiveExecuteAI 이벤트 로직 (1)

 

BehaviorTree를 소유하고 있는 Pawn을 가져와 ControlledPawn으로 저장하고,

Blackboard로부터 TargetToFollow를 가져와 ControlledPawn의 CombatTarget으로 설정한다

따라서 플레이어는 고블린 주술사의 CombatTarget으로 설정된다

 

ReceiveExecuteAI 이벤트 로직 (2)

 

ControlledPawn이 소환된 소환수의 수를 판단한다

만약, 소환할 수 있다Abilities.Summon 태그를 통해 소환하는 GA를 발동하고

소환할 수 없다Abilities.Attack 태그를 통해 마법 공격 GA를 발동한다

 

2 - 2) BT_EnemyBehaviorTree_Elemetalist 블루프린트

 

BTT_Attack_Elementalist 태스크를 수행하도록 BehaviorTree를 위와 같이 구성하였다

 

2 - 3) GA_SummonAbility 블루프린트

ActivateAbility 이벤트 로직 수정

 

GA를 통해 소환하는 소환수들에게 Destroyed 이벤트를 바인딩한다

소환수가 파괴되면 AvatarActorIncrementMinionCount 함수를 호출하여 소환수의 수를 감소시킨다

 

2 - 4) GA_RangedAttack 블루프린트

ActivateAbility 이벤트 수정

 

멤버변수 설정

 

일반적인 투사체를 생성하는 GA_RangedAttack에서는 ShouldOverridePitchTrue로 설정하여

투사체의 높이를 PitchOverride로 설정한다

 

2 - 5) GA_EnemyFirebolt 블루프린트

 

화염구를 생성하는 GA_EnemyFirebolt에서는 ShouldOverridePitchFalse로 설정하여

투사체의 높이를 강제로 설정하지 않는다

 

- 최종 실행 결과

 

728x90
반응형