Dynamic footstep system help?

hello, im right now making a backrooms horror game and have recently been trying to make a footstep system depending on the players speed.

I have tried to implement this many times however it hasnt gone to well, i first decided to use the characterRblxSounds in the players local scrpts and edit it from there, but it was to hard and complex for my understanding.

I used many systems made by other players but these still did not give me the outcome i wanted, so i have deleted everything and i want the start the system from scratch but not sure how?

heres the original edited characterRblxSfx example, obviously i want to make it dynamic.

as you can see the speed of the footstep noise is not changing while the player is running, leading to janky sort of sprinting.

1 Like

I highly recommend you make your footstep system to get a fuller understanding of the script itself rather than relying on other people’s scripts.

Dynamic footstep includes pitch, volume and playback.
Maybe when the character starts sprinting, you can adjust these 3 things.

This is my dynamic footstep system that is relative to the player’s speed:

yeah i dont like using free models at all, unless i have to.

cool system dude, exactly what i need, have you got any things i can use to help make the same thing? as in tutorial wise etc.

could i make a script using run service that checks the players speed add a sound into the players character, and update the pitch and speed of the sound depending on the players velocity?

Alternative approach: edit the running/walking animations and use keyframes to play step sounds. That way, the sounds play exactly when a user steps.

Sure thing! I don’t mind explaining how I did it.

The first thing I did was make these empty variables before a RunService

local dynamicVolume = 0
local dynamicPlaybackSpeed = 0

Then, I simply clamp and lerp the amount relative to the player’s speed

local maxdynamicVolume = 1
dynamicVolume = math.clamp(lerp(0, maxdynamicVolume, rootpart.Velocity.Magnitude/maxSpeed), 0, maxdynamicVolume)
local mindynamicPlaybackSpeed = .8
local maxdynamicPlaybackSpeed = 1
dynamicPlaybackSpeed = math.clamp(lerp(mindynamicPlaybackSpeed, maxdynamicPlaybackSpeed, rootpart.Velocity.Magnitude/maxSpeed), mindynamicPlaybackSpeed, maxdynamicPlaybackSpeed)

Remember that this method is for individualized sounds so each sound is uniquely different from one another.

I’d say it’s a bit tedious to implement all these, but I guess it’s worth it?

hmm sure ill give this a go, the only problem i think i may face is that how will i play the sound without it sounding horrible as the footstep sound it like 0 seconds long so i might spam, no?

sorry i didn’t catch that. wdym by 0 seconds long and it might spam?

say if i were to make the sound play over and over, because the length of the sound is 0.5 seconds wouldnt it just sound like the footsteps are spamming?

The way I play my sound is through animation events, so it wouldn’t spam and overall enhance realism, but since your game is in first person, I’d suggest you can add a debounce between each sound. For example if the character were to run, and can set the debounce lower.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.