UserInputService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço
Não replicado

UserInputService é um serviço usado para detectar e capturar os diferentes tipos de entrada disponíveis no dispositivo de um usuário.

O propósito principal deste serviço é permitir que as experiências cooperem com várias formas de entrada disponíveis, como gamepads, telas de toque e teclados.Permite que um LocalScript execute diferentes ações dependendo do dispositivo e, por sua vez, forneça a melhor experiência para o usuário final.

Alguns usos deste serviço incluem detectar a entrada do usuário quando eles interagem com GUIs, ferramentas e outras instâncias de jogo.Para detectar a entrada do usuário, o serviço deve procurar um evento de serviço.Por exemplo, o serviço pode detectar eventos como quando o usuário toca na tela de um dispositivo móvel usando UserInputService.TouchStarted , ou conecta um gamepad, como um controlador Xbox, ao seu dispositivo usando UserInputService.GamepadConnected .

Como este serviço é apenas do lado do cliente, ele só funcionará quando usado em um LocalScript ou um ModuleScript necessário por um LocalScript .Como o UserInputService é apenas do lado do cliente, os usuários no jogo só podem detectar sua própria entrada - e não a entrada de outros.

Veja também ContextActionService , um serviço que permite vincular funções a várias entradas de usuário.

Resumo

Propriedades

Métodos

Eventos

Propriedades

AccelerometerEnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo do usuário tem um acelerômetro

Um acelerômetro é um componente encontrado na maioria dos dispositivos móveis que mede aceleração (mudança na velocidade).

Por exemplo, o seguinte trecho de código mostra como verificar se o dispositivo do usuário tem um acelerômetro.


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

Se o dispositivo tiver um acelerômetro ativado, você pode obter sua aceleração atual usando a função UserInputService:GetDeviceAcceleration() ou rastrear quando a aceleração do dispositivo muda usando o evento UserInputService.DeviceAccelerationChanged.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Amostras de código

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

Move a Ball using the Accelerometer

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

GamepadEnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo usado por um usuário tem um gamepad disponível.Se os gamepads estiverem disponíveis, você pode usar UserInputService:GetConnectedGamepads() para recuperar uma lista de gamepads conectados.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Veja também:

GyroscopeEnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo do usuário tem um giroscópio.

Um giroscópio é um componente encontrado na maioria dos dispositivos móveis que detecta orientação e velocidade de rotação.

Se o dispositivo de um usuário tiver um giroscópio, você pode incorporá-lo ao seu jogo usando a função UserInputService:GetDeviceRotation() e o evento UserInputService.DeviceRotationChanged.


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

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

KeyboardEnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo do usuário tem um teclado disponível.Esta propriedade é true quando o dispositivo do usuário tem um teclado disponível, e false quando não o faz.

Pode ser usado para determinar se o usuário tem um teclado disponível - que pode ser importante se você quiser verificar se pode usar UserInputService:IsKeyDown() ou UserInputService:GetKeysPressed() para verificar a entrada do teclado.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Amostras de código

Este exemplo imprime "O dispositivo do usuário tem um teclado disponível!" se TecladoAtivado for verdadeiro e "O dispositivo do usuário não tem um teclado disponível!" se TecladoAtivado for falso .

Verifique se o Teclado está Ativado

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

MouseBehavior

Ler Parallel

Essa propriedade define como o mouse do usuário se comporta com base no enum Enum.MouseBehavior. Pode ser definida para três valores:

O valor desta propriedade não afeta a sensibilidade do rastreamento de eventos ao movimento do mouse.Por exemplo, GetMouseDelta retorna a mesma posição na tela Vector2 em pixels, independentemente de se o mouse está bloqueado ou pode se mover livremente ao redor da tela do usuário.Como resultado, scripts padrão como os que controlam a câmera não são afetados por essa propriedade.

Essa propriedade é substituída se um GuiButton com Modal habilitado for GuiButton.Visible se o botão direito do jogador estiver para baixo.

Observe que, se o mouse estiver bloqueado, UserInputService.InputChanged ainda disparará quando o jogador mover o mouse e passará pelo Delta que o mouse tentou mover.Além disso, se o jogador for expulso do jogo, o mouse será desbloqueado violentamente.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Amostras de código

Este exemplo cria um script de binóculos que diminui os cliques do mouse do jogador FieldOfView() e MouseDeltaSensitivity() quando um jogador com um MouseEnabled() esquerda os cliques do mouse.O script também aponta a posição do jogador Camera para a posição mundial do clique do mouse Vector3.

Quando o jogador deixou os cliques do mouse novamente, a câmera do jogador reverte de volta para o a personalizado Enum.CameraType com o mesmo campo de visão e CFrame() como antes do jogador se aproximar com o script.

Enquanto o jogador usa os binóculos, o script bloqueia o mouse do jogador no centro da tela, definindo o mouse do jogador para BloquearCentro.A câmera do jogador se move quando o jogador move o mouse de acordo com a propriedade que passa por indicando a mudança de posição na tela do mouse.

Para que este exemplo funcione como esperado, ele deve ser colocado em um LocalScript .

Criar um Script de Binóculos

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
-- Redefina a câmera de volta para CFrame e FieldOfView antes do 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 a câmera seja alterada por script
camera.CameraType = Enum.CameraType.Scriptable
-- Armazenar propriedades da câmera antes do zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Aproxime a câmera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Tranclar e desacelerar o mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Redefinir ângulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom/desZoom da câmera
local function MouseClick()
if zoomed then
-- Desfocar a câmera
ResetCamera()
else
-- Ampliar na câmera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualquer coisa acima tornaria a busca para cima e para baixo mais difícil; recomende qualquer coisa entre 0~1
local smoothness = 0.05 -- recomendar qualquer coisa 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

Não replicado
Ler Parallel

Essa propriedade determina a sensibilidade do Mouse do usuário.

A sensibilidade determina a extensão em que um movimento do mouse físico se traduz em um movimento do mouse no jogo.Isso pode ser usado para ajustar como eventos sensíveis de rastreamento de movimento do mouse, como GetMouseDelta, são para o movimento do mouse.

Essa propriedade não afeta o movimento do ícone do mouse.Nem afeta a configuração de Sensibilidade da Câmera encontrada na aba Configurações do menu Configurações do cliente, que também ajusta a sensibilidade do rastreamento de eventos ao movimento do mouse.

