Python PyGame像素完美碰撞未在正确位置注册

Python PyGame像素完美碰撞未在正确位置注册,python,pygame,Python,Pygame,我试图测试平台和播放器之间的碰撞。这些平台是带有直角的图像,所以常规的矩形碰撞不会很好地工作。当播放器位于屏幕左上角时,下面的代码开始打印true,但不是平台实际所在的位置。我不知道我做错了什么,所以任何帮助都是感激的 适用于范围内的i(len(self.platforms)): #面具 feet\u mask=pygame.mask.from\u surface(self.feet.convert\u alpha()) platform_mask=pygame.mask.from_surfac

我试图测试平台和播放器之间的碰撞。这些平台是带有直角的图像,所以常规的矩形碰撞不会很好地工作。当播放器位于屏幕左上角时,下面的代码开始打印true,但不是平台实际所在的位置。我不知道我做错了什么,所以任何帮助都是感激的

适用于范围内的i(len(self.platforms)):
#面具
feet\u mask=pygame.mask.from\u surface(self.feet.convert\u alpha())
platform_mask=pygame.mask.from_surface(self.platforms[i][4]。convert_alpha())
#图像
feet\u rect=self.feet.get\u rect()
platform_rect=self.platforms[i][4].get_rect()
Foots\u-rect.topleft=(self.Foots\u-rect[0],self.Foots\u-rect[1])
platform_rect.topleft=(self.platforms[i][0],self.platforms[i][1])
偏移量_x,偏移量_y=(平台左-英尺左),(平台右-顶部-英尺右-顶部)
如果平台遮罩重叠(脚遮罩,(偏移x,偏移y))!=无:
打印('true')
打破

偏移量的计算错误。该方法的偏移参数是
othermask
相对于对象的相对位置。
因此,通过从
platform\u rect
的坐标中减去
foot\u rect
的坐标来计算偏移量:

offset\ux,offset\uy=(平台左-脚左),(平台上-脚上)

offset_x,offset_y=(feet_rect.left,platform_rect.left),(feet_rect.top,platform_rect.top)
如果平台遮罩重叠(脚遮罩,(偏移x,偏移y))!=无:
打印('true')
打破

Related,谢谢您的回答,但当我这样做时,它仍然在精灵没有碰撞的位置打印true,而不是左上角,而是右下角。这是我代码中与冲突无关的其他地方的问题吗?@Farmer谁知道呢?我只能看到你的代码的一小段。在这个片段中是我在回答中发现的错误。在我看来,代码的其余部分看起来很好。好的,谢谢你的帮助,非常感谢。