我知道如何倾听碰撞:
collision.on('collision', function(e){
//e is one element involved in my collision
});
但是如何让两个身体都参与其中?只有一个实体传递给这个函数。
答案 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)
注意:我将此标记为副本,主持人认为这是一个不同的问题,尽管您标记的答案指向正确回答的副本。
返回的target
和source
是您为创建碰撞而附加的Body
个对象。
collision.on('collision', function(e) {
var targetBody = e.target;
var sourceBody = e.source;
});