本系列博客是由扭曲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有了一定了解了。下一篇開始我們正式學習源碼。