一、名词解释

序列——一段动作。
混合空间——混合不同的动作。将多个序列排序播放。
动画蓝图——根据状态播放不同的动画。

二、混合空间制作走跑动作

由于走和跑的动作比较连续,并且都是由速度控制,所以要把待机、走、跑这三个动作混合在一起。

1.创建混合空间

右键——动画——混合空间1D

选取对应骨骼

改名为“走跑”。

2.制作走跑动作

打开混合空间,在资产详情面板将水平轴名称改为“速度”,最大轴值改为500.

将待机、走、跑动画依次插入到轴中。
按住ctlr拖动就可以看到人物的动作变化。

混合空间就设置完了。

三、动画蓝图

1.创建动画蓝图

右键>动画>动画蓝图

选取对应骨骼。

2.添加状态机

拖拽“输出姿势”的“result”引脚,添加状态机。

3.添加走跑状态

双击状态机,拖拽“entry”添加状态“走跑”

点击“走跑”状态。

走跑姿势的切换是通过人物的速度,所以这里要对输出姿势输入值。

将右侧的混合空间“走跑”拖入并与输出姿势的“result”相连。

拖拽混合空间“走跑”的“速度”引脚,提升为变量“速度”。

接着我们要在事件图表栏中获取人物移动的速度,好将这个值传递给混合空间来控制输出的姿势。

打开事件图表,拖拽“事件蓝图更新动画”的执行引脚新建“?Is Vaild”函数——“尝试获取Pawn拥有者”的返回值与“?Is Vaild”的输入类型相连。

  • ?Is Vaild——决定对象是否有效。也就是当玩家不受控制时,便无效。

拖拽“尝试获取Pawn拥有者”返回值新建函数“获取速度”(get velocity)
获取当前玩家的速度。

由于我们走跑混合空间的坐标轴的值是浮点数类型,而获取的速度是向量类型,所以要再转换一下。

拖拽“获取速度”的返回值,新建“向量长度”函数(vecot length)

按住ctrl拖拽“速度”变量与Is Vaild相连,“向量长度”返回值与速度引脚相连。

4.添加待机状态

双击状态机,在entry与走跑状态之间添加一个待机状态。

待机状态与走跑状态相互连接,因为两者需要相互切换。

我们还是通过速度变量来控制。

  • 速度>10,切换为走跑状态。
  • 速度<10,切换为待机状态。
A.待机—走跑

点击待机到走跑切换按钮。

按ctrl将速度变量拖入

拖拽速度引脚添加“大于”(>)函数,输入值10

大于函数执行引脚与结果函数相连。

B.走跑—待机

点击走跑到待机切换按钮。

按ctrl将速度变量拖入

拖拽速度引脚添加“小于”(<)函数,输入值10
小于函数执行引脚与结果函数相连。

5.添加跳跃状态

跳跃一共有三个状态:起跳、跳起、落下

跳跃与走跑状态的切换是根据人物是否处于“浮空”,因为会有提前取消跳跃的情况,而且这三个状态之间的切换条件都不同,所以不能直接将这三个动作混合,需要创建三个状态。

  • 浮空,走跑——跳。
  • 不浮空,跳起——落下。
  • 播放时间<0.01,落下——走跑;跳——跳起(即播放下一个动作)
A.走跑—跳

点击走跑到跳。
拖拽can enter transition引脚提升为变量,改名为“是否跳跃”。

B.跳——跳起

输入跳动作,新建这个动作的“剩余时间”函数。

拖拽剩余时间返回值,新建小于函数,输入值0.01.
小于函数的执行引脚与结果函数相连。

C.跳起——落下

拖入“是否跳跃”布尔变量,连接“等于”(=)函数。
即为假时切换姿势。

用“不等于”(not Boolean)函数是一样的效果。

D.落下—走跑

落下动作的剩余时间函数,小于0.01时切换状态。

E.获取浮空状态

现在需要回到事件图表,获取人物当前的浮空状态,然后通过是否跳跃变量来控制状态切换。

拖拽“尝试获取Pawn拥有者”返回值,新建“获取移动组件”函数。

拖拽“获取移动组件”返回值,新建“正在掉落”(Is falling)函数

拖入“是否跳跃”变量并与“速度”变量的执行引脚相连,“正在掉落”的返回值与“是否跳跃”相连。

完整逻辑:

动画蓝图需要调整两个部分:状态机、事件图表。

状态机是三层嵌套:
1.状态树(跟行为树类似)
2.该状态动画
3.状态切换的逻辑关系

状态切换时需要用一些变量来控制,这时需要在事件图表中连蓝图来将值输入进变量。

