关于 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
希望对您有所帮助
注意:我将此标记为重复,版主认为这是一个不同的问题,尽管您将答案标记为指向正确回答的重复。
答案:
返回的 target
和 source
是您为创建碰撞而附加的 Body
对象。
collision.on('collision', function(e) {
var targetBody = e.target;
var sourceBody = e.source;
});
我知道如何监听碰撞:
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
希望对您有所帮助
注意:我将此标记为重复,版主认为这是一个不同的问题,尽管您将答案标记为指向正确回答的重复。
答案:
返回的 target
和 source
是您为创建碰撞而附加的 Body
对象。
collision.on('collision', function(e) {
var targetBody = e.target;
var sourceBody = e.source;
});