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为其赋予动画了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