Création de la scène joueur¶
Avec les paramètres du projet en place, nous pouvons commencer à travailler sur le personnage contrôlé par le joueur.
La première scène définira l'objet Player
. L'un des avantages de la création d'une scène Player séparée est que nous pouvons la tester séparément, avant même d'avoir créé d'autres parties du jeu.
Structure des nœuds¶
Pour commencer, nous devons choisir un nœud racine pour l'objet joueur. En règle générale, le nœud racine d'une scène doit refléter la fonctionnalité souhaitée de l'objet - ce que l'objet est. Cliquez sur le bouton "Other Node" et ajoutez un nœud Area2D à la scène.
Godot affichera une icône d'avertissement près du nœud dans l'arbre de scène. Vous pouvez l'ignorer pour le moment. Nous y reviendrons plus tard.
Avec Area2D
, nous pouvons détecter les objets qui chevauchent ou rentrent en collision le joueur. Changez le nom du nœud en Player
en double-cliquant sur son nom. Maintenant que nous avons défini le nœud racine de la scène, nous pouvons ajouter des nœuds supplémentaires pour lui donner plus de fonctionnalités.
Avant d'ajouter des enfants au nœud Player
, nous voulons nous assurer de ne pas les déplacer ou les redimensionner accidentellement en cliquant dessus. Sélectionnez le nœud et cliquez sur l'icône à droite du cadenas ; son info-bulle indique "Rendre la sélection des enfants de l'objet impossible."
Sauvegardez la scène. Cliquez sur Scène -> Enregistrer la scène, ou appuyez sur Ctrl + S sous Windows/Linux ou Cmd + S sous macOS.
Note
Pour ce projet, nous suivrons les conventions de nommage de Godot.
GDScript : Les classes (nœuds) utilisent PascalCase, les variables et les fonctions utilisent snake_case, et les constantes utilisent ALL_CAPS (Voir Guide de style GDScript).
C# : Les classes, les variables d'exportation et les méthodes utilisent PascalCase, les attributs privés utilisent _camelCase, les variables locales et les paramètres utilisent camelCase (Voir Guide de style C#). Attention à taper les noms des méthodes précisément lorsque vous connectez des signaux.
Animation du sprite¶
Cliquez sur le nœud Player
et ajoutez un nœud AnimatedSprite comme nœud enfant. AnimatedSprite
s'occupera de l'apparence et des animations pour notre joueur. Notez qu'il y a un symbole d'avertissement à côté du nœud. Un AnimatedSprite
nécessite une ressource SpriteFrames, qui contient la liste des animations qu'il peut afficher. Pour en créer une, trouvez la propriété Frames
dans l'Inspecteur et cliquez sur "[vide]" -> "Nouveau SpriteFrames". Cliquez à nouveau pour ouvrir le panneau "SpriteFrames" :
A gauche, vous trouverez une liste d'animations. Cliquez sur "default" et renommez-la en "walk". Cliquez ensuite sur le bouton "New Animation" pour créer une deuxième animation nommée "up". Trouvez les images du joueur dans l'onglet "Système de fichiers" - elles se trouvent dans le dossier art
que vous avez décompressé plus tôt. Faites glisser les deux images pour chaque animation, nommées playerGrey_up[1/2]
et playerGrey_walk[1/2]
, dans le côté "Animation Frames" du panneau pour l'animation correspondante :
Les images du joueur sont un peu trop grandes pour la fenêtre de jeu, nous devons donc les réduire. Cliquez sur le nœud AnimatedSprite
et réglez la propriété Scale
sur (0.5, 0.5)
. Vous pouvez la trouver dans l'Inspecteur sous la catégorie Node2D
.
Enfin, ajoutez un CollisionShape2D en tant qu'enfant de Player
. Ceci déterminera la "hitbox" du joueur, soit les limites de sa zone de collision. Pour ce personnage, un nœud CapsuleShape2D
donne le meilleur ajustement, donc à côté de "Shape" dans l'Inspecteur, cliquez sur "[vide]" -> "Nouveau CapsuleShape2D". En utilisant les poignées, redimensionnez la forme pour couvrir le sprite :
Lorsque vous avez terminé, votre scène Player
devrait ressembler à ceci :
Veillez à sauvegarder à nouveau la scène après ces changements.
Dans la prochaine partie, nous ajouterons un script sur le nœud du joueur pour le déplacer et l'animer. Ensuite, nous mettrons en place une détection de collisions pour savoir quand le joueur a été touché par quelque chose.