【问题标题】:Animation independent of frame rate动画独立于帧率
【发布时间】:2011-10-27 17:10:12
【问题描述】:
要使动画独立于帧率,是否需要将 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;
我应该只对速度而不是加速度应用增量吗?
【问题讨论】:
标签:
objective-c
cocos2d-iphone
physics
game-physics
【解决方案1】:
假设您的“增量”是自上次更新以来经过的时间:
简短回答:是的。
长答案:
检查这类事情的一种方法是查看单元是否正常工作。不能保证,但通常如果你的单位成功了,那么你就正确地计算了。
速度衡量单位时间的距离,而增量是时间。所以速度乘以 delta 是(选择任意单位米和秒)(m/s) * s = m。所以你可以看到速度乘以增量确实会产生距离,所以这对于位置来说是合理的。
加速度测量每单位时间的速度,即使用相同的单位(m/s)/s。因此,加速时间增量为((m/s)/s) * s = m/s。对我来说似乎是一个速度。我们很好!
【解决方案2】:
是的,有必要让delta 参与速度和加速度。它们都是根据时间定义的属性(一个是m/s,另一个是m/s/s - 单位可能会有所不同),所以当它们必须非瞬时更改时,应该使用delta。