与多个对象发生碰撞

时间:2014-01-15 00:16:47

标签: collision

我正在做一个小型模拟,其中一个球与其他物体(例如矩形)碰撞。我的主循环看起来像这样:

while (true) {
    entities.update(); // update all entities (e.g. ball, rectangles), move them

    updateCollision(); // check for collision and inform colliding objects
}

在涉及球和只有一个物体的碰撞情况下,一切都能很好地发挥作用。球根据实施的物理反弹。然而,当碰撞系统检测到球同时与多个矩形碰撞时,它不起作用。为什么?当球击中矩形时,它会改变方向并且没问题。但是当球碰到两个矩形时,它会因为与第一个矩形碰撞而改变方向,然后由于与第二个矩形的碰撞而再次改变方向。因此,当这两个矩形彼此非常接近并且球落下并同时击中它们时,球的方向改变两次,所以最后它根本不会改变。这一切都发生在updateCollision()函数的循环中的一次迭代中。如何改进此机制才能正常工作?我会很感激任何想法。

1 个答案:

答案 0 :(得分:0)

也许你应该同时更新速度。当您将速度表示为矢量时,您可以计算所有碰撞更新,然后将这些更新线性组合到单个更新中。

请参阅此帖并将其用于您的问题:Ball to Ball Collision - Detection and Handling