【Box2D】物理引擎入門002

物理編輯器篇(PhysicsEditor)

在Box2D中,除了可以使用內置的幾種基本形狀之外,它還支持從外部文件中進行材質(b2Fixture)的創建。在創建一些復雜的剛體形狀時,單純的使用多邊形描點是一個比較費勁的工作,這時候借助PhysicsEditor這款出色的物理材質編輯器來進行可視化編輯會大大提高效率。

一、形狀編輯

PhysicsEditor主界面

如上圖所示,PhysicsEditor的主界面大致分為四個區域(工具欄、形狀列表、形狀編輯面板和參數編輯面板)。

1、工具欄(ToolsBar)

工具欄位于界面的頂部(如果Windows版本的話,在工具欄上方還有有一行菜單欄),工具欄從左往右依次包含以下6個工具項。

  • New:新建文件。
  • Open:打開一個已有的物理材質編輯文件。
  • Save:保存當前的編輯文件。
  • Publish:導出配置文件。
  • Publish As:導出所有。
  • Add Sprites:添加精靈。

2、形狀列表(Shapes)

形狀列表的面板默認在主界面的左邊位置,該面板顯示的是文件編輯的形狀。為了方便編輯形狀,開發者可以直接將要編輯的形狀對應的圖片拖進該面板松開。

形狀列表面板

如果要刪除某個形狀,只需要在Shapes面板上面選中要刪除的形狀,然后點擊面板右下角的刪除按鈕即可。(圖片的名字會默認為形狀的名稱,以便導出到文件最后在代碼里面使用,所以一般使用合法標識符對圖片命名。)

刪除按鈕

3、形狀編輯面板(Editor)

主界面中央是用于編輯形狀的面板,選中Shapes面板上面的形狀后,該面板會顯示對應的圖片,開發者可以根據圖片的輪廓進行描點,編輯出想要的形狀。

形狀編輯面板

形狀編輯面板的頂部是一組形狀編輯工具,從左往右依次是:圓形、多邊形、魔術棒、左右對稱、上下對稱、頂點的x坐標值、頂點的y坐標值和一個刪除按鈕。

3.1、魔術棒
魔術棒頂點信息

在形狀列表里面選擇一個形狀(我這里的carBody_1),這樣便可以編輯carBody_1的形狀了。先從魔術棒開始吧,點擊魔術棒之后,編輯器會彈窗(如上圖)顯示自動描繪的形狀頂點,直接點擊右下角的“OK”按鈕。物理編輯器根據圖片的像素點自動生成了一個多邊形(如下圖)。

魔術棒生成的形狀
3.2、多邊形

雖然編輯器可以使用魔術棒自動生成多邊形,但是這樣形成的多邊形頂點個數太多,會影響物理模擬的性能(計算量增加了),所以對于多邊形,通常建議開發者使用多邊形手動編輯(不用太過精確)。

點擊多邊形按鈕,我們可以看到多生成了一個三角形(多邊形默認為三角形),如下圖:

多邊形

新建形狀后,原本使用魔術棒生成的形狀會變灰掉,開發者可以點擊灰掉的形狀(形狀變成紅色選中狀態),然后點擊編輯面板右上角的刪除按鈕(y值右邊的那個按鈕)去除不要的形狀。

生成的多邊形默認在圖片的左下角位置,開發者可以手動將其拖拽到合適的位置。然后,可以在形狀相應的邊線附近雙擊添加一個頂點(也可以右鍵創建一個頂點)。

編輯好的多邊形

編輯好形狀之后,可以選中一個頂點,然后頂部的x和y后面的文本框就會現實該頂點的坐標值,開發者可以手動輸入進行微調(如上圖)。

3.3、圓形

在形狀列表選擇wheel_1,然后點擊形狀編輯面板頂部的圓形按鈕,這樣就可以創建一個圓的形狀。圓形在形狀右邊(3點鐘位置)有一個頂點,拖拽它便可以調整圓形的大小。

