问题标签 [box2dweb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
322 浏览

javascript - Box2D b2.ContactListener strangeness

I've been using Jonas Wagner's JS Box2D port and am running into a strange problem with shape userdata. I've setup my entity to have a collision shape as well as a secondary 'foot' sensor shape to determine when my object is on solid ground. The definition looks a little like this:

#xA;

The idea here being that I can detect when my foot sensor stops colliding with entities. Everything is working as expected and my b2.ContactListener is correctly reporting when objects stop colliding with my foot sensor. The problem is that the userData I'm assigning to my foot shape isn't being correctly reported.

As you can see below, the point object returned in my b2.ContactListener's Remove callback clearly contains a shape (shape2) with it's m_userData attribute set to 'feet'. However, querying the shape2 object directly reports it's m_userData as null.

I've included a screenshot of Safari's debug console performing the console.log shown below. What's going on here?!

#xA;

enter image description here

0 投票
1 回答
231 浏览

javascript - Box2DWeb - GetBody() 不工作

我需要获取夹具的主体,但是当我调用 fixture.GetBody() 函数时,它返回此错误: Object # has no method 'GetBody';

这是代码:

var bodyDef = 新 b2BodyDef;

感谢您的任何建议。

0 投票
2 回答
5026 浏览

box2d - box2djs中的弹簧效果

我想使用 box2djs 模拟弹簧效果。经过大量搜索后,我认为可以使用该距离关节(我不确定)。我尝试了以下代码,但我没有看到身体之间的任何关节。

任何想法...

谢谢

0 投票
2 回答
1276 浏览

javascript - 将 KineticJS 与 box2dweb 一起使用

如何将 kineticJS 与 box2dweb 一起使用,以便可以进行碰撞检测?就像,我怎样才能在通过 kineticJS 渲染的图像周围放置一个圆形边界并通过 box2dweb 应用物理?

有没有关于这个的好教程或任何可以帮助我的代码?或者有什么有效的方法可以用 kineticJS 本身进行碰撞检测?

0 投票
0 回答
193 浏览

box2dweb - Box2DWeb 销毁车身和夹具

我已经创建了主体和固定装置的列表,一切正常,但由于某种原因无法删除对象,这是我的代码(“id”是链接到主体和固定装置的 div 的 id,该信息正在保持身体和夹具数据):HEEEELLPPPPP!

0 投票
1 回答
673 浏览

box2d - 通过窗口调整大小改变世界边界

我是 Box2D 的新手,正在使用 EaselJS 和 Box2DWeb 进行第一个项目。我希望拥有标准的静态形状,包括世界的墙壁和地板,以便在调整大小时与浏览器窗口一起移动/更新。我正在使用 SetPosition 来完成它,每次执行 Easel 的 tick 方法都会调用它——它几乎可以工作了。当浏览器变大时,一切都按预期工作 - 地板降低,动态对象相应下降。

然而,当浏览器变小时,场景中的物体似乎经常会穿过静态地板体并消失。似乎只有在调整大小足以导致相关动态主体短暂下降到窗口视图之外(例如,在降低高度时完全低于浏览器窗格)时才会发生。但是,如果我相当缓慢地调整浏览器的大小......奇怪的是它可以工作。

我想不出任何好的解决方案来解决我的问题,而且我没有任何运气在网络上找到该行为的示例。可以做到吗?非常感谢任何帮助。

李:

绝对 - 非常感谢您的回复。这是一个backbone.js 项目。这个例子可以在这里看到:

http://kensonger.com/b2dweb/

基本的窗口调整大小监听器位于文件底部:

/b2dweb/js/routers/Main.js

...它引用了 app.box2d。这是这里的主干视图:

/b2dweb/js/views/Box2DView.js

'onStageResize' 方法是定位世界边界。此类底部的更新方法通过 /b2dweb/js/routers/Main.js 中的 tick 方法调用 45/sec。

整个工作的一个拉链被压缩在这里:

http://kensonger.com/b2dweb/box2d_experiment.zip

如果您快速向上调整浏览器窗格的大小,然后再快速向下调整,您可以看到 box2d/画架对象穿过地板。如果您不向下调整大小,则对象只会掉下来并消失。但是,如果您这样做,地板会再次穿过并接住掉落的物体。

再次感谢一百万的任何见解 - 非常感谢。

0 投票
1 回答
1942 浏览

html5-canvas - 如何解决在 Android 浏览器中使用 Box2D JS 物理引擎移动对象时的性能延迟?

我正在计划使用 Box2D js 框架开发针对 Android 和 iPhone 平台的基于 HTML5-Canvas 的跨平台游戏。我的游戏包含一些很好的物理动作,因此我选择了 Box2D JS(http://box2d-js.sourceforge.net/)。

所以,我最近在我的安卓手机/安卓平板电脑上运行了一些 Box2D HTML 示例(http://box2d-javascript-fun.appspot.com/ )。在运行基本的物理动作时,我真的觉得这些页面的性能很低。

谁能建议如何解决它?

任何人都可以推荐其他可以提供良好性能的引擎,这些引擎必须具有像 Box2D 这样的应用物理动作吗?

PS:我的 Android 平板电脑有 1 GHz 的处理器和 512 MB 的 RAM。当我在页面上方运行时,几乎 240 MB 是免费的。

0 投票
4 回答
163 浏览

javascript - 对js作用域和外部类的质疑

我是 js 中的 oop 新手。我正在使用 Box2dWeb 开发 HTML5 游戏,我决定应该让它完全基于 oop。所以我在一个名为physics.js

现在我有一个主game.js文件,我在其中初始化了我所有的游戏物理、图形、资产等。以下是内容:

这个文件,初始化我的物理对象没有任何问题。最终这就是我想要的。伟大的!但是,在此之前,文件是这样的,没有这个init()功能。

这显然引发了错误Uncaught TypeError: Cannot call method 'getContext' of null。这意味着,物理构造函数被调用(element此时自然为空),而我没有调用它。这怎么可能?我的自执行函数game.js应该已经初始化了Physics对象吧?我错过了什么?

0 投票
0 回答
71 浏览

javascript - 用 Box2dweb 和 CreateJS 做一个关节(距离,Revolute..)

我发现这个关于在 CreateJS 中使用 Box2dweb 的酷教程http://gotoandlearn.com/play.php?id=176 我正在尝试做任何联合但没有运气,请帮忙。

0 投票
1 回答
387 浏览

javascript - IE10 延迟渲染,用于快速定位变化

我正在为 box2djs 创建一个渲染引擎,它使用页面上的元素来渲染而不是画布,因为与在 Canvas 上实现相同的效果相比,设置样式和操作元素要容易得多。

无论如何,Chrome(一如既往地最好)始终以 60fps 的速度完美呈现它,而IE10在处理许多元素(在我的机器上大约 20+)时开始滞后。

事情是 IE10 在 WebKit Sunspider 中击败了 V8(Chrome 的 JS 引擎),所以我不明白为什么在 IE10 上它会比 Chrome 更滞后。

为什么 IE10 开始滞后而 Chrome 没有如果更快?

我唯一的猜测是 IE10 的页面渲染速度较慢,并且无法处理那么多重绘(每秒 60 次)。

这是我的渲染代码:

JS

如果你不熟悉 box2d,这个函数会为每个形状调用,drawWorld()drawWorld()在每个刻度中调用。我将刻度设置为 1000/60 毫秒,或每秒 60 帧。