首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Unity动画☀️2.角色左右转向、Blend Tree混合树、批量注释

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

作者头像
星河造梦坊官方
发布于 2024-08-14 16:06:09
发布于 2024-08-14 16:06:09
2.1K0
举报

🟥 效果展示

使用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倍

代码如下:

代码语言:javascript
复制
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,批量取消注释

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 🟥 效果展示
  • 🟧 角色运动控制
  • 🟨Blend Tree混合树
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档