Apprendre à faire des jeux en fabriquant des astéroïdes avec Godot | Michael Mcguire | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Apprendre à faire des jeux en fabriquant des astéroïdes avec Godot

teacher avatar Michael Mcguire, Author | Programmer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction à Skillshare share

      0:55

    • 2.

      Que sont les astéroïdes à

      1:24

    • 3.

      Configuration du projet

      1:13

    • 4.

      Créer le joueur

      9:49

    • 5.

      Créer le projectile

      7:26

    • 6.

      Créer les astéroïdes

      2:49

    • 7.

      Apparition d'astéroïdes

      6:09

    • 8.

      Destruction d'astéroïde

      11:24

    • 9.

      Minuteur de création et fuites de mémoire à apprivoiser

      7:14

    • 10.

      Score à jour

      9:11

    • 11.

      Mettre à jour des vies j'ai

      16:26

    • 12.

      Recommencer et redémarrer

      7:19

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

33

apprenants

--

À propos de ce cours

Revivre l'histoire des arcades tout en développant de véritables compétences en matière de développement de jeux, un astéroïde à la fois.

Dans ce cours pratique, vous recréerez l'emblématique jeu d'arcade Asteroids, jeu de 1979, à l'aide du moteur Godot, moderne et adapté aux débutants. ( Que vous soyez débutant ou que vous cherchiez à affiner vos compétences, ce cours basé sur un projet vous guidera étape par étape dans la conception, le codage et le polissage d'un shooter spatial de style rétro complet, aucune expérience préalable n'est requise.

À la fin de ce cours, vous aurez :

Rencontrez votre enseignant·e

Teacher Profile Image

Michael Mcguire

Author | Programmer

