UserInputService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service
Non répliqué

UserInputService est un service utilisé pour détecter et capturer les différents types d'entrée disponibles sur l'appareil d'un utilisateur.

Le but principal de ce service est de permettre aux expériences de coopérer avec plusieurs formes d'entrée disponibles, telles que les manettes de jeu, les écrans tactiles et les claviers.Il permet à un LocalScript de réaliser différentes actions en fonction de l'appareil et, à son tour, de fournir la meilleure expérience pour l'utilisateur final.

Certains usages de ce service incluent la détection de l'entrée de l'utilisateur lorsqu'il interagit avec des interfaces graphiques, des outils et d'autres instances de jeu.Pour détecter l'entrée de l'utilisateur, le service doit rechercher un événement de service.Par exemple, le service peut détecter des événements tels que lorsque l'utilisateur touche l'écran d'un appareil mobile en utilisant UserInputService.TouchStarted , ou connecte une manette de jeu telle qu'une manette Xbox à son appareil en utilisant UserInputService.GamepadConnected .

Puisque ce service est uniquement côté client, il ne fonctionnera que lorsqu'il est utilisé dans un LocalScript ou un ModuleScript requis par un LocalScript.Comme UserInputService est côté client uniquement, les utilisateurs dans le jeu ne peuvent détecter que leur propre entrée - et non l'entrée des autres.

Voir aussi ContextActionService , un service qui vous permet de lier des fonctions à plusieurs entrées utilisateur.

Résumé

Propriétés

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil de l'utilisateur a un accéléromètre.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil utilisé par un utilisateur a une manette de jeu disponible.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil de l'utilisateur a un gyroscope.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil de l'utilisateur a une disposition de clavier disponible.

  • Détermine si la souris de l'utilisateur peut être déplacée librement ou verrouillée.

  • Non répliqué
    Lecture parallèle

    Échelle la sortie delta (changement) de l'utilisateur Mouse .

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil de l'utilisateur a une souris disponible.

  • MouseIcon:ContentId
    Lecture parallèle

    L'ID du contenu de l'image utilisée comme icône de souris de l'utilisateur.

  • Lecture parallèle

    Détermine si l'icône Mouse est visible.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine la position de la souris sur l'écran.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine la taille du clavier sur l'écran.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si une interface de clavier sur écran est actuellement visible sur l'écran de l'utilisateur.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle
  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Détermine si l'appareil actuel de l'utilisateur a un écran tactile disponible.

  • Lecture uniquement
    Non répliqué
    Lecture parallèle

    Indique si l'utilisateur utilise un casque de réalité virtuelle.

Méthodes

Évènements

Propriétés

AccelerometerEnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil de l'utilisateur a un accéléromètre

Un accéléromètre est un composant trouvé dans la plupart des appareils mobiles qui mesure l'accélération (changement de vitesse).

Par exemple, l'extrait de code suivant montre comment vérifier si le dispositif de l'utilisateur a un accéléromètre.


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

Si l'appareil a un accéléromètre activé, vous pouvez obtenir son accélération actuelle en utilisant la fonction UserInputService:GetDeviceAcceleration() ou suivre lorsque l'accélération de l'appareil change en utilisant l'événement UserInputService.DeviceAccelerationChanged.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Échantillons de code

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

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil utilisé par un utilisateur a une manette de jeu disponible.Si les manettes de jeu sont disponibles, vous pouvez utiliser UserInputService:GetConnectedGamepads() pour récupérer une liste de manettes de jeu connectées.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Voir aussi :

GyroscopeEnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil de l'utilisateur a un gyroscope.

Un gyroscope est un composant trouvé dans la plupart des appareils mobiles qui détecte l'orientation et la vitesse de rotation.

Si le dispositif d'un utilisateur a un gyroscope, vous pouvez l'incorporer dans votre jeu en utilisant la fonction UserInputService:GetDeviceRotation() et l'événement UserInputService.DeviceRotationChanged.


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

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

KeyboardEnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil de l'utilisateur a une disposition de clavier disponible.Cette propriété est true lorsque l'appareil de l'utilisateur a une clavier disponible, et false lorsqu'il n'en a pas.

Il peut être utilisé pour déterminer si l'utilisateur dispose d'un clavier disponible - ce qui peut être important si vous voulez vérifier si vous pouvez utiliser UserInputService:IsKeyDown() ou UserInputService:GetKeysPressed() pour vérifier l'entrée du clavier.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Échantillons de code

Cet exemple imprime "L'appareil de l'utilisateur a un clavier disponible!" si KeyboardEnabled est vrai et "L'appareil de l'utilisateur n'a pas de clavier disponible!" si KeyboardEnabled est faux .

Vérifier si le clavier est activé

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

Lecture parallèle

Cette propriété définit la façon dont la souris de l'utilisateur se comporte en fonction de l'enumérateur Enum.MouseBehavior. Elle peut être définie sur trois valeurs :

La valeur de cette propriété n'affecte pas la sensibilité du suivi de la souris des événements.Par exemple, GetMouseDelta renvoie la même position d'écran Vector2 en pixels indépendamment du fait que la souris soit verrouillée ou puisse se déplacer librement autour de l'écran de l'utilisateur.Par conséquent, les scripts par défaut comme ceux qui contrôlent la caméra ne sont pas affectés par cette propriété.

Cette propriété est remplacée si un GuiButton avec Modal activé est GuiButton.Visible à moins que le bouton droit de la souris du joueur ne soit en bas.

Notez que, si la souris est verrouillée, UserInputService.InputChanged tirera toujours lorsque le joueur déplacera la souris et passera dans le delta que la souris a essayé de déplacer.De plus, si le joueur est expulsé du jeu, la souris sera déverrouillée de force.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Échantillons de code

Cet exemple crée un script de binocules qui diminue les clics de souris du joueur FieldOfView() et MouseDeltaSensitivity() lorsqu'un joueur avec un MouseEnabled() a quitté les clics de souris.Le script pointe également la position du monde de la souris vers la position du clic de la souris.

Lorsque le joueur quitte à nouveau les clics de souris, la caméra du joueur revient à la valeur par défaut Enum.CameraType avec le même champ de vision et CFrame() comme avant que le joueur n'ait zoomé avec le script.

Pendant que le joueur utilise les binocules, le script verrouille la souris du joueur au centre de l'écran en définissant la souris du joueur sur MouseBehavior() pour verrouiller le centre.La caméra du joueur se déplace lorsque le joueur déplace sa souris selon la propriété indiquant le changement de position de l'écran de la souris.

Pour que cet exemple fonctionne comme prévu, il doit être placé dans un LocalScript.

Créer un script de binocules

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
-- Réinitialiser la caméra à CFrame et FieldOfView avant le 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()
-- Permettre à la caméra d'être modifiée par le script
camera.CameraType = Enum.CameraType.Scriptable
-- Stocker les propriétés de la caméra avant le zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Caméra de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Verrouiller et ralentir la souris
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Réinitialiser les angles de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Basculer le zoom/dézoomer de la caméra
local function MouseClick()
if zoomed then
-- Dézoomer la caméra
ResetCamera()
else
-- Zoomer dans la caméra
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- tout ce qui est supérieur rendrait la recherche vers le haut et le bas plus difficile ; recommandez tout entre 0~1
local smoothness = 0.05 -- recommander n'importe quoi entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseDeltaSensitivity

Non répliqué
Lecture parallèle

