Classe de moteur
UserInputService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Résumé
Propriétés
MouseIcon:ContentId |
Méthodes
GamepadSupports(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
GetGamepadConnected(gamepadNum: Enum.UserInputType):boolean |
GetGamepadState(gamepadNum: Enum.UserInputType):{InputObject} |
GetImageForKeyCode(keyCode: Enum.KeyCode):ContentId |
GetStringForKeyCode(keyCode: Enum.KeyCode,format: Enum.KeyCodeStringFormat):string |
GetSupportedGamepadKeyCodes(gamepadNum: Enum.UserInputType):{any} |
GetUserCFrame(type: Enum.UserCFrame):CFrame |
IsGamepadButtonDown(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
IsKeyDown(keyCode: Enum.KeyCode):boolean |
IsMouseButtonPressed(mouseButton: Enum.UserInputType):boolean |
IsNavigationGamepad(gamepadEnum: Enum.UserInputType):boolean |
SetNavigationGamepad(gamepadEnum: Enum.UserInputType,enabled: boolean):() |
Événements
Référence API
Propriétés
AccelerometerEnabled
Échantillons de code
Déplacer une balle en utilisant l'accéléromètre
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)
endModalEnabled
MouseIcon
UserInputService.MouseIcon:ContentId
Échantillons de code
Icône de Souris Personnalisée
local UserInputService = game:GetService("UserInputService")
-- Afin de restaurer le curseur à ce qu'il était précédemment, il devra être sauvegardé dans une variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Ne mettre à jour le curseur enregistré que s'il n'est pas actuellement sauvegardé
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Ne restaurer le curseur de la souris que s'il y a un curseur sauvegardé à restaurer
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Ne pas restaurer le même curseur deux fois (cela pourrait écraser un autre script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()MouseIconContent
Échantillons de code
Icône de Souris Personnalisée
local UserInputService = game:GetService("UserInputService")
-- Afin de restaurer le curseur à ce qu'il était précédemment, il devra être sauvegardé dans une variable
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Ne mettre à jour le curseur enregistré que s'il n'est pas actuellement sauvegardé
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Ne restaurer le curseur de la souris que s'il y a un curseur sauvegardé à restaurer
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Ne pas restaurer le même curseur deux fois (cela pourrait écraser un autre script)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()PreferredInput
Échantillons de code
Détection de l'input préféré
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- Le joueur utilise un appareil à écran tactile sans autres types d'input disponibles/connectés
print("Touch")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- Le joueur a connecté ou interagi le plus récemment avec une manette
print("Gamepad")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- Le joueur a connecté ou interagi le plus récemment avec un clavier ou une souris
print("KeyboardAndMouse")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)UserHeadCFrame
VREnabled
Méthodes
GamepadSupports
UserInputService:GamepadSupports(
Paramètres
Retours
GetDeviceAcceleration
Retours
Échantillons de code
Accélération de l'appareil de sortie
local UserInputService = game:GetService("UserInputService")
if UserInputService.AccelerometerEnabled then
local acceleration = UserInputService:GetDeviceAcceleration().Position
print(acceleration)
else
warn("Impossible d'obtenir l'accélération de l'appareil car l'appareil n'a pas d'accéléromètre activé !")
endGetDeviceGravity
Retours
Échantillons de code
Déplacement des objets avec le 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
-- Lier l'événement à quand le gyroscope détecte un changement
UserInputService.DeviceGravityChanged:Connect(function(accel)
-- Déplacer la bulle dans le monde en fonction des données du gyroscope
bubble.Position = Vector3.new(-8 * accel.Position.X, 1.8, -8 * accel.Position.Z)
end)
endGetDeviceRotation
Retours
Échantillons de code
Rotation de l'appareil de sortie
local UserInputService = game:GetService("UserInputService")
if UserInputService.GyroscopeEnabled then
local _, cf = UserInputService:GetDeviceRotation()
print(cf)
else
warn("Impossible d'obtenir la rotation de l'appareil car l'appareil n'a pas de gyroscope activé!")
endGetGamepadConnected
Paramètres
Retours
GetGamepadState
Paramètres
Retours
GetImageForKeyCode
Paramètres
Retours
ContentId
Échantillons de code
UserInputService - Obtenir l'image pour KeyCode
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImageGetLastInputType
Retours
Échantillons de code
Détecter le dernier type d'entrée
local UserInputService = game:GetService("UserInputService")
if UserInputService:GetLastInputType() == Enum.UserInputType.Keyboard then
print("La dernière entrée était un clavier !")
endGetMouseButtonsPressed
Retours
Échantillons de code
Vérifier les boutons de la souris pressés
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
-- Retourner un tableau des boutons de la souris pressés
local buttonsPressed = UserInputService:GetMouseButtonsPressed()
local m1, m2 = false, false
for _, button in buttonsPressed do
if button.UserInputType == Enum.UserInputType.MouseButton1 then
print("MouseButton1 pressé !")
m1 = true
end
if button.UserInputType == Enum.UserInputType.MouseButton2 then
print("MouseButton2 pressé !")
m2 = true
end
if m1 and m2 then
print("Les deux boutons de la souris sont pressés !")
end
end
end)GetMouseDelta
Retours
Échantillons de code
Obtenir le delta de la souris
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("La souris a bougé", delta, "depuis la dernière étape")
end
end
RunService:BindToRenderStep("MeasureMouseMovement", Enum.RenderPriority.Input.Value, onRenderStep)GetStringForKeyCode
Paramètres
| Valeur par défaut : "Default" |
Retours
GetSupportedGamepadKeyCodes
Paramètres
Retours
GetUserCFrame
IsGamepadButtonDown
UserInputService:IsGamepadButtonDown(
Paramètres
Retours
IsKeyDown
Paramètres
Retours
IsMouseButtonPressed
Paramètres
Retours
Paramètres
Retours
RecenterUserHeadCFrame
UserInputService:RecenterUserHeadCFrame():()
Retours
()
Paramètres
Retours
()
Événements
DeviceAccelerationChanged
Paramètres
Échantillons de code
Contrôler les joueurs à l'aide de l'accéléromètre
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)
endDeviceGravityChanged
Paramètres
Échantillons de code
Déplacer une balle en utilisant l'accéléromètre
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)
endDeviceRotationChanged
Paramètres
GamepadConnected
Paramètres
GamepadDisconnected
Paramètres
InputBegan
Paramètres
InputChanged
Paramètres
InputEnded
Paramètres
JumpRequest
Échantillons de code
Désactiver le saut par défaut
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")
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
local processJumpRequest = false
local COOLDOWN_TIME = 0.5
local function jumpRequest()
if processJumpRequest == false then
processJumpRequest = true
-- Traiter la demande de saut personnalisée
print("Saut demandé!")
-- Réinitialiser la variable de debounce après le cooldown
task.wait(COOLDOWN_TIME)
processJumpRequest = false
end
end
UserInputService.JumpRequest:Connect(jumpRequest)LastInputTypeChanged
Paramètres
PointerAction
TextBoxFocused
Paramètres
Échantillons de code
Modification de TextBox lors de Focus et FocusRelâché
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TextBoxFocusReleased
Paramètres
Échantillons de code
Modification de TextBox lors de Focus et FocusRelâché
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TouchDrag
UserInputService.TouchDrag(
Paramètres
TouchEnded
Paramètres
TouchLongPress
UserInputService.TouchLongPress(
Paramètres
TouchMoved
Paramètres
TouchPan
UserInputService.TouchPan(
touchPositions:{any}, totalTranslation:Vector2, velocity:Vector2, state:Enum.UserInputState, gameProcessedEvent:boolean
Paramètres
TouchPinch
UserInputService.TouchPinch(
touchPositions:{any}, scale:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
Paramètres
TouchRotate
UserInputService.TouchRotate(
touchPositions:{any}, rotation:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
Paramètres
TouchStarted
Paramètres
TouchSwipe
UserInputService.TouchSwipe(
Paramètres
TouchTap
TouchTapInWorld
UserCFrameChanged
WindowFocusReleased
Échantillons de code
Script de Perte de Focus de Fenêtre (LocalScript)
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = ReplicatedStorage:WaitForChild("AwayEvent")
local function focusGained()
awayEvent:FireServer(false)
end
local function focusReleased()
awayEvent:FireServer(true)
end
UserInputService.WindowFocused:Connect(focusGained)
UserInputService.WindowFocusReleased:Connect(focusReleased)Script de Concentration Hors Fenêtre (Script)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = Instance.new("RemoteEvent")
awayEvent.Name = "AwayEvent"
awayEvent.Parent = ReplicatedStorage
local function manageForceField(player, away)
if away then
local forceField = Instance.new("ForceField")
forceField.Parent = player.Character
else
local forceField = player.Character:FindFirstChildOfClass("ForceField")
if forceField then
forceField:Destroy()
end
end
end
awayEvent.OnServerEvent:Connect(manageForceField)