【发布时间】:2015-09-20 20:13:35
【问题描述】:
正如标题中已经提到的,我正在寻找一种方法来禁用 Matter.js 中的每一次身体碰撞。它应该仍然可以与约束链接,并且应该有可能在一段时间后再次启用碰撞。有没有办法做到这一点?它的难点在于该对象不应该与任何其他对象发生碰撞,但所有其他对象都应该相互碰撞。
【问题讨论】:
标签: javascript matter.js
正如标题中已经提到的,我正在寻找一种方法来禁用 Matter.js 中的每一次身体碰撞。它应该仍然可以与约束链接,并且应该有可能在一段时间后再次启用碰撞。有没有办法做到这一点?它的难点在于该对象不应该与任何其他对象发生碰撞,但所有其他对象都应该相互碰撞。
【问题讨论】:
标签: javascript matter.js
您可以使用碰撞过滤器,如下所示:
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都为真),则会发生碰撞。
【讨论】:
见
Matter.IBodyDefinition.isSensor
为了禁用 Body 的物理碰撞。 Body 仍然可以用作碰撞传感器。
【讨论】: