俄罗斯方块谁不会做......啊?流沙版?

引言

哈喽大家好,我是亿元程序员,虽然是春节假期,但是有小伙伴还是非常卷:

大佬你好,我是刚入门的游戏开发新人,打算先做个简单的小游戏练练手。

就是前阵子比较火的俄罗斯方块,不知道合不合适?

俄罗斯方块? 这个游戏非常经典,而且做起来也挺好上手,应该不难,挺合适的。

随后小伙伴发来一张截图:

**啊?流沙版?**卷王果然卷王,一来就上强度。

言归正传 ,本期带大家一起来看看,在Cocos游戏开发中,开发流沙版俄罗斯方块,有哪些关键的点

本文源工程可在文末获取,小伙伴们自行前往。

什么是流沙版俄罗斯方块?

相信 小伙伴们都认识俄罗斯方块,它有7种不同形状的方块,控制它们旋转、移动和下落,直到填满一整行即可消除得分。

流沙版则是其变种版本:

它的方块落地会像沙子一样流动、散开,同色流沙横向连通左右边界即消除,策略性更强、更解压。

那么,实现流沙版有哪些关键的点?

1.双网格和统一坐标

和传统 的俄罗斯方块一样,方块下落的过程,采用的是"格子"坐标系,例如10*201020行 。

但是 方块落地之后,按照规则会化成比格子更小的"沙粒",于是我们需要再把每个格子分成10*10100份即100*200100200行。

基于以上双网格,我们在处理渲染、碰撞和锁块(固定到棋盘上)时,必须保持两套坐标系的统一,这是整个玩法的数学基础,否则会导致碰撞异常、落地错位等问题。

那在双网格的前提下如何判断发生碰撞?

2.碰撞与锁块

碰撞的检测需要拿当前方块的形状、当前方块的位置,将逐个格子进行计算检测,看格子范围内是否有沙子或者格子是否超出边界。

和人生一样,没有代码的文章是不完整的,核心的碰撞检测的代码如下:

锁块的意思就是当下落的方块落到地面或者其他方块上面时,会固定在网格上,这时候我们需要把移动的方块映射到网格上。

以上的内容最主要就是坐标的计算,通过计算得出映射到的格子即可,俄罗斯方块就可以通过这个原理实现。

那流沙版的效果要怎么实现?

3.沙粒物理

方块锁定之后,需要像沙子一样散落到地面,我们需要通过模拟实现沙粒的物理效果。

实现算法如下

  • 从下往上遍历行,每行随机列序,避免固定顺序带来的偏向。
  • 对每个沙粒:正下方空则直接下落;否则看左下、右下是否为空,若都空则随机选一侧,否则选唯一空的一侧,实现「可竖直或斜向下落」的沙粒感。

图解如下

图解太过抽象,我们可以看下代码:

核心差不多都抽象完了,下面实现一下消除。

4.消除规则

  • 内容:按颜色找连通块,只有「同色 + 四连通 + 从左边界连到右边界」的沙粒才会被消除;再配合做闪白再清空。
  • 解析:这是得分与清空的核心规则,和「满行消」完全不同:需要同色、横向贯通。规则设计决定了策略深度和难度曲线。

图解如下

从最左侧一列 开始,逐个颜色,通过4方向(可以扩展成8方向)进行查找,颜色一致则继续查找,直到最右侧。

最后再加个消除的效果即可完成,怎么都是棍子?

5.效果演示

结语

以上就是流沙版俄罗斯方块的关键点,不知道我说明白没有。

小伙伴们入门游戏行业做的第一款游戏都是什么?

本文实战完整源码 已集成到亿元Cocos小游戏实战合集(8/10),内含体验链接,即将上调价格。


我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。

实不相瞒,想要个爱心 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐文章:

亿元Cocos小游戏实战合集

最近很火的一个拼图游戏,老板让我用Cocos3.8做一个...

老板说拼图游戏太卷了,让我用Cocos做个3d版本的...

敢不敢挑战用Cocos3.8复刻曾经很火的割绳子游戏?

Cocos游戏如何接入安卓穿山甲广告变现?

你知道和不知道的微信小游戏常用API整理,赶紧收藏用起来~

Cocos游戏如何快速接入抖音小游戏广告变现?

相关推荐
小雨青年13 小时前
鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理
前端·华为·harmonyos
工边页字13 小时前
AI产品面试官超喜欢问:什么是 Embedding,它是怎么工作的 ?
前端·人工智能·后端
吃西瓜的年年13 小时前
前端面试题(vue)
前端·javascript·vue.js
wuhen_n14 小时前
结构化Prompt——让AI说“人话”
前端·vue.js·ai编程
前端小趴菜0514 小时前
vue3-signature实现电子签名
前端·javascript·vue.js
玉米Yvmi14 小时前
React自定义Hook实战指南:从入门到精通,让你的代码像乐高一样灵活
前端·react.js·面试
CharlieWang14 小时前
AI + Cloudflare = 你需要的全部
前端·敏捷开发·全栈
董员外14 小时前
从零实现 AI 编程助手:LangChain.js + ReAct 循环实战
前端·javascript·后端
bluceli14 小时前
JavaScript BigInt:处理大数值的终极解决方案
前端·javascript
不懂代码的切图仔14 小时前
小程序web-view嵌入h5扫码 html5-qrcode库使用方法
前端·微信