First version:
userInput.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
W = true
if tick() - prev <= 0.2 then
hum.WalkSpeed = 20
end
prev = tick()
end
if input.KeyCode == Enum.KeyCode.A then
A = true
end
if input.KeyCode == Enum.KeyCode.S then
S = true
end
if input.KeyCode == Enum.KeyCode.D then
D = true
end
end)
userInput.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
W = false
end
if input.KeyCode == Enum.KeyCode.A then
A = false
end
if input.KeyCode == Enum.KeyCode.S then
S = false
end
if input.KeyCode == Enum.KeyCode.D then
D = false
end
if W == false and A == false and S == false and D == false then
hum.WalkSpeed = 10
end
end)
Second version:
function mov(input, key, var, bool)
if input.KeyCode == key then
var = bool
end
end
userInput.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then
W = true
if tick() - prev <= 0.2 then
hum.WalkSpeed = 20
end
prev = tick()
end
mov(input, Enum.KeyCode.A, A, true)
mov(input, Enum.KeyCode.S, S, true)
mov(input, Enum.KeyCode.D, D, true)
end)
userInput.InputEnded:Connect(function(input)
mov(input, Enum.KeyCode.W, W, false)
mov(input, Enum.KeyCode.A, A, false)
mov(input, Enum.KeyCode.S, S, false)
mov(input, Enum.KeyCode.D, D, false)
if W == false and A == false and S == false and D == false then
hum.WalkSpeed = 10
end
end)
Basically what both versions should do is when you double tap the "W" key, you enable sprinting and are able to freely run around with WASD. It is disabled when you stop moving completely.
I thought they would both function the same, however, only the first version does what I wanted it to do. The second version never returns false so you end up running forever.
I just wanted to somehow shorten it. Is there a reason why it does this?
