Unity动画状态机Animator使用解析

2023-11-09

Unity可以用两种方式控制动画
1. Animations,这种方式简单,直接 Play(“Idle”) 或者 CorssFade(“Idle”) 就可以播放动画
2. Animator,5.x之后推荐使用这种方式,因为里面可以加上混合动画,让动画切换更加平滑
下面就和大家介绍下动画状态机Animator的使用。
1、导入模型及动作,做成预制件(perfab)
直接把整个模型文件夹拷入对应位置,unity会自动import进来
  • 把模型拖进场景
  • 然后报贴图拖到模型的身上
  • 将 Hierarchy 中,新建一个 空对象xiaoGO,把模型丢到xiaoGO作为子节点,然后把xiaoGO拖入 Project 中做成预制件
2、将模型骨骼转换成unity中的 Humanoid
  • 第4步点击之后,有个弹窗,点 Save 即可。
  • 如果转换成功 Configure 前面显示 v ,失败则显示 x
  • 第5步则更新相关的动画
3、添加状态机控制器
添加控制器脚本 animCtrl2
为模型aisake(aisakeGO对象下的aisake节点)添加 Animator 组件,拖入 animCtrl2 到 Controller ,选择人物镜像Avatar(转换为Humanoid之后才会出现在选择列表中)
4、编辑状态机控制器
编辑状态机控制器
  • 双击 animCtrl2,会出来一个 Animator 面板,拖入三个动作作为状态(第一个拖入的作为默认状态,不过可以右键 Default State 设置其他状态为默认状态)
  • 右键 AnyState,Make Transition 连接到三个状态
  • 添加状态控制参数 AnimState,是个整形(一般来说用枚举,不过这里没枚举类型,但可以强转成int)
编辑切换状态的条件
点击连线,添加个条件,这个条件只会显示刚才添加的状态控制参数 AnimState,设置等于0是切到这个状态
取消勾选 Can Transition To Self,不然动画会出现抖动
其他两个一样,设置不同的条件即可
关于 AnyState中的Transitions,看这里 http://blog.csdn.net/yangxuan0261/article/details/52334359
4、代码中控制状态
加个按钮去控制,按钮脚本
 
 
AخA
 
1
public class btnCtrl : MonoBehaviour 
2
    private int mAnimIndex = 0;
3
    private int mAnimTotal = 3;
4
    void Start () 
5
        OnClicked1();
6
    
7
    public void OnClicked1()
8
    
9
        GameObject go1 = GameObject.Find("aisakeGO");
10
        GameObject go2 = GameObject.Find("xiaoGO");
11
        Animator ator1 = go1.GetComponentInChildren<Animator>();
12
        Animator ator2 = go2.GetComponentInChildren<Animator>();
13
        if(ator1 && ator2)
14
        
15
            //Debug.LogFormat("--- has ator1 && ator2, animIndex:{0}", mAnimIndex % mAnimTotal);
16
            ator1.SetInteger("AnimState", mAnimIndex % mAnimTotal); //设置状态控制参数值,用来切状态
17
            ator2.SetInteger("AnimState", mAnimIndex % mAnimTotal);
18
        
19
        mAnimIndex++;
20
    
21
5、完成
注意事项
动作循环。不然如果没有下个状态切换,直接停止动作
Animator 中的 Avater 没有对应模型,那是因为没有模型没有转换成unity中的 Humanoid,参照第二步
使用 Animator组件 后就不需要 Animation组件
Has Exit Time,如果勾选了,则表示在该动作完成后才允许切换,但是一般我们要的都是立即切换,所以这里 不要勾选
取消勾选 Can Transition To Self,不然动画会出现抖动。
www.nainaitea.com


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity动画状态机Animator使用解析 的相关文章

