翻滚以及跳跃操作改动
黑魂游戏中,翻滚的触发条件:1.走路按跳跃键 2.助跑按跳跃键 3.高处掉落
所以之前的跳跃键需要改成翻滚键
- 翻滚动画以及触发逻辑:
注意:由于翻滚的动画会出现y方向的根tranform位移,我们需要bake into pose,可以参考下面的链接
如何做好角色的移动动画?(Root Motion详解)
https://zhuanlan.zhihu.com/p/151387595
添加roll动画,过渡条件分为两种情况
第一种情况:正常走路按下跳跃键(翻滚键),直接中ground->roll,条件是触发roll(按下j键)
第二种情况:加速按下跳跃键(翻滚键),触发条件是ground->jump->fall->roll->ground或者ground->jump->roll->ground
第三种情况:自然下落,触发条件sGround 为 false
需要调整ground过渡的优先级:自然降落先,再到冲刺翻滚,最后是正常翻滚
配合roll和jump的相关代码,优先级如下。
roll和jump的相关代码如下,首先是roll的时候需要和之前的jump一样将输入关闭,平面移动锁死。
// 进入动画节点roll时执行的方法 通过PlayerController动画机中的roll节点上挂载的FSMOnEnter调用
void OnRollEnter() {
// 关闭输入并且锁定平面移动
Disable_Move();
}
翻滚的向前速度
翻滚时锁死了平面移动,我们就需要一个翻滚的速度来让动画显得不那么奇怪(位移和动画不匹配)。思路:我们要在锁死平面前根据上一帧的速度量乘以一个向前的滚动速度,有助于玩家体验到不同的速度有不同的滚动速度
// 进入动画节点roll时执行的方法 通过PlayerController动画机中的roll节点上挂载的FSMOnEnter调用
void OnRollEnter() {
// 关闭输入并且锁定平面移动
Disable_Move();
// 翻滚向前的位移
planarVec = planarVec+model.transform.forward *rollVelocity;
}