Unity入门,第3部分

你好! 上次为悬疑者道歉–尽管我们讨论了几个不同的方面,但在简要讨论了可以说是最重要和最有用的一种方法之后,我就离开了。 先前的计划有一个小的更改; 虽然我先前打算在本篇文章和下一篇文章中将脚本分为两半,但看起来更加整洁和统一。

今天,我将介绍动画及其之间的过渡。 首先,重要的是首先了解Unity如何处理精灵。 尽管可以分别导入大量精灵并将它们组合成动画,但Unity还提供了工具来管理包含多个精灵的单个图像,称为“精灵表”。 这样可以轻松管理大量离散图形,因为甚至可以将用于完全独立对象的精灵彼此相邻放置。

对于这些示例,我们将使用与Unity编辑器捆绑在一起的默认原型资产,即用于测试2D平台程序和类似项目的RobotBoy图形。 上图所示的“检查器”窗格中最相关的选项是Sprite Mode,因为“ Multiple”设置使编辑器可以将图像识别为在工作表中布置的多个Sprite,并提供了在Sprite Editor中对该工作表进行切片的选项,以便Unity会将每个片段读取为离散的精灵图像。 其他对象主要涉及渲染和默认物理。 “单位像素数”确定了精灵大小(以像素为单位)与其计算的物理质量之间的相关性,“网格类型”可让您定制如何渲​​染精灵以优化图形性能,下面的高级选项与Unity内部渲染精灵的方式有关,并不重要到当前主题。 即使在2D模式下,Unity仍在技术上通过与3D游戏相同的过程来渲染图形。 子画面是放置在面向固定相机的简单网格上的纹理,并且不考虑对象的深度(或“ Z轴”)。 但是,底层逻辑仍然使用多边形和3D空间,这就是为什么这些平面Sprite对象具有这些可用选项的原因。

可通过导入的精灵的“检查器”窗格访问的精灵编辑器是我们现在要使用的主要工具。 Sprite Editor的一项主要功能是在左上方看到的Slice菜单,该菜单仅适用于标记为Multiple的Sprite。 这提供了许多自动切片子画面的选项。 自动是最快捷,最简单的方法,它尝试通过包围单独的图像并切出尽可能多的透明空间来划分单独的精灵。 但是,这可能会导致大小不均的精灵,这可能会使动画复杂化。

还提供了两个基于网格的自动选项:“按单元格大小划分的网格”和“按单元格计数划分的网格”。 它们最适合在精灵表上使用,这些精灵表将其组件精灵放置在大小一致的网格中,例如,考虑到像Super Nintendo这样的早期游戏机,大多数精灵的标准16乘16分辨率。 这两个选项具有相似的结果,每个选项都将一个Sprite薄片切成均匀的段,而次要区别是Cell Size允许您定义每个Sprite分区的大小,Cell Count根据您定义的行数和列数来计算该大小。

将Sprite工作表切片后,可以通过单击资产窗格中Sprite图标右侧的箭头符号将其展开为单独的Sprite。 从这里开始,创建动画的最简单方法是简单地突出显示多个这些单独的精灵(使用Shift键并单击)并将它们拖动到要设置动画的对象上。 第一次执行此操作时,它将为该对象创建一个Animator组件,并要求您将该系列精灵保存为命名动画。 接下来的时间将只要求您命名并保存新动画,然后将其添加到对象的现有Animator中。

动画控制器是一种状态机,旨在存储与对象关联的所有动画以及对象从一个对象过渡到另一个对象的方式。 上面的图像是一个新创建的Animator Controller,因此仅包含Entry和Any State状态以及保存到空对象的空闲动画。 “进入”状态仅是指对象的创建,并定义了一旦激活该对象最初将播放的动画。 绿色箭头表示进入后该对象将立即开始循环播放“ idlebot”动画。 Entry状态指向的动画称为“默认状态”。 这通常表示在对象静止时预期播放的动画。 通过在Animator Controller中右键单击动画并选择“设置为图层默认状态”,可以随时重新分配默认状态。 通过单击动画,可以查看其自己的“检查器”面板,允许您自定义动画播放的速度。 还有与该动画相关的过渡的“单独”和“静音”选项,使您可以临时限制可以在测试期间触发过渡以微调动画的限制。

过渡本身非常简单。 默认情况下,Unity会尝试在两个动画之间“融合”,如在两个动画之间运行的倾斜蓝色区域所示。 这在基于Sprite的2D动画中意义不大,但是在处理3D动画时,混合是重要的工具,在这种3D动画中,运动的突然变化非常明显。 在此,上方时间轴的阴影部分表示过渡持续时间,出于我们的目的,可以安全地将其设置为0。 也可以通过滑动顶部栏中的箭头来调整一个动画停止并且另一个动画开始的位置。 退出时间可能会很困难,因为它表示过渡已为其保留了多少时间。 即使发生其他操作,否则该过渡将至少在该定义的时间段内运行,否则可能会以其他过渡覆盖它。 中断源允许您定义允许中断过渡的内容,底部的预览窗口使您可以查看过渡的当前配置,以进行微调。 默认情况下,这是为3D模型设计的,将精灵对象倾斜放置,但是可以通过单击并拖动鼠标右键将其轻松地面向相机。 还可以设置条件以自动触发相对于为控制器定义的参数的转换,但这目前不在本文的讨论范围之内。

动画和过渡是Unity的元素,与脚本语言紧密相关。 默认情况下,每当脚本提示另一个动画开始播放时,就会播放过渡,并且可以将其设置为自动响应对象脚本中包含的变量。 下次,我们将把所有这些前面提到的元素与Unity的脚本系统结合在一起,并实际制作一个简单的游戏来演示。 谢谢您到目前为止的耐心配合,我很期待自己能参与其中。 在此之前,请保重!

-米