Matter JS - event.pairs 数组在碰撞时为空白
Matter JS - event.pairs array is blank on collision
我正在使用 MatterJS 为 canvas 上的一些对象设置动画。在动画中的某个时刻,我的两个对象之间发生了碰撞。我使用以下代码成功检测到事件:
Events.on(engine, 'collisionStart', function(event) {
console.log(event)
});
我要确定的是哪两个物体发生了碰撞。当我 console.log event.pairs 我得到一个空数组。我原以为它会返回一个碰撞的两个对象的数组。我哪里做错了?
你真的没有错误。你必须在零位置看到你的对,库 matterjs 从 event main 打印这个值有问题。您必须部署您的响应,然后才能看到您的配对,因此:
Events.on(engine, 'collisionStart', function(event) {
console.log("Evento: ", event)
var pairs = event.pairs;
console.log("Pair no visible: ", pairs)
console.log("Pair visible: ", pairs[0]);
console.log("colision between " + pairs[0].bodyA.label + " - " + pairs[0].bodyB.label);
});
Here,我举个简单的例子。
Cristian Agudelo 的补充答案,你需要复制对的状态然后做你想做的事:
Matter.Events.on(engine, "collisionStart", function(e)
{
var pairs = e.pairs.slice(); // copy
...
}
为了在 Matter js 中成功处理碰撞,请尝试从事件对象访问每一对返回的数组。
Events.on(engine, 'collisionStart', (event) => {
event.pairs.forEach((collision) => {
console.log(collision);
});
});
我正在使用 MatterJS 为 canvas 上的一些对象设置动画。在动画中的某个时刻,我的两个对象之间发生了碰撞。我使用以下代码成功检测到事件:
Events.on(engine, 'collisionStart', function(event) {
console.log(event)
});
我要确定的是哪两个物体发生了碰撞。当我 console.log event.pairs 我得到一个空数组。我原以为它会返回一个碰撞的两个对象的数组。我哪里做错了?
你真的没有错误。你必须在零位置看到你的对,库 matterjs 从 event main 打印这个值有问题。您必须部署您的响应,然后才能看到您的配对,因此:
Events.on(engine, 'collisionStart', function(event) {
console.log("Evento: ", event)
var pairs = event.pairs;
console.log("Pair no visible: ", pairs)
console.log("Pair visible: ", pairs[0]);
console.log("colision between " + pairs[0].bodyA.label + " - " + pairs[0].bodyB.label);
});
Here,我举个简单的例子。
Cristian Agudelo 的补充答案,你需要复制对的状态然后做你想做的事:
Matter.Events.on(engine, "collisionStart", function(e)
{
var pairs = e.pairs.slice(); // copy
...
}
为了在 Matter js 中成功处理碰撞,请尝试从事件对象访问每一对返回的数组。
Events.on(engine, 'collisionStart', (event) => {
event.pairs.forEach((collision) => {
console.log(collision);
});
});