Finished manual gearbox

This commit is contained in:
Ivan Grachyov
2021-11-11 22:16:33 +05:00
parent f55c30c4d3
commit d73f424d7f
15 changed files with 588 additions and 62 deletions

View File

@@ -1,14 +1,14 @@
Clutch = class("Clutch")
Clutch = class('Clutch')
function Clutch:initialize(options)
options = options or {}
self.stiffness = options.Stiffness or 0
self.capacity = options.Capacity or 0
self.damping = options.Damping or 0
self.maxTorque = options.MaxTorque or 0
self.stiffness = options.Stiffness or 10
self.capacity = options.Capacity or 2
self.damping = options.Damping or 0.3
self.maxTorque = options.MaxTorque or 150
self.press = 1
self.press = 0
self.slip = 0
self.targetTorque = 0
self.torque = 0
@@ -25,9 +25,10 @@ function Clutch:update()
local gboxRatio = self._gearbox and self._gearbox.ratio or 0
local gboxRatioNotZero = gboxRatio ~= 0 and 1 or 0
self.slip = (engRPM * someConversionCoeff - gboxRPM * someConversionCoeff) * gboxRatioNotZero / 2
self.slip = ((engRPM - gboxRPM) * someConversionCoeff) * gboxRatioNotZero / 2
self.targetTorque = math.clamp(self.slip * self.stiffness * (1 - self.press), -self.maxTorque, self.maxTorque)
self.torque = math.lerp(self.torque, self.targetTorque, self.damping)
self.torque = math.lerp(self.damping, self.torque, self.targetTorque)
end
function Clutch:linkEngine(engine)
@@ -37,3 +38,7 @@ end
function Clutch:linkGearbox(gbox)
self._gearbox = gbox
end
function Clutch:setPress(val)
self.press = math.clamp(val, 0, 1)
end