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

전투 시스템 - 1) 디버프 태그의 추가와 데미지 적용 방식 수정

monstro 2025. 11. 13. 11:06
728x90
반응형

- 개요

특정 타입의 공격을 당한 적에게 적용할 디버프 효과를 의미하는 Tag를 추가한다

또, 이전에 데미지의 Tag와 데미지 수치를 연결한 TMap을 사용하는 방식 대신

데미지의 Tag데미지 수치를 분리하여 사용하도록 수정하여 데미지의 수치에 대한 계산을 유동적으로 설정한다

 

- C++ 사이드

1) AuraGameplayTags 클래스

디버프 관련 태그 추가

 

디버프와 관련된 태그를 위와 같이 추가한다

각각 다음과 같다

  • Debuff_Burn : 화염 속성 디버프
  • Debuff_Stun :  빛 속성 디버프
  • Debuff_Arcane : 비전 속성 디버프
  • Debuff_Physical : 물리 스킬 디버프
  • Debuff_Chance : 디버프 확률
  • Debuff_Damage : 디버프 데미지
  • Debuff_Duration : 디버프 범위
  • Debuff_Frequency : 디버프 적용 주기

 

 

DamageTypesToDebuffs 멤버변수를 추가하여 속성데미지 디버프를 연동한다

 

 

추가한 Tag들을 위와 같이 생성한다

 

 

속성의 데미지 Tag와 생성한 디버프들의 Tag를 연결한다

 

2) AuraDamageGameplayAbility 클래스

멤버변수 수정

 

데미지의 Tag와 데미지 수치를 연결한 TMap을 제거하고 위와 같이 분리하여 사용한다

또, 디버프를 설정하는 실수형 변수들을 위와 같이 추가한다

 

 

CauseDamage 함수를 위와 같이 수정하여 TMap을 순회하는 로직을 제거하고,

어빌리티의 레벨에 맞는 DamageDamageType으로 GE에서 조작할 어트리뷰트의 값을 설정한다

 

GetDamageByDamageType 함수 제거

 

또, GetDamageByDamageType 함수제거한다

 

3) AuraProjectileSpell 클래스

SpawnProjectile 함수 수정

 

SpawnProjectile 함수에서 생성하는 투사체의 GE에서 조작할 어트리뷰트의 값

2)의 예시처럼 어빌리티의 레벨에 맞는 Damage와 DamageType으로 설정한다

 

4) AuraFireBolt 클래스

기존의 방식
수정한 방식

 

바뀐 방식에 맞춰 수정하여 위와 같이 어빌리티의 레벨을 가져올 수 있도록 설정한다

따라서 이후의 Rich Text를 설정하는 로직도 수정한다

 

- 블루프린트 사이드

1) 데미지를 주는 GA 블루프린트

GA_FireBolt 블루프린트

 

GA_MeleeAttack 블루프린트

 

GA_RangedAttack 블루프린트

 

728x90
반응형