碰撞组件分为多边形碰撞,圆形碰撞,矩形碰撞。
修改偏移量:都可以在各自的 碰撞中心区域 点击鼠标左键拖拽来快速编辑碰撞组件的 偏移量
添加分组:分组添加后是不可以删除的,不过可以任意修改分组的名字
一个节点上的碰撞组件,无论如何都是不会相互进行碰撞检测的。
获取碰撞检测系统的API:manager =cc.director.getCollisionManager();默认碰撞检测系统是关闭的。需要通过manager.enabled = true;来开启
圆形碰撞组件的特有属性:radius:半径;position:位置坐标。
矩形和多边形的特有属性:points 点。
当碰撞产生的方法名:onCollisionEnter
当碰撞产生之后的方法名:onCollisionStay
当碰撞结束的方法名:onCollisionExit。
在开发过程中涉及到多个方向的碰撞。具体代码如下:
cc.Class({
extends: cc.Component,
properties: {
bg:cc.Node,
numX:0,
numY:0,
},
// use this for initialization
onLoad: function () {
//this.num = 1;
//this.numY = 2;
var collider = cc.director.getCollisionManager();
collider.enabled =true;
collider.enabledDebugDraw =true;
},
onCollisionEnter: function (other, self) {
cc.log("检测到碰撞");
//this.num = -1;
var world = self.world;
var aabb = world.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(offsetY)*2;
var point = cc.pAdd(cc.p(preAabb.x,preAabb.y),cc.pAdd(r - offsetX,r - offsetY));
point = this.node.parent.convertToNodeSpaceAR(point);
this.node.setPosition(point);
},
// called every frame, uncomment this function to activate update callback
update: function (dt) {
this.node.x += this.num;
this.node.y += this.numY;
/*if(this.node.x<cc.winSize){
this.num =-1;
}*/
},
});