UserInputService

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza
Non Replicato

UserInputService è un servizio utilizzato per rilevare e catturare i diversi tipi di input disponibili sul dispositivo di un utente.

Lo scopo principale di questo servizio è consentire alle esperienze di cooperare con più forme di input disponibili, come gamepad, schermi touch e tastiere.Consente a un LocalScript di eseguire diverse azioni a seconda del dispositivo e, a sua volta, fornire la migliore esperienza per l'utente finale.

Alcuni usi di questo servizio includono il rilevamento dell'input dell'utente quando interagiscono con interfacce utente, strumenti e altre istanze di gioco.Per rilevare l'input dell'utente, il servizio deve cercare un evento di servizio.Ad esempio, il servizio può rilevare eventi come quando l'utente tocca lo schermo di un dispositivo mobile utilizzando UserInputService.TouchStarted , o connette un gamepad come un controller Xbox al loro dispositivo utilizzando UserInputService.GamepadConnected .

Poiché questo servizio è solo lato client, funzionerà solo quando viene utilizzato in un LocalScript o in un ModuleScript richiesto da un LocalScript.Poiché UserInputService è solo lato client, gli utenti nel gioco possono rilevare solo il proprio input - e non l'input di altri.

Vedi anche ContextActionService , un servizio che ti consente di legare le funzioni a più input dell'utente.

Sommario

Proprietà

Metodi

Eventi

Proprietà

AccelerometerEnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo dell'utente ha un accelerometro

Un accelerometro è un componente trovato nella maggior parte dei dispositivi mobili che misura l'accelerazione (cambio di velocità).

Ad esempio, il seguente snippet di codice mostra come controllare se il dispositivo dell'utente ha un accelerometro.


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

Se il dispositivo ha un accelerometro abilitato, puoi ottenere la sua accelerazione attuale utilizzando la funzione UserInputService:GetDeviceAcceleration() o traccia quando l'accelerazione del dispositivo cambia utilizzando l'evento UserInputService.DeviceAccelerationChanged.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Campioni di codice

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

Move a Ball using the Accelerometer

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

GamepadEnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo utilizzato da un utente ha un gamepad disponibile.Se i gamepad sono disponibili, puoi usare UserInputService:GetConnectedGamepads() per recuperare un elenco di gamepad connessi.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Vedi anche:

GyroscopeEnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo dell'utente ha un giroscopio.

Un giroscopio è un componente presente nella maggior parte dei dispositivi mobili che rileva l'orientamento e la velocità di rotazione.

Se il dispositivo di un utente ha un giroscopio, puoi incorporarlo nel tuo gioco utilizzando la funzione UserInputService:GetDeviceRotation() e l'evento UserInputService.DeviceRotationChanged.


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

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

KeyboardEnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo dell'utente ha una tastiera disponibile.Questa proprietà è true quando il dispositivo dell'utente ha una tastiera disponibile, e false quando non lo fa.

Può essere utilizzato per determinare se l'utente ha una tastiera disponibile - che può essere importante se vuoi controllare se puoi usare UserInputService:IsKeyDown() o UserInputService:GetKeysPressed() per controllare l'input della tastiera.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Campioni di codice

Questo esempio stampa "Il dispositivo dell'utente ha una tastiera disponibile!" se KeyboardEnabled è vero e "Il dispositivo dell'utente non ha una tastiera disponibile!" se KeyboardEnabled è falso .

Verifica se la tastiera è abilitata

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

Lettura Parallela

Questa proprietà imposta come si comporta il mouse dell'utente in base all'enumero Enum.MouseBehavior. Può essere impostata su tre valori:

Il valore di questa proprietà non influisce sulla sensibilità del monitoraggio del movimento del mouse degli eventi.Ad esempio, GetMouseDelta restituisce la stessa posizione dello schermo Vector2 in pixel indipendentemente dal fatto che il mouse sia bloccato o sia in grado di muoversi liberamente intorno allo schermo dell'utente.Di conseguenza, gli script predefiniti come quelli che controllano la fotocamera non sono interessati da questa proprietà.

Questa proprietà viene sovrascritta se un GuiButton con Modal abilitato è GuiButton.Visible a meno che il pulsante destro del mouse del giocatore non sia giù.

Nota che, se il mouse è bloccato, UserInputService.InputChanged continuerà a fuocare quando il giocatore muove il mouse e passerà nel Delta in cui il mouse ha tentato di muoversi.Inoltre, se il giocatore viene espulso dalla partita, il mouse verrà sbloccato con forza.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Campioni di codice

Questo esempio crea uno script binocolare che diminuisce il mouse clic del giocatore FieldOfView() e MouseDeltaSensitivity() quando un giocatore con un MouseEnabled() ha lasciato i mouse clic.Lo script indica anche la posizione del mondo del mouse del giocatore Camera verso la posizione Vector3 del mouse clic.

Quando il giocatore lascia di nuovo i clic del mouse, la fotocamera del giocatore torna alla normalità con lo stesso campo visivo e come prima che il giocatore si sia zoomato con lo script.

Mentre il giocatore usa il binocolo, lo script blocca il mouse del giocatore al centro dello schermo impostando il giocatore di MouseBehavior() a BloccaCentro.La fotocamera del giocatore si muove quando il giocatore muove il mouse secondo la proprietà indicando il cambio della posizione dello schermo del mouse.

Perché questo esempio funzioni come previsto, deve essere posizionato in un LocalScript .

Crea uno script binocolare

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
-- Ripristina la fotocamera prima di CFrame e FieldOfView prima dello 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()
-- Permetti alla fotocamera di essere cambiata da uno script
camera.CameraType = Enum.CameraType.Scriptable
-- Memorizza le proprietà della fotocamera prima dello zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Zoom della fotocamera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Blocca e rallenta il mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Ripristina gli angoli di zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Attiva/disattiva lo zoom della fotocamera/unzoom
local function MouseClick()
if zoomed then
-- Dismettere la fotocamera
ResetCamera()
else
-- Zoom in fotocamera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualcosa di più alto renderebbe più difficile cercare su e giù; raccomanda qualsiasi cosa tra 0~1
local smoothness = 0.05 -- consigliare qualsiasi cosa tra 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

Non Replicato
Lettura Parallela

Questa proprietà determina la sensibilità del Mouse dell'utente.

La sensibilità determina la portata in cui un movimento del mouse fisico si traduce in un movimento del mouse in gioco.Questo può essere utilizzato per regolare il modo in cui gli eventi sensibili tracciano il movimento del mouse, come GetMouseDelta , sono al movimento del mouse.

Questa proprietà non influisce sul movimento dell'icona del mouse.Né influisce sulla impostazione Sensibilità della fotocamera trovata nella scheda Impostazioni del menu Impostazioni del client, che regola anche la sensibilità del monitoraggio degli eventi del movimento del mouse.

Questa proprietà ha un valore massimo di 10 e un valore minimo di 0.Un valore più basso corrisponde a una minore sensibilità e un valore più alto a una maggiore sensibilità.

