【问题标题】:Box2d body moves faster after step is stopped and restarted in a pause [Android]Box2d body 在 step 停止并在暂停中重新启动后移动得更快 [Android]
【发布时间】:2011-06-24 03:20:26
【问题描述】:

我正在使用 NDK 中的 Box2d 物理引擎在 android 中编写游戏。所以物理完全在原生世界中,但绘图仍然在 Java 世界中。

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

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

暂停后再次调用 step() 是否有问题?短暂的停顿后,物体的速度、质量、摩擦、密度会发生变化吗?

感谢任何帮助 谢谢

【问题讨论】:

  • 嗨,您能否分享一些有关如何让应用程序与 NDK 一起使用的详细信息
  • 嗨 Sameer,这是一个多步骤的过程,我没有记录。我可以写一些东西和你分享。我会将其发布在博客或其他内容中,并在此处分享链接。

标签: android box2d


【解决方案1】:

这个问题很老了,但以防万一你还没有解决,我想到了一些想法:

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

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多