俄罗斯方块游戏开发系列教程6:形状停靠
  nYrzcJimKxjR 2023年11月02日 57 0

本文首发于我的微信公众号【小蚂蚁教你做游戏】,欢迎关注,学习更多游戏开发原创教程。

嗨!大家好,我是小蚂蚁。今天我们继续来看下一个流程:形状停靠。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发教程

什么是形状停靠呢?就是当一个形状碰撞到任何一个已有的方块或者碰撞到下边界时,它就应该被停放在那里。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_02

在处理形状停靠之前,有一点儿东西需要了解,就是已经停靠的方块和正在下落的方块不是一种方块,如图,红色的表示的是已经停靠的方块,绿色的表示下落的方块。

绿色方块的作用是展示当前下落的形状,红色方块的作用是标识出哪些位置已经摆放了方块。

整个停靠的过程是这样的:当形状发生碰撞后,我们在当前形状对应的方块位置上创建一个新的方块,创建完新的方块之后,再将当前的这个形状移除。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_03

如果你看了之前的教程,对于数据抽象和表格的遍历有了一定的了解,那么这里就很容易了。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发教程_04

当形状发生碰撞后,首先计算出当前形状的的“计算点”在整个数据表格中的行号列号,然后从“计算点”所在的行列号开始,依次遍历当前状态数据表格中的每一项,如果当前数据为 1 ,就在这个位置处创建一个新的方块,直到当前状态的数据表格遍历完成为止。最后,再将这个形状删除。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_05

其中还涉及到行列号和位置的换算,公式在上面,就不再解释了。这个换算将表面上的游戏世界和背后的看不见数据表格连接起来,其实真正的计算和逻辑处理都是以背后的数据表格为基础的,背后的工作完成之后,再将得到的结果展现到游戏的界面上。

接下来,我们就来看一下形状停靠的逻辑实现。由于形状只在下方发生碰撞时才进行停靠,所以,我们只需要处理向下移动的逻辑即可。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_06

方块填充的函数。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_07

创建一个新的“填充方块”用于填充,为了区分两种方块,这里我将填充方块设置为绿色。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发教程_08

再来看一下“填充方块”的积木逻辑。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发教程_09

逻辑很简单,根据行号和列号设置自己在游戏世界中的位置,然后再在整个数据表格中自己对应的位置处设置为 1,表示当前的这个位置已经有方块填充了。

最后,我们来预览一下。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发_10

一个形状停靠之后,在它的各个方块的位置上创建了新的绿色填充方块,填充完成后,原有的白色形状被删除了,这个就是“形状停靠”的过程了。

你是否疑惑为什么这里要用两种方块呢?在形状的停靠过程中使用同一个方块不行吗?为什么要把原来的删除掉,再去创建新的方块呢?

之所以这么做是要把不同方块的职责划分清楚。构成形状的方块不需要任何的逻辑,它只是用于拼凑出当前的形状。而填充的方块需要处理后续的很多事情,例如消除处理,下落处理等。所以,我们使用两种方块,一种方块没有逻辑,只用于表现,一种方块包含逻辑,用于后续的各种处理。这样每种方块只需要专心的处理自己的职责即可,无需了解其它的事情。


我是会做游戏也会教你做游戏的小蚂蚁,欢迎关注微信公众号【小蚂蚁教你做游戏】,领取全网最全的微信小游戏开发原创教程资料,每天学点儿游戏开发知识。

俄罗斯方块游戏开发系列教程6:形状停靠_游戏开发教程_11

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

nYrzcJimKxjR