【发布时间】:2014-06-04 19:45:58
【问题描述】:
在上一个项目(2D 自上而下的游戏)中,我进行了非常简单的碰撞检测以及检测后如何处理它。一切都只能在 4 个方向上移动——上/下/左/右。光盘。就这样工作:
- 照常移动对象。
- 如果对象与其他对象发生碰撞,请根据具体情况将其移回 它正在发生的方向(例如,向上并撞到某物会 将您移到此对象下方)
但是现在我正在做一个项目,所有东西都可以在 360* 中移动,所以我真的不能说在检测到碰撞后将这个对象移动到哪里。由于大多数物体都有圆形 c.d。对我来说(自上而下的射手),所以我可以做这样的事情:
- 正常移动对象
- 如果对象与其他对象发生碰撞,请检查这两者之间的角度 物体,并将碰撞到另一个的物体放在物体的边缘 其他人使用计算出的角度来圈。
它是如何工作的图片:
而且我不确定这是否是做这种事情的正确方法。 另一个想法是:
- 计算新位置但尚未保存
- 检查新位置是否不会与任何东西发生碰撞
- 如果不是 - 保存位置
- 如果是,请不要移动
它更容易检测到它,但我猜会有差距吗? 那么当面对可以在 360* 方向移动的圆形物体时,有什么想法如何处理碰撞?
//编辑: 此外 - 游戏将是自上而下的 2D 僵尸般的射击游戏。 我确实对这两种解决方案都进行了编码,并注意到: 如果有情况,那我就站在原地,然后是两个丧尸一个接一个。当第一次来找我时,他停下来。在角度版本中,第二个绕过他并试图靠近我。在其他版本中,他只是停下来。 在天使版本中一切都会很好,但是如果有很多“僵尸”,它们有时会在转圈时跳起来,甚至会撞到另一个。 :|从技术上讲,我可以通过它,因为它们不必是游戏中两个僵尸之间恒定的最小距离,但有时它看起来很糟糕,因此我不想一次减少僵尸的数量。
【问题讨论】:
标签: 2d physics collision geometry