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

圆形碰撞组件:

多边形碰撞组件:

| 属性 | 作用 |
|---|---|
| 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中的属性
矩形碰撞组件:

圆形碰撞组件:

多边形碰撞组件:

| 属性 | 解释 |
|---|---|
| world.aabb | 代表碰撞组件的aabb框,即碰撞产生时,碰撞组件的矩形框,是一个Rect |
| world.preAabb | 代表碰撞前上一帧的aabb框 |
| world.matrix | 代表碰撞框的世界矩阵 |
| world.position | 代表碰撞时碰撞框的位置坐标(圆形碰撞组件特有) |
| world.radius | 代表碰撞时碰撞框的半径(圆形碰撞组件特有) |
| world.points | 代表碰撞时碰撞框的所有顶点坐标(矩形和多边形碰撞组件特有) |
Cocos Creator提供了一套内置的简单碰撞检测系统,通过添加矩形、圆形和多边形碰撞组件来实现碰撞检测。当碰撞发生时,系统会通过回调函数通知开发者,包括碰撞开始、持续和结束的回调。这在游戏场景中,如子弹击中敌人等,非常实用。
1356

被折叠的 条评论
为什么被折叠?



