我使用了一個簡單的設置Cannon.js,下面的示例在線,但是當我在構造函數中設置任何屬性時,位置和角速度x,y和z都是NaN。加農炮JS - 位置向量NaN後啓動屬性的身體
這有效,但不移動,因爲身體沒有質量。
const body = new CANNON.Body();
console.log(body.position.x, body.mass); //logs 0, 0
然而,這不...
const body = new CANNON.Body({
mass: 1,
});
console.log(body.position.x, body.mass); //logs NaN, 1
另外,如果我實例化的身體,然後設定批量化後,它仍然不動。
上下文的一些代碼(我正在調用動畫循環中的更新函數,並且它正在發生A-OK)。
export const init =() => {
world = new CANNON.World();
world.gravity.set(0,1,0);
world.broadphase = new CANNON.NaiveBroadphase();
world.solver.iterations = 10;
for (let i = 0; i < BODIES_COUNT; i++) {
const shape = new CANNON.Box(new CANNON.Vec3(4,4,4));
const body = new CANNON.Body({
mass: 1,
});
const body = new CANNON.Body();
body.addShape(shape);
body.position.set(0, 0, 0);
body.mass = 1;
body.angularVelocity.set(0, 2, 0);
body.velocity.set(0, 1, 0);
body.angularDamping = 0.5;
world.addBody(body);
bodies.push(body);
const geometry = new THREE.BoxGeometry(10, 10, 10);
const material = new THREE.MeshBasicMaterial({ color: 0xff0000, wireframe: true });
const mesh = new THREE.Mesh(geometry, material);
meshes.push(mesh);
}
}
export const update = (delta) => {
world.step(TIMESTEP * delta);
}
無法重現body.position.x === NaN的問題,而不是通過主分支版本。另外,由於您定義了「const body」兩次,因此運行上面的代碼應該會引發語法錯誤。 – schteppe
第二個機構是一個錯誤 - 它實際上並不在我的代碼中,當我寫這個問題的時候,它不知何故陷入了這裏。現在刪除它。 我也使用v0.6.2 - 很奇怪爲什麼這不起作用。我只能認爲它可能與Babelify有一些錯誤。 –