Quando la sensibilità è 0, gli eventi che tracciano il movimento del mouse continueranno a essere attivati ma tutti i parametri e le proprietà che indicano il cambiamento della posizione del mouse restituiranno Vector2.new() , o Vector3.new() nel caso di InputObject.Delta .Ad esempio, GetMouseDelta restituirà sempre (0, 0).

Campioni di codice

Questo esempio crea uno script binocolare che diminuisce il mouse clic del giocatore FieldOfView() e MouseDeltaSensitivity() quando un giocatore con un MouseEnabled() ha lasciato i mouse clic.Lo script indica anche la posizione del mondo del mouse del giocatore Camera verso la posizione Vector3 del mouse clic.

Quando il giocatore lascia di nuovo i clic del mouse, la fotocamera del giocatore torna alla normalità con lo stesso campo visivo e come prima che il giocatore si sia zoomato con lo script.

Mentre il giocatore usa il binocolo, lo script blocca il mouse del giocatore al centro dello schermo impostando il giocatore di MouseBehavior() a BloccaCentro.La fotocamera del giocatore si muove quando il giocatore muove il mouse secondo la proprietà indicando il cambio della posizione dello schermo del mouse.

Perché questo esempio funzioni come previsto, deve essere posizionato in un LocalScript .

Crea uno script binocolare

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
-- Ripristina la fotocamera prima di CFrame e FieldOfView prima dello 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()
-- Permetti alla fotocamera di essere cambiata da uno script
camera.CameraType = Enum.CameraType.Scriptable
-- Memorizza le proprietà della fotocamera prima dello zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Zoom della fotocamera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Blocca e rallenta il mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Ripristina gli angoli di zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Attiva/disattiva lo zoom della fotocamera/unzoom
local function MouseClick()
if zoomed then
-- Dismettere la fotocamera
ResetCamera()
else
-- Zoom in fotocamera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualcosa di più alto renderebbe più difficile cercare su e giù; raccomanda qualsiasi cosa tra 0~1
local smoothness = 0.05 -- consigliare qualsiasi cosa tra 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

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo dell'utente ha un mouse disponibile.Questa proprietà è true quando il dispositivo dell'utente ha un mouse disponibile, e false quando non lo ha.


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

È importante controllare questo prima di utilizzare le funzioni del mouse UserInputService come UserInputService:GetMouseLocation().

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Vedi anche:

Campioni di codice

Questo esempio crea uno script binocolare che diminuisce il mouse clic del giocatore FieldOfView() e MouseDeltaSensitivity() quando un giocatore con un MouseEnabled() ha lasciato i mouse clic.Lo script indica anche la posizione del mondo del mouse del giocatore Camera verso la posizione Vector3 del mouse clic.

Quando il giocatore lascia di nuovo i clic del mouse, la fotocamera del giocatore torna alla normalità con lo stesso campo visivo e come prima che il giocatore si sia zoomato con lo script.

Mentre il giocatore usa il binocolo, lo script blocca il mouse del giocatore al centro dello schermo impostando il giocatore di MouseBehavior() a BloccaCentro.La fotocamera del giocatore si muove quando il giocatore muove il mouse secondo la proprietà indicando il cambio della posizione dello schermo del mouse.

Perché questo esempio funzioni come previsto, deve essere posizionato in un LocalScript .

Crea uno script binocolare

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
-- Ripristina la fotocamera prima di CFrame e FieldOfView prima dello 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()
-- Permetti alla fotocamera di essere cambiata da uno script
camera.CameraType = Enum.CameraType.Scriptable
-- Memorizza le proprietà della fotocamera prima dello zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Zoom della fotocamera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Blocca e rallenta il mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Ripristina gli angoli di zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Attiva/disattiva lo zoom della fotocamera/unzoom
local function MouseClick()
if zoomed then
-- Dismettere la fotocamera
ResetCamera()
else
-- Zoom in fotocamera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualcosa di più alto renderebbe più difficile cercare su e giù; raccomanda qualsiasi cosa tra 0~1
local smoothness = 0.05 -- consigliare qualsiasi cosa tra 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseIcon

ContentId
Lettura Parallela

La proprietà MouseIcon determina l'immagine utilizzata come puntatore.Se vuoto, viene utilizzata una freccia predefinita.Mentre il cursore si posiziona su determinati oggetti UI come un ImageButton , TextButton , TextBox o ProximityPrompt , questa immagine verrà sovrascritta e ignorata temporaneamente.

Per nascondere completamente il cursore, non utilizzare un'immagine trasparente. Invece, imposta UserInputService.MouseIconEnabled su false.

Campioni di codice

Questo esempio cambia l'icona del mouse dell'utente per assomigliare a un'immagine di drago.

Servizio di input dell'utente.MouseIcon

local UserInputService = game:GetService("UserInputService")
-- Per ripristinare il cursore a ciò che era stato impostato in precedenza, dovrà essere salvato in una variabile
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Aggiorna solo il cursore salvato se non è attualmente salvato
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Ripristina solo il cursore del mouse se c'è un cursore salvato da ripristinare
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Non ripristinare lo stesso cursore due volte (potrebbe sovrascrivere un altro script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)

MouseIconEnabled

Lettura Parallela

Questa proprietà determina se l'icona Mouse è visibile quando true l'icona del mouse è visibile, quando false non lo è.

Ad esempio, lo snippet del codice qui sotto nasconde l'icona del mouse.


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

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Campioni di codice

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

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

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

Hide Mouse During Keyboard Input

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

OnScreenKeyboardPosition

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive la posizione della tastiera sullo schermo in pixel. La posizione della tastiera è Vector2.new(0, 0) quando non è visibile.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript o in un Script con RunContext impostato su Enum.RunContext.Client .

Vedi anche OnScreenKeyboardVisible e OnScreenKeyboardSize .

OnScreenKeyboardSize

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive la dimensione della tastiera sullo schermo in pixel. La dimensione della tastiera è Vector2.new(0, 0) quando non è visibile.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript o in un Script con RunContext impostato su Enum.RunContext.Client .

Vedi anche OnScreenKeyboardVisible e OnScreenKeyboardPosition .

OnScreenKeyboardVisible

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se una tastiera sullo schermo è attualmente visibile sullo schermo dell'utente.

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript o in un Script con RunContext impostato su Enum.RunContext.Client .

Vedi anche OnScreenKeyboardSize e OnScreenKeyboardPosition .

PreferredInput

Sola Lettura
Non Replicato
Lettura Parallela

TouchEnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se il dispositivo attuale dell'utente ha uno schermo touch disponibile.

La proprietà viene utilizzata per determinare se il dispositivo dell'utente ha uno schermo touch e quindi se verranno attivati eventi touch.Se TouchEnabled è vero, puoi utilizzare eventi di UserInputService come UserInputService.TouchStarted e UserInputService.TouchEnded per tracciare quando un utente inizia e smette di toccare lo schermo del suo dispositivo.

