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?
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.
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.
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?
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.
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.
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.