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

时间:2016-12-02 20:40:31

标签: c++ math physics equation unreal-engine4

我已经开始在虚幻引擎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);
}

这是它应该做的解释: 我们刚编写的代码将使FloatingActors顺利上下滑动,使用我们创建的RunningTime变量来跟踪我们随时间的移动。

当你编译它时它会这样做,但它并没有告诉我任何关于它如何或为什么有效的信息。让我烦恼的是标题所说的运动方程:

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

如果有人能向我解释这一点,我将不胜感激。我要问的是这个等式背后的数学/物理解释或解释这个等式的来源。为什么会那样。

1 个答案:

答案 0 :(得分:0)

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

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

FMath::Sin(RunningTime + DeltaTime)

和旧职位:

FMath::Sin(RunningTime)

然后通过取差来计算更改的位置:

float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
相关问题