2016-02-26 228 views
0

我正試圖在Pygame中爲我的遊戲做一個三角碰撞檢測。 我成功地通過Pygame三角碰撞檢測

rect.collidelist(rectlist) 

她對我的所有矩形的碰撞檢測但現在,我已經實現了Poligons(或三角形更精確),我不能做任何良好的碰撞。三角形的碰撞是正方形的,所以我現在不知道該怎麼辦..

+0

你從正交的平凡世界搬到了多邊形交集的更復雜的世界。世界的粒度是否足夠,你可以保證第一次接觸會在頂點?這是一個更容易解決的問題,注意給定的點是否在給定的三角形內。如果在檢查之前頂點可能穿過一個三角形並移出另一邊(暗示),這將不起作用。 – Prune

+0

如果你不得不去完全重疊檢測,你可以看看Luke Simonson對C++ BOOST庫的補充。它適用於廣義多邊形,包括交叉和凹陷,並且它*快*。 – Prune

回答

2

通常,2D碰撞在大多數遊戲開發框架中都以正方形的形式實現。他們被稱爲「碰撞箱」或「撞擊箱」。你可以安裝一個pygame的擴展名,如Pylygon處理多邊形的碰撞,或者有一個更簡單的解決方案:

使用您的三角形物體上多次碰撞盒,幾個小方塊可以相當嚴密映射碰撞檢測的實際視覺的個人資料。當然,這不會是「像素完美」,但它通常工作得很好,當然,如果你需要非常準確的碰撞,這種方式不適合它。

這裏的圖片說明我所說的意思:

Triangle (Black) Collision boxes (red)

+0

非常感謝! –

+0

沒問題,我記得我有一個類似的問題,使我的第一場比賽 – x2kpb