@@ -15,6 +15,7 @@ local WheelVehicleUtils = require("WheelVehicleUtils")
1515
1616local MAX_HEIGHT_PERCENTAGE = 0.8
1717local FORCE_TO_MASS_CAP = math.huge -- 2 * workspace.Gravity -- Force to mass ratio cap, used to prevent unrealistic forces
18+ local STEPPED_INTERVAL = 1 / 60
1819
1920local Suspension = setmetatable ({}, BaseObject )
2021Suspension .ClassName = "Suspension"
@@ -25,6 +26,7 @@ export type Suspension = typeof(setmetatable(
2526 _config : WheelVehicleTypes .SuspensionConfig ,
2627 _links : WheelVehicleUtils .Links ,
2728 _sign : number ,
29+ _elapsedDeltaTimeSim : number ,
2830 _vehicleObj : Model ,
2931 _topLinkHeight : number ,
3032 _lastHeight : number ,
@@ -55,6 +57,7 @@ function Suspension.new(vehicleObj: Model, config: WheelVehicleTypes.SuspensionC
5557 self ._sign = - 1
5658 end
5759
60+ self ._elapsedDeltaTimeSim = 0
5861 self ._lastHeight = 0
5962 self ._topLinkHeight = 0
6063 self ._maxForce = 0
@@ -96,9 +99,16 @@ function Suspension.SetConstants(self: Suspension)
9699 self ._maxForce = FORCE_TO_MASS_CAP * self ._vehicleObj .PrimaryPart .Mass / 4
97100end
98101
99- function Suspension .UpdateStepped (self : Suspension , deltaTimeSim : number )
102+ function Suspension .UpdateStepped (self : Suspension , subDeltaTimeSim : number )
100103 debug.profilebegin ("WheelVehicleSuspension:UpdateStepped" )
101104
105+ self ._elapsedDeltaTimeSim += subDeltaTimeSim
106+ if self ._elapsedDeltaTimeSim <= STEPPED_INTERVAL then
107+ return
108+ end
109+ local deltaTimeSim = self ._elapsedDeltaTimeSim
110+ self ._elapsedDeltaTimeSim = 0
111+
102112 local contactLinkPosition = self ._links .contactLink .WorldPosition
103113 local topLinkPosition = self ._links .topLink .WorldPosition
104114
0 commit comments