你敢学我就敢教 | 14步学废拧螺丝游戏

拧螺丝游戏的关卡一般不是自动算法生成,因为不太有规律,图形太多,硬是要写代码来生成,可能不如手动。这个游戏之前讲过主要是用物理引擎来实现,可以看看之前的文章《关不住我吧》这种物理游戏的关键技术和源码解析。这篇文章拖得有点久了

image

这次把怎么制作一个完整的关卡过程来讲讲,之前讲过板子上的洞是通过算法来挖洞的,其实也可以不用算法来实现,简单粗暴一块一块组合起来,真是太机智了。

image

第1步、打开电脑,https://www.cocos.com/ 下载cocosdashboard

第2、第二步打开cocosdashboard,下载3.8.3引擎

第3、新建一个项目,取个响亮的名字:拧螺丝我最牛逼

第4、把老婆给我们准备好的素材导入引擎,没有老婆的话可以找女朋友要。
image

第5、准备制作钉子,拖入钉子图片到场景编辑器上

第6步、给钉子添加物理组件,点击 属性检查器添加组件 按钮,输入 Rigidbody2D 即可以添加 2D 刚体组件。设置属性如下图,更多属性介绍可以看

https://docs.cocos.com/creator/3.8/manual/zh/physics-2d/physics-2d-rigid-body.html

image

除了要添加2D刚体组件之外,还还添加碰撞体,碰撞体描述了刚体的轮廓。如上的cc.CircleCollider2D,半径设置为22像素。更多请看

https://docs.cocos.com/creator/3.8/manual/zh/physics-2d/physics-2d-collider.html

第7步、接下来要制作板子,把板子图片拖到图层上

计划给这个板子安装三个钉子,那先给它打三个孔,不然没地方拧螺丝钉,所以先要制作孔。

第8步、螺丝孔设计如下,两个图片素材,一个灰圆,一个白圆环,就非常的逼真了,命名为 hole
image

制作好后,将这个孔节点拖到资源管理器中,搞成预制体

image

第9步、给板子加孔,加上三个孔,拖三个hole预制体到板子图层上,效果就非常牛逼了
image

image

第10步、围绕给板子添加多个物理组件,空出三个孔,上图绿色边框的矩形,就是物理碰撞体的描边。这样做目的就是让板子能够挂在螺丝钉上,如果这三个孔都有螺丝钉,板子就掉不下去了。

image

同时要给板子添加物理组件,因为螺丝没了,它要掉下去

第11步、制作更多形状的板子,比如

花了半天,制作了很多几十块板子,这技术太精湛了。

image

第12步、有了这么多板子,那么就可以随意组合出你想要的任何样子了

那么就成了最后的关卡,所有的关卡都搞成预制体,这样就可以动态加载,其实这本质就是一个配置文件。

image

第13步、有了板子关卡,那么钉子在哪里?别慌,钉子要用代码来生成了。下载安装VSCode,百度输入 “vscode”,点击官网,点击下载,点击 windows,就下载好了,直接双击,下一步,下一步,下一步,下一步,安装,完成。

第14步、在cocos中新建一个脚本LevelManager

双击脚本,用vscode打开,纳尼?cocos不支持代码编辑??对的,就是不支持。

image

首先先把板子关卡渲染出来,根据关卡等级,获取对应的预制体。代码如下

可以给板子和螺丝钉定义一批颜色,那么设置下随着关卡越来越大,颜色也越来越多,让牛逼的玩家觉得自己很牛逼,彻底的沉醉在你开发的游戏里。

image

有了颜色,有了关卡,那么就可以给钉子设置一下颜色,获取钉子总数,因为钉子是三个一组,所以遍历一下。定义在每块板子上颜色要随机分布,这样就可以增加游戏的难度。

初始化钉子,实例化钉子的预制体,group_id是物理碰撞体组件的层级,意思就是让不同板子和钉子分层,不会互相干扰。

这样就完成了一个关卡的制作了。

image

逻辑的点击事件,和之前分享的花朵叠叠叠游戏是类似的我,7天开发一个《爱上叠叠叠》类小游戏的思考总结,就不再介绍了。代码的部分采用图片的方式,这样也可以避免大家复制粘贴,逼着大家自己写,何尝不是一种倒逼。

image

欢迎关注我的公众号【入门游戏开发】,获取更多游戏开发知识和游戏源码,手把手教你做游戏。

8赞

一个板子怎么多矩形,为啥不用多边形? :sweat_smile:

3赞

这很行哦。

小伙子骨骼精奇。手把手教我们打通任督二脉!

多边形性能太差 咋可能比得过矩形

要说单个的矩形跟多边形肯定是矩形性能好,但你看他一个板子最少5个矩形,多边形拉一个就行你说哪个性能更好一点 :rofl:

不会的 外面的矩形 在初步检测就已经排除了, 即便同时检测多个矩形,也要比单个多边形速度快得多, 因为简单几何的碰撞检测非常简单且迅速,而多边形要进入更深一步检测

没做过相关性能测试不做过多辩解,个人主观上认为一个多边形优于多个矩形。

不可能的这种凹多边形计算碰撞太复杂了,反而矩形的aabb盒性能是最高的

多边形性能就是差 矩形的数量多也比多边形好 没有别的说法

板子最好用多边形生成,因为实际项目中,可能会有几百上千个板子,不可能一个个摆box。
螺丝和板子的物理效果用关节,因为当一颗钉子的时候,板子有物理旋转。
关节动态生成也会比较符合策划的需求,因为螺丝的位置一般是策划来摆的。

关节效果真的更好,旋转更丝滑