UserInputService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
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
Descreve se o dispositivo do usuário tem um acelerômetro.
Descreve se o dispositivo usado por um usuário tem um gamepad disponível.
Descreve se o dispositivo do usuário tem um giroscópio.
Descreve se o dispositivo do usuário tem um teclado disponível.
Determina se o mouse do usuário pode ser movido livremente ou está bloqueado.
Escala a saída delta (mudança) do usuário de Mouse.
Descreve se o dispositivo do usuário tem um mouse disponível.
O ID do conteúdo da imagem usada como ícone do mouse do usuário.
Determina se o ícone Mouse é visível.
Determina a posição do teclado na tela.
Determina o tamanho do teclado na tela.
Descreve se um teclado na tela está atualmente visível na tela do usuário.
Descreve se o dispositivo atual do usuário tem um touch-screen disponível.
Indica se o usuário está usando um headset de realidade virtual.
Métodos
Retorna se o gamepad dado Enum.UserInputType suporta um botão correspondente ao dado Enum.KeyCode.
Retorna um array de Enum.UserInputType gamepads atualmente conectados.
Retorna um InputObject que descreve a aceleração atual do dispositivo.
Retorna um InputObject descrevendo o vector de gravidade atual do dispositivo.
Retorna um InputObject e um CFrame, descrevendo o vetor de rotação atual do dispositivo.
Retorna o atualmente TextBox o cliente está atualmente focado.
Retorna se um gamepad com o dado Enum.UserInputType ''gamepadNum'' está conectado.
Retorna um array de InputObjects para todos os inputs disponíveis no gamepad dado, representando o último estado de entrada de cada input.
Retorna uma imagem para o solicitado Enum.KeyCode .
Retorna um array de InputObjects associado ao keys atualmente sendo pressionado para baixo.
Retorna o Enum.UserInputType associado ao mais recente input do usuário.
Retorna um array de InputObjects correspondendo aos botões do mouse que estão sendo mantidos pressionados atualmente.
Retorna a mudança, em pixels, da posição do Mouse do jogador na última imagem renderizada. Funciona apenas se o mouse estiver bloqueado.
Retorna a localização da tela atual do jogador de Mouse em relação ao canto superior esquerdo da tela.
Retorna um array de gamepads conectados e habilitados para navegação GUI em ordem decrescente de prioridade.
Retorna uma string que representa uma tecla que o usuário deve pressionar para inserir um dado Enum.KeyCode .
Retorna um array de KeyCodes que o gamepad associado ao dado Enum.UserInputType suporta.
Determina se um botão específico é pressionado em um gamepad específico.
Retorna se o dado key atualmente está pressionado.
Retorna se o dado mouse button atualmente está pressionado.
Retorna verdadeiro se o gamepad especificado Enum.UserInputType for permitido controlar a navegação GuiObjects.
Recentra o CFrame da fone de ouvido VR para a orientação atual do fone de ouvido usado pelo usuário.
Define se o especificado Gamepad pode ou não mover o navegador GuiObject.
Eventos
Dispedido quando um usuário move um dispositivo que tem um acelerômetro. Usado para rastrear o movimento de dispositivos do mundo real dentro de um jogo do Roblox.
Dispedido quando a força da gravidade muda em um dispositivo que tem um acelerômetro ativado - como um dispositivo móvel.
Dispedido quando um usuário gira um dispositivo que tem um giroscópio.
Dispara quando um gamepad é conectado ao cliente. Passa o "gamepadNum" do gamepad que foi conectado.
Dispara quando um gamepad é desconectado do cliente. Passa o Enum.UserInputType do gamepad que foi desconectado.
Dispedido quando um usuário começa a interagir através de um dispositivo de Interface Humano-Computador - como um mouse ou gamepad.
Dispedido quando um usuário muda como está interagindo através de um dispositivo de Interface Humano-Computador.
Incêndios quando um usuário para de interagir através de um dispositivo de Interface Humano-Computador.
Incêndios sempre que o cliente faz um pedido para que seu personagem pule.
Dispara quando o Enum.UserInputType do cliente é alterado.
- PointerAction(wheel : number,pan : Vector2,pinch : number,gameProcessedEvent : boolean):RBXScriptSignal
Incêndios quando o usuário executa uma ação de ponteiro específica (roda, pinça, panela).
Dispedido quando o cliente perde o foco em um TextBox .
Dispedido quando o cliente se concentra em um TextBox.
- TouchDrag(dragDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Dispedido quando um usuário solta seu dedo da tela em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
- TouchLongPress(touchPositions : Array,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Dispedido quando um usuário mantém pelo menos um dedo por um curto período de tempo na mesma posição na tela em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
Dispara quando um usuário move o dedo em um dispositivo TouchEnabled , como um tablet ou smartphone.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Dispedido quando um usuário arrasta pelo menos um dedo em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Disparado quando um usuário morde seus dedos em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Dispara quando um usuário gira dois dedos em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
Disparado quando um usuário coloca o dedo em um dispositivo habilitado para toque - como a tela de um iPad ou iPhone da Apple ou um telefone Android do Google.
- TouchSwipe(swipeDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Incêndios em um dispositivo TouchEnabled quando um usuário coloca seu(s) dedo(s) na tela, passa pela tela e levanta seu dedo com uma certa velocidade de movimento.
Dispedido quando um usuário toca seu dedo em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
Dispara quando um usuário toca o mundo do jogo em um dispositivo TouchEnabled - como a tela de um dispositivo móvel.
Incêndios quando a janela do cliente Roblox perde o foco na tela do usuário.
Incêndios quando a janela do cliente Roblox ganha foco na tela do usuário.
Propriedades
AccelerometerEnabled
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.AccelerometerEnabledif accelerometerEnabled thenprint("Accelerometer enabled!")elseprint("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.
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
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
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.GyroscopeEnabledif gyroIsEnabled thenprint("Gyroscope is enabled!")elseprint("Gyroscope is not enabled!")end
Como UserInputService é apenas do lado do cliente, esta propriedade só pode ser usada em um LocalScript.
KeyboardEnabled
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 .
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
Essa propriedade define como o mouse do usuário se comporta com base no enum Enum.MouseBehavior. Pode ser definida para três valores:
- Enum.MouseBehavior.Default — O mouse se move livremente ao redor da tela do usuário.
- Enum.MouseBehavior.LockCenter — O mouse está bloqueado e não pode se mover do centro da tela do usuário.
- Enum.MouseBehavior.LockCurrentPosition — O mouse está bloqueado e não pode se mover de sua posição atual na tela do usuário no momento do bloqueio.
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 .
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
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 .
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
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 thenprint("The user's device has an available mouse!")elseprint("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 .
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
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.
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
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.
local UserInputService = game:GetService("UserInputService")
local mouseInput = {
Enum.UserInputType.MouseButton1,
Enum.UserInputType.MouseButton2,
Enum.UserInputType.MouseButton3,
Enum.UserInputType.MouseMovement,
Enum.UserInputType.MouseWheel,
}
local keyboard = Enum.UserInputType.Keyboard
local function toggleMouse(lastInputType)
if lastInputType == keyboard then
UserInputService.MouseIconEnabled = false
return
end
for _, mouse in pairs(mouseInput) do
if lastInputType == mouse then
UserInputService.MouseIconEnabled = true
return
end
end
end
UserInputService.LastInputTypeChanged:Connect(toggleMouse)
OnScreenKeyboardPosition
Esta 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
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
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
TouchEnabled
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 thenprint("The user's device has a touchscreen!")elseprint("The user's device does not have a touchscreen!")end
Veja também:
VREnabled
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.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("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.
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
O Enum.UserInputType da gamepad.
O Enum.KeyCode da botão em questã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.
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.
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:
- A propriedade delta descreve a quantidade de rotação que aconteceu pela última vez
- 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.
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
O Enum.UserInputType da gamepad em questã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
O Enum.UserInputType correspondente com o gamepad em questão.
Devolução
Um array de InputObjects representando o estado atual de todos os inputs disponíveis para o gamepad dado.
GetImageForKeyCode
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
O Enum.KeyCode para o qual obter a imagem associada.
Devolução
O ID do recurso de imagem retornado.
Amostras de código
Essa API retorna a imagem solicitada para o dado Enum.KeyCode .
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImage
GetKeysPressed
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.
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).
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.
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
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:
- UserInputService:SetNavigationGamepad() , para habilitar ou desabilitar um gamepad para navegação GUI
- UserInputService:IsNavigationGamepad() , para verificar se um gamepad está habilitado para navegação GUI
- UserInputService:GetConnectedGamepads() , para retornar todos os gamepads conectados independentemente do controle de navegação da GUI
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.Parentlocal mapKey = Enum.KeyCode.MtextLabel.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.Parentlocal key = Enum.KeyCode.ButtonAlocal mappings = {ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA assetButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- Replace with the desired ButtonCross asset}local mappedKey = UserInputService:GetStringForKeyCode(key)local image = mappings[mappedKey]imageLabel.Image = image
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
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
O Enum.UserInputType da gamepad.
Devolução
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.
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.ButtonAlocal gamepad = Enum.UserInputType.Gamepad1local 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:
- UserInputService:IsKeyDown() - Um método similar com um uso diferente: Para verificar se um dado key em um keyboard é pressionado.
Parâmetros
O Enum.UserInputType da gamepad dada.
O Enum.KeyCode da botão especificado.
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:
- Enum.UserInputType.IsGamepadButtonDown - Um evento similar com um uso diferente: Para verificar se um determinado button em um gamepad é pressionado.
Parâmetros
O Enum.KeyCode da chave.
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
O Enum.UserInputType da tecla do mouse.
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) thenprint("Gamepad is a navigation gamepad!")elseprint("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
O Enum.UserInputType da gamepad especificada.
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
O Enum.UserInputType da gamepad especificada.
Se o gamepad especificado pode mover o navegador da GUI.
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.
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
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.
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
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.
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
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.
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.
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
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
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.
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.
-- 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.
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.
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 .
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
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.
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
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
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
TouchDrag
Parâmetros
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.
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
Um conjunto de Vector2 objetos, indicando a posição dos dedos envolvidos no gesto.
O Enum.UserInputState da gesta.
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.
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
Um conjunto de Vector2 objetos, indicando as posições dos toques (por exemplo, dedos) envolvidos no gesto.
O tamanho do gesto da panela de início a fim (em pixels).
A velocidade do gesto da panela (em pixels) por segundo.
O Enum.UserInputState da gesta.
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
Um conjunto de Vector2s , indicando a posição da tela, em pixels, dos dedos envolvidos no gesto de pinça.
A magnitude do aperto de começo a fim (em pixels) dividida pelas posições de pincel iniciais.
A velocidade do gesto de pinça (em pixels) por segundo.
O Enum.UserInputState da gesta.
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
O número de grau que o gesto girou desde o início do gesto.
A mudança na rotação (em graus) dividida pela duração da mudança (em segundos).
O Enum.UserInputState da gesta.
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.
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
Um Enum.SwipeDirection , indicando a direção que o usuário deslizou.
Número de toques (por exemplo, dedos) envolvidos no gesto.
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
Um conjunto de Vector2 objetos, indicando a posição dos dedos envolvidos no gesto de toque.
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
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 .