UE 5 스터디/Gameplay Ability System(GAS)
11-2. 게임플레이 이펙트 - (7) 호출자에 의한 크기 계산(Set By Caller Magnitude) - 데미지 계산
Crat3
2024. 12. 18. 14:54
0. 개요
이전 포스트에서 메타 속성을 이용하여 데미지 계산식을 변경했다.
이제 게임플레이 이펙트의 Magnitude의 Set by Caller 설정을 사용하여 2차 속성들의 관계에 의한 데미지를 반영하도록 한다.
1. 호출자에 의한 크기 계산 - Set by Caller Magnitude
기본적으로 호출자는 게임플레이 어빌리티이며, 게임플레이 이펙트 스펙을 생성한 C++ 코드 또는 블루프린트에 의해 값이 정해진다.
태그를 이용하여 데미지를 전달하는 방법을 사용한다.
(1) 게임플레이 태그 생성 - AuraGameplayTags
// 데미지
FGameplayTag Damage;
// 데미지
GameplayTags.Damage = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("Damage"),
FString("Damage")
);
(2) 게임플레이 어빌리티 - AuraProjectileSpell
변경하고자 하는 데미지는 파이어볼트의 데미지이므로 해당 어빌리티에 코드를 작성한다.
// 데미지 Set by Caller, 싱글톤, 태그-데미지 쌍
FAuraGameplayTags GameplayTags = FAuraGameplayTags::Get();
UAbilitySystemBlueprintLibrary::AssignTagSetByCallerMagnitude(SpecHandle, GameplayTags.Damage, 50.f);
Projectile->DamageEffectSpecHandle = SpecHandle;
Projectile->FinishSpawning(SpawnTransform);
}
}
태그의 싱글톤 객체를 가져와 게임플레이 스펙 핸들에 태그와 데미지 쌍을 부여한다.
(3) 게임플레이 이펙트 수정 - GE_Damage
Magnitude를 Set by Caller로 지정하고 데이터 태그를 데미지로 지정한다.