一尘不染

我在屏幕上绘制了两个正方形,如何检测两个对象边缘的碰撞?

java

现在,我可以比较X和Y以检查是否发生碰撞,但这仅是两个对象在完全相同的X和Y位置彼此正确通过时。我需要更精确地检查碰撞,以检查是否有刮痕,因为缺少更好的术语。我有X,Y,X和Y比例的变量以及X和Y的速度。非常感谢您的帮助:D

编辑:正方形!


阅读 254

收藏
2020-12-03

共1个答案

一尘不染

如果您的正方形无法旋转,这很简单:说double r是每个边的长度Point p1,一个正方形的中心,另一个正方形的中心p2。然后:

if (Math.abs(p1.x - p2.x) < r && Math.abs(p1.y - p2.y) < r) {
    // Collision
}

更复杂的情况是正方形是否可以旋转。在这种情况下:将对象的每条边视为一条几何线(如果知道角的坐标,则可以轻松地计算每条线的方程式)。

接下来,找到每对线的汇合点(每个汇合点从一个正方形到另一个,彼此相交),并测试该点是否在其中一个正方形内。如果这些比较之一返回true,则发生冲突。

2020-12-03