引擎簡介
[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製作的。
名稱解釋
世界本是混沌的一體,盤古的神斧砍下去之後才有了天和地,形成了真正的世界,之後才有了山川、河流、花草、樹木。Box2D也一樣,現在Box2D在我們的腦中也是混沌的一片,在創建物體或進行物理模擬之前,首先我們也是要先創建世界。
Box2D中用b2World類來表示世界。它是Box2D的一個核心類之一,集成了Box2D對所有對象的創建、刪除、碰撞模擬的相關接口。
生活中我們看到的任何物體都可以用東西來描述,會飛的東西是鳥,踩油門能跑的東西是汽車,能載船的東西是水,有半徑的東西是圓,有寬和高的東西是矩形。“東西”這個詞在Box2D的字典中叫做“剛體”,英文名字叫b2Body。
b2Body是Box2D的核心類,是學習Box2D的基礎,也是重中之重。b2Body用來模擬現實物理世界中的所有物體。Box2D中的任何碰撞、反彈、運動軌跡等各種物理現象模擬和數據計算都是基於剛體實現的,所以剛體b2Body所包含的信息有很多,如物體的坐標、角度、受力大小、速度、質量等大量的信息。
英文“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物理遊戲編程初學者指南》
Box2D 物理遊戲編程基礎 1致謝 5前言 6 A.1 是否需要物理知識 A.2 適用對象 A.3 需要什麼 A.4 閱讀規範1.認識Box2D世界 8 1.1什麼是Box2D引擎 1.2 創建Box2D世界 1.3 開啟Box2D模擬 1.4 小結2.認識剛體 18 2.1 什麼是剛體 2.2創建剛體 2.3 認識剛體形狀 2.4 b2DebugDraw調試視圖 2.5小結3.剛體屬性詳解 35 3.1 b2BodyDef 3.2 b2FixtureDef 3.3 小結4.剛體操作 71 4.1 LDEasyBox2D工具包 4.2 CreateFixture 4.3 CreateFixture2 4.4 DestroyFixture 4.5 ApplyForce 4.6 ApplyImpulse 4.7 ApplyTorque 4.8 GetLocalXXX、GetWorldXXX 4.9 GetMass 4.10 SetMassData 4.11 Split 4.12 GetAABB 4.13 QueryAABB 4.14 QueryShape 4.15 RayCast 4.16 小結5.碰撞處理 130 5.1 認識碰撞 5.2 b2Contact 5.3 b2ContactListener碰撞偵聽器 5.4 遊戲中的碰撞處理 5.5 小結6.關節 177 6.1 認識Box2D關節 6.2 b2MouseJoint滑鼠關節 6.3 b2PrismaticJoint位移關節 6.4 b2LineJoint線段關節 6.5 b2RevoluteJoint旋轉關節 6.6 b2DistanceJoint距離關節 6.7 b2WeldJoint貼上關節 6.8 b2PulleyJoint滑輪關節 6.9 b2FrictionJoint 摩擦關節 6.10 b2GearJoint 齒輪關節 6.11 b2WheelJoint中軸關節 6.12 b2RopeJoint繩索關節 6.13 b2MotorJoint馬達關節 6.14 綜合示例 6.15 小結7.Box2D工具 237 7.1 PhysicsEditor 7.2 RUBE 7.3 b2Separator 7.4 小結8. 遊戲中的Box2D套用 266 8.1 柔體 8.2 浮力 8.3 剛體切割 8.4 關節碰撞 8.5 小結附錄:向量運算 316 A.1 Box2D中的向量 A.2 AddVV A.3 SubtractVV A.4 Normalize A.5 NegativeSelf A.6 Distance A.7 Mul A.8 Cross A.9 Dot