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



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

你可以使用碰撞过滤器,像这样:

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

From the docs:

如果两个体的collisionFilter.group具有相同的非零值,则当该值为正时,它们总是发生碰撞;当该值为负时,它们永远不会发生碰撞。

使用类别/掩码规则,两个体AB如果各自在其掩码中包含对方的类别,即(categoryA & maskB) !== 0(categoryB & maskA) !== 0都为真)发生碰撞。

参见

Matter.IBodyDefinition.isSensor

来禁用Body的物理碰撞。Body仍然可以用作碰撞传感器

相关内容

最新更新