Javascript Matter JS-event.pairs数组在冲突时为空

Javascript Matter JS-event.pairs数组在冲突时为空,javascript,matter.js,Javascript,Matter.js,我用它在画布上设置一些对象的动画。在动画中的一个点上,我的两个对象之间发生碰撞。我正在使用以下代码成功检测事件: Events.on(engine, 'collisionStart', function(event) { console.log(event) }); 我想确定的是哪两个物体在碰撞。当我输入console.log event.pairs时,会得到一个空数组。我原以为它会返回两个碰撞物体的数组。我哪里出错了?你真的没有错误。您必须在位置0上看到您的配对,库MatterJ

我用它在画布上设置一些对象的动画。在动画中的一个点上,我的两个对象之间发生碰撞。我正在使用以下代码成功检测事件:

Events.on(engine, 'collisionStart', function(event) {

    console.log(event)

});

我想确定的是哪两个物体在碰撞。当我输入console.log event.pairs时,会得到一个空数组。我原以为它会返回两个碰撞物体的数组。我哪里出错了?

你真的没有错误。您必须在位置0上看到您的配对,库MatterJ在从事件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);
});

,我正在展示一个简单的示例。

您确实没有错误。您必须在位置0上看到您的配对,库MatterJ在从事件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);
});

,我展示了一个简单的例子。

补充克里斯蒂安·阿奎德罗的答案,你需要复制成对的状态,然后做你想做的事情:

Matter.Events.on(engine, "collisionStart", function(e)
{
    var pairs = e.pairs.slice(); // copy
    ...
}

补充克里斯蒂安·阿奎德罗的答案,您需要复制成对的状态,然后执行您想要的操作:

Matter.Events.on(engine, "collisionStart", function(e)
{
    var pairs = e.pairs.slice(); // copy
    ...
}

为了成功处理Matter js中的冲突,请尝试从事件对象访问返回的每对数组

Events.on(引擎,'collisionStart',(事件)=>{
event.pairs.forEach((冲突)=>{
控制台日志(冲突);
});

});为了成功处理Matter js中的冲突,请尝试从事件对象访问返回的每对数组

Events.on(引擎,'collisionStart',(事件)=>{
event.pairs.forEach((冲突)=>{
控制台日志(冲突);
});
});