언리얼 Moving Platform
카테고리: UnRealStudy
Moving Platform
움직일 거리 및 속도
내가 움직이고자 하는 플랫폼의 헤더파일에 각 변수를 지정한다.
1
2
3
4
5
public:
UPROPERTY(EditAnywhere, Category = "Moving Platform")
FVector platformVelocity = FVector(100, 0, 0);
UPROPERTY(EditAnywhere, Category = "Moving Platform")
float MovedDistance = 100;
구현
움직임을 구현할 함수도 지정한다.
1
2
private:
void MovePlatform(float DeltaTime);
이제 cpp 파일로 가서 기능을 구현한다.
내가 원하는 거리만큼만 움직이길 바라기 때문에 시작지점과 현재위치의 거리가
희망하는 거리보다 멀어지면 시작지점과 velocity 값을 반대로 바꾸어준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void AMovingPlatform::BeginPlay()
{
Super::BeginPlay();
StartLocation = GetActorLocation();
}
void AMovingPlatform::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
MovePlatform(DeltaTime);
}
void AMovingPlatform::MovePlatform(float DeltaTime)
{
FVector CurrentLocation = GetActorLocation();
CurrentLocation = CurrentLocation + platformVelocity * DeltaTime;
SetActorLocation(CurrentLocation);
float Distance = FVector::Dist(StartLocation, CurrentLocation);
if(Distance > MovedDistance)
{
FVector MoveDir = platformVelocity.GetSafeNormal();
StartLocation = StartLocation + MoveDir * MovedDistance;
SetActorLocation(StartLocation);
platformVelocity = -platformVelocity;
}
}
댓글남기기