Essa propriedade tem um valor máximo de 10 e um valor mínimo de 0.Um valor mais baixo corresponde a uma sensibilidade mais baixa e um valor mais alto a uma sensibilidade maior.

Quando a sensibilidade é 0, eventos que rastreiam o movimento do mouse ainda dispararão, mas todos os parâmetros e propriedades que indicam a mudança na posição do mouse retornarão Vector2.new() , ou Vector3.new() no caso de InputObject.Delta.Por exemplo, GetMouseDelta sempre retornará (0, 0).

Amostras de código

Este exemplo cria um script de binóculos que diminui os cliques do mouse do jogador FieldOfView() e MouseDeltaSensitivity() quando um jogador com um MouseEnabled() esquerda os cliques do mouse.O script também aponta a posição do jogador Camera para a posição mundial do clique do mouse Vector3.

Quando o jogador deixou os cliques do mouse novamente, a câmera do jogador reverte de volta para o a personalizado Enum.CameraType com o mesmo campo de visão e CFrame() como antes do jogador se aproximar com o script.

Enquanto o jogador usa os binóculos, o script bloqueia o mouse do jogador no centro da tela, definindo o mouse do jogador para BloquearCentro.A câmera do jogador se move quando o jogador move o mouse de acordo com a propriedade que passa por indicando a mudança de posição na tela do mouse.

Para que este exemplo funcione como esperado, ele deve ser colocado em um LocalScript .

Criar um Script de Binóculos

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
-- Redefina a câmera de volta para CFrame e FieldOfView antes do 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 a câmera seja alterada por script
camera.CameraType = Enum.CameraType.Scriptable
-- Armazenar propriedades da câmera antes do zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Aproxime a câmera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Tranclar e desacelerar o mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Redefinir ângulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom/desZoom da câmera
local function MouseClick()
if zoomed then
-- Desfocar a câmera
ResetCamera()
else
-- Ampliar na câmera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualquer coisa acima tornaria a busca para cima e para baixo mais difícil; recomende qualquer coisa entre 0~1
local smoothness = 0.05 -- recomendar qualquer coisa 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

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo do usuário tem um mouse disponível.Essa propriedade é true quando o dispositivo do usuário tem um mouse disponível e false quando não tem.


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

É importante verificar isso antes de usar UserInputService funções do mouse, como UserInputService:GetMouseLocation().

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Veja também:

Amostras de código

Este exemplo cria um script de binóculos que diminui os cliques do mouse do jogador FieldOfView() e MouseDeltaSensitivity() quando um jogador com um MouseEnabled() esquerda os cliques do mouse.O script também aponta a posição do jogador Camera para a posição mundial do clique do mouse Vector3.

Quando o jogador deixou os cliques do mouse novamente, a câmera do jogador reverte de volta para o a personalizado Enum.CameraType com o mesmo campo de visão e CFrame() como antes do jogador se aproximar com o script.

Enquanto o jogador usa os binóculos, o script bloqueia o mouse do jogador no centro da tela, definindo o mouse do jogador para BloquearCentro.A câmera do jogador se move quando o jogador move o mouse de acordo com a propriedade que passa por indicando a mudança de posição na tela do mouse.

Para que este exemplo funcione como esperado, ele deve ser colocado em um LocalScript .

Criar um Script de Binóculos

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
-- Redefina a câmera de volta para CFrame e FieldOfView antes do 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 a câmera seja alterada por script
camera.CameraType = Enum.CameraType.Scriptable
-- Armazenar propriedades da câmera antes do zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Aproxime a câmera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Tranclar e desacelerar o mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Redefinir ângulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom/desZoom da câmera
local function MouseClick()
if zoomed then
-- Desfocar a câmera
ResetCamera()
else
-- Ampliar na câmera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualquer coisa acima tornaria a busca para cima e para baixo mais difícil; recomende qualquer coisa entre 0~1
local smoothness = 0.05 -- recomendar qualquer coisa entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseIcon

ContentId
Ler Parallel

A propriedade MouseIcon determina a imagem usada como apontador.Se estiver vazio, uma seta padrão é usada.Enquanto o cursor paira sobre determinados objetos de UI, como um ImageButton , TextButton , TextBox ou ProximityPrompt , esta imagem será substituída e ignorada temporariamente.

Para ocultar completamente o cursor, não use não uma imagem transparente. Em vez disso, defina UserInputService.MouseIconEnabled para falso.

Amostras de código

Este exemplo altera o ícone do mouse do usuário para parecer uma imagem de dragão.

Serviço de Ação de Usuário.MouseIcon

local UserInputService = game:GetService("UserInputService")
-- Para restaurar o cursor ao que foi definido anteriormente, ele precisará ser salvo em uma variável
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Apenas atualize o cursor salvo se ele não estiver atualmente salvo
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Restaure apenas o cursor do mouse se houver um cursor salvo para restaurar
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Não restaure o mesmo cursor duas vezes (pode substituir outro script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)

MouseIconEnabled

Ler Parallel

Essa propriedade determina se o ícone Mouse é visível quando true o ícone do mouse é visível, quando false não é.

Por exemplo, o trecho de código abaixo oculta o ícone do mouse.


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

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Amostras de código

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

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

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

Hide Mouse During Keyboard Input

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

OnScreenKeyboardPosition

Somente leitura
Não replicado
Ler Parallel

Esta propriedade descreve a posição do teclado na tela em pixels. A posição do teclado é Vector2.new(0, 0) quando não está visível.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript ou um Script com RunContext definido para Enum.RunContext.Client .

Veja também OnScreenKeyboardVisible e OnScreenKeyboardSize.

OnScreenKeyboardSize

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve o tamanho do teclado na tela em pixels. O tamanho do teclado é Vector2.new(0, 0) quando não está visível.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript ou um Script com RunContext definido para Enum.RunContext.Client .

Veja também OnScreenKeyboardVisible e OnScreenKeyboardPosition.

OnScreenKeyboardVisible

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se um teclado na tela está atualmente visível na tela do usuário.

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript ou um Script com RunContext definido para Enum.RunContext.Client .

Veja também OnScreenKeyboardSize e OnScreenKeyboardPosition.

PreferredInput

Somente leitura
Não replicado
Ler Parallel

TouchEnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o dispositivo atual do usuário tem uma tela de toque disponível.

A propriedade é usada para determinar se o dispositivo do usuário tem uma tela de toque e, portanto, se os eventos de toque serão acionados.Se TouchEnabled for verdadeiro, você pode usar eventos do UserInputService, como UserInputService.TouchStarted e UserInputService.TouchEnded, para rastrear quando um usuário começa e para de tocar na tela de seu dispositivo.