Cette propriété détermine la sensibilité du Mouse de l'utilisateur.

La sensibilité détermine la mesure dans laquelle un mouvement de la souris physique se traduit par un mouvement de la souris dans le jeu.Cela peut être utilisé pour ajuster la façon dont les événements sensibles suivent le mouvement de la souris, comme GetMouseDelta , le mouvement de la souris.

Cette propriété n'affecte pas le mouvement de l'icône de la souris.Il n'affecte pas non plus la sensibilité de la caméra réglage trouvé dans l'onglet paramètres du menu des paramètres du client, qui ajuste également la sensibilité des événements de suivi du mouvement de la souris.

Cette propriété a une valeur maximale de 10 et une valeur minimale de 0.Une valeur inférieure correspond à une sensibilité inférieure, et une valeur plus élevée à une sensibilité plus élevée.

Lorsque la sensibilité est de 0, les événements qui suivent le mouvement de la souris se déclencheront toujours, mais tous les paramètres et les propriétés indiquant le changement de position de la souris retourneront Vector2.new() , ou Vector3.new() dans le cas de InputObject.Delta .Par exemple, GetMouseDelta retournera toujours (0, 0).

Échantillons de code

Cet exemple crée un script de binocules qui diminue les clics de souris du joueur FieldOfView() et MouseDeltaSensitivity() lorsqu'un joueur avec un MouseEnabled() a quitté les clics de souris.Le script pointe également la position du monde de la souris vers la position du clic de la souris.

Lorsque le joueur quitte à nouveau les clics de souris, la caméra du joueur revient à la valeur par défaut Enum.CameraType avec le même champ de vision et CFrame() comme avant que le joueur n'ait zoomé avec le script.

Pendant que le joueur utilise les binocules, le script verrouille la souris du joueur au centre de l'écran en définissant la souris du joueur sur MouseBehavior() pour verrouiller le centre.La caméra du joueur se déplace lorsque le joueur déplace sa souris selon la propriété indiquant le changement de position de l'écran de la souris.

Pour que cet exemple fonctionne comme prévu, il doit être placé dans un LocalScript.

Créer un script de binocules

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
-- Réinitialiser la caméra à CFrame et FieldOfView avant le 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()
-- Permettre à la caméra d'être modifiée par le script
camera.CameraType = Enum.CameraType.Scriptable
-- Stocker les propriétés de la caméra avant le zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Caméra de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Verrouiller et ralentir la souris
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Réinitialiser les angles de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Basculer le zoom/dézoomer de la caméra
local function MouseClick()
if zoomed then
-- Dézoomer la caméra
ResetCamera()
else
-- Zoomer dans la caméra
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- tout ce qui est supérieur rendrait la recherche vers le haut et le bas plus difficile ; recommandez tout entre 0~1
local smoothness = 0.05 -- recommander n'importe quoi entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseEnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil de l'utilisateur a une souris disponible.Cette propriété est true lorsque le dispositif de l'utilisateur a une souris disponible, et false lorsqu'il n'en a pas.


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

Il est important de vérifier ceci avant d'utiliser les fonctions de souris UserInputService telles que UserInputService:GetMouseLocation().

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Voir aussi :

Échantillons de code

Cet exemple crée un script de binocules qui diminue les clics de souris du joueur FieldOfView() et MouseDeltaSensitivity() lorsqu'un joueur avec un MouseEnabled() a quitté les clics de souris.Le script pointe également la position du monde de la souris vers la position du clic de la souris.

Lorsque le joueur quitte à nouveau les clics de souris, la caméra du joueur revient à la valeur par défaut Enum.CameraType avec le même champ de vision et CFrame() comme avant que le joueur n'ait zoomé avec le script.

Pendant que le joueur utilise les binocules, le script verrouille la souris du joueur au centre de l'écran en définissant la souris du joueur sur MouseBehavior() pour verrouiller le centre.La caméra du joueur se déplace lorsque le joueur déplace sa souris selon la propriété indiquant le changement de position de l'écran de la souris.

Pour que cet exemple fonctionne comme prévu, il doit être placé dans un LocalScript.

Créer un script de binocules

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
-- Réinitialiser la caméra à CFrame et FieldOfView avant le 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()
-- Permettre à la caméra d'être modifiée par le script
camera.CameraType = Enum.CameraType.Scriptable
-- Stocker les propriétés de la caméra avant le zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Caméra de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Verrouiller et ralentir la souris
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Réinitialiser les angles de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Basculer le zoom/dézoomer de la caméra
local function MouseClick()
if zoomed then
-- Dézoomer la caméra
ResetCamera()
else
-- Zoomer dans la caméra
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- tout ce qui est supérieur rendrait la recherche vers le haut et le bas plus difficile ; recommandez tout entre 0~1
local smoothness = 0.05 -- recommander n'importe quoi entre 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end

MouseIcon

ContentId
Lecture parallèle

La propriété MouseIcon détermine l'image utilisée comme pointeur.Si vide, une flèche par défaut est utilisée.Alors que le curseur passe sur certains objets d'interface utilisateur tels qu'un ImageButton , TextButton , TextBox ou ProximityPrompt , cette image sera remplacée et ignorée temporairement.

Pour masquer entièrement le curseur, ne pas utiliser une image transparente . Au lieu de cela, définissez UserInputService.MouseIconEnabled.

Échantillons de code

Cet exemple change l'icône de la souris de l'utilisateur pour ressembler à une image de dragon.

Service d'entrée utilisateur.Icône de souris

local UserInputService = game:GetService("UserInputService")
-- Afin de restaurer le curseur à ce qu'il était auparavant, il devra être sauvegardé dans une variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Mise à jour uniquement du curseur sauvegardé s'il n'est pas sauvegardé actuellement
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Restaurez uniquement le curseur de la souris si il y a un curseur sauvegardé à restaurer
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Ne restaurez pas le même curseur deux fois (peut écraser un autre script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)

MouseIconEnabled

Lecture parallèle

Cette propriété détermine si l'icône est visible lorsque l'icône de la souris est visible, lorsque elle ne l'est pas.

Par exemple, le fragment de code ci-dessous masque l'icône de la souris.


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

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Échantillons de code

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

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit la position du clavier sur l'écran en pixels. La position du clavier est Vector2.new(0, 0) lorsqu'il n'est pas visible.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript ou en Script avec RunContext défini sur Enum.RunContext.Client .

Voir aussi OnScreenKeyboardVisible et OnScreenKeyboardSize .

OnScreenKeyboardSize

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit la taille du clavier sur l'écran en pixels. La taille du clavier est Vector2.new(0, 0) lorsqu'il n'est pas visible.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript ou en Script avec RunContext défini sur Enum.RunContext.Client .

Voir aussi OnScreenKeyboardVisible et OnScreenKeyboardPosition .

OnScreenKeyboardVisible

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si une touche clavier sur écran est actuellement visible sur l'écran de l'utilisateur.

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript ou en Script avec RunContext défini sur Enum.RunContext.Client .

Voir aussi OnScreenKeyboardSize et OnScreenKeyboardPosition .

PreferredInput

Lecture uniquement
Non répliqué
Lecture parallèle

TouchEnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'appareil actuel de l'utilisateur a un écran tactile disponible.

La propriété est utilisée pour déterminer si l'appareil de l'utilisateur a un écran tactile, et donc si les événements de touch seront déclenchés.Si TouchEnabled est vrai, vous pouvez utiliser les événements de UserInputService tels que UserInputService.TouchStarted et UserInputService.TouchEnded pour suivre quand un utilisateur commence et arrête de toucher l'écran de son appareil.

Le fragment de code ci-dessous imprime si l'appareil de l'utilisateur a un écran tactile.


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

Voir aussi :

VREnabled

Lecture uniquement
Non répliqué
Lecture parallèle

Cette propriété décrit si l'utilisateur utilise un appareil de réalité virtuelle (VR).

Si un appareil VR est activé, vous pouvez interagir avec sa localisation et son mouvement via des fonctions telles que UserInputService:GetUserCFrame().Vous pouvez également réagir au mouvement du dispositif VR en utilisant l'événement UserInputService.UserCFrameChanged.


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

Comme UserInputService est côté client uniquement, cette propriété ne peut être utilisée qu'en LocalScript.

Voir aussi :

Échantillons de code

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

Méthodes

GamepadSupports

Cette fonction renvoie si le gamepad donné Enum.UserInputType supporte un bouton correspondant au bouton donné Enum.KeyCode.Cette fonction est utilisée pour déterminer les entrées de manette de jeu valides.

Pour déterminer quelles manettes de jeu Enum.UserInputType sont connectées, utilisez UserInputService:GetConnectedGamepads() .

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu.

Valeur par défaut : ""
gamepadKeyCode: Enum.KeyCode

Le Enum.KeyCode de bouton en question.

Valeur par défaut : ""

Retours

Si la manette de jeu donnée supporte un bouton correspondant à la donnée Enum.KeyCode.

GetConnectedGamepads

Cette fonction renvoie un tableau de Enum.UserInputType manettes de jeu actuellement connectées.Si aucune manette de jeu n'est connectée, cet array sera vide.De plus, il ne retourne que les objets UserInputType qui sont des manettes de jeu.Par exemple, cet événement retournera un objet Gamepad1 connecté mais pas un objet Clavier.

Par exemple, le fragment de code suivant récupère les gamepads connectés et les stocke dans une variable nommée connectedGamepads.


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

Pour vérifier si un gamepad spécifique est connecté, utilisez UserInputService:GetGamepadConnected() .

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.

Voir aussi :


Retours

Un ensemble de UserInputTypes correspondant aux manettes de jeu connectées à l'appareil de l'utilisateur.

GetDeviceAcceleration

La fonction GetDeviceAcceleration détermine l'accélération actuelle du dispositif de l'utilisateur.Il renvoie un InputObject qui décrit l'accélération actuelle du dispositif.

Pour que cela fonctionne, le dispositif de l'utilisateur doit avoir un accéléromètre activé.Pour vérifier si l'appareil d'un utilisateur a un accéléromètre activé, vous pouvez vérifier la propriété UserInputService.AccelerometerEnabled.

Si vous voulez suivre les modifications d'accélération du périphérique de l'utilisateur à la place, vous pouvez utiliser l'événement UserInputService.DeviceAccelerationChanged.

Puisqu'il ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript .


Retours

Échantillons de code

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

Cette fonction renvoie un InputObject décrivant le vecteur de gravité actuel de l'appareil.

Le vecteur de gravité est déterminé par l'orientation de l'appareil par rapport à la force de gravité du monde réel.Par exemple, si un appareil est parfaitement debout (portrait), le vecteur de gravité est Vector3.new(0, 0, -9.18) .Si le côté gauche de l'appareil pointe vers le bas, le vecteur est Vector3.new(9.81, 0, 0).Enfin, si l'arrière du dispositif pointe vers le bas, le vecteur est Vector3.new(0, -9.81, 0).

Cette fonction peut être utilisée pour activer l'appareil de l'utilisateur pour impacter ou contrôler la gravité dans le jeu ou déplacer des objets dans le jeu tels qu'une balle.

La gravité n'est suivie que pour les joueurs utilisant un appareil avec un gyroscope activé, comme un appareil mobile.

Pour vérifier si l'appareil d'un utilisateur a un gyroscope activé, vérifiez la valeur de UserInputService.GyroscopeEnabled .Si l'appareil a un gyroscope activé, vous pouvez également utiliser l'événement UserInputService.DeviceGravityChanged pour suivre le moment où la force de gravité sur l'appareil de l'utilisateur change.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Échantillons de code

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

Cette fonction renvoie un InputObject et un CFrame décrivant le vecteur de rotation actuel de l'appareil.

Cela est déclenché avec un objet d'entrée.La propriété Position de l'objet d'entrée est une Enum.InputType.Gyroscope qui suit la rotation totale dans chaque axe local de l'appareil.

La rotation des appareils ne peut être suivie que sur les appareils avec un gyroscope .

Comme cette fonction se déclenche localement, elle ne peut être utilisée qu'en LocalScript .


Retours

Un tuple contenant deux propriétés :

  1. La propriété delta décrit la quantité de rotation qui a eu lieu pour la dernière fois
  2. Le CFrame est la rotation actuelle de l'appareil par rapport à son cadre de référence par défaut.

Échantillons de code

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

Cette fonction renvoie le TextBox sur lequel le client est actuellement focalisé.Un TextBox peut être sélectionné manuellement par l'utilisateur, ou la sélection peut être forcée en utilisant la fonction TextBox:CaptureFocus().Si aucune option TextBox n'est sélectionnée, cette fonction retournera nil .

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.

Voir aussi

Retours

GetGamepadConnected

Cette fonction renvoie si une manette de jeu avec le paramètre donné Enum.UserInputType est connectée au client.

Cela peut être utilisé pour vérifier si un gamepad spécifique, tel que 'Gamepad1' est connecté au périphérique du client.

Pour récupérer une liste de tous les gamepads connectés, utilisez UserInputService:GetConnectedGamepads() .

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu en question.

Valeur par défaut : ""

Retours

Si une manette de jeu associée à Enum.UserInputType est connectée.

GetGamepadState

Cette fonction renvoie un tableau de pour tous les entrées disponibles sur le gamepad donné, représentant l'état de dernière entrée de chaque entrée.

Pour trouver le UserInputTypes des manettes de jeu connectées, utilisez UserInputService:GetConnectedGamepads() .

Comme cette fonction ne se déclenche que localement, elle ne peut être utilisée qu'en LocalScript.

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType correspondant à la manette de jeu en question.

Valeur par défaut : ""

Retours

Un ensemble de InputObjects représentant l'état actuel de toutes les entrées disponibles pour le gamepad donné.

GetImageForKeyCode

ContentId

Cette méthode prend l'image demandée Enum.KeyCode et renvoie l'image associée pour le périphérique de jeu connecté actuel (limité à Xbox, PlayStation et Windows).Cela signifie que si le contrôleur connecté est un contrôleur Xbox One, l'utilisateur voit les ressources Xbox.De même, si l'appareil connecté est un contrôleur PlayStation, l'utilisateur voit les ressources de PlayStation.Si vous voulez utiliser des ressources personnalisées, voir GetStringForKeyCode() .

Paramètres

keyCode: Enum.KeyCode

Le Enum.KeyCode pour lequel récupérer l'image associée.

Valeur par défaut : ""

Retours

ContentId

L'ID de ressource image retourné.

Échantillons de code

Cette API renvoie l'image demandée pour le donné Enum.KeyCode.

UserInputService - Obtenir une image pour le code clé

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

GetKeysPressed

Cette fonction renvoie un tableau de InputObjects associé aux touches actuellement enfoncées.

