运动方程 DeltaHeight = (Sin(Running Time + DeltaTime) - Sing(Running Time));

Movement EquationDeltaHeight = (Sin(RunningTime + DeltaTime) - Sin(RunningTime));

我已经开始在 Unreal Engine 4 工作,并在他们的网站上打开了最基本的 c++ 教程。所以这是他们提供的代码

void AFloatingActor::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);
}

这是对它应该做什么的解释: 我们刚刚编写的代码将使 FloatingActor 平滑地上下摆动,使用我们创建的 RunningTime 变量来跟踪我们随时间的移动。

当你编译它时它会那样做,但它没有告诉我任何关于它如何工作或为什么工作的信息。困扰我的事情正如标题所说的运动方程式:

DeltaHeight = sin(RunningTime + DeltaTime) - sin(RunningTime)

如果有人能向我解释一下,我将不胜感激。我要问的是 Mathematical/Physical 这个等式背后的解释,或者这个等式从何而来的解释。为什么会这样。

此函数控制角色的移动(特别是高度),以便随着时间的推移通过 sine wave 控制移动量。也就是说,在时间 0 它开始相对快速地向上移动,然后减慢向上移动直到它停止向上移动然后开始向下移动,加速向下最终减速并再次向上移动。它继续以这种方式周期性地上下移动。

所以,这个函数是如何工作的,它是定期调用的,然后在这次调用和最后一次调用之间的时间变化是 DeltaTime。最后一次调用是 RunningTime。所以计算新位置:

FMath::Sin(RunningTime + DeltaTime)

和旧职位:

FMath::Sin(RunningTime)

然后通过取差计算变化

float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));