簡單介紹Pygame 精準檢測影像碰撞的問題

大雄45發表於2022-07-11
導讀 這篇文章主要介紹了Pygame 精準檢測影像碰撞,在用Pygame寫遊戲的時候,有人可能會遇到兩個Rect物件碰撞但是物件之間還有空間間隔的問題,這裡,將教大家用一種方法精準地檢測影像碰撞,需要的朋友可以參考下

在用Pygame寫遊戲的時候,有人可能會遇到兩個Rect物件碰撞但是物件之間還有空間間隔的問題,這裡,將教大家用一種方法精準地檢測影像碰撞。

假設我們有兩個影像(型別為Surface):surface1,surface2

首先,獲得這兩個surface物件的rect:

rect1=surface1.get_rect()
rect2=surface2.get_rect()

然後,獲取它們對應的mask物件,用pygame.mask.from_surface()方法,使用如下:

pygame.mask.from_surface(surface)

填入的是Surface物件,返回Mask物件

程式碼如下:

mask1=pygame.mask.from_surface(surface1)
mask2=pygame.mask.from_surface(surface2)

接下來,進行碰撞檢測,我們需要用到overlap方法,使用如下:

mask.overlap(other,offset)

mask是一個Mask物件

other是另外一個Mask物件

offset是一個元組,元組中分別為兩個rect的x座標插值和y座標插值

返回值有兩種,如果是一個元組就說明已經碰撞,如果為None就說明沒有碰撞

程式碼如下:

offset=abs(rect1.x-rect2.x),abs(rect1.y-rect2.y)
if rect1.overlap(rect2,offset)!=None: # 已經碰撞
    print("已經碰撞")

以上程式碼只是示例,可供參考,命名不需要和上方一致,符合命名規範就行。

到此這篇關於Pygame 精準檢測影像碰撞的文章就介紹到這了。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2905066/,如需轉載,請註明出處,否則將追究法律責任。

相關文章