2013-05-10 141 views
0

在上一个项目(2D自上而下的游戏)中,碰撞检测非常简单,检测后如何处理。一切只能在4个方向上移动 - 上/下/左/右。光盘。像那样工作:[物理] [2D] [碰撞]发生碰撞后应该怎么办

  1. 正常移动对象。
  2. 如果物体与其他物体相撞移回这取决于 方向这是怎么回事(如往上走,打的东西会 打动你正好这个对象下文)

但现在我的工作一个项目,一切都可以在360 *中移动,所以我无法确定在检测到碰撞后要移动这个对象的位置。由于大多数物体都有圆形的c.d.对我来说(自上而下的射手),所以我可以做这样的事情:

  1. 移动对象为正常
  2. 如果物体与其他物体相撞,这两个 对象之间检查角度,并设置其撞到了一个在另一边的 其他人使用计算角度的圆。

的PIC它是如何工作的: Physics idea

,我不知道这是做这样的事情正确的方法。 其他的想法是:

  1. 计算新的位置,但不保存它尚未
  2. 检查是否有新的位置不会有任何冲突
  3. 如果没有 - 保存位置
  4. 如果是这样 - 不动

它更容易检测到它,但是我猜会有空隙吗? 因此,任何想法如何面对在360 *方向可以移动的圆形物体时的碰撞?

//编辑: 另外 - 游戏将自上而下二维僵尸般的射手。 我确实对这两种解决方案进行了编码,并注意到: 如果存在这种情况,那个即时通讯站在这里,并且有两个僵尸。当第一次到我这里时,他停下来。在角度版本中,第二个环绕着他,试图靠近我。在其他版本中,他只是停下来。 在天使版中一切都会很好,但是如果有很多“僵尸”,他们往往会在他们周围绕圈,甚至一个接一个时跳跃。 :|在技​​术上我可以通过它,因为他们不必在游戏中两个僵尸之间保持恒定的最小距离,但有时它看起来很糟糕,我不想立即减少僵尸的数量。

回答

0

不久前我有一个similar question。起初,我只是在每次迭代中检查两个碰撞的球是否有新的方向和速度。然而,这有时会导致奇怪的碰撞,因为它可能发生两个球相互移动。

为了防止/正确计算,必须在检测到碰撞后计算确切的碰撞时间。我在我链接的问题的底部添加了计算此代码的代码。