Uma grande porcentagem das sessões do Roblox é jogada em dispositivos com mouse e teclado, por isso é importante suportar essas entradas ao projetar um jogo para um amplo público.
Para simplificar as entradas multiplataforma, incluindo mouse/teclado, o Roblox fornece o Sistema de Ação de Entrada para definir ações como "pular", "correr" ou "disparar" e configurar vinculações para múltiplas entradas de hardware que dirigem essas ações.
O Roblox também suporta entradas gerais de mouse/teclado através de eventos de UserInputService como InputBegan e InputEnded e métodos como IsKeyDown() para verificar se uma tecla específica está pressionada em um teclado.
Detecção do tipo de entrada
No desenvolvimento multiplataforma, é importante que você determine e responda ao tipo de entrada PreferredInput que um jogador está usando, normalmente para garantir que os elementos de UI como botões e menus na tela funcionem de forma elegante e suportem interação entre dispositivos.
Por exemplo, um PC ou laptop assume que o mouse/teclado é a entrada padrão, mas um jogador pode optar por conectar um controle bluetooth. Nesse caso, o mouse/teclado continua sendo uma entrada válida, mas você pode presumir que o jogador deseja mudar para o controle conectado como o tipo de entrada primário.
Consulte a detecção do tipo de entrada para mais informações.
Entrada genérica de mouse/teclado
Além do Sistema de Ação de Entrada, você pode capturar as entradas de mouse e teclado usando UserInputService. O seguinte LocalScript, quando colocado em StarterPlayerScripts, captura as fases de início e fim de teclas e cliques de mouse e imprime o resultado na janela de Saída.
LocalScript - Saída de Tecla/Mouse Começou e Terminou
local UserInputService = game:GetService("UserInputService")
local function onInputBegan(inputObject, processedEvent)
-- Retorna se outro script já processou a entrada
if processedEvent then return end
print(inputObject.KeyCode.Name, "começou!", inputObject.Position)
end
local function onInputEnded(inputObject, processedEvent)
-- Retorna se outro script já processou a entrada
if processedEvent then return end
print(inputObject.KeyCode.Name, "terminou!", inputObject.Position)
end
UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputEnded:Connect(onInputEnded)
Ícone do mouse
Você pode personalizar a aparência e o comportamento do ícone do mouse de um jogador dentro do seu jogo para criar um estilo coeso entre todos os seus elementos de UI. Isso inclui mudar temporariamente o ícone do mouse do jogador em circunstâncias específicas, como ao passar o mouse sobre um botão.
Você pode mudar o ícone do mouse do jogador em um LocalScript definindo a propriedade MouseIcon em UserInputService para um ID de ativo do Roblox personalizado. Por exemplo, o seguinte LocalScript muda o ícone padrão do mouse do jogador para um círculo com um ponto azul no meio.
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"