diff --git a/Code/Base/Powertrain/Clutch.cs b/Code/Base/Powertrain/Clutch.cs index 3c7850a..90c02a7 100644 --- a/Code/Base/Powertrain/Clutch.cs +++ b/Code/Base/Powertrain/Clutch.cs @@ -173,7 +173,7 @@ public partial class Clutch : PowertrainComponent OutputInertia = (inertiaSum + halfClutchInertia) * _clutchEngagement + halfClutchInertia; // Allow the torque output to be only up to the slip torque valu - float outputTorqueClamp = SlipTorque * _clutchEngagement; + float outputTorqueClamp = Controller.Engine.EstimatedPeakTorque * 1.5f * _clutchEngagement; OutputTorque = InputTorque; OutputTorque = Math.Clamp( OutputTorque, 0, outputTorqueClamp ); diff --git a/Code/Base/Wheel/VeloXWheel.Friction.cs b/Code/Base/Wheel/VeloXWheel.Friction.cs index a801310..05984e1 100644 --- a/Code/Base/Wheel/VeloXWheel.Friction.cs +++ b/Code/Base/Wheel/VeloXWheel.Friction.cs @@ -250,11 +250,13 @@ public partial class VeloXWheel lowSpeedReferenceIsSet = false; } + ForwardFriction.Force = Math.Clamp( ForwardFriction.Force, -peakForwardFrictionForce, peakForwardFrictionForce ); SidewayFriction.Force = Math.Clamp( SidewayFriction.Force, -peakSideFrictionForce, peakSideFrictionForce ); - if ( absForwardSpeed > 2f || absAngularVelocity > 4f ) + + if ( absForwardSpeed > 0.01f || absAngularVelocity > 0.01f ) { float forwardSlipPercent = ForwardFriction.Slip / Tire.GetPeakSlip(); @@ -262,7 +264,7 @@ public partial class VeloXWheel float slipCircleLimit = MathF.Sqrt( forwardSlipPercent * forwardSlipPercent + sideSlipPercent * sideSlipPercent ); if ( slipCircleLimit > 1f ) { - float beta = MathF.Atan2( sideSlipPercent, forwardSlipPercent * 0.9f ); + float beta = MathF.Atan2( sideSlipPercent, forwardSlipPercent * 1.05f ); float sinBeta = MathF.Sin( beta ); float cosBeta = MathF.Cos( beta ); diff --git a/Code/Car/VeloXCar.Aerodinamics.cs b/Code/Car/VeloXCar.Aerodinamics.cs index 0467dd4..5c48243 100644 --- a/Code/Car/VeloXCar.Aerodinamics.cs +++ b/Code/Car/VeloXCar.Aerodinamics.cs @@ -40,7 +40,7 @@ public partial class VeloXCar _sideArea = Dimensions.y * Dimensions.z * 0.8f; _forwardSpeed = LocalVelocity.x.InchToMeter(); _sideSpeed = LocalVelocity.y.InchToMeter(); - longitudinalDragForce = 0.5f * RHO * _frontalArea * FrontalCd * (_forwardSpeed * _forwardSpeed) * (_forwardSpeed > 0 ? -1f : 1f); + longitudinalDragForce = 2 * RHO * _frontalArea * FrontalCd * (_forwardSpeed * _forwardSpeed) * (_forwardSpeed > 0 ? -1f : 1f); lateralDragForce = 0.5f * RHO * _sideArea * SideCd * (_sideSpeed * _sideSpeed) * (_sideSpeed > 0 ? -1f : 1f); var force = new Vector3( longitudinalDragForce.MeterToInch(), lateralDragForce.MeterToInch(), 0 ).RotateAround( Vector3.Zero, WorldRotation ); Body.ApplyForce( force );