避免在碰撞时醒来

Avoid wake up on collision

我正在使用 cannon-es(cannon.js 的维护分支)。我需要在一段时间内修复 space 中的 object。所以,在这些情况下我会 body.sleep()

问题是 object 可以与其他 object 碰撞并唤醒。所以我添加 body.collisionResponse = 0 但它不起作用。 body变成幽灵object(碰撞无反应)但仍然在碰撞时醒来

有没有办法避免碰撞唤醒?

我找到了 collisionfiltergroup and collisionFilterMask 属性。

Here an example of use.

因此,在 body 创作中:

const body = new CANNON.Body({
    mass: 1,
    shape: shape,
    material: this.physicsWorld.defaultMaterial,
    collisionFilterGroup: 1,
    collisionFilterMask: 1
})

并且,当它必须得到修复时:

body.sleep()
body.collisionFilterMask = 2