如何做一个泡泡龙游戏(一)

简介: 嗨!大家好,我是小蚂蚁。从今天开始,我将会用几篇文章讲一下如何制作一个泡泡龙游戏,泡泡龙是一个传统经典的消除游戏,也是一个经久不衰永不过时的游戏。这篇文章我们主要来了解一下如何设置泡泡龙游戏的初始布局。

嗨!大家好,我是小蚂蚁。从今天开始,我将会用几篇文章讲一下如何制作一个泡泡龙游戏,泡泡龙是一个传统经典的消除游戏,也是一个经久不衰永不过时的游戏。


这篇文章我们主要来了解一下如何设置泡泡龙游戏的初始布局。



如图,是一个泡泡龙游戏的布局,可以发现它跟其他的消除类游戏还是有一些不同之处的。在其他的消除游戏中,行和列通常都是规则的,例如 1010 游戏中 10 行 10 列的布局。但是在泡泡龙游戏中,不是规则的,比如说第 1 行有 5 列,第 2 行有 4 列,第 3 行 5 列,第 4 行 4 列.....


虽然,是不规则的,但还是有一定的规律的,就是 1,3,5 的奇数行比 2,4,6 的偶数行多出一列。


要创建一个泡泡龙游戏的布局,其实就是需要根据当前的行号列号去设置每个泡泡的位置,之前在消除游戏系列教程中已有讲过,这里我们就跳过一些琐碎的步骤,直接跳到推导结果。



如图,这里是一个重点的地方,即行间距如何计算,从排列图中可以看到,第二行的圆跟第一行的圆之间是有一定的交叉的,所以第二行和第一行的距离并不等于圆的直径。那行间距到底是什么呢?注意看图中标注出的那个直角三角形,第二行和第一行的间距其实就是这个直角三角形的较长的直角边的长度


还记得曾经学过的与直角三角形有关的三角函数吗?什么?早就还给老师了。没关系,可以去先查一下,我就是用到的时候现查的,没什么不好意思的。


这里我们其实已知的是斜边的长度,即一个圆的直径,另外也知道上方的角度是30度,计算长的直角边的长度,这里用到的是余弦函数,已知斜边的长度和角度,可以计算出直角边的长度。


接着,我们来看一下已知条件,以及最终的结果计算公式。



这里需要注意的是,在计算水平方向的 x 坐标时,需要根据当前所在的是奇数行还是偶数行使用不同的计算方式。


在掌握了理论基础之后,接下来只需要使用相应的逻辑来完成这个计算就好了。


首先,我们来布置一下场景。



非常的简单,只有背景,一个“泡泡”和一个“初始化泡泡”(我们把克隆泡泡的逻辑放在这上面)。


接着,创建一些全局变量,用于后续使用。



可以看到这里泡泡的直径,行数,列数,起点的位置x,y,都是已经的条件。


接着,来看一下“初始化泡泡”上的克隆泡泡的逻辑。



使用一个双重循环一行一行的克隆泡泡,这里需要注意的是奇数行偶数行的区别,偶数行创建的泡泡数量要比列数少一,这里我们使用了取余 2 的计算来判断是奇数行还是偶数行(什么?不知道什么是取余计算?快点儿去查一下)。


最后,来看一下“泡泡”上的逻辑积木。



就是根据我们上方的推导公式计算并设置泡泡的 x 坐标和 y 坐标。这里注意一下,奇数行偶数行的x坐标的计算公式有差异。


预览一下场景。



这样,我们就创建了一个 6 行 6 列的泡泡龙游戏初始化的布局了。


在所有的消除游戏里都存在这样一个过程,即正向推导逆向推导。上方我们讲过的这一系列过程就是正向推导,我们根据一个泡泡的行号列号推算出了它游戏界面上的位置(即游戏世界坐标系中的 x 和 y 坐标)。


接下来,我们来看一下逆向推导,即已知当前游戏世界坐标系中的一个点的 x 和 y 坐标,推算出当前点击的这个泡泡的行号列号



推算公式在这里了,主要有两点儿需要注意的地方,第一个是在计算列号时,奇数行偶数行的计算公式不同。另一个是用到了四舍五入,保证了只要这个坐标位置位于这个圆的区域之内,那么它就是位于这个圆上。

建议你在纸上把图画出来,然后对照着公式去带入理解,验证。每次涉及到计算时我都会使用这种方法,而且屡试不爽。

现在理论具备了,接下来我们就在游戏中实现一下这个逆向推导过程,我们实现一个这样的示例:任意点击某个泡泡,然后根据当前点击的位置,推算出当前点击的是哪个泡泡。


这是加在背景上的积木逻辑。



虽然看起来很长,但是其实很简单。就是根据当前手指在屏幕上点击位置的 x,y 坐标,推导出泡泡的行号列号,最后向所有的泡泡发送一个通知。


最后,再来看一下泡泡的完整积木逻辑。



在克隆泡泡时,我们使用两个局部变量(行号列号),记录当前泡泡的位置,然后在接收到“动一下”通知时,用这两个变量来判断当前点击的是否是自己,是的话就“弹出”一下。


最后,我们来预览一下。



点击哪个泡泡,这个泡泡就会动一下。注意,这里当我们点击一个泡泡时,整个过程是这样的:根据当前点击位置的 x,y 坐标,计算出当前点击的时哪一行哪一列的泡泡,然后给所有的泡泡发送了一个“动起来”的通知,接到通知后,行号列号都等于计算出的行号列号的那个泡泡,会自己动一下。


