阿赵UE学习笔记——25、动画状态机播放

阿赵UE学习笔记目录
  大家好,我是阿赵。
  继续学习虚幻引擎的使用。之前学习了用蓝图直接控制骨骼动画或者蒙太奇动画的播放。这次学习一下通过状态机来控制动画播放。如果熟悉Unity引擎使用的朋友,看到这个状态机应该会觉得很熟悉,因为Unity引擎也有。不过UE的状态机操作起来稍微和Unity有点不一样。

一、动画蓝图

  动画蓝图在前几篇里面和角色蓝图一起学习过。这里回忆一下:
在这里插入图片描述

  双击打开动画蓝图,会看到有一个Output Pose节点,然后我们新建一个State Machine状态机节点,把状态机的输出连到Output Pose节点。
在这里插入图片描述

二、动画状态机

1、创建状态

  接下来双击打开状态机节点:
在这里插入图片描述

  鼠标右键——添加状态,添加一个idle的状态,然后把Entry节点连到idle节点。

2、给状态节点指定动画片段:

双击状态节点:
在这里插入图片描述

  进入到节点编辑界面之后,从资产浏览器拖一个动画进来,然后连接到Output Animation Pose
在这里插入图片描述

  这样就已经为这个状态指定动作了。
  做完了这些操作之后,我们已经拥有了一个状态机,里面有一个idle状态,idle状态里面有一个我们指定的动画。

三、多个状态节点的连接

  接下来我们先创建多几个状态,并为状态指定好动作:
在这里插入图片描述

  比如我这里除了idle以外,还创建了walk走路、jump跳跃、death死亡,这几个状态。从idle状态连接到其他状态,只需要在状态的边缘按下鼠标左键拖出箭头,然后在下一个状态节点上松开鼠标左键就行。
在这里插入图片描述

  拖完之后,会是这样:
在这里插入图片描述

  接下来需要编辑状态与状态之间的切换条件,和Unity的操作有点类似,我先创建了几个变量:
在这里插入图片描述

  注意一下变量是否为公有。这些变量如果是公有,则可以在动画蓝图外部直接访问和修改。如果不是公有,就不能从外部访问,只能从事件图表里面获取外部的变量来设置值了。
在这里插入图片描述

  这里我设置了一个浮点型的变量moveSpeed,一个布尔型的变量isAlive,另一个布尔型的变量isJump。
  接下来,找到idle到walk的这个过渡条件,然后双击:
在这里插入图片描述

  进入到这个过渡规则编辑界面,这里的Result指的是达到什么条件之后,这个过渡是成立的。
在这里插入图片描述

  把moveSpeed变量拖进来,选择获取moveSpeed
在这里插入图片描述

  然后拖出一个大于节点,最后连到Result。这里表达的意思是,当moveSpeed大于0的时候,可以从idle过渡到walk:
在这里插入图片描述

  回到状态机界面,这次双击walk到idle的过渡规则:
在这里插入图片描述

  和上面的操作类似,这次的条件是MoveSpeed小于等于0,则可以过渡。
在这里插入图片描述

  同样的道理操作剩下的节点过渡规则:
从idle到jump的规则是isJump等于true
在这里插入图片描述

从jump到idle的规则是isJump不等于true
在这里插入图片描述

从idle到death的规则是isAlive不等于true
在这里插入图片描述

从death到idle的条件是isAlive等于true
在这里插入图片描述

  编辑完成之后,就可以来测试预览了:
在这里插入图片描述

  在右下角有一个动画预览编辑器,可以通过修改刚才的变量,来测试各个节点之间的动画效果

四、根据时间过渡

  刚才那个例子里面,死亡倒地之后,又复活,人会突然蹦起来,没有一个站立起来的动作过程。所以我这里加了一个standUp的节点。从death到standUp的规则依然是isAlive为true
在这里插入图片描述

  然后standUp到idle的规则,就要改一下,搜索剩余时间,会看到有2个Time Remaining节点可以用,一个是按绝对时间,一个是按百分比:
在这里插入图片描述

  我选择了按百分比的节点,然后连一个小于等于0.1给他,意思就是,当站立的动作播放到剩余不到0.1的时候,就可以过渡到idle节点了。
在这里插入图片描述

  这样设置了之后,当isAlive变为true,角色会先播放一个站立动作,然后回到idle。

五、导管

  除了状态节点以外,还可以创建一种叫做导管的节点
在这里插入图片描述

  导管的图标和状态节点是不一样的。
在这里插入图片描述

  双击进去导管节点,会看到里面和过渡规则编辑是一模一样的。
在这里插入图片描述

  这里就很好理解了,导管其实就是一个过渡规则,如果状态与状态之间的连线规则过于复杂,可以在其中加入导管,增加过渡条件的管理规则。
  另外一种做法是,把所有节点的时间完成后,都连接到导管,然后导管再根据条件,连接到各个状态。大概是这个样子:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全球变暖蓝桥杯2018省赛真题

全球变暖蓝桥杯2018省赛真题 DFS大法 全球变暖 #include <bits/stdc.h> using namespace std; #define int long long bool flag; char a[1010][1010]; int cnt,n,ans0,pre_ans0,d[4][2] {1,0,-1,0,0,1,0,-1}; void dfs(int x,int y){if(x>n||x<0||y>n||y<…

科研学习|研究方法——定性数据的定量编码方法

一、关于数据的分类 数据可以根据不同的属性和特征进行分类。以下是数据常见的分类方式&#xff1a; 1. 数值型数据&#xff1a;表示为具体的数值&#xff0c;可以进行数学运算和统计分析。例如年龄、身高、体重等。2. 分类型数据&#xff1a;表示为不同的类别或标签&#xff0…

019——IIC模块驱动开发(基于EEPROM【AT24C02】和I.MX6uLL)

目录 一、 IIC基础知识 二、Linux中的IIC&#xff08;韦东山老师的学习笔记&#xff09; 1. I2C驱动程序的层次 2. I2C总线-设备-驱动模型 2.1 i2c_driver 2.2 i2c_client 三、 AT24C02 介绍 四、 AT24C02驱动开发 实验 驱动程序 应用程序 一、 IIC基础知识 总线类…

【数字图像处理】二值图和灰度图的形态学处理

文章目录 形态学处理二值图形态学处理二值图形态学基本算子二值图连通分量提取、区域标记二值图细化算法 灰度图形态学处理灰度图形态学基本算子灰度图形态学梯度灰度图 tophat 算法 形态学处理 二值图形态学处理 二值图形态学基本算子 二值图形态学图像处理通常在目标图像中…

【数据处理包Pandas】多级索引的创建及使用

目录 一、元组作为一级索引&#xff08;一&#xff09;示例1&#xff08;二&#xff09;示例2 二、引入多级索引&#xff08;一&#xff09;多级索引的创建&#xff08;二&#xff09;多级索引中的数学选取 首先&#xff0c;导入 NumPy 库和 Pandas 库。 import numpy as np i…

javaWeb影视创作论坛的设计与实现

摘要 随着时代的发展&#xff0c;互联网的出现&#xff0c;给传统影视行业带来的最大便利就是&#xff0c;方便了影视从业人员以及爱好者的交流和互动&#xff0c;而为用户提供一个书写影评&#xff0c;阅读影评以及回复影评的平台&#xff0c;以影评为载体来使用户感受影评、…

openharmony launcher 调研笔记(03)UI 数据装配

最近在看launcher&#xff0c;把自己调研的点做个笔记&#xff0c;持续修改更新中&#xff0c;个人笔记酌情参考。 桌面上半部分包含父子逻辑&#xff1a; Column() { PageDesktopLayout(); } PageDesktopLayout->GridSwiper->Swiper->SwiperPage 1.PageDe…

