UserInputService

Mostrar obsoleto

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

No creable
Servicio
No replicado

UserInputService es un servicio utilizado para detectar y capturar los diferentes tipos de entrada disponibles en el dispositivo de un usuario.

El propósito principal de este servicio es permitir que las experiencias cooperen con múltiples formas de entrada disponible, como gamepads, pantallas táctiles y teclados.Permite a un LocalScript realizar diferentes acciones dependiendo del dispositivo y, a su vez, proporcionar la mejor experiencia para el usuario final.

Algunos usos de este servicio incluyen detectar la entrada del usuario cuando interactúan con interfaces gráficas, herramientas y otras instancias del juego.Para detectar la entrada del usuario, el servicio debe buscar un evento de servicio.Por ejemplo, el servicio puede detectar eventos como cuando el usuario toca la pantalla de un dispositivo móvil usando UserInputService.TouchStarted , o conecta un gamepad como un controlador de Xbox a su dispositivo usando UserInputService.GamepadConnected .

Dado que este servicio es solo de lado del cliente, solo funcionará cuando se use en un LocalScript o un ModuleScript requerido por un LocalScript .Como el servicio de entrada de usuario es solo de lado del cliente, los usuarios en el juego solo pueden detectar su propia entrada - y no la entrada de otros.

Vea también ContextActionService , un servicio que le permite vincular funciones a múltiples entradas de usuario.

Resumen

Propiedades

Métodos

Eventos

Propiedades

AccelerometerEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo del usuario tiene un acelerómetro

Un acelerómetro es un componente encontrado en la mayoría de los dispositivos móviles que mide la aceleración (cambio de velocidad).

Por ejemplo, el siguiente fragmento de código muestra cómo comprobar si el dispositivo del usuario tiene un acelerómetro.


local UserInputService = game:GetService("UserInputService")
local accelerometerEnabled = UserInputService.AccelerometerEnabled
if accelerometerEnabled then
print("Accelerometer enabled!")
else
print("Accelerometer not enabled!")
end

Si el dispositivo tiene un acelerómetro habilitado, puedes obtener su aceleración actual usando la función UserInputService:GetDeviceAcceleration() o rastrear cuando la aceleración del dispositivo cambia usando el evento UserInputService.DeviceAccelerationChanged.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Muestras de código

This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.

Move a Ball using the Accelerometer

local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end

GamepadEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo que usa un usuario tiene un gamepad disponible.Si los gamepads están disponibles, puedes usar UserInputService:GetConnectedGamepads() para recuperar una lista de gamepads conectados.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Vea también:

GyroscopeEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo del usuario tiene un giroscopio.

Un giroscopio es un componente encontrado en la mayoría de los dispositivos móviles que detecta la orientación y la velocidad de rotación.

Si el dispositivo de un usuario tiene un giroscopio, puedes incorporarlo a tu juego usando la función UserInputService:GetDeviceRotation() y el evento UserInputService.DeviceRotationChanged.


local UserInputService = game:GetService("UserInputService")
local gyroIsEnabled = UserInputService.GyroscopeEnabled
if gyroIsEnabled then
print("Gyroscope is enabled!")
else
print("Gyroscope is not enabled!")
end

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

KeyboardEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo del usuario tiene un teclado disponible.Esta propiedad es true cuando el dispositivo del usuario tiene un teclado disponible, y false cuando no lo hace.

Se puede usar para determinar si el usuario tiene un teclado disponible - que puede ser importante si desea verificar si puede usar UserInputService:IsKeyDown() o UserInputService:GetKeysPressed() para verificar la entrada del teclado.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

MouseBehavior

Leer paralelo

Esta propiedad establece cómo se comporta el mouse del usuario según el enum Enum.MouseBehavior. Se puede configurar a tres valores:

El valor de esta propiedad no afecta la sensibilidad del seguimiento del movimiento del ratón de los eventos.Por ejemplo, GetMouseDelta devuelve la misma posición de pantalla Vector2 en píxeles independientemente de si el mouse está bloqueado o puede moverse libremente alrededor de la pantalla del usuarioComo resultado, los scripts predeterminados como los que controlan la cámara no se ven afectados por esta propiedad.

Esta propiedad se anula si un GuiButton con Modal activado está GuiButton.Visible a menos que el botón derecho del reproductor esté hacia abajo.

Tenga en cuenta que, si el mouse está bloqueado, UserInputService.InputChanged seguirá disparando cuando el jugador mueva el mouse y pasará por el Delta que el mouse intentó mover.Además, si el jugador es expulsado del juego, el mouse se desbloqueará con fuerza.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Muestras de código

Este ejemplo crea un guión de binoculares que reduce los clics del jugador FieldOfView() y MouseDeltaSensitivity() cuando un jugador con un MouseEnabled() deja clics del mouse.El script también apunta la posición del jugador Camera hacia la posición mundial del clic del mouse Vector3.

Cuando el jugador vuelve a hacer clic con el ratón, la cámara del jugador se revertirá al campo de visión personalizado Enum.CameraType con el mismo campo de visión y CFrame() como antes de que el jugador se acercara con el script.

Mientras el jugador usa los binoculares, el script bloquea el mouse del jugador en el centro de la pantalla al establecer el mouse del jugador en MouseBehavior().La cámara del jugador se mueve cuando el jugador mueve el mouse de acuerdo con la propiedad que pasa por indicando el cambio de posición en la pantalla del mouse.

Para que este ejemplo funcione como se esperaba, debe colocarse en un LocalScript .

Crear un guión de binoculares

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Restablecer la cámara de vuelta a CFrame y FieldOfView antes de zoom
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Permitir que la cámara sea cambiada por el script
camera.CameraType = Enum.CameraType.Scriptable
-- Almacenar las propiedades de la cámara antes de hacer zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Cámara de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Bloquear y ralentizar el mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Restablecer ángulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom de la cámara/des zoom
local function MouseClick()
if zoomed then
-- Desenfoquear cámara
ResetCamera()
else
-- Zoom en la cámara
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- cualquier cosa más alta haría que buscar hacia arriba y hacia abajo fuera más difícil; recomiende cualquier cosa entre 0~1
local smoothness = 0.05 -- recomendar cualquier cosa entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseDeltaSensitivity

No replicado
Leer paralelo

Esta propiedad determina la sensibilidad del Mouse del usuario.

La sensibilidad determina la extensión en la que un movimiento del mouse físico se traduce en un movimiento del mouse en el juego.Esto se puede usar para ajustar cómo los eventos sensibles rastrean el movimiento del mouse, como GetMouseDelta , al movimiento del mouse.

Esta propiedad no afecta el movimiento del icono del mouse.Tampoco afecta la configuración de sensibilidad de la cámara que se encuentra en la pestaña Configuración del menú Configuración del cliente, que también ajusta la sensibilidad de los eventos que rastrean el movimiento del mouse.

Esta propiedad tiene un valor máximo de 10 y un valor mínimo de 0.Un valor más bajo se corresponde con una menor sensibilidad y un valor más alto con una mayor sensibilidad.

Cuando la sensibilidad es 0, los eventos que rastrean el movimiento del mouse seguirán disparando, pero todos los parámetros y propiedades que indican el cambio en la posición del mouse devolverán Vector2.new() , o Vector3.new() en el caso de InputObject.Delta .Por ejemplo, GetMouseDelta siempre devolverá (0, 0).

Muestras de código

Este ejemplo crea un guión de binoculares que reduce los clics del jugador FieldOfView() y MouseDeltaSensitivity() cuando un jugador con un MouseEnabled() deja clics del mouse.El script también apunta la posición del jugador Camera hacia la posición mundial del clic del mouse Vector3.

Cuando el jugador vuelve a hacer clic con el ratón, la cámara del jugador se revertirá al campo de visión personalizado Enum.CameraType con el mismo campo de visión y CFrame() como antes de que el jugador se acercara con el script.

Mientras el jugador usa los binoculares, el script bloquea el mouse del jugador en el centro de la pantalla al establecer el mouse del jugador en MouseBehavior().La cámara del jugador se mueve cuando el jugador mueve el mouse de acuerdo con la propiedad que pasa por indicando el cambio de posición en la pantalla del mouse.

Para que este ejemplo funcione como se esperaba, debe colocarse en un LocalScript .

