当前位置:网站首页>虚幻——动画蓝图、状态机制作人物走跑跳动作
虚幻——动画蓝图、状态机制作人物走跑跳动作
2022-07-02 06:35:00 【乔安鱼】
一、名词解释
序列——一段动作。
混合空间——混合不同的动作。将多个序列排序播放。
动画蓝图——根据状态播放不同的动画。
二、混合空间制作走跑动作
由于走和跑的动作比较连续,并且都是由速度控制,所以要把待机、走、跑这三个动作混合在一起。
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.状态切换的逻辑关系状态切换时需要用一些变量来控制,这时需要在事件图表中连蓝图来将值输入进变量。
边栏推荐
- Read Day5 30 minutes before going to bed every day_ All key values in the map, how to obtain all value values
- College Students' CET-4 and CET-6 composition template (self created version, successfully crossed CET-6)
- Personal experience & blog status
- FragmentTabHost实现房贷计算器界面
- 高考那些事
- 2837xd code generation - Supplement (2)
- Activity的创建和跳转
- How to install PHP in CentOS
- Supplier selection and prequalification of Oracle project management system
- 大学生四六级作文模板(自创版,成功跨过六级)
猜你喜欢

Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd

2837xd 代码生成——补充(3)

Activity的创建和跳转

2837xd code generation module learning (4) -- idle_ task、Simulink Coder

2837xd code generation - stateflow (2)

Off grid control of three-phase inverter - PR control

三相逆变器离网控制——PR控制

图像识别-数据标注

MySQL multi column in operation

Difference between redis serialization genericjackson2jsonredisserializer and jackson2jsonredisserializer
随机推荐
idea查看字节码配置
记录下对游戏主机配置的个人理解与心得
2837xd代码生成模块学习(3)——IIC、eCAN、SCI、Watchdog、eCAP模块
Supplier selection and prequalification of Oracle project management system
2837xd 代码生成——补充(3)
BugkuCTF-web21(详细解题思路及步骤)
Fragmenttabhost implements the interface of housing loan calculator
Bugkuctf-web24 (problem solving ideas and steps)
上班第一天的报错(Nessus安装winpcap报错)
Int to string, int to qstring
ClassFile - Attributes - Code
Alibaba /热门json解析开源项目 fastjson2
TD conducts functional simulation with Modelsim
Customize redis connection pool
Record the interesting process of using Xray for the first time
大学生四六级作文模板(自创版,成功跨过六级)
2837xd代码生成模块学习(4)——idle_task、Simulink Coder
Junit5 支持suite的方法
C language programming problems
Inverter Simulink model -- processor in the loop test (PIL)