版本:Unity 6 (6000.0)
语言:英语
动画化游戏对象
编辑动画曲线

使用动画曲线

本主题讨论了属性列表、动画曲线及其关键帧,添加和修改关键帧以及旋转插值类型。

属性列表

动画片段可用于动画角色或简单动画的动画数据。它是运动的一个简单的“单元”部分,例如(一个特定的实例)“闲置”、“行走”或“奔跑”。更多信息
参见 术语表
中,如果一个可动画属性具有 动画曲线,这意味着该属性的值随时间变化。在 动画视图(左侧)的属性列表区域,列出了所有当前动画的属性。在动画视图处于“动画编辑”模式时,每个属性的动画值仅显示为线性轨道,但在“曲线”模式下,您可以看到属性的更改值以曲线形式显示在图形上。曲线始终存在,无论您使用哪种模式:动画编辑模式通过仅指示关键帧发生的时间来提供简化的数据视图。

曲线 模式下,动画曲线允许您向导入的片段添加数据,以便您可以根据动画器的状态来动画其他项目的时序。例如,对于在冰冻条件下进行的游戏,您可以使用额外的动画曲线来控制粒子系统的发射率,以显示玩家在冷空气中凝结的呼吸。更多信息
参见 术语表
具有彩色曲线指示器。每种颜色代表属性列表中选定的属性之一。有关如何将曲线添加到动画属性的信息,请参阅关于 使用动画视图 的部分。

Animation Curves with the color indicators visible. In this example, the green indicator matches the Y position curve of a bouncing cube animation.
带有可见颜色指示器的动画曲线。在此示例中,绿色指示器与弹跳立方体动画的 Y 位置曲线相匹配。

曲线、关键帧和关键帧

一个 动画曲线 具有多个 关键帧,它们是曲线经过的控制点。这些在 曲线编辑器 中可视化为曲线上的小菱形。曲线显示一个或多个 关键帧 的帧被称为 关键帧标记动画中过渡开始或结束点的帧。关键帧之间的帧称为中间帧。
参见 术语表
.

曲线编辑器 仅显示选定属性的曲线。如果您在属性列表中选择了多个属性,则曲线将一起显示。如果属性在当前预览的帧处具有 关键帧,则曲线指示器将变为菱形。

The curves for multiple selected properties may overlay each other in the Curves Editor. The Position.y and Scale.y properties have a key at the currently previewed frame.
多个选定属性的曲线可能在曲线编辑器中相互叠加。Position.yScale.y 属性在当前预览的帧处具有关键帧。

添加和修改关键帧

您可以在当前预览的帧处通过单击 关键帧按钮 添加 关键帧

可以通过单击 关键帧按钮 在当前预览的帧处添加 关键帧。这将向所有当前选定的曲线添加关键帧。或者,您可以在任何给定帧处通过双击曲线来向单个曲线添加关键帧,新 关键帧 应位于该位置。也可以通过右键单击 关键帧线 并从上下文菜单中选择 添加关键帧 来添加 关键帧。放置后,关键帧 可以使用鼠标拖动。也可以选择多个 关键帧 以同时拖动。可以通过选择 关键帧 并按 Delete 键,或通过右键单击它们并从上下文菜单中选择 删除关键帧 来删除 关键帧

可动画属性

动画视图 可用于动画化比 游戏对象 的位置、旋转和缩放更多的东西。任何 组件游戏对象的一个功能部分。一个游戏对象可以包含任意数量的组件。Unity 具有许多内置组件,您还可以通过编写从 MonoBehaviour 继承的脚本创建自己的组件。更多信息
参见 术语表
材质定义表面渲染方式的资源。更多信息
参见 术语表
的属性都可以动画化 - 甚至是您自己的 脚本一段代码,允许您创建自己的组件,触发游戏事件,随着时间的推移修改组件属性并以任何您喜欢的方式响应用户输入。更多信息
参见 术语表
组件的公共变量。制作具有复杂视觉效果和行为的动画只是为相关属性添加 动画曲线 的问题。

动画系统支持以下类型的属性

  • 浮点数
  • 颜色
  • 二维向量
  • 三维向量
  • 四维向量
  • 四元数
  • 布尔值

