UserInputService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
UserInputService ist ein dienst, der verwendet wird, um die verschiedenen arten von eingängen zu erkennen und zu erfassen, die auf dem gerät eines benutzers verfügbar sind.
Der Hauptzweck dieses Dienstes besteht darin, Erlebnisse mit mehreren Formen der verfügbaren Eingabe zu kooperieren, wie z. B. Spielcontrollern, Touch-Bildschirmen und Tastaturen.Es ermöglicht ein LocalScript, verschiedene Aktionen auszuführen, abhängig vom Gerät, und bietet im Gegenzug das beste Erlebnis für den Endbenutzer.
Einige Verwendungen dieses Dienstes umfassen die Erkennung der Eingabe eines Benutzers, wenn er mit GUIs, Werkzeugen und anderen Spielinstanzen interagiert.Um die Eingabe eines Benutzers zu erkennen, muss der Service ein Service-Ereignis suchen.Zum Beispiel kann der Dienst Ereignisse wie erkennen, wenn der Benutzer die Bildschirm eines mobilen Geräts mit UserInputService.TouchStarted berührt oder einen Gamepad wie einen Xbox-Controller mit seinem Gerät verbindet, indem er UserInputService.GamepadConnected verwendet.
Da dieser Service nur clientseitig ist, wird er nur funktionieren, wenn er in einem LocalScript oder einem ModuleScript verwendet wird, das von einem LocalScript erforderlich ist.Da der UserInputService nur auf der Clientseite ist, können Benutzer im Spiel nur ihren eigenen Eingang erkennen - und nicht den Eingang anderer.
Siehe auch ContextActionService , einen Service, der es Ihnen ermöglicht, Funktionen an mehrere Benutzereingänge zu binden.
Zusammenfassung
Eigenschaften
Beschreibt, ob das Gerät des Benutzers einen Beschleunigungsmesser hat.
Beschreibt, ob das Gerät, das von einem Benutzer verwendet wird, einen verfügbaren Gamepad hat.
Beschreibt, ob das Gerät des Benutzers ein Gyroskop hat.
Beschreibt, ob das Gerät des Benutzers eine Tastatur verfügbar hat.
Bestimmt, ob die Maus des Benutzers frei bewegt werden kann oder gesperrt ist.
Skaliert die delta (Änderungs-) Ausgabe des Benutzers von Mouse.
Beschreibt, ob das Gerät des Benutzers eine Maus verfügbar hat.
Die Inhalts-ID des Bildes, das als Benutzer-Maussymbol verwendet wird.
Bestimmt, ob das Mouse-Symbol sichtbar ist.
Bestimmt die Position der Tastatur auf dem Bildschirm.
Bestimmt die Größe der Tastatur auf dem Bildschirm.
Beschreibt, ob eine Tastatur auf dem Bildschirm derzeit auf dem Bildschirm des Benutzers sichtbar ist.
Beschreibt, ob das aktuelle Gerät des Benutzers einen Touchscreen hat.
Weist darauf hin, ob der Benutzer einen Virtual-Reality-Headset verwendet.
Methoden
Gibt zurück, ob das angegebene Enum.UserInputType Spielpad eine Taste unterstützt, die dem angegebenen Enum.KeyCode entspricht.
Gibt eine Reihe von Enum.UserInputType Spielen zurück, die derzeit verbunden sind.
Gibt eine InputObject zurück, die die aktuelle Beschleunigung des Geräts beschreibt.
Gibt eine InputObject zurück, die den aktuellen Gravitationsvektor des Geräts beschreibt.
Gibt eine InputObject und eine CFrame zurück, die den aktuellen Rotationsvektor des Geräts beschreiben.
Gibt die derzeit TextBox zurück, auf die sich der Client derzeit konzentriert.
Gibt zurück, ob ein Gamepad mit der angegebenen Enum.UserInputType ''gamepadNum'' verbunden ist.
Gibt eine Reihe von InputObjects für alle verfügbaren Eingänge auf dem angegebenen Gamepad zurück, die den letzten Eingabezustand jedes Eingangs darstellen.
Gibt ein Bild für das angeforderte Enum.KeyCode zurück.
Gibt eine Reihe von InputObjects zurück, die mit der keys derzeit gedrückt wird.
Gibt die Enum.UserInputType zurück, die mit der jüngsten Eingabe des Benutzers verbunden ist.
Gibt eine Liste von InputObjects zurück, die mit den derzeit gedrückten Mausknöpfen übereinstimmt.
Gibt die Änderung, in Pixeln, der Position des Spielers Mouse im letzten gerenderten Frame zurück. Funktioniert nur, wenn die Maus gesperrt ist.
Gibt die aktuelle Bildschirmposition des Spielers Mouse im Verhältnis zur oberen linken Ecke des Bildschirms zurück.
Gibt eine Reihe von gamepads verbundenen und aktivierten Arrays zurück, die in absteigender Priorität für die GUI-Navigation verbunden sind.
Gibt eine Zeichenkette zurück, die der Benutzer drücken soll, um eine bestimmte Enum.KeyCode einzugeben.
Gibt eine Reihe von KeyCodes, die der Gamepad, der mit dem angegebenen Enum.UserInputType verbunden ist, unterstützt, zurück.
Bestimmt, ob eine bestimmte Taste auf einem bestimmten Gamepad gedrückt wird.
Gibt zurück, ob das gegebene key derzeit gedrückt gehalten wird.
Gibt zurück, ob das gegebene mouse button derzeit gedrückt gehalten wird.
Gibt wahr zurück, wenn das angegebene Enum.UserInputType Spielpad die Navigation GuiObjects steuern darf.
Richtet das CFrame des VR-Headsets auf die aktuelle Orientierung des von dem Benutzer getragenen Headsets aus.
Legt fest, ob der angegebene Gamepad den Navigator GuiObject bewegen kann oder nicht.
Ereignisse
Feuert ab, wenn ein Benutzer ein Gerät bewegt, das einen Beschleunigungsmesser hat. Wird verwendet, um die Bewegung von Geräten in der realen Welt innerhalb eines Roblox-Spiels zu verfolgen.
Feuert, wenn sich die Schwerkraft auf einem Gerät, das einen Beschleunigungsmesser aktiviert hat, ändert - wie einem mobilen Gerät.
Feuert ab, wenn ein Benutzer ein Gerät dreht, das ein Gyroskop hat.
Feuert, wenn ein Gamepad mit dem Client verbunden ist. Überträgt das ''gamepadNum'' des Gamepads, das mit dem Client verbunden war.
Feuert, wenn ein Gamepad vom Client getrennt wird. Überträgt das Enum.UserInputType des Gamepads, das getrennt wurde.
Feuert, wenn ein Benutzer beginnt, über ein Mensch-Computer-Schnittstellen-Gerät zu interagieren - wie eine Maus oder ein Spielpad.
Feuert, wenn ein Benutzer ändert, wie er über ein Mensch-Computer-Schnittstellen-Gerät interagiert.
Feuert, wenn ein Benutzer die Interaktion über ein Mensch-Computer-Schnittstellen-Gerät beendet.
Feuert immer dann, wenn der Client eine Anfrage stellt, dass sein Charakter springt.
Feuert, wenn sich die Enum.UserInputType des Clients ändert.
- PointerAction(wheel : number,pan : Vector2,pinch : number,gameProcessedEvent : boolean):RBXScriptSignal
Feuert, wenn der Benutzer eine bestimmte Pointer-Aktion ausführt (Rad, Klemmen, Pan).
Feuert ab, wenn der Client den Fokus auf ein TextBox verliert.
Feuert, wenn der Client sich auf ein TextBox konzentriert.
- TouchDrag(dragDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Feuert ab, wenn ein Benutzer seinen Finger vom Bildschirm auf einem TouchEnabled-Gerät ablöst - wie zum Beispiel den Bildschirm eines Mobilgeräts.
- TouchLongPress(touchPositions : Array,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Feuert, wenn ein Benutzer mindestens einen Finger für kurze Zeit an derselben Bildschirmposition auf einem TouchEnabled-Gerät hält - wie der Bildschirm eines mobilen Geräts.
Feuert, wenn ein Benutzer seinen Finger auf einem TouchEnabled, wie einem Tablet oder Smartphone, bewegt.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Feuert ab, wenn ein Benutzer mindestens einen Finger auf ein TouchEnabled Gerät zieht - wie den Bildschirm eines Mobilgeräts.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Feuert, wenn ein Benutzer seine Finger auf einem TouchEnabled Gerät drückt - wie dem Bildschirm eines mobilen Geräts.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Feuert, wenn ein Benutzer zwei Finger auf einem TouchEnabled Gerät dreht - wie den Bildschirm eines Mobilgeräts.
Feuert, wenn ein Benutzer seinen Finger auf ein TouchEnabled-Gerät legt - wie den Bildschirm eines Apple-iPads oder -iPhones oder eines Google-Android-Telefons.
- TouchSwipe(swipeDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Feuert auf einem TouchEnabled-Gerät ab, wenn ein Benutzer seinen Finger auf den Bildschirm legt, über den Bildschirm fährt und seinen Finger mit einer bestimmten Bewegungsgeschwindigkeit abhebt.
Feuert, wenn ein Benutzer seine Finger auf ein TouchEnabled Gerät tippt - wie den Bildschirm eines Mobilgeräts.
Feuert, wenn ein Benutzer die Spielwelt auf einem TouchEnabled Gerät tippt - wie dem Bildschirm eines Mobilgeräts.
Feuert, wenn das Fenster des Roblox-Clients den Fokus auf den Bildschirm des Benutzers verliert.
Feuert, wenn sich das Fenster des Roblox-Clients auf den Bildschirm des Benutzers fokussiert.
Eigenschaften
AccelerometerEnabled
Diese Eigenschaft beschreibt, ob das Gerät des Benutzers ein Beschleunigungsmesser hat
Ein Beschleunigungsmesser ist ein Komponente, die in den meisten mobilen Geräten gefunden wird, die Beschleunigung misst (Geschwindigkeitsänderung).
Zum Beispiel zeigt das folgende Code-Snippet, wie man überprüft, ob das Gerät des Benutzers einen Beschleunigungsmesser hat.
local UserInputService = game:GetService("UserInputService")local accelerometerEnabled = UserInputService.AccelerometerEnabledif accelerometerEnabled thenprint("Accelerometer enabled!")elseprint("Accelerometer not enabled!")end
Wenn das Gerät einen Beschleunigungsmesser aktiviert hat, können Sie seine aktuelle Beschleunigung erhalten, indem Sie die UserInputService:GetDeviceAcceleration()-Funktion verwenden oder verfolgen, wenn sich die Beschleunigung des Geräts durch die Verwendung des UserInputService.DeviceAccelerationChanged-Ereignisses ändert.
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Code-Beispiele
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
Diese Eigenschaft beschreibt, ob das Gerät, das von einem Benutzer verwendet wird, einen verfügbaren Gamepad hat.Wenn Spielpads verfügbar sind, kannst du UserInputService:GetConnectedGamepads() verwenden, um eine Liste von verbundenen Spielpads abzurufen.
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Siehe auch:
GyroscopeEnabled
Diese Eigenschaft beschreibt, ob das Gerät des Benutzers ein Gyroskop hat.
Ein Gyroskop ist ein Komponente, die in den meisten mobilen Geräten gefunden wird, die Orientierung und Drehgeschwindigkeit erkennen.
Wenn das Gerät eines Benutzers ein Gyroskop hat, kannst du es in deinem Spiel mit der Funktion UserInputService:GetDeviceRotation() und dem Ereignis UserInputService.DeviceRotationChanged verwenden.
local UserInputService = game:GetService("UserInputService")local gyroIsEnabled = UserInputService.GyroscopeEnabledif gyroIsEnabled thenprint("Gyroscope is enabled!")elseprint("Gyroscope is not enabled!")end
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
KeyboardEnabled
Diese Eigenschaft beschreibt, ob das Gerät des Benutzers eine Tastatur verfügbar hat.Diese Eigenschaft ist true, wenn das Gerät des Benutzers eine verfügbare Tastatur hat, und false, wenn es nicht.
Es kann verwendet werden, um zu bestimmen, ob der Benutzer eine verfügbare Tastatur hat - was wichtig sein kann, wenn Sie überprüfen möchten, ob Sie UserInputService:IsKeyDown() oder UserInputService:GetKeysPressed() verwenden können, um nach Tastatureingabe zu suchen.
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Code-Beispiele
Dieses Beispiel druckt aus, "Das Gerät des Benutzers hat eine verfügbare Tastatur!" wenn Tastatur aktiviert ist wahr und "Das Gerät des Benutzers hat keine verfügbare Tastatur!" wenn Tastatur aktiviert ist falsch.
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
Diese Eigenschaft legt fest, wie sich die Maus des Benutzers verhält, basierend auf der Enum.MouseBehavior Enum. Sie kann auf drei Werte festgelegt werden:
- Enum.MouseBehavior.Default — Die Maus bewegt sich frei auf dem Bildschirm des Benutzers.
- Enum.MouseBehavior.LockCenter — Die Maus ist gesperrt und kann sich nicht vom Zentrum des Bildschirms des Benutzers bewegen.
- Enum.MouseBehavior.LockCurrentPosition — Die Maus ist gesperrt und kann sich nicht von ihrer aktuellen Position auf dem Bildschirm des Benutzers zur Zeit des Sperrens bewegen.
Der Wert dieser Eigenschaft hat keinen Einfluss auf die Empfindlichkeit der Verfolgung der Mausbewegung bei der Ereignisverfolgung.Zum Beispiel gibt GetMouseDelta die gleiche Vector2 Bildschirmposition in Pixeln zurück, unabhängig davon, ob die Maus gesperrt ist oder sich frei um den Bildschirm des Benutzers bewegen kann.Als Ergebnis sind Standard-Skripte wie diejenigen, die die Kamera steuern, durch diese Eigenschaft nicht betroffen.
Diese Eigenschaft wird überschrieben, wenn ein mit aktiviert ist, es sei denn, die rechte Maustaste des Spielers ist unten.
Beachten Sie, dass, wenn die Maus gesperrt ist, UserInputService.InputChanged immer noch feuert, wenn der Spieler die Maus bewegt und die Delta passiert, die die Maus versucht hat, sich zu bewegen.Zusätzlich, wenn der Spieler aus dem Spiel geworfen wird, wird die Maus zwangsweise freigeschaltet.
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Code-Beispiele
Dieses Beispiel erstellt ein Fernglas-Skript, das die FieldOfView() und MouseDeltaSensitivity() des Spielers verringert, wenn ein Spieler mit einem MouseEnabled() die Maus verlassen hat.Das Skript zeigt den Spieler auch auf die Weltposition des Mausklicks.
Wenn der Spieler erneut Mausklicks verließ, kehrt die Kamera des Spielers zurück auf das benutzerdefinierte Enum.CameraType mit demselben Sichtfeld und CFrame() wie vor dem Spieler mit dem Skript eingezoomt wurde.
Während der Spieler die Ferngläser verwendet, sperrt das Skript die Maus des Spielers in der Mitte des Bildschirms, indem es die Maus des Spielers auf LockCenter festlegt.Die Kamera des Spielers bewegt sich, wenn der Spieler seine Maus entsprechend der Eigenschaft bewegt, die von übergeben wird, um die Änderung der Mausposition auf dem Bildschirm anzuzeigen.
Damit dieses Beispiel wie erwartet funktioniert, sollte es in einem LocalScript platziert werden.
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
-- Kamera zurücksetzen auf CFrame und FieldOfView vor dem 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()
-- Kamera durch Skript ändern lassen
camera.CameraType = Enum.CameraType.Scriptable
-- Lagere Kameraproperties vor dem Zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Kamera vergrößern
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Sperre und verlangsame die Maus
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoomwinkel zurücksetzen
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamerazoom/Entzoomen umschalten
local function MouseClick()
if zoomed then
-- Kamera nicht mehr vergrößern
ResetCamera()
else
-- Kamera einzoomen
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- alles, was höher ist, würde das nach oben und nach unten schwieriger machen; empfehle alles zwischen 0~1
local smoothness = 0.05 -- empfehlen etwas zwischen 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
Diese Eigenschaft legt die Empfindlichkeit des Mouse des Benutzers fest.
Die Empfindlichkeit legt fest, inwieweit eine Bewegung der physischen Maus sich auf eine Bewegung der Maus im Spiel überträgt.Dies kann verwendet werden, um angepasst zu werden, wie sensible Ereignisse, die die Bewegung der Maus verfolgen, wie GetMouseDelta, mit der Mausbewegung korrelieren.
Diese Eigenschaft wirkt sich nicht auf die Bewegung des Mausymbols aus.Es wirkt sich auch nicht auf die Kameraempfindlichkeit -Einstellung aus, die im Einstellungen -Tab des Menüs der Einstellungen des Clients gefunden wird, die auch die Empfindlichkeit der Ereignisverfolgungsmaus beeinflusst.
Diese Eigenschaft hat einen maximalen Wert von 10 und einen minimalen Wert von 0.Ein niedriger Wert entspricht niedriger Empfindlichkeit und ein höherer Wert höherer Empfindlichkeit.
Wenn die Empfindlichkeit 0 ist, feuern Ereignisse, die die Bewegung der Maus verfolgen, immer noch ab, aber alle Parameter und Eigenschaften, die die Änderung der Mausposition anzeigen, geben Vector2.new() oder Vector3.new() im Falle von InputObject.Delta zurück.Zum Beispiel wird GetMouseDelta immer zurückkehren (0, 0).
Code-Beispiele
Dieses Beispiel erstellt ein Fernglas-Skript, das die FieldOfView() und MouseDeltaSensitivity() des Spielers verringert, wenn ein Spieler mit einem MouseEnabled() die Maus verlassen hat.Das Skript zeigt den Spieler auch auf die Weltposition des Mausklicks.
Wenn der Spieler erneut Mausklicks verließ, kehrt die Kamera des Spielers zurück auf das benutzerdefinierte Enum.CameraType mit demselben Sichtfeld und CFrame() wie vor dem Spieler mit dem Skript eingezoomt wurde.
Während der Spieler die Ferngläser verwendet, sperrt das Skript die Maus des Spielers in der Mitte des Bildschirms, indem es die Maus des Spielers auf LockCenter festlegt.Die Kamera des Spielers bewegt sich, wenn der Spieler seine Maus entsprechend der Eigenschaft bewegt, die von übergeben wird, um die Änderung der Mausposition auf dem Bildschirm anzuzeigen.
Damit dieses Beispiel wie erwartet funktioniert, sollte es in einem LocalScript platziert werden.
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
-- Kamera zurücksetzen auf CFrame und FieldOfView vor dem 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()
-- Kamera durch Skript ändern lassen
camera.CameraType = Enum.CameraType.Scriptable
-- Lagere Kameraproperties vor dem Zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Kamera vergrößern
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Sperre und verlangsame die Maus
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoomwinkel zurücksetzen
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamerazoom/Entzoomen umschalten
local function MouseClick()
if zoomed then
-- Kamera nicht mehr vergrößern
ResetCamera()
else
-- Kamera einzoomen
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- alles, was höher ist, würde das nach oben und nach unten schwieriger machen; empfehle alles zwischen 0~1
local smoothness = 0.05 -- empfehlen etwas zwischen 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
Diese Eigenschaft beschreibt, ob das Gerät des Benutzers eine verfügbare Maus hat.Diese Eigenschaft ist true, wenn das Gerät des Benutzers eine verfügbare Maus hat, und false, wenn es keine hat.
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
Es ist wichtig, dies zu überprüfen, bevor du UserInputService Mausfunktionen wie UserInputService:GetMouseLocation() verwendest.
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Siehe auch:
Code-Beispiele
Dieses Beispiel erstellt ein Fernglas-Skript, das die FieldOfView() und MouseDeltaSensitivity() des Spielers verringert, wenn ein Spieler mit einem MouseEnabled() die Maus verlassen hat.Das Skript zeigt den Spieler auch auf die Weltposition des Mausklicks.
Wenn der Spieler erneut Mausklicks verließ, kehrt die Kamera des Spielers zurück auf das benutzerdefinierte Enum.CameraType mit demselben Sichtfeld und CFrame() wie vor dem Spieler mit dem Skript eingezoomt wurde.
Während der Spieler die Ferngläser verwendet, sperrt das Skript die Maus des Spielers in der Mitte des Bildschirms, indem es die Maus des Spielers auf LockCenter festlegt.Die Kamera des Spielers bewegt sich, wenn der Spieler seine Maus entsprechend der Eigenschaft bewegt, die von übergeben wird, um die Änderung der Mausposition auf dem Bildschirm anzuzeigen.
Damit dieses Beispiel wie erwartet funktioniert, sollte es in einem LocalScript platziert werden.
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
-- Kamera zurücksetzen auf CFrame und FieldOfView vor dem 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()
-- Kamera durch Skript ändern lassen
camera.CameraType = Enum.CameraType.Scriptable
-- Lagere Kameraproperties vor dem Zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Kamera vergrößern
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Sperre und verlangsame die Maus
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoomwinkel zurücksetzen
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamerazoom/Entzoomen umschalten
local function MouseClick()
if zoomed then
-- Kamera nicht mehr vergrößern
ResetCamera()
else
-- Kamera einzoomen
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- alles, was höher ist, würde das nach oben und nach unten schwieriger machen; empfehle alles zwischen 0~1
local smoothness = 0.05 -- empfehlen etwas zwischen 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
Die Eigenschaft MouseIcon bestimmt das Bild, das als Zeiger verwendet wird.Wenn leer, wird ein Standardpfeil verwendet.Während der Cursor über bestimmte UI-Objekte wie ein ImageButton, TextButton, TextBox oder ProximityPrompt schwebt, wird dieses Bild überschrieben und vorübergehend ignoriert.
Um den Cursor vollständig auszublenden, tun Sie nicht verwenden ein transparentes Bild. Stattdessen setzen Sie UserInputService.MouseIconEnabled auf false.
Code-Beispiele
Dieses Beispiel ändert das Maussymbol des Benutzers, um wie ein Drachenbild auszusehen.
local UserInputService = game:GetService("UserInputService")
-- Um den Cursor auf das zu wiederherzustellen, was zuvor festgelegt wurde, muss er in eine Variable gespeichert werden
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Aktualisieren Sie den gespeicherten Cursor nur, wenn er derzeit nicht gespeichert ist
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Wiederherstellen Sie nur den Mauszeiger, wenn es einen gespeicherten Mauszeiger zum Wiederherstellen gibt
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Stelle nicht zweimal denselben Cursor wieder her (kann ein anderes Skript überschreiben)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)
MouseIconEnabled
Diese Eigenschaft bestimmt, ob das Mouse -Symbol sichtbar ist, wenn das true -Symbol der Maus sichtbar ist, wenn false es nicht ist.
Zum Beispiel versteckt das Code-Snippet unten das Symbol der Maus.
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIconEnabled = false
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Code-Beispiele
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
Diese Eigenschaft beschreibt die Position der Tastatur auf dem Bildschirm in Pixeln. Die Tastaturposition ist Vector2.new(0, 0), wenn sie nicht sichtbar ist.
Da nur clientseitig ist, kann diese Eigenschaft nur in einem oder einem mit verwendet werden, um auf festgelegt zu werden.
Siehe auch OnScreenKeyboardVisible und OnScreenKeyboardSize.
OnScreenKeyboardSize
Diese Eigenschaft beschreibt die Größe der Tastatur auf dem Bildschirm in Pixeln. Die Größe der Tastatur ist Vector2.new(0, 0), wenn sie nicht sichtbar ist.
Da nur clientseitig ist, kann diese Eigenschaft nur in einem oder einem mit verwendet werden, um auf festgelegt zu werden.
Siehe auch OnScreenKeyboardVisible und OnScreenKeyboardPosition.
OnScreenKeyboardVisible
Diese Eigenschaft beschreibt, ob eine Tastatur auf dem Bildschirm derzeit auf dem Bildschirm des Benutzers sichtbar ist.
Da nur clientseitig ist, kann diese Eigenschaft nur in einem oder einem mit verwendet werden, um auf festgelegt zu werden.
Siehe auch OnScreenKeyboardSize und OnScreenKeyboardPosition.
PreferredInput
TouchEnabled
Diese Eigenschaft beschreibt, ob das aktuelle Gerät des Benutzers einen Touchscreen verfügbar hat.
Die Eigenschaft wird verwendet, um zu bestimmen, ob das Gerät des Benutzers einen Touchscreen hat, und daher ob Touch-Ereignisse ausgelöst werden.Wenn TouchEnabled wahr ist, können Sie Benutzeingabedienste-Ereignisse wie UserInputService.TouchStarted und UserInputService.TouchEnded verwenden, um zu verfolgen, wann ein Benutzer beginnt und aufhört, den Bildschirm ihres Geräts zu berühren.
Das Code-Snippet unten druckt aus, ob das Gerät des Benutzers einen Touchscreen hat.
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
Siehe auch:
VREnabled
Diese Eigenschaft beschreibt, ob der Benutzer ein virtuelles Realitätsgerät (VR) verwendet.
Wenn ein VR-Gerät aktiviert ist, kannst du mit seiner Position und Bewegung durch Funktionen wie UserInputService:GetUserCFrame() interagieren.Du kannst auch auf die Bewegung des VR-Geräts mit dem UserInputService.UserCFrameChanged-Ereignis reagieren.
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
Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.
Siehe auch:
Code-Beispiele
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
Methoden
GamepadSupports
Diese Funktion gibt zurück, ob das angegebene Enum.UserInputType Spielpad einen Knopf unterstützt, der dem angegebenen Enum.KeyCode entspricht.Diese Funktion wird verwendet, um gültige Gamepad-Eingaben zu bestimmen.
Um zu bestimmen, welche Enum.UserInputType Spielgeräte verbunden sind, verwende UserInputService:GetConnectedGamepads().
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Die Enum.UserInputType des Gamepads.
Die Enum.KeyCode des Buttons in Frage.
Rückgaben
Ob das angegebene Gamepad einen Button unterstützt, der dem angegebenen Enum.KeyCode entspricht.
GetConnectedGamepads
Diese Funktion gibt eine Liste von Enum.UserInputType Spielen zurück, die derzeit verbunden sind.Wenn keine Gamepads verbunden sind, wird diese Liste leer sein.Zusätzlich gibt es nur UserInputType-Objekte zurück, die Gamepads sind.Zum Beispiel wird dieses Ereignis ein verbundenes Gamepad1-Objekt zurückgeben, aber kein Tastatur-Objekt.
Zum Beispiel ruft das folgende Code-Snippet die verbundenen Gamepads ab und speichert sie in einer Variable mit dem Namen verbundene Gamepads.
local UserInputService = game:GetService("UserInputService")local connectedGamepads = UserInputService:GetConnectedGamepads()
Um zu überprüfen, ob ein bestimmtes Gamepad verbunden ist, verwende UserInputService:GetGamepadConnected().
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Rückgaben
Ein Array von UserInputTypes, das den mit dem Gerät des Benutzers verbundenen Gamepads entspricht.
GetDeviceAcceleration
Die Funktion GetDeviceAcceleration bestimmt die aktuelle Beschleunigung des Geräts des Benutzers.Es gibt eine InputObject zurück, die die aktuelle Beschleunigung des Geräts beschreibt.
Damit dies funktioniert, muss das Gerät des Benutzers einen aktivierten Beschleunigungsmesser haben.Um zu überprüfen, ob das Gerät eines Benutzers einen Beschleunigungsmesser hat, kannst du die Eigenschaft UserInputService.AccelerometerEnabled überprüfen.
Wenn du stattdessen verfolgen möchtest, wann sich die Beschleunigung des Geräts des Benutzers ändert, kannst du das Ereignis UserInputService.DeviceAccelerationChanged verwenden.
Da es nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Rückgaben
Code-Beispiele
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
Diese Funktion gibt einen InputObject zurück, der den aktuellen Gravitationsvektor des Geräts beschreibt.
Der Gravitationsvektor wird durch die Orientierung des Geräts in Bezug auf die Gravitationskraft der realen Welt bestimmt.Wenn ein Gerät zum Beispiel perfekt waagerecht (Portrait) ist, ist der Schwerkraftvektor Vector3.new(0, 0, -9.18) .Wenn die linke Seite des Geräts nach unten zeigt, ist der Vektor Vector3.new(9.81, 0, 0).Schließlich, wenn die Rückseite des Geräts nach unten zeigt, ist der Vektor Vector3.new(0, -9.81, 0).
Diese Funktion kann verwendet werden, um das Gerät des Benutzers zu aktivieren, die Gravitation innerhalb des Spiels zu beeinflussen oder In-Game-Objekte wie einen Ball zu bewegen.
Schwerkraft wird nur für Spieler verfolgt, die ein Gerät mit einem aktivierten Gyroskop verwenden - wie ein mobiles Gerät.
Um zu überprüfen, ob das Gerät eines Benutzers ein Gyroskop hat, überprüfe den Wert von UserInputService.GyroscopeEnabled.Wenn das Gerät ein Gyroskop aktiviert hat, kannst du auch das Ereignis UserInputService.DeviceGravityChanged verwenden, um zu verfolgen, wann sich die Schwerkraft auf dem Gerät des Benutzers ändert.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
Code-Beispiele
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
Diese Funktion gibt eine InputObject und eine CFrame zurück, die den aktuellen Rotationsvektor des Geräts beschreiben.
Dies wird mit einem InputObject abgefeuert.Die Position-Eigenschaft des Eingabeelements ist eine Enum.InputType.Gyroscope, die die gesamte Rotation in jedem lokalen Gerät轴 verfolgt.
Die Geräte rotation kann nur auf Geräten mit einem gyroscope verfolgt werden.
Da diese Funktion lokal feuert, kann sie nur in einem LocalScript verwendet werden.
Rückgaben
Eine Tupla mit zwei Eigenschaften:
- Die Delta-Eigenschaft beschreibt die Menge der Rotation, die zuletzt passiert ist
- Der CFrame ist die aktuelle Rotation des Geräts im Vergleich zu seinem Standardreferenzrahmen.
Code-Beispiele
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
Diese Funktion gibt die TextBox zurück, auf die sich der Client derzeit konzentriert.Ein TextBox kann vom Benutzer manuell ausgewählt werden, oder die Auswahl kann mit der Funktion TextBox:CaptureFocus() erzwungen werden.Wenn keine TextBox ausgewählt ist, gibt diese Funktion nil zurück.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch
Rückgaben
GetGamepadConnected
Diese Funktion gibt zurück, ob ein Gamepad mit der angegebenen Enum.UserInputType Verbindung zum Client verbunden ist.
Dies kann verwendet werden, um zu überprüfen, ob ein bestimmtes Gamepad, wie 'Gamepad1', mit dem Gerät des Clients verbunden ist.
Um eine Liste aller verbundenen Gamepads abzurufen, verwende UserInputService:GetConnectedGamepads().
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Das Enum.UserInputType des Spielgeräts in Frage.
Rückgaben
Ob ein Gamepad, das mit Enum.UserInputType verbunden ist, verbunden ist.
GetGamepadState
Diese Funktion gibt eine Matrix von InputObjects für alle verfügbaren Eingänge auf dem angegebenen Enum.UserInputType Spielpad zurück, die den letzten Eingabezustand jedes Eingangs darstellt
Um die UserInputTypes der verbundenen Spielkonsolen zu finden, verwende UserInputService:GetConnectedGamepads().
Da diese Funktion nur lokal feuert, kann sie nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Die Enum.UserInputType entspricht dem Gamepad, das in Frage kommt.
Rückgaben
Ein Array von InputObjects, das den aktuellen Zustand aller verfügbaren Eingänge für das angegebene Gamepad darstellt.
GetImageForKeyCode
Diese Methode nimmt das angeforderte Enum.KeyCode und gibt das dazugehörige Bild für das aktuell verbundene Spielpadgerät (begrenzt auf Xbox, PlayStation und Windows) zurück.Das bedeutet, dass, wenn der verbundene Controller ein Xbox-One-Controller ist, der Benutzer Xbox-Assets sieht.Ebenso, wenn das verbundene Gerät ein PlayStation-Controller ist, sieht der Benutzer PlayStation-Assets.Wenn du benutzerdefinierte Assets verwenden möchtest, siehe GetStringForKeyCode().
Parameter
Die Enum.KeyCode für die das zugeordnete Bild abgerufen werden soll.
Rückgaben
Die zurückgegebene Bild-Asset-ID.
Code-Beispiele
Diese API gibt das angeforderte Bild für das angegebene Enum.KeyCode zurück.
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImage
GetKeysPressed
Diese Funktion gibt eine Matrix von InputObjects zurück, die mit den derzeit gedrückten Tasten verbunden ist.
Dieses Array kann durchlaufen werden, um zu bestimmen, welche Tasten derzeit gedrückt werden, mithilfe der InputObject.KeyCode Werte.
Um zu überprüfen, ob eine bestimmte Taste gedrückt wird, verwende UserInputService:IsKeyDown().
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
Ein Array von InputObjects, das mit den derzeit gedrückten Tasten verbunden ist.
GetLastInputType
Diese Funktion gibt 'Enum.UserInputType' zurück, das mit dem jüngsten Eingabeeingabe des Benutzers verbunden ist.
Wenn zum Beispiel die frühere Eingabe des Benutzers die Leertaste gedrückt hatte, wäre die zurückgegebene Enum.UserInputType'Tastatur' .
Das Ereignis UserInputService.LastInputTypeChanged kann verwendet werden, um zu verfolgen, wann das letzte Enum.UserInputType vom Benutzer verwendet wurde, das sich geändert hat.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
Die Enum.UserInputType mit dem jüngsten Eingabeeingang des Benutzers verbunden ist.
Code-Beispiele
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
Diese Funktion gibt eine Matrix von InputObjects zurück, die den aktuell gedrückten Mausknöpfen entspricht.
Mausknöpfe, die von dieser Funktion verfolgt werden, umfassen:
<td>Beschreibung</td></tr></thead><tr><td>Mausknopf1</td><td>Die linke Maus-Taste.</td></tr><tr><td>Maus-Button2</td><td>Die rechte Maustaste.</td></tr><tr><td>Maus-Button3</td><td>Die mittlere Maustaste.</td></tr>
Namen |
---|
Wenn der Benutzer keine Maus-Taste gedrückt hat, wenn die Funktion aufgerufen wird, gibt sie eine leere Liste zurück.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
Ein Array von InputObjects, das den aktuell gehaltenen Mausknöpfen entspricht, die derzeit gedrückt werden.
Code-Beispiele
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
Diese Funktion gibt die Änderung, in Pixeln, der Position des Spielers Mouse im letzten gerenderten Frame als Vector2 zurück.Diese Funktion funktioniert nur, wenn die Maus mit der Eigenschaft UserInputService.MouseBehavior gesperrt wurde.Wenn die Maus nicht gesperrt wurde, sind die zurückgegebenen Vector2 Werte null.
Die Empfindlichkeit der Maus, die in den Einstellungen des Clients festgelegt ist und UserInputService.MouseDeltaSensitivity , wird das Ergebnis beeinflussen.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
Änderung der Bewegung der Maus.
Code-Beispiele
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
Diese Funktion gibt eine Vector2 zurück, die die aktuelle Bildschirmposition des Spielers Mouse in Pixeln im oberen linken Eck darstellt.Dies berücksichtigt nicht die Enum.ScreenInsets ; um die oberen und unteren Einfügungen links und rechts zu erhalten, rufen Sie GuiService:GetGuiInset() an.
Wenn die Position des Mauszeigers außerhalb des Bildes ist oder das Gerät des Spielers keine Maus hat, wird der zurückgegebene Wert unbestimmt sein.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
GetNavigationGamepads
Diese Funktion gibt eine Reihe von Gamepad UserInputTypes zurück, die verbunden und für die GUI-Navigation aktiviert sind.Diese Liste ist in absteigender Priorität, was bedeutet, dass sie durchlaufen werden kann, um zu bestimmen, welches Gamepad die Navigationssteuer haben soll.
Ob ein verbundenes Gamepad ein Navigations-Gamepad ist, bestimmt nur, welche Gamepads die Navigations-GUIs steuern.Dies wirkt sich nicht auf Navigationssteuerelemente aus.
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
- UserInputService:SetNavigationGamepad() , um einen Gamepad für die GUI-Navigation zu aktivieren oder zu deaktivieren
- UserInputService:IsNavigationGamepad() , um zu überprüfen, ob ein Gamepad für die GUI-Navigation aktiviert ist
- UserInputService:GetConnectedGamepads() , um alle verbundenen Spielgeräte zurückzugeben, unabhängig von der GUI-Navigationssteuerung
Rückgaben
Ein Array von UserInputTypes, das für die GUI-Navigation verwendet werden kann, in absteigender Priorität.
GetStringForKeyCode
GetStringForKeyCode gibt eine Zeichenkette zurück, die ein Schlüssel ist, den der Benutzer drücken soll, um einen bestimmten Enum.KeyCode einzugeben, unter Berücksichtigung seiner Tastatur布置.Für Schlüsselcodes, die einen Modifikator erfordern, der gehalten werden muss, gibt diese Funktion den Schlüssel zurück, der zusätzlich zum Modifikator gedrückt werden muss.Siehe die Beispiele unten für weitere Erklärung.
Wenn du Roblox mit einer nicht-QWERTY-Tastaturlegende verwendest, werden Tastencode-Kodierungen auf gleichwertige QWERTY-Positionen gemappt.Zum Beispiel, wenn Sie auf einer AZERTY-Tastatur A drücken, ergibt sich Enum.KeyCode.Q.Diese Mapping kann zu unpassenden Informationen auf Erfahrungs-UI-Elementen führen.Zum Beispiel, "Drücken Sie M, um die Karte zu öffnen", ist auf einer AZERTY-Tastatur ungenau; es müsste "Drücken Sie ?, um die Karte zu öffnen", sein, was in derselben Position wie M auf QWERTY ist.Diese Funktion löst dieses Problem, indem sie den tatsächlichen Taste drückt, während du nicht-QWERTY-Tastaturlayouts verwendest.
local UserInputService = game:GetService("UserInputService")local textLabel = script.Parentlocal mapKey = Enum.KeyCode.MtextLabel.Text = "Press " .. UserInputService:GetStringForKeyCode(mapKey) .. " to open the map"
Beispiele auf der QWERTY-Tastatur
<th>Wert zurückgeben</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.Äquivalent</code></td><td><code>=</code></td></tr><tr><td><code>Enum.KeyCode.At</code></td><td><code>2</code> weil <code>@</code> mit <kbd>Shift</kbd><kbd>2</kbd> getippt wird</td></tr></tbody>
Kenncode |
---|
Beispiele auf AZERTY-Tastatur
<th>Wert zurückgeben</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.Äquivalent</code></td><td><code>=</code></td></tr><tr><td><code>Enum.KeyCode.At</code></td><td><code>É</code></td></tr></tbody>
Kenncode |
---|
Gamepad-Verwendung
GetStringForKeyCode() gibt die String-Karte für das Enum.KeyCode für das zuletzt verbundene Spielpad zurück.Wenn der verbundene Controller nicht unterstützt wird, gibt die Funktion die Standardtextkonvertierung für den angeforderten Schlüsselcode zurück.
Das folgende Beispiel zeigt, wie du benutzerdefinierte Assets für ButtonA mappen kannst:
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
Gamepad-Karten
Die Richtungspad-Tastenkodierungen haben keine Unterschiede basierend auf dem Gerät.Enum.KeyCode.ButtonSelect hat in einigen Fällen ein etwas anderes Verhalten.Verwende beide PlayStation-Mappings, um sicherzustellen, dass Benutzer die richtigen Schaltflächen sehen.
<th>PlayStation-Rückgabewert</th><th>Xbox-Rückgabewert</th></tr></thead><tbody><tr><td><code>Enum.KeyCode.ButtonA</code></td><td><code>KnopfCross</code></td><td><code>SchaltflächeA</code></td></tr><tr><td><code>Enum.KeyCode.ButtonB</code></td><td><code>Knopfkreis</code></td><td><code>SchaltflächeB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonX</code></td><td><code>KnopfSquare</code></td><td><code>SchaltflächeX</code></td></tr><tr><td><code>Enumer.KeyCode.ButtonY</code></td><td><code>Knopf dreieck</code></td><td><code>KnopfY</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL1</code></td><td><code>Schaltfläche L1</code></td><td><code>KnopfLB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL2</code></td><td><code>SchaltflächeL2</code></td><td><code>SchaltflächeLT</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL3</code></td><td><code>SchaltflächeL3</code></td><td><code>ButtonLS</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR1</code></td><td><code>Schaltfläche R1</code></td><td><code>SchaltflächeRB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR2</code></td><td><code>Schaltfläche R2</code></td><td><code>SchaltflächeRT</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR3</code></td><td><code>Schaltfläche R3</code></td><td><code>SchaltflächeRS</code></td></tr><tr><td><code>Enum.KeyCode.ButtonStart</code></td><td><code>Knopfoptionen</code></td><td><code>Taste starten</code></td></tr><tr><td><code>Enum.KeyCode.ButtonSelect</code></td><td><code>ButtonTouchpad</code> und <code>ButtonShare</code></td><td><code>Knopfauswählen</code></td></tr></tbody>
Kenncode |
---|
Systembilder für Schlüsselcodes
Wenn Sie ein Enum.KeyCode verwenden, das besser als Bild dargestellt werden kann, z. B. für ein ImageLabel in einer Benutzeroberfläche, können Sie die folgenden Legacy-Ikonen verwenden.Es wird jedoch empfohlen, GetImageForKeyCode() als moderne, crossplattformübergreifende Methode zu verwenden, um Xbox- und PlayStation-Controller-Icons abzurufen.
<th>Bild</th><th>Asset-ID</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/Kontrollen/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/Kontrollen/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/Controls/xboxB.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadLeft</code></td><td><img src="../../../assets/scripting/controls/dpadLeft.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadLeft.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadRight</code></td><td><img src="../../../assets/scripting/controls/dpadRight.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadRight.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadUp</code></td><td><img src="../../../assets/scripting/controls/dpadUp.png" width="24"></img></td><td><code>rbxasset://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/Controls/dpadDown.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonSelect</code></td><td><img src="../../../assets/scripting/controls/xboxView.png" width="24"></img></td><td><code>rbxasset://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/Controls/xboxLB.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR1</code></td><td><img src="../../../assets/scripting/controls/xboxRB.png" width="24"></img></td><td><code>rbxasset://textures/ui/Kontrollen/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/Kontrollen/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/Kontrollen/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/Controls/return.png</code></td></tr><tr><td><code>Enum.KeyCode.Linksschaltfläche</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.Rechtsverschiebung</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/Controls/tab.png</code></td></tr><tr><td><code>Enum.KeyCode.Quote</code></td><td><img src="../../../assets/scripting/controls/apostrophe.png" width="24"></img></td><td><code>rbxasset://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/Controls/comma.png</code></td></tr><tr><td><code>Enum.KeyCode.Zitieren</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>
Kenncode |
---|
Parameter
Rückgaben
GetSupportedGamepadKeyCodes
Diese Funktion gibt eine Liste von KeyCodes, die der Gamepad, der mit dem angegebenen Enum.UserInputType verbunden ist, unterstützt, zurück.
Diese Funktion kann verwendet werden, um zu bestimmen, welche Tastaturschaltflächen von einem verbundenen Gamepad unterstützt und nicht unterstützt werden.Um festzustellen, ob ein bestimmter Schlüsselcode unterstützt wird, verwende UserInputService:GamepadSupports().
Wenn auf einem nicht existierenden oder nicht verbundenen Gamepad aufgerufen wird, gibt diese Funktion eine leere Liste zurück.
Da UserInputService nur auf clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Die Enum.UserInputType des Gamepads.
Rückgaben
Code-Beispiele
Dieses Beispiel erhält eine Liste von Navigations-Gamepads und eine Liste ihrer unterstützten Enum.KeyCodes.Dann durchläuft es die unterstützte KeyCode-Liste und bindet die ButtonX- und X-Tasten an Funktionen, wenn sie von einem Gamepad mit der verwendet werden.
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
-- Da diese Funktion nichts zurückgibt, wird dieser Handler
-- versenke die eingabe und keine anderen aktionen-handler werden nach aufgerufen
-- diese hier.
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
Diese Funktion prüft, ob ein bestimmter Button auf einem bestimmten Gamepad gedrückt wird.Es gibt true zurück, wenn das gamepad die angegebene button gedrückt hat, sonst gibt es false zurück.
Gültige Benutereingabetypen
Das angegebene Gamepad sollte einer der folgenden UserInputType-Enum-Werte sein:
<tr><td>Enum.UserInputType.Gamepad1-8</td></tr>
Namen |
---|
Gültige Tastaturlayouts
Die angegebene Schaltfläche sollte einer der folgenden KeyCodes-Enum-Werte sein:
<tr><td>Enum.KeyCode.ButtonX</td></tr><tr><td>Enumer.KeyCode.ButtonY</td></tr><tr><td>Enum.KeyCode.ButtonA</td></tr><tr><td>Enum.KeyCode.ButtonB</td></tr><tr><td>Enum.KeyCode.ButtonR1</td></tr><tr><td>Enum.KeyCode.ButtonL1</td></tr><tr><td>Enum.KeyCode.ButtonR2</td></tr><tr><td>Enum.KeyCode.ButtonL2</td></tr><tr><td>Enum.KeyCode.ButtonR3</td></tr><tr><td>Enum.KeyCode.ButtonL3</td></tr><tr><td>Enum.KeyCode.ButtonStart</td></tr><tr><td>Enum.KeyCode.ButtonSelect</td></tr><tr><td>Enum.KeyCode.DPadLink</td></tr><tr><td>Enumer.KeyCode.DPadRight</td></tr><tr><td>Enumer.KeyCode.DPadUp</td></tr><tr><td>Enum.KeyCode.DPadDown</td></tr>
Namen |
---|
Dies kann verwendet werden, um zu überprüfen, ob eine bestimmte Taste, wie A, gedrückt gehalten wird. Zum Beispiel:
local UserInputService = game:GetService("UserInputService")local button = Enum.KeyCode.ButtonAlocal gamepad = Enum.UserInputType.Gamepad1local isButtonHeld = UserInputService:IsGamepadButtonDown(gamepad, button)
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
- UserInputService:IsKeyDown() - Eine ähnliche Methode mit einer anderen Verwendung: Um zu überprüfen, ob ein bestimmtes key auf einem keyboard gedrückt wird.
Parameter
Die Enum.UserInputType des angegebenen Gamepads.
Die Enum.KeyCode des angegebenen Buttons.
Rückgaben
Ob die angegebene Gamepad-Taste auf dem angegebenen Gamepad gedrückt wird, wird gedrückt.
IsKeyDown
Diese Funktion gibt zurück, ob der Benutzer die Taste gedrückt hält, die mit dem angegebenen Enum.KeyCode verbunden ist.Es gibt zurück true wenn der angegebene Schlüssel gedrückt wird oder false wenn er nicht gedrückt wird.
Dies kann verwendet werden, um zu überprüfen, ob eine bestimmte Taste, wie die Leertaste, gedrückt wird. Zum Beispiel:
local UserInputService = game:GetService("UserInputService")local spaceHeld = UserInputService:IsKeyDown(Enum.KeyCode.Space)
Um eine Liste aller von der Benutzerin gedrückten Tasten abzurufen, verwende die UserInputService:GetKeysPressed()-Funktion.
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
- Enum.UserInputType.IsGamepadButtonDown - Ein ähnliches Ereignis mit einer anderen Verwendung: Um zu überprüfen, ob ein bestimmtes button auf einem gamepad gedrückt wird.
Parameter
Die Enum.KeyCode des Schlüssels.
Rückgaben
Ob der angegebene Schlüssel gedrückt wird.
IsMouseButtonPressed
Diese Funktion nimmt eine Maus-Taste Enum.UserInputType und gibt einen bool zurück, der anzeigt, ob sie derzeit gedrückt wird.
Die überprüfte Maus-Taste hängt vom Enum.UserInputType Wert ab, der an die Funktion als Argument übergeben wurde. Zum Beispiel:
local UserInputService = game:GetService("UserInputService")local pressed = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden."
Parameter
Die Enum.UserInputType des Mausknopfes.
Rückgaben
Ob der angegebene Mausknopf derzeit gedrückt gehalten wird.
IsNavigationGamepad
Diese Funktion gibt true zurück, wenn das angegebene Enum.UserInputType Spielpad die Navigation und Auswahl GuiObjects steuern darf.
Wenn du ein Navigations-Gamepad einrichten möchtest, kannst du UserInputService:SetNavigationGamepad() verwenden. Du kannst auch UserInputService:GetNavigationGamepads() verwenden, um eine Liste aller Navigations-Gamepads zu erhalten.
Zum Beispiel prüft der Code unten, ob das Gamepad1 als Navigationsgamepad ist:
local UserInputService = game:GetService("UserInputService")if UserInputService:IsNavigationGamepad(UserInputType.Gamepad1) thenprint("Gamepad is a navigation gamepad!")elseprint("Gamepad is not a navigation gamepad!")end
Eine Liste aller verbundenen Gamepads, unabhängig von der Navigation, kann mit `UserInput/GetConnectedGamepads abgerufen werden.
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Die Enum.UserInputType des angegebenen Gamepads.
Rückgaben
Ob das angegebene Gamepad ein Navigations-Gamepad ist.
RecenterUserHeadCFrame
Diese Funktion richtet das CFrame des VR-Headsets auf die aktuelle Orientierung des Headsets aus, das vom Benutzer getragen wird.Das bedeutet, dass die aktuelle Orientierung des Headsets auf CFrame.new() festgelegt ist.
Verwende diese Funktion, um das Kopfhörer-CFRame in die Mitte des Spielbereichs zu verschieben, wenn es an einem seltsamen Versatz scheint.
Dies verhält sich identisch zur VRService Funktion, VRService:RecenterUserHeadCFrame().
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Rückgaben
SetNavigationGamepad
Die Funktion SetNavigationGamepad legt fest, ob das angegebene Enum.UserInputType Spielpad den GUI-Navigator bewegen kann.Ein Gamepad, das es erlaubt, den GUI-Navigator zu bewegen, gilt als Navigations-Gamepad.
Wenn das aktivierte Argument als true, kann das Gamepad den GUI-Navigator bewegen.Wenn das Argument false ist, kann das Gamepad den GUI-Navigator nicht bewegen.
Wenn du überprüfen möchtest, ob ein bestimmtes Gamepad ein festgelegtes Navigations-Gamepad ist, kannst du die UserInputService:IsNavigationGamepad()-Funktion verwenden.Du kannst auch die UserInputService:GetNavigationGamepads() verwenden, um eine Liste aller Navigationsgamepads abzurufen.
Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Die Enum.UserInputType des angegebenen Gamepads.
Ob das angegebene Gamepad den GUI-Navigator bewegen kann.
Rückgaben
Code-Beispiele
Dieses Beispiel legt Gamepad1 als Navigations-Gamepad fest, indem es Enum.UserInputType.Gamepad1 und true als Argumente übermittelt.
local UserInputService = game:GetService("UserInputService")
UserInputService:SetNavigationGamepad(Enum.UserInputType.Gamepad1, true)
Ereignisse
DeviceAccelerationChanged
Das Ereignis "DeviceAccelerationChanged" wird ausgelöst, wenn ein Benutzer ein Gerät bewegt, das einen Beschleunigungsmesser hat.
Ein Beschleunigungsmesser ist ein Komponente, die in den meisten mobilen Geräten gefunden wird, die Beschleunigung misst (Geschwindigkeitsänderung).
Um zu bestimmen, ob das Gerät eines Benutzers einen Beschleunigungsmesser aktiviert hat, siehe UserInputService.AccelerometerEnabled .
Dieses Ereignis kann verwendet werden, um die Bewegung eines Geräts zu verfolgen, das einen Beschleunigungsmesser hat.Eine Beispielnutzung beinhaltet das Bewegen des Spielcharakters, wenn ein mobiles Gerät beschleunigt wird.
Zusätzlich kann dieses Ereignis zusammen mit UserInputService:GetDeviceAcceleration() verwendet werden, um die aktuelle Bewegung eines Geräts eines Benutzers zu bestimmen, wenn das Gerät einen Beschleunigungsmesser hat.
Dieses Ereignis wird nur lokal ausgelöst - was bedeutet, dass nur der Spieler, dessen Gerät sich bewegt, das Ereignis verwenden kann, und es wird nur in einem LocalScript funktionieren.
Parameter
Ein InputObject , mit einem UserInputType von 'Accelerometer' und Position , das die Kraft der Gravitation auf jedem lokalen Gerätachse zeigt.
Code-Beispiele
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
Das Ereignis UserInputService.DeviceGravityChanged wird ausgelöst, wenn sich die Gravitation des Geräts Vector3 auf einem Gerät, das einen Beschleunigungsmesser hat, ändert.
Der Schwerkraftvektor eines Geräts repräsentiert die Schwerkraft auf jedem der X-, Y- und Z-Achsen des Geräts.Während die Gravitation sich nie ändert, ändert sich die Kraft, die sie auf jede Achse ausübt, wenn das Gerät rotiert und die Orientierung ändert.Der Kraftwert, der auf jede Achse ausgeübt wird, ist ein Einheitenvektor, der von -1 bis 1 reicht.
Ein Beschleunigungsmesser ist ein Komponente, die in den meisten mobilen Geräten gefunden wird, die Beschleunigung misst (Geschwindigkeitsänderung).
Dieses Ereignis kann verwendet werden, um die Richtung der Gravitationskraft in der realen Welt auf dem Gerät eines Benutzers zu bestimmen.Dies kann dann sogar verwendet werden, um die Kraft der Gravitation auf dem Gerät eines Benutzers innerhalb des Spiels zu simulieren, wie auf In-Game-Objekten (siehe Beispiel unten).
Um zu überprüfen, ob das Gerät eines Benutzers einen Beschleunigungsmesser hat, siehe UserInputService.AccelerometerEnabled .Wenn das Gerät einen aktivierten Beschleunigungsmesser hat, kannst du die UserInputService:GetDeviceGravity()-Funktion verwenden, um die aktuelle Gravitationskraft auf dem Gerät des Benutzers zu erhalten.
Parameter
Ein InputObject, mit einer InputObject.Position Eigenschaft, die die Kraft der Gravitation auf jedem lokalen Gerätachse zeigt.Diese Position kann als Richtung verwendet werden, um die Richtung der Gravitation in Bezug auf das Gerät zu bestimmen.
Code-Beispiele
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
Das Ereignis "Geräte rotation geändert" wird ausgelöst, wenn ein Benutzer ein Gerät dreht, das ein Gyroskop hat.
Ein Gyroskop ist ein Komponente, die in den meisten mobilen Geräten gefunden wird, die Orientierung und Drehgeschwindigkeit erkennen.
Das Ereignis ist nützlich, wenn Sie die Orientierung des Geräts verfolgen und die Änderungen verfolgen, wenn der Benutzer sein Gerät dreht.Um die aktuelle Geräte rotation zu bestimmen, kannst du die UserInputService:GetDeviceRotation() Funktion verwenden.
Um zu überprüfen, ob das Gerät eines Benutzers ein Gyroskop hat, und dass dieses Ereignis ausgelöst wird, siehe UserInputService.GyroscopeEnabled.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Parameter
Ein InputObject, der Informationen über die Rotation des Geräts liefert. InputObject.Position repräsentiert die neue Rotation einen Vector3 positionalen Wert und InputObject.Delta repräsentiert die Änderung der Rotation in einem Vector3 positionalen Wert.
Code-Beispiele
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
Das GamepadConnected-Ereignis wird ausgelöst, wenn ein Gamepad mit dem Client verbunden wird.
Da ein Roblox-Spiel mehrere Controller unterstützt, ist dieses Ereignis nützlich, wenn es mit dem Ereignis UserInputService.GamepadDisconnected verbunden wird, um zu verfolgen, welche Controller/Gamepads aktiv sind.Du kannst auch UserInputService:GetConnectedGamepads() verwenden, um den richtigen Gamepad zu finden, um zu verwenden.
Das folgende Beispiel zeigt ein Nutzungsbeispiel für ein Tracking, wenn ein Gamepad mit dem Client verbunden ist.
local UserInputService = game:GetService("UserInputService")
local function GamepadConnected(gamepad)
print("Player has plugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadConnected:Connect(GamepadConnected)
Wenn du sehen möchtest, welche Geräte verbunden sind, kannst du die UserInputService:GetConnectedGamepads()-Funktion verwenden.
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Das Enum.UserInputType des verbundenen Gamepads.
GamepadDisconnected
Das GamepadDisconnected-Ereignis wird ausgelöst, wenn ein Gamepad getrennt wird.
Da ein Roblox-Spiel mehrere Controller unterstützt, ist dieses Ereignis nützlich, wenn es mit dem Ereignis UserInputService.GamepadConnected verbunden wird, um zu verfolgen, welche Controller/Gamepads aktiv sind.Du kannst auch UserInputService:GetConnectedGamepads() verwenden, um den richtigen Gamepad zu finden, um zu verwenden.
Das folgende Beispiel zeigt ein Nutzungsbeispiel für ein Tracking, wenn ein Gamepad vom Client getrennt wird.
local UserInputService = game:GetService("UserInputService")
local function GamepadDisconnected(gamepad)
print("Player has unplugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadDisconnected:Connect(GamepadDisconnected)
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Das Enum.UserInputType des getrennten Gamepads.
InputBegan
Das Ereignis InputBegan wird ausgelöst, wenn ein Benutzer beginnt, über ein Mensch-Computer-Schnittstellen-Gerät zu interagieren (Mausknopf unten, Berührung beginnen, Tastaturknopf unten usw.).
Es kann verwendet werden, um den Beginn der Interaktion mit dem Benutzer zu verfolgen, z. B. wenn ein Benutzer zuerst mit einem GUI-Element, einem Gamepad usw. interagiert.Es erfasst keine Mouse-Radbewegungen.
Dieses Ereignis kann zusammen mit UserInputService.InputChanged und UserInputService.InputEnded verwendet werden, um zu verfolgen, wann der Benutzeingang beginnt, sich ändert und endet.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
Code-Beispiele
Das folgende Beispiel zeigt eines von vielen Verwendungsbeispielen für die Verarbeitung von Benutzereingaben von InputBegan abhängig von seinem Typ.
-- Um das Ereignis InputBegan zu verwenden, muss der Dienst UserInputService verwendet werden
local UserInputService = game:GetService("UserInputService")
-- Eine Beispielfunktion, die mehrere Verwendungsfälle für verschiedene Arten von Benutzereingaben bietet
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
Das Ereignis InputChanged wird ausgelöst, wenn ein Benutzer ändert, wie er über ein Mensch-Computer-Schnittstellen-Gerät interagiert (Mausknopf nach unten, Berührung beginnen, Tastaturknopf nach unten usw.).
Um Ereignisse zu ignorieren, die von Roblox automatisch bearbeitet werden, wie das Scrollen in einem ScrollingFrame, überprüfe, dass das Argument gameProcessedEvent falsch ist.Dieses Ereignis kann zusammen mit UserInputService.InputBegan und UserInputService.InputEnded verwendet werden, um zu verfolgen, wann die Eingabe des Benutzers beginnt, sich ändert und endet.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
InputEnded
Das Ereignis InputEnded wird ausgelöst, wenn ein Benutzer aufhört, über ein Mensch-Computer-Schnittstellen-Gerät zu interagieren (Mausknopf unten, Berührung beginnen, Tastaturknopf unten usw.).Dies ist nützlich, wenn Sie verfolgen, wann ein Benutzer eine Tastaturtaste, eine Maus- oder Touchscreen-Eingabe usw. freigibt.
Dieses Ereignis kann zusammen mit UserInputService.InputBegan und UserInputService.InputChanged verwendet werden, um zu verfolgen, wann der Benutzeingang beginnt, sich ändert und endet.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
JumpRequest
Das UserInputService Sprunganforderungs-Ereignis wird ausgelöst, wenn es eine Sprunganforderung vom Client gibt, zum Beispiel, wenn der Client die Leertaste oder den Sprung-Button auf dem Mobilgerät drückt.
Dieses Ereignis wird ausgelöst, wenn der Benutzer versucht, seinen Player.Character zu machen.Das Standardverhalten reagiert auf eine Sprunganfrage, indem es die Eigenschaft des Spielers Humanoid.Jump auf wahr festlegt, was den Sprung des Charakters des Spielers auslöst.
Das Ereignis kann verwendet werden, um jedes Mal zu verfolgen, wenn ein Spieler springen möchte.Anstatt es zu verwenden, um einen Spieler zu springen, sollte es verwendet werden, um das Standard-Sprungverhalten zu ändern - wie das Ausschalten von Sprüngen.
Zum Beispiel druckt der Code unten jedes Mal "Springen", wenn der Spieler eine Sprunganfrage sendet.
local UserInputService = game:GetService("UserInputService")
function onJumpRequest()
print("Jump!")
end
UserInputService.JumpRequest:Connect(onJumpRequest)
Da dieses Ereignis mehrere Male für eine einzige Sprunganfrage ausgelöst wird, wird die Verwendung eines Debounce empfohlen.
Wenn du Schlüssel oder Schaltflächen mit anderen Aktionen verbinden möchtest, erwäge die Verwendung von Ereignissen wie UserInputService:GetKeysPressed() und UserInputService.InputBegan oder der ContextActionService.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Code-Beispiele
Dieses Codebeispiel deaktiviert Sprünge für die LocalPlayer durch die Festlegung des Enum.HumanoidStateType.Jumping Zustands auf false.Das Festlegen dieses Zustands auf falsch, sobald der Benutzer versucht, zu springen, storniert den Sprung.
Damit dieses Beispiel wie erwartet funktioniert, sollte es in einem LocalScript platziert werden.
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")
-- Feuert, wenn der Benutzer versucht zu springen
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)
LastInputTypeChanged
Das Ereignis UserInputService.LastInputTypeChanged wird immer dann ausgelöst, wenn der Client die Art und Weise ändert, wie er über ein Mensch-Computer-Schnittstellen-Gerät interagiert.(i.e.von MouseMovement zu MouseWheel oder von Thumbstick1 zu Thumbstick2).
Um den Wert des letzten Eingabentyps zu erhalten, unabhängig davon, ob er sich geändert hat oder nicht, kannst du die UserInputService:GetLastInputType()-Funktion verwenden.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Parameter
Ein A Enum.UserInputType, das den letzten Eingabetyp anzeigt.
Code-Beispiele
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
Mauszeigeraktion feuert ab, wenn der Benutzer eine bestimmte Mauszeigeraktion ausführt. Insbesondere Scrollen des Mausrads.
Parameter
TextBoxFocusReleased
Das Ereignis TextBoxFocusReleased wird ausgelöst, wenn ein Client den Fokus auf ein TextBox verliert, typischerweise, wenn ein Client den Texteintrag durch Drücken von Return oder Klicken/Berühren an anderer Stelle auf dem Bildschirm stoppt.
Zum Beispiel druckt der Code unten den Namen des TextBox verlorenen Fokus aus, wenn das Ereignis ausgelöst wird.
local UserInputService = game:GetService("UserInputService")
function TextBoxFocusReleased(textbox)
print(textbox.Name)
end
UserInputService.TextBoxFocusReleased:Connect(TextBoxFocusReleased)
Es kann neben UserInputService.TextBoxFocused verwendet werden, um zu verfolgen, wann ein TextBox Fokus gewinnt und verliert.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch
Parameter
TextBoxFocused
Dieses Ereignis wird ausgelöst, wenn ein Gewinn-Fokus auf ein TextBox gerichtet wird, typischerweise, wenn ein Client auf ein Textfeld klickt/tippt, um mit dem Eingeben von Text zu beginnen.Dies wird auch ausgelöst, wenn ein Textfeld-Fokus mit TextBox:CaptureFocus() fokussiert wird.
Zum Beispiel druckt der Code unten den Namen des TextBox fokussierten aus, wenn das Ereignis ausgelöst wird.
local UserInputService = game:GetService("UserInputService")
function TextBoxFocused(textbox)
print(textbox.Name)
end)
UserInputService.TextBoxFocused:Connect(TextBoxFocused)
Es kann neben UserInputService.FocusReleased verwendet werden, um zu verfolgen, wann ein Textfeld Fokus gewinnt und verliert.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch
Parameter
TouchDrag
Parameter
TouchEnded
Das TouchEnded-Ereignis wird ausgelöst, wenn ein Benutzer seinen Finger vom Bildschirm eines TouchEnabled-Geräts loslässt und die Berührungseingabe mit dem Gerät beendet.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer aufhört, den Bildschirm seines Geräts zu berühren.Es kann mit UserInputService.TouchStarted kombiniert werden, um zu bestimmen, wann ein Benutzer beginnt und aufhört, den Bildschirm zu berühren.
Zum Beispiel druckt der Code unten die Bildschirmposition aus, an der der Benutzer aufhört, den Bildschirm zu berühren.
local UserInputService = game:GetService("UserInputService")
function TouchEnded(touch, gameProcessedEvent)
print("Touch ended at " .. tostring(touch.Position))
end
UserInputService.TouchEnded:Connect(TouchEnded)
Das Touch-Eingabeelement ist das gleiche Eingabeobjekt während der gesamten Lebensdauer des Touches.Also das Vergleichen von InputObjects, wenn sie Berührungsobjekte sind, ist gültig, um zu bestimmen, ob es sich um denselben Finger handelt.
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchLongPress
Feuert ab, wenn ein Benutzer mindestens einen Finger für kurze Zeit an derselben Bildschirmposition eines TouchEnabled-Geräts hält.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer seinen Finger auf einem im Spiel GuiObject oder Element gedrückt hält.
Das folgende Beispiel druckt das state der langen Taste aus, wenn der Benutzer mindestens einen Finger für kurze Zeit in derselben Bildposition hält.Mögliche Zustände umfassen: Beginnen, Ändern, Beenden, Stornieren und Keine.
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)
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Es kann mit UserInputService.TouchStarted und UserInputService.TouchEnded kombiniert werden, um zu bestimmen, wann ein Benutzer beginnt und aufhört, die Bildschirmoberfläche zu berühren.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Ein Array von Vector2 Objekten, das die Position der beteiligten Finger bei der Geste anzeigt.
Die Enum.UserInputState des Gestes.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchMoved
Feuert, wenn ein Benutzer seinen Finger auf einem TouchEnabled, wie einem Tablet oder Smartphone, bewegt.
Dieses Ereignis ist nützlich, um zu verfolgen, ob ein Benutzer seinen Finger auf dem Bildschirm bewegt und wo der Benutzer seinen Finger bewegt.
Der Code unten zeigt die Berührung, die von ihrer vorherigen Position zu einer neuen Position auf einem TouchEnabled Gerät bewegt wird.Beachte, dass das InputObject.Position am übergebenen touch Parameter ein Vector3 ist, aber nur X und Y-Koordinaten enthält; Z ist immer 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)
Koppeln Sie dieses Ereignis mit UserInputService.TouchStarted und UserInputService.TouchEnded um festzustellen, wann ein Benutzer beginnt, den Bildschirm zu berühren, wie sich sein Finger bewegt, während er ihn berührt, und wann er aufhört, den Bildschirm zu berühren.
Um zu überprüfen, ob das Gerät eines Benutzers Touch unterstützt und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled.
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchPan
Das TouchPan-Ereignis wird ausgelöst, wenn ein Benutzer mindestens einen Finger auf ein TouchEnabled.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer seinen Finger über den Bildschirm eines TouchEnabled-Geräts bewegt - zum Beispiel, um das Camera in einem benutzerdefinierten Kameraskript zu drehen.
Das Snippet druckt unten "Geschwindigkeit des Touchdrags" und die Geschwindigkeit des Touch des Benutzers, wenn der Benutzer seinen Finger auf den Bildschirm zieht.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPan:Connect(function(touchPositions, totalTranslation, velocity, state, gameProcessedEvent)
print("Speed of touch drag: " .. tostring(velocity))
end)
Schau dir eine andere nützliche UserInputService Funktion hier an UserInputService.TouchRotate .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Ein Array von Vector2 Objekten, die die Positionen der beteiligten Tasten (z. B. Finger) anzeigen, die an der Geste beteiligt sind.
Die Größe der Pan-Geste von Anfang bis Ende (in Pixeln).
Die Geschwindigkeit der Pan-Geste (in Pixeln) pro Sekunde.
Die Enum.UserInputState des Gestes.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchPinch
Feuert ab, wenn ein Benutzer zwei Finger auf dem Bildschirm eines TouchEnabled Geräts platziert und bewegt.
Zum Beispiel druckt das folgende Snippet aus, wie sich die Kamera-Zoom-Skala seit Beginn des Touch-Pinch geändert hat.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPinch:Connect(function(touchPositions, scale, velocity, state, gameProcessedEvent)
print("Scale difference since beginning of pinch: " .. tostring(scale))
end)
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht.Zum Beispiel werden Eingaben nicht erfasst, wenn das Fenster minimiert wird.Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Ein Array von Vector2s, das die Bildschirmposition in Pixeln der mit der Pinch-Geste beteiligten Finger anzeigt.
Die Größe des Pinchs von Anfang bis Ende (in Pixeln) geteilt durch die Start-Pinch-Positionen.
Die Geschwindigkeit der Pinziergeste (in Pixeln) pro Sekunde.
Die Enum.UserInputState des Gestes.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchRotate
Das TouchRotate-Ereignis wird ausgelöst, wenn ein Benutzer zwei Finger auf einem TouchEnabled.
Zum Beispiel druckt der folgende Code aus, wie viel die Kamera seit Beginn der Berührungsrotierung gedreht wurde.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchRotate:Connect(function(touchPositions, rotation, velocity, state, gameProcessedEvent)
print("Camera has rotated " .. tostring(rotation) .. " degrees!")
end)
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Die Kernskripte, die die Kamera des Benutzers auf einem mobilen Gerät steuern, verwenden Code, der ähnlich wie dieses Ereignis funktioniert.Die beste Praxis für dieses Ereignis ist, es zu verwenden, wenn du ein mobiles Kamerasystem erstellst, um die Standard-Kernskripte zu überschreiben.
Siehe auch:
Parameter
Ein Array von Vector2s, das die Positionen der Finger anzeigt, die an der Geste beteiligt sind.
Die Anzahl der Grad, die die Geste seit Beginn der Geste gedreht hat.
Die Änderung der Rotation (in Grad) geteilt durch die Dauer der Änderung (in Sekunden).
Die Enum.UserInputState des Gestes.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchStarted
Das TouchStarted-Ereignis wird ausgelöst, wenn ein Benutzer seinen Finger auf ein TouchEnabled platziert, beginnend mit der Touch-Eingabe mit dem Gerät.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer beginnt, den Bildschirm seines Geräts zu berühren.Es kann mit UserInputService.TouchEnded kombiniert werden, um zu bestimmen, wann ein Benutzer beginnt und aufhört, den Bildschirm zu berühren.
Das Touch-Eingabeelement ist das gleiche Eingabeobjekt während der gesamten Lebensdauer des Touches.Also das Vergleichen von InputObjects, wenn sie Berührungsobjekte sind, ist gültig, um zu bestimmen, ob es sich um denselben Finger handelt.
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Eine InputObject Instanz, die Informationen über die Eingabe des Benutzers enthält.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchSwipe
Das Ereignis TouchSwipe wird ausgelöst, wenn ein Benutzer seine Finger auf einem TouchEnabled Gerät wischt.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer seine Finger auf dem Bildschirm seines Geräts wischt und die Richtung, in die der Benutzer gewischt hat.
Für eine genauere Verfolgung der Touch-Eingabebewegung verwenden Sie UserInputService.TouchMoved
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Ein Enum.SwipeDirection, der die Richtung anzeigt, in die der Benutzer gewischt hat.
Anzahl der Berührungen (z. B. Finger) in der Geste.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchTap
Das TouchTap-Ereignis wird ausgelöst, wenn der Benutzer mit seinem Finger auf dem Bildschirm auf einem TouchEnabled berührt.
Dieses Ereignis wird unabhängig davon abgefeuert, ob der Benutzer die Spielwelt oder ein GuiObject -Element berührt.Wenn du nach einem Ereignis suchst, das nur abgefeuert wird, wenn der Benutzer die Spielwelt berührt/antippt, verwende UserInputService.TouchTapInWorld.
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Parameter
Ein Array von Vector2 Objekten, das die Position der Finger anzeigt, die an der Tap-Geste beteiligt sind.
Weist darauf hin, ob die SpielEngine diese Eingabe intern beobachtet und darauf reagiert hat.Im Allgemeinen bezieht sich dies auf die Verarbeitung von UI, also wenn ein Knopf von dieser Eingabe berührt oder angeklickt wurde, wäre .Das gilt auch für Eingabeereignisse, die über ContextActionService verbunden sind.
TouchTapInWorld
Das TouchTapInWorld-Ereignis wird ausgelöst, wenn der Benutzer seine Finger auf dem Bildschirm auf einem TouchEnabled berührt.Es wird abgefeuert, wenn der Benutzer in die Spielwelt tippt.
Dieses Ereignis kann verwendet werden, um zu bestimmen, wann ein Benutzer auf den Bildschirm tippt und kein GuiObject -Element tippt.Wenn der Benutzer auf ein GUI-Element tippt, wird UserInputService.TouchTap stattdessen von TouchTapInWorld abgefeuert.
Um zu überprüfen, ob das Gerät eines Benutzers TouchEnabled ist, und dass Touch-Ereignisse ausgelöst werden, siehe UserInputService.TouchEnabled .
Dieses Ereignis wird nur dann ausgelöst, wenn das Roblox-Clientfenster im Fokus steht. Eingaben werden zum Beispiel nicht erfasst, wenn das Fenster minimiert wird.
Da es nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
Siehe auch:
Parameter
Ob der Benutzer auf ein GUI-Element tippt.
WindowFocusReleased
Das UserInputService Fensterfokusfreigegeben-Ereignis wird ausgelöst, wenn das Fenster des Roblox-Clients den Fokus verliert - typischerweise, wenn der Roblox-Client vom Benutzer minimiert wird.
Zum Beispiel druckt der Code unten "Fensterfokus freigegeben", wann immer der Roblox-Client den Fokus verliert.
local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocusReleased:Connect(function()
print("Window focus released")
end)
Dieses Ereignis kann neben UserInputService.WindowFocused verwendet werden, um zu verfolgen, ob der Roblox-Client sich aktiv auf den Bildschirm eines Benutzers konzentriert.
Da es nur lokal feuert, kann es nur in einem LocalScript verwendet werden.
WindowFocused
Das UserInputService-Fensterfokus-Ereignis wird ausgelöst, wenn das Fenster des Roblox-Clients Fokus erhält - typischerweise, wenn der Roblox-Client maximiert/aktiv auf dem Bildschirm des Benutzers geöffnet ist.
Zum Beispiel druckt der Code unten "Fenster fokussiert", wann immer der Roblox-Client Fokus gewinnt.
local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocused:Connect(function()
print("Window focused")
end)
Dieses Ereignis kann neben UserInputService.WindowFocusReleased verwendet werden, um zu verfolgen, ob der Roblox-Client sich aktiv auf den Bildschirm eines Benutzers konzentriert.
Da dieses Ereignis nur lokal feuert, kann es nur in einem LocalScript verwendet werden.