- 개요
파편이 소환되면서 FX 효과만 처리하는 것이 아닌 실제 데미지를 주도록 설계한다
- C++ 사이드
1) AuraAbilityTypes 클래스

DamageEffectParams 구조체에 위와 같이 멤버변수를 추가한다
각각 다음과 같다
- 원형 범위의 피해를 주는 어빌리티인지 여부
- 원형 범위의 내부 원의 반지름
- 원형 범위의 외부 원의 반지름
- 원형 범위의 원점


동일한 멤버변수들을 AuraGameplayEffectContext 클래스에 추가한다
또 추가한 멤버변수들에 대한 Getter 함수와 Setter 함수를 추가한다


NetSerialize 함수를 위와 같이 수정하여 원형범위의 피해를 주는 어빌리티인 경우에만
추가한 멤버변수들을 직렬화하고 역직렬화할 수 있도록 설정한다
2) AuraDamageGameplayAbility 클래스

MakeDamageEffectParamsFromClassDefaults 함수에 위와 같이 2개의 인자를 추가한다

원형범위의 피해를 주는 스킬 어빌리티에 필요한 4개의 멤버변수를 추가한다

MakeDamageEffectParamsFromClassDefaults 함수를 위와 같이 수정하여
원형 범위의 피해를 주는 어빌리티라면 DamageEffectParams에서 필요한 요소들을 설정한다
3) AuraAbilitySystemLibrary 클래스

원형범위의 피해를 주는 스킬 어빌리티에 필요한 요소들에 대한 Getter 함수와 Setter 함수를 추가한다


추가한 함수들은 위와 같이 AuraGameplayEffectContext에 접근하여 값을 가져오거나 설정하도록 구성한다
4) CombatInterface 클래스

C++에서만 사용가능하며 1 : 多 관계로 브로드캐스트하는 OnDamageSignature 델리게이트를 추가한다
해당 델리게이트는 데미지의 양을 인자로 받으며 피해를 받게 되면 브로드캐스트한다

추가한 델리게이트를 반환하는 순수 가상 함수를 추가한다
5) AuraCharacterBase 클래스


CombatInterface에 추가한 델리게이트를 멤버변수로 추가하고
새롭게 생성한 순수 가상 함수를 오버라이드한다

GetOnDamageSignature 함수의 로직은 위와 같이 추가한 델리게이트를 반환하도록 구성한다


TakeDamage 함수를 위와 같이 새롭게 추가한다
해당 함수에서는 부모 버전의 함수를 호출하여 입은 피해를 DamageTaken 변수에 저장한다
저장한 DamageTaken 변수를 OnDamageDelegate 델리게이트에 인자로 넣어 브로드캐스트하고 반환한다
6) ExecCalc_Damage 클래스

Execute 함수에 위와 같이 로직을 추가한다
우선, 데미지 타입의 값을 가져오지 못했다면 건너뛰는 로직을 추가한다
이후 적용할 데미지의 GE가 원형 범위의 피해를 주는지 판단하고 다음의 로직을 진행한다
- GE를 적용할 Target으로부터 OnDamageDelegate를 가져오고 람다 함수를 바인드
- 브로드캐스트되면 DamageTypeValue의 값을 DamageAmount의 값으로 설정
- ApplyRadialDamageWithFalloff 함수를 호출하여 지정한 범위에 광역 피해를 적용
- 블루프린트 사이드
1) GA_ArcaneShards 블루프린트
1 - 1) StorePlayersToDamage 함수

StorePlayersToDamage 함수의 로직은 위와 같다
GetLivePlayersWithinRadius 함수를 호출하여
SharedSpawnLocation을 기준으로 RadiablDamageOuterRadius만큼의 Trace를 진행하고
결과값을 PlayerstoDamage 변수에 저장한다
1 - 2) RadialDamageToPlayer 함수

RadialDamageToPlayer 함수의 로직은 위와 같다
Taget에게 적용할 원형 범위의 피해를 지닌 DamageEffectParams를 생성하고
권한을 확인하여 데미지 GameplayEffect를 적용한다
1 - 3) StoreShardSpawnLocation 함수

StoreShardSpawnLocation 함수의 로직은 위와 같다
GroundPoints에 저장된 SceneComponent들의 월드위치를 가져와 ShardSpawnLocation 변수로 설정한다
1 - 4) EventGraph

ActivateAbility 이벤트의 6번째 로직을 위와 같이 수정하여
비전 파편을 소환하고 비전 파편에 피격당한 적들에게 데미지를 적용한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 비전 파편 스킬 - 최종) 쿨타임 + 코스트 적용 그리고 추가적인 설정 (2) (0) | 2025.12.09 |
|---|---|
| 비전 파편 스킬 - 최종) 쿨타임 + 코스트 적용 그리고 추가적인 설정 (1) (0) | 2025.12.09 |
| 비전 파편 스킬 - 3) 몽타주와 GC를 사용한 연출 (0) | 2025.12.07 |
| 비전 파편 스킬 - 2) 파편을 소환하는 위치 계산 (0) | 2025.12.06 |
| 비전 파편 스킬 - 1) 파편을 소환하는 원 설계 (0) | 2025.12.06 |