Les plateformes mobiles ¶

Introduction¶
Dans bien des jeux de type plateforme, les plateformes mobiles sont un élément essentiel pour créer des niveaux intéressants et stimulants. Dans cette leçon, nous allons apprendre à créer une plateforme mobile qui se déplace de manière fluide entre deux positions.
Il y a plusieurs façons de créer des plateformes mobiles dans Godot.
- Utiliser un
AnimationPlayerpour animer les déplacements- Désavantage : Les animations sont fixes et ne peuvent pas être facilement modifiées.
- Utiliser un
Tweenpour créer des transitions entre les positions - Calculer les déplacements en fonction du temps.
- Utiliser les noeuds
Path2Dpour définir des trajectoires de déplacement.
Dans cette leçon, nous allons utiliser une Tween pour créer une plateforme mobile.
Noeud AnimatableBody2D¶
Un noeud qui facilite la création de plateformes mobiles est AnimatableBody2D. Ce nœud est similaire à CharacterBody2D, mais avec des fonctionnalités de mouvement animables. Il permet de gérer des objets mobiles avec des interactions physiques, tels que des plateformes ou des personnages, tout en conservant des mouvements interpolés.
Il nécessite un CollisionShape2D pour détecter les collisions et idéalement un noeud qui permet d'afficher l'image de la plateforme qui peut être un sprite ou un autre type de noeud. J'utilise dans mon exemple initial un Sprite2D pour afficher la plateforme.

Ajouter une plateforme¶
- Dans la scène principale, ajoutez la scène de la plateforme que vous avez créée.
- Exécutez la scène principale.

Corriger l'ordre de rendu¶
Si le joueur apparaît derrière la plateforme, vous pouvez ajuster l'ordre de rendu en modifiant la propriété Z Index du noeud joueur. Il suffit de mettre une valeur plus élevée que celle de la plateforme. Dans mon cas, j'ai mis 5 pour le joueur.
Collision à sens unique¶
Pour permettre au joueur de sauter à travers la plateforme mobile, vous pouvez activer la propriété One Way Collision du CollisionShape2D de la plateforme. Cela permet au joueur de monter sur la plateforme depuis le bas, mais empêche de tomber à travers lorsqu'il est dessus.
Ajouter le déplacement avec un AnimationPlayer¶
Pour animer la plateforme, vous pouvez utiliser un AnimationPlayer pour créer une animation qui déplace la plateforme entre deux positions. Voici comment faire :
- Ajoutez un noeud
AnimationPlayeren tant qu'enfant de votre plateforme. - Dans l'éditeur d'animation, créez une nouvelle animation.
- Ajoutez une clé pour la propriété
positionde la plateforme au début de l'animation. - Déplacez la plateforme à la position souhaitée et ajoutez une clé pour la propriété
positionà la fin de l'animation. - Réglez la durée de l'animation selon vos besoins.
- Activez l'option de boucle pour que l'animation se répète indéfiniment en aller-retour.
- Activez l'animation en tant qu'animation par défaut.
- Exécutez la scène principale.

Matière optionnelle¶
Qu'est-ce qu'un Tween ?¶
Les Tweens (diminutif de "in-betweens") trouvent leur origine dans l'animation traditionnelle, où ils désignent les images créées entre des images clés pour produire un mouvement fluide. Ce concept est devenu populaire avec des outils numériques comme Adobe Flash, où le tweening permettait aux animateurs de créer facilement des transitions douces pour des propriétés comme la position, la rotation, l’échelle ou la couleur. Flash a introduit différents types de tweens (tels que les shape tweens et motion tweens) pour simplifier l'animation des objets au fil du temps.
- Définition : Un Tween est un objet ou une technique utilisée pour créer une transition fluide entre deux valeurs de propriétés (position, rotation, échelle, opacité, etc.).
- Interpolation : Les Tweens interpolent progressivement entre des valeurs initiales et finales sur une période définie.
- Utilité :
- Animation d'objets : Déplacement ou rotation d'objets de manière fluide.
- Transitions de propriétés : Modifier des propriétés visuelles telles que la couleur ou l’opacité.
- Facilite l'animation : Simplifie la gestion des animations sans créer de multiples étapes manuelles.
- Modes de traitement : Peut être utilisé dans les processus physiques ou indépendamment du temps de simulation.
On peut utiliser les tweens avec le concept fire-and-forget : on crée un tween, on le lance, et on n'a plus besoin de s'en soucier. Le tween s'occupe de lui-même et s'arrête automatiquement une fois qu'il a terminé.
Exemple de code¶
Voici le code qui est derrière la plateforme mobile dans l'animation initiale.
Explication des Principales Lignes¶
- Ligne 1-2 :
offsetdétermine la distance de déplacement de la plateforme à partir de la position initiale, etdurationcontrôle la durée de l’animation.
- Fonction
start_tween:- Crée une
Tweendans la racine de l'arbre de scène et active le mode de traitement physique set_loops().set_parallel(false): Indique que doit être exécuté en boucle et en série. En effet, on peut avoir plusieurs animations en parallèle.- Deux déplacements sont définis :
- Déplacement vers
offsetpendant la première moitié de la durée. - Retour à la position initiale pendant la durée entière.
- Déplacement vers
- Crée une
Cette structure permet de créer une plateforme mobile avec des transitions fluides entre les positions définies.
Les méthodes d'intérêt de la classe Tween¶
Plusieurs méthodes de la classe Tween peuvent être utilisées pour créer des animations plus complexes :
| Méthode | Description | Exemple |
|---|---|---|
tween_property |
Anime une propriété d'un objet | tween.tween_property($Sprite2D, "position", offset, duration / 2) |
tween_method |
Appel une méthode d'un objet en fournissant des propriétés tweener | tween.tween_method($Sprite2D, "set_position", offset, Vector2.ZERO, duration) |
tween_callback |
Appel une fonction de rappel à la fin de l'animation | tween.tween_callback(self, "_on_tween_completed") |
set_loops() |
Définit le nombre de boucles de l'animation. | tween.set_loops(2) |
set_parallel() |
Définit si les animations doivent être exécutées en parallèle. | tween.set_parallel(true) |
set_trans() |
Définit la fonction d'interpolation utilisée pour l'animation | tween.set_trans(Tween.TRANS_SPRING) |

Il y a plusieurs autres méthodes qui peuvent être intéressantes pour votre projet. Je vous suggère d'aller voir la documentation officielle pour plus d'informations.
Conclusion¶
Les Tween peuvent être utilisés pour créer des effets intéressants pour votre projet. Je vous encourage à explorer les différentes méthodes et options disponibles adaptées à vos besoins.