2011-03-11 90 views
1

我正在研究一個物理非常簡單的遊戲。我只需要檢測球(點)碰到牆(線段)時的情況。沒有重力,沒有摩擦,並且碰撞是完全彈性的。是Chipmunk矯枉過正的簡單碰撞檢測?

我已經寫了碰撞檢測代碼,但我即將對該項目進行一些重大更改,因此有機會用Chipmunk物理庫將其全部替換。這是一個好主意嗎?

一方面,Chipmunk將比我自己的代碼更加嚴格地測試和優化,我不必去做維護它的工作。

另一方面,也許Chipmunk在我的情況下性能會降低,因爲它旨在支持很多我不會使用的功能。

我希望更熟悉Chipmunk的人會讓我自己分析或閱讀代碼來做出這個決定。

+0

計算距離是超級容易,所以如果這是你需要的,你可能也只是你自己的代碼 - 這將是比學習新的API容易得多。 – 2011-03-11 18:22:32

回答

3

Chipmunk在這裏唯一真正的優勢是,如果你將這個球(或許多球)碰撞到許多牆上,因爲它使用空間索引來檢查彼此靠近的物體的碰撞。這意味着您可以擴展到數百或數千個對象,而不會減慢抓取速度,但如果場景中只有十幾個對象,則不會提供真正的優勢。

這聽起來像你到目前爲止已經實現的工作對你的需求很好。 「如果沒有損壞,不要修復」,這是一個很好的經驗法則。另一方面,在Chipmunk中實現同樣的事情也很容易。如果你想獲得經驗和可擴展性的可能性以換取依賴關係的麻煩,那麼我猜吧。

  • 斯科特(花栗鼠物理傢伙)上的點與線之間
+1

空間哈希?我賣了!你說的沒錯,沒有解決,但我的直覺說,如果我現在不轉換,我很可能會在稍後做。謝謝! – benzado 2011-03-12 18:17:49

0

它真的歸結於你想要它做什麼。我沒有使用花栗鼠本身,但從聽起來像我會說你並不真的需要一個完整的物理庫。

現在,如果你有計劃擴大它超越一個球,一堵牆,這樣你會爲擴展物理使用,那麼現在學習它一個簡單的問題,現在可能是一個好主意。總的來說,除非你想要學習物理圖書館或計劃提高物理計算的複雜性/數量類型,否則我只是自己去做。

1

我發現Chipmunk很簡單易用,我會把它推薦給任何啓動2D項目的人。如果不知道代碼,我無法回答性能問題。我知道它使用空間哈希來確定碰撞,它可能最終會比你的代碼做更少的碰撞測試。 (另一方面,如果球和牆的數量非常少,這可能不是問題)。

它是開源的,所以另一種可能性是使用Chipmunk,但刪除所有你不需要的功能 - 重力,摩擦力,慣性力矩等等。同樣,很難說這是一個好的選擇而不知道你已經實施了什麼。