언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

전투 시스템 - 최종) 넉백 시스템 추가

monstro 2025. 11. 15. 20:34
728x90
반응형

- 개요

공격당한 적이 확률적으로 뒤로 밀려나는 넉백 시스템을 추가한다

또, 체력을 전부 소모하여 쓰러진 적나가 떨어지는 시스템을 추가한다

 

- C++ 사이드

1) DebuffNiagaraComponent 클래스

 

DebuffTagChanged 함수를 위와 같이 수정한다

나이아가라 컴포넌트의 Owner가 유효하면서 쓰러져있지 않은 경우도 고려하여 나이아가라를 재생한다

 

2) AuraGameplayEffectContext 클래스

2 - 1) DamageEffectParams 구조체

 

멤버변수들에 BlueprintReadWrite 속성을 부여하여 블루프린트에서 수정할 수 있도록 설정한다

 

 

위의 멤버변수들을 추가하여 쓰러지면서 나가 떨어질 수 있도록 설정하고

또, 공격당하면 확률적으로 넉백될 수 있도록 설정한다

 

2 - 2) AuraGameplayEffectContext 클래스

 

넉백 요소나가떨어지는 요소에 관련Getter 함수와 Setter 함수를 추가한다

 

 

넉백되는 방향나가떨어지는 방향의 멤버변수를 추가한다

 

NetSerialize 함수 수정 - (1) 직렬화

 

NetSerialize 함수 수정 - (2) 역직렬화

 

NetSerialize 함수를 위와 같이 수정하여 넉백되는 방향과 나가떨어지는 방향

비트에 기록하고 Archive에 기록할 수 있도록 설정한다

 

3) AuraAbilitySystemLibrary 클래스

 

기존의 SetDamageType 함수에 UFUNCTION 속성과 어트리뷰트를 추가하고,

넉백되는 방향나가떨어지는 방향에 대한 Getter 함수와 Setter 함수를 추가한다

 

 

추가한 Getter 함수와 Setter 함수의 로직은 위와 같이 AuraGameplayEffectContext에 접근하여

관련된 Getter 함수와 Setter 함수를 호출하도록 구성하였다

 

4) AuraDamageGameplayAbility 클래스

 

MakeDamageEffectParamsFromClassDefaults 함수BlueprintPure 속성을 추가하여 실행핀을 제거한다

 

 

쓰러진 적을 나가 떨어뜨리기 위한 힘의 크기의 멤버변수

공격당한 적을 넉백시키기 위한 힘의 크기넉백 확률의 멤버변수를 추가한다

 

 

MakeDamageEffectParamsFromClassDefaults 함수에 위와 같이 로직을 추가하여

공격당한 적에게 가할 넉백의 요소와 쓰러진 적을 나가 떨어뜨리기 위한 요소를 설정한다

 

5) AuraProjectile 클래스

 

OnSphereOverlap 함수에 위와 같이 로직을 추가한다

쓰러진 적을 나가떨어뜨리기 위한 요소를 설정하고, 적을 넉백시킬 수 있다넉백 요소도 설정한다

 

6) AuraAttributeSet 클래스

 

HandleIncomingDamage 함수에 위와 같이 로직을 추가한다

데미지를 받아 쓰러졌다면, 나가 떨어지도록 설정한다

또, 넉백받는 힘이 실질적으로 존재한다면 LaunchCharacter 함수를 호출하여 해당 힘의 방향으로 넉백시킨다

 

7) CombatInterface 클래스

 

Die 함수에서 Vector의 인자를 받도록 수정한다

 

8) AuraCharacterBase 클래스

 

Die 함수 MulticastHandleDeath 함수에서 Vector의 인자를 받도록 수정한다

 

 

Die 함수의 로직을 위와 같이 수정한다

 

 

MulticastHandleDeath 함수를 위와 같이 수정하여

쓰러진 대상의 무기 메쉬캐릭터 메쉬 같이 밀려나도록 설정한다

 

9) AuraEnemy 클래스

 

 

동일하게 Die 함수를 수정한다

 

- 블루프린트 사이드

1) GA_HitReact 블루프린트

 

Activation Blocked Tags를 위와 같이 설정하여 불타는 동안은 피격 어빌리티를 발동하지 않도록 설정한다

 

2) GA_FireBolt 블루프린트

 

공격당한 적에 대한 넉백 관련 요소쓰러진 적을 나가 떨어뜨리기 위한 요소를 위와 같이 설정한다

 

3) GA_RangedAttack 블루프린트 & GA_MeleeAttack 블루프린트

GA_RangedAttack 블루프린트

 

GA_MeleeAttack 블루프린트

 

동일하게 공격당한 적에 대한 넉백 관련 요소 쓰러진 적을 나가 떨어뜨리기 위한 요소를 위와 같이 설정한다

 

- 최종 실행 결과

 

728x90
반응형