O trecho de código abaixo imprime se o dispositivo do usuário tem tela de toque.


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

Veja também:

VREnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o usuário está usando um dispositivo de realidade virtual (VR).

Se um dispositivo VR estiver habilitado, você pode interagir com sua localização e movimento através de funções como UserInputService:GetUserCFrame().Você também pode reagir ao movimento do dispositivo VR usando o evento UserInputService.UserCFrameChanged.


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

Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.

Veja também:

Amostras de código

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

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

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

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

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

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

VR Head Tracking

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

Métodos

GamepadSupports

Essa função retorna se o gamepad dado Enum.UserInputType suporta um botão correspondente ao dado Enum.KeyCode.Essa função é usada para determinar as entradas de gamepad válidas.

Para determinar quais Enum.UserInputType gamepads estão conectados, use UserInputService:GetConnectedGamepads().

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad.

Valor Padrão: ""
gamepadKeyCode: Enum.KeyCode

O Enum.KeyCode da botão em questão.

Valor Padrão: ""

Devolução

Se o gamepad fornecido suporta um botão correspondente ao dado Enum.KeyCode.

GetConnectedGamepads

Essa função retorna um array de Enum.UserInputType gamepads atualmente conectados.Se nenhum gamepad estiver conectado, esse array será vazio.Além disso, ele retorna apenas objetos UserInputType que são gamepads.Por exemplo, este evento retornará um objeto Gamepad1 conectado, mas não um objeto de Teclado.

Por exemplo, o seguinte trecho de código recupera os gamepads conectados e os armazena em uma variável chamada connectedGamepads.


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

Para verificar se um gamepad específico está conectado, use UserInputService:GetGamepadConnected() .

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:


Devolução

Um conjunto de UserInputTypes correspondendo aos gamepads conectados ao dispositivo do usuário.

GetDeviceAcceleration

A função GetDeviceAcceleration determina a aceleração atual do dispositivo do usuário.Ele retorna um InputObject que descreve a aceleração atual do dispositivo.

Para que isso funcione, o dispositivo do usuário deve ter um acelerômetro habilitado.Para verificar se o dispositivo de um usuário tem um acelerômetro habilitado, você pode verificar a propriedade UserInputService.AccelerometerEnabled.

Se você quiser rastrear quando as alterações de aceleração do dispositivo do usuário ocorrem em vez disso, você pode usar o evento UserInputService.DeviceAccelerationChanged.

Como só dispara localmente, só pode ser usado em um LocalScript .


Devolução

Amostras de código

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

Output Device Acceleration

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

GetDeviceGravity

Essa função retorna um InputObject descrevendo o vector de gravidade atual do dispositivo.

O vetor de gravidade é determinado pela orientação do dispositivo em relação à força de gravidade do mundo real.Por exemplo, se um dispositivo estiver perfeitamente ereto (portrait), o vetor de gravidade é Vector3.new(0, 0, -9.18) .Se o lado esquerdo do dispositivo está apontando para baixo, o vetor é Vector3.new(9.81, 0, 0).Finalmente, se a parte de trás do dispositivo está apontando para baixo, o vetor é Vector3.new(0, -9.81, 0).

Essa função pode ser usada para habilitar o dispositivo do usuário a impactar ou controlar a gravidade dentro do jogo ou mover objetos no jogo, como uma bola.

A gravidade é rastreada apenas para jogadores usando um dispositivo com um giroscópio ativado - como um dispositivo móvel.

Para verificar se o dispositivo de um usuário tem um giroscópio ativado, verifique o valor de UserInputService.GyroscopeEnabled .Se o dispositivo tiver um giroscópio ativado, você também pode usar o evento UserInputService.DeviceGravityChanged para rastrear quando a força de gravidade no dispositivo do usuário muda.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

Amostras de código

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

Moving Objects with the Gyroscope

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

GetDeviceRotation

Essa função retorna um InputObject e um CFrame descrevendo o vetor de rotação atual do dispositivo.

Isso é disparado com um InputObject.A propriedade Posição do objeto de entrada é um Enum.InputType.Gyroscope que rastreia a rotação total em cada eixo local.

A rotação do dispositivo só pode ser rastreada em dispositivos com um gyroscope .

Como essa função é executada localmente, ela só pode ser usada em um LocalScript .


Devolução

Um tuple que contém duas propriedades:

  1. A propriedade delta descreve a quantidade de rotação que aconteceu pela última vez
  2. O CFrame é a rotação atual do dispositivo em relação ao seu quadro de referência padrão.

Amostras de código

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

Output Device Rotation

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

GetFocusedTextBox

Essa função retorna o TextBox o cliente está atualmente focado.Um TextBox pode ser selecionado manualmente pelo usuário, ou a seleção pode ser forçada usando a função TextBox:CaptureFocus().Se nenhum TextBox for selecionado, essa função retornará nil .

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também

Devolução

GetGamepadConnected

Essa função retorna se um gamepad com o dado Enum.UserInputType está conectado ao cliente.

Isso pode ser usado para verificar se um gamepad específico, como 'Gamepad1' está conectado ao dispositivo do cliente.

Para recuperar uma lista de todos os gamepads conectados, use UserInputService:GetConnectedGamepads().

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad em questão.

Valor Padrão: ""

Devolução

Se um gamepad associado a Enum.UserInputType está conectado.

GetGamepadState

Essa função retorna um array de para todos os inputs disponíveis no gamepad dado, representando o último estado de entrada de cada input.

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

Como essa função só é disparada localmente, ela só pode ser usada em um LocalScript .

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType correspondente com o gamepad em questão.

Valor Padrão: ""

Devolução

Um array de InputObjects representando o estado atual de todos os inputs disponíveis para o gamepad dado.

GetImageForKeyCode

ContentId

Este método pega o solicitado Enum.KeyCode e retorna a imagem associada para o dispositivo de gamepad conectado atualmente (limitado ao Xbox, PlayStation e Windows).Isso significa que se o controlador conectado for um controlador do Xbox One, o usuário verá recursos do Xbox.Da mesma forma, se o dispositivo conectado for um controlador de PlayStation, o usuário vê recursos do PlayStation.Se você quiser usar recursos personalizados, veja GetStringForKeyCode() .

Parâmetros

keyCode: Enum.KeyCode

O Enum.KeyCode para o qual obter a imagem associada.

