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

发布于:2022-12-28 ⋅ 阅读:(231) ⋅ 点赞:(0)

在这里插入图片描述

目录

🟥 效果展示

🟧 角色运动控制

🟨Blend Tree混合树


🟥 效果展示

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

🟧 角色运动控制

1️⃣创建角色运动动画

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

2️⃣添加运动控制代码

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

🟨Blend Tree混合树

1️⃣BlendTree作用

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

2️⃣新建方法:

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

1️⃣ 设置Animation Clip

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

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

2️⃣ 2设置Motion Field

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

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

Computer Thresholds:计算阈值。

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

Adjust Time Sacle:

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

3️⃣ 代码解析

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

代码如下:

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,批量取消注释

<br><br><br>
大家还有什么问题,欢迎在下方留言!
<br>
![在这里插入图片描述](https://img-blog.csdnimg.cn/ecc7a1c4a2f649c389bd8478229d03fe.gif#pic_center)
如果你有<font color=#db7093 > 技术的问题 </font>或<font color=#ff6347 > 项目开发 </font>

都可以加下方联系方式

和我聊一聊你的故事🧡

本文含有隐藏内容,请 开通VIP 后查看