- 개요
GameplayCue는 GAS 프레임워크 중에서 시각적 + 청각적 기능을 담당한다
GameplayCue 태그로 시작하는 태그를 통해 발동하며 GameplayCueParameter를 통해 정보를 전달할 수 있다
GC는 데디케이트 서버에서는 사용하지 않지만, 리슨 서버에서는 사용하고 기본적으로 Replicate된다
따라서 GC를 사용하여 피격과 관련된 시각 효과 + 청각 효과를 재생한다
이를 위해 기존에 만든 TaggedMontage 구조체의 구조를 다음과 같이 수정한다
- MontageTag : 연관된 애니메이션 몽타주의 AnimNotify 이벤트를 발생시키기 위한 Tag
- SocketTag : GC를 통해 재생한 Niagara 파티클을 생성할 소켓을 지정하는 Tag
- ImpactSound : GC를 통해 재생할 Sound를 설정
1) C++ 사이드
1 - 1) AuraGameplayTags 클래스


기존에 사용하던 AnimNotify 태그를 위와 같이 변경하였다
사용하는 공격 애니메이션 몽타주의 개수만큼 AnimNotity 태그를 사용하도록 설정한다
1 - 2) CombatInterface 클래스

위와 같이 TaggedMontage 구조체에 멤버변수를 추가하였다
각각 다음의 역할을 수행한다
- MontageTag : 애니메이션 몽타주의 AnimNotify 이벤트를 발생시키는 태그
- SocketTag : GameplayCue에서 생성한 Niagara 파티클이 위치한 Socket을 지정하는 태그
- ImpactSound : GameplayCue에서 재생할 사운드

CombatInterface 클래스에 2개의 함수를 추가하였다
- GetBloodEffect 함수 : 피격되면 생성할 Niagara 파티클을 반환하는 함수
- GetTaggedMontageByTag 함수 : 인자로 받은 Tag를 사용하여 TaggedMontage를 반환하는 함수
1 - 3) AuraCharacterBase 클래스

CombatInterface에 추가한 2개의 함수를 위와 같이 오버라이드한다

피격되면 생성할 NiagaraSystem을 멤버변수로 추가한다

2개의 함수를 오버라이드한 로직은 위와 같다
- GetBloodEffect 함수 : BloodEffect 멤버변수를 반환
- GetTaggedMontageByTag 함수 : AttackMontages를 순회하면서 인자로 받은 Tag를 가졌다면 반환
1 - 3) AuraProjectile 클래스

SpawnProjectile 함수를 위와 같이 수정하여 투사체를 생성할 소켓을 지정한다
2) 블루프린트 사이드
2 - 1) 캐릭터 블루프린트 관련 수정



위와 같이 캐릭터 블루프린트에서 필요한 설정을 진행한다
2 - 2) GA_MeleeAttack 블루프린트

공격이 피격된 경우에만 GC를 생성할 수 있도록 HasHitTarget 변수를 False로 초기화한다

위와 같이 TaggedMontage를 가져온 후에 MontageTag를 사용하여 AnimNotify 이벤트를 호출하고,
SocketTag를 사용하여 CombatSocketLocation을 가져오도록 로직을 수정한다

CombatSocketLocation을 기준으로 SphereTrace된 적에게 데미지 GE를 적용한 다음에
HasHitTarget 불리언 변수를 True로 설정하여 GameplayCue를 생성할 수 있도록 로직을 추가한다

SphereTrace 결과물을 전부 순회한 이후 HasHitTarget에 따라 위의 로직을 진행한다
- False : 어빌리티를 종료
- True : GameplayCueParameter를 생성 + GameplayCue.MeleeAttack의 GameplayCue를 실행
- SourceObject를 CombatTarget(GA의 타겟)으로 설정
- EffectCauser를 AvatarActor로 설정
- Location을 CombatSocketLocation으로 설정
- AggregatedSourceTags를 TaggedMontage의 MontageTag로 설정
2 - 3) GC_MeleeImpact 블루프린트

OnExecute 함수를 위와 같이 오버라이드한다
반환된 GameplayCueParameters를 분리하여 Location / EffectCauser / SourceObject를 캐싱한다
이후 AggregatedSourceTags를 순회한다

순회하는 MontageTag를 사용하여 EffectCauser의 TaggedMontage를 가져온다
- EffectCauser의 CombatSocketLocation에서 ImpactSound를 재생
- SourceObject의 BloodEffect를 가져와 CombatSocketLocation에서 생성
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 몬스터 마무리 - 3) 임프 추가 및 기본 설정 (0) | 2025.10.10 |
|---|---|
| 몬스터 마무리 - 2) 쓰러지는 몬스터의 SFX 효과 추가 (0) | 2025.10.09 |
| 몬스터 스킬 공격 - 최종) 몬스터 스킬 공격 마무리 + 몬스터 AI 개선 (0) | 2025.10.04 |
| 몬스터 스킬 공격 - 1) 필수적인 요소 세팅 (0) | 2025.10.04 |
| 몬스터 원거리 공격 - 최종) 몬스터 원거리 공격 마무리 (0) | 2025.10.03 |