Crear un guión de binoculares

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Restablecer la cámara de vuelta a CFrame y FieldOfView antes de zoom
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Permitir que la cámara sea cambiada por el script
camera.CameraType = Enum.CameraType.Scriptable
-- Almacenar las propiedades de la cámara antes de hacer zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Cámara de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Bloquear y ralentizar el mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Restablecer ángulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom de la cámara/des zoom
local function MouseClick()
if zoomed then
-- Desenfoquear cámara
ResetCamera()
else
-- Zoom en la cámara
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- cualquier cosa más alta haría que buscar hacia arriba y hacia abajo fuera más difícil; recomiende cualquier cosa entre 0~1
local smoothness = 0.05 -- recomendar cualquier cosa entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo del usuario tiene un mouse disponible.Esta propiedad es true cuando el dispositivo del usuario tiene un mouse disponible, y false cuando no lo hace.


local UserInputService = game:GetService("UserInputService")
if UserInputService.MouseEnabled then
print("The user's device has an available mouse!")
else
print("The user's device does not have an available mouse!")
end

Es importante verificar esto antes de usar las funciones del mouse UserInputService como UserInputService:GetMouseLocation().

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Vea también:

Muestras de código

Este ejemplo crea un guión de binoculares que reduce los clics del jugador FieldOfView() y MouseDeltaSensitivity() cuando un jugador con un MouseEnabled() deja clics del mouse.El script también apunta la posición del jugador Camera hacia la posición mundial del clic del mouse Vector3.

Cuando el jugador vuelve a hacer clic con el ratón, la cámara del jugador se revertirá al campo de visión personalizado Enum.CameraType con el mismo campo de visión y CFrame() como antes de que el jugador se acercara con el script.

Mientras el jugador usa los binoculares, el script bloquea el mouse del jugador en el centro de la pantalla al establecer el mouse del jugador en MouseBehavior().La cámara del jugador se mueve cuando el jugador mueve el mouse de acuerdo con la propiedad que pasa por indicando el cambio de posición en la pantalla del mouse.

Para que este ejemplo funcione como se esperaba, debe colocarse en un LocalScript .

Crear un guión de binoculares

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Restablecer la cámara de vuelta a CFrame y FieldOfView antes de zoom
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Permitir que la cámara sea cambiada por el script
camera.CameraType = Enum.CameraType.Scriptable
-- Almacenar las propiedades de la cámara antes de hacer zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Cámara de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Bloquear y ralentizar el mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Restablecer ángulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom de la cámara/des zoom
local function MouseClick()
if zoomed then
-- Desenfoquear cámara
ResetCamera()
else
-- Zoom en la cámara
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- cualquier cosa más alta haría que buscar hacia arriba y hacia abajo fuera más difícil; recomiende cualquier cosa entre 0~1
local smoothness = 0.05 -- recomendar cualquier cosa entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseIcon

ContentId
Leer paralelo

La propiedad MouseIcon determina la imagen utilizada como puntero.Si está vacío, se usa una flecha predeterminada.Mientras el cursor se desplaza sobre ciertos objetos de interfaz de usuario como un ImageButton , TextButton , TextBox o ProximityPrompt , esta imagen se anulará y se ignorará temporalmente.

Para ocultar completamente el cursor, no use una imagen transparente . En cambio, establezca UserInputService.MouseIconEnabled en falso.

Muestras de código

Este ejemplo cambia el icono del ratón del usuario para que se parezca a una imagen de dragón.

Servicio de entrada de usuario.MouseIcon

local UserInputService = game:GetService("UserInputService")
-- Para restaurar el cursor a lo que se estableció previamente, deberá guardarse en una variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Solo actualice el cursor guardado si no está actualmente guardado
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Solo restaura el cursor de la ratón si hay un cursor guardado para restaurar
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- No restaure el mismo cursor dos veces (podría reemplazar otro script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)

MouseIconEnabled

Leer paralelo

Esta propiedad determina si el ícono es visible cuando el ícono del mouse es visible, cuando no lo es.

Por ejemplo, el fragmento de código siguiente oculta el icono del ratón.


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIconEnabled = false

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Muestras de código

This example hides the mouse icon while the player beings using their keyboard, such as to chat or enter text into a TextBox. The mouse icon reappears when the user resumes mouse input.

This uses the LastInputType() event to determine when the user begins keyboard input and mouse input - based on the value of the lastInputType argument.

In order for this example to work as expected, it should be placed in a LocalScript.

Hide Mouse During Keyboard Input

local UserInputService = game:GetService("UserInputService")
local mouseInput = {
Enum.UserInputType.MouseButton1,
Enum.UserInputType.MouseButton2,
Enum.UserInputType.MouseButton3,
Enum.UserInputType.MouseMovement,
Enum.UserInputType.MouseWheel,
}
local keyboard = Enum.UserInputType.Keyboard
local function toggleMouse(lastInputType)
if lastInputType == keyboard then
UserInputService.MouseIconEnabled = false
return
end
for _, mouse in pairs(mouseInput) do
if lastInputType == mouse then
UserInputService.MouseIconEnabled = true
return
end
end
end
UserInputService.LastInputTypeChanged:Connect(toggleMouse)

OnScreenKeyboardPosition

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe la posición del teclado en la pantalla en píxeles. La posición del teclado es Vector2.new(0, 0) cuando no es visible.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript o un Script con RunContext establecido en Enum.RunContext.Client .

Vea también OnScreenKeyboardVisible y OnScreenKeyboardSize .

OnScreenKeyboardSize

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el tamaño del teclado en la pantalla en píxeles. El tamaño del teclado es Vector2.new(0, 0) cuando no es visible.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript o un Script con RunContext establecido en Enum.RunContext.Client .

Vea también OnScreenKeyboardVisible y OnScreenKeyboardPosition .

OnScreenKeyboardVisible

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si un teclado en la pantalla está actualmente visible en la pantalla del usuario.

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript o un Script con RunContext establecido en Enum.RunContext.Client .

Vea también OnScreenKeyboardSize y OnScreenKeyboardPosition .

PreferredInput

Solo lectura
No replicado
Leer paralelo

TouchEnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el dispositivo actual del usuario tiene una pantalla táctil disponible.

La propiedad se usa para determinar si el dispositivo del usuario tiene una pantalla táctil y, por lo tanto, si se dispararán eventos táctiles.Si TouchEnabled es verdadero, puedes usar eventos de UserInputService como UserInputService.TouchStarted y UserInputService.TouchEnded para rastrear cuándo un usuario comienza y deja de tocar la pantalla de su dispositivo.

El fragmento de código a continuación imprime si el dispositivo del usuario tiene una pantalla táctil.


local UserInputService = game:GetService("UserInputService")
if UserInputService.TouchEnabled then
print("The user's device has a touchscreen!")
else
print("The user's device does not have a touchscreen!")
end

Vea también:

VREnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el usuario está usando un dispositivo de realidad virtual (VR).

Si un dispositivo VR está habilitado, puedes interactuar con su ubicación y movimiento a través de funciones como UserInputService:GetUserCFrame().También puedes reaccionar al movimiento del dispositivo VR usando el evento UserInputService.UserCFrameChanged.


local UserInputService = game:GetService("UserInputService")
local isUsingVR = UserInputService.VREnabled
if isUsingVR then
print("User is using a VR headset!")
else
print("User is not using a VR headset!")
end

Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.

Vea también:

Muestras de código

