언리얼 엔진의 api에 대해 알면 알수록 놀랍다. 그리고 정말 친절하구나 싶다가도 정말 불친절해 보일 때가 있다.
많은 수의 게임에서 빼놓을 수 없는 요소인 데미지 입력 부분이 이미 구현되어 있었다.
virtual float TakeDamage(float DamageAmount,
struct FDamageEvent const& DamageEvent,
AController* EventInstigator,
AActor* DamageCauser) override;
파라미터가 좀 많다.
UGameplayStatics::ApplyDamage(Actor,
Damage,
nullptr,
this,
UDamageType::StaticClass());
UDamageType과 FDamageEvent에 대해서만 잘 알면 좋다.
if (DamageEvent.DamageTypeClass == UMyFireDamageType::StaticClass())
{
UE_LOG(LogTemp, Warning, TEXT("🔥 화염 피해 적용됨!"));
StartBurnEffect(); // 화염 효과 적용
}
이런 식으로 DamageEvent안에 DamageType을 읽어내서 처리하면 된다.