Todo jogo precisa receber entradas do usuário para que os jogadores interajam e vejam seu ambiente. O Roblox suporta quase todas as formas de entrada, incluindo mouse/teclado, toque, controles e VR.
Entrada multiplataforma
O Roblox é intrinsecamente multiplataforma, pois os jogadores podem descobrir e ingressar em jogos em seus telefones ou tablets, e depois continuar de onde pararam em seus PCs ou consoles. A entrada é especialmente importante como parte do seu plano de desenvolvimento multiplataforma.
Para simplificar esse processo, o Roblox fornece o Sistema de Ação de Entrada para definir ações como "pular", "correr" ou "atirar" e configurar vinculações para múltiplas entradas de hardware que acionam essas ações. Isso o libera de pensar em todos os aspectos técnicos das entradas de hardware e permite que você defina simplesmente quais entradas realizam quais ações.

Detecção de tipo de entrada
No desenvolvimento multiplataforma, é importante que você determine e responda ao tipo de entrada primário que um jogador está usando, normalmente para garantir que os elementos de UI como botões na tela e menus funcionem elegantemente em diferentes dispositivos.
Por exemplo, um dispositivo com suporte a toque assume que o toque é a entrada padrão e que botões de toque podem aparecer para ações, mas se um jogador conecta um teclado/mouse ou controle bluetooth adicional, você pode assumir que ele deseja mudar para esse tipo de entrada como primário e possivelmente usar o toque como uma entrada de backup para a UI na tela. A propriedade somente leitura UserInputService.PreferredInput é uma maneira conveniente de testar e se adaptar a múltiplos tipos de entrada em diferentes tipos de dispositivos, com base no comportamento antecipado do jogador.
O valor de PreferredInput muda com base nas entradas de dispositivos internas e na interação mais recente do jogador com um controle ou teclado/mouse conectado. Exemplos incluem:
| Cenário do Mundo Real | PreferredInput |
|---|---|
| O jogador está usando um telefone sem outros dispositivos de entrada conectados; sem possibilidade de mudança de tipo de entrada. | Touch |
| O jogador está usando um dispositivo móvel com um teclado e mouse bluetooth conectados, mas sem controle conectado. | KeyboardAndMouse |
| O jogador está usando um tablet com um controle bluetooth conectado, mas sem teclado ou mouse conectados. | Gamepad |
| O jogador está usando um Xbox ou PlayStation com um teclado e mouse bluetooth conectados e interagiu mais recentemente com o teclado ou mouse. | KeyboardAndMouse |
| O jogador está em um PC com Windows ou Mac com um controle conectado e interagiu mais recentemente com o controle. | Gamepad |
O seguinte LocalScript é um template para detectar inicialmente a entrada preferida e responder a mudanças durante o jogo.
Detecção de PreferredInput
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- O jogador está em um dispositivo com toque habilitado sem outros tipos de entrada disponíveis/conectados
print("Toque")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- O jogador conectou ou interagiu mais recentemente com um controle
print("Controle")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- O jogador conectou ou interagiu mais recentemente com um teclado ou mouse
print("TecladoEMouse")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)
Vinculações padrão
O Roblox fornece vinculações de entrada padrão para movimento, controle de câmera e interação básica com o ambiente — os jogadores do Roblox estão familiarizados com esses controles, portanto, você deve sobrescrevê-los apenas em casos específicos. Também note que as entradas reservadas não podem ser sobrescritas e sempre funcionarão com seu propósito pretendido.
| Ação | Mouse/Teclado | Gamepad | Toque |
|---|---|---|---|
| Abrir menu do Roblox | Esc | Iniciar botão (ButtonStart) | N/A |
| Console do Desenvolvedor | F9 | N/A | N/A |
| Modo tela cheia (Windows) Mostrar desktop (Mac) | F11 | N/A | N/A |
| Gravar vídeo (Windows) | F12 | N/A | N/A |
| Capturar tela | PrintScreen | N/A | N/A |