Creator内置了物理系统,本游戏只简单的用到了物理系统里面的碰撞组件中的Collider 组件。
深入学习请前往:https://docs.cocos.com/creator/manual/zh/physics/collision/
给小鸟添加Collider 组件:
直接使用BoxCollider组件,Editing选项默认是没有勾选的,如果勾选上了,我们就可以看到小鸟的四周的有个绿色的框,我们可以通过鼠标拉取变化碰撞体的大小。这里我们直接用默认的大小就可以了,不需要勾选调整。
接下来给障碍物添加碰撞体:
给上下两个管子都加上碰撞组件,然后保存之后,双击Scene文件夹中的mian场景文件,然后再保存当前场景。
双击MainControl脚本文件,编辑代码:
在onLoad函数中添加上述代码,主要做了两件事:
1:开启碰撞检测(默认是关闭检测的),只有挂上了碰撞组件的节点才会在游戏中被检查碰撞。
2:开启Debug模式,这样我们可以看到节点的碰撞体形状以及大小等。
保存代码,运行,看效果
小鸟和障碍物四周都有白色的线,这就是碰撞体的形状。从图中可以看出来,碰撞体会跟着节点移动、旋转。
打开BirdControl.ts脚本添加如下代码:
onCollisionEnter函数是引擎默认的碰撞开始的回调函数,每个挂载了碰撞体的节点,在开始发生碰撞的时候都会触发这个函数。
上述代码,表示在小鸟发生碰撞之后,在控制台输出一个gameOver的输出。
如何打开浏览器的控制台?
游戏运行起来之后,控制小鸟撞向柱子,然后去看控制台输出。
看到控制台输出"gameOver",就说明BirdControl.ts中的onCollisionEnter函数在小鸟和柱子装上的时候已经被触发。
但是玩家不知道游戏结束了,除了我们开发者会去看控制台输出,其他人根本不会去看,所以我们需要在界面上面显示游戏结束,下节我们继续。