3.4、形狀鏡像顯示

如果要把編輯好的形狀變成它的左右翻轉鏡像或者上下翻轉的鏡像,只需要點擊一下左右對稱或者上下對稱按鈕,這里就不再贅述(自己玩去,點個按鈕反正很簡單,不想寫,任性--!)。

3.5、縮放編輯面板

由于編輯面板的大小受限,很多時候如果要編輯的圖片比較大,或者想要描點更加精確,開發者可以使用形狀編輯面板底部的縮放功能,默認是原圖大小。

4、參數面板(Parameters)

參數面板分為:Exporter(導出)、Image parameters(圖片參數)、Body parameters(剛體參數)和Fixture parameters(材質/夾具參數)四個部分。

在沒有創建形狀的時候,參數面板上面的部分參數是無法進行編輯的。

4.1、Exporter

Exporter用于設置導出的文件格式,默認為“AndEngine Exporter(XML)”,該選項是一個下拉選擇列表,開發者可以根據使用情景選擇合適的導出格式。這里我選擇“Box2D generic(PLIST)”。

4.2、Gloabl parameters(全局參數)

當Exporter設置為Box2D generic(PLIST)選項后,原本的Body parameters便沒有了,反而多出了一個Gloabl parameters(全局參數),全局參數里面可以設置“PTM-Ratio”(Cocos2D與Box2D的度量單位的一個縮放系數)。

PTM-Ratio默認值是32,通常在Cocos2D中也是使用32,但是這邊需要將其設置為64,否則在創建的時候會發現剛體過大具體原因我也沒有去深究)。

4.3、Image parameters

在Image parameters中,我們通常也只需要關注“Relative”這一項,其它的都可以不用管(看看就知道其它參數是什么意思)。

當Exporter設置為Box2D generic(PLIST)選項后,在形狀編輯面板的左下角便會多出一個小圓圈(如下圖)。

質心

這個圓圈表示的是剛體的質心(搓一點的人就把它當成中心點吧)。我們可以手動拖動這個小圓圈到想要設置的位置,通常是圖片的中間,因為Cocos2D的精靈(Sprite)默認的錨點在中心點,這樣設置方便進行物理世界和渲染世界的效果同步。

在拖動小圓圈的時候就會發現,Relative參數的對應的在變化,開發者可以直接在Relative后面的兩個輸入框里面把值改成0.5,這樣就肯定居中了。

4.4、Fixture parameters

在材質參數這邊一共有7個個參數要設置。

  • Density:密度,用于設置形狀的密度,間接的影響剛體的質量。
  • Restitution:恢復系數,控制剛體發生碰撞時,能量的損失。0表示完全非彈性碰撞,1表示完全彈性碰撞。
  • Friction:摩擦系數,用于模擬形狀的摩擦效果。
  • Is Sensor:是否為傳感器類型,勾選時表示該形狀發生碰撞時可以接收到碰撞信息,觸發碰撞回調,但是沒有碰撞的效果。
  • Id:剛體的id。
  • Group:碰撞組,用于碰撞檢測,默認為0。

除了上述6個參數之外,在Group下面還有16個碰撞種群的設置,用于進行碰撞篩選:

  • Bit's name:種群名稱。
  • Cat:剛體所在的種群(可以多選),默認選擇第一個。
  • Mask:與該形狀發生碰撞的種群(可以多選),勾選后即表示當前形狀可以與對應的種群的剛體發生碰撞。
參數設置

二、文件導出和保存

編輯結束后點擊頂部工具欄的“Publish”按鈕,進行導出,Publish導出的是plist格式,可以在Cocos2D中進行解析(關于如何使用該文件將在下一篇關于關節的篇幅中介紹)。

除此之外,我們還需要“CTRL + S”或者點擊工具欄的“Save”按鈕將文件保存成pes格式的文件,pes格式的文件可以使用PhysicsEditor直接打開,方便后續開發中進行修改。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容