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