This example demonstrates how to implement a head tracking script that mirrors the movement of a virtual reality (VR) headset (the user's actual head) to their in-game character's head.

The example first check if the user is using a VR device by checking the value of the VREnabled() property. This example only works if the user is using a VR headset.

To determine the initial CFrame of the character's head, the code sample calls GetUserCFrame() and passes Enum.UserCFrame.Head as the argument.

To update the head's CFrame whenever the user's VR headset moves, the example connects the VRService.UserCFrameChanged event to the TrackHead() function. When the event fires to indicate that a VR device moved, TrackHead() checks if the headset moved. If the headset moved, the function updates the CFrame of the character's head to the CFrame value provided as an argument.

As the UserCFrame enum also tracks VR left and right hand devices, the concept of VR device tracking can be expanded to other character bodyparts.

In order for the example to work as expected, it must be placed in a LocalScript.

VR Head Tracking

local VRService = game:GetService("VRService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head")
local function TrackHead(inputType, value)
if inputType == Enum.UserCFrame.Head then
head.CFrame = value
end
end
if VRService.VREnabled then
-- Set the initial CFrame
head.CFrame = VRService:GetUserCFrame(Enum.UserCFrame.Head)
-- Track VR headset movement and mirror for character's head
VRService.UserCFrameChanged:Connect(TrackHead)
end

Métodos

GamepadSupports

Esta función devuelve si el gamepad dado Enum.UserInputType soporta un botón que coincida con el dado Enum.KeyCode.Esta función se usa para determinar las entradas de control válidas.

Para determinar qué gamepads Enum.UserInputType están conectados, use UserInputService:GetConnectedGamepads() .

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola de juegos.

Valor predeterminado: ""
gamepadKeyCode: Enum.KeyCode

El Enum.KeyCode de el botón en cuestión.

Valor predeterminado: ""

Devuelve

Si el gamepad dado soporta un botón que coincida con el dado Enum.KeyCode.

GetConnectedGamepads

Esta función devuelve un array de Enum.UserInputType gamepads actualmente conectados.Si no se conectan gamepads, este array estará vacío.Además, solo devuelve objetos de UserInputType que son gamepads.Por ejemplo, este evento devolverá un objeto Gamepad1 conectado, pero no un objeto de teclado.

Por ejemplo, el siguiente fragmento de código recupera los gamepads conectados y los almacena en una variable llamada connectedGamepads.


local UserInputService = game:GetService("UserInputService")
local connectedGamepads = UserInputService:GetConnectedGamepads()

Para verificar si un controlador específico está conectado, use UserInputService:GetGamepadConnected() .

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.

Vea también:


Devuelve

Un array de UserInputTypes correspondiente con los gamepads conectados al dispositivo del usuario.

GetDeviceAcceleration

La función GetDeviceAcceleration determina la aceleración actual del dispositivo del usuario.Devuelve un InputObject que describe la aceleración actual del dispositivo.

Para que esto funcione, el dispositivo del usuario debe tener un acelerómetro habilitado.Para verificar si el dispositivo de un usuario tiene un acelerómetro habilitado, puedes verificar la propiedad UserInputService.AccelerometerEnabled.

Si quieres rastrear cuando los cambios de aceleración del dispositivo del usuario cambian en su lugar, puedes usar el evento UserInputService.DeviceAccelerationChanged.

Dado que solo se activa localmente, solo se puede usar en un LocalScript .


Devuelve

Muestras de código

This example checks if a user's device has an enabled accelerometer and, if true, it outputs the current acceleration.

Output Device Acceleration

local UserInputService = game:GetService("UserInputService")
if UserInputService.AccelerometerEnabled then
local acceleration = UserInputService:GetDeviceAcceleration().Position
print(acceleration)
else
warn("Cannot get device acceleration because device does not have an enabled accelerometer!")
end

GetDeviceGravity

Esta función devuelve un InputObject que describe el vector de gravedad actual del dispositivo.

El vector de gravedad se determina por la orientación del dispositivo con respecto a la fuerza de gravedad del mundo real.Por ejemplo, si un dispositivo está perfectamente en pie (cuadro), el vector de gravedad es Vector3.new(0, 0, -9.18) .Si el lado izquierdo del dispositivo apunta hacia abajo, el vector es Vector3.new(9.81, 0, 0).Por último, si la parte trasera del dispositivo apunta hacia abajo, el vector es Vector3.new(0, -9.81, 0).

Esta función se puede usar para habilitar el dispositivo del usuario para impactar o controlar la gravedad dentro del juego o mover objetos en el juego como una bola.

La gravedad solo se rastrea para jugadores que usan un dispositivo con un giroscopio habilitado, como un dispositivo móvil.

Para verificar si el dispositivo de un usuario tiene un giroscopio habilitado, verifique el valor de UserInputService.GyroscopeEnabled .Si el dispositivo tiene un giroscopio habilitado, también puedes usar el evento UserInputService.DeviceGravityChanged para rastrear cuando cambia la fuerza de gravedad en el dispositivo del usuario.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

Muestras de código

This example implements a level where the bubble will move along the X and Z axes depending on the device's current gryoscope position.

Moving Objects with the Gyroscope

local UserInputService = game:GetService("UserInputService")
local bubble = script.Parent:WaitForChild("Bubble")
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = CFrame.new(0, 20, 0) * CFrame.Angles(-math.pi / 2, 0, 0)
if UserInputService.GyroscopeEnabled then
-- Bind event to when gyroscope detects change
UserInputService.DeviceGravityChanged:Connect(function(accel)
-- Move the bubble in the world based on the gyroscope data
bubble.Position = Vector3.new(-8 * accel.Position.X, 1.8, -8 * accel.Position.Z)
end)
end

GetDeviceRotation

Esta función devuelve un InputObject y un CFrame que describen el vector de rotación actual del dispositivo.

Esto se dispara con un InputObject.La propiedad Posición del objeto de entrada es un Enum.InputType.Gyroscope que rastrea la rotación total en cada eje local.

La rotación del dispositivo solo se puede rastrear en dispositivos con un gyroscope .

Como esta función se ejecuta localmente, solo se puede usar en un LocalScript .


Devuelve

Un túnel que contiene dos propiedades:

  1. La propiedad delta describe la cantidad de rotación que sucedió por última vez
  2. El marco C es la rotación actual del dispositivo con respecto a su marco de referencia predeterminado.

Muestras de código

This example checks if a user's device has an enabled gyroscope and, if true, it outputs the device's current CFrame.

Output Device Rotation

local UserInputService = game:GetService("UserInputService")
if UserInputService.GyroscopeEnabled then
local _, cf = UserInputService:GetDeviceRotation()
print(cf)
else
warn("Cannot get device rotation because device does not have an enabled gyroscope!")
end

GetFocusedTextBox

Esta función devuelve el TextBox en el que el cliente se encuentra actualmente enfocado.Un TextBox se puede seleccionar manualmente por el usuario, o la selección se puede forzar usando la función TextBox:CaptureFocus().Si no se selecciona TextBox, esta función devolverá nil.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.

Ver también

Devuelve

GetGamepadConnected

Esta función devuelve si un gamepad con el dado Enum.UserInputType está conectado al cliente.

Esto se puede usar para verificar si un control específico, como 'Gamepad1', está conectado al dispositivo del cliente.

Para recuperar una lista de todos los gamepads conectados, utilice UserInputService:GetConnectedGamepads() .

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola de juegos en cuestión.

Valor predeterminado: ""

Devuelve

Si un gamepad asociado con Enum.UserInputType está conectado.

GetGamepadState

Esta función devuelve un array de para todos los inputs disponibles en el gamepad dado, que representa el último estado de entrada de cada input.

Para encontrar el UserInputTypes de los gamepads conectados, use UserInputService:GetConnectedGamepads() .

Como esta función solo se ejecuta localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType correspondiente con el gamepad en cuestión.

Valor predeterminado: ""

Devuelve

Un array de InputObjects que representa el estado actual de todos los inputs disponibles para el gamepad dado.

GetImageForKeyCode

ContentId

Este método toma el solicitado Enum.KeyCode y devuelve la imagen asociada para el dispositivo de juego conectado actualmente (limitado a Xbox, PlayStation y Windows).Esto significa que si el controlador conectado es un controlador de Xbox One, el usuario ve los recursos de Xbox.Del mismo modo, si el dispositivo conectado es un controlador de PlayStation, el usuario ve los recursos de PlayStation.Si desea utilizar recursos personalizados, consulte GetStringForKeyCode() .

Parámetros

keyCode: Enum.KeyCode

El Enum.KeyCode para el que recuperar la imagen asociada.

Valor predeterminado: ""

Devuelve

ContentId

El ID de activo de imagen devuelto.

Muestras de código

Esta API devuelve la imagen solicitada para el dado Enum.KeyCode .

UserInputService - Obtener imagen para el código de clave

local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImage

GetKeysPressed

Esta función devuelve un array de InputObjects asociado con las teclas que se presionan actualmente.

Este array se puede iterar para determinar qué teclas están siendo presionadas actualmente, usando los valores InputObject.KeyCode .

Para comprobar si se presiona una tecla específica, utilice UserInputService:IsKeyDown() .

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

Un array de InputObjects asociado con las teclas que se están presionando actualmente.

GetLastInputType

Esta función devuelve 'Enum.UserInputType' asociado con la entrada más reciente del usuario.

Por ejemplo, si la entrada anterior del usuario hubiera estado presionando la barra espaciadora, la devuelta de Enum.UserInputType sería 'Teclado' .

El evento UserInputService.LastInputTypeChanged se puede usar para rastrear cuando el último Enum.UserInputType usado por el usuario cambia.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

El Enum.UserInputType asociado con la entrada más reciente del usuario.

Muestras de código

This example gets the last Enum.UserInputType and outputs if it was keyboard input.

Detect Last Input Type

local UserInputService = game:GetService("UserInputService")
if UserInputService:GetLastInputType() == Enum.UserInputType.Keyboard then
print("Most recent input was keyboard!")
end

GetMouseButtonsPressed

Esta función devuelve un array de InputObjects correspondiente a los botones del mouse que se presionan actualmente.

Los botones del ratón que son rastreados por esta función incluyen:


<td>Descripción</td>
</tr>
</thead>
<tr>
<td>Botón de ratón1</td>
<td>El botón izquierdo del ratón.</td>
</tr>
<tr>
<td>Botón de ratón 2</td>
<td>El botón derecho del ratón.</td>
</tr>
<tr>
<td>Botón de ratón 3</td>
<td>El botón del medio del ratón.</td>
</tr>
Nombre

Si el usuario no está presionando ningún botón del mouse cuando se llama la función, devolverá un array vacío.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

Un array de InputObjects correspondiente a los botones del mouse que actualmente se mantienen presionados.

Muestras de código

This example checks if the user pressed MouseButton1 (left), MouseButton2 (right), or both mouse buttons. This can be extended to behave differently depending on which mouse buttons are pressed, including MouseButton3 (middle).

Check Pressed Mouse Buttons

local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
-- Return an array of the pressed mouse buttons
local buttonsPressed = UserInputService:GetMouseButtonsPressed()
local m1, m2 = false, false
for _, button in buttonsPressed do
if button.UserInputType == Enum.UserInputType.MouseButton1 then
print("MouseButton1 pressed!")
m1 = true
end
if button.UserInputType == Enum.UserInputType.MouseButton2 then
print("MouseButton2 pressed!")
m2 = true
end
if m1 and m2 then
print("Both mouse buttons pressed!")
end
end
end)