Il codice a blocchi seguente stampa se il dispositivo dell'utente ha uno schermo touch.


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

Vedi anche:

VREnabled

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive se l'utente sta utilizzando un dispositivo di realtà virtuale (VR).

Se un dispositivo VR è abilitato, puoi interagire con la sua posizione e il suo movimento attraverso funzioni come UserInputService:GetUserCFrame() .Puoi anche reagire al movimento del dispositivo VR utilizzando l'evento UserInputService.UserCFrameChanged.


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

Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .

Vedi anche:

Campioni di codice

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

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

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

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

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

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

VR Head Tracking

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

Metodi

GamepadSupports

Questa funzione restituisce se il gamepad fornito Enum.UserInputType supporta un pulsante corrispondente al dato Enum.KeyCode.Questa funzione viene utilizzata per determinare gli input del gamepad validi.

Per determinare quali Enum.UserInputType gamepad sono connessi, usa UserInputService:GetConnectedGamepads() .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType del gamepad.

Valore predefinito: ""
gamepadKeyCode: Enum.KeyCode

Il Enum.KeyCode del pulsante in questione.

Valore predefinito: ""

Restituzioni

Se il gamepad fornito supporta un pulsante corrispondente con il dato Enum.KeyCode.

GetConnectedGamepads

Questa funzione restituisce un array di Enum.UserInputType gamepad attualmente connessi.Se non sono connessi gamepad, questo array sarà vuoto.Inoltre, restituisce solo oggetti UserInputType che sono gamepad.Ad esempio, questo evento restituirà un oggetto Gamepad1 connesso ma non un oggetto Keyboard.

Ad esempio, il seguente snippet di codice recupera i gamepad connessi e li memorizza in una variabile chiamata connectedGamepads.


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

Per controllare se un gamepad specifico è collegato, usa UserInputService:GetGamepadConnected() .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:


Restituzioni

Un array di UserInputTypes corrispondente ai gamepad connessi al dispositivo dell'utente.

GetDeviceAcceleration

La funzione GetDeviceAcceleration determina l'accelerazione attuale del dispositivo dell'utente.Restituisce un InputObject che descrive l'accelerazione attuale del dispositivo.

Perché ciò funzioni, il dispositivo dell'utente deve avere un accelerometro abilitato.Per controllare se il dispositivo di un utente ha un accelerometro abilitato, puoi controllare la proprietà UserInputService.AccelerometerEnabled.

Se vuoi tracciare quando le modifiche dell'accelerazione del dispositivo dell'utente cambiano invece, puoi usare l'evento UserInputService.DeviceAccelerationChanged.

Poiché si attiva solo localmente, può essere utilizzato solo in un LocalScript .


Restituzioni

Campioni di codice

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

Output Device Acceleration

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

GetDeviceGravity

Questa funzione restituisce un InputObject che descrive il vector di gravità attuale del dispositivo.

Il vector di gravità è determinato dall'orientamento del dispositivo rispetto alla forza di gravità del mondo reale.Ad esempio, se un dispositivo è perfettamente in piedi (ritratto), il vector di gravità è Vector3.new(0, 0, -9.18) .Se il lato sinistro del dispositivo punta verso il basso, il vector è Vector3.new(9.81, 0, 0).Infine, se la parte posteriore del dispositivo punta verso il basso, il vector è Vector3.new(0, -9.81, 0).

Questa funzione potrebbe essere utilizzata per abilitare il dispositivo dell'utente ad impattare o controllare la gravità all'interno del gioco o spostare oggetti in gioco come una palla.

La gravità viene tracciata solo per i giocatori che utilizzano un dispositivo con un giroscopio abilitato - come un dispositivo mobile.

Per controllare se il dispositivo di un utente ha un giroscopio abilitato, controlla il valore di UserInputService.GyroscopeEnabled .Se il dispositivo ha un giroscopio abilitato, puoi anche utilizzare l'evento UserInputService.DeviceGravityChanged per tracciare quando la forza di gravità sul dispositivo dell'utente cambia.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Campioni di codice

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

Moving Objects with the Gyroscope

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

GetDeviceRotation

Questa funzione restituisce un InputObject e un CFrame che descrive il vector di rotazione attuale del dispositivo.

Questo viene sparato con un InputObject.La proprietà Posizione dell'oggetto di input è una Enum.InputType.Gyroscope che traccia la rotazione totale in ogni asse locale del dispositivo.

La rotazione del dispositivo può essere tracciata solo su dispositivi con un gyroscope .

Poiché questa funzione si attiva localmente, può essere utilizzata solo in un LocalScript .


Restituzioni

Un tuple che contiene due proprietà:

  1. La proprietà delta descrive la quantità di rotazione che è stata l'ultima
  2. Il CFrame è la rotazione attuale del dispositivo rispetto al suo quadro di riferimento predefinito.

Campioni di codice

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

Output Device Rotation

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

GetFocusedTextBox

Questa funzione restituisce il TextBox il client è attualmente focalizzato su.Un TextBox può essere selezionato manualmente dall'utente, o la selezione può essere forzata utilizzando la funzione TextBox:CaptureFocus().Se non viene selezionata alcuna TextBox, questa funzione restituirà nil .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche

Restituzioni

GetGamepadConnected

Questa funzione restituisce se un gamepad con il dato Enum.UserInputType è connesso al client.

Questo può essere utilizzato per verificare se un gamepad specifico, come 'Gamepad1' è connesso al dispositivo del client.

Per recuperare un elenco di tutti i gamepad connessi, usa UserInputService:GetConnectedGamepads() .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType del gamepad in questione.

Valore predefinito: ""

Restituzioni

Se un gamepad associato a Enum.UserInputType è connesso.

GetGamepadState

Questa funzione restituisce un array di per tutti gli input disponibili sul gamepad dato, che rappresenta l'ultimo stato di input di ciascun input.

Per trovare il UserInputTypes dei gamepad connessi, usa UserInputService:GetConnectedGamepads() .

Poiché questa funzione si attiva solo localmente, può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType corrispondente con il gamepad in questione.

Valore predefinito: ""

Restituzioni

Un array di InputObjects che rappresenta lo stato attuale di tutti gli input disponibili per il gamepad specificato.

GetImageForKeyCode

ContentId

Questo metodo prende il richiesto Enum.KeyCode e restituisce l'immagine associata per il dispositivo gamepad connesso attualmente (limitato a Xbox, PlayStation e Windows).Questo significa che se il controller connesso è un controller Xbox One, l'utente vede le risorse di Xbox.Allo stesso modo, se il dispositivo connesso è un controller PlayStation, l'utente vede le risorse di PlayStation.Se vuoi utilizzare risorse personalizzate, vedi GetStringForKeyCode() .

Parametri

keyCode: Enum.KeyCode

Il Enum.KeyCode per il quale recuperare l'immagine associata.

Valore predefinito: ""

Restituzioni

ContentId

L'ID risorsa immagine restituita.

Campioni di codice

