- 개요
공격 어빌리티의 Target에게 실제 디버프 효과를 적용하도록 구성한다
화염구 스킬에 피격당한 적은 5초동안 1초 간격으로 5의 피해를 추가로 받도록 설계하며
또, 화염구 스킬에 피격당한 적은 불이 붙은 시각효과를 재생하도록 구성한다
- C++ 사이드
1) AuraAttributeSet 클래스

PostGameplayEffectExecute 함수에 로직을 추가하여 적이 쓰러졌다면 GE에 의해 Attribute를 수정하지 않도록 한다

Debuff 함수에 위와 같이 로직을 추가한다
로직의 동작은 다음과 같다
- 인자로 받은 EffectProperties를 사용하여 다음의 값을 생성
- SourceObject를 설정한 GEConext / 데미지 타입 / 디버프 데미지 / 디버프 적용시간 / 디버프 적용주기
- 이후, "DynamicDebuff_ 데미지 타입"의 이름을 지닌 디버프를 적용하는 GE의 런타임 인스턴스를 생성
- 생성한 GE 인스턴스의 DurationPolicy / Period / DurationMagnitude 설정
- 생성한 GE 인스턴스에 TargetTagsGameplayEffectComponent 컴포넌트를 추가
- 추가한 컴포넌트를 통해 생성한 GE 인스턴스가 가진 특정 데미지 타입에 연결된 디버프 Tag를 Target에게 부여
- 생성한 GE 인스턴스의 Modifier를 설정
- Modifier의 크기 / Modifier의 연산 방식 / Modifier가 수정할 어트리뷰트
- 이후 인자로 받은 EffectProperties의 TargetASC에 생성한 GE 인스턴스의 GESpec을 적용
2) DebuffNiagaraComponent 클래스

디버프 GE가 적용된 대상에게 생성하는 NiagaraComponent 클래스를 생성한다
구성은 위와 같다

생성자에서는 AutoActivate를 비활성화하여 FX 효과의 재생을 막는다

BeginPlay 함수에서는 해당 클래스의 Owner의 ASC가 준비되었는지에 따라 분기하여 처리한다
- ASC가 존재하는 경우 : ASC에 DebuffTag가 활성화되는 경우 DebuffTagChanged 함수를 호출하도록 설정
- ASC가 존재하지 않는 경우 : Owner의 GetOnASCRegisteredDelegate 델리게이트에 이전의 로직을 바인드
- GetOnASCRegisteredDelegate 델리게이트는 ASC가 등록되면 호출하는 델리게이트

DebuffTagChanged 함수의 로직은 위와 같다
DebuffTag가 추가되면 NewCount 인자가 1로 설정되어 NiagaraComponent를 재생하고,
DebuffTag가 제거되면 NewCount 인자가 0으로 설정되어 NiagaraComponent를 중지한다
3) CombatInterface 클래스

ASC가 등록되면 1 : 多 관계로 브로드캐스트하는 델리게이트를 추가한다

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

GetOnASCRegisteredDelegate 함수를 오버라이드한다

DebuffNiagaraComponent를 멤버변수로 추가한다

OnASCRegistered 델리게이트를 멤버변수로 추가한다

MulticastHandleDeath 함수에서 BurnDebuffComponent의 FX 효과를 중지하는 로직을 추가한다

GetOnASCRegisteredDelegate 함수에서는 OnAscRegistered 멤버변수를 반환한다
5) AuraEnemy 클래스

InitAbilityActorInfo 함수에서 OnAscRegistered 델리게이트를 브로드캐스트하는 로직을 추가한다
6) AuraCharacter 클래스

InitAbilityActorInfo 함수에서 OnAscRegistered 델리게이트를 브로드캐스트하는 로직을 추가한다
- 블루프린트 사이드
1) GA_FireBolt 블루프린트

디버프와 관련된 설정을 위와 같이 임시로 설정한다
2) GA_Electrocute 블루프린트


해당 어빌리티를 위와 같이 구성하여 동작하는지를 확인할 수 있도록 설정한다
3) BP_AuraCharacter & BP_AuraEnemyBase 블루프린트

BurnDebuffComponent에 대해서 위와 같이 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 전기 광선 스킬 - 1) 화염구 스킬 변경 (0) | 2025.11.20 |
|---|---|
| 전투 시스템 - 최종) 넉백 시스템 추가 (0) | 2025.11.15 |
| 전투 시스템 - 3) GE와 AttributeSet에 DamageEffectParams 구조체 적용 (0) | 2025.11.14 |
| 전투 시스템 - 2) DamageEffectParams 구조체의 추가 & 사용 (0) | 2025.11.14 |
| 전투 시스템 - 1) 디버프 태그의 추가와 데미지 적용 방식 수정 (0) | 2025.11.13 |