在Cocos Creator游戏开发过程中,经常有需要检测两个物体是否发生碰撞的情况,诸如:子弹是否击中敌人,玩家是否撞到障碍物,是否拾取到道具等等。下面我们就通过一个案例来演示Cocos Creator中的碰撞组件的使用。
一、UI设计首先我们编辑案例场景如下,设置四个星星,其中右下角的星星为默认分组default,其它三个星星设置分组为COLLIDER。勾选COLLIDER和COLLIDER的碰撞的分组配对。
二、碰撞检测实现由于所有的节点都是一个矩形,所以,我们首先让相邻的星星都旋转起来,然后在旋转的过程中,会有碰撞和离开的情况发生。之后再来处理碰撞回调。
1.让星星旋转起来新建StarRotate.js,然后同时选中前面三个星星,给其添加此自定义组件。
然后左侧星星设置旋转速度为30,右侧星星设置旋转速度为-30,如下图所示:
2.添加碰撞组件由于碰撞引擎处理的是碰撞组件的碰撞。所以,需要给所有星星节点添加碰撞组件。
3.碰撞检测处理新建ColliderListener.js,给所有星星组件添加此自定义组件。
运行结果如下,当旋转到两个物体相互接触的时候调用onCollisionEnter方法,碰撞的两个组件节点变成红色,将离开的时候调用onCollisionExit,碰撞脱离的两节点变成白色。而属于不同分组COLLIDER和default的两个星星即使有接触也不会进行碰撞处理。
三、碰撞组件使用小结1、Cocos Creator游戏引擎中碰撞引擎默认是关闭的,需要程序员自己根据实际情况选择是否开启。
1. ` // 开启碰撞检测、开启调试模式(绘制碰撞器形状)`
2. ` cc.director.getCollisionManager().enabled = true;`
3. ` cc.director.getCollisionManager().enabledDebugDraw = true;`
2、碰撞引擎只对勾选了分组配对的组上的节点进行判断,且只对具有碰撞组件的节点进行碰撞处理。
3、另外需要注意的一点是,即使开启了碰撞引擎,添加了碰撞组件,但是没有书写碰撞回调方法,也不会有任何效果。所以,如果注释掉ColliderListener中的三个碰撞回调方法,就不会有任何效果。
具体API可以参考官网链接:https://docs.cocos.com/creator/api/zh/classes/CollisionManager.html?h=collisionmanager
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved