Système d'action d'entrée

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

Le système d'action d'entrée multiplateforme Input Action System vous permet de connecter des actions et d'organiser des liaisons à travers divers appareils matériels au moment de l'édition. Combiné avec contexts, vous pouvez facilement configurer et éditer un système d'entrée modulaire qui fonctionne sur n'importe quel appareil à n'importe quelle phase de jeu. Les cas d'utilisation incluent :

  • Un système de tir à la première personne où des actions changent dynamiquement selon que le joueur est en mode combat ou en mode spectateur.
  • Un système de conduite complet équipé d'accélération/décélération, de boosts de voiture et de stations de ravitaillement.
  • Des touches de raccourci pour un système d'aptitudes dans un jeu de combat pour changer des mouvements sans que les joueurs ratent un coup.

Contextes d'entrée

Un InputContext est une collection d'actions qui contient des actions d'entrée connexes, par exemple PlayContext pour les contrôles de personnage en jeu et NavContext pour les contrôles de navigation dans les menus de l'interface utilisateur. Vous pouvez activer/désactiver des contextes (et leurs actions correspondantes) via leur propriété Enabled, par exemple pour activer le NavContext lorsque le menu d'inventaire est ouvert, puis passer au PlayContext lorsque le joueur ferme le menu et revient au jeu principal.

Même si un jeu peut ne pas utiliser plusieurs contextes d'entrée initialement, il est recommandé de créer un contexte principal au niveau supérieur de tout système d'entrée, par exemple l'instance de PlayContext pour les entrées qui se produisent pendant le gameplay.

  1. RECOMMANDÉ
    Créez un Folder nommé Inputs à l'intérieur de ReplicatedStorage pour contenir divers contextes d'entrée.

    Nouveau dossier à l'intérieur de ReplicatedStorage, renommé en Inputs
  2. Insérez un nouveau InputContext dans le dossier et renommez-le en PlayContext.

    Nouvelle instance d'InputContext à l'intérieur de ReplicatedStorage, renommée en PlayContext
  3. Dans la fenêtre Propriétés, définissez Priority sur 2000 et activez Sink. Un contexte avec Sink activé consomme les événements d'entrée pour ses KeyCodes liés à son niveau de priorité, bloquant ces entrées afin qu'elles n'atteignent pas les contextes de priorité inférieure. Cela est pratique pour des cas d'utilisation comme un écran d'inventaire qui doit supprimer des entrées de gameplay spécifiques pendant son ouverture. Dans cet exemple, le PlayContext se voit attribuer un Priority suffisamment élevé pour bloquer ses entrées liées avant que les contextes par défaut de PlayerScripts ne les traitent.

Actions d'entrée

Un InputAction définit une mécanique d'action de jeu telle que "Sauter", "Sprint" ou "Tirer". Ces actions sont alors mappées sur des entrées matérielles à l'aide de liaisons d'entrée.

Un InputAction peut être de plusieurs variations selon sa propriété Type (Enum.InputActionType). La valeur par défaut est Bool, conçue pour recevoir des valeurs true/false provenant de l'appui/déclenchement d'entrées telles que ButtonA, E, ou MouseLeftButton.

Type d'Action d'EntréeExemple d'Utilisation
BoolActions déclenchées telles que sauter, tirer, sprinter, etc. avec prise en charge des seuils appuyé/déclenché sur les entrées analogiques.
Direction1DActions variables allant de zéro à plein, comme la pédale d'accélérateur d'une voiture ou le niveau de zoom d'un viseur.
Direction2DMouvement directionnel 2D, comme la rotation de la caméra, ou le mouvement standard du personnage Roblox.
Direction3DMouvement directionnel 3D, comme un véhicule en l'air qui peut léviter vers le haut/bas, accélérer/décélérer et dériver à gauche/droite.
ViewportPositionCoordonnées de viewport 2D telles que l'entrée de la souris, par exemple pour des curseurs personnalisés ou un raycasting pour sélectionner des objets du monde.

