本主题讨论属性列表、动画曲线及其关键点、添加和修改关键帧以及旋转插值类型。
在__动画剪辑__中,如果可动画属性具有__动画曲线__,这意味着属性的值会随时间变化。在 __Animation 视图__的属性列表区域中(左侧),会列出所有当前已动画化的属性。Animation 视图处于关键帧清单模式时,每个属性的动画值仅显示为线性轨迹,但在曲线模式中,可以看到变化的属性值会被可视化为图上的线条。无论使用哪种模式,曲线都仍然存在:关键帧清单模式通过仅指示关键帧发生的时间,提供简化的数据视图。
在__曲线__模式下,__动画曲线__具有彩色曲线标记。每种颜色代表属性列表中的选定属性之一。有关如何将曲线添加到动画属性的信息,请参阅有关使用 Animation 视图的部分。
动画曲线__具有多个__关键点__,这些关键点是曲线路径上的控制点。这些点在__曲线编辑器__中显示为曲线上的小菱形。如果一个帧在一条或多条曲线中具有__关键点__,则该帧称为__关键帧。
__曲线编辑器__仅显示所选属性的曲线。如果在属性列表中选择了多个属性,多条曲线将一起显示。如果属性在当前预览的帧处有一个__关键点__,曲线标记将变为菱形。
您可以通过单击__关键帧 (Keyframe)__ 按钮在当前预览的帧中添加__关键帧__。
可通过单击__关键帧 (Keyframe)__ 按钮在当前预览的帧中添加__关键帧。此操作将为所有当前选定的曲线添加关键帧。还有一种方法可将关键帧添加到任何给定帧的单条曲线,只需双击应该添加新__关键帧__的曲线。此外,也可以通过右键单击__关键帧线__并从上下文菜单中选择__添加关键帧 (Add Keyframe) 来添加__关键帧。添加__关键帧__后,可使用鼠标将其四处拖动。另外,还可选择一次拖动多个__关键帧。通过选中__关键帧__并按 Delete 键或者通过右键单击关键帧并从上下文菜单中选择__删除关键帧 (Delete Keyframe)__,即可删除关键帧。
Animation 视图__可用于动画化更多属性,而不仅限于__游戏对象__的位置、旋转和缩放。您可以动画化任何__组件__和__材质__的属性,甚至是您自己的脚本组件的公共变量。若要生成具有复杂视觉效果和行为的动画,只需为相关属性添加__动画曲线。
动画系统支持以下类型的属性:
不支持数组,也不支持以上列表以外的结构体和对象。
对于布尔值属性,值为 0 等于 False__,而其他任何值等于 True__。
以下是 __Animation 视图__的多种用途的几个示例:
使用__动画曲线__来控制游戏逻辑时,请注意 Unity 中回放和采样动画的方式。
旋转在 Unity 内部用__四元数__的形式表示。四元数包含 .x、.y、.z 和 .w 值。除非对这些值的作用非常熟悉,否则通常不应手动修改这些值。一般应使用__欧拉角__来操作旋转。欧拉角具有 .x、.y 和 .z 值,表示围绕这三个相应轴进行的旋转。
在两个旋转之间进行插值时,可对__四元数__值或__欧拉角__值执行插值。__Animation 视图__可让您选择在动画化__变换__旋转时使用哪种插值形式。但是,无论使用哪种插值形式,旋转始终以__欧拉角__值形式显示。
四元数插值总是沿两个旋转之间的最短路径产生平滑的旋转变化。这样可避免产生旋转插值瑕疵,例如万向锁 (Gimbal Lock)。然而,四元数插值总是寻找最短路径,因此不能表示大于 180 度的旋转。(为了理解这一点,您可以想象在球体表面上选取两个点,这两个点之间的最短路径永远不会超过球体周长的一半)。
如果使用四元数插值并将旋转数值设置为相隔 180 度以上,则 Animation 窗口中绘制的曲线仍将显示超过 180 度的覆盖范围,但是对象的实际旋转将采用最短路径。
对旋转使用四元数插值时,更改任意 x、y 或 z 曲线的关键点或切线也可能会更改其他两条曲线的值,因为所有三条曲线都是从内部四元数表示中创建的。使用四元数插值时,关键点始终为链接状态,因此在特定时间为三条曲线(x、y 或 z)中的任一条曲线创建关键点也将在此时间为其他两条曲线创建关键点。
欧拉角插值是大多数人习惯使用的方法。欧拉角可表示任意范围的旋转,并且 .x、.y 和 .z 曲线相互独立。同时围绕多个轴旋转时,欧拉角插值可能容易出现万向锁之类的瑕疵,但如果一次围绕一个轴进行简单旋转,使用起来会很直观。使用欧拉角插值时,Unity 在内部将曲线烘焙到内部使用的四元数表示中。这类似于将动画从外部软件导入 Unity 时发生的情况。请注意,此曲线烘焙可能会在过程中添加额外关键点,并且切线类型为__常量__的切线在子帧级别可能不完全准确。