【问题标题】:[Physics][2D][Collision] What to do after dettecting collision[物理][2D][碰撞]检测到碰撞后怎么办
【发布时间】:2014-06-04 19:45:58
【问题描述】:

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

  1. 照常移动对象。
  2. 如果对象与其他对象发生碰撞,请根据具体情况将其移回 它正在发生的方向(例如,向上并撞到某物会 将您移到此对象下方)

但是现在我正在做一个项目,所有东西都可以在 360* 中移动,所以我真的不能说在检测到碰撞后将这个对象移动到哪里。由于大多数物体都有圆形 c.d。对我来说(自上而下的射手),所以我可以做这样的事情:

  1. 正常移动对象
  2. 如果对象与其他对象发生碰撞,请检查这两者之间的角度 物体,并将碰撞到另一个的物体放在物体的边缘 其他人使用计算出的角度来圈。

它是如何工作的图片:

而且我不确定这是否是做这种事情的正确方法。 另一个想法是:

  1. 计算新位置但尚未保存
  2. 检查新位置是否不会与任何东西发生碰撞
  3. 如果不是 - 保存位置
  4. 如果是,请不要移动

它更容易检测到它,但我猜会有差距吗? 那么当面对可以在 360* 方向移动的圆形物体时,有什么想法如何处理碰撞?

//编辑: 此外 - 游戏将是自上而下的 2D 僵尸般的射击游戏。 我确实对这两种解决方案都进行了编码,并注意到: 如果有情况,那我就站在原地,然后是两个丧尸一个接一个。当第一次来找我时,他停下来。在角度版本中,第二个绕过他并试图靠近我。在其他版本中,他只是停下来。 在天使版本中一切都会很好,但是如果有很多“僵尸”,它们有时会在转圈时跳起来,甚至会撞到另一个。 :|从技术上讲,我可以通过它,因为它们不必是游戏中两个僵尸之间恒定的最小距离,但有时它看起来很糟糕,因此我不想一次减少僵尸的数量。

【问题讨论】:

    标签: 2d physics collision geometry


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多