Unity学习笔记---2D光照渲染、美术、动画

本文详细介绍了Unity中的2D渲染管线、资源设置、2D光照、动画制作以及性能优化等方面,包括如何选择渲染管线、设置精灵分辨率、创建和使用2D光源、制作2D骨骼动画等,并提到了一些关键的优化技巧和后期处理效果。
摘要由CSDN通过智能技术生成

Unity 提供三个渲染管线 :一个内置渲染管线和两个可编程渲染管线 (SRP)。两个 SRP 为通用渲染管线 (URP) 和高清渲染管线 (HDRP)。URP 适用于所有平台,而 HDRP 则 旨在用于针对高端 PC 和主机的游戏。

项目设置

注意 :如果在 Unity 2021 或更高版本中启动一个新项目,则称为 2D (URP) 的 2D模板附带已设置的 2D 渲染器,因此无需完成以下步骤。

  1. Unity Hub 和 URP 安装2D项目模板
  2. 从 Package Manager 中选择 2D包,通过 Package Manager 安装 URP
  3. 新建 URP 资源  ---【在 Project 窗口中单击右键(或在工具栏中单击 Assets 菜单),然后选择 Assets > Create > Rendering > Universal Render Pipeline > Pipeline Asset (Forward Renderer)。

    渲染器资源与 URP 资源同时创建,您需要将其替换为 2D 渲染器资源。若要替换它,请在 Project 窗口中单击右键或单击 Assets 菜单,然后选择 Assets > Create > Rendering > Universal Render Pipeline > 2D Renderer。

  4. 分配 2D 渲染器 --- 将 2D 渲染器资源分配到 Renderer List

游戏美术

前期需要考虑的技术问题

模型:

-游戏的摄像机角度和透视是什么?

-相对于目标平台的屏幕大小,玩家角色的大小是多少?

-美术风格是否适合目标平台、主题和受众?例如,这种风格是否会吸引休闲游戏玩家、年轻玩家、策略粉丝等?

-美术风格如何与整体图形方法相符?

-如果游戏玩法需要快速的反应时间,让玩家角色、敌人和飞弹等元素在背景中一目了然是个好主意。

-移动游戏应该更明亮、对比度更高,以便在阳光下和更小的屏幕上可见。

-GUI 元素的大小、位置和可见性如何?

动画:

将使用骨骼动画为哪些元素设置动画?哪些元素将具有逐帧动画或使用着色器设置动画?

环境 :您是否会使用瓦片地图或精灵形状创建它?或者,您是否要在场景中手动放置平台精灵?您可以绘制模型来模仿这些工具的外观,以便可以在游戏中直接使用模型。

排序:

通过对模型图层进行分组来规划您的精灵排序,与您预计在 Unity 中进行排序的方式类似。此过程可能需要一些时间,但这样将避免在后续的制作中必须对可能数千个精灵进行排序。

光照:

您的精灵会使用绘制到其上的光照和阴影来照亮,还是使用实时光照来照亮?一个技巧是在没有光照的情况下绘制图像,然后在图像编辑软件中的不同图层上添加阴影和光源。这样,您就可以在以后的制作中随时更改光照的外观(如有必要)。

选择透视

平行投影

使用这些类型的投影,在 3D 世界平行的线在投影到 2D 平面上时也是平行的。此外,它们没有消失点,这意味着无论对象与摄像机的距离如何,对象的大小都相同。这一点在游戏中很有用,因为您不必缩放资源或以不同大小绘制它们。

在正交投影中,光线与图像平面垂直(正交),而在倾斜投影中,光线与投影平面以斜角相交产生投影图像。

正交投影有两个子类别 :主投影和轴测投影

 主投影

只需要绘制两个维度即可。游戏将使用两种类型的主投影之一 :侧视图或自上而下。

侧视图用于平台游戏、射击游戏和“银河恶魔城”风格的游戏中。在屏幕上绘制 3D世界的 X 轴和 Y 轴,而 Z 轴则被省略。游戏美术师往往会缩小背景中可见的远处对象,以提供深度感。

《马里奥》《刺猬索尼克》

自上而下的透视中,摄像机向下瞄准,垂直于地面。真正自上而下的游戏并不多见,这种透视经常与 /4 或等距投影相混淆。自上而下很适合射击游戏,但这并不是观看人类角色的最有趣视图。

《贪吃蛇》《坦克大战》

轴测投影

等距投影 :此投影是三个选项中较雅致的一种。三个坐标轴中任意两个之间的夹角为

120 度,X 线和 Y 线与水平轴各成 30 度角。

大多数称为等距的老游戏实际上是二维的。等距投影角度在像素艺术中看起来不是很好,因此没有太多游戏会采用真正的等距投影。

二维投影 :此透视使用两个角度相同的投影,其中 X 线和 Y 线的角度为 26.6 度。二维投影一直是较常见的选项,因为它在较旧的硬件上看起来更好,其中线条形成了清晰的 2:1 像素比例。

您可以使用此投影来显示更多或更少的上表面。

三度投影 :使用此投影,每个角度都不同。

四分之三 :投影这种投影经常与自上而下投影相混淆。在 3/4 投影中,摄像机在X轴上略微倾斜,以显示对象和角色正面的部分视图。

《口袋妖怪》

倾斜投影 :在倾斜投影中,光线与投影平面以斜角相交产生投影图像。较常见的倾斜投影变体是斜二轴测投影,通常用于清版游戏中。

《拳皇》

透视投影

这些投影在 2D 游戏中不太常见,但它们仍然适用于冒险游戏或具有静态背景的游戏。

如何为项目选择正确的透视?游戏玩法是否决定了美术风格,或反之亦然?在大多数情况下,开发者会根据游戏创意明确时所做的假设来选择美术风格和摄像机投影。这将是一个基于许多标准的决策,包括 :

----游戏玩法与类型

----目标平台

----场景可读性 - 例如,选择更高的摄像机角度以更好地观察角色和敌方战队

----预算 - 自上而下和等距游戏可能需要更多角色动画,以实现多角度和更高级的编码

