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.
1 | module.Input = function () |
2 | frame.Visible = true |
3 | local key = UserInputService.InputEnded:Wait() |
4 | frame.Visible = false |
5 | print (key.KeyCode) |
6 | return key.KeyCode |
7 | end |
this does not wait for keypress and instantly returns the Unknown Keycode. so i modified it:
1 | module.Input = function () |
2 | frame.Visible = true |
3 | local key = nil |
4 | repeat key = UserInputService.InputEnded:Wait() until UserInputService.InputEnded:Wait() ~ = Enum.KeyCode.Unknown |
5 | frame.Visible = false |
6 | print (key.KeyCode) |
7 | return key.KeyCode |
8 | end |
this actually waits for the keypress but still returns unknown Keycode
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.
1 | module.Input = function () |
2 | frame.Visible = true |
3 | local key = nil |
4 | repeat key = UserInputService.InputEnded:Wait() until key.KeyCode ~ = Enum.KeyCode.Unknown |
5 | frame.Visible = false |
6 | print (key) |
7 | return key.KeyCode |
8 | en |