Pour tester un InputAction pour le sprint simple d'un personnage :

  1. Créez un nouveau InputAction à l'intérieur du contexte PlayContext dans ReplicatedStorage. Renommez-le en CharacterSprint pour indiquer son action dédiée.

    Nouvelle instance d'InputAction à l'intérieur d'un InputContext, renommée en CharacterSprint
  2. Dans la fenêtre Propriétés, remarquez que le Type de l'action est Bool (par défaut). C'est un type logique pour le sprint simple d'un personnage en tant qu'action booléenne true/false (le personnage est soit en train de sprinter, soit non).

    Type de propriété d'un InputAction défini sur Bool

Liaisons d'entrée

Un InputBinding définit quelle liaison matérielle doit déclencher le parent InputAction, par exemple une pression de touche, un bouton de manette ou un tapotement sur un appareil tactile. Pour la compatibilité multiplateforme, chaque InputAction doit avoir un InputBinding pour manette, clavier/souris et tactile, comme illustré ici.

Le Type attribué à l'InputAction parent affecte directement quels types d'entrée généraux (touche/bouton/tap, déclencheur analogique, joystick, etc.) sont valables pour les instances InputBinding enfants. À son tour, les valeurs envoyées aux événements connectés du parent dépendent du type d'entrée choisi pour la liaison. Consultez événements d'entrée pour plus de détails sur la corrélation entre les types d'action, les liaisons et les valeurs de retour.

Pour connecter des liaisons pour le sprint simple d'un personnage :

  1. Insérez un nouveau InputBinding dans l'action CharacterSprint et renommez-le en KeyboardBinding. Ensuite, définissez la propriété KeyCode de la liaison sur LeftShift.

  2. Pour s'assurer que le verrouillage de la souris Shift n'interfère pas avec la liaison de touche, sélectionnez StarterPlayer dans l'explorateur et désactivez son EnableMouseLockOption dans la fenêtre Propriétés.

  3. Insérez une seconde InputBinding dans l'action CharacterSprint et renommez-la en GamepadBinding. Ensuite, définissez la propriété KeyCode de la liaison sur ButtonY.

  4. À l'intérieur d'un conteneur ScreenGui à l'intérieur de StarterGui, créez un bouton à l'écran, renommez-le en SprintButton, et positionnez/redimensionnez-le comme souhaité.

  5. Insérez une troisième InputBinding dans l'action CharacterSprint et renommez-la en TouchBinding. Ensuite, dans la fenêtre Propriétés, liez la propriété UIButton de la liaison au bouton SprintButton que vous avez créé précédemment dans StarterGui.

Événements d'entrée

L'instance de InputAction dispose de trois événements intégrés pour gérer l'entrée du joueur provenant de InputBindings.

  • Pressed — Cet événement se déclenche uniquement lorsque le Type de l'action d'entrée est défini sur Bool, et uniquement lorsque l'état passe de false à true.
  • Released — Cet événement se déclenche uniquement lorsque le Type de l'action d'entrée est défini sur Bool, et uniquement lorsque l'état passe de true à false.
  • StateChanged — Cet événement se déclenche pour tous les types d'action d'entrée chaque fois que l'état change, sauf si l'état tente de passer au même état.

En fonction du Type de l'action d'entrée (Bool, Direction1D, Direction2D, Direction3D, ou ViewportPosition) et du type d'entrée général provenant d'un InputBinding enfant (touche/bouton/tap, déclencheur analogique, joystick, etc.), différentes valeurs sont retournées aux gestionnaires d'événements Pressed, Released, et StateChanged. Examinez les tables suivantes pour mieux comprendre la corrélation.

Le type Bool est le mieux adapté pour les actions déclenchées telles que sauter, tirer, sprinter, etc. avec prise en charge des seuils appuyé/déclenché sur les entrées analogiques.

Types d'Entrée Valides sur InputBindingsRetourné aux Événements InputAction
Entrées booléennes provenant des touches de clavier ou des boutons de souris/manette basiques via la propriété KeyCode de la liaison, ou une pression/déclenchement d'un GuiButton via la propriété UIButton de la liaison.
  • Événement Pressed :
    • true lorsqu'il est appuyé
  • Événement Released :
    • true lorsqu'il est relâché
  • Événement StateChanged :
    • true (appuyé) ou false (relâché)
