Se produce una gran cantidad de sesiones de Roblox en dispositivos con un mouse y teclado, por lo que es importante apoyar correctamente estos controles cuando diseñas una experiencia para un público amplio. Una vez que estés cómodo con los controles del mouse y el teclado, configura tu experiencia para que sea compatible en múltiples plataformas al configurar dispositivos móviles y plataformas de juegos controles.
Para conveniencia, Roblox establece las entradas de mouse y teclado más comunes como bloqueos predeterminados que, excepto los bloqueos reservados, puedes sobrescribir.
Entrada genérica del mouse
Al igual que todos los demás dispositivos de entrada, puede capturar los ingresos del mouse usando UserInputService . Este servicio proporciona una forma escalable de capturar los cambios de entrada y estados de entrada del dispositivo para múltiples dispositivos al mismo tiempo. Roblox también soporta la detección de mouse legado con PlayerMouse y ClickDetectors .
Además, puede usar ContextActionService para manejar múltiples acciones en un solo input dependiendo del contexto, como usar una herramienta cuando se acerca a una roca o abrir una puerta cuando se está dentro de un construcción. Vea Contextos Dependientes de Entradas para obtener información sobre la configuración de acciones específicas del contexto.
El siguiente LocalScript, cuando se coloca en StarterPlayerScripts, captura clics de mouse y imprime la posición del mouse en la ventana de salida:
LocalScript - Salida del clic del mouse y posición
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primero compruebe 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
-- Luego, asegúrese de que la entrada sea un 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 acceder a los eventos del teclado, use el evento UserInputService.InputEnded para rastrear cuando se termina cualquier keystroke o otro evento de entrada. Como con los eventos de mouse, este evento solo funciona dentro de un LocalScript .
El siguiente LocalScript, cuando se coloca en StarterPlayerScripts, imprime el Enum.KeyCode de una tecla presionada para la ventana de salida:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Primero compruebe 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
-- Luego, asegúrese de que la entrada sea 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 interactiva, como TextButtons y ImageButtons , así como TextBoxes que captura la entrada de texto como un campo en una forma.
Para obtener más información sobre la creación de objetos de entrada de botones y texto, see Botones y Entrada de texto .
Modos de movimiento de personajes
Puede configurar los controles de movimiento del mouse y del teclado para las experiencias de Roblox cambiando los valores de StarterPlayer.DevComputerMovementMode a uno de los siguiendo:
Opción | Descripción |
---|---|
Elección de usuario | Permite a los usuarios elegir su esquema de control deseado desde el menú de inicio de la experiencia. Esta opción está habilitada por defecto. |
Ratón del Teclado | Los usuarios pueden presionar WASD para mover y 1> Espacio1> para salto. Esta es la configuración predeterminada para los usuarios de teclado y mouse para la configuración de 4> Elección de usuario4>. |
Haz clic para moverte | Los usuarios solo pueden moverse por la experiencia haciendo clic con el botón derecho en una ubicación de destino. |
Programables | Desactiva todos los controles predeterminados y te permite vincular tus propios controles. |
Iconos de mouse
Puedes personalizar la apariencia y el comportamiento del icono del mouse de un usuario dentro de tu experiencia para crear un estilo cohesivo en todos tus elementos de UI, como cambiar temporalmente el icono del mouse del usuario en algunas situaciones, como pasar el cursor sobre un botón.
Cambiar el icono
Puede cambiar el icono del mouse del usuario en un LocalScript por establecer la propiedad MouseIcon en UserInputService a un ID de activo personalizado de Roblox. Por ejemplo, las siguientes 2>Class.LocalScript2> cambian el icono del mouse del usuario a un círculo con un punto azul en
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Ocultando el icono
Puedes ocultar el icono del mouse del usuario al configurar 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
Bloqueo del icono
Puede bloquear la posición del íconodel mouse a la pantalla usando UserInputService.MouseBehavior con un valor de Enum.MouseBehavior o LockCurrentPosition, luego desbloquea de nuevo con un valor de 1> Class.MouseBehavior|Default1> .
Si el icono del mouse de un usuario está bloqueado en una posición, UserInputService.InputChanged todavía se ejecuta cuando el usuario mueve el ratón, pasando en la distancia que el mouse 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 mouse delta cuando el usuario mueve su ratón:
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)
Configuración predeterminada de Roblox
Roblox proporciona atajos de teclas predeterminados para todas las experiencias. Estos son los elementos de entrada más comunes que se utilizan para el movimiento, el control de cámara y la interacción básica del entorno. Excluyendo los atajos de teclas reservados, puede usar ContextActionService para crear enlaces de plataforma que priorizan múltiples enlaces a una sola acción, como se describe en Entradas de contexto
Enum.CoreGuiType características, como la mochila o chat , tienen una lista de entradas de valor predeterminadas. No puedes sobrescribir entradas reservadas, como 0>Esc0> (menú de Roblox) o Enum.CoreGuiType3> (consola de desarrollador).
Estas vinculaciones son predeterminadas de Roblox, pero puedes Overlas con scripts personalizados. La mayoría de los usuarios de Roblox están familiarizados con estos controles, por lo que solo deberás Overlas en casos específicos.
Entradas | Acción |
---|---|
W↑ | Avanzar |
S↓ | Moverse de volver |
Un | Moverse hacia la izquierda |
D | Mover a la derecha |
Barra espaciadora | Saltar |
←→ | Girar la cámara hacia la izquierda o hacia la derecha |
Botón derecho del ratón | Cuando se presiona, arrastrar el mouse mueve la vista de la cámara |
Rueda de ratón de desplazamiento IO | Enfoque la cámara dentro o fuera |
Mayús | Alternar el bloqueo del mouse si EnableMouseLockOption está habilitado |