Valor Padrão: ""

Devolução

ContentId

O ID do recurso de imagem retornado.

Amostras de código

Essa API retorna a imagem solicitada para o dado Enum.KeyCode .

UserInputService - Obter imagem para Código-Chave

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

GetKeysPressed

Essa função retorna um array de InputObjects associado às teclas que estão sendo pressionadas no momento.

Este array pode ser iterado para determinar quais teclas estão sendo pressionadas no momento, usando os valores InputObject.KeyCode .

Para verificar se uma chave específica está sendo pressionada, use UserInputService:IsKeyDown() .

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

Um array de InputObjects associado às chaves que estão sendo pressionadas no momento.

GetLastInputType

Essa função retorna 'Enum.UserInputType` associado ao mais recente input do usuário.

Por exemplo, se a entrada anterior do usuário tivesse pressionado a barra de espaço, o retornado Enum.UserInputType seria 'Teclado'.

O evento UserInputService.LastInputTypeChanged pode ser usado para rastrear quando a última Enum.UserInputType usada pelo usuário mudou.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

O Enum.UserInputType associado com a entrada mais recente do usuário.

Amostras de código

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

Detect Last Input Type

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

GetMouseButtonsPressed

Essa função retorna um array de InputObjects correspondente aos botões do mouse que estão sendo pressionados no momento.

Botões do mouse que são rastreados por essa função incluem:


<td>Descrição</td>
</tr>
</thead>
<tr>
<td>Botão de Mouse1</td>
<td>O botão do mouse esquerdo.</td>
</tr>
<tr>
<td>Botão de Mouse2</td>
<td>O botão direito do mouse.</td>
</tr>
<tr>
<td>Botão de Mouse3</td>
<td>O botão do meio do mouse.</td>
</tr>
Qual o nome

Se o usuário não estiver pressionando nenhum botão do mouse quando a função for chamada, ela retornará um array vazio.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

Um array de InputObjects correspondente aos botões do mouse que estão sendo pressionados atualmente.

Amostras de código

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

Check Pressed Mouse Buttons

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

GetMouseDelta

Essa função retorna a mudança, em pixels, da posição do Mouse do jogador na última imagem renderizada como um Vector2.Essa função só funciona se o mouse tiver sido bloqueado usando a propriedade UserInputService.MouseBehavior.Se o mouse não tiver sido bloqueado, os valores retornados de Vector2 serão zero.

A sensibilidade do mouse, determinada nas configurações do cliente e UserInputService.MouseDeltaSensitivity , influenciará o resultado.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

Mudança no movimento do mouse.

Amostras de código

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

Getting Mouse Delta

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

GetMouseLocation

Essa função retorna um Vector2 representando a localização da tela atual do jogador Mouse em pixels em relação ao canto superior esquerdo.Isso não conta para os Enum.ScreenInsets ; para obter os inserções superiores esquerdas e inferiores direitas, chame GuiService:GetGuiInset() .

Se a localização do ponteiro do mouse estiver fora da tela ou o dispositivo do jogador não tiver um mouse, o valor retornado será não determinado.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

Um Vector2 representando a localização da tela atual do mouse, em pixels.

GetNavigationGamepads

Essa função retorna um array de gamepad UserInputTypes.Esta lista está em ordem decrescente de prioridade, o que significa que pode ser iterada para determinar qual gamepad deve ter controle de navegação.

Se um gamepad conectado é um gamepad de navegação apenas determina qual gamepad(s) controla os GUIs de navegação.Isso não influencia os controles de navegação.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:


Devolução

Um conjunto de UserInputTypes que pode ser usado para navegação GUI, em ordem decrescente de prioridade.

GetStringForKeyCode

ObterStringForKeyCode retorna uma string que representa uma tecla que o usuário deve pressionar para inserir um dado Enum.KeyCode , mantendo em mente seu layout de teclado.Para códigos chave que exigem que algum modificador seja mantido, esta função retorna a chave a ser pressionada, além do modificador.Veja os exemplos abaixo para uma explicação adicional.

Ao usar o Roblox com um layout de teclado não QWERTY, os códigos de tecla são mapeados para posições equivalentes de QWERTY.Por exemplo, pressionar A na tecla AZERTY resulta em Enum.KeyCode.Q.Este mapeamento pode levar a informações desajustadas em elementos de interface de experiência.Por exemplo, "Pressione M para abrir o mapa" é impreciso em um teclado AZERTY; precisaria ser "Pressione ? para abrir o mapa" que está na mesma posição que M em QWERTY.Essa função resolve esse problema fornecendo a chave real a ser pressionada ao usar layouts de teclado não QWERTY.


local UserInputService = game:GetService("UserInputService")
local textLabel = script.Parent
local mapKey = Enum.KeyCode.M
textLabel.Text = "Press " .. UserInputService:GetStringForKeyCode(mapKey) .. " to open the map"
Exemplos no Teclado QWERTY

<th>Retorno de valor</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> é digitado com <kbd>Shift</kbd><kbd>2</kbd></td>
</tr>
</tbody>
Código-Chave
Exemplos no Teclado AZERTY

<th>Retorno de valor</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-Chave
Uso do Gamepad

GetStringForKeyCode() retorna o mapeamento de corda para o Enum.KeyCode mais recentemente conectado gamepad.Se o controlador conectado não for suportado, a função retorna a conversão de string padrão para o código de chave solicitado.

O seguinte exemplo mostra como você pode mapear recursos personalizados para ButtonA :


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

Os códigos da tecla do painel direcional não têm diferenças com base no dispositivo.Enum.KeyCode.ButtonSelect tem comportamento ligeiramente diferente em alguns casos.Use ambas as mapeamentos da PlayStation para garantir que os usuários vejam os botões corretos.


<th>Valor de Retorno da PlayStation</th>
<th>Valor de retorno do Xbox</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td><code>BotãoCross</code></td>
<td><code>BotãoA</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonB</code></td>
<td><code>BotãoCircle</code></td>
<td><code>BotãoB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonX</code></td>
<td><code>Botão Quadrado</code></td>
<td><code>BotãoX</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonY</code></td>
<td><code>Triângulo de Botão</code></td>
<td><code>BotãoY</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL1</code></td>
<td><code>BotãoL1</code></td>
<td><code>BotãoLB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL2</code></td>
<td><code>BotãoL2</code></td>
<td><code>BotãoLT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL3</code></td>
<td><code>BotãoL3</code></td>
<td><code>BotõesLS</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR1</code></td>
<td><code>BotãoR1</code></td>
<td><code>BotãoRB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR2</code></td>
<td><code>BotãoR2</code></td>
<td><code>BotãoRT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR3</code></td>
<td><code>BotãoR3</code></td>
<td><code>BotãoRS</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonStart</code></td>
<td><code>Opções de Botão</code></td>
<td><code>Início de Botão</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonSelect</code></td>
<td><code>Botão Touchpad</code> e <code>Botão Compartilhar</code></td>
<td><code>BotãoSelecionar</code></td>
</tr>
</tbody>
Código-Chave
Imagens do sistema para KeyCommands

