Godot - Jeu de plateformes 2D

Les scripts

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 - Les scripts


III. Résumé

Dans cet épisode, nous allons découvrir comment ajouter des comportements aux nœuds de notre scène à l'aide des scripts. Ainsi, nous pourrons déplacer le carré bleu à l'aide des touches du clavier.

III-A. Les scripts

Lorsque Godot crée un script, il le remplit avec le code suivant :

 
Sélectionnez
extends Node2D # Cette partie varie suivant le nœud auquel vous attachez votre script

# les variables membres vont ici, exemple :
# var a=2
# var b="textvar"

func _ready():
    # Initialisation
    pass

La fonction _ready() est appelée lorsque le nœud auquel le script est attaché est inséré dans la scène.

III-B. Afficher le nom du nœud

Pour afficher du texte dans la console, vous pouvez utiliser la fonction print(). Pour récupérer le nom de l'objet actuel, vous pouvez utiliser la fonction get_name().

 
Sélectionnez
extends RigidBody2D

func _ready():
    print(get_name))

III-C. Afficher la vélocité du RigidBody2D

Pour récupérer la vélocité d'un « RigidBody2D », nous pouvons utiliser get_linear_velocity(). Toutefois, si nous affichons la vélocité dans la fonction _ready(), la vélocité ne s'affichera qu'une seule fois, lors de l'instanciation du nœud. Cela n'est pas utile et en plus cela affichera toujours 0,0.

III-C-1. Les fonctions de processus

Godot permet d'activer deux fonctions qui seront appelées à intervalles réguliers :

  • _process() : appelée à chaque frame. L'appel à la fonction s'active avec set_process(true) ;
  • _fixed_process() : appelée à chaque mise à jour par le moteur physique. L'appel à la fonction s'active avec set_fixed_process(true).

Comme nous souhaitons afficher la vélocité, qui est liée aux mises à jour de la physique du jeu, nous faisons notre appel dans la fonction _fixed_process() :

 
Sélectionnez
extends RigidBody2D

func _ready():
    set_fixed_process(true)

func _fixed_process(delta) :
    print(get_linear_velocity())

III-D. Déplacer le joueur

Maintenant, pour déplacer le joueur, il suffit d'appeler la fonction modifiant la vélocité : set_linear_velocity().

 
Sélectionnez
extends RigidBody2D

func _ready():
    set_fixed_process(true)

func _fixed_process(delta) :
    set_linear_velocity(Vector2(200,get_linear_velocity().y))

III-E. Déplacer le jouer avec les touches fléchées

Godot utilise un système d'actions qui peuvent être déclenchées par l'appui des touches. Le code ne doit pas vérifier directement l'appui sur les touches, mais le déclenchement des actions. Ainsi, vous pouvez obtenir un code simple, tout en gérant plusieurs configurations d'entrées utilisateur.

III-E-1. Définir une action

Les actions se définissent dans les propriétés du projet (« Project Settings »), dans l'onglet « Input Map».

III-E-2. Détecter le déclenchement d'une action

Pour détecter si une action est déclenchée, nous utilisons Input.is_action_pressed(). Si la valeur retournée est true, alors l'action est déclenchée.

 
Sélectionnez
extends RigidBody2D

func _ready():
    set_fixed_process(true)

func _fixed_process(delta) :
    var btn_right = Input.is_action_pressed("btn_right")
    var btn_left = Input.is_action_pressed("btn_left")
    
    if btn_left:
        set_linear_velocity(Vector2(-200,get_linear_velocity().y))    
    elif btn_right:
        set_linear_velocity(Vector2(200,get_linear_velocity().y))
    else:
        set_linear_velocity(Vector2(0,get_linear_velocity().y))

III-F. Rendre disponible une variable dans l'inspecteur

Vous pouvez faire apparaître les variables globales de vos scripts dans l'inspecteur, grâce au mot clé export :

 
Sélectionnez
export var player_speed = 200

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 et 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.