在碰撞事件famo.us访问collisionData(famo.us access to coll

2019-11-03 13:19发布

在famo.us源我看到两件事情是在碰撞时发出的:即“碰撞”的字符串,和被叫collisionData变量,如下所示:(物理/约束/ Collision.js,线112-122):

if (this._eventOutput) {
                var collisionData = {
                    target  : target,
                    source  : source,
                    overlap : overlap,
                    normal  : n
                };

                this._eventOutput.emit('preCollision', collisionData);
                this._eventOutput.emit('collision', collisionData);
            }

我知道如何使用“碰撞”的字符串,如下所示:

collision.on('collision', function() {
  // do stuff
};

但是,这将是非常有益知道目标和源的碰撞事件。 如何获得访问collisionData? collision.collisionData返回“未定义”。

Answer 1:

获得从返回事件对象的对象:

collision.on('collision', function(data) {
  // do stuff
  console.log('data', data);
  console.log('target', data.target);
  console.log('source', data.source);
});

targetsource返回你连接到创建碰撞体的物体的粒子。

示例代码这里 (不完全测试)

只是做类似下面的跟踪谁撞到一起的唯一ID。

// assuming your body is called body and body1 respectively
//   also, this is just partial code.
var uniqueID = 0;
body.particle = new Circle({
  radius: 50,
  position: [x, y, 0]
});
body1.particle = new Circle({
  radius: 50,
  position: [x, y, 0]
});

body.particle.uniqueID = 'body' + uniqueID;
uniqueID += 1;
body1.particle.uniqueID = 'body' + uniqueID;
collision.on('collision', function(data) {
  // do stuff
  console.log('target id', data.target.uniqueID);
  console.log('source id', data.source.uniqueID);
});


文章来源: famo.us access to collisionData upon collision event