2013-05-18 14 views

回答

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" 

該解決方案聯盟所有的面具的邊界rects成一個矩形,其覆蓋區域的可能性沒有任何邊界矩形覆蓋(如果兩個矩形之間有10個像素的間隙並且結合在一起,則新矩形將包含該間隙)

+0

您可以檢查矩形上所有四個角的碰撞。如果所有四個人都與面具相撞,但他們沒有第二次碰撞(換句話說,離開面具的邊界),那麼矩形完全在面具內。 – ecline6

+0

這取決於你在面具「內部」定義的精確程度。因爲面罩可以是凹面的,所以矩形的所有角落都可以在面罩內,而沒有整個面罩在面罩內。 – Haz

+0

是的。一個粘性檢票口。 – ecline6

相關問題