2010-08-19 153 views
2

我正在用NDK中的Box2d物理引擎编写Android游戏。所以物理学完全是在本土世界,但绘图仍然在Java世界。Box2d在停止并重新开始暂停后移动更快[Android]

在我的游戏中,我有一个更新线程,步骤物理世界并使画布无效重绘。到现在为止还挺好。当用户希望暂停游戏时,我停止所有线程。然后,用户可以选择“恢复”游戏,重新启动线程,游戏将从停止的地方开始。

由于某种原因,当游戏重新开始时,物理中的物体移动得更快。如果它的时间步进停止并重新启动,为什么会对身体做任何改变?

暂停后再次调用step()会出现问题吗?身体的速度,质量,摩擦力,密度会在短暂停顿后发生变化。

任何帮助表示赞赏 感谢

+0

嗨,你可以分享一些关于如何让应用程序与NDK一起工作的细节 – 2010-09-26 18:22:35

+0

Hi Sameer,这是一个多步骤的过程,我没有记录。我可以写一些东西并与你分享。我会将它张贴在博客或其他内容中,并在此分享链接。 – wysiwyg 2010-10-29 17:21:27

回答

1

这个问题是旧的,但以防万一你没有解决它,一些想法浮现在脑海中:

  • 你传递一个恒定值步()?如果您根据所通过的实际时间量来计算该值,那可能是您的问题。
  • 您确定只创建单个线程吗?当你恢复时,如果你恢复旧线程并意外创建另一个线程,你可以得到2倍的更新。
  • 如何将帧速率锁定为实时 - 是否有可能将该计算更新为新时间?如果你有一个“最近更新”,你检查确保至少1/60秒已经通过,如果你没有重置简历上的“最后更新”值,那么每次更新都会成功,无论这段时间是否已经过去了。