2014-01-20 87 views

回答

2

是的,這是可能的。你對這個相互衝突的論點也是正確的。

你需要做的是編寫一個函數,它將採用2個精靈並返回一個布爾值。

在此功能中,您可以檢查它們碰撞的哪一側,並通知精靈的碰撞,甚至只有在發生某種類型的碰撞時才返回true。

由於每個精靈都有一個矩形屬性,因此您可以檢查移動的方式以及他們的位置,以查看他們碰撞的位置。

例如,如果我們有兩個精靈,A,B一個向上,另一個向左,他們可以以兩種方式相撞。您可以測試是否已經從頂部碰撞,如果碰撞後,第二個精靈比A.

+0

我創建了一個插件,此。隨意貢獻或報告任何錯誤:https://github.com/DeathMiner/PyGame-Side-Collisions –

1

繼承人到pygame的文檔,我找到了一個鏈接更高:您使用

pygame documentation

如果

pygame.sprite.spritecollide()

:與搜索頁面搜索功能的瀏覽器我不太喜歡pygame,但瞭解基礎知識。我認爲正確的函數是

pygame.sprite.collide_mask()

其中作爲文檔說:

「返回的面具,其中面具相撞,或無如果第一點沒有碰撞

測試兩個精靈之間的碰撞,通過測試它們的位掩碼是否重疊。如果精靈有一個「掩碼」屬性,那麼它將用作掩碼,否則將從精靈圖像創建一個掩碼。意爲pa作爲碰撞函數的碰撞回調函數。精靈必須具有「矩形」和可選的「掩碼」屬性。

如果您要檢查碰撞多次,您應該考慮在加載時爲您的精靈創建一個掩碼。這將提高性能,否則這可以是一個昂貴的功能,因爲它會創建一個口罩在每次檢查碰撞時間。」

希望它能幫助。

-Harry

+0

有趣 - 「他們」的錯字被複制* sic *。 – usr2564301

+0

哦,是啊:P沒有注意到!雖然pygame的創造者會注意到這個問題。 – HarryCBurn