目录

🟥 效果展示

🟧 角色运动控制

🟨Blend Tree混合树


🟥 效果展示

使用Blend Tree混合树,实现角色的左右转向。

Unity 旋转序列帧特效 unity物体旋转动画_unity

🟧 角色运动控制

1️⃣创建角色运动动画

分别创建并添加角色左右转的动画, Mirror为镜像动画。

2️⃣添加运动控制代码

  • Vertical向前为正,向后为负。
  • Horizontal向左为负,向右为正。

Unity 旋转序列帧特效 unity物体旋转动画_Unity 旋转序列帧特效_02

🟨Blend Tree混合树

1️⃣BlendTree作用

将不同动画混合,通过调节一个数值的大小,来控制混合动画更趋向于哪个单个动画

2️⃣新建方法:

  • Animator窗口右键选择Create State—From New Blend Tree,双即可进入编辑。
  • 双击空白处或选择Base Layer可返回上一层。

Unity 旋转序列帧特效 unity物体旋转动画_游戏引擎_03

1️⃣ 设置Animation Clip

将Idle、Walk、Run混合在一起。

因为这三个动画对旋转、Y轴无影响,只对Z方向有影响,所以在Blend Tree的Blend Type选择1D。

Unity 旋转序列帧特效 unity物体旋转动画_unity_04

2️⃣ 2设置Motion Field

在Motion栏添加三个Add Motion Field,放入这三个动画(源文件)。

Unity 旋转序列帧特效 unity物体旋转动画_Blend_05

Automate Thresholds:自动生成阈值匹配阈值,当取消勾选时,便可手动设置上方的阈值Threshold,可调节混合区域的大小

Computer Thresholds:计算阈值。

在此案例中,只有Z轴发生变化,所以按照Z轴来控制阈值比较合适,它的Parameter范围不再是0-1,而变成系统所计算的范围了,我们只需要控制这个Parameter数值,便可控制这个混合动画的状态了

Unity 旋转序列帧特效 unity物体旋转动画_Unity 旋转序列帧特效_06

Adjust Time Sacle:

调整时间比例,可手动在右上角“Change animation speed”更改动画的时间比例,也可点击Adjust Time Scale栏里的Homogeneous Speed(均匀的速度,使动画更平滑),Reset Time Scale是将时间比例重置为1

Unity 旋转序列帧特效 unity物体旋转动画_Blend_07

3️⃣ 代码解析

这三个动画的混合相当于形成从Idle到Run的渐变状态,继续沿用Speed参数作为控制混合树的参数,将原先的Idle、Walk、Run三个Animation Clips替换为LocalMotion(混合树),计算所得的Idle到Run区间从[0,1]—[0,4.5],所以代码需乘以4.5倍

Unity 旋转序列帧特效 unity物体旋转动画_unity_08

Unity 旋转序列帧特效 unity物体旋转动画_Unity 旋转序列帧特效_09

代码如下:

using UnityEngine;

public class Player : MonoBehaviour {

    Animator anim;
    int speedID = Animator.StringToHash("Speed");

    void Start () {
        anim = GetComponent<Animator>();
	}
	
	void Update () {
        //speedID仅代替Speed
        anim.SetFloat(speedID, Input.GetAxis("Vertical")*4.5f);  
	}
}

ok,测试试试吧~

小提示:批量注释方法

选中目标,Ctrl+K+C,批量注释

Ctrl+K+U,批量取消注释