运动方程 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));
我已经开始在 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));