首先我们需要计算相对加速量,在动画蓝图中
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;
}
}
有两个冲刺动画,Impulse身体前倾幅度更大。
图中下面那个播放器是Impulse动画。
刚开始跑的时候,加速度比较大。当速度接近目标速度的时候,加速度就变小了。相对加速量趋于0,越接近Sprint_F。
意图是做出一种效果,刚刚开始冲刺的时候,身体比较前倾,然后过一会身体回正,有一种猛的一冲的效果。