1. 程式人生 > >unity中使用box2d物理引擎一 – unity3d遊戲開發

unity中使用box2d物理引擎一 – unity3d遊戲開發

unity的部落格好久都沒有更新了,今天帶了的絕對是勁爆的乾貨。。。

大家使用unity開發遊戲估計有一大部分是開發2D的遊戲,可能會用到物理系統。但是unity的物理系統計算了z軸有時候就會感覺不是那麼順手….

———————–這裡隔開(上面是廢話)————

Box2D是一款免費的開源二維物理引擎,由Erin Catto使用C++編寫,在zlib授權下發布。它已被用於蠟筆物理學、憤怒的小鳥、地獄邊境、Rolando、Fantastic Contraption、Incredibots、Tiny Wings、Transformice、Happy Wheels等遊戲的開發,對於iPhone、iPad和Android遊戲,可以使用Cocos2d遊戲引擎和Corona Framework。

box2d用來做2d物理遊戲很給力,把它用到unity上開發2D遊戲並且跨平臺不是更給力麼
下面介紹一款外掛Farseer Physics,幾乎是c#版的box2d,作者移植了box2d的核心並且寫了一些基礎元件

先下載這個Unity package:
FarseerUnity_CatsintheSky.unitypackage
匯入包,新建一個場景,設定相機為正交相機orthographic,視口大小size為27(當然可大可小的)
新建一個空物體,附加指令碼FSWorldComponent,在這個指令碼上設定重力的加速度,一般不用改的

新建四個方塊把螢幕內包圍起來,確保螢幕內的物體不會彈出螢幕外,然後附加FSBodyComponent元件到每個方塊上,設定body type為static.
新增FSShapeComponent元件,use Unity colliders = true.

QQ20131005-1

新建一些方塊來測試,附加FSBodyComponent和FSShapeComponent元件,選擇FSShapeComponent元件的Use Unity Collider. SType為Polygon.
QQ20131005-2

到這裡點選播放按鈕測試可以看到基礎的物理碰撞效果,在相機上附加FSDebugDrawComponent元件,可以看到物理的除錯資訊.

下面我們來試試另外一種生成物體形狀的方法,複製出剛才的小方塊,刪除物體上FSShapeComponent元件和碰撞體元件
QQ20131005-3
建立一個空物體,作為當前物體的子物體,重置子物體的Transform元件的所有屬性,附加FSShapeComponent元件,去掉Use Unity collider,然後我們使用點連線來繪製物體碰撞體的形狀,命名為(P00, P01, P02, P03)

QQ20131005-4
QQ20131005-5
點選播放測試看看

用這種方法定義多邊形更靈活,能定義你想要的任何形狀,效能上也肯定比MeshCollider好.