动画独立于帧速率

时间:2011-10-27 17:10:12

标签: objective-c cocos2d-iphone physics game-physics

要使动画与帧速率无关,是否需要将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而不是加速吗?

2 个答案:

答案 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。