Box2D

Box2D

Box2D是一個用於模擬2D剛體物體的C++引擎。zlib許可是一個自由軟體授權協定,但並非copyleft。 Box2D不是一種計算機程式語言,不需要又從變數、數據類型啊一大堆讓人頭痛的基礎知識學起;也不是一種遊戲編程軟體,不需要複雜的安裝與配置。它是一個強大的開源物理遊戲引擎,用來模擬2D剛體物體運動和碰撞,由Erin Catto早在2007年用C++語言開發。 Box2D集成了大量的物理力學和運動學的計算,並將物理模擬過程封裝到類對象中,將對物體的操作,以簡單友好的接口提供給開發者。我們只需要調用引擎中相應的對象或函式,就可以模擬現實生活中的加速、減速、拋物線運動、萬有引力、碰撞反彈等等各種真實的物理運動。

基本信息

引擎簡介

[3]對於iPhone、iPad和Android遊戲,可以使用Cocos2d遊戲引擎和Corona Framework。

安裝

由於box2d套用了cmake,所以要先下載安裝cmake

box2d的最新版

可在下面網址下載。

vs可選擇vs2010專業版

打開cmake,在where is source code 選擇box2d解壓後的資料夾,不是裡面的box2d資料夾,

在where to build the binaries 選擇/Box2D_v(版本)/Build

點configure選擇vs版本,然後運行,沒有出錯就行(指的是沒有最後沒生成box2d.sln,可以看按鈕下面有 沒有紅色的提示),然後再按 generate,那么在build裡面就可生成box2d.sln,

沒有的話就是出錯,照上面看看where is source code選擇的資料夾有沒有錯。

打開box2d.sln,選擇testbed或者helloworld為你的啟動項目,在選擇release,可生成testbed。

如果還遇到錯誤,那就登入作者的論壇去看看別人發的貼子有沒有你的錯誤,網頁可翻譯後在看

這個只是用來box2d的測試,了解一些box2d的工作原理,並不是box2d庫的的一部分

box2d是由freeglut和glui製作的。

名稱解釋

•世界world

世界本是混沌的一體,盤古的神斧砍下去之後才有了天和地,形成了真正的世界,之後才有了山川、河流、花草、樹木。Box2D也一樣,現在Box2D在我們的腦中也是混沌的一片,在創建物體或進行物理模擬之前,首先我們也是要先創建世界。

Box2D中用b2World類來表示世界。它是Box2D的一個核心類之一,集成了Box2D對所有對象的創建、刪除、碰撞模擬的相關接口。

•剛體Body

生活中我們看到的任何物體都可以用東西來描述,會飛的東西是鳥,踩油門能跑的東西是汽車,能載船的東西是水,有半徑的東西是圓,有寬和高的東西是矩形。“東西”這個詞在Box2D的字典中叫做“剛體”,英文名字叫b2Body。

b2Body是Box2D的核心類,是學習Box2D的基礎,也是重中之重。b2Body用來模擬現實物理世界中的所有物體。Box2D中的任何碰撞、反彈、運動軌跡等各種物理現象模擬和數據計算都是基於剛體實現的,所以剛體b2Body所包含的信息有很多,如物體的坐標、角度、受力大小、速度、質量等大量的信息。

•定點Fixture

英文“Fixture”是“固定設施”的意思(一些網路教程中也譯為“夾具”,"定製器"),在Box2D中b2FixtureDef用來定義剛體所固有的一些屬性,並保存在b2Fixture對象中。現實中通常是物體材料特性相關的一些屬性,如剛體的密度、摩擦係數等屬性都是由b2FixtureDef保存的。

•形狀

形狀是一個b2Shape類型的對象,實現了剛體的具體形狀,Box2D將基於這個形狀進行精確的物理碰撞模擬。實際上,b2Shape只是一個抽象的父類,沒有實際創建形狀的過程。在實際開發過程中,b2FixtureDef.shape的屬性值都是b2CircleShape、b2PolygonShape等b2Shape的子類對象。

基本用法

-Testbed 設定(linux, windows, mac)

-Testbed 結構

-為testbed創建一個‘test’

-剛體體(Bodies)

-定製器(Fixtures)

-World設定

-自定義重力(Custom gravity)

-力與衝量(Forces and impulses)

-勻速運動(Moving at constant speed)

-讓物體按指定角度旋轉(Keeping a body rotated at given angle)

-跳躍(Jumping)

-使用debug draw

-畫自己的物體(Drawing your own objects)

-User data

-碰撞剖析(Anatomy of a collision)

-碰撞回調(Collision callbacks)

-碰撞過濾(Collision filtering)

-感測器(Sensors)

-射線投射(Raycasting)

-查詢World(World querying)

-移除物體(Removing bodies)

-“觸地”問題(The ‘touching the ground’question)

-連線器(Joints)

-一些陷阱(Some gotchas)

高級話題

-車輛懸浮(Vehicle suspension)

-黏性彈力(Sticky projectiles)

-飛行軌跡(Projected trajectory)

-爆炸(Explosions)

-易碎物體(Breakable bodies)

-自上而下汽車物理(Top-down car physics)

-地形(Terrain)

-單面牆和平台(One-way walls and platforms)

-傳送帶(Conveyor belts)

-自動扶梯?(Escalators?)

-電梯(Elevators)

-飛箭(Arrow in flight)

-高級運動特性(Advanced character movement)

相關書籍

《Box2D物理遊戲編程初學者指南》

•書籍介紹

•書籍目錄

相關詞條

相關搜尋

熱門詞條

聯絡我們