Pygame?精準(zhǔn)檢測圖像碰撞的問題
在用Pygame寫游戲的時候,有人可能會遇到兩個Rect對象碰撞但是對象之間還有空間間隔的問題,這里,將教大家用一種方法精準(zhǔn)地檢測圖像碰撞。
假設(shè)我們有兩個圖像(類型為Surface):surface1,surface2
首先,獲得這兩個surface對象的rect:
rect1=surface1.get_rect() rect2=surface2.get_rect()
然后,獲取它們對應(yīng)的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坐標(biāo)插值和y坐標(biāo)插值
返回值有兩種,如果是一個元組就說明已經(jīng)碰撞,如果為None就說明沒有碰撞
代碼如下:
offset=abs(rect1.x-rect2.x),abs(rect1.y-rect2.y) if rect1.overlap(rect2,offset)!=None: # 已經(jīng)碰撞 print("已經(jīng)碰撞")
以上代碼只是示例,可供參考,命名不需要和上方一致,符合命名規(guī)范就行
到此這篇關(guān)于Pygame 精準(zhǔn)檢測圖像碰撞的文章就介紹到這了,更多相關(guān)Pygame 檢測碰撞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python編程使用PyQt創(chuàng)建UE藍(lán)圖
這篇文章主要為大家介紹了python編程中如何使用PyQt創(chuàng)建UE藍(lán)圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10Python數(shù)據(jù)清洗&預(yù)處理入門教程
凡事預(yù)則立,不預(yù)則廢,訓(xùn)練機器學(xué)習(xí)模型也是如此。數(shù)據(jù)清洗和預(yù)處理是模型訓(xùn)練之前的必要過程,否則模型可能就廢了。本文是一個初學(xué)者指南,將帶你領(lǐng)略如何在任意的數(shù)據(jù)集上,針對任意一個機器學(xué)習(xí)模型,完成數(shù)據(jù)預(yù)處理工作2022-10-10Python?實操顯示數(shù)據(jù)圖表并固定時間長度
這篇文章主要介紹了Python?實操顯示數(shù)據(jù)圖表并固定時間長度,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08解決python腳本中error: unrecognized arguments: True錯誤
這篇文章主要介紹了解決python腳本中error: unrecognized arguments: True錯誤,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04