0

pygame 中有没有办法检测矩形是否完全在蒙版内?

我知道矩形碰撞和碰撞点(矩形碰撞点)中有矩形,但是有什么方法可以检测矩形是否在掩码内?

谢谢

4

1 回答 1

0

我不相信 pygame 提供了任何功能来做到这一点。由于面具的“无形”可能性,这肯定会有些挑战。可能对您有用的一种可能性是首先获取掩码的边界矩形列表(一起“包含”掩码的所有点的矩形列表)并检查您的矩形是否在这些矩形中:

bounding_rects = mask.get_bounding_rects()
for b_rect in bounding_rects:
    if b_rect.contains(test_rect):
        print "Rect is inside mask"

当然,使用此解决方案,如果矩形在掩码内,但不在任何特定的边界矩形内,则测试将失败。这里有一个关于如何处理这个问题的想法,以牺牲一点精度为代价:

bounding_rects = mask.get_bounding_rects()
mask_rect = bounding_rects[0].unionall(bounding_rects)
if mask_rect.contains(test_rect):
    print "Rect is inside mask"

该解决方案将掩码的所有边界矩形合并为一个矩形,该矩形有可能覆盖没有边界矩形覆盖的区域(如果两个矩形彼此之间有 10 个像素的间隙并且合并在一起,则新的矩形将包含该差距)

于 2013-05-18T23:21:45.577 回答