学习做动画7.跳跃
1。打开ABP_CharacterBase,我们新建跳跃的逻辑
大概就是这样的。
2。
①进入到JumpStart需要人物处于"掉落状态",且z轴的速度大于零,代表我们正在起跳。
②起跳完毕后,我们进入JumpLoop状态
③当速度与加速度的一个除数小于某个值的时候,就算到顶点了。
④从JumpSelector->JumpApex则为正在处于“掉落”状态、并且z轴的速度小于0,则直接过渡。
⑤FallLoop->FallLand,则是通过一个距离匹配来设置
⑥由移动组件里的数据来判断是否着陆
3。我们新建一个函数UpdateCharacterStateData用来更新角色的状态
新建一个函数UpdateJumpFallData用来更新角色到达顶点的时间
我们需要把新建的两个函数放入线程安全更新函数内
新建一个函数UpdateGroundDistance
然后进入事件图表,将刚刚新建的函数连接
4。接下来则是完善这个动画的转换条件
①JumpSources->JumpSelector,直接改为true
②JumpSelector->JumpStart,使用IsJumping进行判断
③:JumpStart->JumpLoop则开启自动规则
④:JumpLoop->JumpApex则是通过JumpApexTime进行判断
⑤JumpSelector->JumpApex则是用IsFalling进行判断
⑥JumpApex->FallLoop则是开启自动规则
⑦FallLoop->FallLand是当地面的距离小于200时
⑧FallLand->EndInAir与EndInAirSources->EndInAir是当角色接触到地面时
⑨EndInAir->CycleAlias则是使用共享规则ToStart,有加速度则过渡到Cycle
⑩EndInAir->IdleAlias则是直接打钩,同时更改优先顺序为2
这两个导管内也需要打钩
5。然后我们进入到ALI内,新建五个动画层
然后回到ABPCharacterBase
(更正)
然后进入ABP_CharacterBase内
进入JumpStart状态
进入JumpStartLoop状态
进入JumpApex状态
进入FallLoop状态
进入FallLand状态
然后再进入ABP_LayersBase
新建五个动画序列
先进入JumpStart动画层。新建序列播放器、绑定JumpStart并设置循环动画为false
JumpStartLoop动画层
JumpApex动画层
FallLoop动画层
最后是FallLand,这里我们选择使用序列求值器
然后我们给它"变为相关时"绑定函数
继续为"更新时"绑定一个函数.
这里的DistanceCurveName我们需要进入到动画里去找,distance代表角色到地面的距离
这里的曲线是在这里进行设置,我们需要设置成Z轴
找到Jump的动画,对他们进行矩阵化操作,设置根运动与曲线
然后再找到对应的曲线进行压缩即可
这时,我们可以进入PistolLayers为其赋予动画了