unity学习37:新版的动画器:动画状态机 Animator

目录

[1 给游戏物体添加,新版的动画器 Animator](#1 给游戏物体添加,新版的动画器 Animator)

[2 关于 Animator](#2 关于 Animator)

[3 创建 动画器的控制器 Animator Controller](#3 创建 动画器的控制器 Animator Controller)

[4 打开动画编辑器 Animator](#4 打开动画编辑器 Animator)

[5 动画编辑器 还是Animation](#5 动画编辑器 还是Animation)

[5.1 创建新的动画](#5.1 创建新的动画)

[5.2 创建第2个动画](#5.2 创建第2个动画)

[5.3 测试2个动画均可用](#5.3 测试2个动画均可用)

[6 再次打开动画编辑器 Animator(动画状态机)](#6 再次打开动画编辑器 Animator(动画状态机))

[6.1 Animator里的内容](#6.1 Animator里的内容)

[6.2 动画状态 Animation state](#6.2 动画状态 Animation state)

[6.2.1 修改优先级](#6.2.1 修改优先级)

[6.3 动画状态的属性](#6.3 动画状态的属性)

[7 代码控制](#7 代码控制)

[7.1 GetComponent () 会返回一个Animator 对象](#7.1 GetComponent () 会返回一个Animator 对象)

[7.2 animator1.Play()](#7.2 animator1.Play())

[7.3 代码内容](#7.3 代码内容)

[7.4 测试OK](#7.4 测试OK)


1 给游戏物体添加新版的动画器:动画状态机 Animator

  • 继续添加一个新的gameObject
  • 添加一个component: Animator

2 关于 Animator

3 创建 动画器的控制器 Animator Controller

  • Animator Controller
  • 需要在 project / Asset 创建一个Animator Controller

4 打开动画编辑器 Animator

  • 双击 Animator Controller 即可以打开Animator

5 动画编辑器 还是Animation

5.1 创建新的动画

  • 继续打开,旧版的动画编辑器的窗口window
  • 继续创建动画
  • 创建的动画,虽然也是用 Animation窗口创建的,但是和老版本的属性不同
  • 从项目窗口找到动画文件,可以看到属性是不同的,

5.2 创建第2个动画

  • 点击 Animation 下方的,动画名
  • 弹出下拉菜单
  • 选择 Create New Clip, 又可以创建一个新的

5.3 测试2个动画均可用

  • 运行时,可以看到 动画状态的进度条
  • 动画编辑器里,预览时是无法看到进度条的

6 再次打开动画编辑器 Animator(动画状态机)

6.1 Animator里的内容

  • 双击 Animator Controller 即可以打开Animator
  • 所有的新版的 动画clip 都可以在 Animator看到
  • 其中高亮的,是默认生效的,其他的灰色的未生效

6.2 动画状态 Animation state

  • 需要注意
  • Animator里,这些矩形是 动画的状态,是动画clip上封装的一层 state
  • 名字可以修改得和 ainimation 本身不一样
  • 只需要保持一一对应得关系即可

6.2.1 修改优先级

6.3 动画状态的属性

  • motion
  • speed
  • mirror等

7 代码控制

7.1 GetComponent<Animator>() 会返回一个Animator 对象

private Animator animator1;

//放在start里,因为只需要获取一次这个组件

animator1=GetComponent<Animator>();

7.2 animator1.Play()

  • animator1.Play("change1left");

7.3 代码内容

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestAnimator : MonoBehaviour
{
    private Animator animator1;

    // Start is called before the first frame update
    void Start()
    {
        //放在start里,因为只需要获取一次这个组件
       animator1=GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            animator1.Play("change1left");
        }
    }
}

7.4 测试OK

运行时执行,entry入口state对应的动画

点击鼠标后执行另外一个动画

相关推荐
万兴丶44 分钟前
Unity 适用于单机游戏的红点系统(前缀树 | 数据结构 | 设计模式 | 算法 | 含源码)
数据结构·unity·设计模式·c#
软件黑马王子8 小时前
Unity游戏制作中的C#基础(5)条件语句和循环语句知识点全解析
游戏·unity·c#
龚子亦13 小时前
Unity结合Vuforia虚拟按键实现AR机械仿真动画效果
unity·游戏引擎·ar·数字孪生·虚拟仿真
程序猿多布1 天前
Unity Excel导表工具转Lua文件
unity·excel
avi91111 天前
[AI相关]Unity的C#代码如何简写
unity·c#·语法糖
心疼你的一切2 天前
C# 中关于补位的写法 PadLeft,PadRight 函数
开发语言·unity·c#·游戏引擎·csdn·心疼你的一切
沐沐森的故事2 天前
Unity for Python —— 强大的 Python 脚本支持提升 Unity 编辑器效率
python·unity·编辑器·pythonrunner·pythonengine
xklcy2 天前
Unity通过Vosk实现离线语音识别方法
unity·语音识别
老朱佩琪!3 天前
在Unity中用简单工厂模式模拟原神中的元素反应
unity·简单工厂模式
程序猿多布3 天前
预定义委托(C# and Unity)
unity·c#