JavaScript,Matter.js:禁用一个实体的碰撞

JavaScript,Matter.js:禁用一个实体的碰撞,javascript,matter.js,Javascript,Matter.js,正如标题中已经提到的,我正在寻找一种方法,在Matter.js中禁用身体的每次碰撞。它应该仍然可以与约束链接,并且应该有可能在一段时间后再次启用碰撞。有办法做到这一点吗?最困难的是,该对象不应与任何其他对象碰撞,但所有其他对象应相互碰撞。请参见 Matter.IBodyDefinition.isSensor 以禁用实体的物理碰撞。 车身仍然可以用作碰撞传感器。您可以使用碰撞过滤器,如下所示: const body = Matter.Bodies.rectangle(100, 100, 50,

正如标题中已经提到的,我正在寻找一种方法,在Matter.js中禁用身体的每次碰撞。它应该仍然可以与约束链接,并且应该有可能在一段时间后再次启用碰撞。有办法做到这一点吗?最困难的是,该对象不应与任何其他对象碰撞,但所有其他对象应相互碰撞。

请参见

Matter.IBodyDefinition.isSensor
以禁用实体的物理碰撞。
车身仍然可以用作碰撞传感器。

您可以使用碰撞过滤器,如下所示:

const body = Matter.Bodies.rectangle(100, 100, 50, 50);
// turns off collisions
body.collisionFilter = {
  'group': -1,
  'category': 2,
  'mask': 0,
};
从文档中:

如果两个实体具有相同的非零值collisionFilter.group,则如果值为正,它们将始终碰撞,如果值为负,它们将永远不会碰撞

“使用类别/掩码规则,如果两个实体A和B的掩码中都包含另一个实体的类别,即(categoryA和maskB)!==0和(categoryB和maskA)!==0,则两个实体A和B会发生碰撞。”