在pygame中是否有办法检测矩形是否完全在掩码内?
我知道在直接碰撞和碰撞点(直接碰撞中的点)中有矩形,但有没有办法检测矩形是否在面具内?
由于
答案 0 :(得分:0)
我不相信pygame提供的任何功能都可以。由于面具的“无形”可能性,这肯定会有些挑战。可能对你有用的一种可能性是首先获得一个掩码的界限列表(一起“包含”掩码的所有点的一个rects列表),并检查你的rect是否在这些rects的任何一个内部:
bounding_rects = mask.get_bounding_rects()
for b_rect in bounding_rects:
if b_rect.contains(test_rect):
print "Rect is inside mask"
当然使用此解决方案,如果rect位于掩码内部,但不在任何一个特定的边界rect内,则测试将失败。这里有一个关于如何处理这个问题的想法,需要权衡一点精度:
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个像素的间隙并且联合在一起,新的矩形将包含这个差距)