----目标受众

----还可以将游戏建立在美术风格的基础上。例如,想象一款基于古埃及象形文字的游戏。在这种情况下,美术主题将决定一些摄像机和游戏玩法规则,即它必须是具有主透视的侧视图游戏。

如果您是 2D 开发新手或您的预算紧张,最好选择主投影 :自上而下或侧视图。它们更容易绘制和编码。只有两个维度可见,因此您无需太担心,且在这些视图中也更容易设置精灵排序。

请记住,最后,您的投影不需要 100% 精确并严格遵守所有实际规则(就像在 3D 空间中的情况一样)。最重要的是,它需要看起来不错并增强游戏玩法。

资源的分辨率

场景中的 2D 精灵与屏幕分辨率并没有紧密联系。Unity 中的精灵是绘制在网格上的纹理,很容易缩放。2D 游戏中的摄像机也可缩放,可以根据需要放大和缩小。

在 Unity 中创建 2D 内容需要采用与传统光栅图形软件( 例如 Adobe Photoshop、Affinity Photo by Serif、GIMP 或 Krita)不同的方法。在这些传统应用中,您可以使用具有设定分辨率的特定文档画布大小,并且所有图层均绑定到此分辨率。每个图层的像素大小与文档像素大小之间的比例为 1:1。然而,在 Unity 中,屏幕和资源分辨率相互独立,因此需要计算精灵的分辨率。您可以从目标平台开始,因为硬件的功能决定了您可以设置的最大分辨率。

对于移动设备,分辨率范围很广,但安全的假设是 1920x1080,因为这样您能够以低端到高端的设备为目标。

若要以全高清或 4K 屏幕为目标,请记住以下几个最佳实践(这些规则不适用于像素艺术):

----以最高分辨率绘制适合目标设备的艺术作品

----坚持对所有资源均采用一种分辨率,并在必要时缩小分辨率以支持较低端设备

不要纵向扩展光栅艺术图,因为它会导致像素化和模糊,从而降低视觉质量。始终从受支持的最高分辨率开始,然后在从图形应用程序导出时缩小艺术图的分辨率。您可以在使用 DCC 工具与 Unity 工作部分详细了解如何执行此操作,或者也可以尝试使用变体精灵图集进行缩放。

一个有用的技巧是将您的艺术图画成您需要的两倍大小,然后在导出到 Unity 时将其缩放到 50%。这种技术可使您的精灵看起来光滑而清晰,并且画笔线条看起来不会那么颤抖。不要太过在意细节,因为艺术图会纵向缩小。这是一个隐藏手绘艺术图造成小瑕疵的好技巧。当然,如果您想要您的游戏呈现手绘视觉风格,那就不要尝试这种方法了。

选择分辨率后,请在 Game 视图中测试艺术图的外观,请在正视图视角而不是透视图中计算精灵的分辨率。将它们的比例设置为1,1,1,将 Z 深度设置为 0,以便轻松实现可视化效果。

使用 Unity 网格和单位来保持精灵的位置和外观一致,并计算摄像机缩放和对象大小。

Unity 单元通过 Scene 视图中的网格进行可视化。假设 1 个 Unity 单位等于 1 米。首先设置您的基础大小,使其在游戏中保持一致。

从玩家角色的大小开始。将玩家角色的高度保持在 0.5 到 2 个单位之间。如果您使用的是瓦片地图,请将瓦片大小设置为 1 个单位。

与游戏中的其他视觉元素相比,角色和对象过小或过大都会导致奇怪的变换数量和物理计算问题。

在主场景中确定基础对象(玩家角色、敌人、可收集对象、关卡危险)的大小后,通过设置正交摄像机的大小属性来选择缩放级别。然后,检查摄像机大小值。如果将此值乘以 2,将获得以 Unity 单位计算的摄像机垂直大小。

如果摄像机的大小为 5 个单位,则其高度等于 10 个单位。例如,如果目标是 4K分辨率,则屏幕(或摄像机)的高度为 2160 像素。通过简单的计算,可以确定艺术图所需的每单位像素 (PPU) 量 :

2160 : 10 = 216

最大垂直分辨率 :(正交摄像机大小*2)= 精灵 PPU

因此,游戏中的每个精灵都需要大约 216 PPU 才能在原生 4K 分辨率下拥有不错的外观。

这是一个简单的示例。如果您想让摄像机放大和缩小,您就需要考虑这一点。如果在正视图视角中将最大缩放百分比设置为 3,则 PPU 需要为 360 (2160 :(3 *2))。

如果使用骨骼动画,请将精灵的分辨率设置为略高于建议的 PPU。这样做非常有必要,因为骨架的网格会被旋转、拉伸和扭曲,有时甚至会达到极端,这会使结果看起来很糟糕。当摄像机放大时,请使用较低的分辨率。

提示 :设置游戏的 PPU 值时,请在图形软件中应用网格以供参考。这在使用瓦片地图时非常有用,因为您将拥有以像素为单位的瓦片大小,并且可以吸附到网格。(在 Affinity Photo 中设置网格以匹配游戏的 PPU)

瓦片地图:Tilemap---要创建、修改和选择要绘制到瓦片地图上的瓦片,请使用 Tile Palette(菜单:-Window > 2D > Tile Palette-)及其工具。

精灵图集

若要构建新的精灵图集,请在 Project 窗口中单击右键(或选择工具栏中的 Assets菜单),然后选择 Create > 2D > Sprite Atlas。务必为其指定一个描述性名称。然后, 在 Objects for Packing 选项中,选择要包含在内的精灵,或是包含整个文件夹。默认情况下,应选中 Incl de in B ild 选项。您现在有了您的第一个精灵图集。

变体精灵图集

使用变体精灵图集可以针对特定设备纵向缩小精灵。如上所述创建一个主精灵图集,然后在 Inspector 中将其 Type 更改为 Variant。

