引擎版本 UE4
- 效果预览
- 实现思路
- 实现步骤
- 0. 项目准备
- 1. 构造CrouchIdle/CrouchWalk的混合空间
- 2. 动画蓝图
- 3. 角色蓝图
- 运行一下
- 小结
本文使用引擎自带的横板游戏模板(下文简称模板)为起点开发(其它类型的模板实现原理相同),为角色加入下蹲和蹲走的技能。玩家按住Ctrl
键为下蹲,再按方向键即为蹲走,松开Ctrl
键角色站起来。
本文假定你已经了解混合空间以及动画蓝图的基本使用方法
模板已经实现了“空闲/走/跑/跳”四个动作,其中“空闲/走/跑”是使用一个BlendSpace_1D实现的,它们也是和蹲/蹲走相互切换关系最密切的状态。所以我们也可以采用类似的思路处理蹲/蹲走,把它们融合成一个动作,然后通过动画蓝图中的BlendNode
来进行切换。
使用模板生成初始项目,然后我们需要一个下蹲动画和一个蹲走动画
老王使用的是虚幻免费动画包“MCO Mocap Basics”,导入项目以后需要重定向一下,重定向方法请参考《虚幻引擎图文笔记:彻底搞懂UE4骨骼动画的重定向(Retargeting)》
重定向完毕以后红框中的动画就是蹲和蹲走
新建一个Blend Space 1D
并更名为“CrouchIdle_Walk_1D”,参数设置如下:
效果示意
当前的状态机如下图所示
先把
Idle/Run
改名为GroundMovement
双击进入
GroundMovement
,按照下图所示连接节点
IsCrouching?
是一个布尔型变量,默认值设为false
首先要在Project Settings的Input中添加一个Crouch
事件
在角色蓝图中发出下蹲指令
在CharacterMovement
组件的细节面板上勾选下面两个选项:
Can Walk Off Ledges when Crouching
: 是否可以蹲着走到沟里(这个选项根据需要选择)Can Crouch
:是否能蹲下(必选)
运行之前,先在Character蓝图中暂时将取消CapsuleComponent
组件中Hidden in Game
的勾选,这样我们可以观察到角色包围盒的状态变化
运行
请注意观察角色的胶囊碰撞体,当角色蹲下的时候,碰撞体也变成了原来的一半,这是宝藏组件CharacterMovement,在接收到Crouch指令时默默为我们完成的工作
这种方法把“蹲”和“站”合并成了一个大的状态,优点是连线比较简单;缺点是,如果“蹲”和“站”有不同的逻辑或者在状态机上要出现不同的分支,就不方便了。