所有消除游戏背后都有一张看不见的网格

简介: 所有消除游戏背后都有一张看不见的网格

嗨!家好,我是小蚂蚁。

在正式开始讲具体类型的消除游戏之前,我们会先用几节讲一下所有消除游戏的共同特点。是的,所有的消除游戏都有着一些共性,了解了这些之后,你就会发现所有的消除游戏在你眼里都“差不多”。

试着看下面的 6 种不同类型的消除游戏的截图,找找它们的共同特点。

找到共同的特点了吗?没找到?别急着去向下看答案,花点儿时间再看一会儿,敏锐的观察力对于一个游戏开发者来讲很重要。

下面我们来揭晓答案,上图中的每个游戏都是按照固定的行列进行布局,有 7 行 7 列,有 10 行 10 列,有 20 行 10 列。这样的行列布局是不是特别的像一个网格(再看看左下角的 1010 游戏的网格)?这就是我们今天要讲的,所有消除游戏背后都有的那张看不见的“网格”。

严格来说现在有一类消除游戏是完全基于物理的,例如前段时间很火的【合成大西瓜】,这类消除游戏背后是不需要一张“网格”的,因为里面的图标位置是完全由物理设置的。

先理论

可以说网格状的布局是一个消除游戏的起点,在游戏开始之前,至少你要先把游戏布局设置好,之后所有的操作都是基于这个布局进行的。

假设,我们要制作一个消除游戏,它有着 6 行 6 列的布局,上方的这个 6x6 的网格,就是它背后的那张看不见的“网”。要实现这样的布局,我们应该从哪里着手呢?首先,我们需要先来了解一些简单的数学知识

如图,我们为这张网格增加了一个坐标系,水平方向上的 x 轴,和垂直方向上的 y 轴。坐标轴的中点(0,0)刚好是整张网格的中心点。到现在为止,我们有了一些信息了,我们现象出了一个游戏的网格布局(当然是想象出来的,因为你还没有做出来呢),然后为这张网格设定了一个坐标系,接着,我们要做的就是将所有的元素按照这个网格布局一个一个的摆放到上面。

元素指的是消除游戏中的一个图标,在这个系列教程中,我们把消除游戏中可操作的图标称作元素。

通常,元素的大小是会提前知道的,例如你要做的消除游戏图标的大小是 100x100,在进行接下来的计算之前,让我们先梳理一下当前已经知道的一些条件。

元素的边长 100,通常消除游戏中的图标都是正方形,所以这里我们只需要记录一个元素的边长行数 6 行列数 6 列

好了,接下来我们将使用这 3 个已知的数据,来计算出网格左下角起点的位置。

如图,根据已知的三个条件,我们可以计算出网格左下角第一个格子的中点的位置。

x0 = 0-(列数/2)*边长+边长/2y0 = 0-(行数/2)*边长+边长/2

计算公式可以对照着上图看一下,应该能够看懂,还是看不懂的话,那就自己在纸上画一画,数一数。

这里我们为什么要选择左下角的第一个格子的位置当作起点位置呢?因为我们将会从左向右,从下向上,一行一行的逐个设置每个元素的位置,直到所有的元素都被安放在了正确的位置为止。

你当然也可以选择把左上角当作起点,然后从上向下开始设置,你也可以把右下角当作起点,从右向左


元素的边长 100行数 6 行列数 6 列网格起点位置 (x0,y0)

根据这些已知数据,我们就能够做一些更厉害的事情了,那就是可以计算出网格中任何一个指定行号列号的格子的位置。

如图,我们为网格标注出了行号和列号,绿色的点代表网格中任意一个格子的位置(通过行号和列号我们可以标示出网格中任意一个格子的确切位置)。根据已知的条件,我们可以获得任意格子位置的计算公式:

xn = x0+(列号-1)*边长yn = y0+(行号-1)*边长

到此,所有的前提都已经具备了,下一步需要做的就是根据你所使用的编程语言或者游戏引擎,把所有的元素按照需要的网格布局挨个的放上去就可以了。

->计算起始点的位置x0,y0->循环(行数)次  ->循环(列数)次    ->创建元素    ->根据当前的行列,设置元素的位置xn,yn  ->列循环结束->行循环结束

