Android游戏开发:Framerate&碰撞

时间:2012-09-09 13:49:37

标签: android collision-detection frame-rate

我创建了一个简单的碰撞检测脚本,它以这种方式工作: 当英雄与物体之间的距离为x像素时,英雄可以“行走”x像素,当他不与物体碰撞时(英雄+ 3px =无碰撞),他移动5个像素。 但我还必须考虑帧速率,因此将其速度乘以经过的时间/ 20 我的问题是,当帧速率在某个时间非常低或很高时,他只需移动一个额外的像素(1px)..机会非常小,但它仍然可能发生。 那么我该怎样做才能防止这种情况呢?

1 个答案:

答案 0 :(得分:1)

在碰撞后检查结束时添加位置修正,或在碰撞前检查结束时添加速度修正。

碰撞后:对象被转换回碰撞点。

预碰撞:物体速度会暂时改变,因此在下一帧中它会在碰撞点上。

示例:

  • 你的物体移动75像素,穿过墙壁。怎么样 做?您需要1次迭代的位置历史记录。期待 历史,你看它实际上是在墙后面,然后是当前 location - >现在它传递了墙xx像素。然后你会设置 它位于墙before旁边的新位置。
  • 你不知道什么时候会落后你的机器人:更好的algortihm需要让它独立于fps。怎么样?你可能会暂停整个世界,直到fps再次稳定,或者只是在绘画之前存储下几个迭代,然后在绘画前计算出来。