[物理] [2D] [碰撞]检测到碰撞后怎么办

时间:2013-05-10 20:45:37

标签: 2d physics collision geometry

在上一个项目(2D自上而下游戏)中,我有非常简单的碰撞检测以及如何在检测后处理它。一切都只能在4个方向上移动 - 上/下/左/右。光盘。像那样工作:

  1. 正常移动对象。
  2. 如果对象与其他对象发生碰撞,则根据内容将其移回 它正在发生的方向(例如上升并击中某些东西会 把你移到这个物体下面)
  3. 但现在我正在研究一个项目,一切都可以360 *移动,所以我无法确定在检测到碰撞后移动这个对象的位置。由于大多数对象都有圆型c.d.对我来说(自上而下的射手)所以我可以做那样的事情:

    1. 正常移动对象
    2. 如果物体与其他物体碰撞,请检查这两者之间的角度 对象,并设置在边缘上碰撞另一个的对象 其他人使用计算角度圈。
    3. 它如何运作的图片: Physics idea

      我不确定这是否是做这种事的正确方法。 其他想法是:

      1. 计算新位置但尚未保存
      2. 检查新职位是否与任何事物发生冲突
      3. 如果不是 - 保存位置
      4. 如果是这样 - 请勿移动
      5. 它更容易检测到它,但我猜会有差距吗? 那么任何想法如何在面对可以360 *方向移动的圆形物体时如何处理碰撞?

        //编辑: 此外 - 游戏将是自上而下的2D僵尸般的射击游戏。 我对这两种解决方案进行了编码并注意到: 如果有情况,我站在原地,并且有两个僵尸一个接一个。当我第一次来到我身边时他会停下来在Angle版本中,第二个绕过他并试图靠近我。在其他版本中他只是停下来。 天使版本中的一切都会很好,但如果有很多"僵尸"当他们绕圈子时,他们往往会跳跃,甚至在另一个人身上。 :| Techincally我可以通过它,因为他们不必在游戏中两个僵尸之间保持恒定的最小距离,但有时它看起来很糟糕,我不想立刻减少僵尸的数量。

1 个答案:

答案 0 :(得分:0)

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

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