在上一个项目(2D自上而下游戏)中,我有非常简单的碰撞检测以及如何在检测后处理它。一切都只能在4个方向上移动 - 上/下/左/右。光盘。像那样工作:
但现在我正在研究一个项目,一切都可以360 *移动,所以我无法确定在检测到碰撞后移动这个对象的位置。由于大多数对象都有圆型c.d.对我来说(自上而下的射手)所以我可以做那样的事情:
它如何运作的图片:
我不确定这是否是做这种事的正确方法。 其他想法是:
它更容易检测到它,但我猜会有差距吗? 那么任何想法如何在面对可以360 *方向移动的圆形物体时如何处理碰撞?
//编辑: 此外 - 游戏将是自上而下的2D僵尸般的射击游戏。 我对这两种解决方案进行了编码并注意到: 如果有情况,我站在原地,并且有两个僵尸一个接一个。当我第一次来到我身边时他会停下来在Angle版本中,第二个绕过他并试图靠近我。在其他版本中他只是停下来。 天使版本中的一切都会很好,但如果有很多"僵尸"当他们绕圈子时,他们往往会跳跃,甚至在另一个人身上。 :| Techincally我可以通过它,因为他们不必在游戏中两个僵尸之间保持恒定的最小距离,但有时它看起来很糟糕,我不想立刻减少僵尸的数量。
答案 0 :(得分:0)
不久前我有similar question。起初我只是在每次迭代中检查两个球是否碰撞,如果这样计算出新的方向和速度。然而,这有时会导致奇怪的碰撞,因为可能会发生两个球相互移动的情况。
为防止这种情况/正确计算,您必须在检测到碰撞后计算确切的碰撞时间。我在我链接的问题的底部添加了我计算的代码。