cocos creator 碰撞检测系统collider

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 代表碰撞时碰撞框的所有顶点坐标(矩形和多边形碰撞组件特有)
发布了43 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_26542493/article/details/90761517