GetMouseDelta

Esta función devuelve el cambio, en píxeles, de la posición del jugador Mouse en el último marco renderizado como un Vector2 .Esta función solo funciona si el mouse se ha bloqueado usando la propiedad UserInputService.MouseBehavior.Si el mouse no ha sido bloqueado, los valores devueltos de Vector2 serán cero.

La sensibilidad del mouse, determinada en las configuraciones del cliente y UserInputService.MouseDeltaSensitivity , influirá en el resultado.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

Cambio en el movimiento del mouse.

Muestras de código

The following example measures any mouse movement in pixels from the last render step to the current render step. If the user has set their camera sensitivity to be higher or lower than 1 in the experience's menu, it will affect the returned value.

Getting Mouse Delta

local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
local function onRenderStep()
local delta = UserInputService:GetMouseDelta()
if delta ~= Vector2.new(0, 0) then
print("The mouse has moved", delta, "since the last step")
end
end
RunService:BindToRenderStep("MeasureMouseMovement", Enum.RenderPriority.Input.Value, onRenderStep)

GetMouseLocation

Esta función devuelve un Vector2 que representa la ubicación de la pantalla actual del jugador en Mouse píxeles relativos a la esquina superior izquierda.Esto no cubre los Enum.ScreenInsets ; para obtener los insertos de la parte superior izquierda y de la parte inferior derecha, llame a GuiService:GetGuiInset() .

Si la ubicación del puntero del mouse está fuera de la pantalla o el dispositivo del jugador no tiene un mouse, el valor devuelto será incierto.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.


Devuelve

Un Vector2 que representa la ubicación de la pantalla actual del mouse, en píxeles.

GetNavigationGamepads

Esta función devuelve un array de gamepad UserInputTypes.Esta lista está en orden descendente de prioridad, lo que significa que se puede iterar para determinar qué gamepad debe tener control de navegación.

Si un gamepad conectado es un gamepad de navegación solo determina qué gamepad(s) controlan las interfaces de usuario de navegación.Esto no influye en los controles de navegación.

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .

Vea también:


Devuelve

Un array de UserInputTypes que se puede utilizar para la navegación GUI, en orden descendente de prioridad.

GetStringForKeyCode

GetStringForKeyCode devuelve una cadena que representa una tecla que el usuario debe presionar para introducir un dado Enum.KeyCode , teniendo en cuenta su diseño de teclado.Para códigos clave que requieren que se mantenga un modificador, esta función devuelve la clave que se presiona además del modificador.Vea los ejemplos a continuación para una explicación más detallada.

Al usar Roblox con un diseño de teclado no QWERTY, los códigos de tecla se mapean a posiciones equivalentes de QWERTY.Por ejemplo, presionar A en un teclado AZERTY resulta en Enum.KeyCode.Q .Este mapeo puede conducir a información desigual sobre elementos de interfaz de usuario de experiencia.Por ejemplo, "Presione M para abrir el mapa" es inexacto en un teclado AZERTY; necesitaría ser "Presione ? para abrir el mapa" que está en la misma posición que M en QWERTY.Esta función resuelve este problema al proporcionar la tecla real que debe presionarse al usar diseños de teclado no QWERTY.


local UserInputService = game:GetService("UserInputService")
local textLabel = script.Parent
local mapKey = Enum.KeyCode.M
textLabel.Text = "Press " .. UserInputService:GetStringForKeyCode(mapKey) .. " to open the map"
Ejemplos en el teclado QWERTY

<th>Valor de devolución</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.Q</code></td>
<td><code>Q</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.W</code></td>
<td><code>W</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Equals</code></td>
<td><code>=</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.At</code></td>
<td><code>2</code> porque <code>@</code> se escribe con <kbd>Shift</kbd><kbd>2</kbd></td>
</tr>
</tbody>
Código de clave
Ejemplos en el teclado AZERTY

<th>Valor de devolución</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.Q</code></td>
<td><code>A</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.W</code></td>
<td><code>Z</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Equals</code></td>
<td><code>=</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.At</code></td>
<td><code>É</code></td>
</tr>
</tbody>
Código de clave
Uso del gamepad

GetStringForKeyCode() devuelve el mapa de cuerdas para el Enum.KeyCode más recientemente conectado gamepad.Si el controlador conectado no es compatible, la función devuelve la conversión de cadena predeterminada para el código de clave solicitado.

El siguiente ejemplo muestra cómo puedes mapear recursos personalizados para ButtonA :


local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappings = {
ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA asset
ButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- Replace with the desired ButtonCross asset
}
local mappedKey = UserInputService:GetStringForKeyCode(key)
local image = mappings[mappedKey]
imageLabel.Image = image
Mapas de gamepad

Los códigos de tecla del panel direccional no tienen diferencias basadas en el dispositivo.Enum.KeyCode.ButtonSelect tiene un comportamiento ligeramente diferente en algunos casos.Usa ambas mapeos de PlayStation para asegurarte de que los usuarios vean los botones correctos.


<th>Valor de devolución de PlayStation</th>
<th>Valor de devolución de Xbox</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td><code>BotónCruz</code></td>
<td><code>Botón A</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonB</code></td>
<td><code>Circulo de botones</code></td>
<td><code>BotónB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonX</code></td>
<td><code>Botón cuadrado</code></td>
<td><code>BotónX</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonY</code></td>
<td><code>Triángulo de botón</code></td>
<td><code>Botón Y</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL1</code></td>
<td><code>BotónL1</code></td>
<td><code>BotónLB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL2</code></td>
<td><code>BotónL2</code></td>
<td><code>BotónLT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL3</code></td>
<td><code>BotónL3</code></td>
<td><code>BotónLS</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR1</code></td>
<td><code>Botón R1</code></td>
<td><code>BotónRB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR2</code></td>
<td><code>Botón R2</code></td>
<td><code>BotónRT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR3</code></td>
<td><code>Botón R3</code></td>
<td><code>BotónRS</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonStart</code></td>
<td><code>Opciones de botón</code></td>
<td><code>Botón de inicio</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonSelect</code></td>
<td><code>Panel táctil de botones</code> y <code>Compartir botón</code></td>
<td><code>Botón de selección</code></td>
</tr>
</tbody>
Código de clave
Imágenes del sistema para KeyCodes

Al utilizar un Enum.KeyCode que puede representarse mejor como una imagen, como para un ImageLabel en una interfaz de usuario, puedes usar los siguientes iconos legados.Sin embargo, se recomienda que utilice GetImageForKeyCode() como un método más moderno y crossplataforma para recuperar los iconos del controlador de Xbox y PlayStation.


