如何让球在 CANNON.js 和 THREE.js 的盒子内弹跳?

how can I make a ball bounce inside a Box with CANNON.js and THREE.js?

我在 THREE.js 中有 sphereBoxGeometry。 我已经设置了标准重力,但是我的球体(在盒子的中心)一直从盒子里掉下来

这是我的 CANNON.js 参数

盒子

const size = 100
const halfExtents = new CANNON.Vec3(size, size, size)
const boxShape = new CANNON.Box(halfExtents)
const boxBody = new CANNON.Body({ mass: 0, shape: boxShape })
multiBall1.userData.world.addBody(boxBody)

球体

const radius = 20;
this.userData.sphereBody = new CANNON.Body({
 mass: 5,
 shape: new CANNON.Sphere(radius),
});
this.userData.sphereBody.position.set(0, 0, 0);
multiBall1.userData.world.addBody(this.userData.sphereBody);
this.position.copy(this.userData.sphereBody.position);
this.quaternion.copy(this.userData.sphereBody.quaternion);

我想让球在禁区内弹跳。这可能吗?

CANNON.Box 是一个 solid 盒子,所以不能在里面放置其他物体。

您可以构造一个 空心 盒子,例如使用六架飞机。检查此演示的代码:https://schteppe.github.io/cannon.js/demos/container.html

构建空心盒子的另一种方法是使用六个薄盒子形状。