UserInputService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
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à
Descrive se il dispositivo dell'utente ha un accelerometro.
Descrive se il dispositivo utilizzato da un utente ha un gamepad disponibile.
Descrive se il dispositivo dell'utente ha un giroscopio.
Descrive se il dispositivo dell'utente ha una tastiera disponibile.
Determina se il mouse dell'utente può essere spostato liberamente o è bloccato.
Scala l'output delta (cambio) dell'utente di Mouse .
Descrive se il dispositivo dell'utente ha un mouse disponibile.
L'ID del contenuto dell'immagine utilizzata come icona del mouse dell'utente.
Determina se l'icona Mouse è visibile.
Determina la posizione della tastiera sullo schermo.
Determina la dimensione della tastiera sullo schermo.
Descrive se una tastiera sullo schermo è attualmente visibile sullo schermo dell'utente.
Descrive se il dispositivo attuale dell'utente ha uno schermo touch disponibile.
Indica se l'utente sta usando un casco di realtà virtuale.
Metodi
Restituisce se il gamepad fornito Enum.UserInputType supporta un pulsante corrispondente al dato Enum.KeyCode.
Restituisce un array di Enum.UserInputType gamepad attualmente connessi.
Restituisce un InputObject che descrive l'accelerazione attuale del dispositivo.
Restituisce un InputObject che descrive il vector di gravità attuale del dispositivo.
Restituisce un InputObject e un CFrame , che descrive il vector di rotazione attuale del dispositivo.
Restituisce attualmente TextBox il cliente è attualmente focalizzato su.
Restituisce se un gamepad con il dato Enum.UserInputType ''gamepadNum'' è connesso.
Restituisce un array di InputObjects per tutti gli input disponibili sul gamepad specificato, che rappresenta l'ultimo stato di input di ciascun input.
Restituisce un'immagine per il richiesto Enum.KeyCode .
Restituisce un array di InputObjects associato all'keys attualmente premuto.
Restituisce il Enum.UserInputType associato all'ultimo input dell'utente.
Restituisce un array di InputObjects corrispondente ai pulsanti del mouse attualmente tenuti premuti.
Restituisce il cambiamento, in pixel, della posizione del giocatore di Mouse nell'ultimo frame renduto. Funziona solo se il mouse è bloccato.
Restituisce la posizione dello schermo attuale del giocatore di Mouse rispetto all'angolo superiore sinistro dello schermo.
Restituisce un array di gamepads connessi e abilitati per la navigazione GUI in ordine decrescente di priorità.
Restituisce una stringa che rappresenta una chiave che l'utente deve premere per inserire un dato Enum.KeyCode .
Restituisce un array di KeyCodes che il gamepad associato al dato Enum.UserInputType supporta.
Determina se viene premuto un particolare pulsante su un particolare gamepad.
Restituisce se il dato key è attualmente tenuto premuto.
Restituisce se il dato mouse button è attualmente tenuto premuto.
Restituisce vero se il gamepad specificato Enum.UserInputType è autorizzato a controllare la navigazione GuiObjects .
Ricentra il CFrame della cuffia VR sull'orientamento attuale della cuffia indossata dall'utente.
Imposta se il Gamepad specificato può o meno spostare il navigatore GuiObject.
Eventi
Spedito quando un utente sposta un dispositivo che ha un accelerometro. Utilizzato per tracciare il movimento del dispositivo reale all'interno di un gioco Roblox.
Spedito quando la forza di gravità cambia su un dispositivo che ha un accelerometro abilitato - come un dispositivo mobile.
Spedito quando un utente ruota un dispositivo che ha un giroscopio.
Si accende quando un gamepad è connesso al client. Passa il "gamepadNum" del gamepad che è stato connesso.
Si accende quando un gamepad viene disconnesso dal client. Passa il Enum.UserInputType del gamepad che è stato disconnesso.
Spedito quando un utente inizia a interagire tramite un dispositivo Interfaccia Uomo-Computer - come un mouse o un gamepad.
Spedito quando un utente cambia il modo in cui interagisce attraverso un dispositivo Interfaccia uomo-computer.
Si attiva quando un utente smette di interagire attraverso un dispositivo Interfaccia uomo-computer.
Si attiva ogni volta che il client invia una richiesta per il suo personaggio di saltare.
Si accende quando il cliente Enum.UserInputType viene modificato.
- PointerAction(wheel : number,pan : Vector2,pinch : number,gameProcessedEvent : boolean):RBXScriptSignal
Si accende quando l'utente esegue un'azione puntatore specifica (ruota, pinzamento, pan).
Spedito quando il client perde il focus su un TextBox .
Spedito quando il cliente si concentra su un TextBox .
- TouchDrag(dragDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Sparato quando un utente rilascia il dito dallo schermo su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
- TouchLongPress(touchPositions : Array,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Sparato quando un utente tiene premuto almeno un dito per un breve periodo di tempo sullo stesso posizionamento dello schermo su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
Si accende quando un utente muove il dito su un dispositivo TouchEnabled , come un tablet o uno smartphone.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Sparato quando un utente trascina almeno un dito su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Sparato quando un utente morde i pollici su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Si accende quando un utente ruota due dita su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
Sparato quando un utente posiziona il dito su un dispositivo TouchEnabled - come lo schermo di un Apple iPad o iPhone o un telefono Android di Google.
- TouchSwipe(swipeDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Si accende su un dispositivo TouchEnabled quando un utente posiziona il dito sulla schermata, scorre attraverso la schermata e solleva il dito con una certa velocità di movimento.
Sparato quando un utente tocca il dito su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
Si accende quando un utente tocca il mondo del gioco su un dispositivo TouchEnabled - come lo schermo di un dispositivo mobile.
Si accende quando la finestra del client Roblox perde il focus sullo schermo dell'utente.
Si accende quando la finestra del client Roblox ottiene focus sullo schermo dell'utente.
Proprietà
AccelerometerEnabled
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.AccelerometerEnabledif accelerometerEnabled thenprint("Accelerometer enabled!")elseprint("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.
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
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
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.GyroscopeEnabledif gyroIsEnabled thenprint("Gyroscope is enabled!")elseprint("Gyroscope is not enabled!")end
Poiché UserInputService è solo lato client, questa proprietà può essere utilizzata solo in un LocalScript .
KeyboardEnabled
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 .
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
Questa proprietà imposta come si comporta il mouse dell'utente in base all'enumero Enum.MouseBehavior. Può essere impostata su tre valori:
- Enum.MouseBehavior.Default — Il mouse si muove liberamente intorno allo schermo dell'utente.
- Enum.MouseBehavior.LockCenter — Il mouse è bloccato e non può muoversi dal centro dello schermo dell'utente.
- Enum.MouseBehavior.LockCurrentPosition — Il mouse è bloccato e non può muoversi dalla sua posizione attuale sullo schermo dell'utente al momento del blocco.
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 .
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
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 .
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
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 thenprint("The user's device has an available mouse!")elseprint("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 .
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
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.
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
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.
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
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
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
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
TouchEnabled
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 thenprint("The user's device has a touchscreen!")elseprint("The user's device does not have a touchscreen!")end
Vedi anche:
VREnabled
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.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("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.
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
Il Enum.UserInputType del gamepad.
Il Enum.KeyCode del pulsante in questione.
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.
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.
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à:
- La proprietà delta descrive la quantità di rotazione che è stata l'ultima
- 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.
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
Il Enum.UserInputType del gamepad in questione.
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
Il Enum.UserInputType corrispondente con il gamepad in questione.
Restituzioni
Un array di InputObjects che rappresenta lo stato attuale di tutti gli input disponibili per il gamepad specificato.
GetImageForKeyCode
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
Il Enum.KeyCode per il quale recuperare l'immagine associata.
Restituzioni
L'ID risorsa immagine restituita.
Campioni di codice
Questa API restituisce l'immagine richiesta per il dato Enum.KeyCode .
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImage
GetKeysPressed
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.
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).
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.
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
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:
- UserInputService:SetNavigationGamepad() , per abilitare o disabilitare un gamepad per la navigazione GUI
- UserInputService:IsNavigationGamepad() , per verificare se un gamepad è abilitato per la navigazione GUI
- UserInputService:GetConnectedGamepads() , per restituire tutti i gamepad connessi indipendentemente dal controllo di navigazione GUI
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.Parentlocal mapKey = Enum.KeyCode.MtextLabel.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.Parentlocal key = Enum.KeyCode.ButtonAlocal mappings = {ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA assetButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- Replace with the desired ButtonCross asset}local mappedKey = UserInputService:GetStringForKeyCode(key)local image = mappings[mappedKey]imageLabel.Image = image
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
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
Il Enum.UserInputType del gamepad.
Restituzioni
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.
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.ButtonAlocal gamepad = Enum.UserInputType.Gamepad1local isButtonHeld = UserInputService:IsGamepadButtonDown(gamepad, button)
Poiché UserInputService è solo lato client, questa funzione può essere utilizzata solo in un LocalScript .
Vedi anche:
- UserInputService:IsKeyDown() - Un metodo simile con un uso diverso: per controllare se viene premuto un dato key su un keyboard.
Parametri
Il Enum.UserInputType della gamepad data.
Il Enum.KeyCode del pulsante specificato.
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:
- Enum.UserInputType.IsGamepadButtonDown - Un evento simile con un uso diverso: per controllare se viene premuto un dato button su un gamepad.
Parametri
Il Enum.KeyCode della chiave.
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
Il Enum.UserInputType del pulsante del mouse.
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) thenprint("Gamepad is a navigation gamepad!")elseprint("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
Il Enum.UserInputType della gamepad specificata.
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
Il Enum.UserInputType della gamepad specificata.
Se il gamepad specificato può spostare il navigatore GUI.
Restituzioni
Campioni di codice
Questo esempio imposta Gamepad1 come gamepad di navigazione passando Enum.UserInputType.Gamepad1 e true come argomenti.
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
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.
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
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.
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
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.
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.
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
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
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.
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.
-- 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.
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.
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 .
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
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.
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
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
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
TouchDrag
Parametri
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.
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
Un array di Vector2 oggetti, che indica la posizione dei dita coinvolti nel gesto.
Il Enum.UserInputState del gesto.
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.
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
Un array di Vector2 oggetti, che indica le posizioni dei tocchi (ad esempio le dita) coinvolti nel gesto.
La dimensione del gesto della padella dall'inizio alla fine (in pixel).
La velocità del gesto della padella (in pixel) al secondo.
Il Enum.UserInputState del gesto.
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
Un array di Vector2s , che indica la posizione dello schermo, in pixel, dei dita coinvolti nel gesto di pinzamento.
La magnitudine del pinzamento da inizio a fine (in pixel) diviso dalle posizioni di pinzamento iniziali.
La velocità del gesto di pinza (in pixel) al secondo.
Il Enum.UserInputState del gesto.
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
Il numero di grado che il gesto ha ruotato dall'inizio del gesto.
Il cambiamento di rotazione (in gradi) diviso dalla durata del cambiamento (in secondi).
Il Enum.UserInputState del gesto.
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.
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
Un Enum.SwipeDirection , che indica la direzione in cui l'utente ha scorso.
Numero di tocchi (ad esempio dita) coinvolti nel gesto.
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
Un array di Vector2 oggetti, che indica la posizione dei dita coinvolti nel gesto di tocco.
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
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 .