这是一段实现流程的描述,根据上方我们已知和推导出的前提条件,只需要使用两个循环,就可以一行一行的逐个创建并设置元素了。

再实践

接着,我们来看一下网格布局在微信小游戏制作工具中的具体实现吧!

首先,准备一些变量,这些变量根据名字理解即可。

接下来看一下创建网格布局的积木逻辑。

很简单,就是上方理论部分我们讲过的两个计算公式的应用。

最后,预览一下场景,让我们来欣赏一下创建元素的过程吧!

我特意在每个元素创建之间插入了一点儿时间间隔,这样就能看到如图中的一行一行的,从左到右,从下到上的创建过程了。

网格布局是一个消除游戏的起点,有了这个起点之后,我们才能够继续做出一些更神奇的事情。

作为一个游戏的开发者,你应该具备一双可以透视游戏表象的眼睛,看到那张玩家所看不到的消除游戏背后的网。再回过头来看看最上方的那张包含了各种类型的消除游戏的图片,你看到它们各自背后的那张“网格”了吗?

相关文章
|
3月前
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
112 0
|
2月前
|
图形学 开发者
透视与正交之外的奇妙视界:深入解析Unity游戏开发中的相机与视角控制艺术,探索打造沉浸式玩家体验的奥秘与技巧
【8月更文挑战第31天】在Unity中,相机不仅是玩家观察游戏世界的窗口,更是塑造氛围和引导注意力的关键工具。通过灵活运用相机系统,开发者能大幅提升游戏的艺术表现力和沉浸感。本文将探讨如何实现多种相机控制,包括第三人称跟随和第一人称视角,并提供实用代码示例。
133 0
|
3月前
|
算法
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
|
4月前
|
图形学 开发者
【实战优化】U3D物理引擎碰撞检测精调秘籍:告别穿透与粘滞,重塑真实游戏体验
【7月更文第12天】在Unity3D游戏开发中,精准的碰撞检测是营造沉浸式游戏体验的关键。然而,开发者常面临游戏角色或物体间的碰撞反应不自然,如穿透、粘滞现象,这些问题不仅破坏了游戏的真实感,还严重影响了玩家的体验。本文将深入探讨U3D物理引擎中碰撞检测不准确的根源,并提出一系列行之有效的调优策略,辅以代码实例,帮助开发者打造流畅自然的物理互动。
253 1
|
5月前
全息近眼显示技术如何实现三维图像再现?
【6月更文挑战第26天】全息近眼显示技术如何实现三维图像再现?
45 4
|
5月前
|
传感器 存储 编解码
数码相机背后的像素秘密:静态与动态的真相
这篇文章探讨了数码摄影中“动态像素”和“静态像素”的概念。像素是图像质量的关键因素,而CCD或CMOS传感器负责将光信号转化为数字图像。RGB差值补偿算法用于恢复色彩,但牺牲了部分分辨率。所谓“动态像素”更多是营销术语,而非技术标准,它反映了拍照和录像时因硬件限制和处理需求不同而产生的差异。随着技术进步,硬件编码器的引入已显著提升视频处理能力,使得高清摄影和视频录制变得更加普遍。理解这些原理有助于消费者做出更明智的设备选择。
|
6月前
|
存储 算法 Serverless
连线消除游戏的原理和实现
连线消除游戏的原理和实现
90 0
|
算法 程序员
游戏中的常见概率设计分析
游戏中的常见概率设计分析
|
开发者
所有消除游戏背后都有一张看不见的网格
嗨!大家好,我是小蚂蚁。 在正式开始讲具体类型的消除游戏之前,我们会先用几节讲一下所有消除游戏的共同特点。是的,所有的消除游戏都有着一些共性,了解了这些之后,你就会发现所有的消除游戏在你眼里都“差不多”。 试着看下面的 6 种不同类型的消除游戏的截图,找找它们的共同特点。
121 0
|
开发者
所有消除游戏背后那张看不见的网格
观察一下上方的这一系列各种各样的消除游戏的图片,它们都有着这样的一个共同点,就是都是按照行列进行布局,有 7 行 7 列,有 10 行 10 列的。这样的行列布局是不是特别的像一个“网格”?这就是我们今天要讲的,所有消除游戏背后都有的那张看不见的“网格”。
110 0