Lua “如何移动”;障碍“;物体。电晕物理盒2D。物理更新?

Lua “如何移动”;障碍“;物体。电晕物理盒2D。物理更新?,lua,box2d,coronasdk,game-physics,Lua,Box2d,Coronasdk,Game Physics,我试图理解在corona/box2d中移动“障碍物”对象的正确方法。我想知道如何编写我的代码,使运动是确定性的,并与物理引擎同步。这可能吗 我熟悉Unity,它有一个物理更新(FixedUpdate)。在这里,您可以添加一些代码来执行每个物理步骤。这将保持物理确定性、帧和系统时间独立性 例如,在我的游戏中,我想做这样的事情:制作一个前后移动的平台,制作一个大小上下伸缩的对象。我仍然希望物理能正常工作,比如让我比赛中的球从这些球上弹下来。视情况而定,我想我应该使用其中一种 我四处搜索过,定期操纵这

我试图理解在corona/box2d中移动“障碍物”对象的正确方法。我想知道如何编写我的代码,使运动是确定性的,并与物理引擎同步。这可能吗

我熟悉Unity,它有一个物理更新(FixedUpdate)。在这里,您可以添加一些代码来执行每个物理步骤。这将保持物理确定性、帧和系统时间独立性

例如,在我的游戏中,我想做这样的事情:制作一个前后移动的平台,制作一个大小上下伸缩的对象。我仍然希望物理能正常工作,比如让我比赛中的球从这些球上弹下来。视情况而定,我想我应该使用其中一种

我四处搜索过,定期操纵这些对象的方法是使用:

  • 。但这在文档“计时器在系统时间运行”中提到了一个问题。如果应用程序被暂停,运行的计时器将不会自动暂停
  • 正在侦听enterFrame事件。但这也有一个类似的问题,如果帧速率下降,那么对象将无法充分移动。我们可以使用delta时间来处理这个问题,但这有决定论问题(在滞后峰值上移动对象太多)
  • 。我猜这是用timer.performWithDelay实现的,并且有同样的问题
我认为这些都不会表现出确定性。有什么建议吗?谢谢你的帮助。

你真的应该使用:

object:setLinearVelocity(xVelocity, yVelocity)


我不知道其他的方法,而不是转换到。“计时器在系统时间运行。如果应用程序被挂起,运行计时器将不会自动暂停”是否真的是个问题?您可以检测应用程序何时挂起。阅读更多。物理模型似乎有所有这些时间副作用(.我认为它真的需要一种方法来运行物理更新的“锁定步骤”。一个“enterPhysicsStep”事件可以解决这个问题。您是否尝试让显示组拥有它们?
object:applyForce(xForce, yForce)