Animator动画状态机

news2024/10/6 4:10:11

1、有限状态机

有限状态机(Finite - state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型

有限:表示是有限度的不是无限的
状态:指所拥有的所有状态

举例说明:
假设我们人会做很多个动作,也就是有很多种状态
这些状态包括 站立、走路、跑步、攻击、防守、睡觉等等
我们每天都会在这些状态中切换,而且这些状态虽然多但是是有限的
当达到某种条件时,我们就会在这些状态中进行切换
而且这种切换时随时可能发生的

游戏开发中有很多功能系统都是有限状态机
最典型的状态机系统

  • 动作系统 —— 当满足某个条件切换一个动作,且动作是有限的
  • AI(人工智能)系统 —— 当满足某个条件切换一个状态,且状态时有限的

2、简单的状态机实现

//最简单的状态机实现代码就是基于switch的实现

//假设我们只有一个值来控制当前玩家的状态
string animName = "idle";
switch (animName)
{
    case "idle":
        //待机动作逻辑
        break;
    case "move":
        //移动动作逻辑
        break;
    case "run":
        //跑步动作逻辑
        break;
    case "atk":
        //攻击动作逻辑
        break;
}

3、创建动画状态机

两种方法:

  • 通过为场景中物体创建动画时自动创建
  • 手动创建动画状态机文件

4、动画状态机窗口参数

5、添加切换连线

在每一个动画状态播放完毕后,如果没有设置切换条件,会自动跳转到连线相关联的另一个动画状态

6、添加动画

  • 自动添加——为对象创建动画后会自动将动画添加到状态机中
  • 手动添加1——将动画文件拖入到状态机中(注意:直接创建的Animation动画拖入会有警告)
  • 手动添加2——右键创建状态,再关联动画

7、添加切换条件

在左侧面板点击参数页签可以在这里添加4中类型的切换条件。如果切换条件有多个,他们之间是 与 的关系。

8、Animator组件参数

9、Animator的API 

animator = this.GetComponent<Animator>();
// 1.通过状态机条件切换动画
animator.SetFloat("条件名", 1.2f);
animator.SetInteger("条件名", 5);
animator.SetBool("条件名", true);
animator.SetTrigger("条件名");

animator.GetFloat("条件名");
animator.GetInteger("条件名");
animator.GetBool("条件名");

// 2.直接切换动画 除非特殊情况 不然一般不使用
// 注意!!!不是动画名,动画名是动画资源的名称,状态名是Animator窗口中的名称,是可以修改的
animator.Play("状态名");

注意:在修改状态后,对象可以会在播放完当前动画后才会跳转到状态更改后的动画,如果需要立即跳转,可以将连线的 Inspector 窗口中的 Has Exit Time 勾掉即可。

10、Animation创建序列帧动画

  • 方法一:

1.创建一个空物体
2.创建一个动画
3.直接将某一个动作的序列帧(多张图片)拖入Animation窗口中

  • 方法二:

直接将多张图片拖入Hierarchy层级窗口中,通常用来创建第一个动画

注意:需要修改动画帧率(Inspector——>Debug窗口下的 Sample Rate 或者 Animation 窗口中的 Show Sample Rate 修改,来控制动画的播放速度,但是一般是将Animation窗口中的关键帧删除掉,修改动画帧率后再将图片拖入创建序列中,直接修改可能会造成帧的丢失。

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

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

相关文章

机器人开发--减速机

机器人开发--减速机1 概述介绍功能分类按照传动类型可分为&#xff1a;按照传动级数不同可分为&#xff1a;按照齿轮形状可分为:按照传动的布置形式可分为:应用2 电机使用减速机原因3 RV减速机、谐波减速机 和 行星减速机RV减速机谐波减速机行星减速机蜗轮蜗杆减速机4 机器人各…

社区系统项目复盘-1

文章目录技术架构开发环境开发社区首页技术架构 Spring BootSpring、Spring MVC、MyBatisRedis、Kafka、ElasticsearchSpring Security、Spring Actuator 开发环境 构建工具&#xff1a;Apache Maven 版本&#xff1a;3.6.1集成开发环境&#xff1a;IntelliJ IDEA数据库&…

R3LIVE代码详解(四)

0. 简介 上一节中&#xff0c;我们过完了VIO中的状态预测以及特征点跟踪部分。此时我们已经拿到了光流的特征点信息&#xff0c;而这部分越来越接近我们想要去讲的帧到帧的VIO部分了。这一节&#xff0c;我们将围绕着VIO部分来进行讲解 1. PNP误差更新 我们从之前的博客《经…

人工智能前沿——未来AI技术的五大应用领域

关注“PandaCVer”公众号 >>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 一、航空航天 二、医疗保健 三、建筑行业 四、能源领域 五、供应链 关于YOLO算法改进及论文投稿可关注并留言博主的CSDN/QQ >>>一起交流&#xff01;互相学习&…

力扣(LeetCode)1758. 生成交替二进制字符串的最少操作数(C++)

模拟 我们最终串只有两种形态 ① 1010101…1010101\dots1010101… 偶数位全 111 &#xff0c;奇数位全 000 &#xff0c; ② 0101010…0101010\dots0101010… 偶数位全 000 &#xff0c;奇数位全 111 &#xff0c; 我们统计将偶数位全变成 111 &#xff0c;奇数位全变成 000 的…

传奇外网架设全套图文教程-Hero引擎

当你拿到一个Hero引擎的版本&#xff0c;首先查看一下版本内文件是否完整&#xff0c;一个完整的Hero版本应该包括&#xff1a;DBServer、LoginGate、LoginSrv、LogServer、Mir200、Mud2、RunGate、SelGate、网站和GameCenter.exe&#xff08;引擎&#xff09;&#xff0c;以上…

龙芯 处理器

龙芯&#xff1a;国内最早自主研发芯片厂商&#xff0c;MIPS 架构体系自主化程度高 龙芯是中国科学院计算所自主研发的通用CPU&#xff0c;采用自主LoongISA指令系统&#xff0c;兼容MIPS指令 n “龙芯”是我国最早研制的高性能通用处理器系列&#xff0c;于 2001 年在中科院计…

【每日一题Day42】生成交替二进制字符串的最小操作数 | 模拟 位运算

生成交替二进制字符串的最小操作数【LC1758】 You are given a string s consisting only of the characters 0 and 1. In one operation, you can change any 0 to 1 or vice versa. The string is called alternating if no two adjacent characters are equal. For example,…

黑马点评--用户签到

用户签到 BitMap用法签到功能签到统计 BitMap用法&#xff1a; 我们按月来统计用户签到信息&#xff0c;签到记录为1&#xff0c;未签到则记录为0.&#xff08;布隆过滤器就是采用这种结构&#xff09; 把每一个bit位对应当月的每一天&#xff0c;形成了映射关系。用0和1标示…

docker的安装

1、docker官网 Install Docker Engine on CentOS | Docker Documentation yum -y install gcc yum -y install gcc-c yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum insta…

原型(克隆)模式

文章目录思考原型(克隆)模式1.原型模式的本质2.何时选用原型模式3.优缺点4.实现原型模式(浅克隆)原型模式(深克隆)java浅克隆java深克隆思考原型(克隆)模式 原型模式顾名思义通过一个接口实现快速创建对象 1.原型模式的本质 原型模式的本质:克隆生成对象。 克隆是手段&#xff…

【Ubuntu】进程与线程编程实验

文章目录进程与线程实验一&#xff1a;创建进程基础版&#xff1a;创建父子线程 fork基础版&#xff1a;父子线程交替运行基础版&#xff1a;创建进程 文件写入练习版&#xff1a;创建线程 子读父阻塞实验二&#xff1a;线程共享进程中的数据实验三&#xff1a;多线程实现单词统…

总结709(bug集合)

今天不知道怎么了&#xff0c;那个曾弄了我20多天的冒险模块&#xff0c;在今天&#xff0c;差不多要完工了。弄出的那一刻&#xff0c;有的是喜悦&#xff0c;但之后&#xff0c;更多的是叹气。 也就是从此刻我才意识到&#xff0c;我曾自认为很崇高的职位&#xff0c;可能事…

传奇出现黑屏卡屏不动是怎么回事

在写这篇文章之前&#xff0c;先给给大家说一下&#xff0c;这篇文章写的是出现黑屏、卡屏不动是我们玩传奇的时候出现的&#xff0c;而不是在架设传奇时候出现的&#xff0c;所以要特别是注意一下&#xff0c;架设和玩出现黑屏是完全不一样的&#xff0c;所以解决方案也不一样…

驱动开发 platfrom总线驱动的三种方式

驱动的分隔与分离&#xff1a; 对于 Linux 这样一个成熟、庞大、复杂的操作系统&#xff0c;代码的重用性非常重要&#xff0c;在驱动程序&#xff0c;因为驱动程序占用了 Linux 内核代码量的大头&#xff0c;如果不对驱动程序加以管理&#xff0c;任由重复的代码肆意增加&…

基于深度学习的合成孔径雷达自聚焦

文章目录引言什么是合成孔径雷达什么是自聚焦经典自聚焦方法基于机器学习的方法基于极速学习机的方法基于深度学习的SAR自聚焦代码附录引言 本文全面介绍合成孔径雷达自聚焦概念和方法。想获取更为详尽的描述&#xff0c;请参考以下几篇论文, 如果数据或代码对你的研究有用&am…

【ASM】字节码操作 工具类与常用类 ClassRemapper 介绍 类映射 代码混淆

文章目录 1.概述2. ClassRemapper#2.1 class info2.2 fields2.3 构造方法2.4 method3. 案例3.1 案例1-修改类名3.2 案例2-修改字段名和方法3.3 案例3-修改2个类4.总结1.概述 在上一篇文章:【ASM】字节码操作 工具类与常用类 InstructionAdapter 介绍 我们知道了,对于Instruc…

[思维模式-5]:《如何系统思考》-1- 认识篇 - 总体结构与知识框架

目录 前言&#xff1a; 第一篇&#xff1a;认知篇 第1章 无所不在的系统 // 2 第2章 思维的转变 // 30 第二篇&#xff1a;方法与工具 第3章 深入思考 // 50 第4章 动态思考 // 78 第5章 全面思考 // 109 第6章 系统思考的“新语言”&#xff1a;因果回路图 // …

Zookeeper(一)- Zookeeper介绍与集群部署

文章目录一、Zookeeper 介绍1. Zookeeper概述2. Zookeeper工作机制3. Zookeeper特点4. Zookeeper数据结构5. Zookeeper应用场景&#xff08;1&#xff09;统一命名服务&#xff08;2&#xff09;统一配置管理&#xff08;3&#xff09;统一集群管理&#xff08;4&#xff09;服…

翻译QT使用手册:将库添加到项目

将库添加到项目 除了 Qt 库之外&#xff0c;您还可以将其他库添加到您的项目中。该过程取决于图书馆的类型和位置。您可以添加系统库、您自己的库或第三方库。该库可以位于当前项目的构建树中&#xff0c;也可以位于另一个构建树中。 将库添加到项目 除了 Qt 库之外&#xff0c…