IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Godot - Jeu de plateformes 2D

Objets à collectionner

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

 
Sélectionnez
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 :

 
Sélectionnez
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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2015 Andreas Esau. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.