SAT是确定任意凸多边形之间的碰撞的一种不错的方法。您甚至可以获得解决冲突所需的向量。
为了解决复杂(非凸)形状之间的碰撞,我正在考虑某种由多个凸多边形组成的复合形状。如果在宽相中发生碰撞(例如,圆与圆或AABB与AABB),则可以通过检查复合形状中的每个多边形与其他复合形状中的每个多边形来解决冲突。
我想知道实际上分离对象的最佳方法是什么?幼稚的方法是仅取最大幅度的向量并将其用于分离。在下图中,这将是V 2
但是,如果分离向量指向不同的方向,则无法立即解决碰撞,可能需要多次迭代。因此,在下一张图片中,我们将使用V 1进行分离,并在另一个迭代中使用V 2(或接近V 2的形状,因为形状将移动V 1的量)。
这种方法将无法分离指向彼此相反方向的向量,或者在如下图所示的情况下:
在这里,我们将在左侧的状态和右侧的状态之间无休止地进行迭代。
因此,在这里提出一个实际的问题:解决这个问题的合理方法是什么?我想将复合多边形用于复杂形状是一个合理的想法,但我真的很想知道在这种情况下应如何解决碰撞?如第三张图片所示,如何检测死角?