Cet array peut être itéré pour déterminer quelles touches sont actuellement pressées, en utilisant les valeurs InputObject.KeyCode.

Pour vérifier si une clé spécifique est pressée, utilisez UserInputService:IsKeyDown() .

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Un tableau de InputObjects associé aux touches actuellement pressées.

GetLastInputType

Cette fonction renvoie 'Enum.UserInputType` associé à la dernière entrée de l'utilisateur.

Par exemple, si l'entrée précédente de l'utilisateur avait été de presser la barre d'espace, la Enum.UserInputType retournée serait 'Clavier' .

L'événement UserInputService.LastInputTypeChanged peut être utilisé pour suivre quand le dernier Enum.UserInputType utilisé par l'utilisateur a changé.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Le Enum.UserInputType associé à la dernière entrée de l'utilisateur.

Échantillons de code

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

Cette fonction renvoie un tableau de InputObjects correspondant aux boutons de la souris actuellement enfoncés.

Les boutons de souris suivis par cette fonction incluent :


<td>Avertissement</td>
</tr>
</thead>
<tr>
<td>Bouton de souris1</td>
<td>Le bouton de souris gauche.</td>
</tr>
<tr>
<td>Bouton souris 2</td>
<td>Le bon bouton de souris.</td>
</tr>
<tr>
<td>Bouton souris 3</td>
<td>Le bouton du milieu de la souris.</td>
</tr>
Nom

Si l'utilisateur ne presse aucune touche de souris lorsque la fonction est appelée, il retournera une liste vide.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Un ensemble de InputObjects correspondant aux boutons de la souris actuellement maintenus enfoncés.

Échantillons de code

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

Cette fonction renvoie le changement, en pixels, de la position du joueur Mouse dans le dernier cadre rendu en tant que Vector2 .Cette fonction ne fonctionne que si la souris a été verrouillée en utilisant la propriété UserInputService.MouseBehavior.Si la souris n'a pas été verrouillée, les valeurs renvoyées de Vector2 seront nulles.

La sensibilité de la souris, déterminée dans les paramètres du client et UserInputService.MouseDeltaSensitivity , influencera le résultat.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Changement dans le mouvement de la souris.

Échantillons de code

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

Cette fonction renvoie une Vector2 représentant l'emplacement actuel de l'écran du joueur Mouse en pixels par rapport au coin supérieur gauche.Cela ne tient pas compte des inserts Enum.ScreenInsets en haut à gauche et en bas à droite, appelez GuiService:GetGuiInset() pour les obtenir.

Si la position du pointeur de la souris est hors écran ou que le dispositif du joueur n'a pas de souris, la valeur retournée sera indéterminée.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.


Retours

Un Vector2 représentant l'emplacement actuel de l'écran de la souris, en pixels.

GetNavigationGamepads

Cette fonction renvoie un tableau de manette de jeu UserInputTypes qui sont connectés et activés pour la navigation GUI.Cette liste est dans l'ordre décroissant de priorité, ce qui signifie qu'elle peut être itérée pour déterminer quel gamepad devrait avoir un contrôle de navigation.

Si une manette de jeu connectée est une manette de navigation seulement détermine laquelle des manettes de jeu contrôle les interfaces graphiques de navigation.Cela n'influence pas les contrôles de navigation.

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .

Voir aussi :


Retours

Un ensemble de UserInputTypes qui peut être utilisé pour la navigation GUI, dans l'ordre décroissant de priorité.

GetStringForKeyCode

GetStringForKeyCode renvoie une chaîne représentant une clé que l'utilisateur doit appuyer pour saisir une donnée donnée Enum.KeyCode, en tenant compte de leur disposition de clavier.Pour les codes clés qui nécessitent que quelque modifieur soit maintenu, cette fonction renvoie la clé à être appuyée en plus du modifieur.Voir les exemples ci-dessous pour une explication plus détaillée.

Lors de l'utilisation de Roblox avec un clavier non-QWERTY, les codes de clé sont mappés à des positions QWERTY équivalentes.Par exemple, en appuyant sur A sur un clavier AZERTY, vous obtenez Enum.KeyCode.Q .Cette mise en correspondance peut conduire à des informations incohérentes sur les éléments d'interface utilisateur expérience.Par exemple, "Appuyez sur M pour ouvrir la carte" est inexact sur un clavier AZERTY ; il aurait besoin d'être "Appuyez sur ? pour ouvrir la carte" qui est à la même position que M sur QWERTY.Cette fonction résout ce problème en fournissant la clé réelle à être pressée lors de l'utilisation de layouts de clavier non-QWERTY.


local UserInputService = game:GetService("UserInputService")
local textLabel = script.Parent
local mapKey = Enum.KeyCode.M
textLabel.Text = "Press " .. UserInputService:GetStringForKeyCode(mapKey) .. " to open the map"
Exemples sur le clavier QWERTY

<th>Valeur de retour</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.Q</code></td>
<td><code>Q</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.W</code></td>
<td><code>W</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Equals</code></td>
<td><code>=</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.At</code></td>
<td><code>2</code> parce que <code>@</code> est saisi avec <kbd>Shift</kbd><kbd>2</kbd></td>
</tr>
</tbody>
Code clé
Exemples sur le clavier AZERTY

<th>Valeur de retour</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.Q</code></td>
<td><code>A</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.W</code></td>
<td><code>Z</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Equals</code></td>
<td><code>=</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.At</code></td>
<td><code>É</code></td>
</tr>
</tbody>
Code clé
Utilisation du gamepad

GetStringForKeyCode() renvoie la mappe de chaîne pour le Enum.KeyCode le plus récemment connecté gamepad.Si le contrôleur connecté n'est pas pris en charge, la fonction renvoie la conversion de chaîne par défaut pour le code clé demandé.

L'exemple suivant montre comment vous pouvez cartographier des ressources personnalisées pour ButtonA :


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

Les codes de clé de pad directionnel n'ont aucune différence en fonction de l'appareil.Enum.KeyCode.ButtonSelect a un comportement légèrement différent dans certains cas.Utilisez les deux mises en correspondance de la PlayStation pour vous assurer que les utilisateurs voient les bons boutons.


<th>Valeur de retour de la PlayStation</th>
<th>Valeur de retour Xbox</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td><code>Bouton croisé</code></td>
<td><code>BoutonA</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonB</code></td>
<td><code>Cercle de boutons</code></td>
<td><code>BoutonB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonX</code></td>
<td><code>Bouton carré</code></td>
<td><code>BoutonX</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonY</code></td>
<td><code>Triangle de bouton</code></td>
<td><code>BoutonY</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL1</code></td>
<td><code>Bouton L1</code></td>
<td><code>BoutonLB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL2</code></td>
<td><code>BoutonL2</code></td>
<td><code>BoutonLT</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL3</code></td>
<td><code>BoutonL3</code></td>
<td><code>BoutonLS</code></td>
</tr>
<tr>
<td><code>Enumer.KeyCode.ButtonR1</code></td>
<td><code>Bouton R1</code></td>
<td><code>BoutonRB</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR2</code></td>
<td><code>BoutonR2</code></td>
<td><code>BoutonRT</code></td>
</tr>
<tr>
<td><code>Enumer.KeyCode.ButtonR3</code></td>
<td><code>BoutonR3</code></td>
<td><code>BoutonRS</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonStart</code></td>
<td><code>Options de bouton</code></td>
<td><code>Bouton de démarrage</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonSelect</code></td>
<td><code>Touche de bouton</code> et <code>Partage de bouton</code></td>
<td><code>Bouton sélectionner</code></td>
</tr>
</tbody>
Code clé
Images système pour les codes clés

