Cannon.js - 与旋转物体的碰撞不符合预期

Cannon.js - Collisions with rotating object not as expected

我目前正在使用 Cannon.js 和 Three.js 来模拟物理,特别是碰撞。

我有一个旋转的 'spinner arm',它在 Y 轴上不断旋转,使用以下代码:

angularVelocity: new CANNON.Vec3(0,5,0) fixedRotation: true

我有一种方法可以创建 50 个球体并为每个球体设置一个速度,以便它们滚入微调器。当一个球体被击中时,它会变成红色。

问题是有些球体似乎直接滚过旋转臂,有些球体的影响非常小,导致奇怪的结果。

我是否遗漏了什么或需要做不同的事情来确保所有球体都击中并与旋转臂发生碰撞?

此处演示 - https://codepen.io/danlong/pen/LJQYYN

尝试增加物体(在本例中为球体)大小 var sphereShape = new CANNON.Sphere(1); 并且世界子步数也很重要 this.world.step(1 / 60, 40); 默认值为 10。当增加球体半径时,不要忘记将它们向上移动 ylet y = 1;

很可能物体太小且移动速度太快导致计算不准确。

从性能的角度来看,增加对象的大小比增加子步骤数更好。但无论如何都要用测试来验证。