Collision 碰撞检测
2D碰撞组件
cocos中提供3种2D碰撞检测组件:
- Box Collider 方形盒检测器
- Circle Collider 圆形检测器
- Polygon Collider 多边形检测器
检测器属性:
- Threshold 快速生成碰撞边界
- Editing 开启可编辑
- Tag 用于标记碰撞体类型
- Offset 碰撞体偏移
- Points 碰撞边界多边形顶点
碰撞回调函数
添加碰撞检测的组件,会多出3个碰撞回调函数:
- onCollisionEnter(other, self) 碰撞发生时触发
- onCollisionStay(other, self) 碰撞持续时触发
- onCollisionExit(other, self) 碰撞结束时触发
回调函数的2个参数:
- other 碰撞到的另一个物体:cc.Collider
- self 碰撞者自己:cc.Collider
其它API
要想让碰撞检测生效,必须执行下面代码,表示碰撞管理器启用
1 | cc.director.getCollisionManager().enabled = true; |
- CollisionManager.enabledDebugDraw
- 是否绘制碰撞边界线
- CollisionManager.enabledDrawBoundingBox
- 是否绘制碰撞组件包围盒
碰撞检测实例
这里涉及到子弹Prefab的制作,
制作好子弹的预设体之后,
在发射子弹的主体Player的类中,添加新的可赋值属性:
1 | Prefab) (cc. |
监听全局的键盘事件,
当空格被点击时,发送子弹:
- cc.instantiate 创建预设体
1 | const bullet = cc.instantiate(this.bulletPre) |
为Enemy对象添加碰撞回调:
1 | onCollisionEnter(other: cc.Collider, self: cc.Collider){ |
需要判断Player和收集目标的碰撞:
1 | /* 碰撞发生时触发 */ |