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