我正在构建一个简单的模拟,我需要超过 32 个类别,因此我实现了建议的解决方案来定义一个Detector.canCollide函数来允许我这样做。
Detector.canCollide = function (filterA, filterB) {
console.log(filterB)
return (filterB["collidesWith"].includes(filterA["group"]) || filterB["group"] == 0)
&& (filterA["collidesWith"].includes(filterB["group"]) || filterA["group"] == 0);
}
上面给出了错误:filterB["collidesWith"]未定义。经过进一步检查,我使用了一个console.log()语句来找出这个对象(filterB)发生了什么,它返回了这个:
{category: 1, mask: 4294967295, group: 3, collidesWith: Array(1)}
category: 1
collidesWith: [0]
group: 3
mask: 4294967295
__proto__: Object}
{category: 1, mask: 4294967295, group: 1}
category: 1
group: 1
mask: 4294967295
__proto__: Object}
第二个对象似乎是该console.log()功能的延续(因为它在打印后继续记录)
编辑: 我发现这filterA是相反的,首先它打印:
{category: 1, mask: 4294967295, group: 1}
category: 1
group: 1
mask: 4294967295
__proto__: Object}
{category: 1, mask: 4294967295, group: 2, collidesWith: Array(1)}
category: 1
collidesWith: [0]
group: 2
mask: 4294967295
__proto__: Object}
filterA注意:当我初始化碰撞体时,碰撞过滤器选项与分别出现 ( ) 和消失 ( filterB)的值相同
我的代码其他地方有错误吗?或者这是我忽略的其他 Matter.js 功能?
ibeautiful
相关分类