UserInputService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
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
Describe si el dispositivo del usuario tiene un acelerómetro.
Describe si el dispositivo que usa un usuario tiene un gamepad disponible.
Describe si el dispositivo del usuario tiene un giroscopio.
Describe si el dispositivo del usuario tiene un teclado disponible.
Determina si el mouse del usuario se puede mover libremente o está bloqueado.
Escala la salida delta (cambio) del usuario de Mouse.
Describe si el dispositivo del usuario tiene un mouse disponible.
El ID del contenido de la imagen utilizada como icono del ratón del usuario.
Determina si el icono Mouse es visible.
Determina la posición del teclado en la pantalla.
Determina el tamaño del teclado en la pantalla.
Describe si un teclado en la pantalla está actualmente visible en la pantalla del usuario.
Describe si el dispositivo actual del usuario tiene un touch-screen disponible.
Indica si el usuario está usando un casco de realidad virtual.
Métodos
Devuelve si el gamepad dado Enum.UserInputType soporta un botón que coincida con el dado Enum.KeyCode.
Devuelve un array de Enum.UserInputType gamepads actualmente conectados.
Devuelve un InputObject que describe la aceleración actual del dispositivo.
Devuelve un InputObject que describe el vector de gravedad actual del dispositivo.
Devuelve un InputObject y un CFrame , que describe el vector de rotación actual del dispositivo.
Devuelve el actualmente TextBox el cliente está actualmente enfocado.
Devuelve si un gamepad con el dado Enum.UserInputType ''gamepadNum'' está conectado.
Devuelve un array de InputObjects para todos los inputs disponibles en el gamepad dado, que representa el último estado de entrada de cada input.
Devuelve una imagen para el solicitado Enum.KeyCode .
Devuelve un array de InputObjects asociado con el keys que se está presionando actualmente.
Devuelve el Enum.UserInputType asociado con la entrada más reciente del usuario.
Devuelve un array de InputObjects que coincide con los botones del mouse que se mantienen presionados actualmente.
Devuelve el cambio, en píxeles, de la posición del jugador Mouse en el último marco renderizado. Solo funciona si el mouse está bloqueado.
Devuelve la ubicación de la pantalla actual del jugador en Mouse relativa al cuadrante superior izquierdo de la pantalla.
Devuelve un array de gamepads conectados y habilitados para la navegación GUI en orden descendente de prioridad.
Devuelve una cadena que representa una tecla que el usuario debe presionar para introducir un dado Enum.KeyCode .
Devuelve un array de KeyCodes que el gamepad asociado con el dado Enum.UserInputType soporta.
Determina si se presiona un botón en particular en un controlador en particular.
Devuelve si el dado key se mantiene actualmente presionado.
Devuelve si el dado mouse button se mantiene actualmente presionado.
Devuelve verdadero si el controlador de juego especificado Enum.UserInputType permite controlar la navegación GuiObjects.
Recentra el CFrame de los auriculares de VR a la orientación actual del auriculare llevado por el usuario.
Establece si el especificado Gamepad puede mover el navegador GuiObject o no.
Eventos
Despedido cuando un usuario mueve un dispositivo que tiene un acelerómetro. Se utiliza para rastrear el movimiento del dispositivo en el mundo real dentro de un juego de Roblox.
Despedido cuando la fuerza de gravedad cambia en un dispositivo que tiene un acelerómetro habilitado - como un dispositivo móvil.
Despedido cuando un usuario gira un dispositivo que tiene un giroscopio.
Se enciende cuando un gamepad se conecta al cliente. Pasa el ''gamepadNum'' del gamepad que se conectó.
Se enciende cuando un gamepad se desconecta del cliente. Pasa el Enum.UserInputType del gamepad que se desconectó.
Despedido cuando un usuario comienza a interactuar a través de un dispositivo de interfaz humana-computadora, como un mouse o un gamepad.
Despedido cuando un usuario cambia la forma en que interactúa a través de un dispositivo de interfaz humana-computadora.
Se enciende cuando un usuario deja de interactuar a través de un dispositivo de interfaz humana-computadora.
Se activa cada vez que el cliente hace una solicitud para que su personaje salte.
Se activa cuando el elemento Enum.UserInputType
- PointerAction(wheel : number,pan : Vector2,pinch : number,gameProcessedEvent : boolean):RBXScriptSignal
Se activa cuando el usuario realiza una acción de puntería específica (rueda, pinza, pan).
Despedido cuando el cliente pierde el enfoque en un TextBox .
Despedido cuando el cliente se enfoca en un TextBox.
- TouchDrag(dragDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Se despedida cuando un usuario suelta su dedo de la pantalla en un dispositivo habilitado para el tacto - como la pantalla de un dispositivo móvil.
- TouchLongPress(touchPositions : Array,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Se despedida cuando un usuario mantiene al menos un dedo por un corto período de tiempo en la misma posición de la pantalla en un dispositivo habilitado para el tacto - como la pantalla de un dispositivo móvil.
Se activa cuando un usuario mueve el dedo en un dispositivo TouchEnabled como una tableta o un teléfono inteligente.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Se despedida cuando un usuario arrastra al menos un dedo en un dispositivo TouchEnabled - como la pantalla de un dispositivo móvil.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Se despedida cuando un usuario aprieta los dedos en un dispositivo TouchEnabled - como la pantalla de un dispositivo móvil.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Se enciende cuando un usuario gira dos dedos en un dispositivo TouchEnabled - como la pantalla de un dispositivo móvil.
Se despedida cuando un usuario coloca su dedo en un dispositivo habilitado para el tacto - como la pantalla de un iPad o iPhone de Apple o un teléfono Android de Google.
- TouchSwipe(swipeDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Se enciende en un dispositivo TouchEnabled cuando un usuario coloca su dedo(s) en la pantalla, se desplaza por la pantalla y levanta su dedo con una cierta velocidad de movimiento.
Se despedida cuando un usuario toca su dedo en un dispositivo TouchEnabled - como la pantalla de un dispositivo móvil.
Se enciende cuando un usuario toca el mundo del juego en un dispositivo TouchEnabled - como la pantalla de un dispositivo móvil.
Se activa cuando la ventana del cliente de Roblox pierde el enfoque en la pantalla del usuario.
Se enciende cuando la ventana del cliente de Roblox gana enfoque en la pantalla del usuario.
Propiedades
AccelerometerEnabled
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.AccelerometerEnabledif accelerometerEnabled thenprint("Accelerometer enabled!")elseprint("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.
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
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
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.GyroscopeEnabledif gyroIsEnabled thenprint("Gyroscope is enabled!")elseprint("Gyroscope is not enabled!")end
Como UserInputService es solo del lado del cliente, esta propiedad solo se puede usar en un LocalScript.
KeyboardEnabled
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
Esta propiedad establece cómo se comporta el mouse del usuario según el enum Enum.MouseBehavior. Se puede configurar a tres valores:
- Enum.MouseBehavior.Default — El ratón se mueve libremente alrededor de la pantalla del usuario.
- Enum.MouseBehavior.LockCenter — El ratón está bloqueado y no puede moverse desde el centro de la pantalla del usuario.
- Enum.MouseBehavior.LockCurrentPosition — El ratón está bloqueado y no puede moverse de su posición actual en la pantalla del usuario al momento de bloquear.
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 .
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
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 .
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
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 thenprint("The user's device has an available mouse!")elseprint("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 .
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
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.
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
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.
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
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
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
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
TouchEnabled
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 thenprint("The user's device has a touchscreen!")elseprint("The user's device does not have a touchscreen!")end
Vea también:
VREnabled
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.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("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.
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
El Enum.UserInputType de la consola de juegos.
El Enum.KeyCode de el botón en cuestión.
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.
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.
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:
- La propiedad delta describe la cantidad de rotación que sucedió por última vez
- 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.
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
El Enum.UserInputType de la consola de juegos en cuestión.
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
El Enum.UserInputType correspondiente con el gamepad en cuestión.
Devuelve
Un array de InputObjects que representa el estado actual de todos los inputs disponibles para el gamepad dado.
GetImageForKeyCode
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
El Enum.KeyCode para el que recuperar la imagen asociada.
Devuelve
El ID de activo de imagen devuelto.
Muestras de código
Esta API devuelve la imagen solicitada para el dado Enum.KeyCode .
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.
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).
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.
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
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:
- UserInputService:SetNavigationGamepad() , para habilitar o deshabilitar un gamepad para la navegación GUI
- UserInputService:IsNavigationGamepad() , para verificar si un gamepad está habilitado para la navegación GUI
- UserInputService:GetConnectedGamepads() , para devolver todos los gamepads conectados independientemente del control de navegación de la interfaz gráfica
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.Parentlocal mapKey = Enum.KeyCode.MtextLabel.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.Parentlocal key = Enum.KeyCode.ButtonAlocal mappings = {ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA assetButtonCross = "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
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
El Enum.UserInputType de la consola de juegos.
Devuelve
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.
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.ButtonAlocal gamepad = Enum.UserInputType.Gamepad1local 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:
- UserInputService:IsKeyDown() - Un método similar con un uso diferente: Para comprobar si se presiona un dado key en un keyboard.
Parámetros
El Enum.UserInputType de la consola de juegos dada.
El Enum.KeyCode de los botones especificados.
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:
- Enum.UserInputType.IsGamepadButtonDown - Un evento similar con un uso diferente: Para comprobar si se presiona un determinado button en un gamepad.
Parámetros
El Enum.KeyCode de la clave.
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
El Enum.UserInputType de los botones del mouse.
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) thenprint("Gamepad is a navigation gamepad!")elseprint("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
El Enum.UserInputType de la consola especificada.
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
El Enum.UserInputType de la consola especificada.
Si el controlador especificado puede mover el navegador de la interfaz de usuario.
Devuelve
Muestras de código
Este ejemplo establece Gamepad1 como un gamepad de navegación al pasar Enum.UserInputType.Gamepad1 y verdadero como argumentos.
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
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.
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
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.
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
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.
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.
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
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
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.
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.
-- 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.
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.
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 .
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
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.
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
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
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
TouchDrag
Parámetros
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.
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
Un array de Vector2 objetos, que indica la posición de los dedos involucrados en el gesto.
El Enum.UserInputState de la gestión.
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.
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
Un array de Vector2 objetos, que indica las posiciones de los toques (por ejemplo, los dedos) involucrados en el gesto.
El tamaño del gesto de la sartén desde el principio hasta el final (en píxeles).
La velocidad del gesto de la cámara (en píxeles) por segundo.
El Enum.UserInputState de la gestión.
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
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.
La magnitud del pellizco desde el principio hasta el final (en píxeles) dividida por las posiciones de pellizco de inicio.
La velocidad del gesto de pinzamiento (en píxeles) por segundo.
El Enum.UserInputState de la gestión.
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
Un array de Vector2s , que indica las posiciones de los dedos involucrados en el gesto.
El número de grado que el gesto ha girado desde el comienzo del gesto.
El cambio en la rotación (en grados) dividido por la duración del cambio (en segundos).
El Enum.UserInputState de la gestión.
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.
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
Un Enum.SwipeDirection , que indica la dirección que el usuario deslizó.
Número de toques (por ejemplo, dedos) involucrados en el gesto.
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
Un array de Vector2 objetos, que indica la posición de los dedos involucrados en el gesto de toque.
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
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 .