Tutoriel de Scripting Visuel (Logic Bricks)
Créer une plateforme activée par un bouton
Lesson 8 of 10 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Dans cette leçon, nous allons explorer une nouvelle façon d'activer des événements dans le jeu.
Au lieu d'utiliser des objets collectables, nous allons créer un système basé sur des boutons qui doivent être activés par le joueur afin de libérer une plateforme ou d'exécuter une autre action.
Cet exemple est un peu plus avancé et nous aidera à pratiquer plusieurs concepts appris jusqu'à présent, tels que la communication entre Entités, l'utilisation de propriétés, de balises, et l'organisation de la logique visuelle.
Dans cette première partie, nous allons créer la logique de la plateforme et apprendre à utiliser les propriétés stockées directement dans la Scene.
C'est très utile lorsque vous devez partager des informations entre différentes Entités dans le jeu. Au lieu de stocker des données uniquement à l'intérieur d'une Entité, la Scene peut fonctionner comme un endroit centralisé où plusieurs systèmes peuvent lire et modifier les mêmes informations.
Dans cet exemple, les boutons augmenteront une valeur stockée dans la Scene, et la plateforme lira cette même valeur pour savoir quand tous les boutons ont été activés.
1. Création de la plateforme
Tout d'abord, comme nous l'avons appris dans les leçons précédentes, créons un nouveau Entity Template pour notre plateforme.
Configurez le Mesh qui sera utilisé comme représentation visuelle de la plateforme selon le style et les besoins de votre projet.
Ajoutez ensuite et configurez la collision, afin que le Joueur puisse interagir correctement avec la plateforme dans la scène.
Dans cet exemple, la plateforme n'aura pas besoin de balise ou de propriété spécifique, car la logique d'activation sera contrôlée par les autres éléments du système que nous créerons dans les étapes suivantes.

2. Création de la logique de la plateforme
Maintenant, créons un nouveau Logic Brick et liez-le à notre Entité plateforme.
À l'intérieur de ce Logic Brick, nous allons développer la logique responsable du comportement de la plateforme et de son interaction avec le reste du système.
Vous pouvez ajouter ce Logic Brick directement à l'Entité ou le configurer à travers le Template de la plateforme, de la même manière que nous l'avons fait dans les leçons précédentes.
Étant donné que cette plateforme est probablement quelque chose que vous pourriez vouloir réutiliser, la configurer à travers le Template est généralement une bonne option.

Tout d'abord, créons deux propriétés.
La première sera ajoutée au Logic Brick de la plateforme. Il s'agira d'une propriété Int appelée Buttons.
Cette propriété stockera plus tard le nombre total de boutons disponibles sur la carte.
Avec cette valeur, la plateforme sera en mesure de savoir combien de boutons existent et de comparer ce nombre à combien de boutons ont déjà été activés par le joueur.

La seconde propriété sera créée directement dans la Scene, afin que nous puissions y accéder facilement depuis différentes parties de la logique du jeu.
Pour ce faire, dans la 3D View, cliquez sur le ciel/fond de la scène pour sélectionner la Scene elle-même.
Ensuite, dans le panneau des Propriétés, vous devriez voir que le type d'objet sélectionné est Scene, avec le nom de la scène actuelle.
Cette propriété sera utilisée plus tard pour stocker et partager des informations globales.

Cliquez sur l'onglet Properties de la Scene et créez une nouvelle propriété appelée Button Count.
Cette propriété prendra plus de sens lorsque nous créerons les boutons, car les boutons seront responsables de changer sa valeur chaque fois qu'ils sont activés par le joueur.
Même si nous pouvons déjà la créer maintenant, car elle sera également utilisée bientôt par la logique de la plateforme.
En résumé :
- Buttons appartient à la plateforme et stocke combien de boutons existent.
- Button Count appartient à la Scene et stocke combien de boutons ont déjà été activés.

Maintenant que nous avons créé les deux propriétés, une dans la Scene et une dans le Logic Brick de la plateforme, commençons à développer la logique de la plateforme.
Retournez au Graph.
La première information dont nous avons besoin est le nombre total de boutons qui existent sur la carte.
Étant donné que cette valeur n'a besoin d'être calculée qu'une seule fois lorsque le jeu démarre, nous allons exécuter cette logique via On Start.
Tout d'abord, obtenez la Scene et utilisez le nœud qui cherche toutes les Entités avec la balise button.
Nous n'avons pas encore créé les boutons, mais nous pouvons déjà préparer cette logique car nous ajouterons cette balise plus tard.
Ensuite, utilisez le nœud Size pour obtenir le nombre d'Entités trouvées dans cette liste.
Cette valeur représente le nombre total de boutons présents dans la scène.
Enfin, stockez ce résultat dans la propriété Buttons de la plateforme en utilisant Set Buttons.

Maintenant, créons la logique responsable d'activer l'action de la plateforme après que tous les boutons aient été pressés.
Dans cet exemple, nous retirerons la plateforme de la scène, mais vous pouvez adapter cette logique pour faire n'importe quoi d'autre, comme déplacer la plateforme, jouer une animation, ouvrir un passage, activer un autre objet ou déclencher une cinématique.
Pour cette vérification, nous utiliserons On Update, en nous assurant que la condition est vérifiée en continu pendant que le jeu fonctionne.
Tout d'abord, obtenez la Scene et accédez à ses propriétés.
Puisque nous avons précédemment créé la propriété Button Count dans la Scene, nous pouvons y accéder via le nœud Get Properties, qui renvoie un dictionnaire contenant toutes les propriétés de la Scene.
Ensuite, connectez ce dictionnaire au nœud Get Property et indiquez le nom Button Count pour récupérer exactement la propriété que nous avons créée dans la Scene.
Par défaut, la sortie de Get Property est de type Any.
Puisque nous devons comparer cette valeur à la propriété Buttons de la plateforme, qui est un nombre entier, changez le type de sortie de Get Property en Int.
Ensuite, comparez cette valeur avec la propriété Buttons de la plateforme, qui stocke le nombre total de boutons disponibles sur la carte.
Si les deux valeurs sont égales, cela signifie que tous les boutons ont été activés par le joueur.
À ce moment-là, nous pouvons exécuter l'action souhaitée.
Dans cet exemple, nous retirerons l'Entité plateforme de la scène.

Parfait. La logique de notre plateforme est maintenant prête.
La plateforme est déjà capable d'identifier automatiquement, lorsque le jeu commence, combien de boutons existent sur la carte.
Cela nous donne la liberté d'ajouter ou de retirer des boutons de la scène sans avoir à modifier manuellement aucune valeur, car la logique recalculera la quantité chaque fois que le jeu démarre.
Avec cela, la plateforme peut déterminer dynamiquement quand tous les boutons ont été activés en comparant le nombre total de boutons avec la valeur stockée dans la propriété Button Count de la Scene.
Nous avons également préparé l'ensemble de la structure pour l'étape suivante, y compris l'utilisation de la balise button, qui sera ajoutée aux boutons plus tard.
Cela signifie que la communication entre les éléments est déjà planifiée :
- la plateforme compte combien de boutons existent
- chaque bouton mettra à jour la propriété de la Scene lorsqu'il est activé
- la plateforme vérifie la propriété de la Scene
- lorsque le compte correspond au total, la plateforme exécute son action
Nous sommes maintenant prêts à passer à l'étape suivante : créer les boutons et développer la logique qui les relie à la plateforme, complétant l'interaction entre ces deux systèmes.