최종 코드
UPROPERTY(EditAnywhere, Meta = (MakeEditWidget = true))
FVector TargetLocation;
#include "MovingPlatforms.h"
void AMovingPlatforms::Tick(float dt)
{
Super::Tick(dt);
if (HasAuthority()) {
FVector Location = GetActorLocation();
FVector GlobalTargetLocation = GetTransform().TransformPosition(TargetLocation);
FVector Direction = (GlobalTargetLocation - Location).GetSafeNormal();
Location += Speed * dt * Direction;
SetActorLocation(Location);
}
}
결과물
함수
- FVector3D::GetSafeNormal() : 벡터의 정규화된 복사본을 가져와 길이에 따라 안전한지 확인한다. 벡터 길이가 너무 작아 안전하게 정규화할 수 없는 경우 0 벡터를 반환한다.
- AActor::GetTransform() : 액터 공간에서 월드 공간으로 바꿈