android遊戲開發架構libgdx的使用(二十四)—physics-body-editor配合Box2D加快開發

來源:互聯網
上載者:User

Box2d是一個很出名的2d物理引擎,有C++、Java等等版本。libgdx對Box2D進行了很高效的封裝,極大的降低了學習和使用成本。

但是我覺得和Libgdx的UI庫比起來,Box2D的使用始終比較複雜,單純的物體降落什麼的還好說,要是遇上一個特別複雜的物體,有時候就有點繁瑣了。

在網上遊盪時發現了physics-body-editor,絕對堪稱神器。

physics-body-editor

項目首頁:http://code.google.com/p/box2d-editor/

複雜物件的建立只需要用滑鼠點點就行了。

工具可以到處Json格式的檔案,還可以用於其他環境中。

對於Libgdx而言,該項目有一個專門的loader可供使用。

第一個小瓶子

我想了半天都沒有找到一個合適的例子可以用做示範,乾脆就用官方提供了那個瓶子的圖片做示範。

啟動編輯器,建立一個項目,匯入我們要的圖片。

點點滑鼠把邊描繪出來。

編輯器還可以進行測試,點擊滑鼠拖動就可以出現不同大小和速度的小球。

儲存項目,你可以獲得一個Json格式的檔案。

將壓縮包中的loader引入項目。

使用

BodyEditorLoader loader = new BodyEditorLoader(Gdx.files.internal("box2d/b.json"));

讀入設定檔。然後建立一個動態對象:

BodyDef bd = new BodyDef();bd.type = BodyType.DynamicBody;

指定密度等等

FixtureDef fd = new FixtureDef();fd.density = 1;fd.friction = 0.5f;fd.restitution = 0.3f;

建立Body

bottleModel = world.createBody(bd);

使用loader建立細節

loader.attachFixture(bottleModel, "p", fd, BOTTLE_WIDTH);bottleModelOrigin = loader.getOrigin("p", BOTTLE_WIDTH).cpy();

其中的那個“p”是我的圖片的名稱,大家根據自己的情況更改。

為了方便測試,我們建立幾個小球。

BodyDef ballBodyDef = new BodyDef();ballBodyDef.type = BodyType.DynamicBody;CircleShape shape = new CircleShape();shape.setRadius(0.15f);FixtureDef fd = new FixtureDef();fd.density = 1;fd.friction = 0.5f;fd.restitution = 0.5f;fd.shape = shape;ballModels = new Body[100];for (int i=0; i<100; i++) {ballModels[i] = world.createBody(ballBodyDef);ballModels[i].createFixture(fd);}

小球的半徑為0.15f,一共100個。

繪製的時候通過

bottleModel.getPosition().sub(bottleModelOrigin)

擷取座標,賦給對象。

效果:

physics-body-editor到底產生了什麼

physics-body-editor最後匯出的是一個Json格式的檔案。找一個Json查看器看看。

可以看到,萬變不離其宗。產生的Json檔案其實記錄下了每一個點的座標,在Loader讀入的時候進行轉換和聲明。

具體可以參考一下Libgdx的Loader,根據其思路可以將這個工具用到其他語言和環境中去。

寫在最後

如果想在Stage中使用的話要注意相機的處理。同時不要把Stage的大小和World中的大小混為一談,最好有一個轉換比例。一般10~100。

最後附上用到的兩張圖:

資源來自:http://www.aurelienribon.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.