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

Waiting for player to press any key?

Asked by
farizarps 132
6 years ago
Edited 6 years ago

I'm working on a key-bind mapper and I have a function that's supposed to wait until the player presses any key and returns the key the player pressed.

module.Input = function()
    frame.Visible = true
    local key = UserInputService.InputEnded:Wait() 
    frame.Visible = false
    print(key.KeyCode)
    return key.KeyCode
end

this does not wait for keypress and instantly returns the Unknown Keycode. so i modified it:

module.Input = function()
    frame.Visible = true
    local key = nil
    repeat key = UserInputService.InputEnded:Wait() until UserInputService.InputEnded:Wait() ~= Enum.KeyCode.Unknown
    frame.Visible = false
    print(key.KeyCode)
    return key.KeyCode
end

this actually waits for the keypress but still returns unknown Keycode

0
Unless I’m missing something here the second one isn’t actually assigning your key variable to the KeyCode. DinozCreates 1070 — 6y
0
i forgot to put that in the question. Updated farizarps 132 — 6y

1 answer

Log in to vote
1
Answered by
farizarps 132
6 years ago

I've fixed my problem. ill share so others can learn from it.

UserInputService.InputEnded:Wait() returns the inputObject, in order to know what key was presed, we use inputObject.KeyCode

In repeat key = UserInputService.InputEnded:Wait() until UserInputService.InputEnded:Wait() ~= Enum.KeyCode.Unknown because i was comparing an inputObject to a keycode it would return true.

module.Input = function()
    frame.Visible = true
    local key = nil
    repeat key = UserInputService.InputEnded:Wait() until key.KeyCode ~= Enum.KeyCode.Unknown
    frame.Visible = false
    print(key)
    return key.KeyCode
en
0
@farizarps good explanation. oftenz 367 — 6y
Ad

Answer this question