Questa API restituisce l'immagine richiesta per il dato Enum.KeyCode .

UserInputService - Ottieni immagine per il codice chiave

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

GetKeysPressed

Questa funzione restituisce un array di InputObjects associato alle chiavi attualmente premuto.

Questo array può essere iterato per determinare quali tasti sono attualmente premuti, utilizzando i valori InputObject.KeyCode .

Per controllare se viene premuta una chiave specifica, usa UserInputService:IsKeyDown() .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Un array di InputObjects associato alle chiavi attualmente premuti.

GetLastInputType

Questa funzione restituisce 'Enum.UserInputType` associato all'ultimo input dell'utente.

Ad esempio, se l'input precedente dell'utente avesse premuto la barra spaziatrice, il Enum.UserInputType restituito sarebbe stato 'Tastiera' .

L'evento UserInputService.LastInputTypeChanged può essere utilizzato per tracciare quando l'ultimo Enum.UserInputType utilizzato dall'utente cambia.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Il Enum.UserInputType associato all'ultimo input dell'utente.

Campioni di codice

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

Detect Last Input Type

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

GetMouseButtonsPressed

Questa funzione restituisce un array di InputObjects corrispondente ai pulsanti del mouse attualmente premuti.

I pulsanti del mouse che vengono tracciati da questa funzione includono:


<td>Descrizione</td>
</tr>
</thead>
<tr>
<td>Pulsante del mouse1</td>
<td>Il pulsante sinistro del mouse.</td>
</tr>
<tr>
<td>Tasto del mouse 2</td>
<td>Il pulsante destro del mouse.</td>
</tr>
<tr>
<td>Tasto del mouse 3</td>
<td>Il pulsante centrale del mouse.</td>
</tr>
Nome

Se l'utente non sta premendo alcun pulsante del mouse quando viene chiamata la funzione, restituirà un array vuoto.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Un array di InputObjects corrispondente ai pulsanti del mouse attualmente tenuti premuti.

Campioni di codice

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

Check Pressed Mouse Buttons

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

GetMouseDelta

Questa funzione restituisce il cambiamento, in pixel, della posizione del giocatore di Mouse nella ultima cornice renduta come Vector2 .Questa funzione funziona solo se il mouse è stato bloccato utilizzando la proprietà UserInputService.MouseBehavior.Se il mouse non è stato bloccato, i valori restituiti Vector2 saranno zero.

La sensibilità del mouse, determinata nelle impostazioni del client e UserInputService.MouseDeltaSensitivity , influirà sul risultato.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Cambio nel movimento del mouse.

Campioni di codice

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

Getting Mouse Delta

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

GetMouseLocation

Questa funzione restituisce un Vector2 che rappresenta la posizione dello schermo attuale del giocatore Mouse in pixel rispetto all'angolo superiore sinistro.Questo non tiene conto degli inserimenti Enum.ScreenInsets ; per ottenere quelli superiori a sinistra e inferiori a destra, chiama GuiService:GetGuiInset() .

Se la posizione del puntatore del mouse è fuori schermo o il dispositivo del giocatore non ha un mouse, il valore restituito sarà non determinato.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

Un Vector2 che rappresenta la posizione attuale dello schermo del mouse, in pixel.

GetNavigationGamepads

Questa funzione restituisce un array di gamepad UserInputTypes che sono connessi e abilitati per la navigazione GUI.Questa lista è in ordine decrescente di priorità, il che significa che può essere iterata per determinare quale gamepad debba avere il controllo della navigazione.

Se un gamepad connesso è un gamepad di navigazione solo determina quale gamepad(s) controlla le interfacce utente di navigazione.Questo non influisce sui controlli di navigazione.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:


Restituzioni

Un array di UserInputTypes che può essere utilizzato per la navigazione GUI, in ordine decrescente di priorità.

GetStringForKeyCode

GetStringForKeyCode restituisce una stringa che rappresenta una chiave che l'utente deve premere per inserire un dato Enum.KeyCode , tenendo presente la loro disposizione della tastiera.Per i codici chiave che richiedono che venga tenuto premuto qualche modificatore, questa funzione restituisce la chiave da premere in aggiunta al modificatore.Vedi gli esempi seguenti per una ulteriore spiegazione.

Quando si utilizza Roblox con una tastiera non QWERTY, i codici delle chiavi vengono mappati alle posizioni equivalenti di QWERTY.Ad esempio, premere A su una tastiera AZERTY produce Enum.KeyCode.Q .Questa mappatura può portare a informazioni non corrispondenti sugli elementi dell'interfaccia utente dell'esperienza.Ad esempio, "Premi M per aprire la mappa" è inaccurato su una tastiera AZERTY; dovrebbe essere "Premi ? per aprire la mappa" che è nella stessa posizione di M su QWERTY.Questa funzione risolve questo problema fornendo la chiave effettiva da premere mentre si usano layout di tastiera non QWERTY.


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

<th>Valore di restituzione</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> perché <code>@</code> è digitato con <kbd>Shift</kbd><kbd>2</kbd></td>
</tr>
</tbody>
Codice Chiave
Esempi sulla tastiera AZERTY

<th>Valore di restituzione</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>
Codice Chiave
Uso del gamepad

GetStringForKeyCode() restituisce la mappatura della stringa per il Enum.KeyCode per il gamepad più recentemente connesso.Se il controller connesso non è supportato, la funzione restituisce la conversione della stringa predefinita per il codice chiave richiesto.

L'esempio seguente mostra come puoi mappare risorse personalizzate per ButtonA :


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

I codici della tastiera direzionale non hanno differenze basate sul dispositivo.Enum.KeyCode.ButtonSelect ha un comportamento leggermente diverso in alcuni casi.Usa entrambe le mappature di PlayStation per garantire agli utenti di vedere i pulsanti corretti.


<th>Valore di restituzione della PlayStation</th>
<th>Valore di restituzione Xbox</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td><code>PulsanteCross</code></td>
<td><code>PulsanteA</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonB</code></td>
<td><code>Cerchio di pulsanti</code></td>
<td><code>PulsanteB</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonX</code></td>
<td><code>Square del pulsante</code></td>
<td><code>PulsanteX</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonY</code></td>
<td><code>Triangolo di pulsante</code></td>
<td><code>PulsanteY</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonL1</code></td>
<td><code>Pulsante L1</code></td>
<td><code>PulsanteLB</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonL2</code></td>
<td><code>PulsanteL2</code></td>
<td><code>PulsanteLT</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonL3</code></td>
<td><code>Pulsante L3</code></td>
<td><code>PulsanteLS</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonR1</code></td>
<td><code>Pulsante R1</code></td>
<td><code>PulsanteRB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR2</code></td>
<td><code>Pulsante R2</code></td>
<td><code>PulsanteRT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR3</code></td>
<td><code>Pulsante R3</code></td>
<td><code>PulsanteRS</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonStart</code></td>
<td><code>Opzioni di pulsante</code></td>
<td><code>PulsanteInizia</code></td>
</tr>
<tr>
<td><code>Enumerazione.KeyCode.ButtonSelect</code></td>
<td><code>Touchpad dei pulsanti</code> e <code>Condividi pulsante</code></td>
<td><code>PulsanteSelezione</code></td>
</tr>
</tbody>
Codice Chiave
Immagini di sistema per KeyCodes

