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

+ Recent posts