JustMakeGame 6. 冲刺混合

首先我们需要计算相对加速量,在动画蓝图中

    UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Cwl|Anim Graph - Grounded")
    FVector RelativeAccelerationAmount = FVector::ZeroVector;
void UCwlBaseAnimIns::CalculateRelativeAccelerationAmount()
{
    if (FVector::DotProduct(Velocity, Acceleration) > 0)
    {
        const float MaxAcceleration = Character->GetCharacterMovement()->GetMaxAcceleration();
        RelativeAccelerationAmount = UKismetMathLibrary::Quat_UnrotateVector(Character->GetActorRotation().Quaternion(),
            Acceleration.GetClampedToMaxSize(MaxAcceleration)) / MaxAcceleration;
    }
    else
    {
        const float MaxBrakingDeceleration = Character->GetCharacterMovement()->GetMaxBrakingDeceleration();
        RelativeAccelerationAmount = UKismetMathLibrary::Quat_UnrotateVector(Character->GetActorRotation().Quaternion(),
            Acceleration.GetClampedToMaxSize(MaxBrakingDeceleration)) / MaxBrakingDeceleration;
    }
}

image.png

有两个冲刺动画,Impulse身体前倾幅度更大。

image.png

图中下面那个播放器是Impulse动画。
刚开始跑的时候,加速度比较大。当速度接近目标速度的时候,加速度就变小了。相对加速量趋于0,越接近Sprint_F。
意图是做出一种效果,刚刚开始冲刺的时候,身体比较前倾,然后过一会身体回正,有一种猛的一冲的效果。

image.png
加速过程逐渐完成后前倾回正
image.png

上一篇
下一篇