休闲游戏踩一踩开发教程
本篇文章教大家怎么用小游戏可视化工具制作一个休闲游戏。
游戏示例地址:踩一踩
线上完整版体验二维码:
休闲游戏踩一踩介绍
休闲游戏是在微信小游戏中最丰富的品类,游戏规则简单易上手
本示例是一个休闲消除的游戏,通过连续踩击消灭敌人来获取连击和得分,如果主角两侧或者头部被敌人碰到会被击杀,攒怪保持连击达到高分
游戏截图:
接下来我们跟着制作思路解读这个示例游戏
1.制定自己的游戏策划:
休闲游戏的类型有很多,在开始制作游戏之前,建议先整理准备好自己的游戏策划,确定自己的核心玩法
例如本示例的核心玩法就来自超级马里奥踩怪物,通过踩扁怪物获得得分,在此基础上拓展更多的游戏内容
2.搭建场景
新建一个竖屏游戏,进来时是空白项目,我们需要添加一些素材到场景
我们需要的主要素材有【主角/敌人/地板】,还有其他UI素材【开始/暂停/继续/排行榜/首页/分享/左右按键】等按钮
目前示例所用的素材都能在素材库里找到,添加时可以在左上角进行搜索,选择全部主题,然后输入你要搜索的内容,也可以直接浏览查找
文本素材是最常用的素材,可以多添加几个备用
我们可以先选择一个符合自己主题的背景,例如示例中的星空背景,主角是坐在飞船上的太空人,敌人是眼球怪物,这些示例素材是风格不完整的,我们建议开发者自己使用风格统一的素材,可以参考最上方的完整版踩一踩
在我们进行场景摆放时,我们可以把不显示在游戏中的元素临时放在游戏两侧,因为我们竖屏游戏都是按照宽度适配的,所以两侧外的精灵不会在游戏时显示
布局:
大部分游戏都需要适配不同的机型,尤其是UI部分,目前提供来【相对场景布局】这个属性可以简单帮助开发者进行UI适配,以适配iPhone X和iPhone 8等不同机型的显示
如果不设置【相对场景布局】,那么精灵就是默认居中布局的,相对与场景的中心点进行布局,最常用的是按照顶部布局和按照底部布局
我们规划游戏总共有4个部分,一个是游戏主逻辑区域,还有顶部UI,底部UI,中间UI
例如标题和得分,我们希望一直处于顶部,我们就将他们打组,并设置相对于顶部布局
还有左右按键区域,我们希望用户是一直在手机的下半部分进行操作而不会随着不同屏幕尺寸变化,就打组并设置相对于底部布局
以及游戏区域,我们希望平台是在不同屏幕下都是完好的不会露馅,那么我们就把游戏区域也设置为相对于底部布局
暂停提示和开始,我们希望居中显示,就不另外设置相对布局了
3.角色控制
本游戏是以操作单个角色通过自动跳跃和控制左右移动来进行的,最关键的角色控制积木都可以在示例中的【游戏区域-主角】中找到,
主角移动思路:先给予主角设置私有变量【x轴速度】和【y轴速度】,主角每一帧通过速度去增加自己的x和y
自动跳跃思路:给予主角一个向上的速度,也就是y轴速度,该速度每一帧都会衰减,衰减为负数时主角就会开始下落,当主角触碰到地板时,再给予一个向上的速度,主角就会向上弹开移动
可以尝试按照如下图添加积木,在游戏开始时角色便会向上跳起并落下,碰到地板后又弹起
左右控制思路:通过发送左右操作通知,当主角接收到通知时,改变主角的【x轴速度】,当【x轴速度】为负时,主角向左移动,为正时向右移动
为了左右移动有一个加速的过程,我们通知主角左右时不直接改变【x轴速度】,而是通过慢慢增加或者减少的方式,并且在触发另一侧移动的操作时给予【x轴速度】重置
为了左右移动有一个减速的过程,我们在主角的【帧循环】里加入x轴速度每一帧衰减10%,用户在不操作时即可停下来
由于游戏设计只有单个场景,当主角的x轴改变时,必然会跑出场景,我们必须在每一帧角色改变x轴之后,判断x轴的位置,如果超出屏幕范围,则立即移动到屏幕另一侧,角色即可无限循环地往一侧移动
我们之前在底部UI添加了左右按钮来通知角色移动,但是往往这样的按钮区域是不够的,本示例选择通过判断手指在屏幕上按下时判断x轴来通知,这样操作的选区就会更大,具体积木在【底部】这个容器中
4.创建敌人
示例游戏中创建敌人的逻辑在背景层,怪物数量和怪物创建速度都会随着游戏得分而增加难度
新建一个全局变量【怪物数量】,每次克隆敌人时都会增加一个怪物,当怪物被消灭时就会减少,在创建时检查怪物数量是否达到当前峰值才进行创建
敌人在与主角进行碰撞时,会判断主角是在怪物的上方还是下方,这里也是本游戏的主要关键逻辑,这里当怪物被踩中时,就会减少怪物数量并通知主角得分和弹跳
5.游戏状态维护和游戏暂停
变量是制作游戏过程中非常重要的一部分,可以通过变量保存一些临时的状态,还有在循环时进行序列的递增等。
这边建议在制作游戏过程中都加一个叫作【游戏状态】的变量,通过识别【游戏状态】的变化,针对游戏按钮和角色等进行不同的变化操作,尤其是类似踩一踩这种只有单场景的游戏
游戏暂停:
由于目前暂时还不支持暂停恢复事件,我们需要通过游戏状态来维护其他角色的事件要不要进行执行
踩一踩游戏状态:0-主界面 1-游戏进行中 2-游戏暂停 3-主角死亡 4-游戏结束
使用【等待条件】积木,当我们进行帧循环时,部分控制角色移动或者敌人移动的事件必须经过【等待是否在游戏进行中】才能执行
游戏结束:
还有一个非常重要的积木【停止当前精灵的其他事件】,当我们收到游戏结束之类的通知时,我们需要打断其他角色的操作,让画面停下来,这样才不会影响后续的逻辑以及带来不必要的触发事件
同样的,还有【删除此克隆体】也是一个非常重要的积木,我们的精灵在游戏运行前都是单个图层实例,但实际使用过程中会经常产生很多克隆体来制造怪物或者子弹, 我们必须在游戏结束时删除销毁这些克隆体,删除克隆体的同时也会删除对应的积木事件,合理的删除克隆体会保持游戏逻辑正常以及不会出现精灵过多产生卡顿
6.得分动画
精美的游戏往往在于一些细节,对一些场景精灵加上一些过渡动画,会让游戏看起来更精致
如果我们的游戏得分不想要非常的死板,我们可以给予得分一点过渡动画,例如得了10分,我们不是直接设置得分+10,而是慢慢的+1+1
具体做法:创建2个得分,一个游戏真实得分,一个展示得分,当玩家得分时,将游戏真实得分增加后,通过通知来修改显示得分,显示得分循环增加自己与真实得分的差值之间的10%,从而做到缓慢增加的效果
游戏除了总得分以外还有击杀得分,添加一个文本命名为得分,并调整到合适的样式,我们后续就通过克隆该得分精灵来弹出击杀得分动画
当玩家得分时,克隆一个得分精灵,并在得分精灵的当克隆体启动时,添加对应的事件
首先要移动到创建者位置,并调整Y值,让得分在怪物消失的上方出现,然后再把自己的文案改为对应的得分数,并循环增加Y轴坐标减少透明度来模拟向上渐隐的效果,最后还要记得删除克隆体
7.完善游戏
优化思路:我们在碰撞时,点击时,触发成就时,都应该给予用户音效反馈,好的音效能为游戏增添色彩,让游戏变得更有趣
还有触发手机振动,甚至添加摄像机,让摄像机抖动,都是能为游戏增加趣味性的能力
注:【游戏帧循环】是我们通过【重复执行】积木,来控制每一帧当前精灵要做的事情,