我已经开始在虚幻引擎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)
如果有人能向我解释这一点,我将不胜感激。我要问的是这个等式背后的数学/物理解释或解释这个等式的来源。为什么会那样。
答案 0 :(得分:0)
此功能控制角色的移动(特定高度),以便随着时间的推移通过sine wave控制移动量。也就是说,在时间0,它开始相对较快地向上移动,然后减慢向上运动直到它停止向上移动然后开始向下移动,向下加速最终减速并再次向上移动。它会以这种方式继续上下移动。
所以,这个函数是如何工作的,是它定期调用,然后在这个调用和最后一个调用之间的时间变化是DeltaTime。它最后一次调用是RunningTime。所以计算新的位置:
FMath::Sin(RunningTime + DeltaTime)
和旧职位:
FMath::Sin(RunningTime)
然后通过取差来计算更改的位置:
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));