Unity Animation、Animator 的使用

news2025/1/20 10:54:49

文章目录

  • 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;
 }

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

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

相关文章

2023 INCLUSION·外滩大会丨拓数派科技战略深度披露,大模型数据计算系统蓄势待发

近日&#xff0c;被亿欧网誉为最值得关注的全球化大模型数据计算科技新锐拓数派亮相在黄浦区世博园举行的2023 INCLUSION外滩大会。作为国际顶尖的科技盛会&#xff0c;来自全球各地的著名经济学家、诺奖得主、企业家和技术大咖们济济一堂&#xff0c;围绕“科技创造可持续未来…

聚观早报|小米14渲染图曝光;蚂蚁金融大模型正式发布

【聚观365】9月9日消息 小米14渲染图曝光 蚂蚁金融大模型正式发布 路特斯推出全电动轿车Emeya 上汽集团8月整车销量42.3万辆 ChatGPT网站流量连续三个月下滑 小米14渲染图曝光 高通旗下全新一代旗舰芯片骁龙8 Gen3将于10月24-26日举办的骁龙技术峰会上亮相&#xff0c;相…

安装SAPGUI 8.0

SAP_GUI_for_Windows_8.00_Comp.64\PRES1\GUI\Windows\Win64

windows11安装docker时,修改默认安装到C盘

1、修改默认安装到C盘 2、如果之前安装过docker&#xff0c;请删除如下目录&#xff1a;C:\Program Files\Docker 3、在D盘新建目录&#xff1a;D:\Program Files\Docker 4、winr&#xff0c;以管理员权限运行cmd 5、在cmd中执行如下命令&#xff0c;建立软联接&#xff1a; m…

【Mysql】给查询记录增加序列号方法

在MySQL 8.0版本中&#xff0c;你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询&#xff0c;演示如何添加序号&#xff1a; SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS serial_number,column1, column2, ... FROMyour_table;请将column_name替换为你想要…

FPGA时序分析与约束(5)——时序路径

一、前言 在之前的文章中我们分别介绍了组合电路的时序&#xff0c;时序电路的时序和时钟的时序问题&#xff0c;我们也对于时序分析&#xff0c;时序约束和时序收敛几个基本概念进行了区分&#xff0c;在这篇文章中&#xff0c;我们将介绍时序约束相关的最后一部分基本概念&am…

【网络知识点】三次握手和四次挥手

文章目录 一、三次握手二、四次挥手 一、三次握手 三次握手的原理如下&#xff1a; 客户端向服务器发送一个SYN&#xff08;同步&#xff09;包&#xff0c;其中包含一个随机生成的初始序列号&#xff08;ISN&#xff09;。 服务器收到SYN包后&#xff0c;会发送一个SYNACK&…

SpringBoot配置文件加载顺序

Spring Boot 启动时&#xff0c;会自动加载 JAR 包内部及 JAR 包所在目录指定位置的配置文件&#xff08;Properties 文件、YAML 文件&#xff09;&#xff0c;下图中展示了 Spring Boot 自动加载的配置文件的位置及其加载顺序&#xff0c;同一位置下&#xff0c;Properties 文…

np.where 和 np.argwhere的区别

np.where 和 np.argwhere 都是NumPy库中用于条件查找的函数&#xff0c;但它们有一些重要的区别&#xff1a; 返回类型: np.where 返回满足条件的元素的坐标作为元组。如果是多维数组&#xff0c;返回的是两个分别包含满足条件的行坐标和列坐标的数组&#xff08;或多维坐标&am…

USB Server应用于汇丰晋信基金

为了满足UKey远程连接调用、安全集群管理需求&#xff0c;汇丰晋信基金选择了朝天椒USB Server作为其解决方案。朝天椒USB Server以其卓越的性能和可靠性&#xff0c;为汇丰晋信基金提供了稳定的Ukey连接管理服务。这一选择不仅提高了汇丰晋信基金的工作效率&#xff0c;还保障…

第三方服务提权

nfs挂载原理 目标机器192.168.17.138 开启2049 nfs端口 查看目标开放的文件夹 showmount -e 192.168.17.138 回显&#xff1a;/home/peter * 说明可挂载/home/peter的所有目录 使用WinSCP链接靶机192.168.17.138 更改名字为 authorized_keys 靶机 赋值权限 攻击机 nfs挂载提…

idea配置git(gitee)并提交(commit)推送(push)

Intellij Idea VCS | 版本控制 - 知乎 IDEA项目上传到gitee仓库_idea上传代码到gitee_robin19712的博客-CSDN博客 git程序下载国内镜像地址&#xff1a; https://registry.npmmirror.com/binary.html?pathgit-for-windows/v2.42.0.windows.2/ 解压后放到固定路径&#xff1a…

Python,Bytetrack ,lap.lapjv,匈牙利匹配

lap.lapjv貌似是一个比匈牙利算法快的算法。 函数的参数&#xff1a; 如果是非方阵&#xff0c;extend_cost需要是True。 cost_limit&#xff0c;小于等于这个数值的分配代价才会分配。 def lapjv(*args, **kwargs): # real signature unknown"""Solve linear a…

彻底掌握Protobuf编码原理与实战

目录 1.类型2.VARINT 2.1 无符号数2.2 有符号数3.定长 3.1 I64类型3.2 I32类型4.LEN5.代码 学习这些有什么用&#xff1f; - 如果你是后端开发者&#xff0c;掌握这个对工作非常有用 - 如果你是求职者&#xff0c;面试时可以临危不惧 1.类型 最近看到有直接操作wire type相关的…

【Roop】+【Rope】+【Rope Crystal】项目情况和原始仓库

Roop【停止更新】 &#x1f517;s0md3v/roop: one-click face swap (github.com) 是的&#xff0c;就是之前介绍过的&#xff0c;特别火的那个。 作者说不干就不干了。 Rope (Space worm) &#x1f517;Em1tSan/Rope-neurogen: GUI-focused roop (github.com) 基于roop增强的…

ava spring cloud 企业工程管理系统源码+二次开发+定制化服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

【EI征稿】第二届机械电子工程与人工智能国际学术会议(MEAI 2023)

第二届机械电子工程与人工智能国际学术会议&#xff08;MEAI 2023&#xff09; The 2nd International Conference on Mechatronic Engineering and Artificial Intelligence 2023年第二届机械电子工程与人工智能国际学术会议&#xff08;MEAI 2023&#xff09;计划将于2023年…

软件系统兼容性测试都要注意哪些问题?

兼容性 软件兼容性测试具有相同的含义&#xff0c;它是任何第三方 Web 应用程序测试服务不可分割的一部分。在众多不同的设置中&#xff0c;最重要的是完全的客户满意度&#xff0c;并且可以通过全面的兼容性测试来达到最佳效果。众所周知&#xff0c;软件质量保证是克服 IT 挑…

Leetcode646. 最长数对链

Every day a Leetcode 题目来源&#xff1a;646. 最长数对链 解法1&#xff1a;动态规划 定义 dp[i] 为以 pairs[i] 为结尾的最长数对链的长度。 初始化时&#xff0c;dp 数组需要全部赋值为 1。 计算 dp[i] 时&#xff0c;可以先找出所有的满足 pairs[i][0]>pairs[j]…

Python学习 -- pickle模块和configparser模块

当在Python中需要进行数据的序列化和反序列化、以及配置文件的读写时&#xff0c;pickle 模块和 configparser 模块是两个非常有用的标准库。以下是关于这两个模块的详细使用方式&#xff0c;包括示例代码。 pickle 模块 pickle 模块用于序列化和反序列化Python对象&#xff…