好了,今天的内容就到这里了,我们学习了一下泡泡游戏的初始布局如何设置,然后了解了正向推导逆向推导的过程。如果你看过我之前写的与消除游戏有关的教程,大概就能看出来,在所有的消除类型的游戏中,有些东西是相通的,例如初始的布局正向推导,逆向推导的过程,对于泡泡龙这个消除游戏来讲只不过是稍有差异而已。


理解这些东西最难的地方或许就是那几个数学计算公式,见过很多人一提到数学公式就头大。其实完全没有必要,这些数学计算其实并不复杂,最多不过初中的数学知识,而且即使你全忘光了也没什么关系,完全可以在用到的时候搜索一下某个公式是什么意思,就可以了。


真正让你头大的其实并不是这些数学知识有多难,而是因为你从未尝试过好好的坐下来,拿出一张纸,画出一个图,然后慢慢的分析和理解。


相信我,这并不是浪费时间,所有的消除类型的游戏中有一些东西是完全相通的,只要你深刻的理解并搞清楚一个,以后就会一通百通了。


有的时候一件时间把我们难倒并不是因为这件事情本身太难了,而是因为我们太懒了。

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

这里是我的游戏开发课程服务,不只是一门课,而是一套围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,目前已有 43 名学员,多位同学已经通过学习做出了自己的游戏,如果你是一位想学习做游戏的朋友,欢迎【点击这里】了解详情。

这是我做的几个简单好玩消除小游戏,闲暇之余希望能给你带来片刻的放松和愉悦。

精致1010

一个很精致的消除游戏。

小程序

精致点点连线

忙碌生活中的片刻放松。

小程序

水果方块1010

果汁四溅的经典消除游戏。

小程序

也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识内容,可以来围观。接受付费咨询,不闲聊,望见谅。

相关文章
|
7月前
|
算法
泡泡龙游戏开发实战教程(6):实现连锁消除
泡泡龙游戏开发实战教程(6):实现连锁消除
92 0
|
7月前
|
数据可视化 搜索推荐 开发工具
小蚂蚁的消除游戏系列教程
小蚂蚁的消除游戏系列教程
62 0
|
人工智能
多子棋游戏的玩法设计
多子棋游戏的玩法设计
|
小程序
如何做个泡泡龙游戏(四)
嗨!大家好,我是小蚂蚁。在上一节中,我们学习了泡泡的发射,移动,反弹和停靠。所有的这些都是以计算的方式来实现的,我们没有选择使用物理,碰撞检测这些方式,因为泡泡龙游戏需要一定的精准性,而通过在每一帧进行计算,可以保证游戏的精准。
119 0
|
小程序 流计算
如何做个泡泡龙游戏(三)
嗨!大家好,我是小蚂蚁。今天我们来继续了解在泡泡龙游戏中,泡泡是如何发射,移动,反弹和停靠的。 这一节里会涉及到比较多的数学运算,不过完全不用担心,试着找一张纸和一支笔,画一画,很容易理解的。
136 0
|
算法 小程序
如何做一个泡泡龙游戏(六)
嗨!大家好,我是小蚂蚁。 上一节中,我们学习了泡泡龙游戏中的查找算法,这个算法可以帮助我们找到所有相邻的相同颜色的泡泡,在查找完泡泡之后,再通过判断满足条件的泡泡的数量是否大于等于 3,来决定是否应该进行消除。
122 0
|
算法 小程序
如何做一个泡泡龙游戏(五)
嗨!大家好,我是小蚂蚁。我们今天来继续学习泡泡龙游戏中最核心的东西:查找匹配算法。 其实这也不算是什么新东西了,如果你有看过我的其它关于消除游戏的教程,应该会知道,消除游戏的查找算法就那么一个,不论何种类型的消除游戏,这个算法的核心是不变的,只不过会根据不同类型的消除稍作调整而已。所以,如果你之前对查找算法还不是很了解的话,那么就尝试跟随着这篇教程把它彻底搞懂吧!
122 0
|
小程序 索引
如何做一个泡泡龙游戏(二)
嗨!大家好,我是小蚂蚁。今天我们继续学习制作一个泡泡龙游戏。 绝大部分的泡泡龙游戏都是关卡制的,你玩过了一关,然后接着再玩下一关。每个关卡其实都是预先设计好的,闯关的过程就是游戏将一个一个设计好的关卡呈现给玩家的过程。这些关卡都是怎样设计的呢?游戏又是怎样将这些设计好的关卡呈现出来的呢?欢迎带着这两个疑问开启今天的阅读之旅。
150 0
|
定位技术 开发者
如何做一个俄罗斯方块游戏(一)
从今天开始,我将开启一个新的游戏,并且顺带着会写一个新的系列教程,这个游戏就是人人都知道的——俄罗斯方块。 我一直都在做消除类型的游戏,在所有消除类型的游戏里,俄罗斯方块可以称得上是“鼻祖”了,所以,不论怎样这个系列里都不能少的了它。
154 0
|
算法 索引 容器
如何做一个俄罗斯方块游戏(二)
嗨!大家好,我是小蚂蚁。今天我们继续学习如何做一个俄罗斯方块游戏。整个系列教程计划按照这个流程图开展,这也是我制作整个游戏的过程,今天我们就来看一下“随机生成形状”这个模块。想要实现随机的生成形状,首先必须要知道在俄罗斯方块中一共有多少种形状(也就是我们上一节中留下的第二个问题)。
191 0
下一篇
DataWorks