Ao usar um Enum.KeyCode que pode ser melhor representado como uma imagem, como para um ImageLabel em uma interface do usuário, você pode usar os seguintes ícones legados.No entanto, é recomendado que você use GetImageForKeyCode() como um método mais moderno e cross‑platform para recuperar os ícones de controlador do Xbox e da PlayStation.


<th>Imagem</th>
<th>ID de recurso</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.ButtonSelect</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.LeftShift</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.Shift Direito</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/apostrophe.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/Controls/period.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Espaço</code></td>
<td>
<img src="../../../assets/scripting/controls/spacebar.png" width="24">
</img>
</td>
<td><code>rbxasset://texturas/ui/Controls/barra de espaço.png</code></td>
</tr>
</tbody>
Código-Chave

Parâmetros

keyCode: Enum.KeyCode
Valor Padrão: ""

Devolução

GetSupportedGamepadKeyCodes

Essa função retorna um array de KeyCodes que o gamepad associado ao dado Enum.UserInputType suporta.

Essa função pode ser usada para determinar quais KeyClasses são suportadas e não são suportadas por um gamepad conectado.Para determinar se um código de chave específico é suportado, use UserInputService:GamepadSupports() .

Se chamado em um gamepad não existente ou não conectado, esta função retornará um array vazio.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad.

Valor Padrão: ""

Devolução

Um conjunto de KeyCodes suportado pelo gamepad dado.

Amostras de código

Este exemplo obtém uma lista de gamepads de navegação e uma lista de seus suportados Enum.KeyCodes.Então, ele itera através da lista de Códigos de Chave suportada e vincula os botões ButtonX e X às funções se forem suportados por um gamepad usando o ContextActionService.

Vincular Teclas de Controle do Gamepad Suportadas

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
-- Como essa função não retorna nada, esse manipulador vai
-- “larvar” a entrada e nenhum outro manipulador de ação será chamado após
-- essa aqui
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

Essa função verifica se um botão específico é pressionado em um gamepad específico.Ele retorna true se o gamepad tiver apertado o especificado button pressionado, caso contrário, retorna falso.

Tipos de Entrada de Usuário válidos

O controlador especificado deve ser um dos seguintes valores de enumeração de Tipo de Entrada do Usuário:


<tr>
<td>Enum.UserInputType.Gamepad1-8</td>
</tr>
Qual o nome
Teclados válidos

O botão especificado deve ser um dos seguintes valores de enumeração de KeyCodec:


<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>Enum.KeyCode.DPadRight</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadUp</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadDown</td>
</tr>
Qual o nome

Isso pode ser usado para verificar se um botão específico, como A, está sendo mantido pressionado. Por exemplo:


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

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad dada.

Valor Padrão: ""
gamepadKeyCode: Enum.KeyCode

O Enum.KeyCode da botão especificado.

Valor Padrão: ""

Devolução

Se o botão de gamepad especificado no gamepad dado for pressionado é pressionado.

IsKeyDown

Essa função retorna se o usuário está pressionando a tecla associada ao dado Enum.KeyCode.Ele retorna true se a chave especificada for pressionada ou false se não for pressionada.

Isso pode ser usado para verificar se uma tecla específica, como a barra de espaço, está sendo pressionada. Por exemplo:


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

Para recuperar uma lista de todas as teclas pressionadas pelo usuário, use a função UserInputService:GetKeysPressed().

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

keyCode: Enum.KeyCode

O Enum.KeyCode da chave.

Valor Padrão: ""

Devolução

Se a chave especificada está sendo mantida pressionada.

IsMouseButtonPressed

Essa função toma um botão do mouse Enum.UserInputType e retorna um bool que indica se está pressionado atualmente.

O botão do mouse verificado depende do valor Enum.UserInputType passado para a função como argumento. Por exemplo:


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

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript."

Parâmetros

mouseButton: Enum.UserInputType

O Enum.UserInputType da tecla do mouse.

Valor Padrão: ""

Devolução

Se o botão de mouse dado está atualmente pressionado.

IsNavigationGamepad

Essa função retorna true se o gamepad especificado Enum.UserInputType for permitido controlar Navegação e Seleção GuiObjects .

Se você quiser definir um gamepad de navegação, você pode usar UserInputService:SetNavigationGamepad() . Você também pode usar UserInputService:GetNavigationGamepads() para obter uma lista de todos os gamepads de navegação.

Por exemplo, o código abaixo verifica se o gamepad1 é como um gamepad de navegação:


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

