Je te salue, Khabrovites! Dans cette partie, je vais créer et personnaliser la balle pour le jeu Pong. Si vous avez manqué le début, c'est ici . Le niveau de l'article est encore un débutant.
Sous la coupe, il y a encore de nombreuses captures d'écran.
Appelez les enfants et bienvenue sous chat.
Pour l'édition, le projet est ouvert en double-cliquant sur le nom du projet ou par le bouton "Editer".

Lorsque vous redémarrez le moteur, la scène créée précédemment ne s'est pas ouverte. Vous pouvez l'ouvrir en double-cliquant dessus dans le panneau "File System", le panneau analogique dans Unity s'appelle Project.
Vous pouvez maintenant créer la balle, l'ordre correct pour ce moteur, le corps physique et ses deux héritiers: le collisionneur et les graphismes. Mais je le ferai dans un ordre différent, et en même temps je vous dirai pourquoi cet ordre de nœuds est nécessaire.
La première chose que je veux faire avec le ballon est de le voir. Par conséquent, je vais commencer par les graphiques. Je peux dessiner un carré blanc de 3 x 3 pixels dans n'importe quel éditeur d'image. Cependant, je n'aime pas faire dans un programme tiers, ce que je peux faire directement dans le moteur.
Pour ajouter un nœud à la scène, cliquez sur le plus dans le panneau de scène. (Bien sûr, il est possible d'utiliser le menu contextuel ou les touches de raccourci)

Une énorme liste de différents types de nœuds apparaît dans la fenêtre qui s'ouvre. Ils doivent tous être consultés, idéalement lire sur chacun des nœuds dans la documentation , ou au moins afficher tous les nœuds directement dans la liste en lisant la description de chacun d'eux.
Cela vous aidera à mieux comprendre quels nœuds se trouvent dans le moteur et que faire avec eux. Et pour notre objectif actuel, le nœud Polygon2D convient.

Par défaut, tous les nœuds sont créés en tant qu'enfants par rapport au nœud racine. Si vous devez créer un nœud enfant pour un nœud spécifique, vous devez le créer en sélectionnant d'abord le nœud parent. Évidemment, cela n'est pas nécessaire avec le nœud racine.
Il est temps de faire attention au côté droit de la fenêtre, il y a un panneau d'inspection.

Pour les plus petitsUn carré est une figure géométrique composée de 4 angles et 4 côtés, tous les côtés étant égaux les uns aux autres.
La taille du polygone détermine le nombre d'angles, après quoi une liste de points apparaît, dont les coordonnées doivent être saisies, personnellement je préfère partir du coin supérieur gauche et me déplacer dans le sens horaire autour des points. Décrivant une figure autour du centre. Par défaut, dans Godot, le centre de tous les nœuds est le coin supérieur gauche de la scène. Et l'introduction de fractions de pixels est autorisée.

Vous pouvez maintenant configurer «Transformer» et positionner la balle au centre de la scène.
Pour mieux le voir, vous devez légèrement augmenter la scène du jeu dans la partie principale de la fenêtre.
Faire défiler la molette de la souris vous permet d'augmenter et de diminuer la scène, et cliquer sur la molette et déplacer la souris déplace la scène.

Vous devez maintenant faire bouger la balle, et il y a deux façons principales:
- Vous pouvez modifier le paramètre "Transformer" et déplacer la balle de la même manière que je l'ai déplacée au centre de la scène, mais en utilisant le code du programme et en douceur.
- Et vous pouvez ajouter à ce graphique un nœud d'un élément physique tel que appelé "solide" ou "objet physique". Et déplacez l'effet du moteur physique sur cet objet.
Le moteur physique vous permet d'utiliser les mouvements les plus précis, fluides et crédibles sans avoir à décrire vous-même tous les calculs complexes.
De plus, en plus du mouvement de la balle, nous devons encore déterminer si la balle a rencontré la bordure de l'écran? Si face, quelle frontière? Le ballon a-t-il touché une raquette? Si face à laquelle des raquettes et quelle partie? Mais ces choses sont plus faciles à vérifier en utilisant un moteur physique.
En général, il existe un schéma très simple pour ce choix. Si tous les objets du jeu se déplacent le long de la grille et qu'il y a une file d'attente de mouvement. Par exemple, aux échecs, un joueur noir ne commence pas son tour avant que le joueur blanc ne termine son mouvement. Et aucun des joueurs n'a le droit de déplacer plusieurs pièces à la fois.
Dans de tels jeux, il est pratique de modifier directement les paramètres de "Transformation".
Pour tous les autres cas, il existe un moteur physique.
Maintenant, je pense qu'il est évident qu'il est plus pratique d'utiliser le moteur physique dans le jeu Pong.
Pour ce faire, vous avez besoin de la balle, maintenant c'est le nœud "Polygon2D" ajoutez le nœud "PhysicsBody2D"

Mais il existe trois nœuds de ce type: cinématique, rigide et statique. Selon la description:
- La cinématique est un objet physique se déplaçant selon le code de programme écrit, n'obéissant pas au moteur physique. (Notre option)
- Rigide est un objet physique complètement subordonné au moteur physique.
- La statique est un objet physique immobile.
Les analogues de ces nœuds sont disponibles dans tous les moteurs de jeu que je connais, et dans Unity ils ont les mêmes noms et propriétés.
Après avoir ajouté le nœud "KinematicBody2D", une notification d'erreur apparaît.

En survolant, il devient clair que la cause de l'erreur est l'absence d'un masque de collisionneur pour ce nœud, dans ce cas, on m'a proposé l'une des deux options: CollisionShape2D ou CollisionPoligon2D.
J'ai déjà essayé de créer un polygone, maintenant je veux regarder le formulaire. Qui lors de la création signale une autre erreur. Cette fois, elle dit que le masque semble être là, mais personne n'a créé la forme du masque.
Il est créé dans le panneau "Inspecteur". Pour notre carré, la forme «RectangleShape2D» convient aux réglages suivants.

Vous pouvez maintenant commencer à déplacer la balle autour de l'écran mais, avec le moteur physique, vous ne pouvez déplacer le «corps physique» qu'avec tous les héritiers et il se déplacera par rapport à son parent. Dans ce cas, le corps et le collisionneur se déplaceront par rapport au carré dessiné sur la scène, qui restera immobile sur l'écran. La solution est très simple:
- Pour que le corps physique se déplace par rapport à la scène, il doit devenir un nœud enfant de la scène.

- Pour que le carré dessiné se déplace avec le corps physique, il doit être fait enfant par rapport au corps physique.

Maintenant, en déplaçant le corps physique, je déplacerai le masque de collision avec le carré dessiné.
La balle est prête à bouger, la prochaine fois nous la lancerons enfin et verrons à quoi elle ressemblera dans le jeu.
Je serai heureux de vos critiques dans les commentaires.