UE4.26
效果按下自定义控制滚动的按键,角色滚动,并且可以穿过低矮的空间
- 效果
- 前言
- 步骤
- 0. 准备Root Motion的角色滚动动画素材
- 1. 把这个动画序列转换为蒙太奇
- 2. 在动画蓝图中添加插槽
- 3. 在动画蓝图中添加插槽
- 3.1 滚起来
- 3.2 解决鬼畜现象
- 3.3 解决碰撞体的变矮问题
本文会涉及到两个知识点:蒙太奇(Montage)和根运动(Root Motion),篇幅的关系老王将在另外的文章中专题介绍它俩:
-
关于蒙太奇 《虚幻引擎图文笔记:什么是蒙太奇(Montage)之 概念和原理》
-
关于根运动 还没写。。。简言之就是引擎通过动画序列的根骨骼运动反向推算出物体位移的一种机制,听起来很高端,用起来很简单。
这篇文章仅介绍实现角色滚动的步骤和原理。
步骤为了方便观察本文以SideScroller模板为起点开发
0. 准备Root Motion的角色滚动动画素材开启这个动画序列的Root Motion
选项
本文中需要的蒙太奇动画制作非常简单,只需要在原动画序列文件上右键创建即可!
蒙太奇编辑器中设置该蒙太奇动画的插槽(Slot)
关于插槽的作用在《虚幻引擎图文笔记:什么是蒙太奇(Montage)之 概念和原理》已有介绍,它就是一个位置标签。
系统会默认提供一个叫做DefaultSlot的插槽,我们也可以在
Anim Slot Manager
中添加插槽
本例中的状态机非常简单,所以也没有什么可选择的插槽添加位置,不过如果你已经能够构复杂的状态机,那么到时你就应该知道在哪里添加你的插槽了
接下来我们只需要在角色蓝图中实现逻辑就可以了,为了让大家理解这个逻辑的来龙去脉,老王分了三个步骤来实现这个功能
3.1 滚起来就这么简单,但我们发现虽然角色可以滚了,当玩家狂按R键时,它会发生鬼畜现象。
3.2 解决鬼畜现象鬼畜的产生是因为每次按下R
键,蒙太奇动画就会从头开始,要解决这个问题,只要添加一个DoOnce
节点就OK了!只有当这个蒙太奇完成或被打断后才可以再次触发它
然而当我们让角色真的在一个低矮的空间滚过的时候又发现了问题,在调用蒙太奇时我们只让角色播放了滚的动画,然而它的碰撞体并没有随之变矮。
解决这个问题很简单,滚的时候让它的碰撞体“下蹲”即可,蒙太奇结束或者被打断时一定要让碰撞体复原。
别忘了,在CharacterMovement
上开启可以蹲(Can Crouch)选项。
这样就真的可以滚了!