虚幻——动画蓝图、状态机制作人物走跑跳动作相关推荐

  1. UE4 虚幻引擎 Montage蒙太奇/动画蓝图状态机 踩过的坑记录

    惯例先说两句 实在惭愧,和朋友一起做UE4从10月份就说好了,结果依旧拖到了寒假,然而毕设又来了. 第一关的锅我背了三个月还没做完,直到疫情被困在家必须好好干一把了(加油) 以下是在最近做一个简单的道 ...

  2. 虚幻四蓝图实战(人物切换汽车控制)

    文章目录 前言 角色切换 角色控制权获取 画面过度 场景搭建 蓝图 函数 宏 调用(关卡蓝图) 演示 汽车控制 场景搭建 Player蓝图 上车 检测点 上车蓝图 下车 注意点 人物跟随 下车 类型转 ...

  3. 虚幻动画蓝图按层级的动画混合(layered)

    每个骨骼的分层混合 Base POSE是基础的动画,下面的Blend Pose是要混合进来的动画 右边的骨骼名称为spine01,意思是包括他自身在内和他的子集的骨骼,都会遵循Blend Pose的动 ...

  4. 虚幻四蓝图实战(下车减速人物加速蓝图接口通信)

    文章目录 前言 人物下车减速 油门 有效性 完整实现 人物加速 设置人物速度 获取人物前进方向 计算人物瞬移位置 视角移动 完整实现 接口通信 事件通信 通信使用 总结 前言 今天这个部分的内容可能有 ...

  5. Unity 从零开始的2D游戏开发 —— [Animator] 使用动画状态机制作简单动画

    动画是一个2D游戏里面必不可少的一部分,使用动画可以实现很多意想不到的功能,除了常规的人物动画,还可以实现一些周期性的运动.接下来会尝试实现一个非帧动画,一个帧动画. 一.非帧动画:通过改变位置或拉伸 ...

  6. 关于UE5角色动画蓝图的基本操作(基础向)

    1.在做角色蓝图动画前,首先需要有一个可操控的角色.操作方法如下:         新建Player文件夹-在其中创建关于世界设置的蓝图:GameModeBase.PlayerController.以 ...

  7. 虚幻动画 | 让角色动起来,实现一个简易的走、跑、跳状态机

    本篇内容将简单介绍如何借助蓝图控制角色,利用现成的素材,从0到1实现一个简易的"走.跑.跳"状态机.目的是让新手更快速清晰地了解虚幻动画系统的运作流程,因此涉及到的内容也比较简单, ...

  8. unity人物旋转移动代码_游戏诞生之日02 - 美术篇 快速制作人物动画

    在上一篇<游戏诞生之日01 - 美术篇 快速搭建和渲染游戏的第一个场景>里,我们得到了一个静态渲染的游戏场景. 接下来我们需要加入人物动画,为游戏注入活力. 第五块拼图 - 动画素材从哪里 ...

  9. 用状态机做人物(AI)的状态切换以及动画效果——人物动画以及切换

    github: https://github.com/lucaschen1993/PRG_DEMO 前言 在之前写状态机文章的时候介绍过,基于事件与委托实现的状态机.这篇文章将介绍状态机的使用,以及人 ...

最新文章

  1. Datawhale面经项目来了!
  2. Android startActivityForResult
  3. shell错误 sed: can't read : No such file or directory
  4. 【集训队互测2015】最大异或和
  5. 转帖-Linux学习(Find命令使用实例)
  6. centos6,7的启动流程
  7. 模拟退火算法(TSP问题)
  8. java中的装箱及拆箱
  9. Android视频: YUV转RGB
  10. Python 下的数据结构实现
  11. jQuery 选择器、DOM操作、事件、动画
  12. 关于交流电路的谐振等问题
  13. 轮廓检测论文解读 | 整体嵌套边缘检测HED | CVPR | 2015
  14. STM32F446高性能MCU芯片介绍
  15. java高校选课系统博客,学生选课系统
  16. 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员
  17. Downloaded file failed signature verification and may have been tampered with....
  18. 【mongo系列】 六、mongo分片集群
  19. STM32F103C8T6基础开发教程(HAL库)—开发环境配置
  20. 还可以这么玩:盘点iOS 11中Siri的12项新功能

热门文章

  1. ellipsize属性
  2. 常见色域基础知识与色域转换公式(YUV/YCbCr/YIQ/RGB/R‘G‘B‘/CMYK)
  3. C语言将一个十进制数转化为二进制
  4. ArcGIS 30mDEM数据空洞填补
  5. (机器学习)随机森林填补缺失值的思路和代码逐行详解
  6. 基于Java毕业设计东理咨询交流论坛源码+系统+mysql+lw文档+部署软件
  7. MYSQL复制表结构及数据到新表
  8. MySQL 密码设置
  9. linux开机自启任务和定时任务
  10. 如何用开源飞控PIXHAWK进行二次开发?