I. Sommaire▲
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Godot Engine - Jeu de plateformes 2D - Objets à collectionner
III. Résumé▲
Dans cet épisode, nous allons ajouter des objets à collectionner.
III-A. Création de l'objet▲
Nous démarrons une nouvelle scène (sous-scène) pour créer notre objet. Celle-ci, en plus du nœud racine « Node2D » contient un nœud « Sprite » et un nœud « AnimationPlayer ». L'animation permet de rendre l'objet dynamique. Finalement, nous ajoutons un nœud « Area2D » contenant un nœud « CollisionShape2D » pour déterminer la zone de collision de l'objet.
L'animation ne consiste qu'en la modification de la position verticale de l'objet et sa rotation sur lui-même. Pour donner un meilleur effet sur le mouvement de l'objet, vous pouvez modifier la transition de l'animation pour la définir en « Out-In ».
III-A-1. Script▲
Dans le script associé à notre objet, nous ajoutons une variable exportée « value » déterminant le nombre de points que donne l'objet au joueur.
Dans la fonction _ready(), nous vérifions le propriétaire du nœud avec get_owner(). La fonction devrait retourner le nœud du niveau où est intégré l'objet. Ainsi, en utilisant ce nœud, nous pouvons incrémenter le compteur du script du niveau.
Voici le code :
extends Node2D
export var value =
1
func _ready
(
):
if
get_owner
(
) !=
null:
get_owner
(
).gears_total +=
value
Ensuite, nous connectons le signal body_enter() provenant du nœud « Area2D » à une fonction collect_gear() de ce script :
extends Node2D
export var value =
1
func _ready
(
):
if
get_owner
(
) !=
null:
get_owner
(
).gears_total +=
value
get_node
(
"Area2D"
).connect
(
"body_enter"
,self,"_collect_gear"
)
func _collect_gear
(
body):
if
get_owner
(
) !=
null:
get_owner
(
).gears_collected +=
value
queue_free
(
)
Lorsque l'objet est ramassé, cela incrémente le compteur dans le nœud propriétaire de l'objet, puis supprime l'objet avec queue_free().
III-A-2. Animation de collecte▲
Il est possible d'ajouter une animation pour la collecte de l'objet. L'animation contrôlera la disparition de l'objet avec la propriété « opacity » et à la fin de celle-ci, appellera la fonction queue_free().
III-B. Intégration dans le niveau▲
Pour suivre le nombre d'objets collectionnés ainsi que le nombre d'objets dans le niveau, nous ajoutons un script que nous attachons à la racine du niveau.
III-C. Interface utilisateur▲
Finalement, nous ajoutons un nœud « Label » dans le niveau. La fonction set_text() permet de modifier le texte du label à partir du script.
IV. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.