创建变量offsetX 和offsetY 计算偏移量
计算本次碰撞和上次碰撞的差值,从而判断出碰撞位置,最后计算出偏移量
如果不增加偏移量, 碰撞物体无法弹出碰撞体
onCollisionStay: function (other, self) {
this.node.stopAllActions ( )
// 碰撞系统会计算出碰撞组件在世界坐标系下的相关的值,并放到 world 这个属性里面
var world = self.world;
// 碰撞组件的 aabb 碰撞框
var aabb = world.aabb;
// 上一次计算的碰撞组件的 aabb 碰撞框
var preAabb = world.preAabb;
var r = world.radius;
var offsetX = aabb.x - preAabb.x
var offsetY = aabb.y - preAabb.y
if(offsetX != 0) offsetX = offsetX/Math.abs(offsetX) * 2
if(offsetY != 0) offsetY = offsetY/Math.abs(offsetX) * 2
var point = cc.pAdd(cc.p(preAabb.x,preAabb.y),cc.p(r - offsetX, r - offsetY))
var Nodepoint = this.node.parent.convertToNodeSpaceAR(point)
this.node.setPosition(Nodepoint)
//--------------------------------------------------------------
// 碰撞框的世界矩阵
var t = world.transform;
// 以下属性为圆形碰撞组件特有属性
var p = world.position;
// 以下属性为 矩形 和 多边形 碰撞组件特有属性
var ps = world.points;
},