Uma grande porcentagem de sessões do Roblox é jogada em dispositivos com mouse e teclado, então é importante suportar adequadamente essas entradas ao projetar uma experiência para um público amplo.Uma vez que você está confortável com as entradas do mouse e do teclado, faça a experiência compatível em várias plataformas configurando as entradas móveis e de gamepad.
Para conveniência, o Roblox define as entradas de mouse e teclado mais comuns como bindings padrão, que, exceto as entradas reservadas, você pode substituir.
Entrada genérica do mouse
Como todas as entradas de dispositivos, você pode capturar as entradas do mouse usando UserInputService.Este serviço fornece uma maneira escalonável de capturar alterações de entrada e estados de entrada de dispositivos para vários dispositivos de uma só vez.O Roblox também suporta detecção de entrada de mouse legado com PlayerMouse e ClickDetectors .
Além disso, você pode usar ContextActionService para lidar com várias ações em uma única entrada dependendo do contexto, como usar uma ferramenta perto de uma rocha ou abrir uma porta quando estiver dentro de um construção / simulação.Veja Contexto Dependente de Entradas para informações sobre como definir ações de entrada específicas de contexto.
O seguinte LocalScript, quando colocado em StarterPlayerScripts, captura cliques de mouse e imprime a posição do mouse na janela Saída:
LocalScript - Saída de Clique e Posição do Mouse
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primeiro verifique se o "processedEvent" é verdadeiro
-- Isso indica que outro script já processou a entrada, então este é ignorado
if processedEvent then return end
-- Em seguida, verifique se a entrada foi um evento do mouse
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
Entrada de teclado genérica
Para acessar eventos de teclado, use o evento UserInputService.InputEnded para rastrear sempre que qualquer tecla ou outra entrada termina.Semelhante a eventos de mouse, este evento só funciona dentro de um LocalScript.
O seguinte LocalScript, quando colocado em StarterPlayerScripts, imprime o Enum.KeyCode de uma tecla pressionada para a janela Saída:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primeiro verifique se o "processedEvent" é verdadeiro
-- Isso indica que outro script já processou a entrada, então este é ignorado.
if processedEvent then return end
-- Em seguida, verifique se a entrada foi um evento de teclado
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
Entrada da UI
A entrada do mouse e do teclado funciona automaticamente com elementos de UI interativos, como TextButtons e ImageButtons, bem como TextBoxes que capturam a entrada de texto como um campo em um formulário.
Para mais informações sobre a criação de objetos de botão e texto de entrada, veja Botões e Entrada de Texto.
Modos de movimento de personagem
Você pode definir esquemas de controle de movimento do mouse e do teclado para experiências do Roblox alterando os valores de StarterPlayer.DevComputerMovementMode para um dos seguindo:
Opção | Descrição |
---|---|
Escolha do Usuário | Permite que os usuários escolham o esquema de controle desejado do menu na experiência. Essa opção está habilitada por padrão. |
Teclado do Mouse | Os usuários podem pressionar WASD para mover e Space para pular.Esta é a configuração padrão para usuários de teclado e mouse para a configuração Escolha do Usuário . |
Clique para mover | Os usuários só podem se mover pela experiência clicando com o botão direito em uma localização alvo. |
Programável | Desabilita todos os controles padrão e permite que você vincule seus próprios controles . |
Ícones de mouse
Você pode personalizar a aparência e o comportamento do ícone do mouse de um usuário dentro de sua experiência para criar um estilo coeso em todos os seus elementos de UI.Isso inclui alterar temporariamente o ícone do mouse do usuário em situações específicas, como pairar sobre um botão.
Mude o ícone
Você pode alterar o ícone do mouse do usuário em um LocalScript definindo a propriedade MouseIcon em UserInputService para um ID de recurso personalizado do Roblox.Por exemplo, as seguintes alterações LocalScript mudam o ícone padrão do mouse do usuário para um círculo com um ponto azul no meio:
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Esconder o ícone
Você pode ocultar o ícone do mouse do usuário definindo o UserInputService.MouseIconEnabled para false em um LocalScript .Por exemplo, o seguinte código muda o ícone do mouse de visível para invisível e de volta a cada dois segundos:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Bloqueie o ícone
Você pode bloquear a posição do ícone do mouse na tela usando com um valor de ou , então desbloqueá-lo novamente com um valor de .
Se o ícone do mouse de um usuário estiver bloqueado em uma posição, UserInputService.InputChanged ainda dispara quando o usuário move o mouse, passando a distância que o mouse se moveu.Por exemplo, o seguinte código de exemplo bloqueia o ícone do mouse do usuário após um segundo, então o Studio imprime o delta do mouse sempre que o usuário move o mouse:
local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)
Vinculações padrão do Roblox
O Roblox fornece vinculações de teclas padrão para todas as experiências.Estes são os inputs mais comuns usados para movimento, controle de câmera e interação básica do ambiente.Excluindo as vinculações reservadas, você pode usar ContextActionService para criar vinculações transplataforma que priorizam várias vinculações para uma única ação, como descrito em contexto dependente de entrada.
Enum.CoreGuiType recursos, como o Mochila ou Chat , têm uma lista de entradas padrão adicionais.Você não pode substituir entradas reservadas, como Esc (Menu do Roblox) ou F9 (Console do Desenvolvedor).
Essas vinculações são padrões do Roblox, mas você pode anulá-las com scripts personalizados.A maioria dos usuários do Roblox está familiarizada com esses controles, então você deve substituí-los apenas em casos específicos.
Entradas | Ação |
---|---|
W↑ | Avance para a frente |
S↓ | Mova-se de voltar |
A | Mova para a esquerda |
D | Mova para a direita |
Spacebar | Pular |
←→ | Girar a câmera para a esquerda ou para a direita |
Botão direito do mouse | Quando pressionado, arrastar o mouse move a visão da câmera ao redor |
Roda de rolagem do mouse IO | Aproxime ou afaste a câmera |
Shift | Alterne o bloqueio do mouse se EnableMouseLockOption estiver ativado |