Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
2

humanoid.Running() firing at annoying times?

Asked by 9 years ago
humanoid.Running:connect(function(speed)
    if speed > 2 then
        print(speed)
        walking = true
    else
        walking = false
        humanoid.WalkSpeed = 10
    end
end)

This is the code I'm using to detect if a player is walking. This works, but when a player jumps, the .Running event fires again. When the player lands, the event fires 3 more times. How can I make it so that the event isn't fired again when the player jumps? And how can I make it so that the event doesn't fire rapidly when they land(add a debounce?), or better yet, not at all?

1 answer

Log in to vote
0
Answered by 9 years ago

Unfortunately, you can't prevent the event from firing in specific circumstances unless you can deactivate the event and reconnect it later (which isn't helpful here).

Fortunately, you don't need to prevent it from firing (based on the code you've provided). The worst that happens is that your code runs a few extra times - but the important thing is that it doesn't make any of the values wrong ("walking" will still be correct).

Note that adding debounce to save processing time doesn't work in this case: just checking for debounce would often double the time it takes for Roblox to execute your function!

However, say you only wanted some code to execute if the player's walking status changed. In that case, do:

humanoid.Running:connect(function(speed)
    local newWalking = speed > 2
    if newWalking == walking then return end --no change
    walking = newWalking
    --Walking has changed, add code to deal with that here
end)
Ad

Answer this question