Niveau 3: Input, on bouge enfin! --- Les Inputs "Legacy"

Nous y voilà enfin, le chapitre ultime ! C’est ici que vous allez enfin commencer à déplacer vos personnages ! Enfin presque, car avant cela, nous commencerons par un peu de théorie.

Préparez votre projet.

Pour partir sur une base commune, je vous invite à créer un nouveau projet 3D vierge utilisant le moteur physique URP. Dans ce projet, créez un script nommé "Move". Nous ferons nos tests avec ce script. N'oubliez pas de supprimer le fichier InputSystem créé par défaut, car dans ce chapitre, nous allons apprendre à créer et configurer notre propre fichier d'input selon nos besoins.

Qu'est-ce qu'un input ?

Pour que tout le monde soit sur la même longueur d’onde, voici une brève définition des inputs. En programmation, un input (ou entrée) fait référence aux données ou signaux que l'utilisateur envoie à un programme. Dans le contexte des jeux vidéo, et particulièrement avec Unity, l'input correspond aux actions réalisées par l'utilisateur, comme appuyer sur des touches de clavier, cliquer avec la souris, utiliser un joystick, etc.

Qu'est-ce qu'un Input de type Legacy ?

Dans Unity, il existe deux façons principales de gérer un input.

La première, appelée Legacy (ou ancien gestionnaire d’inputs), est la méthode la plus simple à utiliser, car elle repose principalement sur la classe Input. Cependant, elle est obsolète et peu pratique si vous souhaitez modifier les touches par la suite. De plus, Unity déconseille de l'utiliser pour les nouveaux projets. Bref, cela peut fonctionner, mais il existe de meilleures solutions.

La seconde méthode, plus récente, est appelée New Input System. Elle est un peu plus complexe à utiliser, mais elle permet de gérer plus facilement les mises à jour de votre code et Unity propose une interface pour vous aider à gérer vos inputs de manière plus flexible.

Pour ce cours, nous utiliserons principalement le New Input System, mais je vais tout de même vous présenter brièvement le système Legacy sur cette page, car vous pourrez un jour tomber sur des scripts qui l’utilisent.

Comment utiliser la classe Input ?

Dans votre script Move, ajoutez le code suivant, puis attachez-le à un objet et lancez l’éditeur en mode Play :

using UnityEngine;

public class Move : MonoBehaviour
{
    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            Debug.Log("Tu as appuyé sur W !!");
        }      
    }
}

Explication

Nous n'avons pas beaucoup utilisé la méthode Update() jusqu'à présent, donc voici une petite piqûre de rappel. Contrairement à Start(), qui ne s'exécute qu'une seule fois lors du lancement du script, la méthode Update() s'exécute plusieurs fois par seconde et en boucle. Cela lui permet de vérifier régulièrement si une condition est remplie.

La classe Input dispose de plusieurs méthodes permettant de vérifier si un input a été envoyé, et qui peuvent retourner un booléen. Dans notre exemple, nous utilisons Input.GetKeyDown(), qui renvoie true si la touche spécifiée (ici KeyCode.W) est pressée.

Un KeyCode est une valeur qui correspond à un identifiant unique pour chaque touche de clavier. Par exemple, KeyCode.W représente la touche "W" du clavier et correspond au nombre 119. Vous pourriez tout à fait remplacer KeyCode.W par le chiffre 119, mais en utilisant la méthode KeyCode, vous évitez d’avoir à mémoriser ces identifiants numériques, ce qui serait un enfer à mémoriser!

En résumé, lorsque vous appuyez sur la touche "W", votre ordinateur envoie le nombre 119 au programme. La classe Input lit ce nombre et vérifie si celui-ci correspond au paramètre spécifié, ici KeyCode.W.

Testez cela en lançant le jeu en mode Play. Remarque : Vous devez être dans la fenêtre Game pour que Unity puisse détecter vos inputs.

Les limites de la classe Input

Avec la classe Input, vous pouvez vérifier si une touche est enfoncée et exécuter une condition en conséquence. Là où cela devient compliqué, c'est si vous souhaitez que le joueur puisse configurer ses propres touches, ou si vous devez gérer plusieurs boutons pour la même action. Par exemple, configurer la barre d'espace et le bouton "X" d'une manette pour faire sauter le personnage. Dans ce cas, vous devrez coder deux lignes distinctes pour gérer ces différents inputs. Sans compter que certaines manettes, comme celles de marque Xbox, envoient des inputs différents pour un même bouton. Il faut donc prévoir toutes ces possibilités, ce qui peut rapidement devenir lourd à gérer.

C'est pour cela qu'il est fortement recommandé d'utiliser le New Input System d'Unity, car le code est bien plus facile à adapter et à maintenir.

Conclusion

Il n’est pas nécessaire de maîtriser l'ancienne méthode, mais il est utile de savoir qu’elle existe. Reconnaissez simplement que la classe Input est désormais obsolète !

Pour la suite de ce chapitre, nous allons seulement aborder le New Input System.

À bientôt pour la suite du cours !

Cette page ne contient pas de Fichier à Télécharger.

Les cours vous ont aidé et vous souhaitez à votre tour nous aider ?

- - - Vous pouvez partager le site avec vos connaissances, ainsi que le Discord. - - -

- - - Participer à la vie active du site et du Discord. - - -

- - - Faire un petit don pour nous aider à payer le serveur avec le lien ci-dessous. - - -

Buy Me a Coffee at ko-fi.com