11

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

4

2 回答 2

6

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

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

从文档:

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

使用类别/掩码规则,如果每个主体都在其掩码中包含对方的类别,则两个物体会发生碰撞,即 (并且A都是真的。BcategoryA & maskB) !== 0(categoryB & maskA) !== 0

于 2020-04-20T02:47:39.090 回答
4

Matter.IBodyDefinition.isSensor

为了禁用身体的物理碰撞。Body 仍然可以用作碰撞传感器。

于 2017-08-08T22:06:23.420 回答