--!optimize 2 --!native --!strict local CrouchModule = { IsCrouching = false, StandHeight = 2.1, CrouchHeight = .6, WalkSpeedMultiplier = 6, CrouchSpeed = .2 } CrouchModule.__index = CrouchModule local Tween = require(game:GetService("ReplicatedStorage"):WaitForChild("Tween")) function CrouchModule.constructor(Humanoid: Humanoid) return setmetatable({ Humanoid = Humanoid }, CrouchModule) end local CrouchTween = Tween.constructor() function CrouchModule:Crouch(StandingWalkSpeed: number) local Easing = TweenInfo.new(CrouchModule.CrouchSpeed, Enum.EasingStyle.Linear) CrouchTween:Start(self.Humanoid, { HipHeight = CrouchModule.CrouchHeight, WalkSpeed = math.max(1, StandingWalkSpeed-CrouchModule.WalkSpeedMultiplier) }, Easing) CrouchModule.IsCrouching = true end function CrouchModule:Stand(CrouchingWalkSpeed: number) local Easing = TweenInfo.new(CrouchModule.CrouchSpeed, Enum.EasingStyle.Linear) CrouchTween:Start(self.Humanoid, { HipHeight = CrouchModule.StandHeight, WalkSpeed = math.max(1, CrouchingWalkSpeed+CrouchModule.WalkSpeedMultiplier) }, Easing) CrouchModule.IsCrouching = false end return CrouchModule