Lors de l'utilisation d'un Enum.KeyCode qui peut être mieux représenté en tant qu'image, comme pour un ImageLabel dans une interface utilisateur, vous pouvez utiliser les icônes héritées suivantes.Cependant, il est recommandé d'utiliser GetImageForKeyCode() comme méthode plus moderne et cross-plateforme pour récupérer les icônes de contrôleur Xbox et PlayStation.


<th>Imagerie</th>
<th>ID de ressource</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/Controls/xboxY.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonA</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxA.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Controls/xboxA.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonB</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxB.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/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/Contrôles/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/Contrôles/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/Contrôles/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/Contrôles/dpadDown.png</code></td>
</tr>
<tr>
<td><code>Sélection du bouton Enum.KeyCode.</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxView.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/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/Contrôles/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/Contrôles/xboxLB.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonR1</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxRB.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Controls/xboxRB.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.ButtonL2</code></td>
<td>
<img src="../../../assets/scripting/controls/xboxLT.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/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/Contrôles/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/Contrôles/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/Contrôles/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/Contrôles/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/Contrôles/xboxRSDirectional.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Retour arrière</code></td>
<td>
<img src="../../../assets/scripting/controls/backspace.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/backspace.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Retour</code></td>
<td>
<img src="../../../assets/scripting/controls/return.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/return.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Shift gauche</code></td>
<td>
<img src="../../../assets/scripting/controls/shift.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Controls/shift.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.RightShift</code></td>
<td>
<img src="../../../assets/scripting/controls/shift.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Controls/shift.png</code></td>
</tr>
<tr>
<td><code>Enum.KeyCode.Tab</code></td>
<td>
<img src="../../../assets/scripting/controls/tab.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/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/Contrôles/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.Quote arrière</code></td>
<td>
<img src="../../../assets/scripting/controls/graveaccent.png" width="24">
</img>
</td>
<td><code>rbxasset://textures/ui/Contrôles/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/Contrôles/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/barre d'espace.png</code></td>
</tr>
</tbody>
Code clé

Paramètres

keyCode: Enum.KeyCode
Valeur par défaut : ""

Retours

GetSupportedGamepadKeyCodes

Cette fonction renvoie un tableau de KeyCodes que le gamepad associé au donné Enum.UserInputType soutient.

Cette fonction peut être utilisée pour déterminer quelles touches sont prises en charge et non prises en charge par une manette de jeu connectée.Pour déterminer si un code clé spécifique est pris en charge, utilisez UserInputService:GamepadSupports() .

Si vous appelez sur une manette de jeu non existante ou non connectée, cette fonction renverra un tableau vide.

Comme UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript.

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu.

Valeur par défaut : ""

Retours

Un ensemble de KeyCodes soutenu par la manette de jeu donnée.

Échantillons de code

Cet exemple obtient une liste de manettes de navigation et une liste de leurs supports Enum.KeyCodes.Ensuite, il itère à travers la liste de code clé soutenue et lie les touches ButtonX et X aux fonctions si elles sont prises en charge par une manette de jeu en utilisant le ContextActionService.

Liaison des touches de manette de jeu prises en charge

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
-- Puisque cette fonction ne renvoie rien, ce gestionnaire va
-- « couler » l'entrée et aucun autre gestionnaire d'action ne sera appelé après
-- celui-ci.
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

Cette fonction vérifie si un bouton spécifique est pressé sur un manette de jeu spécifique.Il renvoie true si le gamepad a appuyé sur le button spécifié, sinon il renvoie false.

Types d'entrée utilisateur valides

La manette de jeu spécifiée doit être l'une des valeurs de l'ensemble UserInputType suivantes :


<tr>
<td>Enum.UserInputType.Gamepad1-8</td>
</tr>
Nom
Codes clés valides

Le bouton spécifié doit être l'une des valeurs d'Enumération de codes clés suivantes :


<tr>
<td>Enum.KeyCode.ButtonX</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonY</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonA</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonB</td>
</tr>
<tr>
<td>Enumer.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>Enumer.KeyCode.ButtonR3</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonL3</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonStart</td>
</tr>
<tr>
<td>Enum.KeyCode.ButtonSelect</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadLeft</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadRight</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadUp</td>
</tr>
<tr>
<td>Enum.KeyCode.DPadDown</td>
</tr>
Nom

Cela peut être utilisé pour vérifier si un bouton spécifique, tel que A, est maintenu enfoncé. Par exemple :


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

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu donnée.

Valeur par défaut : ""
gamepadKeyCode: Enum.KeyCode

Le Enum.KeyCode de bouton spécifié.

Valeur par défaut : ""

Retours

Si le bouton de manette de jeu spécifié sur la manette de jeu donnée est pressé est pressé.

IsKeyDown

Cette fonction renvoie si l'utilisateur maintient la touche associée à la clé donnée Enum.KeyCode.Il renvoie true si la clé spécifiée est pressée ou false si elle n'est pas pressée.

Cela peut être utilisé pour vérifier si une touche spécifique, comme la barre d'espace, est appuyée. Par exemple :


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

Pour récupérer une liste de toutes les touches pressées par l'utilisateur, utilisez la fonction UserInputService:GetKeysPressed().

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .

Voir aussi :

Paramètres

keyCode: Enum.KeyCode

Le Enum.KeyCode de la clé.

Valeur par défaut : ""

Retours

Si la clé spécifiée est maintenue enfoncée.

IsMouseButtonPressed

Cette fonction prend un bouton de souris Enum.UserInputType et renvoie un booléen indiquant si il est actuellement pressé.

Le bouton de souris vérifié dépend de la valeur Enum.UserInputType transmise à la fonction en tant qu'argument. Par exemple :


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

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript."

Paramètres

mouseButton: Enum.UserInputType

Le Enum.UserInputType de la touche de la souris.

Valeur par défaut : ""

Retours

Si le bouton de souris donné est maintenu enfoncé actuellement.

IsNavigationGamepad

Cette fonction renvoie true si le gamepad spécifié Enum.UserInputType est autorisé à contrôler la navigation et la sélection GuiObjects .

Si vous voulez définir une manette de navigation, vous pouvez utiliser UserInputService:SetNavigationGamepad() . Vous pouvez également utiliser UserInputService:GetNavigationGamepads() pour obtenir une liste de toutes les manettes de navigation.

Par exemple, le code ci-dessous vérifie si le gamepad1 est comme un gamepad de navigation :


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

