- 개요
애니메이션 몽타주에서 설정한 AnimNotify의 태그를 통해 Sphere Trace를 진행할 소켓을 가져오도록 구성한다
또, 코드 구조를 일부 개선하여 몬스터끼리 공격하지 않도록 설정하고
블루 프린트를 일부 수정하여 피격 GA가 발동하면 공격 GA를 중단하도록 설정한다
1) C++ 코드 작업
1 - 1) AuraGameplayTags 클래스


위와 같이 무기 / 오른손 / 왼손의 소켓들을 가져오기 위한 Tag를 추가한다
1 - 2) CombatInterface 클래스

GetCombatSocketLocation 함수에서 위와 같이 MontageTag를 인자로 받도록 수정한다
따라서 AnimationNotify의 태그와 연결된 소켓의 위치를 반환할 수 있다
1 - 3) AuraCharacterBase 클래스


위와 같이 코드를 변경한다

GetCombatSocketLocation 함수의 오버라이드한 로직을 위와 같이 변경한다
로직은 다음과 같다
- AnimNotify의 태그가 Weapon인 경우 : 무기의 WeaponTipSocketName이라는 이름의 소켓의 위치를 반환
- AnimNotify의 태그가 LeftHand인 경우 : LeftHandSocketName이라는 이름의 소켓의 위치를 반환
- AnimNotify의 태그가 RightHand인 경우 : RightHandSocketName이라는 이름의 소켓의 위치를 반환
1 - 4) AuraProjectileSpell 클래스

SpawnProjectile 함수에서 투사체를 생성하는 소켓의 위치를 설정하는 로직을 위와 같이 수정한다
1 - 5) AuraAttributeSet 클래스

HandleIncomingDamage 함수에서 위의 로직을 추가하여
피격당한 적이 HitReact 태그와 연결된 피격 어빌리티를 발동하도록 설정한다
1 - 6) AuraEnemy 클래스

BaseWalkSpeed 멤버변수에 EditAnywhere 속성을 사용하도록 설정한다
따라서 몬스터에 따라서 기본 이동속도를 조정할 수 있다
1 - 7) AuraAbilitySystemLibrary 클래스


IsNotFriend 함수의 로직은 위와 같다
대상이 나와 같지 않은 경우 True를 반환하고, 같다면 False를 반환한다
해당 함수를 사용하여 플레이어 - 플레이어 / 몬스터 - 몬스터는 서로를 공격하지 않도록 설정할 수 있다
2) 언리얼 에디터
2 - 1) 캐릭터의 블루프린트



위와 같이 피격 판정을 위한 Sphere Trace를 진행할 소켓의 이름을 설정한다
플레이어는 Trace를 진행하지 않지만, 일단 설정한다
2 - 2) BP_Ghoul 블루프린트

위와 같이 AnimNotify의 태그를 설정한다

이후 AttackMontages 멤버변수를 애니메이션 몽타주 - AnimNotify의 태그로 짝지어 설정한다
2 - 3) GA_HitReact 블루프린트

Cancel Abilities With Tag 설정을 위와 같이 진행하여 피격된다면 공격 어빌리티를 중단하도록 설정한다
2 - 4) GA_MeleeAttack 블루프린트

몬스터의 AttackMontages에서 랜덤하게 가져온 값을 TaggedMontage 변수로 저장하여 사용하도록 변경한다

애니메이션 몽타주가 Completed / Interuppted / Cancelled되면 근접공격 어빌리티를 중단한다

Sphere Trace된 대상을 순회하는 로직에서 IsNotFriend 함수를 호출하여
Trace된 대상이 나와 다른 경우에만 CauseDamage 함수를 수행하여 데미지를 주는 GE를 적용하도록 수정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 원거리 공격 - 최종) 몬스터 원거리 공격 마무리 (0) | 2025.10.03 |
|---|---|
| 몬스터 원거리 공격 - 1) 필수적인 요소 세팅 (0) | 2025.10.02 |
| 몬스터 근접 공격 - 4) 애니메이션 몽타주와 AnimNotify 태그 연동 + 공격당한 플레이어에게 데미지 적용 (0) | 2025.09.27 |
| 몬스터 근접 공격 - 3) 플레이어의 피격 여부 판단 (0) | 2025.09.27 |
| 몬스터 근접 공격 - 2) 모션 워핑의 사용 (0) | 2025.09.26 |