Cada juego necesita recibir entradas del usuario para que los jugadores interactúen y vean su entorno. Roblox soporta casi todas las formas de entrada, incluyendo ratón/teclado, táctil, controladores y VR.
Entrada multiplataforma
Roblox es inherentemente multiplataforma, ya que los jugadores pueden descubrir y unirse a juegos en su teléfono o tableta, y luego continuar donde lo dejaron en su PC o consola. La entrada es especialmente importante como parte de tu plan de desarrollo multiplataforma.
Para simplificar este proceso, Roblox proporciona el Sistema de Acción de Entrada para definir acciones como "saltar", "correr" o "disparar" y configurar vínculos para múltiples entradas de hardware que impulsen esas acciones. Esto te libera de pensar en todos los aspectos técnicos de las entradas de hardware y te permite simplemente definir qué entradas realizan qué acciones.

Detección de tipo de entrada
En el desarrollo multiplataforma, es importante que determines y respondas al tipo de entrada principal que está utilizando un jugador, normalmente para asegurar que los elementos de UI como botones y menús en pantalla funcionen elegantemente en todos los dispositivos.
Por ejemplo, un dispositivo con pantalla táctil asume que el tacto es la entrada predeterminada y que pueden aparecer botones táctiles para acciones, pero si un jugador conecta un teclado/rato Bluetooth adicional o un controlador, puedes asumir que quiere cambiar a eso como el tipo de entrada principal y posiblemente usar el tacto como entrada de respaldo para la UI en pantalla. La propiedad de solo lectura UserInputService.PreferredInput es una forma conveniente de probar y adaptarse a múltiples tipos de entrada a través de múltiples tipos de dispositivos, según el comportamiento anticipado del jugador.
El valor de PreferredInput cambia según las entradas de dispositivo incorporadas y la interacción más reciente del jugador con un controlador o teclado/rato conectado. Algunos ejemplos incluyen:
| Escenario del mundo real | PreferredInput |
|---|---|
| El jugador está utilizando un teléfono sin otros dispositivos de entrada conectados; sin posibilidad de un cambio de tipo de entrada. | Touch |
| El jugador está utilizando un dispositivo móvil con un teclado y ratón Bluetooth conectados, pero no hay un controlador conectado. | KeyboardAndMouse |
| El jugador está utilizando una tableta con un controlador Bluetooth conectado, pero no hay teclado ni ratón conectados. | Gamepad |
| El jugador está en una Xbox o PlayStation con un teclado y ratón Bluetooth conectados y ha interactuado más recientemente con el teclado o el ratón. | KeyboardAndMouse |
| El jugador está en un PC con Windows o Mac con un controlador conectado y ha interactuado más recientemente con el controlador. | Gamepad |
El siguiente LocalScript es una plantilla para detectar inicialmente la entrada preferida y responder a los cambios durante el juego.
Detección de PreferredInput
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- El jugador está en un dispositivo con pantalla táctil sin otros tipos de entrada disponibles/conectados
print("Touch")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- El jugador ha conectado o interactuado más recientemente con un controlador
print("Gamepad")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- El jugador ha conectado o interactuado más recientemente con un teclado o ratón
print("KeyboardAndMouse")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)
Vínculos predeterminados
Roblox proporciona asignaciones de entrada predeterminadas para movimiento, control de cámara e interacción básica con el entorno — Los jugadores de Roblox están familiarizados con estos controles, por lo que solo debes sobrescribirlos en casos específicos. También ten en cuenta que las entradas reservadas no pueden ser sobrescritas y siempre funcionarán con su propósito previsto.
| Acción | Ratón/Teclado | Gamepad | Toque |
|---|---|---|---|
| Abrir menú de Roblox | Esc | Start botón (ButtonStart) | N/A |
| Consola del Desarrollador | F9 | N/A | N/A |
| Modo de pantalla completa (Windows) Mostrar escritorio (Mac) | F11 | N/A | N/A |
| Grabar video (Windows) | F12 | N/A | N/A |
| Tomar captura de pantalla | PrintScreen | N/A | N/A |