如果使用的是默认的物理引擎box2d,在碰撞事件监听函数里可以从第3个参数获取到碰撞信息,如:
ColliderHandler(a:Collider, b:Collider, c:b2Contact)
可通过b2Contact.GetManifold()方法获取到碰撞点相对于碰撞物体的本地坐标,
还可通过b2Contact.GetWorldManifold()方法获取到碰撞点的全局坐标,
具体实现请参考box2d手册,可参考:http://www.ladeng6666.com/blog/?p=653
我实测GetWorldManifold时老报错,尝试以下方法也取到了碰撞点全局坐标,可供参考:
ColliderHandler(a:Collider, b:Collider, c:b2Contact): void{
let collider = c.m_fixtureB.collider;
let local = c.m_manifold.localNormal;
let point = {
x: collider.owner.x - collider.radius * local.x,
y: collider.owner.y - collider.radius * local.y
}
console.log([size=13]point[/size]);
}
其中b是CircleCollider,如果b是BoxCollider,代码修改如下:
let point = {
x: collider.owner.x - collider.width * 0.5 * local.x,
y: collider.owner.y - collider.height * 0.5 * local.y
}