Unity Animation、Animator 的使用(超详细)

文章目录

  • 1. 添加动画
  • 2. Animation
    • 2.1 制作界面
    • 2.2 制作好的 Animation 动画
    • 2.3 添加和使用事件
  • 3. Animator
    • 3.1 制作界面
    • 3.2 一些参数解释
    • 3.3 动画参数
  • 4. Animator中相关类、属性、API
    • 4.1 类
    • 4.2 属性
    • 4.3 API
    • 4.4 几个关键方法
  • 5. 动画播放和暂停控制

1. 添加动画

选中待提添加动画的物体, 在 Animation 窗口下
在这里插入图片描述注意:如果选中的物体无Animation/Animator组件,会自动添加Animator组件。
在这里插入图片描述

2. Animation

2.1 制作界面

在这里插入图片描述
在这里插入图片描述 预览:启用/禁用场景预览模式。

在这里插入图片描述 录制:启用/禁用关键帧记录模式。

在这里插入图片描述 转到动画剪辑开头。

在这里插入图片描述 转到上一个 keyframe(关键帧)。

在这里插入图片描述 播放动画剪辑。

在这里插入图片描述 转到下一个keyframe(关键帧)。

在这里插入图片描述 转到动画剪辑末尾。

在这里插入图片描述 当前帧。

在这里插入图片描述 当前动画名字,下拉可以创建新的Animation动画。

在这里插入图片描述 样本,每秒/分的帧数。

在这里插入图片描述 添加关键帧。

在这里插入图片描述 添加事件。

在这里插入图片描述 时间轴。

在这里插入图片描述 控制删除属性或增减键。

在这里插入图片描述 简报。

在这里插入图片描述 曲线。

2.2 制作好的 Animation 动画

在这里插入图片描述

Length长度(动画时长)
Loop Time循环
Loop Pose循环动作(使循环时头部尾部衔接平滑)
Cycle Offset平滑度

2.3 添加和使用事件

在这里插入图片描述

public class AnimEvents : MonoBehaviour
{private void Start(){// 创建一个事件AnimationEvent evt = new AnimationEvent();// 绑定触发事件后要执行的方法名evt.functionName = "PrintEvent";// 执行方法后要传入的参数evt.intParameter = 12345;// 设置事件关键帧的位置,当事件过了1.3秒后执行evt.time = 0.5f;// 设置目标动画剪辑AnimationClip clip = this.GetComponent<Animator>().runtimeAnimatorController.animationClips[0];// 绑定事件clip.AddEvent(evt);}private void TestAniEvent(string param){Debug.Log("事件触发,参数是:" + param);}private void PrintEvent(int param){Debug.Log(param);}
}

==注意:==脚本和 animator 所在的对象所处同一对象

3. Animator

3.1 制作界面

在这里插入图片描述

3.2 一些参数解释

