Commencer
Tutoriels intermédiaires

Détecter l'entrée utilisateur

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

Relier l'entrée utilisateur aux actions offre aux utilisateurs un meilleur contrôle et une compréhension plus intuitive des fonctionnalités de votre expérience. Dans ce tutoriel, vous allez lier une action de rechargement à une touche spécifique.

Commencer

Ce tutoriel utilise l'outil Blaster créé dans Créer des outils de joueur. Vous pouvez suivre ces instructions pour créer l'outil ou bien télécharger le modèle Blaster et l'insérer dans StarterPack.

Les modèles peuvent être ajoutés à votre Inventaire pour être utilisés entre toutes les expériences. Pour ajouter un modèle à votre expérience :

  1. Dans un navigateur, ouvrez la page du modèle, puis cliquez sur le bouton Obtenir. Cela ajoute le modèle à votre inventaire.
  2. Depuis le menu Fenêtre de Studio ou la barre d'outils de l'onglet Accueil, ouvrez la Boîte à outils et sélectionnez l'onglet Inventaire.
  3. Assurez-vous que le menu déroulant est sur Mes modèles.
  4. Sélectionnez le modèle Blaster pour l'ajouter à l'expérience.

Créer un gestionnaire d'actions

Tout d'abord, vous aurez besoin d'une fonction pour gérer lorsque l'entrée utilisateur est détectée.

  1. Ouvrez le LocalScript de ToolController à l'intérieur du Blaster.

    Vue de l'Explorateur où le script ToolController à l'intérieur de l'outil Blaster est sélectionné

  2. Faites une variable pour stocker un nom pour l'action.


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  3. Créez une fonction nommée onAction qui reçoit trois arguments : actionName, inputState, et inputObject. Ce sera la fonction qui s'exécute lorsque l'entrée utilisateur est détectée.


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. À l'intérieur de la fonction, vérifiez que le actionName donné correspond au nom de l'action de rechargement et assurez-vous que inputState est UserInputState.Begin (l'état de début). C'est important car la fonction s'exécutera chaque fois que l'inputState change, mais le rechargement ne doit se produire qu'une seule fois.


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. Pour rendre évident lorsque l'utilisateur recharge, changez le TextureId de l'outil à "rbxassetid://6593020923" pendant un moment, puis changez-le en arrière à sa valeur originale de "rbxassetid://92628145".


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end

Lier l'action

ContextActionService peut être utilisé pour lier une fonction à une entrée spécifique en utilisant la fonction BindAction, qui accepte plusieurs arguments :

  • Le nom de l'action.
  • La fonction de gestion de l'action (également appelée "callback").
  • Si un bouton tactile doit être affiché ou non.
  • N'importe quel nombre de Enum.KeyCodes à détecter et à associer à l'action.

Les KeyCodes sont des valeurs qui représentent différents boutons d'entrée, comme les touches du clavier ou les boutons de contrôleur. Une liste complète des codes est disponible ici.

  1. Obtenez ContextActionService en haut du script.


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. À l'intérieur de la fonction toolEquipped, appelez BindAction et passez les arguments suivants :

    • Le nom de l'action (RELOAD_ACTION)
    • Le gestionnaire d'action (onAction)
    • Une valeur pour créer un bouton tactile (true)
    • Une pression de touche à détecter (Enum.KeyCode.R)

    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
  3. Testez le jeu en équipant l'outil et en appuyant sur la touche R de votre clavier. L'icône du sac à dos devrait momentanément changer en un symbole d'attente pour signaler que l'arme est en cours de rechargement :

Délier l'action

Lorsque l'utilisateur déséquipe l'outil, l'action doit être déliée afin qu'il ne puisse pas recharger sans que l'outil soit équipé.

  1. Créez une nouvelle fonction appelée toolUnequipped et appelez UnbindAction, en passant le nom de l'action.


    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  2. Connectez la fonction toolUnequipped à l'événement Unequipped afin que la fonction s'exécute lorsque l'événement est déclenché.


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Unequipped:Connect(toolUnequipped)
    tool.Activated:Connect(toolActivated)
  3. Testez le jeu pour confirmer que tout fonctionne correctement. Vous devriez être capable de recharger lorsque l'outil est équipé, mais pas lorsqu'il est déséquipé.

Votre animation de rechargement est maintenant complète - pour un défi supplémentaire, essayez de compter à rebours un compteur de munitions chaque fois que le blaster est tiré. Vous pourrez ensuite désactiver la fonction toolActivated lorsque l'arme n'a pas de munitions, puis la réactiver une fois l'animation de rechargement terminée.

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