Tower.cpp
void ATower::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if(Tank)
{
float Distance = FVector::Dist(GetActorLocation(), Tank->GetActorLocation());
if (Distance <= FireRange)
{
RotateTurret(Tank->GetActorLocation());
}
}
}
void ATower::BeginPlay()
{
Super::BeginPlay();
Tank = Cast<ATank>(UGameplayStatics::GetPlayerPawn(this, 0));
}
BeginPlay에서 현재 PlayerPawn을 가져온다. (Tank) 매번 호출하기에는 부하가 있으니
Tank = Cast<ATank>(UGameplayStatics::GetPlayerPawn(this, 0));
그 이후 Tick()에서 특정 거리 안에 들어오면 Rotate처리
float Distance = FVector::Dist(GetActorLocation(), Tank->GetActorLocation());
FVector::Dist를 통해 Tank와 거리 계산
'언리얼' 카테고리의 다른 글
unreal) BlueprintImplementableEvent (0) | 2024.12.09 |
---|---|
unreal) GetWorldTimerManager() (0) | 2024.11.28 |
unreal) FMath::RInterpTo (0) | 2024.11.20 |
unreal) DrawDebugSphere (0) | 2024.11.19 |
unreal) EditDefaultsOnly, EditInstanceOnly, BlueprintReadWrite (0) | 2024.11.11 |