【发布时间】:2021-03-21 21:49:01
【问题描述】:
我正在构建一个简单的模拟,
我需要的不仅仅是 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 功能?
【问题讨论】:
-
欢迎来到 SO!你能显示一个minimal reproducible example,最好是一个stack snippet,我可以跑去看问题吗?谢谢。
-
我认为存在一些小错误,因为有很多代码需要通过才能获得可以调试的示例,所以我发布了一个答案以表明我已修复它。对不起,如果这篇文章变得无关,无论如何。
-
没关系——感谢self-answer!
标签: javascript undefined simulation physics matter.js