Quando si utilizza un Enum.KeyCode che può essere meglio rappresentato come un'immagine, come per un ImageLabel in un'interfaccia utente, puoi utilizzare le seguenti icone legacy.Tuttavia, si consiglia di utilizzare GetImageForKeyCode() come metodo più moderno e cross‑platform per recuperare le icone del controller Xbox e PlayStation.


<th>Immagine</th>
<th>ID risorsa</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://textures/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://textures/ui/Controlli/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://textures/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://textures/ui/Controlli/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://textures/ui/Controlli/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://textures/ui/Controlli/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://textures/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://textures/ui/Controlli/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://textures/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://textures/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://textures/ui/Controlli/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://textures/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://textures/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://textures/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://textures/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://textures/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://textures/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://textures/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://textures/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://textures/ui/Controlli/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://textures/ui/Controls/shift.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.RightShift</code></td>
<td>
<img src="../../../assets/scripting/controls/shift.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/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://textures/ui/Controlli/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://textures/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://textures/ui/Controlli/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://textures/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://textures/ui/Controls/period.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Space</code></td>
<td>
<img src="../../../assets/scripting/controls/spacebar.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Controls/spacebar.png</code></td>
</tr>
</tbody>
Codice Chiave

Parametri

keyCode: Enum.KeyCode
Valore predefinito: ""

Restituzioni

GetSupportedGamepadKeyCodes

Questa funzione restituisce un array di KeyCodes che il gamepad associato al dato Enum.UserInputType supporta.

Questa funzione può essere utilizzata per determinare quali KeyCodes sono supportati e non supportati da un gamepad connesso.Per determinare se un codice chiave specifico è supportato, usa UserInputService:GamepadSupports() .

Se chiamato su un gamepad non esistente o non connesso, questa funzione restituirà un array vuoto.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType del gamepad.

Valore predefinito: ""

Restituzioni

Un array di KeyCodes supportato dal gamepad fornito.

Campioni di codice

Questo esempio ottiene un elenco di gamepad di navigazione e un elenco dei loro supportati Enum.KeyCodes.Quindi, esegue un ciclo attraverso l'elenco KeyCode supportato e lega i pulsanti ButtonX e X alle funzioni se sono supportati da un gamepad utilizzando il ContextActionService.

Binding Supportati Codici Chiave del Gamepad

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
-- Poiché questa funzione non restituisce nulla, questo handler restituirà
-- "" lavello "l'input e nessun altro gestore di azione verrà chiamato dopo
-- questo.
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

Questa funzione controlla se un particolare pulsante viene premuto su un particolare gamepad.Restituisce true se il gamepad ha premuto il button specificato, altrimenti restituisce false.

Tipi di input utente validi

Il gamepad specificato dovrebbe essere uno dei seguenti valori dell'Enum UserInputType:


<tr>
<td>Enumerazione.UserInputType.Gamepad1-8</td>
</tr>
Nome
Tasti di scelta validi

Il pulsante specificato dovrebbe essere uno dei seguenti valori dell'elenco KeyCredentials:


<tr>
<td>Enumerazione.KeyCode.ButtonX</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonY</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonA</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonB</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonR1</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonL1</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonR2</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonL2</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonR3</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonL3</td>
</tr>
<tr>
<td>Enumerazione.KeyCode.ButtonStart</td>
</tr>
<tr>
<td>Enumerazione.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>
Nome

Questo può essere utilizzato per verificare se un pulsante specifico, come A, è tenuto premuto. Ad esempio:


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

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType della gamepad data.

Valore predefinito: ""
gamepadKeyCode: Enum.KeyCode

Il Enum.KeyCode del pulsante specificato.

Valore predefinito: ""

Restituzioni

Se il pulsante del gamepad specificato sul gamepad fornito viene premuto è premuto.

IsKeyDown

Questa funzione restituisce se l'utente sta tenendo premuto il tasto associato alla chiave data Enum.KeyCode .Restituisce true se viene premuta la chiave specificata o false se non viene premuta.

Questo può essere utilizzato per controllare se viene premuta una chiave specifica, come la barra spaziatrice. Ad esempio:


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

Per recuperare un elenco di tutte le chiavi premuto dall'utente, usa la funzione UserInputService:GetKeysPressed().

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

keyCode: Enum.KeyCode

Il Enum.KeyCode della chiave.

Valore predefinito: ""

Restituzioni

Se la chiave specificata viene tenuta premuta.

IsMouseButtonPressed

Questa funzione prende un pulsante del mouse Enum.UserInputType e restituisce un bool che indica se è attualmente premuto.

Il pulsante del mouse controllato dipende dal valore Enum.UserInputType passato alla funzione come argomento. Ad esempio:


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

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript."

Parametri

mouseButton: Enum.UserInputType

Il Enum.UserInputType del pulsante del mouse.

Valore predefinito: ""

Restituzioni

Se il pulsante del mouse fornito è attualmente tenuto premuto.

IsNavigationGamepad

Questa funzione restituisce true se il gamepad specificato Enum.UserInputType è autorizzato a controllare la navigazione e la selezione GuiObjects .

Se vuoi impostare un gamepad di navigazione, puoi usare UserInputService:SetNavigationGamepad() . Puoi anche usare UserInputService:GetNavigationGamepads() per ottenere un elenco di tutti i gamepad di navigazione.

Ad esempio, il codice seguente controlla se il gamepad1 è come un gamepad di navigazione:


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

