Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 坎农JS&x2014 ;使用属性初始化实体后的位置向量NaN_Javascript_Three.js_Physics_Cannon.js - Fatal编程技术网

Javascript 坎农JS&x2014 ;使用属性初始化实体后的位置向量NaN

Javascript 坎农JS&x2014 ;使用属性初始化实体后的位置向量NaN,javascript,three.js,physics,cannon.js,Javascript,Three.js,Physics,Cannon.js,我使用的是一个简单的setup Cannon.js,如下在线示例,但是当我在构造函数中设置任何属性时,位置和角速度x、y和z都是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.pos

我使用的是一个简单的setup Cannon.js,如下在线示例,但是当我在构造函数中设置任何属性时,位置和角速度x、y和z都是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
同样,如果我实例化实体,然后在之后设置质量,它仍然不会移动

更多关于上下文的代码(我在动画循环中调用update函数,结果是A-OK)

export const init=()=>{
世界=新加农炮。世界();
世界重力集(0,1,0);
world.broadphase=新CANNON.broadphase();
world.solver.iterations=10;
for(设i=0;i{
世界步长(TIMESTEP*delta);
}

我能想到的唯一一件事是,您意外地将
delta=0
传递到
world.step
。使用Cannon.js v0.6.2重新编程:

尝试将代码更改为:

export const update = (delta) => {
    if (delta > 0) {
        world.step(TIMESTEP * delta);
    }
}

无法在NPM上使用Cannon.js v0.6.2重现body.position.x==NaN问题,也不能通过主分支版本。另外,运行上面的代码应该会抛出一个语法错误,因为您定义了两次“const body”。第二个body是一个错误-它实际上不在我的代码中,不知怎的,在我写问题时,它悄悄地出现在这里。现在移除它。我也在使用v0.6.2,这很奇怪为什么不起作用。我只能认为这可能是Babelify的错误。嘿,是的,我认为这就是问题所在。在第一个循环中,delta是0,我没想到这会是一个问题,但似乎是。谢谢你的帮助没问题。这实际上是Cannon中的一个bug-step()应该能够处理零参数。谢谢你提出来。啊哈-我觉得这看起来很奇怪。很高兴能帮上忙。顺便说一句,很棒的图书馆,干得不错。如果您有任何好的学习资源,请发送给我。我发现了一些,但也许你知道一些好的。
export const update = (delta) => {
    if (delta > 0) {
        world.step(TIMESTEP * delta);
    }
}