关于 famo.us 中的碰撞事件:如何让身体参与进来?

on collision events in famo.us: How to get bodies involved?

我知道如何监听碰撞:

collision.on('collision', function(e){
    //e is one element involved in my collision
});

但是如何让两个机构都参与进来?只有一个 body 被传递给这个函数。

我不是 100% 确定您要实现的目标,但为了让两个(或更多)物理形体相互碰撞,您应该 apply() 相同的碰撞对象。

我喜欢将碰撞对象视为管理者,它控制谁与谁发生碰撞。我知道一些游戏引擎对此有不同的描述,碰撞纯粹是事件或类型。

我能给出的最简单的例子:

physics.attach(collision, myFirstFamousPhysicsBody);
physics.attach(collision, mySecondFamousPhysicsBody);

我想您正在寻找的答案可能已经在这里了。好消息是你已经做对了 :) 查看 Famo.us source code(第 122 行),Collision class 发出 pre/collision/post 事件以及 collisionData 包含碰撞源体和目标体的对象。

这是一个现有答案,它演示了如何在碰撞事件中访问此数据。

famo.us access to collisionData upon collision event

希望对您有所帮助

注意:我将此标记为重复,版主认为这是一个不同的问题,尽管您将答案标记为指向正确回答的重复。

答案:

返回的 targetsource 是您为创建碰撞而附加的 Body 对象。

collision.on('collision', function(e) {
  var targetBody = e.target;
  var sourceBody = e.source;
});