- 개요

추후 추가할 근접 공격 몬스터인 구울은 고블린과 다르게 양손을 사용하여 공격한다
현재 프로젝트에서는 무기의 소켓을 통해서만 피격을 판정하므로 구울과 같은 상황에 대응하기 어렵다
따라서 애니메이션 몽타주 + AnimNotify의 태그 + Socket의 태그를 연동하여 하드코딩된 단일 값만이 아닌
상황에 맞는 여러가지 값을 사용하여 피격 판정을 진행할 수 있도록 설정한다
현재까지는 애니메이션 몽타주와 AnimNotify의 태그를 연동하는 작업까지 진행하고
또 피격된 플레이어에게 데미지를 적용하는 작업을 진행한다
1) 애니메이션 몽타주 + AnimNotify 태그 연동
1 - 1) AuraGameplayTags 클래스


AuraGameplayTags 클래스에 위와 같이 AnimNotify에서 사용할 태그를 추가한다
각각 무기를 통해 공격하는 상황 / 오른손을 통해 공격하는 상황 / 왼손을 통해 공격하는 상황을 의미한다
1 - 2) CombatInterface 클래스

CombatInterface 인터페이스는 전투를 수행하는 모든 캐릭터들이 상속받으므로 연동 작업을 수행하기 적합하다
TaggedMontage 구조체를 추가하고, 위와 같이 정의한다
- Montage 멤버변수 : 공격하면 재생할 몽타주
- MontageTag 멤버변수 : Montage 멤버변수에서 설정할 AnimNotify의 태그

CombatInterface 클래스에 GetAttackMontages 함수를 추가한다
해당 함수는 자식 클래스에서 오버라이드하여 자기자신의 TaggedMontage들을 반환하는 용도로 사용한다
1 - 3) AuraCharacterBase 클래스

사용할 TaggedMontage를 저장하는 AttackMontages 멤버변수를 추가하고,
해당 멤버변수를 반환할 GetAttackMontages 함수를 오버라이드한다

오버라이드한 로직은 위와 같이 구성하여 AttackMontages 멤버변수를 반환한다
2) 공격당한 플레이어에게 데미지 적용
2 - 1) AuraDamageGameplayAbility 클래스

플레이어에게 데미지를 줄 GameplayEffect를 적용할 CauseDamage 함수를 추가한다

로직은 위와 같다
DamageEffectClass를 통해 GESpecHandle을 생성하고,
DamageTypes 멤버변수를 순회하면서 생성한 GESpecHandle의 GESpec의 값을 설정한다
이후 Target에게 설정한 GESpec을 적용한다
2 - 2) AuraAttributeSet 클래스

ShowFloatingText 함수에 위와 같이 로직을 추가하여
플레이어가 Target이 되어 InComingDamage가 변경되어도 팝업 UI를 띄우도록 설정한다
3) 언리얼 에디터
3 - 1) BP_GoblinSpear 블루프린트

위와 같이 고블린 창병의 AttackMontages 멤버변수를 설정한다
3 - 2) AM_Attack_GoblinSpear 애니메이션 몽타주

AnimNotify에 기존에 설정한 Tag 대신 AttackMontages에서 설정한 태그로 변경한다
3 - 3) GA_MeleeAttack 블루프린트

플레이어에게 적용할 DamageEffectClass를 설정하고, DamageTypes 멤버변수를 설정한다

UpdateFacingTarget 함수 호출 이후의 로직을 위와 같이 수정한다
- GetAttackMontages 함수 호출하여 해당 몬스터의 AttackMontages 멤버변수 반환
- 반환된 AttackMontages를 분해하여 애니메이션 몽타주와 Tag를 각각 용도에 맞게 사용

GetLivePlayersWithinRadius 함수 호출 이후의 로직도 위와 같이 변경한다
Debug Sphere를 그리는 동작 대신 CauseDamage 함수를 호출하여 Target에게 DamageEffect를 적용한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 원거리 공격 - 1) 필수적인 요소 세팅 (0) | 2025.10.02 |
|---|---|
| 몬스터 근접 공격 - 최종) 애니메이션 몽타주와 소켓 연결 및 개선 (0) | 2025.09.28 |
| 몬스터 근접 공격 - 3) 플레이어의 피격 여부 판단 (0) | 2025.09.27 |
| 몬스터 근접 공격 - 2) 모션 워핑의 사용 (0) | 2025.09.26 |
| 몬스터 근접 공격 - 1) 근접 공격 GameplayAbility 생성 (0) | 2025.09.26 |