当前位置: 首页 > news >正文

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状态的标准化时间
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;}

相关文章:

Unity Animation、Animator 的使用

文章目录 1. 添加动画2. Animation2.1 制作界面2.2 制作好的 Animation 动画2.3 添加和使用事件 3. Animator3.1 制作界面3.2 一些参数解释3.3 动画参数 4. Animator中相关类、属性、API4.1 类4.2 属性4.3 API4.4 几个关键方法 5. 动画播放和暂停控制 1. 添加动画 选中待提添加…...

Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)

星光下的赶路人star的个人主页 你必须赢过&#xff0c;才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式&#xff08;Session Mode&#xff09;1.3.2 单作业模式&#xff08;Per-Job Mod…...

执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]

在学习“”编写你的第一个 Django 应用程序&#xff0c;第2部分”时候&#xff0c;遇到一个问题。 执行迁移命令 python manage.py makemigrations polls 后&#xff0c;报错&#xff1a; migrations.py:109: RuntimeWarning: Got an error checking a consistent migration …...

Himall商城-公共方法

目录 1 Himall商城-公共方法 1.1 /// 根据订单id获取订单项 1.2 /// 根据订单项id获取售后记录 1.3 /// 判断订单是否正在申请售后 Himall商城-公共方法 #region 公共方法 public static List<InvoiceTitleInfo> GetInvoiceTitles(long userid) {...

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步&#xff0c;智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式&#xff0c;智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等&#xff0c;可实现海洋管理的数字化转型。 传统的…...

使用Spring Boot + MyBatis实现多数据源

一、引言 在开发中&#xff0c;我们经常会遇到需要连接多个数据库的情况。使用Spring Boot和MyBatis框架可以很方便地实现多数据源的配置和使用。本文将详细介绍如何在Spring Boot项目中使用多数据源。 二、实操 1、添加所需的依赖&#xff1a; <!-- Spring Boot Starte…...

C++中的无限循环

C中的无限循环 while、 do…while 和 for 循环都包含一个条件表达式&#xff0c;在它为 false 时循环结束。如果您指定的条件总是为 true&#xff0c;循环就不会结束。 无限 while 循环类似于下面这样&#xff1a; while(true) // while expression fixed to true {DoSomethi…...

Spark2x原理剖析(二)

一、概述 基于社区已有的JDBCServer基础上&#xff0c;采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个JDBCServer服务&#xff0c;通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个JDBCServer服务停止工作&#xff0c;也不影响用…...

tomcat安装、部署JSPGOU项目、Tomcat多实例

安装 官网找包 Apache Tomcat - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh 服务脚本管理文件 server.xml 主配置文件 修改8009&#xff08;删除注释&#xff09; 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二&#xff1a; 三&#xff1a;部署…...

257. 二叉树的所有路径

题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 我的想法&#xff1a; 层次遍历不好解&#xff0c;可用找到叶子节点&#xff0c;但是他有一个回溯过程&#xff0c;他要一直保留路径节点&#xff0c;层次迭代不好加回溯。 递归…...

windows10使用wheel安装tensorflow2.13.0/2.10.0

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的包 注意&#xff1a; tensorflow 2.10.0是最后一个支持GPU的版本 安装虚…...

sql-gen:点击生成SQL、RO、VO的工具

sql-gen仓库地址&#xff1a;码云 Github 1. 概述 sql-gen是一个用于提高后端接口开发效率的小工具&#xff0c;主要有如下功能&#xff1a; 生成连表SQL语句根据WHERE条件来生成封装查询条件的实体类&#xff08;RO&#xff09;根据SELECT列来生成封装查询结果的实体类&…...

pytorch从0开始安装

文章目录 一. 安装anaconda1.安装pytorch前需要先安装anaonda&#xff0c;首先进入官网&#xff08;Anaconda | The Worlds Most Popular Data Science Platform&#xff09;进行安装相应的版本。2.接着按如图所示安装,遇到下面这个选项时&#xff0c;选择all users.3.选择自己…...

Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)

引言&#xff1a; 在图论中&#xff0c;最小生成树是指一个无向图的生成树&#xff0c;其所有边的权值之和最小。解决最小生成树问题的两种主要算法是Prim算法和Kruskal算法。本文将深入探讨这两种算法并比较它们的优缺点&#xff0c;以帮助读者更好地理解最小生成树算法的原理…...

什么是Linux的Overcommit和OOM

overcommit_memory参数说明&#xff1a; 设置内存分配策略&#xff08;可选&#xff0c;根据服务器的实际情况进行设置&#xff09; /proc/sys/vm/overcommit_memory 可选值&#xff1a;0、1、2。 0&#xff0c; 表示内核将检查是否有足够的可用内存供应用进程使用&#xf…...

解决防火墙导致虚拟机不能ping通宿主机的问题

今天&#xff0c;无缘无故的&#xff0c;虚拟机突然用不了&#xff0c;网络连上不了&#xff0c;一番折腾翻找&#xff0c;最后才发现&#xff0c;是因为虚拟机ping不同宿主主机了&#xff0c;连网关都ping不通了&#xff0c;但是&#xff0c;宿主主机却可以ping通虚拟机 。 最…...

数据结构:线性表(栈的实现)

文章目录 1. 栈(Stack)1.1 栈的概念1.2 栈的结构链表栈数组栈 2. 栈的定义3. 栈的实现3.1 初始化栈 (StackInit)3.2 入栈 (StackPush)3.3 出栈 (StackPop)3.4 检测栈是否为空 (StackEmpty)3.5 获取栈顶元素 (StackTop)3.6 获取栈中有效元素个数 (StackSize)3.7 销毁栈 (StackDe…...

python如何将一个dataframe快速写入clickhouse

目录 前言思路与核心代码优缺点分析 前言 dataframe是用python做数据分析最场景的数据结构了&#xff0c;如何将dataframe数据快速写入到clickhouse数据库呢&#xff1f;这里介绍几种方法&#xff0c;各有优劣势&#xff0c;可以结合自己的使用场景挑用。 思路与核心代码 假…...

Tiny Player Mac:小而美,音乐播放的极致体验

对于追求音质和操作简便的Mac用户来说&#xff0c;Tiny Player Mac是一款不可多得的音乐播放器。它以简洁的界面、强大的功能和优异的性能&#xff0c;吸引了无数用户的目光。接下来&#xff0c;让我们一起了解这款小而美的音乐播放器。 Tiny Player Mac支持多种音频格式&#…...

2022年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:65536 …...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...