- 개요
DamageEffectParams 구조체를 새롭게 추가하여
공격 어빌리티의 대상이 된 적에게 적용할 GameplayEffect의 부가적인 요소를 설정한다
- C++ 사이드
1) AuraAbilityTypes 클래스

DamageEffectParams 구조체를 추가하여 공격받은 적에게 적용할 GE의 세부요소를 설정할 수 있다
데미지를 적용할 GE와 데미지의 타입, GA의 Source와 Target의 ASC를 설정할 수 있고
추가적으로 디버프와 관련된 요소를 설정하도록 구성하였다
2) AuraAbilitySystemLibrary 클래스


ApplyDamageEffect 함수를 위와 같이 추가한다
로직은 다음과 같다
인자로 받은 DamageEffectParams로부터 AvatarActor / DamageGameplayEffectClass / AbilityLevel를 가져와
GESpecHandle을 생성하고, 생성한 GESpecHandle에서 수정할 값들을 다음과 같이 설정한다
- DamageType 태그에 해당하는 값
- Debuff_Chance 태그에 해당하는 값
- Debuff_Damage 태그에 해당하는 값
- Debuff_Duration 태그에 해당하는 값
- Debuff_Frequency 태그에 해당하는 값
위와 같이 GESpecHandle을 설정하고
인자로 받은 DamageEffectParams의 TargetAbilitySystemComponent에 적용한다
3) AuraDamageGameplayAbility 클래스


MakeDamageEffectParamsFromClassDefaults 함수를 추가하고 위와 같이 구성한다
로직은 다음과 같은데, 인자로 받은 TargetActor를 사용하여 설정한 DamageEffectParams 인스턴스를 반환한다
4) AuraProjectileSpell 클래스

SpawnProjectile 함수를 위와 같이 수정하여 생성한 투사체가 갖고 있는 GE를 설정하는 로직을
위와 같이 DamageEffectParams를 설정하는 로직으로 변경한다
5) AuraProjectile 클래스

기존에 갖고 있던 GameplayEffectSpecHandle 멤버변수를 제거하고
대신 DamageEffectParams 멤버변수를 갖고 있도록 수정한다


IsValidOverlap 함수를 추가하여 투사체의 Overlap을 판단한다
로직은 다음과 같다
- 오버랩 이후의 로직은 서버에서 처리하므로 클라이언트라면 false 반환
- GA의 SourceAvatarActor와 오버랩된 Actor가 동일하면 false 반환
- GA의 SourceAvatarActor와 오버랩된 Actor가 동일한 개체라면 false 반환
- 전부 아니라면 true 반환

OnSphereOverlap 함수를 위와 같이 수정한다
IsValidOverlap 함수를 호출하여 서버에서만 로직을 진행할 수 있도록 설정하고
오버랩된 OtherActor의 ASC를 가져와 DamageEffectParams를 설정하고 데미지를 주는 GE를 적용한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 전투 시스템 - 4) 디버프의 실제 적용 (0) | 2025.11.15 |
|---|---|
| 전투 시스템 - 3) GE와 AttributeSet에 DamageEffectParams 구조체 적용 (0) | 2025.11.14 |
| 전투 시스템 - 1) 디버프 태그의 추가와 데미지 적용 방식 수정 (0) | 2025.11.13 |
| 스킬창 UI - 최종) 구조 변경 + 스킬 어빌리티 장착 (0) | 2025.11.08 |
| 스킬창 UI - 8) 스킬 타입 부여 (0) | 2025.11.08 |