Make WalkSpeed acceleration faster?

Hello, I am trying to find out how to make a players WalkSpeed accelerate faster, let me explain:
For example if a player has 100.000 WalkSpeed, it takes around 3 minutes for the player to actually reach that full 100.000 speed by default slowly making it’s way up from 0 to 100.000.
Does anybody here know a way to make a players WalkSpeed accelerate faster to that full speed?

1 Like

you have to make an inertia system, like every other games.
Search a tutorial on youtube or something, even for other game engines

Not sure if you have read my post at all, but ChatGPT definitely failed you on this one.

1 Like

not sure if it would work, but i dont see why you could just use a for loop and a wait, something like this?

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local playerWalkspeed = character.Humanoid.WalkSpeed

local MaxWalkSpeed = 100

for i = playerWalkspeed , MaxWalkSpeed , 1 do

wait(.1)

-- might be this, if it doesnt work swap it around.
playerWalkspeed = i

end

when the players walkspeed gets the the maximum value, it will go throught the rest of the script, if you obviously want to use an if statement to break it out thats fine.

That’s the thing, I’m not trying to increase the WalkSpeed itself, if a player has a WalkSpeed of 100K, it takes like 3 minutes for the player to reach that 100K walkspeed, the player slowly goes faster and faster till it reaches that 100K basically, even though the walkspeed is set to 100K, and I don’t want it to take 3 minutes.

so you have a value, saying the players walkspeed that may update any time, and you want the players actual walkspeed to slowly accelerate to that number, correct?

I’d suggest using Lerp.

local function lerp(startValue, endValue, time) -- :Lerp(endValue, time) 
	return startValue + (endValue - startValue) * time
end

hum.WalkSpeed = lerp(0, 100000, 60 * 3)

View it like this,

A player has a set WalkSpeed of 100.000
And how roblox works is that if the player Walks with that speed, it doesn’t instantly go from 0 to 100.000 Speed, it takes around 3 minutes for the player to actually reach that speed of 100.000 it has.
And my goal is to change that so the player reaches that full speed faster, in other words, faster ACCELERATION, not more WalkSpeed.

1 Like

aaahh i understand now, so base it on a car, say the cars max speed is 100, you want the walkspeed to accelerate to that number as if you were driving slow to fast to 100?

1 Like

I think using Momentum Controls 2 should work quite well to achieve what you’d like:

Adjusting the rate attribute will allow you to control how long it takes (in seconds) to reach the walk-speed value

Yes! That’s a perfect example, as with a normal car it takes a while for it to reach it’s full speed it has, and I want to pretty much decrease that wait time for robloxes WalkSpeed.

Sounds good, will give it a try. :+1:

1 Like

Unfortunately this doesn’t help me, as I can’t really increase the acceleration speed with it, only lower it down sort of.

If for example the rate is set to a small value like 0.125, it should take approx. that amount of seconds to reach the 100000 walk-speed. I can confirm It’s working when I test it in a new baseplate, and as a matter of fact even the default control script is accelerating me near instantaneously so I’m unsure as to why it’s taking 3 minutes for you to do so

first things first, set the walkspeed to 0.
create a bodyvelocity in the humanoidrootpart.
set the maxforce of the bodyvelocity .MaxForce = Vector3.new(math.huge,0,math.huge)
update the velocity of the bodyvelocity each frame = humanoid.MoveDirection * speed.
tweak the maxforce to how you like

Quite a peculiar issue. I suppose you are saying yo make the player go 0 to 100,000 in less then 3 seconds so 0 or 0.1 seconds.
Taking into account that you are using velocity for this measurement, I’d say to use HumanoidRootPart:ApplyImpulseVelocityDirection()
Maybe like this you can get more velocity? If not then use linearvelocity in planar mode? Basically making a custom movement system.

I don’t think that there is any other solution except these for your issue.

BodyvVelocity are deprecated use LinearVelocities.

2 Likes

I was able to find a way to artificially increase a humanoids acceleration rate using LinearVelocity:

Basically it reads the current humanoid move direction, whether or not it’s at the defined desired speed, and limits/adjusts the LinearVelocity instance accordingly

The acceleration is instantaneous but the difference isn’t really noticable until walkspeed values go past like 500

local RunService = game:GetService("RunService")

local Player = game:GetService("Players").LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()

local RootPart = Character:WaitForChild("HumanoidRootPart") :: BasePart
local Humanoid = Character:WaitForChild("Humanoid") :: Humanoid
local LV = script:WaitForChild("LinearVelocity")

local DesiredSpeed = 300

LV.Attachment0 = RootPart:WaitForChild("RootAttachment")
LV.MaxAxesForce = Vector3.new(math.huge, 0, math.huge)
LV.Parent = RootPart
Humanoid.WalkSpeed = DesiredSpeed

local function UpdateLV(dt)
	local MoveVector = Humanoid.MoveDirection
	if MoveVector.Magnitude == 0 then
		LV.Enabled = false
		LV.VectorVelocity = Vector3.zero
	else
		LV.Enabled = true
		if (RootPart.AssemblyLinearVelocity * Vector3.new(1, 0, 1)).Magnitude < DesiredSpeed then
			LV.VectorVelocity = MoveVector * DesiredSpeed
		else
			LV.VectorVelocity = Vector3.zero
		end
	end
end

RunService.Heartbeat:Connect(UpdateLV)

Yep this works for lower speeds, until around 5.000 WalkSpeed, then it starts flinging the player around and only flings harder the higher the speed is. Players can have a WalkSpeed of a million in my game, so this is unfortunately no use and would break their experience.