<th>Imagen</th>
<th>ID de activo</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.ButtonX</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxX.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxX.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonY</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxY.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxY.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxA.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxA.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonB</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxB.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxB.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.DPadLeft</code></td>
<td>
<img src="../../../assets/scripting/controls/dpadLeft.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/dpadLeft.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.DPadRight</code></td>
<td>
<img src="../../../assets/scripting/controls/dpadRight.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/dpadRight.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.DPadUp</code></td>
<td>
<img src="../../../assets/scripting/controls/dpadUp.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/dpadUp.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.DPadDown</code></td>
<td>
<img src="../../../assets/scripting/controls/dpadDown.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/dpadDown.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Botón de selección</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxView.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxView.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonStart</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxmenu.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxmenu.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL1</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxLB.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxLB.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR1</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxRB.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxRB.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL2</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxLT.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxLT.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR2</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxRT.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxRT.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL3</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxLS.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxLS.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR3</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxRS.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxRS.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Thumbstick1</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxLSDirectional.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxLSDirectional.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Thumbstick2</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxRSDirectional.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/xboxRSDirectional.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Backspace</code></td>
<td>
<img src="../../../assets/scripting/controls/backspace.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/backspace.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Return</code></td>
<td>
<img src="../../../assets/scripting/controls/return.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/return.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Shift izquierdo</code></td>
<td>
<img src="../../../assets/scripting/controls/shift.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/shift.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.RightShift</code></td>
<td>
<img src="../../../assets/scripting/controls/shift.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/shift.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Tab</code></td>
<td>
<img src="../../../assets/scripting/controls/tab.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/tab.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Quote</code></td>
<td>
<img src="../../../assets/scripting/controls/apostrophe.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/apóstrofo.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Comma</code></td>
<td>
<img src="../../../assets/scripting/controls/comma.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/comma.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Backquote</code></td>
<td>
<img src="../../../assets/scripting/controls/graveaccent.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/graveaccent.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Period</code></td>
<td>
<img src="../../../assets/scripting/controls/period.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controles/period.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Space</code></td>
<td>
<img src="../../../assets/scripting/controls/spacebar.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/barra de espacio.png</code></td>
</tr>
</tbody>
Código de clave

Parámetros

keyCode: Enum.KeyCode
Valor predeterminado: ""

Devuelve

GetSupportedGamepadKeyCodes

Esta función devuelve un array de KeyCodes que el gamepad asociado con el dado Enum.UserInputType soporta.

Esta función se puede utilizar para determinar qué KeyCodes son compatibles y no son compatibles con un gamepad conectado.Para determinar si un código de clave específico es compatible, use UserInputService:GamepadSupports() .

Si se llama a un gamepad no existente o no conectado, esta función devolverá un array vacío.

Como UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript.

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola de juegos.

Valor predeterminado: ""

Devuelve

Un array de KeyCodes respaldado por el gamepad dado.

Muestras de código

Este ejemplo obtiene una lista de gamepads de navegación y una lista de sus soportados Enum.KeyCodes.Entonces, itera a través de la lista de códigos de clave admitidos y vincula las teclas ButtonX y X a funciones si son admitidas por un gamepad usando el ContextActionService.

Vinculación de teclas de control de juegos admitidas

local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local function actionHandler(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
print("Action Handler: " .. actionName)
print(inputObject)
end
-- Dado que esta función no devuelve nada, este manipulador devolverá
-- ""drenar'' la entrada y no se llamarán a otros manipuladores de acción después
-- esta.
end
local navGamepads = UserInputService:GetNavigationGamepads()
for _, gamepad in pairs(navGamepads) do
local supportedKeyCodes = UserInputService:GetSupportedGamepadKeyCodes(gamepad)
for _, keycode in pairs(supportedKeyCodes) do
if keycode == Enum.KeyCode.ButtonX then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.ButtonX)
end
if keycode == Enum.KeyCode.X then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.X)
end
end
end

IsGamepadButtonDown

Esta función comprueba si se presiona un botón en particular en un controlador en particular.Devuelve true si el gamepad tiene presionado el button especificado, de lo contrario devuelve falso.

Tipos de entrada de usuario válidos

El controlador especificado debe ser uno de los siguientes valores de enumeración de tipo de entrada de usuario:


<tr>
<td>Enumeración.Tipo de entrada de usuario.Gamepad1-8</td>
</tr>
Nombre
Teclados válidos

El botón especificado debe ser uno de los siguientes valores de enumeración de KeyCredentials:


<tr>
<td>Enum.KeyCode.ButtonX</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonY</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonA</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonB</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonR1</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonL1</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonR2</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonL2</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonR3</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonL3</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonStart</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonSelect</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadLeft</td>
</tr>
<tr>
<td>Enumer.KeyCode.DPadRight</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadUp</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadDown</td>
</tr>
Nombre

Esto se puede usar para verificar si un botón específico, como A, está presionado. Por ejemplo:


local UserInputService = game:GetService("UserInputService")
local button = Enum.KeyCode.ButtonA
local gamepad = Enum.UserInputType.Gamepad1
local isButtonHeld = UserInputService:IsGamepadButtonDown(gamepad, button)

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola de juegos dada.

Valor predeterminado: ""
gamepadKeyCode: Enum.KeyCode

El Enum.KeyCode de los botones especificados.

Valor predeterminado: ""

Devuelve

Si se presiona el botón de control especificado en el control dado se presiona.

IsKeyDown

Esta función devuelve si el usuario está presionando la tecla asociada con el dado Enum.KeyCode.Devuelve true si se presiona la clave especificada o false si no se presiona.

Esto se puede usar para verificar si se presiona una tecla específica, como la barra espaciadora. Por ejemplo:


local UserInputService = game:GetService("UserInputService")
local spaceHeld = UserInputService:IsKeyDown(Enum.KeyCode.Space)

Para recuperar una lista de todas las teclas presionadas por el usuario, use la función UserInputService:GetKeysPressed().

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .

Vea también:

Parámetros

keyCode: Enum.KeyCode

El Enum.KeyCode de la clave.

Valor predeterminado: ""

Devuelve

Si la clave especificada se mantiene presionada.

IsMouseButtonPressed

Esta función toma un botón de ratón Enum.UserInputType y devuelve un bool que indica si está presionado actualmente.

El botón de ratón verificado depende del valor Enum.UserInputType pasado a la función como argumento. Por ejemplo:


local UserInputService = game:GetService("UserInputService")
local pressed = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript."

Parámetros

mouseButton: Enum.UserInputType

El Enum.UserInputType de los botones del mouse.

Valor predeterminado: ""

Devuelve

Si el botón de ratón dado se mantiene actualmente presionado.

IsNavigationGamepad

Esta función devuelve true si el gamepad especificado Enum.UserInputType está permitido controlar la navegación y la selección GuiObjects .

Si quieres establecer un gamepad de navegación, puedes usar UserInputService:SetNavigationGamepad(). También puedes usar UserInputService:GetNavigationGamepads() para obtener una lista de todos los gamepads de navegación.

Por ejemplo, el código siguiente comprueba si el gamepad1 es como un gamepad de navegación:


local UserInputService = game:GetService("UserInputService")
if UserInputService:IsNavigationGamepad(UserInputType.Gamepad1) then
print("Gamepad is a navigation gamepad!")
else
print("Gamepad is not a navigation gamepad!")
end

