private Vector3 CalculateCorrectionTorque()
    {
        var correctionTorque = CarBody.CalculateRequiredTorqueForRotation(castedOrientation, Time.fixedDeltaTime, maxCorrectionTorque);

        correctionTorque -= up * Vector3.Dot(correctionTorque, up);
        return(correctionTorque);
    }
    private void ApplyFriction()
    {
        float currentHorVelocity         = Vector3.Dot(CarBody.velocity, right);
        float velocityFrictionMultiplier = frictionCurve.Evaluate(currentHorVelocity / maxSpeed);

        float forceToStop = PhysicsHelpers.CalculateRequiredForceForSpeed(CarBody.mass, currentHorVelocity, 0);

        CarBody.AddForce(right * forceToStop * velocityFrictionMultiplier, ForceMode.Force);

        Vector3 correctionTorque         = CarBody.CalculateRequiredTorqueForRotation(castedOrientation, Time.fixedDeltaTime, maxCorrectionTorque);
        float   maxTorque                = 20;
        float   correctionTorqueAmount   = Vector3.Dot(correctionTorque, up);
        float   torqueFrictionMultiplier = frictionCurve.Evaluate(correctionTorqueAmount / maxTorque);

        CarBody.AddTorque(up * correctionTorqueAmount, ForceMode.Force);
    }