Un elenco di tutti i gamepad connessi, indipendentemente dalla navigazione, può essere recuperato utilizzando `UserInput/GetConnectedGamepads.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadEnum: Enum.UserInputType

Il Enum.UserInputType della gamepad specificata.

Valore predefinito: ""

Restituzioni

Se il gamepad specificato è un gamepad di navigazione.

RecenterUserHeadCFrame

()

Questa funzione riposiziona il CFrame della cuffia VR all'orientamento attuale della cuffia indossata dall'utente.Questo significa che l'orientamento attuale del casco è impostato su CFrame.new() .

Usa questa funzione per spostare il casco CFrame al centro dell'area di riproduzione se sembra essere a uno strano offset.

Questo si comporta identicamente alla funzione VRService , VRService:RecenterUserHeadCFrame() .

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .


Restituzioni

()

SetNavigationGamepad

()

La funzione SetNavigationGamepad imposta se il gamepad specificato Enum.UserInputType può spostare il navigatore GUI.Un gamepad che è autorizzato a muovere il navigatore GUI è considerato un gamepad di navigazione.

Se l'argomento abilitato viene passato come true, il Gamepad può spostare il navigatore GUI.Se l'argomento è false, il Gamepad non può spostare il navigatore GUI.

Se vuoi controllare se un Gamepad specificato è impostato per essere un gamepad di navigazione, puoi usare la funzione UserInputService:IsNavigationGamepad().Puoi anche usare il UserInputService:GetNavigationGamepads() per recuperare un elenco di tutti i gamepad di navigazione.

Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .

Vedi anche:

Parametri

gamepadEnum: Enum.UserInputType

Il Enum.UserInputType della gamepad specificata.

Valore predefinito: ""
enabled: boolean

Se il gamepad specificato può spostare il navigatore GUI.

Valore predefinito: ""

Restituzioni

()

Campioni di codice

Questo esempio imposta Gamepad1 come gamepad di navigazione passando Enum.UserInputType.Gamepad1 e true come argomenti.

UserInputService:ImpostaGamepad di navigazione

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

Eventi

DeviceAccelerationChanged

L'evento DeviceAccelerationChanged si attiva quando un utente sposta un dispositivo che ha un accelerometro.

Un accelerometro è un componente trovato nella maggior parte dei dispositivi mobili che misura l'accelerazione (cambio di velocità).

Per determinare se il dispositivo di un utente ha un accelerometro abilitato, vedi UserInputService.AccelerometerEnabled .

Questo evento può essere utilizzato per tracciare il movimento di un dispositivo che ha un accelerometro.Un uso di esempio include la movimentazione del personaggio del giocatore quando un dispositivo mobile si accelera.

Inoltre, questo evento può essere utilizzato insieme a UserInputService:GetDeviceAcceleration() per determinare il movimento attuale del dispositivo di un utente se il dispositivo ha un accelerometro.

Questo evento si attiva solo localmente - il che significa che solo il giocatore il cui dispositivo si muove può utilizzare l'evento e funzionerà solo in un LocalScript .

Parametri

acceleration: InputObject

Un InputObject , con un UserInputType di 'Accelerometro' e Position che mostra la forza della gravità su ogni asse locale del dispositivo.


Campioni di codice

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

Control Players Using the Accelerometer

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

DeviceGravityChanged

L'evento si attiva quando la gravità del dispositivo cambia su un dispositivo che ha un accelerometro.

Il vector di gravità di un dispositivo rappresenta la forza di gravità su ciascuno degli assi X, Y e Z del dispositivo.Mentre la gravità non cambia mai, la forza che esercita su ogni asse cambia quando il dispositivo ruota e cambia orientamento.Il valore della forza esercitata su ciascun asse è un vector unitario che va da -1 a 1.

Un accelerometro è un componente trovato nella maggior parte dei dispositivi mobili che misura l'accelerazione (cambio di velocità).

Questo evento può essere utilizzato per determinare la direzione del mondo reale della forza di gravità su un dispositivo dell'utente.Questo può poi essere utilizzato per simulare la forza di gravità su un dispositivo dell'utente all'interno del gioco, come su oggetti in gioco (vedi esempio qui sotto).

Per controllare se il dispositivo di un utente ha un accelerometro abilitato, vedi UserInputService.AccelerometerEnabled .Se il dispositivo ha un accelerometro abilitato, puoi usare la funzione UserInputService:GetDeviceGravity() per ottenere la forza attuale della gravità sul dispositivo dell'utente.

Parametri

gravity: InputObject

Un InputObject , con una proprietà InputObject.Position che mostra la forza della gravità su ogni asse locale del dispositivo.Questa posizione può essere utilizzata come direzione per determinare la direzione della gravità rispetto al dispositivo.


Campioni di codice

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

Move a Ball using the Accelerometer

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

DeviceRotationChanged

L'evento DeviceRotationChanged si attiva quando un utente ruota un dispositivo che ha un accelerometro.

Un giroscopio è un componente presente nella maggior parte dei dispositivi mobili che rileva l'orientamento e la velocità di rotazione.

L'evento è utile per tracciare l'orientamento del dispositivo e come cambia quando l'utente ruota il suo dispositivo.Per determinare la rotazione del dispositivo attuale, puoi usare la funzione UserInputService:GetDeviceRotation().

Per verificare se il dispositivo di un utente ha un giroscopio abilitato e che questo evento verrà attivato, vedi UserInputService.GyroscopeEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Parametri

rotation: InputObject

Un InputObject che fornisce informazioni sulla rotazione del dispositivo.InputObject.Position rappresenta la nuova rotazione un valore posizionale Vector3 e InputObject.Delta rappresenta il cambio di rotazione in un valore posizionale Vector3.

cframe: CFrame

Un CFrame che rappresenta l'orientamento attuale del dispositivo.


Campioni di codice

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

Move a Ball using the Accelerometer

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

GamepadConnected

L'evento GamepadConnected si attiva quando un gamepad viene connesso al client.

Poiché un gioco Roblox supporta più controller, questo evento è utile quando viene abbinato all'evento UserInputService.GamepadDisconnected per tracciare quali controller/gamepad sono attivi.Puoi anche usare UserInputService:GetConnectedGamepads() per trovare il giusto gamepad da utilizzare.

L'esempio seguente mostra un esempio di utilizzo di una traccia quando un gamepad è connesso al client.


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

Se vuoi vedere quali dispositivi sono connessi, puoi usare la funzione UserInputService:GetConnectedGamepads().

Poiché questo evento si attiva localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType della gamepad connessa.


GamepadDisconnected

L'evento GamepadDisconnected si attiva quando un gamepad viene disconnesso.

Poiché un gioco Roblox supporta più controller, questo evento è utile quando viene abbinato all'evento UserInputService.GamepadConnected per tracciare quali controller/gamepad sono attivi.Puoi anche usare UserInputService:GetConnectedGamepads() per trovare il giusto gamepad da utilizzare.

L'esempio seguente mostra un esempio di utilizzo di una traccia quando un gamepad viene disconnesso dal client.


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

Poiché questo evento si attiva localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

gamepadNum: Enum.UserInputType

Il Enum.UserInputType del gamepad disconnesso.


InputBegan

L'evento InputBegan si attiva quando un utente inizia a interagire tramite un dispositivo Interfaccia uomo-computer (pulsante del mouse verso il basso, tocco di inizio, pulsante della tastiera verso il basso, ecc.).

Può essere utilizzato per tracciare l'inizio dell'interazione dell'utente, come quando un utente interagisce per la prima volta con un elemento GUI, un gamepad, ecc.Non cattura i movimenti della ruota del mouse.

Questo evento può essere utilizzato insieme a UserInputService.InputChanged e UserInputService.InputEnded per tracciare quando inizia l'input dell'utente, le modifiche e finisce.

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


Campioni di codice

L'esempio seguente mostra uno dei molti esempi di utilizzo del trattamento dell'input dell'utente da InputBegan a seconda del suo tipo.

Trattamento dell'input Iniziato

-- Per utilizzare l'evento InputBegan, il servizio UserInputService deve essere utilizzato
local UserInputService = game:GetService("UserInputService")
-- Una funzione di esempio che fornisce diversi casi d'uso per vari tipi di input dell'utente
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

L'evento InputChanged si attiva quando un utente cambia il modo in cui interagisce attraverso un dispositivo Interfaccia uomo-computer (tasto del mouse verso il basso, tocco di inizio, pulsante della tastiera verso il basso, ecc.).

Per ignorare gli eventi che vengono gestiti automaticamente da Roblox, come lo scrolling in un ScrollingFrame , controlla che l'argomento gameProcessedEvent sia falso.Questo evento può essere utilizzato insieme a UserInputService.InputBegan e UserInputService.InputEnded per tracciare quando inizia l'input dell'utente, le modifiche e finisce.

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


InputEnded

L'evento InputEnded si attiva quando un utente smette di interagire tramite un dispositivo di interfaccia uomo-computer (tasto del mouse giù, tocco inizio, pulsante della tastiera giù, ecc.).Questo è utile quando si traccia quando un utente rilascia una tastiera, un pulsante del mouse, un input touchscreen, ecc.

Questo evento può essere utilizzato insieme a UserInputService.InputBegan e UserInputService.InputChanged per tracciare quando inizia l'input dell'utente, le modifiche e finisce.

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


JumpRequest

L'evento JumpRequest UserInputService si attiva quando c'è una richiesta di salto dal client, ad esempio quando il client premere la barra spaziatrice o il pulsante di salto su mobile.

Questo evento si attiva ogni volta che l'utente tenta di fare il suo Player.Character.Il comportamento predefinito risponde a una richiesta di salto impostando la proprietà del giocatore Humanoid.Jump a vero, che fa saltare il personaggio del giocatore.

L'evento può essere utilizzato per tracciare ogni volta che un giocatore vuole saltare.Invece di utilizzarlo per far saltare un giocatore, questo dovrebbe essere utilizzato per cambiare il comportamento di salto predefinito - come disabilitare il salto.

Ad esempio, il codice seguente stampa "Jump" ogni volta che il giocatore invia una richiesta di salto.


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

Poiché questo evento si attiva più volte per una singola richiesta di salto, è consigliato utilizzare un debounce.

Se desideri connettere le chiavi o i pulsanti ad altre azioni, considera l'uso di eventi come UserInputService:GetKeysPressed() e UserInputService.InputBegan o il ContextActionService.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .


Campioni di codice

Questo esempio di codice disabilita il salto per il LocalPlayer impostando lo stato Enum.HumanoidStateType.Jumping a falso.Impostare questo stato su false non appena l'utente tenta di saltare annulla il salto.

Perché questo esempio funzioni come previsto, deve essere posizionato in un LocalScript .

Disabilita il salto

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Si accende quando l'utente tenta di saltare
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)

LastInputTypeChanged

L'evento UserInputService.LastInputTypeChanged si attiva ogni volta che il cliente cambia il modo in cui interagisce attraverso un dispositivo Interfaccia Uomo-Computer.(i.e.da MouseMovement a MouseWheel o da Thumbstick1 a Thumbstick2).

Per ottenere il valore dell'ultimo tipo di input, indipendentemente dal fatto che sia cambiato o meno, puoi usare la funzione UserInputService:GetLastInputType().

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Parametri

lastInputType: Enum.UserInputType

Un Enum.UserInputType che indica l'ultimo tipo di input.


Campioni di codice

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

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

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

Hide Mouse During Keyboard Input

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

PointerAction

PointerAction si attiva quando l'utente esegue un'azione puntatore specifica. In particolare, scorrendo la ruota del mouse.

Parametri

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

TextBoxFocusReleased

L'evento TextBoxFocusReleased si attiva quando un client perde il focus su un TextBox , tipicamente quando un client interrompe l'inserimento del testo premendo il ritorno o cliccando/toccando altrove sullo schermo.

Ad esempio, il codice seguente stampa il nome del TextBox perdendo il focus quando si attiva l'evento.


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

Può essere utilizzato insieme a UserInputService.TextBoxFocused per tracciare quando un TextBox guadagna e perde focus.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche

Parametri

textboxReleased: TextBox

Il TextBox che ha perso il focus.


TextBoxFocused

Questo evento si attiva quando un guadagno si concentra su un TextBox, tipicamente quando un cliente fa clic/tocca su una casella di testo per iniziare l'input di testo.Questo si attiva anche se un focus della casella di testo è focalizzato utilizzando TextBox:CaptureFocus() .

Ad esempio, il codice seguente stampa il nome del TextBox focalizzato quando si attiva l'evento.


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

Può essere utilizzato insieme a UserInputService.FocusReleased per tracciare quando una casella di testo guadagna e perde focus.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche

Parametri

textboxFocused: TextBox

Il TextBox che ha guadagnato focus.


TouchDrag

Parametri

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

TouchEnded

L'evento TouchEnded si attiva quando un utente rilascia il dito dallo schermo di un dispositivo TouchEnabled, terminando l'input touch con il dispositivo.

Questo evento può essere utilizzato per determinare quando un utente smette di toccare lo schermo del suo dispositivo.Può essere abbinato a UserInputService.TouchStarted per determinare quando un utente inizia e smette di toccare lo schermo.

Ad esempio, il codice seguente stampa la posizione dello schermo in cui l'utente smette di toccare lo schermo.


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

L'oggetto di input touch è lo stesso oggetto di input durante tutta la vita del tocco.Quindi confrontare InputObjects quando sono oggetti touch è valido per determinare se è lo stesso dito.

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchLongPress

Sparato quando un utente tiene premuto almeno un dito per un breve periodo di tempo sullo stesso posizionamento dello schermo di un dispositivo TouchEnabled.

Questo evento può essere utilizzato per determinare quando un utente tiene premuto il dito su un elemento in gioco GuiObject o su un elemento.

L'esempio seguente stampa il state della pressa lunga quando l'utente tiene premuto almeno un dito per un breve periodo di tempo sullo stesso posizionamento dello schermo.Gli stati possibili includono: Inizia , Cambia , Fine , Annulla e Nessuno .


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)

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Può essere abbinato a UserInputService.TouchStarted e UserInputService.TouchEnded per determinare quando un utente inizia e smette di toccare lo schermo.

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

touchPositions: Array

Un array di Vector2 oggetti, che indica la posizione dei dita coinvolti nel gesto.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchMoved

Si accende quando un utente muove il dito su un dispositivo TouchEnabled , come un tablet o uno smartphone.

Questo evento è utile per tracciare se un utente sta muovendo il dito sullo schermo, nonché dove l'utente sta muovendo il dito.

Il codice seguente mostra il tocco che si muove dalla sua posizione precedente a una nuova posizione su un dispositivo TouchEnabled .Nota che il InputObject.Position sul parametro passato touch è un Vector3 , ma include solo le coordinate X e Y; 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)

Abina questo evento con UserInputService.TouchStarted e UserInputService.TouchEnded per determinare quando un utente inizia a toccare lo schermo, come si muove il dito mentre lo tocca e quando si ferma a toccare lo schermo.

Per controllare se il dispositivo di un utente supporta il tocco e che gli eventi di tocco si attiveranno, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchPan

L'evento TouchPan si attiva quando un utente trascina almeno un dito su un dispositivo TouchEnabled .

Questo evento può essere utilizzato per determinare quando un utente fa scorrere il dito sullo schermo di un dispositivo TouchEnabled - ad esempio per ruotare il Camera in uno script della fotocamera personalizzata.

Il riquadro seguente stampa "Velocità del trascinamento del tocco" seguito dalla velocità del tocco dell'utente quando l'utente trascina il dito sullo schermo.


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

Dai un'occhiata ad un'altra utile funzione UserInputService qui UserInputService.TouchRotate .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

touchPositions: Array

Un array di Vector2 oggetti, che indica le posizioni dei tocchi (ad esempio le dita) coinvolti nel gesto.

totalTranslation: Vector2

La dimensione del gesto della padella dall'inizio alla fine (in pixel).

velocity: Vector2

La velocità del gesto della padella (in pixel) al secondo.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchPinch

Sparato quando un utente posiziona e muove due dita sullo schermo di un dispositivo TouchEnabled .

Ad esempio, il riquadro seguente mostra quanto la scala di zoom della fotocamera è cambiata dall'inizio della pinza touch.


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

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano.Ad esempio, gli input non verranno catturati quando la finestra è minimizzata.Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

touchPositions: Array

Un array di Vector2s , che indica la posizione dello schermo, in pixel, dei dita coinvolti nel gesto di pinzamento.

scale: number

La magnitudine del pinzamento da inizio a fine (in pixel) diviso dalle posizioni di pinzamento iniziali.

velocity: number

La velocità del gesto di pinza (in pixel) al secondo.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchRotate

L'evento TouchRotate si attiva quando un utente ruota due dita su un dispositivo TouchEnabled .

Ad esempio, il seguente codice stampa quanto la fotocamera si sia ruotata dall'inizio della rotazione touch.


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

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Gli script principali che controllano la fotocamera dell'utente su un dispositivo mobile utilizzano un codice che funziona in modo simile a questo evento.La migliore pratica per questo evento è utilizzarlo quando si crea un sistema di fotocamera mobile per sostituire gli script di base predefiniti.

Vedi anche:

Parametri

touchPositions: Array

Un array di Vector2s , che indica le posizioni dei dita coinvolti nel gesto.

rotation: number

Il numero di grado che il gesto ha ruotato dall'inizio del gesto.

velocity: number

Il cambiamento di rotazione (in gradi) diviso dalla durata del cambiamento (in secondi).

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchStarted

L'evento TouchStarted si attiva quando un utente posiziona il dito su un dispositivo TouchEnabled, iniziando l'input di tocco con il dispositivo.

Questo evento può essere utilizzato per determinare quando un utente inizia a toccare lo schermo del suo dispositivo.Può essere abbinato a UserInputService.TouchEnded per determinare quando un utente inizia e smette di toccare lo schermo.

L'oggetto di input touch è lo stesso oggetto di input durante tutta la vita del tocco.Quindi confrontare InputObjects quando sono oggetti touch è valido per determinare se è lo stesso dito.

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

Un'istanza InputObject che contiene informazioni sull'input dell'utente.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchSwipe

L'evento TouchSwipe si attiva quando un utente graffia le dita su un dispositivo TouchEnabled.

Questo evento può essere utilizzato per determinare quando un utente scorre le dita sullo schermo del suo dispositivo e la direzione che l'utente ha scorso.

Per una tracciabilità più precisa del movimento di input del tocco, usa UserInputService.TouchMoved

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

swipeDirection: Enum.SwipeDirection

Un Enum.SwipeDirection , che indica la direzione in cui l'utente ha scorso.

numberOfTouches: number

Numero di tocchi (ad esempio dita) coinvolti nel gesto.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchTap

L'evento TouchTap si attiva quando l'utente tocca/tocca il dito sullo schermo su un dispositivo TouchEnabled .

Questo evento si attiverà indipendentemente dal fatto che l'utente tocchi/tocchi il mondo del gioco o un elemento GuiObject .Se stai cercando un evento che si attiva solo quando l'utente tocca/tocca il mondo del gioco, usa UserInputService.TouchTapInWorld .

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Parametri

touchPositions: Array

Un array di Vector2 oggetti, che indica la posizione dei dita coinvolti nel gesto di tocco.

gameProcessedEvent: boolean

Indica se il motore di gioco ha osservato internamente questo input e ha agito su di esso.Generalmente questo si riferisce al trattamento dell'interfaccia utente, quindi se un pulsante è stato toccato o cliccato da questo input, gameProcessedEvent sarebbe true .Questo è anche vero per gli eventi di input connessi tramite ContextActionService .


TouchTapInWorld

L'evento TouchTapInWorld si attiva quando l'utente tocca/tocca il dito sullo schermo su un dispositivo TouchEnabled.Viene attivato quando l'utente tocca nel mondo del gioco.

Questo evento può essere utilizzato per determinare quando un utente tocca lo schermo e non tocca un elemento GuiObject .Se l'utente tocca un elemento GUI, UserInputService.TouchTap verrà eseguito invece di TouchTapInWorld.

Per controllare se il dispositivo di un utente è TouchEnabled e che gli eventi di tocco verranno attivati, vedi UserInputService.TouchEnabled .

Questo evento si attiva solo quando la finestra del client Roblox è in primo piano. Ad esempio, gli input non verranno catturati quando la finestra viene minimizzata.

Poiché si attiva solo localmente, può essere utilizzato solo in un LocalScript .

Vedi anche:

Parametri

position: Vector2

Un Vector2 che indica la posizione del tocco.

processedByUI: boolean

Se l'utente ha toccato un elemento GUI.


WindowFocusReleased

L'evento WindowFocusReleased si attiva quando la finestra del client Roblox perde il focus - tipicamente quando il client Roblox viene minimizzato dall'utente.

Ad esempio, il codice seguente stampa "Focalizzazione della finestra rilasciata" ogni volta che il client Roblox perde il focus.


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

Questo evento può essere utilizzato insieme a UserInputService.WindowFocused per tracciare se il client Roblox è attivamente focalizzato sullo schermo di un utente.

Poiché si attiva solo localmente, può essere utilizzato solo in un LocalScript .


WindowFocused

L'evento WindowFocused si attiva quando la finestra del client Roblox ottiene focus - tipicamente quando il client Roblox è massimizzato/aperto attivamente sullo schermo dell'utente.

Ad esempio, il codice seguente stampa "Finestra focalizzata" ogni volta che il client Roblox ottiene focus.


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

Questo evento può essere utilizzato insieme a UserInputService.WindowFocusReleased per tracciare se il client Roblox è attivamente focalizzato sullo schermo di un utente.

Poiché questo evento si attiva solo localmente, può essere utilizzato solo in un LocalScript .