Enseignant·e
Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction à Skillshare share: Bien, tout au long de ce cours, nous allons continuer et apprendre à nous faciliter la tâche en créant un jeu classique datant de 1979, les astéroïdes Maintenant, avec les astéroïdes, vous avez ce petit vaisseau capable de tirer de petits projectiles et de voler sur Et ce qui se passe, c'est que vous tirez sur ces astéroïdes qui flottent autour de vous et qui apparaissent aléatoirement Les plus gros engendrent les moyens, vous détruisez les moyens, ils font apparaître les plus petits, les plus petits se déplacent plus vite que les plus grands Et chaque objet que vous détruisez vous rapporte des points sur votre score total. C'est bon. Il s'agit d'un jeu simple, mais important à la fois pour l'histoire des jeux d'un joli petit projet pour débutants dans lequel vous pouvez refaire un jeu réel avec lequel vous pouvez vous amuser et toujours l'enrichir et créer le vôtre Très bien, commençons. 2. Qu'est-ce que les astéroïdes: C'est bon. Aujourd'hui, nous allons continuer et créer le jeu classique Asteroids, comme vous pouvez le voir ici à l'écran dans cette vidéo YouTube Ce que nous pouvons en déduire, c'est que les astéroïdes, en plus d'être un jeu très ancien et classique Cela devrait être assez simple pour nous, mais c'est encore un pas en avant, car les joueurs se déplacent maintenant , comme vous pouvez le voir avec notre petit joueur ici au milieu. Il tourne, il bouge, il tire. Nous avons ces astéroïdes qui flottent, et chaque fois qu' on leur tire dessus, ils se détachent en morceaux supplémentaires Et nous pouvons voir que nous avons ce petit air extraterrestre qui apparaît de temps en temps Et pour ce qui est de l'interface utilisateur, nous avons des points et des points de vie ici au sommet. Et effectivement, ce jeu continue jusqu'à ce que vous soyez guéri, je ne dirais pas jusqu'à ce que vous non plus. Cela continue jusqu'à ce que vous perdiez toutes vos vies. Et quel que soit votre score, c'est votre meilleur score. Et comme vous pouvez le voir, l' astéroïde est sorti de l'écran, puis il est réapparu l'autre côté et a continué à suivre la même direction dans laquelle il se déplaçait Bref, ce sont des astéroïdes. C'est ce que nous allons créer ici. Dans la section suivante, nous allons donc commencer à mettre en place un projet, qui ne devrait pas être trop difficile à mettre en œuvre pour nous 3. Configuration du projet: Allons-y et mettons en place notre projet. Nous pouvons descendre. Si vous le créez séparément dans son propre projet, bien sûr, allez-y et créez un nouveau projet, nommez-le astéroïdes Si vous créez à l'intérieur d'un projet existant, il vous suffit d'accéder à votre système de fichiers, cliquer avec le bouton droit de la souris, d'en créer un nouveau, de créer un dossier et de le nommer astéroïdes, et nous pouvons procéder à une scène Toti Je vais renommer le mien en « Main ». Nous allons ajouter une couche de toile pour notre Guy , que je vais bien sûr renommer Guy Et ce dont nous aurons besoin, c'est d'une étiquette pour le top ici, et ce sera notre représentation de notre score. Je vais le renommer en « label de partition ». C'est bon. Et je vais l'enregistrer dans mon dossier astéroïdes et le sauvegarder Et en fait, c'est à peu près tout ce dont nous avons vraiment besoin pour mettre en place notre projet. La majeure partie du travail se fera à l'intérieur du joueur et des astéroïdes 4. Créer le joueur: Allons-y, créons notre joueur et configurons le mouvement. Il vous suffit donc d'entrer en haut, de cliquer sur un nouvel onglet pour créer une nouvelle scène, de cliquer sur un autre nœud. Recherchez un corps de caractère en deux D et sélectionnez-le. Maintenant, j'ai déjà cette configuration ici. C'est juste un corps de personnage, deux D. Je vais le renommer joueur, puis appuyer sur Control S, et je vais l'enregistrer dans mon dossier d'astéroïdes À partir de là, comme je n'ai aucun sprite à vous donner pour cela, nous allons créer notre sprite de joueur car c'est si simple de toute façon pour nous, et nous allons le créer avec une ligne deux D, puisqu'il s' agit principalement d'un triangle avec une petite encoche en retrait D'accord. Donc, je vais utiliser des chiffres pour cela. Maintenant, si vous vouliez aller sur Internet et regarder autour de vous, je suis sûr que vous pouvez trouver les sprites, si vous vouliez vous y prendre de cette façon Je vais aller à la ligne 2 D et aux propriétés. Je vais cocher la case fermée, l'activer. Et je vais ouvrir les points en cliquant sur le tableau vectoriel 2 compressé. Et je vais ajouter jusqu'à ce que nous ayons une taille de cinq. Mon premier point sera fixé à dix et zéro. Mon deuxième point portera sur moins cinq et moins six. L'indice deux sera zéro sur le X, moins deux pour le Y. Les trois seront zéro sur le X et positif deux sur le Y. Et notre quatrième indice sera négatif cinq sur le X et six sur le Y. Maintenant, cela ne ressemble pas au sprite que C'est parce que la largeur est trop grande. Maintenant, comme j'utilise la taille par défaut que j'ai utilisée, je vais encore une fois l' ouvrir et vous montrer ici. Ah, c'est où ? Fenêtre d'affichage de 335 x 255. Maintenant, si vous voulez utiliser une taille authentique pour cela, je crois que 640 x 800 est la taille authentique pour cela. Dans ce cas, vous pourrez vous en tirer en agrandissant un peu votre vaisseau, n'est-ce pas ? Ainsi, par exemple, vous pourriez peut-être tirer le XL jusqu'à 20 au lieu de dix. Et encore une fois, vous pouvez simplement augmenter le solide. Ainsi, au lieu de moins cinq, vous pouvez faire moins dix. Vous pouvez donc jouer avec ceux-ci et vous pouvez faire face à une limite plus large. Mais comme j'utilise cet écran plus petit, je vais réduire la largeur de ma ligne à un, et nous pouvons le voir ici. Maintenant, vous vous demandez peut-être : qu'en est-il de deux ? Eh bien, nous pourrions en faire deux, mais nous allons avoir un espace vide plus petit au milieu. Et c'est peut-être quelque chose que tu aimes. Allez-y et jouez à ça. Nous ne pouvons pas vraiment le voir ici pour le moment. Je vais simplement le faire glisser dans la vue et le jouer et vous pourrez le voir là, à quoi il ressemble à l'écran. Donc ça pourrait te plaire comme ça. Mais je vais aller de l'avant et changer ma largeur en une. Je préfère plutôt ça. Cela me semble un peu plus authentique, mais c'est à vous de décider. Et encore une fois, vous pouvez toujours modifier ces points. Si vous voulez l'agrandir, vous pouvez utiliser une ligne plus large, ou vous pouvez toujours aller en ligne et rechercher des informations sur Google, et je suis sûr que vous trouverez les sprites quelque part où vous pourrez vous procurer les sprites. D'accord. Vous remarquerez peut-être que nous recevons un petit avertissement, et c'est parce que nous avons besoin d'une forme de collision pour nous, ce que cela demande. Nous pouvons donc aller de l'avant et créer une forme de collision. Nous pouvons entrer, nous pouvons choisir une forme. Nous pouvons faire un cercle. On peut faire un rectangle. Nous pouvons créer l'une des formes polygonales. Vraiment, cela n'a pas beaucoup d' importance. Et si vous voulez être encore plus précis, ce qui serait probablement un peu moins authentique est un polygone de collision Et puis c'est la même configuration ici où vous pouvez simplement définir les points. Vous devez donc les définir comme vous l'avez fait pour les joueurs, par exemple, dix, ici, moins cinq, moins six, et vous pouvez voir que les joueurs, par exemple, dix, ici, moins cinq, moins six, tout commence à s'aligner. Avec notre configuration. J'ai donc juste besoin d'en ajouter quelques autres ici. Et ce serait zéro, moins deux, et un serait zéro plus deux, puis moins cinq et six. Ensuite, nous aurions toute notre forme configurée pour nous. D'accord, donc si tu voulais suivre cette voie, tu peux, et tu peux toujours entrer et jouer avec tes points ici Aucune création, mais si vous voulez appuyer, cliquez sur Modifier les points, puis vous pouvez simplement cliquer dessus et le faire glisser. Donc, si vous vouliez le modifier de cette façon. De plus, si vous ne souhaitez pas saisir les points, vous devez cliquer sur le bouton plus ou sur le bouton Ajouter des points en haut de la page. Et vous pouvez simplement entrer et créer des points comme ça. Donc, vous avez des options. J'ai simplement choisi l'inspecteur interne parce que je trouve que c'est plus facile parce que vous pouvez simplement traduire vos points directement. Et encore une fois, si vous vouliez suivre cette voie, vous le pouvez certainement. C'est un peu plus précis. Cependant, je vais le faire glisser un peu moins, probablement moins précisément pour de la réalité dans son ensemble. C'est bon. Donc, quelle que soit la manière dont vous voulez procéder, c'est à vous de décider si vous voulez utiliser un polygone ou une forme Passons au mouvement réel de notre joueur. Allons-y donc. Cliquez sur le lecteur, appuyez sur AdScript, ajoutez-le et assurez-vous de l'ajouter dans notre dossier sur les astéroïdes Et nous allons créer un processus physique. Et nous allons avoir quelques variables pour nous ici. Nous allons avoir une variable de vitesse pour déterminer la vitesse à laquelle nous nous déplaçons. Nous allons avoir une vitesse de rotation correspondant à la vitesse à laquelle nous effectuons une rotation, puis à notre sens de rotation. Et avant de passer à l'étape suivante, assurez-vous de passer aux paramètres du projet, saisir la carte et de configurer vos commandes. Je vais juste utiliser ce que j'ai utilisé l'année dernière. Je vais juste utiliser le haut, le bas, la gauche et la droite puisque j' ai déjà cette configuration pour WASD Ce sont ceux que je vais utiliser. Très bien, allons-y et disons que le sens de rotation est égal à l'axe G du point d'entrée. Maintenant, nous devons passer à l'action négative, puis à l'action positive. Ils se présenteront sous la forme de noms de chaînes. Donc ça va être laissé. Et puis à droite. Parce que la gauche va nous donner notre direction négative et la droite, elle va nous donner notre direction positive pour la rotation. Ensuite, nous allons modifier la vitesse pour qu'elle soit égale pour transformer le point X fois, exactement ce que nous venons de faire ici, point d'entrée, axe, et pareil. Nous allons mettre nos points négatifs et positifs, donc ce sera à la baisse, puis à la hausse. Ensuite, nous allons le multiplier par notre vitesse. Maintenant, nous sommes presque arrivés ici. Nous devons faire une rotation. Plus est égal au sens de rotation multiplié par la vitesse de rotation multiplié par Delta. C'est bon. Et à ce stade, vous devriez être habitué à l'idée. Nous devons utiliser soit une collision mobile, soit une diapositive mobile. Je vais utiliser Move and Slide dans ce cas. Et si nous allons de l'avant et que nous l'exécutons, nous devrions maintenant être en mesure de déplacer notre joueur. Donc, si je tiens juste W, ça va avancer. Si je tiens la touche S, elle va revenir en arrière. Si je tiens A, il va pivoter vers la gauche. Je tiens D, il va tourner correctement et maintenant nous avons quelque chose de très similaire, beaucoup plus similaire à ce que nous avons vu à l'intérieur des astéroïdes Maintenant, vous pouvez continuer et modifier ces chiffres. Vous pouvez donc modifier la vitesse si vous voulez que votre vaisseau se déplace plus vite ou plus lentement que cela J'utilise 100 par défaut. La vitesse de rotation est de 1,5. Vous pouvez l'augmenter pour effectuer une rotation plus rapide ou la diminuer pour une rotation plus lente. Cela dépendra entièrement de vous. Mais peu importe ce que vous choisissez de faire, ce n'est qu'une des petites choses que vous allez décider pour que votre jeu un peu personnalisé pour vous. Hein ? Et pour un joueur, c'est vraiment tout ce dont nous avons besoin pour nous relever et continuer jusqu'à ce que nous devions commencer à tirer. D'accord. Nous vous verrons donc dans la prochaine partie. 5. Créer le projectile: Très bien, alors allons-y et créons notre projectile pour notre joueur Donc, dans ma scène de joueur, j'ai ajouté un marqueur deux D, juste pour que nous ayons un endroit précis où nous allons lancer notre projectile juste un peu devant notre vaisseau Et la seule chose que fait Marker two D, c'est de nous donner une position quelque part dans le monde. C'est là tout son objectif. Très bien, vous pouvez donc continuer, créer une nouvelle scène, toucher un autre nœud et sélectionner la zone deux D. Et appuyer sur Créer, ce sera notre projectile Ici, j'ai créé une forme de collision, qui est juste un rectangle et un sprite deux D. Pour la texture, je suis passé à l'étape suivante et, depuis le menu déroulant, j'ai utilisé une nouvelle texture dégradée deux D. Et lorsque vous aurez fait cela, vous ouvrirez le premier élément Vous verrez cette grande section. Vous trouverez un dégradé dans l'inspecteur, ouvrez-le et vous aurez deux points comme celui-ci. Un point sera noir par défaut. Cela ressemblera donc à ça. Allez-y et cliquez avec le bouton droit sur le point qui est dans le noir pour vous en débarrasser, et maintenant tout est blanc. C'est vrai. Donc c'est tout ce que tu as à faire, et tu auras un projectile. Je vais m'installer. Allez-y, enregistrez cette scène comme sienne afin que nous puissions l'utiliser. Et allez-y, attribuez deux D. J'ai donné à mon projectile un script Et ici, nous allons avoir deux fonctions et une variable. C'est bon. La première variable que nous allons avoir ici est que nous allons créer une vélocité pour cela. C'est un vecteur deux, et bien sûr, il sera défini sur le vecteur 20 par défaut. Nous allons créer une fonction pour cela appelée set velocity. Il va avoir un argument d'un vecteur deux. Il ne renvoie rien, donc évitez. Et tout ce que nous allons faire, c'est régler la vélocité égale à V, non ? L'argument que nous transmettons. Enfin, nous avons besoin que le mouvement réel de notre projectile se produise Dans notre processus physique, nous allons donc procéder et faire en sorte que la position plus égale notre vitesse à Delta. Et notre projectile lui-même est prêt. Nous devons maintenant passer au joueur. Et si vous n'avez pas encore de configuration de mappage d'entrée, rendez-vous sur notre carte de saisie des paramètres du projet et créez un bouton avec lequel vous pourrez prendre des photos. Moi-même, j'ai configuré ma barre d' espace. Et avant de continuer, la première chose que je vais faire est créer une nouvelle variable appelée projectile Ce sera donc une scène pleine à craquer que nous pourrons intégrer. De cette façon, nous pouvons le charger quand nous en avons besoin ou en créer une instance quand nous en avons besoin, devrais-je dire. Et cela équivaudra à charger trouver cette scène et à la faire glisser. Allons-y. Nous allons donc charger cette scène. Elle sera chargée sous forme de scène de pack et stockée dans la variable appelée projectile C'est bon. Allons-y donc et créons la fonction de saisie. Pour notre joueur. C'est juste une entrée funk underscore. Cela a un argument appelé événement. Il s'agit d'un type d'événement d'entrée. Cela ne renvoie rien d'aussi nul. Et nous allons juste vérifier si saisie est une action, il suffit d'appuyer, donc nous ne pouvons pas maintenir le bouton enfoncé maintenant. Nous devons appuyer dessus chaque fois que nous le voulons. Et l'action que nous recherchons, c'est le tournage. Donc, chaque fois que nous appuyons sur le bouton de prise de vue, qu'allons-nous faire ? Eh bien, nous allons créer une instance de notre projectile Donc, PI, par exemple, est une zone deux D. C'est égal à l'instanciation du point du projectile Maintenant, nous devons utiliser ce marqueur deux D pour nous ici. La position globale de PI est donc égale au signe du dollar, le marqueur deux D. Nous avons donc juste le marqueur deux D non que nous avons ajouté à la position globale du point du joueur. Nous sommes donc en train de le configurer. Et si on regarde ça tel qu'il est, si on fait le tour et qu'on tire. Maintenant, nous ne pouvons peut-être pas vraiment le voir, mais si nous faisons demi-tour et nous éloignons , eh bien, nous pouvons voir que nous n' obtenons rien en fait. Pourquoi est-ce le cas ? Parce que nous ne l'avons pas encore ajouté à la scène. Cela existe, cependant, et nous allons vérifier cela dans une seconde. Ce que je vais faire, c'est définir la rotation. Je la définis maintenant en fonction de notre vaisseau. La rotation du point PI est donc égale à la rotation. Et je vais utiliser Get parent Ad child PI. J'utilise donc Get parent. De cette façon, le projectile ne colle pas à nous, car si nous utilisons simplement AdCild, il restera collé à nous, et si nous continuons à faire tourner notre vaisseau, il continuera de tourner Cela serait utile pour quelque chose comme un faisceau laser, mais pas pour un projectile Nous utilisons donc get parent pour nous en tenir au jeu et non au joueur lui-même. Hein ? Donc, si nous entrons et tirons, vous pouvez voir qu'il apparaît maintenant dans le jeu, il ne bouge tout simplement nulle part Et cela se produira chaque fois que nous appuierons sur notre bouton de tournage. Donc, si c'est ce qui se passe, alors félicitations. Votre projectile fonctionne. Nous avons juste besoin de le faire bouger pour nous maintenant. C'est bon. Donc, vérifiez si c'est le cas ou pour le faire bouger, nous allons faire une petite vérification ici. Nous allons dire que si PI a des méthodes pour définir la vitesse, et nous pouvons le supposer en toute sécurité. Mais nous allons nous assurer qu'il dispose cette fonction juste pour des raisons de sécurité. Et nous allons garder notre cap. Mais nous sommes en train de créer une nouvelle direction à cet égard. Est égal au vecteur deux points vers la droite, point pivoté et passage dans la rotation Cela nous permettra donc d'obtenir la bonne direction, qui serait sur le X positif en fonction de la rotation efficace, n'est-ce pas ? Ainsi, nous avons toujours une direction précise dans laquelle il se déplace. Oups. Oups, oups, oups. Allons-y. Nous allons lui donner une vitesse une vitesse var égale à 200. Vous pouvez toujours modifier cela plus tard si vous le souhaitez. Et maintenant, nous devons appeler cette fonction que nous vérifions ici. Donc, le point pi définit la vitesse, la direction multipliée par la vitesse. Avec cela, notre projectile se déplace désormais dans la direction dans laquelle nous tirons Juste comme ça ? Même si on arrête complètement de bouger. Génial. Maintenant, notre projectile fonctionne avec notre vaisseau. Il ne nous reste plus qu'à tirer des astéroïdes et à accumuler des points D'accord. Je vous verrai dans le prochain. 6. Créer les astéroïdes: Allons-y et créons nos trois astéroïdes. Nous allons créer un grand, un moyen et un petit. Ils seront tous créés de la même manière. La seule différence réside dans la taille de la forme de collision et le nombre réel de points, car évidemment, ils vont commencer par gros et ils vont devenir de plus en plus petits. Désormais, tous ces éléments sont créés à l'aide d'un corps de personnage en deux D, d'une ligne en deux D et d'une forme de collision. Je vais donc juste vous donner les points pour la deuxième ligne D. Alors allez-y , faites une pause et quand vous aurez cette configuration, nous pourrons continuer et avancer. Je vais commencer maintenant par lire les points de la ligne deux D sur le gros astéroïde N'oubliez pas de sauvegarder vos scènes Fermé, devrions-nous le mettre en marche. Et la largeur que j' utilise sur ceux-ci est de deux. Ils ont tous huit points. Et tout cela va commencer par le gros astéroïde ici, 40, zéro, 30, moins 25, dix moins 35, moins 15, moins 30, moins 35, moins dix, moins 30, 20, moins dix, 35, 25 et 30 Passons à la mastoïde médiatique. J'ai encore une fois, huit points en bas de la liste, 25, zéro, 20, moins 15, cinq moins 22, moins dix , moins 18, moins 20 , moins cinq, moins 18, 12, moins cinq, 22, 15, 18. Passons aux points du petit astéroïde : 15, zéro, 12, moins huit, trois, moins 13, moins sept, moins dix, moins 13, moins deux, moins 12, sept, moins trois, 13 et 1010 Ce sont les points que nous utilisons pour tout cela. Et une fois que vous aurez configuré les trois scènes, assurez-vous d'avoir enregistré les trois scènes et vos astéroïdes seront configurés et prêts à être utilisés Et la seule chose qui leur manquera, c'est leur rotation. Bien entendu, ils doivent apparaître et faire apparaître le et plus petit astéroïde lorsqu'ils sont détruits Ainsi, les plus grands engendreront les moyens, et les moyens en engendreront de petits 7. Génération d'astéroïdes: Allons-y et laissons nos astéroïdes apparaître hors écran, passer à apparaître hors écran, passer Ils pourront avoir des vitesses différentes, et nous allons utiliser le même script sur les trois tailles. Alors allez-y, créez un script, et vous pourrez l'attacher à vos trois astéroïdes, grands, moyens et petits, et ouvrir ce script Et la première chose que nous allons faire est de créer une vitesse de rotation et je vais créer une vitesse X quatre. Je vais y aller et le sauvegarder tout de suite. Donc, si je clique sur mon petit astéroïde, vous verrez que nous avons de la vitesse ici dans l'inspecteur, je vais laisser ce chiffre à 100 pour les petits Pour le moyen, je vais le baisser à 50, et pour le grand, je vais le réduire à 20. Maintenant, vous pouvez toujours revenir et modifier ces chiffres plus tard, n'est-ce pas ? C'est toujours possible. Je vais juste aller de l'avant et régler ça pour le moment. Maintenant, dans notre fonction Ready, pour apparaître hors écran, nous allons obtenir la taille de l'écran à partir de Get VPortrC point SHE Et nous allons obtenir une variable de crédit pour spawn edge. Tout le monde est Randy pour cent quatre, donc ça va nous donner un zéro, un, deux ou trois cette base, nous allons déterminer si nous allons attribuer chaque numéro ou associer chaque numéro haut, en bas, à gauche et à droite. Nous allons donc utiliser ce que l' on appelle une déclaration de match. Et tout ce que tu fais c'est taper le match. Ce que vous voulez faire correspondre, dans ce cas, serait spawn edge Les deux points descendent, et nous dirons zéro parce que c'est une option. Deux points apparaissent et vous obtenez un bloc de texte. Ensuite, vous pouvez le faire correspondre à un, un bloc de texte, à deux et à un bloc de texte, etc. C'est ainsi que fonctionne We Match Statement. Donc, en gros, nous disons : OK, nous allons égaler cela. Donc, si cela correspond à ceci, faites ceci, cela correspond à ceci, nous faisons ce bloc, s'il correspond à ceci, nous faisons ce bloc, et ainsi de suite. Donc, ce que nous allons en faire, je vais simplement le copier, bien sûr. Mais nous allons continuer sur tout cela, nous allons passer à Spawn Edge S'il est égal à zéro, nous allons prendre sa position égale à un vecteur deux, et ce vecteur deux est une plage flottante aléatoire, donc rand F sur une plage carrée comprise entre zéro et le point X de la taille de l'écran, puis le Y est inférieur à 50. Donc, comme c'est négatif, vous pouvez supposer ici que la position ici, que la correspondance de zéro sera affichée en haut ou en haut de l'écran. Donc, si nous apparaissons au-dessus de notre écran, c'est ici que nous allons placer notre astéroïde Ensuite, notre vitesse sera le vecteur 20 sur le X, puis notre Y sera juste notre vitesse, non ? Ce chiffre étant donc positif, cela signifie que nous allons baisser et que nous allons poursuivre sur cette lancée jusqu'au bout. Donc, si c'est un, la position sera un vecteur deux de la taille de l'écran avec un point X plus 50. Cela signifie donc que nous apparaissons sur le côté droit de notre écran, plage de soulignements Rand F, ce qui nous donnera entre zéro et le point Y. Nous apparaissons donc sur le côté droit à n'importe quel point vertical, tant que nous sommes sur le côté droit de notre écran Nous apparaissons donc sur le côté droit à n'importe quel point vertical, tant que nous sommes sur le côté droit Notre vitesse sera alors un vecteur deux. Il a un zéro sur le Y et une vitesse négative sur le X, donc il se déplace vers la gauche. C'est bon. Et si nous obtenons deux points, nous allons essentiellement faire la même chose que nous avons fait avec zéro ici. Notre position est donc un vecteur deux, rand F sur le carré, zéro, écran X. Nous sommes donc à l'extrême gauche Taille d'écran Y plus 50. Depuis que nous l'ajoutons, nous apparaissons en bas, à droite et en bas de notre écran vecteur deux X est nul pour notre vitesse, et sa vitesse est négative, ce qui signifie que notre astéroïde va se déplacer vers le haut Enfin et surtout, nous avons un match pour trois. Le vecteur deux sera un 50 négatif parce que le négatif 50 sera déjà hors écran tel quel , donc il est décalé vers la gauche. plage F aléatoire de zéro, et bien sûr, un point de taille d' écran Y, n'importe où sur le côté gauche, et la vélocité sera une vitesse positive déplacement vers la droite et zéro sur le Y. accord. Donc, si c' devons en fait faire une dernière chose parce que nous ne pouvons pas bouger, et vous l'avez peut-être remarqué est le cas, nous devons en fait faire une dernière chose parce que nous ne pouvons pas bouger, et vous l'avez peut-être remarqué, nous devons passer à notre processus physique, et nous devons appeler move and slide. Et je vais également ajouter la rotation plus égale à notre vitesse de rotation multipliée par Delta. Si on teste ça, tu es sur mon petit astéroïde. Eh bien, allons-y. Nous l'avons vu de l'autre côté. Je vais le lancer à nouveau. Non, je suis venu du côté droit cette fois. Je vais réessayer. Je suis revenu du côté droit. Nous pouvons donc voir que c'est toujours complètement aléatoire, vient du bas et que cela fonctionne toujours. Et si nous passons à autre chose, disons, mon gros astéroïde sur lequel j'ai atteint la vitesse 20 et que je l'ai testé, encore une fois, il tourne Il vient d'une direction aléatoire, et il se déplace simplement plus lentement parce que nous ajustons la vitesse. D'accord, donc avec cela, cela fonctionne parfaitement bien pour nous maintenant Nos astéroïdes peuvent apparaître et tourner, et ils ont tous des vitesses différentes Nous devons maintenant accéder à la section de tir et de destruction pour qu'ils puissent en faire apparaître de plus petits morceaux. 8. Destruction d'astéroïdes: Allons-y et nous allons configurer notre projectile de manière à pouvoir détruire nos astéroïdes afin qu' il puisse en faire apparaître un Donc, les plus gros vont générer des moyens, les moyens vont générer des La première chose à faire est donc d'aller scène de notre projectile, de sélectionner notre projectile, la zone deux D, de rechercher la section de collision sous l' objet de collision deux D et de régler le masque sur couche est donc la couche sur laquelle se trouve l'objet, et le masque est essentiellement la couche avec laquelle il peut interagir. Nous allons donc régler le masque sur deux, puis nous allons passer à chacun de nos astéroïdes Sélectionnez-le et réglez notre couche sur l'astéroïde à deux et notre masque à un Ainsi, le masque étant placé sur l'astéroïde, il peut interagir avec notre projectile et avec le fait qu'il se trouve sur la deuxième couche Et le masque deux n' est pas sélectionné. Les astéroïdes ne doivent pas interagir les uns avec les autres, ils doivent donc se traverser et ne pas se percuter . C'est bon. Et vous pouvez faire la même chose sur l'astéroïde moyen et le petit astéroïde. C'est bon. Dans ma scène principale, je viens de placer mon joueur dedans et d'y insérer deux astéroïdes de taille moyenne pour nous puissions les utiliser comme tests ici Et si nous devions y jouer, nous, les astéroïdes apparaissent, ils viennent de directions différentes Dans ce cas, ils venaient tous les deux de droite. Et là, nous en avions une en partant de la droite, une en partant du bas. Oh, et vous pouvez voir que nous n'y sommes pas allés, ce qui est bien parce que plus tard, cela finira par tuer notre joueur Peu importe donc que nous puissions interagir avec elle dès maintenant. Très bien, alors comment faire fonctionner nos astéroïdes ? Eh bien, passons d'abord à notre projectile. Regardons les signaux dans l'onglet Nœud. Et nous allons sélectionner le corps saisi. Et pour ce faire, nous connectons le signal, suffit de double-cliquer dessus et de le connecter au projectile Cela va se déclencher chaque fois qu' un corps physique touche notre astéroïde, car c'est un corps de personnage dont deux D entrent dans la zone de nos projectiles Le corps va donc représenter tout ce qui est entré dans cette zone. Donc, ce que nous pouvons facilement faire, c'est dire « je suis un astéroïde ». Waouh, j'ai vraiment foiré celui-ci. Nom de l'astéroïde I et du point corporel. Parce que n'oubliez pas que les miens sont tous des gros astéroïdes, des astéroïdes moyens, des petits astéroïdes Donc, si le nom de l'astéroïde figure dans le point du corps, que nous devons percuter l'astéroïde Je vais créer body point D asteroid , la fonction personnalisée que nous allons créer ici dans un instant Ensuite, je vais faire self.q3. Ainsi, mon projectile pourra se détruire tout seul. D'accord. Maintenant, si nous devions l'exécuter maintenant, bien sûr, cela ne marcherait pas. Nous allons faire une erreur et quelqu'un du genre « Hey, destroy » n'existe pas. Boum. Nous y voilà. Oh, et je ne l'ai pas encore sorti. Donc je pense que c'est une bonne chose. Donc, ce que je vais faire, c'est passer à Asteroid Script, et je vais créer une variable ici appelée New spawn Ce sera un taureau, s'agisse d'un vrai ou d'un faux. Et par défaut, je vais définir ce paramètre sur true. Je vais passer à cette déclaration de match que nous avions, et juste au-dessus, je vais dire « I, new spawn », puis je vais récupérer cette déclaration de match complète Donc, de la ligne 13 à 25, surlignez-les toutes et appuyez sur la touche Tab pour les déplacer. Et en dehors de cette déclaration, je vais dire « oui ». Et ce que je vais faire, c'est sélectionner cette déclaration de match, et je vais la coller dans mon se. Mais ce que je vais faire, c'est supprimer les changements de position. Je ne modifie donc que la vélocité dans ces matchs car nous ne voulons pas changer de position. Nous voulons juste qu'il prenne une direction aléatoire. C'est bon. Passons maintenant à cette fonction de destruction. Maintenant, pour cette fonction de destruction, nous allons faire, dans ce cas, j'ai une variable appelée ST, et je charge, dans ce cas, mon petit astéroïde parce que nous sommes en train de tester avec un astéroïde moyen en ce moment Et je veux en créer deux, donc je fais une boucle à quatre Donc quatre, c'est dans une fourchette de deux, non ? Nous allons donc examiner cela deux fois. C'est bon. Donc, en entrant dans cette boucle avant, nous allons créer une instance de notre petit astéroïde Nous allons définir la position globale de notre astéroïde instancié globale actuelle de notre astéroïde Nous allons définir le nouveau spawn sur false. De cette façon, nous n'avons pas entrer dans notre décompte de match pour changer de position. Nous ne le rencontrons que pour régler la vélocité. Et nous avons fait appel à GParentTad Child pour l'ajouter à la scène. Et une fois que nous l' aurons traversé deux fois, notre gros astéroïde se débrouillera tout seul. Maintenant, si nous l'exécutons et le testons, boum, nous pouvons voir que cela fonctionne parfaitement bien ici. Et si vous êtes curieux de connaître toutes ces erreurs rouges présentes dans le débogueur, cela nous indique simplement que nous devrions utiliser l'appel différé ici lors de notre entrée sur le corps pour ce que nous appelons body point destroy Donc, au lieu de détruire par des points corporels, nous faisons des appels corporels différés et nous passons Destroy en tant qu'écran. Et maintenant, si vous l'exécutez, vous verrez tous ces débogueurs disparaître . D'accord. Parfait. Maintenant, elle est en train de se détruire et de se reproduire. Les moyens, désolé, les moyens détruisent et engendrent ces petits. Nous avons donc maintenant besoin d'un moyen pour notre astéroïde savoir ce qu'il doit apparaître ou de quelle version il doit apparaître et de quoi il s' Donc, s'il est de taille moyenne, il devrait apparaître petit, et s'il est petit, il devrait simplement se détruire. S'il est gros, il devrait apparaître à taille moyenne. Alors, comment pouvons-nous nous y prendre ? Eh bien, montez au sommet. Créons-nous une nouvelle variable. Eh bien, pour commencer, nous allons créer une énumération appelée les yeux, qui sera grande, moyenne, petite Nous allons procéder à une exportation, afin de pouvoir changer cela. Exportez donc à notre taille. Et le type ici sera la taille de notre Enum, donc toutes les tailles de casquettes Et nous pouvons simplement laisser ce champ vide. Si nous tombons sur l'un de nos astéroïdes et que nous rencontrons l' inspecteur, nous devrions le voir Assurez-vous donc que grand est réglé sur grand. Medium est réglé sur moyen, et le petit est réglé sur petit. Si je vérifie ma scène principale, elles devraient être définies automatiquement, mais ce n'est pas Je vais donc simplement les supprimer et en ajouter une de taille moyenne. Probablement parce que je ne les ai tout simplement pas sauvés. Eh bien, pas de problème. Je vais juste en apporter deux de taille moyenne de toute façon. accord ? Grâce à notre script d' astéroïde, nous pouvons maintenant redescendre. Et après notre destruction, nous pouvons continuer et faire un match, non ? On peut donc dire qu'il correspond à la taille. Ça va être d'une grande taille . Et voilà. Nous allons avoir un point de taille moyenne et, bien sûr, un point de petite taille. Voici donc ce que nous allons faire pour tout cela. Maintenant, bien sûr, nous pouvons simplement copier tout ce que nous avons ici, le découper et coller dans notre support. Parce que c'est tout notre code pour cela. Oui. Donc, si nous devions le tester avec notre astéroïde moyen ici, il devrait fonctionner exactement de la même manière Fantastique. Mais nous n'en avons engendré que deux Je suis désolée, une, qui est intéressante ici. Non, on y va. Il y en a deux. Et je vais le tester à nouveau. Il y en a deux et deux. OK, donc ça marche, non ? Cela fonctionne donc parfaitement. Maintenant, ce que je vais faire, c'est le copier et le coller dans mon fichier volumineux. Mais évidemment, au lieu de charger la scène du petit astéroïde, je vais faire glisser ma scène d'astéroïdes de taille moyenne Donc maintenant, si nous en détruisons un gros, il devrait faire apparaître un médium, et nous détruisons le support Cela devrait en générer un petit. Alors allons-y et jetons un coup d'œil. Je vais les supprimer tous les deux de ma scène, et je vais y faire glisser un gros astéroïde Et testons-le. Il y a un gros média, il est parti quand il a dû venir vers nous C'est bon. C'est le moment de ranger le gros. Nous achetons un support, nous stockons le support, nous en avons un petit. D'accord, donc ça fonctionne parfaitement bien. Génial. Maintenant, pour ce qui est des petits, oui, nous n'avons pas vraiment besoin de faire autre chose que de les transmettre parce qu'ils ont juste besoin de se détruire d'eux-mêmes. En fin de compte, nous n'avons pas besoin créer quoi que ce soit d'autre. Mais pour l'instant, nous pouvons le laisser comme ça , car nous l' utiliserons pour mettre à jour nos points plus tard. Nous avons donc toujours besoin de notre petite section ici. Nous avons donc maintenant nos astéroïdes qui non seulement apparaissent dans différentes directions, mais nous pouvons également les détruire, et ils font apparaître les cuisses suivantes Ce serait le bon moment pour le tester et décider si vous voulez peut-être modifier un peu les chiffres de vitesse , car ils se déplacent peut-être un peu trop vite à votre goût. Nous y voilà. Nous avons notre kit de destruction d' astéroïdes 9. Minuteur Spawn et fuites de mémoire: Configurons l'apparition complète, car maintenant que la destruction fonctionne, nos astéroïdes apparaissent correctement hors de la zone d'écran Faisons donc en sorte qu'il continuellement pour nous Donc, ce que je vais faire, c'est passer à ma scène principale ici. Je vais faire plus ou ajouter un nœud. Je vais ajouter un chronomètre. Je veux appeler cela un temporisateur d'apparition. OK. Et ce générateur va avoir un temps d'attente de m. Bien sûr. Faisons 2 secondes. Peut-être que nous allons le changer. Nous pouvons toujours le modifier à nouveau plus tard. Ça va démarrer automatiquement. Et je vais continuer et ajouter un script à ma note principale ici. Et je vais connecter un signal, donc je vais cliquer sur mon chronomètre, accéder à l'onglet nœud, double-cliquer sur timeout Assurez-vous que Mina est sélectionnée, appuyez sur Connect. Et quand il sera connecté, nous obtiendrons un nombre aléatoire, comme nous l'avons fait avec nos côtés. Nous allons créer une variable appelée astéroïde égal à Randy et pourcentage trois, donc nous allons obtenir zéro, un ou deux, et nous pouvons faire correspondre les astéroïdes 01 et astéroïdes 01 Et ce que nous allons faire, c'est que je vais simplement cliquer sur mon script d'astéroïde ici parce que nous pouvons vraiment en prendre une partie Et ce sera le long set que nous avons ici. Sur cette base, nous allons soit faire apparaître le petit astéroïde, grand ou moyen Donc, pour zéro, je vais le définir comme étant mon plus grand. Ça y est. L'un sera donc mon médium, et trois peuvent être mon petit. Ensuite, tout ce que je vais faire est d'ajouter Child et de faire une instanciation par point final Et cela devrait fonctionner dans tous ces domaines. C'est bon. Donc, en gros, il faut choisir un nombre aléatoire pour faire apparaître un astéroïde aléatoire, puis charger notre grand, moyen ou petit, puis l' ajouter à la scène C'est bon. Allons jeter un œil et voir si cela fonctionne toutes les 2 secondes. Boum, boum. Eh bien, oh, allons-y. Pourquoi ne peut-on pas le détruire ? C'est curieux. OK, donc les plus petites semblent avoir une erreur, certaines d'entre elles. Le problème, c'est que si nous devions l'exécuter, et si nous cliquons sur l'onglet distant, à droite, vous pouvez voir tous les astéroïdes qui arrivent et nous y jetons un coup d'œil, et nous voyons que certains d'entre eux sont simplement assignés, comme corps du personnage deux D, par exemple Il ne fonctionne donc pas toujours car il est évident qu'ils n'ont pas astéroïde dans leur nom s'ils se voient réattribuer un nom générique comme celui-ci, comme vous pouvez le voir ici Donc, ce que nous devons réellement faire, c'est entrer dans notre script. Passons à notre projectile. Au lieu d'utiliser if le nom de l' astéroïde et du point du corps. Let's do I Body point a la méthode Destroy. Maintenant, s'il a la méthode détruite, alors nous allons l'appeler. Et ce seul changement devrait complètement régler le problème pour nous. C'est bon. Nous y voilà. Pour le moment ne nous pose aucun problème. Oh, détection. Non, ça y va. Ça va. Maintenant, vous pouvez voir que nous avons un nombre illimité d'astéroïdes ici, donc nous créons une petite fuite de mémoire Nous devons donc également nettoyer cela. Dans nos scènes d'astéroïdes, passons donc aux trois et ajoutons un notificateur visible à l'écran à deux chiffres. Nous allons y aller et nous aurons le signal TreeNited. Et nous pouvons le connecter à notre script d' astéroïde, appuyer sur Connect Et tout ce que nous allons faire là-dedans, c'est faire de Self-Cute gratuitement, le sauvegarder et nous pourrons à nouveau passer à Medium. L'écran est sorti, connectez-le. Je devrais avoir le même nom par défaut, donc nous devrions avoir une fonction couvrant les trois et petite au niveau du nœud, de la sortie de l'écran, de la connexion Donc, ce que cela va faire, c'est essentiellement dire quand l' astéroïde sort l'écran, puis le détruire. D'accord. Alors maintenant, si nous devions y jeter un œil, je vais cliquer sur Remote, pour que nous puissions voir. Passons à la scène principale pour jouer et cliquons sur la télécommande. Tu peux y jeter un œil. Et nous pouvons voir que lorsqu' ils sortent de l'écran, ils sont automatiquement détruits Nous ne sommes donc pas en train de créer cette fuite de mémoire infinie pour nous-mêmes. Très bien, vous pouvez donc voir que le jeu se nettoie de lui-même, très bien. Très bien, c'est fantastique. Maintenant, ce que nous voyons ici, c'est que nous avons un problème similaire, n'est-ce pas ? Nous voyons que toutes ces zones ont deux D. Ce sont nos projectiles. Nous devrions donc probablement les nettoyer également. Nous pouvons donc faire la même chose, non ? Nous pouvons accéder à notre projectile, ajouter un notificateur visible à l'écran en deux D, sortir de l'écran, nous connecter à notre script de projectile et simplement appeler et simplement Donc, si nous ne tirons rien et que nous ratons le moment où notre projectile passe hors l'écran, cela devrait se nettoyer de lui-même Passons à la télécommande, jetons un coup d'œil. Et nous devrions voir tous ces projectiles s' effacer Nous avons donc tout fait beau et nettoyé. Tout ne cesse de s' effacer tout seul. C'est bon. Fantastique Il ne nous reste plus qu'à mettre à jour notre score en nous donnant des points à chaque fois que nous détruisons un astéroïde. C'est bon. Et, bien sûr, nous devons ensuite examiner la mort de nos joueurs, n'est-ce pas ? Perdre la vie pour le joueur. C'est bon. Nous pourrons donc commencer à y remédier la prochaine fois. 10. Mise à jour du score: Allons-y et mettons à jour notre score chaque fois que nous déformons nos astéroïdes Maintenant, nous pourrions utiliser des choses comme get parent et get child, puis appeler des méthodes à ce sujet, mais une meilleure façon de le faire est d'utiliser réellement des signaux, n'est-ce pas ? Donc, ces choses que nous avons à côté, nous allons seulement créer notre propre signal personnalisé et l'envoyer au gars pour lui demander de mettre à jour le score pour nous, et nous lui dirons combien de points. Maintenant, tout d'abord, assurez-vous que votre gars a un script dessus. Le mien est complètement vide. Ensuite, nous pouvons passer à notre script d'astéroïde, et nous allons créer une nouvelle variable exportée car nous avons besoin d' une nouvelle variable . Chaque astéroïde a un nombre de points différent, et par coïncidence, ceux-ci correspondent en fait à la vitesse que j'ai définie Donc, si nous nous contentons de passer, les gros astéroïdes du jeu donnent 20 points, les moyens en donnent 50 et les petits en donnent 100 Donc, par coïncidence, ce sont exactement les mêmes chiffres que j'ai donnés pour ma vitesse pour tout cela Et la prochaine variable nous aurons besoin ici sera en fait un signal. Nous tapons donc le mot signal, puis le nom du signal. Je vais donc dire détruit. Et je vais utiliser des parenthèses ouvertes et fermées comme une fonction parce que je veux ajouter un paramètre Je vais l'appeler PTS et le convertir en int. Donc, si nous devions maintenant regarder notre astéroïde et examiner les signaux, nous pouvons voir ici notre astéroïde personnalisé appelé détruit, et il a un argument appelé points site PTS, c' est-à-dire un entier transmis avec le signal Donc, pour nous, chaque fois que nous envoyons ce signal, nous allons envoyer cette variable de points avec lui. Donc, d'abord, nous devons connecter notre signal Je vais donc passer une seconde à ma scène principale et charger mon script sur l'astéroïde Nous allons donc faire Destroyed parce que c'est le nom du signal. Assurez-vous d'avoir celui avec l'icône du signal ici, celui qui ressemble à un symbole Wi-Fi. Je ne me connecte pas. Maintenant, cela prend un appelable, et tout cela indique à qui nous nous connectons et quelle fonction nous appelons Nous pouvons donc simplement dire appelable entre parenthèses ouvertes et fermées. Le premier argument est celui auquel nous voulons nous rattacher. C'est donc notre parent mais l'indice de transmission de l'enfant est nul lorsqu'il a un enfant. Virgule le nom de la fonction que vous souhaitez appeler. Donc, pour moi, je vais simplement l'appeler Update SCORE. Et si vous ne savez pas comment nous avons obtenu Get parent et Get Child Zero, si nous y jetons un coup d'œil, nous avons un astéroïde ici à titre d'exemple dans notre scène Si nous suivons cette ligne, nous devenons parents. Cela nous amène à une branche. Donc, en haut et en haut, cela nous emmène dans le Maine. Et nous voulons rejoindre Guy depuis Main. Donc, pour cela, nous devons avoir un enfant, et ce sera son premier enfant, non ? C'est la première succursale là-haut. Donc, à partir du gros astéroïde, nous demandons au parent de monter puis à l'enfant de redescendre. Nous sommes donc en train de nous connecter au Guy. Et lorsque ce signal sera émis, nous allons rechercher une fonction appelée Update score C'est bon. Maintenant, je vais copier cette ligne entière parce que nous allons faire quelque chose d'un peu similaire ici en qui concerne notre fonction de destruction. Mais au lieu de me connecter, je vais appeler Disconnect. Hein ? La seule chose que je changerais c'est que nous ajoutons simplement trois lettres supplémentaires, non ? Déconnectez donc au lieu de vous connecter à l'intérieur de notre fonction de destruction. De cette façon, nous pouvons simplement nettoyer le signal. Nous ne devrions pas avoir à le faire, et vous vous en sortirez probablement bien sans , mais juste pour m'entraîner un peu mieux, je vais simplement l'ajouter. Maintenant, lorsqu'il est détruit, nous devons également émettre notre signal car nous ne l'avons pas encore fait. Donc, avant de déconnecter le signal, nous allons détruire, émettre, et nous devons transmettre l'argument, qui dans notre cas, s' attend à ce qu'un nombre soit transmis. Nous allons donc transmettre notre variable de points. Très bien, allez-y , sauvegardez ça. Alors maintenant, si nous passons à notre interface graphique, en fait, vous savez , dans un premier temps, jouons-y , et vous verrez que nous aurons un problème. Hein ? Eh bien, il semble que notre problème ne va pas vraiment se manifester, ce qui est un peu intéressant, mais rien ne se passera car cette fonction n'existe pas. En fait, aucune fonction n'est appelée ici. Donc, si nous nous dirigeons vers notre Guy et que nous créons cette fonction, je crois que j'ai appelé un score de mise à jour comme ça, et que nous avons un argument, n'est-ce pas ? points, donc je vais juste passer au PTS, et c'est un entier. Et nous pouvons continuer et nous pouvons simplement imprimer le PTS qui a été transmis. Et si nous le faisons, nous devrions voir tous nos points s' imprimer à chaque fois que nous en détruisons un. Nous y voilà. Nous avons 100 points là-bas. 20, 50, 100, 50, c' est vrai, donc il semble que tout fonctionne bien. Nous avons juste besoin de le mettre à jour visuellement. Mais maintenant que nous savons que cela fonctionne, nous devons garder une trace de nos points et mettre à jour l'étiquette elle-même. Je vais donc créer une variable ici dans notre Guy. Ce sera notre score. Bien entendu, il s'agira d'un entier commençant à zéro. Donc, la première chose que nous allons faire est de marquer plus un point égal à PTS. C'est pourquoi nous pouvons ajouter les points à notre score. Ensuite, nous devons réellement mettre à jour l'étiquette elle-même. Allons-y, nous pouvons utiliser notre signe du dollar ici et obtenir notre étiquette de score. Texte à points. Et nous pouvons le définir comme étant égal à une chaîne de notre score. Maintenant, ça va paraître un peu bizarre. Si vous jetez un œil à nos points en haut à gauche. Allez, fais le tour d'un peu hippie. Et vous voyez tous ces zéros disparaître, et les chiffres changent d'eux-mêmes, bien sûr, mais vous voyez qu'ils augmentent constamment, n'est-ce pas ? Donc, quand nous arriverons à 1 000, nous en aurons juste un autre aléatoire ici. Devrais-je l'obtenir ? Nous y voilà. Nous avons donc développé un chiffre supplémentaire. Et ça pourrait te plaire. Non, surtout quand je joue un jeu classique comme celui-ci. Alors, qu'est-ce que je vais réellement faire à la fin de tout ça ? Donc, lorsque nous convertissons cette partition en chaîne, je vais faire des zéros avec des points, et je vais y mettre un chiffre Maintenant, si je devais en inscrire neuf, par exemple, nous y jetterions un œil. Nous pouvons aller de l'avant et mettre à jour le score. Hé, vas-y, baise-moi. C'était impoli. Boom, tu peux voir que nous avons tous ces zéros de Deva, non ? Et chaque fois que nous le mettons à jour, il est un peu plus beau, surtout sur un système rétro, surtout lorsque vous avez également un score maximum à atteindre C'est bon. Maintenant, je ne suis pas sûr à 100 % du score maximum, mais c'est toujours plus beau quand on complète le zéro Je suis donc allée de l' avant et j'ai vérifié, et le score maximum est de 99 990, donc ça va nous donner un, deux , trois, quatre, cinq, donc cinq places Allons-y, refusons cette option, et nous allons vérifier cela. Vérifiez ces chiffres. Si nous l'ajoutions à cinq, c'était rapide. Nous avons juste besoin de trouver quelque chose au tableau. Nous y voilà. Et cela nous donnerait 99 990 comme maximum possible. Très bien, alors allons-y. Donc, si vous voulez être authentique, ajoutez-y cinq zéros Nous y voilà. Et voilà notre petit score. C'est petit à emporter. Peep, peep Et Bank, ça aurait été une perte de vie pour nous, mais voilà. Oups. Maintenez toujours le bouton A enfoncé. Mais nous y voilà. Notre score est mis à jour chaque fois que nous détruisons nos astéroïdes 11. Mettre à jour des vies: Tôt. Nous allons donc envisager d' ajouter de la santé, n'est-ce pas ? Nous allons donc ajouter des vies de joueurs ici à notre jeu. Je sais Et comme nous n' avons pas de sprites à utiliser ici, nous avons choisi notre personnage de joueur Nous allons devoir faire les choses un peu différemment, mais c'est bon. Ce ne sera pas trop difficile pour nous. La première chose que je veux faire, c'est entrer dans mon Goey. Parce que les choses vont un petit peu changer. Je vais entrer dans mon script Guy. Je vais créer une exportation, et ce sera ma variable d'étiquette de partition. Ce sera une étiquette de type. Et je vais simplement le remplacer dans mon code pour ne pas avoir à saisir cette variable. Je peux donc cliquer sur Guy et je verrai l'étiquette du score dans mon inspecteur. Cliquez dessus et je pourrai lui attribuer mon nœud d'étiquette de partition. D'accord. Maintenant, je l'ai fait parce que je pense que je vais changer un peu les choses lorsque nous organiserons notre vie. Donc, en procédant de cette façon, nous ne devrions pas avoir à le mettre à jour dans notre code. Très bien, je vais donc aller sur mon site d'achat. Je vais ajouter un conteneur VBox. Maintenant, une VBox nous permet simplement d' empiler verticalement différentes choses Ainsi, par exemple, si j'ajoute une étiquette, ajoute n'importe quel texte, et vous verrez si je continue à le dupliquer Vous verrez que tout sera parfaitement espacé verticalement, tout sera parfaitement espacé verticalement, beau et net pour nous, n'est-ce pas ? Et le tout régulièrement espacé. Donc, une VBox est vraiment sympa. Très bien, je vais donc prendre l'étiquette de partition et la coller dans la VBox C'est bon. Et si nous regardions The Guy, nous pouvons voir que le label de partition est toujours en place. Et c'est pour cela que nous n' avons pas à modifier notre code. Et si nous allons de l'avant et le testons, nous pouvons le constater nous-mêmes. Il y en a un tout en bas, et nous pouvons voir notre score et tout fonctionne toujours parfaitement bien. Nous n'avons pas besoin de mettre à jour quoi que ce soit. C'est donc agréable d'utiliser de telles exportations parfois, surtout lorsque vous ne savez pas si vous allez déplacer des objets lors de la conception de votre I like this. C'est bon. Donc, la prochaine chose que je dois faire est de créer une boîte H à l'intérieur de ma VBox . Maintenant, un conteneur HBox fonctionne exactement de la même manière, sauf que c'est pour les objets qui se déplacent horizontalement, côte à côte plutôt que de haut en bas Et à l'intérieur de cette HBox, je vais ajouter un contrôle En fait, je ne vais pas encore ajouter le contrôle car je vais vous montrer pourquoi. Je vais donc cliquer sur mon lecteur. Je vais prendre la ligne deux D où nous dessinons notre vaisseau spatial Je vais contrôler C et le copier. Retournez à ma scène principale et à l'intérieur du conteneur Sage Box. Je vais appuyer sur Control V pour le copier. Et vous remarquerez Whoops. Si nous n'en avons qu'un tas, rien ne s'organise horizontalement comme vous l'avez vu avec le boîtier en V. Et c'est parce que ça doit être un type de contrôle, non ? Il doit donc s'agir d'un nœud vert. C'est pourquoi nous allons entrer et entrer dans la boîte Ace, nous allons ajouter une commande normale, et je vais juste donner une taille à cette commande ici, une boîte H inférieure en a besoin d'une aussi. Mais à mon avis, je vais aller de l'avant et régler le minimum personnalisé ici à 15 par 20. Je ne sais pas C'est peut-être un petit grignotage. Je vais prendre ma ligne 2 D ici, la tirer vers le bas et la mettre sous contrôle. double. C'est bon. Donc, juste pour que je puisse voir les choses un peu plus clairement, je vais sélectionner ma commande. Je vais activer le contenu des clips dans l'inspecteur, et maintenant je vais sélectionner ma deuxième ligne D, ce qui me permettra de le déplacer un peu mieux, découvrir où se situent ces limites. Et je vais passer à ma rotation, et je vais mettre -90 degrés juste pour pouvoir le faire pivoter vers et je vais mettre -90 degrés juste pour le haut, et je vois que je dois le déplacer davantage vers le bas Oups, il y en a un juste là. D'accord. Maintenant, je peux désactiver le contenu du clip ici. Et je peux voir que mon Y est un peu trop élevé, donc peut-être 15 là aussi. C'est peut-être un peu court. 16. Une fois que j'en serai content. Avant de le mettre, je peux jeter un œil à ma boîte H, et si je copie simplement ce contrôle maintenant, je vais le sélectionner et faire le contrôle D. Nous pouvons voir maintenant que, comme il se trouve à l'intérieur d'un contrôle, ils sont tous bien espacés et régulièrement espacés Donc, si on y joue, on peut voir qu'il est beau là-haut, non ? Tout comme notre vaisseau, et cela fait partie de notre interface utilisateur. Donc, comme nous n'avions aucun sprite pour monter là-haut, nous profitons simplement de la deuxième ligne D que nous avons déjà utilisée pour dessiner notre vaisseau Maintenant que notre vaisseau fonctionne, vous voyez qu'il sera devant nous, comme le reste de l'interface utilisateur, juste comme une chaussure. Maintenant, nous avons besoin de travailler dans la vraie vie. Nous devons donc soustraire des vies chaque fois que nous sommes touchés par l'un de ces astéroïdes au lieu de pouvoir le déplacer comme ça Pour cela, notre joueur a besoin de live. Passons donc au script de mon lecteur. Et tu veux y consacrer notre vie ? Non, tu sais, je pense que je vais l'appeler mon Gui. Et je vais également créer une autre exportation pour ma HBox. Je vais dire exportation de notre conteneur Lives, et ce sera une HBox. Et je vais créer une autre variable ici pour Lives, qui sera bien sûr un int, et le montant de départ ici est de trois. Et nous allons créer une autre fonction appelée Update Lives. D'accord, et nous allons simplement passer pour le moment. C'est bon. La question est donc comment allons-nous détecter le moment où nous rencontrons le joueur ou lorsque le joueur rencontre un astéroïde ? Pour provoquer la collision, soustraire notre vie à notre vie et faire passer nos signaux, passons à notre astéroïde et à notre processus physique Nous allons vérifier si notre astéroïde entre en collision avec quoi que Supposons donc que le nombre de collisions entre barres soit égal à la diapositive, le nombre de collisions. accord ? Nous allons donc voir si nous entrons en collision avec quelque chose, et si c'est le cas, non ? Nous allons donc dire si le nombre de collisions compte, ce qui signifie que nous sommes en collision avec au moins un objet pour que cela soit vrai, n'est-ce pas ? C'est la même chose que de dire si le nombre de collisions supérieur à zéro, n'est-ce pas ? C'est pareil, moins de mots. Donc, si le nombre de collisions compte, alors nous allons obtenir la collision, et nous allons l'attribuer à la collision par glissement, et nous allons passer l'indice zéro pour obtenir le premier objet avec lequel nous entrons en collision Ensuite, nous allons récupérer le collisionneur lui-même. Jusqu'à présent, collider est égal à point de collision et collider. Et si nous devions simplement l'imprimer pour voir ce que nous avons , c'est parti. Allons-y, exécutons-le, et nous verrons quand nos astéroïdes apparaîtront lorsque nous les rencontrerons avec notre vaisseau Nous pouvons voir le corps d'un personnage touché en deux D et il porte le nom de joueur. Nous détectons donc clairement le moment où le joueur est touché par les astéroïdes D'accord. Jusqu'ici, tout va bien. Nous savons que nous touchons quelque chose et que c'est notre joueur. Dans ce cas, il faut que ce soit le joueur. Il n'y a aucune chance que ce ne soit pas le cas. Mais pour être prudent, encore une fois, nous pourrions dire que nom du point de collision est égal à celui des joueurs Donc, si nous voulons juste faire cette double vérification, nous pourrions faire quelque chose comme ça. Et nous avons déjà vérifié que cela touche les joueurs. Ce que nous pouvons faire ici, c' est sans aucun point, non ? Nous pouvons donc détruire l' astéroïde lorsque nous le rencontrons. Et nous pouvons tester que cela fonctionne. Testez toujours votre code. B, p, p, p, boum. Très bien, jusqu'ici tout va bien. Chaque fois que nous frappons un astéroïde, celui-ci est détruit Boum. Et nous pouvons toujours les abattre et les détruire. Tout cela fonctionne toujours. Mais boum, boum. C'est bon. Maintenant, ce que nous voulons également faire ici, c'est émettre un signal ici, n'est-ce pas ? Parce que nous avons besoin de ce signal pour actualiser notre vie grâce au joueur et à l'astéroïde Nous avons donc besoin d'un nouveau signal provenant de notre astéroïde. Nous allons donc dire signal, astéroïde touché. Et nous n'avons pas besoin de présenter d'arguments pour cela. Nous avons juste besoin de savoir si l'astéroïde a été touché. Nous allons donc prendre ça, descendre. Et une fois que nous serons connectés au joueur avant de nous libérer, nous émettrons ce signal. Donc, l'astéroïde frappe le point d'émission. Ensuite, nous pourrons nous déconnecter. L'astéroïde s'est déconnecté. Maintenant, je sais que nous ne l'avons pas encore connecté, mais nous allons y aller. Et cela va en fait être très similaire à notre connexion. Je vais donc simplement copier l'argument à partir de l'appelable Nous allons donc nous connecter à l'interface graphique et transmettre cette fonction pour nous déconnecter. Et dans ce cas, le mien s' appelle Update Lives. Très bien, donc je vais le transmettre. Eh bien, il semblerait qu'il me manque une parenthèse. Voyons voir. Tu fais partie de cet ensemble, tu fais partie de cet ensemble. Et j'en ai une de trop. Allons-y. C'est bon. Je vais donc copier toute cette ligne. Je vais passer à ma fonction prête. Et tout comme le signal détruit, je vais connecter celui-ci. Alors connectez au lieu de déconnecter. Allons-y. Ensuite, nous avons deux signaux que nous sommes en train de nous connecter et que nous sommes prêts, l'un que nous émettons et déconnectons lorsque nous sommes détruits, et l'autre que nous émettons et déconnectons lorsque nous touchons le lecteur. Bien, nous avons maintenant besoin de cette fonction pour réellement faire quelque chose Donc, dans notre script Gooey, nous pouvons y jeter un œil et mettre à jour nos vies. Nous pouvons donc faire des vies sans un Sequals. Ensuite, nous devons mettre à jour notre étiquette de vie. Dois-je le mettre à jour ? Parce que j'ai changé de nom ? Je le sais. Allez-y parce que j'ai eu une faute de frappe là-dedans. Je vais donc faire en sorte que mon Lives Container fasse des enfants ou Get Child Count. Que voulons-nous choisir ? Je vais essentiellement définir cela avec ce que nous voulons supprimer. Nous en faisons jusqu'à deux. Je vais donc faire Lives Container point, get child. Je vais vous communiquer le nombre de nos vies ici. Donc ça va commencer à trois, puis une fois que nous serons touchés, ça deviendra deux. Donc, deux vont prendre notre plus récent, notre dernier ici, dernière vie parce que nous n'en avons que trois, et il apparaît à l'index 01, deux, et je vais appeler Dot Hyde. On va appeler Hyde à ce sujet ? Non, probablement parce que c'est avec ce contrôle. Donc, ce que nous faisons à la place, c'est simplement parce qu'il ne sait pas ce qu'est un enfant nous dirons que point visible est égal à faux. Des trucs si on essaie de revoir notre vie. Nous voyons le premier ici à l' extrême droite disparaître une fois que nous sommes touchés par un astéroïde Boom, on y est. Et il semblerait que nous ayons en quelque sorte été frappés par un deuxième. C'est vrai ? Tout semble fonctionner. Je ne suis pas sûr de savoir ce que c'était. Peut-être que l'un d' eux est apparu quand j'ai détourné le regard. Mais nous y voilà. Nous l' avons fait fonctionner, bien sûr, cela va être diffusé maintenant. Ou du moins il le devrait, mais ce n'est pas le cas. Un peu curieux devrait nous dire que cela ne fonctionne pas à cause de l'index. C'est assez curieux. Je suppose que nous devenons négatifs, peut-être que ça revient. Quoi qu'il en soit, en passant par ici. Nos vies sont donc en train de disparaître. Nos vies sont mises à jour. Et sur cette base, nous aurions besoin d'une vie pour entrer dans une partie terminée ou non. Mais d'abord, je veux définir un nombre minimum ou maximum pour que nous ne puissions pas descendre en dessous de zéro dans notre vie. Donc, ce que je vais faire, c'est dire des vies égales à. Et nous voulons que le nombre maximum entre les vies moins une et le deuxième argument soit zéro. Même si nous ne devrions pas en avoir besoin, je vais juste le mettre au cas où pour assurer qu' aucun bogue ne s'y produirait. Nos vies ne devraient donc jamais descendre en dessous de zéro. Et voilà. Nous avons ce problème, et il ne nous reste plus qu'à annuler la partie si nous touchons zéro et que nous redémarrons la scène. C'est bon. Maintenant, nous allons le faire ici parce que tout ce que nous voulons , c'est mettre à jour les vies. C'est ce que nous avons fait. Et la prochaine fois, nous reconfigurerons le jeu et le redémarrerons. 12. Fin de jeu et redémarrage: Avant la fin de la partie, je vais aller voir mon gars. Je vais ajouter une autre note ici. Je vais ajouter une étiquette. Ce sera mon label Game Over. Ce texto, ça va juste dire game over. Je vais l'ancrer , juste ici en haut. Je vais le mettre dans l'expéditeur de l' écran pour indiquer que la partie est terminée chaque fois que nous perdons. Nous pouvons entrer dans notre code et, grâce à nos mises à jour en cours, créer une nouvelle fonction. Le jeu est terminé et nous ferons simplement une vérification après avoir mis à jour l'écran. Je dirais que si le nombre de vies est égal à zéro, alors nous appelons «   game over » notre fonction. Et la fonction Game Over Eh bien, je n'ai pas besoin que ça soit visible. Je vais remettre ce laissez-passer. Je vais procéder à la création d'une exportation ici pour mon label de jeu, GameOver label Je vais l'assigner à l'inspecteur très rapidement. Étiquette GameOver. Alors, que faire. point d'étiquette GameOver Vsb est égal à l'équipage. Nous pouvons mettre l'arbre en pause, non ? C'est donc un arbre G. Et en fait, je ne vais pas arrêter l'arbre cette fois. Je pense que nous voulons récupérer le joueur du Goey. Je pense que le joueur peut gérer le second. C'est vrai. Comment est-ce que je veux m'y prendre ? Très bien, je vais donc cliquer sur mon joueur ici dans mon menu principal Je vais cliquer dessus avec le bouton gauche de la souris, et je vais le faire glisser vers l'intérieur. Et je vais le publier, et cela devrait me donner le chemin vers mon joueur. Donc je vais juste dire point Qu free pour supprimer mon joueur. Une fois que vous n'aurez plus de Lives et que vous aurez terminé une partie, je dirais que j'attendrai. Obtenez Tree, créez un chronomètre. De cette façon, nous pouvons continuer et attendre 3 secondes ou quelque chose comme ça. Vous pouvez jouer avec ce chronomètre et voir ce que vous voulez. Dot TO, non ? Nous l'avons déjà fait. Ensuite, nous allons juste dire Get point. Rechargez la scène actuelle. Jetons donc un coup d'œil à la fin d'une partie. À faire. Nous pouvons y aller . Nous pouvons jouer. On peut tirer, marquer des points. Mais, mais, ah ah. Tout va bien. Boum, on a été touchés, on a perdu une vie. Boom, nous avons perdu deux vies. C'était notre petit navire. Oui, et nous allons perdre notre dernière vie. Boum, la partie est terminée. Patientez 3 secondes. Le jeu se recharge et nous pouvons continuer à jouer. D'accord. Voilà, nous l'avons. Nous avons terminé notre jeu, tout simplement réglé. Et nous sommes prêts à commencer à jouer avec notre jeu ici. Maintenant, si vous voulez que l'écran soit un peu plus authentique, vous pouvez soit aller dans les paramètres de votre projet, puis je recherche simplement le mot couleur et je passe dans un environnement de rendu. Couleur par défaut. Tu peux venir ici et tu peux changer cette couleur si tu veux. Il s'agit de la couleur par défaut de l'arrière-plan. Tu peux le faire si tu le souhaites. Mais comme je préfère généralement conserver la couleur par défaut ici, vous pouvez simplement entrer et faire une erreur de couleur, régler vos ancres pour qu'elles soient pleines Eh bien, il semble que ce n'est pas le cas parce que nous n'avons pas le contrôle en tant que principal. Je vois. D'accord. Nous n'aurons donc qu'à y aller et à le configurer nous-mêmes. Vous pouvez donc simplement définir la taille que vous souhaitez. Tant qu'il est assez grand pour couvrir la zone bleue, tout devrait bien se passer. Et entrez et changez-le en noir. Et comme nous ne montrerons que le contenu de la zone bleue, peu importe qu'elle soit plus grande. Nous allons donc jouer à Oh, et je dois modifier l'ordre. Je dois donc saisir la couleur, retirer et la faire remonter complètement vers le pour que mon joueur soit au-dessus pour que nous puissions voir. Et voilà. Nous avons quelque chose qui se rapproche encore plus de l'original grâce au fond noir. Mais encore une fois, c'est juste un choix personnel si vous voulez l'avoir. B, boum, mais, p, p, p. Et ça ressemble vraiment à un de nos jeux. Oh, et si vous vous demandez simplement pourquoi ce score ne fonctionne pas. C'est probablement juste parce que j'ai créé Color Rect pour être le premier enfant. Donc, Index zéro, j' essaie de connecter mes signaux à color rect au lieu de l'interface graphique. Donc, si je le tire simplement vers le bas pour que l'interface graphique s'allume, sorte de là. Nous y voilà. Pour que le gars soit le premier, cela devrait régler notre problème ici. Vous voyez, boum, Lives now Connecting et notre score. Il ne s'agit donc que d'une couche de classement dans la hiérarchie des scènes. C'est donc quelque chose à garder à l'esprit si vous deviez, bien sûr, procéder de cette façon sans définir les paramètres de votre projet. C'est bon, voilà. Nous avons nos points de vue. Nous avons des vies. Nous avons GameOver. Nous devons redémarrer. Et nous avons créé, une fois de plus, un autre jeu complet sans avoir besoin de ressources. Nous avons tout fabriqué à partir du moteur. C'est bon, ça va faire l'affaire. Nous avons maintenant des astéroïdes. Et si vous voulez aller encore plus loin, vous pouvez continuer, vous pouvez trouver des sprites en ligne, ou vous pouvez utiliser la deuxième ligne D et créer les vaisseaux spatiaux que vous avez vus et leur attribuer Et pareil, donnez-leur un signal, connectez-le à votre interface graphique, envoyez les points avec, comme nous le faisons avec les astéroïdes