返回介绍

使用动画曲线(旧版)

发布于 2021-06-20 00:15:06 字数 4862 浏览 1130 评论 0 收藏 0

属性列表

在动画片段 (Animation Clip)中,任何可进行动画处理的属性都可有动画曲线 (Animation Curve),该曲线表示这个属性由动画片段 (Animation Clip) 控制。带动画曲线 (Animation Curve) 的动画视图 (Animation View) 性的属性列表中有彩色曲线标记。有关如何将曲线添加到动画属性的信息,请参阅使用动画视图相关部分。

一个游戏对象 (Game Object) 可有诸多个组件,并且动画视图 (Animation View) 中的属性列表可以很长。若只显示有动画曲线 (Animation Curve) 的属性,请单击动画视图 (Animation View) 左下方的按钮将其状态设置为显示:已经过动画处理 (Show: Animated).


将左下角的切换按钮设置为显示:已经过动画处理 (Show: Animated),从而隐藏属性列表中所有没有动画曲线 (Animation Curve) 的属性。

了解曲线、键和关键帧

一个动画曲线 (Animation Curve) 有多个键 (key),这些键是曲线穿过的控制点。这些键在曲线编辑器 (Curve Editor) 中是可见的,在曲线上显示为小钻石形状。如果某个帧中显示的一个或多个曲线有一个键 (key),则该帧称为关键帧 (keyframe)。关键帧 (keyframe) 在关键帧线 (Keyframe Line) 中显示为白色钻石。

如果某个属性在当前预览的帧中有一个键 (key),则曲线标记会变成钻石形状。


旋转.y (Rotation.y) 属性在当前预览的帧上有一个键 (key)。关键帧线 (Keyframe Line) 标记了所有显示曲线的关键帧 (keyframe)。

关键帧线 (Keyframe Line) 仅显示已显示曲线的关键帧。如果选中属性列表中的某个属性,则仅显示该属性,且关键帧线 (Keyframe Line) 不会标记未显示曲线的键。


选中某个属性后,其他属性则不会显示,且其曲线的键不会显示在关键帧线 (Keyframe Line) 中。

添加和移动关键帧


关键帧线 (Keyframe Line) 显示当前所显示曲线的关键帧 (keyframe)。双击关键帧线 (Keyframe Line) 或使用关键帧 (Keyframe) 按钮可添加关键帧 (keyframe)。

单击关键帧 (Keyframe) 按钮或通过在关键帧应该在的帧双击关键帧线 (Keyframe Line) 将关键帧添加到任何给定的帧。这会立即向所有显示的曲线添加一个键 (key)。也可通过右键单击关键帧线 (Keyframe Line) 并从上下文菜单中选择添加关键帧 (Add Keyframe) 来添加关键帧 (keyframe)。添加后,可以用鼠标左右拖动关键帧 (keyframe)。也可以一次选择多个关键帧 (keyframe) 拖动。通过选中关键帧 (keyframe) 并按删除 (Delete) 可将其删除,也可通过右键单击这些关键帧并从上下文菜单选择删除关键帧 (Delete Keyframe) 来删除。

循环模式

Unity 中的动画片段 (Animation Clip) 可有各种循环模式 (Wrap Mode),例如将动画片段 (Animation Clip) 设置为循环。请参阅“脚本参考”中的循环模式以了解更多信息。可在右下角选择框的动画视图 (Animation View)中设置动画片段 (Animation Clip) 的循环模式 (Wrap Mode)。曲线视图 (Curve View) w会将选中的循环模式 (Wrap Mode)预览为动画片段 (Animation Clip) 时间范围外的白线。


设置动画片段 (Animation Clip) 的循环模式 (Wrap Mode) 会在曲线视图 (Curve View)中预览该循环模式 (Wrap Mode)。

支持的可进行动画处理的属性

动画视图 (Animation View) 可对游戏对象 (Game Object) 进行诸多动画处理,而不仅仅只是处理位置、旋转和缩放。任何组件 (Component) 以及材质 (Material) 的属性都可进行动画处理,即使是自己的脚本组件的公共变量。要制作带有复杂视觉效果和行为的动画,只需对相关属性添加动画曲线 (Animation Curve) 即可。

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

  • 浮点数
  • 颜色
  • 向量 2
  • 向量 3
  • 向量 4
  • 四元数

