Entrada de ratón y teclado

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

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ónDescripció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 do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

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.

EntradasAcción
WAvanzar
SMoverse de volver
UnMoverse hacia la izquierda
DMover a la derecha
Barra espaciadoraSaltar
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 IOEnfoque la cámara dentro o fuera
MayúsAlternar el bloqueo del mouse si EnableMouseLockOption está habilitado