无重复的最长字串

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 问题 给定一个字符串&#xff0c;我们需要找到该字符串中的最长无重复子串的长度。 示例 让我们以一个具体的示例来说明这个问题&#…

数据结构---线性表

1&#xff0c;顺序表实现---动态分配 #include<stdlib.h> #define InitSize 10 typedef struct {int *data;//静态分配int length;int MaxSize; }SqList; void InitList(SqList& L) {L.data (int*)malloc(InitSize * sizeof(int));//分配空间L.length 0;L.MaxSize…

企业如何管理员工技能,提升人员管理质效?

最近总有客户来抱怨&#xff0c;传统集团由于企业规模庞大、员工分散及线下管理模式局限&#xff0c;导致HR部门工作效率不高&#xff0c;无法及时解决一线员工的岗位排班、员工技能水平变更等问题。 正好&#xff0c;最近我们有类似成功案例和大家分享一下。 我们特意邀请到…

猫头虎分享已解决Error: 解决“IndexError: list index out of range“

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 文章目录 猫头虎分享已解决Error: 解决"IndexError: list index out of range" &#x1f431;&#x1f989;&#x1f6e0;️摘要正文内容一、错误现场勘察 &#x1f575…

关于Linux内核code段被改写的原因分析

本文基于Linux-4.19.125&#xff0c; ARM V7&#xff0c;dual core。 1 code 段 Linux的code段&#xff08;或者说text段&#xff09;自_stext开始&#xff0c;到_etext结束&#xff0c;这段内容一般情况下是只读的&#xff0c;在理论上来说&#xff0c;这段数据在设备上应该…

如何在淘~宝接单和解决别人问题-java开发

如下这是一个连接&#xff1a;https://s.tb.cn/c.0vDtL3https://s.tb.cn/c.0vDtL3 解决各种问题。可付费咨询

初识C++ · 类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是一门面向过程的语言&#xff0c;注重的…

FPGA(Verilog)实现按键消抖

实现按键消抖功能&#xff1a; 1.滤除按键按下时的噪声和松开时的噪声信号。 2.获取已消抖的按键按下的标志信号。 3.实现已消抖的按键的连续功能。 Verilog实现 模块端口 key_filter(input wire clk ,input wire rst_n ,input wire key_in , //按下按键时为0output …

《QT实用小工具·二十二》多种样式导航按钮控件

1、概述 源码放在文章末尾 该项目实现了多种样式的导航按钮控件 可设置文字的左侧、右侧、顶部、底部间隔。 可设置文字对齐方式。 可设置显示倒三角、倒三角边长、倒三角位置、倒三角颜色。 可设置显示图标、图标间隔、图标尺寸、正常状态图标、悬停状态图标、选中状态图标…

纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 「Real men program in C.」 众所周知&#xff0c;大语言模型还在快速发展&#xff0c;应该有…

自动驾驶基础技术-无迹卡尔曼滤波UKF

自动驾驶基础技术-无迹卡尔曼滤波UKF Unscented Kalman Filter是解决非线性卡尔曼滤波的另一种思路&#xff0c;它利用Unscented Transform来解决概率分布非线性变换的问题。UnScented Kalman Filter不需要像Extended Kalman Filter一样计算Jacobin矩阵&#xff0c;在计算量大…

Vue - 你知道Vue2中对象动态新增属性,视图无法更新的原因吗

难度级别:中高级及以上 提问概率:55% 这道题面试官会这样描述,比如有这样一个场景,一个对象里有name属性,可以正常显示在页面中。但后续动态添加了一个age属性,通过调试打印发现对象里的age属性已经添加了上了,但试图中却没有展示出来,…

程序语言基础

根据希赛相关视频课程汇总整理而成&#xff0c;个人笔记&#xff0c;仅供参考。考点偏向于通用程序语言的基础概念。 程序语言基础概念 程序设计语言&#xff1a; ①低级语言 机器语言汇编语言 汇编语言&#xff1a;指令语句/伪指令语句/宏指令语句 ②高级语言 Fotrane语言&…