FIXME Cette page est entièrement traduite. Veuillez cependant corriger toutes les erreurs et les éventuelles imprécisions. (supprimer ce paragraphe une fois les modifications terminées)

⬅️ Étape précédente : 9. Ajout de bombes
➡️ Étape suivante : 11. Jeu terminé

10. Plus de vies

Avec des vies supplémentaires, le joueur ne sera pas immédiatement pénalisé par un jeu terminé (Game over) lorsqu'il est touché par une bombe au lieu de l'être par une forme. Cette collision ne sera plus fatale mais supprimera une vie parmi celles disponibles, nombre que nous allons définir à 3.

Ce sera également une bonne occasion d'utiliser des des extensions, qui ont l'avantage de faire que nous n'avons pas besoin de tout créer nous-mêmes.

Saviez-vous que les extensions sont également faites d'événements ? Vous pouvez inspecter la façon dont elles sont construites et fonctionnent en cliquant sur l'une d'entre-elles dans le gestionnaire de projets et en inspectant ses comportements, qui sont composés d'événements pour créer les conditions et les actions du comportement.

Cliquez sur l'icône Project manager (Gestionnaire de projet) qui se trouve dans le coin supérieur gauche de l'éditeur.

Cette action ouvre un panneau où la barre de recherche est dans le bas. Cliquez sur Search for new extensions (Rechercher de nouvelles extensions).

L'extension que nous recherchons s'appelle life (la vie).

Cette extension contient un behavior (comportement) appelé Health (Santé), que nous pouvons ensuite manipuler dans le jeu pour gérer la vie d'un objet. Cliquez sur INSTALL IN PROJECT (Installer dans le projet) pour pouvoir l'utiliser.

Les comportements (behaviors) permettent d'ajouter de nouvelles fonctionnalités et de la logique aux objets. Elles sont utiles pour créer des objets en assemblant quelques comportements que l'on peut ensuite manipuler avec des événements.

Pendant que nous y sommes, ajoutons une autre extension utile : Flash. Lorsque le monstre est touché par une bombe et perd une vie, nous le faisons cligner des yeux pendant une courte période pour donner au joueur des informations supplémentaires sur ce qui s'est passé.

Installez-le également.

Maintenant que nous avons installé les deux extensions, elles doivent être répertoriées dans le panneau de gauche, sous Functions/Behaviors (Fonctions/Comportements).

Cliquez sur l'onglet LEVEL1 pour revenir dans l'éditeur de scène puis, dans le panneau de droite Objects, double-cliquez sur Monster, ce qui ouvre une fenêtre contextuelle.

Dans celle-ci, cliquez sur l'onglet BEHAVIORS (Comportements), car nous voulons ajouter ces comportements à l'objet …

… en cliquant sur Add a behavior to the object.

Les deux extensions personnalisées que nous venons d'ajouter doivent être répertoriées dans la fenêtre Ad a new behavior to the object et disponibles pour utilisation. Cliquez sur l'extension Health.

Nous fixons Damage cooldown (Temps de recharge des dégâts) à 0,8 secondes (durée pendant laquelle le monstre touché est indestructible afin qu'il ne soit pas immédiatement touché à nouveau par une autre bombe), Health (Santé) à 3 (nombre actuel de vies), et Maximum health (Santé maximale)n aussi à 3 (le monstre aura donc trois vies au total).

Cliquez finalement sur Add behavior to the object (Ajouter un comportement à l'objet) pour en activer un autre.

Ce second comportement est Flash.

Le paramètre Half period (demi-période) spécifie la durée pendant laquelle l'objet est invisible, et nous allons la fixer à 0,1 secondes. Dans le champ juste en dessous, vous pouvez voir le comportement Health que nous avons entré précédemment. Cliquez sur APPLY pour les enregistrer.

Cliquez maintenant sur l'onglet Level1 (Events), puis sur le label Collision (un commentaire) pour vous assurer que c'est bien celui qui est actif. Dans le menu en haut à droite, cliquez sur l'icône Choose and add an event (Choisir et ajouter un événement), puis sur For each object (Pour chaque objet) dans la liste déroulante qui s'est ouverte.

Cela nous permet d'avoir la condition spécifique Repeat for each Obstacle object (Répéter pour chaque objet Obstacle).

Cliquez sur Add condition. Sélectionnez Obstacle, Collision et Monster puis cliquez OK. De cette façon, les bombes entreront en collision avec le monstre, et nous pourrons soustraire le nombre actuel de vies lorsque cela se produira.

Toujours pour Obstacle, sélectionnez l'action Delete an object (Supprimer un objet) pour supprimer la bombe. Chaque fois qu'une bombe frappe le monstre, elle est supprimée du jeu.

Une autre action va être utilisée pour que le monstre soit endommagé par la bombe. Cliquez sur Add action. Sélectionnez Monster, Damage the object (Endommager l'objet), en entrez 1 dans le champ Value of the damage to do (Valeur du dommage). Cela signifie que chaque fois que la bombe frappe le monstre, il perd une vie.

Dans l'onglet OTHER ACTIONS, ajoutons un son différent lorsque cela se produit. Sélectionnez Audio, Play a sound (Jouer un son), et Choose a new audio file (Choisir un nouveau fichier audio) pour ouvrir la fenêtre de l'explorateur de fichiers.

Sélectionnez le fichier kill.wav et ouvrez-le pour l'ajouter au projet.

Assurez-vous que le nom du fichier est bien là puis cliquez OK.

Bien que les événements fonctionnent, ils ne font que changer la vie du monstre en mémoire. Affichons donc un compteur de vie à l'écran !

Cliquez sur l'onglet LEVEL1, puis dans la liste Objects sur Add a new object (Ajouter un nouvel objet).

Faites-en un autre Sprite.

Le nom de l'objet Object Name: est Life, l'animation Animation #0 s'appelle Life3 (puisque l'état initial de l'animation a trois vies), puis ajoutez l'image avec 3 cœurs.

Répétez l'opération pour l'animation Life2

… et encore une fois pour Life1.

Le dernier est Life0 (sans images) lorsque toutes les vies sont perdues. Appliquez (APPLY) les modifications.

Faites glisser et déposez l'objet Life sur la scène et placez-le dans le coin supérieur droit. Nous verrons au chapitre suivant comment animer cet objet en créant un écran game over lorsqu'il atteindra zéro.

⬅️ Étape précédente : 9. Ajout de bombes
➡️ Étape suivante : 11. Jeu terminé