欢迎来到我的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

学Unity的猫之Unity动画混合树(十六)

  |   0 评论   |   0 浏览

​16.1 动画混合树BlendTree

上次做了一个打字机游戏给皮皮。

我:“上次那个打字机游戏有个逻辑可以优化一下。” 皮皮:“我觉得你可以把难度再加大十倍。” 猫族果然有种族优势,现在打字速度已经远超于我。

在这里插入图片描述

我:“我想说的是,动画控制的逻辑可以优化一下。” 皮皮:“我记得你是用Animator组件来控制动画的。” 我:“是的,打字速度快,连击达到一定数量后,动画状态从慢走变成快跑,这里可以使用混合树来控制。”皮皮:“什么是混合树呀?” 我:“混合树可以很方便地通过变量控制多个动画的混合效果,比如角色的idle(站立)、walk(慢走)、run(快跑)。”idlewalkrun三个动画独立效果如下:idle<img src="https://mmbiz.qlogo.cn/mmbiz_gif/gPVBnGWjo9sZt2W17nic4HO9xtQSvRnoPjnaZrgu3LwSELYCiaU0IEuBCOpLpzrE174xL4iba6AuYticnRF1jntITQ/0?wx_fmt=gif" alt="在这里插入图片描述" class="" data-ratio="0.8585461689587426" data-w="509" data-type="gif"/>

walk<img src="https://mmbiz.qlogo.cn/mmbiz_gif/gPVBnGWjo9sZt2W17nic4HO9xtQSvRnoPuQApKNTsvZic54hxjH4V4Q0QO6FBLuAOAP1tEUEeDpiaWcNmDNZYvfhg/0?wx_fmt=gif" alt="在这里插入图片描述" class="" data-ratio="0.8585461689587426" data-w="509" data-type="gif"/>

run<img src="https://mmbiz.qlogo.cn/mmbiz_gif/gPVBnGWjo9sZt2W17nic4HO9xtQSvRnoP8uZicg201gXDO8TGPfPqRBkugjEG9Xk6dt5ia1LB5KzI6qxR2GBwicltA/0?wx_fmt=gif" alt="在这里插入图片描述" class="" data-ratio="0.8585461689587426" data-w="509" data-type="gif"/>

我们想要通过一个速度变量movespeed来混合这三个动画,这个时候就可以使用混合树。最终效果如下:在这里插入图片描述

16.2 具体流程

16.2.1 导入模型

AssetsStore下载一个带动画的模型,比如这个猫女孩在这里插入图片描述资源地址:https://assetstore.unity.com/packages/2d/characters/fancydoll-c000-little-cat-girl-112776 将模型导入Unity工程中。在这里插入图片描述

16.2.2 打开Animator编辑器

点击菜单Window -> Animation -> Animator在这里插入图片描述即可打开Animator编辑器,界面没有显示内容是因为我们没有选中.controller文件。

在这里插入图片描述

选中.controller文件。

在这里插入图片描述

即可看到具体的动画状态机。在这里插入图片描述

16.2.3 创建混合树Blend Tree

Animator编辑器界面空白处鼠标右键点击Create State -> From New Blend Tree在这里插入图片描述

即可创建一棵混合树。

在这里插入图片描述

选中它,可以在Inspector窗口中对节点进行重命名,比如重命名为MoveBlendTree在这里插入图片描述

16.2.4 进入混合树

鼠标双击混合树节点,可以进入混合树内部。在这里插入图片描述

混合树内部如下

在这里插入图片描述

16.2.5 混合树重命名

我们可以对混合树进行重名名。

在这里插入图片描述

重命名后

在这里插入图片描述

16.2.6 退出混合树

点击顶部栏的Base Layer即可退出当前的混合树。

在这里插入图片描述退出成功

在这里插入图片描述

16.2.7 混合树变量

创建混合树时,会自动创建一个float类型的变量,可在Paramters标签页中看到,默认变量名为Blend

在这里插入图片描述

我们可以双击变量,将变量进行重命名,比如重名名为movespeed

在这里插入图片描述

我们可以设置混合树使用的变量,如下,使用movespeed变量。

在这里插入图片描述

设置成功。

在这里插入图片描述

16.2.8 给混合树添加动画(Motion)

在混合树根节点上右键鼠标,点击菜单Add Motion

在这里插入图片描述

即可添加一个Motion

在这里插入图片描述

我们想要混合idlewalkrun三个动画,所以需要三个Motion

在这里插入图片描述

将具体的Motion设置成具体的动画。

在这里插入图片描述

16.2.8 调整混合树中不同动画过渡的临界值

可以直接拖动混合视图调整临界值Threshold

在这里插入图片描述

16.2.9 测试混合过渡

调整混合树的movespeed变量,可以看到Motion之间的过渡。在这里插入图片描述

将混合树节点设置为默认状态

在这里插入图片描述

将猫女孩模型拖到场景中

在这里插入图片描述

如下

在这里插入图片描述

运行Unity,可以看到状态机正常进入混合树种循环。

在这里插入图片描述

进入混合树节点,调节movespeed变量,可以看到混合过渡效果

在这里插入图片描述

16.2.10 使用代码设置Animator变量

上面我们是手动修改movespeed变量,实际运用中,我们很可能需要使用代码来设置。创建一个Main脚本,代码如下

using UnityEngine;

public class Main : MonoBehaviour
{
    public Animator ani;
    private float m_speed;
    private float m_interpolation = 1.5f;

    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            if (m_speed < 1)
            {
                m_speed += Time.deltaTime * m_interpolation;
                if (m_speed > 1)
                    m_speed = 1;
                ani.SetFloat("movespeed", m_speed);
            }
        }
        else
        {
            if (m_speed > 0)
            {
                m_speed -= Time.deltaTime * m_interpolation;
                if (m_speed < 0)
                    m_speed = 0;
                ani.SetFloat("movespeed", m_speed);
            }
        }
    }
}

Main脚本挂到模型预设上,并赋值Ani对象在这里插入图片描述

运行Unity,按下空白键,即可自增movespeed,松开空白键,movespeed就会自减到0。

在这里插入图片描述

完成。如果有什么疑问,欢迎留言或私信。

-- END --

Unity之Image & Raw Image

  • unity shader预备知识
  • 根据国家规定法规,请进行实名制认证!
  • 对方申请添加您为好友!


公众号后台回复「资料」获取超多学习福利

>>> 点击进入技术讨论群 <<<
▽想深入了解么?

长按/扫码关注我吧↑↑↑

这里放讨论区!!!!!!!

觉得不错就点个在看吧!


标题:学Unity的猫之Unity动画混合树(十六)
作者:shirlnGame
地址:https://mmzsblog.cn/articles/2021/01/28/1611795961601.html
-----------------------------
如未加特殊说明,此网站文章均为原创。
网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发