Yes there is, one moment let me create a script.
I would recommend using the Player’s HumanoidRootPart as to get the amount of speed the player is accelerating at.
-
If you want to multiply depending on the WalkSpeed.
HumanoidRootPart.<
AssemblyLinearVelocity>.Magnitude / <
HumanoidWalkSpeed> * Multiplier
-
If you just want the acceleration speed:
HumanoidRootPart.<
AssemblyLinearVelocity>.Magnitude
-
If you just want to convert it into animation speed:
local maxSpeed = MAX_WALK_SPEED; -- Maximum speed value for full animation speed
local currentSpeed = <HumanoidRootPart>.AssemblyLinearVelocity.Magnitude;
local normalizedSpeed = math.min(currentSpeed / maxSpeed, 1);
-- If you want to apply a simple smoothing (ease out quad) as an example
local smoothedSpeed = normalizedSpeed * normalizedSpeed;
print(smoothedSpeed)
Ok, I believe I did it. Tell me if there are any errors on your end and then I can correct them. Same thing as before use this as a local script under StarterCharacterScripts:
local RunService = game:GetService("RunService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local MAX_WALK_SPEED = humanoid.WalkSpeed -- or any value of your choosing
local DEFAULT_RUNNING_ANIMATION = 16493330373
local DEFAULT_WALKING_ANIMATION = 16493310971
local runAnimation = Instance.new("Animation")
runAnimation.AnimationId = "rbxassetid://" .. DEFAULT_RUNNING_ANIMATION
runAnimation = animator:LoadAnimation(runAnimation)
runAnimation.Priority = Enum.AnimationPriority.Idle
local renderConnection
local isRunning = false
local function startRun()
if isRunning == true then
return
end
isRunning = true
runAnimation:Play()
end
local function stopRun()
if isRunning == false then
return
end
isRunning = false
runAnimation:Stop()
end
local function determine(deltaTime)
if humanoidRootPart.AssemblyLinearVelocity.Magnitude > 20 then
startRun()
local maxSpeed = MAX_WALK_SPEED -- Maximum speed value for full animation speed
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
local normalizedSpeed = math.min(currentSpeed / maxSpeed, 1)
-- If you want to apply a simple smoothing (ease out quad) as an example
local smoothedSpeed = normalizedSpeed * normalizedSpeed
runAnimation:AdjustSpeed(smoothedSpeed)
else
stopRun()
end
end
humanoid.StateChanged:Connect(function(previous, current)
if previous == Enum.HumanoidStateType.Running then
if renderConnection ~= nil then
renderConnection:Disconnect()
renderConnection = nil
stopRun()
end
elseif current == Enum.HumanoidStateType.Running then
if renderConnection == nil then
renderConnection = RunService.RenderStepped:Connect(determine)
end
end
end)
character:WaitForChild("Animate"):WaitForChild("walk"):WaitForChild("WalkAnim").AnimationId = "rbxassetid://" .. DEFAULT_WALKING_ANIMATION
Going off of what Ace said, I think it would be very useful to add a change in animation speed as well.
What went wrong: no walking animation anymore, When running the running animation plays but frozen in one keyframe
Heres the console although nothing came in it whenever i started/stopped running:
also yes, i think that making the run animation faster would be even better
Ah, I see the problem, one moment.
I have just edited the script above to fix the problem and apply Ace’s contributions to the animation speed.
Let me know if there are any errors from the script, or if it does not function as intended.
it seems the animation refresh works great, though the walking animation is now the default roblox and the running animation is the custom running animation
My apologies, let me add a place where you can edit the custom walking animation.
Just edited it to allow you to change the default walking animation ID. Hopefully nothing errors, if it does let me know.
You are a legend, thank you so much my dude.
which part exactly changes the speed of the animation when running?
runAnimation:AdjustSpeed(smoothedSpeed) is the part that changes the speed of the animation.
If you want to scale to make it faster or whatnot you could do runAnimation:AdjustSpeed(smoothedSpeed * x) x being any number you choose.
Hey, apologies for the late comeback but I just tested the game in roblox itself, not in studio and in there no animations are loaded. only jump, whenever i walk or run my character stays just standing up straight
Where is the game published under and where are the animations published under?
The game is published under my group and the animations under my profile, should I add the animations to my group too?
I’m pretty sure that’s the problem. So yes. Tell me what happens.
Yea, this was the problem. Thanks!
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.