Debounces are cooldowns that are used to prevent functions from overflowing. Today, we're gonna learn how to use them.
Let's say there's a Part that kills you when you touch it. It also changes color upon touching it. But we don't want players to die from touching it too much, as it gets annoying. So, we'll add a debounce to a Script within our block to prevent that. BUT first, we'll need the foundation of the script.
function onTouched(hit)
if hit.Parent:FindFirstChildOfClass("Humanoid")~=nil then
hit.Parent:BreakJoints() -- oof
end
end
That's the kill function, as you can see once you touch the part your joints will break (oof). But this isn't a kill brick tutorial, so let's move on.
local canKill = true
function onTouched(hit)
if hit.Parent:FindFirstChildOfClass("Humanoid")~=nil then
hit.Parent:BreakJoints() -- oof
end
end
The canKill variable is our debounce. So, when the part is touched, canKill is rendered false and cannot kill a player for a few seconds. We'll edit the onTouched function so that it has a cooldown.
local canKill = true
function onTouched(hit)
if not canKill then
return
else
if hit.Parent:FindFirstChildOfClass("Humanoid")~=nil then
canKill = false
hit.Parent:BreakJoints() -- oof
wait(1)
canKill = true
end
end
end
If canKill is false, the function returns until canKill is true again.
If the part detects a Humanoid, canKill is false for a second, and the player's no longer has the privilege to keep their joints. After said second, canKill reactivates and another player can die on impact.
So, here's our finished script:
local canKill = true
function onTouched(hit)
if not canKill then
return
else
if hit.Parent:FindFirstChildOfClass("Humanoid")~=nil then
canKill = false
hit.Parent:BreakJoints() -- oof
wait(1)
canKill = true
end
end
end
workspace.Part.Touched:Connect(onTouched)
Thanks for reading.