I had noticed that "KeyDown" is deprecated and I was wondering why, because I use it for a lot of things. Is there really a difference between keydown and inputbegan?
Welcome to the UserInputService tutorial! In this tutorial, you will be learning about this wonderful service and how it’s better to use its
InputBegan event rather than the
This service is a very convenient way to get user input from players. It gets input from phones, tablets, computers, and Xbox console! The
KeyDown event can’t do it. Its
InputBegan event can run when a user doesn’t chat, unlike
KeyDown event runs regardless of a player chatting.
You can also use the ContextActionService to key bind actions to keys and get user input, but
UserInputService can do something similar and we are not focusing on Context.
This script below will make a part pressing the 'Q' key.
--LocalScript local UserInputService = game:GetService"UserInputService" UserInputService.InputBegan:Connect(function(input, processed) if not processed then -- if not chatting then if input.KeyCode == Enum.KeyCode.Q then -- if the key is q local part = Instance.new("Part") part.Parent = workspace end end end)
What I like is that on line 7, you have to check the input code using an
Enum. When you check it, the
Enum.KeyCode.[KEY] will show a list of keys, and you can find any key!
KeyDown can’t get keys like this.
It's deprecated for many reasons, one is that it's extremely unreliable as you can't know if roblox did anything with the event, like typing in a TextBox. InputBegan includes an event for ANY type of input, may it be mouse, keyboard, controller, etc.
I'd suggest switching to InputBegan and InputEnded, simply because it's better than KeyUp and KeyDown, and those MIGHT be removed in the future.