倾斜姿势
RelativeAccelerationAmount 相对加速量前面用过。
我们需要的是前后,左右。两个方向上的速度值,用于混合空间的参数
void UCwlBaseAnimIns::CalculateLeanAmount()
{
FCwlLeanAmount TargetLeanAmount;
float DeltaSeconds = GetWorld()->GetDeltaSeconds();
TargetLeanAmount.ForwardBackward = RelativeAccelerationAmount.X;
TargetLeanAmount.LeftRight = RelativeAccelerationAmount.Y;
LeanAmount = InterLeanAmount(LeanAmount, TargetLeanAmount, GroundedLeanInterpSpeed, DeltaSeconds);
}
FCwlLeanAmount UCwlBaseAnimIns::InterLeanAmount(FCwlLeanAmount Current, FCwlLeanAmount Target, float InterSpeed, float DeltaX)
{
FCwlLeanAmount NewlLeanAmount;
NewlLeanAmount.ForwardBackward = UKismetMathLibrary::FInterpTo(Current.ForwardBackward, Target.ForwardBackward, DeltaX, InterSpeed);
NewlLeanAmount.LeftRight = UKismetMathLibrary::FInterpTo(Current.LeftRight, Target.LeftRight, DeltaX, InterSpeed);
return NewlLeanAmount;
}
混合空间是一个角色前后左右的倾斜度的资源
(N)CycleBlending 是八项移动。出来后就混合一个倾斜姿势。
加速动作
到这里我们完成了这个状态机 Locomotion Cycle,主要描述地面八项运动,走,跑,冲刺,倾斜姿势等细节。
save pose 【locomotion cycle】
第二部分 Locomotion Detail 描述走跑过度和回转运动。
这里面所有状态都是use locomotion cycle,然后叠加了一些其他的动画我认为这是一个动画蓝图的使用技巧。
walking和running状态都是
然后其他状态则是这个pose叠加了一些其他的姿势。
Walking和Running的过度条件是步态,用曲线 Weight_Gait 说明,逻辑状态是走还不行,动画的过度也需要到走的状态才能切回来。
发现右边这一块需要讲完下一节,移动静止,不然现在讲不清楚。emmmmm
回转运动
突然转向的一个过度细节。这个功能Lyra也有。效果是一样的。不过我觉得ALSv4这里代码就比较简单了。这个八向运动中间一圈,标记一个
bPivot的 True,然后0.5s tick改为false。
- bPivot True的时候进入 Pivot状态机。
- 又由于可能0.1s内反复触发回转运动,已经在Pivot状态内,就不需要切换了,所以需要 First/Second Pivot
- 这里过度混合时间的0.1和tick延迟0.1s设置false需要保持一致。
- pivot=》running过度条件是状态播放完。
移动停止
上面完成的走跑的细节处理,并save pose 【locomotion detail】
然后开始写第三个状态机,主要处理移动与静止
回到加速动作
- 3的过度条件比 Walking直接过度Running 多了一个动画状态机判断。表示在地面上。
- Run Start 还是 Walk Run的条件用的是 Locomotion Detail 是否等于1
- ALT切换走状态,shift起步是一边。正常静止到跑是一边。原项目有歧义。动画效果不明显,就这样把。
Run Start/ Walk Run 状态机是一样的,参数不一样。效果是 Walking->Run Start/Walk Start-> Running。 在 Walking-> Running之间加一个状态播一个过度动作