消除游戏中图标下落的原理和实现

简介: 嗨!大家好,我是小蚂蚁。在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下消除游戏中图标下落的原理以及实现,这个可以应用于所有的消除游戏中(纯物理消除游戏除外)。

嗨!大家好,我是小蚂蚁。

在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下消除游戏中图标下落的原理以及实现,这个可以应用于所有的消除游戏中(纯物理消除游戏除外)。

下落原理

如图,假设用线画出来的红色宝石是满足消除条件的,它们会被消除,产生空白位置。消除过后,看起来像下面这样。

我们来观察一下这些空白,在第一列中,有一个空白,将上方的黄色宝石和蓝色宝石同时向下移动一个位置,可以完成填充;第二列中,有连续的两个空白,将上方的黄色宝石和绿色宝石同时向下移动两个位置,可以完成填充;第三列中,有两个不连续的空白,需要将黄色的宝石向下移动一个位置,将绿色的宝石向下移动两个位置,才能完成填充。

在寻找方法的时候,通常我们首先会通过观察来寻找规律,一旦找到了规律,就能很容易找出解决方案。但是对于“宝石下落”来讲,貌似是没有明显的规律的,一列中有几个空白位置,这些空白位置是连续的还是不连续的,这些貌似都没有规律。

以空白位置为关注点的话,找不到明显的规律。那我们就试着转换一下角度,关注消除后剩余的宝石。

第一列有两个宝石,第二列两个宝石,第三列有两个宝石......貌似是有点儿规律了。忽略掉空白位置,我们从每一列的下方开始,向上寻找宝石,每找到一个宝石就为它设置一个编号,宝石的编号依次增加。

发现规律了吗?宝石的编号就是它要下落到的位置的行号。

这个下落的过程其实就是这样的:获取表格中的一列,然后从下向上依次检查每个格子,空白位置跳过,如果格子里有宝石,就为这个宝石设置一个编号,编号依次增加 1,这样检查完一列之后,下落宝石的目标位置就知道了。接着,像这样检查表格中的每一列,当所有的剩余宝石都编号完成后,再统一进行下落处理。

这个就是宝石下落的实现原理了。

下落实现

以下是使用微信小游戏制作工具的实现方式,其它游戏引擎的实现原理也都类似。

首先创建三个列表,一个用于为宝石设置编号,一个用于记录哪些宝石需要下落,一个用于记录下落宝石的下落目标位置。

接着,来看一下下落的积木逻辑。

这里有一点儿可能比较难理解,就是如何使用一个列表来记录宝石的编号。

如图,以第一列为例,从下向上依次查看每一个格子,第一个格子是空白位置,跳过。第二个格子有宝石,将第二个格子的宝石的索引加入到列表中(列表的第一个位置),接着第三个格子有宝石,将第三个格子的宝石的索引加入到列表中(列表的第二个位置)。检查完一列后,在最终的列表中,列表项的内容是要下落方块的索引,位于第几项,就是下落方块的目标位置行号。

最后,再来看一下宝石上的下落处理积木。

收到通知后,首先判断一下自己是否需要下落,如果需要的话,更新的自己的行号和索引,更新网格数据表格中的数据,最后将自己向下移动到新位置上。

以上就是消除游戏中图标下落的原理和方法了,基本上适用于所有需要进行下落处理的消除游戏,什么三消,点消,连线消都一样,又是一个万金油式的好方式。

在寻找解决方法时,我们首先关注的是空白位置,发现空白位置找不到规律后,我们转换了一下角度,关注剩余的宝石,最后找到了解决方案。这或许能给我们带来一点儿启发,在寻找解决方案的时候,如果一个方向行不通,就不妨换个方向,很可能在转换方向之后,问题就变得清晰明了容易解决了。

或者加入小蚂蚁的游戏开发课,免费使用所有模版。小蚂蚁的游戏开发课程服务升级优惠最后三天,现价 699,三天后恢复 999,绝对超值,想学习做游戏的同学不要错过了。【点击这里】了解课程服务详情。

我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的就对啦!

这里是小蚂蚁的小游戏系列,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!










也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取学习做游戏的原创教程资料。接受付费咨询,不闲聊,望见谅。

相关文章
|
5月前
|
图形学
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
78 1
|
5月前
|
前端开发 小程序 API
技术心得记录:小程序—九宫格心形拼图
技术心得记录:小程序—九宫格心形拼图
26 0
|
6月前
|
索引
消除游戏中图标下落的原理和实现
消除游戏中图标下落的原理和实现
44 1
|
6月前
|
开发工具 索引
点击一个消除游戏图标时,背后都发生了什么
点击一个消除游戏图标时,背后都发生了什么
64 1
|
6月前
|
存储 算法 Serverless
连线消除游戏的原理和实现
连线消除游戏的原理和实现
89 0
【Unity3D--自由观察模型】模型自动旋转+触屏旋转和缩放
展示3D模型,同时实现模型自动旋转和触屏旋转和缩放
368 0
|
索引
消除游戏中宝石下落的原理和实现
在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下宝石下落的方法以及实现。
164 0
如何做一个俄罗斯方块3:形状控制
今天,我们来继续学习和实现下一个模块:玩家控制形状。在俄罗斯方块游戏中,玩家可以对下落的形状进行控制,控制分为两种,一种是控制形状的移动(左,右,下),一种是控制形状的旋转(顺时针旋转 90 度)。
129 0
|
小程序
如何做一个俄罗斯方块6:形状停靠
在处理形状停靠之前,有一点儿东西需要了解,就是已经停靠的方块和正在下落的方块不是一种方块,如图,红色的表示的是已经停靠的方块,绿色的表示下落的绿色方块的作用是展示当前下落的形状,红色方块的作用是标识出哪些位置已经摆放了方块。
116 0
如何做一个俄罗斯方块5:形状碰撞检测(下)
其实,两侧的碰撞判断跟我们上一节讲过的向下移动的碰撞判断原理是一样的,向下碰撞检测的是每一个方块下方的位置是否有其它方块,那么向左/右碰撞检测的就是每个方块左/右侧的位置是否有其他的方块。
319 0