Quantités d'entrée variables provenant d'entrées analogiques comme les déclencheurs de manette (ButtonL2/ButtonR2) via la propriété KeyCode de la liaison.

Pour connecter des événements pour le sprint simple d'un personnage :

  1. Insérez un nouveau Script dans l'arborescence CharacterSprint, aux côtés des diverses liaisons d'entrée. Puis définissez son RunContext sur Client et renommez-le en OnActivate.

  2. Collez le code suivant dans le script OnActivate. Notez la connexion d'événement Pressed sur les lignes 1315 qui double la vitesse de marche du personnage lorsque la liaison d'entrée de sprint est enfoncée, et la connexion d'événement correspondante Released sur les lignes 1618 qui réinitialise la vitesse de marche à la valeur par défaut lorsque la liaison d'entrée de sprint est relâchée.

    OnActivate (Script Client)

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local character = player.Character
    if not character or character.Parent == nil then
    character = player.CharacterAdded:Wait()
    end
    local humanoid = character:WaitForChild("Humanoid")
    local defaultWalkSpeed = humanoid.WalkSpeed
    local inputAction = script.Parent
    inputAction.Pressed:Connect(function()
    humanoid.WalkSpeed = defaultWalkSpeed * 2
    end)
    inputAction.Released:Connect(function()
    humanoid.WalkSpeed = defaultWalkSpeed
    end)
  3. Testez votre jeu et essayez l'action de sprint du personnage avec les liaisons que vous avez choisies précédemment : LeftShift pour le clavier, ButtonY pour la manette, et le SprintButton à l'écran pour les appareils tactiles. N'oubliez pas que vous pouvez utiliser l'Émulateur de contrôleur pour tester les entrées de manette directement dans Roblox Studio.

Changements de contexte

Une fois que vous avez un contexte d'entrée tel que PlayContext, vous pouvez l'activer/désactiver pendant le gameplay via le script, changer sa Priority pour déterminer quelles actions prennent priorité sur d'autres, et Sink les entrées pour qu'elles ne soient pas traitées dans des contextes de priorité inférieure.

  1. Pour faciliter le changement de contextes depuis d'autres scripts, insérez un nouveau BindableEvent dans votre dossier d'entrées à l'intérieur de ReplicatedStorage et renommez-le en ContextEvent.

  2. Créez un nouveau Script au même niveau, définissez son RunContext sur Client, et renommez-le en UpdateContext.

  3. À l'intérieur du script UpdateContext, collez le code suivant :

    UpdateContext (Script Client)

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    -- Connecter l'événement bindable
    contextEvent.Event:Connect(function(targetContext, enabled)
    local context = inputsFolder:FindFirstChild(targetContext)
    if context then
    context.Enabled = enabled
    print(context.Name .. ": " .. tostring(context.Enabled))
    else
    warn("InputContext non trouvé !")
    end
    end)
  4. Avec le script UpdateContext en place, vous pouvez maintenant mettre à jour un InputContext nommé en déclenchant l'événement bindable, par exemple depuis un LocalScript qui alimente un GuiButton à l'intérieur d'un conteneur ScreenGui.

    Script de Bouton

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    local button = script.Parent
    button.Activated:Connect(function()
    -- Déclencher l'événement bindable avec le contexte d'entrée cible et l'état activé
    contextEvent:Fire("PlayContext", true)
    end)

Liaisons par défaut

Roblox fournit des liaisons d'entrée par défaut pour le mouvement, le contrôle de la caméra et l'interaction de base avec l'environnement — les joueurs de Roblox sont familiers avec ces contrôles, vous ne devez donc les remplacer que dans des cas spécifiques. Notez également que les entrées réservées ne peuvent pas être remplacées et fonctionneront toujours avec leur objectif prévu.

ActionSouris/ClavierManetteTactile
Ouvrir le menu RobloxEscStart bouton (ButtonStart)N/A
Console développeurF9N/AN/A
Mode plein écran (Windows)
Afficher le bureau (Mac)
F11N/AN/A
Enregistrer une vidéo (Windows)F12N/AN/A
Prendre une capture d'écranPrintScreenN/AN/A
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.