0
pygame有沒有辦法檢測rect是否完全在mask中?我知道在rect碰撞和碰撞點(rect碰撞點)有rect,但是有什麼方法可以檢測rect是否在mask內?pygame有沒有方法檢測矩形是否完全在面罩內?
感謝
pygame有沒有辦法檢測rect是否完全在mask中?我知道在rect碰撞和碰撞點(rect碰撞點)有rect,但是有什麼方法可以檢測rect是否在mask內?pygame有沒有方法檢測矩形是否完全在面罩內?
感謝
我不相信這是由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個像素的間隙並且結合在一起,則新矩形將包含該間隙)
您可以檢查矩形上所有四個角的碰撞。如果所有四個人都與面具相撞,但他們沒有第二次碰撞(換句話說,離開面具的邊界),那麼矩形完全在面具內。 – ecline6
這取決於你在面具「內部」定義的精確程度。因爲面罩可以是凹面的,所以矩形的所有角落都可以在面罩內,而沒有整個面罩在面罩內。 – Haz
是的。一個粘性檢票口。 – ecline6