Python 如何了解pygame.Rect';与另一个矩形碰撞的另一侧?

Python 如何了解pygame.Rect';与另一个矩形碰撞的另一侧?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我使用的是pygame,python3.9,我想返回哪一侧(rect1)与rect2冲突。 我已经试过了,但没用。我只想要内部模块和pygame。(抱歉英语不好) def侧(rect1、rect2): 方向=“” 如果rect1.midtop[1]>rect2.midtop[1]: direction=“top” 如果rect1.midleft[0]>rect2.midleft[0]: 方向=“左” 如果rect1.midright[0]

我使用的是pygame,python3.9,我想返回哪一侧(rect1)与rect2冲突。 我已经试过了,但没用。我只想要内部模块和pygame。(抱歉英语不好)

def侧(rect1、rect2): 方向=“” 如果rect1.midtop[1]>rect2.midtop[1]: direction=“top” 如果rect1.midleft[0]>rect2.midleft[0]: 方向=“左” 如果rect1.midright[0]碰撞的侧面取决于相对的移动方向。相对运动是
rect1
rect2
运动的差异

无论如何,您可以尝试计算每一侧的距离差,并找到最小值的距离:

dr=abs(rect1.right-rect2.left)
dl=abs(rect1.左-rect2.右)
db=abs(rect1.bottom-rect2.top)
dt=abs(rect1.顶部-rect2.底部)
如果最小(dl,dr)
您仍然需要确定矩形是否确实在碰撞。你看到的结果是什么?实际上是碰撞。它只是返回错误的值。我可以通过降低帧速率看到这一点。我也使用pygame。画
def side(rect1, rect2):
    direction = ""
    if rect1.midtop[1] > rect2.midtop[1]:
        direction = "top"
    if rect1.midleft[0] > rect2.midleft[0]:
        direction = "left"
    if rect1.midright[0] < rect2.midright[0]:
        direction = "right"
    if rect1.midbottom[1] < rect2.midbottom[1]:
        direction = "bottom"
    return direction