【Unity基础】6.动画状态机

news2024/11/20 7:19:11

  【Unity基础】6.动画状态机

        大家好,我是Lampard~~
        欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 

(一)Animator Controller组件

(1)创建组件

    Animator Controller组件是unity用于控制管理动画状态的组件。什么是状态机,为什么引入这个概念呢? 

    一个角色可能存在着跑,跳,站立,攻击等多种动画状态,若在以往,我们可以通过代码来创建并切换角色不同的动作,但是这样一来增加了程序的工作量,二来并不直观,美术要看到实机效果(比如奔跑动画切攻击动画)需要程序把资源打入到包体,把代码写好才能测试。

    因此unity提供了这个组件,让美术同学编辑器中就可以管理不同状态下的动画展现,并且看到实际效果;让程序同学只需要关注不同状态下的变量变化,不需要管理动画的增删

    只需要右键create,选中Animator Controller就可以创建一个动画管理器组件

(2)动画状态编辑界面

    双击我们创建的Animator Controller,就可以打开动画编辑界面,我们能够看到初始的Animator Controller都会自带三个状态,分别是Any State, Entry和 Exit

Any State状态

    表示任意状态的特殊状态。例如我们如果希望角色在任何状态下都有可能切换到死亡状态,那么Any State就可以帮我们做到。当你发现某个状态可以从任何状态以相同的条件跳转到时,那么你就可以用Any State来简化过渡关系

Entry状态 

表示状态机的入口状态。当我们为某个GameObject添加上Animator组件时,这个组件就会开始发挥它的作用。
如果Animator Controller控制多个Animation的播放,那么默认情况下Animator组件会播放哪个动画呢? 由Entry来决定的。
但是Entry本身并不包含动画,而是指向某个带有动画的状态,并设置其为默认状态。被设置为默认状态的状态会显示为 橘黄色

Exit状态

表示状态机的出口状态,以红色标识。如果你的动画控制器只有一层,那么这个状态可能并没有什么卵用。但是当你需要从子状态机中返回到上一层(Layer)时,把状态指向Exit就可以了

(二)动画状态

(1)新增&删除&重命名动画状态

    如果看不懂上面三个初始状态的简介那木有关系,因为我们会从头开始学习

    首先就是创建和删除了,在动画状态编辑器中,右键create state就可以创建一个动画状态。选中动画状态,右键delete就可以删除(初始的三个状态删不了哟)

    其次如果你想给一个状态重命名,只需要选中这个状态,在右侧的Inspector属性面板中找到名字属性修改就可以了

(2)动画状态的属性

    在动画面板中我们可以看到状态还有以下的属性,不用太纠结,在日后肯定会用到它们的,现在我们可以简单的看一下介绍:

(3)动画状态的联系

    动画状态之间会有联系,比如受击状态后接死亡,比如前摇状态后接攻击。这些状态的联系,unity会用transition来定义这组关系,而在状态编辑器中,会用一个线段的指向来呈现 

     像上图我们就给state1和state2做了一个双向的联系,意味着S1可以转换成S2,S2也可以转成S1,它们的联系在右侧属性面板中的transtions记录着,若是想删除它们的联系,那么在transtions中删除即可

    我们知道entry会指向初始的动画状态,比如现在默认就是指向S1状态,那如果我想让S2作为初始状态,只需要选中S2状态,右击Set as default state即可

(三)挂上状态动画

(1)创建动画animation

    上面巴拉巴拉一大堆,可能就有读者大大开始吐槽:这个和动画有神马关系???

    莫急!!终于要到关键的步骤给状态挂上动画了。首先是创建一个简单的animation,比如我们给之前的直升机,加上上升的动画,简单编辑一下其Y轴随时间变化增加;

(2)添加动画至状态motion

    选中我们要挂在的动画状态,然后把创建好的动画拖动至motion属性栏中就可以挂上了

    点击运行看看,动画状态从entry进入到State1,然后就播放fly动画。而我们的直升飞机就飞起来了~

     若此时加一个动画状态State2,让State1在播放完毕后进入到State2会怎么样呢?

    正如我们所想,此时fly动作被播放一遍以后就进入到state2,因为state2没有定义其他的motion动画,因此直升机就呆呆的不动了 

    好啦今天先到这里,下周进行更复杂一些的动画编辑操作~

    点赞,关注!!!

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

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

相关文章

【细读经典】delay model and timing analysis

