Apprenez l'Input System avec des tutoriels mis à jour et notre exemple de projet, Warriors

KRISTYNA HOUGAARD / UNITY TECHNOLOGIESContributor
Nov 26, 2020|7 Min
Apprenez l'Input System avec des tutoriels mis à jour et notre exemple de projet, Warriors
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Avec l'Input System, vous pouvez rapidement configurer des commandes pour plusieurs plateformes, du mobile à la VR. Commencez avec nos exemples de projets et nos nouveaux tutoriels vidéo pour les débutants et les utilisateurs intermédiaires.

La saisie est au cœur de l'interactivité de vos projets en temps réel. Le système d'entrée d'Unity standardise la manière dont vous mettez en œuvre les contrôles et offre de nouvelles fonctionnalités avancées. Il est vérifié pour Unity 2019 LTS et les versions plus récentes (voir la documentation pour une liste complète des périphériques d'entrée pris en charge).

Nos nouveaux tutoriels peuvent vous aider à démarrer rapidement, même si vous êtes totalement novice en matière de développement pour plusieurs plateformes. Si vous êtes déjà familiarisé avec les flux de travail, découvrez comment utiliser l'Input System pour piloter d'autres outils Unity comme Cinemachine ou Unity UI avec Warriors, notre principal projet d'exemple.

Cette session "Meet the Devs" du mois de mars explique pourquoi nous avons créé ce nouveau système et comprend une démo qui décrit les flux de travail pour configurer le Multiplayer local, ajouter rapidement des contrôles au gamepad, faire apparaître de nouveaux joueurs et mettre en place des contrôles mobiles. Rene Damm, développeur principal de l'Input System, répond également aux questions du public sur l'outillage et la feuille de route de l'équipe.

Roll-a-Ball : Input System pour les débutants

Si vous êtes un débutant et que vous souhaitez simplement vous familiariser avec les flux d'entrée de base pour Unity, consultez le projet Roll-a-Ball mis à jour sur Unity Learn. Il vous guide à travers les premières étapes telles que l'installation du package Input System, l'ajout d'un composant d'entrée de lecteur et l'application de données d'entrée au lecteur.

Image du projet Roll-a-Ball sur Unity Learn
La série des prototypes : Contrôler un vaisseau spatial
Image tirée de la série Prototype : Contrôler un vaisseau spatial

Notre série de prototypes utilise également l'Input System, comme vous pouvez le voir dans cette vidéo et cet exemple de projet sur la création d'un boss avec une animation procédurale. La ressource d'action du vaisseau spatial utilise la saisie pour les commandes de mouvement, le tir de projectiles laser et l'augmentation de la vitesse.

Guerriers : Intégrations intermédiaires et scénarios de jeu

Warriors est un projet qui démontre l'utilisation d'outils et d'API plus intermédiaires avec l'Input System dans une configuration typique de jeu multiplateforme local à la troisième personne. Elle est disponible pour Unity 2019 LTS et sera mise à jour pour la version 2020 LTS lors de sa sortie l'année prochaine. Vous pouvez télécharger le projet sur GitHub, où nous avons trois branches disponibles :

  • La V1 reflète l'état du projet au moment de la session "Meet the Devs" mentionnée ci-dessus ;
  • C'est la V2 que nous avons utilisée pour la dernière session de l'Input System Unite Now (voir ci-dessous) ;
  • Nous poursuivons notre travail au sein de la branche " Master".

Le projet s'articule autour de personnages qui peuvent être contrôlés en mode solo et en mode Multiplayer local. Lorsque le gestionnaire de jeu est réglé sur Local Multiplayer, il instancie plusieurs instances du préfabriqué Warrior. Comme le préfabriqué Warrior est configuré pour utiliser le composant Player Input System, chaque instance du Warrior sera automatiquement associée à un périphérique d'entrée connecté.

Schémas de contrôle

Le système de contrôle de ce Warrior est conçu pour une utilisation multiplateforme et bascule automatiquement entre le clavier et les différentes manettes de jeu. Cette configuration fournit un exemple d'application d'un lissage aux données d'entrée brutes afin que le mouvement directionnel du personnage soit uniforme, quel que soit l'axe d'entrée (touches du clavier ou joystick du gamepad) utilisé par le joueur. Le schéma de contrôle suivant utilise également une pression sur un bouton pour une animation d'attaque de base.

Image de Input Actions

La ressource d'action d'entrée du guerrier est également configurée pour deux cartes d'action différentes : l'une pour contrôler le personnage (courir et attaquer), et l'autre pour contrôler l'entrée dans le menu. Un jeu ou tout autre projet interactif comporte généralement différents états avec des exigences de contrôle différentes qui partagent les mêmes liaisons d'entrée.

Par exemple, si vous poussez un joystick dans une direction, le Warrior se dirigera vers cet axe. Cependant, lorsque le jeu est en pause, le joueur peut utiliser le joystick pour naviguer entre les différents boutons et options sélectionnables dans le menu de pause.

Grâce à l'Input System, vous pouvez facilement mettre en place différentes cartes d'action pour divers scénarios de contrôle et les modifier, par composant PlayerInput, au moment de l'exécution, à l'aide d'une API simple :

playerInput.SwitchCurrentActionMap(stringForMapName) ;

Interagir avec l'interface utilisateur

Une fois que vous avez mis en place un plan d'action pour interagir avec l'interface utilisateur, les actions peuvent être assignées au module d'entrée de l'interface utilisateur du système d'événements :

