好的,所以我通过执行以下操作解决了它:
我在.h 文件中添加了以下内容
APlateUp();
UPROPERTY(EditAnywhere)
UShapeComponent* Root;
UPROPERTY(EditAnywhere)
UStaticMeshComponent* MyMesh;
float RunningTime;
在公开课中
然后在我添加的.cpp 文件中
Root = CreateDefaultSubobject<UBoxComponent>(TEXT("Root"));
RootComponent = Root;
MyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyMesh"));
MyMesh->AttachTo(RootComponent);
在main函数中然后我添加了
FVector NewLocation = GetActorLocation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 200.0f;
RunningTime += DeltaTime;
SetActorLocation(NewLocation);
当然你可以把NewLocation.Z改成X或者Y,你可以改变物体移动的力。
这些解决方案是通过在 YouTube 上观看 Reuben Ward 提供的,因此有更多关于所有这些的解释。我只是在回答我的问题,所以如果有人遇到同样的问题,他们可以很容易地得到答案。另外,如果你想在某个位置停止对象,你可以这样做:
if (NewLocation.Z < 7700.0) {
float DeltaHeight = ((RunningTime + DeltaTime) - (RunningTime));
NewLocation.Z += DeltaHeight * 100.0f;
RunningTime += DeltaTime;
SetActorLocation(NewLocation);
}
当然,将NewLocation.Z 更改为X 或Y,将7700.0 更改为您想要在该轴上的任何位置。这将检查当前的新位置是否小于您提供的值,如果是,它会继续在轴上移动对象。这是我自己的问题,所以如果您对此功能有任何疑问,请随时提出。