随机推荐

  • 【Java】环境配置以及快速切换环境的技巧和方法

    前言 前几天想用 burp 抓包来着 发现 burp 突然不能用了 重装了 burp 发现还是不能用 意识到是 java 环境出了问题 在之前有段时间没玩 CTF 去搞开发了 于是java环境糊里糊涂改成了 JAVA 18 结果之前的 bu
  • Android项目JNI层C/C++文件中添加LOG信息

    第一步 在项目的mk文件中加入 LOCAL LDLIBS llog 第二步 在要添加LOG的cpp文件中引入一个头文件和添加一个定义 include
  • M - Mountaineers (MST+树上倍增)

    将原图中点每个点四连通方向的点建边 权值为两点权值中较大者的值 对这个图建立最小生成树 那么最小生成树上任意两点之间路径上的最大点权即为答案 因为是树 所以任意两点间的简单路径唯一 通过树上倍增维护维护树上区间最值求出最大值即可 pragm
  • pid算法控制

    一 先来彻底搞懂PID到底是啥 啥是PID PID 就是 比例 proportional 积分 integral 微分 derivative 是一种很常见的控制算法 在工程实际中 应用最为广泛的调节器控制规律为比例 积分 微分控制 简称PI
  • 数据结构_串的匹配(BF和KMP算法)

    数据结构 串的匹配 BF和KMP算法 BF brute force 算法 算法定义 代码实现 算法分析 KMP算法 算法详解 代码实现 算法分析 子串的定位运算通常被称为串的模式匹配或串匹配 BF brute force 算法 算法定义 一
  • cmd pc如何开多个微信_多个合伙人开公司,股权应该如何分配

    伴随着互联网发展的越来越快 不少的创业型的公司在这快节奏的时代以惊人的速度展现在世人面前 但是这个同时创业的道路也是艰辛的 不过有着志同道合的小伙伴或许能够在成功的道路上又多了几分把握 有句俗话说的好你能走多远 将取决于是谁与你同行 虽然说
  • 【已成功解决】使用vpn/代理后无法正常上网/无法正常访问网站

    文章目录 一 问题描述 二 解决步骤 三 原因分析 一 问题描述 很多同学在学习访问学校提供的资源时或者一些小伙伴在公司办公时需要使用VPN 但是当我们关闭VPN后 却发现没有办法正常连接到互联网了 可以尝试以下方法解决 至于导致这种情况发
  • ANSI是个啥???

    来自 https blog csdn net imxiangzi article details 77370160 http www cnblogs com malecrab p 5300486 html 用Notepad 创建一个文本文件
  • 解决Android 8.1 获取不到wifi名称

    在安卓8 1版本中 用 WifiInfo getSSID 可能出现 unknown ssid 或者什么也没读出来 解决方案 用ConnectivityManager 这个类解决 代码如下 获取SSID param return WIFI 的
  • 前端传JSON嵌套类,且属性名首字母大写时后端接收的一些坑

    因为开发腾讯云业务 要写一个回调函数 规范文档上说会传一个json传给我 EventType ComposeMediaComplete ComposeMediaCompleteEvent TaskId 1256768367 ComposeM
  • stm32局部变量过大,导致栈溢出

    在做一个以stm32为主控的项目时发现自己程序中一个机构体里面的数据总是一运行就被改变 刚开始以为是自己不小心在哪个地方用了extern扩展了变量的作用域 重新赋了值 自己忘记了 后来查找了好久都没有其他地方使用这个结构体变量 于是开始单步
  • 配置文件及其解析

    配置文件 properties xml 配置文件可以解决我们在编程中遇到的硬编码问题 那么什么是硬编码呢 硬编码 将一些经常调用修改的数据代码直接写死在了java源代码程序中 就会产生硬编码问题 一般情况下 通过配置文件来解决硬编码问题 在
  • 在vue3中使用codemirror

    文章目录 前言 引入 在vue3中使用 基本配置 更改编辑框的外部样式 高度 宽度 获取和修改内容 添加删除事件 实现markdown过程中遇到的bug 前言 最近为了完成学校的大作业 需要制作markdown编辑器 为了用户输入方便 使用
  • MyBatis 配置 typeAliases 详解

    0x00 前言参考 之前的 MyBatis 中 SqlMapConfig 配置文件详解 记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景 这篇文章细说一下配置文件中 typeAliases 标签的详细使用 0x01 标签介
  • FOXBORO FBM233 电源模块

    FOXBORO FBM233 是一种电源模块 通常用于工业自动化和控制系统中 为其他设备和模块提供所需的电源供应 以下是可能与这种电源模块相关的一些常见功能 电压输出 FBM233 电源模块通常提供稳定的电压输出 以供其他设备和模块使用 这
  • 把握机器人教育朝AI智能化发展的趋势

    一般机器人是指不具有智能 只具有一般编程能力和操作功能的机器人 到目前为止 在世界范围内还没有一个统一的智能机器人定义 大多数专家认为智能机器人至少要具备以下三个要素 一是感觉要素 用来认识周围环境状态 二是运 动要素 对外界做出反应性动作
  • 百度网盘PC端扫描二维码登录时无法加载二维码问题解决方法

    问题 今天在PC端扫描登录百度网盘时 二维码无法加载出来 具体情况如图 解决方法 1 打开IE浏览器 2 打开工具 3 打开Internet选项 4 打开高级选项 重置IE设置 5 点击确定 打开百度网盘 重新扫描登录 写在后面 好了 现在
  • 基于机器学习之模型树短期负荷预测(Matlab代码实现)

    欢迎来到本博客 目前更新 电力系统相关知识 期刊论文 算法 机器学习和人工智能学习 支持 如果觉得博主的文章还不错或者您用得到的话 可以关注一下博主 如果三连收藏支持就更好啦 这就是给予我最大的支持 本文目录如下 目录 1 概述 2 数学模
  • 家庭记账本小程序之删(java web基础版四)

    实现删除消费账单 1 main left jsp中该部分 调用Servlet中delete方法 2 Servlet中delete方法 调用Dao层list方法 跳转到del jsp页面 3 Dao层list方法 4 del jsp 调用Se
  • Unity动画状态机Animator使用解析

    Unity可以用两种方式控制动画 1 Animations 这种方式简单 直接 Play Idle 或者 CorssFade Idle 就可以播放动画 2 Animator 5 x之后推荐使用这种方式 因为里面可以加上混合动画 让动画切换更