我目前正在将Cannon.js与Three.js结合使用来模拟物理,特别是碰撞。
我有一个旋转的“旋转臂”,它使用以下代码不断在其Y轴上旋转:
angularVelocity: new CANNON.Vec3(0,5,0)
fixedRotation: true
我有一种方法可以创建50个球体,并在每个球体上设置一个速度,以便它们滚动到微调器中。当球体被击中时,它会变成红色。
问题在于某些球似乎笔直地滚动穿过旋转的臂,而有些球的影响很小,从而导致奇怪的结果。
有没有我想做的事情或需要做一些不同的事情来确保所有球体都击中并与旋转臂碰撞?
答案 0 :(得分:0)
尝试增大对象(在这种情况下为球体)的大小var sphereShape = new CANNON.Sphere(1);
,并且世界子步数也是如此this.world.step(1 / 60, 40);
,默认值为10。当增加球体半径时,不要忘记将它们在{{1 }}轴y
。
大多数可能的物体太小并且移动得不够快,以至于计算也变得不准确。
从性能的角度来看,最好增加对象的大小,而不要增加子步骤的数量。但是无论如何都要进行测试验证。