Box2d源碼學習之Box2d簡介

本系列博客是由扭曲45原創,歡迎轉載,轉載時註明出處,http://blog.csdn.net/cg0206/article/details/8257607

 隨着智能手機的大量普及,手機的性能也越來越好,伴隨而來出現大量的手機遊戲 ,其中不乏很多優秀的遊戲,如《憤怒的小鳥》、《鱷魚小玩皮》、《翼飛沖天》等等。同時它們也大量的模擬了現實生活中的相關東西,比如小鳥飛行、碰撞的模擬,流體的模擬,都用到了相關的物理知識,他們的開發團隊是怎麼做到的呢,我們不得而知,但我們可以通過box2d引擎來實現相應的效果。下面我們就來了解並學習下box2d。

一、學習資料

  要學習一件事物,首先要知道它是幹什麼的,有什麼作用,以及它的歷史,可以通過它的官網http://www.box2d.org獲取相應的解答,還可以從http://www.iforce2d.net/b2dtut/introduction網站上面的一系列的教程,以及它的中文版---阿蕉同學的博客【http://blog.csdn.net/wen294299195/article/details/7930907】和http://ohcoder.com/blog/categories/box2d-tutorials/中獲取相應的瞭解,當然你還可以從互聯網上搜索相關的知識。

 

二、介紹

box2d是一個2d剛體仿真物理引擎,也是目前使用最爲廣泛的,具有很強的移植性,同時它簡潔、跨平臺、開源、免費,甚至在c++,java,c#,javascript等很多語言上都有實現。我們主要說的是用c++實現的版本。

box2d可以模擬現實世界物體的物理屬性,給用戶一種真實感,存在感。該引擎是有英國人Erincatto編寫的,並作爲每天工作的一部分去維護和完善它。現在經常用於遊戲框架中的物理引擎部分,像iphone上有名的開源框架cocos2d就是用的此物理引擎,以及最近很火的跨平臺引擎cocos2d-x也是用的它作爲物理引擎。


三、源碼結構

Box2D由三個模塊組成:公用(Common),碰撞(Collision)以及動力學(Dynamics)。公用模塊包括內存分配,數學庫,設置。碰撞模塊定義了形狀,broad-phase算法,碰撞的功能/查詢。最後動力學模塊提供了模擬物理世界,物體,定製器(fixtures),以及連接器。下面是三者的關係圖



 四、其它

用過cocos2d、或者cocos2d-x的coder應該清楚,其上述兩個引擎還提供了另一個物理引擎Chipmunk,下面我們就來比較一下這兩者之間的差異:

1、box2d是用c++寫的,而Chipmunk用的是c

2、box2d變量和方法使用全稱命名,而Chipmunk很多地方使用一個字母的簡寫

3、box2d使用類【class】,具有很強的封裝物體性,而Chipmunk使用結構體【struct】,暴露了過多的細節給外部

4、box2d有針對快速移動直接穿透而不進行碰撞測試的解決方法。而Chipmunk針對object-c有個叫SpaceManager接口,可以很容易的添加精靈到剛體上。

 

好了,不都說了,相信大家對box2d有了一定了解了。下一篇開始我們正式學習源碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章