不支持数组,也不支持结构体或除上面列出的之外的其他对象。

对于布尔值属性,0 值等于 False,而任何其他值都等于 True

以下是一些 动画视图 可以用于的众多事物的示例

  • 动画化 灯光颜色强度 以使其闪烁、闪烁或脉动。
  • 动画化循环 音频源一个组件,它在场景中将音频片段播放给音频监听器或通过音频混音器播放。更多信息
    参见 术语表
    音调音量 以使吹风、发动机运转或流水栩栩如生,同时将声音资源的大小保持在最小。
  • 动画化 材质纹理偏移 以模拟移动的传送带或轨道、流动的水或特殊效果。
  • 动画化多个 椭圆形粒子发射器发射 状态和 速度定义刚体运动速度和方向的向量
    参见 术语表
    以创建壮观的烟火或喷泉显示。
  • 动画化您自己的脚本组件的变量以使其随着时间的推移表现出不同的行为。

使用 动画曲线 控制游戏逻辑时,请注意动画在 Unity 中的 播放和采样 方式。

旋转插值类型

在 Unity 中,旋转在内部表示为 四元数Unity 表示旋转数据的标准方法。在编写处理旋转的代码时,您通常应该使用 Quaternion 类及其方法。更多信息
参见 术语表
。四元数由 .x.y.z.w 值组成,这些值通常不应手动修改,除非知道他们在做什么。相反,旋转通常使用 欧拉角 进行操作,欧拉角 具有 .x.y.z 值,分别代表绕这三个轴的旋转。

在对两个旋转进行插值时,插值可以在 四元数 值或 欧拉角 值上执行。动画视图 允许您在动画 变换 旋转时选择要使用的插值形式。但是,无论使用哪种插值形式,旋转始终以 欧拉角 值的形式显示。

Transform rotations can use Euler Angles interpolation or Quaternion interpolation.
变换旋转可以使用 欧拉角 插值或 四元数 插值。

四元数插值

四元数插值始终沿两个旋转之间的最短路径生成平滑的旋转变化。这避免了旋转插值伪影,例如万向节锁。但是,由于四元数插值始终查找最短路径,因此它不能表示大于 180 度的旋转。(您可以通过在球体表面上选择两个点来想象这一点 - 它们之间的最短线永远不会超过球体的一半。)

如果您使用四元数插值并将数值旋转值设置得大于 180 度,则在动画窗口中绘制的曲线仍然看起来覆盖了超过 180 度的范围,但是对象的实际旋转将采取最短路径。

Placing two keys 270 degrees apart when using Quaternion interpolation will cause the interpolated value to go the other way around, which is only 90 degrees. The magenta curve is what is actually shown in the animation window. The true interpolation of the object is represented by the yellow dotted line in this screenshot, but does not actually appear in the editor.
在使用四元数插值时,将两个关键帧放置 270 度,会导致插值值向相反方向移动,即只有 90 度。洋红色曲线是实际显示在动画窗口中的曲线。对象的真实插值由此屏幕截图中的黄色虚线表示,但实际上不会出现在编辑器中。

在使用四元数插值进行旋转时,更改 x、y 或 z 曲线的关键帧或切线也可能会更改另外两个曲线的数值,因为所有三个曲线都是从内部四元数表示生成的。在使用四元数插值时,关键帧始终是链接的,因此,在特定时间为三个曲线(x、y 或 z)中的一个创建关键帧也会在该时间为另外两个曲线创建关键帧。

欧拉角插值

欧拉角插值是大多数人习惯使用的。欧拉角可以表示任意大的旋转,并且 .x.y.z 曲线彼此独立。欧拉角插值在同时围绕多个轴旋转时可能会出现伪影,例如万向节锁,但在一次围绕一个轴进行简单旋转时直观易用。当使用欧拉角插值时,Unity 在内部将曲线烘焙到内部使用的四元数表示中。这类似于从外部软件将动画导入 Unity 时发生的情况。请注意,这种曲线烘焙可能会在此过程中添加额外的关键帧,并且具有 常数 切线类型的切线可能无法在子帧级别完全精确。

动画化游戏对象
编辑动画曲线