Uma lista de todos os gamepads conectados, independentemente da navegação, pode ser recuperada usando `UserInput/GetConnectedGamepads.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadEnum: Enum.UserInputType

O Enum.UserInputType da gamepad especificada.

Valor Padrão: ""

Devolução

Se o controlador especificado é um controlador de navegação.

RecenterUserHeadCFrame

()

Essa função recoloca o CFrame da fone de ouvido VR na orientação atual do fone de ouvido usado pelo usuário.Isso significa que a orientação atual do fone de ouvido é definida como CFrame.new() .

Use essa função para mover o fone de ouvido CFrame para o centro da área de reprodução se parecer estar em um deslocamento estranho.

Isso se comporta de forma idêntica à função VRService , VRService:RecenterUserHeadCFrame() .

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.


Devolução

()

SetNavigationGamepad

()

A função SetNavigationGamepad define se o gamepad especificado Enum.UserInputType pode mover o navegador da GUI.Um gamepad que é permitido mover o navegador da GUI é considerado um gamepad de navegação.

Se o argumento habilitado for passado como true, o Gamepad pode mover o navegador da GUI.Se o argumento for false, o Gamepad não pode mover o navegador da GUI.

Se você quiser verificar se um Gamepad específico está definido para ser um gamepad de navegação, você pode usar a função UserInputService:IsNavigationGamepad().Você também pode usar o UserInputService:GetNavigationGamepads() para recuperar uma lista de todos os gamepads de navegação.

Como UserInputService é apenas do lado do cliente, essa função só pode ser usada em um LocalScript.

Veja também:

Parâmetros

gamepadEnum: Enum.UserInputType

O Enum.UserInputType da gamepad especificada.

Valor Padrão: ""
enabled: boolean

Se o gamepad especificado pode mover o navegador da GUI.

Valor Padrão: ""

Devolução

()

Amostras de código

Este exemplo define Gamepad1 como um gamepad de navegação ao passar Enum.UserInputType.Gamepad1 e verdadeiro como argumentos.

UserInputService:Definir Gamepad de Navegação

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

Eventos

DeviceAccelerationChanged

O evento DeviceAccelerationChanged é disparado quando um usuário move um dispositivo que tem um acelerômetro.

Um acelerômetro é um componente encontrado na maioria dos dispositivos móveis que mede aceleração (mudança na velocidade).

Para determinar se o dispositivo de um usuário tem um acelerômetro ativado, veja UserInputService.AccelerometerEnabled .

Este evento pode ser usado para rastrear o movimento de um dispositivo que tem um acelerômetro.Um uso de amostra inclui mover o personagem do jogador quando um dispositivo móvel acelera.

Além disso, este evento pode ser usado junto com UserInputService:GetDeviceAcceleration() para determinar o movimento atual do dispositivo de um usuário se o dispositivo tiver um acelerômetro.

Este evento só dispara localmente - o que significa que apenas o jogador cujo dispositivo se move pode usar o evento e ele só funcionará em um LocalScript .

Parâmetros

acceleration: InputObject

Um InputObject , com um UserInputType de 'Acelerômetro' e Position que mostra a força da gravidade em cada eixo local.


Amostras de código

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

Control Players Using the Accelerometer

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

DeviceGravityChanged

O evento ocorre quando a gravidade do dispositivo muda em um dispositivo que tem um acelerômetro.

O vetor de gravidade de um dispositivo representa a força da gravidade em cada um dos eixos X, Y e Z do dispositivo.Embora a gravidade nunca mude, a força que ela exerce em cada eixo muda quando o dispositivo gira e muda de orientação.O valor da força exercida em cada eixo é um vetor de unidade que varia de -1 a 1.

Um acelerômetro é um componente encontrado na maioria dos dispositivos móveis que mede aceleração (mudança na velocidade).

Este evento pode ser usado para determinar a direção do mundo real da força da gravidade em um dispositivo do usuário.Isso pode então ser usado para simular a força da gravidade em um dispositivo do usuário dentro do jogo, como em objetos no jogo (veja exemplo abaixo).

Para verificar se o dispositivo de um usuário tem um acelerômetro habilitado, veja UserInputService.AccelerometerEnabled .Se o dispositivo tiver um acelerômetro ativado, você pode usar a função UserInputService:GetDeviceGravity() para obter a força atual da gravidade no dispositivo do usuário.

Parâmetros

gravity: InputObject

Um InputObject , com uma propriedade InputObject.Position que mostra a força da gravidade em cada eixo local.Essa posição pode ser usada como uma direção para determinar a direção da gravidade em relação ao dispositivo.


Amostras de código

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

Move a Ball using the Accelerometer

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

DeviceRotationChanged

O evento DeviceRotationChanged é disparado quando um usuário gira um dispositivo que tem um giroscópio.

Um giroscópio é um componente encontrado na maioria dos dispositivos móveis que detecta orientação e velocidade de rotação.

O evento é útil ao rastrear a orientação do dispositivo e como as alterações ocorrem quando o usuário gira seu dispositivo.Para determinar a rotação do dispositivo atual, você pode usar a função UserInputService:GetDeviceRotation().

Para verificar se o dispositivo de um usuário tem um giroscópio ativado e que esse evento será disparado, veja UserInputService.GyroscopeEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Parâmetros

rotation: InputObject

Um InputObject fornecendo informações sobre a rotação do dispositivo.InputObject.Position representa a nova rotação um Vector3 valor posicional e InputObject.Delta representa a mudança na rotação em um Vector3 valor posicional.

cframe: CFrame

Um CFrame representando a orientação atual do dispositivo.


Amostras de código

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

Move a Ball using the Accelerometer

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

GamepadConnected

O evento GamepadConnected é acionado quando um gamepad é conectado ao cliente.

Como um jogo do Roblox suporta vários controladores, este evento é útil quando combinado com o evento para rastrear quais controladores/gamepads estão ativos.Você também pode usar UserInputService:GetConnectedGamepads() para encontrar o gamepad correto para usar.

O seguinte exemplo demonstra um exemplo de uso de rastreamento quando um gamepad é conectado ao cliente.


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

Se você quiser ver quais dispositivos estão conectados, você pode usar a função UserInputService:GetConnectedGamepads().

Como este evento é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad conectada.


GamepadDisconnected

O evento GamepadDisconnected é acionado quando um gamepad é desconectado.

Como um jogo do Roblox suporta vários controladores, este evento é útil quando combinado com o evento para rastrear quais controladores/gamepads estão ativos.Você também pode usar UserInputService:GetConnectedGamepads() para encontrar o gamepad correto para usar.

O seguinte exemplo demonstra um exemplo de uso de rastreamento quando um gamepad é desconectado do 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 é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

gamepadNum: Enum.UserInputType

O Enum.UserInputType da gamepad desconectada.


InputBegan

O evento InputBegan é acionado quando um usuário começa a interagir através de um dispositivo de Interface Humano-Computador (botão do mouse para baixo, toque começar, botão de teclado para baixo, etc.).

Pode ser usado para rastrear o início da interação do usuário, como quando um usuário interage pela primeira vez com um elemento de GUI, um gamepad, etc.Não captura os movimentos da roda do mouse.

Este evento pode ser usado junto com UserInputService.InputChanged e UserInputService.InputEnded para rastrear quando a entrada do usuário começa, muda e termina.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


Amostras de código

O seguinte exemplo demonstra um dos muitos exemplos de uso de lidar com a entrada do usuário a partir de InputBegan dependendo de seu tipo.

Lidando com InputBegan

-- Para usar o evento InputBegan, o serviço UserInputService deve ser usado
local UserInputService = game:GetService("UserInputService")
-- Uma função de amostra que fornece vários casos de uso para vários tipos de entrada do usuário
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

O evento InputChanged é acionado quando um usuário muda como está interagindo através de um dispositivo de Interface Humano-Computador (botão do mouse para baixo, toque começa, botão do teclado para baixo, etc).

Para ignorar eventos que são automaticamente tratados pelo Roblox, como rolagem em um ScrollingFrame, verifique se o argumento gameProcessedEvent é falso.Este evento pode ser usado junto com UserInputService.InputBegan e UserInputService.InputEnded para rastrear quando a entrada do usuário começa, muda e termina.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


InputEnded

O evento InputEnded é acionado quando um usuário para de interagir através de um dispositivo de Interface Humano-Computador (botão do mouse para baixo, toque começar, botão de teclado para baixo, etc).Isso é útil ao rastrear quando um usuário libera uma tecla de teclado, botão do mouse, entrada do touchscreen, etc.

Este evento pode ser usado junto com UserInputService.InputBegan e UserInputService.InputChanged para rastrear quando a entrada do usuário começa, muda e termina.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


JumpRequest

O evento de solicitação de pulo UserInputService é acionado quando há um pedido de pulo do cliente, por exemplo, quando o cliente pressiona a barra de espaço ou o botão de pulo no celular.

Este evento dispara sempre que o usuário tenta fazer seu pulo Player.Character .O comportamento padrão responde a um pedido de pulo definindo a propriedade do jogador Humanoid.Jump para verdadeiro, o que faz o personagem do jogador pular.

O evento pode ser usado para rastrear todas as vezes que um jogador quer pular.Em vez de usá-lo para fazer um jogador pular, isso deve ser usado para alterar o comportamento padrão de pulo - como desabilitar o pulo.

Por exemplo, o código abaixo imprime "Pular" sempre que o jogador envia um pedido de pulo.


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

Como este evento dispara várias vezes para um único pedido de pulo, usar um desbounce é sugerido.

Se você quiser conectar chaves ou botões a outras ações, considere usar eventos como UserInputService:GetKeysPressed() e UserInputService.InputBegan ou o ContextActionService.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .


Amostras de código

Este exemplo de código desabilita o pulo para o LocalPlayer ao definir o estado Enum.HumanoidStateType.Jumping como falso.Definir esse estado como falso assim que o usuário tentar pular cancela o pulo.

Para que este exemplo funcione como esperado, ele deve ser colocado em um LocalScript .

Desabilitar Pulo

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")
-- Dispara quando o usuário tenta pular
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)

LastInputTypeChanged

O evento UserInputService.LastInputTypeChanged ocorre sempre que o cliente muda como está interagindo através de um dispositivo de Interface Humano-Computador.(i.e.de MouseMovement para MouseWheel ou de Thumbstick1 para Thumbstick2).

Para obter o valor do último tipo de entrada, independentemente de ter sido alterado ou não, você pode usar a função UserInputService:GetLastInputType().

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

lastInputType: Enum.UserInputType

Um Enum.UserInputType indicando o último tipo de entrada.


Amostras de código

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

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

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

Hide Mouse During Keyboard Input

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

PointerAction

Ação de Apontador dispara quando o usuário realiza uma ação de apontador específica. Em particular, rolar a roda do mouse.

Parâmetros

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

TextBoxFocusReleased

O evento TextBoxFocusReleased ocorre quando um cliente perde o foco em um TextBox , geralmente quando um cliente interrompe a entrada de texto pressionando retorno ou clicando/tocando em outro lugar na tela.

Por exemplo, o código abaixo imprime o nome do TextBox perdendo o foco quando o evento é disparado.


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

Pode ser usado ao lado de UserInputService.TextBoxFocused para rastrear quando um TextBox ganha e perde foco.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também

Parâmetros

textboxReleased: TextBox

O TextBox que perdeu o foco.


TextBoxFocused

Este evento dispara quando um ganha foco em um TextBox, geralmente quando um cliente clica/toca em uma caixa de texto para começar a digitar texto.Isso também dispara se um foco de caixa de texto for focado usando TextBox:CaptureFocus() .

Por exemplo, o código abaixo imprime o nome do TextBox focado quando o evento é disparado.


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

Pode ser usado ao lado de UserInputService.FocusReleased para rastrear quando uma caixa de texto ganha e perde foco.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também

Parâmetros

textboxFocused: TextBox

O TextBox que ganhou foco.


TouchDrag

Parâmetros

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

TouchEnded

O evento TouchEnded é acionado quando um usuário libera seu dedo da tela de um dispositivo TouchEnabled, terminando a entrada de toque com o dispositivo.

Este evento pode ser usado para determinar quando um usuário para de tocar na tela do seu dispositivo.Pode ser emparelhado com UserInputService.TouchStarted para determinar quando um usuário começa e para de tocar na tela.

Por exemplo, o código abaixo imprime a posição da tela onde o usuário para de tocar na tela.


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

O objeto de entrada de toque é o mesmo objeto de entrada ao longo da vida do toque.Então comparar InputObjects quando eles são objetos de toque é válido para determinar se é o mesmo dedo.

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchLongPress

Dispedido quando um usuário mantém pelo menos um dedo por um curto período de tempo na mesma posição na tela de um dispositivo TouchEnabled.

Este evento pode ser usado para determinar quando um usuário mantém o dedo pressionado em um in-game GuiObject ou elemento.

O exemplo abaixo imprime o state da pressão longa quando o usuário segura pelo menos um dedo por um curto período de tempo na mesma posição na tela.Estados possíveis incluem: Começar , Mudar , Finalizar , Cancelar e Nenhum .


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 se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled .

Pode ser emparelhado com UserInputService.TouchStarted e UserInputService.TouchEnded para determinar quando um usuário começa e para de tocar na tela.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

touchPositions: Array

Um conjunto de Vector2 objetos, indicando a posição dos dedos envolvidos no gesto.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchMoved

Dispara quando um usuário move o dedo em um dispositivo TouchEnabled , como um tablet ou smartphone.

Este evento é útil para rastrear se um usuário está movendo o dedo na tela, bem como onde o usuário está movendo o dedo.

O código abaixo mostra o toque se movendo de sua posição anterior para uma nova posição em um dispositivo TouchEnabled .Observe que o InputObject.Position no parâmetro touch passado é um Vector3, mas inclui apenas X e Y coordenadas; Z é sempre 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)

Empareie este evento com UserInputService.TouchStarted e UserInputService.TouchEnded para determinar quando um usuário começa a tocar a tela, como seu dedo se move enquanto a toca e quando ele para de tocar a tela.

Para verificar se o dispositivo de um usuário suporta toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled .

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchPan

O evento TouchPan dispara quando um usuário arrasta pelo menos um dedo em um dispositivo TouchEnabled.

Este evento pode ser usado para determinar quando um usuário desliza o dedo na tela de um dispositivo TouchEnabled - como para girar o Camera em um script de câmera personalizado.

O trecho a seguir imprime "Velocidade de toque" seguido pela velocidade do toque do usuário quando o usuário arrasta seu dedo na tela.


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

Dê uma olhada em outra função útil UserInputService aqui UserInputService.TouchRotate.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

touchPositions: Array

Um conjunto de Vector2 objetos, indicando as posições dos toques (por exemplo, dedos) envolvidos no gesto.

totalTranslation: Vector2

O tamanho do gesto da panela de início a fim (em pixels).

velocity: Vector2

A velocidade do gesto da panela (em pixels) por segundo.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchPinch

Disparado quando um usuário coloca e move dois dedos na tela de um dispositivo TouchEnabled.

Por exemplo, o trecho a seguir imprime quanto a escala de zoom da câmera mudou desde o início do 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 se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco.Por exemplo, as entradas não serão capturadas quando a janela for minimizada.Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

touchPositions: Array

Um conjunto de Vector2s , indicando a posição da tela, em pixels, dos dedos envolvidos no gesto de pinça.

scale: number

A magnitude do aperto de começo a fim (em pixels) dividida pelas posições de pincel iniciais.

velocity: number

A velocidade do gesto de pinça (em pixels) por segundo.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchRotate

O evento TouchRotate é acionado quando um usuário gira dois dedos em um dispositivo TouchEnabled.

Por exemplo, o seguinte código imprime quanto a câmera girou desde o início da rotação de toque.


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

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Os scripts principais que controlam a câmera do usuário em um dispositivo móvel usam código que funciona de forma semelhante a este evento.A melhor prática para este evento é usá-lo ao criar um sistema de câmera móvel para substituir os scripts padrão do núcleo.

Veja também:

Parâmetros

touchPositions: Array

Um array de Vector2s , indicando as posições dos dedos envolvidos no gesto.

rotation: number

O número de grau que o gesto girou desde o início do gesto.

velocity: number

A mudança na rotação (em graus) dividida pela duração da mudança (em segundos).

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchStarted

O evento TouchStarted é acionado quando um usuário coloca o dedo em um dispositivo TouchEnabled, começando a entrada de toque com o dispositivo.

Este evento pode ser usado para determinar quando um usuário começa a tocar a tela do seu dispositivo.Pode ser emparelhado com UserInputService.TouchEnded para determinar quando um usuário começa e para de tocar na tela.

O objeto de entrada de toque é o mesmo objeto de entrada ao longo da vida do toque.Então comparar InputObjects quando eles são objetos de toque é válido para determinar se é o mesmo dedo.

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

Uma instância InputObject que contém informações sobre a entrada do usuário.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchSwipe

O evento TouchSwipe ocorre quando um usuário desliza seus dedos em um dispositivo TouchEnabled.

Este evento pode ser usado para determinar quando um usuário desliza seus dedos na tela de seu dispositivo e a direção que o usuário deslizou.

Para um rastreamento mais preciso do movimento de entrada de toque, use usando UserInputService.TouchMoved

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Veja também:

Parâmetros

swipeDirection: Enum.SwipeDirection

Um Enum.SwipeDirection , indicando a direção que o usuário deslizou.

numberOfTouches: number

Número de toques (por exemplo, dedos) envolvidos no gesto.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchTap

O evento TouchTap é acionado quando o usuário toca/toca no dedo na tela em um dispositivo TouchEnabled.

Este evento será disparado independentemente de se o usuário toca/toca no mundo do jogo ou em um elemento GuiObject.Se você estiver procurando por um evento que só dispara quando o usuário toca/toca no mundo do jogo, use UserInputService.TouchTapInWorld.

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

touchPositions: Array

Um conjunto de Vector2 objetos, indicando a posição dos dedos envolvidos no gesto de toque.

gameProcessedEvent: boolean

Indica se o motor do jogo observou internamente esse input e agiu sobre ele.Em geral, isso se refere ao processamento de UI, então se um botão foi tocado ou clicado a partir desta entrada, gameProcessedEvent seria true.Isso também é verdade para eventos de entrada conectados via ContextActionService .


TouchTapInWorld

O evento TouchTapInWorld é acionado quando o usuário toca/clica com o dedo na tela em um dispositivo TouchEnabled.Ele é disparado quando o usuário clica no mundo do jogo.

Este evento pode ser usado para determinar quando um usuário toca na tela e não toca em um elemento GuiObject.Se o usuário clicar em um elemento de GUI, UserInputService.TouchTap disparará em vez de TouchTapInWorld.

Para verificar se o dispositivo de um usuário está habilitado para toque e que eventos de toque serão disparados, veja UserInputService.TouchEnabled.

Este evento só é disparado quando a janela do cliente Roblox está em foco. Por exemplo, as entradas não serão capturadas quando a janela for minimizada.

Como só dispara localmente, só pode ser usado em um LocalScript .

Veja também:

Parâmetros

position: Vector2

Um Vector2 indicando a posição do toque.

processedByUI: boolean

Se o usuário clicou em um elemento de GUI.


WindowFocusReleased

O evento WindowFocusReleased UserInputService é acionado quando a janela do cliente Roblox perde o foco - geralmente quando o cliente Roblox é minimizado pelo usuário.

Por exemplo, o código abaixo imprime “Foco da janela liberado” sempre que o cliente Roblox perde o foco.


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

Este evento pode ser usado ao lado de UserInputService.WindowFocused para rastrear se o cliente Roblox está ativamente focado na tela de um usuário.

Como só dispara localmente, só pode ser usado em um LocalScript .


WindowFocused

O evento WindowFocused UserInputService ocorre quando a janela do cliente Roblox ganha foco - geralmente quando o cliente Roblox é maximizado/ativamente aberto na tela do usuário.

Por exemplo, o código abaixo imprime “Foco na janela” sempre que o cliente Roblox ganha foco.


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

Este evento pode ser usado ao lado de UserInputService.WindowFocusReleased para rastrear se o cliente Roblox está ativamente focado na tela de um usuário.

Como este evento só é disparado localmente, ele só pode ser usado em um LocalScript .