除以上列出的属性外,不支持数组、结构体和对象。

动画系统不支持脚本组件中的布尔值,但支持某些内置组件中的布尔值。对于那些布尔值,0 等同于假 (False),而其他值等同于真 (True)。

以下是动画视图 (Animation View) 众多功能使用中的一些例子:

  • 对光 (Light) 的颜色 (Color) 和强度 (Intensity) 进行动画处理,使其闪烁,摇曳或跳动。
  • 对循环音频源 (Audio Source) 的音高 (Pitch) 和音量 (Volume) 进行动画处理,使流动的风、运行的引擎或流动的水显得真实,同时使声音资源的大小保持到最小。
  • 对某种材质 (Material) 的纹理偏移 (Texture Offset) 进行动画处理来模拟传送带、运动轨迹、流水或特殊效果。
  • 对多个椭圆粒子发射器 (Ellipsoid Particle Emitters) 的发射 (Emit) 状态和速度 (Velocities) 进行动画处理来制作壮观的烟花或喷泉效果。
  • 对自己的脚本组件变量进行动画处理,使组件随时间变化呈现出不同的表现。

使用动画曲线 (Animation Curve) 控制游戏逻辑时,请注意 Unity 中动画播放和取样的方式。

旋转插值类型

在 Unity 内部,旋转表示为四元数 (Quaternion)。四元数由 .x、.y、.z 和 .w值组成。这些值一般不能手动修改,除非您确切知道它们的功能。相反,旋转通常使用欧拉角 (Euler Angle) 进行控制。欧拉角有 .x、.y 和 .z 值,这三个值分别表示围绕这三个轴的旋转。

在两个旋转之间插入时,可以根据四元数数值插入,也可根据欧拉角 (Euler Angle) 值插入。动画视图 (Animation View) 使您能够在对变换 (Transform) 旋转进行动画处理时选择一种插值形式。尽管如此,无论使用哪种插值形式,旋转总是显示为欧拉角 (Euler Angle) 值的形式。


变换 (Transform) 旋转可使用欧拉角 (Euler Angle) 插值或四元数 (Quaternion) 插值。

四元数插值

四元数插值总是会沿两个旋转之间的最短路径生成合适的插值。这避免了万向节锁 (Gimbal Lock) 等旋转插值假象的产生。但是,四元数 (Quaternion) 插值无法表示大于 180 度的旋转,因为此时变短的四元数插值去到了反方向。如果使用四元数 (Quaternion) 插值并将两个键 (key) 分开放置,分开的角度大于 180 度,则即使实际旋转依旧平滑,曲线看起来也会不连贯,因为变短的四元数插值换到了相反方向。如果需要让旋转的角度大于 180 度,则需要在中间放置另外的键。使用四元数 (Quaternion) 插值时,更改曲线的键或切线还可能改变其他两条曲线的形状,因为这三条曲线都是由内部四元数 (Quaternion) 表示创建的。使用四元数 (Quaternion) 插值时,键总是连在一起的,因此在特定时间为三条曲线中的一条创建键还会在同一时间为另两条曲线创建键。


使用四元数 (Quaternion) 时将两个键分开 270 度放置会导致插值反向,即仅为 90 度。

欧拉角插值

大多数人都习惯使用欧拉角 (Euler Angles) 插值。欧拉角 (Euler Angle) 可表示任意大的旋转,并且 .x、.y 和 .z 曲线彼此独立。在同一时间围绕多个轴旋转时,欧拉角 (Euler Angles) 插值可能会受到如万向节锁 (Gimbal Lock) 等假象的影响,但每次只绕一个轴简单旋转便很直观。使用欧拉角 (Euler Angle) 插值时,Unity 会在内部将曲线烘焙为内部使用的四元数 (Quaternion) 表示。这与将动画从外部程序导入到 Unity 中的情况类似。请注意:这种曲线烘焙可能会在烘焙过程中添加额外的键,并且常量 (Constant) 切线类型的切线在子帧级可能不完全精确。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文