嗨!大家好,我是小蚂蚁。
在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下消除游戏中图标下落的原理以及实现,这个可以应用于所有的消除游戏中(纯物理消除游戏除外)。
下落原理
如图,假设用线画出来的红色宝石是满足消除条件的,它们会被消除,产生空白位置。消除过后,看起来像下面这样。
我们来观察一下这些空白,在第一列中,有一个空白,将上方的黄色宝石和蓝色宝石同时向下移动一个位置,可以完成填充;第二列中,有连续的两个空白,将上方的黄色宝石和绿色宝石同时向下移动两个位置,可以完成填充;第三列中,有两个不连续的空白,需要将黄色的宝石向下移动一个位置,将绿色的宝石向下移动两个位置,才能完成填充。
在寻找方法的时候,通常我们首先会通过观察来寻找规律,一旦找到了规律,就能很容易找出解决方案。但是对于“宝石下落”来讲,貌似是没有明显的规律的,一列中有几个空白位置,这些空白位置是连续的还是不连续的,这些貌似都没有规律。
以空白位置为关注点的话,找不到明显的规律。那我们就试着转换一下角度,关注消除后剩余的宝石。
第一列有两个宝石,第二列两个宝石,第三列有两个宝石......貌似是有点儿规律了。忽略掉空白位置,我们从每一列的下方开始,向上寻找宝石,每找到一个宝石就为它设置一个编号,宝石的编号依次增加。
发现规律了吗?宝石的编号就是它要下落到的位置的行号。
这个下落的过程其实就是这样的:获取表格中的一列,然后从下向上依次检查每个格子,空白位置跳过,如果格子里有宝石,就为这个宝石设置一个编号,编号依次增加 1,这样检查完一列之后,下落宝石的目标位置就知道了。接着,像这样检查表格中的每一列,当所有的剩余宝石都编号完成后,再统一进行下落处理。
这个就是宝石下落的实现原理了。
下落实现
以下是使用微信小游戏制作工具的实现方式,其它游戏引擎的实现原理也都类似。
首先创建三个列表,一个用于为宝石设置编号,一个用于记录哪些宝石需要下落,一个用于记录下落宝石的下落目标位置。
接着,来看一下下落的积木逻辑。
这里有一点儿可能比较难理解,就是如何使用一个列表来记录宝石的编号。
如图,以第一列为例,从下向上依次查看每一个格子,第一个格子是空白位置,跳过。第二个格子有宝石,将第二个格子的宝石的索引加入到列表中(列表的第一个位置),接着第三个格子有宝石,将第三个格子的宝石的索引加入到列表中(列表的第二个位置)。检查完一列后,在最终的列表中,列表项的内容是要下落方块的索引,位于第几项,就是下落方块的目标位置行号。
最后,再来看一下宝石上的下落处理积木。
收到通知后,首先判断一下自己是否需要下落,如果需要的话,更新的自己的行号和索引,更新网格数据表格中的数据,最后将自己向下移动到新位置上。
以上就是消除游戏中图标下落的原理和方法了,基本上适用于所有需要进行下落处理的消除游戏,什么三消,点消,连线消都一样,又是一个万金油式的好方式。
在寻找解决方法时,我们首先关注的是空白位置,发现空白位置找不到规律后,我们转换了一下角度,关注剩余的宝石,最后找到了解决方案。这或许能给我们带来一点儿启发,在寻找解决方案的时候,如果一个方向行不通,就不妨换个方向,很可能在转换方向之后,问题就变得清晰明了容易解决了。
或者加入小蚂蚁的游戏开发课,免费使用所有模版。小蚂蚁的游戏开发课程服务升级优惠最后三天,现价 699,三天后恢复 999,绝对超值,想学习做游戏的同学不要错过了。【点击这里】了解课程服务详情。
我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的就对啦!
这里是小蚂蚁的小游戏系列,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!
也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取学习做游戏的原创教程资料。接受付费咨询,不闲聊,望见谅。