正如标题所提到的那样,我正在寻找一种方法来禁用Matter.js中物体的所有碰撞。它仍应该能够与约束相链接,并且在一段时间后还应该有重新启用碰撞的可能性。有没有办法做到这一点?难点在于该对象不应与任何其他对象发生碰撞,但所有其他对象应互相碰撞。
正如标题所提到的那样,我正在寻找一种方法来禁用Matter.js中物体的所有碰撞。它仍应该能够与约束相链接,并且在一段时间后还应该有重新启用碰撞的可能性。有没有办法做到这一点?难点在于该对象不应与任何其他对象发生碰撞,但所有其他对象应互相碰撞。
您可以使用碰撞过滤器,如下所示:
const body = Matter.Bodies.rectangle(100, 100, 50, 50);
// turns off collisions
body.collisionFilter = {
'group': -1,
'category': 2,
'mask': 0,
};
从文档中得知:
如果两个物体具有相同的非零值
collisionFilter.group
,则如果该值为正,则它们将始终发生碰撞,如果该值为负,则它们永远不会发生碰撞。使用类别/掩码规则,当每个体在其掩码中包括另一个体的类别时,即(
categoryA & maskB) !== 0
且(categoryB & maskA) !== 0
都为true时,两个体A
和B
就会碰撞。
查看
Matter.IBodyDefinition.isSensor