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

时间:2015-02-23 00:06:30

标签: famo.us

我知道如何倾听碰撞:

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

但是如何让两个身体都参与其中?只有一个实体传递给这个函数。

3 个答案:

答案 0 :(得分:1)

我不是100%确定你想要达到的目标,但为了让两个(或更多)物理机构相互碰撞你应该apply()相同的碰撞对象

我喜欢将碰撞对象看作是管理者,它控制着谁与谁发生冲突。我已经知道一些游戏引擎可以用不同的方式来描绘,但碰撞只是事件或类型。

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

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

答案 1 :(得分:1)

我认为您正在寻找的答案可能已经存在。好消息是你已经做到了正确的事情:)看看Famo.us source code(第122行),碰撞类会发出pre / collision / post事件以及collisionData个对象。包含碰撞的源体和目标体。

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

famo.us access to collisionData upon collision event

希望这有帮助

答案 2 :(得分:0)

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

<强>答案:

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

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