小伙伴们心心念念的倒水解谜游戏实战,终于来了...

166 阅读5分钟

我倒我倒我倒倒倒

引言

哈喽大家好,我是亿元程序员。

亿元Cocos小游戏实战合集

笔者的《亿元Cocos小游戏实战合集》,从更新的第一天开始,就有许多小伙伴问到,什么时候更新一期倒水解谜的游戏实战?

快更新,别逼我催你

其实笔者早有计划,再加上小伙伴们的强烈需求,这一期,小伙伴们心心念念的倒水解谜游戏实战,终于来了...

言归正传,本期带大家一起来看看,在Cocos游戏开发中,倒水解谜游戏的核心部分,并加入到我的《亿元Cocos小游戏实战合集》中去。

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

什么是倒水解谜游戏?

简单易上手,看了就想玩

可能有很多小伙伴还不知道这类游戏,简单介绍一下:

倒水解谜游戏是一类以 “倒水 / 液体转移” 为核心玩法的休闲益智游戏。

玩家需通过容器间的倾倒操作达成特定目标(如液体颜色统一、精确容量分配),核心考验逻辑推理与步骤规划能力。

通俗的理解,和我们在学校时,通过水杯倒来倒去得到指定毫升数的水相类似(瞎掰的)。

既然是倒水游戏,水是重要的一个游戏元素,那它是怎么实现的呢?

水的效果

关于水的效果,其实有比较多的实现方法,既可以通过美术妹子实现,也可以通过Shader实现,甚至还能用Graphics组件画!

美术妹子: “一边凉快去。”

既然上面的方法行不通,我们只能通过Shader来实现了,至于Graphics,小伙伴们可以自行挑战一下。

1. 资源准备

简单准备一张杯子形状的图片和对应杯子形状纯白Mask

铁粉友情助攻

简单拼一下UI

最喜欢拼UI了,没有之一

通过资源管理器通过右键->创建->传统无光照着色器(Effect)创建一个Shader

手把手

和上面一样创建一个材质,将对应的Effect改成我们自己创建的并且勾选USE_TEXTURE

脚把脚

然后把材质拖到我们杯子的MaskSprite上,实际要在代码中动态创建,不然会共用同一个材质。

演示用

2. 水的颜色

搜索sprite找到builtin-sprite,双击打开把内容复制到我们创建的Shader中去当做模板。

想要修改水的颜色,我们可以找到最下面的片段着色器,将color改成红色vec4(1,0,0,1);,分别对应RGBA

硬编码

效果如下:

火红的烧杯

3. 水的分层

想要实现水的分层,我们可以通过简单UV划分,下半部分为蓝色,上半部分为红色,实际项目可以通过实际水的高度去划分。

还是硬编码

效果如下:

自古红蓝出CP

4. 水的波纹

水倒下时,会在杯子中形成波纹,我们可以通过下面的公式来实现。

非必要情况下别记

测试Shader如下,当UV高于指定高度时,形成波纹。使用cc_time时,需要在片段开始时引入#include <cc-global>

依旧是硬编码

效果如下:

火辣辣的波纹

5. 水的倾斜

水的倾斜可以通过下面的函数进行。

AI一个接一个不吱声

效果如下:

还真有效果

相信通过上面的内容,大家都已经学会了如何在Shader中模拟水的效果。

那我们要怎么样在实际游戏中进行通过代码控制动态结合呢?

动态传值到Shader

想要通过代码动态传值到Shader,我们通常要通过以下几个步骤。

1.Properties

properties用于将Shader中定义的uniform进行别名映射。

这个映射可以是某个uniform的完整映射,也可以是具体某个分量的映射(使用target参数)。

代码示例如下,colorsheights可以传vec4数组,iResultvec2,其余是数值。

很简单的

2.uniform

uniformGLSL中的关键字,声明的变量表示全局统一变量:

  • 它的值在一次绘制调用中保持不变(对所有像素 / 顶点都相同)。

  • 可以从CPU端(游戏逻辑代码)直接赋值,GPU端(着色器)只读。

  • 常用于传递动态参数(如颜色、角度、纹理等)。

一一对应

3.setProperty

在TypeScript中可以使用Material类的setProperty方法进行设置,代码示例如下:

这应该是很熟悉了吧

4.使用

完成上述步骤后,可以直接使用,非常简单。

使用很简单

以上就是倒水解谜游戏的核心部分,其余简单的代码逻辑由于篇幅问题就不再赘述,可以通过源码查看。

相信小伙伴们学废之后,可以完成到下面的效果。

效果演示

结语

**那么问题来了,**倒水解谜类游戏已经过去了这么久,其变种依旧非常火爆。

小伙伴们知道为什么吗?

本文实战完整源码已集成到亿元Cocos小游戏实战合集(6/10),内含体验链接,有疑问笔者手把手讲解。


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

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

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

推荐文章:

亿元Cocos小游戏实战合集

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

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

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

如何在CocosCreator3.8中实现割绳子游戏效果

如何在CocosCreator3.8中实现动态切割模型?

Cocos游戏开发中的贴花效果