变体精灵图集本身不包含精灵。它依赖于主精灵图集,您可以在 Master Atlas 字段中选择精灵图集。通过在 Scale Val e 字段中选择一个介于 0.1 到 1 之间的值来缩放此图集及其所有精灵。

在同时包含主精灵图集和变体精灵图集的项目中,如果两者都选中 Include in Build 选项,则精灵共同使用的纹理可以来自任一精灵图集(请参阅 Unity 文档解决不同的精灵图集应用场景部分中的“应用场景 3”。

若要从变体图集而不是主图集自动加载精灵纹理,请仅为变体图集启用 Include in Build ,并为主图集禁用该选项。然后,版本会在运行时自动加载变体精灵图集而不是主图集。

在矢量应用中绘图

仍需要将基于矢量的艺术图作为 PNG 文件导出到 Unity。这与光栅或像素艺术图的导出工作流程相同。

(所谓DCC,就是Digital Content Creation的缩写,即数字内容创作。DCC的范围包括二维/三维、音频/视频编辑合成、动态/互动内容创作、图像编辑等。)

----从ps中导出(将图层导出并保存为单个文件):

File > Export > Export Layers To Files

----将 Photoshop PSD 文件导入 Unity

默认情况下,这会将 PSD 图层平展为一张图像。

这种方法对于背景图精灵非常好用。编辑并绘制图层,当您保存文件时,更改将立即在编辑器中显示。然后您将在 Unity 项目中直接拥有您的 PSD 源文件,并且该文件可以包含在源代码控制中。

关卡设计

白盒测试

白盒测试是 3D 关卡设计中的一个著名术语,它涉及放置纯白色立方体以快速测试关卡设计的想法。设计师进行白盒测试的原因是,在没有任何会分散注意力的细节的情况下绘制游戏流程的想法。

重点应该仅放在玩家将与之互动的事物上,例如地面、敌人、关卡危险和拾取物。所有这些内容都可以用较简单的形式制作,然后使用颜色编码,以便更容易地区分它们。

对基础精灵的白盒测试

从 Unity 中可用的默认 2D 资源开始,这些资源具有简单的几何形状。

右键单击 Project 窗口( 或单击工具栏中的 Assets 菜单), 然后选择 Assets > Create > 2D > Sprites。所有形状都带有预定义的碰撞形状,因此您只需将 Polygon Collider 2D 组件添加到精灵形状中,使其受到重力或碰撞的影响。

为了精确放置,在移动精灵时按住 Ctrl 将精灵吸附到网格。这将以 0.25 个单位的增量移动它们。

2D Sprite Shape

 2D Sprite Shape工具可让您创建路径并沿着它们平铺精灵。这些路径的工作方式类似于图形软件中使用的知名钢笔工具。它们是贝塞尔曲线,可以直接在场景中进行编辑,也可以选择关闭并填充平铺纹理。

瓦片地图

瓦片地图功能非常适合用于快速制作原型。通过瓦片地图,可使用小精灵创建游戏世界,这些小精灵称为瓦片,放置于网格上。您可以将游戏世界拆分为整个关卡中重复的砖块,而不是布局大图像。文档中了解有关包中可编程笔刷可编程瓦片的更多信息。

由于可以禁用屏幕上不可见的瓦片,瓦片地图可节省内存和 CPU 功率。使用笔刷工具可以高效地将瓦片绘制在网格上,并且还可以编写瓦片脚本以使用一些绘制规则。这些瓦片带有自动碰撞生成功能,支持高效测试和编辑。

正交或透视摄像机

对于大多数 2D 游戏来说,您需要将摄像机设置为正交模式。这是 2D 项目的默认选择,因为一维的线条是平行的,而您只能在二维中工作。正交模式适用于所有风格,例如像素艺术游戏、谜题、2D 等距、自上而下、平台游戏。

虽然 2D 游戏没有真正的深度,但是可以使用视差效果打造深度错觉。视差效果在摄像机移动时以不同的速度在背景和前景中滚动多个图层。其目的在于模仿人类的深度感知,其中更远的物体似乎比离得更近的物体移动得更慢。

在 2D 中,这通常通过脚本来完成,该脚本以摄像机移动速度百分比移动图层。这需要一些手动设置来调整每个视差图层的速度。

具有脚本化视差效果的正交模式需要您手动设置所有图层的滚动速度。如果图层的滚动速度不正确,深度效果就会中断,而且编辑视差图层需要额外的编码。

透视模式提供了立即可用的视差效果,顾名思义,透视摄像机使用的是透视视角。您无需使用脚本处理视差图层的滚动。而是将元素放置在 Z 轴上远离摄像机的位置,并根据元素与摄像机的相对位置将其纵向扩展以进行透视。

混合 2D 和 3D

在 2D 游戏的背景中引入 3D 资源,能在不影响游戏玩法的情况下为场景增加不错的深度。

2D 渲染使用排序图层和排序组定义渲染游戏元素的顺序。将 Sorting Group 组件添加到 3D 游戏对象,可轻松地将 3D 和 2D 游戏对象集成到同一个游戏中。您可以使用通用物理系统(2D 或 3D 物理系统,具体取决于适用于游戏的最佳实践),并通过 URP 中的摄像机堆叠功能混合 2D 和 3D 光照系统,让 2D 和 3D对象实现互相交互。

摄像机堆叠

通过摄像机堆叠功能,可对摄像机输出进行分层,并将其组合成一张最终图像。您可以使用摄像机堆叠组合 2D、3D 和 UI 对象。

场景中至少需要两个摄像机进行堆叠。选择一个摄像机作为您首先渲染图像的基础摄像机,且任何其他摄像机Render Type都需要设置为 Overlay。

现在,选择您想要摄像机渲染的游戏对象,并更改对象图层,使之与之前设置的图层相匹配。这样一来,对象将分为由不同摄像机渲染,例如 3D 背景和 2D 平台图层。

Cinemachine 用于 2D 游戏

例如将摄像机限制在关卡边界内、设置摄像机转换、噪声等等。

选定摄像机类型后,您需要根据游戏玩法进行设置。Unity 的 Cinemachine系统 提供了这种功能和更多其他功能,例如将摄像机限制在关卡边界内、设置摄像机转换、噪声等等。本节重点介绍适用于 2D 游戏的核心 Cinemachine 功能。

首先,从 Package Manager 安装 Cinemachine。选择版本 2.7.1 或更高版本。

Cinemachine 不会在场景中创建新的 Unity 摄像机。相反,将新的 Cinemachine 虚拟摄像机或 vcam 添加到场景中时,CinemachineBranin将与默认名称为 CM vcam的新游戏对象一起添加到主摄像机。

Cinemachine Brain 监控场景中所有活动的虚拟摄像机。使用关键帧为 vcam 创建动画,在摄像机之间混合或平滑过渡,或者创建二者的组合,以在过渡到另一台摄像机的同时为该摄像机创建动画。所有动画都将由 Cinemachine Brain 处理并应用于主摄像机,可将 Cinemachine Brain 视为驱动主摄像机的强大动画系统。

若要创建 2D 虚拟摄像机,请单击 Cinemachine > Create 2D Camera。这将 为 2D 环境创建虚拟摄像机设置。如果这是场景中的第一台虚拟摄像机,其还会将 Cinemachine Brain 组件添加到您的主摄像机。

Cinemachine2DConfiner 需要 2D 碰撞体(复合或多边形)作为 Bounding Shape 2D。创建一个空游戏对象,并添加 Composite Collider 2D 和 Box Collider 2D。系统将自动添加 RigidBody 2D ;将其 Body Type 设置为 Static。此外,选中 Box Collider 2D上的 Used by Composite 选项。现在,将此游戏对象拖到 CinemachineConfiner2D脚本的 Bo nding Shape 2D 字段中。不要忘记编辑 2D 盒型碰撞体的大小,确保其大于摄像机的大小。

绘制顺序

Unity 根据优先级顺序对渲染器进行排序,优先级取决于其类型和用途。您可以使用渲染队列指定渲染器的渲染顺序。一般来说,有两个主要队列 不透明队列透明队列2D 渲染器主要位于透明队列中,包括 Sprite RendererTilemap RendererSprite Shape Renderer 类型。

透明队列中的 2D 渲染器通常遵循优先级顺序。两个或多个对象占据同一空间时,Unity会检查此列表,并查看应在顶部绘制哪个对象。如果存在关联,且两个对象的值相同时,将评估列表中的下一个条件。优先级顺序如下 :

1. 排序图层和图层的顺序

2. 指定渲染队列

3. 与摄像机的距离

4. 排序组

5. 材质/着色器

两个对象的所有上述值都相同并且需要仲裁程序时,此过程必须选择要在顶部渲染的对象。这并非是理想解决方案,因此请确保使用排序图层和排序组设置不同的排序顺序

排序图层

可以通过打开 Project Settings,然后指定 Tags and Layers 选项编辑默认排序图层。

将先呈现列表中较高的图层,并显示在远离摄像机的位置。

----避免创建过多排序图层

2D 光源依靠排序图层,因此在设置排序图层结构时要考虑光照。事先了解您希望如何呈现游戏中的光源,以及哪些组会受到光源的影响。

例如,如果您正在制作等距游戏,并计划设计使用 2D 光源的火炬,那么火炬会影响整个环境还是仅影响墙壁?角色是否会受到影响,或是否在光源前绘制角色?您是否需要仅用于接收光源的对象的排序图层?在编辑排序图层时请牢记这类问题,并在 2D 光源部分了解有关规划光照的更多信息。

要警惕使用过多的排序图层,这可能会导致您忽略所有细节。需要进一步对渲染器进行排序时,请使用图层的顺序。您可以使用此功能轻松排序同一图层的对象。

----透明度排序模式

您可能想在游戏中使用假的 3D 视图,例如在等距、自上而下的游戏(带有一点角度)中使用轴测投影或倾斜投影,或者在战斗游戏中使用斜二轴测投影。如果是这样的话,您需要根据与摄像机的距离对渲染器进行自定义排序(上述排序优先级列表中的第 3 点----与摄像机的距离)。

选择自定义轴对对象进行排序。在自上而下的游戏或战斗游戏中,在 Y 轴上对对象进行排序,这样较高的角色就会在其他角色下方渲染,从而产生这些角色距离较远的错觉。若要编辑此选项,请找到设置 URP 时创建的 2D 渲染器资源,并将其 Transparency Sort Mode 选项更改为 Custom Axis,然后将其 Transparency Sort Axis 值设置为 0、1、0。

对 Y 轴上的精灵进行排序时,值(X:0,Y:1)1 会让 Unity 按照向下矢量(如 Vector2.down 中所示)进行排序。首先绘制顶部的精灵,然后绘制底部的精灵,使它们在前部可见。

排序组

即使您按照上述步骤在 Y 轴上排序,仍可能无法正确显示角色的身体部位外观。

如果身体部位在同一排序图层上,排序将无法识别哪些部位属于哪个角色。所幸,排序组是排序优先级列表中的第四项标准。排序组是一个组件,其将具有共同根的渲染器分组到一起以进行排序。同一排序组中的所有渲染器具有相同的排序图层、图层的顺序以及与摄像机的距离。

使用由几个精灵组成的角色或其他对象时,将此脚本置于其父对象(层级视图中的最高层)上,并像在任何其他 2D 渲染器上一样设置排序图层和图层的顺序。您可以在此 Unite Now 技术会议中查看示例。


优化技巧

场景包含许多精灵时,请考虑使用瓦片地图。这样您便可以用多个精灵渲染器(这些渲染器有一定开销)换一个瓦片地图渲染器。

将关卡碰撞体标记为 Static 以进行批处理。

将可能在场景中一起出现的精灵放在精灵图集中。

使用 Sprite Editor 中的 Custom Outline 选项简化精灵网格。

通过启用 Cache Geometry 选项(此选项在打开 Edit Spline 按钮时出现)来缓存精灵形状几何体。

2D动画

2D Animation 包支持将角色图稿直接从 Photoshop 导入 Unity

设计、导入和绑定

透视

使用等距或四分之三自上而下的透视时,您可以创建类似的视图,但摄像机应从顶部稍微倾斜以显示面部细节。在这个透视中,角色将面向多个方向进行绘制。根据您想要的结果和预算,您可以从三个常用选项中进行选择 :

4 个方向

6 个方向

8 个方向

无论您选择哪个选项,您都必须决定是否要翻转朝右或朝左的动画,以面对相反的方向。这种情况下,您需要分别绘制 :

3 个方向 :右、上、下

3 个方向 :右、右上、右下

5 个方向 :右、右上、上、右下、下

角色换蒙皮

2D Animation 包的另一个好处是多个角色可以共享相同的骨架和动画。一旦您设计、绑定和动画处理了一个基础角色,您就可以轻松替换其皮肤。

通过提前规划节省时间。绘制将共享相同骨架的所有角色概念,然后检查骨架是否适合所有角色。为此,请在单独的图层上绘制骨架,并将其覆盖到所有角色上。要牢记,所有角色的图层数量必须相同。

注意 :在 Unity 2021.1 和更新版本中,名为骨架共享的新功能可简化此过程。

性能

与逐帧方法相比,2D 骨骼动画需要更多的处理能力,后者本质上是精灵替换。一个有用的性能技巧是从 Package Manager 安装 Unity 的 Burst and Collections 包。这将提高动画精灵变形时的运行时性能。

例如,对于冒险游戏来说,屏幕上将出现两个或三个角色,此时您可以大胆处理角色细节。您将有机会制作额外的骨骼和图层,以及高级 IK,如移动眼睛、手指等。

但是,对于具有大型战斗和 10 个以上角色的移动 RPG 或射击游戏来说,其骨骼应更简洁。例如,每个肢体应由一块骨骼而不是由两块骨骼组成,或者应进行整个面部的精灵替换,而不是在不同的图层上移动眼睛。

设计游戏美术时,请注意提前规划需要的图层数量以及如何为角色创建动画,因为在后期制作中几乎无法更改这些元素。

 通用 2D 动画规则

----将角色绘制在中立位置,手臂和腿都要绘制成直线。如果身体部位是弯曲的,则在创建动画时可能会出现问题。

----使分辨率略高于游戏 PPU 建议的分辨率。虽然在静止状态下分辨率看起来还不错,但是旋转和拉伸图像会导致像素化。

----如果在游戏中大量使用 2D 光照并希望充分利用法线贴图,请不要在精灵上绘制光源和阴影。相反,请绘制一些非定向阴影。此技术称为环境光遮挡。精灵的显示效果会更好,但是要避免使用任何方向光(如阳光)。

----使用精灵替换功能替换的身体部位图层应相应地进行分组。例如,有嘴巴位置的所有图层都应放在图像编辑应用程序中名为“mo th”的组中。

将角色导入 Unity

导出过程只需要将文件保存为 PSB 格式。这种格式与 Photoshop 的 PSD 格式类似,但是 PSB 适用于更大的文件。如果您使用的是 Photoshop,请在 Save 对话框中选择此格式。如果您使用的是其他应用程序,只需将项目导出为 PSD 文件,并将文件扩展名更改为 PSB,然后再导入到 Unity。

导入到 Unity 的方法与导入其他资源的方法相同。将文件保存到 Assets 文件夹,或将其拖到 Project 窗口中。

选定导入的 PSB 文件后,将显示类似于精灵导入设置的选项,但具有 2D 动画和骨骼绑定的附加设置。

要设置的主要选项如下

Import Hidden :此选项从 PSB 文件导入所有图层,包括隐藏图层。

Mosaic :此设置仅在 Texture Type 设置为 Multiple 时可用。此选项根据导入的图层制作精灵,并将精灵放置在纹理图集中。如果要绑定角色,请启用此选项。

Character Rig :此选项将生成角色预制件,其图层层级视图和位置与 PSB 文件中的相同。必须启用此选项。

Use Layer Grouping :此选项将从 PSB 文件添加图层分组。启用此选项以对角色部位进行分组,例如精灵替换的部位。

设置选项后,单击 Apply。这样就完成了角色预制件的制作,现在可以将其拖到场景中。

构建角色

请单击 Inspector 中的 Sprite Editor 按钮以访问 Sprite Import Settings

从 Sprite Editor 窗口左上角的下拉菜单中选择 Skinning Editor

在此窗口中,您可以 :

创建并编辑骨骼

创建并编辑精灵几何体

编辑对精灵的骨骼影响

创建用于皮肤和精灵替换的类别和标签

创建骨架

选择 Create Bone 按钮并左键单击主窗口区域。第一次单击将创建骨骼中心,第二次单击将标记骨骼末端位置。此工具将骨骼链接并嵌套在一起。

如果要更改骨骼位置,请按住鼠标右键并左键单击要放置新骨骼的位置。若要控制哪个现有骨骼将是要创建之骨骼的父级,请使用鼠标左键选择现有骨骼,然后创建新骨骼。

使用 Edit Bone 按钮完善骨骼。Split Bone 按钮可将骨骼一分为二。此选项很适合用于制作肢体。如果您制作腿骨,并单击膝盖应该在的位置,骨骼会分为大腿和小腿。

精灵几何体

首先按 Auto Geometry 按钮。将打开一个小弹出窗口,您可以在此定义创建几何体的方式。

为保持几何体尽可能简单,将所有滑动条设置为 0 是不错的做法。启用 Weights 选项以自动将骨骼绑定到精灵。单击 Generate For All Visible 按钮,为所有精灵创建和设置骨骼权重。若要对单个精灵执行此操作,只需双击该精灵即可。这对于调整某些精灵的几何体很有帮助。

若要在生成的几何体之外进行操作,并完全控制多个顶点以及几何体的弯曲方式,需要手动编辑网格。请使用以下工具

Create Vertex :创建新顶点(或点),或移动或删除这些点

Create Edge :在两个现有点之间或通过单击鼠标左键创建新点来创建边缘 ;单击鼠标右键取消选择当前选定的点,并在其他顶点之间创建边缘

Edit Geometry :移动顶点

Split Edge :通过在中间创建顶点以分割边缘

使用尽可能少的顶点。顶点越少越有助于提高性能,因为需要根据骨骼的旋转来计算每个顶点位置。顶点越少也有助于更好地呈现网格弯曲效果,因为顶点越少越容易设置权重。此外,每个目标平台都有理想的游戏顶点数,因此优化几何体不失为一种好做法。

权重

单击 Bone Infl ence 按钮,然后选择一个精灵。

在小弹出窗口中,您可以设置哪些骨骼将影响选定的精灵。仅设置需要影响精灵的相关骨骼,并移除其余骨骼。

在这里,使用权重笔刷和权重滑动条设置权重。通过使用鼠标在顶点上绘制,权重笔刷可快速将选定骨骼的影响添加到顶点。权重滑动条更精确,可选择一个或多个点,然后使用滑动条确定每个骨骼的确切影响。笔刷可用于快速设置权重,滑动条可用于微调骨骼弯曲的区域,如肘部和膝盖。

提示 :在处理肘部和膝盖时,为获得最佳效果,可将内部和外部顶点与一条穿过两个骨骼相交处弯曲点中间的线对齐。这条线应以 45 度角穿过骨骼。这些顶点应该只受上部骨骼的影响。但是,每个角色的情况都不同,因此可以随意调整权重并进行自定义,以获得最佳效果。

2D Inverse Kinematics

在层级视图顶部的对象上添加一个 IK Manager 2D。此组件将负责管理角色上的所有 IK 解算器

单击 + 按钮将添加新的解算器。此解算器将计算骨骼的旋转以匹配目标变换。有三个解算器可使用 :

肢体 :用于腿和手臂的标准解算器,可以解算最多两节骨骼和特效器。

骨骼链 (CCD) - 循环坐标下降 :此解算器将随着算法运行次数的增多而变得更加精确,并适用于更长的骨骼链。

骨骼链 (FABRIK) - 向前或向后接近反向动力学 :与骨骼链 (CCD) 一样,此解决方案将随着算法运行次数的增多而变得更加精确。如果骨骼被实时调整至不同位置,此解决方案可以快速地进行相应调整。

精灵替换和皮肤

使用 Skinning Editor 可较快地为精灵分配类别和标签。按 Visibility 按钮,然后转到 Sprite 选项卡,您可以在此处找到包含所有精灵的列表。如果您在导出到 PSB 之前将用于替换的图层放进了单独的组中,则此时应对这些图层分组。此操作很重要,因为分组后的精灵将被添加到 Sprite Resolver 以进行精灵替换。

使用精灵替换来制作面部表情、眼睛和嘴的动画,制作口型同步的动画、变换手势等。精灵替换也支持替换帽子和盔甲等角色装备。

皮肤

以下是设置角色皮肤支持的工作流程 :

1. 完成基础角色 :绑定骨架,设置 IK 和精灵库。根据角色制作预制件。您可以在任何时候制作角色动画。

2. 转到基础角色的 Skinning Editor,单击工具栏上的 Copy 按钮。此操作将复制骨骼和网格以及其权重。

3. 创建此角色的预制件变体,即具有新外观的新角色。

4. 导出新角色的 PSB,然后打开其 Skinning Editor。

5. 单击工具栏上的 Paste 按钮,将步骤 2 中复制的内容粘贴到骨架中。确保在弹出窗口中选择 Bones 和 Mesh 选项,然后单击 Paste 按钮确认。

6. 修复几何体以与新精灵相符。仔细检查权重。

7. 按 Visibility 按钮,转到 Sprite 选项卡。选择列表中的所有精灵和组,右键单击它们, 然后选择两个选项 :Convert Layer to Category 和 Convert Group to Category。点击顶部的 Apply 按钮。

8. 转到步骤 3 中创建的预制件变体。转到 Sprite Library 组件并为新角色替换精灵库资源。

9. 若要新建角色,请按照步骤 2 到步骤 8 操作。

动画基础知识

若要创建首个动画,请转到 Window > Animation > Animation 以打开 Animation窗口。

优化技巧

安装 Burst 包以改进 2D Animation 性能。

制作骨架时,请避免使用过多的骨骼和精灵。

尽可能少地使用顶点,以简化骨架网格。

在动画器中打开剔除功能。当动画角色在屏幕外时,此选项将关闭以提高性能。

对于尺寸较小或数量较大的对象或角色(如背景中的鸟、飞虫或小型动物),请避免使用骨骼动画。建议您使用其他技巧,如逐帧动画或着色器。

2D光源

若要添加新的 2D 光源,请转到 GameObject > Light > 2D,然后选择光源类型。

2D 光源形状的五种类型

Freeform(自由形式的)

这种光源为多边形,可采用与精灵形状类似的方式进行编辑。此工具适用于高效地照亮一大片环境(如熔岩池)、模拟光源形状(如穿过天花板洞的神光)或对应投射光源的窗户的形状。

Sprite

这一形状允许将任何精灵用作光源的纹理。如果您需要一个其他光源类型无法实现的特定形状,则此形状非常好用。部分不错的纹理示例包括 :镜头光晕、炫光、灯光遮罩、光源形状投影(如迪斯科球形灯)或是将星星投影到墙上的婴儿灯。

Parametric(参数化的)

此类光源可以实现具有 n 个边的多边形效果。这是一种可在无机环境或程式化环境中使用的特定光源类型。在将来的 Unity 版本中,这些光源类型将作为 Freeform 光源选项中的默认形状。

Point/Spot

这一光源形状可实现圆形或扇形效果。此选项适用于聚光灯或使用火把、蜡烛、车灯、手电筒、体积光源等照亮特定点。

Global

全局光照没有形状,将照亮目标排序图层上的所有对象。每种混合样式(光源与精灵之间的交互方式)和每个排序图层只能使用一个全局光照。请率先使用全局光照,以添加基础环境光线。

在 Target Sorting Layers 下拉列表中选择将受影响的图层。

使用 2D 光源

为控制同一排序图层上光源的渲染顺序,请使用 Light Order 选项。

辅助纹理(精灵贴图)

使用 2D 光源时,法线贴图和遮罩贴图为可选项 ;但是如果您有足够的预算、时间和美术资源,它们可让游戏的视觉效果达到全新的高度。角色和环境将具有更多能够与光源互动的细节,使其外形更精致、更立体。

每项精灵资源都可以分配可选的辅助纹理。这些纹理可由材质使用。转到 Sprite Editor > Secondary Textures,以更改辅助纹理。默认情况下,您可以分配两种类型的纹理 :法线贴图和遮罩贴图。法线贴图包含对象上每个像素点的角度,遮罩贴图可用于边缘光照等。您可以在 Shader Graph 着色器中添加自己的纹理并按名称引用它们。

如果您计划在游戏中大量使用 2D 光照并充分利用法线贴图,请不要在精灵上绘制光源和阴影。

在已绘制阴影的精灵上,2D 光照显示效果不好。并且最终您会重复工作,因为您需在法线贴图中绘制光照。请绘制一些非定向阴影,这样只要您避开任何方向光(如阳光),精灵显示效果会更好。

 法线贴图绘制技巧

----绘制法线贴图的一种方式是绘制从不同角度被照亮的精灵,然后将这些精灵组合至一个纹理中。该精灵将被 R 通道右侧的一个光源和 G 通道顶部的一个光源照亮。在 B 通道中,精灵从正前方被照亮,但是在通过 2D 精灵使用法线贴图时,为了简洁起见,您可以省略此通道。这是因为 2D 中的正面光照不会对整体着色产生什么影响。

但是,此方法可能会比较费时,因为您需要在 X 轴和 Y 轴对着色绘制至少两次。

【GMS2】使用法线贴图照亮你的2D游戏 - 哔哩哔哩

----另一个绘制方法是使用法线贴图生成器应用。在生成器应用中打开精灵,然后只需点击几次便可以生成法线贴图。生成器应用不会考虑精灵的角度,因此请避免对整个精灵使用该应用。该应用也无法识别对象。相反,他们会根据精灵的颜色或通过添加通用过滤器(类似于图像编辑应用或浮雕中的斜角或凸点)来估计形状。例如,该应用无法识别脸的角度,但会尝试猜测需要变化角度的位置。这是一种限制,但在生成存在斜角的精灵断面(如链子、线材或龙的尾巴)的法线贴图以及砖块、石头、木材等的表面法线时,这些应用仍然非常有用。

将断面导入到法线贴图生成器中,调整值,导出,然后自行添加所需部分和细节。

----最后一个技巧,Unity 提供一种从灰度高度贴图生成法线贴图的方式。这是一种黑色代表最低表面高度、白色代表最高表面高度的纹理。您需要将图像作为法线贴图导入,并选中 Create from Grayscale 选项。此技巧可以方便地在不离开引擎的情况下快速生成法线贴图。

使用此方法时,Inspector 中将显示 B mpiness 滑动条。Unity 使用像素亮度并将高度差转换为法线贴图角度,此滑动条可以控制这些角度的陡度。凹凸值较低意味着,即使是高度贴图中的鲜明对比度也会转换为更平缓的角度和凸起。

一些有用的工具包括 :

NormalPainter

Krita 的 Tangent Normal Brush

SpriteIll minator

Laigter

Sprite Lamp

使用遮罩贴图添加边缘光照

边缘光照是一种用于突出角色轮廓的效果。它可以模拟来自对象背后的光源和光散射的自然属性。这就是所谓的菲涅耳效应。在现实生活中,光线照射到对象表面的角度越宽,对象反射的光线就越多。

在 2D 图形中,您可以通过使用称为遮罩贴图的附加纹理和称为混合样式的特殊光源模拟这种效果。

混合样式决定了特定光源与场景中的精灵交互的方式。Light Blend Styles 位于 2D 渲染器资源中。

绘制遮罩贴图

菲涅耳光源采用遮罩贴图的红色通道,但为简单起见,我们采用黑白色进行绘制。反光部分为白色,不反光部分为黑色。菲涅耳效应会影响对象边缘,因此请复制基础精灵,将其绘制成黑色,然后将边缘突出显示为白色。起初,它类似于一个背后有明亮光源照射的对象。为加快进度,可在对象上添加内发光效果,并在顶部绘制一些细节。遗憾的是,没有任何应用可以加快这一过程,因此要完成这一步骤,需要依靠您的绘制技能。

 如何在不同的渲染器上使用 2D 光源

2D Tilemap

若要在瓦片地图上使用 2D 光源,请使用 Sprite Editor 的 Secondary Textures 模块,将法线贴图和遮罩贴图纹理分配给用作瓦片的精灵。2D 光源系统将自动使用辅助纹理。

2D Sprite Shape

Sprite Shape Renderer会为每个对象使用两种不同的材质 :一种用于填充,一种用于边缘。。

边缘材质会使用精灵资源中的辅助贴图。对于填充区域,使用将包裹模式设置为 “重复”的纹理(而不是精灵)进行平铺。您需要创建启用了 Material Property Block的新填充材质来设置辅助纹理。

用于动画角色的 2D PSD Importer

在 2D PSD Importer 中设置辅助纹理的工作方式类似,只是法线贴图稍有不同。

为 2D PSD 导入角色制作法线贴图和遮罩贴图的较快方法是使用基础角色 .PSB 文件来制作。

1. 完成以下步骤,将法线贴图添加到动画角色 :

2. 复制基础角色 .PSB 文件。通过在文件名中添加后缀来重命名复制的文件,例如 :_normal

3. 在喜欢的图像编辑器中打开此文件,并在每一层上绘制法线贴图。保存该文件。

4. 将具有法线贴图的 PSB 导入到 Unity 时,需要将 Texture Type 设置为 Sprite,然后进入高级设置以取消选中 sRGB(Color Texture) 选项。法线贴图不包含 sRGB颜色数据,仅包含角度值。

5. 将此 PSB 文件指定为基础角色的辅助纹理。

若要制作遮罩贴图,请重复该过程,为复制的文件添加另一个后缀,然后跳过步骤 3。

优化技巧

避免在场景中使用过多光源。

尽可能少地使用排序图层和光源混合样式。

为 2D 渲染器资源的 Light Blend Styles 中的 Render Texture Scale 设置较低的值。

使用法线贴图时,将光源的法线光照质量设置为 Fast 而不是 Accurate。仅在少数光源上使用 2D 阴影。

高级视觉效果

视觉效果 (VFX) 是任何一款精美游戏的魅力所在,对游戏玩家的游戏体验起着至关重要的作用。

逐帧动画

只需将帧作为精灵导入,然后在 Animation 窗口中,随着时间推移对精灵属性进行动画处理。您也可以选择所有帧的精灵并将其拖放到场景中,这样就会自动对其进行动画处理。

逐帧动画也可以在粒子系统中使用,称为 Texture Sheet Animation。

翻页动画也可用于 Shader Graph,通过随时间推移对纹理的 UV 位置进行动画处理,产生移动帧的错觉。

粒子

可以通过选择菜单选项 GameObject > Effects > Particle System 新建粒子系统。

主模块属性

粒子系统包含许多模块,但您只需了解一些要点。第一个模块包含基本粒子属性 :

Duration :系统运行时长

Looping :整个系统是否会永远循环

Speed :粒子的初始速度

Start Size :粒子的初始大小

Color :粒子的初始颜色

Gravity :作用于粒子的重力

Emission

Emission 可以控制发射粒子的速率和时间,而 Rate 则控制每时间单位发射粒子的数量。您还可以创建粒子爆发效果,并指定生成的数量和时间。

Shape

此模块用于定义可发射粒子的体积或表面以及将要行进的方向。Shape 属性用于定义发射体积的形状。

Color over Lifetime

您可以通过评估渐变来控制粒子在其生命周期内的颜色和不透明度。渐变的左侧为初始颜色,右侧为粒子消亡时的颜色。

Size Over Lifetime

此设置用于定义沿曲线水平轴的粒子的大小。

Rotation Over Lifetime

Rotation over Lifetime 用于定义粒子的旋转速度。

Noise

此模块将为粒子移动添加随机性。这是一种快速方法,用于添加妙趣横生且外观复杂的效果,例如魔咒、科幻能量、排气火焰、尘埃等。

使用 Shader Graph

若要开始使用适用于 2D 的 Shader Graph,请转到 Project 窗口,单击右键,然后选择 Create > Shader > Universal Render Pipeline > Sprite Lit Shader Graph(或 Sprite Unlit Shader Graph)。

如果您希望精灵受到光源影响,可以使用 Sprite Lit Shader,这几乎适用于所有角色和对象。Sprite Unlit 可用于无光照或发光表面,例如火、光源、电、符咒、全息图或幽灵等特殊角色。

若要开始创建着色器,请先命名文件。此时将创建初始着色器。然后,双击该文件进入Edit 模式。

Master Stack 是 Shader Graph 的最终输出,负责着色器的最终外观。每个着色器应只包含一个 Master Stack。

流动贴图流体属性动画的阈值动画

“动画 Alpha 裁剪”,该技术可以用单一纹理创建平滑动画。

反射和折射

较常见的一种 2D 技术可以处理反射和折射,就像在水、冰、玻璃或热空气中看到的反射和折射一样。为实现此特效,另一个摄像机输出将被反射或折射到渲染纹理中的部分。然后在着色器中使用此纹理,根据需要对其进行扭曲和调整,最后输出到屏幕上。

在光源周围添加辉光

若要使精灵发出眩目的光线,请将 HDR 增强的精灵着色器与泛光后期处理特效相结合。

精灵遮罩

精灵遮罩用于隐藏或显示精灵或精灵组的各个部分。例如,您可以隐藏图像的一部分以产生传送门特效,或制作具有 3D 特效的集换式卡牌。

若要创建精灵遮罩,请转至菜单并选择 GameObject > 2D Object > Sprite Mask。然后选择要用作遮罩形状的精灵。请记住,遮罩精灵本身不可见。设置遮罩运行时所在的排序图层。

工具比较

着色器动画、VFX 动画剪辑与粒子系统的对比

瓦片地图、精灵与精灵形状的对比

优化技巧

使用逐帧动画时,尝试保持较低的帧计数/纹理大小。

使用对象池,您可以避免实例化和销毁 VFX 资源。轻松激活和停用游戏对象。

在 Shader Graph 中,尽可能使用一半精度。


后期处理

URP 包含后期处理功能,因此无需安装单独的包,而且可以轻松配置各种特效。

Post Processing

后期处理使用体积系统来添加新的后期处理体积,选择 GameObject > Volume >Global Volume。

Bloom(创建辉光)

Chromatic Aberration(色差)此特效会在图像边缘上让颜色失真。这样可模拟将颜色从中心进一步拆分开的镜头。

Color Grading(调色,色彩校正)这是一组特效,而不是单个特效。

Lens Distortion(透镜变形)可创建实际广角镜头

Vignette(渐晕)

Film Grain(胶片颗粒)

Panini Projection(帕尼尼投影)帮助渲染具有大视野的透视图,也可以在 2D 场景中使用,以使图像具有圆柱形失真的样式。

优化技巧

尽可能少用后期处理特效。

尽可能使用强度较小的特效,如泛光、色差、颜色分级、镜头失真或渐晕。

胶片颗粒和 Panini 投影的成本更高。

在 Bloom 中禁用 High Quality Filtering 功能

学自Unity中文课堂----面向美术师的2D游戏美术、动画和光照

面向美术师的2D游戏美术、动画和光照 | Unity 中文课堂

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值