Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释

大家好,我是SKODE。

小提示:选中左侧目录,可快速找到所需内容

本系列博客地址:传送门

 

一、效果展示

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第1张图片

 

 

二、角色运动控制

1、创建角色运动动画

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

 

2、添加运动控制代码

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

 

 

三、Blend Tree混合树

1、BlendTree作用

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

 

2、新建方法:

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第2张图片

 

1、设置Animation Clip

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

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第3张图片

 

2、设置Motion Field

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

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

Computer Thresholds:计算阈值。

 

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第4张图片

 

Adjust Time Sacle:

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第5张图片

 

3、代码解析

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

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第6张图片

Unity动画丨2. 角色左右转向、Blend Tree混合树、批量注释_第7张图片

 

代码如下:

using UnityEngine;

public class Player : MonoBehaviour {

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

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

 

ok,测试试试吧~

 

小提示:批量注释方法

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

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

 

 

一起进步

我是SKODE 

你可能感兴趣的:(#,动画系统)