Une liste de tous les gamepads connectés, indépendamment de la navigation, peut être récupérée en utilisant `UserInput/GetConnectedGamepads.

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .

Voir aussi :

Paramètres

gamepadEnum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu spécifiée.

Valeur par défaut : ""

Retours

Si la manette de jeu spécifiée est une manette de navigation.

RecenterUserHeadCFrame

()

Cette fonction recentre le CFrame de la casquette VR sur l'orientation actuelle de la casquette portée par l'utilisateur.Cela signifie que l'orientation actuelle de la casquette est réglée sur CFrame.new() .

Utilisez cette fonction pour déplacer le casque CFrame au centre de la zone de lecture si il semble être à un décalage étrange.

Cela se comporte de manière identique à la fonction VRService , VRService:RecenterUserHeadCFrame() .

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .


Retours

()

SetNavigationGamepad

()

La fonction SetNavigationGamepad détermine si le gamepad spécifié Enum.UserInputType peut déplacer le navigateur GUI.Un gamepad qui est autorisé à déplacer le navigateur GUI est considéré comme un gamepad de navigation navigateur.

Si l'argument activé est passé en tant que true, la manette de jeu peut déplacer le navigateur GUI.Si l'argument est false, le Gamepad ne peut pas déplacer le navigateur GUI.

Si vous voulez vérifier si une manette de jeu spécifiée est configurée pour être une manette de navigation, vous pouvez utiliser la fonction UserInputService:IsNavigationGamepad().Vous pouvez également utiliser le UserInputService:GetNavigationGamepads() pour récupérer une liste de tous les gamepads de navigation.

Puisque UserInputService est côté client uniquement, cette fonction ne peut être utilisée qu'en LocalScript .

Voir aussi :

Paramètres

gamepadEnum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu spécifiée.

Valeur par défaut : ""
enabled: boolean

Si la manette de jeu spécifiée peut déplacer le navigateur GUI.

Valeur par défaut : ""

Retours

()

Échantillons de code

Cet exemple définit Gamepad1 comme une manette de navigation en passant Enum.UserInputType.Gamepad1 et true en tant qu'arguments.

UserInputService : Définir la manette de navigation

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

Évènements

DeviceAccelerationChanged

L'événement DeviceAccelerationChanged se déclenche lorsqu'un utilisateur déplace un appareil doté d'un accéléromètre.

Un accéléromètre est un composant trouvé dans la plupart des appareils mobiles qui mesure l'accélération (changement de vitesse).

Pour déterminer si l'appareil d'un utilisateur a un accéléromètre activé, voir UserInputService.AccelerometerEnabled .

Cet événement peut être utilisé pour suivre le mouvement d'un appareil doté d'un accéléromètre.Une utilisation d'échantillon inclut le déplacement du personnage du joueur lorsqu'un appareil mobile accélère.

De plus, cet événement peut être utilisé avec UserInputService:GetDeviceAcceleration() pour déterminer le mouvement actuel du dispositif d'un utilisateur si le dispositif a un accéléromètre.

Cet événement ne se déclenche que localement - ce qui signifie que seul le joueur dont l'appareil se déplace peut utiliser l'événement et qu'il ne fonctionnera que dans un LocalScript .

Paramètres

acceleration: InputObject

Un InputObject , avec un UserInputType de 'Accéléromètre' , et Position qui montre la force de gravité sur chaque axe local.


Échantillons de code

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

Control Players Using the Accelerometer

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

DeviceGravityChanged

L'événement se déclenche lorsque la gravité du dispositif change sur un appareil doté d'un accéléromètre.

Le vecteur de gravité d'un dispositif représente la force de gravité sur chacun des axes X, Y et Z du dispositif.Bien que la gravité ne change jamais, la force qu'elle exerce sur chaque axe change lorsque l'appareil tourne et change d'orientation.La valeur de force exercée sur chaque axe est un vecteur d'unité allant de -1 à 1.

Un accéléromètre est un composant trouvé dans la plupart des appareils mobiles qui mesure l'accélération (changement de vitesse).

Cet événement peut être utilisé pour déterminer la direction du monde réel de la force de gravité sur un appareil d'un utilisateur.Cela peut ensuite être utilisé pour simuler la force de gravité sur l'appareil d'un utilisateur dans le jeu, comme sur les objets en jeu (voir exemple ci-dessous).

Pour vérifier si l'appareil d'un utilisateur a un accéléromètre activé, voir UserInputService.AccelerometerEnabled .Si l'appareil a un accéléromètre activé, vous pouvez utiliser la fonction UserInputService:GetDeviceGravity() pour obtenir la force de gravité actuelle sur l'appareil de l'utilisateur.

Paramètres

gravity: InputObject

Un InputObject , avec une propriété InputObject.Position qui montre la force de gravité sur chaque axe local.Cette position peut être utilisée comme une direction pour déterminer la direction de gravité par rapport à l'appareil.


Échantillons de code

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

Move a Ball using the Accelerometer

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

DeviceRotationChanged

L'événement DeviceRotationChanged se déclenche lorsqu'un utilisateur fait pivoter un appareil doté d'un gyroscope.

Un gyroscope est un composant trouvé dans la plupart des appareils mobiles qui détecte l'orientation et la vitesse de rotation.

L'événement est utile pour suivre l'orientation de l'appareil et les modifications lorsque l'utilisateur fait tourner son appareil.Pour déterminer la rotation du dispositif actuel, vous pouvez utiliser la fonction UserInputService:GetDeviceRotation().

Pour vérifier si le dispositif d'un utilisateur a un gyroscope activé et que cet événement se déclenchera, voir UserInputService.GyroscopeEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Paramètres

rotation: InputObject

Un InputObject fournissant des informations sur la rotation de l'appareil.InputObject.Position représente la nouvelle rotation a Vector3 une valeur positionnelle et InputObject.Delta représente le changement de rotation dans une valeur positionnelle Vector3.

cframe: CFrame

Un CFrame représentant l'orientation actuelle de l'appareil.


Échantillons de code

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

Move a Ball using the Accelerometer

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

GamepadConnected

L'événement GamepadConnected se déclenche lorsqu'une manette de jeu est connectée au client.

Puisque jeu Roblox prend en charge plusieurs contrôleurs, cet événement est utile lorsqu'il est associé à l'événement UserInputService.GamepadDisconnected pour suivre les contrôleurs/manettes actifs.Vous pouvez également utiliser UserInputService:GetConnectedGamepads() pour trouver la bonne manette à utiliser.

L'exemple suivant montre un exemple d'utilisation d'une traçabilité lorsqu'une manette de jeu est connectée au client.


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

Si vous voulez voir quels appareils sont connectés, vous pouvez utiliser la fonction UserInputService:GetConnectedGamepads().

Comme cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType de la manette de jeu connectée.


GamepadDisconnected

L'événement GamepadDisconnected se déclenche lorsqu'un gamepad est déconnecté.

Puisque jeu Roblox prend en charge plusieurs contrôleurs, cet événement est utile lorsqu'il est associé à l'événement UserInputService.GamepadConnected pour suivre les contrôleurs/manettes actifs.Vous pouvez également utiliser UserInputService:GetConnectedGamepads() pour trouver la bonne manette à utiliser.

L'exemple suivant montre un exemple d'utilisation d'une traçabilité lorsqu'une manette de jeu est déconnectée du client.


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

Comme cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .

Voir aussi :

Paramètres

gamepadNum: Enum.UserInputType

Le Enum.UserInputType du gamepad déconnecté.


InputBegan

L'événement InputBegan se déclenche lorsqu'un utilisateur commence à interagir via un appareil d'interface homme-ordinateur (bouton de souris vers le bas, toucher début, bouton de clavier vers le bas, etc.).

Il peut être utilisé pour suivre le début de l'interaction de l'utilisateur, comme lorsque l'utilisateur interagit pour la première fois avec un élément de GUI, une manette de jeu, etc.Il ne capture pas les mouvements de la roue de la souris.

Cet événement peut être utilisé avec UserInputService.InputChanged et UserInputService.InputEnded pour suivre quand l'entrée utilisateur commence, change et se termine.

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


Échantillons de code

L'exemple suivant montre l'un des nombreux exemples d'utilisation de la gestion de l'entrée utilisateur à partir de InputBegan en fonction de son type.

Gestion de l'entrée commencée

-- Pour utiliser l'événement InputBegan, le service UserInputService doit être utilisé
local UserInputService = game:GetService("UserInputService")
-- Une fonction d'échantillon fournissant plusieurs cas d'utilisation pour différents types d'entrée utilisateur
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
if gameProcessed then
print("The game engine internally observed this input!")
else
print("The game engine did not internally observe this input!")
end
end)

InputChanged

L'événement InputChanged se déclenche lorsqu'un utilisateur modifie la façon dont il interagit via un appareil d'interface homme-ordinateur (bouton de souris vers le bas, début du toucher, bouton de clavier vers le bas, etc.).

Pour ignorer les événements gérés automatiquement par Roblox, comme le défilement dans un ScrollingFrame, vérifiez que l'argument gameProcessedEvent est faux.Cet événement peut être utilisé avec UserInputService.InputBegan et UserInputService.InputEnded pour suivre quand l'entrée utilisateur commence, change et se termine.

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


InputEnded

L'événement InputEnded se déclenche lorsqu'un utilisateur cesse d'interagir via un appareil d'interface homme-ordinateur (bouton de souris vers le bas, début du toucher, bouton du clavier vers le bas, etc.).Cela est utile lorsque vous traquez quand un utilisateur libère une touche de clavier, un bouton de souris, une entrée sur un écran tactile, etc.

Cet événement peut être utilisé avec UserInputService.InputBegan et UserInputService.InputChanged pour suivre quand l'entrée utilisateur commence, change et se termine.

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


JumpRequest

L'événement JumpRequest UserInputService se déclenche lorsqu'il y a une demande de saut du client, par exemple lorsque le client appuie sur la barre d'espace ou le bouton de saut sur mobile.

Cet événement se déclenche chaque fois que l'utilisateur essaie de faire son saut Player.Character.Le comportement par défaut répond à une demande de saut en définissant la propriété du joueur Humanoid.Jump à vrai, ce qui fait sauter le personnage du joueur.

L'événement peut être utilisé pour suivre chaque fois qu'un joueur veut sauter.Au lieu d'utiliser cela pour faire sauter un joueur, cela devrait être utilisé pour modifier le comportement de saut par défaut - comme désactiver le saut.

Par exemple, le code ci-dessous imprime « Sauter » chaque fois que le joueur envoie une demande de saut.


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

Puisque cet événement se déclenche plusieurs fois pour une seule demande de saut, l'utilisation d'un débounce est suggérée.

Si vous souhaitez connecter des clés ou des boutons à d'autres actions, envisagez d'utiliser des événements tels que UserInputService:GetKeysPressed() et UserInputService.InputBegan ou le ContextActionService.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.


Échantillons de code

Cet exemple de code désactive le saut pour le LocalPlayer en définissant l'état Enum.HumanoidStateType.Jumping sur false.Définir cet état sur false dès que l'utilisateur essaie de sauter annule le saut.

Pour que cet exemple fonctionne comme prévu, il doit être placé dans un LocalScript.

Désactiver le saut

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")
-- Se déclenche lorsque l'utilisateur essaie de sauter
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)

LastInputTypeChanged

L'événement UserInputService.LastInputTypeChanged se déclenche chaque fois que le client modifie la façon dont il interagit via un appareil d'interface homme-ordinateur.(i.e.de MouseMovement à MouseWheel ou de Thumbstick1 à Thumbstick2).

Pour obtenir la valeur du dernier type d'entrée, indépendamment de savoir s'il a été modifié ou non, vous pouvez utiliser la fonction UserInputService:GetLastInputType().

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Paramètres

lastInputType: Enum.UserInputType

A Enum.UserInputType indiquant le dernier type d'entrée.


Échantillons de code

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

Actions de pointeur se déclenche lorsque l'utilisateur effectue une action de pointeur spécifique. En particulier, faire défiler la molette de la souris.

Paramètres

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

TextBoxFocusReleased

L'événement TextBoxFocusReleased se déclenche lorsqu'un client perd le focus sur un TextBox , généralement lorsqu'un client arrête l'entrée de texte en appuyant sur retour ou en cliquant/touchant autrement sur l'écran.

Par exemple, le code ci-dessous imprime le nom du TextBox perdant le focus lorsque l'événement se déclenche.


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

Il peut être utilisé aux côtés de UserInputService.TextBoxFocused pour suivre quand un TextBox gagne et perd le focus.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi

Paramètres

textboxReleased: TextBox

Le TextBox qui a perdu le focus.


TextBoxFocused

Cet événement se déclenche lorsqu'un gain de focus sur un TextBox , généralement lorsqu'un client clique/touche sur une zone de texte pour commencer à saisir du texte.Cela se déclenche également si un focus de zone de texte est focalisé en utilisant TextBox:CaptureFocus() .

Par exemple, le code ci-dessous imprime le nom du TextBox focalisé lorsque l'événement se déclenche.


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

Il peut être utilisé aux côtés de UserInputService.FocusReleased pour suivre quand une boîte de texte gagne et perd le focus.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi

Paramètres

textboxFocused: TextBox

Le TextBox qui a gagné en focus.


TouchDrag

Paramètres

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

TouchEnded

L'événement TouchEnded se déclenche lorsqu'un utilisateur a libéré son doigt de l'écran d'un appareil TouchEnabled, mettant fin à l'entrée tactile avec l'appareil.

Cet événement peut être utilisé pour déterminer quand un utilisateur arrête de toucher l'écran de son appareil.Il peut être associé à UserInputService.TouchStarted pour déterminer quand un utilisateur commence et arrête de toucher l'écran.

Par exemple, le code ci-dessous imprime la position de l'écran où l'utilisateur cesse de toucher l'écran.


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

L'objet d'entrée tactile est le même objet d'entrée tout au long de la vie du toucher.Donc, comparer InputObjects lorsqu'ils sont des objets tactiles est valide pour déterminer si c'est le même doigt.

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchLongPress

Tiré lorsqu'un utilisateur maintient au moins un doigt pendant une courte période sur la même position d'écran d'un appareil TouchEnabled.

Cet événement peut être utilisé pour déterminer quand un utilisateur maintient sa main sur un élément en jeu GuiObject ou dans un élément.

L'exemple ci-dessous imprime le state de la pression longue lorsque l'utilisateur maintient au moins un doigt pendant une courte période dans la même position sur l'écran.Les états possibles incluent : Commencer , Changer , Finir , Annuler et Aucun .


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)

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Il peut être associé à UserInputService.TouchStarted et UserInputService.TouchEnded pour déterminer quand un utilisateur commence et arrête de toucher l'écran.

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

touchPositions: Array

Un ensemble d'objets Vector2 de type array, indiquant la position des doigts impliqués dans le geste.

Le Enum.UserInputState de la gestuelle.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchMoved

Se déclenche lorsqu'un utilisateur déplace son doigt sur un appareil TouchEnabled tel qu'une tablette ou un smartphone.

Cet événement est utile pour suivre si un utilisateur déplace son doigt sur l'écran, ainsi que l'endroit où l'utilisateur déplace son doigt.

Le code ci-dessous montre le toucher se déplaçant de sa position précédente à une nouvelle position sur un appareil TouchEnabled.Notez que le InputObject.Position sur le paramètre passé touch inclut un Vector3 , mais ne comprend que les coordonnées X et Y ; Z est toujours 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)

Associez cet événement à UserInputService.TouchStarted et UserInputService.TouchEnded pour déterminer quand un utilisateur commence à toucher l'écran, comment son doigt se déplace en le touchant, et quand il arrête de toucher l'écran.

Pour vérifier si le dispositif d'un utilisateur prend en charge le toucher et que les événements de toucher se déclencheront, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchPan

L'événement TouchPan se déclenche lorsqu'un utilisateur fait glisser au moins un doigt sur un appareil TouchEnabled.

Cet événement peut être utilisé pour déterminer quand un utilisateur fait glisser son doigt le long de l'écran d'un appareil TouchEnabled - comme pour faire pivoter le Camera dans un script de caméra personnalisé.

Le fragment suivant imprime « Vitesse de glissement du toucher » suivi de la vitesse du toucher de l'utilisateur lorsque l'utilisateur fait glisser son doigt sur l'écran.


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

Jetez un oeil à une autre fonction utile UserInputService ici UserInputService.TouchRotate.

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

touchPositions: Array

Un ensemble d'objets Vector2 de type array indiquant les positions des touches (par exemple, des doigts) impliquées dans le geste.

totalTranslation: Vector2

La taille de la gestuelle de la poêle de début à la fin (en pixels).

velocity: Vector2

La vitesse du geste du pan (en pixels) par seconde.

Le Enum.UserInputState de la gestuelle.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchPinch

Tiré lorsqu'un utilisateur place et déplace deux doigts sur l'écran d'un appareil TouchEnabled.

Par exemple, le fragment suivant imprime combien la taille de zoom de la caméra a changé depuis le début du pincement tactile.


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

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus.Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

touchPositions: Array

Un ensemble de Vector2s , indiquant la position de l'écran, en pixels, des doigts impliqués dans la gestuelle d'écrasement.

scale: number

La magnitude de la pression du début à la fin (en pixels) divisée par les positions de pression de départ.

velocity: number

La vitesse de la gestuelle de pinçage (en pixels) par seconde.

Le Enum.UserInputState de la gestuelle.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchRotate

L'événement TouchRotate se déclenche lorsqu'un utilisateur fait pivoter deux doigts sur un appareil TouchEnabled.

Par exemple, le code suivant imprime combien la caméra a tourné depuis le début de la rotation tactile.


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

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Les scripts principaux qui contrôlent la caméra de l'utilisateur sur un appareil mobile utilisent un code qui fonctionne de manière similaire à cet événement.La meilleure pratique pour cet événement est d'utiliser lors de la création d'un système de caméra mobile pour annuler les scripts du noyau par défaut.

Voir aussi :

Paramètres

touchPositions: Array

Un tableau de Vector2s , indiquant les positions des doigts impliqués dans le geste.

rotation: number

Le nombre de degrés que la gestuelle a tournés depuis le début de la gestuelle.

velocity: number

Le changement de rotation (en degrés) divisé par la durée du changement (en secondes).

Le Enum.UserInputState de la gestuelle.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchStarted

L'événement TouchStarted se déclenche lorsqu'un utilisateur place son doigt sur un appareil TouchEnabled, commençant l'entrée tactile avec l'appareil.

Cet événement peut être utilisé pour déterminer quand un utilisateur commence à toucher l'écran de son appareil.Il peut être associé à UserInputService.TouchEnded pour déterminer quand un utilisateur commence et arrête de toucher l'écran.

L'objet d'entrée tactile est le même objet d'entrée tout au long de la vie du toucher.Donc, comparer InputObjects lorsqu'ils sont des objets tactiles est valide pour déterminer si c'est le même doigt.

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

Une instance InputObject qui contient des informations sur l'entrée de l'utilisateur.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchSwipe

L'événement TouchSwipe se déclenche lorsqu'un utilisateur frotte ses doigts sur un appareil TouchEnabled.

Cet événement peut être utilisé pour déterminer quand un utilisateur frotte ses doigts sur l'écran de son appareil et la direction que l'utilisateur a frotée.

Pour un suivi plus précis du mouvement de la saisie tactile, utilisez UserInputService.TouchMoved

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Voir aussi :

Paramètres

swipeDirection: Enum.SwipeDirection

Un Enum.SwipeDirection , indiquant la direction dans laquelle l'utilisateur a glissé.

numberOfTouches: number

Nombre de touches (par exemple, les doigts) impliquées dans le geste.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchTap

L'événement TouchTap se déclenche lorsque l'utilisateur touche/appuie sur son doigt sur l'écran sur un appareil TouchEnabled.

Cet événement se déclenchera indépendamment du fait que l'utilisateur touche/touche le monde du jeu ou un élément GuiObject.Si vous recherchez un événement qui ne se déclenche que lorsque l'utilisateur touche/touche le monde du jeu, utilisez UserInputService.TouchTapInWorld .

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.

Paramètres

touchPositions: Array

Un ensemble d'objets Vector2 de type array, indiquant la position des doigts impliqués dans le geste de tap.

gameProcessedEvent: boolean

Indique si le moteur de jeu a observé cette entrée et a agi dessus internement.En général, cela fait référence au traitement de l'interface utilisateur, donc si un bouton a été touché ou cliqué à partir de cette entrée, gameProcessedEvent serait true .Ceci est également vrai pour les événements d'entrée connectés via ContextActionService .


TouchTapInWorld

L'événement TouchTapInWorld se déclenche lorsque l'utilisateur touche/appuie sur son doigt sur l'écran sur un appareil TouchEnabled.Il est tiré lorsque l'utilisateur appuie dans le monde du jeu.

Cet événement peut être utilisé pour déterminer quand un utilisateur appuie sur l'écran et ne tape pas sur un élément GuiObject.Si l'utilisateur appuie sur un élément GUI, UserInputService.TouchTap lancera à la place de TouchTapInWorld.

Pour vérifier si l'appareil d'un utilisateur est TouchEnabled et que les événements de touch seront déclenchés, voir UserInputService.TouchEnabled .

Cet événement ne se déclenche que lorsque la fenêtre du client Roblox est en focus. Par exemple, les entrées ne seront pas capturées lorsque la fenêtre est minimisée.

Comme il ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript .

Voir aussi :

Paramètres

position: Vector2

A Vector2 indiquant la position de la touche.

processedByUI: boolean

Si l'utilisateur a tapé sur un élément GUI.


WindowFocusReleased

L'événement WindowFocusReleased se déclenche lorsque la fenêtre du client Roblox perd le focus - généralement lorsque le client Roblox est minimisé par l'utilisateur.

Par exemple, le code ci-dessous imprime « Focalisation de la fenêtre libérée » chaque fois que le client Roblox perd le focus.


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

Cet événement peut être utilisé avec UserInputService.WindowFocused pour suivre si le client Roblox est activement focalisé sur l'écran d'un utilisateur.

Puisqu'il ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript .


WindowFocused

L'événement WindowFocused se déclenche lorsque la fenêtre du client Roblox gagne le focus - généralement lorsque le client Roblox est maximisé/activement ouvert sur l'écran de l'utilisateur.

Par exemple, le code ci-dessous imprime « Fenêtre mise au focus » chaque fois que le client Roblox gagne le focus.


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

Cet événement peut être utilisé avec UserInputService.WindowFocusReleased pour suivre si le client Roblox est activement focalisé sur l'écran d'un utilisateur.

Comme cet événement ne se déclenche que localement, il ne peut être utilisé qu'en LocalScript.