【问题标题】:Which Box2D JavaScript library should I use? [closed]我应该使用哪个 Box2D JavaScript 库? [关闭]
【发布时间】:2017-04-15 02:56:57
【问题描述】:

对于 JavaScript,Box2D 有几个不同的端口。哪个最好?

  • Box2DJS - “以自动方式从 Box2DFlashAS3_1.4.3.1 转换”

  • Box2Dflash 2.0 ported to JavaScript - “一个大的讨厌的 hack 碰巧有效”

  • box2dweb - “Box2DFlash 2.1a 到 JavaScript 的端口。我开发了一个 ActionScript 3 到 JavaScript 转换器来生成代码”

  • HBehrens/box2d.js - “Box2D 2.1a 的 JavaScript 版本”(2011 年 11 月 21 日添加)

  • kripken/box2d.js - “使用 Emscripten 将 Box2D 2D 物理引擎直接移植到 JavaScript”(2013 年 9 月 24 日添加)

如果有的话,http://chrome.angrybirds.com/ 使用哪个版本?

【问题讨论】:

  • 它甚至不必是 Box2D 端口。例如,Matter.jsp2.js 似乎都非常可靠。
  • @Thomas 我同意。但是看看这个问题被问到的时间。那个时候我相信 Matter.js 和 p2.js 还没有出来。
  • 可能,但我认为这个问题是在 Google 中提出的......尝试让 SO 保持最新并为那些追随你的人提供有用的指示并没有什么坏处 :)

标签: javascript box2d


【解决方案1】:

读者注意!

这个问题最初是在 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]
  • Seth Ladd 在他的博客[6] 上通过示例推广了 box2dweb
  • 似乎没有人使用第三种选择。
  • 还有基于 Box2D 的物理模拟器。查看Matter.jsp2.js

还有a similar discussion on gamedev.stackexchange.com

我会说获胜者是 kripken/box2d.js。

【讨论】:

  • box2d 不如 box2dweb 最新。缩小文件中缺少许多核心类。
  • 我个人在一个移植我现有的 iOS box2D 游戏的项目中使用了 box2dJS。我发现版本差异是来自 iOS 的一些代码在 JS 版本中不起作用并且开发停止。之后,我用了半周的时间将所有代码更改为 box2dweb,一切都和我的 iOS box2d 游戏一样运行良好。所以版本差异很重要。
  • emscripten 端口非常酷,但我上次使用它时发现它有问题(包括随机冻结),并且由于 emscripten 的性质,很难调试。
  • @aPaidNerd 这仍然是最新的吗?
  • 一个新的 Box2d-ported JS 物理引擎叫 planck 最近出来了,看看:github.com/shakiba/planck.js
【解决方案2】:

这个问题及其最佳答案来自 2011 年。最近的一个新选项是 box2.js,这是一种将 C++ 代码转换为 Javascript 的 Emscripten 翻译。截至 2013 年 8 月,它比我发现的其他端口更新,并且演示似乎有效。

【讨论】:

  • 感谢@Nelson,我已将其添加到问题中
  • 我没有使用这些库中的任何一个,但是 box2d.js 和“有趣的 VTables”听起来并不酷。
【解决方案3】:

LiquidFun(带有 JS 绑定)

LiquidFun 在我发布此内容时是最新的 JS 端口。它具有 Box2D 的所有特性和液体物理特性。它是使用 emscripten 移植的,所以性能不错。

google/liquidfun

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

【讨论】:

  • 我最近遇到了这个问题,它看起来非常适合模拟水通过管道流入水箱和阀门等。对于我正在研究的项目来说,这将是一个很好的解决方案。是否有任何教程,特别是如何将库实际导入我的 javascript。文档似乎有点稀缺
【解决方案4】:

官方论坛可能是更新 Box2D JavaScript 端口的最佳地点:http://box2d.org/forum/viewforum.php?f=22

JSBox2D 看起来不错。

我肯定会看看 Matter.js,它看起来非常好,而且速度非常快。我要走这条路。 http://brm.io/matter-js

【讨论】:

  • Matter.js 对您有何帮助?
【解决方案5】:

Box2d-html5 也是另一个 box2d 端口,包括 Google 的 LiquidFun) 和活动更新。

【讨论】:

    【解决方案6】:

    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

    【讨论】:

    • Box2D 的下一个竞争者是 PhysicsJS。 wellcaffeinated.net/PhysicsJS/(我的 2cents)
    • Google 在 I/O 2014 期间发布了一个插件 LiquidFun (Go google)。您需要 Box2D v2.3 才能使用它。真是太棒了。
    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多