Titre

Dans le projet Warriors, chaque joueur peut mettre le jeu en pause et interagir avec le menu de pause. L'interface utilisateur superposée se compose de quelques boutons d'option et d'un panneau de changement de contexte sur la droite. Le module Input System UI Input applique les actions assignées à l'interaction avec n'importe quel composant Unity UI dont l'option Interactable est activée (comme les boutons et les curseurs).

Titre

Cette interaction avec l'interface utilisateur sera isolée pour le joueur qui a appuyé sur pause. Par exemple, si le joueur 3 met le jeu en pause, les joueurs 1 et 2 ne pourront pas interagir avec lui et seul le joueur 3 aura le contrôle. Lorsque le joueur 3 interrompt le jeu, toutes les commandes du joueur reprennent. Pour ce faire, nous appelons les méthodes suivantes sur un composant PlayerInput :

playerInput.ActivateInput() ;

playerInput.DeactivateInput();

Rebinding en cours d'exécution

Dans le menu de l'interface utilisateur, il y a un panneau contextuel pour les contrôles de rebond d'exécution. Cela vous permet d'effectuer un rebond interactif pour une action d'entrée spécifique et de lui attribuer une nouvelle liaison d'entrée. Par exemple, si vous utilisez une manette PlayStation, vous pouvez lier l'action d'attaque du bouton Croix à un autre bouton d'entrée tel que Triangle ou R2.

Images d'une application en pause

Ce rebind s'applique en tant qu'override à un composant PlayerInput spécifique. Par exemple, le joueur 2 pourra associer son bouton d'attaque à un autre bouton, mais cela n'affectera pas l'utilisation par le joueur 3 de son action d'entrée d'attaque.

L'API pour la mise en place d'un rebind interactif contient également une opération pour la fin du rebind. Cela vous permet de mettre en place votre propre contrôle lors de la mise à jour de l'interface utilisateur, de la sauvegarde de l'état du jeu ou de la modification de tout autre élément du jeu en fonction de cet événement.

private InputActionRebindingExtensions.RebindingOperation rebindOperation;

    void StartInteractiveRebind()
    {
        rebindOperation = inputAction.PerformInteractiveRebinding().OnComplete(operation => RebindCompleted());
        rebindOperation.Start();
    }

    void RebindCompleted()
    {
        rebindOperation.Dispose();

        //Apply UI Changes (IE: New Binding Icon)
    }
Input System et Cinemachine

Outre l'intégration de l'Input System avec le système d'événements et l'Unity UI, le projet Warriors montre également comment il peut être configuré pour fonctionner de concert avec Cinemachine. Une configuration de caméra typique pour un jeu à la troisième personne comprend une caméra de suivi en orbite dont la direction de vue est définie par la position de la souris ou la direction de la poussée du joystick. Le composant Input Provider de Cinemachine peut être ajouté à un dispositif de caméra Free Look de Cinemachine, ce qui permet à une action Input d'envoyer des données d'axe Vector 2 directement dans les valeurs de contrôle d'axe de Cinemachine. Dans l'image ci-dessous, vous pouvez voir que le CinemachineInputProvider utilise les données d'entrée de l'action Look Input.

Image d'un exemple de projet, Warrors
Les API de l'Input System : Afficher les données à l'aide d'un exemple d'interface utilisateur

L'Input System contient également diverses API permettant à d'autres systèmes d'accéder à des données au moment de l'exécution, qui peuvent être affichées dans l'interface utilisateur ou d'autres éléments visuels. Le projet d'exemple Warriors utilise les données de Player Input pour afficher des informations telles que l'appareil du joueur en cours, l'ID de l'entrée du joueur ou même pour mettre à jour les contrôles de rebind basés sur l'interface utilisateur sur le binding en cours. Nous avons créé un système personnalisé qui prend les chaînes de l'appareil et de la liaison et renvoie une icône spécifique.

Par exemple, si le joueur utilise une manette Xbox et que l'action Attaque est liée au bouton contextuel Nord, l'icône du bouton Y s'affichera. Cependant, si le joueur utilise un clavier, il affichera une chaîne de caractères pour la touche du clavier actuellement liée. Vous pouvez extraire et utiliser cet outil de configuration de l'affichage des appareils dans vos propres projets.

Exemple d'image de projet
Exemples et documentation du paquet Input System

Le paquet Input System contient également plusieurs échantillons supplémentaires que vous pouvez explorer dans le gestionnaire de paquets. Vous pouvez les utiliser comme référence et les étendre ou les adapter à vos propres projets. Vous y trouverez également la documentation officielle, y compris ce guide de démarrage rapide.

À venir : Input System 1.1

Input System 1.1 est actuellement en avant-première, et apporte de nombreuses corrections et quelques améliorations. Vous pouvez désormais enregistrer et charger les rebinds au format JSON (voir l'exemple de script RebindSaveLoad.cs) et Les layouts de périphériques peuvent désormais être précompilés, ce qui réduit considérablement le temps d'instanciation et le coût du tas du garbage collection (GC) pour ces périphériques.

Vous cherchez plus de contenu ? Tenez-nous au courant !

Nous espérons que l'exemple de projet et les autres supports d'apprentissage vous aideront à commencer à utiliser l'Input System pour donner vie à vos idées. N'hésitez pas à nous faire part de ce que vous souhaitez apprendre ensuite dans la section des commentaires ci-dessous. Gardez également un œil sur la page Input System pour d'autres tutoriels et d'autres ressources.