cocos creator 内置了简单的碰撞检测系统,会根据当前节点下添加的碰撞组件进行碰撞检测。它可以应用在很多场景,比如可以用来判断子弹是否碰撞到敌人。

碰撞组件

矩形碰撞组件:

cocos creator 碰撞检测系统collider_碰撞系统

圆形碰撞组件:

cocos creator 碰撞检测系统collider_collider_02

多边形碰撞组件:

cocos creator 碰撞检测系统collider_cocos creator_03

属性

作用

Editing

选中之后,可以在场景编辑器中对碰撞组件进行编辑

Tag

如果节点下挂有多个碰撞组件时,可以根据标签来区分各个碰撞组件

Offset

组件相对于所挂节点的偏移

Size

矩形碰撞组件的大小

Radius

圆形碰撞组件的半径

Points

多边形碰撞组件各个顶点的坐标

碰撞系统接口

cc.director.getCollisionManager().enabled = true; //开启碰撞检测,默认为关闭
cc.director.getCollisionManager().enabledDebugDraw = true; //开启碰撞检测范围的绘制
cc.director.getCollisionManager().enabledDrawBoundingBox = true; //开启碰撞组件的包围盒绘制

碰撞系统回调

当碰撞系统检测到有碰撞产生时,将会以回调的方式通知使用者,如果产生碰撞的碰撞组件依附的节点下挂的脚本中有实现以下函数,则会自动调用以下函数,

碰撞产生时调用:

onCollisionEnter: function(other,self){
//self代表当前节点的的碰撞组件,other代表和self产生碰撞的其他碰撞组件
var world = self.word; //碰撞组件在世界坐标系下的相关值都放在world这个属性里面
cc.log(world);
}

碰撞产生后,未结束前,每次碰撞计算后调用:

onCollisionStay: function(other,self){

}

碰撞结束后调用:

onCollisionExit: function(other,self){

}

world中的属性

矩形碰撞组件:

cocos creator 碰撞检测系统collider_碰撞系统_04

圆形碰撞组件:

cocos creator 碰撞检测系统collider_cocos creator_05

多边形碰撞组件:

cocos creator 碰撞检测系统collider_collider_06

属性

解释

world.aabb

代表碰撞组件的aabb框,即碰撞产生时,碰撞组件的矩形框,是一个Rect

world.preAabb

代表碰撞前上一帧的aabb框

world.matrix

代表碰撞框的世界矩阵

world.position

代表碰撞时碰撞框的位置坐标(圆形碰撞组件特有)

world.radius

代表碰撞时碰撞框的半径(圆形碰撞组件特有)

world.points

代表碰撞时碰撞框的所有顶点坐标(矩形和多边形碰撞组件特有)