正如标题中已经提到的,我正在寻找一种方法,在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
具有相同的非零值,则当该值为正时,它们总是发生碰撞;当该值为负时,它们永远不会发生碰撞。使用类别/掩码规则,两个体
A
和B
如果各自在其掩码中包含对方的类别,即(categoryA & maskB) !== 0
和(categoryB & maskA) !== 0
都为真)发生碰撞。
参见
Matter.IBodyDefinition.isSensor
来禁用Body的物理碰撞。Body仍然可以用作碰撞传感器