如何移动“障碍”物体。Corona SDK Physics Box2D. 物理更新?

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

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

例如,我的游戏中,我想做一些事情:制作来回移动的平台,制作大小缩小的对象。我仍希望物理正常工作,并允许我的游戏中的球弹跳。根据情况,我想我应该使用运动学或动态体。kinematic or dynamic bodies

我搜索过,周期性操作这些对象的方式是使用:

  • timer.performWithDelay。但是在文档中提到了一个问题:“计时器在系统时间上运行。如果应用程序被挂起,则正在运行的计时器不会自动暂停”
  • 听取 enterFrame 事件。但这具有类似的问题,如果帧速率降低,则对象将无法移动足够。我们可以使用 delta 时间来处理这个问题,但这会导致确定性问题(在慢速的情况下移动物体太多)。
  • transition.to。我猜想这是使用 timer.performWithDelay 实现的,具有相同的问题。

我不认为这些中的任何一个都会表现出确定性。有什么建议吗?感谢帮助。

点赞
用户7147481
用户7147481

你应该使用:

object:setLinearVelocity(xVelocity, yVelocity)

或者

object:applyForce(xForce, yForce)

代替 transition.to。

2017-02-23 20:04:27