🫵 Prise en main

🎯 Contexte

Pour ce tout premier exercice, nous allons prendre en main Godot en construisant un petit personnage, puis en le faisant bouger à l’écran.

Rien de compliqué, c’est juste pour découvrir l’éditeur, les noeuds, les scènes et un premier script.

Il est basé sur les assets libres de droit Shape Characters de Kenney.

Aperçu du résultat final
📌 Important

N’hésitez pas à me solliciter si vous êtes bloqués, si quelque chose n’est pas clair ou si vous avez besoin que je réexplique quelque chose. Ça pourrait être utile à tout le monde !

🔍 Découverte de l’éditeur

Pour commencer, lancez Godot et créez un projet. Son nom importe peu, notez juste l’endroit où il a été créé.

Création d’un projet

Une fois le projet créé et ouvert, prenez le temps de repérer les différentes zones de l’éditeur :

Les panneaux de l’éditeur
📝 Note

Si vous fermez ou déplacez un panneau par erreur, pas de panique : Editor > Editor Layout > Default remet tout en place.

🛠️ Exercices

📌 Important

Avant de commencer : téléchargez les assets, et extrayez-les dans le dossier du projet.

A. Construire le personnage

1. Créer la scène

Dans Godot, tout est une scène composée de noeuds. Nous allons créer la scène de notre personnage.

Arborescence du personnage
📝 Note

Une scène sauvegardée est un modèle réutilisable (comme un prefab dans Unity) : on peut l’utiliser dans d’autres scènes. Nous y venons juste après.

2. Ajouter un visage

📝 Note

L’ordre des noeuds dans l’arbre est aussi l’ordre d’affichage : un noeud placé plus bas dans l’arbre est dessiné par-dessus ceux qui sont au-dessus. Si le visage est caché derrière le corps, vérifiez qu’il est bien après Body dans l’arbre.

3. Créer la scène principale

Nous allons maintenant créer la scène qui contiendra notre jeu.

📌 Important

Vous devez voir votre personnage s’afficher dans la fenêtre. Si ce n’est pas le cas, vérifiez que les sprites ont bien une texture et qu’ils sont dans la zone visible de la fenêtre.

📝 Note

Qu’est-ce qu’une instance ?

La scène character.tscn est un modèle : un plan qui décrit à quoi ressemble un personnage. Quand on la glisse dans une autre scène, Godot crée une instance : un exemplaire concret de ce modèle, avec ses propres noeuds et ses propres valeurs.

On peut créer autant d’instances que l’on veut à partir d’un même modèle. C’est le même principe qu’un prefab et ses copies dans Unity.

Dans l’arbre de world.tscn, vous remarquerez que l’instance apparaît comme un seul noeud Character, et non comme Character avec ses enfants.

Les enfants sont bien là, ils sont juste cachés.

📝 Note

F5 lance la scène principale du projet, alors que F6 lance la scène actuellement ouverte.

Cela correspond aux boutons en haut à droite de l’éditeur.

B. Comprendre la hiérarchie

Les noeuds sont organisés en arbre : un noeud peut avoir des enfants. Voyons ce que ça implique.

📝 Note

Quand on déplace un parent, ses enfants suivent : leur position est exprimée relativement à celle de leur parent. C’est le principe des transformations hiérarchiques.

C. Faire bouger le personnage

1. Premier script

Pour l’instant, notre personnage ne bouge pas tout seul. Nous allons lui donner un comportement via un script.

📝 Note

La méthode _process est appelée automatiquement à chaque frame par le moteur, et son paramètre delta correspond au temps écoulé depuis la frame précédente (en secondes).

C’est l’équivalent de Update dans Unity.

🔥 Exemple

Voici une première version qui fait avancer le personnage vers la droite :

extends Node2D

func _process(delta: float):
    position.x += 100.0 * delta
📌 Important

En multipliant par delta, le personnage avance à la même vitesse quel que soit le nombre d’images par seconde de l’ordinateur. On décrit donc la vitesse en pixels par seconde.

⚠️ Attention

En GDScript, l’indentation (les tabulations en début de ligne) fait partie de la syntaxe : elle indique quelles lignes appartiennent à la fonction. Faites bien attention à la respecter !

Lancez le jeu : le personnage doit traverser l’écran.

2. ContrĂ´ler la vitesse

Pour changer la vitesse, il faut pour le moment modifier le script. Nous allons plutôt l’exposer dans l’inspecteur, grâce à une variable marquée @export.

🔥 Exemple

La syntaxe pour déclarer une variable exportée :

@export var <nom_de_la_variable>: <type_de_la_variable> = <valeur_par_défaut>

Dans notre cas, <type_de_la_variable> sera float.

📝 Note

L’annotation @export est équivalente au [SerializeField] de Unity.

3. Utiliser le clavier

Il est temps de prendre le contrôle du personnage : il doit avancer uniquement quand on appuie sur les flèches du clavier.

Godot propose des actions : des noms (comme ui_left) auxquels sont associées une ou plusieurs touches. Les actions ui_left et ui_right existent déjà dans tous les projets et sont liées aux flèches du clavier.

🔥 Exemple

La fonction Input.get_axis renvoie un nombre entre -1 et 1 :

var direction = Input.get_axis("ui_left", "ui_right")

Lancez le jeu et vérifiez que le personnage suit bien les flèches.

📝 Note

Nous créerons nos propres actions dans l’exercice suivant. Pour l’instant, on utilise celles fournies par Godot.

D. Plusieurs personnages

Grâce aux instances, on peut avoir autant de personnages que l’on veut à partir d’un seul modèle.

📌 Important

Vous n’avez écrit le script qu’une seule fois, et pourtant il s’applique à toutes les instances. Chacune a sa propre valeur de speed. C’est tout l’intérêt des scènes et des variables exportées.

Retournez dans la scène de character.tscn :

Que remarquez-vous ?

📝 Note

Quand vous modifiez un scène, toutes les instances sont mises à jour. En revanche, si vous modifiez une valeur dans l’inspecteur d’une instance (la vitesse par exemple), seule cette instance est modifiée.