- 개요
이전에 생성한 DamageEffectParams 구조체를 실제 GE와 AttributeSet에 적용한다
- C++ 사이드
1) AuraAttributeSet 클래스

Debuff 함수를 추가하여 Attribute에 디버프를 적용한다

HandleIncomingDamage 함수에 위와 같이 로직을 추가하여
디버프를 적용할 수 있다면 Debuff 함수를 호출하고 인자를 넘겨주어 디버프를 적용한다

Debuff 함수는 아직 별다른 로직을 구성하지는 않는다
2) AuraGameplayEffectContext 클래스

AuraGameplayEffectContext 클래스에 위와 같이 디버프 관련 요소를 가져오거나 설정하는 함수를 추가한다

디버프 관련 요소를 의미하는 멤버변수를 추가한다


NetSerialize 함수에 위와 같이 로직을 추가한다
사용중인 0부터 8까지의 비트 이후에 9부터 13까지의 비트를 사용하여 디버프 관련 요소를 직렬화하여 저장하고
9부터 13까지의 비트를 역직렬화하여 Archive에 저장한다
3) AuraAbilitySystemLibrary 클래스

위와 같이 디버프와 관련된 요소를 설정하고 가져오는 함수를 추가한다


위와 같이 AuraGameplayEffectContext 클래스에 접근하여 값을 가져오거나 설정하도록 로직을 구성한다
4) ExecCalc_Damage 클래스

공격 어빌리티를 수행한 이후 Target에게 적용할 데미지 GE에서 사용하는 ExecCalc_Damage 클래스에
위와 같이 DetermineDebuff 함수를 추가하여 디버프를 적용한다

연산에 참고할 Attribute를 지정하는 AuraDamageStatics 구조체에서 TagsToCaptureDefs 멤버변수를 제거하고,
해당 멤버변수에 필요한 값을 저장하는 로직도 제거한다

DetermineDebuff 함수의 로직은 위와 같다
GameplayTag에서 저장한 속성 별 데미지와 디버프의 Tag를 순회하면서 속성 별 데미지를 가져온다
이어서 디버프를 적용할 수 있는 확률과 디버프에 대한 저항수치를 가져와 연산하여 디버프를 적용할 수 있는지 판단한다
이후 디버프를 적용할 수 있다면, 인자로 받은 GESpec으로부터 GEContextHandle을 가져오고
가져온 GEContextHandle의 디버프 관련 수치를 설정한다

Execute 함수의 로직을 위와 같이 수정한다
AuraDamageStatics 구조체의 멤버변수를 사용하지 않고, 지역변수를 사용하여 연산에 참고할 Attribute를 지정한다
이후, 적용할 GESpec의 디버프를 적용하기 위해 DetermineDebuff 함수를 호출하고,
ResistanceTag에 대한 값을 캡쳐하여 저장한다
- 블루프린트 사이드
1) GE_SecondaryAttributes_Enemy 블루프린트

몬스터가 사용할 SecondaryAttribute를 설정하는 GE를 추가한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 전투 시스템 - 최종) 넉백 시스템 추가 (0) | 2025.11.15 |
|---|---|
| 전투 시스템 - 4) 디버프의 실제 적용 (0) | 2025.11.15 |
| 전투 시스템 - 2) DamageEffectParams 구조체의 추가 & 사용 (0) | 2025.11.14 |
| 전투 시스템 - 1) 디버프 태그의 추가와 데미지 적용 방식 수정 (0) | 2025.11.13 |
| 스킬창 UI - 최종) 구조 변경 + 스킬 어빌리티 장착 (0) | 2025.11.08 |