UserInputService

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst
Nicht repliziert

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

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob das Gerät des Benutzers einen Beschleunigungsmesser hat.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob das Gerät, das von einem Benutzer verwendet wird, einen verfügbaren Gamepad hat.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob das Gerät des Benutzers ein Gyroskop hat.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    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.

  • Nicht repliziert
    Parallel lesen

    Skaliert die delta (Änderungs-) Ausgabe des Benutzers von Mouse.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob das Gerät des Benutzers eine Maus verfügbar hat.

  • MouseIcon:ContentId
    Parallel lesen

    Die Inhalts-ID des Bildes, das als Benutzer-Maussymbol verwendet wird.

  • Bestimmt, ob das Mouse-Symbol sichtbar ist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Bestimmt die Position der Tastatur auf dem Bildschirm.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Bestimmt die Größe der Tastatur auf dem Bildschirm.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob eine Tastatur auf dem Bildschirm derzeit auf dem Bildschirm des Benutzers sichtbar ist.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen
  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt, ob das aktuelle Gerät des Benutzers einen Touchscreen hat.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Weist darauf hin, ob der Benutzer einen Virtual-Reality-Headset verwendet.

Methoden

Ereignisse

Eigenschaften

AccelerometerEnabled

Schreibgeschützt
Nicht repliziert
Parallel lesen

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.AccelerometerEnabled
if accelerometerEnabled then
print("Accelerometer enabled!")
else
print("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.

Move a Ball using the Accelerometer

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

GamepadEnabled

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

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.GyroscopeEnabled
if gyroIsEnabled then
print("Gyroscope is enabled!")
else
print("Gyroscope is not enabled!")
end

Da UserInputService nur auf clientseitig ist, kann diese Eigenschaft nur in einem LocalScript verwendet werden.

KeyboardEnabled

Schreibgeschützt
Nicht repliziert
Parallel lesen

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.

Überprüfen, ob Tastatur aktiviert ist

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

Parallel lesen

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:

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.

Erstelle ein Fernglas-Skript

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

Nicht repliziert
Parallel lesen

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.

Erstelle ein Fernglas-Skript

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

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 then
print("The user's device has an available mouse!")
else
print("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.

Erstelle ein Fernglas-Skript

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

ContentId
Parallel lesen

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.

UserInputService.MouseIcon

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

Parallel lesen

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.

Hide Mouse During Keyboard Input

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

OnScreenKeyboardPosition

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

TouchEnabled

Schreibgeschützt
Nicht repliziert
Parallel lesen

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 then
print("The user's device has a touchscreen!")
else
print("The user's device does not have a touchscreen!")
end

Siehe auch:

VREnabled

Schreibgeschützt
Nicht repliziert
Parallel lesen

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.VREnabled
if isUsingVR then
print("User is using a VR headset!")
else
print("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.

VR Head Tracking

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

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

gamepadNum: Enum.UserInputType

Die Enum.UserInputType des Gamepads.

Standardwert: ""
gamepadKeyCode: Enum.KeyCode

Die Enum.KeyCode des Buttons in Frage.

Standardwert: ""

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.

Output Device Acceleration

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

GetDeviceGravity

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.

Moving Objects with the Gyroscope

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

GetDeviceRotation

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:

  1. Die Delta-Eigenschaft beschreibt die Menge der Rotation, die zuletzt passiert ist
  2. 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.

Output Device Rotation

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

GetFocusedTextBox

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

gamepadNum: Enum.UserInputType

Das Enum.UserInputType des Spielgeräts in Frage.

Standardwert: ""

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

gamepadNum: Enum.UserInputType

Die Enum.UserInputType entspricht dem Gamepad, das in Frage kommt.

Standardwert: ""

Rückgaben

Ein Array von InputObjects, das den aktuellen Zustand aller verfügbaren Eingänge für das angegebene Gamepad darstellt.

GetImageForKeyCode

ContentId

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

keyCode: Enum.KeyCode

Die Enum.KeyCode für die das zugeordnete Bild abgerufen werden soll.

Standardwert: ""

Rückgaben

ContentId

Die zurückgegebene Bild-Asset-ID.

Code-Beispiele

Diese API gibt das angeforderte Bild für das angegebene Enum.KeyCode zurück.

UserInputService - Bild für Schlüsselcode erhalten

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.

Detect Last Input Type

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).

Check Pressed Mouse Buttons

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

GetMouseDelta

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.

Getting Mouse Delta

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

GetMouseLocation

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

Ein Vector2 repräsentiert die aktuelle Bildschirmposition der Maus, in Pixeln.

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:


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.Parent
local mapKey = Enum.KeyCode.M
textLabel.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.Parent
local key = Enum.KeyCode.ButtonA
local mappings = {
ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA asset
ButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- Replace with the desired ButtonCross asset
}
local mappedKey = UserInputService:GetStringForKeyCode(key)
local image = mappings[mappedKey]
imageLabel.Image = image
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

keyCode: Enum.KeyCode
Standardwert: ""

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

gamepadNum: Enum.UserInputType

Die Enum.UserInputType des Gamepads.

Standardwert: ""

Rückgaben

Ein Array von KeyCodes, das vom angegebenen Gamepad unterstützt wird.

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.

Bindung unterstützter Gamepad-Tastenkombinationen

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.ButtonA
local gamepad = Enum.UserInputType.Gamepad1
local isButtonHeld = UserInputService:IsGamepadButtonDown(gamepad, button)

Da UserInputService nur clientseitig ist, kann diese Funktion nur in einem LocalScript verwendet werden.

Siehe auch:

Parameter

gamepadNum: Enum.UserInputType

Die Enum.UserInputType des angegebenen Gamepads.

Standardwert: ""
gamepadKeyCode: Enum.KeyCode

Die Enum.KeyCode des angegebenen Buttons.

Standardwert: ""

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:

Parameter

keyCode: Enum.KeyCode

Die Enum.KeyCode des Schlüssels.

Standardwert: ""

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

mouseButton: Enum.UserInputType

Die Enum.UserInputType des Mausknopfes.

Standardwert: ""

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) then
print("Gamepad is a navigation gamepad!")
else
print("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

gamepadEnum: Enum.UserInputType

Die Enum.UserInputType des angegebenen Gamepads.

Standardwert: ""

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

gamepadEnum: Enum.UserInputType

Die Enum.UserInputType des angegebenen Gamepads.

Standardwert: ""
enabled: boolean

Ob das angegebene Gamepad den GUI-Navigator bewegen kann.

Standardwert: ""

Rückgaben

()

Code-Beispiele

Dieses Beispiel legt Gamepad1 als Navigations-Gamepad fest, indem es Enum.UserInputType.Gamepad1 und true als Argumente übermittelt.

UserInputService: Navigationsspielpad einstellen

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

acceleration: InputObject

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.

Control Players Using the Accelerometer

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

DeviceGravityChanged

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

gravity: InputObject

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.

Move a Ball using the Accelerometer

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

DeviceRotationChanged

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

rotation: InputObject

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.

cframe: CFrame

Ein CFrame repräsentiert die aktuelle Orientierung des Geräts.


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.

Move a Ball using the Accelerometer

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

GamepadConnected

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

gamepadNum: Enum.UserInputType

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

gamepadNum: Enum.UserInputType

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.

gameProcessedEvent: boolean

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.

InputBegonnen behandeln

-- 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.

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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.

Springen deaktivieren

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

lastInputType: Enum.UserInputType

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.

Hide Mouse During Keyboard Input

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

PointerAction

Mauszeigeraktion feuert ab, wenn der Benutzer eine bestimmte Mauszeigeraktion ausführt. Insbesondere Scrollen des Mausrads.

Parameter

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

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

textboxReleased: TextBox

Die TextBox, die den Fokus verloren hat.


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

textboxFocused: TextBox

Das TextBox, das Fokus gewonnen hat.


TouchDrag

Parameter

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

touchPositions: Array

Ein Array von Vector2 Objekten, das die Position der beteiligten Finger bei der Geste anzeigt.

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

touchPositions: Array

Ein Array von Vector2 Objekten, die die Positionen der beteiligten Tasten (z. B. Finger) anzeigen, die an der Geste beteiligt sind.

totalTranslation: Vector2

Die Größe der Pan-Geste von Anfang bis Ende (in Pixeln).

velocity: Vector2

Die Geschwindigkeit der Pan-Geste (in Pixeln) pro Sekunde.

gameProcessedEvent: boolean

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

touchPositions: Array

Ein Array von Vector2s, das die Bildschirmposition in Pixeln der mit der Pinch-Geste beteiligten Finger anzeigt.

scale: number

Die Größe des Pinchs von Anfang bis Ende (in Pixeln) geteilt durch die Start-Pinch-Positionen.

velocity: number

Die Geschwindigkeit der Pinziergeste (in Pixeln) pro Sekunde.

gameProcessedEvent: boolean

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

touchPositions: Array

Ein Array von Vector2s, das die Positionen der Finger anzeigt, die an der Geste beteiligt sind.

rotation: number

Die Anzahl der Grad, die die Geste seit Beginn der Geste gedreht hat.

velocity: number

Die Änderung der Rotation (in Grad) geteilt durch die Dauer der Änderung (in Sekunden).

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

swipeDirection: Enum.SwipeDirection

Ein Enum.SwipeDirection, der die Richtung anzeigt, in die der Benutzer gewischt hat.

numberOfTouches: number

Anzahl der Berührungen (z. B. Finger) in der Geste.

gameProcessedEvent: boolean

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

touchPositions: Array

Ein Array von Vector2 Objekten, das die Position der Finger anzeigt, die an der Tap-Geste beteiligt sind.

gameProcessedEvent: boolean

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

position: Vector2

Ein Vector2 , das die Position des Touches anzeigt.

processedByUI: boolean

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.