我想知道是否有人可以帮我理解在box2d中修复我的时间步骤。我试图改进我刚刚发布的游戏Bounce Z Ballz,通过实施更好的时间步骤(我目前使用内置的可变时间步骤)。我一直在阅读一些有用的信息,但我无法真正掌握类似于内置cocos2d / box2d模板的内容,就像 Glenn Fiedler's解决方案一样。
TL; DR(我想将我的cocos2d / box2d游戏时间步骤从内置的可变时间步骤更改为更一致的内容)
谢谢,
史蒂夫答案 0 :(得分:8)
为了实现这一点,您需要知道物理引擎在仍能充分执行的情况下可以步进的最大时间步长。为了论证,让我们说它是0.03秒。
基本上,在更新循环期间,您不希望将增量时间传递给步进时间,而是将其分解为该最大大小的段。因此,如果当前循环周期的增量时间为0.08秒,那么您将需要运行更新循环3次,时间步长为0.03秒,0.03秒,0.02秒。物理系统仍然进展了0.08秒,但它将以足够小的步骤完成,以便正常运行。
Update:(float)deltaTime
{
float maximumStep = 0.03;
float progress = 0.0;
while (progress < deltaTime)
{
float step = min((deltaTime-progress), maxStep);
**PHYSICS STEP(step)**
progress += step;
}
}