Una lista de todos los gamepads conectados, independientemente de la navegación, se puede recuperar usando `UserInput/GetConnectedGamepads.

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadEnum: Enum.UserInputType

El Enum.UserInputType de la consola especificada.

Valor predeterminado: ""

Devuelve

Si el controlador especificado es un controlador de navegación.

RecenterUserHeadCFrame

()

Esta función recoge el CFrame de la gafa de realidad virtual al ángulo actual de la gafa usada por el usuario.Esto significa que la orientación actual del auriculare está establecida en CFrame.new() .

Usa esta función para mover el auriculares CFrame al centro de la zona de reproducción si parece estar en un desplazamiento extraño.

Esto se comporta de forma idéntica a la función VRService , VRService:RecenterUserHeadCFrame() .

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .


Devuelve

()

SetNavigationGamepad

()

La función SetNavigationGamepad establece si el gamepad especificado Enum.UserInputType puede mover el navegador de la interfaz de usuario.Un gamepad que se le permite mover el navegador de la interfaz gráfica se considera un gamepad de navegación.

Si el argumento habilitado se pasa como true, el Gamepad puede mover el navegador de la GUI.Si el argumento es false, el Gamepad no puede mover el navegador de la interfaz gráfica.

Si quieres comprobar si un Gamepad específico está configurado para ser un gamepad de navegación, puedes usar la función UserInputService:IsNavigationGamepad().También puedes usar el UserInputService:GetNavigationGamepads() para recuperar una lista de todos los gamepads de navegación.

Dado que UserInputService es solo del lado del cliente, esta función solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadEnum: Enum.UserInputType

El Enum.UserInputType de la consola especificada.

Valor predeterminado: ""
enabled: boolean

Si el controlador especificado puede mover el navegador de la interfaz de usuario.

Valor predeterminado: ""

Devuelve

()

Muestras de código

Este ejemplo establece Gamepad1 como un gamepad de navegación al pasar Enum.UserInputType.Gamepad1 y verdadero como argumentos.

UserInputService:Establecer el gamepad de navegación

local UserInputService = game:GetService("UserInputService")
UserInputService:SetNavigationGamepad(Enum.UserInputType.Gamepad1, true)

Eventos

DeviceAccelerationChanged

El evento DeviceAccelerationChanged se activa cuando un usuario mueve un dispositivo que tiene un acelerómetro.

Un acelerómetro es un componente encontrado en la mayoría de los dispositivos móviles que mide la aceleración (cambio de velocidad).

Para determinar si el dispositivo de un usuario tiene un acelerómetro habilitado, vea UserInputService.AccelerometerEnabled .

Este evento se puede utilizar para rastrear el movimiento de un dispositivo que tiene un acelerómetro.Un uso de muestra incluye mover el personaje del jugador cuando un dispositivo móvil acelera.

Además, este evento se puede utilizar junto con UserInputService:GetDeviceAcceleration() para determinar el movimiento actual del dispositivo de un usuario si el dispositivo tiene un acelerómetro.

Este evento solo se dispara localmente - lo que significa que solo el jugador cuyo dispositivo se mueve puede usar el evento y solo funcionará en un LocalScript .

Parámetros

acceleration: InputObject

Un InputObject , con un UserInputType de 'acelerómetro' , y Position que muestra la fuerza de gravedad en cada eje local.


Muestras de código

This example uses the accelerometer to move the player character when a mobile device is accelerated. The character will move along the axis that the device was moved.

Control Players Using the Accelerometer

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local SENSITIVITY = 0.2
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local ready = true
local function changeAcceleration(acceleration)
if ready then
ready = false
local accel = acceleration.Position
if accel.Y >= SENSITIVITY then
humanoid.Jump = true
end
if accel.Z <= -SENSITIVITY then
humanoid:Move(Vector3.new(-1, 0, 0))
end
if accel.Z >= SENSITIVITY then
humanoid:Move(Vector3.new(1, 0, 0))
end
if accel.X <= -SENSITIVITY then
humanoid:Move(Vector3.new(0, 0, 1))
end
if accel.X >= SENSITIVITY then
humanoid:Move(Vector3.new(0, 0, -1))
end
task.wait(1)
ready = true
end
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceAccelerationChanged:Connect(changeAcceleration)
end

DeviceGravityChanged

El evento se activa cuando la gravedad del dispositivo cambia en un dispositivo que tiene un acelerómetro.

El vector de gravedad de un dispositivo representa la fuerza de gravedad en cada uno de los ejes X, Y y Z del dispositivo.Aunque la gravedad nunca cambia, la fuerza que ejerce en cada eje cambia cuando el dispositivo gira y cambia de orientación.El valor de fuerza ejercido en cada eje es un vector de unidad que va de -1 a 1.

Un acelerómetro es un componente encontrado en la mayoría de los dispositivos móviles que mide la aceleración (cambio de velocidad).

Este evento se puede utilizar para determinar la dirección del mundo real de la fuerza de gravedad en el dispositivo de un usuario.Esto incluso se puede usar para simular la fuerza de la gravedad en el dispositivo de un usuario dentro del juego, como en los objetos del juego (ver ejemplo a continuación).

Para verificar si el dispositivo de un usuario tiene un acelerómetro habilitado, consulte UserInputService.AccelerometerEnabled .Si el dispositivo tiene un acelerómetro habilitado, puedes usar la función UserInputService:GetDeviceGravity() para obtener la fuerza actual de la gravedad en el dispositivo del usuario.

Parámetros

gravity: InputObject

Un InputObject , con una propiedad InputObject.Position que muestra la fuerza de la gravedad en cada eje local.Esta posición se puede utilizar como dirección para determinar la dirección de la gravedad relativa al dispositivo.


Muestras de código

This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.

Move a Ball using the Accelerometer

local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end

DeviceRotationChanged

El evento DeviceRotationChanged se activa cuando un usuario gira un dispositivo que tiene un giroscopio.

Un giroscopio es un componente encontrado en la mayoría de los dispositivos móviles que detecta la orientación y la velocidad de rotación.

El evento es útil para rastrear la orientación del dispositivo y cómo cambia a medida que el usuario gira su dispositivo.Para determinar la rotación del dispositivo actual, puedes usar la función UserInputService:GetDeviceRotation().

Para verificar si el dispositivo de un usuario tiene un giroscopio habilitado y que este evento se disparará, vea UserInputService.GyroscopeEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Parámetros

rotation: InputObject

Un InputObject que proporciona información sobre la rotación del dispositivo.InputObject.Position representa el nuevo giro un valor posicional de Vector3 y InputObject.Delta representa el cambio en el giro en un valor posicional de Vector3.

cframe: CFrame

Un CFrame que representa la orientación actual del dispositivo.


Muestras de código

This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.

Move a Ball using the Accelerometer

local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end

GamepadConnected

El evento GamepadConnected se activa cuando un gamepad se conecta al cliente.

Dado que un juego de Roblox admite múltiples controladores, este evento es útil cuando se combina con el evento UserInputService.GamepadDisconnected para rastrear qué controladores/gamepads están activos.También puedes usar UserInputService:GetConnectedGamepads() para encontrar el controlador correcto para usar.

El siguiente ejemplo muestra un ejemplo de uso de un seguimiento cuando un gamepad se conecta al cliente.


local UserInputService = game:GetService("UserInputService")
local function GamepadConnected(gamepad)
print("Player has plugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadConnected:Connect(GamepadConnected)

Si quieres ver qué dispositivos están conectados, puedes usar la función UserInputService:GetConnectedGamepads().

Como este evento se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola conectada.


GamepadDisconnected

El evento GamepadDisconnected se activa cuando un gamepad se desconecta.

Dado que un juego de Roblox admite múltiples controladores, este evento es útil cuando se combina con el evento UserInputService.GamepadConnected para rastrear qué controladores/gamepads están activos.También puedes usar UserInputService:GetConnectedGamepads() para encontrar el controlador correcto para usar.

El siguiente ejemplo muestra un ejemplo de uso de un seguimiento cuando un gamepad se desconecta del cliente.


local UserInputService = game:GetService("UserInputService")
local function GamepadDisconnected(gamepad)
print("Player has unplugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadDisconnected:Connect(GamepadDisconnected)

Como este evento se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

gamepadNum: Enum.UserInputType

El Enum.UserInputType de la consola desconectada.


InputBegan

El evento InputBegan se activa cuando un usuario comienza a interactuar a través de un dispositivo de interfaz humana-ordenador (botón del ratón hacia abajo, toque de inicio, botón de teclado hacia abajo, etc.).

Se puede utilizar para rastrear el comienzo de la interacción del usuario, como cuando un usuario interactúa por primera vez con un elemento de interfaz gráfica, un gamepad, etc.No captura los movimientos de la rueda del ratón.

Este evento se puede usar junto con UserInputService.InputChanged y UserInputService.InputEnded para rastrear cuándo comienza, cambia y termina la entrada del usuario.

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


Muestras de código

El siguiente ejemplo muestra uno de los muchos ejemplos de uso de manejar la entrada del usuario desde InputBegan dependiendo de su tipo.

Manipulación de InputBegan

-- Para utilizar el evento InputBegan, se debe utilizar el servicio UserInputService
local UserInputService = game:GetService("UserInputService")
-- Una función de muestra que proporciona múltiples casos de uso para varios tipos de entrada de usuario
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
if gameProcessed then
print("The game engine internally observed this input!")
else
print("The game engine did not internally observe this input!")
end
end)

InputChanged

El evento InputChanged se activa cuando un usuario cambia la forma en que interactúa a través de un dispositivo de interfaz humana-ordenador (botón del ratón hacia abajo, toque de inicio, botón de teclado hacia abajo, etc.).

Para ignorar eventos que se manejan automáticamente por Roblox, como desplazarse en un ScrollingFrame, compruebe que el argumento gameProcessedEvent es falso.Este evento se puede usar junto con UserInputService.InputBegan y UserInputService.InputEnded para rastrear cuándo comienza, cambia y termina la entrada del usuario.

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


InputEnded

El evento InputEnded se activa cuando un usuario deja de interactuar a través de un dispositivo de interfaz humana-ordenador (botón del ratón hacia abajo, toque de inicio, botón de teclado hacia abajo, etc.).Esto es útil al rastrear cuándo un usuario libera una tecla del teclado, un botón del mouse, una entrada táctil, etc.

Este evento se puede usar junto con UserInputService.InputBegan y UserInputService.InputChanged para rastrear cuándo comienza, cambia y termina la entrada del usuario.

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


JumpRequest

El evento UserInputService de solicitud de salto se activa cuando hay una solicitud de salto del cliente, por ejemplo, cuando el cliente presiona la barra espaciadora o el botón de salto en el móvil.

Este evento se activa cada vez que el usuario intenta hacer su salto Player.Character.El comportamiento predeterminado responde a una solicitud de salto estableciendo la propiedad del jugador Humanoid.Jump en verdad, lo que hace que el personaje del jugador salte.

El evento se puede usar para rastrear cada vez que un jugador quiera saltar.En lugar de usarlo para hacer que un jugador salte, esto debe usarse para cambiar el comportamiento predeterminado de salto, como deshabilitar el salto.

Por ejemplo, el código siguiente imprime "Saltar" cada vez que el jugador envía una solicitud de salto.


local UserInputService = game:GetService("UserInputService")
function onJumpRequest()
print("Jump!")
end
UserInputService.JumpRequest:Connect(onJumpRequest)

Dado que este evento se dispara múltiples veces para una sola solicitud de salto, se sugiere usar un debounce.

Si desea conectar teclas o botones a otras acciones, considere el uso de eventos como UserInputService:GetKeysPressed() y UserInputService.InputBegan o el ContextActionService.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .


Muestras de código

Este ejemplo de código desactiva el salto para el LocalPlayer al establecer el estado Enum.HumanoidStateType.Jumping en falso.Establecer este estado en falso tan pronto como el usuario intente saltar cancela el salto.

Para que este ejemplo funcione como se esperaba, debe colocarse en un LocalScript .

Desactivar el salto

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Se enciende cuando el usuario intenta saltar
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)

LastInputTypeChanged

El evento UserInputService.LastInputTypeChanged se activa cada vez que el cliente cambia la forma en que interactúa a través de un dispositivo de interfaz humana-ordenador.(i.e.desde MouseMovement a MouseWheel o desde Thumbstick1 a Thumbstick2).

Para obtener el valor del último tipo de entrada, independientemente de si ha cambiado o no, puedes usar la función UserInputService:GetLastInputType().

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

lastInputType: Enum.UserInputType

Un Enum.UserInputType que indica el último tipo de entrada.


Muestras de código

This example hides the mouse icon while the player beings using their keyboard, such as to chat or enter text into a TextBox. The mouse icon reappears when the user resumes mouse input.

This uses the LastInputType() event to determine when the user begins keyboard input and mouse input - based on the value of the lastInputType argument.

In order for this example to work as expected, it should be placed in a LocalScript.

Hide Mouse During Keyboard Input

local UserInputService = game:GetService("UserInputService")
local mouseInput = {
Enum.UserInputType.MouseButton1,
Enum.UserInputType.MouseButton2,
Enum.UserInputType.MouseButton3,
Enum.UserInputType.MouseMovement,
Enum.UserInputType.MouseWheel,
}
local keyboard = Enum.UserInputType.Keyboard
local function toggleMouse(lastInputType)
if lastInputType == keyboard then
UserInputService.MouseIconEnabled = false
return
end
for _, mouse in pairs(mouseInput) do
if lastInputType == mouse then
UserInputService.MouseIconEnabled = true
return
end
end
end
UserInputService.LastInputTypeChanged:Connect(toggleMouse)

PointerAction

Acción de puntería se activa cuando el usuario realiza una acción de puntería específica. En particular, desplazar la rueda del ratón.

Parámetros

wheel: number
pan: Vector2
pinch: number
gameProcessedEvent: boolean

TextBoxFocusReleased

El evento TextBoxFocusReleased se activa cuando un cliente pierde el enfoque en un TextBox, por ejemplo, cuando un cliente detiene la entrada de texto presionando la tecla de retorno o haciendo clic/tocando en otra parte de la pantalla.

Por ejemplo, el código siguiente imprime el nombre del TextBox que pierde el enfoque cuando se activa el evento.


local UserInputService = game:GetService("UserInputService")
function TextBoxFocusReleased(textbox)
print(textbox.Name)
end
UserInputService.TextBoxFocusReleased:Connect(TextBoxFocusReleased)

Se puede usar junto con UserInputService.TextBoxFocused para rastrear cuándo un TextBox gana y pierde enfoque.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Ver también

Parámetros

textboxReleased: TextBox

El TextBox que perdió el enfoque.


TextBoxFocused

Este evento se activa cuando un ganancia se enfoca en un TextBox, por ejemplo, cuando un cliente hace clic/toca en un cuadro de texto para comenzar a ingresar texto.Esto también se activa si el enfoque de un cuadro de texto se enfoca usando TextBox:CaptureFocus() .

Por ejemplo, el código siguiente imprime el nombre del TextBox enfocado cuando se activa el evento.


local UserInputService = game:GetService("UserInputService")
function TextBoxFocused(textbox)
print(textbox.Name)
end)
UserInputService.TextBoxFocused:Connect(TextBoxFocused)

Se puede usar junto con UserInputService.FocusReleased para rastrear cuándo una caja de texto gana y pierde enfoque.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Ver también

Parámetros

textboxFocused: TextBox

El TextBox que ganó enfoque.


TouchDrag

Parámetros

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

TouchEnded

El evento TouchEnded se activa cuando un usuario suelta su dedo de la pantalla de un dispositivo habilitado para el tacto, terminando la entrada táctil con el dispositivo.

Este evento se puede usar para determinar cuándo un usuario deja de tocar la pantalla de su dispositivo.Se puede emparejar con UserInputService.TouchStarted para determinar cuándo un usuario comienza y deja de tocar la pantalla.

Por ejemplo, el código siguiente imprime la posición de la pantalla donde el usuario deja de tocar la pantalla.


local UserInputService = game:GetService("UserInputService")
function TouchEnded(touch, gameProcessedEvent)
print("Touch ended at " .. tostring(touch.Position))
end
UserInputService.TouchEnded:Connect(TouchEnded)

El objeto de entrada táctil es el mismo objeto de entrada durante toda la vida del toque.Así que comparar InputObjects cuando son objetos táctiles es válido para determinar si es el mismo dedo.

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchLongPress

Se despedida cuando un usuario mantiene al menos un dedo durante un corto período de tiempo en la misma posición de la pantalla de un dispositivo habilitado para el tacto.

Este evento se puede usar para determinar cuándo un usuario mantiene presionado el dedo en un elemento en el juego GuiObject o en un elemento.

El ejemplo a continuación imprime el state de la presión larga cuando el usuario mantiene al menos un dedo por un corto período de tiempo en la misma posición de la pantalla.Los estados posibles incluyen: Comenzar , Cambiar , Terminar , Cancelar y Ninguno .


local UserInputService = game:GetService("UserInputService")
function TouchLongPress(TouchPositions, state, gameProcessedEvent)
print("Long press event fired. State of press: " .. tostring(state))
end
UserInputService.TouchLongPress:Connect(TouchLongPress)

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Se puede emparejar con UserInputService.TouchStarted y UserInputService.TouchEnded para determinar cuándo un usuario comienza y deja de tocar la pantalla.

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

touchPositions: Array

Un array de Vector2 objetos, que indica la posición de los dedos involucrados en el gesto.

El Enum.UserInputState de la gestión.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchMoved

Se activa cuando un usuario mueve el dedo en un dispositivo TouchEnabled como una tableta o un teléfono inteligente.

Este evento es útil para rastrear si un usuario está moviendo el dedo en la pantalla, así como dónde el usuario está moviendo el dedo.

El código a continuación muestra el toque que se mueve desde su posición anterior a una nueva posición en un dispositivo TouchEnabled.Tenga en cuenta que el InputObject.Position en el parámetro pasado touch es un Vector3 , pero solo incluye las coordenadas X y Y; Z siempre es 0.


local UserInputService = game:GetService("UserInputService")
function onTouchMoved(touch, gameProcessedEvent)
local oldPosition = touch.Position - touch.Delta
print("Touch moved from " .. tostring(oldPosition) .. " to " .. tostring(touch.Position))
end
UserInputService.TouchMoved:Connect(onTouchMoved)

Empareja este evento con UserInputService.TouchStarted y UserInputService.TouchEnded para determinar cuándo un usuario comienza a tocar la pantalla, cómo se mueve su dedo mientras la toca y cuándo deja de tocar la pantalla.

Para verificar si el dispositivo de un usuario admite toques y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchPan

El evento de TouchPan se activa cuando un usuario arrastra al menos un dedo en un dispositivo TouchEnabled.

Este evento se puede usar para determinar cuándo un usuario desliza el dedo por la pantalla de un dispositivo habilitado para el tacto - como para rotar el Camera en un guión de cámara personalizado.

El fragmento siguiente imprime "Velocidad de deslizamiento táctil" seguido de la velocidad del toque del usuario cuando el usuario arrastra su dedo en la pantalla.


local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPan:Connect(function(touchPositions, totalTranslation, velocity, state, gameProcessedEvent)
print("Speed of touch drag: " .. tostring(velocity))
end)

Echa un vistazo a otra función útil UserInputService aquí UserInputService.TouchRotate.

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

touchPositions: Array

Un array de Vector2 objetos, que indica las posiciones de los toques (por ejemplo, los dedos) involucrados en el gesto.

totalTranslation: Vector2

El tamaño del gesto de la sartén desde el principio hasta el final (en píxeles).

velocity: Vector2

La velocidad del gesto de la cámara (en píxeles) por segundo.

El Enum.UserInputState de la gestión.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchPinch

Se desactiva cuando un usuario coloca y mueve dos dedos en la pantalla de un dispositivo TouchEnabled.

Por ejemplo, el fragmento siguiente imprime cuánto ha cambiado la escala de zoom de la cámara desde el comienzo del toque.


local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPinch:Connect(function(touchPositions, scale, velocity, state, gameProcessedEvent)
print("Scale difference since beginning of pinch: " .. tostring(scale))
end)

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco.Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

touchPositions: Array

Un array de Vector2s , que indica la posición de la pantalla, en píxeles, de los dedos involucrados en el gesto de presión.

scale: number

La magnitud del pellizco desde el principio hasta el final (en píxeles) dividida por las posiciones de pellizco de inicio.

velocity: number

La velocidad del gesto de pinzamiento (en píxeles) por segundo.

El Enum.UserInputState de la gestión.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchRotate

El evento de rotación táctil se activa cuando un usuario gira dos dedos en un dispositivo TouchEnabled.

Por ejemplo, el siguiente código imprime cuánto se ha girado la cámara desde el comienzo de la rotación táctil.


local UserInputService = game:GetService("UserInputService")
UserInputService.TouchRotate:Connect(function(touchPositions, rotation, velocity, state, gameProcessedEvent)
print("Camera has rotated " .. tostring(rotation) .. " degrees!")
end)

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Los scripts principales que controlan la cámara del usuario en un dispositivo móvil usan código que funciona de manera similar a este evento.La mejor práctica para este evento es usarlo al crear un sistema de cámara móvil para anular los scripts predeterminados del núcleo.

Vea también:

Parámetros

touchPositions: Array

Un array de Vector2s , que indica las posiciones de los dedos involucrados en el gesto.

rotation: number

El número de grado que el gesto ha girado desde el comienzo del gesto.

velocity: number

El cambio en la rotación (en grados) dividido por la duración del cambio (en segundos).

El Enum.UserInputState de la gestión.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchStarted

El evento TouchStarted se activa cuando un usuario coloca su dedo en un dispositivo TouchEnabled, comenzando la entrada de toque con el dispositivo.

Este evento se puede usar para determinar cuándo un usuario comienza a tocar la pantalla de su dispositivo.Se puede emparejar con UserInputService.TouchEnded para determinar cuándo un usuario comienza y deja de tocar la pantalla.

El objeto de entrada táctil es el mismo objeto de entrada durante toda la vida del toque.Así que comparar InputObjects cuando son objetos táctiles es válido para determinar si es el mismo dedo.

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

Una instancia InputObject que contiene información sobre la entrada del usuario.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchSwipe

El evento TouchSwipe se activa cuando un usuario desliza sus dedos en un dispositivo TouchEnabled.

Este evento se puede usar para determinar cuándo un usuario desliza sus dedos en la pantalla de su dispositivo y la dirección que deslizó el usuario.

Para un seguimiento más preciso del movimiento de la entrada táctil, use using UserInputService.TouchMoved

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

swipeDirection: Enum.SwipeDirection

Un Enum.SwipeDirection , que indica la dirección que el usuario deslizó.

numberOfTouches: number

Número de toques (por ejemplo, dedos) involucrados en el gesto.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchTap

El evento de toque dispara cuando el usuario toca/toca su dedo en la pantalla en un dispositivo TouchEnabled .

Este evento se disparará independientemente de si el usuario toca/toca el mundo del juego o un elemento GuiObject .Si buscas un evento que solo se active cuando el usuario toque/toque el mundo del juego, usa UserInputService.TouchTapInWorld.

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

touchPositions: Array

Un array de Vector2 objetos, que indica la posición de los dedos involucrados en el gesto de toque.

gameProcessedEvent: boolean

Indica si el motor de juego observó internamente esta entrada y actuó sobre ella.Generalmente esto se refiere al procesamiento de la interfaz de usuario, por lo que si un botón fue tocado o clicado desde esta entrada, gameProcessedEvent sería true .Esto también es cierto para eventos de entrada conectados a través de ContextActionService .


TouchTapInWorld

El evento TouchTapInWorld se activa cuando el usuario toca/toca su dedo en la pantalla en un dispositivo TouchEnabled.Se dispara cuando el usuario toca en el mundo del juego.

Este evento se puede usar para determinar cuándo un usuario toca la pantalla y no toca un elemento GuiObject .Si el usuario toca un elemento de interfaz de usuario, UserInputService.TouchTap disparará en lugar de TouchTapInWorld.

Para verificar si el dispositivo de un usuario está habilitado para tocar, y que los eventos de toque se activarán, consulte UserInputService.TouchEnabled .

Este evento solo se activa cuando la ventana del cliente de Roblox está en foco. Por ejemplo, las entradas no se capturarán cuando la ventana se minimice.

Como solo se activa localmente, solo se puede usar en un LocalScript .

Vea también:

Parámetros

position: Vector2

Un Vector2 que indica la posición del toque.

processedByUI: boolean

Si el usuario tocó un elemento de interfaz gráfica.


WindowFocusReleased

El evento UserInputService se activa cuando la ventana del cliente de Roblox pierde el enfoque - por lo general, cuando el cliente de Roblox es minimizado por el usuario.

Por ejemplo, el código siguiente imprime "Enfoque de ventana liberado" cada vez que el cliente de Roblox pierde el enfoque.


local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocusReleased:Connect(function()
print("Window focus released")
end)

Este evento se puede usar junto con UserInputService.WindowFocused para rastrear si el cliente de Roblox está activamente enfocado en la pantalla de un usuario.

Dado que solo se activa localmente, solo se puede usar en un LocalScript .


WindowFocused

El evento enfocado en la ventana se activa cuando la ventana del cliente de Roblox gana enfoque - por lo general, cuando el cliente de Roblox se maximiza/abre activamente en la pantalla del usuario.

Por ejemplo, el código siguiente imprime "Ventana enfocada" cada vez que el cliente de Roblox gana enfoque.


local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocused:Connect(function()
print("Window focused")
end)

Este evento se puede usar junto con UserInputService.WindowFocusReleased para rastrear si el cliente de Roblox está activamente enfocado en la pantalla de un usuario.

Como este evento solo se dispara localmente, solo se puede usar en un LocalScript .