《Gem Hunter》是 Unity 的全新官方示例项目,展示了如何在 Unity 2022 LTS 使用通用渲染管线 (URP)打造抢眼的光效和视效,让 2D 益智/三消游戏在竞争中脱颖而出。
下载示例项目及其说明文档。准备潜入清澈湛蓝的海水中探寻财富吧,因为那里到处都是色彩鲜艳的珠宝和海洋生物。了解如何设置2D精灵及光照来增加深度,应用Sprite Custom Lit着色器来赋予微光,并且创造眩光和波纹特效。
为 Unity 创作者提供最近发布的优质 URP 示例项目
Unity 的 URP 示例项目
继《URP 3D 示例项目》和《Happy Harvest》之后,示例项目系列迎来了《Gem Hunter Match》,该示例项目由 Unity 的多个团队制作,展示了 Unity 2022 LTS版本中 URP 的很多功能,适用于 3D 和 2D 多平台项目。
这款跨平台三消益智游戏的可玩部片段可在 Unity 资源商店和 Unity Samples 中获取。你可以在《Gem Hunter Match》中使用自己的资源或自定义游戏玩法,或者把《Gem Hunter Match》中提供的精灵、着色器、特效、音频、纹理和脚本用到自己的项目中。
拥有多彩元素的简易游戏循环
《Gem Hunter Match》中的游戏循环
气泡、珊瑚、警惕的美人鱼组成了《Gem Hunter Match》游戏背景。游戏板上分布着珍珠、粉钻、红海星宝石、蓝鱼、金贝壳和绿海龟等海底珍宝元素,共有三个可玩关卡。匹配三个或更多元素可清除并获得增益道具金币。增益道具可以帮助到目标,但是失败就会失去一颗心。木箱和绳子是障碍物;匹配木箱旁边或绳子下面的三个元素可消除障碍物。
《Gem Hunter Match》游戏玩法示例
项目包含了简易的游戏循环和可复用的物品栏。主要部分如下:
主场景:此画面列出了所有可玩关卡,均引用自 Data 文件夹中名为 LevelList 的 ScriptableObject。
关卡场景:这里设置了具体的游戏玩法。玩家需要清除关卡目标区域列出的元素。
在 Data/BonusItems 文件夹中,可以找到增益道具以及引用的预制件,这些预制件包含了相关参数,例如触发生成奖励的组合形状(如果多个部分具有相同的组合形状,则会随机选择一个进行生成)。你还可以从顶部菜单创建自己的增益道具,路径为 Assets > Create > 2D Match。
关卡结束/ 商店:在通关失败或成功后可进入商店;给自己购买增益道具、心或其他货币。
商店中的所有道具均位于 Data/ShopItems 文件夹中(你也可以自行添加,路径为 Assets > Create > 2D Match。商店中的道具包括:
金币:匹配三个或更多道具即可赚取金币,然后将金币用作软货币。
心或命:这些加速器可以让玩家有机会重玩失败的关卡。如果玩家在三消游戏中耗尽此等加速器,往往需要等待一段冷却期,然后才能补充生命值。
星星:每过一关就可以收集星星;在实际的三消游戏中,星星往往是是元游戏(Metagame,指游戏主要玩法之外,玩家的其他目标或活动)的一部分、装饰元素,或用于推进剧情。
在 2D 精灵上使用逐对象光照进行创意控制
2D 益智/三消游戏之所以受到欢迎,是因为这类游戏可爱又多彩,玩法轻松有趣、简单不挑人,随时随地可玩。
虽然这类游戏可能还有精良的美工,但摄像机是静态的、游戏玩法重复,而且在很多情况下光照和阴影是预烘焙的,因此这类游戏并不以尖端的光照和视觉特效而闻名。然而,你可使用多种方法添加闪光和微光,从而增加游戏的趣味性。
《Gem Hunter Match》使用了Sprite Custom Lit Shader。这是一种用来制作视觉特效的技术。此着色器取代了场景光照,让我们可以修改 2D 光源纹理信息,并控制各个元素上的光照。因而可以给精灵赋予创意照明,比如产生熠熠生辉的特效,让元素显得流光溢彩。
光源位置数据已迁移至着色器,不必在场景中放置实际光源对象,这也有助于保持场景的整洁。此着色器中封装的逐对象光照可以很好地进行隔离和大规模编辑,并在可以批处理时提高性能。
法线遮罩和遮罩贴图
因为光照和阴影信息被存储在着色器中,精灵中只有颜色信息。2D 光照系统使用法线贴图来计算每个像素的方向,确保根据其位置接收不同强度的光照。遮罩贴图(Mask map)则由可以影响特定RGB通道的光源使用。
《Gem Hunter Match》关卡场景中的Lights 预制件包含用于网格的 2D 光源。这些光源会影响默认的 Sprite Lit 着色器,并应用于接收光源的排序层(Sorting Layer)中包含的网格元素。
以下图像展示了精灵的创建步骤,以及 Sprite Custom Lit 着色器在这个过程中的作用。
精灵准备:游戏中的不同光源使用精灵信息来制作动态 2D 光源系统
眩光特效让宝石闪耀
在《Gem Hunter Match》中,“虚构的”光源位置由 LightRotator GameObject 表示,在经过动画处理后,让宝石产生了闪闪发光的特效。我们对游戏中的珍宝元素应用了 TileShader Shader Graph,其中包含 2D 光照贴图的修改和使用 Dot Product 节点制作的高光。
在 Shader Graph 中使用 Dot Product 节点为示例项目中的宝石创造特效
如果你希望在 2D 项目中自定义光照,那么Dot Product 节点可能非常实用。Dot Product 将测量两个向量的相近程度。在本示例项目中,我们对比了 LightDirection 位置和法线贴图中每个像素表面的方向。采样的黑白图像可以用于为精灵添加光照,并且在 Runtime 对所有使用同一着色器的元素实时更新数值。
用于制作冲击波特效的摄像机排序层纹理
Radial Warp 着色器使用了URP 2D Camera Sorting Layer Texture(摄像机排序层纹理)设置。这项实用功能允许访问 URP 2D 渲染器中生成到指定排序层的图形数据,然后将其用于 Shader Graph 以应用特效。在《Happy Harvest》示例项目中,摄像机排序层纹理用于创建水折射特效,在《Dragon Crashers》中,它被用于制作烟雾扭曲效果。在本示例项目中,我们用它来实现一种模拟冲击波的扭曲效果,在消消乐时更添视觉吸引力。这种特效会让玩家对游戏的印象更加深刻。
我们希望你能下载《Gem Hunter Match》,亲自体验并尝试自定义,在自己的项目中应用它的图形技术。让你的 2D 休闲游戏大放异彩。
Unity 官方微信
第一时间了解Unity引擎动向,学习进阶开发技能
每一个“点赞”、“在看”,都是我们前进的动力