Un gran porcentaje de sesiones de Roblox se reproduce en dispositivos con un mouse y un teclado, por lo que es importante apoyar adecuadamente estas entradas al diseñar una experiencia para un amplio público.Una vez que estés cómodo con las entradas del ratón y el teclado, haz que tu experiencia sea compatible en múltiples plataformas configurando las entradas móviles y de consola.
Para conveniencia, Roblox establece las entradas de ratón y teclado más comunes como atajos predeterminados que, excepto las entradas reservadas, puedes reemplazar.
Entrada de ratón genérica
Al igual que todas las entradas de dispositivos, puedes capturar las entradas del mouse usando UserInputService .Este servicio proporciona una forma escalable de capturar cambios de entrada y estados de entrada de dispositivos para múltiples dispositivos a la vez.Roblox también admite la detección de entrada de ratón legado con PlayerMouse y ClickDetectors .
Además, puedes usar ContextActionService para manejar múltiples acciones en una sola entrada dependiendo del contexto, como usar una herramienta cuando estás cerca de una roca o abrir una puerta cuando estás dentro de un construcción.Vea Entradas dependientes del contexto para obtener información sobre la configuración de acciones de entrada específicas del contexto.
El siguiente LocalScript , cuando se coloca en StarterPlayerScripts , captura clics de ratón y imprime la posición del ratón en la ventana de salida :
LocalScript - Salida de clic de ratón y posición
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primero verifique si el "evento procesado" es verdadero
-- Esto indica que otro script ya había procesado la entrada, por lo que este se ignora
if processedEvent then return end
-- A continuación, compruebe que la entrada fue un evento del ratón
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 acceder a los eventos del teclado, use el evento UserInputService.InputEnded para rastrear cuando termina cualquier golpe de tecla o cualquier otra entrada.Similar a eventos del ratón, este evento solo funciona dentro de un LocalScript.
El siguiente LocalScript , cuando se coloca en StarterPlayerScripts , imprime el Enum.KeyCode de una tecla presionada en la ventana de salida:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primero verifique si el "evento procesado" es verdadero
-- Esto indica que otro script ya había procesado la entrada, por lo que este se ignora.
if processedEvent then return end
-- A continuación, compruebe que la entrada fue un 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
La entrada de ratón y teclado funciona automáticamente con elementos de interfaz de usuario interactiva como TextButtons y ImageButtons , así como TextBoxes que capturan la entrada de texto como un campo en un formulario.
Para obtener más información sobre la creación de objetos de botones y texto, consulte Botones y Entrada de texto.
Modos de movimiento de caracteres
Puedes establecer esquemas de control de movimiento del ratón y el teclado para las experiencias de Roblox cambiando los valores de StarterPlayer.DevComputerMovementMode a uno de los siguiendo:
Opción | Descripción |
---|---|
Elección del usuario | Permite a los usuarios elegir su esquema de control deseado desde el menú en experiencia. Esta opción se habilita por defecto. |
Teclado del ratón | Los usuarios pueden presionar WASD para moverse y Space para salto.Esta es la configuración predeterminada para usuarios de teclado y mouse para la configuración de elección del usuario . |
Haga clic para mover | Los usuarios solo pueden moverse por la experiencia haciendo clic derecho en una ubicación de destino. |
Programable | Desactiva todos los controles predeterminados y te permite vincular tus propios controles . |
Iconos de ratón
Puedes personalizar el aspecto y el comportamiento del icono del ratón de un usuario dentro de tu experiencia para crear un estilo cohesivo en todos los elementos de tu interfaz de usuario.Esto incluye cambiar temporalmente el icono del mouse del usuario en situaciones específicas, como pasar el mouse sobre un botón.
Cambiar el ícono
Puedes cambiar el icono del mouse del usuario en un LocalScript al establecer la propiedad MouseIcon en UserInputService a un ID de activo de Roblox personalizado.Por ejemplo, los siguientes LocalScript cambian el icono predeterminado del mouse del usuario a un círculo con un punto azul en el medio:
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Ocultar el ícono
Puedes ocultar el icono del mouse del usuario estableciendo el UserInputService.MouseIconEnabled a false en un LocalScript .Por ejemplo, el siguiente código cambia el icono del mouse de visible a invisible y de vuelta cada dos segundos:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Bloquear el ícono
Puedes bloquear la posición del íconodel mouse en la pantalla usando UserInputService.MouseBehavior con un valor de Enum.MouseBehavior o LockCurrentPosition , luego desbloquearlo nuevamente con un valor de LockCenter o Default .
Si el icono del ratón de un usuario está bloqueado en una posición, UserInputService.InputChanged sigue disparando cuando el usuario mueve el ratón, pasando a distancia la que el ratón se ha movido.Por ejemplo, el siguiente código de ejemplo bloquea el icono del mouse del usuario después de un segundo, luego Studio imprime el delta del mouse cada vez que el usuario mueve el 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)
Vínculos predeterminados de Roblox
Roblox proporciona atajos de tecla predeterminados para todas las experiencias.Estos son los inputs más comunes utilizados para el movimiento, el control de la cámara y la interacción básica del entorno.Excluyendo las vinculaciones reservadas, puedes usar ContextActionService para crear vinculaciones cruzadas que prioricen múltiples vinculaciones a una sola acción, como se describe en entradas dependientes del contexto.
Enum.CoreGuiType características, como la mochila o chat , tienen una lista de entradas predeterminadas adicionales.No puedes sobrescribir entradas reservadas como Esc (menú de Roblox) o F9 (Consola del desarrollador).
Estas vinculaciones son predeterminadas de Roblox, pero puedes anularlas con scripts personalizados.La mayoría de los usuarios de Roblox están familiarizados con estos controles, por lo que solo deberías anularlos en casos específicos.
Entradas | Acción |
---|---|
W↑ | Moverse hacia adelante |
S↓ | volver |
A | Moverse a la izquierda |
D | Mover a la derecha |
Spacebar | Saltar |
←→ | Girar la cámara hacia la izquierda o hacia la derecha |
Botón derecho del ratón | Al presionar, arrastrar el mouse mueve la vista de la cámara alrededor |
Rueda de desplazamiento del ratón IO | Acercar o alejar la cámara |
Shift | Alterna el bloqueo del mouse si EnableMouseLockOption está habilitado |