1 简介:
我们可以使用 Unity 为游戏对象的旋转设置动画,并且根据项目的不同,有不同的方法来应用这些旋转。
2.找到动画旋转选项:
在Project面板中创建Animation文件夹和AnimationController文件夹
创建一个游戏对象(任何对象)并在 Inspector 面板中添加 Animator 组件
在 Animator Controller 文件夹中创建一个新的 Animator Controller
在Animation文件夹中新建一个Animation
将动画控制器分配给多维数据集的动画组件
双击CubeAnimatorController弹出Animator窗口,右键Create State-->Enpty
点击新建的空状态并重命名UI界面,将Animation文件夹的CubeAnimation拖入Motion选项如图
双击CubeAnimation,弹出Animation窗口。 此时,“添加属性”按钮呈灰色且不可用。
返回Scene场景点击Cube或者直接点击Hierarchy面板中的Cube,就会激活Add Property按钮
单击“添加属性”按钮,选择“变换”,然后单击“旋转”右侧的加号
单击 Cube: Rotation 左侧的下标,展开 Cube X、Y、Z 轴的 Rotation 属性。
点击Cube右侧按钮:Rotation弹出菜单项,选择Interpolation,会弹出三个旋转插值选项。
3. 旋转插补选项:
我们可以使用动画窗口来选择 Unity 如何将旋转应用于游戏对象。 Unity 使用插值来计算游戏对象在动画过程中如何从一个方向明显移动到另一个方向。
不同的插值方法在运动中看起来不同,但结果是相同的。 Unity 为动画提供了三种类型的插值:
欧拉角插值 欧拉角插值:
游戏对象旋转的默认值。
欧拉角插值通过我们输入的欧拉角角度将整个运动范围应用到指定的游戏对象上。
如果旋转角度大于360°,则游戏对象会完全旋转完后才停止在正确的方向上(如果大于360°,游戏会先经过360°旋转,然后再旋转剩下的角度,例如旋转 370°,它会先旋转 360°,然后再旋转 10°,而不是只旋转 10°)。
欧拉角(四元数)插值 欧拉角(四元)插值:
使用与欧拉角插值相同的插值方法,但将信息烘焙成四元素曲线。 此方法使用更多内存,但运行速度稍快。
四元数插值四元素插值:
四元素插值会将游戏对象沿着最短距离旋转到特定方向,也就是说,如果你设置游戏对象旋转370°,它只会旋转10°(动画会从0°开始旋转,当旋转一半,即5°,角度信息跳转到365°,然后继续旋转到370°)。
上述流程示例图:
在时间线上的 1s 处单击鼠标,将时间线定位在 1s 处。
点击如图所示的Add Keyframe按钮,添加1s处的关键帧
在Rotation.y上输入370开始播放动画,Rotation.y会从0到370进行插值
单击0:30,即动画进行到一半时,可以看到Rotation.y的值正好是370的一半
Unity会自动在两个关键帧之间进行插值
点击运行按钮开始播放旋转动画(默认为欧拉角插值旋转)
换个欧拉角(四元)旋转方式,不过这个例子太简单了,看不出区别。
改变四元素旋转方式(最短距离旋转unity四元数旋转,旋转370°,最终只旋转10°)
动画将从 0° 开始旋转。 当旋转到5°的一半时,角度信息跳转到365°游戏角色,然后继续旋转到370°。
4.外部动画源的旋转问题:
来自外部源的动画通常包含欧拉格式的旋转关键帧动画(因为欧拉角是默认的旋转类型),Unity 对这些动画重新采样并为动画中的每一帧生成新的关键帧,以避免旋转超出旋转四个元素的有效范围。
例如,假设我们有两个相距六帧的关键帧,并且 x 值从 0 度旋转到 270 度unity四元数旋转,游戏对象将向相反方向旋转 90 度,因为这是获得相同结果的最短路径。 Unity会重新采样并在每一帧上添加一个关键帧,因此关键帧之间的旋转只有45度。