要使动画与帧速率无关,是否需要将delta值乘以速度和加速度?
// Multiply both acceleration and velocity by delta?
vVelocity.x += vAcceleration.x * delta;
vVelocity.y += vAcceleration.y * delta;
position.x += vVelocity.x * delta;
position.y += vVelocity.y * delta;
我应该仅对速度应用delta而不是加速吗?
答案 0 :(得分:2)
假设您的“delta”是自上次更新以来经过的时间:
简答:是的。
答案很长:
检查此类事情的一种方法是查看单位是否有用。这不能保证,但通常如果你的单位运作完毕,那么你就能正确地找到答案。
速度测量每单位时间的距离,delta是时间。因此速度时间增量为(选取任意单位米和秒)(m/s) * s = m
。因此,您可以看到速度乘以delta确实创建了一个距离,因此对于位置而言似乎是合理的。
加速度测量每单位时间的速度,即使用相同的单位(m/s)/s
。因此,加速时间增量为((m/s)/s) * s = m/s
。对我而言似乎是一种速度。我们很好!
答案 1 :(得分:1)
是的,有必要让delta
同时包含速度和加速度。它们都是根据时间定义的属性(一个m/s
,另一个m/s/s
- 单位可能不同),因此只要他们必须更改非delta
,就应该使用{{1}} -instantaneously。