1

我正在研究一个突破克隆,我一直在试图弄清楚如何获得两个碰撞矩形的相交矩形,这样我就可以测量球在 x 和 y 轴上进入块的深度并决定哪个组件速度我会反转。

我想我可以像这样计算每种情况的深度:

球与块碰撞

但是,如果我有交叉点,那么我就不必担心球是否从左/右上/下击中了块(因为我只会分别反转 x 和 y 轴),从而为我节省了很多的打字。

我查看了Pygame 的文档,但似乎没有相应的功能。我将如何解决这个问题?

4

1 回答 1

6

假设你有矩形r1r2,有.left, .right, .top, and .bottom边,那么

left = max(r1.left, r2.left);
right = min(r1.right, r2.right);
top = max(r1.top, r2.top);
bottom = min(r1.bottom, r2.bottom);

(通常的约定是坐标从上到下从左到右增加)。最后,检查left<righttop<bottom,并计算面积:

Area = (right - left) * (top - bottom);

或者,您可以使用该clip()功能。从您在问题中链接的文档中:

clip(Rect) -> Rect 返回一个被裁剪为完全在参数 Rect 内的新矩形。如果两个矩形开始时不重叠,则返回大小为 0 的 Rect。

于 2013-12-10T02:58:16.973 回答