  1. Solo 和 Mute
    当一个动画有多个后续动画时:
    在这里插入图片描述
    当该动画播放完后优先选择动作列表中最前(或者说最上的)的状态转移
    Solo:当设置了某个 Transitions 为 Solo 时,那么优先选择标记 Solo 的动画转移
    Mute:选择的状态转移被禁用
  2. ** Has Exit Time**
    是否有退出时间。简单理解:开启表示等待当前动画进行完才可进行下一个动画;关闭表示可以立即打断当前动画并播放下一个动画

3.3 动画参数

在这里插入图片描述
在这里插入图片描述
代码控制:

public class AnimControl : MonoBehaviour
{private Animator anim;private void Start(){anim = this.GetComponent<Animator>();}private void Update(){if (Input.GetKeyDown(KeyCode.R)){anim.SetBool("BoolParams", true);}if (Input.GetKeyDown(KeyCode.S)){anim.SetBool("BoolParams", false);}}
}

在这里插入图片描述

4. Animator中相关类、属性、API

4.1 类

AnimationClip: 动画片段,animation

属性/方法含义
length动画长度,单位为秒。(只读)
frameRate对关键帧进行采样的帧率。(只读)
length / (1 / frameRate)总帧率
AddEvent将一个动画事件添加到该剪辑中

AnimatorStateInfo: 动画状态机状态信息

属性/方法含义
fullPathHash该状态的完整路径哈希
length状态的当前持续时间
normalizedTime整数部分为状态已循环的次数。小数部分为当前循环的进度百分比 (0-1)
speed该动画的播放速度。1 表示正常播放速度

4.2 属性

属性含义
speed动画器的播放速度。1 为正常播放速度
runtimeAnimatorController.animationClips返回所有动画 AnimationClip[]

4.3 API

方法名含义
GetBool返回给定布尔参数的值
GetFloat返回给定 float 参数的值
GetInteger返回给定整数参数的值
SetBool设置给定布尔参数的值
SetFloat将浮点值发送到动画器以影响过渡
SetInteger设置给定整数参数的值
GetCurrentAnimatorClipInfo返回给定层当前状态中所有 AnimatorClipInfo 的数组
GetCurrentAnimatorClipInfoCount返回当前状态中 AnimatorClipInfo 的数量
GetCurrentAnimatorStateInfo返回 AnimatorStateInfo,其中包含有关当前状态的信息
GetNextAnimatorClipInfo返回给定层下一个状态中所有 AnimatorClipInfo 的数组
GetNextAnimatorClipInfoCount返回下一个状态中 AnimatorClipInfo 的数量
GetNextAnimatorStateInfo返回 AnimatorStateInfo,其中包含有关下一个状态的信息
Play播放一个状态

4.4 几个关键方法

Animator.Play

void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
Parameters 参数Description 描述
stateName将要播放的动画状态名字。
layer动画状态所在的层。
normalizedTime将要播放动画状态的归一化时间(0-1,时间比例值)。

5. 动画播放和暂停控制

1. Animotor

// 播放
animator.Play("ani_name");
// 暂停
animator.speed = 0;
// 继续播放
animator.speed = 1;
//  重置到起始帧
animator.Play("ani_name", 0, 0f);

2. Animation

// 播放
animition.Play("ani_name");
// 暂停
animition["ani_name"].speed = 0;
// 继续播放
animition["ani_name"].speed = 1;
// 重置到起始帧
public void ResetAni(Animation ani, string name)
{AnimationState state = ani[name];ani.Play(name);state.time = 0;ani.Sample();state.enabled = false;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sudowrite:基于人工智能的AI写作文章生成工具

【 产品介绍】 名称 Sudowrite 成立/上线时间 2023年 具体描述 Sudowrite是一个基于GPT-3的人工智能写作工具&#xff0c;可以帮助你快速生成高质量的文本内容&#xff0c; 无论是小说、博客、营销文案还是学术论文。 Sudowrite可以根据你的输入和指…

八、MySql表的复合查询

文章目录 一、基本查询回顾二、多表查询&#xff08;一&#xff09;笛卡尔积的初步过滤&#xff08;二&#xff09;例子1.显示部门号为10的部门名&#xff0c;员工名和工资2.显示各个员工的姓名&#xff0c;工资&#xff0c;及工资级别 三、自连接&#xff08;一&#xff09;定…

pkg 打包 nodejs

一、先全局安装pkg npm i -g pkg 二、下载打包所需的 node-v16.16.0-linux-x64 和 node-v16.16.0-win-x64 下载地址&#xff0c;里面选择你需要的版本 三、放到pkg的缓存目录 windows&#xff1a;C:\Users\whh\.pkg-cache\v3.4&#xff0c;&#xff08;把whh替换为你的电脑…

【计算机网络】传输层协议——TCP(上)

文章目录 TCPTCP协议段格式报头和有效载荷如何分离&#xff1f;4位首部长度 TCP可靠性确认应答机制的提出序号和确认序号为什么序号和确认序号在不同的字段&#xff1f; 16位窗口大小 6个标志位标志位本质具体标志位PSHRSTURG 超时重传机制 文章目录 TCPTCP协议段格式报头和有效…

领域驱动设计:领域模型与代码模型的一致性

文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 DDD 强调先构建领域模型然后设计微服务&#xff0c;以保证领域模型和微服务的一体性&#xff0c;因此我们不能脱离领域模型来谈…

树控件、下拉框、文本框常用测试用例

01 控件的测试外观操作 1&#xff09;项目中的所有树是否风格一致 2&#xff09;树结构的默认状态是怎样的。比如默认树是否是展开&#xff0c;是展开几级&#xff1f; 是否有默认的焦点&#xff1f;默认值是什么&#xff1f;展开的节点图标和颜色&#xff1f; 3&#xff09…

Matlab之创建空数组的多种方法汇总

一、matlab空数组是什么&#xff1f; 在MATLAB中&#xff0c;空数组是指没有元素的数组对象。它可以用于占位或者作为容器&#xff0c;等待后续添加元素。 二、创建空数组的多种方法 1、使用空方括号 [] 创建空矩阵 A []; % 创建一个空双精度矩阵 B logical([]); % 创建一…

TypeScript类型系统层级

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 1. 顶层类型&#xff08;Top Type&#xff09; 1.1 any 类型 1.2 unknown 类型 2. 底层类型&#xff08;Bottom …

linux设备树节点添加新的复位属性之后设备驱动加载异常问题分析

linux设备树节点添加新的复位属性之后设备驱动加载异常问题分析 1 linux原始设备驱动信息1.1 设备树节点信息1.2 linux设备驱动1.3 makefile1.4 Kconfig1.5 对应的defconfig文件 2 修改之后的linux设备驱动2.1 修改之后的设备树节点信息2.2 原始test_fw.c出现的问题以及原因分析…

【Git】Git 快照 Snapshot

Git 快照 Snapshot 在对 Git 基础的学习过程中&#xff0c;我们了解了 Git 仓库的基本结构&#xff1a; 工作目录暂存区版本库&#xff0c;即 .git 仓库 下面我们就通过一次修改、暂存以及提交的工作流程&#xff0c;来理解快照&#xff08;Snapshot&#xff09;的概念。 现…

【C语言】每日一题(半月斩)——day1

目录 &#x1f60a;前言 一.选择题 1.执行下面程序&#xff0c;正确的输出是&#xff08;c&#xff09; 2.以下不正确的定义语句是&#xff08; &#xff09; 3.test.c 文件中包括如下语句&#xff0c;文件中定义的四个变量中&#xff0c;是指针类型的变量为【多选】&a…

The specified module could not be found.

新电脑运行项目的时候出现了某个包找不到的问题 \\?\D:\guanwnag\cloudquery-website\node_modules\.pnpm\nxnx-win32-x64-msvc16.5.3\node_modules\nx\nx-win32-x64-msvc\nx.win32-x64-msvc.node 引入的路径就感觉有问题 去github上查找原因&#xff0c;发现是没安装 Micro…

Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式

零、我设备的相关信息 Python 3.8.8Anaconda3 2021.05查询匹配python3.8.*的OpenCV匹配版本为&#xff1a;4.1.* — 4.2.*&#xff0c;我最后安装4.2.0.32版本如下我记录了 “从发现问题&#xff0c;到不断试错&#xff0c;最后解决问题” 的完整过程&#xff0c;以备自己复盘…

【Java基础篇 | 面向对象】--- 聊聊什么是多态(上篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么是多态二、多…

IIC总线上拉电阻计算

IIC总线上拉电阻计算 1. 概述2. 上拉电阻计算3. 总线传输速度与功率4. 实例计算 1. 概述 IIC&#xff08;Inter-Integrated Circuit&#xff09;其实是IICBus简称&#xff0c;所以中文应该叫集成电路总线&#xff0c;它是一种串行通信总线&#xff0c;使用多主从架构&#xff…

【PowerQuery】Excel的PowerQuery的复制

在Excel中构建符合要求的PowerQuery连接之后&#xff0c;所有的PowerQuery 连接已经顺利的保存在Excel 工作簿当中&#xff0c;但是如何去查看已经保存的PowerQuery连接呢&#xff1f;图6.3 显示了查看PowerQuery连接。 Excel界面->数据页签->查询与连接 如果你的Power…

Redis从入门到精通(四:持久化)

持久化简介 什么是持久化 利用永久性存储介质将数据进行保存&#xff0c;在特定的时间将保存的数据进行恢复的工作机制称为持久化 持久化用于防止数据的意外丢失&#xff0c;确保数据安全性 为什么持久化 redis是将数据存储在内存上的&#xff0c;一旦断电&#xff0c;或者因…

c++类与对象(中)

文章目录 前言一、构造函数1、构造函数介绍2、构造函数特性 二、析构函数1、析构函数介绍2、析构函数特性 三、拷贝构造函数1、拷贝构造函数介绍2、拷贝构造函数特征3、拷贝构造函数的应用 -- 求n天后的日期 四、赋值运算符重载1、运算符重载2、一些运算符重载的实现3、赋值运算…

安徽省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著

安徽省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著

Java生成微信小程序二维码,5种实现方式,一个比一个简单

文章目录 前言先看官网一、JDK自带的URLConnection方式二、Apache的HttpClient方式三、okhttp3方式四、Unirest方式五、RestTemplate方式其它细节getAccessToken构建参数mapbyte[]数组 源码下载 前言 先介绍一下项目场景&#xff0c;主要是通过微信小程序二维码裂变分享&#…