bool isHit = UKismetSystemLibrary::SphereTraceMultiByProfile(GetWorld(), StartLoc, TargetLoc, 200.0f, TEXT("BlockAll"), false, IngoreActors, EDrawDebugTrace::Type::None, HitRetArray, true);
if (isHit)
{
for (FHitResult Hit : HitRetArray)
{
if (AActor* Actor = Hit.Actor.Get())
{
if (Actor->ActorHasTag("Enemy")) {
float Dmg;
Dmg = CharacterStat->GetAttack();ย
UGameplayStatics::ApplyDamage(Actor, Dmg, nullptr, this, NULL);
UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), HitEffect, Actor->GetActorLocation(), FRotator(0.0f, 0.0f, 0.0f), FVector(2.0f, 2.0f, 2.0f));
}
}
}
}
์ด๋ ๊ฒ ํธ๋ ์ด์ค๋ฅผ ๋ง๋ค์ด์ ๋ฐ๋ฏธ์ง๋ฅผ ์ ํ๋ ์์ธ๋ฐ
์ ํ๋ฒ ํธ๋ ์ด์ค ๋ง๋ค์ด์ ๋ฐ๋ฏธ์ง๋ฅผ ์ฌ๋ฌ๋ฒ ์ฃผ๋๊ฑด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ๊ทธ๋ฅ ๋จ์ํย ApplyDamage๋ฅผ ์ฌ๋ฌ๋ฒ์ฐ๋ฉด ํ๋ฒ์ ๋ฐ๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ๊ณ ์ ๊ฐ ์ํ๋๊ฑด ๋ค๋จํํธ๋ฅผ ๊ตฌํํ๊ณ ์ถ์ด์. ํ์ด๋จธ ์ด์ฉํด์ย
FTimerHandle myTimerHandle;
GetWorld()->GetTimerManager().SetTimer(myTimerHandle, FTimerDelegate::CreateLambda([&]()
{
UGameplayStatics::ApplyDamage(Actor, Dmg, nullptr, this, NULL);
}), 1.0f, false);
์ด๊ฑธ ๋ฃ์ด๋ดค๋๋ฐ ํฌ๋์๋๋๋ผ๊ตฌ์
์ด ๋จธ์ผ ๋๋ค ์ ๊ฑฐ ๋๋ค์์์ &๋ฅผ =๋ก ๋ฐ๊พธ๋๊น ๋๋ค;