Clase de motor
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í.
Resumen
Propiedades
MouseIcon:ContentId |
Métodos
GamepadSupports(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
GetGamepadConnected(gamepadNum: Enum.UserInputType):boolean |
GetGamepadState(gamepadNum: Enum.UserInputType):{InputObject} |
GetImageForKeyCode(keyCode: Enum.KeyCode):ContentId |
GetStringForKeyCode(keyCode: Enum.KeyCode,format: Enum.KeyCodeStringFormat):string |
GetSupportedGamepadKeyCodes(gamepadNum: Enum.UserInputType):{any} |
GetUserCFrame(type: Enum.UserCFrame):CFrame |
IsGamepadButtonDown(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
IsKeyDown(keyCode: Enum.KeyCode):boolean |
IsMouseButtonPressed(mouseButton: Enum.UserInputType):boolean |
IsNavigationGamepad(gamepadEnum: Enum.UserInputType):boolean |
SetNavigationGamepad(gamepadEnum: Enum.UserInputType,enabled: boolean):() |
Eventos
Referencia API
Propiedades
AccelerometerEnabled
Muestras de código
Mover una bola usando el acelerómetro
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)
endModalEnabled
MouseIcon
UserInputService.MouseIcon:ContentId
Muestras de código
Icono del Mouse Personalizado
local UserInputService = game:GetService("UserInputService")
-- Para restaurar el cursor a lo que se configuró previamente, necesita ser guardado en una variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Solo actualizar el cursor guardado si no está guardado actualmente
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Solo restaurar el cursor del mouse si hay un cursor guardado para restaurar
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- No restaurar el mismo cursor dos veces (podría sobrescribir otro script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()MouseIconContent
Muestras de código
Icono del Mouse Personalizado
local UserInputService = game:GetService("UserInputService")
-- Para restaurar el cursor a lo que se configuró previamente, necesita ser guardado en una variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Solo actualizar el cursor guardado si no está guardado actualmente
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Solo restaurar el cursor del mouse si hay un cursor guardado para restaurar
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- No restaurar el mismo cursor dos veces (podría sobrescribir otro script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()PreferredInput
Muestras de código
Detección de Entrada Preferida
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- El jugador está en un dispositivo habilitado para toque sin otros tipos de entrada disponibles/conectados
print("Toque")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- El jugador ha conectado o interactuado más recientemente con un gamepad
print("Gamepad")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- El jugador ha conectado o interactuado más recientemente con un teclado o ratón
print("TecladoYRatón")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)UserHeadCFrame
VREnabled
Métodos
GamepadSupports
UserInputService:GamepadSupports(
Parámetros
Devuelve
GetDeviceAcceleration
Devuelve
Muestras de código
Dispositivo de Salida de Aceleración
local UserInputService = game:GetService("UserInputService")
if UserInputService.AccelerometerEnabled then
local acceleration = UserInputService:GetDeviceAcceleration().Position
print(acceleration)
else
warn("¡No se puede obtener la aceleración del dispositivo porque el dispositivo no tiene un acelerómetro habilitado!")
endGetDeviceGravity
Devuelve
Muestras de código
Moviendo Objetos con el Giroscopio
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
-- Vincular el evento cuando el giroscopio detecta un cambio
UserInputService.DeviceGravityChanged:Connect(function(accel)
-- Mover la burbuja en el mundo basado en los datos del giroscopio
bubble.Position = Vector3.new(-8 * accel.Position.X, 1.8, -8 * accel.Position.Z)
end)
endGetDeviceRotation
Devuelve
Muestras de código
Rotación del Dispositivo de Salida
local UserInputService = game:GetService("UserInputService")
if UserInputService.GyroscopeEnabled then
local _, cf = UserInputService:GetDeviceRotation()
print(cf)
else
warn("¡No se puede obtener la rotación del dispositivo porque el dispositivo no tiene un giroscopio habilitado!")
endGetGamepadConnected
Parámetros
Devuelve
GetGamepadState
Parámetros
Devuelve
GetImageForKeyCode
Parámetros
Devuelve
ContentId
Muestras de código
UserInputService - Obtener imagen para KeyCode
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImageGetLastInputType
Devuelve
Muestras de código
Detectar el Último Tipo de Entrada
local UserInputService = game:GetService("UserInputService")
if UserInputService:GetLastInputType() == Enum.UserInputType.Keyboard then
print("¡La entrada más reciente fue del teclado!")
endGetMouseButtonsPressed
Devuelve
Muestras de código
Comprobar botones del ratón presionados
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
-- Devuelve un array de los botones del ratón presionados
local buttonsPressed = UserInputService:GetMouseButtonsPressed()
local m1, m2 = false, false
for _, button in buttonsPressed do
if button.UserInputType == Enum.UserInputType.MouseButton1 then
print("¡MouseButton1 presionado!")
m1 = true
end
if button.UserInputType == Enum.UserInputType.MouseButton2 then
print("¡MouseButton2 presionado!")
m2 = true
end
if m1 and m2 then
print("¡Ambos botones del ratón presionados!")
end
end
end)GetMouseDelta
Devuelve
Muestras de código
Obtener el delta del ratón
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("El ratón se ha movido", delta, "desde el último paso")
end
end
RunService:BindToRenderStep("MeasureMouseMovement", Enum.RenderPriority.Input.Value, onRenderStep)GetStringForKeyCode
Parámetros
Devuelve
GetSupportedGamepadKeyCodes
Parámetros
Devuelve
GetUserCFrame
IsGamepadButtonDown
UserInputService:IsGamepadButtonDown(
Parámetros
Devuelve
IsKeyDown
Parámetros
Devuelve
IsMouseButtonPressed
Parámetros
Devuelve
Parámetros
Devuelve
RecenterUserHeadCFrame
UserInputService:RecenterUserHeadCFrame():()
Devuelve
()
Parámetros
Devuelve
()
Eventos
DeviceAccelerationChanged
Parámetros
Muestras de código
Controlar Jugadores Usando el Acelerómetro
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local SENSITIVIDAD = 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 >= SENSITIVIDAD then
humanoid.Jump = true
end
if accel.Z <= -SENSITIVIDAD then
humanoid:Move(Vector3.new(-1, 0, 0))
end
if accel.Z >= SENSITIVIDAD then
humanoid:Move(Vector3.new(1, 0, 0))
end
if accel.X <= -SENSITIVIDAD then
humanoid:Move(Vector3.new(0, 0, 1))
end
if accel.X >= SENSITIVIDAD then
humanoid:Move(Vector3.new(0, 0, -1))
end
task.wait(1)
ready = true
end
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceAccelerationChanged:Connect(changeAcceleration)
endDeviceGravityChanged
Parámetros
Muestras de código
Mover una bola usando el acelerómetro
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)
endDeviceRotationChanged
Parámetros
GamepadConnected
Parámetros
GamepadDisconnected
Parámetros
InputBegan
Parámetros
InputChanged
Parámetros
InputEnded
Parámetros
JumpRequest
Muestras de código
Desactivar el salto predeterminado
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")
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
local processJumpRequest = false
local COOLDOWN_TIME = 0.5
local function jumpRequest()
if processJumpRequest == false then
processJumpRequest = true
-- Procesar solicitud de salto personalizada
print("¡Salto solicitado!")
-- Reiniciar la variable de debounce después del tiempo de enfriamiento
task.wait(COOLDOWN_TIME)
processJumpRequest = false
end
end
UserInputService.JumpRequest:Connect(jumpRequest)LastInputTypeChanged
Parámetros
PointerAction
TextBoxFocused
Parámetros
Muestras de código
Modificación de TextBox en Enfoque y EnfoqueLiberado
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TextBoxFocusReleased
Parámetros
Muestras de código
Modificación de TextBox en Enfoque y EnfoqueLiberado
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TouchDrag
UserInputService.TouchDrag(
Parámetros
TouchEnded
Parámetros
TouchLongPress
UserInputService.TouchLongPress(
Parámetros
TouchMoved
Parámetros
TouchPan
UserInputService.TouchPan(
touchPositions:{any}, totalTranslation:Vector2, velocity:Vector2, state:Enum.UserInputState, gameProcessedEvent:boolean
Parámetros
TouchPinch
UserInputService.TouchPinch(
touchPositions:{any}, scale:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
Parámetros
TouchRotate
UserInputService.TouchRotate(
touchPositions:{any}, rotation:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
Parámetros
TouchStarted
Parámetros
TouchSwipe
UserInputService.TouchSwipe(
Parámetros
TouchTap
TouchTapInWorld
UserCFrameChanged
WindowFocusReleased
Muestras de código
Script de Enfoque de Ventana Perdido (LocalScript)
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = ReplicatedStorage:WaitForChild("AwayEvent")
local function focusGained()
awayEvent:FireServer(false)
end
local function focusReleased()
awayEvent:FireServer(true)
end
UserInputService.WindowFocused:Connect(focusGained)
UserInputService.WindowFocusReleased:Connect(focusReleased)Script de Enfoque de Ventana Fuera (Script)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = Instance.new("RemoteEvent")
awayEvent.Name = "AwayEvent"
awayEvent.Parent = ReplicatedStorage
local function manageForceField(player, away)
if away then
local forceField = Instance.new("ForceField")
forceField.Parent = player.Character
else
local forceField = player.Character:FindFirstChildOfClass("ForceField")
if forceField then
forceField:Destroy()
end
end
end
awayEvent.OnServerEvent:Connect(manageForceField)