Technology-Dependent LogicOptimization, part 1 序言 如图所示是现代工业流程中对于一个高层次的抽象描述如何到最后的芯片的流程图,其中逻辑综合作为一个非常重要的部分,主要被分为两个阶段: 工艺无关的优化(technology-independent opt…

shell脚本学习笔记03(小滴课堂)

在shell脚本中,表示变量除了可以使用$a(a是一个变量),还可以使用${a} 那这两种表示方式有什么区别么? 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了&#xff…

MAYA教程之模型的UV拆分与材质介绍

什么是UV 模型制作完成后,需要给模型进行贴图,就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器,可以点击打开 创建一个模型,可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…

从裸机启动开始运行一个C++程序(八)

前序文章请看: 从裸机启动开始运行一个C程序(七) 从裸机启动开始运行一个C程序(六) 从裸机启动开始运行一个C程序(五) 从裸机启动开始运行一个C程序(四) 从裸机启动开始运…

【C++】C++11 ——lambda表达式

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C11…

阿里云香港云服务器公网带宽价格表及测试IP地址

阿里云服务器香港地域公网带宽价格表,1M带宽价格是30.0元/月,按使用流量1GB价格是1.0元,阿里云香港服务器测试IP地址:47.75.18.101,阿里云百科aliyunbaike.com来详细说下阿里云香港服务器1M带宽、5M带宽、6M带宽、10M带…

民宿酒店订房房态商城小程序的作用是什么

外出旅游出差,酒店民宿总是很好的选择,随着经济复苏,各地旅游及外出办公人次增多,酒店成绩随之增加,市场呈现多品牌酒店经营形式。 区别于以前,如今互联网深入各个行业,酒店经营也面临着困境。…

删除字符串特定的字符(fF)C语言

代码&#xff1a; #include <stdio.h> void funDel(char *str) {int i, j;for (i j 0; str[i] ! \0; i)if (str[i] ! f && str[i] ! F)str[j] str[i];str[j] \0; }int main() {char str[100];printf("请输入一个字符串&#xff1a;");gets(str);pr…

转化限制+分析变量变化引起的答案变化:Gym - 104065D

https://vjudge.net/contest/587311#problem/H 先转化一波条件&#xff1a; p i ≥ 1 X p_i\ge \frac 1 X pi​≥X1​ p i ≤ 1 1 − Y p_i\le \frac 1 {1-Y} pi​≤1−Y1​ 所以我们按 p p p 排序&#xff0c; s u m x sum_x sumx​ 必然是后缀&#xff0c; s u m y sum_y …

Python算术运算符:加减乘除 整除 取余 幂指数 小括号

运算案例 需求&#xff1a;用户手工输入梯形的上底、下底以及高&#xff0c;能直接通过Python打印出梯形的面积为多少。 做这个需求前&#xff0c;首先要知道Python的算数运算符有哪些。 2、算术运算符 所谓的算数运算符就是我们日常生活中的加减乘除等待。 运算符描述实例…

汉服商城小程序的作用是什么

汉服在日常生活中越来越常见&#xff0c;大街小巷也有不少年轻人装扮甚是漂亮帅气&#xff0c;有些地区甚至还有相关的比赛等&#xff0c;作为近几年曝光的服饰&#xff0c;汉服市场规模持续增加中&#xff0c;各地线上线下商家也多了起来。 然而在实际经营中&#xff0c;汉服…

Anylogic 读取和写入Excel文件

1、选择面板-连接-Excel文件&#xff0c;拖入到视图中 然后在excel文件的属性中进行绑定外部excel文件。 绑定完之后&#xff0c;在你需要读取的地方进行写代码&#xff0c; //定义开始读取的行数 //这里设为2&#xff0c;是因为第一行是数据名称 int row12; //读取excel文件信…

SpringBoot-黑马程序员-学习笔记(六)

目录 76.常用计量单位使用 77.bean属性校验 81.测试表现层 82.发送虚拟请求 94.springboot读写redis的客户端 100.ElasticSearch&#xff08;简称ES&#xff09; 一个分布式全文搜索引擎 76.常用计量单位使用 Data Component ConfigurationProperties(prefix "serve…

SpringMVC的响应处理

目录 传统同步业务数据的响应 请求资源转发 请求资源重定向 响应数据模型 直接回写数据给客户端 前后端分离异步业务数据响应 在前面的文章中&#xff0c;我们已经介绍了Spring接收请求的部分&#xff0c;接下来看Spring如何给客户端响应数据 传统同步业务数据的响应 准…

Matlab统计棋盘连通分量(空值区域)的大小和个数

一、基础设定 在20x20的棋盘矩阵中&#xff0c;设定黑子为1&#xff0c;空值为0 现需要统计空值&#xff08;连通分量&#xff09;的大小和个数并标记&#xff0c;如下图所示&#xff1a; 以此类推 其中&#xff0c;最大的连通分量如下&#xff1a; 二、Matlab程序 以下是红…

读写锁ReentrantReadWriteLockStampLock详解

如何设计一把读写锁&#xff1f;ReentrantReadWriteLock 读写锁设计思路 读写状态的设计 设计的精髓&#xff1a;用一个变量如何维护多种状态 在 ReentrantLock 中&#xff0c;使用 Sync ( 实际是 AQS )的 int 类型的 state 来表示同步状态&#xff0c;表示锁被一个线程重复获…

【网络基础】——传输层

目录 前言 传输层 端口号 端口号范围划分 知名端口号 进程与端口号的关系 netstat UDP协议 UDP协议位置 UDP协议格式 UDP协议特点 面向数据报 UDP缓冲区 UDP的使用注意事项 基于UDP的应用层协议 TCP协议 TCP简介 TCP协议格式 确认应答机制&#…

性能测试需求分析

1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一般对系统的性能要求非常高&#xff0c;对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目&#xff0c;已经…

漏洞复现--华测监测预警系统2.2任意文件读取

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Asp.net core Web Api 配置swagger中文

启动项目&#xff0c;如图&#xff1a; 原来是英文的&#xff0c;我们要中文的&#xff0c;WeatherForecastController.cs是一个示例&#xff0c;删除即可&#xff0c;WeatherForecast.cs同时删除&#xff0c;当然不删除也行&#xff0c;这里是删除&#xff0c;创建自己的控制器…