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로 지정하고 데이터 태그를 데미지로 지정한다.