p2.js的身体位置是相互内部产生的NaN

我正在为一个需要物理引擎的项目工作。 目前我正在玩p2.js,但是我遇到了一个问题:

当我尝试创建多个body(圆圈和/或框)重叠的位置设置为NaN一旦world.step()被调用。 尸体有5个质量,是dynamic的。

在非常罕见的情况下,它确实工作。 我怎样才能确保它每次都有效? 我是否必须等待尸体初始化?

模拟开始前4圈,一旦调用world.step,这些圈的位置是NaN: 在这里输入图像描述

var world = new p2.World({ gravity: [0, 9.82] }); function PhysicsBody(type, x, y, widthOrRadius, height) { this.body = new p2.Body({ mass: 5, position: [x, y], }); this.type = type; if (this.type == 'rectangle') { this.shape = new p2.Box({ width: widthOrRadius, height: height }); } else if (this.type == 'circle') { this.shape = new p2.Circle({ radius: widthOrRadius }); } this.body.addShape(this.shape); world.addBody(this.body); } var bod1 = new PhysicsBody('circle', 0, 0, 32); var bod2 = new PhysicsBody('circle', 10, 0, 32); 

代码似乎运行良好。 看到这个JSFiddle: http : //jsfiddle.net/w5dthnaw/

你怎么称呼world.step()? 也许有一些奇怪的价值传递给它。 您可以通过以下方式调用它:

  1. world.step(dt)其中dt是刻度的秒数,例如1/60
  2. world.step(dt, elapsedTime, maxSubSteps); 例如world.step(1/60, 1/60, 10);

您传递给step()的所有数字都必须为非零。