Entrada de Mouse e Teclado

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Uma grande porcentagem das sessões do Roblox é jogada em dispositivos com mouse e teclado, por isso é importante suportar adequadamente essas entradas ao projetar uma experiência para um público amplo. Quando você estiver confortável com as entradas de mouse e teclado, torne sua experiência compatível em várias plataformas configurando as entradas mobile e gamepad.

Para sua conveniência, o Roblox define as entradas mais comuns de mouse e teclado como ligações padrão que, com exceção das ligações reservadas, você pode sobrescrever.

Entrada de mouse genérica

Como todas as entradas de dispositivo, você pode capturar entradas de mouse usando UserInputService . Este serviço fornece uma maneira escalável de capturar mudanças de entrada e estados de entrada de dispositivo para vários dispositivos de uma só vez. 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 pedra ou abrir uma porta dentro de um construção / simulação. Consulte Context Dependent Inputs para obter informações sobre como definir ações de entrada específicas do contexto.

O seguinte LocalScript, quando colocado em StarterPlayerScripts, captura cliques do mouse e imprime a posição do mouse na janela Output:

LocalScript - Clique e Posição do Mouse de 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 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 pressionamento de tecla ou outra entrada terminar. Semelhante aos eventos do 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 Output:


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 de UI

A entrada de mouse e teclado funciona automaticamente com elementos interativos da interface do usuário, 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 como criar botões e objetos de entrada de texto, veja Botões e Entrada de Texto.

Modos de Movimento do Personagem

Você pode definir controles de mouse e teclado para as experiências do Roblox alterando os valores de StarterPlayer.DevComputerMovementMode para um dos seguindo:

OpciónDescripción
Elección del usuario Permite a los usuarios elegir su esquema de control deseado en el menú de experiencia. Esta opción está habilitada por defecto.
Ratón de Teclado Los usuarios pueden presionar W A S D para moverse y Espacio para salto. Este es el ajuste predeterminado para los usuarios de teclado y mouse para el configuración UserChoice .
Haga clic para mover Los usuarios solo pueden moverse a través de la experiencia haciendo clic derecho en una ubicación objetivo.
Programable Desactiva todos los controles predeterminados y te permite atar tus propios controles .

Ícones de Rato

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 elementos da interface do usuário. Isso inclui mudar temporariamente o ícone do mouse do usuário em situações específicas, como pairar sobre um botão.

Mudando o ícone

Você pode alterar o ícone do mouse do usuário em LocalScript configurando a propriedade MouseIcon em UserInputService para um ID de ativo Roblox personalizado. Por exemplo, o seguinte LocalScript altera o ícone do mouse padrão do usuário para um círculo com um ponto azul no meio:


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"

Escondendo o ícone

Você pode esconder o ícone do mouse do usuário configurando UserInputService.MouseIconEnabled para false em um LocalScript . Por exemplo, o código a seguir muda o ícone do mouse de visível para invisível e volta a cada dois segundos:


local UserInputService = game:GetService("UserInputService")
while true do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

Bloqueando o ícone

Você pode bloquear a posição do ícone do mouse na tela usando UserInputService.MouseBehavior com um Enum.MouseBehavior valor de LockCurrentPosition ou LockCenter, e depois desbloqueá-lo novamente com um valor de Default.

Se o ícone do mouse de um usuário estiver trancado em uma posição, UserInputService.InputChanged ainda dispara quando o usuário move o mouse, passando na distância que o mouse foi movido. Por exemplo, a seguinte amostra de código 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 seu 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)

Ligações Padrão do Roblox

O Roblox fornece atalhos de chave padrão para todas as experiências. Estas são as entradas mais comuns usadas para movimento, controle de câmera e interação básica do ambiente. Excluindo as atalhos reservados, você pode usar ContextActionService para criar atalhos de plataforma cruzada que priorizam várias atalhos para uma única ação, conforme descrito em Entradas contextualmente dependentes .

Enum.CoreGuiType características, como o Mochila ou Bate-papo , tem uma lista de entradas padrão adicionais. Você não pode substituir entradas reservadas, como Esc (menu Roblox) ou F9 (Console do desenvolvedor).

Essas associações são padrão do Roblox, mas você pode substituí-las com scripts personalizados. A maioria dos usuários do Roblox está familiarizada com esses controles, então você só deve substituí-los em casos específicos.

EntradasAcción
CON Moverte hacia adelante
S Moverte volver
UNMover a la izquierda
DMover a la derecha
Barra de espacioSaltar
Gire la cámara a la izquierda o a la derecha
Botón derecho del ratón Cuando se presiona, arrastrar el ratón mueve la vista de la cámara
Rueda de desplazamiento del ratón
I O
Zoom de la cámara hacia adentro o hacia afuera
CambioAlterna el bloqueo del ratón si EnableMouseLockOption está habilitado