2011-10-02 146 views
78

JavaScript有幾個不同的端口Box2D。哪一個是最好的?我應該使用哪個Box2D JavaScript庫?

  • Box2DJS -

  • Box2Dflash 2.0 ported to JavaScript 「從Box2DFlashAS3_1.4.3.1以自動方式轉變」 - 「那只是碰巧一個大的討厭的黑客工作」

  • box2dweb - 「將Box2DFlash 2.1a移植到JavaScript的一個端口。我開發了一個ActionScript 3到JavaScript轉換器來生成代碼「

  • HBehrens/box2d.js - 」Box2D的2.1A的JavaScript版本「(新增2011年11月21日)

  • kripken/box2d.js - 」 的Box2D的2D物理引擎的JavaScript的直接端口,使用Emscripten 「(2013年9月24日添加)

版本http://chrome.angrybirds.com/使用的任何想法?

+0

它甚至沒有成爲一個Box2D的端口。例如,[Matter.js](http://brm.io/matter-js/)和[p2.js](https://github.com/schteppe/p2.js)都顯得非常穩固。 – Thomas

+0

@Thomas我同意。但看看問題提出的時間。那時候我相信Matter.js和p2.js還沒有出來。 – newguy

+0

也許,但我認爲這個問題出現在谷歌...沒有傷害試圖保持SO最新與有用的指針爲那些誰來:) – Thomas

回答

71

給讀者的提示!

這個問題最初是在2011年問及回答的,但我會盡我所能讓它保持最新!

這裏是我發現:

  • kripken/box2d.js是使用Emscripten一個Box2D的端口和運作良好,並很快。我個人使用這個很成功。
  • planck.js是最新的端口,並且是從底層寫入JavaScript的
  • Box2DJS是Box2DFlash 1.4.3.1的一個端口。 box2dweb是2.1a版的一個端口。
  • Box2DJS作品「作爲CommonJS的模塊無需做任何修改都」 [1]
  • Box2DJS「不起來了最新的,你必須導入每個項目的JavaScript文件數量較大」 [2]
  • box2dweb載在一個文件[2]
  • box2dweb是「一個非常新的端口,並有很多較少的問題」比Box2DJS [3]。但是,切換可能會引入新問題[4]
  • Box2DJS依賴於原型,但box2dweb不[5]
  • 塞斯·拉德促進box2dweb在他的博客的例子[6]
  • 似乎沒有人使用的第三種選擇。
  • 還有基於Box2D的物理模擬器而不是。退房Matter.jsp2.js

還有a similar discussion on gamedev.stackexchange.com

我想說贏家是kripken/box2d.js。

+0

box2d是不是最新的box2dweb。縮小文件中缺少許多核心類。 – dopatraman

+1

我個人在一個項目中使用box2dJS來移植我現有的iOS box2D遊戲。我發現與版本不同的是,iOS版本中的一些代碼在JS版本中不起作用,開發人員暫停。之後,我用了半個星期的時間將所有代碼更改爲box2dweb,並且每件事情都和我的iOS box2d遊戲一樣工作得很好。所以版本差異很重要。 – Makzan

+0

emscripten port非常酷,但是最後一次使用它時,由於emscripten的本質,我發現它是bug(包括隨機凍結),並且很難調試。 – bunnyhero

12

這個問題及其最佳答案是從2011年開始的。最近的一個新選項是box2.js,這是C++代碼到Javascript的Emscripten翻譯。截至2013年8月,它比我發現的其他港口更新,並且演示似乎有效。

+0

謝謝@Nelson,我將它添加到問題 –

+0

我沒有使用任何這些庫,但box2d.js和「與VTables樂趣」不聽起來很酷。 – cubuspl42

0

Box2DWeb支持原始C++ Box2D的大部分API,但鍊形狀除外。 :/

它是應用最廣的Javascript Box2D。如果您需要Box2DWeb的API文檔,請查看Box2DFlash。 http://www.box2dflash.org/docs/2.1a/reference/

Box2DWeb是使用編譯器從Box2DFlash自動生成的。所以API是一樣的。

我懷疑Box2DWeb將來會得到更新,因爲Box2DFlash已經不再顯示任何活動。你可以看到作者的理性爲什麼他決定不寫一個直接的Box2D - > Box2DWeb端口。

https://code.google.com/p/box2dweb/wiki/Roadmap

+0

Box2D到目前爲止的下一個競爭者是PhysicsJS。 wellcaffeinated.net/PhysicsJS/(我的2cents) – Vennsoh

+0

Google在I/O 2014期間發佈了一個插件LiquidFun(Go google)。您需要Box2D v2.3才能使用它。這非常棒。 – Vennsoh

7

LiquidFun(帶JS綁定)

LiquidFun是,當時我張貼這一點,最近的港口JS。它具有Box2D的所有功能和液體物理特性。它使用emscripten移植,所以性能很不錯。

google/liquidfun

google/liquidfun/tree/master/liquidfun/Box2D/lfjs

+0

我最近遇到這個問題,它看起來非常適合模擬通過管道進入水箱和閥門等的水流,這對我正在研究的項目來說是一個很好的解決方案。有沒有任何教程,特別是如何真正把圖書館到我的JavaScript。文檔似乎有點稀缺 –