正如标题中已经提到的,我正在寻找一种方法来禁用 Matter.js 中身体的每一次碰撞。它应该仍然可以与约束链接,并且应该有可能在一段时间后再次启用碰撞。有没有办法做到这一点?它的难点在于对象不应该与任何其他对象发生碰撞,但所有其他对象都应该相互碰撞。
问问题
7239 次
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
都是真的。B
categoryA & maskB) !== 0
(categoryB & maskA) !== 0
于 2020-04-20T02:47:39.090 回答
4
看
Matter.IBodyDefinition.isSensor
为了禁用身体的物理碰撞。Body 仍然可以用作碰撞传感器。
于 2017-08-08T22:06:23.420 回答