Saga Scratch : un voyage dans le développement de jeux | Brandon Grant | Skillshare
Recherche

Vitesse de lecture


1.0x


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

Saga Scratch : un voyage dans le développement de jeux

teacher avatar Brandon Grant, Game Developer and Graphic Designer

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.

      Bienvenue !

      1:54

    • 2.

      Débuter avec Scratch

      3:45

    • 3.

      L'éditeur Scratch

      10:06

    • 4.

      Les blocs de construction de zéro

      27:58

    • 5.

      Clones et variables

      20:05

    • 6.

      Introduction à Skack Some Moles

      0:50

    • 7.

      Dessiner le sprite à marteau

      11:26

    • 8.

      Coder le sprite Hammer

      14:42

    • 9.

      Dessiner l'arrière-plan

      5:27

    • 10.

      Dessiner les costumes de taupe

      13:28

    • 11.

      Animer la taupe sprite

      6:31

    • 12.

      Manipuler les couches

      3:11

    • 13.

      Frappez les taupes

      11:30

    • 14.

      Améliorer l'appétit

      8:12

    • 15.

      Ajouter des effets de frappe

      3:57

    • 16.

      Créer le sprite de poulet

      15:23

    • 17.

      Utiliser des listes de variables

      9:40

    • 18.

      Réparer les clones de poul

      4:49

    • 19.

      Score

      3:14

    • 20.

      Ajouter un compte à rebours

      7:42

    • 21.

      Ajouter un jeu à l'écran

      17:38

    • 22.

      Reprendre le jeu

      7:40

    • 23.

      Finir les taupes

      4:52

    • 24.

      Augmenter la difficulté

      6:35

    • 25.

      Améliorer le score

      20:41

    • 26.

      Corriger le bug de score

      4:17

    • 27.

      Améliorer le chronomètre

      7:42

    • 28.

      Ajouter des étoiles volantes

      7:56

    • 29.

      Ajouter des effets sonores

      6:35

    • 30.

      Introduction aux ravages cosmiques

      1:16

    • 31.

      Préparation initiale

      1:43

    • 32.

      Dessiner les costumes des joueurs

      7:07

    • 33.

      Déplacer le joueur

      19:18

    • 34.

      Fluidifier les mouvements des joueurs

      6:08

    • 35.

      Implémenter l'emballage

      5:23

    • 36.

      Créer le laser

      11:22

    • 37.

      Dessiner les costumes d'astéroïde

      2:43

    • 38.

      Générer les astéroïdes

      13:05

    • 39.

      Améliorer le mouvement des astéroïdes

      15:00

    • 40.

      Tirer sur les astéroïdes

      7:22

    • 41.

      Donner de la santé aux astéroïdes

      5:36

    • 42.

      Diviser les astéroïdes

      8:18

    • 43.

      Ajouter des flashs d'explosion

      10:24

    • 44.

      Ajouter des effets de particules

      18:42

    • 45.

      Détruire le joueur

      13:21

    • 46.

      Créer une boîte à succès de joueur

      4:49

    • 47.

      Créer la flamme du propulseur

      15:51

    • 48.

      Dessiner les costumes de pick-up

      8:09

    • 49.

      Créer les pick-ups

      11:36

    • 50.

      Créer le powerup laser

      8:33

    • 51.

      Créer le bouclier

      14:26

    • 52.

      Créer la bombe

      9:58

    • 53.

      Utiliser l'extension du stylo

      11:15

    • 54.

      Créer les étoiles

      8:51

    • 55.

      Animer les étoiles

      14:29

    • 56.

      Garder un score

      14:54

    • 57.

      Créer le bouton de démarrage

      20:46

    • 58.

      Créer le logo

      20:05

    • 59.

      Changer de costume de joueur

      25:15

    • 60.

      Suivre le score élevé

      24:46

    • 61.

      Ajouter des sons et de la musique

      12:21

    • 62.

      Créer les commutations audio

      14:36

    • 63.

      Implémenter la commutation audio

      19:43

    • 64.

      Introduction à l'aventure de Slim

      1:09

    • 65.

      Charger le projet de départ

      14:09

    • 66.

      Boucle de jeu et gestion des commandes

      7:43

    • 67.

      Ajouter des mouvements de joueurs

      6:30

    • 68.

      Ajouter de la gravité

      3:57

    • 69.

      Laisser le joueur sauter

      10:04

    • 70.

      Marcher sur le niveau

      9:19

    • 71.

      Plus de collisions de niveau

      12:25

    • 72.

      Utiliser la Hitbox du joueur

      5:28

    • 73.

      Correction de bugs et temps de coyote

      3:50

    • 74.

      Animations au repos et à la marche

      17:09

    • 75.

      Animations de saut, de chute et de terre

      7:41

    • 76.

      Laisser le joueur s'accroupir

      6:16

    • 77.

      Glisser sur les pentes

      26:13

    • 78.

      Glisser sur les murs

      15:53

    • 79.

      Sauter sur les murs

      12:33

    • 80.

      Générer les niveaux

      26:34

    • 81.

      Faire défiler un niveau

      14:28

    • 82.

      Améliorer le défilement

      15:48

    • 83.

      Corriger quelques bugs

      4:51

    • 84.

      Recommencer un niveau

      10:54

    • 85.

      Changer de niveau

      11:41

    • 86.

      Ajouter des objets d'environnement

      5:00

    • 87.

      Trier les couches

      20:25

    • 88.

      Créer un arrière-plan défilant

      25:31

    • 89.

      Ajouter un peu de liquide

      7:25

    • 90.

      Activer le mode Dieu

      18:32

    • 91.

      Ajouter les pièces

      11:58

    • 92.

      Collecter les pièces

      8:28

    • 93.

      Sortir d'un niveau

      21:46

    • 94.

      Implémenter le défilement automatique

      10:36

    • 95.

      Créer une transition d'écran

      8:14

    • 96.

      Ajouter les serrures et les clés

      19:54

    • 97.

      Ajouter l'ennemi escargot

      21:04

    • 98.

      Le joueur rebondit

      14:28

    • 99.

      Se blesser

      13:27

    • 100.

      Tuer le joueur

      8:05

    • 101.

      Réapparaître le joueur

      21:51

    • 102.

      Ajouter l'abeille ennemie

      17:18

    • 103.

      Ajouter l'ennemi volant

      4:37

    • 104.

      Ajouter le poisson ennemi

      20:51

    • 105.

      Ajouter les patins de saut

      16:16

    • 106.

      Créer l'effet de slide en pente

      15:00

    • 107.

      Créer les particules de poussière

      11:09

    • 108.

      Mettre le jeu en pause

      10:30

    • 109.

      Créer la superposition de pause

      12:48

    • 110.

      Créer l'affichage du cœur

      9:52

    • 111.

      Créer l'affichage de pièces

      8:58

    • 112.

      Mettre en place le patron

      11:15

    • 113.

      Faire voler le patron

      21:46

    • 114.

      Tir de fusées

      14:58

    • 115.

      Rechercher le joueur

      14:08

    • 116.

      Frapper le joueur

      11:44

    • 117.

      Ajouter des explosions de fusées

      6:28

    • 118.

      Blesser le patron

      13:02

    • 119.

      Gagner le jeu

      4:23

    • 120.

      Créer le bar de santé du patron

      9:50

    • 121.

      Ajouter des sons

      16:11

    • 122.

      Ajouter de la musique

      9:05

    • 123.

      Créer l'écran de titre

      30:54

    • 124.

      Corriger le problème du drapeau vert

      1:29

    • 125.

      Créer la superposition de texte

      23:23

    • 126.

      Félicitations !

      1:06

  • --
  • 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.

11

apprenants

--

projet

À propos de ce cours

Libérez votre créativité et apprenez à coder grâce au développement de jeux avec Scratch Saga : un voyage dans le développement de jeux ! Ce cours est conçu pour les débutants, les jeunes codeurs et toute personne curieuse de design de jeux. Je m'appelle Brandon et je serai votre guide dans ce cours étape par étape, dans lequel nous créerons trois jeux complets dans Scratch, chacun plus passionnant et complexe que le précédent. Vous apprendrez à donner vie à vos idées de manière amusante et interactive, sans aucune expérience préalable requise !

Ce que vous apprendrez

Tout au long de Scratch Saga, vous acquerrez une expérience pratique dans le développement de jeux tout en apprenant les concepts clés de programmation. Voici ce que vous maîtriserez tout au long de votre parcours :

  • Les bases de Scratch : comprendre l'interface basée sur les blocs de Scratch et apprendre à naviguer dans les outils que vous utiliserez pour coder, concevoir et animer.

  • Concepts de base de programmation : comprendre les bases telles que les boucles, les variables, les conditions et la gestion d'événements dans un format visuel facile à suivre.

  • Design de personnages et de sprites : créer et personnaliser des personnages et des objets pour donner vie à l'histoire et aux interactions de votre jeu.

  • Animations et mouvements : apprendre à animer des personnages, à ajouter des mouvements fluides et à améliorer le gameplay avec des interactions dynamiques.

  • Mécanique de jeu : mettre en œuvre des mécanismes tels que le marquage, le nivellement et les conditions de victoire, en donnant à vos jeux des objectifs et des défis clairs.

  • Résolution de problèmes et débogage : aborder les problèmes de codage courants et apprendre à identifier, à dépanner et à corriger les erreurs dans votre code.

  • Principes de design de jeux : découvrir ce qui rend un jeu amusant, comment trouver un équilibre entre défi et jouabilité, et comment garder les joueurs engagés.

Points forts du cours

À la fin de Scratch Saga, vous aurez créé trois jeux entièrement fonctionnels, acquis une solide compréhension du codage et du design de jeux, et acquis les compétences nécessaires pour donner vie à vos propres idées de jeux. De plus, vous serez prêt à partager vos projets avec d'autres ou à vous lancer dans des techniques de codage plus avancées !

Préparez-vous à vous lancer dans le développement de jeux : rejoignez Scratch Saga dès aujourd'hui et commencez à créer des jeux à partir de zéro !

Rencontrez votre enseignant·e

Teacher Profile Image

Brandon Grant

Game Developer and Graphic Designer

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. Bienvenue !: Bienvenue dans la saga Scratch un cours de voyage dans le développement de jeux vidéo. Je suis Brandon, et je vais vous guider tout au long de ce cours dans lequel nous explorerons le monde du développement de jeux vidéo à l'aide de Scratch. Que vous débutiez dans le codage ou que vous souhaitiez créer vos propres jeux, vous êtes au bon endroit. Ensemble, nous allons créer trois jeux entièrement fonctionnels, chacun conçu pour vous enseigner les compétences essentielles du game design tout en vous permettant de laisser libre cours à votre créativité Chaque jeu s'appuiera sur le précédent, introduisant progressivement des concepts et des techniques plus complexes pour vous aider à devenir un développeur de jeux confiant et créatif. Scratch est une plateforme de codage entièrement gratuite et adaptée aux débutants développée par le MIT et conçue pour rendre l'apprentissage de la programmation à la fois accessible et amusant. Il est entièrement visuel, ce qui signifie qu'il n'est pas nécessaire de taper des lignes de code complexes. Scratch utilise plutôt des blocs que vous pouvez glisser-déposer, chaque bloc représentant une action ou un comportement que votre jeu peut utiliser. Pensez-y comme si vous construisiez avec des blocs Lego numériques. Mais au lieu de créer des tours, vous créez des jeux entièrement jouables Ce cours est conçu pour être engageant, progressif et pratique. Vous aurez la liberté d' expérimenter, de résoudre des problèmes et d'exprimer votre créativité tout en recevant des conseils à chaque étape. Avec Scratch Saga, vous allez aller au-delà des bases du codage pour vous plonger dans les principes du développement de jeux, apprenant non seulement à créer des jeux, mais aussi à les rendre amusants et interactifs pour les joueurs. Très bien, donc si tu es prêt, commençons. 2. Se lancer dans Scratch: Pour commencer à utiliser Scratch, la première chose à faire est de se rendre sur le site officiel de Scratch , situé à scratch point mit point EDU Sur ce site Web, nous pouvons en savoir plus sur le scratch et consulter divers projets réalisés par d' autres créateurs de scratch ou gratteurs Mais surtout, nous pouvons créer notre propre compte Scratch. La raison pour laquelle nous devons créer un compte est que Scratch est une plateforme Web, et le fait d'avoir un compte nous permet de regrouper tous nos projets dans un seul endroit facilement accessible. Très bien, donc pour créer un compte, nous devrions voir quelques options en haut de la page, comme ce bouton d'inscription ou ce lien de connexion à gratter ici. Si nous cliquons sur l'un d'entre eux, un formulaire apparaît dans lequel nous pouvons saisir un nom d'utilisateur et un mot de passe pour nos comptes. En fait, j'ai déjà un compte, mais juste pour le fun, je vais en créer un nouveau, et nous voulons nous assurer de ne pas utiliser notre vrai nom. Je ne veux pas montrer mon mot de passe, je vais donc décocher l'option Afficher le mot de passe ici Pour le mot de passe, nous voulons utiliser un mot de passe facile à retenir pour nous, mais difficile à deviner pour quelqu'un d'autre Bien, une fois que nous avons saisi tous ces éléments , nous pouvons cliquer sur Suivant. Nous pouvons maintenant choisir le pays dans lequel nous vivons et cliquer à nouveau sur Suivant. Nous pouvons maintenant saisir notre date de naissance et cliquer sur Suivant. Pour la question sur le genre, nous pouvons choisir un sexe si nous le souhaitons, mais ce n'est pas obligatoire Nous pouvons donc simplement cliquer sur Suivant. Enfin, nous devons saisir notre adresse e-mail. Une adresse e-mail est requise pour confirmer notre compte, et au cas où nous oublierions notre mot de passe. Cependant, Scratch ne rendra pas notre adresse e-mail visible publiquement sur notre compte. C'est bon. Ensuite, nous pouvons cliquer sur Créer votre compte, et nous avons maintenant nos propres comptes Scratch. Une autre chose importante à savoir, cependant, est que si nous souhaitons partager nos projets ou commenter d'autres projets Scratchers, nous devons d'abord confirmer notre compte en cliquant sur le lien contenu dans l' e-mail que Scratch nous a envoyé Cependant, cela n'est pas vraiment nécessaire pour le moment, alors allons-y et cliquez sur Commencer. Nous sommes maintenant sur la première page de notre compte Scratch. Et ici, nous pouvons apprendre à faire certaines choses à zéro. Et encore une fois, nous pouvons consulter d' autres projets scratch, que je recommande vivement de faire dès que vous en aurez l'occasion. Mais pour l'instant, nous voulons créer notre propre projet. Pour ce faire, il vous suffit de rendre ici et de cliquer sur Créer. Et maintenant, nous avons officiellement créé notre premier projet Scratch. Cependant, à part le petit chat griffé ici, notre projet semble plutôt vide de sens. Voyons donc comment nous pouvons résoudre ce problème. 3. L'éditeur de grattage: Lorsque nous démarrons un nouveau projet Scratch ou que nous en ouvrons un existant, cela nous amène à cette page, appelée l'éditeur. En haut de l'éditeur, nous avons cette barre violette, appelée en-tête de l'éditeur. La première chose que nous avons dans l'en-tête, ce sont les paramètres. Si nous cliquons dessus, nous pouvons changer la langue de la page en une autre si nous le souhaitons. Nous pouvons également changer le mode couleur de la page en mode original, qui est le mode par défaut, ou en mode contraste élevé, ce qui affecte principalement les couleurs des icônes et des blocs situés sur la gauche. N'hésitez pas à utiliser le mode contraste élevé si vous le souhaitez, mais je vais revenir à l'original. Ensuite, à partir du menu Fichier, nous pouvons créer un nouveau projet et enregistrer les modifications que nous avons apportées à notre projet actuel. Cependant, comme nous le verrons dans un instant, scratch enregistre régulièrement notre projet automatiquement pour nous, n'avons donc généralement pas besoin de le faire manuellement. Nous pouvons également enregistrer notre projet sous forme de copie. C'est utile au cas où nous souhaiterions avoir différentes versions de notre projet ou lorsque nous souhaiterions apporter de grands changements et que nous avons peur de tout gâcher. Ce que nous pouvons faire, c'est abord créer une copie du projet, puis apporter les modifications. Et si nous gâchons quelque chose, nous pouvons facilement revenir à une copie précédente. Enfin, nous pouvons à la fois charger un projet depuis notre ordinateur et enregistrer un projet sur notre ordinateur. Nous en apprendrons davantage sur ces deux options un peu plus tard dans le cours. Ensuite, nous avons un menu d'édition, qui ne comporte que deux options restaurer et activer le mode turbo. Avec Restore, si nous devions supprimer une ressource de notre projet, telle qu'un sprite ou une toile de fond, deux sujets sur lesquels nous en apprendrons davantage plus tard, nous pouvons cliquer sur Restaurer pour réajouter la ressource à notre projet Le mode Turbo est destiné aux projets vraiment complexes qui doivent être exécutés très rapidement. Cependant, le mode turbo ne fonctionne pas bien avec certains types de projets tels que les jeux, qui comportent de nombreux mouvements fluides et animations Nous n'avons donc généralement pas besoin de l'utiliser. Ensuite, en utilisant cette case, qui indique actuellement Sans titre, nous pouvons donner un nom à notre projet Il suffit de remplacer Untitled quelque chose d'autre, comme Scratch Basics et Precenter Et maintenant, le projet s'appelle Scratch Basics. Nous pouvons également voir qu'il a changé dans le titre de l'onglet du navigateur. Si nous cliquons sur le bouton de page du projet C ici, cela nous amènera à la page projet en cours. Et ici, nous pouvons exécuter notre projet, et nous pouvons ajouter des éléments tels que instructions sur la façon d'utiliser le projet. De plus, si nous avons emprunté des idées au projet de quelqu'un d'autre, nous pouvons les mentionner ici. Nous pouvons également utiliser le bouton Partager ici pour que d'autres gratteurs puissent le consulter. Mais pour l'instant, revenons à l'éditeur, ce que nous pouvons faire en cliquant sur le bouton C intérieur ici. Ensuite, nous avons un lien vers des didacticiels pour consulter d'autres didacticiels de scratch, et ici, sur la droite, nous avons une icône de dossier. Si nous cliquons dessus, cela nous amène à notre page M Stuff. Et ici, nous pouvons voir tous les projets que nous avons dans nos comptes. Pour le moment, tout ce que nous avons, c'est le projet de base de Scratch, mais nous allons le corriger très bientôt. Et pour revenir à l'éditeur, nous pouvons cliquer sur le bouton C et latéral ici. Enfin, nous avons une liste déroulante avec notre nom d'utilisateur, laquelle nous pouvons faire des choses comme modifier notre profil scratch, consulter notre page Mes contenus, modifier les paramètres de notre compte et nous déconnecter de nos comptes scratch. En dessous de l'en-tête, nous avons toutes ces informations, que nous connaîtrons très bien tout au long du cours. abord, ce que nous voyons dans ces deux zones dépend de l'onglet que nous avons sélectionné ici sur la gauche. Lorsque l'onglet de code est sélectionné, nous pouvons voir la palette de blocs, qui nous permet de choisir parmi différentes catégories de blocs. Les blocs, sur lesquels nous en apprendrons davantage dans la prochaine leçon, sont ceux que nous utilisons pour construire le code notre projet et lui faire réellement fonctionner des choses. Et l'endroit où nous construisons le code est cette grande actuellement vide appelée zone de code. Si nous passons à l'onglet costumes, nous voyons maintenant les costumes du sprite actuel que nous avons sélectionné ici dans la peinture au sprite en bas à droite Pour le moment, le seul sprite que nous avons dans notre projet est Scratch cat Et Scratch Cat a deux costumes, ce qui nous permet de changer rapidement son apparence. Et nous avons même divers outils que nous pouvons utiliser pour modifier le costume actuel. Nous verrons bientôt comment ajouter d'autres sprites à notre projet, ainsi que créer nos propres sprites et costumes Ensuite, si nous allons dans l'onglet Sons, nous pouvons voir tous les sons que le sprite sélectionné pourrait avoir Scratchcat émet le son miaou et nous pouvons le jouer en cliquant sur le bouton Play Nous avons également des boutons pour modifier les sons et nous apprendrons plus tard comment utiliser le code pour ajouter des sons et de la musique à nos jeux. Ensuite, en haut à droite, nous avons la scène. C'est là que nous pouvons réellement exécuter notre projet et le voir en action. Pour exécuter le projet, nous cliquons sur le bouton du drapeau d'écran ici. Mais comme nous n'avons pas encore ajouté de code, rien ne se passe. À partir de la leçon suivante, nous allons faire bouger Scratchcat au cours de la scène Mais pour le moment, si nous le voulons, nous pouvons cliquer et le faire glisser pour le déplacer manuellement. Nous avons également quelques boutons ici pour modifier la taille de la scène et nous pouvons utiliser celui-ci pour faire passer la scène en plein écran. dessous de la scène, nous avons le volet Sprite où nous pouvons voir tous les sprites de notre projet sprites sont des éléments tels que des personnages, des armes et des boutons qui constituent les éléments visuels de nos applications et de nos jeux Nous avons également quelques options pour modifier certains aspects des sprites sélectionnés Par exemple, nous pouvons le renommer, nous pouvons changer son emplacement sur la scène 00 étant le centre de la scène Nous pouvons activer ou désactiver sa visibilité. Nous pouvons changer sa taille, et nous pouvons changer la direction dans laquelle il est orienté. La direction par défaut de chaque sprite est de 90 degrés. Lorsque la direction d'un sprite est à 90, il fait face de la même manière que son costume actuel OK, ici à droite du volet Sprite, nous avons le volet scène Le volet de scène permet d'ajouter et de créer des arrière-plans, qui représentent les arrière-plans de notre projet Nous n'avons actuellement qu' une toile de fond vierge, et si nous cliquons dessus ici, nous pouvons voir que, comme pour les sprites, nous pouvons modifier les arrière-plans Nous pouvons y ajouter du code, et nous pouvons même y ajouter des sons. Ensuite, au bas du Sprite et du volet Stage, vous trouverez des boutons permettant de télécharger, de modifier choisir parmi une variété de sprites et de toiles de Enfin, en bas à gauche de l'éditeur de scratch, nous avons notre sac à dos. Notre sac à dos est actuellement vide, mais nous pouvons y ajouter des actifs tels que des sprites et des toiles de fond, ainsi que des blocs de code, et tout cela sera disponible pour tous nos projets Ceci est particulièrement utile lorsque nous examinons les projets d'autres gratteurs. Si nous voyons du code ou des actifs que nous aimerions emprunter et ajouter à nos propres projets, nous pouvons les glisser dans notre sac à dos, puis lorsque nous ouvrons notre propre projet, nous pouvons les faire glisser de notre sac à dos dans notre projet. Bien, maintenant que nous savons ce nous pouvons faire dans l'éditeur de scratch, il est temps de commencer à le faire 4. Les éléments de base de Scratch: Ce que je n'ai pas mentionné dans la leçon précédente, c'est que chaque sprite et chaque toile de fond ont leur propre zone de code et leur propre code Donc, si nous voulons que Scratch Cat fasse quelque chose, par exemple, nous devons nous assurer qu' il est sélectionné dans le volet Sprite Voyons maintenant ce que nous pouvons lui faire faire en regardant de plus près la palette de blocs. Les blocs de code sont séparés en différentes catégories, qui sont codées par couleur afin que nous puissions facilement localiser les blocs pour chaque catégorie dans la liste ici. Et chaque catégorie possède un code qui affecte un sprite d'une manière particulière Par exemple, dans la catégorie mouvement, nous pouvons déplacer et faire pivoter un sprite de différentes manières, et nous pouvons réellement voir ce que fait un bloc en particulier en cliquant dessus Ainsi, par exemple, si nous surveillons la scène, chaque fois que nous cliquons sur le bloc de dix étapes, Scratch cat se déplace de dix pas dans sa direction actuelle. Et chaque fois que nous avons un bloc avec un texte rempli comme celui-ci, nous pouvons réellement saisir une nouvelle valeur. Donc, si nous voulons déplacer Scratch cat deux fois plus loin, nous pouvons remplacer les dix ici par un 20 et cliquer sur le bloc. lorsque Scratch Cat atteint le bord de la scène, Cependant, lorsque Scratch Cat atteint le bord de la scène, il ne peut pas aller plus loin. Nous devons maintenant le repositionner soit en cliquant et en le faisant glisser dans la scène, soit en utilisant un bloc Go to XY Comme je l'ai mentionné dans la leçon précédente, le 0,00 est au centre de la scène. Ainsi, dans le bloc Go to XY, si nous mettons X et Y à zéro et que nous cliquons dessus, Scratch Cat revient au centre, ce qui positionne le sprite en fonction de son point central Si nous utilisons une valeur positive pour X, nous pouvons le déplacer vers la droite du centre et une valeur négative le déplacera vers la gauche du centre. De même, une valeur Y positive le déplacera au-dessus du centre et une valeur négative le déplacera au-dessous du centre. Nous pouvons également le tourner pour qu'il fasse face à une autre direction. Par exemple, lorsqu'il est tourné vers la droite, si nous voulions le faire tourner le visage droit vers le haut, nous devrions le tourner de 90 degrés dans le sens antihoraire Pour ce faire, nous pouvons régler la valeur du bloc de rotation dans le sens antihoraire ici à 90 degrés, puis cliquer dessus Et si nous cliquons maintenant sur le bloc de déplacement, il se déplacera dans la nouvelle direction. Maintenant, disons que nous voulons que Scratch Cat se déplace dans une zone de forme carrée autour de la scène. Pour cela, nous pourrions continuer à faire des allers-retours, en cliquant sur le tour et en déplaçant les blocs encore et encore. Cependant, cela peut devenir assez ennuyeux. Ce qui serait mieux, c'est si nous pouvions d'une manière ou d'une autre relier ces deux blocs ensemble de manière à ce qu' un seul clic le fasse tourner et le déplacer, et c'est là que la zone de code entre en jeu. Pour ajouter des blocs dans la zone de code , il suffit de cliquer et de les faire glisser depuis la liste. Nous avons également ces boutons en bas à droite pour zoomer et dézoomer dans la zone de code. Nous pouvons également le faire avec la souris en maintenant la touche Ctrl ou la touche commande enfoncée sur Mac et en faisant défiler la souris vers le haut et vers le bas ou la touche commande enfoncée sur Mac et en faisant défiler la souris vers le haut et vers Et si nous devons nous déplacer dans la zone de code, nous pouvons soit utiliser les barres de défilement, soit simplement cliquer et maintenir le bouton dans une zone vide et déplacer la souris. Bien, maintenant, si nous examinons de plus près nos deux blocs de code ici, nous pouvons voir que chacun a une encoche en haut et une bosse en bas Si nous saisissons un bloc et le rapprochons de l'autre bloc, nous obtenons cette indication grise que si nous relâchons la souris, les deux blocs se verrouilleront ensemble, comme des blocs de construction ou des legos Les blocs sont désormais connectés entre eux dans ce que l' on appelle un script. Et si nous cliquons sur l'un des blocs du script, il exécutera l'action dans le premier bloc, puis dans le bloc suivant, et ainsi de suite. Pour mieux voir les choses, nous pouvons augmenter le bloc de déplacement à 100 étapes. Maintenant, chaque fois que nous cliquons sur l' un des blocs, Scratch Cat se déplace de 100 pas, puis pivote de 90 degrés dans le sens antihoraire Et tout cela se produit lors d'une seule actualisation de la scène, il semble donc qu'il se déplace et tourne en même temps OK, et nous pouvons continuer à développer les scripts. Par exemple, nous voulons peut-être que costume de Scratchcat change après chaque tour Changer le costume d'un sprite affecte son apparence ou son apparence Pour cela, nous devrons consulter la catégorie de blocs Los. Et ici, nous pouvons faire des choses comme faire dire ou penser quelque chose à un sprite Nous pouvons changer sa taille et sa couleur, et nous pouvons changer son costume, soit en optant pour un costume en particulier soit en passant au prochain costume disponible du Sprite Si nous jetons un coup d'œil dans l'onglet costumes, Scratch Cat n' a que deux costumes, et son premier costume, appelé costume un, est le costume actuellement actif. Donc, si nous passons au costume suivant, costume 2 deviendra actif. Mais après le deuxième costume, nous n'avons pas de costume suivant à adopter. Mais ce n'est pas un problème, car lorsqu'un sprite revêt son costume final et que nous essayons de passer au suivant, Scratch le fait automatiquement revenir au tout premier costume Revenons donc au code, introduisons le prochain bloc de costumes et accrochons-le au bas du bloc rotatif. Et maintenant, chaque fois que nous cliquons sur l'un des blocs des scripts, Scratch Cat se déplace, puis tourne, puis le costume change, tout en une seule actualisation de la scène. Bien, maintenant, et si nous voulions faire sorte que chaque fois que nous exécutons le script, Scratchcat exécute toutes les actions un certain nombre C'est là qu'intervient la catégorie de contrôle des blocs. Les blocs de contrôle nous permettent contrôler le déroulement de notre projet, par exemple en interrompant un script pendant un certain nombre de secondes, en répétant des actions un certain nombre de fois ou même en effectuant des actions indéfiniment uniquement sous certaines conditions et en créant des clones de Nous en apprendrons beaucoup plus sur tous ces blocs tout au long du cours. Mais pour l'instant, si nous voulons que Scratchcat répète ces actions un certain nombre de fois, nous devons introduire un bloc de répétition Et si nous le survolons près du haut du bloc de déplacement, nous pouvons l' enrouler autour de tous les blocs Maintenant, chaque fois que nous cliquons sur le script, Scratch Cat exécute les trois actions et les répète dix fois au total, mais il l'a fait si vite que nous pouvions à peine le voir. Donc, ce que nous pouvons faire, c'est ajouter une courte pause entre chaque répétition. Pour cela, nous aurons besoin d'un bloc humide. Si nous en faisons glisser un dans le bloc de répétition, nous pouvons le placer avant ou après n'importe lequel des blocs présents ici. Mettons-le au-dessus du bloc de déplacement, afin qu'il y ait un délai avant la première répétition. Maintenant, avec une pondération par défaut de 1 seconde entre chaque répétition, le script entier prendra 10 secondes à s'exécuter, ce qui est probablement un peu trop long. Mais heureusement, nous pouvons également utiliser des valeurs décimales. Par exemple, si nous le changeons à 0,1, nous pouvons ajouter un dixième de seconde de pause entre chaque répétition. Essayons-le maintenant. Bien mieux. Et, bien sûr, nous pouvons également changer le nombre de répétitions par un autre, comme peut-être 20 Scratchcat, ça doit être assez étourdi maintenant, alors donnons-lui d'autres choses à faire qui n'impliquent pas Une chose amusante que nous pouvons faire est de lui faire suivre le pointeur de la souris pendant la scène. Pour cela, nous devons revenir à la catégorie des mouvements. L'un des blocs de mouvement que nous avons est cet autre bloc d' accès qui, si nous cliquons dessus maintenant, placera par défaut Scratchcat dans une position aléatoire sur la scène Cependant, si nous cliquons ici sur une position aléatoire, nous avons une autre option : le pointeur de la souris. Si nous choisissons cette option et que nous cliquons sur le bloc maintenant, Scratchcat essaie effectivement de passer au pointeur de la souris, mais il reste bloqué sur le bord gauche de la scène Pour que cela fonctionne lorsque nous déplaçons notre souris dans la scène, nous devons créer un autre script. Un sprite peut en fait avoir plusieurs scripts. Commençons-en donc un nouveau en faisant glisser un bloc de pointeur de souris dans une zone vide. Maintenant, le fait de devoir cliquer sur le bloc ne fonctionnera tout simplement pas, car nous devons être capables de déplacer notre souris pendant la scène. Cela signifie que nous aurons besoin que le bloc fonctionne indéfiniment, ou du moins jusqu'à ce que nous lui disions de s'arrêter. Pour cela, comme nous l'avons vu précédemment dans la catégorie Contrôle, nous avons un blocage permanent. Mettons-en un dans la zone de code et enroulons-le autour du bloc de pointeur permettant de passer à la souris. Si nous cliquons sur le script, alors que nous déplaçons notre souris dans la scène, Scratch Cat le suivra en permanence . Plutôt cool, non ? Mais maintenant, vous vous demandez peut-être comment arrêter le projet pour que Scratch Cat arrête de suivre notre souris ? Eh bien, tant que nous avons un script qui s' exécute pour toujours, le bouton du drapeau vert restera activé. Mais juste à côté, il y a un bouton d'arrêt. Et si nous cliquons dessus, tous les scripts en cours d'exécution s'arrêtent. Bien, parlons maintenant plus en détail de ce bouton représentant un drapeau d'écran. Pour avoir une application ou un jeu approprié, le devoir cliquer sur des scripts individuels dans la zone de code pour que nos sprites fassent des choses ne fonctionnera pas Au lieu de cela, nous aurons besoin d'un moyen d'exécuter tous les scripts simultanément ou lorsque des événements particuliers se produisent, et c'est là que le bouton drapeau vert entre en jeu. Nous, ainsi que les autres utilisateurs de nos applications et de nos jeux , devrons pouvoir cliquer sur le bouton pour lancer notre programme. Cependant, si nous cliquons dessus maintenant, rien ne se passe car Scratch ne sait pas encore quelles actions le bouton doit effectuer. Le fait de cliquer sur le bouton déclenche un événement dans Scratch et pour indiquer à Scratch ce qu' faire lorsqu'un événement particulier se produit, nous avons la catégorie de blocs événements. Parmi les événements que nous pouvons vérifier, citons le fait de cliquer sur le drapeau vert d'appuyer sur une touche du clavier, de cliquer sur un sprite Comme nous le verrons plus loin dans le cours, nous pouvons même diffuser des messages dans l'ensemble notre projet et faire réagir les sprites aux Mais l'événement que nous recherchons en ce moment, bien sûr, est celui où l'on clique sur le drapeau vert Et si nous examinons le bloc de plus près, contrairement aux autres blocs que nous avons utilisés jusqu'à présent, celui-ci n'a pas d' encoche en haut. Il y a juste un onglet en bas. blocs de ce type sont appelés blocs chapeaux et ne peuvent être utilisés qu'en haut d'un script. Alors maintenant, si nous voulons le faire, lorsque vous cliquez sur le drapeau vert, le script contenant la boucle permanente commencera à s'exécuter Nous pouvons faire glisser le bloc sur lequel vous avez cliqué sur le drapeau vert gagnant et le placer en haut du script Maintenant, en cliquant sur le drapeau vert Scratchcat commencera à suivre notre Très bien, cliquons sur le bouton d'arrêt. Et disons que nous voulons également que Scratchcat fasse quelque chose chaque fois que nous appuyons sur une touche particulière Pour cela, nous aurons besoin d'un bloc enfoncé sur la touche Win. Et comme pour le bloc sur lequel on clique sur le drapeau vert, celui-ci ne peut figurer qu'en haut d'un script Faisons-le donc glisser dans une zone vide pour démarrer un nouveau script. N'hésitez pas non plus à conserver le script de répétition dans votre projet si vous souhaitez continuer à jouer avec celui-ci, mais pour libérer de l'espace, je vais me débarrasser du mien. Pour supprimer un bloc ou un script entier de la zone de code, suffit de cliquer et de le faire glisser il suffit de cliquer et de le faire glisser à nouveau dans la palette de blocs, puis de le relâcher. Lorsque la touche Win est enfoncée sur le bloc, nous pouvons choisir parmi de nombreuses touches du clavier. Mais pour l'instant, restons-en à la touche espace, et faisons en sorte que lorsque nous appuierons sur la touche espace, Scratchcat dise quelque chose comme « bonjour Pour cela, il va falloir revenir à la catégorie Looks. Et ici, nous avons un bloc S quatre et un bloc Sa normal. Commençons par le modèle normal en le fixant au bas du bloc enfoncé sur la touche Win Space. Maintenant, si nous déplaçons Scratchcat ailleurs pour le voir et que nous appuyons sur la touche espace, une petite bulle apparaît à côté de lui contenant le texte que nous avons dans le Cependant, avec le bloc S normal, la bulle de dialogue ne disparaît jamais. Si nous voulons qu'il disparaisse après un certain temps, nous pouvons plutôt utiliser un bloc de sauvegarde. Débarrassons-nous donc d'abord du bloc Sa, ce que nous pouvons faire en le détachant du script et en le faisant glisser dans la palette de blocs. Et attachons un bloc de sauvegarde au bloc enfoncé sur la touche Winspace Nous pouvons lui faire dire ce que nous voulons comme vous et aussi longtemps que nous le voulons, peut-être une seconde. Si nous appuyons maintenant sur la touche espace, il dit Yo, puis au bout d'une seconde, la bulle de dialogue disparaît. Nous pouvons également le faire pendant l' exécution du projet. Si nous cliquons sur le drapeau vert, Scratch Cat commencera à suivre notre souris et si nous appuyons sur la touche espace, il dira yo pendant 1 seconde tout en continuant à suivre la souris. Cela signifie que pendant l' exécution du projet, chaque fois que nous appuyons sur la touche espace, ces deux scripts s'exécutent en même temps. Il est important de le savoir, car nous finirons par avoir de nombreux sprites avec de nombreux scripts exécutés en même temps dans nos jeux Et juste pour le fun, chaque fois que nous appuyons sur la touche espace, nous pouvons laisser l'utilisateur taper quelque chose comme son nom, puis demander à Scratchcat de l' accueillir Pour cela, nous devrons vérifier la catégorie de détection. Nous pouvons utiliser les blocs de détection pour détecter certaines choses, par exemple si un sprite touche quelque chose ou s'il touche une couleur particulière, nous pouvons poser une question à l'utilisateur et détecter le moment où il saisit une réponse, et nous pouvons détecter si une touche particulière a été enfoncée ou un bouton de la souris a été cliqué Ce bloc appuyé sur une touche est un peu différent du bloc d'appui sur la touche Win que nous utilisons dans le script et nous allons le vérifier dans un instant. Mais pour l'instant, nous voulons utiliser le bloc ask and wait. Avec ce bloc, nous pouvons au sprite de poser une question particulière, puis d'attendre la réponse Et nous voulons que cela se produise après avoir appuyé sur la touche espace, mais avant que Scratch Cat ne parle. Mettons-en donc un juste entre les deux blocs. Si nous lançons le projet maintenant et que nous appuyons sur la touche espace, Scratchcat demande quel est votre nom et une zone de saisie apparaît ici en bas de l'étape Nous pouvons maintenant taper notre nom et appuyer sur Entrée, mais pour le moment, nous n' utilisons pas réellement la réponse Arrêtons donc le projet. Pour obtenir la réponse, nous devons utiliser le bloc de réponses ici. Et pour utiliser des blocs arrondis comme celui-ci, nous devons les placer dans une ouverture arrondie ou dans l' entrée d'un autre bloc. Si nous regardons le bloc S quatre, il possède deux entrées arrondies. 14 quel texte dire, et 14, combien de secondes pour dire le texte. Si nous voulons que Scratchcat prononce le nom de l'utilisateur, nous devons utiliser un bloc de réponses comme saisie de texte Pour ce faire, nous pouvons faire glisser un bloc de réponses sur l'ouverture jusqu'à ce qu'il devienne blanc, puis le relâcher. Et 1 seconde, c'est un peu trop rapide, changeons-le à 2 secondes. Si nous lançons maintenant le jeu, appuyez sur la touche espace, tapez notre nom et appuyez sur Entrée, Scratchcat prononce notre nom pendant 2 secondes Mais qu'il prononce juste notre nom, c'est bizarre. Il vaudrait mieux qu' il dise quelque chose comme « bonjour » ou « yo » plutôt que notre nom. Pour ce faire, nous devons joindre le texte du message d'accueil et la réponse dans les entrées de texte. Pour cela, nous avons besoin d'un bloc de la catégorie des opérateurs. Les blocs de l'opérateur nous permettent de faire des choses comme effectuer des opérations mathématiques, choisir des nombres aléatoires, comparer des choses et, plus important encore, pour besoins actuels, assembler des éléments. Le bloc de jointure ici est exactement ce dont nous avons besoin. Mettons-en un dans la zone de code, et mettons-le dans une zone vide pour le moment. Pour la première entrée du bloc de jointure, nous pouvons taper un message d'accueil comme Yo, et j'ajouterai également une virgule et un espace pour séparer le texte Nous pouvons maintenant faire glisser le bloc de réponses hors d' ici et l'utiliser comme deuxième entrée du bloc de jointure. Mais que se passerait-il si nous voulions également ajouter un point d'exclamation ou autre chose après la réponse ? Pour ce faire, nous pouvons utiliser deux blocs de jointure ensemble. Donc, d'abord, déplaçons le bloc de réponses hors du bloc de jointure pour le moment, et maintenant prenons un autre bloc de jointure et utilisons-le comme deuxième entrée de ce bloc de jointure. Nous pouvons maintenant utiliser le bloc de réponses comme première entrée du nouveau bloc de jointure et taper un point d'exclamation dans le second Donc, tout cela va d' abord joindre la réponse au point d' exclamation, puis il rejoindra l'espace Yom au début de Très bien maintenant, prenons tout cela et utilisons-le comme entrée de texte dans le bloc Save four. Enfin, essayons-le. Lancez le projet, appuyez sur la touche espace, saisissez notre nom et appuyez sur le centre. Sympa. Pour encore plus de fun, nous pouvons également demander à Scratchcat d'émettre un son Si nous regardons à nouveau dans l'onglet sons, Scratchcat n'a qu'un seul son qui est un miaou, et pour l'utiliser, nous devons retourner onglet code et dans la Ici, nous avons à la fois un bloc « play sound until done » et un bloc « start sound block ». Parfois, nous voulons qu' un sprite joue un son et ne fasse rien d'autre tant que le son n'est pas terminé Mais pour l'instant, nous voulons simplement commencer à émettre un son et faire en sorte que tout fonctionne normalement. Faisons donc glisser un bloc audio de départ et le plaçons en dessous des quatre blocs sécurisés. Si nous essayons maintenant, Scratch Cat nous accueille à nouveau, mais il ne miaule qu' après les deux secondes d' attente que nous avons fixées ici après les deux secondes d' attente que nous avons fixées Mettons donc plutôt le bloc audio de départ au-dessus des quatre blocs sécurisés. Et essayons-le. Bien mieux. J'écrirai encore une chose avant de terminer cette leçon. Revenons à la catégorie des capteurs. Comme nous l'avons vu précédemment, nous avons ici ces blocs de forme hexagonale pour vérifier si une touche est enfoncée ou si le bouton de la souris est enfoncé. De tels blocs hexagonaux sont appelés blocs booléens. Un booléen est toujours vrai ou faux. Par exemple, lorsque la touche espace est enfoncée dans le bloc, chaque fois que vous appuyez sur la touche espace, le bloc aura la valeur true. Sinon, il aura la valeur false, et nous pouvons utiliser cette valeur pour décider d' effectuer ou non une action particulière. Afin de vérifier la valeur d'un bloc booléen, nous devons utiliser un bloc conditionnel Les blocs de conditions affectent le flux ou le contrôle de notre projet, ils sont donc situés dans la catégorie de contrôle. Les blocs de condition ont tous des ouvertures hexagonales vides à utiliser avec les blocs booléens Nous avons un bloc I puis bloc S, attendez jusqu'au blocage et répétez jusqu'au blocage. Avec le bloc ITN, nous ne pouvons effectuer une ou plusieurs actions que si une certaine condition est vraie Avec if then else, nous pouvons effectuer certaines actions si une condition est vraie et d'autres actions si elle est fausse. Avec attendre jusqu'à ce que nous puissions suspendre un script jusqu'à ce qu'une certaine condition soit remplie, et avec répéter jusqu'à ce que nous puissions répéter des actions jusqu'à ce qu'une certaine condition soit remplie. Ainsi, si nous voulions, par exemple, faire en sorte que Scratch cat fasse quelque chose uniquement lorsqu'une certaine touche est enfoncée, nous pouvons d' abord introduire un bloc ITN. Ensuite, nous pouvons revenir à la détection, saisir un bloc enfoncé sur une touche et l'utiliser comme condition pour le bloc I in. Et comme nous utilisons déjà la touche espace pour le script ici, changeons celle-ci par quelque chose d'autre, comme peut-être la touche flèche vers le haut. Et tant que la flèche vers le haut est enfoncée, nous pouvons demander à Scratchcat de faire quelque chose comme faire demi-tour en cercle Passons donc au mouvement et saisissons l'un des blocs rotatifs, et faisons-le entrer dans le bloc if then. Pour que cela fonctionne, nous devons vérifier en permanence si la touche flèche vers le haut est enfoncée. Donc, ce que nous pouvons faire, c'est saisir tout cela et le placer dans le bloc pour toujours, au-dessus ou en dessous du bloc pointeur de la souris. Si nous cliquons sur le drapeau vert maintenant, Scratch Cat continuera à suivre notre souris comme d'habitude, et si nous maintenons la touche flèche vers le haut enfoncée, il tournera également continuellement de 15 degrés. Nous pouvons également faire en sorte qu'il n'exécute l'action du pointeur de la souris que si nous n'appuyons pas sur la flèche vers le haut. Pour cela, nous devrons remplacer le bloc I thin outs ici par un bloc I thin outs. Revenons d'abord à la catégorie de contrôle, et mettons un bloc I Thinouts dans un espace vide pour le moment. Nous pouvons maintenant extraire le bloc enfoncé sur la touche du bloc I thin outs et l'utiliser comme condition pour le bloc I thin outs. Lorsque vous appuyez sur la flèche vers le haut, nous voulons à nouveau que Scratch cat tourne. Déplaçons le bloc de termes du bloc I thin vers la partie I du bloc I thin outs. Et maintenant, chaque fois que la flèche vers le haut n'est pas enfoncée, Scratch Cat suit notre souris. Nous devrons donc déplacer le bloc de pointeur vers la souris ici dans la partie sorties du bloc I thin outs. Cependant, chaque fois que nous déplaçons un bloc, tous les blocs attachés au bas de celui-ci se déplaceront avec lui. Mais nous n'avons plus vraiment besoin du bloc I Thin, nous pouvons donc le détacher et nous en débarrasser Maintenant, nous pouvons mettre en place le bloc Go to ici, puis nous pouvons saisir tout cela et le fixer à l'intérieur du bloc permanent. Si nous lançons le projet maintenant, Scratch Cat suit notre souris comme d'habitude, mais si nous maintenons la touche flèche vers le haut enfoncée, il arrête de suivre la souris et commence à tourner. Enfin, disons qu'au lieu d'appuyer sur une touche pour faire tourner Scratch cat, nous voulons pouvoir maintenir le bouton de la souris enfoncé. Pour cela, nous pouvons supprimer le bloc enfoncé sur la touche , puis nous pouvons passer à la détection et le remplacer par un bloc situé vers le bas de la souris. Si nous l'exécutons maintenant et que nous cliquons et maintenons le bouton enfoncé dans la scène, cela fonctionne pendant quelques secondes, mais Scratch Cat cesse de tourner. Cela est dû au fait que nous cliquons sur le sprite ici dans la phase Scratch pense donc que nous essayons de repositionner le sprite et met le projet en pause pendant que nous le Cela ne se produit en fait que lorsque nous travaillons dans l'éditeur de scratch. Donc, si nous arrêtons le projet et que nous passons en mode plein écran en cliquant sur le bouton ci-dessus, nous ne sommes plus dans l'éditeur de scratch et nous ne pouvons pas cliquer et faire glisser un sprite sur la scène Maintenant, si nous lançons le projet, nous pouvons maintenir le bouton de la souris enfoncé et faire tourner Scratch Cat jusqu'à l'éternité. 5. Clones et variables: Avant de commencer à créer nos jeux, il y a deux autres fonctionnalités de scratch très importantes que nous devons découvrir à propos des clones et des variables Tout d'abord, les clones nous permettent de créer plusieurs copies d' un même sprite et de faire en sorte que ces copies soient déplacées séparément et fassent différentes choses Cela est particulièrement important dans les jeux où nous pouvons avoir une douzaine d'ennemis similaires qui courent partout et où des balles volent partout, et il ne serait pas logique créer un sprite distinct pour chacun Très bien, voyons donc comment nous pouvons utiliser créant des clones de notre chat à gratter Trustee Tout d'abord, pour utiliser des clones, nous devons entrer dans la catégorie de contrôle. En bas, nous avons trois blocs pour traiter les clones. Lorsque je commence en tant que clone, créez un clone de et supprimez ce clone. Pour créer un clone d'un sprite, nous utilisons le Create Clone of block. Il est actuellement dit de créer un clone de moi-même, et si nous avions d'autres sprites dans le projet, nous les verrions également dans la liste Cependant, comme nous n'avons que Scratch Cat, nous ne pouvons que lui faire créer un clone de lui-même. Maintenant, si nous déplaçons Scratch Cat quelque part dans la scène pour mieux le voir et que nous cliquons sur le bloc Crate clone of myself, il ne semble pas qu'il se soit passé quoi que ce soit, mais si nous le déplaçons à nouveau, nous pouvons voir que nous avons maintenant deux scratch cats. Celui-ci est l'original et celui-ci est un clone. Et chaque fois que nous cliquons sur le CrakkloneBlock, il crée un nouveau Maintenant, si nous voulons qu'un clone effectue une action après sa création, nous devons introduire un bloc When I start en tant que clone. Ajoutons également un bloc Create clone of myself dans la zone de code afin qu'il soit plus facile d'accès. Le script when I start as a clone sera automatiquement déclenché chaque fois que nous créerons un nouveau clone de Scratch Cat. Ainsi, si nous voulions, par exemple, déplacer chaque clone vers la droite d'un certain nombre d'étapes, nous pourrions passer au mouvement, saisir une modification X par bloc et dessous du point de départ en tant que bloc de clonage. La valeur d'entrée par défaut est dix. Donc, si nous cliquons sur le bloc Create Clone, il crée un clone directement derrière le Scratch cat original, et le clone se déplace immédiatement vers la droite de dix étapes. Si nous cliquons à nouveau sur le bloc, rien ne semble s'être passé, mais comme nous sommes toujours en train de créer clones du chat Scratch original, qui se trouve toujours à cette position, nous avons maintenant deux clones situés dix pas à droite de l' Éloignons les deux clones pour le moment. Si nous voulons que chaque clone se déplace de dix pas vers la droite du clone précédent, au lieu de cloner uniquement le scratch cat original, nous devrons créer un clone de chaque clone Pour ce faire, nous pouvons passer au contrôle. Et ajoutez un bloc de création d'un clone de moi-même au bas du script When I start as a Clone. Ce qui va se passer maintenant, c'est que chaque fois qu'un clone est créé, lorsque je démarre en tant que clone, un script s'exécute, provoquant le déplacement du clone vers la droite dix étapes, puis créant un clone de lui-même. Le script s'exécutera ensuite à nouveau pour le nouveau clone, qui effectuera dix étapes supplémentaires et créera un clone de lui-même, etc. Cependant, avant d'essayer, nous avons un problème. Comme rien dans le script ne lui indique quand il doit s'arrêter, il continuera simplement fonctionner en permanence en créant de nouveaux clones. Donc, ce que nous pouvons faire, c'est faire en sorte que le bloc de création de clone dans le script ne s'exécute que si une certaine condition est vraie. Par exemple, nous pouvons vérifier si l'exposition actuelle des clones est inférieure à une certaine position sur la scène, et si c'est le cas, nous allons créer un nouveau clone Sinon, nous ne créerons pas de nouveau clone et, par conséquent, le script When I start as a clone ne sera pas exécuté à nouveau. OK, donc pour ce faire, introduisons un bloc I Thin et enroulons-le juste autour du bloc Create clone of myself. Pour ce qui est de la condition, nous voulons vérifier si l'exposition du clone actuel est inférieure une certaine exposition sur scène, peut-être 150. Pour cela, nous devons passer à la catégorie des opérateurs et utiliser un bloc inférieur comme condition pour le bloc I thin. Pour obtenir la position X ou Y du clone actuel, nous pouvons passer au mouvement, et ici, nous avons des blocs de position et de position Y. Nous voulons bien sûr la position, alors prenons-en une et utilisons-la comme première entrée du bloc inférieur à. Voyons s'il est inférieur à 150. Ainsi, lorsque le script s'exécute, il ne crée un nouveau clone que si l'exposition du clone actuel est inférieure à 150. Et pour essayer, nous pouvons cliquer sur l'autre bloc Create Clone ici. Sympa. Il crée et déplace les clones en continu jusqu'à atteindre une exposition de 150 Maintenant, si nous voulons ralentir un peu, nous pouvons aller dans Control et récupérer un bloc de poids, et nous pouvons le placer à peu près n' importe où dans les scripts. Un poids d'environ 0,1 seconde devrait être bon. Essayons-le. Mais nous avons un problème. Il a créé les nouveaux clones, mais nous ne pouvions pas vraiment les voir car il n'avait pas d'abord supprimé les clones précédents Nous verrons comment utiliser le code pour supprimer des clones en un instant. Mais pour l'instant, le plus simple est de cliquer sur le drapeau vert. Et comme nous avons toujours le script drapeau vert de la leçon précédente, Scratch Cat suit maintenant notre curseur allons donc cliquer sur le bouton Stop et le déplacer quelque part en bas. Maintenant, si nous cliquons sur le bloc Create Clone, nous pouvons voir que le script fonctionne comme prévu. OK. Revenons maintenant au script du drapeau vert, et retirons le bloc I thin outs du bloc pour toujours. Replaçons ensuite le bloc du pointeur de la souris dans le bloc permanent, et nous pourrons nous débarrasser du bloc I thin outs maintenant. Débarrassons-nous également de tous les blocs contenus dans le script When I start as a clone. Enfin, déplaçons le bloc Create Clone ici dans le bloc Forever. Que pensez-vous qu'il se passera si nous cliquons sur le drapeau vert maintenant ? Waouh, c'est fou. Scratch Cat suit notre curseur, et nous créons continuellement des clones de lui sur toute la scène D'accord, c'était amusant, mais arrêtons le projet pour le moment Supposons qu'après avoir créé chaque clone, nous aimerions qu'il disparaisse rapidement pour créer un effet de traînée de souris sympa. Pour qu'un sprite apparaisse ou disparaisse, si nous passons à la catégorie Looks, nous avons un effet de changement par bloc et un effet défini sur deux blocs. Pour le moment, ils utilisent tous les deux l'effet de couleur, qui nous permet de changer la couleur d'un sprite Mais un autre effet que nous avons est l'effet fantôme. L'effet fantôme passe de 0 % à 100 %. La valeur par défaut est 0 %, ce qui rend le sprite totalement opaque Mais toute valeur supérieure à 0 % rendra le sprite de plus en plus transparent jusqu'à atteindre 100 %, qui signifie qu'il est complètement transparent et qu'il n'est plus visible sur la scène Donc, si nous choisissons l'effet fantôme, déplaçons à nouveau Scratch cat quelque part en bas et que nous cliquons sur le bloc de modification de l'effet fantôme, il devient transparent à 25 %. Si on clique à nouveau dessus, il devient 50 % transparent, depuis 75 % et enfin 100 %, ce qui le rend invisible. Pour le ramener, nous devons diminuer l'effet fantôme en utilisant une valeur négative ici. Cependant, un moyen plus rapide de le ramener à la normale est de cliquer sur le bloc d'effets graphiques transparents ici. Cela rétablit les valeurs par défaut de tous les effets graphiques . Très bien, donc si nous voulons modifier l' effet fantôme de chaque clone, nous devrons récupérer un bloc d'effet fantôme et le mettre dans le script When I start as a clone. Cependant, nous voulons que les clones deviennent progressivement de plus en plus transparents, nous devrons donc répéter le bloc un certain nombre de fois Cela signifie que nous devons passer au contrôle et saisir un bloc de répétition, et l'enrouler autour du bloc d'effet Change Ghost. Comme cela fonctionne en pourcentage, si nous voulions changer l'effet fantôme de 10  % à chaque fois, pour que changer l'effet fantôme de 10  % à chaque fois, le clone devienne totalement transparent, nous devrons répéter dix fois et modifier l'effet fantôme 10 % car 10  % fois dix égale 100 % OK, essayons-le. Génial. Nous avons cependant un problème. Scratch ne nous permet en fait d'avoir qu'un total de 300 clones sur scène à la fois. Nous finirons donc par atteindre un point où il cessera de créer des clones. Et la raison en est que même si nous ne pouvons pas voir les clones, ils existent toujours sur scène Ils ne sont tout simplement pas visibles. Si nous voulons savoir combien de clones nous avons sur scène à un moment donné, nous pouvons suivre le nombre contenu dans une variable Les variables, par définition, peuvent stocker valeurs modifiables et pour les créer et y accéder, nous utilisons la catégorie des variables des blocs Et ici, nous pouvons créer des variables uniques et créer une liste de variables. Nous pouvons également voir ici un bouton créer un bloc, qui appartient en fait à la catégorie Mbloxs et qui nous permet de créer des blocs personnalisés Nous verrons comment procéder, apprendrons à créer une liste de variables un peu plus tard dans le cours. Mais pour l'instant, nous n'avons besoin que d'une seule variable. Et pour en créer une, nous cliquons sur le bouton Créer une variable. Ici, nous pouvons donner un nom à la variable, et nous pouvons choisir de la créer pour tous les sprites ou uniquement pour ce sprite Si nous optons pour tous les sprites, la variable devient une variable globale, ce qui signifie essentiellement que sa valeur sera accessible à tous les sprites du projet En revanche, si nous choisissons ce sprite uniquement, il devient une variable locale ou privée, et seul le sprite actuel pourra définir ou modifier sa Lorsque nous commencerons à créer des jeux, chaque personnage aura probablement des attributs que nous voulons garder séparés des autres personnages. Par exemple, chaque type d' ennemi peut avoir une vitesse différente. Dans ce cas, nous voudrions utiliser des variables locales, mais il se peut qu'il y ait d'autres attributs que tous les personnages devraient partager, comme la gravité, de sorte que lorsque les personnages sautent, gravité les fait redescendre au même rythme. Dans ce cas, nous voudrions faire de la gravité une variable globale. Vous pensez peut-être que puisque nous n'avons qu' un seul sprite, nous devrions utiliser une variable locale pour suivre le nombre de clones Le problème, cependant, est que les clones sont en fait traités comme des sprites distincts dans Et comme nous allons avoir besoin de chaque clone pour pouvoir modifier la valeur de la variable, nous devrons en faire une variable globale. Continuons donc pour tous les sprites. Maintenant, lorsque je nomme une variable, j'aime utiliser toutes les lettres minuscules pour variables locales et toutes les majuscules pour les variables globales Ce n'est pas obligatoire, mais cela permet de savoir facilement si une variable est locale ou globale simplement en la regardant dans nos scripts. Il est également judicieux de donner à une variable un nom qui indique exactement à quoi elle sert, car cela facilitera également la lecture et la compréhension de nos scripts OK, donc parce que nous allons stocker le nombre de clones dans la variable et parce qu'elle va être globale, nous pouvons l'appeler un peu comme le total des clones en majuscules Bien, si nous cliquons sur le bouton OK, nous avons maintenant une variable de total de clonage dans la liste ici. De plus, scratch crée en fait une variable par défaut dans chaque projet appelée variable M. Cela ne posera aucun problème si nous conservons la variable, mais si nous voulons la supprimer, nous pouvons le faire en cliquant dessus avec le bouton droit de la souris et en choisissant Supprimer. Juste à côté de la variable clone total, nous avons une case à cocher, qui est cochée par défaut Cela signifie simplement qu' il affiche le nom de la variable ainsi que sa valeur à l'intérieur de la scène, et que nous pouvons cliquer dessus et la faire glisser si nous le voulons. De plus, si nous cliquons dessus avec le bouton droit de la souris, nous pouvons modifier l'apparence. Par exemple, les grands affichages masquent le nom et agrandissent la partie valeur Le curseur ajoute un curseur en bas, lequel nous pouvons cliquer et faire glisser pour modifier la valeur de la variable Si nous cliquons à nouveau avec le bouton droit de la souris, nous avons maintenant une option de modification de la plage du curseur qui nous permet modifier les valeurs minimales et maximales que nous pouvons définir à l'aide du curseur Cependant, nous n'avons pas besoin de le faire pour le moment allons donc cliquer sur Annuler et rétablir l'affichage par défaut en cliquant à nouveau dessus avec le bouton droit de la souris et en choisissant des affichages normaux Enfin, si nous voulons masquer la variable, nous pouvons soit cliquer à nouveau avec le bouton droit de la souris et choisir masquer, soit simplement décocher la case à côté la variable dans la palette de blocs. Mais nous voulons vraiment voir la valeur de la variable, alors cochons à nouveau la case. Bien, voyons maintenant comment nous pouvons réellement faire fonctionner notre nouvelle variable. Ce que nous voulons faire, c'est que chaque fois que nous créons un nouveau clone, nous voulons augmenter la valeur de la variable d'une unité. Pour cela, nous utilisons une modification du total des clones d'un bloc. Alors prenons-en un, et mettons-le juste en haut de la page lorsque je commencerai en tant que script de clonage. Nous ne voulons certainement pas le mettre dans le bloc de répétition car il modifiera ensuite la variable dix fois pour chaque clone. OK, et ce que fera ce bloc, c'est qu'il ajoutera un à la valeur de la variable total du clone chaque fois qu'un clone est créé. Si nous essayons maintenant, nous pouvons voir que la valeur du total des clones augmente continuellement d'un. C'est-à-dire que jusqu'à ce qu'il atteigne 300, il cesse d'augmenter. Cela signifie que dès que nous atteignons 300 clones, le script lorsque je démarre en tant que clone ne s'exécute plus jamais Heureusement, nous pouvons régler ce problème assez facilement. Lorsque le bloc de répétition d'un clone est terminé, rendant le clone totalement transparent, il suffit de le supprimer. Mais d'abord, si nous arrêtons le projet et le relançons, la variable du total des clones commence à 300 et augmente à partir de là. Cela est dû au fait que scratch ne réinitialise pas automatiquement la valeur d'une variable à chaque fois que nous exécutons un projet. Nous devons plutôt le faire nous-mêmes, et nous pouvons le faire en utilisant un total de clones fixé à zéro bloc. Nous voulons le faire chaque fois que nous cliquons sur le drapeau vert, et nous voulons le faire avant la boucle permanente qui crée continuellement de nouveaux clones. Prenons donc un total de clones défini à zéro, et placons-le juste au-dessus du bloc permanent. Chaque fois que nous exécutons le projet maintenant, la valeur du total des clones est remise à zéro. Bien maintenant, pour supprimer un clone, nous devons aller dans Control et ici nous avons supprimé ce bloc de clone. Prenons-en un et placons-le au bas du bloc de répétition dans le script When I start as a clone. Maintenant, dès que le bloc de répétition se termine et que le clone devient invisible, la suppression de ce bloc de clonage s' exécute et le clone est supprimé. OK. Et chaque fois que nous supprimons un clone, nous voulons également diminuer la valeur totale du clone d' une unité afin que la valeur reste précise. Pour cela, nous devons revenir aux variables et introduire un autre bloc total de clones de modification. Nous ne pouvons cependant pas le placer en bas du bloc de suppression de ce clone, car un clone ne peut rien faire d'autre une fois qu'il a été supprimé. Mettons-le donc juste entre le bloc de suppression de ce clone et le bloc de répétition. Cette fois, nous voulons diminuer le nombre total de clones d'une Utilisons donc un nombre négatif comme entrée. Si nous exécutons le projet maintenant, nous pouvons constater que le nombre total de clones ne dépasse jamais neuf. La valeur à laquelle il s'arrête dépend de la rapidité ou de la lenteur avec laquelle nous faisons disparaître chaque clone. Par exemple, si nous passons le nombre de répétitions à 20 et que nous modifions l'effet fantôme par cinq, nous aurons désormais au maximum 19 clones sur scène à la Très bien, et encore une chose avant de terminer cette leçon. Vous avez peut-être remarqué qu' après avoir modifié quelque chose dans notre projet, nous obtenons ce lien Enregistrer maintenant en haut à droite de l'en-tête. Nous pouvons cliquer dessus pour enregistrer le projet manuellement. Mais pendant que nous travaillons sur le projet, Scratch enregistrera automatiquement le projet à plusieurs reprises pour nous. Ainsi, à moins que nous ne prévoyions de fermer le navigateur après avoir apporté certaines modifications que nous souhaitons conserver, nous n'avons généralement pas à nous soucier de l'enregistrement manuel de nos projets. C'est bon. Avec tout cela, je pense que nous avons une assez bonne idée de ce que nous pouvons faire avec zéro maintenant. Mettons-nous donc au travail pour créer des jeux géniaux. 6. Introduction à Smack Some Moles: Le premier jeu que nous allons créer est un clone de Waka Mole appelé SMCamles Comme Waka Mole, le but du jeu sera frapper autant de taupes que possible avant la fin du temps Cependant, dans SMCamles, la difficulté augmentera à mesure que le joueur marque de plus en plus de Cela semble être un jeu simple, mais les techniques que nous apprendrons lors de sa création seront incroyablement utiles lorsque nous commencerons à développer des jeux plus complexes plus tard dans le cours. Ces techniques incluront la création de sprites personnalisés, diffusion et la réception de messages entre les sprites, création de blocs personnalisés et l'utilisation d'effets sonores Très bien, commençons. 7. Dessiner le sprite marteau: Nous pouvons enfin passer à autre notre projet Scratch Basics et commencer à créer un nouveau projet. Pour ce faire, nous pouvons aller dans le menu Fichier et choisir nouveau. Et allons-y et renommons le projet pour en faire des taupes OK. Et pour ce projet, nous n'aurons pas besoin de Scratchcat Nous pouvons donc le supprimer en cliquant sur le bouton représentant une corbeille à côté de lui dans le volet Sprite Au revoir, Scratchcat. Pour le remplacer, nous avons plusieurs options. Comme nous pouvons le voir si nous survolons le bouton Choisir un Sprite en bas Nous pouvons télécharger un sprite depuis notre ordinateur. Nous pouvons demander à Scratch de nous surprendre avec un sprite aléatoire. Nous pouvons créer nos propres sprites et choisir parmi une variété de sprites que Scratch nous fournit Si nous cliquons sur cette option ou si nous cliquons simplement sur le bouton lui-même, cela nous amène à cette page où nous pouvons voir tous les sprites disponibles que nous pouvons utiliser dans nos projets Nous pouvons également choisir de ne voir que les sprites d' une catégorie particulière et nous pouvons rechercher un sprite en particulier Il y a en fait de très bons sprites ici et nous en utiliserons tout au long du cours Mais pour un jeu de taupe, nous avons vraiment besoin d' un marteau et si nous essayons de le chercher, égratignure apparaît en blanc Cela signifie donc que nous devrons apprendre à créer nos propres sprites Pour ce faire, cliquez sur le bouton Retour ici pour revenir à l'éditeur de scratch. Et maintenant, passons à nouveau le curseur sur le bouton Choisir un Sprite. Et cette fois, choisissons la peinture. cliquer sur Paint crée un nouveau sprite pour nous dans la peinture Sprite, appelé Sprite Puisque ce sera notre marteau sprite, allons-y et changeons le nom en marteau OK. Et si nous regardons ici dans l'onglet costumes, nous pouvons voir que le sprite a un costume par défaut, qui pour le moment est complètement vide Alors, réglons ça. Pour dessiner un costume pour un sprite, nous disposons d'un certain nombre d'outils avec lesquels nous pouvons travailler Nous avons l' outil de sélection pour sélectionner, déplacer et redimensionner des objets Nous avons l'outil de remodelage pour remodeler les choses. Nous avons le pinceau pour dessiner des traits de pinceau, l'outil gomme pour effacer des parties de costumes, l'outil de remplissage pour colorer les objets, l'outil texte pour écrire du texte, l'outil trait pour dessiner des lignes les outils cercle et rectangle pour dessiner des cercles et outils cercle et rectangle pour dessiner des cercles et Pour un marteau, nous aurons besoin d' un beau grand rectangle pour frapper les taupes Choisissons donc l'outil rectangle. Maintenant, ici, nous avons deux options pour définir la couleur du rectangle. remplissage fait référence à la couleur qui remplira l'intérieur de la forme et contour fait référence à la couleur d' un contour que nous pouvons placer autour de la forme, et nous pouvons spécifier la largeur du contour à l'aide de cette case. Pour l'instant, voyons comment modifier la couleur de remplissage en cliquant sur la flèche à côté du remplissage. Et ici, nous avons trois curseurs avec lesquels nous pouvons travailler pour obtenir la couleur exactement comme nous le souhaitons Tout d'abord, nous avons la couleur, qui fait référence à la couleur réelle comme le rouge, orange, le jaune, le vert, le bleu, etc. Ensuite, nous avons la saturation, qui fait référence à la pureté de la couleur. faire glisser vers la gauche ajoute de plus en plus de blanc à la couleur et le placer complètement sur la droite supprime tout le blanc de la couleur. Enfin, nous avons la luminosité qui, à mesure que nous la diminuons, ajoute du noir à la couleur pour l'assombrir Je vais faire en sorte que mon rectangle soit rouge pur. Pour ce faire, je vais mettre la couleur sur zéro et utiliser 100 pour la saturation et la luminosité. OK, maintenant, si nous cliquons sur la flèche à côté du contour, nous avons les mêmes curseurs pour définir la couleur du contour Cependant, nous n'avons pas réellement besoin d'un contour pour le rectangle Nous pouvons donc le désactiver complètement en cliquant sur le bouton rouge Ford ici C'est exactement la même chose que définir la largeur du contour sur zéro. Nous avons également le même bouton pour la couleur de remplissage au cas où nous voudrions créer une forme avec uniquement un contour ou sans couleur du tout, la rendant invisible. Maintenant, pour dessiner un rectangle, passons au canevas et avant de commencer, zoomons un peu sur le canevas pour voir ces petits carrés en damier mieux voir ces petits carrés en damier, ce qui nous aidera à dimensionner correctement les formes Pour zoomer, nous pouvons soit cliquer sur ce bouton avec la loupe et le signe plus , soit maintenir la touche Ctrl ou Commande enfoncée et faire défiler la molette de la souris vers le haut Ça devrait être une bonne chose. Et pour commencer à dessiner le rectangle, on clique et on fait glisser et pour finir de le dessiner, on relâche la souris. Maintenant, nous pouvons également voir le rectangle sur la scène. Nous avons également ces petits cercles aux coins et aux côtés du rectangle. Si nous les cliquons et les faisons glisser , nous pouvons les redimensionner. Si vous ne voyez pas les cercles, le fait de passer à l'outil sélection et de sélectionner le rectangle devrait les faire apparaître. En utilisant également l'outil de sélection, nous pouvons déplacer le rectangle. Nous pouvons cliquer sur une zone vide du canevas pour la désélectionner, et nous pouvons cliquer à nouveau dessus pour la resélectionner Nous avons également ces deux petites flèches en bas au centre. curseur dessus, nous transformons notre curseur en main, et si nous cliquons et faisons glisser le rectangle, nous pouvons faire pivoter le rectangle Cependant, nous ne voulons pas vraiment faire pivoter le rectangle, alors annulons cela. Pour annuler une action précédente, nous pouvons soit cliquer sur ce bouton d'annulation ici, soit appuyer sur Ctrl ou Commande Z. Cela peut également, pour une raison ou une autre, annuler le changement de nom du sprite Changeons donc à nouveau le nom en marteau. Et avec le rectangle sélectionné, nous pouvons également venir ici et changer la couleur si nous le voulons. Mais je vais m'en tenir au rouge pour moi. Je vais maintenant redimensionner mon rectangle pour qu'il fasse environ 16 blocs de haut et 11 blocs de large Chaque bloc a une largeur et une hauteur de quatre pixels. Si nous regardons les costumes, le costume actuel de mon sprite, qui se compose actuellement uniquement d' un rectangle, mesure 43 pixels sur 63 pixels Si je fais en sorte que le rectangle couvre exactement 11 carrés sur 16 carrés, la taille devient exactement 44 pixels sur 64 pixels. Mais dans tous les cas, il n' est pas nécessaire que la taille soit parfaite et n'hésitez pas à utiliser quelque chose de plus grand ou de plus petit si vous le souhaitez. Maintenant, nous devons donner un manche au marteau. Pour cela, nous pouvons utiliser l'outil linéaire. L'outil de ligne ne fonctionne qu'avec la couleur du contour et ignore complètement la couleur de remplissage Allons donc ici et définissons la couleur du contour comme bon nous semble. abord, pour voir toutes les couleurs, il faut augmenter la luminosité. Je vais choisir le jaune pour le mien. Et avec une largeur de contour d'un, la ligne va être assez vacillante. Alors, réduisons-le à environ 16. Commençons maintenant à créer la ligne quelque part près du centre vertical du rectangle, mais à environ deux ou trois blocs à gauche du rectangle. Maintenant, en cliquant et en faisant glisser, nous pouvons créer une ligne. Mais pour le moment, elle évolue dans toutes les directions. Si nous voulons tracer une ligne parfaitement droite, nous pouvons maintenir la touche Shift enfoncée. Je vais faire en sorte que le mien s'étende environ 15 blocs du côté droit du rectangle. Mais encore une fois, rien de tout cela ne doit être parfait. Le marteau a maintenant un manche, mais comme nous l'avons dessiné après le rectangle, il apparaît sur le dessus. Il doit plutôt se trouver derrière le rectangle pour donner l'impression qu'il traverse le rectangle et dépasse de l'autre côté. Pour modifier l' ordre de dessin des formes, nous devons d'abord utiliser l' outil de sélection et sélectionner l'une des formes. Maintenant, ici, nous avons ces quatre boutons. L'avant l'amènera au-dessus d'une forme unique, arrière l'enverra en dessous d'une seule forme, avant l'amènera au-dessus toutes les autres formes et arrière l'enverra en dessous de toutes les autres formes. Comme le rectangle sélectionné et que je souhaite le placer au-dessus de la ligne, je peux cliquer sur le bouton avant ou sur le bouton avant. Cela ressemble certainement plus à un marteau maintenant. OK, il nous reste encore une chose à faire pour terminer la création du costume de Hammer Sprites pour le moment Tout d'abord, sélectionnons les deux objets du marteau. Pour ce faire, à l'aide de l'outil de sélection, nous pouvons commencer à cliquer et glisser le pointeur dans une zone vide, ce qui crée une zone de sélection, et tous les objets qui se trouvent à l'intérieur ou touchent la boîte lorsque nous qui touchent la boîte lorsque nous relâchons la souris seront sélectionnés Ou si nous désélectionnons tout, nous pouvons sélectionner l'un des objets, puis maintenir la touche Maj enfoncée et cliquer sur l'autre objet pour le sélectionner également Maintenant, si nous commençons à déplacer les objets, nous verrons un petit réticule au centre de la toile. Cela représente le centre du costume. Chaque fois que le sprite utilise le costume, si nous faisons quelque chose comme faire pivoter le sprite, cela se produira à peu près à ce moment-là C'est également le point qui sera centré autour du curseur de notre souris si nous faisons en sorte que le sprite suive le curseur Nous pourrons toujours le réajuster plus tard, mais je trouve que placer le centre près du point médian, sur le côté long du manche, fonctionne plutôt bien OK. Une fois cela fait, nous sommes prêts à commencer à coder les sprites du marteau, et nous le ferons dans la prochaine leçon 8. Coder le sprite marteau: Pour commencer à coder le hammer sprite, allons dans l'onglet Code Tout d'abord, dès que nous cliquons sur le drapeau vert, nous voulons que le marteau commence immédiatement à suivre le curseur de la souris. Comme nous l'avons vu dans le projet Scratch Basics, nous pouvons le faire en participant d'abord à des événements et en obtenant un bloc gagnant sur le drapeau vert Et comme nous voulons que le marteau suive continuellement la souris, nous devons passer au contrôle et introduire un bloc permanent, en faisant claquer au bas du bloc drapeau vert Maintenant, pour que le marteau suive la souris, nous passons au mouvement, saisissons un bloc de position aléatoire, le plaçons dans le bloc permanent et le changeons pour passer au pointeur de la souris. Si nous lançons maintenant le jeu, le marteau suit notre curseur. Génial. Et comme nous pouvons le constater, le point touché par le curseur est le même que le point central que nous avons défini pour le costume du marteau. De plus, si nous arrêtons le jeu et que nous faisons glisser le marteau un peu vers le bas pour le voir, si nous le faisons pivoter en utilisant la case de direction dans le volet des sprites, il pivote également autour des points centraux Et en fait, nous voulons que le marteau commence par être légèrement incliné vers le haut, car lorsque le joueur clique sur la souris, nous le faisons rapidement pivoter vers le bas à 90 degrés, puis nous le faisons reculer Allons-y donc avec une direction de départ de 130. Si nous lançons le jeu maintenant, le marteau reste dans une direction de 130. Très bien, donc pour faire tourner le marteau lorsque nous cliquons sur la souris, nous devons d'abord vérifier si nous cliquons sur la souris Pour ce faire, nous devons passer à la détection et introduire un bloc vers le bas de la souris. Comme nous l'avons appris dans le projet Scratch Basics, il s' agit d'un bloc booléen dont la valeur est vraie ou fausse C'est vrai lorsqu'un bouton de la souris est enfoncé et faux lorsqu' aucun bouton n'est enfoncé. Donc, pour utiliser réellement la valeur des blocs, nous devons également passer au contrôle et introduire un bloc if then et utiliser le bloc de la souris comme condition. Ainsi, tout ce que nous mettons dans le bloc if then ne fonctionnera que si le bouton de la souris est enfoncé. Nous voulons que deux choses se produisent lorsqu'un bouton de la souris est enfoncé. abord, nous voulons que le marteau tourne de sa direction de départ de 130 à 90 pour que la partie rectangulaire soit parfaitement verticale. Ensuite, nous voulons qu'il tourne à nouveau jusqu'à 130. Et nous utiliserons une animation rapide pour ces rotations. Commençons par la partie descendante. Pour cela, introduisons d'abord un bloc de répétition et le plaçons dans le bloc if then. Nous voulons que l'animation soit assez rapide. Faisons en sorte que cela ne se répète que deux fois. Ensuite, nous voulons faire pivoter le marteau dans le sens antihoraire. Passons au mouvement, un bloc rotatif dans le sens antihoraire et placez-le dans le bloc de répétition OK. Et pour changer la direction du marteau de 130 à 90, nous devons le faire pivoter de 40 degrés au total Comme nous répétons le bloc deux fois, nous devons faire tourner le marteau de moitié de 40 à chaque fois. Donc 20. Maintenant, pour remettre le marteau dans une direction de 130, il suffit de refaire tout cela, mais en sens inverse. Passons donc à nouveau au contrôle et introduisons un autre bloc de répétition, et placons-le juste en dessous de l' autre tout en restant dans le bloc if then. Et n' oublions pas d'utiliser deux comme nombre de répétitions pour celui-ci également Cette fois, nous devons faire pivoter le marteau dans le sens des aiguilles d'une montre. Passons au mouvement, un bloc rotatif dans le sens des aiguilles et placez-le dans le bloc de répétition vide Encore une fois, tournons-le de 20 degrés à chaque fois. Maintenant, pour exécuter tout ce script, nous devons effectuer en permanence la vérification avec le bouton de la souris. Cela signifie que nous devons prendre le contrôle, prendre un bloc permanent et enrouler autour de l' ensemble du bloc if then. Si nous cliquons sur le script, nous pouvons maintenant cliquer à l'intérieur de la scène pour voir notre animation et notre action. Plutôt cool. Nous avons cependant quelques problèmes. Tout d'abord, si nous maintenons le bouton de la souris enfoncé, le marteau sera continuellement mis à jour sans jamais s'arrêter. Cela est dû au fait que le bouton bas de la souris devient non seulement vrai lorsque nous cliquons sur la souris, mais il le reste également jusqu'à ce que nous relâchions la souris. Un autre problème est que, comme nous l'avons appris précédemment dans le cours, si nous cliquons et maintenons sur un sprite à l'intérieur de la scène, Scratch pensera que nous essayons de déplacer le sprite Nous avons également appris que cela ne se produit que lorsque nous sommes dans l' éditeur Scratch et que nous pouvons empêcher cela de se produire en passant en plein écran. Cependant, lors du test du jeu, devoir constamment basculer entre plein écran et l'éditeur de scratch peut devenir assez fastidieux Donc, ce que nous pouvons faire, c'est faire en sorte que le fait d'appuyer sur une touche particulière, comme la touche espace, anime également le marteau C'est généralement une bonne idée de toute façon, car certains joueurs préfèrent utiliser le clavier plutôt que la souris pour effectuer certaines actions. Bien, arrêtons donc le jeu et pour obtenir le bloc ITN ici, afin de lancer également le jeu si une touche est enfoncée, nous devions non seulement vérifier si le bouton de la souris était enfoncé, mais également si une certaine touche était Passons d'abord à la détection, saisissons bloc enfoncé sur une touche et plaçons-le dans un espace vide pour le moment. Comme ce sera la seule clé que nous utiliserons dans le jeu, nous pouvons choisir à peu près la touche que nous voulons. Mais l'espace est facile à retenir, alors c'est ce que je vais choisir. Nous devons maintenant vérifier les valeurs du bloc enfoncé de la souris et du bloc enfoncé sur les touches. Pour cela, si nous passons à la catégorie des opérateurs, nous avons le choix entre le bloc et et le bloc ou. Essayons d'abord le bloc and. Nous pouvons en apporter un dans un espace vide ici. Ensuite, nous pouvons utiliser le bloc vers le bas de la souris comme l'une des entrées de condition et le bloc enfoncé sur la touche comme autre. Utilisons maintenant le bloc entier et comme condition pour le bloc if then. Et essayons-le en cliquant sur le script. Si nous cliquons à l'intérieur de la scène maintenant, rien ne se passe. Et si on appuie sur la touche espace, il ne se passe toujours rien. Cependant, si nous maintenons le bouton de la souris enfoncé et appuyons simultanément sur la touche espace , le marteau s'anime. La raison en est que pour que la valeur nblock soit vraie, ses deux conditions doivent être vraies Ainsi, si une seule des conditions est fausse, le bloc entier sera faux Pour animer le marteau, tout ce qui compte, c'est que la souris soit enfoncée ou que l'on appuie sur la touche espace, et c'est exactement à cela que sert le bloc or. le cas du bloc or, une seule de ses conditions doit être Dans le cas du bloc or, une seule de ses conditions doit être vraie pour que le bloc entier soit vrai. Introduisons un bloc ou, et déplaçons la souris vers le bas et les blocs pressés du bloc vers le bloc or. Nous pouvons maintenant nous débarrasser du bloc et le remplacer par le bloc or. Si nous exécutons le script maintenant, nous pouvons cliquer à l'intérieur de la scène pour animer le marteau ou appuyer sur la touche espace pour l'animer. Il ne nous reste plus qu'à régler le problème de l'animation constante du marteau lorsque nous maintenons la souris ou la touche espace Car le garder comme ça rendra les choses bien trop faciles pour le joueur. Pour y remédier, après avoir animé le marteau, nous pouvons forcer l'ensemble du script à s'arrêter jusqu'à ce que le joueur n'appuie plus sur bouton de la souris ou sur la touche espace Pour suspendre un script jusqu'à ce qu'une certaine condition soit remplie, si nous passons au contrôle, nous avons l'option d'attente jusqu'au blocage. Allons-y, introduisons-en un et placons-le à l'intérieur du bloc I thin, mais en dessous des blocs de répétition afin qu'il soit exécuté une fois les deux blocs de répétition terminés. Nous voulons que le bloc crée le script, attendez que ni la souris ne soit enfoncée ni que la touche espace ne soit enfoncée. C'est essentiellement le contraire de la condition que nous utilisons pour le bloc ITN. Pour obtenir le contraire d'une condition, si nous passons à la catégorie de l'opérateur, nous avons un bloc de nœuds. Le bloc de nœuds sera vrai lorsque sa condition est fausse et faux lorsque sa condition est vraie Allons-y et ajoutons un bloc à nœuds dans l'attente jusqu'à ce que les blocs conditionnent les entrées Et maintenant, à l'intérieur du bloc de nœuds, nous voulons utiliser exactement le même ou le même bloc que celui que nous utilisons pour la condition « Je bloque ensuite Au lieu de recréer le tout à nouveau, si nous cliquons avec le bouton droit sur ou bloquons, nous avons l'option de dupliquer Si nous choisissons cette option, cela créera une copie du bloc entier, et nous pouvons maintenant placer la copie à l'intérieur du bloc de nœuds. Donc, ce qui se passera ici, c'est que chaque fois que la souris est enfoncée ou que l'on appuie sur la touche espace , le bloc or sera vrai, mais le bloc not sera faux. Et tant que la condition du bloc d'attente est fausse, le bloc s'exécutera en continu, comme une boucle permanente, et bloquera efficacement l'ensemble du script. Mais dès que ni le bouton de la souris n'est enfoncé ni que la touche espace n'est enfoncée, le bloc or devient faux et le bloc not devient vrai, ce qui entraîne l'attente jusqu'à la fin du bloc. Ensuite, le bloc permanent peut recommencer à vérifier si la souris est enfoncée ou si la touche espace est enfoncée. Après cette longue explication , cliquons sur le script pour voir s'il fonctionne réellement. Maintenant, le fait de cliquer dans la scène ou d'appuyer sur la touche espace fonctionne normalement. Mais si nous maintenons bouton de la souris ou la touche espace enfoncé, le marteau s'anime une fois, puis s'arrête Nous devons maintenant relâcher le bouton ou la touche et appuyer à nouveau dessus chaque fois que nous voulons balancer le marteau. Parfait. Maintenant, nous aurions également pu le faire en utilisant un bloc avec deux blocs de boutons comme conditions Ne vous inquiétez pas de suivre cela, car je le supprimerai par la suite Mais juste pour vous montrer ce que je veux dire, je peux d'abord apporter un bloc ANN et le placer dans un espace vide. Maintenant, je vais utiliser un bloc de boutons pour chaque condition. Ensuite, je vais dupliquer le bloc vers le bas de la souris et le placer dans le premier bloc de nœuds. Ensuite, je vais dupliquer le bloc d'appui sur les touches et le placer dans l' autre bloc de nœuds. Je peux maintenant retirer ce bloc de nœuds du bloc d' attente et le remplacer par le bloc. Si je lance le script, il fonctionne exactement de la même manière. En effet, si le bouton de la souris est enfoncé ou si vous appuyez sur la touche espace, l' un des blocs de nœuds sera faux, ce qui rendra le bloc entier faux. Toutefois, si ni le bouton de la souris n'est enfoncé ni la touche espace enfoncée, enfoncé ni la touche espace enfoncée, les deux blocs de nœuds seront vrais, donc le bloc sera également vrai Quoi qu'il en soit, je voulais juste vous montrer une autre façon de faire les choses. Je vais maintenant me débarrasser du bloc AN et recommencer à utiliser le bloc à nœuds. Maintenant que nous avons terminé avec ce script, nous voulons qu'il commence également à s' exécuter chaque fois que nous cliquons sur le drapeau vert. Cependant, il n'est pas possible d'attacher deux blocs permanents ensemble, car celui du bas n' aura jamais la chance de courir. De plus, si nous essayons de déplacer le bloc I then hors d' ici et de le mettre à l'intérieur de ce bloc permanent, cela fonctionne. Mais chaque fois que nous balançons le marteau, il arrête brièvement de suivre le curseur jusqu'à ce que l' animation soit terminée. Une meilleure solution serait d' utiliser deux scripts Green Flag. Pour ce faire, passons aux événements, ajoutons un autre bloc drapeau vert et attachons-le à ce bloc permanent. Maintenant, les deux scripts s'exécuteront lorsque nous cliquerons sur le drapeau vert. Alors essayons-le. OK ? Le marteau suit la souris, et si nous le balançons, il s'anime tout en suivant la souris Excellente. OK, je pense que le marteau a besoin d'une pause pour le moment. Ensuite, nous allons travailler à améliorer l'apparence du jeu en lui dessinant un joli arrière-plan. 9. Dessiner l'arrière-plan: Les arrière-plans des projets Scratch sont appelés arrière-plans, et nous pouvons créer ou ajouter des arrière-plans à l'aide du volet Stage situé à côté du volet Sprite Comme pour les sprites, nous pouvons télécharger une toile de fond, obtenir une au hasard, créer la nôtre ou en choisir une dans la bibliothèque Scratch Si nous cliquons sur cette option, nous pouvons voir que Scratch nous offre de nombreux arrière-plans prédéfinis parmi lesquels choisir Cependant, notre arrière-plan inclura également la zone où les taupes apparaîtront et nous devons être en mesure de contrôler la taille de la zone Cela signifie que nous devrons créer notre propre toile de fond. Revenons donc à l'éditeur de scratch en cliquant sur le bouton B ici. Et comme nous avons déjà une toile de fond vide, nous pouvons la choisir. Et maintenant, si nous passons à l'onglet des arrière-plans, nous avons ici un costume vierge appelé Backdrop one Juste pour le fun, nous pouvons changer le nom en un autre nom, comme arrière-plan. Très bien, pour commencer à créer l'arrière-plan, dessinons un ciel bleu Pour cela, nous pouvons utiliser l'outil rectangle et choisir une jolie couleur de remplissage bleu ciel. Nous n'aurons pas besoin d'un contour pour le rectangle, alors assurons-nous qu'il est désactivé. D'accord, et lorsque nous dessinons des formes pour une toile de fond, seules les parties situées à l'intérieur de la zone rectangulaire blanche de la toile seront visibles sur la scène. Donc, pour être sûr que le ciel couvre toute la scène, nous pouvons commencer à le dessiner en dehors du rectangle blanc, puis le faire recouvrir tout le rectangle. Ensuite, nous allons dessiner de belles collines vallonnées pour la zone où apparaîtront les taupes embêtantes Pour cela, cliquons d'abord dans une zone vide du canevas pour désélectionner le rectangle du ciel afin de ne pas en changer la couleur Choisissons ensuite une couleur de remplissage vert herbeux pour le rectangle suivant Nous voulons que les collines couvrent un peu plus que la moitié inférieure de l'étape. Commençons donc à l'extérieur et un peu au-dessus du centre de la scène et créons un rectangle couvrant toute la moitié inférieure. Cela semble un peu trop plat pour être une colline, alors corrigeons cela. Pour ce faire, nous avons l'outil remodelé. Lorsque l'outil de remodelage est actif, nous avons accès à des nœuds de formes, qui sont ces petits cercles aux coins du rectangle Nous pouvons cliquer et faire glisser les nœuds pour remodeler l'objet. Cependant, avec uniquement les nœuds d'angle, nous n'avons pas beaucoup de contrôle sur la forme Nous voulons donc ajouter d'autres nœuds. Pour ce faire, nous pouvons par exemple cliquer sur le bord supérieur pour y ajouter un nouveau nœud, et cliquer sur un autre endroit à proximité pour en ajouter un autre. Nous pouvons maintenant ajuster la position des nœuds ainsi que la courbure à l'aide des poignées situées à partir des nœuds. Cela nous permettra de créer de belles formes de collines. Pour le rendre encore plus beau, nous pouvons ajouter d'autres collines ici. Tout d'abord, désélectionnons tout. Ensuite, utilisons l'outil rectangle car ces collines seront plus éloignées. Nous pouvons opter pour une couleur de remplissage verte plus claire. Maintenant, nous allons dessiner un rectangle couvrant toute cette zone ici et commençons par le côté droit cette fois. Nous voulons bien sûr que ce rectangle apparaisse derrière la forme la plus foncée. Venons ici et cliquons sur le bouton de retour en arrière. Nous pouvons maintenant utiliser l'outil de remodelage, ajouter un ou deux nœuds au rectangle et le remodeler air bien. Pour une touche finale, nous pouvons ajouter quelques nuages dans le ciel. Pour ce faire, nous pouvons utiliser l'outil cercle, changer la couleur du film en blanc en réglant la saturation à zéro et la luminosité à 100 et dessiner des cercles superposés pour chaque nuage Nous voulons que les collines apparaissent devant les nuages. Nous pouvons donc utiliser l' outil de sélection, sélectionner l' une des formes de colline, puis maintenir la touche Maj enfoncée et sélectionner l' autre forme de colline. Maintenant, nous pouvons les placer au premier plan de tout en cliquant sur le bouton avant ici. Bien, il ne nous reste plus qu'à dessiner les taupes, ce que nous ferons dans la prochaine leçon 10. Dessiner les costumes de taupe: Avant de commencer à dessiner la taupe, nous devons d'abord créer un nouveau sprite pour celle-ci Passons donc le curseur sur le bouton Choisir un sprite en bas du volet Sprite, et choisissons la peinture Et allons-y et changeons le nom en mole. Très bien, maintenant, pour les taupes, nous allons avoir trois costumes Le premier sera juste le trou, qui sera une simple ellipse noire Le deuxième costume comportera également un trou, mais il montrera également le haut de la tête de la taupe, comme s'il commençait tout juste à sortir du trou Enfin, nous aurons un costume avec le trou et la tête entière de la taupe. Ensuite, pour animer la taupe, nous allons rapidement changer son costume du premier au deuxième puis au troisième, pour le faire apparaître, puis nous allons inverser les costumes pour le faire redescendre dans le trou où le joueur ne peut plus le frapper redescendre dans le trou où le joueur ne peut plus Pour le premier costume, qui ne sera que le trou, nous pouvons changer le nom en « down », car il sera utilisé lorsque la taupe sera complètement enfoncée à l'intérieur du trou. Zoomons maintenant un peu sur le canevas pour voir clairement le damier Ensuite, prenons l'outil cercle, rendons la couleur de remplissage noire et veillons à ce que le contour soit désactivé. Dessinons ensuite une ellipse d' environ 16 carrés de large et de quatre carrés de haut Nous voulons maintenant saisir l'outil de sélection et déplacer l'ellipse jusqu'à ce que son centre fixé au centre du canevas Comme nous le verrons plus tard, cela facilitera les choses lorsque nous commencerons à ajouter des effets au jeu. Maintenant, l'un des problèmes que Scratch présente actuellement, c'est qu'il coupe parfois des parties du costume d'un sprite à l'intérieur de la scène C'est difficile à voir pour le moment, mais si nous augmentons la taille du sprite à environ 120, nous pouvons clairement voir que cela coupe une partie du haut et du bas de l'ellipse Heureusement, cela est assez facile à corriger. Pour ce faire, de retour dans l'éditeur de costumes, il suffit de dessiner un rectangle plus grand que l'ellipse et qui la recouvre complètement, puis de désactiver la couleur de remplissage du rectangle Si nous fermons le menu des couleurs, nous pouvons maintenant voir que l'ellipse n'a plus aucune partie coupée. Maintenant que j'y pense, si nous déplaçons le marteau ici, les bords de son rectangle semblent également un peu irréguliers Nous pouvons résoudre ce problème en utilisant la même méthode en dessinant un rectangle invisible qui recouvre complètement le rectangle du marteau. C'est bien mieux. D'accord. Maintenant, sélectionnons à nouveau le sprite taupe, comme pour l'ellipse, nous pouvons également centrer le rectangle invisible dans le canevas si nous le Nous ne pouvons pas le voir pour le moment, mais si nous saisissons l'outil de sélection et que nous cliquons et faisons glisser le pointeur à l'endroit où doit se trouver le rectangle invisible, nous pouvons le sélectionner et voir son cadre de délimitation Nous pouvons maintenant le déplacer jusqu'à ce que son centre s'accroche au centre de la toile Très bien, et c'est tout pour le premier costume. Pour le suivant, nous voulons également commencer par l'ellipse et le rectangle invisible Si nous cliquons avec le bouton droit sur l'icône des costumes, nous pouvons choisir des doublons et cela fera une copie exacte du Ce sera en fait le troisième costume, qui montrera la tête entière des taupes En effet, lorsque nous créerons le deuxième costume, qui ne montrera que le haut de la tête de la taupe, il sera plus facile de commencer par la tête entière et d' effacer simplement la moitié inférieure Nous allons donner un nom au vrai deuxième costume. Appelons donc celui-ci par deux. Très bien, et pour commencer à dessiner la tête de la taupe, nous pouvons utiliser l' outil rectangulaire et choisir un remplissage brun Nous pouvons maintenant dessiner un rectangle qui n'est pas aussi large que l'ellipse et le faire descendre vers le bas de l'ellipse Ensuite, à l'aide de l'outil de remodelage, nous pouvons ajouter un nouveau nœud en haut et en bas du rectangle et le remodeler pour rectangle et le remodeler qu' il soit un peu plus arrondi Maintenant, pour les nœuds situés dans les coins, nous n'avons pas de poignées pour ajuster la courbure, mais nous pouvons résoudre ce problème en sélectionnant l'un des nœuds et en cliquant sur ce bouton incurvé ici. Je trouve que c'est plutôt beau pour une tête de taupe. Ensuite, nous devons donner un visage à la taupe, et nous allons commencer par les yeux. Pour cela, nous pouvons utiliser l'outil cercle, choisir le blanc comme couleur de remplissage et dessiner une ellipse ici Désélectionnons maintenant, choisissons le noir comme couleur de remplissage et dessinons une autre ellipse plus petite à l'intérieur de la ellipse blanche pour une pupille Et nous pouvons utiliser l'outil de sélection pour effectuer les ajustements nécessaires. Pour l'autre œil, nous allons dupliquer ces deux ellipses et les déplacer. Pour ce faire, nous pouvons sélectionner les deux ellipses. Ensuite, si nous maintenons la touche Alt ou Option enfoncée avant de cliquer et de faire glisser les figures, cela créera des doublons des formes Si nous maintenons maintenant la touche Shift enfoncée, nous pouvons les maintenir alignés avec les autres ellipses. Enfin, nous pouvons cliquer sur le bouton de retournement horizontal vers le haut pour retourner l' œil horizontalement, manière à ce que le regard soit tourné vers l'avant plutôt que sur le côté. OK, maintenant donnons-lui un nez. Tout ce dont nous avons besoin pour cela, c'est d' une autre ellipse noire. Ensuite, pour lui donner quelques dents, nous pouvons d'abord dessiner un rectangle blanc sous le nez. Ensuite, nous pouvons utiliser l'outil de remodelage pour lui donner une forme plus trapézoïdale Ok, pour finir de dessiner le costume, on devrait donner des oreilles à la taupe. Pour cela, utilisons d'abord l'outil cercle, et nous voulons choisir la même couleur de remplissage que la tête de la taupe. Pour le faire facilement dans le panneau de sélection de la couleur de remplissage, nous pouvons cliquer sur ce bouton pipette en bas Cela crée un cercle autour de notre curseur et zoome sur tout ce qui se trouve à l'intérieur du cercle Si nous survolons maintenant la couleur que nous voulons et que nous cliquons, cela définit la couleur de remplissage sur la couleur choisie Dessinons maintenant une ellipse ici pour l'oreille. Dessinons ensuite une petite ellipse noire par-dessus. C'est bon. Maintenant, prenons l'outil de sélection et sélectionnons les deux ellipses mangeuses, et placons-les derrière la tête en cliquant sur le bouton de retour en haut Ensuite, comme pour les yeux, nous pouvons dupliquer les ellipses en maintenant la Alts ou Option enfoncée avant de cliquer et de faire glisser les Déplaçons les doublons ici tout en maintenant la touche Shift enfoncée pour ils restent alignés avec l'autre oreille Enfin, nous pouvons les retourner horizontalement. Bien, pour terminer le costume, je vais sélectionner toutes les formes de tête, en veillant à ne pas sélectionner le rectangle invisible ou l'ellipse pour l'ensemble, et je vais le centrer un peu mieux sur l'ensemble Bien, il ne nous reste plus qu' un costume à créer. Pour celui-ci, dupliquons d' abord les deux costumes ci-dessus et renommons-le en un Et nous devons en fait réorganiser les costumes de la liste ici En effet, lorsque nous animerons la taupe, nous passerons du costume un au costume deux, puis au costume trois, puis inversement Le costume supérieur doit donc se situer entre le bas et le haut. Pour ce faire, il suffit de cliquer sur une icône et de la faire glisser vers le haut jusqu'à ce qu'elle se trouve une icône et de la faire glisser vers le haut jusqu'à ce qu'elle entre les deux autres, puis de la relâcher. D'accord ? Pour ce costume, il suffit de l'ensemble, du rectangle invisible et de la partie supérieure de la tête de la taupe. Nous devons donc d'abord séparer les parties des formes de tête que nous voulons des autres parties. Pour le faire facilement, nous avons l'outil d'effacement Cela nous permet de définir une taille pour la gomme. Ensuite, il suffit de cliquer et faire glisser le pointeur sur les formes que nous voulons découper. Ces objets sont désormais complètement séparés. Alors maintenant, prenons l'outil de sélection et sélectionnons toutes les parties inférieures, et nous pouvons les supprimer soit en cliquant sur le bouton de suppression ici, soit en appuyant sur la touche de suppression du clavier. Je vais également supprimer ces petits morceaux d'yeux ici. Très bien, maintenant nous pouvons sélectionner toutes les pièces de tête restantes et les déplacer vers le bas. Et si nous maintenons la touche Shift enfoncée, nous pouvons faire en sorte qu'ils ne se déplacent que verticalement. Et pour le moment, les oreilles sont derrière le trou, alors réparons cela en cliquant sur le bouton avant ici. Enfin, nous pouvons tout désélectionner, puis utiliser l'outil de remodelage pour fixer cette partie inférieure de la tête de la Je pense que ça devrait suffire pour les costumes de taupe sprites. Nous pouvons maintenant passer d'un costume à l'autre pour voir à quoi ressemblera l'animation. Pas mal Et nous pouvons déplacer la taupe et la scène. Je sais qu'il peut être tentant de commencer à ajouter des sprites taupes sur toute la scène dès maintenant, mais nous allons en fait attendre un peu plus tard pour le faire La raison en est que nous allons dupliquer le sprite du moule à plusieurs reprises pour créer les Même si les sprites sont des copies les uns des autres, Scratch les considère toujours comme des sprites distincts Cela signifie que chaque fois que nous apportons des modifications à l'un des sprites taupes, par exemple en y ajoutant du code, nous devons apporter les mêmes modifications à tous les autres sprites taupes Avec une douzaine de taupes sur scène, cela deviendrait assez fastidieux C'est pourquoi nous ne créerons les autres sprites du moule qu'un peu plus tard De plus, si vous m'avez suivi tout à l'heure, vous avez peut-être changé la taille de la taupe Sprite à 120, comme je l'ai fait Nous pourrions le ramener à 100 si nous le voulons, mais je pense qu'il est vraiment plus beau à 1h20, donc je vais laisser le mien tel quel C'est bon. Nous sommes maintenant prêts à commencer à ajouter du code à la taupe Sprite et à faire fonctionner son animation, et nous le ferons dans la prochaine leçon 11. Animer le sprite taupe: Pour commencer à coder le sprite taupe, vérifions-nous que le sprite est sélectionné dans le volet Sprite Passons ensuite à l'onglet code. La première chose à faire est de faire en sorte que lorsque vous cliquez sur le drapeau vert, la taupe sorte du trou Ensuite, après un court instant, il redescendra dans le trou et nous lui demanderons de le faire encore et encore à des moments aléatoires. Alors d'abord, passons aux événements et gagnons un bloc sur lequel vous avez cliqué sur le drapeau vert Lorsque nous cliquons sur le drapeau vert, nous voulons immédiatement remplacer le costume le plus couché par le costume en duvet afin qu'il commence toujours par entrer dans le trou Passons donc à Looks et ajoutons un bloc de costume Switch au script Green Flag. Et passons au costume en duvet. Si nous cliquons maintenant sur le drapeau vert, la taupe débutera dans son costume en duvet. Ensuite, nous allons animer la taupe, et nous voulons que l'animation se fasse en continu Passons donc à Control et ajoutons un bloc permanent au bas des scripts. Pour que la taupe apparaisse à des moments aléatoires, nous pouvons générer un nombre aléatoire compris entre, disons, un et 50, et si le nombre est un, nous le ferons apparaître. Alors d'abord, ajoutons un bloc I puis au bloc pour toujours. Nous voulons vérifier si le nombre que nous générons est égal à un. Donc, pour la condition, passons aux opérateurs et introduisons d'abord un bloc égal, et changeons le 50 ici en un. Nous pouvons maintenant saisir un bloc choisi au hasard et l'utiliser comme première entrée du bloc égal. Pour l'instant, choisissons un chiffre de 1 à 50. 50 peut sembler un chiffre élevé, mais compte tenu de la rapidité avec laquelle Scratch rafraîchit la scène, est en fait pas si élevé et nous devrons probablement utiliser un chiffre encore plus élevé fois que nous aurons toutes les taupes sur la D'accord, donc tout ce que nous mettrons dans le bloc I n'arrivera que si le nombre choisi au hasard est égal à un Et lorsque cela se produira, la première chose que nous ferons sera de faire sortir la taupe du trou. Pour ce faire, nous allons d'abord changer son costume en un, puis en deux. Et comme nous allons effectuer deux changements, nous pouvons utiliser un bloc de répétition avec un compte de deux. Passons donc à Control. Ajoutez un bloc de répétition au bloc IN et faites-le répéter deux fois. Maintenant, pour passer au costume suivant, nous pouvons aller dans Looks et placer un bloc de costume suivant dans le bloc de répétition. Ensuite, pour faire redescendre la taupe, il faut recommencer, mais en sens inverse. Tout d'abord, dupliquons le bloc de répétition ici et mettons celui-ci en dessous de l'autre. Cela pourrait démarrer automatiquement le script et la taupe deviendrait complètement folle maintenant. Cliquons sur Arrêter pour lui donner une pause. Pour le deuxième bloc de répétition, nous voulons passer au costume précédent, pas au suivant. Débarrassons-nous donc du bloc de costumes suivant. Malheureusement, nous n'avons pas vraiment de bloc de costumes précédent. Donc, pour passer au costume précédent, nous devrons en soustraire un du numéro de costume actuel Pour ce faire, introduisons d'abord un bloc de costume Switch et placez-le dans le bloc de répétition vide. Maintenant, si nous allons voir les opérateurs et que nous introduisons un bloc de soustraction, nous pouvons le saisir ici même dans le bloc de costumes Switch Revenons maintenant à Looks et trouvons un bloc de numéros de costume ici. Et utilisez-le comme première entrée du bloc de soustraction. Le bloc de numéros de costume représentera le numéro du costume actuel du sprite Donc, pour obtenir le numéro de costume précédent , il suffit de le soustraire par un OK, si nous lançons le jeu maintenant, le moule apparaît et s' abaisse à des moments aléatoires, mais les animations se produisent si vite que nous pouvons à peine les voir. Pour résoudre ce problème, nous devrons ajouter des délais aux animations. Alors d'abord, arrêtons le jeu. Passons ensuite à Control et prenons un bloc de musculation, et placons-le juste après le bloc de costumes suivant. Un délai d'une seconde est définitivement trop long. Alors allons-y avec quelque chose comme 0,1 seconde. Nous voulons également attendre le même temps après avoir changé de costume allons donc dupliquer le bloc d'attente et le placer juste en dessous du bloc de costume de changement. Nous pouvons maintenant voir plus clairement les animations des taupes vers le haut et vers le bas Cependant, au lieu de le faire redescendre immédiatement après son apparition, nous devrions probablement ajouter un délai entre les deux animations, au moins au début du jeu pour faciliter la tâche du joueur Prenons donc un autre bloc de saisie et plaçons-le juste entre les deux blocs de répétition Plus tard, lorsque nous augmenterons la difficulté du jeu, nous utiliserons des valeurs différentes pour ce délai, mais pour l'instant, nous pouvons le laisser sur 1 seconde. Allons-y également et ajoutons un bloc d'attente d'une seconde après le deuxième bloc de répétition pour éviter que la taupe ne réapparaisse immédiatement dès qu'elle tombe Avec cela, si nous lançons le jeu, la taupe s'anime assez bien Bien, maintenant que la taupe peut sortir de son trou, la prochaine étape logique est de faire en sorte que nous puissions le frapper avec le marteau 12. Gérer les couches: Avant de continuer à coder le taupe sprite, il y a un petit problème que nous devons régler Si nous relançons le jeu, vous remarquerez peut-être que la taupe apparaît au-dessus du marteau. Cela s'explique par le fait que scratch dessine les sprites dans l' ordre dans lequel nous les avons déplacés et la scène dans laquelle le sprite le plus récemment déplacé est dessiné en dernier le fait apparaître en haut Comme je déplace le sprite taupe plus récemment que le sprite du marteau, la taupe est dessinée sur le dessus du Si nous arrêtons le jeu, une façon de résoudre ce problème est cliquer et de faire glisser le sprite du marteau dans la scène Le sprite du marteau est désormais le dernier sprite déplacé. Donc, si on recommence le jeu, le marteau apparaît maintenant au-dessus de la taupe. Cependant, dès que nous déplacerons à nouveau le sprite taupe, il sera à nouveau dessiné sur le dessus du marteau Nous allons vouloir que le marteau apparaisse toujours au-dessus des taupes afin qu'il soit clairement visible pour le joueur Et comme nous finirons par avoir beaucoup de taupes dans le jeu, devoir déplacer le sprite du marteau chaque fois que nous déciderons de déplacer un sprite taupe sera Une meilleure façon de résoudre ce problème est donc de travailler avec des couches. Les couches et les rayures déterminent essentiellement l'ordre dans lequel les sprites sont dessinés sur la scène Les sprites des couches supérieures seront dessinés après ou au-dessus des sprites des couches inférieures Pour travailler avec des couches, si nous passons à la catégorie Los, nous avons deux blocs. L'un pour déplacer un sprite vers la couche avant ou arrière, et l'autre pour déplacer un sprite vers l'avant ou vers l'arrière d'un certain nombre de Dans un jeu plus compliqué comme un RPG, par exemple, il se peut que nous devions gérer un grand nombre de couches Mais avec un jeu simple comme Whack a mole, nous pouvons nous en tirer en ne manipulant que les couches avant et arrière Par exemple, si nous voulons que le sprite du marteau apparaisse toujours au-dessus des sprites taupes, il suffit d'accéder au code du sprite du marteau, de saisir un bloc de couche avant et de l'ajouter en haut de l'un des scripts Green Flag saisir un bloc de couche avant et de l'ajouter en haut de l'un des scripts Green Flag Maintenant, si nous lançons le jeu, le marteau sera dessiné au-dessus de la taupe. Même si nous arrêtons le jeu et déplaçons le sprite taupe, dès que nous cliquons sur le drapeau vert, le marteau réapparaît en haut Et c'est tout. Nous n'avons plus à nous inquiéter du fait que les taupes soient dessinées sur le dessus du marteau, et nous pouvons maintenant recommencer à coder le sprite des taupes 13. Smack the taupes: Lorsqu'il s'agit de frapper une taupe avec le marteau, nous voulons autoriser le joueur à le faire uniquement lorsque la taupe remonte ou redescend, mais pas lorsqu'elle est complètement à l'intérieur du trou Cela signifie que si une taupe porte son costume en duvet, nous ne pouvons pas la frapper, mais si elle porte l'un de ses costumes en peluche, nous pouvons la frapper Voyons donc comment nous pouvons le faire dans le code. Maintenant que nous avons déjà une boucle permanente dans ce script de drapeau vert avec beaucoup de choses en cours, il serait préférable de démarrer un nouveau script de drapeau vert. Passons donc aux événements et remportons un autre bloc gagnant sur le drapeau vert. OK, et nous allons vouloir vérifier en permanence s'il des collisions entre le sprite taupe et le sprite marteau Passons donc à Control et ajoutons un bloc permanent au nouveau script. Ensuite, nous voulons vérifier s'il n' collision avec le marteau uniquement si y a pas de collision avec le marteau uniquement si la taupe utilise un costume ou si c'est à la hauteur du costume. Donc, pour vérifier cela, ajoutons un bloc IN au bloc pour toujours. Pour effectuer le contrôle des costumes, nous avons deux options. Nous pouvons utiliser un bloc ou pour vérifier si le costume de taupe est en haut d'un ou deux, ou nous pouvons vérifier si son costume n' est pas le costume en duvet La deuxième option nécessitera moins de blocs, alors allons-y. Passons donc d'abord aux opérateurs et utilisons un bloc not comme condition pour le bloc if then. ce qui concerne l'état du bloc-boutons, nous voulons vérifier si le nom du costume actuel correspond au costume en duvet Prenons donc un bloc égal et enfonçons-le à l'intérieur du bloc à boutons. Comme nous l'avons vu précédemment, nous pouvons obtenir le costume actuel en allant dans Looks et en utilisant un bloc de numéros de costume. Utilisons donc un comme première entrée du bloc égal. Maintenant, nous pouvons utiliser le numéro de costume ici, car si nous allons dans l'onglet costumes, les costumes sont numérotés un, deux et trois. Nous utilisons ce fait dans l'animation des taupes, soustrayant un du numéro de costume actuel pour obtenir le Pour cette condition, nous pourrions vérifier si le numéro du costume n'est pas égal à un. Cependant, nous pouvons également changer le nombre de somme en nom de somme, puis utiliser le nom du costume comme deuxième entrée. Tapons donc le mot, en veillant à utiliser l'orthographe exacte comme nom du costume. C'est à vous de décider quelle version utiliser, mais je trouve que l'utilisation du nom du costume facilite la compréhension. OK, donc pour être clair, peu importe ce que nous mettrons dedans , le blocage n'arrivera que si la taupe n'utilise pas son costume en duvet, ce qui signifie qu'elle doit porter l' un de ses costumes en peluche. Cependant, nous ne voulons pas que la taupe soit touchée simplement parce qu'il porte un costume en qu'il porte un costume en peluche et que le marteau le touche. Nous voulons plutôt vérifier les collisions uniquement lorsque le joueur est en train de balancer le marteau Un moyen simple de le faire est de vérifier si le marteau est au bas de sa balançoire lorsque sa direction est à 90°. Ainsi, dans le code du sprite mole, nous pouvons soit effectuer cette vérification en ajoutant un bloc N à l'état actuel des blocs ITN, soit utiliser des blocs ITN imbriqués Un bloc if then imbriqué est un bloc if thin qui se trouve à l'intérieur d'un autre bloc if then et leur utilisation peut souvent être plus lisible que d' avoir un seul bloc if mince avec un état très long au contrôle et prenons-en un autre, si c'est le cas, et accrochons-le à l'intérieur de celui-ci parce que ce bloc mince est imbriqué dans le bloc extérieur, que nous pouvons appeler ses parents Je ne m'enfuirai que si l'état de ses parents est vrai. OK, donc ce que nous voulons vérifier chez l'enfant s'il bloque, c'est si la direction du marteau est 90. Passons donc d'abord aux opérateurs et utilisons un bloc égal comme condition du bloc interne s'il est mince. Allons-y et changeons la deuxième entrée à 90. Maintenant, pour obtenir la direction d'un autre sprite, nous pouvons passer à la détection, et nous avons ici un numéro de scène en toile de fond. Vous vous demandez peut-être ce que cela a à voir avec la direction d'un sprite. Mais si nous en introduisons une dans la zone de code, stage n'est pas la seule option qui s'offre à nous ici. Nous pouvons également choisir n'importe quel sprite qui n'est pas le sprite actuellement sélectionné Choisissons donc Hammer. Et maintenant, les options sur le côté gauche correspondent aux différents attributs du sprite du marteau, y compris sa direction, ce qui est exactement ce que nous voulons Nous pouvons maintenant utiliser le bloc comme première entrée du bloc égal. nous n'en avons pas encore terminé avec les vérifications, et c'est parce qu'à l' heure actuelle, le marteau se trouve peut-être bien et c'est parce qu'à l' heure actuelle loin, mais tant que sa direction est à 90 et que la taupe est en haut, les deux conditions seront toujours vraies. Maintenant, nous voulons également nous assurer que la taupe et le marteau se touchent réellement. Pour cela, nous pourrions à nouveau utiliser un autre bloc IN imbriqué. Mais comme l'état au toucher et l'état intérieur sont tous deux liés au marteau, il serait bon de les combiner en une seule condition. Pour ce faire, passons aux opérateurs, et plaçons un bloc dans un espace vide pour le moment. Sortons maintenant le bloc de condition du bloc if then interne et utilisons-le comme première entrée du bloc. Ensuite, pour vérifier si le sprite taupe touche le sprite du marteau, nous pouvons passer à la détection, nous pouvons passer à la détection, et nous avons ici un bloc qui indique de toucher le pointeur de la souris Mais si nous en introduisons un et que nous l' enfonçons dans le bloc, certaines options que nous avons en plus du pointeur de la souris sont le bord, qui fait référence à l'un des bords de la scène, et le marteau, c'est ce que nous voulons choisir. Très bien, maintenant attrapons le bloc, et utilisons-le comme condition du bloc intérieur, bien que fin. Alors maintenant, tout ce que nous mettrons dans le vide, si mince bloc, n'arrivera que si la taupe n' utilise pas son costume en duvet. La direction du marteau est 90, et la taupe touche le marteau. Bien, et pour vérifier si tout fonctionne correctement, nous pouvons demander à la taupe de dire quelque chose comme si j'étais touché Pour ce faire, nous pouvons aller à Los, et nous voulons juste que la taupe dise : « Je suis atteint pour une courte période ». Prenons donc un bloc S quatre, et mettons-le dans le bloc vide s'il est fin. Maintenant, nous pouvons changer le texte en « Je suis touché », et nous pouvons lui faire le dire pendant environ une demi-seconde ou 0,5 seconde. Très bien, si nous lançons le jeu maintenant, nous avons un problème, ou du moins moi, parce que je change manuellement direction du marteau à 90. Plus tôt, dans le sprite pain, sa direction commence à 90 Je pourrais résoudre ce problème en changeant simplement manuellement la direction à 130. Mais dans une leçon ultérieure, nous ajouterons un chronomètre au jeu. Et dès que le chronomètre atteindra zéro, le jeu sera terminé et les scripts de tous les sprites cesseront de fonctionner Si cela se produit pendant que le marteau est animé, quelle que soit sa direction lorsque l'animation s'est arrêtée sera la même que celle dans laquelle il démarre chaque fois que le joueur redémarre le jeu, ce qui posera toutes sortes de problèmes Pour éviter que cela ne se produise, il suffit de dire au sprite dans quelle direction commencer lorsque le drapeau vert est cliqué OK, donc pour ce faire, arrêtons le jeu et vérifions-nous que le sprite du marteau est sélectionné Passons maintenant au mouvement et introduisons un bloc de points et de directions. Peu importe le script Green Flag dans lequel nous l'avons placé , du moment que nous le plaçons quelque part avant l'un des blocs éternels, et que la direction dans laquelle nous voulons qu'il commence est 130. Maintenant, même si nous changeons la direction du marteau dans le volet Sprite, dès que nous cliquons sur le drapeau vert, la direction revient à 130 Et avec ça, si on se balance maintenant sur le taupe alors qu'il est à terre, rien ne se passera. Mais si on se balance pendant qu'il est debout, il dit : « Je suis touché ». De plus, si nous nous balançons quelque part ici, il ne dira rien, même s'il est debout. Parfait. Il existe cependant deux façons d'améliorer cela. Tout d'abord, pour le moment, nous pouvons toucher le taupe plusieurs fois pendant qu'il est debout. Nous pouvons le voir encore mieux si nous adoptons code du sprite taupe et que nous faisons en sorte qu'il dise : «  Je ne suis touché que pendant un dixième de seconde environ Maintenant, chaque fois que nous lançons le marteau sur la taupe alors qu'il est debout, il dit : « Je suis touché ». C'est peut-être ce que nous voulons, mais si nous le maintenons ainsi, il sera un peu trop facile pour le joueur d' accumuler des points. Il serait donc probablement préférable de n' autoriser le joueur à toucher une taupe qu'une seule fois à chaque fois qu'elle apparaît. La deuxième amélioration que nous pouvons apporter est qu'à l'heure actuelle, n'importe quelle partie du sprite du marteau peut toucher la taupe, y compris le manche Encore une fois, c'est peut-être ce que nous voulons, mais une fois que nous aurons ajouté plus de taupes au jeu, il sera trop facile pour le joueur de toucher plusieurs taupes à Très bien, dans la prochaine leçon, nous verrons comment nous pouvons apporter ces améliorations au claquement des taupes 14. Améliorer le smacking: La première façon d'améliorer les choses est de faire en sorte qu' une taupe ne soit touchée qu'une seule fois à chaque fois qu'elle apparaît. Pour ce faire, nous devrons savoir si la taupe a été touchée ou non. Et pour cela, nous devons créer une variable. Une fois le sprite taupe sélectionné, passons à la catégorie des variables. Nous n'aurons pas besoin de la variable myvariable par défaut. Donc, si nous cliquons dessus avec le bouton droit de la souris, nous pouvons choisir de supprimer. Créons maintenant une toute nouvelle variable en cliquant sur Créer une variable. Cette variable permettra de savoir si une taupe en particulier a été touchée ou non. Cela signifie que la valeur sera unique pour chaque taupe sprite Nous devons donc choisir uniquement pour ce sprite. Et pour le nom, disons que ça fait mal. Cliquez ensuite sur OK. Bien, donc pour commencer à utiliser la variable Hurt, la première chose à faire est de définir sa valeur sur false au début du jeu afin que le moule ne démarre pas avec Hurt Prenons donc un bloc set t et ajoutons-le en haut de l'un des scripts Green Flag. Et définissons la valeur sur false. Nous pourrions également utiliser un zéro pour faux et un pour vrai si nous le voulions, ce qui est une pratique courante en programmation, mais je vais m'en tenir au vrai et au faux pour le moment. OK, maintenant nous devons régler Hert sur true chaque fois que la taupe est touchée Prenons donc un autre bloc Hert défini, placez-le quelque part dans le bloc if then interne et définissons la valeur sur true Et comme nous voulons seulement que la taupe soit touchée, s'il n'est pas blessé actuellement, nous devrons ajouter une condition « blessure égale à faux » à l'un des blocs « si c'est le cas ». Comme la condition « pas de costume » est également liée à la taupe, nous allons l'associer à la condition «   blessure égale faux ». Pour ce faire, passons aux opérateurs et introduisons un bloc et dans un espace vide. Maintenant, retirons le bloc non du bloc I then et utilisons-le comme l'une des conditions des N blocs. Pour l'autre condition, nous allons vérifier si la valeur de la variable cardiaque est égale à false. Donc, introduisons d'abord un bloc égal. Pour obtenir la valeur actuelle des variables endommagées, nous pouvons accéder aux variables, récupérer un Hetblock et l'utiliser comme première entrée du bloc égal. Et vérifions si c'est faux. Ensuite, nous pouvons utiliser tout cela comme condition pour le bloc I Thin. D'ailleurs, nous aurions également pu utiliser un seul bloc I Thin pour créer un gros bloc conditionné, mais je pense que nous pouvons convenir qu'utiliser blocs imbriqués si fins est un peu plus facile à lire Enfin, pour que tout cela fonctionne correctement, nous devons déterminer quand remettre la valeur cardiaque à false. Je pense que le meilleur endroit pour le faire serait après le deuxième bloc de répétition lorsque l'animation des taupes vers le bas sera terminée et qu'il sera de retour sain et sauf dans le trou À partir des variables, ajoutons un autre ensemble à bloquer, et peu importe que nous le placions au-dessus ou en dessous du bloc de poids final, car la taupe sera déjà redescendue dans les deux cas. Utilisons le bloc pour attribuer la valeur false à hurt. Bien, si nous lançons le jeu maintenant, nous pouvons voir que la variable de blessure aux taupes commence à faux, et si nous le frappons alors qu'il est debout, la valeur de la blessure devient vraie Puis, lorsqu'il redescend, cela redevient faux. Et chaque fois que la blessure est vraie, on ne peut pas blesser à nouveau la taupe. OK ? Maintenant que nous savons la variable hurt fonctionne correctement, nous n'avons plus besoin de voir sa valeur sur la scène Nous pouvons donc cliquer dessus avec le bouton droit de la souris et choisir Hyde. Maintenant, comme je l'ai mentionné dans la leçon précédente, le moment, n'importe quelle partie du marteau peut toucher la taupe. Nous pouvons améliorer cela en faisant en sorte que seule une certaine partie du marteau, comme le rectangle rouge, puisse toucher la taupe. Un moyen simple de le faire est qu'au lieu de vérifier si la taupe touche le sprite du marteau, nous pouvons vérifier si elle touche une couleur particulière, comme le rouge du marteau Pour ce faire, arrêtons le jeu. Et nous allons devoir remplacer le bloc tactile par un bloc de couleur tactile. Débarrassons-nous donc d'abord du marteau qui se touche. Passons ensuite à la détection et remplacons-le par un bloc de couleur tactile. maintenant à la couleur, faisons en sorte que le sprite du marteau soit entièrement visible sur la scène Revenons ensuite au sprite taupe, et dans le bloc de couleur tactile, si nous cliquons sur l'échantillon de couleur ici, une boîte de dialogue apparaît pour choisir la Nous voulons utiliser exactement la même couleur que le rectangle du marteau, et nous pouvons le faire en cliquant sur le bouton compte-gouttes dans la boîte de dialogue, puis en cliquant sur le rectangle du marteau OK, maintenant nous pouvons fermer la boîte de dialogue des couleurs, et si nous relançons le jeu, lorsque nous lançons le marteau, un coup ne sera enregistré que si le rectangle rouge touche la taupe. Cela fonctionne plutôt bien, mais nous pourrions même l'améliorer encore en ajoutant un autre rectangle plus petit au bas du rectangle rouge. Si nous donnons au petit rectangle une couleur différente de celle des autres parties du marteau, nous pouvons utiliser sa couleur lors du contrôle de collision. OK, donc pour ce faire avec le sprite du marteau sélectionné, allons dans l'onglet costumes Passons maintenant à l'outil rectangle, et pour la couleur de remplissage, peu importe ce que nous choisissons tant qu'elle est différente des autres couleurs du costume. Je vais opter pour un gris moyen. Et nous ne voulons pas d' aperçu pour cela, alors assurons-nous qu'il est désactivé. Bien, commençons maintenant à dessiner un rectangle un peu au-dessus et à l'extérieur du bord inférieur du rectangle rouge, et nous voulons le faire s' étendre l'autre côté et recouvrir le bord inférieur. Bien, revenons maintenant au code des sprites taupes. Cliquez ensuite à nouveau sur l'échantillon de couleur dans le bloc de couleur tactile Cliquez sur le bouton compte-gouttes, et cette fois, choisissez la couleur du petit rectangle du marteau Si nous lançons le jeu maintenant, un coup ne sera enregistré que si le petit rectangle du marteau touche la taupe. Bien, dire à la taupe que je suis touché fonctionne bien, mais c'est ennuyeux. Quoi qu'il en soit, je ne pense pas que les taupes puissent parler À partir de la prochaine leçon, nous ajouterons plutôt des effets graphiques sympas qui apparaissent chaque fois qu' une taupe est touchée 15. Ajouter des effets de hits: Pour commencer à ajouter des effets de frappe à la taupe, éliminons d'abord les quatre blocs sûrs, car nous n'en aurons plus besoin. Passons ensuite à Looks, et introduisons un bloc d'effets de couleur défini dans un espace vide pour le moment. Tout d'abord, réglons le costume de taupe à deux pour le moment afin que nous puissions mieux le voir. Revenez ensuite au code. Maintenant, si nous réglons l'entrée du bloc d'effets de couleur défini valeur autre que zéro et que nous cliquons sur le bloc, cela changera la teinte de la couleur des taupes Chaque valeur que nous utilisons lui donnera une teinte différente. Cela peut aller jusqu' à 200, ce qui le ramène à sa teinte d'origine. Si vous dépassez 200 , vous recommencerez depuis le début. Par exemple, 250 est en fait la même chose que 50. Notez également que cela n'a aucun effet sur l'ensemble, et c'est parce que le tout est noir, ce qui n'a aucune teinte. Très bien, nous pouvons donc utiliser à peu près la couleur que nous voulons pour cela. Je vais faire en sorte que ma taupe prenne une couleur rougeâtre lorsqu'elle est touchée, et après l'avoir testée, j'ai trouvé qu'une valeur de 180 était plutôt bonne Si vous utilisez des couleurs différentes lorsque vous dessinez vos costumes de taupes, vous devrez peut-être jouer avec la valeur jusqu'à ce que vous obteniez quelque chose qui vous plaît D'accord ? Nous pouvons maintenant déplacer ce bloc vers le bloc intérieur, s'il est fin, lorsque la taupe est touchée. Cependant, nous devons également réinitialiser l'effet de couleur. Comme pour remettre la variable Hert à false, nous pouvons également réinitialiser l'effet de couleur ici une fois les animations des taupes terminées Pour ce faire, nous pourrions remettre l'effet de couleur à zéro par défaut, mais comme nous utiliserons plusieurs effets graphiques que nous devrons réinitialiser, nous pouvons utiliser un bloc d'effets graphiques clair pour les réinitialiser tous en même temps. Apportons-en un et mettons-le quelque part après les animations. Si nous lançons le jeu maintenant et que nous frappons la taupe, il devient rouge. Mais quand il revient, il retrouve sa couleur normale. OK, arrêtons le jeu, et pour un autre effet, nous pouvons faire en sorte que son visage soit légèrement tordu. Pour cela, si nous introduisons un autre effet défini pour bloquer, un autre effet est le tourbillon. Si nous changeons à nouveau le costume de la taupe en haut, régler la valeur mondiale sur une autre que zéro fera pivoter le sprite en commençant près du centre Cependant, si vous montez trop haut, l'ensemble tourbillonnera trop fort, ce qui aura l'air étrange Et nous pouvons également utiliser des valeurs négatives pour inverser la direction du monde. Je pense que je vais choisir quelque chose d' assez subtil, comme dix. Bien, maintenant nous pouvons également l'ajouter au bloc interne if thin, et allons-y. Génial C'est certainement une amélioration par rapport au S Four Block, mais je pense que ce serait encore mieux si l'un de ces superbes graphismes de copains de style comic book apparaissait sur la taupe. Voyons donc comment nous pouvons le faire dans la leçon suivante. 16. Créer le Sprite Pow: Pour ajouter un effet graphique Pow lorsque la taupe est touchée, nous devons d'abord créer le sprite Pow Passons donc au bouton Choisir un Sprite, et nous allons créer le nôtre. Choisissons donc la peinture. Allons-y et changeons le nom en Pow. Un graphique Pow est essentiellement une forme d'étoile avec tout un tas de points. Et pour en créer un, on peut commencer par un cercle ou une ellipse. Prenons donc l'outil du cercle. Et pour la couleur de remplissage, choisissons une orange. Maintenant, zoomons un peu sur le canevas et dessinons une ellipse. La taille n'a pas d'importance pour le moment car nous allons modifier un peu la forme et nous pourrons toujours la redimensionner plus tard Toutes ? Maintenant, pour créer une forme d'étoile, nous pouvons commencer par saisir l'outil de remodelage, en rapprochant trois nœuds et en faisant glisser le nœud central vers l'extérieur Ensuite, nous pouvons répéter cette opération autour de la forme. OK. Et si nous voulons que tous les coins soient pointus plutôt qu'arrondis, nous pouvons utiliser l'outil de remodelage pour faire glisser une boîte de sélection sur tous les nœuds Cliquez ensuite sur le bouton pointé en haut. Ensuite, nous allons ajouter une version plus petite et plus lumineuse de la même forme au centre de celle-ci. Pour ce faire, nous pouvons d'abord saisir l'outil de sélection, sélectionner la forme et en créer une copie, soit en utilisant les boutons copier-coller situés ici, soit en utilisant les raccourcis Contrôle ou Commande C pour copier et contrôler ou Commande V pour coller. Et faisons en sorte que celui-ci soit plus jaune clair. Ensuite, en utilisant le SlecTol, nous pouvons le réduire un peu et placer près du centre de l'autre forme Et peut-être aussi le faire pivoter un peu. Nous pouvons maintenant sélectionner les deux formes et les redimensionner. Et par défaut, l'outil de sélection gardera la largeur et la hauteur proportionnelles Mais si nous maintenons la touche Shift enfoncée, nous pouvons le redimensionner comme nous le souhaitons Une taille d'environ 75 x 75 pixels devrait être bonne. Nous voulons également nous assurer centrer les formes dans le canevas, faciliter le centrage du sprite sur la taupe à l'intérieur de la scène OK, nous avons fini de dessiner le Pow Sprite. Alors maintenant, mettons-le à profit. Pour ce faire, examinons d'abord le code du sprite taupe Quelque part dans le bloc intérieur, lorsque la taupe est touchée, nous avons besoin d'un moyen d'informer le powsprite qu'il doit apparaître sur la taupe Pour ce faire, si nous passons à la catégorie événements, nous avons des blocs pour diffuser et recevoir des messages. Si un sprite diffuse un message, il est envoyé à tous les sprites du projet, et les sprites peuvent utiliser le bloc « Quand je reçois » pour choisir ce qu'ils veulent faire lorsqu'ils reçoivent Ce que nous voulons faire, c'est que lorsqu'une taupe est touchée, nous voulons diffuser le message, puis nous voulons que le sprite de l' ami apparaisse sur la taupe lorsqu'elle reçoit le message Donc, pour le sprite taupe, nous voulons choisir soit le bloc de diffusion, soit le bloc de diffusion et d'attente. Si nous utilisons le bloc de diffusion et d'attente, le script s'interrompt jusqu'à ce que tous les sprites aient fini de recevoir le message et d' y répondre Mais comme nous allons faire en le Po Sprite n' apparaisse que pendant une courte période, il ne sera pas nécessaire de suspendre le script mol Prenons plutôt le bloc de diffusion normal et placons-le quelque part dans le bloc ITN interne heure actuelle, nous diffusons un message appelé message 1, qui n'est pas très descriptif. Mais si nous cliquons dessus, nous avons la possibilité de créer un nouveau message. On peut appeler ça un coup de taupe et cliquer sur OK. Bien, passons maintenant au code du Posprite. Avant de traiter le message d'impact sur une taupe, nous voulons d'abord faire en sorte que le Posprite ne soit pas visible lorsque nous démarrons le jeu Pour ce faire, nous pouvons ajouter un bloc sur lequel vous avez cliqué sur le drapeau vert Ensuite, nous pouvons accéder à Looks et ajouter un bloc de masquage au script du drapeau vert. OK, maintenant, pour gérer le message « taupe hit », passons aux événements et lançons un nouveau script en utilisant le bloc W I receive Mohit. Lorsque le Pow Sprite reçoit le message indiquant qu'il touche une taupe, nous faisons en sorte qu'il passe à la position du sprite taupe, devienne visible et qu'il disparaisse en peu de temps Cependant, si l'on pense à l'avenir, lorsque nous ajouterons toutes les taupes à la scène, il sera tout à fait possible pour le joueur toucher plusieurs moules en même temps ou presque en même temps Pour cette raison, il se peut que nous ayons besoin de plusieurs sprites amis pour apparaître en même temps, ce qui signifie que nous devons utiliser des clones Donc, lorsque le sprite ami reçoit le message indiquant qu' il a atteint la taupe, nous pouvons le déplacer vers la position des taupes et se cloner à cette position Alors montre le clone et fais-le disparaître. OK ? Alors d'abord, pour déplacer le sprite pote vers le sprite taupe, passons au Et ajoutons un bloc « Go to random position » au script W I receive Mohit Et, bien sûr, nous ne voulons pas prendre une position aléatoire. Nous voulons aller voir la taupe Sprite. Ensuite, pour créer un clone du Poe Sprite, nous pouvons accéder à Control et ajouter un bloc Create clone of Myself. C'est bon. Maintenant, pour indiquer au clone ce qu'il doit faire, lançons un nouveau script en utilisant un « when I start » en tant que bloc de clonage. Comme nous cachons le Pow Sprite d'origine, le clone sera également caché au départ Nous voulons donc d'abord montrer le clone en allant à Los et en introduisant un bloc d'affichage. Ensuite, juste pour le fun, nous pouvons rendre le clone de plus en plus brillant. Pour ce faire, allons d'abord dans Contrôle et introduisons un bloc de répétition. Revenons ensuite à Looks et ajoutons un effet de modification par bloc au bloc de répétition. Si nous utilisons l'effet de luminosité, la valeur passe de 0 à 100, zéro n' ayant aucun effet et 100 rendant le sprite complètement blanc Nous voulons que ce chiffre passe de 0 à 100 assez rapidement. Faisons-le donc répéter cinq fois. Et changez la luminosité de 20 à chaque fois. Enfin, nous allons effacer le clone. Passons donc d'abord à Control et introduisons un autre bloc de répétition, en le faisant répéter cinq fois. Revenons ensuite à Los et ajoutons un effet de modification par bloc au nouveau bloc de répétition. Cette fois, nous voulons utiliser l'effet fantôme. L'effet fantôme va également de 0 à 100, zéro rendant le sprite totalement opaque et 100 le rendant totalement transparent Donc, pour que le sprite devienne complètement transparent après cinq répétitions, nous pouvons modifier l' effet fantôme de 20 à chaque Mais nous n'avons pas encore tout à fait terminé. Dans le cadre du projet Scratch Basics, nous avons appris que Scratch ne nous permet avoir que 300 clones sur scène à la fois Et même si le deuxième bloc de répétition rend le clone invisible, celui-ci n'est jamais réellement retiré de la scène. Il faudrait probablement un certain temps pour obtenir 300 clones de sprites Po dans le jeu, mais c'est tout à fait possible. Et une fois que cela se produira, plus aucun sprite pro n'apparaîtra cette raison, nous devons nous assurer de supprimer le clone à la fin du script. Pour ce faire, allons dans Control et saisissons une option de suppression de ce bloc de clonage, et placons-le tout en bas de la page lorsque je démarre en tant que script de clonage. Bien, si nous lançons le jeu maintenant, le Pow Sprite disparaîtra. Mais si nous touchons la taupe, un clone de Pow Sprite apparaît sur la taupe, devient blanc et disparaît Pas mal. Cependant, comme nous avons placé le centre des costumes de taupe au centre du trou lorsque nous les avons dessinés, le sprite copain est également centré sur le Cela aurait probablement l'air mieux si nous l'augmentions un peu. Nous pouvons le faire de deux manières différentes. Tout d'abord, si nous allons dans l'onglet costumes, nous pouvons sélectionner les deux formes pour le costume de Pow Sprites et les déplacer légèrement vers le haut Si nous montrons le Pow Sprite, nous pouvons maintenant voir qu'il apparaît sur la tête de la taupe plutôt que sur l'ensemble Cependant, supposons qu'un jour nous décidions de créer d'autres costumes pour le Pow Sprite, peut-être à des fins d'animation, et que nous voulions également réutiliser le sprite et d'autres projets Devoir entrer et ajuster le positionnement de chaque costume à chaque fois ne serait pas très amusant. Donc, au lieu de cela, un meilleur moyen serait d'ajuster la position à l'aide d'un code. Pour cela, replaçons d'abord les formes au centre du canevas. Passons ensuite à l'onglet code. Après avoir atteint la position des taupes, il suffit de déplacer légèrement la position Y des sprites Po vers le haut Passons donc au mouvement, saisissons une modification Y par bloc et plaçons-la juste en dessous du bloc Go to mole. Nous pouvons cliquer sur le script pour voir les résultats. Il semble que le fait de monter d' environ 30 étapes devrait fonctionner. C'est bon. Et juste pour le tester, lançons le jeu et attaquons le taupe. Sympa. Et en ce moment, le pow-sprite apparaît devant la taupe, et c'est ce que nous voulons Cependant, si nous arrêtons le jeu et que nous déplaçons le sprite taupe sur la scène, lançons le jeu et touchons la taupe Le sprite du Pô apparaît désormais derrière la taupe. Pour éviter que cela ne se produise, il suffit de déplacer le sprite Po vers la couche avant au début du jeu, comme nous l' avons fait avec le hammer sprite Pour le faire dans le code Pow Sprite, allons dans la catégorie Looks. Prenez un bloc « Go to front layer et placez-le quelque part dans le script du drapeau vert. Si nous lançons le jeu maintenant et que nous touchons la taupe, le sprite pow-sprite réapparaît devant la taupe. Cependant, il apparaît également désormais devant le marteau. Cela se produit parce que lorsque nous plaçons deux sprites ou plus sur la couche avant, comme nous le faisons avec le marteau et le pow-sprite, les rayures les dessinent dans l'ordre dans lequel ils apparaissent dans le volet des sprites rayures les dessinent dans l'ordre dans lequel ils apparaissent dans le volet des sprites Donc, si nous voulions dessiner le sprite en forme de marteau devant le sprite Pow, nous pouvons cliquer et faire glisser son icône dans le volet Sprite, plaçant à droite de l'icône Pow Maintenant, si nous lançons le jeu, il dessine le marteau devant le pow-sprite N'hésite pas à garder le tien comme ça, mais j'aime bien que le sprite apparaisse devant tout Je vais donc remettre le sprite du marteau là où il se trouvait dans la peinture au sprite OK ? Maintenant, avant de terminer cette leçon, nous avons un petit problème avec notre Pow Sprite Je sais que j'ai dit que nous ne créerions les autres taupes qu'après avoir fini de recouvrir le sprite des taupes, mais allons-y et créons-en quelques autres à des fins de test Pour ce faire, nous pouvons cliquer avec le bouton droit sur le sprite dans la peinture au sprite et choisir Dupliquer, puis déplacer la nouvelle taupe quelque part dans la scène Et créons-en un autre. OK, maintenant, si nous lançons le jeu, toucher la première taupe fonctionne toujours correctement, mais si nous touchons l'une des nouvelles, le sprite Po apparaît toujours sur la première taupe Pour comprendre pourquoi cela se produit, arrêtons le jeu et passons au code Pow Sprite Lorsque le Posprite reçoit le message indiquant que la taupe est atteinte, nous lui disons de se mettre en position de taupe Cependant, le nom taupe désigne ici uniquement le sprite qui s'appelle réellement taupe Nous avons maintenant également le moule deux et le moule trois, et ceux-ci sont également disponibles dans le bloc Go to. Donc, pour que le sprite apparaisse sur la bonne taupe, nous avons besoin d'un moyen de lui dire quelle taupe ou quelles taupes ont été touchées Nous pourrions le faire en diffusant un message distinct pour chaque taupe, comme Mold Two Hits, Mod Three Hits, etc. Mais cela prendrait beaucoup de temps et ne serait pas très pratique. Une bien meilleure méthode serait de stocker des informations sur les taupes touchées dans une liste de variables, et nous apprendrons comment procéder dans la prochaine leçon 17. Utiliser les listes variables: Pour créer une liste de variables, afin de savoir quels moules ont été touchés, sélectionnons le premier sprite taupe Passons ensuite à la catégorie des variables. Et ici, cliquons sur le bouton Ma liste. La liste doit être accessible à toutes les taupes, ainsi qu'à l'ami sprite Nous devrons donc en faire une liste globale en optant pour tous les sprites Et pour le nom, on peut l'appeler hit Moles. Et comme c'est mondial, j'utilise toutes les majuscules. Bien, maintenant, cliquons sur OK. Avec cela, nous avons maintenant un nouveau bloc HIT Moles, ainsi que tout un tas de blocs pour travailler avec la liste, comme l'ajout, la suppression, l'insertion et le remplacement d'éléments, et pour vérifier le contenu de la Nous pouvons également voir la liste à l'intérieur de la scène et, comme les autres variables, nous pouvons la déplacer. Très bien, voyons comment nous pouvons commencer à utiliser la liste. La première chose que nous voulons faire, c'est que lorsqu'une taupe est touchée, nous voulons ajouter quelque chose à la liste que le sprite pw peut utiliser pour créer un clone à l'emplacement de cette taupe Si nous examinons le code POW Sprite, nous utilisons actuellement le bloc Go to pour passer à un Me Sprite en particulier Ce serait bien si nous pouvions créer un sprite HIT MO, ajouter son nom à la liste, puis le Po Sprite pourrait utiliser ce nom dans le go to block Cependant, nous n'avons aucun bloc qui nous permette d' obtenir un nom de Sprites Au lieu de cela, nous pouvons ajouter d'autres positions X et Y des Sprites à la liste, puis faire en sorte que le Sprite Po atteigne cet emplacement en utilisant le bloc Go to XY Pour cela, revenons au code Moor Sprite. Nous ajouterons la localisation de Mores à la liste avant de diffuser le message Mohit Nous devrons également ajouter les positions X et Y des Maures en tant qu' éléments distincts dans la liste Ainsi, dans la catégorie des variables, pour ajouter un élément à une liste, nous utilisons le bloc Ajouter deux. Ajoutons donc deux ajouts pour accéder à Moresblocks, en les plaçant juste au-dessus du bloc de diffusion le plus visité. Pour le premier ajout de deux blocs, passons au mouvement, prenons un bloc de position et utilisons-le comme entrée. Faisons de même avec un bloc en position Y pour l'autre bloc, ajoutons deux. OK, si nous lançons le jeu maintenant, chaque fois que nous atteignons la première taupe, ses positions X et Y sont ajoutées à la liste. appuyer sur les deux autres moules Cependant, appuyer sur les deux autres moules n'ajoute rien à la liste, et c'est parce que nous n'avons pas encore ajouté les deux blocs aux autres moules Nous allons régler ce problème dans un instant. Mais d'abord, si nous arrêtons le jeu et le relançons, la liste des taupes à succès contient toujours des objets Comme pour les autres variables, nous devons réinitialiser le contenu d' une liste lorsque le projet démarre pour la première fois. Nous pourrions le faire dans le code des taupes Sprite, mais comme nous allons utiliser exactement le même code pour tous les sprites taupes, chaque taupe réinitialiserait le contenu de la liste, ce qui ne serait pas ce qui ne serait Nous pourrions donc le faire dans le code Hammer Sprite ou PW Sprite Cependant, nous finirons par avoir un certain nombre de variables globales dans notre jeu, et les réinitialiser toutes dans l'un de ces sprites encombrera le De plus, cela n'aurait pas vraiment de sens de gérer des variables dans un sprite qui n' aurait même pas besoin de les utiliser Je trouve donc que la meilleure façon gérer des choses comme la réinitialisation des variables globales est de le faire dans le code de la toile de Et oui, tout comme les sprites, les décors ont leur propre zone de code Donc, comme nous voulons effacer le contenu de la liste HIT Ms dès le début du jeu, nous aurons besoin d'un script drapeau vert ici. Passons donc aux événements et remportons un bloc sur lequel vous avez cliqué sur le drapeau vert Ensuite, pour effacer le contenu d'une liste, si nous passons aux variables, nous devons supprimer tout le bloc. Alors prenons-en un et ajoutons-le au script du drapeau vert. Si nous lançons le jeu maintenant, la liste des moules HIT commence par être vide. Bien, maintenant faisons en sorte que nous puissions également ajouter les emplacements des autres moules à la liste Pour ce faire, nous pourrions simplement supprimer les sprites du mod 2 et du mod 3 et créer de nouveaux doublons du Mul Sprite original Mais comme nous n'avons que quelques blocs de code pour ajouter deux mods deux et trois, nous pouvons à la place copier les blocs du Mul Sprite original Pour ce faire, examinons le code original de Mol Sprites. Les deux blocs que nous voulons copier sont les deux blocs à ajouter. Pour ce faire, nous pouvons cliquer et faire glisser les blocs sur le moule, deux sprites dans le volet Sprite , puis les relâcher Si nous examinons maintenant le code des deux sprites du mod, nous pouvons voir qu'il contient désormais blocs d'ajout de deux sprites que nous avons copiés Il a également copié le bloc de diffusion, dont nous n'avons pas besoin, afin que nous puissions nous en débarrasser. Maintenant, nous pouvons copier les deux ajouter deux blocs dans le mod 3, puis les placer au bon endroit pour le mod 2 avant de diffuser Mohit Et faisons de même pour le mod 3. OK, si nous jouons au jeu maintenant, nous pouvons ajouter les emplacements des 3 taupes à la liste Il ne nous reste plus qu'à faire en sorte que le P Brite utilise réellement les emplacements Pour ce faire, examinons le code Pobrts. Ce que nous voulons que le pprite fasse, c'est qu'au lieu d'utiliser le bloc go to pour accéder à une taupe en particulier, nous voulions obtenir chaque paire de positions X et Y de la liste, puis nous rendre à cet endroit et y créer un clone Alors, d'abord, retirons le bloc de taupes Go to. Remplaçons-le ensuite par un bloc Go to XY de la catégorie Motion. Et attachons de nouveau ces blocs au script. Maintenant, comme le Palprite crée un clone à chaque fois qu'il reçoit le message indiquant qu'il a atteint une taupe, il suffit de se rendre à l'emplacement des deux premiers éléments de la liste, puis de supprimer ces éléments afin que, la prochaine fois qu'il recevra le message, il puisse se rendre à l'emplacement des deux éléments suivants, etc. OK, donc pour obtenir les deux premiers éléments de la liste, passons aux variables. Et prenons un objet en bloc. Et nous voulons en utiliser une pour chacune des entrées du bloc Go to XY. Pour X, nous voulons obtenir le point 1, qui est la position des taupes Mais pour Y, nous voulons le point deux, qui est la position Y. Enfin, nous voulons supprimer les éléments 1 et 2 de la liste. Pour ce faire, introduisons deux suppressions de blocs, en les plaçant quelque part entre le bloc Go to X Y et le bloc Create Clone. Il peut sembler que nous devions modifier l'entrée de la deuxième suppression du bloc pour supprimer l'élément deux au lieu de l'élément un. Cependant, lorsque nous supprimons le premier élément, tous les autres éléments remontent dans la liste. Ainsi, le second devient le premier, le troisième devient le deuxième et ainsi de suite. Pour cette raison, nous devons en fait supprimer le premier élément deux fois. Et si nous jouons maintenant, le sprite de votre ami apparaîtra sur chaque moule que nous frapperons. En fait, nous avons un petit problème, et cela ne se produit que lorsque nous frappons deux moules ou plus d'un seul coup. Comme nous pouvons le constater, le sprite pal n'apparaît que sur l'un des moules et l'emplacement de l' autre moule n'est pas supprimé de la liste des moules à cocher. Cela semble assez étrange, mais cela a en fait à voir avec la façon dont Scratch gère les messages, et c'est un problème courant que je rencontre dans les projets de gratteurs débutants Nous en apprendrons davantage sur le problème dans la prochaine leçon et apprendrons comment le résoudre. 18. Corriger les Pow Clones: Comme nous l'avons vu dans la leçon précédente, si nous touchons deux moules ou plus à la fois, le powsprite n' apparaît que sur l'un d'entre eux, et la liste des moules sélectionnés n'est pas effacée, et le sprite pow-sprite n' plus au bon endroit La raison pour laquelle cela se produit est que chaque fois que nous touchons 2 taupes d'un seul coup, cela envoie deux messages de détection de taupe en même temps Ainsi, lorsque le sprite Pal reçoit le premier, avant qu'il n'ait eu l'occasion d'exécuter le script when I received molehid, il reçoit le deuxième message d'attaque de taupe, qui remplace Par conséquent, le script ne s'exécute qu'une seule fois. Il crée donc un clone uniquement à l'endroit où les taupes ont été touchées pour la première fois et supprime cet emplacement de la liste Ensuite, lorsque nous touchons une autre taupe, elle utilise l' emplacement restant pour le clone suivant, et tout se dérègle à partir de là. Et nous avons en fait un autre problème possible avec notre code en ce moment concernant les clones. clones et les scratch sont traités comme des sprites distincts, et ils reçoivent les mêmes scripts que le sprite à partir duquel ils sont Cela signifie que les clones P sprite exécutent également le script mohead lorsque je reçois Il est donc fort possible qu'avant qu' un clone n'ait fini de s'animer et de se supprimer, il reçoive le message Molehit, créant ainsi inutilement un Si j'ai laissé ces problèmes dans le code, c'est parce qu'il agit de problèmes très courants rencontrés s' agit de problèmes très courants rencontrés par presque tous les gratteurs, et qu'ils peuvent être source de confusion J'ai donc pensé qu'il était important de vous les faire connaître. Très bien, alors comment résoudre ces problèmes ? Eh bien, comme les deux problèmes concernent le script Mole Hit quand j'ai reçu le script, la meilleure chose à faire serait de me débarrasser complètement du script et gérer le clonage différemment Par exemple, nous pouvons faire en sorte que le Pale Brrte vérifie en permanence la présence d' éléments dans la liste des taupes touchées, et s'il en trouve, il effectue les mêmes actions ici, se déplaçant vers l'emplacement, supprimant les éléments et en créant un clone Un bon moyen de le faire serait d'utiliser un bloc permanent au bas du script du drapeau vert. Cela est dû au fait que le script Green Flag ne s'exécute que lorsque le jeu démarre avant que nous n' ayons créé de clones. Nous n'avons donc pas à nous soucier du fait que les clones exécutent également le Très bien, faisons tout cela en accédant d'abord à Control et en ajoutant un bloc permanent au script Green Flag. Maintenant, dans le bloc Forever, nous devons vérifier s'il y a des éléments dans la liste des moles HIT Ajoutons donc un bloc I then au bloc pour toujours. Chaque fois qu'une liste contient des éléments, sa longueur est supérieure à zéro. Donc, pour ce qui est de la condition, passons d'abord aux opérateurs et introduisons un bloc supérieur à. Maintenant, pour obtenir la longueur d'une liste, nous pouvons accéder aux variables, et ici nous avons une longueur de bloc. Utilisons un comme première entrée du bloc supérieur à. Et vérifions si la longueur des moules HIT est supérieure à zéro D'accord ? Et s'il y a des éléments dans la liste, nous voulons effectuer exactement les mêmes actions que celles que nous effectuons actuellement dans le script Quand je reçois. Sortons donc tous les blocs d' ici et mettons-les à l'intérieur du bloc if then. Et maintenant, nous pouvons nous débarrasser du blocage « Quand je reçois ». OK, si nous lançons le jeu maintenant et que nous atteignons 2 taupes à la fois, un sprite Po apparaît sur chacune d'elles et tous les objets sont supprimés de la liste des taupes touchées Excellente. Bien, arrêtons le jeu et entrons dans le code Mole Sprite Nous diffusons toujours le message lorsqu'une taupe est touchée, mais nous ne faisons plus rien avec le message Cependant, nous allons laisser le bloc de diffusion ici, car dans la prochaine leçon, nous utiliserons le message « no hit » pour indiquer au jeu d'augmenter le score du joueur. 19. Points de score: Maintenant que le joueur est capable de toucher correctement les taupes, nous allons le laisser marquer des points Mais d'abord, j'ai remarqué qu'à chaque fois que je lance le jeu, l'ordre de dessin des clones Hammer Sprite et Pal Sprite change les clones apparaissant parfois derrière le marteau et parfois devant celui-ci Pour résoudre ce problème, je vais entrer dans le code POS Brite, et au lieu de déplacer le Pobrte vers la couche avant au début du jeu, je vais faire en sorte que chaque clone passe la couche avant lors Pour ce faire, je vais supprimer le bloc Go to front layer du script Green Flag et le placer haut du script lorsque je démarre en tant que script de clonage. Je vais m'assurer de rattacher ces blocs au script du drapeau vert. Maintenant, à chaque fois que je lance le jeu, les clones de Pobrte apparaissent toujours devant le marteau Bien, donc pour que le score fonctionne, la première chose dont nous avons besoin est une variable globale pour conserver le score actuel du joueur. Dans la catégorie des variables , cliquez sur Créer une variable. On peut appeler ça un score. Vérifiez que c'est pour tous les sprites, puis cliquez sur OK. Nous pouvons également masquer la liste des moles HIT maintenant, car nous savons qu'elle fonctionne correctement. OK ? Et pour simplifier les choses, nous laisserons le fond gérer la partition. Passons donc au code des arrière-plans. La première chose que nous voulons faire est de mettre le score à zéro lorsque vous cliquez sur le drapeau vert Prenons donc un bloc de score fixe à zéro et insérons-le dans le script du drapeau vert. Ensuite, nous devons augmenter le score à chaque fois qu'une taupe est touchée. Comme nous diffusons déjà le message « taupe hit » lorsque cela se produit, il suffit de faire en sorte que la toile de fond reçoive le message et augmente le score. Passons donc aux événements et apportons un bloc W I receive. Et comme le message « mole hit est le seul message que nous avons dans notre projet, il devrait déjà être choisi ici. OK ? Il ne nous reste plus qu'à revenir aux variables et à ajouter un score de modification d'un bloc au script Win I receive. Et c'est tout. Si nous lançons le jeu maintenant, chaque fois que nous touchons une taupe, le score augmente d'un point. Et si on arrête le jeu et qu'on le recommence, le score revient à zéro La variable de score semble un peu moche sur scène en ce moment, et elle sera bien meilleure lors d'une leçon ultérieure. Mais d'abord, allons-y et ajoutons également un compte à rebours au jeu afin qu'il ne dure pas indéfiniment. 20. Ajouter un compte à rebours: Pour ajouter un chronomètre au jeu, créons une nouvelle variable. Et comme nous créons la variable à partir du code de fond, notre seule option est d'en faire une variable globale. Mais c'est bien, parce que c'est ce que nous voulons faire. Très bien, appelons-le Timer. Cliquez ensuite sur OK. Et déplaçons l'écran en haut au centre de la scène pour qu'il soit plus visible. Comme pour la partition, nous l' améliorerons plus tard, mais pour l'instant, nous pouvons double-cliquer dessus pour l'agrandir Nous aurions également pu le faire en choisissant un affichage en grand format dans le menu contextuel OK, avec score, la première chose que nous voulons faire est d'initialiser la variable timer dans le script Green Flag Ajoutons donc un autre ensemble à bloquer au script. Nous voulons régler la variable du chronomètre à ce stade, et comme il s'agira d'un compte à rebours, nous devrons le démarrer à un nombre supérieur à zéro. Allons-y avec dix. Nous diminuerons le chronomètre d'une unité par seconde. Donc, au bout de 10 secondes, le jeu sera terminé. Maintenant, pour que le compte à rebours commence, nous avons besoin d'une boucle permanente qui diminue continuellement la variable du chronomètre d'une unité par seconde. Passons donc d'abord à Control, et ajoutons un bloc permanent au bas du script du drapeau vert. Et allons-y et ajoutons un bloc d'attente d'une seconde au bloc permanent. Nous voulons maintenant diminuer la variable de temporisation d'une unité. Passons donc aux variables et apportons une modification par bloc, en la plaçant sous le bloc de poids. Et faisons en sorte qu'il change le chronomètre par moins un. La raison pour laquelle nous voulons que le bloc de poids précède le bloc de change et d'achat est que le chronomètre ne passe pas immédiatement 10 à 9 au début de la partie OK ? Et pour le moment, le jeu durera toujours 10 secondes. Cependant, nous voulons que le joueur puisse augmenter le chronomètre une manière ou d'une autre afin de pouvoir continuer à jouer plus longtemps. Pour ce faire, nous pouvons faire en sorte que lorsque le joueur touche une taupe, cela augmente également le chronomètre d'une unité. Ajoutons donc une autre modification par Block au script when I receive mole hit et faisons en sorte qu'il change le chronomètre d'une à une. Bien, si nous jouons au jeu maintenant, le chronomètre commence à dix et diminue d' un par seconde Et si nous heurtons une taupe, cela augmente le chronomètre d'une unité. Cependant, lorsque le chronomètre atteint zéro, il continue de descendre dans les nombres négatifs. Nous voulons que le jeu s'arrête lorsque le chronomètre atteint zéro. Cela implique d' arrêter le chronomètre, arrêter les animations des taupes et d'empêcher le joueur de toucher les taupes Pour ce faire, lorsque le chronomètre atteint zéro, nous pouvons faire en sorte que la toile de fond diffuse le message du jeu, indiquant aux sprites qu'il est temps d'arrêter abord, nous devons vérifier si la valeur du chronomètre a atteint zéro. Pour cela, passons au contrôle et ajoutons un bloc if then au bloc permanent juste après avoir diminué la variable timer. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le chronomètre est égal à zéro. Si c'est le cas, nous diffuserons le message du jeu. Passons donc aux événements, introduisons un bloc de diffusion et diffusons un nouveau message appelé GameOver. Mais nous n'en avons pas encore fini, car actuellement, le bloc continue de fonctionner, réduit le délai. Nous devons donc empêcher le blocage permanent de s'exécuter à nouveau Une fois que le chronomètre est égal à zéro. Pour ce faire, si nous passons au contrôle, nous avons un bloc stop all. Mettons-en un dans le bloc if then après la diffusion de la partie. Arrêtez tout, mais nous allons arrêter tous les scripts du projet. Nous ne voulons pas le faire car nous allons également faire apparaître peu de texte sur le jeu plus tard et un bouton rejouer plus tard, et ceux-ci nécessiteront leurs propres scripts d'exécution pour fonctionner. Nous voulons donc simplement arrêter le script en cours, ce que nous pouvons faire en remplaçant tout par ce script. OK, si nous cliquons sur le drapeau vert maintenant et laissons le temps s'écouler, il s'arrête à zéro. Maintenant, nous devons faire en sorte que les taupes cessent également de s'animer. Pour ce faire, arrêtons le jeu et entrons dans le code du premier sprite taupe Ce que nous voulons faire, c'est que lorsque le sprite reçoit le message de fin de jeu, nous voulons arrêter l'exécution de tous ses scripts Pour cela, passons d'abord aux événements et gagnons le bloc que nous avons reçu. Et recevons GameOver. Passons à Control et ajoutons un bloc d'arrêt au script GameOver Win I received Et encore une fois, stop all arrêtera tous les scripts du projet. Nous voulons simplement arrêter tous les scripts pour ce sprite en particulier L'option dont nous avons besoin est donc d'autres scripts et sprites. Cela arrêtera les boucles permanentes dans les deux scripts Green Flag, ce qui bloquera les animations des taupes Nous devons également copier le script « when I receive GameOver » dans les autres moles Alors, cliquons dessus et faisons-le glisser sur le moule deux et modifions-le à trois sprites dans le volet Sprite OK, et cachons également le sprite du marteau une fois la partie terminée pour que le joueur sache qu'il ne peut plus frapper les taupes Pour ce faire, nous pouvons accéder au code du sprite Hammer. Ensuite, à partir des événements, introduisons une partie W I receive sur Block. Il ne nous reste plus qu'à aller dans Looks et à ajouter un bloc de masquage au script. Si nous lançons le jeu maintenant et laissons le chronomètre se terminer, le moule cesse de s'animer et le marteau disparaît. Cependant, si nous arrêtons le jeu et le relançons, le marteau est toujours invisible. Pour résoudre ce problème, il suffit d'ajouter un bloc d'affichage avant le bloc permanent et l'un des scripts Hammer Screen Flag. OK. Et une fois le jeu terminé, nous allons faire apparaître une partie par-dessus du texte, ainsi qu'un bouton rejouer lequel le joueur pourra cliquer pour redémarrer le jeu, et nous ferons tout cela dans la leçon suivante. 21. Ajouter un écran de Game Over: Après avoir arrêté le chronomètre et les animations des taupes, une fois le jeu terminé, nous ferons apparaître un texte indiquant que la partie est terminée. Pour ce faire, nous devons créer un nouveau sprite. Passons donc au bouton Choisir un Sprite et à choisir la peinture Et appelons le Sprite GameOver pour le costume, utilisons l'outil de texte Et pour l'instant, donnons-lui une couleur de remplissage noire. Pour créer du texte, il suffit cliquer dans le canevas et de commencer à taper. Si nous souhaitons modifier la police du texte, nous avons le choix entre quelques options ici. Je vais utiliser la police Marker. Nous pouvons maintenant saisir l' outil de sélection et agrandir le texte. Nous voulons qu'il soit assez grand pour qu' il occupe la majeure partie de la largeur de la scène. Et nous voulons également le centrer dans le Canvas. Pour ce qui est de la position du sprite sur la scène, il sera centré verticalement et légèrement au-dessus du centre horizontal pour faire de la place au bouton Play Again, un du centre horizontal pour faire de la place peu comme ça Allons-y avec zéro pour la position, et pour la position Y, j'utiliserai 45. OK ? De retour dans l'éditeur de costumes, nous pouvons obtenir une couleur de remplissage différente pour le texte. Je vais choisir un jaune c'est assez difficile mais c'est assez difficile à voir sur scène. Je souhaite donc également ajouter un contour noir. Cependant, si nous zoomons un peu sur le texte, la police du marqueur n'aime apparemment pas les contours, comme en témoignent ces parties étranges qui ressortent maintenant. Donc, ce que nous pouvons faire, c'est d' abord supprimer le contour, puis créer une ombre noire pour le texte. Pour ce faire, créons une copie du texte, remplissons-le en noir. Déplacez-le de manière à ce qu'il soit légèrement en dessous et à droite du texte original et envoyez-le en dessous du texte original. Et nous pouvons utiliser les touches fléchées du clavier pour ajuster davantage le positionnement. Ça a l'air plutôt bien. OK, maintenant allons dans l' onglet code et faisons fonctionner le sprite Tout d'abord, au début du jeu, nous voulons masquer le sprite Passons donc aux événements et lançons un script de drapeau vert. Passons ensuite à Looks et ajoutons-y un bloc de masquage. Nous voulons également nous assurer que le sprite est au-dessus de tous les autres sprites de la scène Ajoutons donc également un bloc «   go to front later ». Ensuite, nous voulons que le sprite apparaisse lorsqu'il reçoit le message GameOver Passons donc aux événements, introduisons un bloc W I received et recevons GameOver Tout d'abord, nous voulons rendre le sprite visible. Passons donc à Looks et ajoutons un bloc d'affichage. Cependant, au lieu de simplement le sprite apparaître soudainement, nous allons commencer sa taille à 0 %, puis l'augmenter rapidement à 100 %, en le faisant apparaître comme s'il apparaissait sur la scène Pour ce faire, nous pouvons d'abord définir la taille du sprite à 0 % en introduisant un bloc de taille 2 défini et en le mettant à zéro Ensuite, disons plus de dix répétitions. Nous ramènerons la taille à 100 %. Passons donc au contrôle et introduisons un bloc de dix répétitions. Revenons ensuite à Looks et ajoutons un changement de taille par bloc au bloc de répétition. Et nous allons laisser le temps de changer de taille par dix, ce qui, après dix répétitions devrait ramener la taille à 100 % Très bien, si nous lançons le jeu et attendons la fin du temps imparti, le sprite Game Over apparaît sur la scène Cependant, si nous examinons la taille du jeu par rapport à Sprite, elle est légèrement supérieure à 100 % La raison pour laquelle cela se produit est que nous ne pouvons pas réellement définir la taille d'un Sprite à 0 % Pour voir si c'est le cas, plaçons un bloc de taille 2 dans un espace vide. Mettons-le à zéro et cliquons sur le bloc. Comme vous pouvez le voir, la taille de mon jeu sur Sprite est de 5 %, et non de 0 % C'est pourquoi lorsque j'augmente la taille de 10 % en dix répétitions, elle finit par atteindre 105 Le nombre exact dépend en fait de la taille du costume du sprite vôtre pourrait donc être légèrement différente. OK ? Donc, si nous voulons que la taille du sprite atteigne 100 %, nous pouvons utiliser le bloc de taille 2 défini pour définir la taille à 100 et le placer juste en dessous du bloc de répétition. Si nous cliquons sur le script « Win I received now », le jeu sur Sprite apparaît et sa taille revient à 100 % Cela ajoute également un léger effet de déflation à la fin, où la taille du sprite diminue de 105 à 100, ce qui, à mon avis, rend l' animation OK, arrêtons le jeu, et maintenant nous allons créer un bouton « rejouer ». Alors commençons par créer un nouveau Sprite et appelons-le jouer à nouveau. Dans l'éditeur de costumes, utilisons l'outil rectangle et choisissons une couleur de remplissage. Je vais opter pour une orange. Et donnons-lui également un contour noir. OK ? Dessinons maintenant un rectangle près du centre de la toile. Nous voulons qu'il soit suffisamment grand pour que le joueur puisse voir et cliquer facilement, mais pas trop grand. Quelque chose d'environ 180 x 60 pixels devrait être bon. Et je vais augmenter la largeur du contour à sept. Maintenant, prenons l'outil Sleck et centrons le rectangle dans le canevas Il semble également qu' une partie du bas du rectangle soit coupée au cours de la scène. Comme nous l'avons déjà appris, nous pouvons résoudre ce problème en entourant la forme d' un rectangle sans remplissage ni contour. Je vais également centrer le rectangle transparent dans le canevas. Maintenant, prenons l'outil de texte et ajoutons du texte au bouton qui dit « Rejouer ». Je vais utiliser le blanc pour la couleur de remplissage et le San Seripant. Maintenant, nous pouvons utiliser l'outil de sélection, redimensionner le texte et nous assurer qu'il est centré Et si nous voulons le redimensionner tout en le gardant centré, nous pouvons maintenir la touche Alt ou la touche option enfoncée C'est bon. Maintenant, pour améliorer un peu l'apparence du bouton, nous pouvons arrondir les coins du rectangle. Pour ce faire, sélectionnons le rectangle, puis utilisons l'outil de remodelage Si nous zoomons, nous pouvons ajouter un nouveau nœud de chaque côté d'un nœud d'angle. Et maintenant, si nous supprimons le nœud d'angle, il arrondira le coin, et nous pouvons faire de même pour les trois coins restants. OK, ça a l'air plutôt bien. Il ne nous reste plus qu'à déplacer le sprite là où nous voulons le placer sur la scène Je vais donner à la mienne une position de zéro et une position Y de moins 50. Bien, une fois le costume terminé, passons au code d'abord, comme dans le cas de Game Over Sprite, au début du jeu, nous voulons masquer le bouton et le placer au premier plan plus tard Passons donc aux événements et lançons un script de drapeau vert. Accédez ensuite à Looks et insérez un bloc de masquage. Et un bloc « go to front later ». Ensuite, lorsque le Sprite reçoit le message de fin de partie, nous pouvons le faire apparaître la même manière que nous l'avons fait pour le sprite de fin de partie Ainsi, au lieu de recréer le script W I receive game over, nous pouvons accéder au script game over Sprite et cliquer et faire glisser son script W I receive game over sur le Play Again Nous pouvons maintenant revenir au Play Again Sprite et nettoyer un peu les scripts Si nous cliquons sur le script W I received GameOver, le bouton apparaît de la même manière que le sprite Game Over Pour rendre le bouton encore plus beau, nous pouvons y ajouter des effets supplémentaires. Par exemple, lorsque le joueur survole le bouton, nous pouvons lui donner une couleur plus claire et augmenter légèrement la taille, et lorsque le joueur arrête de le survoler, nous pouvons le ramener à la normale Pour ce faire, nous devons vérifier en permanence si le sprite touche le pointeur de la souris Passons donc d'abord à Control et ajoutons un bloc permanent au bas du script W I received. Ensuite, comme nous allons faire différentes choses, selon que le sprite touche ou non le pointeur de la souris, nous devrons ajouter un bloc I thin else au bloc pour toujours. Pour ce qui est de la condition, passons à la détection et introduisons un bloc de pointeur de souris tactile. Très bien, donc si le sprite touche le pointeur, rendons-le d'abord plus lumineux Pour cela, nous pouvons aller dans Looks et ajouter un ensemble d'effets de deux blocs à la partie I du bloc if the s. Pour l'effet, nous voulons utiliser la luminosité, et quelque chose comme 20 devrait suffire. Si le sprite ne touche pas le pointeur, nous veillerons à ce que la luminosité soit réglée sur zéro Ajoutons donc un autre bloc d'effets définis et placez-le dans la partie autre, et réglons la luminosité à zéro. Si nous cliquons sur le script et que nous survolons le bouton, sa couleur devient plus claire, et si nous nous éloignons du bouton, la couleur redevient normale Ensuite, nous allons faire en sorte que le bouton agrandisse également un peu lorsque nous le survolons, puis qu'il redevienne normal lorsque nous nous en éloignons. Pour ce faire, arrêtons le jeu. Ensuite, prenons un bloc Bye de taille variable et ajoutons-le à la partie I du bloc de notes IN. Pour donner au bouton une animation de croissance, nous allons effectuer une petite astuce mathématique. Passons d'abord aux opérateurs, un bloc de division et placez-le dans l'entrée du bloc de modification de taille. Maintenant, prenons un bloc de soustraction et utilisons-le comme première entrée du bloc de division. Passons ensuite à Looks, prenez un bloc de taille. Et utilisez-le comme deuxième entrée du bloc de soustraction. Maintenant, si nous fixons la première entrée à supérieure à 100, par exemple 120, et que nous divisons les résultats par quelque chose comme deux, tout cela augmentera la taille du sprite de plus en plus petite jusqu'à ce qu'il atteigne une taille de 120 Par exemple, lors de la première exécution du bloc, la taille sera de 100. Et comme le bloc de soustraction est séparé du bloc de division, scratch effectuera la soustraction en premier, ce qui nous donne 20 Il divisera ensuite 20 par deux, ce qui nous donnera dix. Enfin, cela modifiera la taille du sprite de dix, le portant à 110 Ainsi, la prochaine fois que le bloc sera exécuté, il fera 120 moins 110, soit dix, puis divisera dix par deux, soit cinq, et il ajoutera les cinq à la taille totale, portant le sprite à une taille de 115 Et il continuera à le faire jusqu'à ce que la taille du sprite atteigne finalement 120 OK, et pour revenir à la taille à 100 %, il suffit de dupliquer le bloc de changement de taille, l' ajouter à la partie els. Et au lieu de 120, utilisons 100. Si nous exécutons le script, maintenant, lorsque nous survolons le bouton, sa taille passe à 120 Et si on s'éloigne, il retombe à 100. Si nous voulons l'agrandir lorsque nous le survolons, il suffit d'utiliser un nombre supérieur à 120 Et nous pouvons également ralentir les animations en les divisant par un plus grand nombre. Mais je vais ramener le mien à 122. C'est bon. Il ne nous reste plus qu'à faire en sorte que le bouton fasse réellement quelque chose lorsque nous cliquons dessus. Pour ce faire, arrêtons d'abord le jeu. Passons ensuite aux événements et lançons un nouveau script à l'aide du bloc WT Sprite, cliqué Ainsi, lorsque vous cliquez sur le sprite, nous voulons diffuser un nouveau message, et nous voulons également masquer le Alors d'abord, introduisons un bloc de diffusion. Et diffusons un nouveau message intitulé Play Again. Passons maintenant à Looks et introduisons un bloc de masquage. Cependant, pour le moment, si le temps imparti est écoulé alors que le joueur est occupé à essayer de frapper les taupes, il est possible qu'il clique accidentellement sur le bouton rejouer alors qu'il est encore très petit sur la scène Le jeu recommencera alors immédiatement, ce qui pourrait semer la confusion chez le joueur. Pour éviter cela, nous pouvons faire en sorte que lorsque vous cliquez sur le sprite, il diffuse le message et ne se cache que si la taille du sprite est supérieure La raison pour laquelle nous vérifions s' il est supérieur à 100 est qu'une fois que le bouton a fini d'apparaître sur la scène, sa taille passera au-dessus de 100 dès que le joueur le survolera Très bien, passons donc à Control, un bloc if thin et enroulons-le à la fois autour du bloc de diffusion et du bloc de masquage. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons maintenant à Looks, et vérifions si la taille est supérieure à 100. OK. Et lorsque nous diffusons le message Play Again, nous voulons également masquer le jeu au profit d'un sprite Passons donc au code Game over Sprite. Passons ensuite aux événements, ajoutons-en un autre lorsque je reçois bloc et que je rejouerai. Il ne nous reste plus qu'à aller dans Looks et à ajouter un bloc de masquage au script. Si nous démarrons le jeu maintenant et que nous laissons le temps imparti, le jeu avec les sprites et le jeu contre les sprites apparaîtront L'animation de survol pour le jeu contre Sprite fonctionne également, et si nous cliquons dessus, elle masque les deux Pour le moment, cependant, le jeu ne redémarre pas réellement. Nous allons résoudre ce problème dans la prochaine leçon. 22. Redémarrer le jeu: Pour que le joueur puisse redémarrer le jeu en cliquant sur le Sprite rejouer, nous allons devoir apporter quelques modifications au code de notre projet En effet, pour le moment, nous utilisons les scripts Green Flag pour configurer tous nos sprites Et malheureusement, il n'y a aucun bloc que nous puissions utiliser pour réexécuter tous les scripts Green Flag. La seule façon de les exécuter est de cliquer manuellement sur le drapeau vert. Nous pouvons donc faire en sorte que la toile de fond diffuse le message de début de partie immédiatement au début du jeu, et que notre sprite se configure automatiquement lorsqu'il reçoit le message de début de partie plutôt que lorsque le joueur clique sur le drapeau vert Cela nous permettra également de diffuser à nouveau le message de démarrage du jeu lorsque le joueur cliquera sur le bouton Play Again, ce qui réinitialisera tous les sprites OK ? Passons donc d'abord au code de la toile de fond. Et ici, nous voulons diffuser le message Start game, fois lorsque le drapeau vert est cliqué et chaque fois que nous recevons le message Play Again Passons d'abord aux événements et ajoutons un bloc de diffusion au script du drapeau vert avant le bloc permanent. Et diffusons un nouveau message intitulé Start Game. OK, maintenant introduisons When I receive block, et reprenons le jeu. Et ici, nous devons faire exactement les mêmes choses que dans le script Green Flag. Cependant, au lieu d'utiliser des doublons de tous les blocs, ce qui encombrera le code, nous pouvons créer un bloc personnalisé qui fait tout cela Ensuite, nous pouvons demander aux deux scripts d' exécuter le bloc personnalisé. Pour créer un bloc personnalisé, nous allons dans la catégorie Mbloxs. Tout ce que nous avons ici pour le moment, c'est le bouton Mu Block. Alors allons-y et cliquons dessus. OK ? Donc, tout d'abord, nous pouvons donner à notre bloc personnalisé un nom tel que Start Game. Et nous pouvons également ajouter différents types d'entrées et d'étiquettes au bloc. Nous les utiliserons plus tard dans le cours. Mais pour le simple bloc que nous sommes en train de créer en ce moment, nous n'avons besoin de rien de plus, alors allons-y et cliquons sur OK. Très bien, cela ajoute donc un bloc de jeu de départ défini à notre code. Nous pouvons utiliser le bloc défini comme script en y ajoutant d'autres blocs. Nous avons également un bloc de démarrage dans la catégorie mBlock maintenant Nous pouvons placer ce bloc n'importe où dans l'un de nos scripts, et lorsque le script exécutera le bloc, il exécutera tous les blocs contenus dans le script de démarrage de jeu défini. Et pour définir Start game, extrayons tous les blocs du script Green Flag et attachons-les au bloc de départ défini. Maintenant, dans mes blocs, prenons un bloc de départ et ajoutons-en un à la fois au script du drapeau vert et au script de jeu contre la victoire que je reçois. Désormais, chaque fois que vous cliquez sur le drapeau vert, le bloc Démarrer la partie s'exécute, ce qui entraîne l'exécution de tous les blocs du jeu en fin de partie, et il en va de même lorsque le message de reprise de la partie est reçu Il ne nous reste plus qu' à demander à nos sprites de se configurer lorsqu'ils reçoivent le message « Démarrer le jeu », et nous allons commencer par le marteau Passons au code Hammer Sprite. Nous devons exécuter les deux scripts ici lorsque le message de démarrage du jeu est reçu plutôt que lorsque le drapeau vert est cliqué Alors, commençons par détacher tous les blocs des deux blocs du drapeau vert Ensuite, nous pourrons nous débarrasser des blocs du drapeau vert. Nous pouvons maintenant accéder aux événements et ajouter un bloc «   quand j'ai reçu » en haut de chaque script. Et nous voulons qu'ils puissent commencer la partie pour tous les deux. Passons ensuite au taupe sprite, et faisons de même pour les deux scripts Green Flag présents ici La prochaine étape est le Pow Sprite. Nous n'avons qu'un seul script à modifier ici. Maintenant, pour le moule 2 et le mod 3, nous allons terminer coder le sprite du moule dans la leçon suivante, ce qui signifie que nous pourrons ajouter tous les moules à la scène Pour l'instant, nous pouvons simplement retirer le moule 2 et sprites 3 en cliquant sur le bouton corbeille à côté de leurs icônes et du volet des sprites Et en ce qui concerne les sprites rejouables à plusieurs reprises , nous n'avons en fait rien à changer , car nous les cachons déjà au début, et dès que le joueur clique sur le bouton Play Again , une nouvelle partie démarre C'est bon. Et avec cela, si nous lançons le jeu, nous pouvons voir que tout fonctionne comme avant. Et une fois le chronomètre terminé, nous pouvons cliquer à nouveau sur Play et le jeu redémarre Une chose que je n'aime pas, cependant, c'est que juste après avoir cliqué sur le bouton Play Again, le marteau balance dès qu'il devient visible Cela se produit parce que si nous arrêtons le jeu et que nous saisissons le code du hammer, juste après avoir cliqué sur le bouton Play Again et qu'une nouvelle partie commence, le script indique que le bouton de la souris est enfoncé, ce qui fait pivoter le marteau nous saisissons le code du hammer, juste après avoir cliqué sur le bouton Play Again et qu'une nouvelle partie commence, le script indique que le bouton de la souris est enfoncé, fait pivoter le Ce n'est pas si grave, mais je trouve cela un peu ennuyeux et c'est très facile à corriger, alors autant le faire. Pour ce faire, il suffit de dupliquer l'attente jusqu'à ce que la souris ne soit pas enfoncée ou que l'on dupliquer l'attente jusqu'à ce que la souris ne soit pas n' appuie pas sur le clavier pour le bloquer et de le placer juste au-dessus du bloc permanent. Si nous relançons le jeu et laissons le temps imparti, cliquer sur le bouton Rejouer ne fera pas balancer le marteau. Et il y a en fait une autre amélioration que nous pouvons apporter, car cela peut prendre une seconde pour que la ou les premières taupes apparaissent au début du jeu Nous pouvons attendre environ une seconde de plus avant que le compte à rebours ne commence Pour ce faire, arrêtons le jeu et passons au code de la toile de fond. Passons maintenant à Control et ajoutons un bloc d'attente d'une seconde au script de démarrage du jeu défini juste avant le bloc permanent. Bien, dans la prochaine leçon, nous allons enfin terminer la liste des sprites supplémentaires 23. Terminer les taupes: Pour terminer le taupe sprite, passons au code du sprite taupe Et en fait, nous déjà pratiquement terminé avec le code. Cependant, nous souhaiterons peut-être apporter certaines modifications au code ultérieurement, que nous souhaiterons appliquer à tous les sprites taupes, et devoir modifier le code de chaque taupe individuel serait très pénible Par exemple, dans la leçon suivante, nous ferons en sorte que la difficulté du jeu augmente, ce qui aura une incidence sur des facteurs tels que la fréquence à laquelle une taupe apparaît, durée pendant laquelle elle reste debout et la durée pendant laquelle elle reste enfoncée avant de décider si elle doit réapparaître Si nous voulons modifier ces attributs pour tous les sprites du moule à la fois, au lieu de saisir toutes les valeurs de cette manière, ce que l'on appelle du codage en dur, nous devons les remplacer par des variables globales Très bien, passons variables et cliquons sur le bouton de variable MA. Pour toutes ces variables, nous voulons que cette case soit cochée pour tous les sprites, et nous utiliserons la première variable du bloc de sélection aléatoire qui détermine si la taupe doit apparaître ou non Nous pouvons donc l'appeler quelque chose comme mole show factor. C'est un nom plutôt maladroit. Donc, si vous pouvez en trouver un meilleur, n'hésitez pas à le changer. Quoi qu'il en soit, cliquons sur OK, et créons-en un autre. Ce sera pendant combien de temps la taupe fera une pause en position haute. Appelons donc cela une pause moule. Cliquez sur OK. Enfin, créons une autre pause appelée pause du moule, qui déterminera la durée pendant laquelle le moule reste enfoncé avant de décider de le remonter ou non. Et nous n'avons pas besoin de montrer aucune de ces variables sur scène, alors décochons-les ici. Maintenant, prenons le bloc de facteurs d'affichage des taupes, et utilisons-le pour remplacer les 50 présents dans le bloc Pick Random. Ensuite, prenons le bloc de pause mole up et plaçons-le dans le premier bloc d'attente d'une seconde. Faisons ensuite une pause et plaçons-la dans le dernier bloc d' attente d'une seconde. Ensuite, nous devons entrer dans le code de fond, et dans le jeu Fine Start, nous allons définir les valeurs par défaut des nouvelles variables de moule Donc, d'abord, prenons un bloc de deux et plaçons-le quelque part en haut du script. Pour celui-ci, choisissons le facteur d'affichage des taupes, et nous allons maintenant commencer la valeur à 200. Comme nous le verrons, ce sera une très bonne valeur de départ une fois que tous les moules seront sur scène Cependant, vous pouvez bien entendu toujours ajuster les valeurs en fonction de vos besoins. Très bien, maintenant ajoutons un autre set à bloquer. Et avec celui-ci, nous allons régler le moule sur pause à un. Enfin, nous ferons de même pour la pâte à modeler. Très bien, nous avons officiellement fini de coder le sprite taupe. Nous pouvons maintenant commencer à remplir la scène avec Pour ce faire, il suffit créer un tas de copies du sprite taupe et de les déplacer vers différents emplacements. Et nous voulons le faire ligne par ligne, commençant par le fond de la scène et en passant à l'avant. En effet, comme nous l'avons déjà appris, moins que nous ne changions la couche d' un sprite en particulier dans le code, scratch le dessine dans l'ordre dans lequel nous l'avons déplacé sur la scène Nous ne voulons pas non plus placer de taupes trop près du bord droit de la scène, car dans ce cas, le joueur devra déplacer son curseur jusqu' le joueur devra déplacer son curseur jusqu'ici pour toucher la taupe Très bien, une fois que nous aurons fini d'ajouter les taupes à la scène, cliquons sur le drapeau vert et regardons la magie opérer. Pas mal. Cependant, c'est bien trop facile pour le moment. Nous pourrions probablement continuer à frapper des taupes indéfiniment, ou du moins jusqu'à ce que nous en ayons assez du jeu Dans la leçon suivante, nous allons corriger ce problème en augmentant la difficulté à différents moments du jeu. 24. Augmenter la complexité: Pour augmenter la difficulté du jeu, il suffit d' ajuster les valeurs des variables globales que nous avons créées pour les taupes dans la leçon précédente Par exemple, nous pouvons augmenter facteur d'affichage des taupes pour afficher moins de taupes Nous pouvons réduire les points de rechute des taupes pour les faire redescendre plus rapidement, ou nous pouvons augmenter les points de réduction des moisissures afin qu'ils restent plus longtemps avant de remonter. Et nous pouvons modifier les valeurs à différents moments du jeu. Comme, par exemple, lorsque le joueur a atteint des scores particuliers. C'est bon. Et comme nous gérons des variables globales, nous allons faire tout cela dans le code de la toile de fond. Donc, nous allons procéder après avoir augmenté le score et le chronomètre et lorsque je recevrai le script mol hit, nous ajouterons quelques blocs I thin pour vérifier si le score a atteint une certaine valeur. Si c'est le cas, nous ajusterons les variables du moule. Pour commencer, allons dans Control et ajoutons un bloc I Thin au bas du script Mole Hit. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Et pour le premier, s'il s'agit d'un bloc mince, nous allons vérifier si le score est égal à cinq. Passons aux variables, utilisons un bloc de score comme première entrée et vérifions s'il est égal à cinq. Nous allons maintenant attribuer des valeurs différentes au plus grand nombre de variables. Ajoutons deux blocs au bloc if thin. Et pour le premier, allons-y avec mole up pause. Pour rendre le jeu plus difficile, nous pouvons réduire la pause d'une taupe, ce qui permettra à une taupe de passer moins de temps en position haute. Cela signifie que le joueur devra se déplacer plus rapidement pour frapper la taupe OK, alors réglons-le sur quelque chose qui soit légèrement inférieur à la valeur de départ de un. 0,7 devrait être bon. Désormais, chaque fois que le joueur atteint un score de cinq, les taupes ne restent debout 0,7 seconde avant de redescendre. Pour le prochain, nous augmenterons la valeur du mole down pass. Cela obligera les taupes à rester enfoncées plus longtemps avant de décider de remonter ou non Nous voulons aller un peu plus haut que 1 cette fois, donc quelque chose comme 1,3 devrait être une bonne solution. Enfin, nous allons définir le facteur de démonstration des taupes. Nous voulons en fait diminuer la valeur du facteur d'exposition des taupes afin que les taupes aient plus de chances d'apparaître Mettons-le donc à moins de 200, peut-être 180. Cela compensera en quelque sorte les modifications que nous avons apportées aux autres variables. Mais comme nous allons le voir, le jeu va certainement devenir encore plus difficile. Très bien, nous avons donc le premier changement de difficulté lorsque le joueur atteint un score de cinq. Faisons maintenant un autre changement lorsqu'ils atteindront le score de dix. Pour ce faire, nous pouvons d'abord dupliquer l'intégralité du bloc if then et pour empêcher le script de s'exécuter automatiquement, je vais d'abord mettre le doublon dans un espace vide, puis le joindre au bas du script. Et cette fois, vérifions si le score est égal à dix. Continuons à réduire le taux de moisissure en le réglant à 0,4 Augmentons le taux de moisissure à 1,5 et diminuons le facteur d' exposition du moule à 150 Et toutes ces valeurs sont assez arbitraires, alors n'hésitez pas à en essayer d' autres. OK, dupliquons ceci si ensuite bloquons. Mettez-le en bas et vérifiez si le score est égal à 20. Cette fois, je vais régler la pose de la taupe à 0,2, pose du moule à deux et le facteur d'exposition de la moisissure à 100. Dupliquons à nouveau, mettons-le en bas et vérifions-le pour un score de 30. Pour les variables, j' utiliserai 0,1, 2,5 et 50. Bien, dupliquons encore une fois et partons avec un score de 45 Cette fois, je vais mettre la pause de la taupe à zéro, ce qui signifie que dès qu'une taupe remonte, elle commence à redescendre. Le joueur devra donc être assez rapide pour réussir Pour une pause sur la moisissure, je vais en choisir trois, et pour Mole Show Factor, je vais en choisir 40, et ça devrait être une bonne chose. Maintenant, bien sûr, vous pouvez continuer ainsi si vous le souhaitez, et vous pouvez ajouter des vérifications pour les scores qui se situent entre l'un de ces autres scores, exemple vérifier un score de 40 ou quelque chose comme ça. OK ? Et maintenant, si on lance le jeu et qu'on frappe des taupes, ça devient un peu plus difficile de marquer cinq points C'est encore plus difficile à dix points. Encore une fois, à 30 points, à 45 points et au-delà, il devient assez difficile de frapper les taupes C'est bon. Et avec cela, nous avons maintenant un jeu Whack a mole entièrement fonctionnel Cependant, nous pouvons certainement faire certaines choses pour améliorer l'apparence du jeu, par exemple en améliorant l'affichage du score et du chronomètre et en ajoutant des effets sonores Et nous allons commencer par l'affichage du score dans la prochaine leçon. 25. Améliorer le score: Pour améliorer l' affichage de la partition, déplaçons d'abord un peu la partition actuelle vers le bas. Et ce que nous pouvons faire, c'est placer une étoile en haut à gauche de la scène pour représenter le score. Ensuite, nous pouvons utiliser de grands nombres à côté l'étoile pour indiquer la valeur réelle du score. D'accord ? Pour commencer, nous allons créer un sprite étoilé Dessiner des étoiles et se gratter peut être un peu pénible. Mais heureusement, Scratch possède déjà un très bon sprite vedette que nous pouvons utiliser Pour le trouver, cliquez sur le bouton Choisir un sprite. Recherchez ensuite Star. C'est ici. Choisissons-le. Nous avons maintenant un sprite étoilé dans le panneau des sprites et sur la scène, et nous pouvons le déplacer vers le haut à Une fois que nous l'avons là où nous le voulons, nous voulons nous assurer qu'il démarre à cet endroit chaque fois que nous lançons le jeu, au cas où nous le déplacerions accidentellement pendant le montage. Cela sera important pour que l'ensemble de l' affichage de la partition reste beau. OK, donc pour ce faire, dans l'onglet code du Sprite vedette, passons aux événements et un bloc sur lequel vous avez cliqué sur le drapeau vert Passons maintenant au mouvement et ajoutons un bloc Go to XY au script Green Flag. Les valeurs du bloc doivent déjà être identiques à la position de l'étoile sur la scène. Et c'est tout ce que nous avons à faire avec la star pour le moment. , créer un bel affichage numérique pour la partition Cependant, créer un bel affichage numérique pour la partition va demander un peu plus de travail. Tout d'abord, nous allons devoir créer un sprite et lui donner un costume distinct pour chaque chiffre de 0 à 9 À côté de l'étoile, nous allons créer clones du sprite numérique côte à côte , chacun portant le même numéro que le chiffre correspondant de la partition OK, donc pour commencer, créons un nouveau sprite, et il faudra qu'il s' agisse d'un sprite personnalisé, alors choisissons la peinture Et nous allons en fait avoir un sprite numérique distinct pour le score et le chronomètre Appelons donc cela un chiffre de score. Bon, maintenant, travaillons sur les costumes. Comme nous le verrons plus tard, nous allons en fait avoir besoin d'un costume vide. Nous allons donc laisser celui-ci en blanc. Cependant, la façon dont nous nommons les costumes est importante. Le ou les mots que nous utilisons pour les noms n'ont pas d'importance, mais nous devons utiliser les mêmes mots pour tous les costumes. Et à la fin du nom du costume, il faut ajouter le chiffre qui correspond au chiffre que nous utilisons pour ce costume. Par exemple, nous pouvons nommer tous les chiffres des costumes suivis d'un chiffre en particulier. Mais comme ce costume va rester vide, nous n'ajouterons pas de chiffre à son nom. Nous pouvons donc simplement l'appeler chiffre. Créons maintenant un autre costume en cliquant le bouton « Choisir un costume » et en cliquant sur « Peindre ». Nous allons mettre un zéro dans ce costume, nous devons donc le nommer chiffre zéro. Créons maintenant un zéro à l'intérieur du costume en saisissant l'outil de texte, en choisissant le noir pour le remplissage, en zoomant légèrement sur le canevas, en cliquant dessus et en tapant un Vous pouvez choisir une autre police si vous le souhaitez, mais je vais laisser la mienne sur Sanseraf D'accord ? Maintenant, nous pouvons l'agrandir un peu. Quelque chose comme ça devrait être une bonne chose. Et nous voulons nous assurer de placer le zéro au centre de la toile. Je veux aussi l' épaissir un peu. Pour ce faire, je peux y ajouter un contour noir. Une largeur de trois me semble plutôt bonne. Et nous pouvons aller de l'avant et déplacer le sprite sur la scène pour qu'il se trouve juste à droite de l'étoile Nous devons maintenant créer les costumes pour les chiffres restants de un à neuf. Pour ce faire, dupliquons le costume avec le chiffre zéro. Scratch augmente automatiquement le nombre à la fin des costumes nommés en notre honneur, mais pour une raison ou une autre, il a décidé de sauter le numéro un. Nous allons donc changer le nom en chiffre un. Il ne nous reste plus qu'à remplacer le zéro du costume par un. Pour ce faire, nous pouvons saisir l'outil de texte, sélectionner le zéro, appuyer sur la touche retour arrière pour le supprimer et en taper un Il doit toujours être centré, mais nous pouvons utiliser l' outil de sélection pour vérifier. Faisons maintenant la même chose pour deux en dupliquant d'abord le chiffre Et cette fois, il a utilisé le bon numéro pour le nom. Il ne nous reste plus qu'à remplacer celui d'ici par un deux et à nous assurer qu'il est centré. Maintenant, répétons le processus pour les chiffres restants. Scratch semble maintenir le costume centré ou du moins assez près du centre, donc je ne vais pas me donner la peine de vérifier. OK, une fois que nous aurons terminé le costume au chiffre neuf, nous en aurons fini avec les costumes. Passons maintenant à l'onglet code et faisons en sorte que tout cela fonctionne. d'abord, comme pour le Sprite en étoile, nous voulons nous assurer que le sprite à score commence au bon endroit au cas où nous le déplacerions accidentellement Passons donc aux événements et lançons un script de drapeau vert. Passez ensuite au mouvement, introduisez un bloc Go to XY. Et assurez-vous que les valeurs du bloc sont les mêmes que la position actuelle du sprite Très bien, alors comment faire passer le sprite au costume qui affichera, par exemple, le premier chiffre du score Et juste pour être sur la même longueur d'onde, passons aux variables et plaçons un ensemble de deux blocs dans un espace vide, et fixons le score à quelque chose comme 15. Cliquez ensuite sur le bloc pour définir la variable. OK, donc si nous voulons obtenir un chiffre en particulier à partir du score, nous pouvons nous adresser aux opérateurs, et nous avons ici une lettre de bloc. Mettons également l'un d'entre eux dans un espace vide. Si nous cliquons sur le bloc, nous obtenons cette fenêtre contextuelle qui nous montre quels seront les résultats du bloc. Il affiche un A minuscule parce que nous obtenons ici la première lettre du mot Apple, qui est une minuscule A. Si nous changeons le chiffre d'ici en deux et que nous cliquons sur le bloc, nous obtenons un P minuscule, nous obtenons un P minuscule, qui est Et bien qu'il indique la lettre et le nom du bloc, il fonctionne également avec les chiffres. Et au lieu de taper une valeur dans la deuxième entrée, nous pouvons utiliser un autre bloc, tel qu'un bloc de variables, et obtenir une lettre ou un chiffre particulier à partir de la valeur de la variable. Donc, si nous voulons obtenir un chiffre à partir de la variable carrée, nous pouvons accéder aux variables, saisir un bloc carré et l'utiliser comme deuxième entrée. Si nous cliquons sur le bloc maintenant, nous obtenons le deuxième chiffre du score, qui est cinq. Et si nous rechangeons les deux en un et que nous cliquons dessus, nous en obtenons un, qui est le premier chiffre du score. OK, donc pour remplacer le costume de sprites le costume approprié pour un chiffre en particulier du score, nous devons prendre le mot chiffre, que nous utilisons dans le nom de tous les costumes, et le combiner avec le chiffre obtenu avec une lettre de bloc. Et le résultat sera le nom complet du costume vers lequel nous voulons passer. Bien, donc d'abord, pour joindre éléments tels que des lettres et des chiffres, nous pouvons accéder aux opérateurs et utiliser un bloc de jointure. Mettons-en donc un dans la zone de code. Pour la première saisie, nous pouvons taper un chiffre, en veillant à utiliser la même orthographe que celle que nous utilisons pour les costumes. Et pour la deuxième entrée, nous pouvons utiliser la lettre de bloc ici. Si nous cliquons sur le bloc, cela nous donne le chiffre 1, qui est une combinaison du mot chiffre et du premier chiffre du score. Enfin, pour passer au costume à 1 chiffre, il suffit d'aller dans Looks, d' apporter un costume d'interrupteur à bloquer et d'y mettre tout le bloc de jointure. Si nous cliquons sur le bloc, le costume passe au chiffre un indiquant un sur scène. Si nous voulons obtenir le deuxième chiffre du score, nous pouvons le remplacer par deux et cliquer à nouveau dessus. Et maintenant, le score de Sprite indique un cinq. D'accord ? Maintenant que nous savons comment obtenir le bon costume, nous devons être en mesure d'afficher tous les chiffres des scores sur scène, et non un seul d'entre eux. Pour cela, nous utiliserons des clones du sprite à chiffres de score. Et comme pour le Po Sprite, nous n'allons pas vraiment afficher le sprite du score lui-même Au lieu de cela, nous ne l'utiliserons que pour créer les clones aux bons emplacements et les afficher C'est une pratique courante lorsque vous travaillez avec des clones et scratch, car nous pouvons faire des choses avec les sprites, clones que nous ne pouvons pas faire avec le sprite lui-même, comme les supprimer D'accord ? Masquons donc d'abord le sprite lorsque vous cliquez sur le drapeau vert en ajoutant un bloc de masquage au script du drapeau vert Ensuite, pour chaque clone, il devra savoir quel chiffre obtenir à partir de la variable score. Pour ce faire, nous pouvons créer une variable locale appelée index, qui contiendra l'indice d'un chiffre donné dans le score. Et en en faisant une variable locale, chaque clone en obtiendra une copie séparée, ce qui nous permettra d'utiliser une valeur différente pour chaque clone. Très bien, créons donc la variable en accédant à variables, en cliquant sur créer une variable, l' appelant index, choisissant uniquement ce sprite et en cliquant sur OK Et nous n'avons pas besoin de le montrer sur scène, nous pouvons donc le décocher ici Maintenant, prenons un bloc d'index 2 et ajoutons-le au script Green Flag. Pour le premier clone, nous voulons définir l'index sur un. La raison pour laquelle nous définissons la valeur avant de créer le clone est que lorsque nous créons le clone, le clone crée une copie de la variable d'index avec la valeur actuelle de la variable. Nous devons maintenant créer suffisamment de clones pour tous les chiffres possibles que le score peut avoir Il est très peu probable que quelqu' obtienne un score supérieur à trois chiffres. Mais juste pour être sûr, nous allons créer quatre clones. Cela permettra au joueur d'atteindre un score de 9 999 points. OK, donc pour créer quatre clones du score Sprite, allons d'abord dans Control, ajoutons un bloc de répétition au bas du script drapeau vert, et faisons-le répéter quatre fois Maintenant, ajoutons un bloc de création d'un clone de moi-même au bloc de répétition. Et entre chaque création de clone, nous devons augmenter l'index d'une unité. Passons donc aux variables et introduisons un indice de modification d'un bloc, en le plaçant dans le bloc de répétition juste après le bloc Create Clone. Le premier clone aura donc un indice de un. Le second aura un indice de deux et ainsi de suite. Bien, maintenant que nous créons les quatre clones, nous devons les montrer et leur faire changer le costume approprié Passons donc d'abord au contrôle et introduisons un « when I start » en tant que bloc de clonage. La première chose que nous allons faire est de montrer le clone. Passons donc à Looks et ajoutons un bloc d'affichage. Nous devons le faire parce que nous cachons le sprite d'origine, ce qui fera également en sorte que les clones seront cachés au départ Nous allons maintenant utiliser le bloc de costumes Switch que nous avons configuré ici pour changer de costume de clones. Cependant, au lieu de coder l'index en dur de cette manière, nous devrons utiliser la variable index. Passons donc aux variables, introduisons un bloc d'index et utilisons-le comme première entrée de la lettre du bloc. De plus, comme le score changera continuellement pendant le jeu, nous avons également besoin que le costume des clones passe continuellement au bon Passons donc à Control et organisons un bloc permanent autour du bloc de costumes Switch. Si nous lançons le jeu maintenant, le sprite à chiffres Scorr affiche le score correct jusqu'à ce qu' il atteigne dix ou Maintenant, les chiffres sont tous groupés. En effet, nous devons également déplacer chaque clone un peu vers la droite afin qu'il ne soit pas dans la même position que le clone précédent. Pour ce faire, arrêtons le jeu et affichons le sprite du score Maintenant, dupliquons le sprite et déplaçons le doublon à peu près là où nous voudrions que le deuxième chiffre soit Très bien, le duplicata a une exposition négative 142, et l'original a une exposition négative 165 Il s'agit d'une différence de 23 , que je vais arrondir à 25. Donc, pour placer les clones dans les bonnes positions, après avoir créé le premier clone, il suffit d'augmenter l'exposition des sprites de 25 avant de créer chaque clone consécutif Supprimons donc d'abord le sprite à double score puisque nous n'en avons plus besoin, puis passons au mouvement Et ajoutons une modification X par bloc dans le bloc de répétition après le bloc Create Clone afin que cela n'affecte pas la position du premier clone. Et changeons X par 25. Si nous lançons le jeu maintenant et que nous marquons quelques points, même lorsque nous atteignons dix points et plus, le score s'affiche correctement. Et juste pour nous assurer que cela fonctionne également avec des scores à trois ou quatre chiffres, nous pouvons arrêter le jeu et utiliser le bloc de score supplémentaire ici. Nous pouvons essayer quelque chose à trois chiffres, par exemple 200, cliquer sur le bloc pour le définir, puis cliquer sur le script drapeau vert. Sympa. Essayons également un score à quatre chiffres, comme 6789 Cela a également l'air bien. Cependant, si nous dépassons 9 999, seuls les quatre premiers chiffres seront les quatre premiers chiffres car nous ne créons que quatre clones Nous pouvons toujours ajouter d'autres clones si nous le voulons, mais comme je l'ai dit, il sera quasiment impossible d'atteindre un score à quatre chiffres avec le jeu tel qu'il est actuellement Donc, pour l'instant, nous pouvons nous en tenir à quatre clones. C'est bon. Et maintenant, nous en avons presque terminé avec l'affichage des scores. Cependant, il y a une chose nous n'avons pas encore vraiment parlé. Lorsque nous avons créé les costumes du sprite à score numérique, nous en avons laissé un vide en le désignant simplement par un chiffre La raison pour laquelle nous avons dû le faire est que nous sommes en train de créer quatre clones du sprite Mais la plupart du temps, le score comportera moins de quatre chiffres. Et si nous utilisons un index dans la lettre du bloc qui est supérieur à la longueur de la valeur dont nous obtenons la lettre ou le chiffre, la valeur résultante de la lettre de bloc sera vide. Juste pour le démontrer, je vais dupliquer l' intégralité du bloc de jointure , le mettre ici, et je vais extraire la lettre du bloc. Maintenant, je vais régler le score sur un chiffre , puis je vais remplacer le bloc d'index ici par deux. Si je clique sur le bloc maintenant, cela ne me donne rien car il ne trouve pas la lettre ou le chiffre dont l' indice est de deux dans la variable de score. Maintenant, si je place le bloc dans le bloc de jointure et que je clique dessus, le bloc entier a pour valeur le seul chiffre du mot. Ainsi, lorsque cela se produit à l'intérieur du bloc de costumes Switch, le costume de sprite le costume appelé digit, qui est le costume vide, rendant ainsi le clone invisible Supposons maintenant que j'utilise un nom différent pour le costume numérique, comme vide. Lorsque le bloc de costumes Switch essaie de passer au costume appelé chiffre maintenant, il ne pourra pas le trouver. Si je lance le jeu en ce moment, tout semble fonctionner comme avant. Cependant, c'est uniquement parce que j' ai actuellement le costume de sprites réglé sur le costume vide Si je le change pour un costume différent comme le chiffre deux, et que je lance le jeu, tous les clones qui devraient être vides afficheront maintenant un deux En effet, lorsque le bloc de costumes Switch reçoit un costume qui n'existe pas, il conserve le sprite sur son costume actuel C'est pourquoi il est important d'avoir un costume vide et de le nommer correctement. Maintenant, quel que soit le costume sur lequel nous démarrons le sprite, il fonctionnera toujours correctement. D'accord. Maintenant, je vais retourner à l'onglet code et me débarrasser de ces blocs supplémentaires que j'ai créés. De plus, nous n'avons plus besoin de montrer la variable de score sur scène. Et maintenant, il ne nous reste plus qu'à faire tout cela pour le chronomètre. Heureusement, nous pouvons commencer par utiliser une copie du sprite du score avec son code, sauf que nous devrons trouver comment centrer le chronomètre en haut de l'étape Nous verrons comment procéder dans la prochaine leçon. 26. Corriger le bug de score: Avant de travailler sur l'affichage du chronomètre, un petit bogue se produit lors de la mise à jour du score, et cela se produit chaque fois que nous atteignons plusieurs taupes d' un seul coup. Par exemple, si je touche 2 moles à la fois, le score et le chronomètre devraient tous deux augmenter de deux, mais ils n'augmenteront que d'une Tout comme avec les clones de sprites Pal plus tôt, la cause de ce bogue est liée à la façon dont nous traitons Si nous entrons dans le code de la toile de fond, chaque fois que nous touchons une taupe, la toile de fond reçoit le message d'atteinte de la taupe et augmente le score et les variables du chronomètre d'une unité. Cela fonctionne bien lorsque vous touchez une seule taupe. Mais chaque fois que nous touchons plusieurs taupes , nous diffusons plusieurs messages simultanément Et comme nous l'avons déjà vu dans le Pow Sprite , lorsque nous faisons cela, la toile de fond n' a la chance d'exécuter le script Molehit qu'une seule fois Par conséquent, les variables de score et de temporisation ne sont mises à jour qu'une seule fois. OK ? La meilleure façon de résoudre ce problème est donc qu' au lieu de mettre à jour les variables dans le code de fond, nous devrions les mettre à jour dans le code Posprite C'est parce que nous savons que nous créons le bon nombre de clones de sprites copains chaque fois que nous touchons plusieurs taupes Donc, pour ce faire, revenons très rapidement au code de fond. Et puis, quand je recevrai le script Mole Hit, vous voudrez copier le score de changement d'un bloc et chronomètre d'un bloc dans le Posprite, puis les supprimer d' Donc, commençons par détacher les deux blocs du script, les copier dans le Posprite et les supprimer du code de fond. Passons maintenant au code Po Sprite, et nous voulons prendre les deux modifications par blocs que nous avons copiées et les placer en haut du code lorsque je démarre en tant que script de clonage Ainsi, chaque fois que nous créons un clone de POW Sprite, variables de score et de chronomètre seront mises à jour une par une Maintenant, avant d'essayer, revenons au code de fond. Pour le moment, nous mettons toujours à jour le niveau de difficulté chaque fois que nous recevons le message « mo hit ». Cependant, il est désormais possible que nous recevions le message avant que le Pal Sprite n'ait réellement mis à jour le score, ce qui signifie que la difficulté ne sera pas mise à jour correctement. Ainsi, au lieu de lancer ces blocs ITN, chaque fois que nous recevons le message « taupe hit », nous pouvons les exécuter en continu tant que le jeu est en cours d'exécution Pour ce faire, au lieu de recevoir un coup de taupe, recevons Start Game. Et nous voulons exécuter le script en continu. Passons donc à Control, un bloc permanent et enroulons-le autour de tous les blocs du script. D'accord, et avec ça, si nous lançons le jeu et touchons 2 taupes en même temps, les variables du score et du chronomètre augmentent toutes deux de Génial. Une dernière chose à souligner, cependant, est que si nous entrons dans le code de l'un des sprites taupes, nous n'utilisons plus réellement le message molehid Donc, si nous le voulons, nous pourrions parcourir le code de tous les sprites taupes et supprimer les blocs de taupes diffusés Cependant, cela ne fera aucun mal de laisser les blocs tels quels. Et d'ailleurs, je n'ai pas laissé ce bug exprès dans le jeu. Il m'a fallu en fait arriver là pour m'en rendre compte, et cela montre à quel point nous devons être prudents lorsque nous utilisons des messages et du scratch. Quoi qu'il en soit, maintenant que le bogue a été résolu, nous pouvons nous mettre au travail pour rendre l'affichage du chronomètre agréable. 27. Remonter le chronomètre: Pour améliorer l'affichage du chronomètre, éliminons celui par défaut. Nous pouvons maintenant dupliquer le sprite du chiffre du score, et changeons le nom du doublon en chiffre du chronomètre Ensuite, nous voulons que le chronomètre s' affiche en haut au centre de la scène. Donc, dans le code du sprite à chiffres du chronomètre, faisons en sorte que son exposition de départ soit nulle Sa position Y restera inchangée afin qu'elle soit alignée sur les chiffres du score. Maintenant, cliquons sur le drapeau vert. OK ? Les chiffres du chronomètre sont donc correctement centrés en haut de la scène et alignés horizontalement avec les chiffres du score. Cependant, elle utilise toujours la valeur de la variable score puisque nous l'avons pas encore modifiée pour utiliser la variable timer. Arrêtons donc le jeu. Et dans le script When I start as a clone, retirons le bloc de score du bloc Switch Costume, et remplacons-le par un bloc de chronomètre de la catégorie des variables. Si nous l'exécutons maintenant, il utilise la bonne valeur. Cependant, lorsque le chronomètre comporte deux chiffres, le premier chiffre reste centré sur la scène et l'autre s'affiche simplement à droite de celle-ci. Ce que nous voulons, c'est que l' ensemble de l'affichage du chronomètre apparaisse centré, quel que soit le nombre de chiffres qu'il contient. Pour ce faire, en changeant le costume de chaque clone numérique, nous devrons continuellement mettre à jour l'exposition de chaque clone. Donc, d'abord, à partir du mouvement, introduisons un bloc de deux ensembles Et placons-le quelque part dans le bloc permanent du script When I start as a Clone. Très bien, il faudra donc un peu de calcul pour placer l'affichage du chronomètre dans la bonne position abord, dans le script Green Flag, nous avons une modification X par bloc que nous utilisons pour déplacer le sprite vers la droite de 25 étapes avant de créer chaque clone Le 25 ici est essentiellement la largeur que nous utilisons pour chaque clone. Pour commencer, nous allons définir position de chaque clone en fonction de son index multiplié par la valeur de largeur, ce qui les espacera correctement sur la scène. Pour ce faire, passons aux opérateurs, un bloc de multiplication et placez-le dans le bloc set X deux dans le script When I start as a clone. Et utilisons la valeur de largeur comme deuxième entrée. Donc 25 dans mon cas. Pour la première entrée, passons aux variables et introduisons un bloc d'index. Et comme nous sommes en train de définir l'exposition de chaque clone, le Byblock HangX dans le script Green Flag n'a plus d'effet Nous pouvons donc nous en débarrasser Bon, pour tester cela , si nous cliquons avec le bouton droit sur l'ancien affichage du chronomètre ici dans la scène, nous pouvons choisir le curseur, qui, comme nous l'avons vu plus tôt dans le cours, nous permet d'utiliser un curseur pour modifier la valeur Par défaut, cette valeur est comprise entre 0 et 100. Mais si nous cliquons à nouveau dessus avec le bouton droit de la souris, nous obtenons une option de modification de la plage du curseur qui nous permet de modifier les valeurs minimale et maximale du curseur Par exemple, nous pouvons le faire passer de zéro à quelque chose comme 9 999 OK. Et si nous cliquons maintenant sur l'un des blocs du script du drapeau vert, nous pouvons voir le nouveau chronomètre s'afficher à nouveau avec les chiffres correctement espacés Il ne nous reste plus qu'à centrer l'écran. Pour ce faire, nous devons obtenir le nombre total de chiffres du chronomètre et en soustraire la moitié de l'index de chaque clone. Arrêtons donc le jeu pour supprimer les clones. Passons ensuite aux opérateurs et plaçons un bloc de soustraction dans un espace vide pour le moment Prenons ensuite un bloc de division et utilisons-le comme deuxième entrée du bloc de soustraction. Pour la deuxième entrée du bloc de division, nous pouvons mettre deux. Et pour la première entrée, nous devons obtenir le nombre total de chiffres du chronomètre. Pour ce faire, dans les opérateurs, nous avons une longueur de bloc. Avec cela, nous pouvons obtenir le nombre total de lettres ou de chiffres d'une valeur particulière. Si nous en introduisons un dans la zone de code et que nous cliquons dessus, cela nous donne cinq, soit le nombre de lettres du mot Apple. Pour obtenir le nombre de chiffres de la variable de temporisation, nous pouvons dupliquer le bloc de temporisation ici et l'utiliser comme entrée pour la longueur du bloc. Maintenant, si nous cliquons sur le bloc, cela nous donne la longueur de la variable de temporisation, qui dans mon cas est de trois. C'est bon. Nous pouvons maintenant utiliser tout cela comme première entrée du bloc de division. Maintenant, extrayons le bloc d'index du bloc set x deux, et utilisons-le comme première entrée du bloc de soustraction. Enfin, nous pouvons définir l'exposition des clones en multipliant tout cela par la largeur des chiffres OK, si nous cliquons sur le script drapeau vert maintenant, l'affichage du chronomètre est presque parfaitement centré, mais pas tout à fait. En effet, nous n'avons pas encore pris en compte le fait que Scratch utilise le centre d' un costume de sprite lorsqu' il s'agit de le positionner sur scène Donc, pour y remédier, il suffit de soustraire 0,5 de la valeur sur le côté gauche du bloc de multiplication. Cela fera en sorte que chaque chiffre soit également décalé vers la gauche de la moitié de la largeur du chiffre. Ajoutons donc un autre bloc de soustraction. Maintenant, extrayons le bloc de soustraction ici et utilisons-le comme première entrée du bloc de soustraction ici. Et de cela, soustrayons 0,5. Et maintenant, nous pouvons mettre tout cela dans la première entrée du bloc de multiplication. Bien, si nous cliquons à nouveau sur le script du drapeau vert, l'affichage du chronomètre est désormais parfaitement centré sur la scène. Et nous pouvons cliquer sur le drapeau vert lui-même pour voir qu'il fonctionne également correctement pendant le compte à rebours. De plus, nous n'aurons plus besoin de l' ancien affichage du chronomètre Nous pouvons donc cliquer dessus avec le bouton droit de la souris et choisir Masquer. Et avec cela, nous avons des affichages de chronomètres et de scores bien plus beaux. Mais pour un effet visuel supplémentaire lors de la prochaine leçon, nous ferons en sorte que chaque fois que nous frappons une taupe, une étoile volante émerge de la taupe et remonte vers l' étoile située à côté de la partition 28. Ajouter des étoiles volantes: Pour créer des étoiles volantes, nous utiliserons des clones du sprite stellaire que nous possédons déjà, et nous les ferons commencer à proximité de la position de chaque moule touché, puis nous monter rapidement jusqu'à l'étoile située à côté de la partition et disparaître Bien, pour commencer, nous devons trouver un bon endroit dans le code pour créer un clone d'étoile à chaque fois qu'une taupe est touchée. Nous pourrions le faire dans le code du taupe, mais il faudrait ensuite le faire pour chaque taupe, ce qui ne serait pas très Une bien meilleure option serait donc de le faire dans le code Pow Sprite, étant donné que nous n'avons qu' un seul Pow Sprite et nous en créons déjà des clones chaque fois qu'une taupe OK, donc ce que nous voulons faire c'est que chaque fois que nous créons un clone de Power Sprite, nous voulons également créer un clone de Star Sprite Et heureusement, c' est assez facile à faire car non seulement un sprite peut créer un clone de lui-même, mais il peut également créer un clone d'un autre sprite Passons donc à Control et introduisons un autre bloc de clonage, et nous pouvons placer celui-ci juste en dessous de l'autre ici. Et pour celui-ci, nous voulons bien sûr créer un clone des sprites vedettes Bien, il ne nous reste plus qu'à entrer dans le code Star Sprite et à lui dire quoi faire lorsqu'il démarre en tant que clone Alors, ajoutons un « when I start » en tant que bloc de clonage. abord, assurons-nous que le clone ne sera pas caché derrière les autres sprites en accédant à Looks et en ajoutant un bloc « go to front later » au script Ensuite, nous devons déplacer le clone vers la position de la taupe touchée. Et comme avec le sprite Pal, nous pouvons le faire en utilisant les objets de la liste des taupes à succès Cependant, si nous revenons au code Po Sprite, nous sommes en train de supprimer les éléments de la liste avant de créer un clone de l'étoile Sprite Nous pourrions essayer de déplacer les blocs de suppression vers le bas du script après avoir créé les clones. Mais comme les blocs de clonage ne mettent pas réellement le script en pause, les éléments seront tout de même supprimés avant que le Sprite vedette n'ait chance de s'exécuter, comme lorsque je commence en tant que script de clonage et que je les utilise Ce que nous pouvons faire, c'est qu'au lieu de supprimer les éléments contenus dans le code Pow Sprite, nous pouvons les supprimer dans le code Star Sprite lorsque nous savons que les éléments ne seront plus nécessaires Très bien, pour ce faire, copions d' abord les blocs de suppression dans le Sprite en étoile Ensuite, retirons-les complètement du Pow Sprite. Nous pouvons également utiliser les mêmes blocs go to XY et modifier Y By ici pour déplacer chaque clone de sprite stellaire vers la bonne position Copions donc également ces blocs dans le Sprite étoile. Revenons maintenant au code Star Sprite. Déplaçons d'abord ces blocs dans une zone vide afin de mieux les voir. Nous n'allons pas créer des blocs de clonage ici pour pouvoir les supprimer. Ensuite, nous pouvons ajouter les blocs Go to XY et changer Y à ceux When I start en tant que script de clonage et placer les blocs de suppression juste en bas du script. Bien, si nous lançons le jeu maintenant, chaque fois que nous frappons une taupe, un clone de Star Sprite est créé juste au-dessus de celle-ci Il ne nous reste plus qu'à faire voler les clones d'étoiles vers l'étoile située à côté de la partition Pour ce faire, arrêtons le jeu. Et si nous entrons dans la catégorie des mouvements, nous avons ces deux blocs de glissement Avec ceux-ci, un sprite peut se déplacer vers une position aléatoire, la position d'un autre sprite ou vers une position X et Y spécifique, et nous pouvons le faire arriver dans un certain nombre de secondes Nous voulons déplacer les clones à la position du sprite étoile Cependant, étant donné que nous travaillons actuellement à l'intérieur du code Star Sprite, Scratch ne nous de glisser vers le sprite star Je suppose que c'est parce que faire glisser un sprite sur lui-même n'a pas vraiment Nous pouvons donc plutôt utiliser la version XY, en la réglant sur les valeurs de la position de départ du sprite étoilé OK, donc prenons un bloc XY glissant deux, et ajoutons-le au bas du lorsque je commencerai en tant que script de clonage Et si nous n'avons pas déplacé le sprite étoilé sur la scène, les valeurs XY du bloc de glissement devraient déjà être les mêmes que celles du bloc Go to XY ici. Si ce n'est pas le cas, assurez-vous simplement de saisir les bonnes. Et pour ce qui est du temps de glisse, nous voulons qu'il soit assez rapide Essayons donc quelque chose comme 0,2 seconde. De plus, pour le moment, nous ne supprimons pas encore les clones de la scène Allons-y donc en accédant à Contrôle et en ajoutant un bloc de suppression de ce clone au bas du script. Très bien, si nous lançons le jeu maintenant et que nous touchons des moules, les clones d'étoiles atteindront rapidement Cela semble plutôt bien, mais pour le rendre encore meilleur, nous pouvons faire en sorte que les clones d'étoiles commencent très petits, puis qu'ils atteignent leur taille normale au moment où ils atteignent le score Pour cela, arrêtons le jeu, et nous devrons en créer un nouveau lorsque je commencerai en tant que script de clonage. Cela est dû au fait que le bloc de glissement interrompt le script jusqu'à ce que le temps de glissement soit terminé, et nous voulons que l' animation de croissance des clones se produise en même temps Apportons-en donc un autre lorsque je commencerai en tant que bloc de clonage. Ensuite, nous allons commencer la taille du clone à 0 %. Passons donc à Looks, introduisons une taille définie pour le bloc et définissons la valeur à zéro. Comme nous avons vu le jeu rejouer à des sprites plus tôt dans le cours, cela ne met pas vraiment la taille des sprites à zéro, mais elle sera suffisamment proche. D'accord ? Il ne nous reste plus qu' à faire en sorte que le sprite reprenne sa taille normale Pour ce faire, nous pouvons passer au contrôle et introduire un bloc de répétition. Et faisons-le répéter cinq fois. Revenons ensuite à Looks et ajoutons une modification de taille Byblock au bloc de répétition, et faisons en sorte qu'il change de taille de 20 % à chaque fois De plus, comme ce script est susceptible de se terminer avant l'autre, nous laisserons le bloc de suppression de ce clone là où il se trouve. OK, si nous jouons au jeu et que nous cassons des moules maintenant, les clones d'étoiles commencent par être petits et augmentent de taille à mesure qu'ils se rapprochent De plus, comme la taille des clones est légèrement supérieure à 100 %, l'animation produit un effet pop sympa à la toute fin, et nous en avons maintenant terminé avec les visuels du jeu Cependant, il y a une chose importante qui manque encore, ce sont les effets sonores. Ajoutons-en donc dans la prochaine leçon. 29. Ajouter des effets sonores: Pour terminer le jeu, nous allons ajouter quelques défauts sonores. bons endroits pour sons sont ceux où le joueur frappe une taupe, lorsque les étoiles volantes atteignent le score et lorsque le joueur clique sur le bouton Play Again, commençons par le bouton Play Again en sélectionnant le sprite Play Again dans le volet Sprite Si nous allons dans l'onglet Sons, le Sprite possède déjà un son appelé Pop Scratch ajoute automatiquement le son pop à tous les sprites personnalisés que nous créons Pour entendre le son, nous pouvons cliquer sur le bouton Play ici. Je pense que cela semble plutôt bien pour un clic sur un bouton. Jouons-y donc chaque fois que le joueur clique sur le sprite. Pour ce faire, allons d'abord dans l'onglet code et choisissons le son. Il ne nous reste plus qu'à ajouter l' un des blocs sonores au bloc I thin du script WT Sprite Clicked Si nous utilisons un bloc « place sound until done », le script sera suspendu jusqu'à ce que le son soit joué. Ce n'est pas vraiment nécessaire, alors utilisons plutôt un bloc audio de démarrage. Et le son pop devrait déjà être choisi. En fait, émettons également un son une fois le jeu terminé. Pour ce faire, nous pouvons entrer dans le code de fond et dans le jeu Fine Start ici, nous pouvons émettre un son quelque part dans le bloc I then qui vérifie si le chronomètre est terminé. Si nous allons dans l'onglet Sons, nous avons à nouveau le son pop par défaut, dont nous n'aurons pas besoin ici, alors supprimons-le en cliquant sur l'icône de corbeille à côté. Pour trouver un nouveau son, nous avons un bouton « Choisir un son » en bas de la page. Nous pouvons télécharger un son, obtenir un son aléatoire, enregistrer un son et choisir parmi les sons que Scratch nous fournit. Allons-y avec cette option. Un bon son de game over est celui qui ici en bas de la page, appelé Oups Pour l'ajouter à la toile de fond , il suffit de cliquer dessus. Nous pouvons maintenant jouer le son une fois le jeu terminé en retournant l'onglet code et en ajoutant un bloc « Start sound Oops » au bloc I thin ci-dessous. Si nous jouons au jeu et que nous le laissons se terminer, il émet le son Oops Et si nous cliquons sur le bouton Play again, le son pop est joué. Ensuite, émettons un son pour chaque étoile volante une fois qu'elle atteint le score. Pour ce faire, arrêtons le jeu et sélectionnons le sprite étoile Si nous allons dans l'onglet sons, l'étoile a également un son par défaut appelé collect, qui ressemble à ceci. Cela devrait très bien fonctionner. Revenons donc à l'onglet code et utilisons-le. Nous voulons émettre ce son une fois qu'un clone a atteint l' étoile à côté de la partition, c' est-à-dire une fois que le clone a fini de planer Prenons donc un bloc de collecte de sons de départ et placez-le juste en dessous du bloc glissant Maintenant, si nous jouons au jeu et que nous frappons des taupes, les clones d'étoiles voleront vers le haut et émettront le son de collecte Enfin, il suffit de créer un effet sonore dès que nous frappons une taupe Et comme nous ne voulons pas nous embêter à changer le code de chaque taupe sprite, nous pouvons plutôt émettre un son dans le code Po Sprite Sélectionnons donc le sprite Pow. Passons ensuite à l'onglet sons. Nous n'aurons pas besoin du son pop, alors supprimons-le. Cliquez maintenant sur le bouton Choisir un son. Après quelques recherches, j'ai trouvé trois bons candidats pour un son de taupe. Le gros son de Boeing ici. Le Boeing ici et celui-ci pourri. Et heureusement, nous n' avons pas à en choisir un seul. Au lieu de cela, nous pouvons demander à chaque clone de pw sprite de jouer l'un des trois sons au hasard Et c'est certainement une bonne chose parce que croyez-moi, jouer un seul de ces sons encore et encore chaque fois que nous frappons une taupe devient vite ennuyeux Très bien, ajoutons donc les trois sons au sprite en cliquant sur l' Retournez à la page Choisissez un son, cliquez sur une autre page et faites de même pour la troisième. OK, et pour choisir un son aléatoire à jouer, nous allons générer un nombre aléatoire de 1 à 3. Pour faciliter les choses, changeons le nom du premier son en un, le second en deux. Et le troisième un à trois. Ensuite, nous pouvons simplement jouer le son dont le nom correspond au nombre aléatoire. Et pour ce faire, passons dans l'onglet code. Nous pouvons jouer un son soit dans le bloc I thin ici, où nous créons un nouveau clone soit dans le script When I start en tant que clone. Je vais opter pour la deuxième option. Je vais donc prendre un bloc audio de départ et placer quelque part avant les blocs de répétition. Ensuite, pour obtenir un nombre aléatoire de 1 à 3, passons aux opérateurs, un bloc choisi au hasard, placez-le dans le bloc audio de départ. Et utilisez un et trois comme valeurs d'entrée. OK, si nous jouons au jeu maintenant, nous obtenons un son aléatoire à chaque fois que nous frappons une taupe Et voilà, nous en avons officiellement terminé avec notre premier jeu à gratter. Je vous félicite donc pour tout votre dur labeur. Il y a certainement d'autres améliorations que nous pouvons apporter, alors n'hésitez pas à continuer à travailler sur la vôtre. Et si c'est le cas, envoyez-moi un lien vers votre jeu, car j' adorerais voir ce que vous allez proposer. Très bien, dès que tu seras prêt, je te verrai dans la prochaine leçon où nous commencerons à travailler sur un tout nouveau jeu. Deux. 30. Introduction aux ravages cosmiques: Le prochain jeu que nous allons créer est un jeu de tir spatial appelé Cosmic Havoc Avec ce jeu, nous allons apprendre à créer un écran de titre qui s'affiche au début du jeu. Nous apprendrons également à écouter la musique diffusée en continu en arrière-plan, ainsi qu'à faire en sorte que le lecteur puisse activer ou désactiver la musique et les effets sonores Le but du jeu sera d' accumuler le plus de points possible en tirant sur des astéroïdes avec nos lasers avant que nous ne soyons inévitablement détruits Pour améliorer les chances de survie du joueur, nous allons mettre en place un habillage d'écran qui permettra au joueur de se téléporter d'un côté à l'autre de la scène Et fournira également des micros qui amélioreront temporairement les capacités des joueurs, par exemple en leur permettant tirer dans trois directions différentes à la fois, leur permettant de détruire astéroïdes simplement en les touchant ou en leur permettant de déclencher une bombe qui détruit tous les astéroïdes à une certaine distance Celui-ci va être très amusant à créer. Alors allons-y directement. 31. Préparation initiale: Pour commencer, chargeons un nouveau projet en accédant à Fichier nouveau. Et appelons-le le Havoc cosmique. C'est bon. Et finalement , des étoiles en mouvement apparaîtront en arrière-plan. Mais pour l'instant, nous allons simplement le rendre noir uni. Choisissons donc les arrière-plans dans le volet de scène ici, et dans l'onglet arrière-plans, utilisons l' outil rectangle, choisissons le noir pour la couleur de remplissage et rien pour le contour Dessinons ensuite un rectangle qui couvre toute la zone de scène du canevas. Nous allons également créer un écran titre, qui inclura un bouton de démarrage qui diffusera le message de démarrage du jeu lorsque le joueur clique dessus. Lorsque les sprites reçoivent le message de début de partie, ils se préparent pour le jeu Mais jusqu'à ce que nous ayons créé l'écran titre, nous pouvons faire en sorte que la toile de fond diffuse le message de début de partie lorsque vous cliquez sur le drapeau vert, démarrer le jeu immédiatement. Passons donc à l'onglet Code. Et parmi les événements, ajoutons un drapeau vert gagnant, en cliquant sur Bloquer. Il ne nous reste plus qu'à ajouter un bloc de diffusion au script et à diffuser un nouveau message appelé Start Game. C'est bon. Une fois cela fait, nous allons maintenant commencer à travailler sur les sprites des joueurs 32. Dessiner les costumes de joueur: Sélectionnons Sprite One ici, et renommons-le en player Passons maintenant à ses costumes, et nous n'aurons pas besoin de Scratchcat pour ce projet Donc, dans le costume 1, nous pouvons sélectionner toutes les parties du costume et les supprimer. Désolée, Scratchcat OK, le sprite du joueur sera donc un vaisseau spatial et, juste pour le fun, nous allons créer plusieurs costumes légèrement différents pour le sprite À partir de l'écran titre, le joueur pourra passer d' un costume à l' autre. Très bien, donc pour le premier costume, prenons l'outil rectangulaire, et n'hésitez pas à utiliser couleur de votre choix pour le remplissage. Je vais opter pour le bleu clair. Et je vais désactiver le plan. Zoomons maintenant un peu sur le canevas et dessinons un rectangle d'environ six blocs de large et 11 blocs de haut. Ensuite, nous pouvons prendre l'outil de remodelage et donner au rectangle une belle forme de vaisseau spatial Je vais d'abord ajouter un nœud au centre du bord supérieur, et j'en ajouterai également un à environ trois blocs du bas sur les bords gauche et droit. Je vais maintenant supprimer les deux nœuds d'angle supérieurs. Pour les deux nœuds que j'ai ajoutés ici, je vais les sélectionner tous les deux et les transformer en nœuds pointus. Ensuite, je vais faire légèrement glisser les poignées du nœud supérieur pour augmenter la courbure. Enfin, je vais sélectionner chacune des notes du coin inférieur individuellement et les déplacer légèrement vers l'intérieur Et je vais maintenir la touche Shift enfoncée pendant que je fais cela pour maintenir le mouvement sur l'axe horizontal. Ensuite, nous pouvons lui donner des ailes. Pour cela, reprenons l'outil rectangle, et pour la couleur de remplissage, j'utiliserai un gris clair. Dessinons maintenant un rectangle sur le côté gauche. Envoyez-le sous la forme du corps. Utilisez ensuite l'outil de remodelage pour lui donner une forme plus ailée Pour le bord extérieur de l'aile, je vais utiliser l'outil linéaire, changer la largeur du contour à environ quatre, et pour la couleur du contour, je vais d'abord utiliser l'image en couleur pour choisir le même bleu que le corps, mais je vais le rendre un peu plus foncé. Ensuite, je tracerai une ligne recouvrant le bord de l'aile. Nous pouvons maintenant utiliser l'outil de sélection pour saisir les deux formes d'ailes, maintenir enfoncée ou option pour les dupliquer, et les faire glisser de l' autre côté tout en maintenant la touche Shift enfoncée pour les maintenir alignées horizontalement. Ensuite, nous pouvons les retourner horizontalement. Ensuite, nous allons ajouter un propulseur au bas du vaisseau spatial Pour cela, nous pouvons utiliser à nouveau l'outil rectangle, et pour la couleur de remplissage, je vais utiliser le même bleu foncé que celui que j'utilise pour la ligne sur les ailes. Dessinons ensuite un rectangle qui recouvre le bas de la silhouette et descend d'environ un bloc. Maintenant, envoyons-le en bas et refaçonnons-le un peu si nous Enfin, ajoutons une fenêtre au corps. Pour ce faire, utilisons l'outil Sleck, et si nous maintenons la touche Alt ou Option enfoncée et que nous cliquons sur la forme du corps, une copie sera créée directement au-dessus de celle-ci Nous pouvons maintenant rendre le duplicata gris foncé et le réduire légèrement tout en maintenant la touche Alt ou Option enfoncée pour le garder centré. Nous pouvons maintenant utiliser l'outil de remodelage, supprimer les deux nœuds inférieurs, supprimer les deux nœuds inférieurs, puis effectuer d' autres ajustements jusqu'à ce que nous obtenions quelque chose que nous voulons Bien, maintenant que toutes les formes sont terminées, assurons-nous qu'elles sont toutes centrées dans le canevas en les sélectionnant toutes et en faisant glisser la sélection au Travaillons maintenant sur le costume numéro deux. Supprimons d'abord les deux costumes actuels. Alors dupliquons le costume 1. Pour celui-ci, je vais garder les formes les mêmes sauf que j'utiliserai un rouge clair pour le corps. Et je vais faire en sorte que le propulseur et les lignes des ailes soient d'un rouge plus foncé OK, pour un autre costume, dupliquons le costume 2, et j'utiliserai le vert pour celui-ci. Nous pouvons également modifier un peu la forme. Nous voulons simplement que la largeur et la hauteur restent à peu près les mêmes, et nous voulons particulièrement garder le propulseur dans la même position afin de ne pas rencontrer problèmes lorsque nous ajouterons la flamme ultérieurement Pour un autre costume, je vais dupliquer le costume 3 et utiliser du violet pour les couleurs. N'hésitez pas à créer d'autres costumes si vous le souhaitez et à les changer un peu plus. Mais je vais m'en tenir à ces quatre. Et pour le moment, revenons au costume 1. Très bien, une fois les costumes terminés, nous allons ensuite faire bouger le sprite du joueur sur la 33. Déplacer le joueur: Avant de commencer à coder le sprite du joueur, j'ai remarqué que les ailes du sprite semblent un peu irrégulières sur la scène Lorsque nous avons vu et frappé des taupes, nous pouvons résoudre ce problème en choisissant l'outil rectangle, désactivant la couleur du champ et la couleur du contour, et en dessinant un rectangle invisible autour du costume du sprite Pour les autres costumes, nous pouvons sélectionner le rectangle invisible, cliquer sur le bouton de copie, puis aller sur l'un des autres costumes et cliquer sur le bouton Coller, et le rectangle devrait être collé au même endroit. Nous pouvons maintenant faire de même pour les costumes restants. Revenons ensuite à Costume 1 et passons à l'onglet code. D'accord ? Donc, pour déplacer le sprite du joueur dans la scène, nous allons laisser le joueur utiliser touches fléchées ou les touches WASD Et lorsque nous vérifions si le joueur appuie sur une touche de déplacement, nous ne voulons pas utiliser le bloc d'appui sur la touche gagnant de la catégorie événements pour voir pourquoi. Allons-y, introduisons-en une et configurons-le pour vérifier lorsque la touche flèche droite est enfoncée. Passons maintenant au mouvement, introduisons une modification x par bloc. Et faisons en sorte qu'il change X par un. Si nous continuons à appuyer sur la flèche droite encore et encore, le sprite du joueur se déplace vers la droite dans la scène Cependant, si nous maintenons la touche enfoncée, elle se déplace une fois, puis s'arrête brièvement, puis recommence à bouger. Cela revient à taper une lettre dans un traitement de texte. Si nous maintenons une touche alphabétique enfoncée, elle tape la lettre une fois, fait une pause, puis continue à taper la lettre. Inutile de dire que même si la pause est très brève, elle poserait des problèmes dans un jeu vidéo qui nécessite des mouvements rapides Séparons donc les deux blocs, et débarrassons-nous du bloc enfoncé sur la touche Win. Maintenant, ce que nous voulons faire, c'est vérifier en permanence si une touche de mouvement est enfoncée. Nous avons déjà vu que nous pouvons le faire en accédant d'abord au contrôle, en introduisant un bloc permanent, insérant un bloc mince en I et, dans y insérant un bloc mince en I et, dans la catégorie de détection, nous pouvons utiliser un bloc enfoncé sur une touche comme condition. Si nous le configurons pour vérifier si la touche flèche droite est enfoncée, placez la modification X par bloc dans le bloc I thin et cliquez sur le script. Maintenant, en maintenant la touche flèche droite enfoncée, nous allons déplacer le sprite vers la droite sans aucune pause Comme nous voulons également permettre au joueur d'utiliser les touches WASD pour se déplacer, nous pouvons exécuter le changement x par un bloc chaque fois que vous appuyez sur la touche flèche droite ou sur la touche D Pour ce faire, nous pouvons nous adresser aux opérateurs et leur apporter un bloc d'or. Et utilisons la touche flèche droite pour appuyer sur le bloc comme première condition. Pour la deuxième condition, nous pouvons dupliquer le bloc d'appui sur la touche et le modifier pour vérifier la présence de la touche D. Si nous utilisons maintenant le bloc or comme condition I thin, nous pouvons faire bouger le sprite vers la droite en maintenant la touche flèche droite ou la touche D enfoncée Ensuite, pour nous déplacer vers la gauche, dupliquons le bloc I thin et plaçons celui-ci juste en dessous du premier. Pour le mouvement vers la gauche, nous voulons vérifier si la touche flèche gauche ou la touche A est enfoncée. Et cette fois, nous voulons changer X par moins un. Maintenant, si nous l'exécutons, nous pouvons déplacer le sprite du joueur vers la droite et vers la gauche Il ne nous reste plus qu' à faire tout cela pour déplacer le joueur de haut en bas. Cependant, au lieu d'utiliser tout un tas de blocs ITN, laissez-moi vous montrer une astuce Si nous déplaçons l'un des blocs ou dans un espace vide et que nous cliquons dessus, il a une valeur fausse, comme on pouvait s'y attendre. Et si nous maintenons l'une des touches cochées enfoncée avant de cliquer sur le bloc, elle prend la valeur true, également comme prévu. Cependant, une chose à savoir est qu'en programmation informatique, faux est souvent traité comme un zéro et le vrai est souvent traité comme un. Pour voir pourquoi cela est utile, faisons ressortir la modification x par un bloc et changeons plutôt X par la valeur du bloc O. Et oui, même si le bloc or a une forme différente de celle de l'emplacement d'entrée, il apparaîtra toujours directement. Si nous cliquons sur le HangxBlock en ce moment, rien ne se passe. Mais si nous maintenons une touche de mouvement droite enfoncée, chaque fois que nous cliquons sur le bloc, le joueur se déplace d'une unité vers la droite. De même, pour nous déplacer vers la gauche, faisons ressortir l' autre bloc ou le bloc et changeons x par moins un bloc. Maintenant, comme le bloc or sera toujours égal à zéro ou à un, pour qu'il change x par moins un, lorsque vous appuyez sur une touche de mouvement vers la gauche, nous devons annuler sa valeur Pour ce faire, nous pouvons introduire un bloc de soustraction et utiliser le bloc ou comme deuxième entrée Pour la première entrée, nous pouvons mettre un zéro ou simplement le laisser vide, ce qui aura le même effet. Maintenant, si nous mettons tout cela dans le changement x par bloc et que nous maintenons enfoncée une touche de mouvement vers la gauche, chaque fois que nous cliquons sur le bloc, le sprite se déplace vers la gauche Bien, maintenant, de retour dans le bloc pour toujours, nous pouvons nous débarrasser des deux blocs fins et placer les deux blocs change X directement dans le bloc pour toujours. Et nous pouvons continuer et exécuter le bloc pour nous assurer que les mouvements de droite et de gauche fonctionnent toujours correctement. Notez également que si nous maintenons une touche de mouvement droite et une touche de mouvement gauche enfoncées en même temps, le premier bloc de changement sera un et le second sera négatif. Ainsi, les blocs s'annuleront mutuellement et le sprite ne bougera pas OK, maintenant pour le mouvement vertical, passons au mouvement, et ajoutons deux blocs Y B de modification au bloc permanent. Pour le premier , utilisons une copie du bloc or du premier bloc change x. Si vous modifiez Y par un, le sprite se déplacera vers le haut. Donc, pour les touches, nous voulons vérifier la touche flèche vers le haut et la touche W. Enfin, pour descendre, nous pouvons dupliquer le bloc de soustraction dans le deuxième bloc de modification X, le placer dans le deuxième bloc de modification Y et lui faire vérifier la présence de la flèche vers le bas et de la touche S. Allons-y également et faisons en sorte que le bloc permanent s'exécute chaque fois que le jeu commence. Pour ce faire, passons aux événements et attachons un bloc de jeu «   Quand je recevrai le début la partie » en haut du bloc pour toujours. Comme la toile de fond diffuse actuellement le message de démarrage du jeu dès que vous cliquez sur le drapeau vert, nous pouvons maintenant cliquer sur le drapeau pour vérifier que les mouvements horizontaux et verticaux fonctionnent correctement. Une chose que vous remarquerez peut-être, est que si nous nous déplaçons en diagonale en maintenant enfoncée une touche de mouvement horizontale et verticale en même temps, le sprite apparaît pour se déplacer un peu plus vite que lorsque nous nous déplaçons sur un seul axe. C'est un problème courant que je rencontre dans jeux créés par de nouveaux développeurs de jeux, et la raison pour laquelle cela se produit est que lorsque nous nous déplaçons sur un seul axe, le sprite traverse la scène exactement d'un pas Cependant, lorsque nous nous déplaçons sur les deux axes en même temps, le sprite se déplace en fait de plus d'un pas Pour calculer exactement jusqu'où il se déplace, nous pouvons utiliser le théorème de Pythagore, qui dans ce cas serait la racine carrée de la somme de X au carré et de Y au carré Lorsque nous nous déplaçons sur un seul axe, cela nous donne la racine carrée de un, qui est un, donc nous nous déplaçons d'une distance d'un pas. Cependant, lorsque nous nous déplaçons sur les deux axes en même temps, nous obtenons la racine carrée de deux , soit une distance d' environ 1,414 Pour que le sprite se déplace que d'un seul pas, suffit de diviser les valeurs de mouvement X et Y par la distance entre les deux valeurs C'est ce qu'on appelle la normalisation. Bien, revenons au code, au lieu d'utiliser immédiatement les valeurs de mouvement pour modifier les positions X et Y des sprites comme nous le faisons actuellement, nous allons créer des variables temporaires pour stocker les Nous aurons besoin d'une variable pour le changement de X, une pour le changement de Y et d'une autre pour calculer la distance qui les sépare. Donc, pour tout cela, passons aux variables, et supprimons la variable M par défaut. Cliquez ensuite sur Créer une variable. Pour le changement de X, nous pouvons utiliser Delta X ou Dx en abrégé, et seul le sprite du joueur a besoin d'accéder à la variable Choisissons donc pour ce sprite uniquement. Ensuite, pour le changement et Y, nous pouvons utiliser DY, également pour ce sprite uniquement Enfin, pour ce qui est de la distance, nous pouvons utiliser un disque et le créer uniquement pour ce sprite Déplaçons maintenant tous les blocs de combinaison de touches hors des blocs de modification. Ensuite, nous pouvons nous débarrasser de tous les blocs de modification. Ensuite, ajoutons un bloc défini à deux au bloc permanent, et faisons en sorte qu'il affecte à Dx la valeur du bloc de mouvement approprié ici. Nous devons maintenant apporter une modification par bloc et modifier dx par la valeur du bloc de mouvement vers la gauche Si nous lançons le jeu maintenant, lorsque nous n'appuyons pas sur une touche de déplacement, dx sera égal à zéro Lorsque nous appuyons sur une touche de mouvement droite, ce sera une, et lorsque nous appuierons sur une touche de mouvement gauche, ce sera une touche négative. C'est bon. Maintenant, introduisons un autre ensemble à bloquer et faisons en sorte que DY soit défini sur la valeur du bloc de mouvement ascendant. Apportons ensuite une modification par bloc et changeons jour en fonction de la valeur du bloc de mouvement vers le bas. Maintenant, DX et DY changent lorsque nous appuyons sur les touches de mouvement. Ensuite, pour définir la variable de disque, introduisons un disque défini à deux blocs et placez-le juste après tous les blocs DX et DY Pour le régler à la distance entre DX et DY, nous allons utiliser le théorème pédagogique Passons d'abord aux opérateurs, prenons ce bloc qui indique actuellement abdos de et placons-le dans le bloc de deux du set disc. Au lieu d'obtenir les abs ou la valeur absolue, nous voulons obtenir la racine carrée ou SRT en abrégé Ensuite, à l'intérieur de la racine carrée du bloc, ajoutons un bloc d'addition. Ensuite, pour chacune des entrées du bloc d' addition, introduisons un bloc de multiplication. Très bien, donc pour le premier bloc de multiplication, nous voulons multiplier la valeur de dx par elle-même. Passons donc aux variables et ajoutons un bloc DX à chaque entrée Pour le deuxième bloc de multiplication, nous voulons faire 3 jours par jour. Si nous lançons maintenant le jeu, appuyer sur rien nous donne une distance de zéro. appuyer sur une seule touche de mouvement nous donne une distance d'un, et appuyer sur une touche horizontale et verticale même temps nous donne une distance de 1,414, etc. C'est bon. Il ne nous reste plus qu'à diviser DX et DY par disque, puis à déplacer le sprite du joueur en utilisant les valeurs DX et Cependant, lorsqu'aucune touche de mouvement n' est enfoncée, disque est nul, et vous vous souvenez peut-être d'un cours de mathématiques qu'il est impossible de diviser par zéro. Si nous essayons de diviser par zéro dans la programmation informatique, cela nous donnera une erreur. Dans tous les cas, lorsque la distance est nulle, le sprite du joueur ne devrait pas bouger de toute façon Nous n'effectuons donc les divisions et ne déplaçons le joueur que si la distance n'est pas nulle Pour ce faire, passons au contrôle. Et apportons un bloc mince et mettons-le dans un espace vide pour le moment. Maintenant, pour la variable disque, la valeur ne sera jamais nulle ou supérieure à zéro. Ce ne sera jamais négatif. Par conséquent, pour ce qui est de l'état du bloc mince I, il suffit de s'assurer que le disque est supérieur à zéro. Passons donc aux opérateurs, et introduisons un bloc supérieur à. Passons maintenant aux variables et vérifions si dist est supérieur à zéro. OK. Maintenant, à l'intérieur du bloc if then, nous devons diviser Dx et Dy par disque Apportons donc deux ensembles de deux blocs. À l'intérieur de chaque bloc, passons aux opérateurs et ajoutons un bloc de division. C'est bon. Pour le premier, définissons-le à dx. Revenons ensuite aux variables, et nous voulons définir dx à la valeur actuelle de dx divisée par la valeur du disque De même, pour le deuxième ensemble à bloquer, nous voulons régler DY à dy divisé par le disque. Mettons maintenant le bloc I then à l'intérieur du bloc pour toujours, en dessous de tous les autres blocs. Si nous lançons le jeu maintenant, chaque fois que nous appuyons sur une seule touche de mouvement, la distance est de un, ce qui signifie que DX et DY sont divisés par un, ce qui n'a aucun effet Cependant, si nous appuyons simultanément sur une touche horizontale et une touche verticale, nous pouvons voir que DX et DY bel et bien divisés par la valeur de distance ne nous reste plus qu'à modifier les positions X et Y des sprites par les valeurs finales DX et DY Pour ce faire, passons au mouvement et ajoutons à la fois un bloc de modification X B et un bloc de modification Y par bloc tout en bas du bloc I thin. Nous voulons maintenant passer aux variables, changer X par la valeur de dx et changer Y par la valeur de DY Bien, si nous lançons le jeu maintenant, nous pouvons à nouveau déplacer le sprite des joueurs dans la scène Mais maintenant, le mouvement en diagonale semble beaucoup plus naturel. Il se déplace cependant un peu trop lentement, car nous ne nous déplaçons que d'un pas par image. Pour accélérer le mouvement, nous pouvons multiplier DX et DY par une certaine valeur lorsque nous changeons les positions X et Y. Pour ce faire, passons aux opérateurs et introduisons deux blocs de multiplication. Nous pouvons maintenant les utiliser pour multiplier à la fois DX et DY par environ cinq Modifiez ensuite X et Y en fonction des valeurs obtenues, et le sprite du joueur se déplace désormais beaucoup plus rapidement sur la scène Nous n'avons pas non plus vraiment besoin de voir les valeurs des variables sur la scène, alors allons-y et masquons-les. Très bien, les mouvements du joueur semblent plutôt bons maintenant. Cependant, pour le moment, dès que nous relâchons la touche de mouvement, le sprite s'arrête brusquement Pour améliorer l'apparence et la sensation du mouvement, nous pouvons faire en sorte que le sprite s'arrête un peu plus facilement C'est assez facile à faire et nous verrons comment dans la prochaine leçon, 34. Alisser le mouvement du joueur: Pour que le joueur soit un sprite , arrêtez-vous plus doucement Passons d'abord aux variables et créons-en quelques nouvelles. Appelons la première vitesse X et utilisons-la uniquement pour ce sprite Pour le second, appelons-le vitesse Y. Également pour ce sprite uniquement, nous pouvons masquer les variables Très bien, donc ce que nous allons faire avec ces variables, c'est les utiliser pour mettre à jour la position du joueur, chaque image ou itération de la boucle permanente Et au début du jeu, nous ne voulons évidemment pas que le joueur bouge. Donc, en haut du script, au-dessus du bloc permanent, introduisons deux blocs et fixons la vitesse x et la vitesse Y à zéro. Ensuite, dans le bloc I then, où nous vérifierons si la distance est supérieure à zéro, au lieu de changer directement les positions X et Y du joueur, nous réglerons SpeedX et la vitesse Y à Dx fois cinq et D Y fois cinq respectivement Sortons les deux blocs de modification et mettons-les de côté pour le moment, et remplaçons-les dans le script par deux blocs définis. Pour le premier, réglons la vitesse x à Dx fois cinq, et pour le second, nous allons régler la vitesse Y à DY fois Maintenant, prenons les deux blocs de change et plaçons-les en dessous du bloc if thin. Changeons X par la vitesse X et Y par la vitesse Y. Bien, si nous lançons le jeu et que nous appuyons sur une touche de déplacement, le sprite continuera à se déplacer dans le sprite continuera à se déplacer dans la même direction même après avoir relâché la Ce que nous voulons faire maintenant, c'est qu'après avoir utilisé les valeurs SpeedX et Speed Y pour modifier les positions X et Y de chaque image, nous voulons également réduire les valeurs, chaque image, en les ramenant à zéro Pour ce faire, nous pouvons multiplier les valeurs de vitesse X et de vitesse Y par un nombre décimal de 0 à 1, ce qui aura pour effet de les réduire progressivement à zéro OK ? Donc, après avoir modifié les blocs X et Y, introduisons un ensemble de deux blocs et utilisons-le pour définir SpeedX Passons maintenant aux opérateurs et ajoutons un bloc de multiplication au bloc X de vitesse défini. Pour la première entrée, utilisons un nombre décimal 0-1 le chiffre est bas, plus la valeur baisse rapidement et plus le sprite du joueur s'arrête rapidement et vice versa. Pour l'effet que nous recherchons, nous devrions opter pour quelque chose d' assez élevé, comme 0,8. maintenant à la deuxième entrée, passons aux variables et introduisons un bloc de vitesse X. Nous pouvons maintenant dupliquer le bloc de vitesse x défini, le placer en bas et lui faire définir la variable de vitesse Y. Et pour remplacer facilement le bloc de vitesse X par le bloc de vitesse Y, nous pouvons cliquer dessus avec le bouton droit de la souris et choisir la vitesse Y. Si nous lançons le jeu maintenant et que nous déplaçons le sprite, lorsque nous relâchons les touches de mouvement, l' arrêt est plus progressif et plus fluide Pour que le sprite dérive un peu plus avant de s'arrêter, nous pouvons utiliser un nombre décimal plus élevé, par exemple 0,95. Et pour qu'il s'arrête plus rapidement, nous pouvons essayer quelque chose comme Et pour qu'il s'arrête plus rapidement, nous pouvons essayer quelque chose Mais je pense que 0,8 fonctionne plutôt bien. C'est donc ce à quoi je vais m'en tenir. Cependant, si nous relançons le jeu, vous remarquerez peut-être que l' arrêt est légèrement saccadé Cela se produit parce que scratch n'aime pas vraiment que nous utilisions des valeurs décimales pour définir la position d'un sprite Pour y remédier, il suffit d'arrondir les variables speed x et SpeedY lorsque nous les utilisons pour modifier la position des sprites Pour ce faire, passons aux opérateurs et mettons deux blocs ronds dans un espace vide. Déplaçons ensuite le bloc de vitesse X ici dans l'un des blocs ronds et le bloc de vitesse Y dans l'autre. Et maintenant, nous pouvons placer les blocs ronds dans les blocs de modification. Si nous réessayons, il n'y aura plus de secousse lorsque le sprite s'arrête Bon, maintenant nous en avons pratiquement terminé avec les mouvements du joueur. Mais une caractéristique commune que nous observons dans les jeux de tir spatiaux comme celui-ci est que lorsque le joueur s'approche vraiment d' un côté de l'écran, il se téléporte instantanément de l'autre côté de l' C'est ce qu'on appelle le screen wrapping ou ap around. Dans la prochaine leçon, nous verrons comment l' implémenter dans notre jeu. 35. Mettre en œuvre Wraparound: À l'heure actuelle, si le joueur se déplace d' un côté de la scène, Scratch empêche le sprite de se déplacer davantage C'est très bien pour les bords supérieur et inférieur, mais nous finirons créer des micros pour des objets tels que des bonus d'armes et des boucliers que le joueur pourra utiliser, et nous ferons en sorte que les micros se déplacent du haut vers le bas du Les ramassages débuteront lors expositions aléatoires sur la scène Il est donc possible qu'un pick-up commence à tomber assez loin du joueur, ce qui rend presque impossible pour le joueur de l' atteindre à temps. Pour une meilleure expérience, nous pouvons appliquer un habillage d'écran lorsque le joueur se rapproche du bord gauche ou droit, ce qui le fait passer immédiatement sur le bord opposé. Cela sera également utile pour éviter les astéroïdes. Pour implémenter le capture d'écran, nous devons détecter le moment où le joueur a atteint une certaine distance bord gauche ou droit de la scène, puis changer de position pour placer immédiatement sur le bord opposé. Et comme le centre de la scène est situé à la position 00 pour déplacer le joueur vers le bord opposé, il suffit d' annuler son exposition Ainsi, dans le code des sprites du joueur, après avoir changé la position du joueur, nous vérifierons si l'exposition du joueur a atteint le bord gauche ou le bord droit, et si c'est le cas, nous le ferons passer sur le bord opposé Pour commencer, allons dans Control et introduisons un I puis un bloc. Et peu importe que nous le fassions avant ou après avoir défini les variables de vitesse X et de vitesse Y ici, donc je le ferai juste après. Ensuite, nous allons vérifier si l'exposition du joueur a dépassé une certaine position près du bord droit de la scène. Pour ce faire, en ce qui concerne l'état du bloc if, passons aux opérateurs et introduisons un bloc supérieur à. Pour la première entrée, passons au mouvement et introduisons un bloc d'exposition. Bien, la largeur totale de la scène est donc de 480 pixels. Cela signifie que les expositions sur scène vont de moins 240 sur le côté gauche à plus de 240 sur le côté droit. nous ne voulons pas que le joueur atteigne le bord avant de terminer, Cependant, nous ne voulons pas que le joueur atteigne le bord avant de terminer, afin de vérifier s'il est allé plus loin que 235, disons. Donc, pour la deuxième entrée du bloc supérieur à, mettons 23, cinq. Et maintenant, il ne nous reste plus qu' à faire dans le bloc si le bloc est d'introduire un bloc set x deux et d'annuler l'exposition du joueur en le réglant à moins 235 Si nous lançons le jeu maintenant et que nous déplaçons le sprite vers le bord droit, il s'enroule vers le bord gauche Et l'arrêt en douceur s'applique toujours, ce qui est plutôt sympa. Il ne reste plus qu'à faire de même pour le bord gauche. Dupliquons donc le bloc I than et mettons-le sous l'autre. Cette fois, nous avons besoin d'un bloc inférieur à 1. Sauvegardons donc le bloc d' exposition ici et débarrassons-nous du bloc supérieur à. Passons maintenant aux opérateurs et introduisons un bloc inférieur à 1. Et avec cela, nous voulons vérifier si l'exposition est inférieure à 235. Si c'est le cas, nous voulons changer X en 235 positif. Si nous lançons le jeu maintenant, le joueur peut se déplacer à la fois sur les bords gauche et droit de la scène. Parfait. Avant de passer à la leçon suivante, le code pour déplacer le joueur est devenu assez long, et nous allons également ajouter un peu plus de code au script de démarrage du jeu lorsque je recevrai le script Start. Donc, pour rendre les choses un peu plus faciles à lire, nous pouvons placer tout le code de mouvement dans un bloc personnalisé distinct. Pour ce faire, rendez-vous dans Mes blocs et cliquez sur Créer un bloc. Nous pouvons appeler le blocage déplacer et cliquer sur OK. Nous pouvons maintenant placer le bloc de déplacement défini ici et récupérer tous les blocs qui se trouvent à l'intérieur du bloc permanent ici et les accrocher au bloc de déplacement défini. Ensuite, de retour dans le bloc pour toujours, il suffit d'ajouter notre nouveau bloc de déplacement. Maintenant, tout semble plus propre et fonctionne toujours comme avant. C'est bon. Maintenant que le joueur peut se déplacer dans la scène, nous allons maintenant faire en sorte qu'il puisse également tirer des lasers. 36. Créer le laser: Avant que le joueur puisse commencer à tirer au laser, nous devons d'abord créer le sprite laser Donc, dans la peinture au sprite, allons sur le bouton Choisir un sprite et cliquez sur Et appelons-le laser. Bien, pour le costume, il suffit de dessiner un rectangle blanc avec coins arrondis et un contour de couleur fluo Prenons donc l'outil rectangle, choisissons le blanc pour la couleur de remplissage, choisissons une couleur vive comme le cyan pour la couleur du contour. Et réglez la largeur du contour sur quelque chose comme deux. Maintenant, même si le laser pointe verticalement lorsqu'il survole la scène, nous voulons en fait le dessiner horizontalement. Comme nous le verrons plus tard, cela nous simplifiera la vie lorsque nous créerons le power up laser. Zoomons un peu sur le canevas. Et créons un rectangle d' environ cinq blocs de largeur et 1,5 bloc de hauteur. Pour arrondir les coins, nous pouvons utiliser l'outil de remodelage, ajouter un nœud au centre du côté gauche, et un nœud à droite de chacun des deux nœuds d'angle, supprimer les nœuds d'angle Ajustez ensuite les poignées du nœud central. Et nous pouvons faire de même pour le camp opposé. Maintenant, centrons la forme dans le canevas. Et pour le moment, une égratignure coupe certaines parties du sprite sur scène Corrigeons cela en créant un rectangle invisible autour du costume. Et c'est tout. Passons maintenant à l'onglet Code et commençons à coder. Très bien, nous n'allons donc pas vraiment utiliser le sprite laser lui-même dans le jeu Au lieu de cela, comme pour le sprite pal et Smack some taupes, nous allons simplement créer des clones Donc, au début du jeu, nous allons masquer le sprite, et nous voulons également le faire commencer face vers le haut , dans la direction de zéro Passons donc aux événements, et ajoutons un bloc quand je recevrai Start Game. Passons ensuite au mouvement et ajoutons un bloc point dans la direction, réglant pour qu'il pointe dans la direction zéro. Enfin, allons à Los et ajoutons un bloc de masquage. OK. Et pour ce qui est de créer des clones du sprite, nous le ferons depuis le sprite du joueur Chaque fois que le joueur appuie ou maintient enfoncé un bouton de la souris ou une certaine touche, comme la touche espace. Créons un nouveau bloc pour cela en accédant à Mblocks et en cliquant sur Créer un bloc. Appelons ça shoot laser et cliquez sur OK. Nous pouvons placer le bloc laser de tir défini ici, et ajouter un bloc laser de tir lui-même au bloc permanent du script de démarrage du jeu. Il ne nous reste plus qu'à vérifier si le joueur appuie sur le bouton de la souris ou sur la touche espace, et si c'est le cas, nous allons créer un clone du sprite laser Donc, dans le laser à prise de vue définie, passons à Control et introduisons un bloc I puis. Pour ce qui est de la condition, allons voir les opérateurs et apportons un bloc or. Pour les conditions à deux ou à deux blocs, nous pouvons passer à la détection et introduire à la fois le bloc d'appui sur le clavier et le bloc de la souris vers le bas. Enfin, à l'intérieur du bloc then, nous pouvons créer un clone du sprite laser en accédant à la commande, en introduisant un bloc Create Clone et en le configurant pour créer un clone du laser Bien, avant d'essayer, nous devons revenir au code du Sprite laser et lui dire quoi faire lorsqu'il démarre en tant que clone Alors, ajoutons-le quand je commencerai en tant que bloc de clones. La première chose que nous voulons faire est de montrer le clone. Passons donc à Looks et ajoutons un bloc d'affichage. Ensuite, nous voulons que le clone commence à la même position que le sprite du joueur Passons donc au mouvement, introduisons une position aléatoire, bloquons et réglons le mouvement pour qu'il passe au joueur. Ensuite, nous voulons que le clone se déplace vers le haut jusqu'à ce qu'il atteigne le haut de la scène. Ensuite, nous supprimerons le clone. Pour le faire facilement, passons au contrôle et répétons jusqu'au blocage. Pour ce qui est de la condition, passons à la détection, introduisons un bloc tactile et réglons-le sur le bord tactile. L'arête fait ici référence à l'une des quatre arêtes de la scène. Mais comme les lasers ne touchent que le bord supérieur, ce n'est pas grave. OK ? Ce que nous voulons faire maintenant, c'est déplacer continuellement le clone vers le haut de la scène jusqu'à ce qu'il atteigne le sommet. Passons donc au mouvement, et introduisons un bloc de dix étapes. Comme nous avons fait pivoter le sprite laser orienté vers le zéro ou vers le haut, le bloc d'étapes de déplacement déplace le clone vers le haut de la scène Nous allons faire en sorte qu'il se déplace de dix pas pour le moment, mais nous pouvons toujours l'ajuster plus tard s'il est trop rapide ou trop lent. OK ? Enfin, après le bloc de répétition, supprimons le clone en accédant à Control et en introduisant une option de suppression de ce bloc de clone. Bien, si nous lançons le jeu maintenant, nous pouvons appuyer sur la touche espace ou cliquer à l'intérieur de la scène pour tirer un laser Nous pouvons également maintenir la touche espace ou le bouton de la souris enfoncée pour déclencher le laser en continu. ça se déclenche bien trop vite en ce moment, il va donc falloir y remédier. De plus, les clones apparaissent actuellement au-dessus du Sprite du joueur et commencent directement au centre du sprite. Réglons ça d'abord. Pour nous assurer que le sprite du joueur apparaisse au-dessus des clones laser sur la scène, nous pouvons accéder au code Sprite du joueur et, quelque part au début du script de démarrage du jeu, accéder à Looks et un bloc « go to front Ensuite, retournez dans les sprites laser. Faisons en sorte que le clone commence plus près de l'avant des sprites du joueur Pour ce faire, nous pouvons passer au mouvement, saisir une modification Y par bloc et la placer directement après le bloc Go to player. Faisons en sorte qu'il change Y en 20 étapes. Si nous lançons le jeu maintenant et que nous tirons au laser, le résultat sera bien meilleur. nous avons toujours le problème de Cependant, nous avons toujours le problème de tirer trop de lasers à la fois. Pour résoudre ce problème, passons au code du sprite du joueur. Ce que nous pouvons faire, c'est faire en sorte que le script de tournage laser ne crée un clone du sprite laser que si un certain nombre d' images se sont écoulées depuis la création du clone précédent Pour ce faire, nous devons créer une variable pour stocker nombre d'images que nous voulons attendre entre chaque clone. Passons aux variables et créons-en une nouvelle. Nous pouvons l'appeler shoot delay et le faire pour ce sprite uniquement Et cachons la variable. C'est bon. Maintenant, avant le blocage permanent dans le script de démarrage du jeu, introduisons un bloc de deux et réglons le délai de prise de vue à zéro. Cela permettra au joueur de commencer à tirer immédiatement sans délai. Ensuite, pour le laser à prise de vue définie, passons au contrôle, et plaçons un bloc I thin s dans un espace vide pour le moment. Pour cette condition, nous voulons vérifier si le délai de prise de vue est supérieur à zéro. Passons aux opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le délai de prise de vue est supérieur à zéro. Si c'est le cas, tout ce que nous voulons faire est de réduire le délai de prise de vue d'une unité. Ajoutons une modification par bloc à la partie I et changeons le délai de prise de vue par une valeur négative. Sinon, nous vérifierons si la touche espace est enfoncée ou si la souris est enfoncée, et si c'est le cas, nous créerons un clone du sprite laser Alors prenons ce bloc I thin ici et mettons-le dans la partie du bloc I thin s. Et une autre chose que nous devons faire ici est régler le délai de tournage comme nous le souhaitons. Donc, juste après avoir créé le clone, introduisons un ensemble de deux blocs et fixons le délai de prise de vue à environ trois. Ainsi, lorsque le script de prise de vue laser s'exécute à nouveau pendant l'image suivante, délai de prise de vue sera supérieur à zéro Le script ne fera que réduire délai de prise de vue et ne permettra pas au joueur de tirer. Cela se produira encore et encore jusqu'à ce que le délai de prise de vue soit nul, moment auquel le joueur pourra à nouveau tirer. Nous pouvons maintenant ajouter tout cela au script de tir laser, et si nous lançons le jeu et maintenons touche espace enfoncée ou le bouton de la souris, les lasers se déclenchent à une vitesse beaucoup plus raisonnable. Bien, maintenant que le joueur peut tirer des lasers, nous devons lui donner de quoi tirer. Dans la prochaine leçon, nous allons commencer à créer les astéroïdes. 37. Dessiner les costumes d'astéroïde: Pour commencer à créer les astéroïdes, créons d'abord le sprite d'astéroïde en cliquant sur le bouton Choisir un sprite , en cliquant sur Paint et OK, dans l'éditeur de costumes, commençons par utiliser l'outil cercle et choisissons un brun clair pour la couleur de remplissage Ensuite, pour le contour, optons pour un brun plus foncé. Et faisons en sorte que la largeur soit environ six. Maintenant, zoomons un peu sur le canevas et dessinons un cercle d'un diamètre d'environ 50 à 55 pixels. Et si nous voulons créer un cercle parfait, nous pouvons maintenir la touche Maj enfoncée tout en cliquant et en faisant glisser le pointeur. Ensuite, nous pouvons saisir l'outil de remodelage et remodeler le cercle jusqu'à ce qu'il ressemble davantage OK, ajoutons également quelques points à l'astéroïde. Pour ce faire, nous pouvons à nouveau utiliser l'outil cercle, régler la couleur de remplissage sur le brun foncé du contour. Éteignez le contour et tracez une petite ellipse sur l'astéroïde Nous pouvons maintenant utiliser le SelegTol pour créer des doublons Utilisez ensuite l'outil de remodelage pour modifier un peu leurs formes Une fois cela fait, assurons-nous que tout est centré sur le canevas. Créons maintenant quelques costumes supplémentaires pour ajouter de la variété aux astéroïdes Pour ce faire, nous pouvons dupliquer le premier costume, puis utiliser l'outil de remodelage pour le modifier un peu Et encore une fois, assurons-nous que tout est centré. Créons ensuite un autre costume. D'accord ? Maintenant que nous avons jolis costumes pour les astéroïdes, nous allons maintenant travailler à les faire apparaître et à les déplacer vers le bas de la 38. Faire apparaître les astéroïdes: Pour commencer à créer des astéroïdes et à les déplacer vers le bas de la scène, examinons le code des sprites d'astéroïdes abord, nous allons faire en les astéroïdes soient au départ plus gros que la normale, puis nous les décomposerons en fragments de plus en plus petits au fur et à mesure que le joueur les tirera Une taille de départ d'environ 200 devrait être bonne. OK, donc au début du jeu, assurons-nous que le sprite astéroïde commence à une taille de 200 en accédant aux événements, en introduisant un bloc de jeu lorsque je reçois le départ, puis en allant dans Looks et en apportant un bloc de taille fixe de deux, le fixant à 200 % Nous voulons également que les astéroïdes apparaissent sous tout le reste de la scène Pour ce faire, nous pouvons ajouter un bloc « Go to later » et le placer sur la couche arrière. Une autre chose que nous voulons faire est de masquer le sprite, car nous allons principalement l' utiliser pour générer des clones Alors, introduisons un cache-cache. OK, donc la façon dont nous allons générer les clones est de les faire démarrer au-dessus du bord supérieur de la scène lors d' expositions aléatoires Ensuite, nous les ferons descendre de la scène jusqu'à ce qu'ils soient détruits par le joueur ou qu'ils atteignent le bord inférieur. Et parce que nous voulons que cela se produise en permanence, commençons par prendre le contrôle et introduire un blocage permanent. Ensuite, nous allons lancer le sprite au-dessus du bord supérieur de la scène L'un des problèmes, cependant, est que les rayures ne permettent pas aux sprites de sortir complètement des bords La hauteur totale de la scène est de 360 pixels avec le bord supérieur à une position de 180 et le bord inférieur à moins 180. Nous pouvons placer le sprite à une position Y de 180 assez facilement. Mais si nous essayons de le placer bien au-dessus du bord supérieur, par exemple à 300, égratignure l'empêche de monter aussi haut et une partie du sprite reste visible En fait, la distance maximale que le sprite est autorisé à parcourir dépend à la fois de la taille de son costume actuel et de la taille des sprites et de la taille Si nous rétablissons la taille à 100, le sprite entier est désormais en dehors de la scène Mais dès que nous essayons de régler la position Y à quelque chose de haut, par exemple 300, elle est repoussée vers le bas jusqu'à ce qu'une partie soit visible pour contourner tout cela et faire sorte que les clones partent au-dessus du bord supérieur, nous pouvons effectuer une petite astuce de costume Pour cela, revenons à l'onglet costumes. Créons maintenant un nouveau costume en dessous tous les autres en choisissant un bouton de costume et en choisissant de la peinture. Et changeons le nom du costume en big. Ensuite, zoomons complètement sur le canevas, ce que nous pouvons faire facilement en cliquant sur ce bouton entre les boutons de la loupe Créons un rectangle qui couvre toute la zone de scène du canevas. Centrez-le également dans le canevas. Maintenant, lorsque le sprite porte un costume vraiment grand comme celui-ci, nous pouvons le déplacer beaucoup plus loin. Si nous changeons maintenant de costume, le sprite reste dans la même position et se trouve désormais complètement en dehors de la scène Cela signifie donc dans code que nous pouvons passer temporairement au grand costume avant déplacer le sprite au-dessus du bord supérieur, puis revenir à l'un des costumes normaux Et comme tout cela se produira avant que la scène ne soit rafraîchie, nous ne verrons pas vraiment le grand costume sur scène Très bien, donc revenons au code, au début du bloc éternel, passons d'abord du costume de sprites au costume grand en allant à Los et en apportant un costume de changement à un costume de Big Maintenant, nous pouvons lancer le sprite au-dessus du bord supérieur de la scène Passons donc au mouvement et plaçons un bloc Go to XY sous le bloc de costume Switch. Une position Y de 250 devrait être suffisamment haute. Pour être sûrs de pouvoir passer au grand costume, réglez la position Y du sprite sur 250, passez à un costume normal et redéfinissez la taille à 200 Nous ne voyons toujours pas le sprite, donc tout va bien. Très bien, revenez dans le code. Pour l'exposition, nous pouvons utiliser un nombre aléatoire entre les bords gauche et droit de la scène. Pour ce faire, passons aux opérateurs et introduisons un bloc de sélection aléatoire. Comme nous l'avons vu en codant le mouvement du sprite du joueur, le niveau passe de moins 240 sur la gauche à 240 sur la droite Nous ne voulons cependant pas que les astéroïdes partent trop près des bords Alors allons-y avec quelque chose comme moins 230 à 230. Ensuite, après avoir positionné les sprites, nous sommes libres de revenir à l'un des costumes habituels Passons à Looks et apportons un autre bloc de costumes Switch. Et nous pouvons utiliser un bloc aléatoire Pi pour choisir un costume aléatoire parmi les trois costumes normaux. Passons aux opérateurs, ajoutons un bloc de sélection aléatoire au bloc de costume Switch et choisissons un nombre aléatoire de 1 à 3. Avec cela, nous pouvons créer un clone du sprite. Passons donc à Control et introduisons un bloc de création d'un clone de moi-même. Pour le moment, cependant, cela va créer des dizaines de clones par seconde. Ajoutons donc une petite pause en introduisant un bloc de poids. Pour les pis, nous pouvons aller voir les opérateurs et utiliser un autre bloc de sélection aléatoire. Et choisissons quelque chose entre 0,5 et 1 seconde. D'accord ? Il ne nous reste plus qu'à dire aux clones ce qu'ils doivent faire lorsqu'ils démarrent Revenons donc au contrôle et introduisons un « when I start » en tant que bloc de clonage. Comme d'habitude, la première chose que nous voulons faire est de montrer le clone. Passons donc à Looks et ajoutons un bloc d'affichage. Pour l'instant, nous allons simplement faire descendre le clone directement sur la scène jusqu'à ce qu'il atteigne le bas, puis nous allons le supprimer. Passons donc à Control et introduisons un blocage permanent. Pour déplacer le clone vers le bas de la scène, passons à Motion et modifions le bloc Y By. Nous finirons par donner des vitesses aléatoires aux clones, mais pour le moment, nous pouvons modifier la position Y par quelque chose comme moins trois Ensuite, nous devons vérifier si le clone est passé en dessous du bas de la scène. Cependant, comme le clone utilise actuellement un costume de taille normale, il ne peut pas réellement descendre en bas de la scène. Pour qu'il puisse descendre en dessous du sol, nous devrons revêtir le grand costume avant de déplacer le clone, comme nous l' avons fait lors du positionnement des sprites Passons donc à Looks et apportons un costume de remplacement à un gros bloc, et nous devons le placer au-dessus du bloc Y de changement. Maintenant, après avoir changé la position Y, nous pouvons vérifier si le clone est en dessous du bas. Passons donc au contrôle et plaçons un bloc informatique en dessous du bloc Y de modification. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite au mouvement et vérifions si la position Y est inférieure à moins 250, qui est le contraire de ce que nous utilisons pour le haut. Si le clone est inférieur à moins 250, nous le supprimerons. Passons donc à Control et mettons supprimer ce bloc de clone dans le bloc IN. Maintenant, si le clone n'a pas atteint le bas, il ne sera pas supprimé Nous devons donc le remettre dans son costume normal. Mais nous ne pouvons pas simplement passer à un costume aléatoire , car le clone changera constamment costume à chaque image, ce qui aura l'air étrange. Nous devrons plutôt créer une variable pour stocker le costume original du clone, puis revenir au même costume à la fin du bloc permanent. Pour ce faire, passons aux variables et cliquez sur Créer une variable. Nous pouvons l'appeler costume, et nous voulons nous assurer de choisir ce sprite uniquement, car chaque clone aura un costume distinct Et allons-y et cachons la variable. Ensuite, au lieu de remplacer le costume de sprites par un costume aléatoire, ajoutons d'abord un costume en deux blocs, en le plaçant juste au-dessus du bloc de costumes Switch Et déplaçons le bloc pick random dans le bloc set. Ensuite, nous pouvons faire passer le costume à la variable costume. Maintenant, il ne nous reste plus qu' à porter le même costume à la fin du bloc pour toujours et quand je commencerai en tant que clone. Nous allons dupliquer le bloc de costumes de changement de costume. Débarrassez-vous de ces blocs supplémentaires et placez le doublon juste en dessous du bloc ITN et lorsque je commencerai en tant que clone Je pense que nous sommes enfin prêts à tester les astéroïdes, alors lançons le drapeau vert Très bien, ça a l' air plutôt bien. nous ne savons pas avec certitude si les clones sont supprimés lorsqu'ils atteignent le bas de la page Nous allons donc nous en assurer en créant un compteur de clones. Pour ce faire, créons d'abord une nouvelle variable. Nous pouvons l'appeler clone total, et celui-ci doit être une variable globale. Ensuite, avant le blocage permanent du script de démarrage du jeu, ramenons le total des clones à zéro bloc. Nous voulons augmenter la variable totale du clone chaque fois qu'un nouveau clone est créé. Donc, en haut de la liste, lorsque je commence en tant que script de clonage, ajoutons un bloc au total des clones. Enfin, avant de supprimer un clone, nous voulons diminuer la variable Ajoutons donc un autre bloc de total de modifications avant qu'ils ne suppriment ce bloc de clonage ici, et faisons en sorte qu'il change le total des clones par moins un. Si nous lançons le jeu maintenant, chaque fois qu'un clone d'astéroïde est créé, le nombre de clones augmente d'un, et il diminue d'un à chaque fois qu'un clone passe en dessous du bas du classement Si votre nombre de clones augmente constamment, au lieu de rester bloqué autour de six ou sept, vous devrez peut-être essayer d' utiliser un nombre plus élevé dans le bloc ITN ici où nous vérifierons la position Y. Bien, maintenant que nos astéroïdes fonctionnent, nous allons maintenant rendre leurs mouvements un peu plus aléatoires et moins ennuyeux 39. Améliorer le mouvement des astéroïdes: est ni amusant ni naturel de voir les astéroïdes se déplacer tous directement sur la scène exactement à n'est ni amusant ni naturel de voir les astéroïdes se déplacer tous directement sur la scène exactement à la même vitesse . Alors, réglons ça. Et comme la configuration des clones d'astéroïdes nécessitera beaucoup de code , nous allons garder les choses en ordre en plaçant le code dans un Passons donc à MBLOXS et créons-en un nouveau. Disons que c'est un astéroïde configuré. Et cliquez sur OK. Nous pouvons déplacer le bloc d' astéroïdes configuré défini ici. Ensuite, prenons un bloc d' astéroïdes de configuration et placez-le au-dessus du bloc permanent du script When I start as a clone Bien, maintenant faisons en sorte que chaque clone ait une vitesse aléatoire. Pour ce faire, commençons par accéder aux variables et en créer une nouvelle. Et appelons-le rapidité. Chaque clone aura sa propre vitesse, alors utilisons-la uniquement pour ce sprite Maintenant, dans Définir l'astéroïde de configuration, introduisons un ensemble de deux blocs, et faisons-en sorte qu'il définisse la variable de vitesse Plus tard, au fur et à mesure que le joueur tire sur un astéroïde, nous le diviserons en petits fragments et nous ferons en sorte que les plus petits fragments puissent se déplacer plus rapidement Donc, pour régler la vitesse, nous allons prendre en compte la taille du clone. Pour ce faire, passons aux opérateurs et plaçons un bloc de division dans un espace vide. Pour la première entrée, utilisons 100, et pour la deuxième entrée, passons à Los et introduisons un bloc de taille. Ainsi, à mesure que la taille diminue, la valeur de ce bloc augmente. Maintenant, nous allons multiplier la valeur par un nombre aléatoire. Revenons donc aux opérateurs et introduisons un bloc de multiplication, et utilisons le bloc de division comme première entrée. Pour la deuxième entrée, introduisons un bloc de sélection aléatoire, et nous lui ferons choisir un nombre aléatoire compris entre, disons, deux et six. Une chose à savoir à propos du bloc Pick Random, cependant, est que si nous utilisons deux nombres entiers, le bloc ne choisira que des nombres entiers. Si nous voulons qu'il choisisse également des décimales, nous pouvons simplement mettre un point après l'un des nombres OK. Nous pouvons maintenant mettre tout cela dans le bloc de vitesse défini. Ensuite, dans le script when I start as a clone, au lieu de changer Y par moins trois, nous allons le modifier par la variable de vitesse. La variable de vitesse sera toutefois toujours positive, mais pour déplacer l'astéroïde vers le bas, nous devons utiliser un nombre négatif Donc, introduisons d'abord un bloc de soustraction. Nous pouvons utiliser un zéro pour la première entrée ou la laisser vide. Et pour la deuxième entrée, passons aux variables et introduisons un bloc de vitesse. Si nous lançons maintenant le jeu, les astéroïdes descendent à des vitesses différentes Et si nous diminuons la taille de départ et que nous commençons le jeu, ils diminuent encore plus vite. Bien, arrêtons le jeu et rétablissons la taille de départ à 200. Faisons maintenant en sorte que chaque clone descende la scène dans une direction aléatoire. Pour cela, nous pouvons d'abord créer une nouvelle variable. Appelons-le Der pour la direction et faisons-le uniquement pour ce sprite Et nous pouvons continuer et masquer la variable. Ajoutons maintenant un bloc set two au script de configuration de l' astéroïde et utilisons-le pour définir la variable Der Maintenant, pour définir la direction, nous voulons que les astéroïdes descendent toujours la scène Comme nous pouvons le voir sur l' indicateur de direction du volet Sprite, une direction de 180 est droite vers le bas. Pour aller vers la droite, nous pouvons prévoir une direction minimale d'environ 1:40. Maintenant, pour aller vers la gauche, scratch indique des nombres négatifs. En effet, dans Scratch, les directions situées à gauche de zéro, qui sont droites vers le haut, sont considérées comme négatives. Mais si nous essayons de choisir un nombre aléatoire entre un nombre négatif et un nombre positif, il inclura les nombres compris entre zéro et le nombre négatif et entre zéro et le nombre positif. C'est le contraire de ce que nous voulons. Heureusement, l'utilisation angles les plus courants de zéro à 360 degrés pour représenter un cercle fonctionne tout aussi bien à zéro. Ainsi, zéro est vers le haut, 90 est vers la droite, 180 vers le bas, 270 est vers la gauche et 360 est le cercle complet. Donc, face vers le haut une fois de plus, cela signifie que si nous voulons utiliser une direction minimale de 140, soit 40 soustrait de 180 pour obtenir la direction maximale, il suffit d'ajouter 40 à 180, soit 220 Revenons donc au code de définition de la variable Dur, passons aux opérateurs et introduisons un bloc aléatoire. Et choisissons un nombre aléatoire 140-220. Et maintenant, nous devons définir la direction des sprites sur la variable Dur Passons donc au mouvement dans un bloc de points et de directions après le bloc Dur défini, puis passons aux variables et définissons le point et la direction dur. Un peu plus tard dans la leçon, nous verrons pourquoi nous avons pris la peine de créer une variable der au lieu de simplement définir directement la direction du sprite Et si nous essayons de lancer le jeu maintenant, il ne fonctionnera pas. Les astéroïdes continuent de se déplacer tout droit vers le bas. La raison en est que nous utilisons ici le bloc de modification Y pour déplacer les clones. Ce bloc ne change que la position Y et ne se soucie pas du tout de la direction des sprites Pour résoudre ce problème, nous devrons supprimer le bloc. Et remplaçons-le par un bloc de dix étapes à partir de la catégorie des mouvements. Ensuite, nous pouvons accéder aux variables et déplacer le sprite en utilisant la valeur du bloc de vitesse. Si nous lançons maintenant le jeu, il nous donne le résultat que nous recherchions. Un problème, cependant, est que lorsqu' un astéroïde sort d' un côté de la scène, il continue de tourner jusqu'à ce que sa position Y tombe finalement sous le bord inférieur Puisque nous laissons le joueur passer de l'autre côté, je pense qu'il serait juste de laisser les astéroïdes faire de même C'est assez facile à faire car nous pouvons utiliser à peu près le même code que celui que nous utilisons pour le sprite du joueur Le code pour l'habillage d'écran est ces deux blocs I situés en bas du mouvement défini. Pour les copier dans le code de l'astéroïde, nous pouvons cliquer et maintenir sur le premier, puis les faire glisser sur l'astéroïde Sprite et le volet Sprite et les relâcher Revenons maintenant au code de l'astéroïde, prenons les nouveaux blocs ITN et plaçons-les juste au-dessus du bloc de costume en costume au bas du script When I start as a clone Cependant, pour tenir compte de la taille des astéroïdes, nous voulons leur permettre de s'éloigner un peu plus la scène avant de changer de position Ainsi, au lieu de 235 et moins 235, nous pouvons utiliser 300 et moins 300. Maintenant, si nous lançons le jeu et laissons des astéroïdes partir d' un côté de la scène, ils réapparaîtront de l'autre côté. OK ? Tout cela s'annonce plutôt bien maintenant. Mais une autre façon d'améliorer le mouvement des astéroïdes est de leur donner un peu de rotation lorsqu' ils flottent dans l'espace Pour cela, nous devons créer une autre variable. Nous pouvons l'appeler spin et le créer uniquement pour ce sprite. Et cachons la variable. Ajoutons maintenant un autre ensemble à block pour définir l' astéroïde de configuration et définir la variable de spin Comme pour tout le reste, nous pouvons utiliser une valeur aléatoire pour cela. Passons donc aux opérateurs et introduisons un bloc choisi au hasard. Et choisissons quelque chose entre, disons, moins trois degrés et trois degrés. Cela permettra aux astéroïdes de tourner dans le sens antihoraire ou dans le sens des aiguilles d'une montre je veux m'assurer qu'il sélectionne également des décimales Cependant, je veux m'assurer qu'il sélectionne également des décimales. Je vais donc ajouter un point après l'une des valeurs Maintenant, pour utiliser réellement la variable spin, revenons ici au moment où je commence en tant que script de clonage. Juste après avoir déplacé le clone, passons au mouvement et introduisons un bloc rotatif. Passons maintenant aux variables et faisons-les tourner en degrés de rotation. Si on essaie ça maintenant, les astéroïdes deviendront complètement fous Cela est dû au fait que le bloc rotatif change la direction d'un sprite. Ainsi, la prochaine fois que le bloc de déplacement s'exécute, le clone se déplace dans sa nouvelle direction. Pour contourner ce problème, il est utile de comprendre exactement comment fonctionne le bloc de déplacement. En fait, il utilise trigonométrie pour modifier à la fois les positions X et Y du Il modifie la position X par le sinus de la direction des sprites, et la position Y par le cosinus de la Ainsi, au lieu d'utiliser un bloc de déplacement, nous pouvons effectuer ces calculs directement nous-mêmes. Pour ce faire, passons d'abord au mouvement et plaçons à la fois un bloc de modification X et un bloc de modification Y dans un espace vide. Passons ensuite aux opérateurs, et ajoutons un abdos de bloc. Outre les abdos, nous avons également des options pour le sinus ou le sinus et le cosinus ou les majuscules Alors d'abord, choisissons SN et plaçons-le dans le bloc change X. Maintenant, dupliquons le sin du bloc, plaçons-le dans le bloc Change Y et configurons-le pour qu'il utilise la fonction Case. Ensuite, nous pouvons passer aux variables, et pour les blocs SN et Case, introduisons un bloc DR. ces deux blocs a désormais le même effet que l'utilisation d'un bloc de déplacement dont un pour les étapes est indiqué. Donc, si nous voulons continuer à utiliser la même vitesse lors du déplacement du clone, nous devrons multiplier le sin et provoquer des blocages par la variable de vitesse. Passons donc d'abord aux opérateurs et introduisons deux blocs de multiplication. Pour l'une des entrées de chaque bloc de multiplication, nous pouvons accéder aux variables et utiliser un bloc de vitesse. Je sais que nous pouvons déplacer les blocs sin et cause dans les autres entrées, puis tout déplacer dans les blocs de changement. Nous pouvons maintenant nous débarrasser du blocage des déplacements ici. Détachons également temporairement le bloc rotatif. Ajoutons ensuite les blocs de modification au script juste après le passage du costume au Big Block. Si nous lançons le jeu maintenant, les clones se déplacent de la même manière qu' avant lorsque nous utilisions le bloc de déplacement. Mais maintenant, nous utilisons la variable der pour le mouvement. Au lieu de la direction réelle du clone. C'est pourquoi nous avons dû créer la variable der, car désormais, l'utilisation du turn block ne rendra plus le clone fou. Cela fera tourner le clone, comme nous pouvons le voir si nous réintroduisons le bloc dans le script et lançons le jeu. Excellente. Bien, les astéroïdes se déplacent maintenant bien et paisiblement sur scène, mais ce n'est pas le but de notre jeu Nous voulons créer le chaos en faisant exploser les astéroïdes hors de l'espace. Commençons donc à le faire dans la leçon suivante. 40. Tirer sur les astéroïdes: Pour que le joueur puisse tirer sur les astéroïdes, nous devons vérifier s'il n'y a pas de collision entre chaque clone d'astéroïde et chaque clone laser Pour l'instant, en cas de collision, nous supprimerons simplement les deux clones. Pour commencer, examinons le code du sprite laser. À l'heure actuelle, lorsque je commence en tant que script de clonage, nous déplaçons continuellement le laser jusqu'à ce qu'il touche le bord. Ensuite, nous supprimons le clone. la même manière, nous pouvons en créer un autre lorsque je démarre en tant que script de clonage et le faire attendre jusqu'à ce que le clone touche un astéroïde Et une fois que ce sera fait, nous supprimerons le clone. ce faire, passons contrôle et ajoutons-en un autre lorsque je commence en tant que bloc de clonage. Ajoutons maintenant un bloc d'attente au script. Pour ce qui est de la maladie, nous pouvons passer à la détection, introduire un bloc tactile et le régler pour qu'il touche un astéroïde Ainsi, les blocs placés sous le bloc d'attente ne fonctionneront pas tant que le clone n'aura pas touché un astéroïde Et lorsque le clone touche un astéroïde, nous voulons le supprimer Nous pouvons donc dupliquer le bloc de suppression de ce clone et le déposer ici. Si nous lançons le jeu maintenant et que nous commençons à tirer, les clones laser sont supprimés lorsqu'ils touchent un astéroïde ou le haut de la scène Les clones d'astéroïdes ne sont cependant pas encore supprimés lorsqu'ils sont touchés, alors arrêtons le jeu et revenons au code de l'astéroïde Dans le bloc permanent du script When I start as a clone, nous vérifierons si le clone touche un laser, et nous voulons le faire avant de passer au grand costume, sinon le clone remplira toute la scène et nous serons presque toujours touchés par un laser sur la scène. Donc, pour effectuer le contrôle de collision, passons au contrôle et plaçons un bloc ITN dans un espace vide pour le moment Pour ce qui est de la maladie, nous pouvons passer à la détection, apporter un bloc tactile et vérifier s'il s'agit d'un contact avec le laser. Et le code qui s' exécutera lorsque cela se produira finira par devenir assez long. Passons donc à Mes blocs et créons un bloc personnalisé pour celui-ci. On peut appeler ça un astéroïde frappé et cliquer sur OK. Nous pouvons déplacer le bloc touché par l' astéroïde défini ici. Et ajoutons un bloc touché par un astéroïde au bloc I Thin. Maintenant, nous pouvons placer le bloc I Thin au-dessus de tout le reste dans le bloc Forever. Et pour l'instant, chaque fois qu' un astéroïde est touché, nous supprimerons simplement le clone Mais nous voulons également réduire le nombre de clones. Passons donc d'abord aux variables, ajoutons un bloc total de modification du clone au script d'impact de l'astéroïde et modifions le total des clones par moins un Nous pouvons maintenant contrôler et supprimer ce bloc de clonage. Et d'ailleurs, chaque fois que nous supprimons un clone, tous ses scripts cessent de s'exécuter. La boucle éternelle s'arrêtera donc une fois que le bloc percuté par l'astéroïde aura fini de fonctionner Bien, si nous lançons le jeu maintenant et que nous tirons sur des astéroïdes, les lasers disparaîtront toujours, mais pas les astéroïdes Pour comprendre pourquoi cela se produit, nous devons d'abord comprendre comment Scratch exécute les scripts dans un projet. Bien qu'il semble que les sprites exécutent leurs scripts exactement en même temps, c'est uniquement parce que scratch les exécute extrêmement rapidement Mais ce qui se passe réellement, c'est que les sprites exécutent leurs scripts à tour de rôle à chaque image. Si nous revenons au code du sprite laser, dès que le bloc d' attente détecte une collision avec un clone d'astéroïde, le clone laser est immédiatement supprimé. Cela signifie qu' au moment où le clone d'astéroïde exécute son script et vérifie l'absence de collisions, tous les clones laser qu' il aurait pu toucher ont déjà été supprimés, sorte qu'il ne détecte aucune OK, donc pour résoudre ce problème, revenons au code du sprite laser, après avoir détecté une collision d' astéroïdes, nous devons dire à Scratch d'attendre la prochaine image avant de supprimer le clone Pour ce faire, nous pouvons introduire un bloc d'attente, placer entre le bloc d'attente et supprimer ce bloc de clonage, et le configurer pour qu'il attende 0 seconde. Le bloc d'attente oblige Scratch à ne pas exécuter les blocs suivants tant que le temps spécifié n'est pas écoulé. Et avec l'attente de 0 seconde, nous disons essentiellement à Scratch de n'attendre qu'une seule image. Nous donnons ainsi au clone de l'astéroïde suffisamment de temps pour détecter également une collision et se supprimer lui-même avant que le clone laser ne soit supprimé. Si nous lançons le jeu maintenant et que nous tirons sur un astéroïde, les clones du laser et de l'astéroïde seront supprimés. Maintenant, avant de partir, il y a encore une chose importante à savoir sur la détection des collisions. Dans le code de l'astéroïde, nous avons décidé de vérifier si le clone touchait un laser au début du bloc éternel, mais uniquement parce que nous voulions le faire avant de passer au grand costume Cependant, il est également important de vérifier la collision avant de déplacer le sprite La raison en est que si nous devions déplacer l'astéroïde avant le contrôle de collision, il est possible qu' une fois qu' un clone laser détecte une collision avec un astéroïde, l'astéroïde se déplace juste assez pour ne plus toucher Cela signifie que le clone laser sera toujours supprimé, mais pas le clone de l'astéroïde car il ne détectera aucune collision Bien, maintenant que le joueur est capable de tirer sur les astéroïdes, nous allons rendre les choses un peu plus difficiles en leur donnant de la santé, sorte que le joueur doive les abattre plusieurs fois. 41. Donner la santé aux astéroïdes: Pour rendre les clones d'astéroïdes plus difficiles à détruire, nous allons donner de la santé à chacun et nous utiliserons une variable pour stocker ces points de Donc, dans le sprite de l'astéroïde, passons aux variables et créons-en une nouvelle Nous pouvons appeler cela de la santé et le créer uniquement pour ce sprite. Et allons-y et cachons la variable. Très bien, au début du jeu, nous allons définir une valeur par défaut pour la variable de santé. Donc, dans le script de démarrage du jeu, prenons un bloc défini de deux et plaçons-le quelque part au-dessus du bloc permanent. Faisons en sorte qu'il définisse la variable de santé, et une valeur par défaut de trois devrait être bonne. Ensuite, dans le script de frappe d'un astéroïde, vérifiez d'abord si la santé de l'astéroïde est supérieure Passons au contrôle et plaçons le bloc dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons maintenant aux variables et vérifions si la santé est supérieure à un. Si tel est le cas, nous réduirons la santé d'une unité. Apportons donc une modification par bloc, et changeons la santé par une valeur négative. Nous voulons ensuite arrêter le script de frappe de l'astéroïde afin que le clone ne soit pas supprimé. Passons donc à Control et mettons un bloc d'arrêt dans le bloc ITN, et faisons en sorte qu'il arrête ce script Nous pouvons maintenant saisir le bloc ITN et placer juste en haut de l'astéroïde touché par un astéroïde défini OK, si on lance le jeu maintenant, il faudrait exactement trois tirs pour détruire un astéroïde Sympa. Cependant, il serait préférable qu'il y ait une sorte d' indication permettant au joueur de savoir quand il a tiré sur un astéroïde Une chose que nous pouvons faire est rendre brièvement l'astéroïde complètement blanc Pour ce faire, passons à Looks, et ajoutons un effet défini à bloquer à l'intérieur du script en cas de collision avec un astéroïde Et utilisons-le pour régler la luminosité à 100. Si nous tirons maintenant sur un astéroïde, il devient complètement blanc Pour qu'il revienne rapidement à ses couleurs normales, nous pouvons prendre un bloc d' effets graphiques clair et le placer juste en haut du bloc permanent et du script « when I start » en tant que script de clonage. Cela doit se produire avant d'effectuer la collision laser. Si nous lançons le jeu maintenant et que nous tirons sur des astéroïdes, cela aura un effet clignotant cool Une autre chose que nous pouvons faire est de faire reculer légèrement les astéroïdes lorsque le joueur les tire dessus. C'est ce qu'on appelle Knock Back, et cela peut donner au joueur une chance de s' éloigner d'un astéroïde Pour ce faire, il suffit d' augmenter légèrement la position Y de l'astéroïde, et nous le ferons à l'aide d'une animation rapide Passons donc d'abord au contrôle, plaçons un bloc de répétition dans un espace vide, et faisons-le se répéter quatre fois. Passons ensuite au mouvement et ajoutons une modification Y par bloc au bloc de répétition. Nous ne voulons pas que le retour en arrière soit trop fluide, nous pouvons donc changer la position Y d'un nombre aléatoire à chaque fois Pour ce faire, passons aux opérateurs et utilisons un bloc choisi au hasard comme entrée. Pour déplacer l'astéroïde vers le haut de la scène pour l'éloigner du joueur, nous devons changer la position Y d'un nombre positif, donc 1 à 3 devrait fonctionner Mettons maintenant le bloc de répétition dans le bloc « if thin » du script touché par l'astéroïde juste avant d'arrêter le script Si nous lançons maintenant le jeu, chaque fois que nous tirons sur un astéroïde, il remonte un peu sur la scène Et juste pour le fun, nous pouvons également faire vibrer les astéroïdes d'un côté à l'autre lorsqu'ils sont abattus Pour cela, il suffit de modifier également légèrement la position des clones à chaque répétition Passons donc au mouvement et ajoutons un bibloc change X au bloc de répétition. Revenons ensuite aux opérateurs, utilisons un bloc de sélection aléatoire comme entrée et choisissons quelque chose entre moins deux et deux. Essayons-le maintenant. Génial. C'est bon. Et dans la prochaine leçon, nous allons rendre les astéroïdes encore plus difficiles à détruire en les brisant en fragments 42. Séparer les astéroïdes: Ce que nous allons faire ensuite, c'est chaque fois qu'un astéroïde perd de sa santé, nous réduisons sa taille et en créons deux clones. Cela donnera l'impression que l'astéroïde s'est scindé en trois fragments plus petits Donc, pour commencer, une fois qu'un astéroïde n'aura plus de santé, nous réduirons sa taille de moitié Passons à Looks et mettons un bloc de taille 2 juste en dessous du bloc si la santé est supérieure à un bloc. Passons maintenant aux opérateurs et ajoutons un bloc de division au bloc de taille défini. Passons ensuite à Looks et définissons la taille à la taille actuelle divisée par deux. Ensuite, nous allons créer deux autres clones. Donc, juste après avoir défini la taille, passons à Control et introduisons deux blocs Create Clone of Myself. Très bien, lorsque nous créerons les deux nouveaux clones, il exécutera le script when I start en tant que script de clonage pour chaque nouveau clone Cela exécutera à son tour le script de configuration de l'astéroïde, randomisant les attributs de chaque clone Les attributs du clone d'origine resteront toutefois les mêmes. Si nous voulons également randomiser à nouveau ses attributs, il suffit d'accéder aux blocs M et d'ajouter un bloc d'astéroïdes après la création des blocs de clonage par les deux Avant de lancer le jeu, nous sommes toujours en train de supprimer le clone d'origine. De plus, nous n'imposons aucune limite à la taille des clones. Pour résoudre ces deux problèmes, supprimerons-nous un clone une fois qu'il est tombé en dessous d'une certaine taille ? Nous savons que la première fois que nous séparons un astéroïde, nous fixons sa taille à 100, soit la moitié de la taille initiale de 200 La prochaine fois que nous le diviserons, nous le réduirons de moitié, pour en faire 50. Cela devrait être suffisamment petit. Ainsi, une fois que la taille d'un clone est tombée en dessous de 50, nous supprimerons le clone. Pour ce faire, passons à Control, prenons un bloc mince if, un bloc mince if, et associons-le à la fois à la modification du total des clones par moins un bloc et à la suppression de ce bloc de clonage. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite à Looks et vérifions si la taille est inférieure à 50. Nous voulons en fait le faire avant de créer d'autres clones. Déplaçons le bloc informatique juste en dessous du bloc de taille défini. Si nous lançons maintenant le jeu et que nous tirons sur des astéroïdes, une fois qu'ils n'auront plus de santé, ils se diviseront en trois fragments plus petits Nous devons cependant être prudents à cet égard. Pour comprendre ce que je veux dire, arrêtons le jeu. Supposons que nous voulions autoriser les clones à atteindre une taille de 25 avant de les supprimer. Maintenant, relançons le jeu, tirons sur des astéroïdes jusqu'à ce qu'ils deviennent vraiment petits et laissons certains des plus petits clones atteindre le bas de la scène Si nous surveillons le nombre de clones, il ne diminue pas comme il se doit. En effet, comme nous l'avons appris lorsque nous avons créé le sprite d'astéroïde pour la première fois, Scratch utilise la taille d' un sprite pour limiter la distance qu'il peut parcourir par rapport à la scène Lorsque les clones deviennent suffisamment petits, ils ne peuvent pas atteindre la limite négative de 250 Y que nous avons définie Ils finissent donc par se retrouver coincés quelque part juste en dessous du bord inférieur Pour résoudre ce problème, avant de passer au grand costume et de changer de position ici, nous devons d'abord remettre la taille à 200 % Découvrons un bloc de taille 2, placez-le au-dessus du costume de remplacement pour un gros bloc et fixons la taille à 200 Cependant, après être revenus au costume d'origine ici, nous devons également revenir à la taille d'origine. Cela signifie que, comme pour le costume, nous devrons créer une variable pour enregistrer la taille d'origine. Passons donc aux variables, et créons-en une nouvelle appelée taille. utiliser que pour ce sprite Maintenant, avant de définir la taille sur 200 ici, Ne l'utiliser que pour ce sprite Maintenant, avant de définir la taille sur 200 ici, introduisons un ensemble à bloquer et nous l' utiliserons pour définir la variable de taille à la taille actuelle Passons à Looks et utilisons un bloc de taille comme entrée. Enfin, après avoir remplacé le costume la variable costume, nous pouvons définir la taille selon la variable de taille en introduisant un bloc de taille 2 défini, puis en accédant aux variables et en utilisant un bloc variable de taille comme entrée. Et maintenant, si nous lançons le jeu et que nous tirons sur des astéroïdes, le nombre de clones devrait atteindre une douzaine environ Bien, ce problème potentiel arrêtons le jeu, et je vais remettre le contrôle de réglé, arrêtons le jeu, et je vais remettre le contrôle de taille à 50. Maintenant, étant réglé, arrêtons le jeu, et je vais remettre le contrôle de taille à 50. Maintenant, comme nous ne divisons un astéroïde qu'une fois que sa santé est tombée à un, les nouveaux clones commencent avec une santé d'un, donc il suffit d'un seul coup pour Donc, avant de modifier la taille, nous pouvons vérifier si la taille est supérieure à 100, et si c'est le cas, nous pouvons définir la variable de santé sur deux. Il faudra ensuite deux prises de vue pour séparer les clones dans le premier groupe de fragments Passons donc d'abord au contrôle et introduisons un bloc mince dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons maintenant à Los, et vérifions si la taille actuelle est supérieure à 100. À l'intérieur du bloc I Thin, passons aux variables. Apportez un bloc de deux sets et réglez votre santé à deux. Mettons maintenant tout cela juste au-dessus du bloc de taille défini. Si nous lançons le jeu maintenant, il faut encore trois coups pour séparer un gros astéroïde, mais maintenant il faut deux coups pour en séparer un de taille moyenne, et un tir détruit les plus petits fragments Très bien, tout est définitivement en train de se mettre en place maintenant. Mais pour des rochers géants qui explosent dans l'espace, cela semble encore un peu trop modéré. Dans la leçon suivante, nous ajouterons quelques effets supplémentaires pour le rendre encore plus beau. 43. Ajouter des flashs d'explosion: Pour améliorer l'apparence de notre jeu, nous ajouterons des effets d' explosion lorsque les astéroïdes se séparent ou sont détruits Ces effets incluront éclairs de lumière et des effets de particules Bien, pour commencer, nous allons créer un nouveau sprite pour les effets Descendons donc sur le bouton Choisir un sprite et cliquez sur Paint Et appelons ça une explosion. Pour le premier costume, renommons-le en flash Nous utiliserons ce costume pour montrer un flash de lumière lors de l'explosion, et il est assez simple à dessiner. abord, prenons l' outil cercle, choisissons blanc pur comme couleur de remplissage et désactivons le contour. Zoomons maintenant un peu sur le canevas. Et tout en maintenant la touche Maj enfoncée, dessinons un cercle d'environ 14 ou 15 blocs de diamètre. Allons-y et centrons le cercle. Maintenant, prenons l' outil Sleck et dupliquons le cercle en maintenant la touche Alt ou Option enfoncée et en cliquant dessus Ensuite, tout en maintenant à nouveau la touche Alt ou Option enfoncée, augmentons un peu plus cette valeur. OK. Maintenant, si nous regardons haut de la boîte de dialogue des couleurs de remplissage, outre l'option de couleur unie que nous avons utilisée jusqu'à présent dans le cours, nous avons également des options de dégradé pour créer des dégradés lisses entre deux couleurs différentes Nous pouvons appliquer un dégradé horizontal, un dégradé vertical ou un dégradé radial. Ce que nous voulons utiliser pour le cercle, c'est un dégradé radial. Cliquons sur le bouton de dégradé radio ici à droite. Nous avons maintenant deux couleurs que nous pouvons définir. Le dégradé passe de la première couleur au centre à la deuxième couleur au bord. Ce que nous voulons, c'est que le dégradé passe du blanc au centre au transparent sur le bord. Pour ce faire, nous pouvons conserver la première couleur sur le blanc, et pour la deuxième couleur, nous pouvons cliquer sur le bouton rouge Ford Slash pour la désactiver Cela ne se voit pas très bien sur la toile, mais si nous fermons le dialogue des couleurs, nous pouvons constater sur scène que cela donne au petit cercle un bel effet lumineux Maintenant, allons-y et voyons comment nous pouvons l'utiliser. Nous voulons qu'un flash apparaisse chaque fois qu'un astéroïde se divise ou est détruit, et nous voulons qu'il apparaisse au même endroit que l' Cela signifie qu'avec la liste des taupes touchées que nous avons créée et que nous avons frappées, nous devrons créer une liste de variables globale pour enregistrer les Pour commencer, passons au code de l' astéroïde Sprite et dans les variables, cliquez sur Créer une liste Nous pouvons appeler cela des explosions, et cela doit être le cas pour tous les sprites OK. Nous savons maintenant qu'un astéroïde peut soit se séparer, soit être détruit et provoquer des impacts d'astéroïdes Chaque fois que le si la santé est supérieure à un bloc est faux et que les blocs restants ont une chance de courir, nous pouvons ajouter la position des astéroïdes à la liste des explosions quelque temps après le si la santé est supérieure à un bloc, et nous le ferons dans un bloc personnalisé. Passons à Mblocks et cliquez sur Mika block. Appelons-le Explode, puis cliquez sur OK. Nous pouvons définir Explode quelque part ici et ajouter un bloc d'explosion au script de frappe de l'astéroïde En dessous du I, la santé est supérieure à un bloc. Maintenant, dans Définir l'explosion, nous allons ajouter l'emplacement des astéroïdes à la liste des explosions Revenons aux variables et ajoutons deux blocs d'explosions. Et nous allons également utiliser la taille de l' astéroïde pour modifier la taille de l'explosion Ajoutons donc un autre bloc d'ajout. Pour les deux premiers blocs d'ajout, nous pouvons passer au mouvement et introduire un bloc de position pour le premier et un bloc de position Y pour le second. Pour le troisième, allons à Los et apportons un bloc de taille. Si nous lançons le jeu maintenant, chaque fois que nous séparons ou détruisons un astéroïde, son emplacement et sa taille sont ajoutés à la liste des explosions Il ne nous reste plus qu'à utiliser les objets. Passons donc au code du sprite d'explosion. Tout d'abord, étant donné que plusieurs explosions se produiront probablement en même temps, nous utiliserons des clones du sprite d'explosion Comme d'habitude, cela signifie que nous allons masquer le sprite lui-même. Passons aux événements et apportons un bloc de jeu W I receive Start. Alors allons à Los et apportons un bloc de cachettes. Ensuite, nous voulons effacer la liste des explosions afin ne pas utiliser d'objets du jeu précédent. Passons donc aux variables et introduisons un bloc de suppression de toutes les explosions. Ensuite, nous vérifierons en permanence si la liste des explosions contient des éléments. Et si c'est le cas, nous utiliserons les objets pour créer des éclairs de lumière Passons au contrôle et bloquons définitivement. Ajoutons-y ensuite un bloc if then. Pour la condition, nous voulons vérifier si la longueur de la liste est supérieure à zéro. Passons aux opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si la durée des explosions est supérieure à zéro. OK. Nous allons maintenant utiliser les éléments de la liste pour définir la position et la taille du clone. Pour la position, passons au mouvement et ajoutons un bloc Go to XY au bloc I then. Les deux premiers éléments représenteront respectivement les positions X et Y. Passons donc aux variables et utilisons un élément du bloc d' explosions pour chaque entrée du bloc Go to XY, en veillant à utiliser l'élément deux pour la position Y. Pour la taille, nous pouvons aller à Los, apporter un bloc de taille 2. Revenez ensuite aux variables et introduisez un élément de bloc, en lui faisant utiliser le troisième élément de la liste des explosions. Nous sommes maintenant libres de supprimer les trois éléments de la liste. Apportons-en trois, supprimons le premier élément des blocs d' explosions. Enfin, nous pouvons créer un clone. Passons donc à Control et introduisons un bloc de création d'un clone de moi-même. Bien, il ne nous reste plus qu'à dire aux clones ce qu'ils doivent faire une fois qu'ils ont démarré Alors, ajoutons un « when I start » en tant que bloc de clonage. Tout d'abord, nous voulons montrer le clone et l' amener sur la couche avant. Passons donc à Looks et introduisons à fois un bloc d'affichage et un bloc d'accès à la couche avant. Nous voulons également augmenter le nombre de clones. Passons donc aux variables et introduisons un total de clones de modification d'un bloc. Ensuite, nous voulons que le flash apparaisse que pendant une courte période, nous allons donc le faire disparaître rapidement. Pour ce faire, passons au contrôle et introduisons un bloc de répétition, et faisons-le répéter quatre fois. Pour faire disparaître le clone, nous pouvons accéder à Looks, ajouter un effet de changement par bloc au bloc de répétition et modifier l'effet fantôme de 25 %. Enfin, après avoir effacé le clone, nous voulons le supprimer Passons donc d'abord aux variables et plaçons un bloc total de clonage de modification en dessous du bloc de répétition, et modifions-le par moins un. Nous pouvons maintenant accéder à Control et supprimer ce bloc de clonage. Et cela devrait être tout ce dont nous avons besoin. Alors allons-y et essayons-le. Excellente. Les éclairs apparaissent brièvement au-dessus des astéroïdes qui se séparent ou sont détruits, et leur taille dépend de la taille de l' Maintenant que nous savons que tout fonctionne correctement, nous pouvons masquer la liste. OK, les flashs sont terminés. Dans la prochaine leçon, nous allons donc travailler sur les effets des particules. 44. Ajouter des effets de perle: Les effets de particules sont souvent utilisés dans les jeux pour créer des explosions , de la fumée, des éclaboussures de sang et même des effets météorologiques tels que la pluie et la neige Elles sont généralement constituées de plusieurs copies d'un même sprite, appelées particules, auxquelles diverses modifications appliquées pour les rendre plus aléatoires, par exemple en modifiant la couleur, vitesse, la direction et la taille des particules Et dans notre jeu, nous avons trois types différents de particules explosives. Pour les astéroïdes, nous aurons des particules de poussière. Et plus tard, lorsque le joueur sera détruit, nous aurons des particules de feu et de fumée. Et nous pouvons créer toutes ces particules à l'intérieur du sprite d'explosion Très bien, avec le sprite d' explosion sélectionné, passons à l'onglet costumes Créons un nouveau costume en cliquant sur le bouton Choisir un costume et en cliquant sur Peindre, et changeons le nom en poussière. Le costume de chaque particule va être assez simple. Tout d'abord, prenons l'outil du cercle. Et pour la couleur de remplissage, revenons à un remplissage solide en cliquant sur le bouton en haut à gauche, et choisissons une couleur marron. Maintenant, en nous assurant que le contour est désactivé, créons un petit cercle environ quatre blocs de diamètre. Nous pouvons maintenant utiliser l'outil de remodelage et modifier un peu la forme et modifier un peu la forme. Et ça devrait être une bonne chose. Faisons en sorte de centrer la forme. Ensuite, nous pouvons travailler sur les deux autres costumes. Pour les deux autres types de particules, nous pouvons en fait utiliser la même forme ici et simplement changer la couleur. Donc, d'abord, dupliquons le costume anti-poussière et changeons le nom en feu. Ensuite, nous pouvons sélectionner la forme et changer la couleur en jaune vif. Enfin, pour la particule de fumée, nous pouvons dupliquer l'un des costumes actuels, changer le nom en fumée et changer la couleur en gris clair. Très bien, nous en avons fini avec les costumes, revenons au code. Pour chaque explosion, nous continuerons à créer un clone flash. Mais maintenant, nous voulons également créer des clones utilisant l'un des costumes de particules Pour savoir quel costume de particules utiliser, nous aurons besoin de l' objet qui explose pour nous le dire Cela signifie qu'en plus d'ajouter l'emplacement et la taille à la liste des explosions, l'objet devra également ajouter le type de particule. Pour le moment, les seuls objets qui explosent sont les astéroïdes Passons au code de l'astéroïde. Dans Defined Explode ici, nous devrons ajouter un quatrième élément à la liste des explosions indiquant le costume de particules à utiliser Passons donc aux variables et ajoutons un autre bloc d'ajout aux explosions. Et pour simplifier les choses, nous pouvons utiliser l'un des noms de costumes tirés des sprites de l'explosion Pour les astéroïdes, nous voulons utiliser le costume anti-poussière. Ajoutons le mot poussière à la liste. Nous pouvons maintenant revenir au code du sprite d' explosion. OK, nous allons donc continuer à créer un clone pour le flash, mais maintenant déplaçons le bloc de création de clone au-dessus du bloc de suppression. Et comme nous allons maintenant passer d'un costume à l'autre, pour nous assurer de créer un clone à l' aide du costume flash, allons dans Looks et plaçons un bloc de costume au-dessus du bloc Create Clone, puis passons au costume flash. Pour ce qui est des particules, nous devons d'abord passer au costume à partir duquel figure l'objet numéro quatre dans la liste des explosions. Apportons donc un autre bloc de costumes Switch et placons-le sous le bloc Create Clone. Nous pouvons maintenant passer aux variables, placer un élément de bloc dans le bloc de costume Switch. Et choisissez le quatrième élément dans la liste des explosions. Et nous voulons nous assurer de supprimer également l'article. Ajoutons donc une autre suppression du bloc Explosions. D'accord ? Et pour faciliter la lecture, créons les clones de particules dans un bloc personnalisé. Pour cela, allons dans Mblocks et cliquez sur Créer un bloc. Tapons d'abord create et nous voulons pouvoir choisir le nombre de particules à créer. Nous devrons donc utiliser l'une de ces options de saisie ici. Nous avons une option pour une entrée numérique ou textuelle et une pour une entrée booléenne nombre de particules étant un nombre, choisissons la première option. Nous pouvons maintenant saisir un nom pour l'entrée. Disons donc que c'est le compte. Enfin, nous pouvons ajouter une étiquette après la saisie en cliquant sur Ajouter une étiquette ici, et saisissons les particules. Très bien, le titre complet du noir sera Create count Particles. Maintenant, cliquons sur OK pour le créer. Nous pouvons déplacer le bloc de création de particules défini vers le bas. Allons-y, prenons un bloc de création de particules dans la palette de blocs et placez-le juste en dessous du bloc du costume de changement au bloc de l'objet 4 et quand je recevrai Start game. concerne le nombre de particules, nous ne voulons pas les emporter car chaque particule sera un clone distinct, et même si les clones n'existeront que pendant une courte période, ils peuvent s'accumuler assez rapidement Je pense qu'une dizaine devrait être une bonne chose. Ensuite, dans le script de création de particules, nous utiliserons la valeur de l'entrée count comme le nombre total de clones à créer Pour ce faire, allons d'abord dans Contrôle et introduisons un bloc de répétition. Pour le nombre de répétitions, nous pouvons en fait utiliser un bloc de comptage du bloc défini ici. Il ne nous reste plus qu'à ajouter un bloc create clone of myself au bloc de répétition, et c'est tout. Mais nous devons tout de même indiquer aux clones de particules ce qu' ils doivent faire une fois créés Passons donc au moment où je commence en tant que script de clonage. Nous voulons faire différentes choses selon qu'il s'agit d'un clone flash ou d'un clone de particules. Donc, pour commencer, plaçons un bloc F thin else dans un espace vide. Pour ce qui est de la condition, nous vérifierons si le clone utilise le costume flash. Passons donc d'abord aux opérateurs et introduisons un bloc égal. Pour la première saisie, nous pouvons aller dans Looks et apporter un bloc de costumes. Mais au lieu du numéro du costume, nous voulons vérifier le nom du costume, et vérifier si le nom du costume est égal à Flash. Nous pouvons maintenant récupérer le total des modifications , supprimer ces blocs de clonage d'ici et les attacher au bas du bloc I thinlsblock Maintenant, si le sprite utilise le costume flash, nous allons simplement le faire disparaître comme nous le faisions auparavant Prenons le bloc de répétition ici et plaçons-le dans la partie I du I thinlsblock Ensuite, nous pouvons ajouter le tout en bas du lorsque je démarre en tant que script de clonage. Maintenant, si le clone n' utilise pas le costume flash, il utilise l'un des costumes à particules. Décidons donc de ce que nous voulons que les clones de particules fassent. abord, toutes les particules partiront dans la même position, et pour obtenir un effet d'explosion, nous les déplacerons toutes vers l'extérieur en même temps Pour ce faire, nous pouvons donner à chaque particule une direction aléatoire, ainsi qu'une vitesse aléatoire pour la rendre plus chaotique. Pour commencer, passons au mouvement et ajoutons un bloc de points et de directions à la partie du bloc Ins, et nous choisirons une direction aléatoire. Passons donc aux opérateurs et introduisons un bloc choisi au hasard. Nous laisserons les clones se déplacer dans toutes les directions possibles, afin de pouvoir choisir un numéro de 1 Ensuite, pour ce qui est de la vitesse, nous devons créer une variable locale. Passons donc aux variables et créons-en une nouvelle. Nous pouvons l'appeler vitesse et l' utiliser uniquement pour ce sprite, sans avoir besoin d' afficher la variable Nous pouvons maintenant ajouter un ensemble de blocs en dessous du bloc de points et de directions, et nous allons faire en sorte que la variable de vitesse soit définie sur un nombre aléatoire. Passons donc aux opérateurs, introduisons un bloc aléatoire et choisissons quelque chose de 3 à 8 Ensuite, au cours d'une animation rapide, nous utiliserons la variable de vitesse pour déplacer le clone et le faire disparaître. Passons donc au contrôle et plaçons un bloc de répétition dans un espace vide, et nous allons le maintenir à dix répétitions. Pour déplacer le clone, nous pouvons passer au mouvement et introduire un bloc de déplacement. Passons ensuite aux variables et utilisons un bloc de vitesse comme entrée. Enfin, pour faire disparaître le clone, passons à Los, et introduisons un effet de changement par bloc. Et changeons de dix l'effet fantôme. Très bien, maintenant prenons le bloc de répétition et plaçons-le juste en dessous du bloc de vitesse défini, et essayons-le. OK, nous avons donc un petit problème. Les particules mettent trop de temps à apparaître, elles semblent donc surgir de nulle part. La raison pour laquelle cela se produit est liée à notre script crate particle. Comme scratch n'exécute qu' une seule répétition d' un bloc de répétition au cours d'une seule image ou d'une actualisation de l'écran, il faut compter un total d' images pour créer tous les clones de particules Lorsque cela sera terminé, l'astéroïde sur lequel le clone devrait apparaître a déjà disparu depuis un certain temps Heureusement, il existe un moyen de contourner ce problème, et c'est l'une des principales raisons d'utiliser des blocs personnalisés. Si nous cliquons avec le bouton droit sur le bloc de création de particules défini et que nous choisissons des modifications, la boîte de dialogue Créer un bloc réapparaît, ce qui nous permet d'apporter des modifications au bloc. Au bas de la boîte de dialogue, nous avons cette case à cocher qui indique Exécuter sans rafraîchir l'écran Si nous l'activons, il forcera Scratch à exécuter tous les blocs à l'intérieur du bloc personnalisé pendant une seule image. Donc maintenant, si nous cliquons sur OK et que nous réessayons, toutes les particules apparaissent même temps et dès que l'astéroïde se divise ou est détruit, et maintenant il a une bien meilleure apparence Il y a cependant quelques améliorations que nous pouvons apporter. abord, les particules apparaissent actuellement au-dessus du flash, mais je pense que cela pourrait être un peu mieux si le flash apparaissait au-dessus du flash. Pour ce faire, il suffit de modifier l'ordre dans lequel nous créons le clone flash et les clones de particules Passons donc du costume Switch au Flash Block et retirons tous ces blocs. Nous pouvons maintenant séparer le costume du switch pour qu'il clignote et créer des blocs clonés à partir des autres blocs, puis placer les deux blocs sous le bloc de particules. Maintenant, nous pouvons remettre tout cela en bas du bloc I then. Et si on essaie à nouveau, le flash apparaît au-dessus des particules. Cela semble mieux à mon avis, mais n'hésitez pas à revenir au vôtre tel qu'il était avant. D'accord ? Et les particules se ressemblent également un peu trop. Pour résoudre ce problème, nous pouvons rendre certaines particules plus foncées que les autres de manière aléatoire . Et en fait, nous ne voulons le faire que si la particule est une particule de poussière ou de fumée. Nous allons faire autre chose avec les particules de feu. Donc, pour commencer, passons au contrôle et plaçons un bloc if then dans un espace vide. Pour ce qui est de la condition, nous voulons vérifier si le clone n'utilise pas le costume de pompier. Allons voir les opérateurs et apportons un bloc à nœuds. Ensuite, introduisez également un bloc égal. Passons maintenant à Looks et apportons un bloc de costumes. Et nous voulons vérifier si le nom du costume n'est pas égal au feu. OK, et pour ajouter une quantité aléatoire d'obscurité au clone, ajoutons d'abord un effet défini à bloquer au bloc if then, puis définissons l'effet de luminosité. Passons ensuite aux opérateurs et introduisons un bloc choisi au hasard. L'utilisation d'une valeur négative pour la luminosité assombrira le sprite Alors allons-y avec quelque chose entre moins 30 et zéro. Cela ne changera pas tout la luminosité si zéro est choisi, ou cela rendra le clone jusqu'à 30 % plus foncé. Maintenant, nous pouvons placer tout cela au-dessus du bloc des dix répétitions et quand je commence en tant que clone et que je l'essaie. Très sympa Même si nous n'utiliserons pas les particules de feu et de fumée pour les astéroïdes, nous pouvons toujours les tester. Pour ce faire, entrons dans le code du sprite de l'astéroïde au lieu d'ajouter de la poussière à la liste des explosions, ajoutons de la fumée Essayons-le. La fumée se comporte de la même façon que la poussière, sauf qu'elle contient des particules grises Essayons maintenant d'ajouter du feu. Et comme nous ne modifions pas la luminosité des particules de feu, elles sont toutes jaunes de la même couleur. chose que nous pouvons faire pour améliorer l'apparence des particules de feu, c'est de les rendre de plus en plus rouges au fur et à mesure qu'elles se propagent. Pour ce faire, revenons au sprite d'explosion. Et voilà, passons au contrôle et plaçons un autre bloc mince dans un espace vide. Cette fois, nous voulons vérifier si le nom du costume est Fire afin de pouvoir dupliquer le nom du costume égal à Fire Block ici et l'utiliser pour l' état du bloc ITN. Maintenant, dans le bloc I Thin, passons à Looks et ajoutons un effet de changement de couleur par bloc. Pour passer du jaune au rouge, nous devons réduire l'effet de couleur, et nous voulons qu'il soit un peu subtil. Utilisons donc quelque chose de petit, comme moins deux. Maintenant, nous pouvons le mettre quelque part dans le bloc d'étain à répétition et l'essayer. Ça a l'air bien mieux. Très bien, nous avons fini de créer les particules de l' explosion maintenant. Assurons-nous donc de revenir au sprite de l' astéroïde et de reconvertir le type de particule en Dans la leçon suivante, nous allons laisser les astéroïdes s' amuser en détruisant le joueur et nous allons rendre la destruction du joueur assez spectaculaire avec multiples explosions et une combinaison de fumée et de particules de feu 45. Détruire le joueur: Contrairement aux astéroïdes, le joueur n'aura aucune santé et sera détruit dès qu' un astéroïde le touchera. Nous ajouterons cependant un bouclier plus tard, qui rendra le joueur temporairement invincible Et si vous le souhaitez vraiment, vous pouvez également donner de la santé au joueur de la même manière que nous l'avons fait avec les astéroïdes Quoi qu'il en soit, pour commencer, passons au code Sprite du joueur Ce que nous voulons faire, c'est que dans la boucle permanente du script de démarrage du jeu, avant de bouger ou de tirer, nous vérifierons si le joueur a été touché, et si c'est le cas, nous le détruirons. Pour vérifier si le joueur a été touché, allons dans Mblocks et créons un nouveau bloc personnalisé. Nous pouvons l'appeler Check Hit et cliquer sur OK. Allons-y et ajoutons un bloc à cocher en haut du bloc permanent. Déplaçons ensuite la case à cocher définie dans un espace vide. Très bien, donc dans define check hit, nous devons d'abord vérifier si le joueur touche un astéroïde Pour ce faire, passons au contrôle et introduisons un bloc if then. Et pour ce qui est de la maladie, passons à la détection, introduisons un bloc tactile et remplacons-le par un astéroïde tactile Si c'est le cas, nous détruirons le joueur en créant une séquence d'explosions sur le sprite du joueur Cependant, nous souhaitons également supprimer la boucle permanente dans le script de démarrage du jeu Sinon, le joueur pourra toujours se déplacer et tirer alors que son sprite explose Pour ce faire, le bloc à cocher devra indiquer au bloc permanent si le joueur a été touché ou non. Pour cela, nous pouvons créer une variable. Passons donc aux variables et créons-en une nouvelle. Et disons que c'est mort. Seul le sprite du joueur doit utiliser la variable, nous ne pouvons donc la créer que pour ce sprite Et nous pouvons continuer et masquer la variable. D'accord ? Au tout début du jeu , nous voulons bien sûr que le joueur ne soit pas mort. Ajoutons donc un ensemble à bloquer quelque part avant le blocage permanent dans le script de démarrage du jeu. Et passons à faux. Ensuite, revenez dans le kit de vérification de définition. Si le joueur touche un astéroïde, ajoutons un set de deux blocs et le set sera complètement nul. Maintenant, revenons dans Démarrer le jeu. Une fois le bloc coché, nous vérifierons si le joueur est mort, et si c'est le cas, nous arrêterons le script. Passons donc à Control et plaçons un bloc ITN dans un espace vide pour le moment Et pour ce qui est de la condition, passons aux opérateurs et introduisons un bloc égal. Passons maintenant aux variables, et vérifions si c'est mort, si c'est vrai. Si c'est le cas, nous arrêterons le script en cours. Passons à Control, ajoutons un bloc d'arrêt au bloc ITN et faisons en sorte qu'il arrête ce script Nous pouvons maintenant placer le bloc ITN juste en dessous du bloc check HIT ici. Si nous lançons le jeu maintenant et que nous sommes touchés par un astéroïde, nous ne pouvons plus ni bouger ni tirer D'accord ? Passons maintenant aux explosions des joueurs. Pour cela, nous allons créer un autre bloc personnalisé. Passons donc à Mblocks, cliquez sur Créer un bloc, et appelons-le Explode Et nous voulons nous assurer de ne pas cocher Exécuter sans rafraîchir l'écran ici. C'est facultatif la plupart du temps, mais comme nous allons avoir des animations à l'intérieur du bloc, il faudra plusieurs actualisations d'écran pour fonctionner correctement Alors, cliquons sur OK. Déplacez-vous vers Fine Explode quelque part ici. Et allons-y et ajoutons un bloc Explode pour définir le check hit juste après l'avoir réglé sur false OK, pour faire exploser le joueur, nous allons faire en sorte que sprite du joueur devienne complètement blanc et disparaisse lentement, tout en créant plusieurs explosions sur des parties aléatoires du abord, pour que le sprite soit complètement blanc, allons dans Looks, ajoutons un effet défini à bloquer au script Explode, et réglons la luminosité sur 100 Comme nous modifions les effets graphiques des sprites, nous devons nous assurer les réinitialiser au début du jeu Revenons très rapidement au script de démarrage du jeu, et ajoutons un bloc d'effets graphiques clair avant le bloc permanent. Très bien, revenez à Explode. Passons au contrôle et introduisons un bloc de répétition. Et faisons-le répéter 20 fois. Pour l'instant, nous allons simplement effacer le sprite. Passons donc à Looks, introduisons un effet de changement par bloc et modifions l'effet fantôme par cinq. OK. Et juste après le bloc de répétition, introduisons un bloc de masquage. La raison pour laquelle nous cachons le sprite est que même si l' effet fantôme sera atteint à 100 %, une fois le bloc de répétition terminé, rendant le sprite invisible pour nous, autres sprites peuvent toujours interagir avec lui le cachant, vous cacherez également aux autres sprites Mais cela signifie également que nous devons montrer à nouveau le sprite au début du jeu Ajoutons donc un bloc d'affichage en haut du script de démarrage du jeu. OK. Maintenant, allons-y et essayons-le pour nous assurer qu'il fonctionne correctement. Lorsqu'un astéroïde nous frappe, nous devenons blancs et nous disparaissons. Cela se produit un peu trop vite, alors passons au contrôle et ajoutons un bloc d'attente au bloc de répétition des scripts Check Hit après le bloc d'effet Ghost de modification. Attendons, disons, 0,05 seconde et essayons. OK, ça devrait fonctionner. Il ne nous reste plus qu'à ajouter quelques explosions. Pour ce faire, nous allons créer plusieurs explosions à des points aléatoires sur les sprites du joueur leur attribuer des tailles aléatoires, et choisir au hasard entre des feu et des particules de fumée C'est une grande partie du hasard. Pour commencer, passons aux variables et plaçons trois ou deux blocs d'explosions en haut du bloc de répétition. Tout d'abord, nous devons ajouter une description de l'explosion. Pour cela, nous pouvons choisir une position aléatoire entre un peu à gauche de l'exposition actuelle du joueur un peu plus à droite. Commençons par passer aux opérateurs et en plaçant un bloc choisi au hasard dans le premier bloc d'ajout de deux. Et en fait, nous pouvons également en mettre un dans les deux autres blocs Ajouter. D'accord, donc pour l'exposition, le premier chiffre sera inférieur à l'exposition du joueur Donc, introduisons un bloc de soustraction, et le deuxième nombre sera plus élevé Ajoutons donc un bloc d'addition. Maintenant, pour la première entrée de chaque bloc, passons au mouvement et introduisons un bloc d'exposition. Pour les deuxièmes entrées, essayons 20. Et la position Y sera à peu près la même. Passons aux opérateurs, introduisons un bloc de soustraction pour le premier nombre et un bloc d'addition pour le second Revenons ensuite au mouvement et introduisons deux blocs en position Y. Et essayons de soustraire et d'ajouter 30 cette fois. Ensuite, pour la taille, choisissons quelque chose de 50 à 100 Il ne reste plus qu' à ajouter le type de particule. Comme nous allons choisir au hasard entre deux types pour cela, commençons par accéder à Control et plaçant un bloc I thin dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal, et pour la première entrée, introduisons un bloc choisi au hasard. Vérifie si un nombre aléatoire 1-2 est égal à un. Cela donnera à chaque type 50 % de chances d'être choisi. Maintenant, pour chaque partie du bloc I Thins, passons aux variables et ajoutons un bloc Ajouter aux explosions. Pour le premier, on peut ajouter le mot feu et pour le second, on peut ajouter de la fumée. Maintenant, prenons le bloc I then et plaçons-le juste dessous du troisième bloc d'ajout de deux ici. C'est bon. Et une fois que le joueur aura été complètement détruit, nous finirons par afficher l'écran titre. Mais pour l'instant, nous allons simplement arrêter le jeu. Pour ce faire, nous pouvons aller dans Control et ajouter un bloc stop all juste après le bloc masquer. Mais avant d'arrêter le jeu, ajoutons une courte pause en ajoutant un bloc d'attente d'une seconde. Essayons-le maintenant. Nous obtenons quelques explosions aléatoires sur le sprite du joueur, puis le jeu s'arrête. Génial Mais ce serait encore mieux si nous faisions avancer le sprite vers le bas de la scène lorsqu'il explose Pour ce faire, passons au mouvement, et ajoutons une modification Y par bloc en haut du bloc de répétition des scripts check hit. Et modifions-le par moins cinq environ. En fait, déplaçons-le également un peu d'un côté à l'autre. Pour cela, nous pouvons également apporter une modification X Byblock, puis passer aux opérateurs, introduire un bloc aléatoire et choisir quelque chose entre moins quatre et quatre Essayons-le maintenant. Excellente. Ce sera vraiment cool lorsque nous ajouterons des effets sonores plus tard. Il est cependant un peu trop facile pour un astéroïde de toucher le joueur Il suffit de couper à peine une aile pour détruire le joueur. Ce serait peut-être un peu moins frustrant de définir une zone plus petite sur le sprite du joueur qu' un astéroïde peut toucher Nous verrons comment procéder dans la prochaine leçon. 46. Créer une Hitbox de joueur: Pour qu'il soit un peu plus difficile pour un astéroïde de toucher le joueur, nous pouvons créer ce que l'on appelle une boîte de frappe pour le joueur, nous pouvons utiliser pour définir les parties du sprite du joueur qui peuvent être touchées Pour ce faire, nous devons ajouter un autre costume au sprite du joueur Une fois le sprite du joueur choisi, passons à l'onglet costumes Tout d'abord, dupliquons l' un des costumes, et appelons-le hit box. Nous allons juste utiliser le costume du vaisseau spatial comme référence pour dessiner la boîte à succès. Cependant, nous voulons nous assurer que le costume de la boîte à succès se trouve en dessous tous les autres costumes afin qu'il n' interfère pas avec le changement de costume que nous mettrons en œuvre ultérieurement. Maintenant, prenons l'outil rectangulaire avec le grand costume que nous avons créé pour le sprite des astéroïdes Nous ne verrons jamais le costume Hip Box sur scène, la couleur n'a pas vraiment Le costume doit cependant avoir une couleur, sinon les astéroïdes ne pourront pas entrer en collision avec lui Pour la couleur de remplissage, je vais juste opter pour le gris. Et nous n'avons pas besoin d'un plan pour cela. Bien, dessinons maintenant un rectangle recouvrant approximativement le corps principal du vaisseau spatial Ensuite, nous pouvons saisir l'outil remodelé et le faire couvrir uniquement la partie du vaisseau spatial que nous voulons atteindre Cela devrait fonctionner. Maintenant, si un astéroïde touche le bout du nez, les ailes ou le propulseur, il ne détruira pas le joueur D'accord ? Maintenant que nous avons fini de dessiner la forme de la boîte à hanches, nous devons nous débarrasser de toutes les autres formes. Pour ce faire, nous pouvons saisir l'outil de sélection et tout sélectionner. Maintenez ensuite la touche Shift enfoncée et cliquez sur la forme de case à cocher pour la désélectionner Nous pouvons maintenant supprimer les autres formes C'est tout pour le costume Hip Box. Revenons donc au code du joueur Sprite. La première chose que nous voulons faire est de donner au joueur Sprite l' un de ses costumes habituels Donc, avant le blocage permanent dans le script de démarrage du jeu, passons à Looks et ajoutons un bloc de costume Switch, et je vais configurer le mien pour un autre. Passons maintenant au script Check Hit. Et ici, avant de vérifier si nous touchons un astéroïde, nous devons passer au costume de hit-box Ainsi, une collision ne sera détectée que si un astéroïde touche la forme de zone de frappe que nous venons de créer OK, donc apportons un costume Switch pour appuyer sur Box Block et mettons-le juste au-dessus du bloc d' astéroïdes en cas de contact. Enfin, après avoir vérifié l'absence de collision, nous voulons rétablir le costume d'origine. Ajoutons donc un autre bloc de costume Switch tout en bas du script. Et encore une fois, je vais passer au costume 1. Bien, si nous lançons le jeu maintenant, un astéroïde doit se rapprocher un peu plus du sprite du joueur pour le détruire Cependant, le problème est que le costume du joueur reste sur le costume Hipbox lorsqu'il explose C'est parce que tout le contenu du script Explode se produit avant que nous ne revenions au costume original Pour résoudre ce problème, nous devons également revenir au costume d'origine avant lancer le bloc Explode ici. Dupliquons donc le bloc de costumes Switch ici et plaçons celui-ci juste au-dessus du bloc d'explosion Et maintenant, tout devrait fonctionner correctement. Bien, cela étant réglé, nous allons maintenant ajouter d' autres effets de particules au jeu, cette fois en créant une flamme provenant du propulseur des sprites du joueur 47. Créer la flamme de Thruster: Pour commencer à créer une flamme propulsive pour le joueur, nous devons d'abord créer un nouveau sprite Descendons donc sur le bouton Choisir un sprite et cliquez sur Paint Et appelons-le flamme. Le costume du sprite sera très simple et ne comportera rien d'autre qu'un petit cercle jaune Prenons donc l'outil du cercle. Choisissez le jaune comme couleur de remplissage. Et rien pour les grandes lignes. Zoomons ensuite un peu, maintenons la touche Maj enfoncée et créons un cercle d'environ quatre blocs de diamètre. Et assurons-nous de le centrer. Et maintenant, nous pouvons passer dans l'onglet « code ». D'accord ? Donc, si nous montrons le sprite du joueur sur la scène, nous voulons que la flamme soit centrée verticalement sur le sprite du joueur, mais ici, près du propulseur Dans le code du sprite de flamme, commençons un script de jeu en allant aux événements et en remportant une victoire. J'ai reçu un bloc Nous voulons que la flamme suive en permanence le sprite du joueur Passons donc à Control et introduisons un blocage permanent. Passons ensuite au mouvement, ajoutons un bloc de position aléatoire au bloc permanent et configurons-le pour qu'il passe au joueur. Cela le placera cependant directement au centre du joueur, donc pour le déplacer un peu vers le bas, plaçons un bloc Y en dessous du bloc aller au joueur, et essayons de le changer par moins 30. Essayons-le maintenant. Je dirais que ça a l'air plutôt bien. si le joueur est détruit, Cependant, si le joueur est détruit, la flamme ne s'éteint pas encore. Mais nous allons régler ce problème dans un instant. OK, donc pour créer le reste de la flamme, nous allons utiliser des clones. Cependant, contrairement aux autres sprites que nous avons utilisés pour les clones jusqu'à présent, nous utiliserons également le sprite original Nous ne le cacherons donc pas au début du jeu Très bien, donc pour commencer à créer des clones du sprite de flamme, passons au contrôle, et ajoutons un clone de moi-même au bas du bloc Forever. Maintenant, introduisons un « when I start » en tant que bloc de clonage. Tout d'abord, nous allons augmenter le nombre de clones. Passons donc aux variables et introduisons un total de clones de modification d'un bloc. Ensuite, nous allons créer une animation pour le clone dans laquelle nous allons le déplacer vers le bas tout en réduisant sa taille et en modifiant sa couleur pour le rapprocher de plus en plus du rouge. Comme nous le verrons, étant donné que nous créons constamment des clones du sprite de flamme, cela nous donnera un effet de feu cool OK, donc pour commencer, passons au contrôle et introduisons un bloc de répétition, et répétons 20 fois. Maintenant, pour déplacer le clone vers le bas de la scène, passons au mouvement et ajoutons une modification Y par bloc au bloc de répétition. Nous allons un peu randomiser le mouvement. Passons donc aux opérateurs et introduisons un bloc choisi au hasard. Pour descendre, il faut changer Y par un nombre négatif. Passons donc à quelque chose comme moins trois à moins quatre, en veillant à mettre un point après l'un des nombres pour utiliser également des décimales OK. Et comme nous allons réduire la taille du clone au fur et à mesure qu'il se déplace vers le bas, nous voulons également que la taille du clone influe sur la distance à nous voulons également que la taille du clone influe sur la distance à laquelle il peut se déplacer vers le bas à chaque répétition. Plus il est petit, plus la distance lui permettra de se déplacer. Sinon, des espaces de plus en plus grands apparaîtront entre les clones. Donc, pour réduire le montant de la variation Y en fonction de la taille du clone, plaçons d'abord un bloc de multiplication dans un espace vide. Pour la première entrée, introduisons un bloc de division et utilisons le bloc de sélection aléatoire ici comme deuxième entrée du bloc de multiplication. Maintenant, pour le bloc de division, nous allons diviser la taille du sprite par 100 Passons donc à Looks et utilisons un bloc de taille comme première entrée. Et divisons-le par 100. Nous pouvons maintenant mettre tout cela dans le bloc Change Y. Maintenant, à mesure que le clone devient plus petit, il diminuera également de plus en plus petites quantités. Ensuite, nous allons faire en sorte que la couleur du clone se rapproche de plus en plus du rouge. Pour ce faire, ajoutons un bloc d'effet de changement de couleur au bloc de répétition. Et pour passer au rouge, il faut réduire l'effet de couleur. Passons donc à quelque chose de faible, comme moins deux. Enfin, nous allons réduire un peu la taille. Apportons donc un changement de taille par bloc. Et le changer par moins cinq devrait fonctionner. C'est bon. Et une fois que tout cela sera fait, nous supprimerons le clone. Passons donc d'abord aux variables, plaçons un bloc total de clonage de modification après le bloc de répétition et modifions-le par moins un. Passons ensuite à Control et introduisons une suppression de ce bloc de clonage. OK, maintenant, juste pour vous montrer comment tout cela fonctionne, je vais ajouter un bloc de poids et le placer après le bloc Create Clone dans le script de démarrage du jeu W I receive. Une attente d'une demi-seconde devrait être suffisante pour n'afficher qu' un seul clone à la fois. Maintenant, si je lance le jeu, nous pouvons voir un clone de flamme descendre sur la scène, devenir de plus en plus petit et se rapprocher du rouge. Si je réduis le temps d'attente, nous pouvons voir plus de clones à la fois Et si je retire complètement le bloc de poids, les clones apparaissent suffisamment rapprochés pour ressembler à une flamme Il y a cependant quelques améliorations que nous pouvons apporter. Tout d'abord, la taille des clones cesse de diminuer une fois qu'ils atteignent un certain point près du bas De plus, si nous déplaçons le sprite du joueur vers le bas de la scène, les clones sont poussés vers le haut collent au bord inférieur de la Ces deux problèmes peuvent en fait être résolus en modifiant légèrement le costume du sprite OK, alors arrêtons le jeu et passons à l'onglet costumes. Comme nous le savons déjà, la taille du costume d'un sprite influe à la fois sur la distance que le sprite peut parcourir par rapport au bord de la scène et sur sa taille Nous avons eu un problème similaire avec le sprite astéroïde, que nous avons résolu en créant un grand costume que nous avons porté avant de déplacer le Nous pourrions faire de même pour le sprite flamboyant, mais comme le sprite n'a qu'un seul costume, une solution plus simple serait d' augmenter la taille du costume actuel Et pour cela, il n'est même pas nécessaire de toucher le cercle. Au lieu de cela, nous pouvons créer un grand rectangle invisible autour du cercle. Prenons donc l'outil rectangle, ne choisissons rien pour la couleur du champ et pour la couleur du contour. Ensuite, faisons un zoom arrière sur le canevas. Et créons un rectangle transparent sur toute la zone de scène du canevas. Très bien, désélectionnons le rectangle pour ne pas le déplacer accidentellement Et si nous lançons le jeu maintenant, la flamme sera plus belle et elle ne sera pas poussée vers le haut en bas de la scène. Mais ça a toujours l'air un peu trop lisse. Une dernière façon de l'améliorer consiste donc à agiter légèrement les clones d'un côté à l'autre Pour ce faire, revenons dans l'onglet code et dans le bloc de répétition de When I start as a clone. Passons au mouvement et apportons une modification X par bloc. Et nous allons le modifier de petites quantités aléatoires. Passons donc aux opérateurs et introduisons un bloc choisi au hasard. Quelque chose comme entre 0,2 et 0,2 devrait fonctionner. Essayons-le. Allons-y. Ça a l' air bien mieux. Il ne reste plus qu'à faire en sorte que la flamme s'éteigne lorsque le joueur meurt. Pour ce faire, lorsque le joueur est touché par un astéroïde, nous diffusons un message que le sprite de flamme reçoit nous diffusons un message que le sprite de flamme Passons d'abord au code du sprite du joueur, et dans Definition check hit after setting is dead to true, passons aux événements et introduisons un bloc de diffusion. Et diffusons un nouveau message, que nous pouvons appeler Player Dide. Maintenant, revenons dans le sprite de la flamme, apportons-le quand je recevrai un joueur mort Le message sera reçu par tous les clones, ainsi que par le sprite de flamme lui-même Car la flamme devra la cacher. Passons donc à Looks et ajoutons un bloc de masquage. Cela signifie également que nous devons réafficher le sprite au début Ajoutons donc un bloc d'affichage en haut du script Start Game. Nous voulons également arrêter les autres scripts du Sprite afin que le blocage permanent du script Start game ne continue pas à script Start game s'exécuter et à créer des clones Passons donc à Control, ajoutons un bloc d'arrêt au moment où j'ai reçu le code du joueur et configurons-le pour arrêter les autres scripts dans Sprite OK. Et lorsqu'un clone reçoit un message indiquant que le joueur est mort, nous voulons le supprimer. Supprimons donc ce bloc de clonage. Le sprite de flamme d'origine ignorera simplement le bloc. Mais nous voulons également diminuer le nombre de clones. Donc, avant de supprimer le clone, passons aux variables, introduisons un bloc total de clonage de modification et changez-le par moins un. Le problème, cependant, est que le sprite de flamme lui-même réduira également le nombre de clones d'une unité, même s'il ne s'agit pas d'un clone Le compteur de clones ne sera donc plus précis. Pour éviter cela, nous devons d'abord vérifier si le sprite actuel est réellement un clone avant de diminuer le nombre de clones. Malheureusement, scratch ne permet pas de vérifier facilement si un sprite est un clone, mais nous pouvons le faire en utilisant une variable locale Créons-en un. Nous pouvons l'appeler « I clone » et le créer uniquement pour ce sprite Et cachons la variable. Donc, par défaut, nous allons configurer I clone sur Foss, et nous n'avons besoin de le faire qu'une seule fois, pas à chaque fois que nous commençons une nouvelle partie Donc, au lieu de le faire dans le script de démarrage du jeu, passons aux événements et obtenons un bloc sur lequel vous avez cliqué sur le drapeau vert Revenons maintenant aux variables, ajoutons un bloc set two au script Green Flag, et configurons I clone to Foss Ensuite, quand je commencerai en tant que clone, mettons un autre ensemble à bloquer avant le bloc de répétition, et cette fois, clone sur true. Enfin, quand je reçois un joueur mort, passons à Control, un bloc mince et enroulez-le à la fois sur le bloc total de modification du clone et sur la suppression de ce bloc de clonage. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Revenons ensuite aux variables et vérifions si le clone est égal à vrai. À présent, nous ne diminuerons le nombre de clones et supprimerons le clone que si le sprite est réellement un clone Bien, maintenant lançons le jeu. Et cette fois, lorsqu' un astéroïde nous frappe, la flamme s'éteint. Et ça revient si on recommence. Je viens de me rendre compte, cependant, que notre compteur de clones n'est toujours pas totalement précis car nous ne comptons actuellement pas les clones laser Alors pendant que nous y sommes, allons-y et corrigeons ce problème. Pour ce faire, examinons le code du sprite laser et définissons un total de clones de modification d'un bloc en haut de l'un des scripts lorsque je commence en tant que script de clonage Et nous voulons le diminuer avant chacun des blocs de suppression de ce clone. Mettons un autre bloc total du clone modifié dans un espace vide, et changeons-le par moins un. Nous pouvons maintenant dupliquer le bloc et le placer avant de supprimer ce bloc de clone ici, puis placer l'autre avant supprimer ce bloc de clone ici. Et maintenant, le compteur de clones devrait être parfaitement précis. Maintenant que le joueur a l'air plutôt beau, nous allons maintenant travailler à augmenter ses chances de survie ou de bribes. Pour cela, nous allons ajouter des micros à la scène qui les aideront à détruire les astéroïdes plus facilement 48. Dessiner les costumes de pickup: Afin de créer des micros utilisables par le joueur, nous devons d'abord créer un autre sprite Choisissons donc un sprite, cliquons sur Paint, et appelons-le pick-up Très bien, nous allons donc créer trois micros différents L'une d'elles sera une mise sous tension laser, qui permettra temporairement au joueur tirer des lasers dans trois directions différentes. Une autre sera une bombe qui détruira tous les astéroïdes à une certaine distance Enfin, nous allons créer un bouclier qui rendra temporairement le joueur invincible et permettra de détruire des astéroïdes simplement en les touchant OK, cela signifie que nous aurons besoin de trois costumes différents. Pour le premier, appelons-le laser. Chaque costume sera composé d' un anneau blanc brillant entourant un objet indiquant le type de pick-up Commençons donc par créer la bague. Tout d'abord, prenons l'outil cercle, désactivons la couleur de remplissage et donnons-lui un contour blanc épais. Une largeur de neuf ou dix devrait être bonne. Maintenant, zoomons un peu. Maintenez la touche Shift enfoncée et tracez un anneau d'environ 12 blocs de diamètre. Et assurons-nous qu' il soit centré. C'est bon. Et juste pour que nous puissions tout voir mieux, prenons l'outil rectangle, remplissons-le en noir, désactivons le contour. Et tracez un grand rectangle sur le canevas. Et envoyons-le sous le ring. Ensuite, nous allons ajouter un effet de lueur à la bague. Pour ce faire, saisissons d'abord l'outil de sélection, puis maintenons la touche Alt ou Option enfoncée et cliquons sur l' anneau pour le dupliquer. Pour celui-ci, désactivons le plan. Et pour la couleur de remplissage, donnons-lui un dégradé radial. Nous voulons commencer par le blanc au centre et devenir de plus en plus transparents. Donc, tout d'abord, nous pouvons cliquer sur ce bouton pour changer les couleurs, en mettant le blanc au centre. Choisissons maintenant la deuxième couleur et désactivons-la. , maintenant maintenons la touche Alt ou Option enfoncée et agrandissons légèrement le cercle jusqu'à ce que nous ayons un joli halo autour de l' extérieur de l'anneau Il ne nous reste plus qu'à découper la partie du cercle qui se trouve à l'intérieur de l'anneau. Pour ce faire, le cercle étant toujours sélectionné, saisissons l'outil gomme et augmentons la largeur, environ 90 Maintenant, nous pouvons cliquer au centre du cercle. Et avec cela, notre anneau lumineux est terminé, nous pouvons donc nous débarrasser du rectangle noir Et comme nous utiliserons la même bague pour les deux autres costumes, allons-y et dupliquons le costume deux fois. On peut appeler le second un bouclier et le troisième une bombe. D'accord ? De retour dans le costume laser au centre de l'anneau, nous ajouterons trois lasers pointant dans des directions différentes. Et nous pouvons utiliser la même forme laser que celle que nous utilisons pour le sprite laser Passons donc aux costumes du sprite laser. Nous pouvons sélectionner la forme, la copier. Retournez ensuite au costume laser Pickup Sprites et collez-le Faisons pivoter la forme pour qu'elle soit orientée vers le haut ou vers le bas. Si nous maintenons la touche Shift enfoncée pendant la rotation, nous pouvons effectuer une rotation par incréments de 45 degrés Et réduisons-le un peu tout en maintenant la touche Alt ou Option enfoncée pour le garder centré. Je vais aussi en préparer un léger dîner. D'accord ? Maintenant, maintenons à nouveau la touche Alt ou Option enfoncée et faisons glisser la forme vers la droite pour créer une copie ici. Faisons-le ensuite pivoter d'environ 15 degrés dans le sens des aiguilles d'une montre. Maintenant, maintenons l'option Modifier une fois de plus enfoncée et cliquons sur celle-ci pour la dupliquer. Retournons-le ensuite horizontalement et déplaçons-le vers la gauche tout en maintenant la touche Shift enfoncée. Et c'est réglé pour le capteur laser. Je travaillerai ensuite sur le costume du bouclier. Pour cela, utilisons l'outil rectangle, choisissons un rouge uni pour la couleur de remplissage, un doré pour la couleur du contour. Réglez la largeur à environ quatre, et créons un carré à l'intérieur de l'anneau. Et allons-y et centrons-le. D'accord ? Maintenant, à l'aide de l'outil de remodelage, refaçonnons-le pour qu'il ressemble davantage à un bouclier Je vais ajouter un nœud au centre du bord supérieur, le faire pointer et le déplacer légèrement vers le haut. Ensuite, j'ajouterai un nœud entre les deux nœuds ici et je le retirerai un peu vers le bas, et je ferai de même de l'autre côté. Ensuite, je vais ajouter un nœud au centre du bord inférieur, le faire pointer et le tirer vers le bas. Ensuite, je vais déplacer celui-ci un peu vers le haut et vers l'intérieur, ainsi que celui-ci Et je vais ajouter quelques nœuds supplémentaires pour pouvoir courber un peu les bords. OK, maintenant, à l'aide de l'outil cercle, je vais régler la couleur de remplissage sur la couleur dorée du bouclier, désactiver le contour créer un petit cercle sur le bouclier et le centrer. Bien, il ne nous reste plus qu' à créer le costume de bombe. Ce sera similaire au costume que nous avons créé pour le copain sprite et qui claque les taupes. Pour commencer à utiliser l'outil cercle, choisissons un jaune pour la couleur de remplissage, un orange pour la couleur du contour. Une largeur de quatre pour le contour, et dessinons un cercle à l'intérieur de l'anneau. Maintenant, à l'aide de l'outil de remodelage, nous pouvons rapprocher trois nœuds, retirer le nœud central et recommencer Bien, maintenant je veux que tous les nœuds soient pointés. Pour le faire facilement, je peux extraire la forme, sélectionner tous les nœuds et cliquer sur le bouton pointu. Maintenant, je vais le remettre au centre de l'anneau et réajuster un peu les nœuds OK, on en a fini avec les costumes de pick-up sprite. Nous pouvons maintenant passer l'onglet Code et dans la leçon suivante, nous allons tout mettre en œuvre. 49. Faire apparaître les micros: Pour le ramassage, les sprites n' afficheront que des clones du sprite sur la Pour commencer, passons aux événements et introduisons un bloc «   Quand je reçois », en réglant sur « Quand je reçois le début du jeu ». Et cachons les sprites en allant à Los et en apportant un bloc de cachettes Ensuite, tout au long du jeu, nous déciderons au hasard de créer ou non un pick-up pour chacun des trois types différents. Alors d'abord, passons au contrôle et introduisons un blocage permanent. Ensuite, à l'intérieur du bloc Forever, introduisons trois blocs IN distincts pour chacun des trois types de pick-up. Et pour chaque condition, passons aux opérateurs et introduisons des blocs égaux. Ajoutons ensuite un bloc choisi au hasard à chacun d'eux. Nous ajusterons tous les nombres aléatoires un peu plus tard afin que les micros ne soient pas créés trop souvent et nous utiliserons également des valeurs différentes pour chaque type Mais à des fins de test , utilisons simplement des chiffres de 1 à 100 pour chacun d'entre eux. De plus, le nombre que nous utilisons comme deuxième entrée des blocs égaux n'a pas vraiment d'importance nombre que nous utilisons comme deuxième entrée des tant qu'il se situe entre les deux valeurs, mais je vais juste mettre le mien à un. C'est bon. Maintenant, pour créer les micros, étant donné que nous utiliserons essentiellement le même code pour chacun d'eux, nous allons placer le code dans un bloc personnalisé. Passons donc à Mblocks et créons-en un nouveau. Tapons d'abord create, puis ajoutons une entrée de texte ou de nombre appelée type. Et enfin, ajoutons une étiquette de retrait. Cliquez ensuite sur OK. Nous pouvons déplacer le bloc de collecte de caisses défini ici et placer un bloc de collecte de caisses à l'intérieur de chacun des dix blocs. Pour le premier, nous allons créer un capteur laser. Pour le second, nous allons créer un bouclier. Enfin, nous allons créer un pick-up. Et nous voulons nous assurer que les mots que nous utilisons dans ces blocs correspondent aux noms des costumes des pick-up sprites OK, dans le script de création d'un pick-up, nous allons d'abord déplacer le sprite vers le haut de la scène et lui donner une exposition aléatoire Donc, pour commencer, passons au mouvement et introduisons un bloc Go to XY. Pour la position Y, nous ne voulons pas commencer tout à fait en haut de l'étape, qui se trouve à la position 180. Quelque chose comme 175 devrait fonctionner. Pour la position, passons aux opérateurs et introduisons un bloc choisi au hasard. Encore une fois, nous ne voulons pas placer le pick-up juste contre les bords. Alors allons-y avec quelque chose entre moins 22220. Ensuite, nous voulons définir le costume du sprite à la valeur du type saisi Passons donc à Looks, introduisons un bloc de costume Switch et utilisons un bloc de type comme entrée. Enfin, nous allons créer un clone du sprite. Passons donc à Control et introduisons un bloc de création d'un clone de moi-même. Bon, maintenant nous devons dire aux clones comment se comporter. Alors, ajoutons un « when I start » en tant que bloc de clonage. Tout d'abord, nous voulons montrer le clone. Passons donc à Looks et ajoutons un bloc d'affichage. Nous voulons également que le clone apparaisse au-dessus de tout le reste. Alors, ajoutons un bloc « go to front later ». Et bien sûr, nous voulons augmenter le nombre de clones. Passons donc aux variables et introduisons un total de clones de modification d'un bloc. Et pour l'instant, nous allons simplement déplacer le pick-up vers le bas de la scène. Pour ce faire, passons au contrôle et introduisons un blocage permanent. Passons ensuite au mouvement et apportons une modification Y par bloc. Et modifions-le par moins cinq environ. Essayons-le maintenant. Bien, nos trois types de pick-up apparaissent aléatoirement en haut de la scène et descendent vers le bas Il ne nous reste plus qu'à supprimer les clones chaque fois qu'ils atteignent le bas de la scène ou qu'ils touchent le joueur Commençons par toucher le joueur. Pour cela, allons dans Control et plaçons un bloc ITN dans un espace vide Maintenant, pour ce qui est de la condition, nous voulons vérifier si le clone nous voulons vérifier si le clone touche le sprite du joueur Cependant, nous voulons également nous assurer que le joueur n'est pas mort actuellement. Sinon, le joueur pourra récupérer les micros même s'ils explosent, ce qui serait étrange OK, donc pour vérifier ces deux conditions, allons d'abord voir les opérateurs et introduire un bloc and. Ensuite, nous pouvons passer à la détection et utiliser un bloc tactile comme l'une des conditions. Et nous voulons vérifier si le fait de toucher le joueur pour l'autre condition, nous voulons vérifier si la variable « sprites du joueur est mort » est définie sur false Pour ce faire, passons d'abord aux opérateurs et introduisons un bloc égal. Maintenant, si nous revenons à la détection, nous pouvons introduire l'un de ces blocs qui indique actuellement le numéro de scène en toile de fond. Si nous changeons de niveau en joueur, nous pouvons désormais choisir la variable «   joueur mort ». Et vérifions-le s' il est égal à faux. C'est bon. Et pour l'instant, nous allons simplement supprimer le clone. Passons d'abord aux variables, introduisons un bloc total de clonage de modification et changez-le par moins un. Passons ensuite au contrôle et supprimons ce bloc de clonage. Maintenant, pour vérifier si le clone a atteint le bas de l'étape, nous allons faire à peu près la même chose. Donc, d'abord, dupliquons le bloc ITN et plaçons celui-ci au bas de l'autre, et nous pouvons nous débarrasser de l'ensemble du bloc et. Pour ce qui est de l'état de celui-ci, passons aux opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite au mouvement et utilisons un bloc de position Y comme première entrée. Et nous allons vérifier si la position Y est inférieure à un nombre situé près du bas de la scène. Quelque chose comme le négatif 175 devrait être une bonne chose. Nous pouvons maintenant saisir les deux blocs IN et les placer dans le bloc avant de changer la position Y. D'accord ? Et si nous lançons le jeu maintenant, le pick-up devrait disparaître soit lorsqu'il atteint le bas, soit lorsqu'il touche le joueur. Au cours des prochaines leçons, nous allons faire en sorte que certaines choses se produisent réellement lorsque le joueur récupère un pick-up. Mais pour l'instant, nous pouvons améliorer un peu l'apparence des micros en leur donnant une animation palpitante fur et à mesure qu'ils descendent de la scène Nous le ferons séparément lorsque je commencerai en tant que script de clonage. Passons donc à Control et ajoutons-en un autre lorsque je commencerai en tant que bloc de clonage. Et comme l'animation se produira en continu, introduisons un bloc permanent. Très bien, donc d'abord, en quelques répétitions, nous allons réduire un peu la taille du clone Ensuite, après le même nombre de répétitions, nous augmenterons sa taille. Allons-y et ajoutons deux blocs de répétition au bloc permanent, et nous allons répéter cinq fois pour chacun d'eux. Passons ensuite à Looks et ajoutons un bloc de taille fixe de deux à chaque bloc de répétition. Et nous voulons qu'il y ait un court délai entre chaque répétition. Revenons donc au contrôle et ajoutons un bloc de poids au bas de chaque bloc de répétition, et nous ferons en sorte que chaque délai soit vraiment court, environ 0,05 seconde. Mettons également un bloc de poids après le deuxième bloc de répétition, encore une fois, en attendant 0,05 seconde. Cela ajoutera une courte pause une fois que le clone aura retrouvé sa taille normale avant de le réduire à nouveau. Donc, pour le premier bloc de répétition, nous allons réduire légèrement la taille des clones. Pour ce faire, il suffit de soustraire un petit nombre de la taille à chaque fois, mais pour le rendre plus lisse, nous allons plutôt diviser la taille par un petit Passons donc aux opérateurs, et ajoutons un bloc de division au premier bloc de taille définie. Pour le deuxième bloc de répétition, nous allons faire le contraire en multipliant la taille par le même petit nombre Ajoutons donc un bloc de multiplication au deuxième bloc de taille définie. OK, maintenant pour la première saisie de chacune d'entre elles, passons à Looks et introduisons un bloc de taille. Pour les deuxièmes entrées, nous voulons utiliser le même numéro. Il doit être plus grand qu'un, mais sinon assez petit. Essayons la version 1.05. Si nous lançons le jeu maintenant, les micros ont un bel effet de pulsation Bien, nous allons maintenant travailler à faire les micros fassent réellement quelque chose lorsque le joueur les touche, et nous allons commencer par l'augmentation de la puissance du laser dans la prochaine leçon 50. Créer le Powerup laser: Lorsque le joueur récupère un pick-up, nous activons ce type de pick-up en particulier, mais nous ne voulons le faire que temporairement. Cela signifie que nous devrons suivre la durée pendant laquelle un pick-up particulier est actif, ce que nous pouvons faire à l'aide de variables globales. C'est bon. Et pour l'instant, nous allons juste travailler sur la puissance du laser. Passons donc aux variables et créons-en une nouvelle pour cela. Nous pouvons appeler cela le temps de mise sous tension du laser. Et nous voulons que ce soit le cas pour tous les sprites, car le sprite de capture et le sprite laser devront y accéder Dans le premier cas, lorsque je commence en tant que script de clonage du sprite de capture, après avoir détecté que le clone touche le lecteur et avant de le supprimer, nous allons vérifier s'il s' agit d'un micro laser Si c'est le cas, nous définirons la valeur de la variable de temps de mise en marche du laser. Très bien, donc pour vérifier le type de pick-up, commençons par contrôler et placer un bloc mince dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Pour vérifier le type de ramassage, nous pouvons utiliser le nom du costume du clone. Passons donc à Looks. Utilisez un bloc costume comme première entrée du bloc égal. Et voyons si le nom du costume est égal à laser. Si c'est le cas, nous réglerons la variable de temps de mise en marche du laser. Passons donc aux variables et introduisons un ensemble à bloquer. Et réglons le temps de mise sous tension du laser. Maintenant, pour le moment, nous pouvons utiliser des cadres. Scratch fonctionne à environ 30 images par seconde, plus ou moins. Cela signifie que chaque seconde, scratch rafraîchit l' écran environ 30 fois. Donc, si nous voulions activer l'alimentation du laser pendant 10 secondes, par exemple, nous pouvons régler la variable sur dix fois 30, soit 300. OK, maintenant nous pouvons prendre le bloc ITN et placer juste en haut du bloc I touch platter. Passons maintenant au code du sprite laser. Dans le script de démarrage du jeu, nous voulons vérifier en permanence si temps de puissance du laser a une valeur supérieure à zéro, et si c'est le cas, nous allons réduire cette valeur d'un. Mais d'abord, pour nous assurer que le démarrage du laser ne soit pas activé, ajoutons un bloc de deux points au script de démarrage du jeu, et réglons le temps de mise sous tension du laser à zéro. Très bien maintenant, passons au contrôle et introduisons un blocage permanent. Ajoutons-y ensuite un bloc I thin. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le temps de mise sous tension du laser est supérieur à zéro. C'est bon. Maintenant, dans le bloc I then, introduisons une modification par bloc et changeons le temps de mise sous tension du laser par moins un. Cela garantira simplement que l'alimentation laser ne restera active que jusqu'à la fin du temps imparti pour l'utiliser et laisser le joueur tirer dans trois directions différentes Nous le ferons dans la première lorsque je commencerai en tant que script de clonage. Ici, avant de répéter jusqu'au blocage du bord, nous allons vérifier à nouveau si temps de démarrage du laser est supérieur à zéro, et si c'est le cas, nous allons créer deux clones laser supplémentaires, l'un orienté à 15 degrés vers la gauche et l'autre à 15 degrés vers la droite Donc, d'abord, nous pouvons dupliquer le temps d'alimentation du laser I est supérieur à zéro bloc ici, et mettons-le dans un espace vide pour moment et nous pouvons nous débarrasser de la modification par bloc. Ensuite, à l'intérieur du bloc if then, nous allons d'abord faire pivoter le clone actuel de 15 degrés dans le sens antihoraire , puis en créer un clone Passons donc au mouvement et faisons un tour dans le sens antihoraire d'un bloc de 15 degrés. Passons ensuite au contrôle et faisons appel à un clone critique de moi-même. Ensuite, nous allons placer le clone face 15 degrés vers la droite et créer un autre clone. Pour ce faire, revenons au mouvement et introduisons un bloc rotatif dans le sens des aiguilles d'une 15 degrés, nous allons le remettre face visible. Nous devrons donc le faire pivoter de 30 degrés au total. Maintenant, reprenons le contrôle et ajoutons un autre clone critique de moi-même. Enfin, nous devons remettre le clone d'origine face visible. Pour ce faire, nous pouvons soit le faire pivoter nouveau de 15 degrés dans le sens antihoraire, soit passer en mouvement, introduire un bloc de points et de directions et faire pointer dans la direction zéro, qui est OK, maintenant mettons tout cela dans le premier lorsque je démarre tant que script de clonage juste au-dessus du bloc repeat until. Et essayons-le. À l'heure actuelle, les lasers ne font que tourner vers le haut. Mais si nous collectons un capteur laser, rien ne semble se passer. Cependant, si nous examinons le compteur de clones, nous atteignons 300 clones à chaque tournage Ce qui se passe ici, c'est que les deux nouveaux clones que nous créons s'exécutent également lorsque je démarre en tant que script de clonage, créant ainsi deux autres clones d'eux-mêmes. Le nombre de clones augmente donc de façon exponentielle. Et le point zéro ici est le point et la direction où tous les clones sont placés directement face vers le haut, sorte qu'ils apparaissent généralement uns au-dessus des autres sur la scène Pour résoudre ce problème, nous voulons exécuter ces blocs uniquement si le clone actuel est un clone orienté vers le haut. Cela signifie que nous devons ajouter à la condition des blocs ITN, vérifiant également si la direction du clone est nulle Très bien, passons donc aux opérateurs et introduisons un bloc et. Et utilisons le fait que le temps de mise sous tension du laser soit supérieur à zéro bloc comme l'une des conditions. Pour l'autre condition, introduisons un bloc égal. Passons ensuite au mouvement et vérifions si la direction est égale à zéro. Nous pouvons maintenant utiliser ceci et bloquer comme condition pour le bloc if then. Et si nous lançons le jeu maintenant et que nous récupérons le capteur laser, nous avons trois lasers qui sortent dans trois directions différentes à la fois, nous avons trois lasers qui sortent dans trois directions différentes à la fois, et le compteur de clones ne deviendra pas aussi fou qu'il l'était. Nous pouvons également voir que la variable de temps de mise en marche du laser diminue d' une unité à chaque image. Et si nous ne collectons plus de bonus laser, une fois que la valeur atteint zéro, le laser revient à la normale. Génial Une autre chose à noter est que , comme nous supprimons les clones lorsqu'ils touchent un bord de la scène, ils sont également supprimés lorsqu' ils touchent les bords gauche et droit Si nous le voulions vraiment, nous pourrions également appliquer un habillage d'écran aux lasers, mais je pense que cela semblerait plus confus que tout Je vais donc laisser le mien tel quel. Bien, nous pouvons maintenant accéder aux variables et masquer la variable de temps de mise en marche du laser Et dans la prochaine leçon, nous travaillerons sur le bouclier. 51. Créer le bouclier: Lorsque le joueur récupère un bouclier, nous le rendons temporairement invincible, tout en lui permettant de détruire tous les astéroïdes avec lesquels il entre en contact Et comme pour l'augmentation de la puissance du laser, nous allons créer une variable temporelle globale pour suivre la durée pendant laquelle le bouclier est resté actif. Pour commencer, créons une nouvelle variable. Nous pouvons l'appeler Shield Time et l'appliquer à tous les sprites. Passons ensuite au code du sprite de ramassage. Et comme nous l'avons fait pour le capteur laser, nous vérifierons le capteur du bouclier et réglerons la variable de temps du bouclier. Donc, d'abord, nous pouvons dupliquer le nom du costume si le nom du costume est égal au bloc laser et le placer au bloc laser et le placer dans un espace vide pour le moment, et nous pouvons nous débarrasser du total des clones supplémentaires et supprimer les blocs de clonage. Pour celui-ci, voyons si le nom du costume est égal au bouclier. Et si c'est le cas, nous allons définir la variable Shield Time. Je vais laisser le mien sur 300 images, soit environ 10 secondes. Maintenant, mettons le bloc I then juste dessous du nom du costume I qui est égal à Laser one. Passons ensuite au code du sprite du joueur. Dans le script check HIT, avant de faire tout cela, nous allons d'abord vérifier si la variable shield time est supérieure à zéro, et si c'est le cas, nous allons simplement arrêter le script et ne pas exécuter ces blocs. Passons donc d'abord au contrôle et plaçons un bloc IN dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le temps de protection est supérieur à zéro. Si c'est le cas, nous arrêterons le script en cours. Passons donc à Control, introduisons un bloc d'arrêt et arrêtons ce script. Nous pouvons maintenant placer le bloc ITN en haut du kit de contrôle défini. OK. La prochaine chose que nous allons faire est de créer le véritable bouclier. Pour cela, nous allons placer un anneau lumineux palpitant autour du sprite du joueur, comme nous le faisons avec les Et en fait, nous pouvons commencer avec le même anneau lumineux que celui que nous utilisons pour les costumes de pick-up sprite Sélectionnons donc le sprite de ramassage et accédons à l'onglet costumes Maintenant, à l'aide de l'outil de sélection, cliquons et glissons à partir d'ici, sélectionnons à la fois l'objet luminescent et l' anneau, et copions-les. Créons maintenant un nouveau sprite pour le bouclier en cliquant le bouton Choisir un sprite et en cliquant sur Paint, et appelons-le Pour le costume, commençons par coller les objets que nous venons de copier depuis le pick-up sprite Nous voulons cependant qu'il soit assez grand pour qu'il entoure complètement le sprite du joueur, même si la taille de l'anneau diminue pendant l'animation palpitante les objets sélectionnés, maintenons la touche Alt ou Option enfoncée et redimensionnons-les jusqu'à ce qu'ils atteignent environ le double de leur taille actuelle. Cela devrait fonctionner. OK, passons maintenant à l'onglet « code ». Contrairement à la plupart des autres sprites du jeu, nous allons afficher le véritable sprite du bouclier au lieu d'utiliser des clones Et comme il est possible que le joueur arrête jeu alors que le bouclier est actif et que le sprite est visible, clique à nouveau sur le drapeau vert La première chose que nous allons faire est de nous assurer que le sprite est masqué lorsque vous cliquez sur le drapeau vert Allons donc aux événements et apportons un drapeau vert vent sur un bloc cliqué. Passons ensuite à Looks et ajoutons un bloc de masquage. Nous voulons également placer le sprite sur la couche avant. Passons donc à un bloc de couche avant. Maintenant, chaque fois que le jeu démarre, nous voulons nous assurer de remettre à zéro la variable Shield Time. Revenons donc d'abord aux événements, introduisons un bloc lorsque je reçois et que je reçois le jeu Start. Passons ensuite aux variables, ajoutons un ensemble à bloquer au script et réglons le temps de protection à zéro. Ensuite, nous vérifierons en permanence si temps de protection est supérieur à zéro, et si c'est le cas, nous montrerons le bouclier et continuerons à le déplacer vers la même position que le sprite du joueur jusqu'à ce que le temps de bouclier soit écoulé Alors pour commencer, passons à Control et introduisons un blocage permanent. Ajoutez ensuite un I Thin Block. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le temps de protection est supérieur à zéro. Si c'est le cas, nous montrerons le sprite. Passons donc à Looks et ajoutons un bloc d'affichage. De plus, étant donné que l'animation pulsée modifiera la taille du sprite, redéfinissons la taille en introduisant une taille définie à Maintenant, revenons au contrôle et ajoutons une répétition jusqu'à bloc après le bloc de taille défini. Nous voulons répéter jusqu'à ce que le temps de protection ne soit plus supérieur à zéro. Pour ce faire, nous pouvons nous adresser aux opérateurs et leur apporter un bloc à nœuds. Ensuite, nous pouvons dupliquer le bloc pendant lequel le temps de protection est supérieur à zéro et l'ajouter au bloc de nœuds. L'une des choses que nous voulons faire pendant la répétition jusqu'au blocage est déplacer le sprite du bouclier vers la même position que le sprite du joueur Passons donc au mouvement, introduisons un bloc permettant de passer à une position aléatoire et configurons-le pour qu'il passe au joueur. Et bien entendu, la variable du temps de protection ne sera jamais supérieure à zéro si nous ne la diminuons pas. Passons donc aux variables, ajoutons une modification par bloc à la répétition jusqu'au bloc et changeons le temps de protection par moins un. Et pour l'instant, après la répétition jusqu'à la fin du bloc, nous allons simplement masquer à nouveau le sprite. Passons donc à Looks et ajoutons un bloc de masquage juste après le bloc repeat until, en nous assurant qu'il se trouve toujours dans le bloc if then. OK, si nous lançons le jeu maintenant et que nous récupérons un bouclier, le sprite du bouclier apparaît autour du sprite du joueur et nous sommes désormais Et si nous ne collectons plus aucun objet de bouclier, bout de 10 secondes environ bouclier disparaît au Il ne nous reste plus qu'à ajouter l'animation pulsée et faire en sorte que le bouclier détruise les astéroïdes Pour l'animation, nous pouvons utiliser essentiellement le même code que celui que nous utilisons pour le pick-up sprite Passons donc au code Sprite de collecte. Le code d'animation pulsatoire est l'intégralité du bloc éternel présent dans le second lorsque je commence en tant que script de clonage Copions donc le bloc permanent dans le Sprite du bouclier. Pour en revenir au code Shield Sprite, nous devons placer le nouveau bloc Forever dans un script de démarrage de jeu distinct Passons donc aux événements et ajoutons un bloc « quand je reçois », attachons-le au bloc permanent et définissons-le sur « Quand je recevrai et ajoutons un bloc « quand je reçois », attachons-le au bloc permanent et définissons-le Start Game ». Cependant, nous ne voulons faire l'animation que si le bouclier est réellement actif. Passons donc au contrôle, et enroulons un bloc ITN autour de tout ce qui se trouve à l'intérieur du bloc Forever. Pour cette condition, nous voulons vérifier si le temps de protection est supérieur à zéro, afin de pouvoir dupliquer l'un des blocs des autres scripts. Je vais également supprimer le dernier bloc d'attente ici afin qu'il n'y ait aucun délai entre les animations de croissance et de réduction. Maintenant, si nous redémarrons le jeu et que nous récupérons à nouveau un bouclier, il y aura une animation palpitante. D'accord ? Faisons en sorte que le joueur puisse utiliser le bouclier pour détruire les astéroïdes Pour ce faire, examinons le code du sprite de l'astéroïde. Et lorsque je commence par un script de clonage, nous sommes en train de vérifier si l'astéroïde touche un laser, et si c'est le cas, nous exécutons le bloc d'impact de l'astéroïde Nous voulons également ajouter une vérification ici pour savoir si l'astéroïde touche ou non le bouclier Pour ce faire, passons aux opérateurs et introduisons un bloc or dans un espace vide. Nous pouvons déplacer le bloc laser tactile vers l'une des entrées du bloc ou du bloc, puis dupliquer le bloc et l' ajouter aux autres entrées, en le réglant sur écran tactile. Nous pouvons maintenant utiliser tout cela comme condition pour le blocage du I then. Et si nous lançons le jeu et activons le bouclier, nous pouvons maintenant détruire les astéroïdes en les touchant avec notre bouclier fois le temps imparti, Mais une fois le temps imparti, le bouclier disparaît un peu trop brusquement. Nous devrions probablement avertir le joueur peu avant que le bouclier ne disparaisse, afin qu'il sache qu'il est temps d' arrêter de percer les astéroïdes Pour ce faire, revenons au code du shield sprite. En répétant jusqu'au bloc, nous pouvons vérifier si le temps de protection est passé aux deux dernières secondes environ, et si c'est le cas, nous pouvons commencer à faire disparaître les sprites du bouclier Pour ce faire, passons au contrôle et ajoutons un bloc mince en I au bas du bloc de répétition jusqu'au bloc. Pour ce qui est de la condition, passons aux opérateurs, et introduisons un bloc inférieur à 1. Passons ensuite aux variables et utilisons un bloc temporel de bouclier comme première entrée. Si le temps de bouclier est inférieur à 50, il reste un peu moins de 2 secondes. Maintenant, nous allons commencer à éliminer les sprites, ce que nous pouvons faire en accédant à Looks, en ajoutant un effet de changement par bloc au bloc I thin Et en changeant l'effet fantôme par deux. Cela signifie également que nous devons réinitialiser l'effet fantôme la prochaine fois que le bouclier sera activé Prenons un bloc d'effets graphiques clair et placez-le au-dessus de la répétition jusqu'au blocage. Essayons-le maintenant. Une fois que nous avons activé le bouclier et que la valeur du temps de bouclier est descendue à 50, le bouclier commence à s'estomper avant de disparaître complètement L'un des problèmes que nous avons cependant, c'est que si nous retrouvons un autre bouclier alors que le bouclier s'estompe, il reste partiellement Cela se produit parce que, même si vous collectez un autre bouclier, le temps du bouclier est réinitialisé à 300, car il ne tombe jamais à zéro, la répétition jusqu'au blocage continue de fonctionner temps du bouclier est réinitialisé à 300, car il ne tombe jamais à zéro, la répétition jusqu'au blocage continue de fonctionner et les effets graphiques ne sont jamais effacés. Pour résoudre ce problème, au lieu d'effacer les effets graphiques avant la répétition jusqu'au blocage, nous pouvons le faire chaque fois que le temps de protection n'est pas inférieur à 50. Cela signifie que nous devrons remplacer le temps de protection I inférieur à 50 blocs ici par un bloc I thin ls. Passons donc au contrôle, et mettons un bloc I Thin LS dans un espace vide. Pour cette condition, utilisons que le temps de protection est inférieur à 50 blocs. Déplaçons ensuite le bloc d'effets Change Ghost dans la partie I du bloc I Thins, et maintenant nous pouvons nous débarrasser du bloc I Thin vide Enfin, nous pouvons extraire le bloc d' effets graphiques clairs à partir d' ici et le placer dans la partie du bloc ITN s. Ensuite, nous pouvons ajouter tout cela au bas de la répétition jusqu'au blocage. Si maintenant nous lançons le jeu , que nous activons le bouclier, et que nous récupérons un autre bouclier au fur et à mesure que le bouclier s'estompe, il redevient complètement opaque OK, maintenant nous pouvons accéder aux variables et masquer la variable Shield time, et les deux retouches sont terminées La dernière que nous devons créer est la bombe, et nous le ferons dans la prochaine leçon. 52. Créer la bombe: Comme pour les autres micros, nous allons commencer à travailler sur la bombe en créant une variable globale pour celle-ci, qui sera insérée dans le code du sprite du pick-up lorsque le joueur récupérera nous allons commencer à travailler sur la bombe en créant une variable globale pour celle-ci, qui sera insérée dans le code du sprite du pick-up lorsque un pick-up. Cependant, avec la bombe, nous allons simplement lancer une animation rapide, en démarrant la bombe en petit, en la faisant grossir, en détruisant tous les astéroïdes avec lesquels elle entre en contact ce fait, contrairement à l'alimentation laser et au bouclier, nous n'avons pas besoin de savoir depuis combien de temps la bombe est active. Au lieu de cela, nous devons simplement vérifier si la bombe est active ou non. Commençons donc par créer une nouvelle variable. Disons que c'est Bomb Active et faisons-le pour tous les sprites. Et nous pouvons continuer et masquer la variable. Ensuite, nous vérifierons si le clone récupéré utilise le costume de bombe, et si c'est le cas, nous réglerons la bombe active sur true. Donc, dupliquons d'abord le bloc « si le nom du costume est égal au bloc bouclier » ici, mettons-le dans un espace vide pour le moment éliminons le nombre total de clones modifiés et supprimons ces blocs de clones. Voyons maintenant si le nom du costume est égal à celui de bombe. Et si c'est le cas, réglons la bombe active sur vraie. Ensuite, nous pouvons mettre ceci que je bloque ensuite en dessous des deux autres. Ensuite, nous allons créer un sprite pour la bombe. Passons donc au bouton «   Choisissez un sprite », cliquez sur « Paint » et appelons-le « bombe Le costume du sprite à la bombe sera simplement un grand cercle avec des dégradés radio blancs à transparents Commençons donc par utiliser l'outil cercle, et pour la couleur de remplissage, passons à l'option de dégradé radio Faisons en sorte que la première couleur soit complètement blanche et désactivons la deuxième couleur. Et nous ne voulons pas que le cercle ait un contour. Maintenant, tout en maintenant la touche Maj enfoncée, créons un cercle légèrement plus grand que la zone de scène du canevas. Et assurons-nous de le centrer. OK, passons maintenant à l' onglet « code ». Comme il est possible pour le joueur de récupérer plusieurs bombes en peu de temps, nous utiliserons des clones de la bombe Sprite pour masquer le sprite Passons d'abord aux événements et introduisons un bloc W que je reçois, en réglant sur le moment où je reçois Start game. Passons ensuite à Looks et ajoutons un bloc de masquage. Nous voulons également ajouter un bloc go to front later, et nous voulons initialiser la variable active de la bombe à fos Passons donc aux variables, introduisons un bloc actif set bomb et définissons-le sur fs. En fait, nous pouvons le définir sur autre chose que vrai, mais l'utilisation de faux permet d'autres personnes de comprendre le code plus facilement. OK, maintenant nous allons vérifier en permanence si la bombe active est vraie, et si c'est le cas, nous allons créer un clone à la position actuelle du joueur et faire exploser la bombe. Commençons donc par contrôler et introduire un blocage permanent. Ajoutons ensuite un bloc ITN. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables, et vérifions si bomb active est égal à vrai. Maintenant, dans le bloc if then, passons à la position des sprites du joueur en passant au mouvement, en introduisant un bloc de position aléatoire et en le réglant pour qu'il passe au joueur Créons ensuite un clone en accédant à Control et en introduisant un bloc de création de clone de moi-même. Et encore une chose que nous voulons faire ici, c'est remettre la bombe active à False, sinon cela n' arrêtera jamais de créer des clones. Passons donc aux variables, introduisons un bloc actif set bomb et définissons-le sur false. Ensuite, nous devons indiquer aux clones ce qu'ils doivent faire. Revenons au contrôle et introduisons un « when I start » en tant que bloc de clonage. abord, augmentons le nombre de clones en accédant aux variables, en apportant une modification par bloc et en modifiant le nombre total de clones d'un. Ensuite, nous montrerons le clone en allant à Los et en apportant un bloc d'affichage. Maintenant, je vais commencer par un clone très petit et le faire grossir de plus en plus. Donc, introduisons un bloc de taille 2 et fixons la taille à 0 %. Comme nous l'avons appris précédemment, cela ne portera pas vraiment la taille à 0 %, mais elle sera vraiment petite. OK ? Passons maintenant au contrôle, introduisons un bloc de répétition et répétons 20 fois. Pour faire croître le clone, passons à Los modifiant la taille bloc par bloc du bloc de répétition, et modifions-le par cinq. Après l'animation de croissance, nous attendrons environ une demi-seconde, puis nous effacerons le clone. Passons donc au contrôle, ajoutons un bloc d'attente après le bloc de répétition et attendons 0,5 seconde. Maintenant, introduisons un autre bloc de répétition, et après dix répétitions, nous allons effacer le clone en accédant à Los, en introduisant un effet de changement par bloc et en modifiant l'effet fantôme de dix Enfin, une fois que tout cela sera fait, nous supprimerons le clone. Diminuez donc d'abord le nombre de clones en accédant aux variables, en introduisant une modification par bloc et en modifiant le total des clones par moins un. Terminons ensuite le script en accédant à Control et en ajoutant un bloc de suppression de ce clone. OK, allons-y et essayons tout cela. Si nous récupérons un pick-up, il fait exploser la bombe à la position du joueur grâce une animation de croissance rapide et à un fondu. Maintenant, nous devons juste faire en sorte que la bombe affecte réellement les astéroïdes Pour ce faire, examinons le code du sprite de l'astéroïde. Et quand je commencerai en tant que script de clonage, plus de vérifier si le clone touche un laser ou le bouclier, nous devrons également vérifier s'il touche une bombe. Créons donc de l'espace supplémentaire ici. Passons ensuite aux opérateurs et apportons-en un autre ou un bloc. Nous pouvons utiliser le bloc ou à partir d'ici comme l'une des conditions du nouveau bloc, et pour l'autre condition, utilisons un duplicata de l'un des blocs tactiles et le réglons sur bombe tactile. Nous pouvons maintenant utiliser tout cela comme condition pour le bloc ITN. Et c'est ce qui devrait être le cas. Alors essayons-le. Désormais, tous les astéroïdes qui touchent une bombe sont détruits. Génial. Bien, maintenant que nous savons que tous les micros fonctionnent comme prévu, compliquons un peu les choses pour le joueur en accédant au code du sprite de collecte et réduisant les chances de durée pour chaque type de pick-up Pour le capteur laser, je vais en choisir un sur 500. Pour le bouclier, je vais en choisir un sur 800. Et enfin, un sur 1 000 pour la bombe. Cela devrait faire en sorte que le pick-up apparaisse beaucoup moins souvent, mais suffisamment souvent Très bien, notre jeu se déroule très bien maintenant. La prochaine chose que nous allons faire est de créer des étoiles qui se déplacent vers le bas de l'arrière-plan. Cela ajoutera de la profondeur au jeu. Nous pourrions le faire en utilisant des clones, mais avec tous les effets de particules, les astéroïdes, les lasers et les micros, nous approchons déjà des limites clones. Nous devrons donc utiliser une méthode différente pour créer des copies de sprites C'est là qu'intervient l' extension du stylet, et nous allons tout apprendre à ce sujet dans la prochaine leçon. 53. Utiliser l'extension Pen: L'extension Pen est un outil très puissant disponible en version scratch. Il a de nombreuses utilisations, et même si nous n' utiliserons pas nécessairement toutes ses fonctionnalités dans nos jeux, il est tout de même bon de les connaître. D'accord ? Pour démontrer les fonctionnalités de l'extension Pen, j'ai créé un nouveau projet appelé No Surprise Pen Extension. Et pour commencer à utiliser l'extension Pin, nous devons d'abord descendre en bas à gauche de la palette de blocs. Ici, nous avons un bouton qui dit « ajouter une extension ». Si nous cliquons sur le bouton, cela nous amène à la bibliothèque d' extensions où nous pouvons choisir parmi les différentes extensions à ajouter à notre projet. Les extensions nous permettent d'ajouter des fonctionnalités plus avancées à nos projets. Par exemple, avec l'extension music, nous pouvons composer notre propre musique pour nos projets. Grâce à la détection vidéo, nous pouvons détecter les mouvements dans la webcam d' un utilisateur. Et avec la synthèse vocale, nous pouvons saisir du texte et le faire lire à haute voix par scratch. Je vous recommande d'essayer toutes les extensions et d'en apprendre davantage à leur sujet dès que vous en aurez l'occasion. Mais pour l'instant, ce que nous recherchons , c'est l'extension de la goupille. Si nous cliquons dessus, l'extension Pin est ajoutée à notre projet. Nous avons maintenant cette nouvelle catégorie de blocs à épingles. Et comme pour les autres catégories, nous pouvons utiliser les blocs Pin dans un code Sprites Par exemple, si nous ajoutons un bloc épinglé au code de Scratchcats et que nous cliquons sur le bloc, puis que nous passons au mouvement et introduisons un bloc de déplacement Chaque fois que nous cliquons dessus pour déplacer Scratchcat, il trace une ligne entre sa position précédente et sa position actuelle Cela fonctionne également lorsque nous le faisons pivoter et le déplaçons dans différentes directions. Donc, le bloc d'épingle fixe une épingle au sprite et le presse sur la scène Si nous revenons à la catégorie des épingles, l'opposé du bloc pin down est le bloc pin up. Si nous en introduisons un et que nous cliquons dessus, le stylo ne touche plus la scène. Maintenant que nous déplaçons Scratch cat, il ne trace plus de lignes. Pour le faire dessiner à nouveau, il suffit de cliquer à nouveau sur le bloc épinglé. Nous avons également des blocs pour modifier les différents paramètres de la broche. Par exemple, avec le bloc de couleur défini pour le stylo, nous pouvons choisir une couleur spécifique pour l'épingle. Maintenant, Scratch Cat va dessiner en utilisant la nouvelle couleur. Et si nous voulons modifier la largeur des lignes, nous pouvons utiliser soit un bloc de taille de broche de modification, soit un bloc de taille de broche défini. Avec le bloc de modification de la broche B et le bloc set pin two, nous pouvons ajuster un attribut particulier de la couleur de l'épingle, notamment sa teinte, sa saturation , sa luminosité et sa transparence. Par exemple, si nous voulons rendre les lignes partiellement transparentes, nous pouvons utiliser un bloc à deux broches pour définir la transparence. Cela va de 0 à 100, zéro étant totalement opaque et 100 étant totalement transparent Ainsi, une valeur de 50 rendra les lignes transparentes à 50 %. définissez la transparence sur 100, les lignes seront totalement transparentes et si vous la définissez sur zéro, elles redeviendront totalement opaques. Enfin, si nous voulons supprimer toutes les lignes de la scène, nous pouvons utiliser un bloc Effacer tout. OK, donc une chose que nous pouvons faire avec tout cela est de donner à l'utilisateur la possibilité de dessiner. Pour ce faire, nous pouvons faire en sorte que le sprite trace continuellement des lignes lorsqu'il suit le pointeur de la souris et nous le ferons commencer à le faire lorsque vous cliquerez sur le drapeau vert Passons donc d'abord aux événements et gagnons un bloc sur lequel vous avez cliqué sur le drapeau vert Lorsque vous cliquez sur le drapeau, nous allons d'abord tout effacer Ajoutons donc le bloc Effacer tout au script. Et pour commencer à dessiner, nous devons introduire le bloc d'épingles. Il ne nous reste plus qu'à suivre le pointeur de la souris. Passons donc à Control et introduisons un blocage permanent. Passez ensuite au mouvement, ajoutez une position aléatoire au bloc permanent et réglez-le pour qu'il passe au pointeur de la souris. Si nous cliquons maintenant sur le drapeau vert, Scratch Cat suit continuellement la souris et trace des lignes. Maintenant, nous pouvons continuer à utiliser le costume de chat Scratch si nous le voulons, ou nous pouvons utiliser un costume blanc. Pour ce faire, nous pouvons aller dans l'onglet costumes, descendre sur le bouton « Choisir un costume » et cliquer sur « Peindre ». Nous pouvons maintenant utiliser le nouveau costume blanc au lieu du costume de chat Scratch. Il semble donc que nous sommes en train de dessiner. Une autre chose que nous pouvons faire est de faire en sorte que le dessin ne se produise que lorsque l'utilisateur maintient le bouton de la souris enfoncé. Pour ce faire, revenons à l'onglet code, à Control et plaçons un bloc if then else dans un espace vide. Pour ce qui est de la condition, nous allons vérifier si le bouton de la souris est enfoncé en cliquant sur Détecter et en insérant un bloc de souris vers le bas. Si le bouton de la souris est enfoncé, nous commencerons à dessiner en posant l'épingle. Déplaçons donc le bloc épingle d' ici dans la partie I du bloc I thin s. Et si le bouton de la souris n'est pas enfoncé, nous déplacerons l'épingle vers le haut en ajoutant le bloc pin up aux parties en ts. Si nous plaçons maintenant le bloc I Tints dans le bloc Forever et que nous exécutons le projet, il ne sera désormais dessiné que lorsque nous maintenons le bouton de la souris enfoncé Faisons également en sorte que nous puissions appuyer sur les touches fléchées pour changer la couleur et la taille du stylo. Pour ce faire, passons aux événements et introduisons quatre blocs appuyés sur la touche gagnante. Pour le premier, allons-y avec la flèche droite. Et faisons en sorte que le fait d' appuyer dessus change légèrement la couleur de l'épingle. Pour cela, passons à l'épinglette et changeons la couleur de l'épingle par bloc de dix. Ensuite, nous allons faire le contraire en faisant en sorte que la flèche gauche change la couleur de moins dix. Pour le suivant, choisissons la flèche vers le haut et faisons-en sorte qu'elle augmente la taille de l'épingle en modifiant la taille de l'épingle d'un bloc. Enfin, faisons en sorte que la flèche vers le bas change la taille de moins un. Si nous exécutons le projet maintenant, pendant que nous dessinons, nous pouvons utiliser les flèches droite et gauche pour changer la couleur et les flèches haut et bas pour modifier la taille. Une autre caractéristique importante de l'extension à épingle, et celle que nous utiliserons le plus souvent dans nos jeux, est la possibilité de tamponner un costume de sprite Pour ce faire, nous utilisons le bloc de tampons, et pour voir comment cela fonctionne, allons d'abord dans l'onglet costumes et revenons à un costume de chat Scratch. Maintenant, revenons au code, faisons en sorte que le costume de chat à gratter soit tamponné en appuyant sur la touche espace Pour ce faire, nous pouvons accéder aux événements, insérer un bloc enfoncé sur la touche Espace gagnant, puis revenir à l'épingler et ajouter un bloc de tampon au script. Si nous lançons le projet maintenant, chaque fois que nous appuyons sur la touche espace, une copie de Scratch Cat sera estampillée à l'emplacement actuel. Et comme vous pouvez le constater, les paramètres actuels de l' épingle, tels que sa couleur et sa taille, n' ont aucun effet sur les tampons. En effet, les timbres sont des copies exactes du costume actuel du sprite. Donc, si nous voulons changer l' apparence des timbres, nous devons d'abord changer l'apparence du costume avant de le tamponner Par exemple, si nous allons dans Looks et que nous ajoutons un bloc d'effet de changement de couleur en haut du script enfoncé sur la touche Win space et que nous exécutons le projet, lorsque nous appuyons sur la touche espace maintenant, il changera d'abord la couleur du costume, puis tamponnera le costume avec la nouvelle couleur. L'estampage est similaire au clonage, sauf qu'une fois que nous avons créé un tampon, nous ne pouvons plus y apporter d'autres modifications, comme nous le pouvons avec les clones en utilisant le when I start as a Cependant, l'un des avantages de l'estampage par rapport au clonage est qu'il n'y a aucune limite à l' estampage et au rayage Nous pouvons donc tamponner un sprite pour toujours si nous le voulions Grâce à ces connaissances, nous pouvons maintenant revenir au projet Cosmic Havoc et utiliser l'estampage pour créer les étoiles en arrière-plan 54. Créer les étoiles: Alors, de retour dans le chaos cosmique, la première chose à faire est ajouter l'extension Pin au projet Descendons donc ici et cliquons sur le bouton Ajouter une extension. Choisissons ensuite l'extension Pin. Ensuite, nous allons créer un nouveau sprite que nous utiliserons pour créer les étoiles Passons donc au bouton Choisir un sprite et cliquez sur Paint Et appelons-le étoile. Pour le costume, nous allons simplement créer un petit cercle avec des dégradés radio blancs à transparents Prenons l'outil cercle et pour la couleur de remplissage, choisissons le dégradé radio, rendons la première couleur blanche et la seconde transparente. Assurons-nous que le contour est désactivé. Maintenant, zoomons un peu. Et tout en maintenant la touche Maj enfoncée, dessinons un cercle d' environ deux blocs de diamètre. Et veillons également à centrer le cercle. Maintenant, lorsque nous créons réellement les étoiles, nous allons les placer sur trois couches distinctes. Les étoiles de chaque couche consécutive seront plus petites et se déplaceront plus lentement que les étoiles de la couche précédente. Cela créera ce que l'on appelle un effet de parallaxe selon lequel plus un objet est proche du joueur, il semble gros et rapide Nous observons cet effet assez souvent en arrière-plan de plateformes ou de jeux en deux D et nous l' utiliserons à nouveau pour notre propre plateforme ou jeu plus tard dans le cours. La raison pour laquelle j'en parle maintenant est que nous allons utiliser du code pour réduire la taille des sprites en fonction de la couche sur laquelle ils se trouvent Cependant, comme le costume de sprite est déjà très petit, nous sommes assez limités quant à taille du sprite Si nous essayons de le régler sur quelque chose de très petit, comme dix, il revient immédiatement à un nombre beaucoup plus élevé Pour résoudre ce problème, nous devrons augmenter la taille du costume de sprites Et comme nous l'avons déjà appris, une façon simple de le faire est d' ajouter une grande boîte invisible au costume. Prenons donc l'outil rectangle et désactivons à la fois la couleur de remplissage et la couleur de contour, et le rectangle n'a pas besoin d'être si grand. Quelque chose comme ça devrait fonctionner. Et centrons-le également. Nous pouvons maintenant utiliser une taille beaucoup plus petite pour le sprite. Je ne pense pas que nous allons y aller aussi petit, mais juste au cas où nous le voudrions, c'est désormais possible. OK, rétablissons la taille à 100 pour le moment, et passons à l'onglet code. Contrairement aux autres sprites existants, nous créerons les étoiles dès que vous cliquerez sur le drapeau vert et les afficherons pendant toute la durée du jeu Donc, au lieu d'utiliser un bloc de jeu W I receive start, passons aux événements et remportons un bloc sur lequel vous avez cliqué sur le drapeau vert. Maintenant, comme les étoiles vont bouger, nous devons créer de nouveaux tampons à chaque image en utilisant les positions mises à jour. Cela signifie que nous devrons suivre la position actuelle de chaque étoile. Pour cela, nous allons utiliser une liste de variables. Passons donc aux variables et créons une nouvelle liste. Nous pouvons l'appeler position des étoiles et le créer uniquement pour ce sprite OK, donc dans le script du drapeau vert, assurons-nous d'effacer la liste en introduisant une suppression complète des blocs et en supprimant toutes les positions des étoiles. Ensuite, pour créer les étoiles, nous utiliserons un bloc personnalisé. Passons donc à Mes blocs et créons-en un nouveau. Commençons par taper « créer des étoiles » avec deux points à la fin. Nous voulons pouvoir saisir le nombre d'étoiles à créer pour chacune des trois couches. Ajoutons donc un chiffre ou un texte et appelons ça « compter un ». Ajoutons ensuite une étiquette et tapons sur la première couche. Ajoutons maintenant une autre entrée appelée nombre deux, une étiquette correspondant à la couche deux, une autre entrée appelée compte trois, et enfin, une étiquette à la couche trois. Et pour ce bloc, nous voulons absolument vérifier Exécuter sans rafraîchir l'écran. En effet, nous utiliserons blocs de répétition pour créer toutes les étoiles, et nous voulons les créer dans une seule image. OK ? Créons maintenant le bloc. Nous pouvons déplacer le bloc défini ici. Et allons-y et ajoutons un bloc Create Stars au script Green Flag. Maintenant, pour ce qui est du nombre d'étoiles à créer, nous ne voulons pas exagérer et en créer trop. La raison est que, comme les étoiles se déplacent, nous devrons les réorganiser à chaque image, et plus nous créerons de tampons, le jeu peut ralentir Une autre raison est qu'avoir trop d' étoiles ne fera qu' encombrer l'arrière-plan OK, donc pour la première couche, où les étoiles seront les plus grandes, je vais choisir 20. Pour la couche 2, je vais choisir 50, et 100 pour la couche 3. Nous pouvons toujours ajuster ces valeurs ultérieurement. Travaillons maintenant sur le script Create Star. Et ici, passons à Control et introduisons trois blocs de répétition distincts pour chacune des trois couches. Pour le premier, nous allons répéter le décompte une fois. Nous allons répéter le comptage deux fois pour le deuxième et trois fois pour le troisième. Et ce que nous allons faire dans chacun des blocs de répétition c'est déplacer le sprite vers une position aléatoire sur la scène Ajoutez ensuite cette position à la liste des positions des étoiles, et nous ajouterons également le numéro de la couche actuelle à la liste. Donc, d'abord, pour déplacer le sprite, passons au mouvement et ajoutons un bloc de position aléatoire à chaque bloc de répétition. Passons ensuite aux variables et introduisons un bloc Add to dans un espace vide. Faisons en sorte que cela s'ajoute aux positions des étoiles. Créons ensuite deux doublons du bloc qui les relie tous ensemble . Pour le premier, passons au mouvement et introduisons un bloc d'exposition. Pour le second, utilisons un bloc de position Y. Nous pouvons maintenant dupliquer les blocs et les ajouter au bas du premier bloc de répétition. Dans le troisième bloc d'ajout, ajoutons-en un pour la couche 1. Nous pouvons maintenant dupliquer à nouveau les blocs, les placer dans le deuxième bloc de répétition et en ajouter deux à la liste. Enfin, nous pouvons placer les trois blocs d'ajout restants dans le troisième bloc de répétition et ajouter trois. Si nous cliquons sur le script drapeau vert maintenant, rien ne se passera encore dans la scène à part le changement de position du sprite étoile, mais nous devrions avoir ajouté pas mal d' objets à la liste des positions des étoiles Et chaque fois que nous cliquons sur le script, nous devrions obtenir des valeurs de position X et Ydifférentes. OK, nous pouvons maintenant accéder aux variables et masquer la liste. Dans la prochaine leçon, nous travaillerons sur le dessin et l'animation des étoiles 55. Animer les étoiles: Pour dessiner les étoiles, nous allons créer un autre bloc personnalisé. Passons donc à Mes blocs, cliquez sur Créer un bloc, et appelons cela dessiner des étoiles. Pour dessiner les étoiles, nous allons utiliser un bloc de répétition pour parcourir en boucle tous les éléments de la liste des positions des étoiles et tamponner le sprite étoilé à l'aide de ces informations Et comme nous voulons dessiner toutes les étoiles dans une seule image, nous devons nous assurer de cocher Exécuter sans rafraîchir l'écran. Créons maintenant le bloc. OK, passons à la recherche de Draw Stars ici. Et dans le script Green Flag, nous voulons exécuter en continu le bloc Draw Stars. Donc, après avoir créé les étoiles, passons au contrôle et introduisons un bloc permanent. Revenons ensuite à mes blocs et ajoutons un bloc Draw Stars au bloc Forever. Ensuite, dans Define Draw Stars, la première chose que nous allons faire est d' effacer tous les tampons actuels. Donc, dans la catégorie des épingles, introduisons un bloc «   Effacer tout ». Ensuite, nous passerons en revue tous les éléments de la liste des positions des étoiles et créerons des tampons en utilisant les informations de position. Et au fur et à mesure que nous parcourons les éléments, nous devrons suivre l' index actuel de la liste. Cela signifie que nous devrons créer une variable. Passons donc aux variables, et créons-en une nouvelle, en l' appelant index et en l'adaptant uniquement à ce sprite Et nous n'avons pas besoin d' afficher la variable. Maintenant, dans les étoiles dessinées définies, introduisons un ensemble à bloquer et définissons l'index sur un pour le premier élément de la liste. Ensuite, pour parcourir la liste, passons à Control et répétons jusqu'au blocage. Nous voulons répéter jusqu'à ce que l'indice soit supérieur à la longueur des positions des étoiles. Donc, pour ce qui est de la condition, passons aux opérateurs et introduisons un bloc supérieur à. Pour la première entrée, passons aux variables et introduisons un bloc d'index. Et pour la deuxième entrée, introduisons une longueur de bloc et définissons-la sur la longueur des positions des étoiles. Et comme nous utiliserons trois éléments de la liste pour chaque tampon, deux pour les positions X et Y et un pour le numéro de couche, nous devons nous assurer d'augmenter l'indice trois à la fin de la répétition jusqu'au bloc. Allons-y, introduisons une modification par bloc, et changeons l'indice par trois. À chaque répétition, l'élément à la valeur actuelle de l'indice sera la position X. L'index plus un correspond à la position Y, et l'index plus deux à la couche. Donc, pour déplacer le sprite vers les bonnes positions X et Y, passons au mouvement et introduisons un bloc Go to XY. Et nous voulons nous assurer de tout faire avant de modifier l'index. Pour X et Y, passons aux variables et introduisons un élément de blocs. Réglez-les sur l'élément correspondant à la position des étoiles. Pour X, nous pouvons utiliser l'élément à la valeur d'indice actuelle en introduisant un bloc d'index. Pour Y, nous voulons obtenir l' élément à l'index plus un. Passons donc d'abord aux opérateurs et introduisons un bloc d'addition. Revenons ensuite aux variables, et obtenons l'élément à l'index plus un. Ensuite, nous allons utiliser le numéro de couche pour déterminer la taille ainsi que la transparence de l'étoile. Donc, d'abord, pour la taille, passons à Los et ajoutons un bloc de taille définie deux avant le bloc d'index de modification. Plus la couche est haute, plus nous voulons que l'étoile soit petite. De plus, je pense que la taille à 100 % est un peu trop grande. 80 %, c'est un peu mieux. Donc, pour la première couche, je vais utiliser 80 %, puis je vais soustraire 20 % supplémentaires pour chaque couche consécutive, soit 60 % pour la couche deux et 40 % pour la couche trois Pour ce faire, je vais d' abord passer aux opérateurs et placer un bloc de multiplication dans un espace vide. Pour la première saisie, je vais dupliquer l'index des articles plus l'un des blocs de positions de départ ici. Mais pour obtenir la couche, je veux en ajouter deux à l'index, et je vais multiplier la couche par 20. Donc, la première couche m'en donnera 20. La deuxième couche m'en donnera 40 et la troisième m'en donnera 60. Maintenant, je dois juste soustraire tout cela de 100, donc je vais introduire un bloc de soustraction, utiliser 100 comme première entrée et utiliser tout cela comme deuxième Maintenant, je peux l'utiliser comme valeur pour définir la taille. Pour la transparence, nous allons faire quelque chose de similaire en utilisant l'effet fantôme. Passons donc à Looks bring in a set effect, two block. Et définissons l'effet fantôme. Plus la couche est haute, plus nous voulons que l'effet fantôme soit élevé pour rendre les étoiles de plus en plus transparentes. De plus, pour la première couche, nous laisserons l' effet fantôme à zéro. Donc, pour cela, commençons par passer aux opérateurs et placer un bloc de multiplication dans un espace vide. Pour la première entrée, dupliquons l' index des éléments plus deux blocs ici. Et multiplions-le par 30. Pour le moment, cependant, cela définira l'effet fantôme à 30 lorsque la couche en est une. Pour mettre l'effet fantôme à zéro sur la première couche, il suffit de soustraire un du numéro de couche Pour ce faire, introduisons un bloc de soustraction. Utilisez l'élément du bloc comme première entrée et soustrayez-le par un Ensuite, nous pouvons le mettre dans la première entrée du bloc de multiplication et placer le bloc de multiplication dans le bloc d'effet fantôme défini. D'accord. Et avant de déplacer les étoiles, allons-y et voyons si tout cela fonctionne. Pour ce faire, il suffit de passer à l' épingle et d'ajouter un bloc de tampon après tout cela. Maintenant, si nous venons ici et que nous cliquons sur le script du drapeau vert, toutes nos étoiles sont positionnées au hasard avec des tailles et des transparences différentes Et chaque fois que nous exécutons le script, ils doivent apparaître dans des positions différentes. De plus, j'ai oublié de mentionner dans la leçon précédente que tout ce que nous créons avec l'extension de l'épingle, y compris les lignes et les tampons, toujours dessiné sur scène avant les sprites Donc, si nous cliquons sur le drapeau vert lui-même, nous pouvons voir que tous les estampilles en forme d'étoile apparaissent sous les sprites Une chose que vous remarquerez peut-être si vous regardez de très près, cependant, c'est que l'une des étoiles apparaît au-dessus des astéroïdes Il s'agit en fait du sprite étoilé lui-même, pas d'un tampon. Pour résoudre ce problème, après tout l'estampage, il suffit de masquer le sprite étoilé Une fois qu'ils se seront répétés jusqu'à un bloc, passons à Looks et ajoutons un bloc de masquage. Cependant, cela signifie également que nous devons montrer le sprite avant de l'estamper Ajoutons donc un bloc d'affichage au-dessus du bloc repeat until. Cela devrait régler le problème. D'accord ? Maintenant que nous savons les étoiles sont dessinées correctement, commençons à les déplacer vers le bas de la scène. Pour ce faire, nous devons diminuer légèrement la position Y de chaque étoile à chaque image. Cependant, nous devrons également vérifier si l'étoile est tombée en dessous du bas de la scène, et si c'est le cas, nous la placerons en haut de la scène et recommencerons à la déplacer vers le bas. Alors pour commencer, passons au mouvement. Et juste après le bloc de timbres, apportons une modification Y par bloc. Comme pour définir la taille et l'effet fantôme, nous utiliserons la couche pour déterminer la distance à parcourir pour déplacer le sprite Pour ce faire, nous pouvons d'abord dupliquer le gros bloc de multiplication dans le bloc d'effet fantôme défini ici et l'ajouter au bloc Y de modification. Pour nous assurer que nous changeons toujours Y par un nombre négatif, nous pouvons ici soustraire par quatre, soit une de plus que le nombre total de couches Cela fera également en sorte que plus la couche est haute, plus l'étoile se déplacera lentement. Et pour la valeur de multiplication, nous pouvons opter pour quelque chose d' assez petit, comme 0,5. Ensuite, nous vérifierons si la position Y est descendue en dessous de la scène, et si c'est le cas, nous la placerons en haut de la scène. Pour ce faire, passons au contrôle et plaçons un bloc informatique dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite au mouvement et vérifions si la position Y est inférieure à moins 179, soit à un pixel du bas de la scène. Et si c'est le cas, introduisons un bloc Y défini à deux et définissons-le à 179 ou à un pixel du haut. Mettons maintenant le bloc I thin juste en dessous du bloc Y de modification. Enfin, nous devons également remplacer l'élément de position Y actuel dans la liste des positions en étoile par la position Y mise à jour. Pour ce faire, nous pouvons d'abord accéder aux variables et ajouter un élément de remplacement du bloc après le bloc I thin et lui faire utiliser la liste des positions des étoiles. Pour l'élément à remplacer, nous voulons utiliser index plus un, afin de pouvoir utiliser une copie du bloc ici. Et pour la valeur par laquelle la remplacer, nous voulons utiliser la position Y du sprite en passant au mouvement et en introduisant un bloc de position Y. Si nous lançons le jeu maintenant, nous pouvons voir que les étoiles se déplacent très bien sur la scène. Mais comme nous maintenons les expositions des étoiles les mêmes, cela commence à paraître légèrement répétitif au bout d'un moment. Pour l'améliorer, chaque fois que nous déplaçons une étoile en haut de la scène, nous pouvons également lui donner une nouvelle exposition aléatoire. Pour ce faire, dans le bloc ITN, où nous vérifierons si l'étoile est tombée en dessous de la scène, introduisons également une modification X par bloc. Passons ensuite aux opérateurs et introduisons un bloc choisi au hasard. Et choisissons un nombre entre moins 24240, qui se retrouvera sur toute la scène Et maintenant, en plus de remplacer la position Y dans la liste, nous devons également remplacer la position. Passons donc aux variables, et introduisons un autre bloc d'éléments de remplacement en configurant pour qu'il utilise la liste des positions des étoiles. Pour l'article, nous pouvons utiliser la variable index. Et pour la valeur, passons au mouvement et introduisons un bloc d'exposition. Maintenant, les étoiles devraient paraître encore plus aléatoires. OK, une fois cela fait, nous allons maintenant laisser le joueur marquer points en détruisant tous ces astéroïdes 56. Garder le score: Nous allons permettre aux joueurs de marquer des points chaque fois qu'ils tirent sur les astéroïdes ou qu'ils collectent des pickups Et comme pour le jeu Smack So Moles, nous allons créer un bel affichage du score en haut de la scène Mais avant cela, faisons en sorte que la partition fonctionne. Pour commencer, nous devons d'abord créer une variable de score globale. Passons donc aux variables et créons-en une nouvelle. Appelons ça un score et faisons-en un pour tous les sprites. Au début du jeu, nous devrons fixer le score à zéro, et nous pourrons nous en occuper en arrière-plan. Passons donc au code de fond, et dans le script du drapeau vert, avant de diffuser Start game, introduisons un set à bloquer et fixons le score à zéro. Ensuite, nous travaillerons à augmenter le score. Pour cela, examinons d'abord le code Sprite de l'astéroïde. Dans le script d'attaque d'un astéroïde, si l'astéroïde a encore de la santé lorsque le joueur le tire, nous augmenterons le score d'un point En revanche, lorsque l'astéroïde n'aura plus de santé et explosera, nous augmenterons le score de deux points nous augmenterons le score de deux Donc, d'abord, introduisons une modification par bloc, et mettons-la dans le bloc if then quelque part avant le bloc de répétition afin que le score soit mis à jour instantanément, et changeons le score un par un. Ensuite, juste après le bloc ITN, avant d'exécuter le bloc Explode, apportons une autre modification par bloc, et changeons le score par deux Nous augmenterons également le score lorsque le joueur récupérera un pick-up. Passons maintenant au code du sprite de ramassage. Dans le premier, lorsque je commence en tant que script de clonage, nous avons un bloc ITN pour vérifier si le clone touche le joueur, et ici nous allons augmenter le score Faisons une modification par bloc, plaçons-la tout en haut du bloc ITN, et changeons le score de trois cette fois Si nous lançons maintenant le jeu et gardons un œil sur l'affichage des scores, nous pouvons le voir augmenter au fur et à mesure que nous tirons sur des astéroïdes et que nous collectons des pickups Bien, maintenant que nous savons que la partition fonctionne correctement, donnons-lui un meilleur affichage À l'instar de l' affichage du chronomètre et des moles Smack So, nous allons centrer le score en haut de la scène en utilisant de jolis gros chiffres Et pour nous éviter des problèmes, nous pouvons commencer par utiliser le même sprite que celui que nous avons utilisé pour les chiffres du chronomètre et les moles Smack So Nous pouvons le faire de deux manières. Tout d'abord, si nous avons toujours accès à notre projet SMC and Moles, nous pouvons copier le sprite numérique du chronomètre à l' aide Pour ce faire, cliquez d'abord sur Enregistrer maintenant ici. Si le projet n'a pas encore été enregistré automatiquement, cliquez sur l'icône du dossier ici pour accéder à notre page M Stuff. Et ici, trouvons le SMXYBolspject, et cliquez sur le bouton C intérieur Nous devrions maintenant être dans l' éditeur du projet Smack and Moles En bas, si nous cliquons sur Sac à dos, le contenu du sac à dos s' affiche, qui dans mon cas est actuellement vide. Et maintenant, nous pouvons glisser des éléments du projet dans le sac à dos. Dans le volet Sprite, nous avons à la fois un sprite à score et un sprite à chiffres du chronomètre Vous vous souvenez peut-être que les chiffres SCOR s'affichent en haut à gauche de l'étape et chiffres du chronomètre s'affichent en haut au centre Comme nous voulons afficher le score en haut au centre et les ravages cosmiques, nous allons commencer par utiliser le sprite numérique du chronomètre Pour ce faire, nous devons d'abord cliquer et faire glisser le sprite dans le sac à dos Cela crée une copie de tout ce qui se trouve dans le Sprite, y compris ses costumes et son code Maintenant que le sprite est dans le sac à dos, revenons à mes affaires. Si nous cliquons maintenant sur C à l'intérieur pour le projet Cosmic Havok, alors nous ouvrons le panneau du sac à dos Nous devrions toujours voir le sprite du chronomètre ici. Pour ajouter le sprite à notre projet en cours, nous pouvons cliquer dessus et le faire glisser depuis le sac à dos vers le volet Sprite Le sprite fait maintenant partie de notre projet, et nous sommes libres de le retirer du sac à dos si nous le voulons Pour ce faire, nous pouvons cliquer avec le bouton droit sur l'icône Sprites dans le sac à dos et choisir Supprimer Et nous pouvons cliquer à nouveau sur l'en-tête du sac à dos pour masquer le contenu. Maintenant, si pour une raison ou une autre vous n'avez pas accès à votre projet SMexibs, j'ai fourni le chiffre du chronomètre Sprite en tant que Après avoir téléchargé le sprite sur notre ordinateur, nous pouvons le télécharger dans notre projet en cliquant le bouton Choisir un sprite et en cliquant sur Télécharger le sprite Si nous naviguons jusqu'à l'emplacement où nous avons téléchargé le fichier, nous devrions voir un fichier appelé Trdigit point Sprite three Si nous sélectionnons le fichier et cliquons sur Ouvrir, nous avons maintenant le chiffre du minuteur Sprite dans notre projet OK ? Maintenant que le compte à rebours Sprite est intégré au projet Cosmic Havoc, changeons le nom chiffre SCR puisque nous l'utiliserons pour le score Ensuite, entrez le code du sprite numérique SCR. B le sprite utilisait la variable timer et frappait quelques taupes Copier le sprite dans ce projet a automatiquement créé une variable de temporisation, comme nous pouvons le voir si nous examinons Au lieu du timer, nous voulons utiliser la variable SCOR. Supprimons donc les deux blocs de temporisation du code et remplaçons-les par des blocs de score. Et nous n'aurons pas du tout besoin de la variable timer Nous pouvons donc cliquer dessus avec le bouton droit de la souris dans la palette de blocs et choisir Supprimer. De plus, comme nous utilisons des clones, nous devrions augmenter le nombre de clones. Ajoutons donc une modification par bloc en haut du script lorsque je démarre en tant que script de clonage, et modifions le total des clones d'un. Une autre chose que nous voulons faire est de faire en sorte que les clones apparaissent toujours au-dessus de tout le reste. Passons donc à Looks et ajoutons un bloc d'accès à la couche avant, et nous voulons le placer dans le bloc Forever afin que le clone passe continuellement vers la couche avant au fur et à mesure de sa mise à jour. le cas contraire, les clones du pick-up apparaîtront en haut de la partition Si nous essayons de lancer le jeu maintenant, le score est affiché en haut au centre de la scène, mais nous ne pouvons le voir que lorsqu' un astéroïde se trouve derrière lui Et c'est parce que tous les costumes à score sont noirs, ce qui est bien sûr de la même couleur que le fond. Donc, pour résoudre ce problème, allons dans l' onglet costumes et changeons la couleur de chaque costume en blanc, commençant par le chiffre zéro. Pour ce faire, à l'aide de l'outil de sélection, sélectionnons le zéro et changeons la couleur de remplissage et la couleur du contour en blanc. autre chose que nous devrions faire est d'ajouter une bordure noire autour de chaque chiffre. Sinon, chaque fois que le joueur tire sur un astéroïde situé derrière le score, l'astéroïde clignote en blanc et le joueur ne pourra pas voir le Pour créer une bordure noire, nous pouvons d'abord maintenir la touche Alt ou Option enfoncée et cliquer sur le zéro pour la dupliquer. Ensuite, nous pouvons donner au duplicata un fond noir et un contour noir. Augmentez la largeur du contour d' une unité et placez-la en dessous du zéro blanc. Maintenant, suivons les mêmes étapes pour le chiffre 1. Tout d'abord, sélectionnons-le et donnons-lui un fond blanc et un contour blanc. Maintenons ensuite la touche Alt ou Option enfoncée et cliquons dessus pour le dupliquer, rendre la couleur de remplissage et la couleur du contour blanches, augmenter la largeur et l'envoyer vers le bas. Et répétons pour les autres costumes. OK, une fois que nous en aurons fini avec les costumes, revenons à l'onglet code. Si nous lançons le jeu maintenant, notre nouvel affichage des scores devrait plutôt bien fonctionner. Nous pouvons maintenant masquer l' ancien affichage du score. Il faut toutefois savoir ne créons actuellement que quatre clones pour la partition Cela signifie que l' affichage du score cessera mettre à jour une fois que le score atteindra 9 999 Bien qu'il soit assez difficile de marquer un tel score, ce n'est certainement pas impossible. Donc, pour des raisons de sécurité, nous devrions augmenter le nombre de clones. Je pense que sept clones devraient être plus que suffisants. Une autre chose que nous pouvons faire est d'ajouter un effet cool où chaque fois qu'un chiffre change, il commence un peu plus gros et revient rapidement à sa taille normale Pour ce faire, nous devons d'abord faire en sorte qu'un clone ne change costume que si la valeur du bloc de jointure ici est réellement différente du nom du costume actuel du clone. Pour cela, nous allons utiliser un bloc personnalisé. Passons donc à mes blocs et créons-en un nouveau. Tapons change costume 2, et créons une entrée appelée costume. Cliquez ensuite sur OK. Déplaçons maintenant le bloc de costume de changement défini vers le bas. Et quand je commencerai en tant que clone, ajoutons un bloc de costume de changement au bloc permanent. Et pour la saisie du costume, utilisons le bloc de jointure qui trouve actuellement dans le bloc de costume Switch. Déplaçons maintenant le bloc de costume Switch dans le script de changement de costume. Et nous allons remplacer le costume par la valeur du costume saisi. Cependant, nous ne voulons le faire que si la valeur d'entrée du costume est différente du nom du costume actuel du clone. Passons au contrôle et enroulons , puis bloquons le bloc de costumes Switch. Pour la condition, passons aux opérateurs, et introduisons d'abord un bloc de nœuds, puis un bloc égal. Pour la première entrée du bloc Equal's, allons dans Looks et apportons un bloc de costumes. Et vérifions si le nom du costume n' est pas égal au costume saisi. OK, et en plus de changer de costume, nous allons également augmenter la taille du clone. Ajoutons donc un bloc de taille 2 au bloc if then, et fixons la taille à environ 160 % Enfin, Ben, quand je commence en tant que clone au bas du bloc pour toujours, nous voulons réduire progressivement la taille à 100 en quelques images. Pour ce faire, nous pouvons d'abord introduire un changement de taille par bloc, puis passer aux opérateurs, ajouter un bloc de division au bloc de changement de taille et utiliser un bloc de soustraction comme première entrée du bloc de division. Et ici, si nous soustrayons la taille de 100 et que nous la divisons par un certain nombre, la taille sera progressivement réduite à 100 Mettons donc un 100 et la première entrée du bloc de soustraction, puis passons à Looks et utilisons un bloc de taille comme deuxième entrée Divisons tout cela par deux. Plus le nombre que nous utilisons ici est élevé, plus la taille diminuera lentement. Essayons-le maintenant. Nous y voilà. Ça a l' air vraiment génial. Nous avons tous à peu près un jeu entièrement fonctionnel maintenant. ne nous reste plus qu'à ajouter l'écran titre, quelques effets sonores et de la musique, et nous allons commencer par l' écran titre dans la leçon suivante. 57. Créer le point de départ: L'écran titre comportera de nombreux éléments, notamment le logo, un écran permettant de basculer entre les costumes de sprite du joueur, un bouton de démarrage, un affichage pour le meilleur score et des boutons à bascule pour les effets sonores et la De tous ces éléments, l'élément le plus important est le bouton Démarrer, car il permettra aux joueurs de démarrer le jeu. C'est donc ce sur quoi nous allons travailler en premier. Pour commencer, nous devons créer un sprite pour le bouton de démarrage. Allons donc choisir un sprite, cliquez sur Paint, et appelons-le bouton Démarrer Pour le costume, utilisons l' outil rectangle, et nous allons utiliser des dégradés à la fois pour la couleur de remplissage et pour la couleur du contour Tout d'abord, pour la couleur de remplissage, choisissons ici l'option de dégradé vertical. Pour la première ou la couleur supérieure, choisissons le jaune. Et pour la couleur du bas, optons pour l'orange. Pour le contour, optons également pour un dégradé vertical. Pour la couleur du haut, nous utiliserons du blanc et un gris foncé pour la couleur du bas. Pour la largeur du contour, quelque chose comme cinq devrait suffire. Zoomons maintenant un peu sur le canevas. Créons un rectangle assez grand. Je vais faire le mien environ 32 blocs de large et 12 blocs de haut. Maintenant, arrondissons les angles. Comme nous l'avons déjà vu, nous pouvons le faire en saisissant l'outil de remodelage, en ajoutant un nœud de chaque côté d'un nœud d'angle, en supprimant le nœud d'angle, puis en répétant pour les Je vais également sélectionner les deux nœuds en bas à gauche et utiliser la flèche droite pour les déplacer un peu vers la droite. Appuyer sur la touche environ 20 fois devrait être une bonne chose. se peut également que nous devions ajuster légèrement la poignée pour qu'elle suive l'angle. Je vais maintenant faire de même pour les deux nœuds en bas à droite, sauf que je vais utiliser la flèche gauche pour les déplacer vers la gauche. Ensuite, saisissons l' outil de sélection et centrons le bouton. Enfin, nous ajouterons du texte au bouton. Prenons donc l'outil de texte et choisissons le blanc comme couleur de remplissage. Créons ensuite du texte avec le mot start. Maintenant, centrons-le avec l'outil de sélection et agrandissons-le légèrement tout en maintenant la touche Alt ou Option enfoncée. cause de la façon dont Scratch crée du texte, celui-ci apparaît un peu trop haut sur le bouton Je vais donc le déplacer vers le bas en appuyant plusieurs fois sur la flèche vers le bas pour que le texte ressorte un peu mieux Donnons-lui une ombre légèrement inférieure. Pour cela, nous pouvons maintenir la touche Alt ou Option enfoncée et cliquer sur le texte pour le dupliquer, rendre noir, le déplacer un peu vers le bas et vers la droite. Et cliquez sur le bouton de retour pour le déplacer sous le texte blanc. Ça a l'air plutôt bien. Peu importe où nous plaçons sur scène pour le moment, car nous devrons le déplacer un peu une fois que nous aurons créé les autres éléments de l'écran titre. OK ? Passons maintenant à l'onglet Code. Lorsque vous cliquez sur le drapeau vert, au lieu de démarrer le jeu immédiatement, nous allons d'abord afficher l'écran titre Si nous saisissons le code de la toile de fond, diffusons actuellement le message de début de partie lorsque vous cliquez sur le drapeau vert Ce que nous voulons faire à la place, c'est diffuser un nouveau message, que nous pouvons appeler afficher l'écran titre. Nous voulons également le faire après le décès du joueur. Si nous entrons dans le code du sprite du joueur, lorsque le joueur est touché, nous diffusons le message du joueur mort Nous pouvons donc faire en sorte que la toile de fond reçoive le message de date du joueur, puis qu'elle diffuse le message d'écran du titre de l' émission. Donc, dans le code de fond, passons d'abord aux événements et ajoutons un bloc W I received player ded. Avant d'afficher l'écran titre, nous voulons toutefois attendre assez longtemps pour les animations sprites explose des joueurs se Passons donc à Control et introduisons un bloc d'attente, et une attente d'environ 4 secondes devrait être une bonne solution. Maintenant, nous pouvons revenir aux événements, introduire un bloc de diffusion. Et diffusez l'écran titre de l'émission. Passons maintenant au code du bouton Démarrer Sprite. Et ici, introduisons un bloc Quand je reçois et définissons-le sur Quand je reçois l'écran titre Afficher le titre. La première chose à faire est de masquer le sprite. Ensuite, nous attendrons environ une demi-seconde et nous disparaîtrons dans le sprite Alors d'abord, allons dans Looks et introduisons un bloc de masquage. Passons maintenant au contrôle, introduisons un bloc d'attente et attendons 0,5 seconde. Ensuite, nous montrerons le sprite. Revenons donc à Looks et ajoutons un bloc d'affichage. Ensuite, rendons-le invisible en introduisant un effet défini, deux blocs et en réglant l'effet fantôme à 100. Pour faire disparaître le sprite, passons au contrôle et introduisons un bloc de répétition, et répétons 20 fois Revenons ensuite à Examiner un effet de changement par bloc par bloc par rapport au bloc de répétition et modifions l'effet fantôme par moins cinq. Si nous cliquons sur le drapeau vert maintenant, après une courte pause, le bouton de démarrage s'estompe Ensuite, nous allons faire en sorte que le jeu démarre en cliquant sur le bouton. Pour ce faire, nous allons vérifier si cliqué sur le sprite et si c'est le cas, nous l'effacerons, puis diffuserons le message de démarrage du jeu Cependant, nous ne voulons pas utiliser le bloc « gain sur lequel ce Sprite a cliqué » à cette fin, car cela permettra au joueur de continuer à cliquer sur le bouton qu'il disparaît et aussi pendant qu'il s'efface Cela peut entraîner des problèmes. Au lieu de cela, dans le script de l'écran de titre de l'émission, après avoir intégré le sprite, nous utiliserons un bloc permanent pour vérifier en permanence si le sprite est Pour ce faire, allons dans Control et ajoutons un bloc permanent au bas du script. Ajoutons ensuite un bloc if then au bloc permanent. Pour ce qui est de la condition, nous allons vérifier si le bouton de la souris est actuellement enfoncé, mais nous voulons également vérifier si le pointeur de la souris se trouve actuellement au-dessus des sprites Sinon, cliquez n'importe où dans la scène pour démarrer le jeu. Donc, pour vérifier si ces deux conditions sont vraies, passons d'abord aux opérateurs et introduisons un bloc and. Passons ensuite à la détection et utilisons un bloc situé vers le bas de la souris comme l'une des conditions de blocage et un bloc de pointeur tactile comme autre. Et juste pour le fun, faisons sorte que le jeu démarre en appuyant sur la touche espace. Pour ce faire, plaçons un bloc-touches dans un espace vide pour le moment Passons ensuite aux opérateurs, et cette fois nous utiliserons un bloc or. Nous pouvons utiliser le bloc-touches comme l'une des conditions de blocage ou de blocage. Utilisez le bloc et ici comme autre condition, puis utilisez le bloc entier ou le bloc comme condition pour le bloc if then. Maintenant, nous devons réellement commencer le jeu. Pour cela, nous allons créer un bloc personnalisé. Passons donc à Mes blocs et créons-en un nouveau. Nous pouvons l'appeler Démarrer le jeu et cliquer sur OK. Déplaçons le bloc de jeu de départ défini ici, et ajoutons un bloc de jeu de départ au bloc si alors. Au démarrage du jeu, nous voulons empêcher le blocage permanent de s'exécuter à nouveau. Passons donc à Control, mettons un bloc Stop après le bloc de démarrage du jeu et arrêtons ce script. Ensuite, pour le script de démarrage du jeu, nous allons effacer le sprite, puis diffuser le message de démarrage du jeu Donc, pour faire disparaître le Sprite, introduisons un bloc de répétition et répétons 20 fois. Passons ensuite à Looks, ajoutons un effet de modification par bloc au bloc de répétition et modifions l'effet fantôme par cinq. Ensuite, masquons le sprite en ajoutant un bloc de masquage au bas du script Enfin, passons aux événements, introduisons un bloc de diffusion et diffusons Start Game. Si nous lançons le jeu maintenant, nous pouvons soit appuyer sur la touche espace nous pouvons soit appuyer sur la touche espace, soit cliquer sur le bouton de démarrage pour démarrer le jeu. Et si nous mourons, le jeu se termine toujours et le bouton de démarrage ne s'ouvre pas. En effet, si nous accédons au code Sprite du joueur en bas de Define Explode, nous arrêtons actuellement tous les scripts Nous pouvons le supprimer maintenant et nous pouvons également supprimer le bloc d'attente puisque nous attendons désormais dans la toile de fond. Bien, essayons encore une fois. Si nous commençons le jeu et que nous mourons, le joueur explose. Nous faisons une courte pause et le bouton de démarrage réapparaît. Cependant, comme nous n'arrêtons pas les scripts, les astéroïdes et les micros fonctionnent toujours normalement Pour résoudre ce problème, examinons d'abord code Sprite de l'astéroïde Et ici, nous voulons arrêter tous les scripts Sprite lorsqu'ils reçoivent le message d' écran ShowTitle Pour ce faire, introduisons un bloc W I receive et définissons-le sur « Quand je reçois l'écran ShowTitle Passons ensuite à Control, introduisons un bloc d'arrêt. Et configurez-le pour arrêter les autres scripts dans Sprite. Cependant, tout cela ne fera que geler les clones d'astéroïdes présents sur scène. Donc, si le sprite est un clone, nous voulons également le supprimer et réduire le nombre de clones. Mais comme nous en avons discuté, lors de la création du sprite de flamme, non seulement les clones recevront le message d'écran du titre de l'émission, mais aussi le sprite d'astéroïde d'origine Donc, si nous réduisons simplement le nombre de clones dans le script, le compteur ne sera pas précis. Pour résoudre ce problème pour le sprite Flame, nous avons créé une variable I Clone, que nous avons définie sur false lorsque le drapeau vert est cliqué et sur true lorsque je démarre en tant que script de clonage Ensuite, lorsque je reçois la mort d'un joueur, nous vérifions si le sprite est un clone , puis nous réduisons le compteur et supprimons le clone Nous pouvons faire la même chose pour l'astéroïde sprite. Donc, d'abord, nous pouvons le copier si je clone un bloc égal à vrai dans les sprites de l'astéroïde Maintenant, si nous revenons à l'astéroïde Sprite, nous pouvons ajouter le nouveau bloc IN au script écran titre de l'émission Cela devrait également créer automatiquement une variable is clone pour le sprite, comme nous pouvons le voir si nous vérifions les variables Maintenant, nous devons définir la variable sur false lorsque le drapeau vert est cliqué et sur true lorsque je démarre en tant que script de clonage Alors d'abord, passons aux événements et apportons un drapeau vert, cliquez sur Bloquer. Revenons ensuite aux variables, introduisons un ensemble à bloquer et définissons is clone sur false. Ensuite, vers le début, lorsque je commence en tant que clone, ajoutons un autre ensemble à bloquer et définissons ce clone sur true. Il ne nous reste plus qu'à faire de même pour le pick-up sprite. Et pour nous faciliter la vie, nous pouvons copier à la fois le script du drapeau vert et le script l'écran du titre de l'émission dans le pick-up Sprites Passons maintenant au Pickup Sprite et réorganisons les scripts Dans le W I start en tant que script de clonage, n' oublions pas d'introduire un bloc set two et de définir son clone sur True. Maintenant, si nous lançons le jeu et que nous mourons après une courte pause, les astéroïdes et les micros disparaissent avant que le bouton de démarrage ne revienne En fait, nous avons un problème avec le compteur de clones. Comme nous pouvons le constater, si nous arrêtons le jeu lorsque la valeur totale du clone est supérieure à zéro, le fait de cliquer sur le drapeau vert ne réinitialise pas la variable Le compteur n' est donc plus précis. Cela est dû au fait que nous sommes en train de réinitialiser le compteur de clones et le sprite d'astéroïde, ainsi démarrage du jeu lorsque je recevrai Pour résoudre ce problème, supprimons le bloc total défini à partir d'ici. Passons plutôt au code de fond et ajoutons un bloc set two au script Green Flag, en mettant le total des clones à zéro. Maintenant, si nous relançons le jeu, le compteur de clones devrait commencer à sept pour les clones à sept chiffres Si nous cliquons sur Start Game and Die, si tout fonctionne correctement, lorsque le bouton de démarrage revient, le nombre de clones devrait redescendre à sept. Sympa. OK, pour terminer le bouton Démarrer, ajoutons-y quelques effets. Tout d'abord, revenez dans le code Sprite du bouton Démarrer. Si vous démarrez le jeu avant de disparaître, Si vous démarrez le jeu avant de disparaître les sprites augmenteront leur luminosité Pour ce faire, passons à Looks, ajoutons un effet défini à bloquer avant le bloc de répétition, et réglons l'effet de luminosité à un niveau assez élevé, par exemple 80. Cela signifie que nous devons également réinitialiser l'effet de luminosité dans le script de l'écran titre de l' émission. Ajoutons donc un effet défini pour bloquer en haut du script et réglons la luminosité à zéro. Maintenant, si nous lançons le jeu et que nous cliquons sur le bouton Démarrer, il devient plus lumineux avant de disparaître. Cela se produit également si nous appuyons sur la touche espace. Ensuite, lorsque le joueur passe la souris sur le bouton, nous lui donnons une animation de croissance Et lorsqu'ils éloigneront leur souris du bouton, nous le réduirons à sa taille normale. En fait, nous l'avons fait pour le bouton Play Again et nous avons frappé quelques taupes Et si nous le voulons, nous pouvons copier le code en arrière-plan et l'utiliser pour faire des ravages cosmiques Mais juste au cas où vous n'auriez pas accès à votre projet S Maxims, je vais refaire le code dans Cosmic Pour commencer, passons au contrôle, ajoutons un bloc if then else au bas du bloc pour toujours et affichons l'écran titre. Pour ce qui est de la condition, passons à la détection et introduisons un bloc de pointeur de souris tactile. Pour la partie I, nous allons augmenter légèrement la luminosité et lui donner une animation fluide. Pour ce faire, allons dans Looks, introduisons un effet défini à bloquer. Et réglons l'effet de luminosité sur 20. Ensuite, introduisons un changement de taille Byblock. Pour la saisie, passons aux opérateurs, introduisons un bloc de division. Utilisez ensuite un bloc de soustraction comme première entrée du bloc de division. Pour le bloc de soustraction, utilisons 120 comme première entrée, et pour la deuxième entrée, revenons à Looks et introduisons un bloc de taille. Et divisons le tout par deux. Cela fera passer la taille en douceur à 120. Dans la partie s, nous voulons supprimer l'effet de luminosité et ramener la taille à 100. Utilisons donc d'abord des doublons des deux blocs de la partie I. Cette fois, nous réglerons la luminosité à zéro et nous soustrairons la taille de 100 Essayons-le maintenant. air bien. Cependant, si nous relançons le jeu, le bouton de démarrage démarre brièvement. Pour résoudre ce problème, en haut du script , il suffit de définir une taille de 100 blocs. Nous y voilà. OK, nous en avons maintenant terminé avec le bouton Démarrer. Ensuite, nous allons travailler sur le logo. 58. Créer le logo: Pour commencer à créer le logo pour l'écran titre, créons un nouveau sprite en cliquant à nouveau sur le bouton Choisir un sprite et en cliquant sur Peindre, et appelons-le Pour le costume, nous utiliserons beaucoup de blanc. Donc, pour que tout soit plus facile à voir, utilisons d'abord l'outil rectangle pour créer un grand rectangle avec un fond noir uni et sans contour. Nous le supprimerons un peu plus tard. Pour le logo proprement dit, nous allons commencer par créer du texte. Utilisons donc l'outil de texte, choisissons le blanc comme couleur de remplissage et créons du texte avec les mots Cosmic Havoc en majuscules Ensuite, prenons l'outil de sélection, agrandissons-le assez gros et centrons-le. On peut aussi l'épaissir un peu en ajoutant un contour blanc Une largeur de deux me semble plutôt bonne. Ensuite, nous allons ajouter des motifs au-dessus et en dessous du texte qui ressemblent à des comètes volant dans l'espace Pour ce faire, utilisons l'outil rectangle, et pour la couleur de remplissage , utilisons l'option de dégradé horizontal ici. Nous allons utiliser le blanc comme première couleur, et nous allons rendre la deuxième couleur transparente. Et nous ne voulons pas d' ébauche pour cela. Maintenant, en commençant un peu en dessous du texte et en l' alignant sur le côté gauche, nous allons créer un mince rectangle presque aussi long que le texte. Zoomons maintenant un peu sur le côté gauche du rectangle. Prenons ensuite l'outil de remodelage et ajoutons un nœud au centre du côté gauche Maintenant, sélectionnons les deux nœuds d' angle en sélectionnant l'un, puis en maintenant la touche Shift enfoncée et en sélectionnant l'autre, et utilisons la flèche droite pour les déplacer légèrement vers la droite. Ensuite, nous pouvons ajuster les poignées du nœud central jusqu'à ce qu'il soit bien arrondi. Passons maintenant au côté droit. Ajoutons un nouveau nœud au centre. Ensuite, pointez le nœud en cliquant sur le bouton pointé en haut. Supprimons maintenant les deux nœuds d'angle. D'accord. Maintenant, faisons un petit zoom arrière. Ensuite, saisissons l'outil de sélection, maintenons la touche ou option enfoncée et faisons glisser l' objet pour le dupliquer. Mettons celui-ci au-dessus du texte, cliquez sur le bouton de retournement horizontal vers le haut et alignez-le avec le côté droit du texte. Enfin, nous pouvons remplacer les Os du texte par des astéroïdes Pour ce faire, examinons d'abord costumes du sprite astéroïde, puis sélectionnons et copions tous les objets dans l'un de ses costumes habituels Revenons maintenant au costume du logo Sprite et collons les objets, puis déplaçons-les au-dessus de l' un des systèmes d' exploitation et redimensionnons-les pour qu'ils s'adaptent un peu mieux à l'espace Nous pouvons maintenant retourner à l'astéroïde Sprite et copier un costume différent Retournez au logo, cliquez sur Coller et masquez l'autre O. Maintenant, pour le moment, nous pouvons toujours voir le système d'exploitation derrière les astéroïdes, ce que nous ne voulons pas Donc, pour résoudre ce problème, sélectionnons le texte et utilisons l'outil de texte. Remplaçons ensuite chaque O par quelques espaces. Allons-y. Maintenant, nous pouvons nous débarrasser du rectangle noir. Pour la position du logo Sprite, nous voulons le centrer près du haut de la scène Il semble qu'un X de zéro et un Y de 100 devraient être bons. Passons maintenant à l'onglet « code ». Pour commencer à coder le sprite, passons aux événements, introduisons un bloc W I receive et réglez-le sur W I receive show title screen abord, au cas où nous déplacerions accidentellement le logo, assurons-nous qu'il commence dans la bonne position en passant en mouvement et en introduisant un bloc Go to XY, et il devrait déjà être réglé un X de zéro et un Y de 100. Ensuite, comme pour le bouton de démarrage, nous allons masquer le sprite, attendre une demi-seconde, puis faire disparaître le sprite Passons donc à Looks et ajoutons un bloc de masquage. Passons ensuite à Control, introduisons un bloc de poids et faisons-le attendre 0,5 seconde. Nous voulons maintenant montrer le sprite. Revenons donc à Looks et ajoutons un bloc d'affichage. Ensuite, nous allons commencer à rendre le sprite invisible en introduisant un effet défini à bloquer et en réglant l'effet fantôme à 100 Ensuite, pour faire disparaître le sprite, passons au contrôle, introduisons un bloc de répétition et répétons 20 fois Revenons ensuite à Los, ajoutons un effet de changement par bloc au bloc de répétition et modifions l'effet fantôme par moins cinq. Si nous lançons le jeu maintenant, le logo s'estompe en même temps que le bouton Démarrer le score est actuellement affiché en haut du logo, Cependant, le score est actuellement affiché en haut du logo, ce que nous allons corriger dans un instant. Mais d'abord, nous voulons également faire disparaître le logo lorsque nous cliquons sur le bouton Démarrer. Dans le script de démarrage du jeu défini par les boutons Démarrer, nous sommes en train de supprimer le sprite, puis de diffuser le message de démarrage du jeu Donc, ce que nous pourrions faire avec le logo Sprite, c'est recevoir le message de démarrage du jeu, puis faire disparaître le Sprite Cependant, étant donné que nous diffusons le message après avoir effacé le bouton Démarrer, le logo disparaîtra une fois que le bouton Démarrer aura déjà fini de disparaître, ce qui semblerait étrange Nous voulons qu'ils disparaissent en même temps. Au lieu de cela, avant de désactiver le bouton Démarrer, nous pouvons diffuser un message différent pour indiquer aux autres sprites de l'écran titre qu'il est temps de disparaître Pour ce faire, passons aux événements et ajoutons un bloc de diffusion en haut du jeu Define Start. Diffusons le nouveau message, et nous pouvons dire que c'est un début de partie. Revenons maintenant au logo Sprite, et ajoutons un bloc quand je reçois, en réglant sur le moment où je reçois le début de la partie Ensuite, pour faire disparaître le sprite, passons d'abord au contrôle, introduisons un bloc de répétition et répétons 20 fois. Passons maintenant à Los et changeons effet par bloc en bloc de répétition et changeons l'effet fantôme par cinq. Enfin, masquons les sprites en plaçant un bloc de masquage sous le bloc de répétition. Si nous lançons le jeu maintenant et que nous cliquons sur le bouton Démarrer, deux sprites disparaissent en même temps Ensuite, nous allons faire en sorte que le score n'apparaisse pas sur l'écran titre. Pour ce faire, passons au code de fond. Pour masquer facilement le score lorsque vous cliquez sur le drapeau vert, au lieu de définir la variable de score à zéro dans le script du drapeau vert, nous pouvons lui attribuer une valeur vide Cela fonctionne car cela obligera les clones à chiffres partiels à utiliser le costume à chiffres vides Nous voulons également le faire après la mort du joueur et avant d'afficher nouveau l'écran titre afin de pouvoir dupliquer le score défini pour ne rien bloquer ici, de nous pouvoir dupliquer le score défini pour ne rien bloquer ici, débarrasser des blocs supplémentaires et de mettre celui-ci lorsque j'ai reçu le joueur est mort juste au-dessus de l'écran titre de l' émission. Cependant, nous devons également nous assurer de mettre score à zéro lorsqu'une nouvelle partie commence. Pour ce faire, passons aux événements et introduisons un bloc quand je recevrai. Réglez-le sur lorsque je reçois Start game. Et avant d'afficher le score, ajoutons une courte pause en accédant à Control et en ajoutant un bloc d'attente d'une seconde. Passons ensuite aux variables, introduisons un ensemble à bloquer et fixons le score à zéro. Si nous lançons le jeu maintenant, le score n' apparaît pas sur l'écran titre, mais une fois que nous avons cliqué sur Démarrer le jeu, le score apparaît au bout d'une seconde environ Nous devrions fabriquer les astéroïdes et les micros, attendre une seconde avant d' apparaître afin que le score ne soit pas fixé à zéro une fois le joueur a déjà marqué quelques points Pour ce faire, entrons d'abord dans le code du sprite de l'astéroïde, et avant le blocage permanent, et quand je recevrai Start Game, passons à Control et ajoutons un bloc d'attente d'une seconde Passons maintenant au pick-up sprite. Et encore une fois, avant le blocage permanent du script de démarrage du jeu, attendons 1 seconde. Et essayons-le. Allons-y. De plus, lorsque le joueur meurt, avant que l' écran titre ne réapparaisse, le score disparaît, tout comme les astéroïdes et les micros Bien, pour terminer le logo, inclinons-le vers la gauche et vers la droite. Je pense que ça aurait l'air plutôt cool. Pour cela, revenons au code du sprite du logo. Pour obtenir cet effet, nous allons utiliser un peu de trigonométrie Cela peut être un peu confus au début, mais je vais vous l'expliquer au fur et à mesure. Créons d'abord une nouvelle variable en accédant à variables et en cliquant sur Créer une variable. Nous allons utiliser la variable pour contrôler l'angle du sprite Appelons-le angle et faisons-le uniquement pour ce sprite. Maintenant, au bas du script de l'écran titre de l' émission, introduisons un ensemble à bloquer et définissons l'angle à zéro. Passons ensuite au contrôle et introduisons un blocage permanent. Passons ensuite au mouvement et ajoutons un bloc de points et de directions au bloc permanent. Passons ensuite aux variables, modifions-le par bloc et changeons l'angle un par un. Ce que nous allons faire ici, c'est qu' en mettant continuellement à jour la valeur de la variable d'angle, nous utiliserons le sinus de la valeur pour définir la direction des sprites Pour voir comment cela va fonctionner. Passons aux opérateurs, introduisons un abdos de bloc dans un espace vide. Et au lieu des abdos, choisissons la fonction sin. Si nous utilisons un zéro comme valeur et que nous cliquons sur le bloc, nous récupérons zéro car le sinus de zéro est nul. L'utilisation des nombres de 0 à 90 nous donnera des valeurs de 0 à 1. Si nous en utilisons 90, cela nous en donne un. Lorsque nous dépassons 90, la valeur commence à redescendre à zéro. Jusqu'à ce que nous arrivions à 180, quand il redevient zéro, 180-270, nous obtenons des valeurs négatives comprises entre zéro et moins Et enfin à 360, on revient à zéro et les valeurs se répètent. Cela crée ce que l' on appelle une onde sinusoïdale, et nous pouvons l'utiliser pour donner à notre sprite une rotation fluide L'utilisation de valeurs aussi petites est cependant assez inutile car cela ne fera pivoter le sprite que d'un degré, ce qui ne sera même pas perceptible Ce que nous pouvons faire, c'est multiplier la valeur par une autre valeur pour l'augmenter. Pour ce faire, introduisons un bloc de multiplication. Et utilisons l' envoi du bloc comme première entrée et multiplions le par cinq. Cela nous donnera des valeurs comprises entre moins cinq et cinq. Cependant, l'utilisation de ces valeurs comme direction du sprite le fera pointer droit vers le haut ou vers le bas lorsqu'il s'incline Pour le rendre horizontal, nous pouvons ajouter 90 à la valeur, qui nous donne quelque chose comme ça. Ajoutons donc un bloc d'addition. Utilisez tout cela comme première entrée et ajoutez-le à 90. Enfin, au lieu de saisir le chiffre correspondant au cent de bloc, nous utiliserons la variable angle. Passons donc aux variables et introduisons un bloc d'angle. Et maintenant, nous pouvons mettre tout cela dans le bloc point et direction. Si nous lançons le jeu maintenant, le logo s' incline doucement vers la gauche et la droite Pour augmenter le degré d'inclinaison, nous pouvons le multiplier par un nombre supérieur à cinq. Mais je trouve que cinq c'est plutôt bien. Nous pouvons également augmenter la vitesse d'inclinaison en modifiant l'angle d'une valeur plus élevée, par exemple deux. C'est mieux Il y a cependant quelques améliorations que nous pouvons apporter. Tout d'abord, si nous arrêtons le jeu lorsque le logo est incliné et que nous cliquons à nouveau sur le drapeau vert, le sprite repart incliné Ce n'est pas terrible, mais cela provoque un saut lorsque la direction passe immédiatement à 90 au début de l'animation d'inclinaison. Pour résoudre ce problème, nous pouvons passer au mouvement et ajouter un point dans bloc 90 en haut du script de l'écran titre de l'affichage. C'est bien mieux. Ensuite, si nous cliquons sur le bouton Démarrer, même si nous ne pouvons plus voir le logo, l'animation d'inclinaison continue de s'exécuter. C'est assez inefficace. Pour l'empêcher de s'exécuter lorsqu'il n'est plus nécessaire, nous pouvons accéder à Control, placer un bloc d'arrêt dans un espace vide, le configurer pour arrêter d'autres scripts et sprites, et le placer en haut ou en bas du script Start Game Le placer en haut empêchera le sprite de s'incliner avant qu'il ne disparaisse, et le placer en bas arrêtera l' inclinaison une fois le sprite Quoi qu'il en soit, le démarrage du jeu empêchera le script du logo Sprite show title screen de s'exécuter en continu Enfin, parce que nous savons qu' une fois que la variable d'angle atteint 360, les valeurs sinusoïdales recommencent à zéro. Au lieu de laisser la variable augmenter à l'infini, nous pouvons la remettre à zéro une fois qu'elle atteint 360. Une façon de le faire est d'aller voir les opérateurs et d'apporter un bloc de mods. Mood ou module divisera la première valeur par la deuxième valeur et nous donnera le reste. Ainsi, par exemple, deux mods dix nous donnent deux , soit le reste de 2/10, mais dix mod dix nous donnent zéro car dix, bien sûr, se divise également, ce qui donne zéro pour le reste 13 mod dix est trois et 20 mod dix est zéro. Fondamentalement, le résultat sera toujours un nombre compris entre zéro et le bon nombre soustrait par un Donc, ce que nous pouvons faire, c'est qu'après avoir changé l'angle par deux, nous pouvons accéder aux variables, un ensemble à bloquer, y ajouter le bloc mod et régler l'angle par rapport à l'angle mod 360. Cela forcera la valeur de l'angle à rester comprise entre 0 et 359. Ce n'est pas tout à fait nécessaire, mais c'est certainement plus efficace. Car laisser la valeur de l'angle augmenter de plus en plus peut utiliser inutilement la mémoire de notre ordinateur Si nous lançons le jeu, nous pouvons voir que l'animation d'inclinaison fonctionne de la même manière qu'avant. Très bien, nous pouvons maintenant masquer la variable d'angle, ce qui prend en compte deux éléments de l'écran titre Ensuite, nous allons travailler à donner au joueur la possibilité de changer de costume de sprite 59. Costumes de joueur de Switch: Au centre de l'écran titre, nous aurons un grand écran affichant le costume actuel du joueur sprite, ainsi qu'une flèche de chaque côté sur laquelle le joueur pourra cliquer pour passer d'un costume à l' Nous allons commencer par ajouter la présentation des costumes au centre de la scène. Tout d'abord, déplaçons légèrement le bouton de démarrage vers le bas pour qu'il ne gêne pas. Et en fait, allons-y et définissons la position de départ du bouton de démarrage. Nous allons le centrer verticalement avec un X de zéro, et je pense qu'un Y de moins 100 devrait être une bonne chose. Ainsi, dans le code du sprite du bouton de démarrage, nous pouvons passer au mouvement Et ajoutez un bloc Go to XY en haut du script de l'écran de titre de l' affichage, en le réglant à la bonne position. Passons maintenant au code Sprite du joueur. Ce que nous allons faire, c'est afficher le sprite du joueur au centre de la scène et le rendre un peu plus grand que d'habitude Et comme pour le logo et le bouton de démarrage, nous attendrons d'abord une demi-seconde, puis nous disparaîtrons dans le sprite Pour commencer, passons aux événements et introduisons un bloc «   Quand je reçois », en réglant sur « Quand je reçois l'écran titre de l'émission ». Cachons d'abord le sprite en allant à Los et en introduisant un bloc de masquage. Allons-y également et introduisons un bloc d'effets graphiques clair pour effacer les effets que nous utilisons lorsque nous détruisons le joueur. Passons ensuite à Control, apportons un bloc de poids et attendons 0,5 seconde. Déplaçons ensuite le sprite au centre de la scène en passant en mouvement, en introduisant un bloc Go to XY et en le faisant passer à 00 Ensuite, nous montrerons le sprite en allant à Los et en apportant un bloc d'exposition. Et agrandissons-le également en introduisant un bloc de taille fixe de deux, et environ 150 % devraient être une bonne solution Enfin, nous allons faire disparaître le sprite. Comme nous l'avons déjà fait plusieurs fois, je voudrais vous mettre au défi de suspendre la vidéo maintenant et de créer le code vous-même. titre indicatif, nous devons d'abord rendre le sprite transparent, puis le rendre de plus en plus opaque et nous le ferons en 20 répétitions Très bien, donc d'abord, pour rendre le sprite transparent, introduisons un effet défini pour le bloquer et réglons l'effet fantôme sur 100 Passons ensuite au contrôle, introduisons un bloc de répétition et répétons 20 fois. Revenons maintenant à Los, en changeant d'effet par bloc en bloc de répétition et modifiant l'effet fantôme par moins cinq. Et c'est tout. Si nous lançons maintenant le jeu, le sprite du joueur s'estompe avec les autres sprites de l'écran titre et il est également plus grand et centré sur Nous devons maintenant corriger certaines choses pour le début du jeu , car si nous cliquons sur le bouton Démarrer, le sprite du joueur reste gros et est toujours centré sur la scène Il vaudrait mieux que cela commence en bas de la scène, à l'abri du danger. Nous allons donc vérifier la présence du message de début de jeu diffusé lorsque nous cliquons sur le bouton Démarrer et nous allons faire message de début de jeu diffusé lorsque nous cliquons sur disparaître le sprite du joueur Ensuite, dans le script de démarrage du jeu, nous allons remettre la taille à 100, déplacer le sprite vers le bas de la scène et le faire disparaître rapidement Pour commencer, le Sprite disparaîtra dès qu'il recevra le message de démarrage du jeu Pour ce faire, passons aux événements, introduisons un bloc W I receive et configurons-le pour qu'il reçoive le début de la partie. Nous pouvons maintenant ajouter une copie du bloc de répétition à partir du script de l'écran de titre de l' affichage. Mais cette fois, nous voulons modifier l'effet fantôme par un facteur positif de cinq. Ensuite, nous allons libérer de l'espace pour le script Start Game. Maintenant que nous ne cachons pas le sprite une fois qu'il disparaît, nous n'avons plus besoin du bloc d' affichage ici pour pouvoir nous en débarrasser De plus, comme nous allons réintégrer le sprite, nous ne voulons pas effacer les effets graphiques Supprimons donc également ce bloc. Maintenant, avant le bloc permanent, rétablissons la taille à 100 en accédant à Looks et en introduisant une taille définie à 100 % du bloc. ensuite à la position, passons au mouvement et introduisons un bloc Go to XY. Et nous voulons utiliser zéro pour X pour le centrer verticalement, et pour Y, essayons quelque chose comme moins 100. Enfin, nous pouvons ajouter une copie du bloc de répétition depuis Afficher l'écran titre, mais nous allons accélérer un peu l'animation en répétant dix fois et en modifiant l'effet fantôme par moins dix. Essayons-le maintenant. Cliquez sur Démarrer pour faire disparaître le sprite du joueur, puis il redevient plus petit et se rapproche du bas de la scène Maintenant, nous devons également travailler sur la flamme, qui apparaît actuellement sur l'écran titre. Passons donc au code du Flame Sprite. Tout d'abord, lorsque vous cliquez sur le drapeau vert, masquons le sprite en accédant à Looks et en insérant un bloc de masquage Nous le cachons déjà lorsque le joueur meurt Il devrait donc être masqué chaque fois que l' écran titre réapparaît. Ensuite, lorsque je recevrai Start Game, au lieu d' afficher immédiatement le sprite, attendons un peu en allant dans Control et en ajoutant un bloc d'attente avant le bloc d'affichage. Un poids de 0,5 seconde devrait fonctionner. Essayons-le maintenant. Disons que ça a l'air plutôt bien. Il ne reste plus qu'à créer les boutons permettant au joueur de changer de costume. Pour ce faire, nous devons créer un nouveau sprite. Allons choisir un sprite, cliquez sur Paint, et nous allons commencer par le bouton droit Appelons-le bouton. Pour le costume, nous allons créer un triangle orienté vers la droite. Pour ce faire, utilisons d'abord l' outil rectangle et pour la couleur de remplissage, choisissons l'option de dégradé horizontal. Pour la première couleur, on opte pour un gris clair. Et pour la deuxième couleur, opte pour le blanc pur. Ensuite, pour le contour, donnons-lui également un dégradé horizontal. Utilisons du blanc pur pour la première couleur et un gris moyen à foncé pour la deuxième couleur. Réglons ensuite la largeur du contour sur cinq. Cela peut, pour une raison ou une autre, réinitialiser la couleur du contour en noir uni. Essayons donc encore une fois. Choisissez l'option de dégradé horizontal, faites en sorte que la première couleur soit blanche et que la seconde soit gris moyen à gris foncé. Allons-y. Zoomons maintenant un peu sur le canevas, maintenons la touche Maj enfoncée et dessinons un carré d'environ neuf ou dix blocs de diamètre. Ensuite, prenons l'outil de remodelage et supprimons le nœud en bas à gauche Ensuite, saisissons l'outil de sélection et faisons-le pivoter une fois dans le sens des aiguilles d'une montre tout en maintenant Centrez-le également. Nous pouvons maintenant revenir à l'outil de remodelage et arrondir les angles en utilisant la méthode des nœuds supplémentaires que nous avons utilisée auparavant Je vais faire en sorte que celui de droite soit un peu plus arrondi que les autres. Et pour corriger les angles coupés sur la scène, prenons l'outil rectangulaire, donnez-lui un remplissage et un contour solides et transparents. Et créons un rectangle invisible autour de la forme. OK, passons maintenant à l'onglet « code ». Pour commencer, nous voulons positionner correctement le bouton. Nous allons le centrer horizontalement sur la scène avec un Y de zéro, et il semble qu'un X de 70 devrait fonctionner. Donc, pour commencer à coder le sprite, passons aux événements, introduisons un bloc W I receive et recevons l'écran titre de l' émission Passons ensuite au mouvement et introduisons un bloc Go to XY, en nous assurant qu'il est réglé sur la position souhaitée. Ensuite, comme pour tous les autres sprites de l'écran titre, nous allons masquer le sprite, attendre une demi-seconde, puis le faire disparaître De plus, comme pour le bouton de démarrage, nous allons faire grossir le bouton fléché lorsque le joueur le survole et le réduire lorsqu'il s'en éloigne. Donc, si nous entrons dans le code Sprite du bouton Démarrer, nous pouvons essentiellement utiliser les mêmes blocs que ceux que nous utilisons dans le script d'affichage du titre de l'écran, en commençant par le bloc Masquer quelques exceptions près, bien sûr Alors allons-y et dupliquons tous ces blocs en cliquant avec le bouton droit sur le bloc Masquer et en choisissant Dupliquer, et placons-les dans un espace vide. Nous n'avons pas besoin du premier si vous bloquez ici pour démarrer le jeu, alors éliminons-le. Nous ne modifierons pas non l'effet de luminosité lorsque le joueur passe la souris sur le bouton droit Nous pouvons donc également supprimer les deux blocs d' effets de luminosité définis Celui-ci aussi, là-haut. Nous pouvons maintenant copier tout cela dans le sprite du bouton droit, puis les supprimer d'ici Maintenant, si nous revenons au code du bouton droit, nous pouvons joindre tous les nouveaux blocs au bas du script de l'écran de titre de l'affichage. De plus, lorsque le jeu démarre, nous voulons arrêter tout script en cours d'exécution dans le Sprite et le faire disparaître Si nous passons au code Logo Sprite, c'est exactement ce que nous faisons avec le script de démarrage du jeu W IRCeive Nous pouvons donc également le copier dans le sprite du bouton droit. Revenez ensuite sur le bouton droit Sprite et réorganisez un peu les choses Et maintenant, si nous lançons le jeu, le bouton droit s'efface avec tout le reste, il grandit et rétrécit, et si nous démarrons le jeu, il disparaît Cliquons à nouveau sur le drapeau vert pour voir l'écran titre, et maintenant nous allons travailler à la création du bouton, changer de costume de joueur chaque fois que nous cliquons dessus. Pour ce faire, nous devons d' abord créer une variable globale permettant de suivre le costume actuel du joueur. Passons aux variables et créons-en une nouvelle. Nous pouvons l'appeler costume de joueur et le fabriquer pour tous les sprites. Et créons une autre variable globale pour boutons droit et gauche combien de costumes il faut passer d'un costume à l'autre. Disons que c'est le costume total des joueurs. Et cliquez sur OK, et nous pouvons continuer et masquer les deux variables. heure actuelle, si nous allons voir le joueur Sprite et que nous examinons les costumes, nous avons actuellement quatre costumes de vaisseau spatial et un costume de hit box Bien entendu, nous ne voulons pas inclure le costume de hit box lorsque vous changez de costume Nous pouvons donc régler le nombre total de costumes des joueurs à quatre, ce qui indiquera aux boutons qu'ils ne doivent utiliser que des costumes de un à quatre. OK, donc pour configurer tout cela, entrons dans le code Sprite du joueur Et ici, commençons un script de drapeau vert en accédant aux événements et en obtenant un bloc sur lequel vous avez cliqué sur le drapeau vert Revenons maintenant aux variables et ajoutons deux blocs set two au script Green Flag. Nous allons commencer par le joueur Sprite sur le costume 1. Donc, pour le premier set de deux blocs, fixons le costume du joueur à un. Et pour le deuxième bloc, fixons le nombre total de costumes des joueurs à quatre. Nous devons également configurer le costume de sprites pour en déguiser un Passons donc à Looks, introduisons un bloc de costumes, et nous pouvons soit choisir un costume la liste ci-dessous, soit, pour être plus clair, passer aux variables et ajouter un bloc de costumes de joueur. Nous devons maintenant corriger certaines choses dans les autres scripts. Par exemple, dans Démarrer le jeu, n'est plus nécessaire de changer de costume pour pouvoir supprimer ce blocage. Et ici, dans define check hit, après être passés au costume de la case à cocher, au lieu de passer au costume 1, nous voulons passer à la variable costume du joueur Ajoutons donc un bloc de costumes de joueur à chacun des blocs de costumes Switch to Costume One Ensuite, lorsque le joueur clique le bouton droit ou gauche, nous mettons à jour la variable du costume du joueur diffusons le message pour informer le sprite du joueur qu'il doit changer de costume Allons-y et prenons soin de recevoir le message et le sprite du joueur Pour ce faire, nous pouvons nous rendre à des événements et apporter un bloc W I receive, et recevoir un nouveau message, que nous pouvons appeler changement de costume de joueur. Et pour l'instant, nous pouvons simplement ajouter un double du bloc de costume de joueur à partir du script du drapeau vert. Finissons maintenant le code du sprite du bouton droit. Et ici, lorsque le joueur clique sur le Sprite, nous voulons augmenter la variable du costume du joueur et diffuser le message de changement de costume de joueur Alors d'abord, gagnons ce bloc sur lequel ce sprite a cliqué. Et nous allons en fait créer un bloc personnalisé pour changer le costume. Passons donc à Mes blocs et créons-en un nouveau. Nous pouvons appeler cela changer de costume de joueur et cliquer sur OK. Retrouvons ici le bloc de costume défini pour changer de joueur, et ajoutons un bloc de costume de changement de joueur pour gagner le sprite sur lequel vous avez cliqué Ensuite, dans le script de changement de costume de joueur, passons aux variables, modifions-le par bloc et changeons le costume du joueur un par un. Maintenant, nous devons également vérifier si costume des joueurs est supérieur au nombre total de costumes des joueurs, et si c'est le cas, nous le remettrons à un. Passons donc au contrôle, introduisons un si le bloc. Et pour ce qui est de la maladie, allons voir les opérateurs et introduisons un bloc supérieur à 1. Revenons ensuite aux variables et vérifions si le costume du joueur est supérieur au nombre total de costumes des joueurs. Si c'est le cas, apportons un set à bloquer, et fixons le costume du joueur à un. Enfin, après le blocage de l'ITN, nous devons nous rendre aux événements, apporter un bloc de diffusion et changer de costume de joueur Faisons également clignoter les sprites des boutons en les rendant brièvement plus lumineux Pour ce faire, nous pouvons accéder à Looks, ajouter un effet défini à bloquer, et régler l'effet de luminosité à un niveau assez élevé, par exemple 70. Passons ensuite au contrôle, introduisons un bloc d'attente et attendons pendant une très courte période, comme 0,1 seconde. Ensuite, nous supprimerons l'effet de luminosité en revenant à Los, en introduisant un autre effet défini à bloquer et en réglant la luminosité sur zéro. Si nous lançons le jeu maintenant, lorsque nous cliquons sur le bouton droit, il clignote et le sprite du joueur passe au costume suivant Et si nous commençons le jeu, le sprite du joueur continue d'utiliser le costume choisi De plus, si nous mourons et que nous rétablissons l'écran titre, le costume choisi sera toujours utilisé. OK. Et juste pour le fun, faisons en sorte que le costume change en appuyant sur la touche flèche droite. Pour ce faire, dans le bloc permanent de l'écran Afficher le titre, passons à Contrôle et introduisons un bloc ITN. Pour ce qui est de la condition, passons à la détection, introduisons un bloc enfoncé sur une touche et réglons-le sur la touche flèche droite enfoncée. Et si c'est le cas, nous pouvons changer le costume du joueur en allant dans les blocs M et en apportant un bloc de costume de changement de joueur. Si nous lançons le jeu maintenant, nous pouvons également appuyer sur la flèche droite pour changer de costume. Pour le moment, cependant, maintenez la touche flèche droite enfoncée pour changer de costume très rapidement. Si nous ne voulons pas que cela se produise, nous pouvons faire en sorte que le bloc de changement de costume de joueur ne soit lancé qu'une fois le joueur a relâché la flèche droite. Pour ce faire, allons dans Contrôle et ajoutons un bloc d'attente juste avant le blocage du changement de costume de joueur. Pour ce qui est de la condition, allons voir les opérateurs et apportons un bloc à nœuds. Ensuite, nous pouvons dupliquer le bloc enfoncé sur la flèche droite ici et l'ajouter au bloc de nœuds. Si nous essayons à nouveau, le fait maintenir la touche flèche droite enfoncée ne fait rien. Mais dès que nous le sortons, le costume change. Très bien, nous en avons maintenant terminé avec le sprite du bouton droit Pour le bouton gauche, nous pouvons utiliser à peu près le même sprite avec quelques modifications mineures Donc, d'abord, dupliquons le sprite du bouton droit, et appelons-le bouton gauche Passons maintenant à l'onglet costumes et, à l'aide de l'outil de sélection, sélectionnons tous les éléments du costume et retournons-le horizontalement. Ensuite, dans l'onglet code, nous voulons placer le bouton gauche l'autre côté de la scène en tant que bouton droit. Et nous pouvons le faire facilement en annulant la valeur X dans les scripts du drapeau vert, passez au bloc XY. Maintenant, ici, au lieu de vérifier la flèche droite, nous voulons vérifier la flèche gauche dans ces deux blocs. Nous devons maintenant apporter quelques modifications et définir le costume de changement de joueur. Tout d'abord, nous voulons changer le costume du joueur par moins un au lieu de un Ensuite, au lieu de vérifier si costume du joueur est supérieur au nombre total de costumes des joueurs, nous voulons vérifier s' il est inférieur à un, et si c'est le cas, nous le réglerons la valeur du total des costumes des joueurs. Extrayons le bloc total de costumes des joueurs à partir d' ici et ajoutons-le au bloc de costumes du joueur défini. Ensuite, retirons le bloc de costume du joueur et mettons-le de côté, et remplaçons le bloc supérieur par un bloc inférieur à. Et vérifions si le costume du joueur est inférieur à un, et c'est ce qui devrait être le cas. Essayons-le. Nous pouvons maintenant utiliser les deux boutons pour passer d' costume à l' autre. Plutôt génial. Une autre chose que nous pouvons faire pour améliorer un peu cette apparence est de faire disparaître le sprite du joueur et de le déplacer vers le haut, puis de le faire revenir par le bas en utilisant le nouveau costume Cela donnera l'impression que l'ancien vaisseau spatial s'envole et que le nouveau arrive. Pour cela, entrons dans le code Sprite du joueur. Et quand je recevrai un costume de joueur de rechange, retirons le bloc de costumes Switch pour le moment et mettons-le de côté. Passons maintenant au contrôle et ajoutons un bloc de répétition au script. Nous voulons que cela se fasse assez rapidement. Répétons donc seulement quatre fois. Nous allons maintenant déplacer le sprite légèrement vers le haut à chaque répétition en passant au mouvement et en apportant une modification Y par dix blocs. Faisons ensuite disparaître le sprite en accédant à Los, en ajoutant un effet de changement par bloc au bloc de répétition et en modifiant l'effet fantôme de 25 % Ensuite, nous changerons de costume. Faisons glisser le bloc de costume Switch ici en bas du script. Nous devons ensuite régler la position Y du sprite de manière à ce qu'elle soit en dessous du centre de la scène Le sprite commence au centre avec un Y zéro et nous le déplaçons quatre fois vers le haut de dix pas Cela signifie qu'il obtient un Y de 40. Pour que l'animation soit correcte, il suffit de régler la position Y sur moins 40 avant de la remettre à zéro. Passons donc au mouvement, introduisons un bloc Y deux et fixons-le à moins 40. Enfin, nous allons refaire l'intégralité de l'animation , sauf que nous allons faire disparaître le sprite Dupliquons donc le bloc de répétition et placez-le en bas, et nous pourrons nous débarrasser des deux blocs inférieurs. Pour celui-ci, changeons l'effet fantôme par moins 25. OK, essayons-le. Très cool. C'est bon. La prochaine chose que nous allons faire est de suivre le meilleur score du joueur et l' afficher en bas à gauche de l'écran titre. 60. Suivre le meilleur score: Pour implémenter un score élevé, nous allons créer une variable globale pour en assurer le suivi. Et tout au long du jeu, nous comparerons continuellement le meilleur score au score actuel du joueur. Si leur score actuel est supérieur au score le plus élevé, le score actuel deviendra le nouveau meilleur score et nous afficherons le meilleur score en bas à gauche de l'écran titre. OK, donc pour commencer, passons aux variables et créons-en une nouvelle. Nous pouvons appeler cela un score élevé et le faire pour tous les sprites. Et pour le moment, nous allons laisser la variable apparaître sur scène. Ensuite, pour définir le meilleur score, passons au code de la toile de fond. Et quand je recevrai Start Game, nous vérifierons en permanence si score est supérieur au score le plus élevé, et si c'est le cas, nous fixerons score par score. C'est bon. Passons donc d'abord à Control et ajoutons un bloc permanent au bas du script, puis ajoutons un bloc ITN au bloc permanent. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le score est supérieur au score élevé. Si c'est le cas, introduisons un set à bloquer et fixons le meilleur score pour le score. Si nous lançons maintenant le jeu, le meilleur score commence à zéro, et au fur et à mesure que nous marquons des points, le score le plus élevé est fixé à la même valeur que le score. Cependant, si nous mourons, le score le plus élevé ne sera pas remis à zéro. Et si nous recommençons le jeu, le meilleur score reste le même jusqu'à ce que le score actuel augmente. Bien, maintenant que nous savons que le meilleur score fonctionne, nous allons l'afficher en bas à gauche de l'écran titre. Pour cela, nous allons d'abord avoir un texte indiquant le meilleur score, puis nous utiliserons des chiffres pour afficher le meilleur score réel, le meilleur score réel comme nous le faisons avec le score normal. OK ? Alors commençons par créer un nouveau sprite pour le texte en cliquant sur le bouton Choisir un sprite, en choisissant Paint, et nous pouvons l' appeler « texte à score élevé Pour le costume, utilisons l'outil de texte, choisissons le blanc comme couleur de remplissage, zoomons choisissons le blanc comme couleur de remplissage, sur le canevas et créons du texte avec deux points avec un score élevé de deux points. Nous pouvons maintenant saisir le SleckTol et centrer le texte dans le Canvas Et je trouve qu'il est plutôt beau à la taille actuelle. Bien, nous pouvons maintenant déplacer le sprite là où nous le voulons en bas à gauche de la scène Passons ensuite à l'onglet code. Tout ce que nous avons à faire avec le sprite de texte le plus performant, c' est de l'estomper lorsque l'écran titre apparaît et de le faire disparaître au début du jeu, comme nous le faisons avec les autres sprites de l'écran titre Pour commencer, examinons le code des sprites du logo. À partir de là, nous pouvons copier l'écran de titre de l'émission et le moment où je reçois les scripts de démarrage du jeu dans le sprite de texte le plus écran de titre de l'émission et moment où je reçois les scripts de démarrage performant Cependant, pour le script de l'écran du titre de l'émission, nous ne changerons pas l' angle du texte du meilleur score Nous n'avons donc pas besoin du bloc d'angle défini ou de la boucle permanente. Nous pouvons d'abord détacher les blocs du script, puis copier le script restant dans le sprite de texte le plus performant et rattacher les blocs au Et nous pouvons copier l' intégralité du script de départ du jeu tel quel. Nous pouvons maintenant passer au Sprite, une technologie et réorganiser un peu les scripts Et lorsque je reçois l'écran titre de l'émission, nous ne voulons bien sûr pas utiliser 0100 comme position du sprite Dans le bloc Go to XY, remplaçons les entrées X et Y actuelles par les valeurs de position X et Y du sprite de texte ayant les valeurs de position X et Y le meilleur score Je vais utiliser moins 175 pour X et moins 160 pour Y. De plus, comme nous ne ferons pas pivoter le sprite, le bloc point dans la direction 90 n'est pas nécessaire, nous pouvons donc nous en débarrasser si nous le Et c'est tout pour le sprite technologique le plus performant. Si nous lançons le jeu maintenant, il s'estompe avec les autres sprites de l'écran titre, et si nous cliquons sur Démarrer, il disparaît OK, maintenant nous allons travailler sur les meilleurs scores. Pour nous faciliter la vie, nous pouvons commencer par dupliquer le chiffre du score Sprite Et changeons le nom de celui-ci en chiffres les plus élevés. Pour positionner le sprite, passons très rapidement au sprite de texte le plus performant et affichons-le sur scène Revenons ensuite au chiffre le plus élevé , Sprite, et affichons-le également Si vous ne voyez toujours pas le sprite, il utilise probablement le costume vide Donc, pour le voir, il suffit d'aller dans l' onglet costumes et de choisir l'un des costumes non vides. OK ? Revenons maintenant à l'onglet « code ». La taille du sprite est un peu trop grande, alors changeons-la à environ 60 % Ensuite, nous pouvons le déplacer, sorte qu'il se trouve juste à droite du texte ayant obtenu le meilleur score. Maintenant, dans le bloc Go to XY du script Green Flag, nous pouvons utiliser la position actuelle du sprite comme entrées Pour X, j'utiliserai moins 105 et moins 160 pour Y, soit la même position Y que celle que j'utilise pour le texte quadrillé en haut Ensuite, contrairement au score, le meilleur score ne changera pas pendant que nous l'affichons Nous n'avons donc pas besoin de définir en permanence l'exposition ou le costume de chaque chiffre. Au lieu de cela, nous pouvons définir les expositions lors de la création des clones et configurer les costumes au fur et à mesure que l'écran titre apparaît Nous définirons continuellement la taille, agrandissant légèrement les chiffres au départ et en les réduisant à leur taille normale, ce qui aura l'air plutôt cool, mais nous le ferons uniquement lorsque l'écran titre est affiché Donc, lorsque je commencerai en tant que clone, enregistrons le changement de taille par bloc et le changement de costume en bloc. Ensuite, nous pouvons nous débarrasser du reste de la boucle permanente, ne laissant que le total des clones de modification d'un bloc et le bloc d'affichage à l'intérieur du script When I start en tant que script de clonage. Maintenant, pour définir l' exposition de chaque clone, nous allons le faire dans le bloc de répétition du script Green Flag en déplaçant le sprite un peu vers la droite après avoir créé chaque clone Passons donc au mouvement, ajoutons une modification x par bloc au bas du bloc de répétition, et modifions-la de 15. Ensuite, comme le meilleur score peut être différent, chaque fois que l'écran titre apparaît, nous définirons les costumes de chaque clone. Pour ce faire, passons d' abord aux événements, lançons un nouvel écran intitulé Quand je reçois le script et recevrai lançons un nouvel écran intitulé Quand je reçois le titre de l' émission. Et ici, nous allons attendre un peu, puis changer de costume. Passons donc à Control et introduisons un bloc d'attente, et attendons 0,75 seconde. Ensuite, nous pouvons apporter le bloc de costumes rechange que nous avons enregistré ici. Au lieu d'utiliser la variable score, nous voulons utiliser le score élevé, afin de pouvoir cliquer avec le bouton droit sur le bloc de score et le changer en score élevé. Nous voulons également définir en permanence la taille sur la valeur par défaut de 60 pendant que l' écran titre s'affiche car nous allons commencer par les chiffres un peu plus grands, puis les réduire. Et nous ne voulons pas attendre avant de le faire. Nous devrons donc le faire séparément lorsque je recevrai le script d' écran ShowTitle Passons donc aux événements et ajoutons-en un autre lorsque je reçois un bloc et que je reçois l'écran titre de l'émission. Passons ensuite au contrôle et introduisons un blocage permanent. Et maintenant, nous pouvons récupérer le changement de taille par bloc que nous avons enregistré ici et l'ajouter au bloc permanent. Pour le moment, cependant, le bloc ramènera la taille à 100 %. Alors changeons le 100 ici en 60. De plus, dans le script de changement de costume, faire passer la taille de 160 à 60, c'est un peu trop. Donc, dans le bloc de taille défini ici, remplaçons le 160 par le 90. Si nous lançons le jeu maintenant, nous voyons actuellement tous les clones de chiffres, et seul le premier affiche réellement les bons chiffres Cela se produit parce que nous créons les clones en sept répétitions du bloc de répétition dans le script Green Flag Et comme nous l'avons déjà appris, chaque répétition se produit au cours d'une image distincte. Et comme la toile de fond diffuse le message d'écran du titre de l'émission lorsque vous cliquez sur le drapeau vert, lorsque le chiffre le plus élevé reçoit le message, Sprite a en fait créé que le premier clone Cela signifie que seul le premier clone a la possibilité d'exécuter les scripts de l'écran de titre de l'émission et de changer de costume. Pour résoudre ce problème, nous avons besoin que le bloc de répétition exécute toutes ses répétitions au cours d'une seule image, ce que nous pouvons faire en utilisant un bloc personnalisé avec la fonction d'exécution sans rafraîchissement d'écran Allons dans Mes blocs et créons-en un nouveau. Nous pouvons l'appeler créer des clones. Assurez-vous de cocher la case Exécuter sans rafraîchir l'écran et cliquez sur OK. Déplaçons le bloc Create Clones défini dans un espace vide. Déplaçons ensuite le bloc de répétition du script drapeau vert vers le script de création de clones, et ajoutons un bloc de création de clones au bas du script drapeau vert En fait, déplaçons également l'index défini vers un bloc entre le script Green Flag et le haut des clones de création définis, où cela a un peu plus de sens Si nous lançons maintenant le jeu, nous ne voyons que le nombre correct de chiffres et ils indiquent correctement le meilleur score. Cependant, si nous passons très rapidement à l'onglet costumes, passons à l'un des costumes non vides et que nous lançons le jeu, nous voyons à nouveau brièvement tous les clones numériques. Pour éviter que cela ne se produise, il suffit de faire en sorte que tous les clones commencent par utiliser le costume vide Pour ce faire, dans le script Create Clone, allons dans Looks, ajoutons un bloc de costume switch en haut du script et passons ajoutons un bloc de costume switch en haut du script au costume numérique. Maintenant, si nous passons à nouveau manuellement à un autre costume et que nous lançons le jeu, nous ne verrons pas tous les chiffres supplémentaires. , si nous cliquons sur le bouton de démarrage Cependant, si nous cliquons sur le bouton de démarrage, les chiffres les plus élevés ne disparaissent pas. Pour résoudre ce problème, lorsque nous démarrons le jeu, nous devons remettre les costumes au costume vide. Pour ce faire, revenons au code, passons d'abord aux événements et en ajoutons un autre lorsque je reçois un blocage, et recevons le message de début de partie. Et ici, en plus de changer de costume, nous pouvons également arrêter les autres scripts. Ainsi, la boucle Forever dans le script de l'écran titre de la deuxième émission ne continue pas à s'exécuter inutilement OK ? Passons donc à Control, ajoutons un stopblock lorsque je reçois Start Game et arrêtons les autres scripts et sprites Et maintenant, nous pouvons passer à Looks, apporter un bloc de costumes et passer au costume numérique. Cela fera disparaître les chiffres juste avant le début du jeu. Si nous voulons qu'ils disparaissent dès que nous cliquons sur le bouton Démarrer, au lieu de recevoir le message de démarrage du jeu ici, nous pouvons recevoir le message de démarrage du jeu. Je pense que ça a l'air un peu mieux. Une façon d'améliorer l'affichage des meilleurs scores est qu'au lieu de faire apparaître tous les chiffres en même temps, nous pouvons ajouter un peu de délai entre chacun d'eux pour ce faire. Et lorsque je reçois l'écran titre de l' émission, après avoir attendu 0,75 seconde et avant de changer de costume, nous pouvons utiliser la valeur d'index actuelle des clones pour la faire attendre un peu plus longtemps Pour cela, allons dans Control et ajoutons un autre bloc d'attente après le premier. Pour le temps de pondération, nous voulons prendre la valeur de l' indice des clones et la multiplier par une autre petite valeur Passons aux opérateurs et ajoutons un bloc de multiplication au deuxième bloc de pondération. Passons ensuite aux variables, et faisons un index multiplié par 0,1. Ainsi, plus l'indice des clones est élevé, plus ils attendront longtemps avant d'apparaître Donc, si nous lançons maintenant le jeu, les chiffres apparaissent les uns après les autres. Pour mieux voir les choses, plaçons un ensemble à bloquer dans un espace vide, et attribuons le meilleur score à quelque chose contenant un grand nombre de chiffres, comme un, deux, trois, quatre, cinq, six. Cliquons sur le bloc pour définir la variable, et si nous lançons maintenant le jeu, nous pouvons voir les six chiffres apparaître les uns après les autres. Ça a l'air vraiment génial. Très bien, je vais mettre le meilleur score à zéro et me débarrasser du bloc du score le plus élevé. Et une autre amélioration que nous pouvons apporter est que lorsque le joueur meurt après avoir atteint un nouveau record, nous pouvons faire apparaître un texte à l' écran qui dit quelque chose comme un nouveau meilleur score. Pour ce faire, nous devons d'abord créer un nouveau sprite pour le texte Passons donc au bouton Choisir un sprite, cliquez sur Paint et appelons-le NWHigh Pour le costume, nous utiliserons du texte blanc. Pour faciliter la visibilité sur le canevas, utilisons abord l'outil rectangle, choisissons une couleur de remplissage aléatoire sans contour, puis créons un grand rectangle recouvrant la zone de scène du canevas. Maintenant, prenons l'outil de texte. Choisissez le blanc comme couleur de remplissage. Et créez du texte. Nous voulons que le texte indique nouveau score élevé sur deux lignes distinctes. Mais si nous appuyons sur la touche Entrée pour passer à la ligne suivante et commencer à taper, le texte n'est pas centré. Ainsi, au lieu de créer un objet texte de deux lignes, nous allons créer un objet de texte distinct pour chaque ligne. OK, donc pour le premier, tapons un nouveau high. Maintenant, prenons l'outil de sélection et centrons le texte dans le canevas. Commençons ensuite à le déplacer vers le haut, et si nous maintenons la touche Shift enfoncée, nous pouvons le garder centré verticalement. Ensuite, tout en maintenant la touche Alt ou Option enfoncée, cliquons et faisons à nouveau glisser le texte pour créer une copie, puis déplaçons celui-ci légèrement vers le bas. Ensuite, à l'aide de l'outil de texte, changeons le texte de celui-ci pour marquer. Nous pouvons maintenant saisir l'outil de sélection et centrer l'objet texte. Et si nécessaire, nous pouvons utiliser les flèches haut et bas pour ajuster un peu le positionnement. Maintenant, sélectionnons les deux objets de texte et centrons la sélection dans le canevas. Ensuite, tout en maintenant la touche Alt ou Option enfoncée, augmentons-les un peu. Ensuite, nous allons donner une ombre noire aux objets de texte. Pour ce faire, les deux objets étant toujours sélectionnés , copiez-les et collez-les. Donnons aux copies une couleur de remplissage noire. Placez-les un peu vers le bas et à droite des originaux et cliquez plusieurs fois sur le bouton de retour pour les placer sous les originaux Et maintenant, nous pouvons nous débarrasser du rectangle. OK ? Passons maintenant à l'onglet code. Nous voulons nous assurer que le sprite n'apparaisse pas lorsque nous lançons le jeu pour la première fois Passons donc aux événements et lançons un script de drapeau vert. Et ici, allons dans Looks et ajoutons un bloc de masquage. Allez-y également et assurez-vous que le sprite est centré sur la scène Passons donc au mouvement, introduisons un bloc Go to XY et passons à 00. Bon, pour ce qui est de l' affichage du Sprite, la toile de fond diffusera le message indiquant que le joueur est mort et a atteint un nouveau score, et le nouveau sprite ayant obtenu le meilleur score recevra le message et disparaîtra sur la Pour ce faire, passons aux événements et apportons un bloc quand j'ai reçu. Nous allons recevoir un nouveau message, que nous pouvons appeler nouveau High Score. Ici, nous voulons d'abord montrer le sprite. Passons à Looks et ajoutons un bloc d'affichage. Nous voulons également qu'il soit sur la couche avant. Passons à un bloc de couche avant. Ensuite, nous allons faire disparaître le sprite, ce qui signifie que nous devons le rendre transparent au départ Introduisons un effet défini pour bloquer et fixons l'effet fantôme à 100. Passons maintenant au contrôle et introduisons un bloc de dix répétitions. Enfin, revenons à Looks, ajoutons un effet de changement par bloc au bloc de répétition et modifions l'effet fantôme par moins dix. Mais rien de tout cela ne fonctionnera pour le moment, car la toile de fond ne diffuse pas encore le nouveau message du meilleur score. Passons au code de fond. Lorsque je reçois le décès d'un joueur, nous voulons diffuser le nouveau message du meilleur score, mais nous voulons le faire uniquement si le joueur a effectivement atteint un nouveau record. Cela signifie que nous devrons savoir si le joueur a atteint ou non un nouveau score élevé, ce que nous pouvons faire à l'aide d'une variable. Passons aux variables et créons-en une nouvelle. On peut appeler cela un nouveau record. Et nous n'avons pas besoin d' afficher la variable. Nous voulons fixer un nouveau score record à falls chaque fois que le joueur commence une nouvelle partie. Donc, avant le blocage permanent et quand je recevrai le début de la partie, ajoutons un set à bloquer et fixons un nouveau score record aux chutes. Ensuite, chaque fois que le joueur atteint un nouveau score élevé, nous voulons définir la variable sur true. Cela se produit à l'intérieur du bloc permanent chaque fois que le score est supérieur au score élevé. Ajoutons un bloc set deux au bloc if then ici et définissons le nouveau score le plus élevé sur true. Enfin, lorsque je recevrai un joueur avant de faire quoi que ce soit d'autre, nous vérifierons si le joueur a atteint un nouveau record, et si c'est le cas, nous diffuserons le nouveau message du meilleur score. Alors d'abord, passons au contrôle et plaçons un bloc if then dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le nouveau score élevé est égal à vrai. Si c'est le cas, passons aux événements, introduisons un bloc de diffusion et diffusons le nouveau meilleur score. Mettons maintenant le bloc ITN en haut du script mort du joueur Pour le moment, cependant, le nouveau texte indiquant le meilleur score apparaîtra dès que le joueur mourra. Pour attendre un peu avant d' afficher le texte, revenons aux nouveaux sprites les plus performants Et quand j' obtiens un nouveau meilleur score, passons à Control et ajoutons un bloc d'attente d' une seconde tout en haut du script. OK ? Si nous lançons le jeu maintenant, marquons des points et nous nous faisons détruire. Au bout d'une seconde, cela nous indique que nous avons obtenu un nouveau score élevé. Cependant, lorsque l' écran titre réapparaît, le texte ne disparaît pas. Pour résoudre ce problème, nous devons masquer le nouveau sprite à meilleur score chaque fois que l' écran titre apparaît Pour ce faire, passons aux événements, démarrons un nouveau script lorsque je recevrai un script et recevrons l'écran titre de l' émission. Il ne nous reste plus qu'à aller dans Looks et à introduire un bloc de masquage. Maintenant, le nouveau texte du meilleur score devrait disparaître dès que l'écran titre réapparaîtra. Bien, maintenant que nous savons que l'affichage du score le plus élevé fonctionne correctement, nous pouvons accéder aux variables et masquer la variable du meilleur score. Nous n'ajouterons pas non plus de clones au jeu. Nous pouvons donc également masquer la variable relative au nombre total de clones OK ? Et lors de la prochaine leçon, nous allons améliorer un peu le domaine de notre jeu en ajoutant des effets sonores et de la musique. 61. Ajouter des sons et de la musique: Pour tous les effets sonores et la musique que nous utiliserons dans ce jeu, j'ai fourni un fichier zip en tant que ressource téléchargeable contenant tous les fichiers audio. Après avoir téléchargé le fichier zip sur notre ordinateur et l'avoir décompressé, nous pouvons utiliser les fichiers dans notre projet Pour cela, passons d'abord au joueur Sprite. Passons ensuite à l'onglet Sons. Nous pouvons supprimer le miaou car, bien sûr, nous n'en aurons pas besoin Passons ensuite au bouton Choisir un son, puis cliquez sur Télécharger le son. Et naviguez jusqu'à l'emplacement où nous décompressons les fichiers audio Le sprite du joueur utilisera deux sons, le son laser lorsqu'il lance un laser et le son Wish, qui sera diffusé sur l'écran titre lorsque le joueur passe d'un costume à l'autre Téléchargeons donc d'abord le fichier laser WAV en le choisissant et en cliquant sur Ouvrir Ensuite, rétablissons la boîte de dialogue de téléchargement de fichiers et téléchargeons également woosh point WAV Et maintenant, nous pouvons tester les sons en cliquant sur le bouton de lecture de chacun d'entre eux. Très bien, donc pour commencer à utiliser les sons du jeu, passons au Cetap et à la catégorie des sons des Blocks Comme nous l'avons vu plus tôt dans le cours, nous avons deux blocs pour jouer des sons. Jouez le son jusqu'à la fin, qui interrompra le script en cours jusqu'à ce que le son soit terminé et lancera le son, ce qui permettra au script de continuer à s'exécuter pendant la lecture du son. Nous pouvons également arrêter tous les sons du projet. Nous pouvons modifier et régler la hauteur du son ou le panoramique droit de la barre oblique gauche, qui correspond à la position de lecture actuelle dans le fichier son Nous pouvons effacer toutes les modifications apportées aux effets sonores, et nous pouvons modifier et régler le volume. OK, donc pour le joueur Sprite, le premier son que nous allons jouer est le son Whoosh Lorsque le joueur change de costume sur l'écran titre, et qu'il y a un bon endroit pour jouer le son se trouve en haut de la page lorsque je reçois le changement de costume de joueur avant toute animation. Nous ne voulons pas suspendre le script pendant que le son est en cours de diffusion. Prenons donc un bloc audio de démarrage, ajoutons-le en haut du script et jouons le son Whoosh. Si nous lançons maintenant le jeu, chaque fois que nous passons d'un costume à l'autre sur l'écran titre, il émet le son de souhait. Plutôt cool. OK. Ensuite, nous allons émettre le son laser lorsque le joueur lance un laser, et cela se produit dans un laser à tir défini. Nous ne voulons jouer le son que lorsque nous créons un clone laser. Donc, à l'intérieur de la touche I enfoncée ou du bloc bas de la souris, encore une fois, nous ne voulons pas mettre le script en pause Prenons un bloc audio de démarrage, placez-le en bas du I, puis bloquez et diffusez placez-le en bas du I, puis le son laser. Si nous lançons maintenant le jeu, cliquons sur le bouton Démarrer et que nous lançons des lasers, le son du laser est émis. OK, c'est tout pour le sprite du joueur. Passons donc au sprite suivant qui émet des sons, l'astéroïde Passons à l'onglet Sons, supprimons le son pop par défaut, puis descendons dans Choisir un son et Choisir Télécharger le son. Le sprite de l'astéroïde ne produira qu'un seul son, le son de frappe ici, qui sera diffusé chaque fois qu'un astéroïde est touché par Lorsqu'un astéroïde explose, nous émettons également l'un des sons d'explosion, mais nous le faisons à l'intérieur des sprites Très bien, alors téléchargeons le fichier WAV à points rapides. Le son du hit ressemble à ceci. OK, allons dans l'onglet code, et nous allons jouer le son du script de frappe d'astéroïde si l' astéroïde est toujours en script de frappe d'astéroïde si l' astéroïde est toujours Prenons donc un bloc audio de démarrage et ajoutons-le au bloc «   si la santé est supérieure à un bloc quelque part avant le bloc de répétition. Si nous jouons au jeu maintenant et que nous tirons sur un astéroïde, il émet le son du choc lorsqu'un astéroïde se divise ou est détruit, Cependant, lorsqu'un astéroïde se divise ou est détruit, il n'émet pas encore de son Lorsque cela se produira, nous émettrons un son Explode, et nous le ferons dans les sprites d' explosion Une fois le sprite d'explosion sélectionné, allons dans l'onglet Sons, supprimons le son pop et téléchargeons un nouveau son Lorsqu'une explosion se produit, nous jouons aléatoirement soit le son Explode one, soit le son Explode Two Donc, téléchargeons d'abord Explode un WAV, puis téléchargeons Explode Et voici à quoi ressemblent les explosions. OK, passons à l'onglet « code ». Maintenant, lorsqu'une explosion se produit, il y aura toujours un flash. Donc, pour émettre un son d' explosion, nous n'avons besoin de le faire que lorsqu' un clone flash est créé. Ce sera le cas et quand je commencerai en tant que clone, chaque fois que le nom du costume est égal à flash, la vérification est vraie, alors prenons un bloc audio de départ et ajoutons-le au nom du costume I est égal à flash block avant le bloc de répétition. Pour le son, nous voulons prendre le mot exploser et le joindre au hasard avec un ou deux Pour ce faire, passons d'abord aux opérateurs et utilisons un bloc de jointure comme entrée pour le bloc audio de départ. Pour la première entrée du bloc de jointure, tapons le mot explode Et pour la deuxième entrée, introduisons un bloc aléatoire et choisissons 1 à 2. Si nous jouons maintenant au jeu et divisons ou détruisons un astéroïde, il émet aléatoirement l'un des sons d'explosion Il émet également les sons lorsque le joueur est détruit. Génial OK, ensuite, choisissons le pick-up sprite Passons à l'onglet Sons, supprimons le son pop et téléchargez-en un nouveau. Chaque fois que le joueur récupère un pick-up, nous jouons au Cletsund ici Téléchargeons donc le fichier. Bien, revenons à l'onglet du code. Nous jouerons le son Collect et lorsque je commencerai en tant que script de clonage, chaque fois que le sprite touche le lecteur Passons donc à la catégorie des sons, un bloc Start Sound Collects et ajoutons-le en haut du bloc If touch player. Maintenant, chaque fois que nous collectons un micro, il émet le son de collecte. Ensuite, nous allons émettre un son pour le sprite de la bombe. fois le sprite sélectionné, passons aux sons, supprimons celui par défaut et téléchargez-en un nouveau Chaque fois qu'une bombe est activée, nous émettons le son du feu. Ajoutons-le donc au Sprite. OK, et le code du sprite de la bombe, nous jouerons le son du feu et quand je recevrai Start game, chaque fois que la variable active de la bombe deviendra vraie Prenons donc un bloc de feu Start Sound et ajoutons-le au bloc I bomb active equals true. Si nous jouons maintenant au jeu et que nous récupérons un pick-up, il émet le son du feu. L' effet sonore final sera obtenu lorsque le joueur appuiera sur le bouton Démarrer sur l'écran titre. Passons donc au bouton Démarrer Sprite. Dans l'onglet Sons, supprimons le son pop et téléchargeons un nouveau son. Lorsque le joueur clique sur le bouton, nous émettons le son de démarrage. Téléchargeons donc le point de départ WAV pour jouer le son, passons à l'onglet code, et nous le ferons dans le jeu de départ défini Prenons donc un bloc de démarrage Start sound et ajoutons-le en haut du script. Maintenant, si nous lançons le jeu et que nous cliquons sur le bouton Démarrer, il émet le son de démarrage. Très bien, pour terminer le son, il suffit d'ajouter la musique, et nous jouerons la musique dans le code de fond. Alors, tout d'abord, avec la toile de fond sélectionnée, passons à l'onglet Sons. Encore une fois, nous pouvons supprimer le son pop. Ensuite, choisissons un son, téléchargez-en un nouveau. Et pour la musique, nous voulons bien sûr uploader de la musique au format WAV Et voici un aperçu de la musique. OK, passons maintenant à l'onglet « code ». Nous voulons lancer la musique dès que le joueur clique sur le drapeau vert et continuer à jouer jusqu'à ce qu'il arrête la partie. Cela signifie que nous devons commencer la musique dans le script du drapeau vert. Ajoutons donc un bloc de musique de départ au bas du script. Si nous cliquons sur le drapeau vert maintenant, cela fonctionne. Mais une fois qu'il atteint la fin du fichier musical, il s'arrête complètement. Nous voulons faire tourner la musique en boucle pour qu'elle recommence à jouer dès qu'elle est terminée. Pour ce faire, essayons d'accéder à Control, de saisir un bloc permanent et de enrouler autour du bloc audio de départ Si nous lançons le jeu, cela ne fonctionnera pas. Et c'est parce que le Forever Block continue redémarrer immédiatement la musique encore et encore Nous n' entendons donc jamais vraiment la musique. Ce que nous voulons faire , c'est écouter la musique jusqu'au bout avant de la redémarrer Et c'est exactement à cela que sert le son de l'endroit jusqu'à Don Block. Débarrassons-nous donc du bloc audio de départ, revenons au son et ajoutons un lieu de musique sonore jusqu'au bloc D au bloc permanent. Ainsi, dès que la musique aura fini de jouer, le bloc Forever s'exécutera à nouveau pour redémarrer la musique Alors essayons-le. Si nous attendons la fin de la musique, elle recommence immédiatement à jouer. Excellente. Très bien, notre jeu est complet et sonne plutôt bien maintenant. Cependant, il peut arriver que le lecteur ne souhaite pas que tout ce son soit diffusé, ou qu'il souhaite simplement écouter la musique ou uniquement les effets sonores. À partir de la leçon suivante, nous allons donc ajouter des boutons à l'écran titre qui permettront au joueur d'activer ou de désactiver la musique ou les effets sonores 62. Créer les Toggles audio: Pour permettre au lecteur d'activer ou de désactiver les effets sonores et la musique, nous allons commencer par créer les boutons qui s' afficheront sur l'écran titre, puis nous allons commencer par les boutons d'activation des effets sonores Créons-lui donc un sprite en cliquant sur le bouton Choisir un sprite, en cliquant sur Paint et en l'appelant Sound Effects Toggle Les boutons à bascule seront blancs. Donc, pour que les choses soient plus faciles à voir lors de la création des costumes, utilisons d'abord l'outil rectangle, choisissons le noir comme couleur de remplissage et aucun contour. Zoomez ensuite sur le canevas. Et tout en maintenant la touche Maj enfoncée, créons un carré de cinq blocs sur cinq. Et allons-y et centrons le carré dans la toile. Nous allons créer les autres formes à l'intérieur du carré. OK, alors d'abord, désélectionnons le carré. Choisissons ensuite le blanc comme couleur de remplissage. Créons maintenant un rectangle étroit près du côté gauche du carré noir et faisons en sorte qu'il ait une hauteur d' environ deux blocs. Nous voulons que le rectangle soit centré horizontalement dans le canevas. Prenons donc l' outil de sélection, plaçons-le au centre, puis commençons à le déplacer vers la gauche. Et si nous maintenons la touche Shift enfoncée pendant ce temps, nous pouvons la garder centrée horizontalement. Ensuite, tout en maintenant la touche Alt ou Option enfoncée, cliquons et faisons glisser le rectangle pour créer une copie. Et tout en maintenant la touche Shift enfoncée, déplaçons celle-ci juste à droite de l'autre. Nous voulons élargir ce rectangle. Donc, en utilisant la poignée d'échelle située au centre du côté droit, étendons le côté droit d'un bloc plus loin que le centre du carré noir. Nous allons maintenant transformer la forme en trapèze, élargissant le côté droit par rapport au côté gauche Pour ce faire, utilisons l'outil de remodelage. Ensuite, sélectionnons d'abord le nœud en haut à droite. Et tout en maintenant la touche Maj enfoncée, déplacons-la vers le haut du carré. Ensuite, sélectionnons uniquement le nœud en bas à droite, maintenons la touche Maj enfoncée et déplaçons-le vers le bas du carré. Enfin, nous allons créer une forme d'onde sonore sur le côté droit. Pour cela, utilisons l'outil linéaire. Optons pour le blanc pour la couleur du contour. Et une largeur de trois devrait être bonne. Maintenant, en commençant un peu à droite de la forme trapézoïdale, cliquons et glissons, maintenons la touche Maj enfoncée et créons une ligne verticale d'environ deux blocs Si nous voulons nous assurer qu'il est centré horizontalement, nous pouvons saisir l'outil de sélection, tracer la ligne au centre du canevas, puis la déplacer vers la droite tout en maintenant la touche Maj enfoncée. Très bien, maintenant prenons l'outil de remodelage, ajoutons un nœud juste au centre de la ligne et faisons-le glisser vers la droite ligne et faisons-le glisser vers la tout en maintenant la touche Shift enfoncée Ensuite, nous pouvons ajuster un peu les poignées pour les rendre plus arrondies. OK, je trouve que ça a l'air plutôt bien. Nous pouvons donc maintenant utiliser l'outil de sélection pour ajuster le positionnement des formes si nous le souhaitons. Nous pouvons également sélectionner toutes les formes blanches, et si nous cliquons sur ce bouton de groupe ici, toutes les formes sont regroupées. Cela signifie que nous pouvons sélectionner l'ensemble du groupe en cliquant sur une seule des formes. Et maintenant, nous pouvons facilement déplacer l'ensemble du groupe . Maintenant, pour le rectangle noir, nous ne voulons pas le supprimer. Et la raison en est que le scratch nous permet uniquement de cliquer sur les parties d'un sprite où le costume est réellement coloré Donc, si nous devions supprimer le carré, cliquer entre ces deux formes blanches ou ici n' aurait aucun effet. Cela peut devenir un peu ennuyeux pour le joueur. Pour qu' ils puissent cliquer plus facilement sur le bouton, nous allons laisser le carré noir, ce qui permettra au joueur de cliquer n'importe où dans le carré pour cliquer sur le bouton. Le carré noir masquera bien sûr toutes les étoiles qui pourraient se trouver derrière le bouton, mais il est si petit qu'il ne sera pas vraiment visible. OK, nous utiliserons donc ce costume lorsque les effets sonores seront activés. Alors changeons le nom en on. Nous avons également besoin d'un costume pour indiquer que les effets sonores sont désactivés. la plupart des cas, le costume utilisé utilisera les mêmes formes que le costume sur le costume. Nous pouvons donc commencer par dupliquer le costume sur le costume et changer le nom en off utilisé utilisera les mêmes formes que le costume sur le costume Nous pouvons donc commencer par dupliquer le costume sur le costume et changer le nom en Pour le déguisement, nous allons rendre les formes blanches grises. Maintenant, parce que nous avons regroupé les formes blanches et parce que deux des formes n'ont qu'une couleur de remplissage et l'une n'a qu' une couleur de contour. Pour modifier les couleurs des formes, nous devons d'abord les dissocier. Pour ce faire avec le groupe sélectionné, nous pouvons cliquer sur le bouton Dissocier ici Nous pouvons maintenant sélectionner à nouveau les formes individuelles. Sélectionnons d'abord les deux formes sur la gauche et donnons-leur un remplissage gris moyen. Ensuite, sélectionnons la forme sur la droite et utilisons le même gris pour la couleur du contour de la forme. Bien, et pour qu'il soit encore plus clair que les effets sonores sont désactivés, mettons également un X rouge au-dessus des formes Pour ce faire, utilisons l'outil de ligne et choisissons le rouge pur pour la couleur du contour. Et rendons la largeur un peu plus épaisse. Quatre devraient fonctionner. Maintenant, en commençant en bas à gauche du carré noir, cliquons et glissons. Et si nous maintenons la touche Maj enfoncée, nous pouvons tracer une ligne à 45 degrés vers le haut à droite du carré. Prenons ensuite l' outil de sélection et centrons la ligne. Maintenons maintenant la touche Alt ou Option enfoncée et cliquez sur la ligne pour la dupliquer. Et il suffit de le retourner horizontalement ou verticalement. Et nous y voilà. Les costumes pour le bouton d'effets sonores Sprite sont maintenant terminés Nous devons maintenant effectuer des étapes similaires pour créer les costumes pour le bouton Musique Pour commencer, dupliquons le bouton d'effets sonores Sprite, et changeons le nom en Music Toggle et changeons le nom en Music Pour le costume, nous allons laisser le carré noir, mais nous pouvons supprimer le groupe d'objets blancs. Pour le bouton de commutation musicale, nous allons dessiner un symbole de note de musique Pour cela, utilisons l'outil circulaire. Utilisez du blanc pour la couleur de remplissage et rien pour le contour. Et créons une petite ellipse en bas à gauche du carré Maintenant, prenons l'outil rectangle et dessinons un mince rectangle qui recouvre le haut de l'ellipse et amenons-le à environ un bloc au-dessus du centre du Ensuite, prenons l'outil de sélection et sélectionnons les deux formes blanches. Ensuite, copions-les et déplaçons les copies un peu vers le haut et vers le côté droit du carré. Enfin, nous allons relier le haut des deux rectangles en utilisant une autre forme rectangulaire Alors, d'abord, reprenons l'outil rectangle et zoomons un peu plus. Créez ensuite un rectangle aligné sur le côté gauche du premier rectangle et superposant le haut de celui-ci, puis faites-le glisser vers la droite jusqu'à ce qu' il s'aligne sur le côté droit de l'autre Et nous pouvons utiliser l'outil de sélection pour ajuster un peu le positionnement et la taille si nécessaire. OK, maintenant nous pouvons utiliser l'outil de remodelage et sélectionner les deux nœuds sur le côté droit du rectangle horizontal Et tout en maintenant la touche Shift enfoncée, faisons-les glisser un peu vers le haut. Et maintenant, nous avons une note de musique. Nous pouvons donc sélectionner toutes les formes blanches maintenant, les regrouper, puis centrer le groupe dans le canevas. Nous pouvons également maintenir la touche ou option enfoncée et redimensionner légèrement le groupe si nous le souhaitons Conserver le carré noir sera particulièrement utile pour ce bouton car il serait assez difficile de cliquer sur l'une des formes blanches. Très bien, pour ce qui est du costume, copions d'abord le groupe, puis passons au costume, collons le groupe et déplaçons-le sur le côté pour le moment. Comme toutes les formes du groupe de notes de musique utilisent uniquement une couleur de remplissage, nous pouvons modifier la couleur de remplissage du groupe dans son ensemble. Nous voulons utiliser le même niveau que celui que nous utilisons pour les formes du bouton d'effets sonores. Cliquons donc sur le bouton compte-gouttes, puis sur l'une des formes grises Nous pouvons maintenant nous débarrasser des effets sonores, changer de forme, le groupe de notes de musique au centre et cliquer plusieurs fois sur le bouton retour pour le placer sous les deux lignes rouges OK, nous en avons maintenant terminé avec les costumes pour les deux boutons audio Allons-y et faisons-les apparaître correctement sur l'écran titre. Nous allons placer les boutons en bas à droite. Le bouton de musique se déplacera juste ici, dans le coin inférieur droit, et le bouton d' effets sonores se déplacera juste à gauche du bouton de musique Passons maintenant à l'onglet code. Nous ferons en sorte que les effets sonores et la musique soient toujours activés lorsque le joueur clique sur le drapeau vert. Par conséquent, nous voulons nous assurer que les boutons à bascule commencent à utiliser leurs propres costumes Pour ce faire, accédons aux événements et apportons un drapeau vert gagnant, en cliquant sur Bloquer. Passons ensuite à Looks, introduisons un bloc de costumes Switch et passons au costume activé. Et comme la position du sprite ne changera pas, nous pouvons également nous assurer qu'il est correctement positionné dans le script du drapeau vert Passons donc au mouvement et introduisons un bloc Go to XY. Je suis actuellement en train de coder Sprite pour activer les effets sonores, et je vais ajuster légèrement les valeurs dans le bloc Go to XY Pour X, j'utiliserai 185, et pour Y, j' utiliserai 160, soit la même position Y que celle que j'utilise pour le Sprite technologique le plus performant et le sprite numérique le mieux noté OK, comme pour les autres sprites de l'écran titre, les boutons s'estompent lorsque l'écran titre apparaît et nous les estompons au démarrage du De plus, comme les boutons gauche et droit fait de survoler boutons à bascule les fait grossir et de s'en éloigner les fait rétrécir Nous pouvons donc accéder, par exemple, au code du bouton droit Sprite et copier certains scripts Nous voulons à la fois quand je reçois Afficher l'écran titre et quand je reçois le début du jeu. Pour afficher l'écran titre, cependant, nous n'avons pas besoin des touches fléchées ici. Donc, avant de copier le script, retirons le bloc I enfoncé sur la flèche droite. Copiez ensuite le reste du script dans le bouton d'effets sonores Sprite Et veillons à remettre le bloc I then là où il se trouvait en dessous des points ou du bloc I touchants de la souris. Et nous pouvons copier le script de démarrage du jeu When I receive tel quel. Bien, revenons maintenant aux effets sonores, changeons Sprite et réorganisons un peu les scripts Comme nous sommes déjà en train de définir la position des sprites et le script du drapeau vert, nous pouvons nous débarrasser du bloc Go to XY et, lorsque je recevrai l'écran titre, afficher l'écran titre Bien, maintenant, pour le bouton musical Sprite, copions d'abord ces trois scripts Passons ensuite au code du bouton musical Sprite et nettoyons-le un peu La seule modification que nous devons apporter concerne la valeur de l'entrée X dans le bloc Go to XY. Je vais utiliser 215, et c'est tout. Si nous lançons maintenant le jeu, les boutons audio s'estompent avec les autres sprites de l'écran titre Et si on clique sur le bouton Démarrer, les sprites disparaissent. Génial. OK. Et lors de la prochaine leçon, nous ferons en sorte que le joueur puisse réellement cliquer sur les boutons pour activer ou désactiver les effets sonores et la musique 63. Mettre en œuvre le Toggling audio: Si nous entrons dans la catégorie des blocs sonores, nous avons vu auparavant que nous devions modifier le volume et définir blocs de volume que nous pouvons utiliser pour régler le volume des sons que nous jouons. est important de savoir à propos de ces blocs qu' ils n'affectent que le volume des sons des sprites actuels Ainsi, si nous voulions, par exemple, rendre tous les sons des sprites du joueur inaudibles, nous pourrions saisir le code des sprites du joueur, placer un bloc de volume défini dans un espace vide, changer l'entrée à zéro et cliquer sur Et si nous lançons maintenant le jeu, le fait de changer de costume ne produira plus de bruit. Et si nous commençons le jeu, le tirer au laser ne produit plus le son du laser. La musique et les effets sonores des autres sprites ne sont toutefois pas du tout affectés Pour que nous puissions à nouveau entendre les sons émis par le sprite du joueur, suffit d' utiliser une valeur supérieure à zéro pour les entrées de volume définies, comme 100 %, qui est la valeur par défaut Si nous cliquons sur le bloc, le sprite du joueur sonne désormais de la même manière qu'avant OK, allons-y et débarrassons-nous du bloc de volume défini. Et ce que nous pouvons faire, c'est que lorsque le joueur désactive les effets sonores, nous pouvons diffuser un message demandant à tous les sprites qui utilisent sons de régler leur volume à 0 % Et pour activer les effets sonores, nous diffuserons un message différent demandant sprites de régler leur volume à 100 %. De même, pour changer de musique, nous diffuserons des messages indiquant que le volume de la toile de fond sera réglé sur 0 % ou 100 % Bien, parce que changer de musique sera plus facile à implémenter, nous allons commencer par Passons au code du bouton musical Sprite. Nous allons faire en sorte que le joueur puisse cliquer sur le bouton de basculement musical ou appuyer sur une touche du clavier pour changer de Passons aux événements et remportons à la fois le gagnant, ce Sprite, cliqué et un bloc enfoncé sur la touche gagnante Pour changer de musique, nous allons utiliser la touche OK, maintenant nous voulons utiliser le costume de Sprites à bascule musicale pour déterminer s'il faut activer ou désactiver la musique Et comme nous utiliserons le même code pour le script de clic WinAsprite et pour le script WinKeyPress, nous allons placer le code Passons donc à Mblock et créons-en un nouveau. Nous pouvons l'appeler bascule et cliquer sur OK. Déplaçons le bloc à bascule défini quelque part ici, et ajoutons un bloc à bascule lorsque ce sprite a cliqué et lorsque ce sprite a cliqué et Maintenant, pour le script Toggle, nous allons diffuser un message différent en fonction du costume actuel du sprite Donc, pour vérifier le costume, allons dans Control et ajoutons un bloc I puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite à Looks, ajoutons un bloc de costumes au bloc Equals. Et voyons si le nom du costume est égal à un. Si c'est le cas, nous voulons diffuser un message indiquant à la toile de fond de désactiver la musique. Cependant, nous voulons également changer le costume pour le déguisement. Ajoutons donc d'abord un bloc de costume à la partie if du bloc if then it's, et désactivons le costume. Passons maintenant aux événements, introduisons un bloc de diffusion et diffusons un nouveau message, que nous pouvons appeler désactiver la musique. Pour ce qui est d'Els, nous voulons bien sûr activer la musique. Dupliquons donc le costume Switch et blocs de diffusion et ajoutons-les à la partie Elts. Et cette fois, nous voulons passer au costume et diffuser un nouveau message intitulé Turn Music On. Si nous lançons maintenant le jeu, cliquer sur le bouton de commutation musicale ou appuyer sur la touche changera son costume Maintenant, nous devons faire en sorte que cela affecte réellement la musique. Pour ce faire, passons au code de fond. Et ici, nous voulons recevoir les deux messages de basculement musical et régler le volume en conséquence Passons donc à When I receive Blocks. Pour le premier, recevons Turn music on. Passons ensuite au son et fixons un volume défini à 100 % par bloc. Pour l'autre, désactivons la musique, introduisons un bloc de volume défini et réglons-le sur 0 %. Et ainsi, si nous relançons le jeu, nous pouvons activer ou désactiver le volume de la musique. Maintenant, il faut savoir que même si nous ne pouvons pas voir de sprite sur la scène, c'est à ce moment-là que les scripts pressés sur une touche continueront de s'exécuter Donc, si nous cliquons sur le bouton Démarrer, même si nous ne voyons plus le bouton de basculement musical, nous pouvons toujours appuyer sur la touche pour activer ou désactiver la musique De plus, si nous mourons et que nous rétablissons l'écran titre, le sprite Music Toggle utilisera le bon costume D'accord, et une autre chose à savoir est que Scratch enregistre toutes les modifications de volume que nous apportons Donc, si nous éteignons la musique, arrêtons le jeu et cliquons à nouveau sur le drapeau vert, nous n'entendons toujours pas la musique, et maintenant Sprite n'utilise pas le bon costume Pour éviter que cela ne se produise dans le script du drapeau vert pour la toile de fond, ajoutons un volume défini à 100 blocs quelque part avant le bloc permanent. Cela fera en sorte que le volume de la musique commence toujours à 100 % lorsque nous cliquons sur le drapeau vert. OK, maintenant nous devons travailler sur le basculement des effets sonores. Pour commencer, revenons au code du bouton musical Sprite À partir de là, copions d'abord le script de bascule défini dans le bouton d'effets sonores Sprite Copiez ensuite à la fois le script de clic Win this Sprite et le script d'appui sur la touche Win Passons maintenant aux effets sonores Toggle Sprite et nettoyons le code Pour le script d'appui sur la touche Win, nous voulons bien sûr utiliser une touche différente. Il serait logique d'utiliser la touche, mais comme nous laissons le joueur utiliser la touche pour se déplacer vers le bas, nous devrons utiliser autre chose pour activer les effets sonores Je pense qu'une bonne alternative serait la touche X. Bien, dans le script de basculement, nous voulons diffuser des messages pour activer les effets sonores. Dans le bloc de diffusion de la partie I, diffusons donc un nouveau message, que nous pouvons appeler « off term sound effects off ». Et pour le reste, diffusons un nouveau message intitulé term sound effects on. Bien, pour que ces messages fonctionnent, nous voulons que tous les sprites qui utilisent des sons reçoivent les messages et règlent leur volume en conséquence Commençons donc par les sprites des joueurs. Et ici, trouvons un espace vide. Passons ensuite aux événements et apportons deux blocs W que j'ai reçus. Pour le premier, nous allons recevoir et activer les effets sonores. Passez ensuite au son et réglez le volume sur 100 blocs. Pour l'autre, désactivons les effets sonores, introduisons un bloc de volume défini et réglons-le sur 0 %. Nous voulons également nous assurer que le volume est réinitialisé à 100 % lorsque vous cliquez sur le drapeau vert Passons donc au script Green Flag et ajoutons-y un volume défini à 100 blocs. Si nous lançons le jeu maintenant et que nous désactivons les effets sonores, nous n'entendons plus le bruit sourd lorsque nous changeons de costume lorsque Nous n'entendrons pas non plus le son laser lors de la prise de vue au laser. Et nous pouvons utiliser la touche X pour activer et désactiver les effets sonores pendant que vous jouez Bien, nous devons maintenant faire de même pour les autres sprites qui utilisent Le suivant dans la liste est l'astéroïde sprite. Tout d'abord, à partir du code Sprite du lecteur, copions les scripts d'activation des effets sonores et de désactivation des effets sonores dans le sprite astéroïde Passons ensuite au code de l' astéroïde Sprite, réorganisons Et ajoutons un volume défini à 100 blocs au script Green Flag. Il semble que cela devrait être tout ce que nous devons faire, mais nous allons vraiment avoir un problème. Pour comprendre ce que je veux dire, lançons le jeu, désactivons les effets sonores et démarrons le jeu Si nous tirons sur des astéroïdes, ils émettent toujours le son de l'impact Cela se produit parce que les clones sont traités comme des sprites distincts, ils ont leur propre réglage de volume Et lorsqu'un nouveau clone est créé, il ne copie pas le réglage de volume actuel des sprites d'origine Donc, si nous désactivons les effets sonores avant que des clones d'astéroïdes ne soient créés, ils ne recevront pas le message de désactivation des effets sonores et leur volume ne sera pas réglé Pour résoudre ce problème, nous pouvons suivre le changement de volume dans une variable. Et lors de la création d'un nouveau clone, nous pouvons définir son volume en utilisant la valeur de la variable de volume. OK, donc pour commencer, passons aux variables et créons-en une nouvelle. Appelons-le volume, et nous voulons le créer pour ce sprite uniquement parce que nous allons créer une variable de volume distincte pour chaque sprite qui utilise des sons et Maintenant, lorsque vous cliquez sur le drapeau vert, nous voulons définir la variable de volume sur 100 sans avoir à nous soucier du volume du sprite d' astéroïde d'origine. Nous pouvons donc supprimer le volume défini à 100 blocs dans le script du drapeau vert, le remplacer par un ensemble de deux blocs de variables et définir la variable de volume Ensuite, dans le terme effets sonores sur et hors scripts, nous voulons toujours conserver les blocs de volume définis. En effet, si nous activons les effets sonores à l'aide de la touche X pendant que nous jouons au jeu, certains clones existent peut-être déjà, et nous voulons nous assurer de régler leur volume Cependant, nous voulons également définir la variable de volume sur la même valeur, afin de pouvoir l'utiliser lors de la création de futurs clones. OK, donc prenons un ensemble à bloquer et ajoutons-le au bas du script d'effets sonores, puis définissons la variable de volume. Nous pouvons soit utiliser 100 comme entrée, soit passer au son et utiliser un bloc de volume, qui obtiendra le volume actuel du sprite Nous pouvons maintenant dupliquer le volume défini sur bloc de volume et l'ajouter au bas du script de désactivation des effets sonores. Très bien maintenant, trouvons le où je commence en tant que script de clonage. Et ici, nous voulons définir le volume réel des clones en utilisant la valeur de la variable de volume Cela fonctionnera car les clones copient les valeurs des variables sprites d'origine Ajoutons donc un bloc de volume défini quelque part avant le bloc permanent. Passons ensuite aux variables et définissons le volume sur la variable de volume. Avec tout cela, si nous désactivons les effets sonores, la variable de volume sera mise à zéro. Et lorsqu'un clone est créé par la suite, son volume est réglé sur la variable de volume, qui sera égale à zéro. Nous ne devrions donc pas entendre son son de frappe OK, lançons le jeu et essayons-le. Si nous désactivons les effets sonores et démarrons le jeu, nous n'entendons plus le son du coup lorsque nous tirons sur un astéroïde Et nous pouvons utiliser la touche pendant que jouons pour parler avec les effets sonores activés et désactivés. Excellente. Cependant, nous entendons toujours les sons d'explosion, nous allons donc travailler ensuite sur le sprite d'explosion Le sprite d'explosion utilise également des clones Nous devrons donc faire la même chose que pour le sprite d' astéroïde, à savoir régler la variable de volume 100 lorsque vous cliquez sur le drapeau vert, définir à la fois le volume réel et la variable de volume dans le terme effets sonores sur les scripts et régler le volume réel sur la variable de volume . Nous devrons donc faire la même chose que pour le sprite d' astéroïde, à savoir régler la variable de volume sur 100 lorsque vous cliquez sur le drapeau vert, définir à la fois le volume réel et la variable de volume dans le terme effets sonores sur les scripts et régler le volume réel sur la variable de volume dans le moment où je démarre en tant que script de clonage. OK, commençons donc par copier le volume défini sur 100 blocs à partir du script Green Flag dans les sprites d'explosion Et pendant que nous y sommes, les pick-up et les sprites à bombes utilisent également des sons et des clones Gagnons donc du temps en copiant également le bloc dans ces sprites Copions maintenant le terme effets sonores sur et hors des scripts dans les trois sprites Enfin, à partir du script When I start as a clone, copions le volume défini sur un bloc de volume dans les trois sprites Et assurez-vous de reconnecter ces blocs par la suite. Passons maintenant au code du sprite d'explosion. Mettons le volume défini sur le bloc de volume et le moment où je démarre en tant que script de clonage quelque part avant le bloc F puis s. Déplaçons maintenant les scripts quand j'ai reçu dans un espace vide, et nous devrons créer un script drapeau vert pour le volume défini à 100 blocs. Passons aux événements, un bloc cliqué sur un drapeau vert et ajoutons-y le bloc de volume défini Si nous lançons maintenant le jeu, désactivons les effets sonores et détruisons des astéroïdes, nous n'entendrons pas les sons d' explosion Nous ne les entendrons pas non plus si le joueur est détruit. Bien, maintenant nous devons faire de même pour les pick-up et les sprites à bombes Passons donc d'abord au code du sprite de ramassage. Passons le volume défini au bloc de volume et au moment où je commencerai en tant que clone, avant le bloc permanent. Déplaçons ensuite les scripts lorsque je reçois dans un espace vide. Et ajoutez le volume défini à 100 blocs au script Green Flag. Passons ensuite au code Sprite de la bombe. Mettons le volume défini par bloc de volume quelque part avant les blocs de répétition. Et quand je commence en tant que clone, déplacez les scripts de réception dans un espace vide, lancez un script drapeau vert et ajoutez-y le volume défini à 100 blocs. Si nous lançons maintenant le jeu et désactivons les effets sonores, nous n'entendrons pas les sons des micros ou de la bombe Enfin, nous devons nous occuper du son du bouton Démarrer. Le sprite du bouton Démarrer n'utilise pas de clones, nous n'avons donc pas à nous soucier de définir une variable de volume Au lieu de cela, nous pouvons accéder au Sprite du joueur et copier ses scripts d'activation et de désactivation des effets sonores, qui fixent simplement le volume du sprite Passons maintenant au bouton Démarrer Sprite et réorganisons les scripts Nous devons également nous assurer de réinitialiser le volume à 100 % lorsque vous cliquez sur le drapeau vert Commençons donc un script de drapeau vert. Passez ensuite au son et ajoutez-y un volume défini à 100 blocs. Et maintenant, si nous lançons le jeu et désactivons les effets sonores, nous n'entendrons pas le son du bouton de démarrage lorsque nous cliquons dessus. Génial Et avec tout cela, nous en avons officiellement fini avec les ravages cosmiques Donc excellent travail encore une fois, en terminant un autre jeu à gratter complet. Et comme pour Smack So Moles, si vous décidez d'ajouter des éléments à votre jeu Cosmic Havoc, envoyez-moi un lien car j'adorerais y jeter un œil D'accord. Et une fois que tu seras prêt, je te verrai dans la première leçon de la dernière partie de ce cours. 64. Introduction à l'aventure de Glim: Le dernier jeu que nous allons créer dans ce cours, et notre plus grand jeu à ce jour, est un jeu de plateforme en deux dimensions appelé Glm's Adventure Dans ce jeu, nous incarnerons un mignon petit extraterrestre nommé Glm, échoué sur une planète inconnue Un méchant nommé Nadnarb a volé le vaisseau spatial de Glen, et si Glen veut quitter cette planète, il devra collecter toutes les pièces de chaque niveau afin de racheter chaque niveau afin Ce ne sera pas si facile, cependant, car le joueur devra surmonter divers ennemis et obstacles tout au long des niveaux. De plus, si le joueur parvient à collecter toutes les pièces dans les trois premiers niveaux du jeu, se retrouvera alors face à il se retrouvera alors face à Nadnarb qui décidera de garder le vaisseau spatial du joueur. Le joueur devra donc le combattre s'il veut joueur devra donc le combattre vraiment récupérer son Cela va être un défi, mais tout le travail acharné et efforts en vaudront certainement la peine. Très bien, commençons. 65. Charger le projet de démarrage: Pour ce jeu, nous allons nous concentrer davantage sur le codage que sur la création graphique. J'ai donc proposé un projet de démarrage qui contient déjà tous les sprites ainsi que leurs costumes Nous n'aurons qu'à écrire le code qui fera fonctionner tout. Pour charger le projet de départ, plusieurs options s'offrent à vous. Tout d'abord, j'ai fourni le fichier de projet sous forme de ressource téléchargeable appelée glomsadventurstarter point sp three Si vous téléchargez le fichier, vous pouvez l'ouvrir à partir d'un nouveau projet en accédant au menu Fichier, choisissant Charger depuis votre ordinateur, naviguant jusqu'à l' emplacement du fichier, en sélectionnant le fichier et en cliquant sur Ouvrir. Cela affichera un message indiquant qu'il remplacera le contenu du projet en cours. C'est pourquoi il est important de s'assurer que nous le faisons à partir d'un nouveau projet ou d'un projet que nous ne voulons pas conserver. Bien, donc si nous cliquons sur OK, est remplacé par le projet de démarrage Glims Adventure Vous pouvez également accéder à la page principale de mon compte Scratch, qui se trouve à scratch point mit point EDU slash USERS SweaterCat Designs Je fournirai également un lien vers la page en tant que ressource téléchargeable. la page de mon compte, sous Projets partagés, vous devriez voir un projet appelé Glims Adventure Starter Si vous cliquez sur le projet, vous serez redirigé vers la page Projet. Et ici, si vous cliquez sur le bouton de remix en haut, cela créera une copie du projet dans vos propres comptes OK, et une fois le projet de départ chargé, changeons le nom en simplement Glims Adventure Jetons maintenant un coup d' œil au contenu du projet. Comme je l'ai déjà mentionné, j'ai inclus tous les sprites dont nous aurons besoin pour le jeu, ainsi que tous leurs costumes Tout d'abord, nous avons le sprite du joueur. Comme pour tous les sprites, la zone de code est actuellement vide. Et si nous jetons un coup d'œil dans l'onglet costumes, le sprite contient tous les costumes que nous utiliserons tout au long du jeu Il s'agit principalement de costumes adaptés aux différents états du joueur, tels que le ralenti, la marche et le saut. Et pour de nombreux États, il y aura une animation. Par exemple, Idle possède deux costumes intitulés Idle zero et Idol one. Cela signifie que l'état inactif comporte une animation à deux images. Ainsi, lorsque le joueur est inactif ou ne bouge pas, le costume du joueur passe continuellement de l'un à l' autre, donnant l' impression que le sprite s'anime sur De même, l'animation de la marche comporte un total de six images, étiquetées marche zéro à marche cinq. Et au fur et à mesure que le joueur se promène sur scène, le costume commence à la marche zéro, puis passe à la marche 1, marche deux fois jusqu'à la marche 5 , puis revient à la marche zéro et répète le processus. OK. Le sprite suivant est le sprite de contrôle Celui-ci n'a pas vraiment besoin de costumes, car nous l' utiliserons simplement pour vérifier si le joueur appuie sur des commandes de mouvement. Vient ensuite le sprite de niveau. Il contient toutes les plateformes sur lesquelles le joueur peut se promener ou sauter. Le jeu comportera un total de quatre niveaux, et chaque niveau sera composé de plusieurs parties disposées en rangées et colonnes comme les cellules d'une grille, et le joueur pourra se déplacer librement entre les différentes parties d'un niveau. Le costume de niveau test ici n'est qu'un costume temporaire que nous utiliserons lorsque nous commencerons à coder le sprite du joueur Pour les niveaux réels qui apparaîtront dans le jeu, chaque costume commence par le mot niveau suivi du chiffre correspondant au niveau. Ensuite, nous avons un tiret suivi d'un autre chiffre, puis un autre tiret suivi d'un autre chiffre. Ces deux chiffres indiquent la ligne et la colonne où une partie spécifique d'un niveau apparaîtra dans la grille de niveaux. ligne zéro se trouvera en bas de la grille, et le numéro de ligne augmentera un au fur et à mesure que nous remonterons dans la grille. colonne zéro sera sur le côté gauche, et le nombre augmentera au fur et à mesure que nous nous déplaçons vers la droite. Ainsi, par exemple, le costume de niveau 1 tiret 0-0 apparaîtra à la ligne zéro, colonne zéro, donc en bas à gauche de la grille, et le tiret 1-1 de niveau 1 apparaîtront à la première ligne, colonne 1, donc au-dessus et à droite du niveau 1 tiret 0-0 Ne vous inquiétez pas si cela prête à confusion pour le moment, car tout aura du sens une fois que nous aurons commencé à coder le sprite du niveau D'accord ? Le prochain sprite que nous avons est l'environnement. Nous utiliserons le sprite environnemental pour ajouter des éléments tels que des plantes et des pierres aux niveaux, juste pour les rendre plus jolis. Avec le sprite du niveau, nous devons détecter les collisions entre celui-ci et le sprite du joueur afin d'empêcher le sprite du joueur de tomber dans le niveau. Le sprite environnemental, quant à lui, ne sert qu'à l'apparence Nous allons donc laisser le joueur passer à travers les objets C'est pourquoi nous avons besoin que ce soit un sprite distinct du sprite de niveau De plus, les noms des costumes du sprite de l'environnement correspondent exactement aux noms de certains costumes de sprites du niveau Cela nous permettra de choisir facilement le costume approprié à afficher pour le sprite de l' environnement au fur et à mesure que le costume du sprite change de niveau Les objets de chaque costume d' environnement s' alignent également parfaitement avec les carreaux du costume de niveau correspondant. Juste pour vous montrer un exemple, je peux copier toutes les tuiles et le costume de niveau 100 des sprites Et collez-les dans le costume de niveau 100 des sprites de l'environnement costume de niveau 100 des sprites de Et maintenant, nous pouvons voir que tout s'aligne correctement. OK, ensuite, nous avons les sprites d'arrière-plan. Bien entendu, nous utiliserons ce sprite pour créer l' arrière-plan du jeu L'arrière-plan sera composé de plusieurs couches qui défileront avec le joueur au fur et à mesure qu'il se déplace dans le jeu. Les couches défileront indépendamment unes des autres et à des vitesses différentes, créant un effet de parallaxe, similaire à ce que nous avons fait avec les couches d'étoiles dans le jeu Cosmic Havoc Le sprite liquide se trouvera au bas de chaque niveau du jeu, et le joueur devra éviter de tomber dedans, sinon il perdra une vie Dans la plupart des niveaux, le sprite liquide portera le costume aquatique, mais il possède également un costume de lave que nous utiliserons pour le niveau du boss Ensuite, nous avons le blackout sprite. Le blackout sprite est un grand carré noir qui couvre toute la scène Nous l'utiliserons pour faire apparaître et disparaître l'écran au fur et à mesure que nous passerons d' un niveau à l'autre. Ensuite, nous allons utiliser le coin sprite pour afficher les pièces que le joueur doit collecter dans chaque niveau Les pièces seront animées d'une animation qui leur donnera l'impression de tourner. L'effet de glissement en pente et les sprites à particules de poussière ne sont que quelques effets spéciaux à ajouter à certaines actions des joueurs Nous utiliserons le sprite à particules de poussière pour créer un effet de poussière lorsque le joueur retombera sur le sol après avoir sauté et nous utiliserons l'effet de glissement de pente lorsque le joueur glisse sur la pente Les sprites d'escargot, d'abeille, de mouche et de poisson seront destinés aux ennemis que le joueur affrontera tout au long des niveaux Le joueur doit soit éviter les ennemis, soit leur sauter dessus pour les vaincre. Et comme pour le sprite du joueur, les sprites ennemis ont des costumes correspondant à leurs différents états, comme Move et Dad, et auront également des animations Ensuite, nous avons le point d' apparition Sprite. Le costume utilisé est un simple rectangle noir qui le rendra invisible et en placera des clones à différents points de chaque niveau Leur objectif principal sera de faire sorte que chaque fois que le joueur tombe dans le liquide, s' il lui reste encore de la santé, il réapparaisse ou réapparaisse à l'emplacement du point de spa qu'il a récemment traversé Le sprite suivant est le sprite de sortie. Nous placerons un sprite de sortie à la fin de chaque niveau. Et une fois que le joueur a collecté toutes les pièces d'un niveau, la sortie deviendra active. Si le joueur entre ensuite en contact avec le sprite de sortie, il passe au niveau suivant Selon le niveau, le sprite de sortie sera soit un drapeau d'une couleur choisie au hasard, soit une porte qui commence par être fermée, puis s'ouvre une fois qu'elle est active Ensuite, nous avons le Lock Sprite. Les costumes de ce sprite sont essentiellement de simples tuiles munies de verrous, et ils empêcheront le joueur d' accéder à certaines parties de certains niveaux Comme pour le sprite environnemental, les noms des costumes correspondent à la partie du niveau où les tuiles doivent apparaître Cependant, les noms des costumes des sprites verrouillés indiquent également la clé que le joueur doit collecter pour déverrouiller et retirer les tuiles Et pour les clés que le joueur doit récupérer, nous allons utiliser le sprite clé ici OK, les sprites suivants sont les sprites du jump pad. Cela augmentera la hauteur de saut du joueur, lui permettant ainsi d'atteindre des parties d'un niveau trop hautes pour être atteintes normalement. Vient ensuite le sprite de pause. Nous utiliserons ici le costume du bouton Pause pour afficher un bouton de pause en haut à droite de la scène pendant le jeu. Si le joueur clique sur le bouton Pause, nous interrompons le jeu et faisons apparaître la superposition de pause, qui se compose de boutons sur lesquels le joueur peut cliquer pour reprendre le jeu ou quitter le jeu Ensuite, nous avons le Sprite en forme de cœur et le sprite du compteur de pièces Ils apparaîtront toujours en haut à gauche de l' étape pendant le jeu. Nous utiliserons le sprite du compteur de pièces pour afficher le nombre de pièces qu'il reste au joueur à collecter dans le niveau actuel Ce sprite se compose principalement de costumes composés de zéro à neuf et fonctionnera de la même manière que les affichages de scores que nous avons créés dans les deux jeux précédents Et avec le sprite en forme de cœur, nous allons afficher le niveau de santé actuel du joueur Le sprite suivant est le sprite du boss. Bien entendu, nous utiliserons ce sprite pour le boss que le joueur doit vaincre pour terminer le jeu Tout comme le sprite en forme de cœur pour la santé du joueur, nous utiliserons le sprite de la barre de santé du boss pour afficher la santé du Pendant le combat contre le boss, le boss lancera des roquettes à la recherche du joueur et nous utiliserons le sprite à cette fin Et lorsqu'une fusée touche le joueur, nous jouons à l'animation Explode , en utilisant le sprite d'explosion Ensuite, il y a le sprite de superposition de texte. Avec ce sprite, nous allons afficher du texte au premier et au dernier niveau du jeu Le texte expliquera au joueur ce qui se passe et ce qu'il doit faire. Vient ensuite le sprite de l'écran titre. Comme pour Cosmic Havoc, nous allons afficher un écran titre au début du jeu Celui-ci sera composé d'un arrière-plan, du titre du jeu, du bouton Play et de quelques boutons permettant activer et de désactiver la musique et les effets sonores Enfin, nous avons le sprite N screen. Nous l'afficherons lorsque le joueur vaincra le boss, lui faire savoir qu'il a terminé le jeu avec succès Très bien, il est clair que nous avons beaucoup de travail devant nous, mais nous allons tout construire étape par étape, apprenant plein de choses en cours de route. Et avant même de nous en rendre compte, nous aurons une plateforme ou un jeu totalement fonctionnel et génial. Et comme d'habitude, nous allons commencer par laisser le joueur se déplacer dans la scène. 66. Boucle de jeu et gestion des commandes: Maintenant, évidemment, ce jeu va comporter de nombreuses pièces mobiles. Et pour que tout fonctionne correctement, en particulier lorsque nous commençons à détecter collisions entre les différents sprites, nous devons contrôler le moment où certains événements se produisent tout au long du jeu Nous le ferons à l'aide d'une boucle de jeu, qui s'exécutera à chaque image du jeu et qui diffusera des messages aux sprites, leur indiquant quoi faire et quand le faire Et comme la boucle de jeu contrôlera tous les sprites, nous allons créer le code correspondant dans la toile de fond OK, donc dans la zone de code pour la toile de fond, commençons par aller aux événements et un drapeau vert vent sur un bloc cliqué. Et ici, nous allons exécuter la boucle du jeu. Et comme il fonctionnera en continu, nous devrons prendre le contrôle et le bloquer définitivement. Maintenant, dans le jeu Loop, nous allons diffuser une série de messages. Les sprites recevront ensuite les messages et effectueront certaines actions Avec le premier message, nous vérifierons si le joueur appuie sur une touche de commande. Revenons donc aux événements et introduisons un bloc de diffusion. Et diffusons un nouveau message, que nous pouvons appeler contrôles de vérification. Et avant d'écrire le code pour vérifier les commandes, diffusons les trois autres messages en boucle de jeu. Ces trois éléments seront utilisés pour mettre à jour les sprites. Pour le premier, introduisons un autre bloc de diffusion et diffusons un message appelé Update one. Ensuite, nous en diffuserons une autre, que nous appellerons Update 2. Et enfin, diffusons une autre mise à jour appelée Update Three. La raison pour laquelle nous utilisons trois messages de mise à jour distincts deviendra plus logique au fur et à mesure. Mais en gros, nous utiliserons le premier pour vérifier s'il de collisions entre le sprite du joueur et le sprite ennemi Nous utiliserons le second pour effectuer des mouvements, des animations et d'autres actions, et nous utiliserons le dernier pour nous assurer que tout est correctement positionné sur la scène. OK. Nous allons maintenant gérer le message de vérification des commandes, en vérifiant si le joueur appuie sur une commande pour déplacer son sprite. Nous allons le faire dans le sprite de contrôle La raison en est principalement de ne pas encombrer la toile de fond ou le code Sprite du joueur Cela nous permettrait également d'ajouter plus facilement des commandes supplémentaires à l'avenir, comme peut-être un joystick à l'écran pour les joueurs utilisant des appareils mobiles Très bien, donc dans le code Control Sprite, commençons par ajouter un bloc Controls W I received check Pour savoir si une touche de contrôle est enfoncée ou non, nous allons créer quelques variables globales. Passons donc aux variables et créons-en une nouvelle. Et appelons-le un axe X et faisons-le pour tous les sprites La valeur de cette variable sera soit un, soit moins un, soit zéro selon que le joueur appuie sur une touche de contrôle droite, une touche de contrôle gauche ou aucune des deux. De même, créons une autre variable, appelons-la axe Y, et faisons-la également pour tous les sprites Celui-ci aura une valeur de un si le joueur appuie sur une touche de contrôle haut, négative une s'il appuie sur une touche de contrôle bas ou zéro s'il n' appuie pas sur une touche de commande haut ou bas. Pour définir les valeurs des variables, nous utiliserons la même astuce que celle que nous avons utilisée dans Cosmic Havoc Donc, d'abord, introduisons un bloc défini sur deux axes X et ajoutons-le au script « Quand je reçois ». Pour les commandes appropriées, nous vérifierons si vous appuyez sur la touche flèche droite ou sur la touche D. Passons donc aux opérateurs et ajoutons un bloc O au bloc set two. Passons ensuite à la détection et utilisons un bloc de touches pour chacune des conditions du bloc ou du bloc. Pour le premier, vérifions si la touche flèche droite est enfoncée. Et pour le second, vérifions si la touche D est enfoncée. Si nous lançons le jeu maintenant, nous pouvons voir que la valeur de l'axe X est fausse lorsque nous n'appuyons pas sur une touche de contrôle droite, mais si nous maintenons l'une des touches enfoncée, la valeur devient vraie. Et comme nous l'avons appris dans Cosmic Havoc, Scratch et d'autres langages de programmation traitent souvent une valeur vraie comme un et une valeur fausse comme zéro Maintenant, pour vérifier si une touche de contrôle gauche est enfoncée, revenons aux variables et modifions-les axe X par bloc. Si nous changeons l'axe X de zéro et que nous lançons le jeu, nous pouvons maintenant voir que scratch utilise un ou un zéro au lieu de deux ou faux. Et maintenant, nous voulons soustraire la valeur actuelle de l' axe X en appuyant ou non sur la touche de contrôle gauche. Passons donc d'abord aux opérateurs et ajoutons un bloc de soustraction au bloc de modification de l'axe X. Utilisons un zéro comme première entrée, et pour l'autre, nous pouvons dupliquer le bloc O ici et vérifier si la flèche gauche ou la touche A est enfoncée. Maintenant, si nous lançons le jeu, la valeur est nulle lorsque nous n'appuyons pas sur une touche de contrôle. C'est un lorsque nous appuyons sur une touche de commande droite, et c'est négatif lorsque nous appuyons sur une touche de contrôle gauche. OK ? Il ne reste plus qu'à faire de même pour les commandes verticales. Nous pouvons donc dupliquer ces deux blocs et les ajouter au bas du script. Pour ceux-ci, nous voulons définir et modifier la variable yxS. Pour les commandes vers le haut, vérifions la présence de la flèche vers le haut et de la touche W. Pour les touches bas, nous allons utiliser la flèche vers le bas et la touche S. Si nous l'essayons maintenant, appuyer sur une touche de contrôle haut fait passer l'axe Y à un, et appuyer sur une touche de contrôle bas le fait passer à moins un, et nous pouvons également utiliser les commandes horizontales et verticales en même temps. , maintenant que nous savons que les touches de contrôle fonctionnent correctement, nous pouvons accéder aux variables et masquer l'affichage des variables de contrôle, puis nous allons utiliser les variables pour déplacer les sprites du joueur 67. Ajouter un mouvement de joueur: Pour le déplacement du joueur, nous allons commencer par déplacer le sprite vers la gauche et vers la droite sur la scène Pour ce faire, nous vérifierons la valeur de axe X à chaque itération de la boucle de jeu, et si la valeur n'est pas nulle, nous déplacerons le sprite du joueur vers la gauche ou vers la droite d'une certaine quantité Pour ce certain montant, nous utiliserons une variable locale. Dans le code du sprite du joueur, créons une nouvelle variable On peut appeler cela une accélération. Et si vous ne le faites que pour ce sprite, nous pourrons masquer la variable La valeur de l'accélération restera toujours la même. Nous allons donc le configurer lorsque le joueur clique sur le drapeau vert. Pour ce faire, participons aux événements et gagnons un bloc sur lequel vous avez cliqué sur le drapeau vert Passons ensuite aux variables et ajoutons un bloc d'accélération défini au script Green Flag, et définissons-le sur deux. Ensuite, nous allons gérer les mouvements du joueur chaque fois que le sprite reçoit le deuxième message de mise à jour Passons donc d'abord aux événements et introduisons un bloc quand je reçois, en vérifiant la mise à jour du message. Afin de garder tout beau et propre, nous allons créer différents blocs personnalisés pour gérer différentes actions. Sinon, les scripts se compliqueront assez rapidement. Donc, pour le mouvement horizontal, passons aux blocs M et créons-en un nouveau. Nous pouvons l'appeler gérer le mouvement horizontal. Et cliquez sur OK. Déplaçons le bloc défini quelque part ici, et ajoutons un bloc de mouvement horizontal avec poignée lorsque je recevrai la deuxième mise à jour. Maintenant, pour le mouvement horizontal, le moment, nous allons simplement prendre la valeur de la variable de l'axe X, qui sera encore une fois un, moins un ou zéro, et nous allons la multiplier par la valeur de l'accélération. Modifiez ensuite l' exposition des sprites du joueur en fonction du résultat de cette multiplication Passons d'abord au mouvement, et ajoutons une modification x par bloc au script de mouvement horizontal de la poignée. Pour l'entrée, passons aux opérateurs et introduisons un bloc de multiplication. Passons ensuite aux variables, et faisons l'axe X multiplié par l'accélération. Maintenant, si nous lançons le jeu, nous pouvons déplacer le sprite du joueur vers la gauche et la droite Rien de trop chic pour le moment, mais au moins ça marche. Mais pour améliorer un peu les choses, nous pouvons atténuer un peu le mouvement, comme nous l' avons fait dans Cosmic Pour ce faire, nous pouvons utiliser une variable SpeedX pour augmenter progressivement la vitesse du joueur et diminuer lorsqu'il relâche la touche de mouvement Alors d'abord, créons une nouvelle variable appelée Speed x et faisons-la uniquement pour ce sprite Et allons-y, ajoutons un set to block au script Green Flag et initialisons la vitesse x à zéro Ajoutons maintenant une modification par bloc en haut du script de mouvement horizontal. Et utilisons-le pour changer la vitesse x par Xxs fois l'accélération en utilisant le bloc d'ici Si nous changeons l'exposition des sprites en fonction de la vitesse x et que nous lançons le jeu, rien ne limite actuellement la valeur de la vitesse x. Nous continuerons donc à avancer de plus en plus vite en maintenant exposition des sprites en fonction de la vitesse x et que nous lançons le jeu, rien ne limite actuellement la valeur de la vitesse x Nous continuerons donc à avancer de plus une touche de mouvement enfoncée De plus, la vitesse x ne revient jamais à zéro, même après avoir relâché la touche de mouvement. Pour résoudre ce problème, nous devrons ajouter un peu de friction. Pour ce faire, introduisons un bloc set two et placez-le juste au-dessus du bloc espion de modification, et nous l'utiliserons pour régler SpeedX sur la valeur actuelle de lui-même multipliée par un nombre décimal 0-1 Cela fixera une limite supérieure et inférieure la valeur de SpeedX ramènera progressivement à zéro lorsque le joueur relâchera la touche de mouvement Passons donc d'abord aux opérateurs et ajoutons un bloc de multiplication au bloc SpeedX défini. Revenons ensuite aux variables, et faisons SpeedX fois, disons 0,8 Plus la valeur est proche de un, plus vite le sprite atteindra sa vitesse maximale et plus vite il s'arrêtera complètement Maintenant, si nous lançons le jeu, le démarrage et l'arrêt sont un peu plus fluides et SpeedX a désormais une limite supérieure de huit et une limite inférieure de huit points négatifs Cela semble cependant un peu nerveux lorsque le sprite s'arrête En effet, lorsque le sprite est sur le point de s'arrêter, nous essayons de changer position en utilisant de très petites valeurs de vitesse X, ce qui ne fonctionne pas très bien dans Scratch Et dans tous les cas, les positions X et Y d'un sprite doivent toujours être des nombres entiers. Si nous essayons d'utiliser une valeur décimale, elle est arrondie au chiffre supérieur. Donc, pour résoudre ce problème, au lieu d'essayer de changer X par la valeur exacte de SpeedX, nous pouvons le changer par la valeur arrondie Pour ce faire, passons aux opérateurs et plaçons un bloc rond dans un espace vide. Déplaçons le SpeedXblock ici dans le bloc rond et le bloc rond dans le bloc change X. Et maintenant, l'arrêt se fait un peu plus facilement. OK. Nous pouvons maintenant accéder aux variables et masquer la variable vitesse x, puis nous allons ajouter gravité pour que le joueur ne flotte pas dans les airs 68. Ajouter de la gravité: Pour commencer à travailler sur le mouvement vertical, allons dans Mes blocs et créons un nouveau bloc personnalisé. Appelons-le gérer le mouvement vertical et cliquez sur OK. Déplaçons le bloc défini dans un espace vide et ajoutons un bloc de mouvement vertical de poignée lorsque je recevrai un bloc de mouvement vertical de poignée la deuxième mise à jour, juste après le bloc de mouvement horizontal de poignée. Comme pour le mouvement horizontal, nous allons créer une variable de vitesse Y que nous utiliserons pour modifier la position Y du sprite. Cependant, nous allons également réduire la valeur Y de la vitesse pour chaque image d'un certain montant, ce que nous appellerons la gravité. Cela fera toujours tomber le sprite vers le bas de la scène Passons donc d'abord aux variables et créons-en une nouvelle. Nous pouvons l'appeler vitesse Y et l' utiliser uniquement pour ce sprite. Et allons-y, ajoutons un bloc set two au script Green Flag et utilisons-le pour régler la vitesse Y à zéro. Ensuite, nous allons créer une variable pour la gravité. Nous utiliserons également la gravité pour les sprites ennemis Nous allons donc rendre la variable de gravité globale et la définir dans le code de fond. Dans le code de fond, créons donc une nouvelle variable globale appelée gravité. Ajoutons maintenant un set à bloquer en haut du script Green Flag, et réglons la gravité sur moins 1,5. Il s'agit d'une valeur arbitraire qui, selon moi, fonctionne bien pour ce jeu en particulier. L'essentiel est qu'il soit négatif pour déplacer les sprites vers le bas. OK ? Revenons maintenant au code des sprites du joueur Dans le script de mouvement vertical de la poignée, introduisons une modification par bloc et utilisons-la pour modifier vitesse Y en fonction de la variable de gravité. Ensuite, nous pouvons utiliser la variable de vitesse Y pour modifier la position Y des sprites en passant au mouvement et en apportant un changement Y par bloc, puis en revenant aux variables et en utilisant un bloc SpeedY comme entrées Si nous déplaçons maintenant le sprite du joueur vers le haut de la scène et que nous lançons le jeu, il tombe plus vite vers le bas Maintenant, nous ne pouvons pas voir le sprite du joueur, alors faisons en sorte qu'il arrête de tomber une fois que cette position Y sera inférieure, disons, à moins 140 Pour ce faire, passons au contrôle et ajoutons un si le bloc au bas du script de mouvement vertical. Et pour ce qui est de la maladie, allons voir les opérateurs et leur apporter un montant inférieur à un bloc. Passons maintenant au mouvement et vérifions si la position Y est inférieure à moins 140. Si tel est le cas, introduisons un bloc Y deux et fixons-le à moins 140. Passons également aux variables et ajoutons un bloc de deux au bloc I puis réglons la vitesse Y à zéro afin que vitesse Y ne diminue pas continuellement lorsque le joueur ne tombe pas réellement. Si nous déplaçons maintenant le sprite vers le haut et lançons le jeu, il tombe jusqu'à ce qu'il se rapproche du bas, puis s'arrête Très bien, maintenant nous pouvons masquer la variable vitesse et la variable gravité, et la prochaine étape sera de laisser le joueur sauter. 69. Laisser le joueur sauter: Pour faire sauter le sprite du joueur, il suffit de régler la vitesse Y une valeur positive chaque fois que le joueur appuie sur une touche de contrôle vers le haut, et la gravité se chargera de faire redescendre le sprite Donc, d'abord, pour la valeur que nous avons utilisée pour définir la vitesse Y, créons une nouvelle variable. Nous pouvons l'appeler « force de saut et l'utiliser uniquement pour ce sprite Masquons la variable. Ajoutons ensuite un bloc set two au script Green Flag. Et utilisons-le pour régler la force de saut à 12. C'est un autre nombre arbitraire qui, selon moi, fonctionne bien avec ce jeu. Ensuite, revenez à définir le mouvement vertical de la poignée. Avant de modifier la vitesse Y en fonction de la gravité, nous allons vérifier si le joueur appuie sur une touche de commande supérieure, et si c'est le cas, nous allons régler la vitesse Y sur la variable de force de saut. Donc, d'abord, détachons tous ces blocs du script pour le moment Passons ensuite au contrôle et ajoutons un bloc I then au script. Pour vérifier si le joueur appuie sur une touche de contrôle vers le haut, nous pouvons vérifier si la variable de l'axe Y est égale à un. Donc, pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'axe Y est égal à un. Si c'est le cas, introduisons un ensemble à bloquer et définissons la vitesse pour augmenter la force. Nous pouvons maintenant rattacher ces autres blocs au bas du script Et si nous lançons le jeu, en appuyant sur la flèche vers le haut ou la touche W, le sprite se déplacera vers le haut et la gravité le ramènera le bas lorsque nous relâcherons la touche Mais pour le moment, tant que nous maintenons une touche de saut enfoncée, le sprite continuera à monter Pour résoudre ce problème, nous pouvons savoir si le sprite est actuellement en l' air et régler la vitesse Y sur la force de saut uniquement si le joueur appuie sur une touche de saut alors qu'il n'est pas déjà en l'air Pour garder une trace de cela, créons une nouvelle variable. Nous pouvons l'appeler en l'air et le fabriquer uniquement pour ce sprite. La valeur de l'erreur sera soit zéro lorsque le joueur n'est pas dans les airs, soit un lorsqu'il est en l'air. abord, pour que le joueur puisse sauter au début de la partie, passons au script du drapeau vert et définissons le script d'erreur à zéro. Ensuite, dans le script de mouvement vertical du bloc I then où nous vérifions si l'axe Y est égal à un, nous ne réglerons la vitesse Y sur la force de saut que si la valeur de in error est actuellement nulle. Passons au contrôle, et enroulons un bloc mince en I autour du bloc Y de vitesse défini. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Revenons ensuite aux variables et vérifions si l'erreur est égale à zéro. Prenons maintenant un ensemble à bloquer et placons-le dans le bloc d'accès IY juste après le bloc I et le bloc d'erreur. Faisons en sorte que l'erreur soit un. Ainsi, une fois que le sprite commence à sauter, la prochaine fois que ce bloc s'exécute, il y aura une erreur. SpeedY ne sera donc pas réglé sur la force de saut Nous pouvons voir que cela fonctionne si nous lançons le jeu et maintenons une touche de saut enfoncée. Cependant, pour le moment, une erreur ne revient jamais à zéro, nous ne pouvons donc plus sauter. Pour résoudre ce problème dans ce bloc inférieur, où nous empêchons le sprite de se déplacer, nous devons introduire un autre ensemble à bloquer et mettre err à zéro. Et maintenant, une fois que le sprite atteint le fond, nous pouvons sauter à nouveau. Le problème maintenant, c' est que nous ne pouvons pas du tout sauter très haut. Nous pourrions simplement utiliser une valeur plus élevée pour la variable de force de saut. Mais une caractéristique courante des plateformes ou des jeux est de permettre au joueur de maintenir la touche de saut enfoncée afin d'augmenter sa hauteur de saut jusqu'à un certain point, bien sûr. De plus, si nous maintenons une touche de saut enfoncée, le sprite saute immédiatement à nouveau dès qu'il atteint le Pour résoudre ces deux problèmes, créons d'abord une nouvelle variable. Appelons ça du saut et faisons-le uniquement pour ce sprite. Nous utiliserons la variable de saut pour savoir combien de temps le joueur a maintenu une touche de saut enfoncée. Tant que la valeur est inférieure à un nombre spécifié, nous continuerons à régler la vitesse en fonction de la force de saut. Cela permettra au joueur de sauter un peu plus haut s'il maintient une touche de saut enfoncée. Pour commencer, comme d'habitude, passons au script du drapeau vert, ajoutons un autre ensemble à bloquer et mettons le saut à zéro. Maintenant, revenez au mouvement vertical de la poignée, le bloc I then ici ne permet actuellement de régler la vitesse Y sur la force de saut qu'une seule fois immédiatement après que le joueur ait appuyé sur une touche de saut. Ainsi, au lieu de n'autoriser cela que lorsque le nombre d'erreurs est égal à zéro, nous l'autoriserons également si la valeur du saut est supérieure à zéro. Pour ce faire, passons aux opérateurs et plaçons un bloc or dans un espace vide pour le moment. Utilisons maintenant le bloc « in air  » égal à zéro ici comme l'une des conditions du bloc « or block ». Et pour l'autre, introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le saut est supérieur à zéro. Nous pouvons maintenant utiliser ceci ou bloquer comme condition pour le bloc I then. Ensuite, saisissons une modification par bloc et plaçons-la dans le bloc if then au-dessus du bloc Y de vitesse définie, et changeons en sautant d'un. Et maintenant, nous voulons régler la vitesse Y sur la force de saut uniquement si le saut est actuellement inférieur à un certain nombre. Passons donc au contrôle et enroulons un si autour du bloc Y à vitesse définie uniquement . Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Maintenant, en utilisant une copie du bloc de saut ici, vérifions si le nombre de sauts est inférieur à sept. Ainsi, une fois que nous aurons commencé à sauter, l'erreur sera nulle Je bloque donc les courses, en changeant la variable de saut de 0 à 1 Et comme le nombre de sauts est inférieur à sept, Speed Wi est réglé sur la force du saut. Ensuite, si nous maintenons la touche de saut enfoncée, la prochaine fois que nous appuierons dessus, je bloquerai . En cas d'erreur, il y aura un, mais maintenant le saut sera supérieur à zéro, donc le bloc fonctionnera toujours. saut va aller de 1 à 2, soit moins de sept La vitesse wi sera donc à nouveau réglée sur la force de saut, qui fera monter le sprite encore plus haut Cela continuera jusqu'à ce que le saut atteigne sept Maintenant, pour le moment, le saut ne reviendra jamais à zéro et nous ne pourrons plus sauter. Donc, pour que cela fonctionne correctement, nous devons nous assurer de mettre le saut à zéro lorsque le joueur n'appuie pas sur une touche de saut. Pour ce faire, nous devons remplacer l'axe I y égal à un bloc ici par un bloc I thin ts. Alors d'abord, passons à Control et plaçons un bloc I Think TS dans un espace vide. Utilisons l'axe Y égal à un bloc à partir d'ici comme condition et déplaçons les blocs de l'intérieur du bloc ITN vers la partie I du bloc I thin ts. Et pour la partie LT, passons aux variables, introduisons un ensemble à bloquer et fixons le saut à zéro. Ensuite, nous pouvons remplacer le bloc ITN vide ici par le nouveau bloc ITN ls, en veillant à tout rejoindre Maintenant, si nous lançons le jeu, maintenez une touche de saut enfoncée pour faire sauter le sprite plus haut Et si nous maintenons la touche enfoncée, la variable de saut continue d'augmenter, sorte que nous ne sautons pas à nouveau immédiatement lorsque nous atteignons le bas. Pour sauter à nouveau, nous devons d'abord relâcher le réglage de la touche de saut en revenant à zéro, puis appuyer à nouveau dessus. De plus, si nous appuyons et relâchons rapidement une touche de saut, le sprite ne montera pas aussi haut À l'heure actuelle, nous pouvons masquer les variables en l'air et les variables de saut. Ensuite, nous allons rendre les choses un peu plus excitantes en ajoutant des plateformes sur lesquelles le joueur peut marcher et sauter. 70. Marcher sur le niveau: Si nous examinons le sprite du niveau ici et examinons les costumes, j'ai brièvement mentionné il y a quelques leçons que nous utiliserons le costume du niveau test ici à des fins de test Allons-y, choisissons le costume du niveau de test, et rendons le sprite du niveau visible sur la scène Bien, donc si nous revenons au code du sprite du joueur, étant donné que le niveau se compose de plusieurs plateformes à différentes hauteurs, nous ne pouvons pas simplement maintenir le sprite du joueur à une position Y précise comme nous l'avons fait jusqu'à présent Au lieu de cela, nous devrons vérifier en permanence si le sprite du joueur entre en collision avec le sprite du niveau et ajuster la position Y du sprite du joueur pour qu'il semble se trouver sur les plateformes OK ? Et pour que tout reste beau et net, nous allons le faire dans un bloc personnalisé. Passons donc à MBLOXS et créons-en un nouveau. Tapons d'abord «   move vertically B », et créons une nouvelle entrée appelée DY. Cliquez ensuite sur OK. Déplaçons le bloc défini ici. Et dans le script de mouvement vertical Handle, nous pouvons enregistrer la vitesse définie Y à zéro, définir une erreur à zéro bloc et supprimer le reste du bloc ITN ici. Mettons également de côté le bloc Y de modification Y par vitesse et remplaçons-le par un bloc de déplacement vertical. Et pour l'entrée, nous pouvons utiliser le bloc de vitesse Y ici. Très bien maintenant, définissez le déplacement vertical, allons-y et déplaçons le changement Y par bloc dedans, et changeons Y par l'entrée DY. Ensuite, nous allons vérifier si le sprite du joueur touche le sprite du niveau Nous allons en fait le faire plusieurs fois dans le code, donc pour éviter de réécrire le code plusieurs fois, nous allons effectuer la vérification dans un bloc personnalisé. Créons donc un nouveau bloc. Pour l'instant, nous n'utiliserons le bloc pour vérifier si nous touchons les sprites du niveau, mais nous l' utiliserons éventuellement pour vérifier si nous touchons d'autres objets solides, tels cadenas et le sprite du jump pad Faisons en sorte que le bloc touche solide et que nous cliquons sur OK. Nous pouvons déplacer le bloc défini quelque part ici. Et allons-y et ajoutons une case touchant bloc plein au bas du script de déplacement vertical. OK, et pour définir le fait que le joueur touche un solide, nous aurons besoin d'un moyen de faire savoir au script de déplacement vertical si le joueur touche un solide ou non. Pour cela, nous allons créer une nouvelle variable. Passons donc aux variables, et créons-en une nouvelle, l' appelant touch solid. Et en le faisant uniquement pour ce sprite, nous pourrons masquer la variable La première chose que nous allons faire dans le script check touch solid est introduire un ensemble à bloquer et de mettre le point touch solid à zéro. Cela signifie que le sprite ne touche pas un solide. Ensuite, nous allons vérifier si le sprite touche le niveau. Passons donc au contrôle et introduisons un bloc IN. Pour ce qui est de la condition, passons à la détection, introduisons un bloc de pointeur de souris tactile et vérifions si nous touchons le sprite du niveau Si tel est le cas, passons aux variables, introduisons un ensemble à bloquer et fixons Touching Solid à un. Cela signifie que nous touchons un solide. OK ? Maintenant, dans le script de déplacement vertical, après avoir exécuté la vérification en touchant le bloc solide, nous pouvons utiliser la variable touch solid. Pour ce faire, passons au contrôle et introduisons un bloc if then. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le fait de toucher un solide est égal à un. Si c'est le cas, nous voulons déplacer le sprite du joueur un peu vers le haut pour qu'il ne touche plus le niveau Une façon de le faire serait de déplacer le sprite vers le haut, même s'il s'est déplacé vers le bas pendant l'image en cours La quantité qu'il a déplacée vers le bas est donnée par l'entrée DY, qui a la même valeur que la vitesse Y. Donc, ce que nous pouvons faire, c'est prendre la valeur absolue de DY et la rajouter à la position Y du sprite Donc, si le sprite descend, disons, dix pas, nous pouvons le faire remonter de dix pas Pour ce faire, passons au mouvement et ajoutons un bloc de modification Y B au bloc I then. Pour la saisie, passons aux opérateurs et introduisons un abdos de bloc. Et nous voulons obtenir la valeur absolue de DY. Cela rendra la valeur positive repoussera le sprite vers le haut. Nous voulons également remettre à zéro la vitesse Y et les variables d'erreur. Récupérons donc les blocs que nous avons enregistrés ici et ajoutons-les au bloc I then. Déplaçons maintenant le sprite du joueur pour qu'il soit un peu au-dessus du sol et essayons-le Ce n'est certainement pas parfait, mais cela nous permet surtout de rester sur les plateformes. Cependant, lorsque nous sautons de haut en bas, le sprite s'arrête brièvement vers le bas avant de se Cela se produit parce que si la valeur de SpeedY devient assez élevée, le sprite peut passer de quelques marches au-dessus du niveau à quelques pas dans le niveau en une seule image Le sprite retrouvera donc sa position initiale, quelques pas au-dessus du niveau, quelques pas au-dessus du niveau, puis recommencera à retomber. La solution est cependant assez simple. Au lieu de déplacer le sprite vers haut de la quantité totale qu'il a déplacée vers le bas, nous pouvons le faire reculer d'un pas à fois jusqu'à ce qu'il ne touche plus le niveau Donc, d'abord, nous pouvons nous débarrasser de la modification Y en utilisant les onglets du bloc DY ici. Et maintenant, nous devons utiliser un bloc de répétition qui se répète jusqu'à ce que le fait de toucher un solide soit égal à zéro Passons donc à Control, répétons jusqu'au bloc et placez-la dans le bloc if then en dessous des deux blocs définis. Pour ce qui est de la condition, nous pouvons dupliquer le solide en contact égal à un bloc ici, et le remplacer par un solide en contact égal à zéro. À l'intérieur du bloc repeat until, nous allons augmenter la position Y d'une unité. Vérifiez ensuite si le sprite touche toujours le niveau. Passons donc au mouvement, introduisons un bloc de modification Y et modifions-le un par un. Passons ensuite à Mblocks et cochons bloc plein en dessous du bloc Y de modification Cela ne fonctionnera pas pour le moment, car la répétition jusqu'au blocage se produit sur plusieurs images et comme la gravité déplace le sprite de plus d'un pas par image, il continue à se déplacer vers le bas Pour résoudre ce problème, nous devons faire en sorte que le bloc répète toutes ses répétitions dans une seule image Comme nous l'avons vu dans Cosmic Havoc, nous pouvons le faire en utilisant des blocs personnalisés, exécutés sans fonction de rafraîchissement de l'écran Pour l'activer pour le script de déplacement vertical, nous pouvons cliquer avec le bouton droit sur le bloc de définition, choisir Modifier, cocher Exécuter sans rafraîchir l'écran ici et cliquer sur OK. Si nous déplaçons maintenant le joueur juste au-dessus du sol et que nous relançons le jeu, le sprite reste toujours en haut des plateformes de niveaux, et il ne s'arrête plus au bas d'un saut , nous progressons assez bien en concerne les collisions de niveaux pour le moment, mais nous avons encore quelques problèmes à corriger. Tout d'abord, si nous sautons alors que nous sommes sous une plate-forme flottante basse, nous la traversons et nous atterrissons dessus. Deuxièmement, si nous entrons dans une partie verticale du niveau, nous montons immédiatement vers le haut. Et troisièmement, nous pouvons accéder aux plateformes avec différentes parties du sprite du joueur, comme les bras et les casques Nous allons résoudre tous ces problèmes au cours des deux prochaines leçons. 71. Plus de collisions de niveau: Le premier problème que nous allons résoudre avec les collisions de niveaux est de faire sorte que nous ne puissions pas sauter par le bas des plateformes. Le problème pour le moment, c'est que nous partons du principe que toutes les collisions avec le niveau se produisent uniquement au bas du sprite du joueur Nous le déplaçons donc vers le haut pour sortir du niveau. Ce que nous devons également faire, c'est vérifier si le haut du sprite du joueur touche le niveau, et si c'est le cas, nous allons déplacer le sprite vers le bas une étape à la fois jusqu'à ce qu' il ne touche pas le Lorsque nous sautons, la valeur de l'entrée DY et du déplacement vertical seront positives. Et lorsque nous tombons ou lorsque la gravité nous fait descendre dans le niveau, DY sera négatif. Donc, en gros, lorsque nous touchons un solide, si DY est positif, nous voulons descendre étape par étape. Et si c'est négatif, nous voulons progresser d'un cran. Pour ce faire, passons au contrôle et plaçons un bloc I puis s dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à, et vérifions si DY est supérieur à zéro. Cela signifie que nous sautons Il est donc probable que le niveau entre en collision quelque part en haut du sprite, ce qui signifie que nous devons descendre pas à pas Passons donc au mouvement, ajoutons une modification Y par bloc à la partie I et modifions-la par moins un. Pour le bloc solide à cocher ici, nous voulons l'attacher au bas du bloc I puis s, car nous devons vérifier si nous touchons un solide quelle que soit la valeur de DY. Nous pouvons maintenant déplacer le changement Y d'un bloc dans la partie des sorties, puis placer le tout dans le bloc de répétition jusqu'au bloc. Si nous lançons maintenant le jeu, les collisions avec le fond fonctionnent toujours normalement. Mais maintenant, si nous sautons et touchons le bas d'une plate-forme, cela nous empêche de la traverser. Mais si nous arrivons ici sous la plate-forme suspendue la plus basse et que nous maintenons une touche de saut enfoncée, nous pouvons voir que le sprite reste en quelque sorte au bas de la plate-forme pendant une courte période Cela se produit parce que nous sautons moins de sept blocs dans les scripts de mouvement vertical du manche. Même si notre tête touche le bas d'une plateforme, tant que le nombre de sauts est inférieur à sept, elle continuera à essayer de déplacer le sprite plus haut Pour résoudre ce problème, si nous touchons un solide et que DY est supérieur à zéro, nous pouvons régler le saut à une valeur élevée, ce qui empêchera le sprite d'essayer de se déplacer plus haut Ainsi, dans le script move vertically, passons aux variables et ajoutons un ensemble à bloquer à la partie I du bloc In s. Il ne nous reste plus qu'à régler saut à sept pour que cela fonctionne, mais au cas où nous déciderions d'utiliser un nombre supérieur à mais au cas où nous déciderions d'utiliser un nombre supérieur à sept plus tard, fixons-le à quelque chose de vraiment élevé, comme 99. Maintenant, si nous lançons le jeu, si nous sautons et que notre tête touche une plateforme, nous retombons immédiatement au sol, même si nous maintenons la touche de saut enfoncée. Un autre petit problème que nous avons , c'est que lorsque notre tête touche une plate-forme, nous sommes capables de sauter à nouveau en l'air. Cela est dû au fait que nous mettons actuellement l'air à zéro chaque fois que nous touchons le niveau, que nous tombions ou que nous sautons. Cela nous permet de sauter à nouveau immédiatement dès que nous touchons le niveau. Pour y remédier, nous ne voulons mettre in air à zéro que si la valeur de DY n' est pas supérieure à zéro. Nous pouvons le faire en déplaçant le bloc set in air vers zéro dans la partie outs du bloc IN outs. Si nous réessayons, nous ne pouvons plus sauter en l'air une fois que notre tête a touché le bas d'une plate-forme. C'est bon. Réglons maintenant le problème selon lequel le fait d'entrer dans une partie verticale du niveau nous déplace soudainement vers le haut. Cela se produit parce que nous ne déplaçons actuellement le joueur que vers le haut ou vers le bas lorsqu'il touche le niveau. Ainsi, dès que le script de déplacement vertical détecte que nous touchons le niveau et que la valeur de DY n'est pas supérieure à zéro, il pousse immédiatement le sprite vers le haut jusqu'à ce qu'il ne touche plus le Pour éviter cela, après avoir déplacé le sprite horizontalement, ce qui se produit avant de le déplacer verticalement, nous voulons vérifier si le côté gauche ou droit du sprite du joueur touche le niveau, et si c'est le cas, nous le ferons reculer un pas à la fois jusqu'à ce qu' il ne touche plus le Ensuite, lorsque le script de déplacement vertical s'exécute, toutes les collisions détectées se produiront entre le niveau et le bas ou le haut du sprite du joueur, et non entre les côtés OK, donc pour gérer les collisions lors d'un déplacement horizontal, allons dans MyBlock et créons-en un nouveau Pour celui-ci, tapez move horizontalement en ajoutant une nouvelle entrée appelée DX Assurez-vous de cocher Exécuter sans rafraîchir l'écran. Cliquez ensuite sur OK. Déplaçons le bloc défini sous le script de mouvement horizontal de la poignée. Et dans le script de mouvement horizontal Handle, retirons le bloc X de modification, remplaçons par un bloc de déplacement horizontal et utilisons le bloc X de vitesse ronde ici comme entrée. Ensuite, nous pouvons déplacer le bloc de modification X dans le script de déplacement horizontal et modifier X par l'entrée Dx Ensuite, comme dans le script de déplacement vertical, nous voulons vérifier si le sprite touche un solide, et si c'est le cas, le faire reculer d'un pas jusqu'à ce qu' il ne touche pas un solide Nous pouvons donc commencer par dupliquer tout ce qui se trouve dans le script de déplacement vertical, commençant par la première case en appuyant sur le bloc plein et en l'ajoutant au script de déplacement horizontal Bien entendu, au lieu de régler la vitesse Y à zéro, nous voulons régler la vitesse x à zéro. Et au lieu d'utiliser DY ici, nous voulons utiliser Dx Et comme il s'agit de mouvements horizontaux, nous n'avons rien à faire avec la variable de saut ou la variable d'erreur. Nous devons également changer X au lieu de Y. Supprimons donc les blocs Y. Passez ensuite au mouvement et ajoutez une modification X par bloc à chaque partie du bloc if then s. Si la valeur de DX est positive, nous nous déplaçons vers la droite Donc, pour sortir du niveau, nous devons nous déplacer vers la gauche. Nous allons donc changer X par moins un. Sinon, nous devons nous déplacer vers la droite, nous allons donc changer X par un positif. OK, je pense que nous sommes prêts à essayer. Maintenant, si nous entrons dans une partie verticale du niveau, cela nous empêche d' avancer, et cela ne nous pousse pas vers le haut, c'est bien. Cependant, nous avons un petit problème qui n'est pas évident pour nous actuellement. Pour voir le problème, allons dans l' onglet costumes pour connaître le niveau des sprites Maintenant, prenons l'une de ces petites plateformes suspendues et copiez-la et collez-la. Et déplaçons la copie vers le bas jusqu'à ce qu'elle dépasse légèrement du sol. Assurons-nous maintenant de tout désélectionner afin de ne pas déplacer accidentellement des objets Alors lançons le jeu. Si nous marchons jusqu'à la partie du sol qui dépasse, nous ne pouvons pas la traverser. Se retrouver coincé sur de légères bosses comme celle-ci peut être assez ennuyeux Il serait préférable de laisser le joueur marcher juste au-dessus des bosses Pour ce faire, lorsque nous entrons en collision avec le niveau en nous déplaçant horizontalement, avant de déplacer le sprite arrière pour sortir du niveau, nous pouvons d'abord vérifier si le déplacer légèrement vers le haut nous permet d' Si c'est le cas, nous sommes prêts à partir. Nous n'avons pas besoin de déplacer le sprite vers l'arrière. Sinon, nous le ramènerons là où il était, puis nous procéderons à son déplacement vers l'arrière Dans le script de déplacement horizontal, la première chose que nous voulons faire si le fait de toucher un solide équivaut à un bloc est commencer à déplacer le sprite du joueur un pas à fois pour un total de peut-être dix pas. À chaque étape, nous vérifierons si le sprite touche le niveau, et si ce n'est pas le cas, nous pouvons arrêter tout le script de déplacement horizontal Donc, pour commencer, passons au contrôle et plaçons un bloc de répétition dans un espace vide, et nous voulons répéter dix fois. Pour chaque répétition, nous voulons déplacer le sprite d'un pas vers le haut Passons donc au mouvement, introduisons un changement Y par bloc et modifions-le un par un. Ensuite, nous voulons vérifier si le sprite touche toujours un solide Passons donc d'abord aux blocs M et cochons le bloc plein juste en dessous du bloc Y de modification. Passons ensuite au contrôle et plaçons un si mince bloc juste en dessous. Pour la condition, nous pouvons utiliser une copie du bloc solide égal à zéro au toucher ici. Si c'est le cas, le sprite ne touche plus le niveau et nous n'avons rien d'autre à faire Nous allons donc arrêter l'ensemble du script en introduisant un bloc d'arrêt et en le configurant pour arrêter ce script. Maintenant, si le bloc de répétition se termine, cela signifie que le sprite touche toujours un solide Nous devrons donc procéder à son déplacement vers l'arrière pour sortir du solide Cependant, le sprite est maintenant dix pas plus haut qu'il ne devrait l'être, nous devons donc d'abord le faire descendre de dix pas. Pour ce faire, il suffit de revenir au mouvement, d' attacher une modification Y par bloc au bas du bloc de répétition et de modifier Y par moins dix. Maintenant, nous pouvons saisir tout cela et nous voulons le placer juste en haut du I, toucher un solide équivaut à un bloc, avant même que le bloc de vitesse défini de X à zéro ne soit atteint. En effet, si nous parvenons à déplacer le sprite au-dessus d'une bosse, nous n'avons pas besoin d'arrêter son mouvement horizontal Et maintenant, si nous lançons le jeu, nous pouvons franchir de petites bosses dans le niveau si la bosse est supérieure à dix marches, nous ne pourrons pas la franchir, et c' est exactement ce que nous voulons Et cela nous permet également de gravir des pentes. Mais finalement, nous arriverons dévaler une pente si nous essayons de marcher dessus. Très bien, nous pouvons revenir aux costumes pour le niveau de Sprite Et débarrassez-vous de cette pièce supplémentaire du costume de niveau test que nous avons ajoutée. Le dernier problème que nous devons régler est de savoir où différentes parties du sprite du joueur peuvent s'accrocher au niveau 72. Utiliser la Hitbox du joueur: Comme nous vérifions les collisions avec le niveau en utilisant le costume actuel du joueur sprite, les parties du costume qui ressortent, comme les bras et les casques, peuvent également entrer en collision avec le Pour résoudre ce problème, nous pouvons passer temporairement à un costume plus simple avant de vérifier s'il y a des collisions, puis revenir à un costume plus compliqué par la suite. Cela ressemble à ce que nous avons fait dans Cosmic Havoc, où nous utilisons un costume de hit box plus simple pour détecter les collisions entre le sprite du joueur et les Si nous accédons à l' onglet costumes pour le sprite du joueur, tout en bas, nous avons deux costumes en forme de boîte à hanches, un costume normal et un costume pour les joueurs accroupis, ce que nous aborderons un peu plus tard Pour l'instant, avant de vérifier s'il y a des collisions, nous allons temporairement passer au costume Hip Box normal, qui est un simple rectangle. Et juste pour vous montrer quelle partie du sprite du joueur sera couverte par la boîte à hanches, je vais passer au costume de Zero, qui est inactif, copier les parties du costume Et collez-les sur le costume Hip Box. Nous pouvons maintenant voir que la zone des hanches ignore les bras du joueur, ainsi que la majeure partie du casque Cela nous permettra de nous rapprocher de certaines parties du niveau de ne pas nous coincer les bras ou le casque sur le niveau. OK, donc pour commencer, passons au code Sprite du joueur Avant de gérer les mouvements horizontaux et verticaux dans le script « Quand je recevrai la mise à jour 2 », nous voulons remplacer le costume de sprites du joueur par celui de hipbox, et nous le ferons lorsque le joueur recevra le message de mise à jour 1 Cela aura du sens plus tard , lorsque nous commencerons à vérifier s'il y a des collisions entre le sprite du joueur et l'ennemi et des sprites à collectionner . Alors, d'abord, déplaçons légèrement le script W I receive Update two vers le bas. Passons ensuite aux événements, introduisons un nouveau bloc lorsque je reçois et définissons-le sur lorsque je reçois la première mise à jour, et nous essaierons de garder tous ces scripts assez propres en faisant tout dans des blocs personnalisés. Passons donc aux blocs M et créons-en un nouveau. Appelons-le set hit box et cliquez sur OK. Nous pouvons continuer et ajouter un bloc set hit box au script W I receive Update one. Amenons ensuite le bloc set hit box défini quelque part ici. Comme nous l'avons vu précédemment, le sprite du joueur possède en fait deux cases de frappe et nous utiliserons éventuellement l'état du joueur pour déterminer la zone de frappe à utiliser Mais pour l'instant, nous allons simplement utiliser le costume de hit-box normal. Donc, dans la boîte à succès définie, passons à Looks, introduisons un costume de changement à bloquer et passons du costume à la boîte de frappe. Maintenant que le sprite reçoit le mise à jour 1 avant le message de mise à jour 2, son costume passera à celui de la boîte à hanches avant de vérifier s'il n'y a pas de collision avec le niveau Bien, une fois tout cela fait, nous voulons revenir à un costume normal Pour cela, allons dans Mblocks et créons un nouveau bloc personnalisé. Appelons cela animer et cliquez sur OK. À présent, nous allons placer un bloc d'animation tout en bas du script Update to et déplacer le bloc d'animation défini ici. Nous utiliserons éventuellement le script d'animation pour animer le costume des Sprites Mais pour l'instant, passons à Looks, ajoutons un bloc de costumes Switch et passons au costume Idle Zero. Si nous lançons le jeu maintenant, nous ne pouvons pas dire si c'est différent, car le sprite repasse à son costume zéro avant que différent, car le sprite repasse à son costume zéro l'écran ne se rafraîchisse, mais maintenant les pieds du sprite peuvent entrer davantage dans le niveau, et si nous montons jusqu'à une partie verticale du niveau, nous pouvons nous en rapprocher car le casque n' entre plus en collision avec le De plus, si nous sautons sur une plate-forme et que nous tombons sur le côté, nos bras et notre casque ne s'y accrochent pas. Génial D'accord, donc je sais que vous en avez probablement autant marre que moi de ne voir qu' un seul costume pour le joueur Sprite Ensuite, nous allons travailler sur l' animation des sprites. 73. Correction d'erreurs et temps de coyote: Avant de commencer à animer le joueur, il y a un bug dans le saut que nous devrions corriger très rapidement Si nous sautons sur une plateforme et commençons à tomber, nous pouvons sauter en l'air. Cela se produit parce que dans le script de mouvement vertical de la poignée, nous ne réglons la variable in air un que lorsque le joueur saute, mais nous devons également régler sur un lorsque le joueur tombe Pour ce faire, nous pouvons déplacer l'ensemble en air vers un bloc en dehors d'ici et placer dans le script de déplacement vertical avant que la première case ne touche le bloc solide. Et maintenant, on ne peut plus sauter en l'air après être tombé d'une plateforme Cependant, il est un peu difficile de sauter lorsque vous quittez le bord d'une plate-forme. Si le sprite se trouve même légèrement hors de la plateforme, nous ne pouvons pas sauter C'est un problème courant que je rencontre dans les plateforme créés par de nouveaux développeurs de jeux Une solution à ce problème consiste à utiliser ce que l' on appelle le temps du coyote. Il porte le nom du coyote des séries de dessins animés Coyote et Dans presque tous les épisodes, alors qu'il poursuit le coureur de route, le coyote court à quelques mètres du bord d' une falaise avant de finalement en rendre compte et de tomber au sol De même, avec le temps passé par un coyote sur une plateforme ou un jeu, nous pouvons permettre au joueur de sauter même s'il se trouve légèrement en dehors du bord de la Le joueur ne remarquera peut-être même pas que cela se produit, mais cela lui fait simplement et est beaucoup moins frustrant. Pour intégrer le temps de coyote dans notre jeu, au lieu de n' utiliser que zéro ou un pour la variable d'erreur, nous pouvons augmenter continuellement sa valeur pendant que le joueur est en l'air et lui permettre de sauter tant que la valeur est inférieure à un petit nombre spécifié Donc, tout d'abord, dans le script de mouvement vertical de la poignée, retirons le bloc Nir égal à zéro du bloc ou situé ici et le mettre de côté Passons ensuite aux opérateurs, remplaçons-le par un bloc inférieur à, et vérifions si le nombre d'erreurs est inférieur à quatre. Cela devrait suffire. Nous pouvons maintenant nous débarrasser du bloc égal, et dans le script de déplacement vertical, au lieu de définir l'erreur à un, nous voulons l'augmenter d'une unité. Supprimons donc le bloc d'erreur défini à partir d'ici. Passons ensuite aux variables, remplaçons-les par un changement par bloc et changeons par erreur par un. Et veillons à rattacher ces blocs au bas du script Si nous affichons la variable air très rapidement et que nous lançons le jeu, nous pouvons voir qu'elle est nulle lorsque nous sommes au sol, et si nous sautons, elle augmente continuellement jusqu'à ce que nous touchions à nouveau le sol. Cela se produit également lorsque nous tombons d'une plate-forme. Et maintenant, si nous commençons à tomber du côté d'une plate-forme, nous sommes toujours capables de sauter en une fraction de seconde. C'est certainement plus satisfaisant. D'accord, nous pouvons à nouveau masquer la variable in air. Maintenant, je pense que nous sommes prêts à commencer à animer. 74. Animations de ralenti et de marche: Pour animer, le joueur devra suivre son état actuel Si nous examinons les costumes de sprites du joueur, états possibles dans lesquels le joueur peut se trouver sont les suivants : inactif, marche, saut, chute, atterrissage, accroupi, toboggan mural et toboggan en pente De plus, certains États ont plusieurs costumes ou images d'animation, et nous devrons également en tenir compte. De retour dans le code, nous allons créer quelques nouvelles variables. Appelons le premier état et faisons-le uniquement pour ce sprite Pour le second, appelons-le cadre NM, et faisons-le uniquement pour ce sprite Maintenant, initialisons les variables lorsque vous cliquez sur le drapeau vert en ajoutant quelques blocs supplémentaires aux scripts du drapeau vert Réglons State sur inactif pour le moment. Et mettons un cadre anim à zéro. La combinaison de ces deux valeurs nous indiquera le nom du costume actuel du sprite Donc, pour le moment, nous avons le zéro inactif. Ce que nous pouvons faire maintenant, c'est revenir en arrière pour définir animate. Et au lieu de passer directement au zéro inactif, nous pouvons le faire passer au costume donné par la combinaison de l'état et du cadre numérique. Pour ce faire, passons aux opérateurs et ajoutons un bloc de jointure au bloc de costume Switch. Revenons ensuite aux variables, et nous voulons joindre l'état au cadre num. Si nous lançons le jeu maintenant, rien ne change car nous n'utilisons toujours que le costume Idle Zero. Cependant, l'état inactif comporte en fait deux trames. Donc, pour animer le joueur, nous pouvons changer d'image animée d'avant en arrière de 0 à 1 Ce n'est pas aussi simple que de changer la valeur de 0 à 1 à chaque image, car cela accélérera l'animation. Au lieu de cela, nous pouvons augmenter image anim d'une petite fraction à chaque image. Pour ce faire, ajoutons une modification par bloc en bas du script animé, et modifions une image de 0,1 Mais la première fois que cela se produira, le bloc de costumes Switch recherchera un costume 0.1 inactif, qui, bien sûr, n'existe pas. Ainsi, au lieu de joindre l'état avec la valeur exacte du cadre Atom, nous devons couper la partie décimale du cadre Atom Pour ce faire, passons aux opérateurs et introduisons un abdos de bloc dans un espace vide. La fonction que nous voulons utiliser ici est le sol. Floor coupe la partie décimale d'un nombre, nous laissant que la partie numérique entière Nous pouvons donc maintenant déplacer le bloc de cadre Tom ici dans le sol du bloc, puis placer le sol du bloc dans le bloc de jonction. Une autre chose que nous voulons faire est de nous assurer que le cadre de Floor of Tom ne dépasse jamais un, puisque les costumes que nous utilisons sont Id Zero et Id un. Pour ce faire, passons aux variables et plaçons un ensemble de deux blocs en dessous du bloc de cadre change tom et définissons-le comme cadre. Passons maintenant aux opérateurs et ajoutons un bloc mod au bloc set two. Ce que nous voulons faire ici, c'est revenir aux variables et modifier la valeur actuelle de nom frame par deux. Cela garantira que nom frame reste toujours inférieur à deux. Maintenant, si on essaie, on a une jolie petite animation. Nous pouvons voir que la valeur de l'image anim passe 0 à 1 0,9 par incréments de 0,1, puis revient à zéro Passons maintenant à l'animation de la promenade. Pour cela, nous devrons gérer les modifications de l' état des joueurs et nous le ferons dans un bloc personnalisé. Passons donc à Mbloxs et créons-en un nouveau. Nous pouvons l'appeler état de mise à jour et cliquer sur OK. Nous voulons exécuter le script d'état de mise à jour avant d'exécuter le script d'animation. Nous exécutons le script d'animation et quand je recevrai la deuxième mise à jour Donc, pour exécuter d'abord le script d'état de mise à jour, prenons un bloc d'état de mise à jour et plaçons-le juste au-dessus du bloc d'animation Déplaçons maintenant le bloc d'état de mise à jour défini ici dans un espace vide. Ce que nous faisons ici, c'est vérifier si le joueur se déplace horizontalement, et si c'est le cas, nous allons régler l'état pour qu'il marche. Dans le cas contraire, nous le mettrons au ralenti. OK ? Passons donc d'abord au contrôle et ajoutons un bloc ITN s au script Pour vérifier si le joueur marche, nous pouvons vérifier si la valeur absolue de la vitesse x est supérieure à zéro. Passons donc au contrôle. Utilisez un bloc supérieur à comme entrée, puis placez un bloc Abso dans la première entrée du bloc supérieur à. Passons maintenant aux variables et vérifions si les abs de la vitesse x sont supérieurs à zéro. Si c'est le cas, nous changerons l'état pour marcher. Changer l'état, cependant, nécessite deux choses. d'abord, bien sûr, nous devons apporter un ensemble pour bloquer et un état pour marcher. Mais nous devons également introduire un autre ensemble pour bloquer et mettre un cadre anim à zéro Cela permettra de s'assurer que la nouvelle animation fonctionne correctement et qu'elle recommence depuis le début. Cependant, comme cette condition sera toujours vraie tant que le joueur se déplace horizontalement, cadre Atom sera continuellement mis à zéro. Pour résoudre ce problème, nous pouvons faire en sorte que ces blocs ne s'exécutent que si l'état actuel du joueur n'est pas déjà le nouvel état, car cela va nécessiter plusieurs blocs et comme nous allons répéter plusieurs fois dans le script d'état de mise à jour, nous ferons tout le nécessaire pour changer d' état dans un nouveau bloc. Passons donc à Mbloxs et créons-en un nouveau. Tapons d'abord set state two. Ajoutez ensuite une nouvelle entrée appelée New States et cliquez sur OK. Déplaçons les deux blocs définis du script d'état de mise à jour vers le script d'état défini, et définissons la variable d'état sur la nouvelle entrée d'état. Et comme nous ne voulons faire tout cela si le nouvel état est différent de l'état actuel, passons au contrôle et enroulons un bloc if then autour des deux blocs définis. Pour la condition, passons aux opérateurs, et introduisons d'abord un bloc non, puis un bloc égal. Passons maintenant aux variables et vérifions si l'état n'est pas égal à la nouvelle entrée d'état. OK, nous pouvons maintenant accéder à Mes blocs et ajouter un bloc d'état défini à chaque partie du bloc IN outs et mettre à jour l'état. Pour le premier, nous voulons définir l'état pour marcher et le mettre sur inactif pour le second. Mais nous n'avons pas encore tout à fait terminé. Nous devons encore gérer l'animation de la marche et les scripts d'animation. Si nous jetons un coup d'œil à l'onglet costumes, l'animation de la marche comporte un total de six images, de la marche zéro à la marche cinq. Cela signifie que pour Walk, au lieu de modifier un cadre avec deux, nous devons le modifier avec six se peut également que nous souhaitions utiliser une vitesse différente pour l'animation de la marche. OK, donc ce que nous pouvons faire, c'est utiliser I then blocks pour vérifier l'état actuel, puis décider comment gérer la variable nom frame. Passons donc d'abord au contrôle, et terminons, puis bloquons le changement et définissons des blocs ici. C'est pour l'état inactif. Passons donc aux opérateurs et utilisons un bloc égal comme condition. Passons ensuite aux variables et vérifions si l'état est égal à inactif. Nous pouvons maintenant dupliquer le bloc I puis l' attacher au bas. Pour celui-ci, voyons si l'état est égal à la marche. Si c'est le cas, changeons tom frame de 0,5, et pour le bloc set, utilisons le mod six. Essayons-le maintenant. Bien, une fois que nous commençons à marcher, nous passons à l'animation de marche. Cependant, lorsque nous nous arrêtons, nous ne revenons pas à l'animation inactive. À moins que nous ne nous heurtions à un mur. Cela se produit parce que si nous examinons le script de déplacement horizontal, lorsque nous nous heurtons à un mur, nous réglons la vitesse x sur zéro, ce qui fait passer l' état au mode inactif. Cependant, dans le script de mouvement horizontal Handle, nous réduisons constamment la valeur de SpeedX, mais elle ne devient jamais exactement nulle sauf si nous nous heurtons à un mur Si nous affichons la variable vitesse x et que nous lançons le jeu, lorsque nous nous déplaçons horizontalement, puis que nous nous arrêtons, elle finit par devenir zéro sur l'écran, mais il s'agit en fait d'un très petit nombre, comme 0,00 001 ou quelque chose comme ça. Pour résoudre ce problème, si nous revenons au script d'état de mise à jour, au lieu de définir l'état comme marche, si la valeur absolue de la vitesse X est supérieure à zéro, nous pouvons d'abord obtenir la valeur arrondie de la vitesse X, puis en obtenir la valeur absolue. Passons donc aux opérateurs et plaçons un bloc rond dans un espace vide. Déplaçons ensuite le bloc SpeedX des abdos du bloc vers le bloc rond et ajoutons le bloc rond au bloc Abso Ainsi, il ignorera les très petites valeurs de SpeedX, nous faisant revenir à l'état inactif une fois que nous nous serons visiblement arrêtés Nous pouvons en fait utiliser la même logique pour rendre le script de mouvement horizontal un peu plus efficace. Si la valeur arrondie de la vitesse X est nulle, exécuter le bloc de déplacement horizontal ici est en fait une perte de temps car cela ne déplacera pas réellement le sprite de toute façon Nous pouvons donc faire en sorte que le bloc de déplacement horizontal ne s'exécute que si la valeur absolue de la valeur arrondie de la vitesse X est supérieure à zéro. Pour ce faire, passons d'abord à contrôler et à enrouler un bloc I, puis à contourner le bloc de déplacement horizontal. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Utilisons ensuite un abdos de bloc comme première entrée. Nous pouvons maintenant dupliquer le bloc de vitesse rond ici et le placer dans les abdos du bloc. Et voyons s'il est supérieur à zéro. Si nous relançons le jeu, tout devrait sembler comme avant, mais à présent, le script de déplacement horizontal ne sera exécuté script de déplacement horizontal que si nous nous déplaçons horizontalement. OK ? Et nous pouvons même améliorer légèrement l'animation de la marche en faisant en sorte que la vitesse de l'animation augmente et diminue progressivement en fonction de la variable vitesse X. Cela ralentira l' animation lorsque nous commencerons à marcher et lorsque nous nous arrêterons. Pour cela, revenons au script d'animation. Dans le bloc d'images Change Tom pour l'état de marche, nous pouvons utiliser la valeur absolue de la vitesse x pour déterminer la vitesse de l'animation. , comme la vitesse X peut devenir assez élevée, nous ne voulons utiliser qu' Cependant, comme la vitesse X peut devenir assez élevée, nous ne voulons utiliser qu' une fraction de la valeur. Ajoutons donc d'abord un bloc de multiplication au bloc de modification. Utilisons ensuite un abdos de bloc comme l'une des entrées. Passons maintenant aux variables et faisons des abs de SpeedX multiplié par 0,1 Maintenant, si nous lançons le jeu et commençons à marcher, l'animation démarre lentement et s'accélère, et elle ralentit également lorsque nous relâchons la touche de mouvement. Bien, la dernière chose que nous devons faire avec l'animation de marche est de faire sorte que le sprite soit réellement orienté vers la gauche lorsqu' il marche vers la gauche au lieu de toujours faire face à droite Pour ce faire, nous devons revenir au script de mouvement horizontal de la poignée. Faisons un peu de place ici. Ici, nous voulons vérifier la valeur de la variable de l'axe X. Si c'est zéro, nous ne voulons pas changer la direction des sprites Si c'est un, nous réglerons la direction sur 90, c' est-à-dire vers la droite, et s'il s'agit de moins un, nous réglerons la direction sur moins 90, c' est-à-dire vers la gauche. Cependant, cela fait également pivoter le sprite, ce que nous ne voulons pas Pour résoudre ce problème, nous avons trois boutons de bascule ici. La valeur par défaut, all around, permet au sprite de pivoter à 360 degrés. Nous devons également ne pas faire de rotation, ce qui empêchera le sprite de tourner Et nous sommes de gauche à droite. Cela fera en sorte que le sprite soit toujours orienté directement à gauche ou directement à droite OK, donc dans le script de mouvement horizontal, passons au contrôle et plaçons un bloc if then dans un espace vide. Pour la condition, nous voulons vérifier si l'axe X n'est pas égal à zéro Passons donc aux opérateurs, introduisons un bloc non, puis un bloc égal. Passons maintenant aux variables et vérifions si l'axe X n'est pas égal à zéro. Pour faire face dans la bonne direction, il suffit de régler la direction des sprites sur la valeur de l'axe X multipliée par 90 Passons donc d'abord au mouvement et ajoutons un bloc de points et de directions au bloc I then. Passons ensuite aux opérateurs et ajoutons un bloc de multiplication au bloc de points et de directions, et multiplions l'axe X par 90. De plus, le bloc X de vitesse de changement que nous utilisons ici n'a aucun effet lorsque l'axe X est nul, nous pouvons donc également le déplacer dans le nouveau bloc mince I. Ensuite, nous pouvons placer le bloc I thin en haut du script, et nous y joignons tout le reste. Et essayons-le. Bien mieux. Très bien, nous en avons fini avec les animations d' inactivité et de marche. Ensuite, nous allons travailler sur les animations pour sauter et tomber. 75. Animations de saut, d'automne et de terrain: Si nous examinons les costumes de sprite des joueurs, nous avons trois états liés au saut et à la chute Nous avons le saut, la chute et l'atterrissage. Nous utiliserons le saut lorsque le joueur saute ou monte dans les airs. Nous utiliserons l'automne lorsqu'ils retombent vers le sol et nous utiliserons brièvement l'état du terrain une fois qu'ils auront atterri sur le sol. Notez également que les trois états utilisent des animations à image unique. OK, donc revenons au code, passons au script d'état de mise à jour. Lorsque le joueur est en l'air, il est en état de saut ou chute selon la valeur de la vitesse Y. Une valeur positive signifie qu'il saute et une valeur négative qu'il tombe Nous allons donc d'abord vérifier si le joueur est dans les airs vérifiant si la variable Nir est supérieure à zéro Passons donc au contrôle et plaçons un si le bloc dans un espace vide pour le moment. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si Nir est supérieur à zéro Nous allons maintenant définir l'état en fonction de la valeur de la vitesse Y. Passons donc à nouveau au contrôle et ajoutons un bloc I thin else au bloc I thin. Pour la condition, nous pouvons dupliquer le bloc supérieur ici et vérifier si la vitesse Y est supérieure à zéro. Si c'est le cas, nous allons configurer l'état pour qu'il saute. Passons donc à Mblocks, ajoutons un bloc d'état défini à la partie I et utilisons jump comme entrée Sinon, ajoutons un bloc d'état défini à la partie else et définissons-le pour qu'il tombe. Maintenant, récupérons tous ces blocs et placons-les tout en haut du script d'état de mise à jour. À l'heure actuelle, ce bloc ITN Ls inférieur définit immédiatement l'état de marche ou d'inactivité Donc, ce que nous voulons faire, c'est que si N erreur est supérieure à zéro, nous voulons arrêter le script en cours, empêchant le bloc I thin L inférieur de s'exécuter. Pour ce faire, passons au contrôle, ajoutons un bloc d'arrêt tout en bas de la case « L'erreur IN est supérieure à zéro » et utilisons-le pour arrêter ce script. OK. Et comme les états de saut et de chute utilisent des animations à image unique, nous n'avons même pas besoin de faire quoi que ce soit pour elles dans le script d'animation Alors essayons-le. L' animation du ralenti et de la marche fonctionne toujours, et maintenant, si nous sautons, elle passe à l'état de saut lorsque nous montons et à l'état de chute lorsque nous redescendons. Cela fonctionne également lorsque nous sautons sur des plateformes et que nous en descendons. Ce qui est embêtant , c' est que si nous utilisons le temps passé par le coyote, c'est-à-dire que nous sautons peu de temps après être tombés d'une plateforme, passons brièvement au costume d'automne avant de passer au costume de saut Ça a l'air bizarre. Comme le temps du coyote nous permet de sauter si la valeur de l'erreur est inférieure à quatre, au lieu de passer à l'état de saut ou de chute, chaque fois que l'erreur est supérieure à zéro, nous pouvons le faire lorsqu'elle est supérieure à trois, et maintenant le temps de chute ne passera pas à l'état de chute lorsque nous utilisons le temps du coyote Très bien, il ne nous reste plus qu'à passer brièvement à l'état du terrain lorsque le joueur revient au sol. Cela devrait se produire lorsque le joueur est en chute et que la variable « in air » est égale à zéro. Donc, pour vérifier cela, plaçons d' abord un bloc if then dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. Et utilisons un bloc égal pour chaque condition. Passons maintenant aux variables et d'un côté, vérifions si l' état est égal à la chute. Pour l'autre côté, nous allons vérifier si l'erreur est égale à zéro. Si tel est le cas, passons aux blocs M, introduisons un bloc d'état défini et définissons-le pour qu'il atterrisse. Nous voulons également que vous alliez dans Control, que vous introduisiez un bloc d'arrêt et que vous arrêtiez ce script. Maintenant, disons-le, je bloque ensuite juste dessous du premier dans le script d'état de mise à jour. Et essayons-le. Lorsque nous sautons et revenons au sol, nous passons à l'état du terrain, mais uniquement pour une seule image. Il serait probablement préférable de rester dans l' état et pendant quelques images avant de passer au ralenti ou à la marche. Nous pouvons le faire en utilisant la variable de cadre anim. Pour comprendre ce que je veux dire, passons au script d'animation, dupliquons le bloc if state equals walk ici et attachons-le en bas Pour celui-ci, nous voulons vérifier si l'État est égal à la terre. Supprimons maintenant ces blocs du bloc de cadre Change Tom, et modifions-le de 0,1. Nous pouvons également nous débarrasser du bloc de cadre Set Tom ici. Maintenant, comme nous l'avons déjà vu, tout comme les états de saut et de chute, l'état terrestre possède une animation d'une seule image. Cela signifie que nous ne voulons pas que la valeur de nom frame atteigne un ou plus. Nous pouvons donc revenir dans le script d'état de mise à jour. Avant de passer à l'état actif ou inactif, nous pouvons arrêter le script si nous sommes actuellement dans l' état and et si la valeur du cadre Atom est inférieure à 0,5. Cela nous permettra de rester dans l'état et pendant cinq images. OK ? Alors d'abord, mettons un autre si le bloc dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. Et mettons un bloc égal d' un côté et un bloc inférieur à de l'autre. Passons maintenant aux variables, et vérifions si l' état est égal à la terre, cadre Atom est inférieur à 0,5. Si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Maintenant, mettons tout cela juste au-dessus du bas si vous bloquez. Et essayons-le. Allons-y. Bien, une fois cela fait, nous allons maintenant travailler sur le fait de laisser le joueur s'accroupir en appuyant sur la touche Ctrl enfoncée 76. Laisser le joueur s'accroupir: Si nous regardons à nouveau les costumes de sprite des joueurs, nous avons un costume unique pour les joueurs accroupis Ce costume a une hauteur plus courte que les costumes des autres États. L'objectif principal de l'accroupissement est de permettre au joueur de se faufiler sous les ennemis volant à basse altitude afin qu'ils ne soient pas touchés Dans cet esprit, revenons au script d'état de mise à jour. En haut du script, nous vérifierons si le joueur appuie sur une touche de contrôle enfoncée, et si c'est le cas, nous allons régler l'état accroupi et arrêter le reste du script J'aimerais vous lancer ce défi. Alors, mettez la vidéo en pause maintenant et voyez si vous pouvez faire fonctionner l'état accroupi OK, donc pour commencer, installons un bloc I dans un espace vide. Si le joueur appuie sur une touche de contrôle enfoncée, la variable de l'axe Y sera négative. Donc, pour la condition, passons d'abord aux opérateurs et introduisons un bloc as égal. Passez ensuite aux variables et vérifiez si l'axe Y est égal à moins un. Si tel est le cas, nous allons accéder à mes blocs, ajouter un bloc d'état défini et le régler sur Crouch Enfin, passons à Control, introduisons un bloc d'arrêt et arrêtons ce script. Nous pouvons maintenant placer tout cela en haut du script de la phase de mise à jour. Et si nous lui donnons un coup, nous pouvons maintenant appuyer sur la flèche vers le bas ou sur la touche S pour nous accroupir Relâcher la touche nous ramène à l'état inactif. C'est plutôt bien, mais pour le moment, nous sommes capables de nous déplacer horizontalement lorsque nous sommes accroupis, ce qui est assez étrange Pour résoudre ce problème, nous pouvons empêcher le joueur de se déplacer horizontalement lorsqu'il est accroupi. Pour ce faire, passons au script de mouvement horizontal Handle. Si ce n'est pas le cas, l'axe X est égal à zéro, nous pouvons faire en sorte que la vitesse X ne change que si le joueur n'est pas actuellement accroupi. Pour ce faire, enveloppons le bloc X de vitesse de changement avec un bloc if then. Pour la condition, passons aux opérateurs et introduisons un bloc de nœuds, puis un bloc égal. Passons maintenant aux variables et vérifions si l'état n' est pas égal à Crouch Essayons-le. Maintenant, si nous nous accroupissons et essayons de marcher, il fait face dans la direction dans laquelle nous essayons de nous déplacer, mais il ne bouge pas réellement Si nous voulions également empêcher le changement de direction, nous pouvons déplacer le bloc de points et de directions ici dans ce bloc également, mais je vais laisser le mien tel quel. Maintenant, un autre problème que nous avons est que nous sommes actuellement en mesure de commencer à nous accroupir en l'air Cela est dû au fait qu'un état de mise à jour, chaque fois que nous appuyons sur une touche de contrôle enfoncée, nous met en état accroupi Ce que nous voulons faire, c' est faire en sorte que nous ne puissions passer à l'état accroupi si nous ne sommes pas en l'air actuellement Pour ce faire, passons aux opérateurs et plaçons un bloc dans un espace vide. Déplaçons l'axe Y égal à moins un bloc ici d' un côté du bloc et, et de l'autre côté, introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'erreur est égale à zéro. Si nous utilisons maintenant tout cela comme condition pour nous accroupir, nous ne devrions pas être capables de nous accroupir en sautant ou en tombant Très bien, nous en avons presque fini avec l'état accroupi. Mais pour le moment, si un ennemi volait directement au-dessus de nous, il nous atteindrait. En effet, si nous passons aux costumes, nous utilisons toujours le costume Hip Box normal pour détecter les collisions, même lorsque nous sommes accroupis Lorsque nous sommes accroupis, nous voulons plutôt utiliser la boîte à hanches accroupie, qui est essentiellement une version plus courte de la boîte à hanches normale Pour ce faire, passons au script set hip box. R Et ici, nous voulons vérifier si nous sommes actuellement accroupis, et si c'est le cas, nous passerons au costume accroupi. Sinon, nous continuerons à passer à la boîte à hanches normale. Passons donc à Control et introduisons un bloc if then else. Déplaçons ensuite le costume Switch vers bloc Hip Box vers la partie Else et attachons-le au script. Pour cette condition, nous pouvons utiliser une copie de l'un de ces blocs d'état issus du script d'état de mise à jour et vérifier si l' état est égal à Crouch Si c'est le cas, apportons une copie du bloc de costumes Switch et passons du bloc de costumes Switch au costume Crouch Hip Box Nous ne pouvons pas vraiment dire si quelque chose est différent dans le jeu pour le moment, mais une fois que nous aurons ajouté des ennemis volants, nous serons en mesure de le tester. Très bien, nos mécanismes de jeu fonctionnent très bien ne nous reste plus qu' à ajouter le glissement sur les pentes et le glissement et le saut sur les murs. 77. Glisser sur les pentes: Pour le moment, nous pouvons monter et descendre des pentes, ce qui est bien, mais cela semble un peu étrange, comme si nous flottons dans les airs. Nous allons donc faire en sorte que le sprite glisse le long de la pente Si nous regardons les costumes, ici en bas, nous avons un costume de Slope Slide Zero. Ce costume est presque exactement le même que le costume Fall Zero, sauf qu'il est un peu plus bas. Cela donnera l' impression que le sprite est assis sur la pente OK. Et nous avons également un costume de capteur de pente ici. s'agit simplement d'un petit rectangle que nous utilisons pour déterminer l'angle de la surface sur laquelle nous nous trouvons lorsque nous nous promenons dans le niveau. Si la surface n'est pas plate, nous sommes probablement sur une pente. Nous allons donc faire glisser les joueurs bas jusqu'à ce qu'ils atteignent une surface plane. Très bien, alors pour commencer, revenons au code. Passons d'abord au script When I receive Update two. Et ici, avant de mettre à jour l'état et d'animer, nous allons vérifier si nous devons glisser sur une pente, et nous allons le faire dans un bloc personnalisé. Passons donc à Mblock et créons-en un nouveau. Nous pouvons l'appeler slide on slope et cliquer sur OK. Allons-y et ajoutons un bloc slide on slope juste au-dessus du bloc d'état de mise à jour ici. Déplaçons ensuite le bloc défini dans un espace vide. Lorsque nous décidons d'effectuer ou non un glissement en pente, nous ne devons le faire que si le joueur est actuellement au sol. S'ils sont en l'air, ils ne sont évidemment pas sur une pente. Passons donc d'abord au contrôle et ajoutons un bloc if aux scripts Slide on Slope. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si la valeur dans l'air est supérieure à zéro. Si c'est le cas, le joueur est dans les airs et nous n'avons rien à faire Nous pouvons donc reprendre le contrôle, introduire un bloc d'arrêt et arrêter ce script. Ensuite, nous allons utiliser le costume du capteur de pente pour vérifier si le joueur est actuellement sur une pente, et nous allons également le faire dans un bloc personnalisé. Passons donc à MyBlocks et créons-en un nouveau. Appelons-le « set slope sensor ». Et pour celui-ci, nous voulons nous assurer de cocher Exécuter sans rafraîchir l'écran. Cliquez ensuite sur OK. Et allons-y et ajoutons un bloc de capteur de pente défini au bas des scripts slide on slope. Pour régler le capteur de pente, revenons d'abord aux costumes et, une fois le costume du capteur de pente sélectionné, changeons la couleur du carré afin de mieux le voir sur scène. Maintenant, si nous passons du costume de hit-box au costume de capteur de pente, nous pouvons voir que le carré du capteur de pente se trouve juste en bas au centre du sprite Cela signifie que si nous sommes sur une surface plane, le carré sera juste au-dessus de la surface. Mais si nous sommes sur une pente, le carré sera un peu plus haut que la surface. Cependant, ce sera également le cas si nous sommes suspendus sur le côté d'une plate-forme Par conséquent, pour vérifier si nous sommes sur une pente, nous pouvons déplacer le carré vers le bas jusqu'à ce qu'il touche la surface. Tant que la distance n'est pas vraiment petite ou très grande, nous pouvons supposer que nous sommes sur une pente. D'accord ? Voyons donc comment nous pouvons le faire dans le code. Tout d'abord, dans le script set slope sensor, nous voulons nous assurer d'utiliser le costume de capteur de pente. Passons donc à Looks, apportons un bloc de costumes Switch et passons au capteur de pente. Ensuite, nous allons commencer à déplacer le sprite vers le bas jusqu'à ce qu'il touche un solide et nous devrons utiliser une variable pour suivre la distance Passons donc aux variables et créons-en une nouvelle. Nous pouvons l'appeler capteur de pente et le fabriquer uniquement pour ce sprite Ensuite, prenons un ensemble à bloquer et ajoutons-le au script, et nous l'utiliserons pour mettre capteur de pente à zéro au début. Ensuite, nous voulons vérifier si nous touchons actuellement un solide. Passons donc à mes blocs et apportons un chèque touchant un bloc solide. Si nous ne touchons pas un solide, nous voulons descendre d'une étape à plusieurs reprises jusqu'à ce que nous le soyons. Passons donc à Control et répétons jusqu'au blocage. Maintenant, pour ce qui est de la condition, nous voulons répéter jusqu'à ce que la variable solide en contact soit égale à un. Cependant, disons que nous sommes suspendus à une plate-forme haute Déplacer le sprite aussi loin à chaque fois prendra une éternité et ralentira le jeu Par conséquent, après avoir descendu, disons, 30 marches, si nous ne touchons toujours pas un solide, nous sommes probablement suspendus au-dessus d'une arête et nous n'avons pas besoin de continuer à vérifier la pente. D'accord ? Donc, pour la condition de répétition jusqu'à, passons aux opérateurs et introduisons d'abord un bloc or. Et utilisons un bloc égal pour les deux côtés. Passons ensuite aux variables et vérifions si le fait de toucher un solide est égal à un ou si le capteur de pente est égal à 30. Jusqu'à ce que l'une de ces conditions soit remplie, nous voulons augmenter la valeur du capteur de pente et faire descendre le sprite d'un cran Donc, d'abord, ajoutons une modification par bloc à la répétition jusqu'au bloc, et changeons le capteur de pente par un. Passons ensuite au mouvement, introduisons un bloc Y B de modification et changez-le par moins un. Nous devons ensuite effectuer une autre vérification solide au toucher. Passons donc à MyBlocks et apportons un chèque touchant un bloc solide. Maintenant, après la répétition jusqu'à ce que le bloc soit terminé, nous devons remettre le sprite sa position Y d'origine, ainsi que revenir à son costume de boîte à hanches correct Pour déplacer le sprite vers le haut, il suffit de modifier sa position Y en fonction de la valeur actuelle du capteur de pente Passons donc au mouvement et attachons une modification Y par bloc au bas de la répétition jusqu'au bloc. Ensuite, nous pouvons modifier Y en utilisant une copie du bloc du capteur de pente ici. Si nous cliquons sur le script, nous pouvons voir que le carré descend une étape à fois jusqu'à ce qu'il atteigne le niveau ou que le capteur de pente atteigne 30, puis revient immédiatement à sa position initiale. Enfin, allons sur MyBlock et ajoutons un bloc set hit box au bas du script set slope sensor Nous n'avons pas encore terminé, mais allons-y et lançons le jeu pour nous assurer que tout fonctionne correctement jusqu'à présent. Lorsque nous sommes sur une pente, le capteur de pente a une valeur supérieure à un et inférieure à 30. Lorsque vous êtes suspendu au-dessus d'un bord, la valeur est 30, et sur une surface plane, la valeur est de 1. Si ce n'est pas zéro, c'est parce que nous gérons le mouvement vertical avant que la pente ne glisse. Le sprite du joueur est donc proche mais ne touche pas tout à fait les sprites du niveau D'accord ? Ainsi, dans le script slide on slope, nous pouvons maintenant utiliser la valeur du capteur de pente. Si la valeur est 1, nous sommes sur une surface plane, et si elle est égale à 30, nous sommes probablement en train de pendre sur un bord Donc, dans l'un ou l'autre cas, nous pouvons arrêter le script. Pour ce faire, passons d'abord au contrôle et ajoutons un bloc informatique au bas du script. Pour ce qui est de la condition, passons aux opérateurs, introduisons un bloc ou et mettons un bloc inférieur à d' un côté et un bloc égal de l'autre. Passons ensuite aux variables et vérifions si le capteur de pente est inférieur à deux, ce qui signifie que nous sommes sur une surface plane, ou si le capteur de pente est égal à 30, ce qui signifie que nous sommes accrochés à un ange. Si l'une de ces conditions est vraie, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Sinon, nous sommes sur une pente, alors nous allons commencer à glisser. Le problème, cependant, est que nous ne savons pas actuellement dans quelle direction nous devons aller. Pour le moment, nous n' avons qu'une seule pente, qui descend vers la droite, mais nous aurons également des pentes dans le jeu qui descendent et vers la gauche. Par conséquent, nous devons déterminer la direction de la pente. De plus, à l'heure actuelle, dès que la moitié du sprite franchit la pente, le capteur de pente détecte la pente et le sprite commence à glisser prématurément Nous voulons attendre que le sprite soit complètement sur la pente avant de commencer à glisser Nous pouvons réellement résoudre ces deux problèmes avec une seule technique. Nous allons d'abord déplacer le sprite vers la gauche de quelques pas, puis vérifier s'il touche le niveau Nous allons ensuite le déplacer vers la droite quelques pas de sa position initiale et vérifier à nouveau s'il touche le niveau. Si aucun de ces mouvements amène le sprite à atteindre le niveau, c'est qu' il n'est pas encore tout à fait sur la pente. Toutefois, si le sprite se trouve sur une pente dirigée vers la droite, le fait de se déplacer vers la gauche provoquera une collision de niveau, pas le déplacement vers la droite De même, si la pente va vers la gauche, le déplacement vers la droite provoquera une collision de niveau, mais pas le déplacement vers la gauche. OK, nous allons donc commencer par créer une nouvelle variable pour indiquer la direction de la pente. Passons donc aux variables et créons-en une nouvelle, appelant slope dr et en l'adaptant uniquement à ce sprite La première chose que nous voulons faire est de régler la pente dur à zéro. Apportons donc un ensemble à bloquer. Et mettons-le au-dessus du bas s'il s'agit d'un bloc mince, car si nous ne sommes pas sur une pente, la direction devrait être nulle. Et utilisons le bloc pour régler la pente dur à zéro. Ensuite, si nous n'avons pas encore arrêté le script, nous allons faire quelques pas vers la gauche pour vérifier si nous ne touchons pas un solide. Pour ce faire, passons au mouvement, introduisons un changement X par bloc et modifions-le par moins deux. Passons ensuite à MyBlocks et apportons un chèque touchant un bloc solide. Si nous touchons un solide, nous sommes sur une pente orientée vers la droite Nous allons donc régler la pente DR sur un. Alors d'abord, passons au contrôle et introduisons un bloc ITN. Et pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le fait de toucher un solide est égal à un. Si c'est le cas, introduisons un ensemble de deux blocs et fixons la pente d à un. Ensuite, nous voulons effectuer une vérification similaire, sauf que nous allons déplacer le sprite de deux étapes vers la droite de son emplacement d'origine Et si nous touchons un solide, nous sommes sur une pente orientée vers la gauche Nous allons donc régler la pente DR sur moins un. Ce que nous pouvons faire, c'est d' abord dupliquer tous ces blocs, commençant par le bloc change X et en les attachant au bas. Pour déplacer le sprite deux pas vers la droite de son emplacement d'origine, nous pouvons changer X par quatre Et maintenant, si nous touchons un solide, nous allons régler la pente DR sur moins un. D'accord. Maintenant, si après toute cette pente DR est toujours nulle, c'est le sprite n'est pas encore tout à fait sur la pente, donc nous ne ferons rien d'autre Sinon, nous sommes sur une pente, nous allons donc la descendre. Cependant, nous voulons d'abord remettre le sprite à son emplacement d'origine Passons donc au mouvement, introduisons une modification x par bloc et modifions-la par moins deux. Ensuite, nous allons nous assurer que la pente du n'est pas égale à zéro. Passons donc d'abord au contrôle et introduisons un bloc si alors. Et pour la condition, passons aux opérateurs, introduisons un bloc non et un bloc égal. Accédez ensuite aux variables et vérifiez si la pente dur n'est pas égale à zéro. Si c'est le cas, nous pouvons régler l' état du joueur pour qu'il soit incliné. Cependant, nous devons également nous assurer de faire face dans la bonne direction. Cela est dû au fait que nous essayons peut-être de monter depuis le bas de la pente Nous devrons donc inverser la direction des sprites avant de glisser vers le bas. Pour ce faire, passons au mouvement. Et ajoutez un bloc de points et de directions au bloc if then. Pour obtenir la direction du sprite, il suffit de multiplier la direction de la pente par 90 Passons donc aux opérateurs et ajoutons un bloc de multiplication au bloc de points et de directions. Ensuite, nous pouvons utiliser un duplicata du bloc DR de pente ici et le multiplier par 90. Nous pouvons maintenant accéder à M Blocks, ajouter un bloc d'état défini au bloc if then et le configurer pour qu'il incline la diapositive de soulignement Nous devons nous assurer d'utiliser cette orthographe exacte afin qu' elle corresponde au costume de toboggan. Très bien maintenant, pour que cela fonctionne, nous devons faire certaines choses dans le script d'état de mise à jour. Tout d'abord, au début du script, nous allons vérifier si nous sommes dans l'état de la diapositive inclinée. Passons donc au contrôle et plaçons un bloc IN dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'état est égal à la pente soulignée de la diapositive Encore une fois, assurez-vous d'utiliser l'orthographe correcte. Ensuite, nous voulons vérifier la valeur de la pente. Si ce n'est pas égal à zéro, nous sommes toujours sur une pente. Cela signifie que nous voulons rester dans l'état de la diapositive en pente Nous allons donc arrêter le script. Sinon, nous laisserons le script continuer à s'exécuter, ce qui nous fera passer à un autre état. D'accord ? Revenons donc au contrôle et mettons un bloc if then dans le bloc actuel. Et pour ce qui est de la maladie, allons voir les opérateurs et apportons un bloc à nœuds. Ensuite, un égal est bloqué. Nous pouvons maintenant passer aux variables et vérifier si la pente DR n'est pas égale à zéro. Si c'est le cas, passons au contrôle. Introduisez un bloc d'arrêt et arrêtez ce script. Très bien, mettons tout cela tout en haut du script d' état de mise à jour et essayons-le. Désormais, nous restons dans l'état de glissement de pente chaque fois que nous sommes sur une pente et le fait de nous déplacer sur une surface plane nous fait passer à l'état de marche. Cool. Ensuite, nous voulons faire en sorte que le sprite glisse automatiquement sur la pente Pour ce faire, passons au script de mouvement horizontal de la poignée. En haut du script, nous allons d'abord vérifier si nous sommes actuellement dans l'état de la diapositive en pente. Mettons donc un bloc if then dans un espace vide pour le moment. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si l'état est égal à la pente. Il y a deux ou trois choses que nous voulons faire ici. Tout d'abord, nous voulons déplacer le sprite dans le sens de la pente Pour déplacer le sprite horizontalement, nous changeons la variable de vitesse X. Apportons donc un changement par bloc et changeons SpeedX. Pour le montant à modifier, nous pouvons prendre la variable d' accélération et la multiplier par la variable de pente Dur. Passons donc aux opérateurs et ajoutons un bloc de multiplication au bloc X de vitesse de changement. Revenez ensuite aux variables et faites pente du temps d' accélération. Ensuite, nous voulons empêcher le joueur de se déplacer manuellement à l' horizontale. Dans le cas contraire, ils pourront gravir la pente. Pour ce faire, nous pouvons introduire un ensemble à bloquer et mettre l'axe X à zéro. Cela garantira que le fait d'appuyer sur une touche de contrôle horizontale n'aura aucun effet. Nous pouvons maintenant le placer en haut du script de mouvement horizontal et l'essayer. OK, maintenant nous glissons le long de la pente et nous ne sommes pas en mesure de la gravir. Cependant, le glissement est un peu agité. Cela se produit parce que la gravité n'est pas assez forte pour nous maintenir sur la pente tout le temps. Pour résoudre ce problème, nous devons nous assurer que le sprite descend toujours suffisamment loin pour toucher la pente Et comme cela est lié au mouvement vertical, nous allons le faire dans le script de mouvement vertical de la poignée. Comme pour le mouvement horizontal, nous voulons d'abord vérifier si nous sommes dans l'état de glissement en pente. Passons donc au contrôle et installons un bloc INN dans un espace vide. Et pour cette condition, nous pouvons utiliser une copie du bloc coulissant à pente égale à état égal à partir des mouvements horizontaux de la poignée. Pour déplacer le sprite suffisamment vers le bas, nous pouvons prendre la valeur du capteur de pente et la soustraire de la valeur Y actuelle de la vitesse. Une autre chose que nous voulons faire est empêcher le joueur de sauter ou de s'accroupir en glissant Nous pouvons donc commencer par dupliquer ces deux blocs dans l'état I égal à la pente, au bloc coulissant et à la gestion du mouvement horizontal, et les ajouter à notre nouveau bloc if then Mais cette fois, nous voulons modifier la vitesse Y et nous voulons la modifier par la valeur négative capteur de pente afin de pouvoir nous débarrasser du bloc d' accélération ici, le remplacer par un négatif et le multiplier par la variable du capteur de pente Et ici, nous voulons mettre l'axe Y à zéro. Déplaçons maintenant le bloc I then vers le haut du script de mouvement vertical et essayons-le. Génial Maintenant, nous nous en tenons à la pente pendant que nous glissons vers le bas. essayer de monter par le bas Mais essayer de monter par le bas devient un peu fou. Pour résoudre ce problème, nous pouvons faire en sorte que le sprite glisse légèrement sur le sol avant de passer de l'état de glissement en pente Pour ce faire, passons au script d'état de mise à jour. Et ici, nous ne nous arrêtons que si la pente DU n'est pas égale à zéro. Ainsi, dès que nous sommes hors de la piste, nous passons immédiatement à un nouvel état. Donc, ce que nous pouvons faire à la place, c'est vérifier la valeur absolue de la vitesse x, et si elle est supérieure, disons, 0,5, nous arrêterons le script. Cela permettra au sprite de continuer à glisser pendant un court laps de temps après avoir atteint le bas de la pente Donc, pour ce faire, prenons un bloc si et placons-le juste en dessous du bloc si ce n' est pas le cas, dr est égal à zéro, en nous assurant qu'il se trouve dans le bloc de glissement si égal à pente. Pour ce qui est de la condition, passons aux opérateurs et introduisons d'abord un bloc supérieur à. Placez ensuite un abdos de bloc sur le côté gauche. Passons maintenant aux variables et vérifions si les abs de la vitesse X sont supérieurs à 0,5. Si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Et essayons-le. Génial Maintenant, nous glissons un peu plus loin dans le bas. Mais pour le moment, nous devons attendre d'avoir complètement fini de glisser avant de pouvoir sauter. Il serait probablement préférable de laisser le joueur sauter dès qu'il atteint le bas. Pour ce faire, nous pouvons faire en sorte d'arrêter le script ici uniquement si la valeur absolue de la vitesse x est supérieure à 0,5 et si la variable de saut est égale à zéro. Lorsque le saut est égal à zéro, le joueur n' essaie pas de sauter Nous resterons donc dans l'état du toboggan incliné. Sinon, nous autoriserons le script à passer aux états de saut. OK. Passons donc d' abord aux opérateurs et plaçons un bloc A dans un espace vide. Déplaçons ensuite les abs dont la vitesse x est supérieure à 0,5 bloc sur un côté du bloc A et utilisons le bloc A comme nouvelle condition. Pour l'autre côté du bloc A, introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le saut est égal à zéro. Mais cela ne fonctionnera pas vraiment pour le moment, car si nous revenons script de mouvement vertical de la poignée, nous empêcherons le joueur de sauter tant qu'il est en position de glissement en pente. Nous voulons plutôt exécuter ces deux blocs uniquement si la pente DR n' est pas non plus égale à zéro. Encore une fois, passons aux opérateurs et plaçons un bloc A dans un espace vide, déplaçons le bloc coulissant à pente égale dans le bloc A et utilisons le bloc A comme nouvelle condition. Pour l'autre côté, introduisons un bloc à nœuds et un bloc égal. Passez ensuite aux variables et vérifiez si la pente du n'est pas égale à zéro. Ainsi, nous empêcherons le joueur de sauter uniquement s'il se trouve réellement sur une pente et ne glisse pas sur une surface plane. D'accord ? Je pense que nous sommes prêts à essayer. Nous pouvons désormais sauter dès que nous atteignons le bas d' une pente. Excellente. Et juste pour nous assurer que tout fonctionne correctement avec les pentes orientées vers la gauche, sélectionnons le niveau du sprite, changeons sa direction à moins 90 et définissons son type de rotation sur gauche-droite Alors essayez-le. Parfait. Très bien, remontons la direction du niveau à 90. Et nous en avons enfin fini avec le dérapage. C'était vraiment un défi. Mais heureusement, nous presque fini avec les mécaniques des joueurs, et nous avons gardé le meilleur pour le dernier glissement sur le mur et le saut de mur. 78. Glisser sur les murs: Lorsque le joueur saute dans un mur, au lieu de l'arrêter immédiatement et de le laisser tomber au sol, nous le laissons s'accrocher au mur et glisser lentement vers le bas Et tout en glissant le long du mur, nous les laisserons sauter. Cela leur permettra de sauter d' un mur à l'autre qui pourrait se trouver à proximité. Si nous examinons les costumes du sprite du joueur, nous avons un costume ici pour les diapositives murales. Ce costume donnera l'impression que le sprite est accroché au mur lorsqu'il glisse le long du mur OK, donc pour commencer, passons au code et passons au script When I receive Update two. Et ici, nous allons ajouter un nouveau bloc personnalisé pour gérer le coulissement mural. Passons donc à MyBlocks et créons-en un nouveau. Disons que nous glissons sur le mur et que nous cliquons sur OK. Ajoutons maintenant une diapositive sur bloc mural au script Update to. Peu importe que nous fassions abord un glissement en pente ou un glissement mural, condition de le faire à la fois après les blocs de mouvement et avant le bloc d'état de mise à jour. Très bien, maintenant prenons la diapositive définie sur bloc mural et déplaçons-la dans un espace vide. OK. Pour pouvoir glisser sur un mur, le joueur doit être en l'air et se diriger vers le mur. Et s'ils continuent d'appuyer sur la touche de déplacement horizontal alors qu'ils tombent au sol, nous allons faire glisser le mur. Nous allons procéder de cette façon car le joueur n'a peut-être pas toujours envie de glisser sur le mur à chaque fois qu'il heurte un mur, car cela peut le ralentir et devenir assez ennuyeux. Tant qu'ils relâchent la touche de déplacement horizontal avant de tomber, ils ne glisseront pas sur le mur. Dans cette optique, dans le script de la diapositive sur le mur, nous allons d'abord vérifier si le joueur est actuellement en l' air et qu'il tombe. Pour ce faire, passons au contrôle et introduisons un bloc if then. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. D'un côté, introduisons un bloc supérieur à. Et pour l'autre côté, introduisons d'abord un bloc non, puis un bloc supérieur à. Passons maintenant aux variables et vérifions si l'erreur est supérieure à zéro. Et la vitesse Y n'est pas supérieure à zéro. Cela permettra de s'assurer que le sprite est actuellement en l'air et qu'il a commencé à tomber au sol Ensuite, nous devons nous assurer que le joueur appuie toujours sur la touche de déplacement horizontal et que le sprite est bien à côté d'un mur Pour ce faire, il suffit de modifier l'exposition du sprite en utilisant la valeur actuelle de l'axe X et de vérifier si le sprite touche un solide Alors d'abord, passons au mouvement et apportons une modification X par bloc. Passons ensuite aux variables et changeons les axes X par X. Ainsi, si le sprite est déjà contre le mur et que le joueur continue d'essayer de se déplacer vers le mur, cela poussera le sprite dans le mur et provoquera une collision Pour vérifier s'il y a eu collision, passons d'abord aux blocs M et apportons un chèque touchant le bloc solide. Passons ensuite au contrôle et introduisons un bloc si alors. Et pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le fait de toucher un solide est égal à un. Si tel est le cas, nous pouvons accéder aux blocs MI, introduire un bloc d'état défini et le définir sur Wall underscore slide, en veillant à utiliser l'orthographe correcte Et si nous jetons un coup d'œil au costume mural, il est par défaut orienté vers la droite, comme tous les autres costumes. Pour en revenir au script slide on wall, une fois que nous commençons à glisser sur le mur, nous voulons également inverser la direction des sprites Pour ce faire, passons au mouvement et introduisons un bloc de points et de directions. Passez ensuite aux opérateurs et utilisez un bloc de soustraction comme entrée Utilisons un zéro comme première entrée du bloc de soustraction, et pour la deuxième entrée, revenons au mouvement et introduisons un bloc directeur. Le sprite fera alors face dans la direction opposée. Enfin, que nous commencions ou non à glisser sur le mur, nous voulons remettre le sprite dans sa position initiale Pour ce faire, il suffit de changer X par zéro moins l'axe X. Prenons donc une autre monnaie X par bloc et plaçons-la juste en dessous du I touch solid égale un bloc, en nous assurant qu'elle se trouve à l'intérieur du bloc I fin extérieur. Pour l'entrée, nous pouvons utiliser une copie du bloc de soustraction ici. Et débarrassez-vous du bloc de position, puis passez aux variables et remplacez-le par un bloc de l'axe X. Très bien, nous sommes presque prêts à le tester. Mais nous devons d'abord accéder au script d'état de mise à jour et gérer l'état de la diapositive murale. Pour ce faire, nous allons vérifier si nous sommes à l'état de glissière murale et si nous sommes toujours en l'air. ce cas, nous resterons dans l'état de diapositive murale en arrêtant le script. Passons donc au contrôle et introduisons un bloc if then dans un espace vide. Pour la condition, passons aux opérateurs, introduisons un bloc et, puis mettons un bloc égal d' un côté et un bloc supérieur à de l'autre. Passons maintenant aux variables et vérifions si l'état est égal à diapositive de soulignement murale et si l'erreur est supérieure à zéro Si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Ainsi, nous resterons à l'état de glissière murale jusqu'à ce que nous touchions le sol. Maintenant, prenons le bloc I then, et nous pouvons le faire soit juste après la vérification de la pente, soit avant. OK, il est temps de le tester. Si nous sautons maintenant dans ce mur tout en maintenant la touche de contrôle droite enfoncée, nous pouvons le faire glisser vers le bas et nous revenons au ralenti une fois que nous avons touché le sol. De plus, si nous sautons dans le mur mais relâchons la touche de mouvement avant de tomber, nous ne glisserons pas sur le mur. Parfait. , le glissement mural est un peu inutile en ce moment Cependant, le glissement mural est un peu inutile en ce moment, car la gravité nous tire vers le bas trop vite. Pour résoudre ce problème, nous voulons annuler la gravité et glisser vers le bas à une vitesse constante plus lente Pour ce faire, passons au script de mouvement vertical de la poignée. C'est ici, près du bas, que nous utilisons la gravité pour faire descendre le sprite de plus en plus vite Ce que nous pouvons faire, c'est d'abord vérifier si nous sommes dans l'état d'une diapositive murale, et si c'est le cas, nous réglerons la vitesse wy sur une petite valeur négative, ce qui fera descendre le sprite à un rythme lent et constant Sinon, nous continuerons à modifier la vitesse Y en fonction de la gravité. OK ? Alors d'abord, introduisons un bloc I Thins dans un espace vide Nous pouvons déplacer le bloc Y de vitesse de changement ici dans la partie ts, attacher le bloc I thin outs au script et attacher le bloc de déplacement vertical en bas. Pour la condition, dupliquons l' état égal à la pente du bloc coulissant à partir d'ici. Mais maintenant, vérifiez si cela correspond à une diapositive soulignée sur le mur. Si c'est le cas, nous pouvons passer aux variables, introduire un ensemble à bloquer et régler la vitesse wy à moins trois. Voyons si cela fonctionne. Très cool. si nous essayons de glisser sur Cependant, si nous essayons de glisser sur cette partie qui n' atteint pas le sol, nous pouvons constater que nous continuons à glisser sur le mur même après être descendus sous le bas du mur. Pour résoudre ce problème, nous devrons vérifier en permanence si nous sommes toujours contre le mur, sinon, nous sortirons de l'état de diapositive murale. Pour ce faire, revenons à la diapositive sur les scripts muraux. En haut du script, nous allons d'abord vérifier si nous sommes déjà dans l'état de la diapositive murale et si c'est le cas, nous allons faire quelque chose de similaire à ce que nous faisons ici, en modifiant l'exposition du sprite et en vérifiant s'il y a une collision Passons donc d'abord au contrôle et plaçons un bloc ITN dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si l'état est égal à la diapositive murale. Maintenant, nous utilisons la valeur du X x pour déplacer le sprite Mais si nous le faisons également ici, cela obligera le joueur à continuer à appuyer sur la touche de mouvement pour glisser le long du mur. Nous voulons leur permettre de relâcher la clé une fois qu'ils commencent à glisser. Donc, ce que nous pouvons faire à la place , c'est prendre la direction du sprite, qui doit être opposé au mur, divisée par moins 90, ce qui nous donnera soit un soit moins un, puis modifier l'exposition de cette quantité Cela fera reculer le sprite d'un pas. Si cela provoque une collision avec le mur, alors nous sommes toujours sur le mur, nous continuerons donc à glisser. Sinon, nous sortirons de l'état des diapositives murales. Pour commencer, passons au mouvement et ajoutons une modification X Byblock au bloc I then. Passons ensuite aux opérateurs et utilisons un bloc de division comme entrées. Pour le bloc de division, revenons au mouvement et divisons la direction par moins 90. Maintenant, nous voulons vérifier si nous touchons un solide. Passons donc à M Blocks et apportons un chèque touchant un bloc solide. Si nous ne touchons pas un solide, nous sortirons de l'état de glissière murale. Passons donc au contrôle et introduisons un bloc « si alors ». Et pour ce qui est de la condition, utilisons un double du solide en contact égal à un bloc ici, sauf que nous voulons vérifier s'il est égal à zéro. Si tel est le cas, nous sortirons de l'état des diapositives murales. Pour ce faire, nous pouvons accéder à Mblocks, apporter un bloc d'état défini et le définir sur une valeur vide Le script d'état de mise à jour se chargera alors de nous mettre dans le bon état. Enfin, que nous touchions ou non un solide, nous voulons remettre le sprite sa position initiale et arrêter le script afin que arrêter le script afin que cet autre bloc mince ne s'exécute pas Donc, d'abord, dupliquons le bloc change X ici, débarrassons-nous de ces autres blocs et plaçons-le juste en dessous du bloc intérieur, s'il est fin. Mais cette fois, nous voulons diviser la direction par 90 positifs. Passons maintenant au contrôle à un bloc d'arrêt situé juste en dessous du bloc X de modification et arrêtons ce script. Ensuite, saisissons-le et placons-le en haut de la diapositive sur le script mural. si nous essayons cela maintenant, Mais si nous essayons cela maintenant, cela brisera complètement notre mur en glissant. Maintenant, c'est comme si nous nous rapprochons et nous éloignions constamment du mur. Cela se produit parce que dans le script de mouvement horizontal Handle, chaque fois que l'axe X n'est pas nul, il utilise la valeur pour nous faire face dans la direction dans laquelle nous essayons de nous déplacer. Ainsi, une fois que le script slide on wall s'exécute à nouveau et que nous sommes dans l'état de diapositive murale, nous sommes en fait face au mur au lieu de nous en éloigner. Cela signifie que le fait de changer X par la direction divisée par moins 90 nous éloigne en fait du mur. Pour résoudre ce problème, nous pouvons empêcher le script de mouvement horizontal de changer la direction des sprites si nous sommes à l'état de diapositive murale Pour ce faire, enroulons un bloc if then autour du bloc de points et de directions. Assurons-nous de déplacer le bloc « si non » est égal à «   accroupi » ici et de l' attacher au bas du nouveau bloc « if then Nous n'avons donc que le bloc de points et de directions à l'intérieur du nouveau bloc. Pour cette condition, nous pouvons en fait dupliquer le bloc « not state equals crouch Mais le contrôle de l'état n'est pas équivalent à un toboggan mural. Le script ne changera désormais direction que si nous ne sommes pas à l'état de diapositive murale. Si nous essayons à nouveau, nous pouvons à nouveau glisser sur les murs et nous arrêtons de glisser dès que nous ne sommes plus contre le mur. Nous pouvons également arrêter de glisser en nous éloignant du mur. Nous pouvons également glisser sur les côtés des plateformes suspendues, ce qui est plutôt cool. Bien, maintenant que le mur coulissant fonctionne très bien, nous sommes prêts à passer au saut mural 79. Sauter sur les murs: Pour le moment, si nous glissons sur un mur, nous ne pouvons pas sauter. Cela est dû au fait qu'au bas du script de mouvement vertical du manche, nous réglons la vitesse Y une valeur constante chaque fois que nous sommes dans l'état d'une diapositive murale, annulant toutes les modifications que nous aurions pu y apporter en essayant de sauter Donc, ce que nous pouvons faire, c'est faire en sorte que la variable de vitesse Y ne soit définie que si nous sommes en état de diapositive murale et que nous n'essayons pas de sauter. Pour ce faire, passons aux opérateurs et plaçons un bloc dans un espace vide. Déplaçons l'état égal au bloc mural sur un côté du bloc et utilisons le bloc comme condition. Pour l'autre côté, nous pouvons apporter un bloc égal. Accédez ensuite aux variables et vérifiez si le saut est égal à zéro. Cela signifie que le joueur n'essaie pas de sauter Nous allons donc continuer à glisser lentement le long du mur. Sinon, nous laisserons la gravité prendre le dessus comme d'habitude. Cela ne fonctionnera pas pour l' instant, car l'erreur de valeur sera supérieure à quatre, ce qui nous empêchera de toute façon de sauter. Pour résoudre ce problème, passons au contrôle et plaçons un bloc if then dans un espace vide. Pour cette condition, utilisons une copie de cet état complet qui équivaut à glissement mural et un saut équivaut à zéro bloc ici. Passons ensuite aux variables, ajoutons un ensemble à bloquer au bloc ITN et définissons par erreur un Maintenant, mettons ce bloc mince juste au-dessus de celui qui vérifie si le nombre d'erreurs est inférieur à quatre. S'assurer qu'il se trouve également à l'intérieur de l'axe FY équivaut à un bloc. Cela aura pour effet que si nous appuyons sur une touche de raccourci, mais que nous sommes actuellement dans l'état de diapositive murale et que nous ne sautons pas encore, le résultat sera défini par erreur sur un. Comme un est, bien sûr, inférieur à quatre, le bloc suivant nous permettra de sauter même si nous sommes dans l'état d'une diapositive murale. Si nous lançons le jeu maintenant et que nous glissons sur un mur, nous pouvons appuyer sur une touche de saut pour sauter ou faire glisser le long du mur. Mais ce n'est pas tout à fait ce que nous voulons. Ce que nous voulons faire, c' est pousser le sprite hors du mur permettre au joueur de sauter d'un mur à l'autre Pour ce faire, nous devons également intégrer le script de mouvement horizontal dans l'image, l'utilisant pour appliquer une certaine force horizontale aux sprites Nous savons que nous sautons sur un mur si nous sommes toujours dans l'état de glissière murale et la variable de saut est supérieure à zéro. Donc, pour vérifier cela, trouvons un espace vide. Ensuite, passez au contrôle et introduisez un I puis bloquez. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. D'un côté, nous pouvons utiliser une copie du bloc coulissant State Eals Wall ici. Et pour l'autre côté, introduisons un bloc supérieur à. Accédez ensuite aux variables et vérifiez si le saut est supérieur à zéro. Si tel est le cas, nous pouvons modifier la vitesse X suffisamment pour faire tomber le sprite du mur Apportons donc une modification par bloc et modifions la vitesse X. Comme le sprite sera orienté dans Comme le sprite sera le sens opposé au mur tout en le faisant glisser vers le bas pour l'éloigner du mur, nous pouvons diviser sa direction par 90, nous donnant un ou moins un, puis le multiplier par une valeur Passons donc d'abord aux opérateurs et ajoutons un bloc de multiplication au bloc X de vitesse de changement, puis mettons un bloc de division sur un côté. Passons maintenant au mouvement, et divisons la direction par 90. Et multipliez-le par quelque chose de haut, par exemple dix. Nous pouvons maintenant saisir le bloc ITN et le placer en haut du script de mouvement horizontal de la poignée, et essayons-le Maintenant, si nous sautons en glissant le long d'un mur, nous sommes poussés hors du mur. Cependant, pour le moment, si nous maintenons la touche de mouvement opposée enfoncée, nous pouvons facilement revenir sur le même mur. Le comportement idéal serait d' empêcher temporairement le joueur de revenir vers le même mur. Pour ce faire, essayons d'abord de dupliquer le bloc défini pour que l'axe X soit égal à zéro ici et l' ajouter au bloc I puis pour le saut de mur Cela devrait empêcher le joueur d'essayer de se déplacer horizontalement. Cependant, cela ne fonctionne toujours pas. En effet, dès que nous nous éloignons du mur, le script slide on wall nous fait sortir de l'état de diapositive murale. Cela signifie que la prochaine fois le script de mouvement horizontal sera exécuté, nous ne serons plus dans l'état de diapositive murale Le joueur pourra donc se déplacer librement. Afin d'empêcher le joueur de revenir immédiatement sur le même mur, nous devrons continuer à l' en éloigner pendant plusieurs itérations de la boucle de jeu Pour ce faire, nous devons savoir si le joueur saute un mur ou non, et nous pouvons le faire en utilisant une nouvelle variable. Passons donc aux variables et créons-en une nouvelle. Nous pouvons appeler cela du saut mural et le créer uniquement pour ce sprite Le saut de mur aura une valeur de un si nous sautons un mur ou de zéro si ce n'est pas le cas. Passons donc d'abord au script du drapeau vert, introduisons un ensemble à bloquer et mettons le saut de mur à zéro. Revenons maintenant au script de mouvement horizontal. Au lieu de vérifier si nous glissons et sautons sur un mur, nous pouvons simplement vérifier si nous sautons sur un mur. Débarrassons-nous donc de tout ce bloc de conditions ici. Passons ensuite aux opérateurs et remplaçons-le par un bloc égal. Passons maintenant aux variables et vérifions si le saut de mur est égal à un. De plus, comme nous allons maintenant pousser le sprite plusieurs fois au lieu d'une, nous pouvons utiliser une force beaucoup plus faible J'ai trouvé que l'utilisation de la variable d'accélération fonctionne plutôt bien ici. Ensuite, nous devons passer au script de mouvement vertical et déterminer quand régler le saut mural sur un. Nous devrions commencer à sauter sur le mur si nous sommes actuellement dans l' état de diapositive murale et que nous essayons de sauter. Nous sommes déjà en train de vérifier cela en utilisant l'état I égal à un toboggan mural et sauter équivaut à zéro bloc ici. Ainsi, en plus de définir l'erreur sur un, nous pouvons ajouter un autre set pour bloquer et régler le saut de mur sur un. Nous sommes presque prêts maintenant, mais nous devons également décider quand remettre le saut de mur à zéro afin que le joueur puisse à nouveau se déplacer. Nous pouvons le faire lorsque le sprite commence à redescendre vers le sol. Pour ce faire, trouvons à nouveau un espace vide. Ensuite, passez au contrôle et introduisez un bloc si alors. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. Pour un côté, introduisons un bloc égal, et pour l'autre, introduisons un bloc non, puis un bloc supérieur à. Passons maintenant aux variables et vérifions si le saut de mur est égal à un et si la vitesse Y n'est pas supérieure à zéro. Si tel est le cas, nous pouvons apporter un ensemble à bloquer et mettre le saut de mur à zéro. Ainsi, si nous sautons actuellement sur un mur et que le sprite ne remonte pas encore, nous mettrons le saut de mur à zéro, ce qui permettra au joueur de se déplacer librement Nous pouvons maintenant ajouter tout cela en haut des scripts de mouvement vertical. Et une autre chose que nous voulons faire, c'est en bas, au lieu de vérifier si nous sommes dans l'état de diapositive murale et si le saut est égal à zéro, nous voulons vérifier si le saut sur le mur est égal à zéro. Si nous laissons le champ sauter et lançons le jeu, le maintenir une touche de saut enfoncée pendant que nous commençons à glisser sur le mur augmente la variable de saut. Cela fait intervenir la gravité, nous tirant vers le bas plus rapidement. Mais si nous le changeons pour vérifier si saut de mur est égal à zéro, cela ne se produira pas. Et maintenant, si nous sautons d'un mur, nous ne pouvons pas immédiatement y retourner. Nous pouvons également facilement sauter d'un mur à l'autre. Très cool. Cependant, il y a une petite chose difficile à remarquer, mais une fois que vous l'avez fait, cela peut être un peu irritant Lorsque nous commençons à sauter sur un mur, pendant une très brève période, nous passons à l'état inactif avant de passer à l'état de saut. Cela se produit parce que lorsque nous sautons d'un mur pour la première fois, nous en sélectionnons un ici par erreur. Mais si nous examinons le script d'état de mise à jour, il ne passe pas à l'état de saut tant que le nombre d'erreurs n'est pas supérieur à trois. Nous l'avons fait il y a quelque temps afin que l'utilisation du temps passé par un coyote lorsque nous sautons ne nous fasse pas passer brièvement à l'état de chute Mais maintenant, lorsque nous commençons à sauter un mur pour la première fois, il ignore cette option s'il est bloqué et nous met en état de marche ou état d'inactivité pendant quelques images Pour résoudre ce problème, nous pouvons faire en sorte que cela nous mette également en état de saut si nous sautons actuellement sur un mur. Pour ce faire, allons voir les opérateurs et introduisons un bloc or. Déplaçons le bloc d'air supérieur à zéro sur un côté du bloc ou et utilisons le bloc ou comme condition. Ajoutons maintenant un bloc égal de l'autre côté. Accédez ensuite aux variables et vérifiez si le saut de mur est égal à un. Et maintenant, cela devrait immédiatement nous faire passer en état de saut lorsque nous commençons à sauter sur le mur. Bien, une fois cela fait, nous pouvons continuer et masquer toutes ces variables Et nous pouvons enfin donner une pause au sprite du joueur et passer à d'autres parties du jeu Et nous allons commencer par sortir de ce niveau de test ennuyeux. 80. Générer les niveaux: Si nous examinons les costumes du sprite de niveau, il y a quelque temps, nous avons vu que chaque niveau se compose de plusieurs parties, qui se dérouleront comme les cellules d'une grille Au fur et à mesure que le joueur se déplace dans un niveau, il fait défiler le niveau sans interruption , comme si une caméra suivait le joueur. De plus, chaque costume d'un niveau est créé à l'aide de ces tuiles individuelles. En bas, j'ai fourni les vignettes que j'ai utilisées pour les niveaux, ainsi que quelques vignettes supplémentaires au cas où vous souhaiteriez créer vos propres niveaux ou les ajouter à ceux qui existent déjà. Malheureusement, il est assez difficile d' aligner parfaitement les choses dans l'éditeur de costumes à gratter. Je recommande donc vivement d'utiliser des logiciels de graphisme vectoriel tels qu'Adobe Illustrator ou Inkscape lorsque vous créez vos propres niveaux. Si vous cliquez avec le bouton droit sur un costume, vous pouvez l'exporter au format de fichier SVG Vous pouvez ensuite ouvrir le fichier dans une application de graphisme vectoriel, et la plupart d'entre elles nous permettent de capturer des objets ensemble Quoi qu'il en soit, avant de commencer à créer des niveaux supplémentaires, voyons comment nous pouvons faire fonctionner les niveaux actuels. Pour ce faire, nous devons savoir à quel niveau nous nous trouvons actuellement et nous le ferons dans le code de la toile de fond. Créons donc d'abord une nouvelle variable globale, que nous pouvons appeler level. Et nous pouvons continuer et masquer la variable. Dans le script du drapeau de l'écran d'arrière-plan, avant la boucle de jeu , introduisons un set à bloquer et fixons le niveau à un. OK. Revenons maintenant au niveau des sprites. Si nous examinons les costumes une fois de plus, pour générer un niveau, nous devrons passer en revue tous les costumes correspondant à ce niveau en particulier et utiliser les index des lignes et des colonnes pour positionner chaque élément dans le jeu Pour ce faire, nous pouvons prendre le nom du costume de chaque pièce et le diviser en segments à l'aide des traits d'union Le premier segment nous indiquera quel niveau appartient la pièce. Le second nous indique l'index des lignes, et le troisième l'index des colonnes. OK, donc pour commencer, revenons à l'onglet code. Passons d'abord aux événements et remportons un bloc sur lequel vous avez cliqué sur le drapeau vert Nous allons placer tous les niveaux générant le code dans un bloc personnalisé. Passons donc à Mbloxs et créons-en un nouveau. Nous pouvons l'appeler generate, et nous voulons nous assurer de vérifier qu'il est exécuté sans rafraîchir l'écran. Cliquez ensuite sur OK. Allons-y, ajoutons un bloc de génération au script Green Flag, un bloc de génération au script Green Flag, et déplaçons le bloc de génération défini vers le bas. Ce que nous allons faire ici, c'est d'abord changer le costume de sprite de niveau par le costume blanc ci-dessus Ensuite, nous passerons continuellement au costume suivant jusqu'à ce que nous trouvions le premier qui appartient au niveau actuel. Ce sera le cas si le nom contient le mot niveau, suivi du numéro du niveau actuel, qui nous est donné par la variable de niveau. Revenons donc au script Generate, passons à Looks, introduisons un bloc de costumes Switch et passons au costume vierge. Passons ensuite à Control et répétons jusqu'au blocage. Nous voulons passer plusieurs fois au costume suivant jusqu'à ce que nous trouvions le premier contenant le mot level suivi de la valeur de la variable level. Pour ce faire, passons aux opérateurs et utilisons un bloc contains comme condition du bloc repeat until. Ensuite, prenons un bloc de jointure et utilisons-le comme deuxième entrée du bloc contains. Pour la première saisie du bloc Contains, allons dans Looks et apportons un bloc costume. Et nous voulons vérifier le nom du costume plutôt que le numéro. Pour le bloc de jointure, mettons le mot level dans la première entrée. Et pour la deuxième entrée, passons aux variables et introduisons un bloc de niveaux. Maintenant, dans le bloc de répétition jusqu'au bloc, passons à Looks et apportons le prochain bloc de costumes. Pour le niveau 1, cela devrait nous arrêter sur le costume de niveau 1, 00. Alors essayons-le. Génial. Et nous pouvons nous déplacer dans le niveau. Le premier costume pour le niveau deux est le niveau deux, zéro, zéro. Donc, si nous passons au code de fond, définissons la variable de niveau sur deux et que nous lançons le jeu, cela devrait nous mener au costume. Cependant, il se peut que nous devions cliquer deux fois sur le drapeau vert pour que cela fonctionne. Nous réglerons ce problème un peu plus tard. Nous pouvons également passer au niveau trois, et au niveau quatre, qui est le niveau final. Maintenant, si nous essayons le niveau 5, qui n'existe pas, nous obtenons un comportement étrange le sprite du niveau passant constamment d'un costume à l' autre Cela se produit parce que nous examinons tous les costumes, sans jamais en trouver un pour le niveau 5. Et lorsque nous lançons le bloc de costumes suivant sur un sprite portant son dernier costume, son costume revient au tout premier costume et le cycle se répète Ainsi, dans le script de génération du sprite de niveau, ils se répètent jusqu'à ce que le bloc se transforme en un bloc permanent. Il est peu probable que nous essayions accidentellement de générer un niveau inexistant, mais juste au cas où nous pourrions arrêter le script s'il passe en revue tous les costumes et n'en trouve aucun correspondant. Pour ce faire, après avoir passé le bloc de costumes suivant, il suffit de vérifier si le costume est revenu au costume vierge Passons donc au contrôle et ajoutons un if then en dessous du bloc de costume suivant. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Ensuite, en utilisant une copie du bloc de nom du costume ici, nous pouvons vérifier si le nom du costume est vide. Si c'est le cas, nous pouvons passer au contrôle, introduire un bloc d'arrêt et arrêter ce script. Maintenant, si nous essayons de charger le niveau 5, le script de génération s'arrête dès que nous revenons au costume vierge. OK, passons à la toile de fond, remettons niveau à un et assurons-nous que cela fonctionne toujours. Pour que le sprite du joueur revienne sur scène, il se peut que nous devions arrêter le jeu et régler manuellement sa position Y sur zéro Bien, maintenant que nous pouvons trouver le premier costume du niveau en cours, l' étape suivante consiste à parcourir les costumes de tous les niveaux et à créer un clone de sprite pour chacun Nous devrons utiliser les index des lignes et des colonnes pour positionner correctement Pour ce faire, nous devons diviser le nom du costume actuel en segments séparés par des tirets Un groupe de caractères alphanumériques tels que ces noms de costumes est généralement appelé chaîne en programmation informatique Et l'utilisation d'un caractère particulier pour séparer une chaîne s'appelle diviser la chaîne Pour diviser la chaîne du nom du costume, nous allons créer un bloc personnalisé. Revenons donc au niveau du code sprite, passons à Mblocks et créons-en un nouveau Tapons d'abord une chaîne divisée et ajoutons une entrée appelée chaîne. Ajoutons ensuite une étiquette et saisissons le caractère. Ajoutez ensuite une autre entrée appelée caractère. Cela nous permettra de saisir la chaîne et le caractère pour diviser la chaîne, ce qui nous permettra de réutiliser facilement le code dans de futurs projets OK, nous voulons nous assurer de cocher Exécuter sans rafraîchir l'écran, puis de créer le bloc. Et allons-y et déplaçons le bloc défini ici. Maintenant, pour diviser le nom du costume, nous voulons le faire dans le script de génération après la répétition jusqu'à ce que le bloc soit terminé. Prenons donc un bloc de ficelle fendue et attachons-le au bas du bloc de répétition jusqu'au bloc. La chaîne que nous voulons diviser est, bien entendu, le nom du costume. Dupliquons donc un bloc de nom de costume et utilisons-le comme première entrée du bloc de chaînes fractionnées. Et pour le personnage, nous voulons utiliser un trait d'union Passons maintenant au script de chaîne divisée et voyons comment nous pouvons réellement diviser la chaîne. Nous allons avoir besoin de quelque chose pour contenir les valeurs de chaque segment individuel. Pour cela, nous pouvons utiliser une liste de variables. Passons donc aux variables et cliquez sur Créer une liste. Nous pouvons l'appeler segments de chaîne et le créer uniquement pour ce sprite La première chose que nous voulons faire dans le script de chaîne divisée est de nous assurer que la liste est vide. Nous allons donc introduire un bloc de suppression de tous les segments de chaîne. Ensuite, nous allons parcourir en boucle chaque caractère de la chaîne d'entrée et le diviser chaque fois que le caractère actuel correspond aux caractères saisis. Pour ce faire, nous aurons besoin d'une variable pour suivre l' index actuel des caractères dans la chaîne, ainsi que d'une variable pour stocker temporairement les caractères qui constitueront un segment. Donc, pour la première nouvelle variable, appelons-la index et utilisons-la uniquement pour ce sprite Et pour le second, appelons-le TIP. De plus, pour ce sprite uniquement, nous voulons faire une boucle dans la chaîne, en commençant par le tout premier caractère de la chaîne, dont l'indice est un Apportons donc un ensemble à bloquer et définissons l'index sur un. Nous voulons également que la variable TIP soit vide au départ. Ajoutons donc un autre ensemble à bloquer et définissons temp sur la valeur vide Maintenant, pour parcourir les caractères de la chaîne, nous allons continuellement augmenter la valeur de l'index jusqu'à ce que nous ayons parcouru tous les caractères. Pour ce faire, allons dans Contrôle et répétons jusqu'au blocage. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Ensuite, mettons une longueur de bloc sur le côté droit. Passons maintenant aux variables et vérifions si l' index est supérieur à la longueur des entrées de chaîne. La longueur de la chaîne nous donnera le nombre total de caractères qu'elle contient. Donc, si l'indice est supérieur à cela, nous savons que nous avons fini passer en revue tous les personnages. Maintenant, en attendant que cela se produise, nous voulons vérifier si le caractère à l'index actuel est le même que le caractère saisi. Nous ferons différentes choses selon que c'est le cas ou non. Passons donc à Control et introduisons un bloc I puis s. Pour la condition, passons aux opérateurs et introduisons d'abord un bloc égal. Ensuite, placez une lettre de bloc sur le côté gauche. Passons maintenant aux variables et vérifions si l'index des lettres de la chaîne est égal au caractère. Avec la lettre de bloc, nous pouvons obtenir le caractère à un index particulier dans une chaîne. Maintenant, si tel est le cas, nous avons atteint un caractère qui correspond au caractère saisi, qui dans notre cas sera un trait d'union Cela signifie qu'il est temps de diviser la chaîne et de stocker les résultats dans la liste des segments de chaîne. Mais d'abord, jusqu'à ce que nous ayons atteint un trait d'union, nous devrons stocker temporairement les caractères jusqu'à ce point Pour ce faire, nous utiliserons la variable TIP. Prenons un ensemble à bloquer, ajoutons-le à la partie outs du bloc I then outs et définissons la variable TIP. Pour l'entrée, nous voulons combiner la valeur actuelle de la variable TEMP avec le caractère de l'index actuel Pour ce faire, passons aux opérateurs et introduisons un bloc de jointure. Passons maintenant aux variables et utilisons un bloc temporaire comme première entrée du bloc joint. Pour la deuxième entrée, nous voulons obtenir le caractère à l'index actuel afin pouvoir utiliser une copie de l'index des lettres du bloc de chaînes ici. Maintenant, une fois que nous avons atteint un trait d'union, nous voulons stocker la valeur actuelle de la variable TIP dans la liste des segments de chaîne Prenons donc un ajout à bloquer et placons-le dans la partie I. Et utilisons-le pour ajouter de la température aux segments de chaîne. Nous voulons ensuite vider la variable temporaire afin pouvoir commencer à obtenir uniquement les caractères des segments suivants Apportons donc un ensemble à bloquer et définissons la température sur la valeur vide Pour le moment, cependant, le bloc repeat until durera indéfiniment puisque l'index sera toujours un. Pour résoudre ce problème, nous devons saisir une modification par bloc, placer tout en bas de la répétition jusqu'au bloc, et l'utiliser pour modifier l' indice un par un. Si nous lançons maintenant le jeu, nous pouvons voir qu'il divise le nom du costume à l'aide union et ajoute les segments individuels à la liste des segments de chaînes Cependant, nous n' obtenons que deux segments, un pour le niveau et un pour l'index des lignes. Nous devrions également en obtenir un troisième pour l'index des colonnes. La raison pour laquelle nous n' obtenons pas l'index des colonnes est qu'il n'est pas suivi d'un trait d' union dans le nom du costume Nous pourrions passer en revue tous les noms de costumes et ajouter un trait d'union à la fin de chacun d'eux, mais heureusement, il existe une méthode beaucoup plus simple Après la répétition jusqu'à la fin du bloc, la valeur actuelle de TIP sera en fait l'index de colonne. Nous pouvons donc ajouter un autre bloc d'ajout, le placer tout en bas du script et l' utiliser pour ajouter TIP à la liste des segments de chaîne. Cela nous donnera maintenant les trois segments. Juste pour le fun, testons cela en utilisant d'autres chaînes et caractères. Pour ce faire, nous pouvons accéder à Mes blocs et placer un bloc de chaîne fractionné dans un espace vide. Pour la chaîne, nous pouvons utiliser des mots séparés par des points d'interrogation, exemple, et nous assurer d'utiliser un point d'interrogation comme caractères d'entrée. Si nous cliquons maintenant sur le bloc, il divise la chaîne à l'aide des points d'interrogation et ajoute tous les segments à la liste Bien, maintenant que nous savons que tout cela fonctionne correctement, nous pouvons nous débarrasser de ce bloc de chaînes fractionnées supplémentaire, et revenons aux scripts de génération Ce que nous voulons faire maintenant, c'est passer revue tous les costumes du niveau actuel et créer un clone de chacun d'eux. Pour ce faire, nous passerons continuellement au costume suivant jusqu'à ce que nous trouvions un costume qui ne correspond pas au niveau actuel. Cela se produit lorsque l'élément à l'index 1 de la liste ne contient pas le mot niveau, suivi de la valeur de niveau actuelle. Passons donc au contrôle et répétons jusqu'au blocage. Pour la condition, passons aux opérateurs et introduisons d'abord un bloc de nœuds, puis un bloc égal. Pour la première entrée du bloc égal, passons aux variables et introduisons élément du bloc de segments de chaîne. Et nous voulons vérifier s'il n'est pas égal au niveau du mot suivi de la valeur de la variable de niveau Nous pouvons donc simplement utiliser un double du bloc de jointure à partir de l' autre bloc de répétition et de queue. Bien, au fur et à mesure que nous revue les costumes du niveau actuel, nous créerons un nouveau clone de sprite pour chacun d'eux, et pour éviter que le code ne soit trop encombré, nous le ferons dans un bloc Passons donc à MyBlock et créons-en un nouveau. Pour positionner le clone, nous voulons fournir des entrées de ligne et de colonne. Tapons donc d'abord create Clone at Row, suivi de deux points. Ajoutons ensuite une entrée de ligne, une étiquette de colonne, deux points. Et une entrée de colonne. Pensez à cliquer sur OK. Ajoutons un bloc Create Clone au bloc repeat until. La ligne et la colonne sont données par les valeurs des index deux et trois de la liste des segments de chaîne. Passons donc aux variables et utilisons un élément de bloc pour chaque entrée du bloc create Clone. Utilisons l'élément deux pour l'entrée de ligne et l'élément trois pour la colonne. Mais ça a l'air un peu compliqué. Nous allons donc créer des variables pour contenir la ligne et la colonne actuelles et les utiliser ici à la place des blocs d'éléments. Pour ce faire, créons une nouvelle variable, que nous pouvons appeler row, et la créer uniquement pour ce sprite Créons-en une autre, appelons-la colonne, et faisons-la uniquement pour ce sprite Et allons-y et masquons les variables de ligne et de colonne. Maintenant, ajoutons deux blocs définis juste au-dessus du bloc Create Clone. Réglons la ligne sur l'élément deux de la liste en utilisant le bloc ici et définissons la colonne sur l'élément trois en utilisant celui-ci. Ensuite, nous pouvons utiliser les variables de ligne et de colonne pour les entrées du bloc Create Clone. Cela semble un peu plus clair et nous réutiliserons également les variables de ligne et de colonne un peu plus tard. Maintenant, prenons le bloc de création de clone défini et déplaçons-le quelque part ici. Ici, nous allons utiliser les entrées de ligne et de colonne pour positionner les sprites, puis créer un clone chaque partie d'un niveau Cependant, chaque partie d'un niveau occupe en fait l'intégralité de l'étape. Cela signifie que selon l'emplacement d'une pièce dans la grille de niveaux, ses positions X et Y peuvent se chiffrer par milliers. Les positions X et Y d'un sprite sont cependant assez limitées aux limites de la scène Cela signifie que nous devrons utiliser des variables pour maintenir la position de chaque partie du niveau dans le jeu, ce que nous pouvons appeler sa position dans le monde. Créons donc d'abord quelques nouvelles variables. Appelons celui-ci X et veillons à vérifier la présence de ce sprite uniquement car chaque clone aura des valeurs X et Y uniques Créons-en un autre, appelons-le Y, et encore une fois, faisons-le uniquement pour ce sprite Et nous pouvons maintenant masquer toutes les variables. OK, donc pour obtenir l' exposition universelle d'un niveau de pièces, nous pouvons prendre son index de colonne et le multiplier par 480, ce qui correspond à la largeur de la scène. De même, pour obtenir la position Y du monde, nous pouvons prendre l'indice de ligne et le multiplier par 360, ce qui correspond à la hauteur de la scène. Ajoutons donc deux blocs set two au script Crit Clone. Passons ensuite aux opérateurs et plaçons un bloc de multiplication à l'intérieur de chacun d'eux. Réglons maintenant X pour les entrées de colonne multipliées par 480 et réglons Y pour les entrées de ligne multipliées par 360. Il ne nous reste plus qu' à créer le clone. Passons à Control et introduisons un bloc de création d'un clone de moi-même. Maintenant, dans le script Generate, après avoir créé un clone en utilisant le costume actuel, nous devons passer au costume suivant. Passons d'abord à Looks et ajoutons prochain bloc de costumes juste en dessous du bloc Create Clone. Nous devons également scinder à nouveau le nom du costume Utilisons donc une copie du bloc de chaînes fractionnées ici. Et cela devrait maintenant créer un clone utilisant chacun des costumes du niveau actuel. Mais si nous essayons de lancer le jeu maintenant, cela regroupera tous les clones au cours de la phase En effet, dans le script de création de clones, nous définissons la position mondiale d'un clone , mais pas sa position réelle sur la scène Pour résoudre ce problème, avant de créer un clone de moi-même, passons à Motion et introduisons un bloc Go to XY. Passons ensuite aux variables et utilisons les variables X et Y comme entrées. Cela fera en sorte que seule la partie inférieure gauche du niveau soit visible. Pour que cela soit réellement utile, nous avons besoin d'un moyen de permettre au joueur de se déplacer dans le niveau et déterminer quelle partie ou quelles parties d' un niveau doivent être visibles à un moment donné. Nous allons le faire dans la prochaine leçon. 81. Faire défiler un niveau: Au fur et à mesure que le joueur se déplace dans la scène, il déplace ou fait défiler les clones de sprites du niveau dans la direction opposée Cela donnera l'impression qu' une caméra suit le joueur en permanence. Pour gérer le défilement, examinons le code de la toile de fond abord, nous devons suivre la position de défilement actuelle dans certaines variables globales. Créons-en quelques nouveaux. Appelons le premier ScrollX. Nous pourrions également l'appeler caméra x, car ce sera la position centrale de la caméra, mais je m'en tiendrai au défilement x. De même, pour la position Y, créons-en une autre que nous pouvons appeler scroll Y ou caméra Y. Maintenant, pour l'essentiel, le point focal de la caméra sera la position du joueur Parfois, cependant, nous focalisons la caméra sur d'autres points. Par exemple, lorsque vous montrez au joueur que la sortie de niveau est devenue active. Créons donc également quelques variables pour cela. Nous pouvons appeler le premier point focal X et le second point focal Y. Très bien, la position de départ du défilement peut être différente selon le niveau Mais pour l'instant, nous allons l'initialiser à 00. Donc, dans le script Green Flag, mettons deux blocs avant la boucle de jeu, et mettons à zéro le scroll x et le scroll Y. Ensuite, pour effectuer le défilement proprement dit, nous le ferons lors du troisième et dernier message de mise à jour Cela permettra aux événements qui se dérouleront lors première et deuxième mises à jour, comme les animations et la détection des collisions, de se produire avant que nous ne fassions défiler le niveau. Même si la toile diffuse le message de mise à jour 3, elle est également capable de le recevoir. Passons aux événements et apportons un bloc W I receive, et recevons la troisième mise à jour. Et ici, nous allons simplement exécuter un nouveau bloc personnalisé que nous utiliserons pour le défilement Passons à Mblocks et créons-en un nouveau. Disons que c'est faire défiler et cliquer sur OK. Ajoutons maintenant un bloc de défilement lorsque je recevrai la troisième mise à jour, et déplaçons le bloc de défilement défini vers le bas ici. Nous ferons quelques choses supplémentaires avec le défilement plus tard. Mais pour l'instant, nous allons simplement faire la position de défilement reste la même que la position focale. Pour ce faire, passons aux variables et introduisons deux ensembles de deux blocs. Utilisons-les pour régler le défilement X focale x et le défilement Y jusqu'à la focale Y. Maintenant, nous devons régler la focale X et la focale Y. Comme je l'ai déjà mentionné, ce sera en grande partie la position du joueur Passons donc au code du sprite du joueur. Mais pour le moment, nous ne suivons pas la position mondiale du joueur au sein du niveau. Chaque fois que nous déplaçons le sprite, nous ne changeons que sa position réelle ou sa position X et Y qui sont limitées aux limites de la scène Comme nous l'avons vu avec les sprites de niveau, la position mondiale d' un objet peut être légèrement supérieure aux positions X et Y maximales de la scène Et comme nous l'avons fait pour les sprites de niveau, nous utiliserons deux nouvelles variables locales X et Y pour suivre la position du joueur dans le monde Créons une nouvelle variable. Appelez-le X et créez-le uniquement pour ce sprite. Créons-en un autre, appelons-le Y, et faisons-le uniquement pour ce sprite Les valeurs X et Y de départ pour le sprite du joueur seront éventuellement différentes en fonction du niveau Mais pour l'instant, je pense que quelque chose comme moins 150 pour X et zéro pour Y devrait être une bonne chose. Ajoutons donc deux blocs au script Green Flag. Et fixons X à moins 150 et y20. Ensuite, dans le script de déplacement horizontal comme dans le script de déplacement vertical, au lieu de modifier directement les positions X et Y du sprite, nous devons modifier les variables X et Y. Donc, en haut du script de déplacement horizontal, introduisons une modification par bloc, et changeons X par l'entrée Dx Et maintenant, nous pouvons nous débarrasser du bloc bleu change X ici. De même, dans le bloc de dix répétitions, ajoutons une modification par bloc en haut de celui-ci, changeons la variable Y une unité et supprimons le bloc Y bleu de changement. Remplaçons maintenant cette modification Y par bloc de moins dix par une version variable. Procédez ensuite de même pour ces deux blocs Change X. Donc, pour le premier, changeons la variable X par moins un. Et pour le second, changeons X par un. Passons maintenant aux scripts de déplacement vertical. abord, ajoutons une modification par bloc en haut, changeons la variable Y par l'entrée DY et éliminons le bloc Y bleu de modification. Ensuite, remplacez également les deux blocs de modification Y ici. Remplacez la variable Y par moins un pour la première. Et changez-le par un pour le second. Maintenant, après cela, nous ne modifierons plus réellement la position du sprite sur la scène Cela signifie que les détections de collision nous effectuons dans ces scripts ne fonctionneront plus. Pour résoudre ce problème, nous devons traduire la position du sprite dans le monde en position scénique et repositionner le sprite sur la Pour obtenir la position de scène des sprites, nous pouvons soustraire la position actuelle du défilement de la position mondiale des sprites Cela nous donnera toujours des valeurs qui se situent dans les limites de la scène Et comme nous effectuerons ce calcul assez souvent, nous le ferons dans un bloc personnalisé. Passons donc à Mblock et créons-en un nouveau. Appelons cela une position et cliquez sur OK. Allons-y et amenons le bloc défini quelque part ici. Je vais mettre le mien juste en dessous du script d'animation. Pour traduire la position mondiale en position scénique, passons d'abord au mouvement et introduisons un bloc Go to XY. Passons ensuite aux opérateurs et utilisons un bloc de soustraction pour chacune des entrées Passons maintenant aux variables. Et pour la position, nous voulons faire la variable X moins le défilement X. Et pour Y, faisons la variable Y moins le défilement Y. Et c'est tout Maintenant, peu importe où se trouve le joueur dans le niveau, nous pouvons l'utiliser pour convertir sa position mondiale en position de scène. Et nous devons en fait le faire plusieurs fois au cours chaque itération de la boucle de jeu abord, nous devons le faire au début de la boucle, c' est-à-dire lorsque nous recevons le message de mise à jour 1. Cela permettra de s'assurer que le sprite est correctement positionné avant de commencer à le déplacer Passons donc à Mes blocs et ajoutons un bloc de réglage de position en bas du script W I receive Update One. Ensuite, nous devons positionner le sprite à la fin de la boucle de jeu une fois le défilement terminé. Cela se produit lors du message de mise à jour 3. Nous ne gérons pas actuellement le message de la troisième mise à jour Passons donc aux événements, introduisons un nouveau blocage lorsque je recevrai et recevrons la mise à jour 3. Tout ce que nous avons à faire ici est d'accéder à mes blocs et d'apporter un bloc de réglage de position. Enfin, revenez aux scripts de déplacement horizontal et de déplacement vertical. Nous devons ajuster la position juste avant de vérifier si nous touchons un solide. Ajoutons donc un bloc d'ajustement de position juste au-dessus de chaque case touchant les blocs pleins dans les deux scripts. Nous en avons trois et nous nous déplaçons horizontalement et deux et nous nous déplaçons verticalement. C'est bon. Maintenant, il nous reste encore une chose à faire dans le code Sprite du joueur, et ce pour quoi nous sommes venus à l'origine, c'est de régler le point focal de la caméra sur la position mondiale des sprites du joueur à chaque itération de la boucle de Nous voulons le faire tout en bas du script Update two une fois le déplacement terminé Pour ce faire, passons aux variables et ajoutons deux blocs au bas des scripts. Utilisons-les pour définir la focale X sur la variable X et la focale Y sur la variable Y. D'accord, nous sommes presque prêts à tout tester. Mais d'abord, nous devons également positionner les clones de sprites de niveau en utilisant la position de défilement Pour cela, nous pouvons utiliser le même script d'ajustement de position que celui que nous venons de créer pour le sprite du joueur Prenons donc le bloc de position de réglage défini et faisons-le glisser sur les sprites de niveau Passons maintenant au niveau Sprite code. Comme pour le joueur Sprite, nous voulons ajuster la position lors de la première et de la dernière mise à jour Passons donc aux événements et apportons-en deux lorsque je recevrai des blocs. Recevez la mise à jour 1 et la mise à jour 3. Passons ensuite à mes blocs et ajoutons un bloc de réglage de position à chacun d'eux. Nous pouvons également supprimer le bloc Go to XY dans le script Crit Clone maintenant. Très bien, je pense que nous sommes prêts à essayer. Eh bien, ça marche un peu, mais c'est assez nerveux Cela se produit parce que la gravité fait que la variable Y du sprite du joueur se déplace constamment de très petites quantités Cela affecte ensuite la focale Y, qui affecte le défilement Y, ce qui fait rebondir les sprites vers le haut et Pour résoudre ce problème, arrêtons le jeu et passons au code de fond. Dans le script de défilement, au lieu de définir la position du défilement, en utilisant les valeurs exactes de focale X et de focale Y, nous pouvons utiliser les valeurs arrondies. Pour ce faire, passons aux opérateurs et utilisons blocs ronds pour envelopper à la fois les blocs focaux X et Y focaux. Si nous lançons le jeu maintenant, les valeurs Y et Y focales continuent de fluctuer, mais maintenant, la valeur Y du scroll ne fluctue pas, sorte que les sprites ne rebondissent pas Et maintenant, nous pouvons nous déplacer dans tout le niveau. Plutôt génial. Il y a cependant quelques améliorations que nous pouvons apporter, et nous le ferons dans la prochaine leçon. 82. Améliorer le défilement: Maintenant que nous sommes en mesure de faire défiler le niveau, allons apporter quelques améliorations au défilement abord, nous sommes actuellement en mesure de dépasser les limites du niveau, et si nous sautons sur le côté, Tout d'abord, nous sommes actuellement en mesure de dépasser les limites du niveau, et si nous sautons sur le côté, nous continuons à tomber pour toujours. Si nous examinons les costumes du sprite de niveau 1, le costume de premier niveau 1, le niveau 100, se trouve en bas à gauche de la grille de niveaux Nous voulons empêcher la caméra de dépasser le côté gauche ou en dessous du bas. C'est en fait assez facile à faire car nous devons simplement empêcher le défilement X et le défilement Y de devenir négatifs. Pour ce faire, passons au code de la toile de fond. Dans le script de défilement, passons au contrôle et introduisons deux blocs ITN, en plaçant l'un juste en dessous de l'autre Pour ce qui est de l'état de chacun, passons aux opérateurs et apportons moins que des blocs. Passons ensuite aux variables, et utilisons l'une pour vérifier si le défilement X est inférieur à zéro, et l'autre pour vérifier si le défilement Y est inférieur à zéro. Ajoutons ensuite un ensemble à bloquer à chaque bloc if then. Et pour le premier, mettons le défilement X à zéro et utilisons l'autre pour mettre le défilement Y à zéro. Cela devrait empêcher la caméra de dépasser le côté gauche du niveau ou de passer en dessous du bas. , nous pouvons toujours tomber du côté gauche , ce que nous devons également réparer. Mais d'abord, si nous redémarrons le jeu, nous pouvons toujours aller au-delà du côté droit du niveau. Si nous examinons une fois de plus les costumes de sprite du niveau 1, la grille du niveau 1 contient un total de quatre costumes, et le niveau 1, 03 se trouve en bas à droite Nous voulons empêcher la caméra de dépasser le côté droit ici. Le niveau comporte également un total de deux rangées, les niveaux un, un, trois étant situés en haut à droite. Nous voulons également empêcher le joueur de passer au-dessus du sommet. Pour ce faire, nous devons suivre le nombre de lignes et de colonnes du niveau actuel. Pour ce faire, passons au code du sprite de niveau. Dans le script de génération, nous pouvons suivre le nombre total de lignes et de colonnes du niveau, puis utiliser les nombres pour calculer les valeurs maximales autorisées de défilement x et de défilement Y. Nous devons donc d'abord créer de nouvelles variables. Appelons la première ligne maximale et utilisons-la uniquement pour ce sprite Créons-en une autre, appelons-la colonne Max. Et faites-le uniquement pour ce sprite. Créons-en maintenant quelques autres pour les valeurs de défilement maximales. Ces deux éléments doivent être des variables globales. Appelons le premier Max scroll X. Et pour le second, sans surprise, Max scroll Y. Bien, maintenant, en haut du script de génération, nous allons initialiser toutes ces nouvelles variables à zéro Apportons donc quatre ensembles de deux blocs. Réglons maintenant le maximum de ligne 20, maximum de colonne 20, le défilement maximum x20 et le défilement maximum y20 Ensuite, dans le second, répétez jusqu'à ce que le bloc soit bloqué. Passons à Control et ajoutons deux blocs en dessous de tous les autres blocs, l'un juste après l'autre. Pour ce qui est de l'état de chacun, passons aux opérateurs et apportons-en des blocs supérieurs à des blocs. Passons maintenant aux variables, et pour la première, vérifions si la variable de ligne est supérieure à la variable de ligne maximale. La variable row contient l'index de ligne du costume actuel. De même, pour l' autre bloc, vérifions si la colonne actuelle est supérieure à la colonne maximale. Ajoutons maintenant un ensemble à bloquer à chaque bloc if then. Pour le premier, attribuons à Max row la valeur de la variable row. Définissez ensuite la variable de colonne Max. Ainsi, une fois que nous aurons fini charger tous les costumes pour le niveau actuel, Max row nous donnera l'indice de ligne le plus élevé, et Max column nous donnera l'index de colonne le plus élevé. Nous pouvons vérifier cela en lançant le jeu. Désormais, le nombre maximum de lignes est égal à un et le nombre maximum de colonnes est égal à trois. Nous allons maintenant utiliser les valeurs de ligne maximale et de colonne maximale pour calculer le défilement maximal X et le défilement maximal Y, et nous le ferons après la deuxième répétition jusqu'au bloc. Ajoutons deux blocs au bas des scripts. Et pour chacun, passons aux opérateurs et introduisons des blocs de multiplication. Pour le premier ensemble de blocs, nous allons définir le défilement maximal X. Passons maintenant aux variables, et définissons-le sur 480 colonnes maximum , soit la largeur de la scène. De même, réglons le défilement maximal Y sur Max row times 360, qui correspond à la hauteur de la scène. Nous devons maintenant revenir au script de défilement dans le code de fond et utiliser les valeurs de défilement maximales. Passons d'abord au contrôle et ajoutons deux autres blocs. Passons ensuite aux opérateurs et utilisons un bloc supérieur à pour chacun d'eux. Passons maintenant aux variables, et pour le premier, si alors bloquez, vérifions si le défilement x est supérieur au défilement maximum X. Si c'est le cas, introduisons un ensemble pour bloquer et définissons Scrolly sur Max scroll X. De même, pour l'autre, vérifions si le défilement Y est supérieur au défilement maximum Y. Et si c'est le cas, réglons Scrolly sur Max scroll Y. Les affichages variables deviennent assez Alors allons-y et cachons-les. Et ceux pour le joueur Sprite aussi. Maintenant, essayons-le. Si nous allons maintenant jusqu'au côté droit du niveau, la caméra ne va pas plus loin. Faisons en sorte que cela se produise également si nous montons au sommet du niveau. Génial Bien, réglons maintenant le problème où nous pouvons tomber du côté d'un niveau Pour ce faire, passons au code des sprites du joueur. Maintenant, au bas du script de déplacement horizontal, nous voulons limiter le mouvement du joueur vers la gauche Le bord gauche de la scène est situé au négatif 240. Je pense donc qu'une limite d'environ 235 négatifs devrait être une bonne chose. OK, passons donc au contrôle et ajoutons un bloc if au bas du script. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons maintenant aux variables, et vérifions si la variable X est inférieure à 235. Si c'est le cas, introduisons un ensemble à bloquer, et fixons X à moins 235. Arrêtons également complètement le mouvement horizontal en introduisant un autre ensemble à bloquer et en réglant la vitesse x à zéro. Enfin, nous devons appliquer cela à la position réelle des sprites sur la scène Passons donc aux blocs M et introduisons un bloc de réglage de position. Si nous lançons maintenant le jeu, nous ne pouvons plus quitter le côté gauche du niveau. Maintenant, nous devons également le faire pour le côté droit. Passons d'abord aux variables, et affichons à nouveau la variable Max scroll lex et la variable X du joueur sprites Si nous nous rapprochons du côté droit du niveau, nous pouvons voir que la valeur de la variable X des sprites du joueur est en fait légèrement supérieure à la valeur Max scroll x. Cela est dû au fait que la position de défilement correspond au centre de la caméra. Le bord droit réel du niveau est donc situé à la valeur Max Scroll lex plus 240 supplémentaires, soit la moitié de la largeur de la scène. Et comme nous l'avons fait pour le côté gauche, nous pouvons en soustraire cinq autres, limitant ainsi l'exposition du joueur à Max Scroll X plus 235 OK, donc pour faire tout cela, dupliquons d' abord le bloc ITN entier ici et le mettons en bas Mais débarrassons-nous du moindre obstacle. Accédez ensuite aux opérateurs et remplacez-le par un bloc supérieur à. Mettons un bloc d'addition sur le côté droit du bloc supérieur à et placons-en un à l'intérieur du bloc X défini ici. Passons maintenant aux variables et vérifions si X est supérieur au défilement maximal X plus 235. Si c'est le cas, définissons X sur Max scroll X plus 235. Et maintenant, nous ne pouvons plus aller au-delà du bon côté du niveau. Parfait. Maintenant, nous pouvons à nouveau masquer les variables. D'accord, et pour le moment, la caméra de notre jeu est toujours directement au-dessus du joueur. Mais sur les plateformes ou dans les jeux, il est courant que la caméra suive facilement le joueur lorsqu'il se déplace et qu' elle s' arrête progressivement au-dessus du joueur lorsqu'il arrête de bouger. Pour ce faire dans notre jeu, passons au script de défilement dans le code de fond. Au lieu de régler immédiatement la position du défilement sur la position focale, nous pouvons modifier les valeurs de défilement x et de défilement Y en utilisant une fraction de la distance qui les sépare des valeurs de point focal correspondantes. Cela entraînera l'arrêt progressif de l' appareil photo au point focal sur plusieurs images. Pour ce faire, introduisons deux byblocks de modification de variables dans un espace vide Utilisons le premier pour modifier le défilement X et le second pour changer le défilement Y. Passons maintenant aux opérateurs et ajoutons un bloc rond à chacun d'eux Ajoutez un bloc de division à chaque bloc rond. Et placez un bloc de soustraction sur le côté gauche de chaque bloc de division. Déplaçons maintenant le bloc focal X ici dans la première entrée du premier bloc de soustraction et déplaçons le bloc focal Y dans la première entrée de l' autre bloc de soustraction Passons ensuite aux variables, et nous voulons faire la focale x moins ScrollX et la focale Y moins le défilement Y. Nous pouvons ensuite remplacer les deux blocs définis le nouveau changement Byblocks. Maintenant, pour le côté droit des blocs de division, plus le nombre que nous utilisons est élevé, plus la caméra s'arrêtera lentement aux points focaux Pour l'instant, utilisons-en deux pour chacun d'eux et essayons-le. Ce n'est pas très visible, alors essayons-en quatre. Cela semble plutôt bien pour X, mais pour Y, je pense que je vais en essayer huit. Nous y voilà. Bien mieux. Bien, et une dernière chose à savoir concernant le sprite de niveau, c'est que si nous revoyons ses costumes, chacun des costumes du niveau principal possède ces rectangles invisibles situés au-dessus et dessous de la toile et plus larges que la Cela permet au sprite de se déplacer juste assez loin de la scène pour ne pas être visible pour nous Si nous les supprimions, nous pourrons voir de petits fragments de clones de sprites de niveau sur les bords de la scène Donc, si vous décidez de créer vos propres niveaux pour le jeu, assurez-vous d'ajouter également ces rectangles à tous les costumes de sprite de nouveaux niveaux Bien, une fois tout cela réglé, nous allons maintenant faire quelque chose pour rester coincés bas de la scène lorsque nous tombons du niveau, faire en sorte que nous puissions facilement passer d'un niveau à l'autre à des fins de test 83. Corriger certains bugs: Avant de continuer, il y a quelques bugs que nous devons corriger. Tout d'abord, vous l'avez peut-être déjà découvert vous-même. Si nous montons en haut du niveau et que nous tombons en bas, nous traversons le sol. Pour comprendre pourquoi cela se produit, examinons le code du sprite du joueur et affichons la variable de vitesse Y. Alors gardons un œil sur la valeur alors que nous tombons à nouveau d'un point haut. Comme nous pouvons le voir, la valeur de la vitesse Y chute assez rapidement et elle continue de baisser. Cela fait tomber le sprite du joueur si vite qu' il peut traverser le niveau avant même que le script de déplacement vertical n'ait la même que le script de déplacement vertical n'ait chance de détecter une collision Pour résoudre ce problème, nous devons limiter la valeur Y de la vitesse. Nous allons le faire dans le script de mouvement vertical de la poignée juste avant le bloc de déplacement vertical situé en bas. Alors d'abord, passons au contrôle et plaçons un si le bloc dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si la vitesse Y est inférieure à moins 20. Si c'est le cas, introduisons un ensemble à bloquer et réglons la vitesse Y à moins 20. Enfin, prenons le bloc I then et plaçons-le juste au-dessus du bloc à déplacer verticalement. Et essayons-le. Si nous tombons maintenant d'un point haut, la vitesse Y ne descend pas en dessous moins 20 et nous ne tombons pas à travers le sol. Génial Nous pouvons maintenant masquer à nouveau la variable de vitesse Y. Très bien, le prochain bug concerne le fait de glisser sur les pentes. Si nous sautons du bas de cette pente et que nous atterrissons près du sommet, même si nous commençons à glisser, nous glissons en fait sur la pente. Cela se produit parce que si nous affichons la variable SpeedX, lorsque nous sautons vers la gauche et continuons à maintenir la touche de mouvement gauche enfoncée, SpeedX devient un grand nombre négatif Et bien que nous modifiions SpeedX d'un nombre positif, une fois que nous commençons à glisser vers la droite, nous ne le changeons pas suffisamment pour que la valeur de la vitesse x soit positive Cela nous amène à glisser vers le haut de la pente plutôt que vers le bas. Pour résoudre ce problème, passons au script Slide on Slope. En bas, lorsque nous passons à l'état de glissement en pente, introduisons également un ensemble à bloquer et réglons speedx sur zéro Cependant, comme ces blocs fonctionnent également si nous sommes déjà en état de glissement de pente, si nous essayons de le faire maintenant, la vitesse x continuera à être réglée zéro, ce qui nous fera glisser très lentement. Nous voulons donc régler la vitesse X sur zéro uniquement si nous ne sommes pas actuellement en état de glissement de pente. Pour ce faire, allons dans Control et prenons un bloc I puis, et nous pouvons l'enrouler autour de ces trois blocs ici. Pour la condition, passons aux opérateurs et introduisons un bloc, puis introduisons un bloc égal. Passons maintenant aux variables et vérifions si l'état n'est pas égal à la pente. Si nous essayons maintenant, le glissement fonctionne de la même manière qu'avant, mais maintenant, le fait de sauter du bas de la pente ne nous fait pas glisser vers le haut de la pente. Bien, une fois ces bugs corrigés, nous pouvons à nouveau masquer la variable de vitesse X et recommencer à travailler sur les niveaux. 84. Redémarrer un niveau: Pour le moment, si nous tombons du niveau, nous restons bloqués au bas de la scène. Finalement, nous ajouterons du liquide qui coule au bas de chaque niveau, et si le joueur tombe dedans et qu' il lui reste encore de la santé, nous répondrons quelque part à proximité. Mais pour l'instant, nous allons simplement recommencer le niveau depuis le début. Pour recommencer un niveau, nous devons notamment réinitialiser les variables des différents sprites du jeu et remettre les sprites dans leur position de départ Pour commencer, examinons le code de la toile de fond. Actuellement, nous commençons la boucle de jeu dès que le drapeau vert est cliqué Ce que nous voulons faire, c'est abord avertir les sprites chaque fois que nous commençons un niveau afin qu'ils puissent se configurer, puis nous lancerons la boucle de jeu Ainsi, chaque fois que nous commençons ou redémarrons un niveau, nous diffusons un nouveau message. Et pour l'instant, nous commencerons le niveau 1 lorsque vous cliquerez sur le drapeau vert Dissocions d'abord la boucle de jeu du script Green Flag Passons ensuite aux événements et ajoutons un bloc de diffusion au bas du script. Diffusons un nouveau message, que nous pouvons appeler niveau de départ. Lex recevra le message du niveau de départ. Apportons donc un bloc W I receive et un niveau de départ. Et ici, nous voulons réinitialiser toutes les variables globales qui doivent être réinitialisées au début d'un niveau. Pour le moment, cela ne concerne que les variables de position de défilement. Donc, au lieu de mettre Scroll x et ScrollY à zéro dans le script Green Flag, faisons-le dans les scripts de niveau de démarrage Ensuite, nous devons informer les sprites qu'il est temps de se configurer et nous le ferons en diffusant un autre message Mais cette fois, nous voulons utiliser un bloc de diffusion et d'attente. Cela obligera le reste du script à attendre que tous les sprites aient fini de se configurer C'est important car nous voulons que les sprites soient complètement prêts à fonctionner avant de commencer la boucle de jeu OK, diffusons donc un nouveau message appelé configuration. Enfin, nous pouvons joindre la boucle de jeu en bas du script. Ensuite, nous recevrons le message de configuration dans le joueur et les sprites du niveau et nous les préparerons à commencer le niveau Commençons par les sprites des joueurs. Tout d'abord, introduisons une configuration de blocage et de réception lorsque je reçois. Et ici, nous voulons définir toutes les variables du sprite du joueur qui sont susceptibles de changer au fur et à mesure que nous jouons dans un niveau En gros, ce sont toutes les variables que nous définissons dans le script Green Flag, exception de l'accélération et de la force de saut, qui resteront toujours les mêmes. Nous pouvons donc laisser l'accélération définie et définir les blocs de force de saut dans le script Green Flag. Mais déplaçons tous les autres dans le script de configuration lorsque je recevrai. Et c'est tout ce que nous devons faire pour le sprite du joueur pour le moment Passons donc aux sprites de niveau. Encore une fois, introduisons un bloc W I receive et recevons le message de configuration. Ici, nous voulons exécuter le script de génération afin créer des clones en utilisant les costumes appropriés pour le niveau actuel Cependant, si nous redémarrons un niveau ou si nous passons au niveau suivant, nous aurons déjà des clones de sprites de niveau sur la scène. Donc, avant de générer le niveau, nous voulons nous débarrasser de tous les clones existants Pour ce faire, allons dans Contrôle et ajoutons un bloc Delete This Clone au script de configuration. Ainsi, si le sprite qui reçoit le message est un clone, il sera supprimé. Mais s'il s'agit du sprite du niveau d'origine, il ignorera simplement la suppression de ce bloc de clonage. Donc, si le sprite dépasse ce bloc, nous savons qu'il s'agit du sprite d'origine et non d'un clone Nous pouvons donc maintenant déplacer le bloc de génération du script Green Flag vers le script de configuration. Cependant, nous ne sommes pas en mesure de joindre quoi que ce soit au bas d'un bloc de suppression de ce clone. En effet, si le sprite est un clone et qu'il est supprimé, il ne peut plus exécuter de blocs. Nous aurons donc besoin d'un autre moyen pour déterminer si le sprite est un clone ou non Si nous passons aux costumes, c'est en fait la principale raison pour laquelle j'ai fourni un costume Blink, et nous pouvons voir que de nombreux autres sprites ont également un costume Blink Si nous utilisons le costume vierge uniquement pour le sprite original, chaque fois que nous devons vérifier si un sprite est l'original, nous pouvons simplement vérifier s'il utilise le costume vierge Pour ce faire pour le niveau sprite, revenons au code Passons ensuite à Los at a changé le bloc de costumes pour le script du drapeau vert et pour le costume vierge. Et juste au cas où nous cacherions accidentellement le sprite, ajoutons également un bloc d'affichage. Maintenant, dans le script de configuration, nous n'exécuterons la suppression de ce bloc de clone si le sprite n' utilise pas le costume vierge Passons donc à Control et enroulons un bloc IN autour du bloc de suppression de ce clone. Pour ce qui est de la condition, allons voir les opérateurs et apportons un bloc. Ajoutez ensuite un bloc égal. Passons maintenant à Looks, et vérifions si le nom du costume n' est pas égal à vide. Cela signifie que le sprite est un clone, nous allons donc le supprimer. Sinon, nous pouvons exécuter le bloc Generate. Cependant, étant donné que le script Generate modifie le costume du sprite d'origine, chaque fois que le sprite d'origine reçoit à nouveau le message de configuration, il n'utilisera pas le costume vierge Donc, après le bloc de génération, nous devons introduire un bloc de costume de changement et le replacer dans le costume vierge. Maintenant, si nous lançons le jeu, les choses devraient toujours fonctionner presque exactement comme avant, sauf qu'il y a un petit problème avant que le bon niveau n'apparaisse Cela se produit parce que dans le code de fond, la boucle de jeu ne démarre que lorsque tous les sprites ont fini de recevoir le message de configuration C'est ce que nous voulons, mais cela signifie également que les clones de sprites du niveau ne seront pas correctement positionnés sur la scène pendant quelques images Comme le positionnement se produit pour la première fois lorsqu'ils reçoivent un message de mise à jour, nous pouvons donc revenir dans le code du sprite du niveau, chaque fois que nous créons un clone, nous pouvons ajuster sa position sur la scène Pour ce faire, trouvons un espace vide. Ensuite, allez dans Control et introduisez un when I start en tant que bloc de clonage. Passons maintenant à MI Blocks et ajoutons-y un bloc de réglage de position. Maintenant, si nous cliquons sur le drapeau vert, le niveau devrait apparaître correctement immédiatement. De même, pour nous assurer que le sprite du joueur est correctement positionné au début d'un niveau, nous pouvons accéder au script de configuration W I receive pour le sprite du joueur et ajouter un bloc de réglage de position en bas OK, donc ce que nous pouvons faire maintenant, c'est faire en sorte que nous commencions le niveau en tombant du niveau et en atteignant le bas de la scène . Pour cela, passons aux scripts de déplacement vertical. En bas, nous vérifierons si le sprite du joueur est tombé en bas du niveau, et si c'est le cas, nous recommencerons le niveau Alors d'abord, passons au contrôle et introduisons un si le bloc. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables, et vérifions si Y est inférieur à moins 180. Si c'est le cas, nous pouvons accéder aux événements, introduire un bloc de diffusion et diffuser le message du niveau de départ. Si nous lançons maintenant le jeu et que nous tombons en bas, le niveau redémarre Bien, nous pouvons maintenant recommencer le niveau actuel, mais pour le moment, nous n'avons aucun moyen de passer facilement d'un niveau à l'autre. Si nous voulons le faire, nous devons arrêter le jeu, accéder au code de fond et modifier la valeur de la variable de niveau. De toute évidence, cela peut être assez gênant lors des tests. Au cours de la prochaine leçon, nous allons donc faire en sorte que nous puissions appuyer sur une touche du clavier pour passer d'un niveau à l'autre. 85. Changer de niveau: Pour passer d'un niveau à l'autre en appuyant sur une touche, assurons-nous d'avoir saisi le code de la toile et introduisons un bloc enfoncé sur la touche Win. Et nous allons utiliser la clé pour cela. Maintenant, normalement, le changement de niveau se produit lorsque le joueur termine le niveau en cours, et lorsque cela se produit, nous diffusons un message de fin de niveau, la toile de fond recevra et passera au niveau suivant. Diffusons donc également message du niveau final dans le script d'appui sur la touche Win en introduisant un bloc de diffusion et diffusant un nouveau message appelé niveau de finition. Ensuite, nous recevrons le message du niveau final. Donc, lorsque je recevrai un bloc et que je recevrai le niveau final , la première chose que nous voulons faire ici est d'arrêter tous les autres scripts pour nous assurer que la boucle de jeu ne continue pas de fonctionner. Passons donc au contrôle et introduisons un stop block. Et arrêtons les autres scripts et sprites. Ensuite, nous allons augmenter la variable de niveau d'une unité. Passons donc aux variables, introduisons une modification par bloc et changeons niveau par bloc. Ensuite, nous voulons vérifier si la valeur du niveau actuel est supérieure au nombre total de niveaux du jeu. Lorsque cela se produira, plus tard, nous ferons en sorte que le jeu se termine, mais pour le moment, nous reviendrons simplement au premier niveau. Pour ce faire, nous allons d'abord créer une nouvelle variable globale. Et appelons-le le dernier niveau. Et nous n'avons pas besoin de le montrer. La valeur finale du niveau ne changera pas pendant le jeu, nous la définirons donc dans le script du drapeau vert. Ajoutons donc un ensemble à bloquer avant le niveau de début de diffusion, et fixons le niveau final à quatre, qui est le niveau du boss. Maintenant, quand je recevrai le niveau final, nous vérifierons si la valeur du niveau est supérieure à la valeur du niveau final. Passons donc au contrôle et introduisons un bloc « si alors ». Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le niveau est supérieur au niveau final. Si c'est le cas, introduisons un ensemble à bloquer et fixons le niveau à un. Enfin, passons aux événements, ajoutons un bloc de diffusion au bas du script et au niveau de début de diffusion. Passons aux variables et affichons la variable de niveau. Et si nous lançons maintenant le jeu et appuyons sur la touche, nous pouvons parcourir tous les niveaux. Ce que nous devons faire maintenant, c'est définir une bonne position de départ pour les sprites des joueurs dans chaque niveau Tout d'abord, assurons-nous d'être au niveau 1. Arrêtons ensuite le jeu et passons au code du sprite du joueur Et dans le script de configuration W I receive, au lieu d'utiliser les mêmes valeurs de départ X et Y à chaque fois, nous utiliserons des valeurs différentes en fonction du niveau actuel, et nous le ferons dans un bloc personnalisé. Passons donc à Mblocks et créons-en un nouveau. Appelons cela définir la position de départ. Et cliquez sur OK. Détachons les blocs set X, set Y et adjust position du script de configuration, mettons-les de côté, et remplaçons-les dans le script par un bloc de position de départ défini Déplaçons maintenant le bloc de position de départ défini vers le bas. Maintenant, pour chaque niveau, nous allons continuer à placer le joueur un peu au-dessus du sol pour qu'il tombe dans le niveau . Nous utiliserons en fait la même position de départ pour les niveaux 1 et 2, mais nous utiliserons des positions différentes pour les niveaux 3 et 4. Donc, pour vérifier le niveau actuel, commençons par contrôler et ajouter un bloc I puis s au script de position de départ défini. Pour ce qui est de la condition, allons voir les opérateurs et introduisons d'abord un bloc or. Ajoutons ensuite un bloc égal de chaque côté. Passons maintenant aux variables, et vérifions si le niveau est égal à un ou si le niveau est égal à deux. Si c'est le cas, introduisons les blocs set X et set Y que nous avons enregistrés ici. Et fixons X à moins 115 et Y à moins dix. Ensuite, nous utiliserons des valeurs différentes pour les niveaux trois et quatre. Revenons donc au contrôle et ajoutons un bloc I then outs à la partie outs de celui-ci. Pour la condition, utilisons une copie de l' un des blocs de niveau égal à trois ici, et vérifions si le niveau est égal à trois. Maintenant, dupliquons les blocs set x et set Y à partir du bloc externe if then outs et ajoutons-les à la partie I de celui-ci, et fixons X à 165 et Y à 705. Enfin, si nous avons atteint la partie des sorties du bloc d'entrées et sorties intérieur, nous sommes au niveau quatre. Apportons donc d'autres blocs set x et set Y, et fixons X à moins 75 et Y à 50. Après tout cela, nous voulons ajuster la position des sprites des joueurs sur la scène Ajoutons donc le bloc d' ajustement de position tout en bas du script. D'accord, je vais réajuster un peu les scripts. Et si nous lançons maintenant le jeu et parcourons les niveaux, nous pouvons voir le sprite du joueur démarrer à différentes positions dans les niveaux Au niveau trois, cependant, nous commençons en fait un peu plus haut que dans les autres niveaux. Et comme nous réglons actuellement la position de défilement sur 00 au début de chaque niveau, qui se trouve en bas à gauche du niveau, le défilement doit être effectué vers le haut pour que nous puissions voir le joueur. Pour résoudre ce problème, nous devons utiliser une position de défilement de départ différente pour le niveau trois. Pour ce faire, dans le code de la toile de fond, allons d'abord dans Mes blocs et créons-en un nouveau. Appelons cela définir le défilement en commençant et en cliquant sur OK. Dans le script du niveau de départ, nous pouvons extraire les blocs set scroll lex et set scroll Y et les mettre de côté. Et ajoutons un bloc de défilement de départ défini en haut du script de niveau de départ. Maintenant, amenons l'ensemble défini, le défilement de départ et le bloc de définition quelque part ici. La valeur de départ pour scroll x sera toujours zéro, nous pouvons donc continuer et ajouter le bloc set scroll x to zero en haut des scripts. Pour le scroll Y, nous utiliserons zéro pour tous les niveaux sauf le niveau trois. Passons donc au contrôle et introduisons un bloc si puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le niveau est égal à trois. Maintenant, si nous examinons les costumes de sprite de niveau 3, le joueur débutera par le clone de niveau qui utilise le costume de niveau 3 à zéro L'index de ligne correspondant est de deux. Donc, pour obtenir la valeur correcte pour le scroll Y, nous pouvons prendre 360, qui est la hauteur de la scène, et multiplier par deux, ce qui nous donne 720. OK, donc revenons au code de la toile de fond, ajoutons un bloc de défilement Y défini à chaque partie du bloc I then outs ici, et fixons-le à 720 pour la partie I et à zéro pour les parties sorties. Bien, si nous lançons maintenant le jeu et passons au niveau trois, la caméra démarre à la bonne position. Excellente. OK, il ne nous reste plus qu'à apporter quelques améliorations. Tout d'abord, si nous faisons face à gauche et que nous changeons de niveau, nous commençons par tourner vers la gauche. Il vaudrait mieux que nous commencions toujours face à droite. Pour ce faire, passons au code des sprites du joueur. Dans le script de configuration, passons au mouvement et introduisons un point dans le bloc de direction 90. Désormais, nous serons toujours orientés vers la droite au début d'un niveau. Ensuite, si nous tombons du niveau, lorsque le niveau redémarre pour la première fois, nous commençons à l'état de chute, passons brièvement à l'état inactif, puis nous revenons à l'état de chute avant d'atterrir au sol Cela se produit parce que lorsque nous tombons vers le bas, nous sommes toujours dans l' état de chute lorsque le niveau redémarre Ensuite, dans le script de configuration, nous passons à l'état inactif. Et même si nous sommes techniquement en baisse, le script d'état de mise à jour ne s'exécute pas tant que la boucle de jeu ne démarre Nous restons donc en état d'inactivité pendant quelques images. Pour résoudre ce problème, dans le script de configuration, définissons l'état sur Fall au lieu d'être inactif. De plus, comme nous sommes dans les airs, réglons la variable dans l'air à une valeur élevée, comme 99. Et pendant que nous y sommes, allons-y et définissons la variable de saut sur 99. Maintenant, si nous tombons au bas de la scène redémarrant le niveau, nous restons dans l'état de chute jusqu'à ce que nous atterrissions au sol Très bien, génial. Nous sommes maintenant prêts à améliorer l'apparence du jeu en y ajoutant quelques éléments supplémentaires, et nous allons commencer par ajouter des objets d'environnement. 86. Ajouter des objets d'environnement: Si nous examinons les costumes du sprite environnemental ici, nous avons appris il y a quelque temps que ses noms de costumes correspondent aux noms des costumes de sprite de niveau et que les objets contenus dans chaque costume correspondent aux tuiles du costume de niveau correspondant Séparer ces objets du sprite du niveau nous permet de les faire apparaître comme faisant partie du niveau sans provoquer de collision avec le joueur OK, donc pour ajouter les objets d'environnement au jeu, c'est en fait un processus très similaire à la façon dont nous ajoutons les parties du niveau. Nous devons d'abord passer en revue tous les costumes du niveau actuel, diviser les noms et créer des clones pour chacun d'eux, en utilisant les index des lignes et des colonnes pour positionner les Et croyez-le ou non, tout le code dont nous avons actuellement besoin pour l'environnement Sprite se trouve déjà dans le sprite de niveau Passons donc au niveau Sprite code. nous copierons chaque script partir de là, nous copierons chaque script dans les sprites de l' environnement Pour éviter de créer des problèmes à zéro, avant de copier un script contenant un bloc personnalisé, nous devons nous assurer de copier d'abord le script défini pour ce bloc. Donc, d'abord, nous pouvons copier, définir la position d'ajustement, puis définir Create Clone. Maintenant, lorsque je démarre en tant que clone, les scripts de mise à jour trois et de mise à jour d'un, définissons la chaîne fractionnée, définissons générateurs et enfin, le script de configuration et le script drapeau vert. Nous pouvons maintenant accéder au code Sprite de l'environnement et tout réorganiser La seule différence avec le sprite d'environnement est que nous n'avons pas besoin de définir les variables Max scroll X et Max scroll Y dans le script de génération, puisque nous le faisons déjà dans le sprite de niveau Il est également possible que les sprites d' environnement comportent moins de lignes et de colonnes que le sprite de niveau correspondant à un niveau donné, ce qui posera des problèmes si nous définissons position maximale de défilement dans le sprite d'environnement C'est en fait vrai pour le niveau 4, qui ne contient aucun costume de sprite environnemental Assurons-nous donc de supprimer les blocs set max scroll x et set max scroll Y en haut du script, ainsi que ceux en bas du script. Cela signifie que nous n'avons plus besoin des variables de ligne et de colonne maximales Nous pouvons donc nous débarrasser des blocs ici pour les initialiser, ainsi que des blocs if then ci-dessous pour les définir. Et nous pouvons également supprimer complètement les variables de ligne maximale et de colonne maximale en accédant aux variables, en cliquant avec le bouton droit sur chacune d'elles et en choisissant Supprimer. Si nous lançons maintenant le jeu, les objets de l'environnement ont été ajoutés à chaque niveau. C'est bon. À l'heure actuelle, tout est correctement superposé sur la scène, le sprite du joueur étant dessiné devant le niveau et les clones de sprite de l'environnement Cependant, si nous arrêtons le jeu, changeons le costume des sprites d'environnement cliquons dessus et que nous le faisons glisser sur la scène, puis que nous lançons le jeu, les objets de l'environnement sont désormais dessinés par-dessus tout le reste Nous pourrions résoudre ce problème en ajoutant un bloc de retour à la couche précédente dans le script When I start en tant que clone pour les sprites de l'environnement, en veillant à ce que les clones soient toujours à la fin Cependant, au fur et à mesure que nous ajouterons de plus en plus de sprites, comme les ennemis et l'arrière-plan, comme les ennemis et l'arrière-plan, il sera de plus plus difficile de tout régler Cela signifie que nous devrons trouver une meilleure façon de gérer les couches, et nous le ferons dans la prochaine leçon. 87. Trier les couches: Jusqu'à présent, pour trier les sprites sur scène, il suffisait d'envoyer des sprites sur la couche arrière et d'en placer d'autres sur la couche avant Cela a bien fonctionné puisque nos deux jeux précédents ne contenaient que quelques types de sprites différents Avec ce jeu, cependant, nous avons une grande variété de sprites et nous avons besoin d' un meilleur moyen de nous assurer qu'ils soient tous dessinés dans le bon ordre Par exemple, vous voudrez bien sûr dessiner d'abord les objets d' arrière-plan, puis les objets de l'environnement, puis les tuiles du niveau, puis les ennemis et les objets tuiles du niveau, puis les de collection, puis les sprites du joueur, et enfin, des sprites HUD pour santé du joueur et le nombre total de pièces restantes Dans de nombreux moteurs de jeu tels que Unity et Gadot, nous avons la possibilité d'appliquer un ordre Z à chaque sprite Les sprites seront ensuite dessinés dans l'ordre allant de celui ayant l'ordre Z le plus bas à celui ayant l'ordre Z le plus élevé Cela demande un peu plus de travail manuel, mais ce n'est en fait pas trop difficile une fois que nous avons compris exactement comment les couches fonctionnent dans Scratch. Pour un exemple simplifié, supposons que nous ayons les sprites du joueur et quelques clones, chacun des environnements représentant un escargot , des arrière-plan et des sprites à pièces, et qu'ils sont tous actuellement dessinés dans un ordre aléatoire Et en fait, pour les clones de sprites Snell et Coin, n'a pas vraiment d'importance ordre dans lequel nous les dessinons n'a pas vraiment d'importance, tant qu'ils apparaissent au-dessus des clones de sprites du niveau et en dessous des sprites et Ainsi, pour le tri des couches, nous pouvons tous les regrouper sous un seul type, par exemple un composant. Maintenant, ce que nous pouvons faire, c'est appliquer un ordre Z à chaque type. Supposons donc d'abord que nous donnions au joueur un ordre Z de zéro. Pour que tous les autres types apparaissent en dessous du joueur, ils doivent avoir des ordres Z inférieurs à zéro Je vais donc utiliser des nombres négatifs. Par exemple, nous pouvons attribuer une valeur négative à tous les sprites qui les composent, les dessinant directement en dessous du sprite du joueur Ensuite, nous pouvons donner aux sprites de niveau un moins deux, sprites de l'environnement un moins trois, afin qu'ils apparaissent en dessous des sprites de niveau, et enfin donner aux sprites d'arrière-plan un moins quatre, les faisant apparaître en dessous de tout le les faisant apparaître Bien, au début d'un niveau, tous nos sprites ont à nouveau un ordre de couches aléatoire, et nous avons également une liste de variables pour suivre les ordres Z de chaque sprite de la scène La liste est actuellement vide car chaque sprite doit ajouter son propre ordre Z à la liste lors de sa configuration initiale pour le niveau Supposons maintenant que Scratch décide d'exécuter d' abord le script de configuration du sprite du joueur La liste des ordres Z étant actuellement vide, nous pouvons simplement ajouter l'ordre Sprite Z du joueur à la liste et le conserver en première ligne Ensuite, nous avons un sprite de niveau. Le sprite de niveau a un ordre Z de moins deux. C'est inférieur à l'ordre Z du sprite du joueur, nous avons donc placé l' ordre Z du sprite de niveau en dessous dans la liste Maintenant, nous pouvons d'abord placer le sprite du niveau sur la couche avant au-dessus du sprite du joueur Mais comme il y a un objet au-dessus de lui dans la liste des commandes Z, nous le renverrons d'une couche en arrière ou en bas, en le plaçant à nouveau en dessous du sprite du joueur Jusqu'à présent, vous pensez peut-être qu'il est un peu inutile de déplacer un sprite vers la couche avant un sprite vers la couche avant puis vers l'arrière, mais soyez indulgent, mais soyez indulgent car nous avons maintenant un Les sprites des composants ont un ordre Z de moins un , inférieur à zéro et supérieur à moins deux Son ordre Z se situe donc juste entre les deux articles actuels de la liste des commandes Z. Nous plaçons maintenant le sprite du composant sur la couche avant, puis nous le renvoyons d'une couche en arrière afin qu'il corresponde à sa place dans la liste des commandes Z. Et maintenant, le composant est correctement superposé au-dessus du sprite du niveau et en dessous du sprite du joueur Ensuite, nous avons un autre sprite de niveau. abord, nous parcourons la liste des ordres Z, commençant par le haut jusqu'à ce que nous trouvions une valeur inférieure l' ordre Z du sprite de niveau Z de moins deux Comme nous n'en trouvons pas un, nous ajoutons un autre moins deux au bas de la liste. Maintenant, nous déplaçons le sprite lui-même vers la couche avant, puis vers l'arrière de trois De même, pour le sprite du composant suivant, nous recherchons dans la liste une valeur inférieure à moins un Cela se produit lorsque nous atteignons le premier moins deux, nous ajoutons donc un négatif juste entre l'autre négatif et le premier moins deux. Nous déplaçons ensuite le sprite vers la couche avant et vers l' arrière de deux Si nous continuons ainsi pour tous les sprites, ils apparaîtront dans le bon ordre des couches, avec le sprite du joueur la couche avant et les sprites d'arrière-plan sur la couche arrière Comme je l'ai déjà mentionné, il s'agit d'un exemple assez simplifié qui comportera en fait d'autres types de sprites, comme les sprites Hud qui seront superposés aux sprites des Quoi qu'il en soit, je pense que c'est une explication suffisante pour le moment. Voyons donc comment nous pouvons faire tout cela dans le code. abord, nous aurons besoin d'une liste de variables globale pour suivre les ordres Z des sprites actuellement présents dans le jeu et nous l'initialiserons dans le code de fond Donc, dans les variables, créons une nouvelle liste, que nous pouvons appeler ordres Z. Nous voulons réinitialiser la liste au début de chaque niveau. Supprimons donc tous les blocs de commandes Z et ajoutons-les en haut du script de niveau de démarrage lorsque je recevrai. Ensuite, nous devons créer des variables globales pour maintenir l'ordre Z de chaque type de couche. Créons une nouvelle variable, et appelons le premier joueur Z. Et nous pouvons masquer ces variables au fur et à mesure que nous les créons Les valeurs des variables d'ordre Z resteront toujours les mêmes Nous les définirons donc dans le script Green Flag. Prenons donc un set à bloquer et placons-le avant le bloc du niveau de début de diffusion. Et utilisons-le pour mettre le joueur Z à zéro. Créons maintenant une autre variable, appellerons effet de retour Z. Les effets de retour concerneront tous les effets que nous voulons dessiner directement sous le sprite du joueur Actuellement, il ne s' agira que du sprite à effet de glissement de pente Mais à l'avenir, nous déciderons peut-être d'ajouter d'autres effets. OK, ajoutons donc un autre ensemble de blocs au script Green Flag, et remettons l'effet Z à moins un. Pour la variable suivante, appelons-la composante Z. Nous utiliserons celle-ci pour les sprites ennemis, les sprites à collectionner, comme les pièces et les clés, et pour les sprites du Pour cela, introduisons un ensemble à bloquer et définissons-le à moins deux. Pour la variable suivante, nous allons passer au niveau Z et la fixer à moins trois. Ensuite, nous avons l'environnement Z, qui sera réglé à moins quatre. Créons-en un autre, appelons-le background Z et définissons-le sur moins cinq. OK, c'est tout pour le sprite du joueur et pour tous les sprites qui se dessineront en dessous. Cependant, nous avons également des sprites qui apparaîtront au-dessus du sprite du joueur Pour le premier, créons une nouvelle variable appelée effet de front Z. Elle servira à créer des effets qui apparaîtront devant le joueur, comme les particules de poussière lorsque le joueur atterrit au sol Pour garder les blocs en ordre, ajoutons un set de deux blocs au-dessus du bloc Z du joueur et utilisons-le pour attribuer à l'effet de front Z la valeur un. Créons une autre variable, que nous appellerons liquid Z, et définissons-la à deux. Ensuite, créons-en un appelé Hud Z et définissons-le sur trois. Enfin, créons-en une autre, que nous appellerons superposition Z. sera destinée à des éléments tels que la superposition de pause lorsque le jeu est en pause et pour les OK, réglons la superposition Z sur quatre. Bien, il ne nous reste plus qu' à utiliser ces variables et à trier tous nos sprites, et nous allons commencer par le sprite du joueur Passons donc au code Sprite du joueur. Le code que nous allons écrire pour trier un sprite dans les couches sera en fait le même pour tous les sprites Donc, pour faciliter la copie du code entre les sprites, nous allons l'écrire dans un bloc personnalisé. Passons donc à Mbloxs et créons-en un nouveau. Tapons d'abord trier les couches au niveau a, puis ajoutons une nouvelle entrée, que nous appellerons ordre Z. Et nous voulons nous assurer de cocher la case Exécuter sans rafraîchir l'écran pour cela. Cliquez ensuite sur OK. Nous allons trier le sprite dans les couches au début d'un niveau Passons donc au script de configuration de W I receive, et ajoutons un bloc de tri par couches en bas. Pour les entrées de l'ordre Z, passons aux variables et introduisons un bloc Z du joueur. OK, maintenant, introduisons le bloc de tri en couches défini ici. La première chose que nous allons faire dans le script est de parcourir la liste des commandes Z jusqu'à ce que nous trouvions le premier article dont la valeur est inférieure à celle des commandes Z entrées, et nous devrons utiliser une nouvelle variable pour suivre l' index actuel de la liste. Créons-en donc un nouveau, que nous pouvons appeler layer index et le créer uniquement pour ce sprite Et allons-y et cachons la variable. Le premier élément d'une liste possède un index de 1. Ajoutons un bloc défini à deux au script de la couche de tri et définissons l'indice de couche sur un. Passons ensuite au contrôle et répétons jusqu'au blocage. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Pour la première entrée, passons aux variables et introduisons d' abord un élément de bloc. Et nous voulons obtenir l'élément à l' index de couche dans la liste des ordres Z. Et vérifions si c'est inférieur aux entrées de l'ordre Z. Jusqu'à ce que cela se produise, nous poursuivrons nos recherches dans la liste. Apportons donc une modification par bloc et modifions ensuite un index par un. Maintenant, vous vous demandez peut-être qu'en est-il lorsque la liste est vide ? Ou que se passe-t-il s'il n'y a aucun article dans la liste qui est inférieur à la valeur saisie dans la commande Z ? L'indice de couche va donc au-delà du dernier élément de la liste. Heureusement, ce n'est pas un problème. La raison en est que si nous essayons d'obtenir un élément inexistant dans une liste, il renvoie une valeur vide. Et en ce qui concerne scratch , toute valeur est supérieure à la valeur vide. Ainsi, lorsque la liste est vide, indice de couche restera à un, et si la répétition jusqu'à ce que le bloc atteigne la fin de la liste sans trouver d'élément correspondant à la condition, le bloc se terminera et l'indice de couche sera supérieur d'un au nombre total d'éléments de la liste. C'est en fait ce que nous voulons, car nous pouvons maintenant placer un insert au bloc en dessous du bloc repeat until et insérer l'entrée de l'ordre Z à l' index de la couche dans la liste des ordres Z. Maintenant, si nous lançons le jeu, nous pouvons voir que la valeur Z du joueur, qui est zéro, a été ajoutée à la liste. Cependant, cela n'affecte pas encore les couches réelles, et nous pouvons voir que les objets de l'environnement sont toujours dessinés au-dessus du joueur. Pour placer le sprite du joueur dans la bonne couche, allons dans Looks et ajoutons d'abord une couche de renvoi au bas du script de la couche de tri Ensuite, nous voulons reculer de suffisamment de couches pour correspondre à l'indice des sprites dans la liste des ordres Z. Donc, d'abord, introduisons ici un bloc d'une couche. Mais nous voulons plutôt revenir en arrière. Maintenant, comme la couche avant est identique à l' index d' une couche dans la liste, pour reculer du nombre correct de couches, nous pouvons utiliser un de moins que la valeur de l'indice de couche. Passons donc au contrôle et ajoutons un bloc de soustraction au bloc de retour en arrière. Passons ensuite aux variables et faisons l'index des couches moins un. Pour le sprite du joueur en ce moment, l' indice de couche moins un sera égal à zéro, ce qui signifie que le sprite ne reculera pas et restera sur la couche avant Maintenant, si nous lançons le jeu, il place le sprite du joueur au premier plan, le dessinant au-dessus de tout le reste. Les objets de l'environnement sont cependant toujours au-dessus des tuiles de niveau , alors corrigeons ce problème ensuite. Pour ce faire, récupérons le script de couche de tri défini ici et copions-le à la fois dans le sprite de niveau et dans les sprites d'environnement Passons maintenant au code sprite du niveau. Pour les sprites qui utilisent des clones, le sprite original utilisera le costume vierge et ne sera jamais visible sur scène Cela signifie que nous pouvons simplement le laisser être repoussé à l'arrière de la pile de couches sans nous soucier de le trier dans les couches. Nous devons cependant trier les clones et nous devrons trier chacun d'eux au fur et à mesure de leur création Pour ce faire, nous pouvons utiliser le When I start en tant que script de clonage. Et ici, passons aux blocs M et introduisons un bloc de tri des couches. Passons ensuite aux variables et utilisons un bloc de niveau Z comme entrées d'ordre Z. Maintenant, si nous lançons le jeu, nous obtenons un tas de trois négatifs dans la liste en dessous du zéro Chaque chiffre négatif de trois représente un clone de sprite de niveau correspondant au niveau actuel De plus, les vignettes de niveau apparaissent désormais au-dessus des objets de l'environnement sur la scène. Il n'est donc même pas nécessaire trier les clones de sprites de l'environnement pour le moment, puisqu'ils sont déjà repoussés vers l'arrière Cependant, une fois que nous aurons ajouté l'arrière-plan, cela sera nécessaire. Allons-y et prenons-en soin maintenant. Comme pour le sprite de niveau, il suffit de trier les clones de Sprite de l' environnement Donc, dans le script When I start as a clone, passons à Mblocks et introduisons un bloc de tri des couches. Passons ensuite aux variables et utilisons un bloc d'environnement Z comme entrée. Maintenant, si nous lançons le jeu, nous avons un tas de moins quatre dessous des moins trois dans la liste Et juste pour nous assurer que le tri des couches fonctionne correctement, supprimons le bloc Z de l'environnement ici, et utilisons un un comme ordre Z. Si nous lançons le jeu maintenant, nous en avons plusieurs en haut de la liste, et maintenant les objets de l'environnement sont au-dessus de tout le reste. Très bien, assurons-nous d'utiliser à nouveau le bloc Z de l'environnement pour trier les clones d'environnement, et nous pouvons également masquer la liste des commandes Z. Maintenant que nous pouvons continuer à ajouter des éléments au jeu sans nous soucier des couches, nous allons maintenant créer un arrière-plan défilant. 88. Créer un arrière-plan de défilement: Si nous examinons les costumes des sprites de fond, nous avons quatre costumes principaux, dont deux avec une sorte de végétation extraterrestre et deux avec des nuages Nous exposerons les quatre costumes sur scène en même temps, les superposant les uns sur les autres De plus, chaque costume a été conçu de manière à pouvoir être répété sans problème le long de l'axe horizontal. Cela nous permet de faire défiler les couches d'arrière-plan ainsi le niveau au fur et à mesure que le joueur se déplace dans le jeu. OK, donc pour commencer à les couches d'arrière-plan sur la scène, passons au code du sprite d'arrière-plan Passons d'abord aux événements et remportons un bloc sur lequel vous avez cliqué sur le drapeau vert Passons ensuite à Looks, apportons un bloc de costumes Switch et passons au costume vierge. Nous voulons également nous assurer de ne pas masquer le sprite, c'est pourquoi nous allons créer un bloc d'affichage. Revenons maintenant aux événements, introduisons un bloc « Quand je reçois » et recevons le message de configuration. Ici, nous voulons d'abord vérifier si le sprite est un clone, et si c'est le cas, nous le supprimerons Je vais vous lancer ce défi. Mettez la vidéo en pause maintenant et voyez si vous pouvez relever le défi. Comme nous l'avons fait pour les sprites de niveau et d'environnement, nous pouvons le faire en vérifiant si le sprite n'utilise pas le costume vierge Passons donc au contrôle et introduisons un « je », puis bloquons. Pour la condition, passons aux opérateurs, introduisons un bloc non, puis un bloc égal. Passons maintenant à Looks et vérifions si le nom du costume n'est pas égal à vide. Si c'est le cas, nous pouvons passer au contrôle et ajouter une suppression de ce bloc de clonage. Nous n'oublions donc pas de le faire plus tard. Revenons à Looks at a switch costume block en bas du script et revenons au costume vierge. Maintenant, avant de commencer à créer les clones, assurons-nous que tout est correctement positionné sur la scène chaque itération de la boucle de jeu Pour ce faire, nous pouvons accéder aux sprites de l' environnement et copier le script de position d' ajustement défini dans les sprites d'arrière-plan Et nous pouvons également copier les scripts When I receive Update 1 et When I receive Update Three. Revenons maintenant aux sprites d'arrière-plan et réajustons tous les scripts Ensuite, dans le script de configuration, avant de passer au costume vierge, nous allons créer des clones pour chaque couche de costume Et pour faire défiler l'arrière-plan, nous devons en fait créer deux clones pour chaque costume Nous allons aligner les deux clones côte à côte et les déplacer ensemble, puis nous allons créer les clones dans un bloc personnalisé Passons donc à Mblock et créons-en un nouveau. Commençons par taper create clones of. Ajoutons ensuite une entrée appelée costume et cliquez sur OK. Dans le script de configuration, avant de passer au costume Blink, introduisons quatre blocs Create Clones. Les costumes sont BG un, BG deux, BG trois et BG quatre. Utilisons-les comme entrées dans cet ordre, BG un, BG deux, BG trois et BG quatre. Maintenant, amenons le bloc de clones critiques défini quelque part ici Et ici, nous voulons d'abord passer au costume donné par la saisie du costume. Passons donc à Looks, introduisons un bloc de costumes Switch et passons à l'entrée costume. Ensuite, nous devons lui donner une position mondiale. Lorsque nous avons copié le script d'ajustement de position à partir du sprite d'environnement, il a automatiquement créé des variables X et Y pour nous Nous pouvons donc maintenant les définir dans le script Crit Clone en accédant aux variables et en introduisant deux blocs set two. Pour le premier clone, définissez X pour faire défiler X et Y jusqu'à zéro. Si vous réglez X pour faire défiler X, le clone démarrera verticalement centré sur la scène et si vous réglez Y sur zéro, il sera placé en bas du niveau. Maintenant, créons le clone en accédant à Control et en introduisant un bloc de création d'un clone de moi-même. Nous devons maintenant créer un autre clone en utilisant le même costume, mais il doit être sur toute la largeur de scène à droite du premier. Pour ce faire, revenons aux variables, introduisons une modification par bloc et changeons X de 480. Et nous allons laisser Y à zéro pour que les clones soient alignés horizontalement en bas du niveau Créons maintenant le deuxième clone en accédant à Control et en ajoutant un autre bloc critique de moi-même. Avant de tester cela, nous devons positionner chaque clone dans la phase au fur et à mesure de sa création, puis le trier dans les couches. Donc, commençons par le moment où je commencerai en tant que bloc de clonage. Passons ensuite aux blocs M et ajoutons un bloc d'ajustement de position au script. Passons maintenant à l'un des autres sprites sur lesquels nous avons travaillé jusqu'à présent et copiez-le, trié en couches, dans le sprite d'arrière-plan Puis revenez en arrière-plan, le sprite. Ajoutons un bloc de tri et de couches au script When I start as a clone. Pour la saisie de l'ordre Z, passons aux variables et utilisons un bloc Z en arrière-plan. Si nous lançons le jeu maintenant, nous obtenons un arrière-plan qui défile avec le niveau jusqu'à ce que nous arrivions à peu près à la moitié du niveau Pour résoudre ce problème, lorsque le premier clone de chaque couche d'arrière-plan sort complètement du côté gauche de la scène, nous devons le déplacer sur toute la largeur de la scène vers la droite afin que son bord gauche soit aligné avec le bord droit du second clone Ensuite, lorsque le deuxième clone quittera la scène, nous ferons de même avec lui et ainsi de suite. Pour ce faire, nous devons ajouter des éléments au script d' ajustement de position. Tout d'abord, créons quelques nouvelles variables. Appelons le premier un nouveau X et faisons-le uniquement pour ce sprite Pour le second, appelons-le Nu Y. Également pour ce sprite uniquement Et nous n'avons pas besoin de montrer les variables. Nous les utiliserons pour calculer les nouvelles positions X et Y du sprite avant de le déplacer Pour l'instant, détachons le bloc Go to XY du script, et introduisons deux blocs définis Avec le premier, définissons un nouveau x en utilisant le bloc X moins scroll x ici. De même, attribuons à nouveau Y la valeur Y moins le défilement Y. Ensuite, nous allons vérifier si la nouvelle valeur X placera le clone complètement sur le côté gauche de la scène Ce sera le cas si NX est inférieur à moins 480. Passons donc au contrôle et introduisons un bloc informatique. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si Nux est inférieur à moins 480 Si tel est le cas, nous voulons augmenter la variable NX de deux largeurs d' étage, soit 960 Apportons donc un changement par bloc et changeons Nux de 960 Maintenant que NX et New Y prennent en compte la position de défilement, nous ne les utiliserons que pour définir la position réelle des sprites sur la scène Cependant, nous devons également ajuster sa position mondiale dans le jeu. Apportons donc une autre modification par bloc et changeons également X par 960. Enfin, nous pouvons rattacher le bloc go to XY au bas du script et utiliser un nouveau bloc X pour l'entrée X et un nouveau bloc Y pour les entrées Y. Si nous lançons maintenant le jeu et que nous allons vers la droite, l'arrière-plan défile parfaitement , si nous revenons à gauche Cependant, si nous revenons à gauche, cela cesse de fonctionner. Pour résoudre ce problème, nous devons également vérifier si le clone a dépassé le bord droit de la scène. Ce sera le cas lorsque le nouveau X est supérieur à 480. Donc, pour vérifier cela, détachons d'abord à nouveau le bloc Go to XY. Dupliquons ensuite le bloc informatique et fixons-le en bas. Cette fois, nous voulons vérifier si Nux est supérieur à 480, alors sauvegardons le bloc Nux et débarrassons-nous du bloc inférieur Passons ensuite aux opérateurs et remplaçons-le par un bloc supérieur à. Voyons maintenant si le NX est supérieur à 480. Si tel est le cas, nous voulons déplacer le sprite vers la gauche de deux largeurs d'étage allons donc modifier les deux variables par moins 960. Nous pouvons maintenant rattacher le bloc Go to XY en bas. Et si nous réessayons, l'arrière-plan devrait maintenant défiler sans problème dans les deux sens. Très bien, ça marche plutôt bien. Mais comme tous les objets d' arrière-plan défilent exactement à la même vitesse, cela semble un peu plat Dans la vraie vie, lorsque nous nous déplaçons, choses qui sont plus éloignées de nous semblent passer plus lentement que celles qui sont plus proches de nous. Pour obtenir quelque chose de similaire dans notre jeu, nous pouvons faire en sorte que les couches d' arrière-plan défilent de plus en plus lentement au fur et à mesure qu'elles reculent. C'est ce qu'on appelle l' effet parallaxe ou défilement parallaxe, et nous en avons discuté brièvement lors de la création des étoiles en arrière-plan lors de la création Pour créer cet effet, nous devons garder une trace de la couche d'arrière-plan sur laquelle se trouve chaque clone et l'utiliser pour ajuster sa vitesse de défilement. Passons donc d'abord aux variables et créons-en une nouvelle. Appelons-le couche, et cela ne doit être que pour ce sprite Et d'ailleurs, cela ne fera référence qu'à la couche d' arrière-plan sur laquelle se trouve un clone et n'a rien à voir avec les couches à gratter. Bien, cliquons sur OK et masquons la variable. Ensuite, lors de la création des clones dans le script de configuration, nous devons également indiquer la couche d' arrière-plan sur laquelle les clones doivent se trouver. Cela signifie que nous devons ajouter une autre entrée au bloc personnalisé de crit Clones Pour ce faire, nous pouvons cliquer avec le bouton droit sur l'un des blocs Crit Clones et choisir Modifier Tout d'abord, ajoutons une nouvelle étiquette et saisissons le texte sur la couche. Ajoutons ensuite une nouvelle entrée appelée couche et cliquez sur OK. Pour les entrées de couche, en commençant par le haut, faisons un, deux, trois et quatre. Passons ensuite au script rit Clone défini, et juste après le bloc Switch Costume, passons aux variables, introduisons un ensemble à bloquer et définissons la variable de couche sur les entrées de couche pour ajuster la vitesse de défilement d'un clone en utilisant sa valeur de couche, passons au script d' ajustement de position. Pour le moment, nous définissons simplement nouveau X à X moins scroll x, ce qui donne à chaque clone la même vitesse de défilement, mais nous allons maintenant l'ajuster à l' aide de la variable de couche. Pour ce faire, déplaçons d'abord le bloc scrollx dans un espace vide. Passons maintenant aux opérateurs, ajoutons un bloc de division au bloc de soustraction, puis plaçons le bloc scrollx sur le côté Pour le côté droit, passons aux variables et introduisons un bloc de couches. Ainsi, plus la valeur de la couche est élevée, plus la quantité de défilement diminue. Cela ralentit le déplacement du clone au fur et à mesure qu'il défile Donc, si nous lançons le jeu et que nous commençons à nous déplacer vers la droite, les couches nuageuses semblent désormais passer plus lentement que les couches de végétation. L'arrière-plan défile encore un peu trop vite. Pour résoudre ce problème, nous pouvons multiplier la valeur de la couche par autre valeur supérieure à un. Pour ce faire, passons aux opérateurs et plaçons un bloc de multiplication dans un espace vide. Déplaçons le dernier bloc d'un côté et essayons de le multiplier par deux Divisons maintenant ScrollX par tout cela et essayons-le . C'est mieux. Mais si nous commençons à monter en haut du niveau, les choses deviennent un peu bizarres avec toutes les couches d'arrière-plan qui descendent à la même vitesse. Pour résoudre ce problème, nous devons également appliquer l'effet de parallaxe au défilement vertical Pour ce faire, dupliquons d'abord tous ces blocs mathématiques. Si nous cliquons avec le bouton droit sur la partie de soustraction et choisissons dupliquer, cela devrait les dupliquer ensemble. Pour celui-ci, remplaçons X par Y et défilons x par scroll Y. Ensuite, utilisons tout cela pour définir Nu Y. Avec cela , les couches d'arrière-plan devraient désormais également défiler vers le haut et vers le bas à des vitesses différentes Nous devons également nous assurer de prendre en compte le nouveau positionnement lors de la création des clones. Sinon, les clones fonctionneront toujours correctement tant que nous commençons par un défilement de 00 en bas à gauche du niveau Mais si nous devions commencer par une autre partie du niveau, le positionnement serait un peu décalé. Ainsi, dans le script Create Clone, au lieu de définir X sur scrollx, nous pouvons le définir en utilisant une copie du scroll x divisé par la couche multipliée par deux blocs Et pour Y, nous pouvons utiliser une copie de l' une des couches multipliée par deux blocs. Cela devrait garantir que la position de départ des clones est correcte. Pour rendre le code un peu plus efficace, nous devrions probablement utiliser une variable au lieu des deux et de toutes les couches multipliées par deux blocs au cas où nous voudrions essayer une valeur différente ultérieurement. Passons donc aux variables et créons-en une nouvelle. Nous pouvons l'appeler facteur de défilement et le créer pour ce sprite uniquement, et masquons-le Comme la valeur du facteur de défilement ne changera pas pendant le jeu, nous pouvons la définir dans le script du drapeau vert. Ajoutons donc un bloc défini à deux au script, et définissons le facteur de défilement à deux. Nous pouvons maintenant revenir à la position d'ajustement, créer des scripts de clonage et remplacer les deux blocs de la couche par deux blocs par des blocs à facteur de défilement Il sera ainsi beaucoup plus facile de tester différentes valeurs pour le facteur de défilement. OK, maintenant, si nous relançons le jeu, lorsque nous ne bougeons pas, toutes les couches d'arrière-plan ne bougent pas non plus puisqu'il n'y a pas de défilement. Cependant, comme nous avons des nuages en arrière-plan, cela semble un peu étrange. Le cloud doit toujours être en mouvement. Nous pouvons donc appliquer une variable de vitesse à chaque clone et l'utiliser pour déplacer le clone, chaque image. Nous ne voulons pas que les couches de végétation se déplacent à moins que nous ne fassions défiler la Nous leur donnerons donc une vitesse nulle Et pour les couches nuageuses, nous allons donner à la couche la plus proche une vitesse légèrement plus rapide qu'à la arrière pour conserver l'effet de parallaxe. OK ? Nous devons donc d'abord créer une nouvelle variable. Appelons cela vitesse et faisons-le uniquement pour ce sprite. Et cachons-le. Ensuite, dans le script de configuration, nous devrons transmettre les valeurs de vitesse lors de la création des clones. Cela signifie que nous devrons à nouveau ajouter une nouvelle entrée au bloc personnalisé Create Clones Écrivons donc, cliquez sur un et choisissez Modifier. Tout d'abord, ajoutons une nouvelle étiquette et tapons rapidement. Ajoutons ensuite une nouvelle entrée appelée vitesse et cliquez sur OK. Pour les deux premiers, utilisons un zéro pour les entrées de vitesse. Pour le troisième, faisons moins 0,5. Et pour le dernier, faisons moins 0,7. L'utilisation de valeurs négatives les fera se déplacer vers la gauche. Mais si nous le voulions, nous pourrions plutôt utiliser des valeurs positives pour les déplacer vers la droite. Bien, passons maintenant au script de clonage critique défini. Passons aux variables et ajoutons un autre ensemble à bloquer en haut du script, et définissons la variable de vitesse sur les entrées de vitesse. Bien maintenant, nous devons juste déterminer quand déplacer un clone en utilisant sa valeur de vitesse. Je pense que le meilleur moment pour le faire est lorsque le clone reçoit le message de mise à jour. nous ne nous occupons pas actuellement Cependant, nous ne nous occupons pas actuellement de la mise à jour du message Passons donc aux événements et ajoutons un nouveau bloc lorsque je recevrai, et recevrons la deuxième mise à jour. Et ici, il suffit d'accéder aux variables, apporter une modification par bloc et de modifier X par la variable de vitesse. OK, essayons-le. Génial. Maintenant, les nuages bougent même lorsque nous sommes immobiles, et le défilement fonctionne toujours Génial. OK, maintenant, si nous appuyons plusieurs fois sur la touche pour passer au niveau quatre, ce niveau est en fait censé se trouver dans un château, donc nous ne voulons pas que l' arrière-plan défilant apparaisse Nous voulons qu'il apparaisse uniquement dans les niveaux un, deux et trois. Pour ce faire, dans le script de configuration, allons dans Control et enroulons un bloc ITN autour tous les blocs permettant de créer les clones Et veillons à placer le bloc de costume Switch en dessous du bloc IDN. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si le niveau est inférieur au niveau final. Cela empêchera la création de clones d'arrière-plan dans le niveau final Cependant, le niveau quatre semble toujours étrange à cause du fond bleu ciel. Cet arrière-plan fait en fait partie de la toile de fond, et nous pouvons le voir dans l'onglet arrière-plans Le bleu ciel que nous avons utilisé s'appelle ciel. Nous en avons également un gris foncé appelé Castle. C'est celui que nous voulons utiliser pour le niveau quatre. Pour cela, passons au code de la toile de fond. Dans le script du niveau de départ, nous pouvons vérifier quel est le niveau actuel, puis décider de la toile de fond à utiliser. Pour ce faire, passons au contrôle et plaçons un bloc if then else dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions à nouveau si le niveau est inférieur au niveau final. Si c'est le cas, nous utiliserons le ciel en toile de fond. Si nous passons à Looks, nous pouvons changer la toile de fond à l'aide du bloc de fond Switch ici. Ajoutons-en donc un à la partie I et changeons de toile de fond en ciel. Et pour le reste, passons à Castle. Maintenant, nous allons placer tout cela juste avant le bloc de configuration de diffusion. Si nous lançons maintenant le jeu, les trois premiers niveaux utilisent toujours le ciel en toile de fond, mais le quatrième niveau utilise désormais le décor du château. OK, et avec cela, l'environnement de notre jeu est maintenant presque terminé. Il ne reste plus qu'à ajouter un peu de liquide qui coule le long du fond. Nous y travaillerons ensuite. 89. Ajouter du liquide: Sélectionnons le sprite liquide ici et découvrons ses costumes Le sprite liquide possède deux costumes principaux, l'eau et la lave. Et comme nous pouvons le voir si nous montrons le sprite, chacun d'eux couvre toute la largeur de la scène Et comme avec le sprite d'arrière-plan, les costumes peuvent être répétés sans problème le long de l'axe horizontal Donc, ce que nous allons faire avec le sprite liquide, c'est l'afficher au bas de chaque niveau Cela sera plus beau que d'avoir simplement un tas d'espace vide en bas, comme c'est le cas actuellement. D'accord, et une grande partie du code sera le même que pour le sprite d'arrière-plan Donc, pour commencer, nous pouvons accéder au code du sprite en arrière-plan et copier les scripts Nous devrons apporter quelques modifications, mais pour le moment, nous copierons tous les scripts tels qu'ils sont actuellement. Tout d'abord, redéfinissons le tri et les couches, définissons la position d'ajustement et définissons les clones. Ensuite, nous pouvons copier les scripts restants. Passons maintenant au code Liquid Sprite et nettoyons un peu le tout Très bien, passons au script de clonage critique défini. Contrairement au sprite d'arrière-plan, le sprite liquide ne possède qu'une seule couche, nous n'avons donc pas du tout besoin d'une entrée de couche Pour le supprimer, cliquez avec le bouton droit sur le bloc Créer des clones défini et choisissons Modifier Tout d'abord, cliquons à l'intérieur de l'étiquette de la couche ici et supprimons-la en cliquant sur l'icône de corbeille située au-dessus. Faisons de même pour les entrées de couche. Maintenant, cliquons sur OK. Nous pouvons également nous débarrasser du bloc de couche défini ici. Nous pouvons régler X pour qu'il fasse simplement défiler X, et nous pouvons mettre Y à zéro. Ensuite, et définissez la position d' ajustement, nous n'utiliserons pas la variable de couche lors du réglage de la vitesse de défilement. Au lieu de cela, nous voulons simplement utiliser X moins ScrolX pour définir un nouveau X et Y moins scroll Y pour définir Y. Maintenant, nous pouvons accéder aux variables, cliquer avec le bouton droit sur la variable de couche et la supprimer Et pendant que nous y sommes, nous pouvons passer au script du drapeau vert, supprimer le bloc de facteur de défilement défini et supprimer la variable de facteur de défilement. Bien, passons au script When I start as a clone. Au lieu d'utiliser l'arrière-plan Z comme entrée d'ordre Z, nous voulons utiliser un Z liquide. Liquid Z a une valeur de deux, ce qui le placera au-dessus tous les autres sprites actuellement présents dans le jeu Ensuite, nous devrons apporter quelques modifications au script de configuration. Pour le sprite liquide, nous utiliserons le costume aquatique pour les niveaux un, deux et trois, et nous utiliserons le costume de lave pour le niveau quatre Nous devons donc d'abord remplacer le bloc ITN ici par un bloc ITN ts. Pour ce faire, allons dans Control et plaçons un bloc ITN s dans un espace vide Et utilisons le niveau comme bloc de niveau inférieur au dernier bloc de niveau ici comme condition. Passons maintenant aux blocs MI et ajoutons un bloc de clones critiques à chaque partie du bloc ITN outs. Pour le premier, utilisons le mot eau comme nom de costume, et utilisons la lave pour le second bloc. Comme pour les nuages en arrière-plan, nous allons également déplacer le liquide une vitesse constante à chaque image. Pour l'eau, on opte pour le négatif 1,5. La lave est plus épaisse que l'eau et devrait se déplacer un peu plus lentement. Utilisons donc moins 0,5 pour sa vitesse. Maintenant, nous pouvons passer du costume de switch à un bloc vide ici et l'attacher au bas du bloc I thin s, puis nous débarrasser du bloc ITN et joindre le tout aux scripts Et cela devrait être tout ce que nous devons faire pour le moment, essayons-le. Génial Maintenant, l'eau coule au bas du niveau. Et si nous montons dans le niveau, le liquide défile vers le bas en même temps que le niveau Passons au niveau quatre pour assurer qu'il utilise le costume de lave. Parfait OK, et juste pour le fun, rendons l'eau partiellement transparente pour que nous puissions voir les choses à travers elle. Pour ce faire, revenons au script Crit Clone. Maintenant, nous ne voulons pas que la lave soit visible, ce serait bizarre. Nous allons donc d'abord vérifier la saisie du costume. Pour ce faire, passons au contrôle et plaçons un bloc ITN s dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Voyons ensuite si l'entrée du costume est égale à de l'eau. Si c'est le cas, passons à Looks, introduisons un bloc d'effets défini à deux et réglons l'effet fantôme sur 20. Sinon, prenons un autre bloc d'effets définis et ajoutons-le à la partie s, et réglons l'effet fantôme à zéro pour nous assurer que le sprite est complètement opaque Nous pouvons maintenant placer tout cela quelque part en haut du script et l'essayer. Sympa. Maintenant, l'eau est partiellement transparente. Et si on passe au niveau quatre, la lave est toujours totalement opaque. C'est bon. Et pour le moment, en tombant dans le liquide, AKA atteint le bas de la scène, le niveau recommence à chaque fois Nous corrigerons ce problème plus tard lorsque nous donnerons de la santé au joueur. Mais d'abord, les niveaux restent assez ennuyeux et le joueur n'a pas grand-chose à faire. Travaillons donc sur l'ajout d' objets de collection et d' ennemis au jeu 90. Activer le mode Dieu: Contrairement à la plupart des sprites sur lesquels nous avons travaillé jusqu'à présent, qui ont occupé toute la scène, pour créer un clone d'une pièce ou d'un sprite d'escargot, par exemple , nous avons besoin d'un moyen de lui attribuer une position mondiale spécifique dans le Pour ce faire, nous pouvons faire en sorte que cliquer quelque part dans un niveau nous donne la position mondiale à ce moment-là. Et nous pouvons ensuite utiliser cette position lors de la création d'un clone. Pour cela, examinons le code de la toile de fond. abord, nous devons accéder aux variables et en créer quelques nouvelles pour maintenir la position sur laquelle vous avez cliqué Pour le premier, disons qu'il a cliqué sur X. Ensuite, créons-en un autre appelé, vous l'avez deviné, il a cliqué sur Y. Ensuite, à chaque itération de la boucle de jeu, nous vérifierons si le joueur clique actuellement sur la souris et si c'est le cas, nous mettrons X et Y à la position sur laquelle il a cliqué Pour ce faire, allons d' abord dans Control et plaçons un bloc ITN dans un espace vide Pour vérifier si le joueur clique sur la souris, nous pouvons passer à la détection et utiliser un bloc vers le bas de la souris comme condition. Passons maintenant aux variables et ajoutons deux blocs set two au bloc ITN. Utilisons-les pour configurer ClickX et cliqué sur Y. Revenons ensuite à la détection Pour connaître la position actuelle de la souris sur la scène, nous avons ces blocs MouseX et MouseY. Réglons donc clicked x sur MouseX et sur Y sur MouseY. Mettons ensuite tout cela au début de la boucle de jeu. Si nous lançons maintenant le jeu et que nous cliquons n'importe où sur la scène, il place le clic sur x et le clic sur Y à cette position. Cela fonctionne bien tant que nous n'avons pas commencé à passer d'un niveau à l'autre. Mais une fois que nous commençons à faire défiler la page vers la droite, les valeurs ne sont plus précises en ce qui concerne le positionnement mondial dans le jeu Pour convertir la position de scène en position mondiale, nous devons également prendre en compte la position de défilement actuelle. Pour ce faire, il suffit d'ajouter Scroll x à MouseX et de faire défiler Y jusqu'à la souris Y. Passons donc aux opérateurs et ajoutons quelques blocs supplémentaires Passons maintenant aux variables et pour le bloc de première édition, passons à MouseX plus ScrolX Pour le second, faisons MouseY plus Scrolly. Nous pouvons maintenant définir les blocs sur lesquels vous avez cliqué sur x et sur Y en utilisant les nouveaux blocs d'édition Si nous lançons le jeu, la position cliquée sera désormais exprimée en coordonnées mondiales et nous pourrons l'utiliser pour ajouter des objets au jeu Cependant, supposons que nous voulions ajouter une pièce ou quelque chose en haut du niveau. Pour le moment, nous ne pouvons monter là-haut qu'en faisant un tas de sauts de mur et tout ça. Lorsque vous essayez d'ajouter beaucoup de choses au jeu, cela deviendra assez ennuyeux. Pour éviter d'avoir à le faire, nous pouvons implémenter ce que l' on appelle le bon mode. Le mode Dieu est généralement un code de triche qui rend le joueur invincible et/ou lui donne des ressources illimitées. Dans notre jeu, cependant, mode Dieu ne servira qu' des fins de développement et de test, et il nous permettra de passer librement et rapidement à n'importe quelle partie d'un niveau. D'accord ? Nous avons donc d'abord besoin d'une variable globale pour savoir si bon mode est actuellement activé ou non. Créons-en un nouveau et appelons-le Good Mode. Ensuite, pour activer et désactiver le mode Dieu, nous allons utiliser la touche G. Venons ici dans un espace vide. Passons ensuite aux événements, introduisons une touche gagnante, appuyons sur le bloc et vérifions la présence de la touche Gkey. Et ici nous ferons différentes choses selon que le bon mode est actuellement activé ou non Alors d'abord, passons au contrôle et introduisons un bloc si puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le mode Dieu est égal à zéro. Cela signifie que le mode Dieu est actuellement désactivé. Si tel est le cas, nous voulons l'activer en introduisant un ensemble à bloquer et en réglant le bon mode sur un. Sinon, le mode Dieu est actuellement activé Nous le désactiverons dans le reste du jeu en mettant Godmde à zéro En appuyant sur la touche G, nous allons maintenant changer la valeur du mode Dieu de 0 à 1 Nous pouvons maintenant masquer la variable du mode Dieu, et nous voulons uniquement afficher le niveau Cliquez sur Dex et Variables Y lorsque le mode Dieu est activé Pour afficher et masquer les variables dans le code, nous avons ces blocs d'affichage et de masquage de variables. Ajoutons d'abord trois blocs de variables d'affichage à la partie I de ce bloc, et affichons le niveau, cliquez sur Dx et cliquez sur Variables Y. Ajoutons ensuite trois variables de masquage à la partie sorties et masquons les trois mêmes variables. Déplaçons également les écrans variables vers le bas à droite afin qu'ils n'interfèrent pas avec le capot ultérieurement. Désormais, l'activation et la désactivation du mode Dieu afficheront et masqueront également les variables. Très bien, donc lorsque le mode Dieu sera activé, nous autoriserons le joueur à parcourir le niveau sans entrer en collision avec des objets Pour ce faire, examinons le code du sprite du joueur, puis passons au script W I receive Update to Et ici, nous voulons exécuter l'un de ces blocs personnalisés uniquement lorsque le mode Dieu est désactivé. Quand il sera activé, nous ferons les choses un peu différemment. Passons donc d'abord au contrôle et plaçons un bloc if then outs dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le mode Dieu est égal à zéro. Si c'est le cas, nous exécuterons tous ces blocs personnalisés ici comme d'habitude. Cependant, nous voulons définir la focale X et la focale Y indépendamment. Attachons-les donc au bas du bloc I then s, puis déplaçons-les dans les scripts. Passons ensuite à Mblocks et créons-en un nouveau. Appelons cela le mode handle God et Quick O. Ensuite, ajoutez un bloc de mode handle good aux parties outs. Déplaçons maintenant le bloc de définition du mode handle good vers le bas. Dans ce script, nous allons simplement laisser le joueur utiliser les touches de déplacement pour déplacer les sprites Pour ce faire, passons aux variables et introduisons deux variables modifiées par blocs. Utilisons-les pour modifier la variable X et la variable Y. Passons maintenant aux opérateurs et ajoutons un bloc de multiplication à chacune des modifications par blocs. Passons ensuite aux variables, et changeons l'axe X par X multiplié par huit. Et changez l'axe Y par l'axe Y multiplié par huit. Maintenant, si nous lançons le jeu et activons le mode Dieu, nous pouvons nous déplacer dans tout le niveau. Cependant, comme nous passons au costume hip box lorsque nous recevons le message de mise à jour 1 et que nous n'exécutons pas le bloc d'animation en mode Dieu, il reste bloqué sur le costume hipbox Pour résoudre ce problème dans le script Handle God Mode, allons dans Looks et introduisons un bloc de costumes Switch, et passons à Idlzero. C' parti. Et si nous désactivons le mode Dieu, nous retombons au sol et les choses continuent normalement. Cependant, lorsque nous ajouterons un nouvel objet au jeu pour la première fois, nous voudrons vérifier s'il est positionné et fonctionne correctement. Pour ce faire, nous devons redémarrer le jeu en cliquant sur le drapeau vert. Cependant, pour le moment, même en mode Dieu, cela nous ramène au début du niveau. Nous devons donc retourner là où nous étions. De plus, si nous appuyons sur la touche pour passer à un autre niveau et que nous cliquons sur le drapeau vert, nous revenons au niveau 1. Nous ne voulons pas que l'une ou l'autre de ces choses se produise si nous sommes en mode Dieu. Pour résoudre le premier problème, nous pouvons faire en sorte que notre position ne soit pas réinitialisée si nous sommes en mode Dieu. Pour ce faire, passons au script de définition de la position de départ. Et ici, nous pouvons vérifier si le mode Dieu est activé, et si c'est le cas, nous allons simplement arrêter le script. Et je vais vous lancer ce défi. Alors allez-y, mettez la vidéo en pause maintenant et faites en sorte que le script s'arrête si le mode Dieu est activé. Très bien, alors d'abord, allons dans Control et introduisons un bloc I dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le mode Dieu est égal à un. Si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Mettons ensuite tout cela en haut du script de position de départ défini. Maintenant, si nous cliquons sur le drapeau vert en mode Dieu, cela ne réinitialise pas notre position. Cependant, il réinitialise toujours la position de défilement, sorte que l'appareil photo doit faire défiler la page jusqu'à nous. Pour résoudre ce problème, passons au code de fond. Comme pour la position de départ définie pour le joueur, nous ne voulons pas non plus lancer les blocs et définir le défilement de départ ici si le mode Dieu est activé. Encore une fois, introduisons un bloc I dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le mode Dieu est égal à un. Enfin, passons à Control, introduisons un bloc d'arrêt et arrêtons ce script. Mettons-le maintenant en haut du défilement de départ défini et essayons-le. L'excellence. Et si nous désactivons le mode Dieu et que nous cliquons sur le drapeau vert, les positions sont réinitialisées. Ensuite, pour éviter que cela ne nous fasse revenir au niveau 1 lorsque nous sommes en mode Dieu, passons au script du drapeau vert. Ici, nous voulons uniquement définir la variable de niveau sur un si le mode Dieu est désactivé. Pour ce faire, introduisons un bloc if then dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le mode Dieu est égal à zéro. Et maintenant, nous pouvons déplacer le niveau défini d'un bloc ici dans le bloc I then. Mettons en fait le bloc I then en bas du script, juste au-dessus du bloc de niveau de début de diffusion. Si nous lançons maintenant le jeu, changeons de niveau, activons le bon mode et cliquons sur le drapeau vert, cela ne nous renvoie pas au niveau 1. , désactiver le mode Dieu et cliquer sur le drapeau vert Cependant, désactiver le mode Dieu et cliquer sur le drapeau vert nous place au niveau 1. Un problème que nous avons maintenant, c'est que si nous activons le mode Dieu et allons jusqu'au côté droit du niveau, puis que nous passons au niveau quatre. Comme le niveau 4 n'est pas très large, il a essayé de nous placer du côté droit du niveau, sorte que maintenant nous ne pouvons plus voir le sprite du joueur Pour résoudre ce problème, nous voulons en fait réinitialiser les positions chaque fois que nous changeons de niveau. Pour ce faire, nous devons savoir si le niveau a changé ou non. Et pour cela, il va falloir créer une nouvelle variable. Disons que c'est un changement de niveau. Cliquez sur OK et masquez la variable. Chaque fois que nous changeons de niveau, nous diffusons le message du niveau final. Ainsi, dans le script When I receive finish level, nous pouvons introduire un ensemble à bloquer et définir le changement de niveau sur un. Passons maintenant au script When I receive start level. Et ici, juste après le bloc de configuration de diffusion, introduisons un ensemble à bloquer et mettons le changement de niveau à zéro. Donc maintenant, lorsque nous changeons de niveau, la variable de niveau modifié sera une jusqu'à ce que nous ayons exécuté le bloc de défilement de départ défini ici, et que le sprite du joueur ait reçu le message de configuration Dans cet esprit, revenons sur la définition du défilement initial défini. Lorsque le niveau changé est égal à un, nous voulons exécuter tous ces blocs, même si le mode Dieu est activé. Cela n' arrêtera le script que si le mode Dieu est activé et que le niveau modifié est égal à zéro. Et je vais également vous lancer ce défi. OK, alors d'abord, passons aux opérateurs et introduisons un bloc et. Déplaçons le mode Dieu égal à un bloc d'un côté. Et pour l'autre côté, introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le niveau modifié est égal à zéro. Et nous pouvons utiliser tout cela comme condition pour arrêter le script. Nous voulons maintenant faire de même pour définir la position des sprites des joueurs Pour gagner du temps, récupérons le tout, bloquons et copiez-le dans les sprites des joueurs Maintenant, si nous accédons au code Sprite du joueur, nous pouvons utiliser le code copié et le bloc comme condition pour arrêter le script de position de départ défini OK, maintenant, si nous lançons le jeu, cliquer sur le drapeau vert alors que le mode Dieu est activé ne réinitialise pas les positions, mais si nous changeons de niveau, elles seront réinitialisées. Parfait. D'accord, cela peut sembler assez compliqué et inutile, mais croyez-moi, cela va nous rendre la vie beaucoup moins pénible au fur et à mesure que nous ajouterons de plus en plus de choses au jeu, et c'est exactement ce que nous ferons dans la prochaine leçon en ajoutant des pièces à collectionner 91. Ajouter les pièces: Pour ajouter des pièces au jeu, nous utiliserons le spread de pièces ici. Nous placerons les pièces dans chaque niveau, et le joueur devra collecter toutes les pièces d'un niveau pour passer au niveau suivant. Si nous examinons ses costumes, elle possède quatre costumes d'animation, que nous utiliserons pour donner l'impression que la pièce tourne. Il possède également un costume de hit-box, que nous utiliserons pour détecter les collisions avec les sprites des joueurs OK, donc pour commencer à coder les sprites à pièces, passons d'abord au code Sprite de l' environnement Nous pouvons gagner du temps en copiant certains des scripts ici. Copions d'abord le script de tri et de couche dans les sprites à pièces, puis copions le script d'ajustement de position Copions maintenant le script Update 1, le script Update Three, le script When I start as a Clone et le script Green Flag. Pour le script de configuration, nous pouvons tout copier sauf le bloc de génération. Supprimons donc d'abord le bloc de génération à partir d'ici, puis copions le script. Assurez-vous ensuite de réinsérer le bloc de génération avant de changer de bloc de costume. Passons maintenant au code du coin sprite et faisons en sorte que tout soit beau OK, donc dans le script When I start as a clone, au lieu d'utiliser l'environnement Z comme entrée d'ordre Z, utilisons le composant Z. Comme vous vous en souvenez peut-être, nous utiliserons le composant Z pour choses comme les objets de collection et les ennemis Ensuite, dans le script de configuration, nous allons commencer à placer des pièces autour de chaque niveau. Pour ce faire, nous devons d'abord vérifier à quel niveau nous nous trouvons actuellement. Passons donc au contrôle et plaçons un bloc I T dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le niveau est égal à un. Et allons-y, attachons le costume Switch pour faire clignoter Block au bas du bloc I then s, puis attachons le tout au script Pour créer les clones Coin Sprite, allons sur Mblock et créons un nouveau bloc Lors de la création d'un clone, nous devons indiquer sa position mondiale. Tapons donc d'abord create Clone à X deux points et ajoutons une entrée de X. Maintenant, ajoutons une nouvelle étiquette, tapons Y deux points, puis ajoutons une entrée de Y. Cliquez ensuite sur OK Déplaçons maintenant le bloc Crit Clone défini ici. La première chose que nous voulons faire ici est d'accéder à Looks, apporter un bloc de costumes Switch et de le remplacer par Coin Zero, qui est le premier costume de l'animation. Ensuite, nous allons définir les variables X et Y à l'aide des entrées X et Y. Passons donc aux variables, introduisons un ensemble de deux blocs. Réglez X sur l'entrée X et réglez Y sur les entrées Y. Et pour l'instant, allons-y et créons le clone en accédant à Control et en introduisant un bloc Create clone of Myself. OK, maintenant nous pouvons commencer à ajouter des pièces au niveau. Pour ce faire, démarrons le jeu et appuyons sur la touche G pour activer le mode Dieu. Je pense qu'une bonne place pour une pièce de monnaie sera juste au-dessus de la clôture. Je vais donc cliquer ici pour obtenir la position mondiale. Maintenant, dans le script de configuration, je peux accéder aux blocs MI et ajouter un bloc ritlne à la partie I du bloc if the s, et je peux utiliser les valeurs de position cliquées comme valeurs comme En fait, je vais ajuster légèrement les valeurs à moins 193 pour X et 16 pour Y. Et si nous cliquons sur le drapeau vert, nous pouvons voir que la nouvelle pièce a été créée dans la bonne position OK, maintenant, avant de continuer à ajouter d'autres pièces, allons-y et faisons fonctionner l'animation. Nous réaliserons toutes les animations pour les sprites lorsqu'ils recevront le message de mise à jour Passons d'abord aux événements et ajoutons-en un autre. Lorsque je recevrai un bloc, et que nous recevrons Update to pour l'animation, accédons à Mes blocs et créons-en un nouveau. Nous pouvons l'appeler animer et cliquer sur OK. Et allons-y et ajoutons un bloc d'animation au script Update to Maintenant, plaçons le bloc d'animation défini dans un espace vide. Comme pour les sprites des joueurs, animer les sprites à pièces, il faudra suivre l'image d'animation actuelle Passons donc d'abord aux variables et créons-en une nouvelle. Appelons ça un cadre anim et faisons-le uniquement pour ce sprite Et cachons la variable. Lorsque nous créons un nouveau clone, nous voulons commencer son image d'animation à zéro. Ainsi, dans le script create Clone, avant de créer le clone, introduisons un ensemble à bloquer et mettons nom frame à zéro. Maintenant, revenons à define animate, nous voulons d'abord passer au bon costume en utilisant la valeur de l'image anim. Passons donc à Looks et apportons un bloc de costumes Switch. Les noms des costumes de l'animation commencent par le mot pièce, suivi d'un chiffre de 0 à 3 Donc, pour obtenir le nom correct du costume, allons voir les opérateurs et leur apporter un bloc joint. Utilisons le mot pièce pour la première entrée, et pour la seconde, introduisons d'abord un abdos de bloc et utilisons la fonction sol. Passons ensuite aux variables et ajoutons un bloc nom frame au sol du bloc. Comme nous l'avons déjà appris, la fonction floor coupe la partie décimale d'une valeur Ensuite, nous devons augmenter légèrement la valeur du cadre tom. Pour ce faire, introduisons un bloc de cadre Change Tom. Et modifions-le de 0,15. Enfin, nous devons veiller à ce que le plancher du cadre nominal soit cyclique de 0 à 3 Pour ce faire, introduisons d'abord un bloc de cadre Set Tom. Passons ensuite aux opérateurs et ajoutons un bloc mod au bloc set two. Revenons maintenant aux variables, et définissons num frame sur nom frame mod four. OK, et il y a encore une chose que nous devons faire avant d'essayer. À chaque itération de la boucle de jeu, chaque sprite recevra le message de mise à jour, y compris les sprites à pièces originaux Cela signifie que le costume original de sprites animera également Mais nous ne voulons pas que cela se produise, car nous utilisons le costume vierge pour identifier les sprites originaux Par conséquent, nous ne devons exécuter le bloc d'animation que si le sprite actuel est un clone et non les sprites d'origine Nous pouvons le faire en vérifiant d'abord si le costume n'est pas le costume vierge avant de lancer le bloc animé. Pour ce faire, dupliquons si ce n'est pas le cas, le nom du costume est égal bloc vide dans le script de configuration et éliminons tous ces blocs supplémentaires, y compris le bloc de suppression de ce clone. Enroulons-le ensuite autour du bloc animé. Désormais, seuls les clones s'animeront. Très bien, essayons-le. Génial Nous avons maintenant une pièce qui tourne. OK, donc ce que nous pouvons faire maintenant, c'est parcourir les niveaux et ajouter quelques pièces supplémentaires, et nous n'ajouterons des pièces qu'aux niveaux un, deux et trois. Le niveau quatre étant le dernier niveau, il ne nécessite aucune pièce. Donc, tout d'abord, dans le script de configuration, nous devrons ajouter d'autres contrôles de niveau. Pour ce faire, passons au contrôle et ajoutons un bloc I think s à la partie t de celui-ci. Pour la condition, utilisons une copie du niveau égal à un bloc ici. Mais cette fois, vérifiez si le niveau est égal à deux. Maintenant, prenons un bloc I thin et ajoutons-le à la partie S du bas I thin s. Et encore une fois, dupliquons l'un des niveaux égaux aux blocs et vérifions si le niveau est égal à trois. Maintenant, nous pouvons parcourir tous les niveaux et créer les clones. Cela va prendre un certain temps, je vais donc passer en revue. Ensuite, je vais vous montrer tous les blocs que j'utilise pour créer tous les clones. OK, voici donc tous les blocs de création de clones que j'utilise pour les trois niveaux. Il y en a pas mal. Donc, si vous souhaitez utiliser les mêmes positions de pièces dans votre jeu, je vous ai fourni exactement ce Sprite sous forme ressource téléchargeable appelée coin point Sprite three Après avoir téléchargé le fichier sur votre ordinateur, vous devez d'abord supprimer le coin sprite actuel de votre projet Ensuite, vous pouvez cliquer sur le bouton Choisir un sprite, choisir Télécharger un sprite et télécharger le nouveau C'est bon. Maintenant que toutes les pièces ont été ajoutées aux niveaux, nous allons maintenant laisser le joueur les récupérer. 92. Collecter les pièces: Pour permettre au joueur de collecter les pièces dans un niveau, nous devons savoir combien de pièces il reste dans le niveau en cours. Pour cela, passons aux variables et créons-en une nouvelle. Appelons ça des pièces et faisons-en un pour tous les sprites. Plus tard, nous créerons un joli affichage du compteur de pièces, mais pour le moment, nous utiliserons l'affichage variable par défaut. Bien, donc au début de chaque niveau, avant que les clones de pièces ne soient créés, nous voulons remettre le compteur de pièces à zéro Pour ce faire, passons au code de la toile de fond. Dans le script du niveau de départ, avant de diffuser le message de configuration, introduisons un ensemble à bloquer et mettons les pièces à zéro. Ensuite, chaque fois que nous créerons un clone de coin sprite, nous augmenterons le compteur de pièces d'une unité Pour cela, revenons au code du coin sprite. Dans le script CrakKLne, introduisons une modification par bloc et changeons les pièces une par Si nous lançons le jeu maintenant, nous pouvons voir que le compteur de pièces nous indique le nombre total de pièces dans chaque niveau. OK, il ne nous reste plus qu'à faire sorte que le joueur puisse réellement collecter les pièces. Pour ce faire, nous allons temporairement remplacer le costume à pièces le costume Hip Box et vérifier s'il touche le sprite du joueur Et nous voulons effectuer cette vérification lorsque le sprite du joueur utilise également son costume Hipbox. Si nous examinons très rapidement le code du sprite du joueur, nous passons au costume Hip Box dans le script Update One lorsque je reçois la mise à jour 1 Et comme le sprite du joueur a un ordre Z plus élevé que celui des clones de sprites à pièces, le sprite du joueur recevra la mise à jour un message avant Par conséquent, pour en revenir au code du sprite, lorsqu'une pièce reçoit le message de mise à jour, le joueur utilise son costume Hip Box En d'autres termes, ce serait le meilleur endroit pour vérifier si les sprites se touchent Très bien, pour ce faire, allons d'abord dans Mes blocs et créons-en un nouveau. Appelons ça « check touch player ». Et cliquez sur OK. Et comme nous allons changer de costume, nous ne voulons le faire que si le sprite est un clone, comme dans le cas du bloc d' animation ici. Donc, d'abord, nous pouvons dupliquer le nom du costume, sinon le nom est égal bloc vide ici et l'ajouter à un bloc vide ici et l'ajouter en haut du script Update one, puis remplacer le bloc d'animation par une case touchant le bloc joueur. Et nous voulons en fait ajuster la position des sprites sur la scène avant la détection de la collision Prenons donc le bloc de réglage de la position ici et plaçons-le au-dessus du bloc du joueur à cocher touchant. Comme le sprite original ne sera jamais visible sur scène, peu importe si nous ajustons sa position ou non Bien, travaillons maintenant sur le script Check Touching Player. Tout d'abord, nous voulons passer au costume hip box. Passons donc à Looks, apportons un bloc de costumes Switch et passons à la Hit Box. Ensuite, nous allons vérifier si la pièce touche le sprite du joueur Pour ce faire, passons d'abord au contrôle et introduisons un bloc if then. Et pour ce qui est de la condition, passons à la détection, introduisons un bloc tactile pour vérifier si nous touchons un joueur. Si nous touchons le joueur, il y a plusieurs choses que nous devons faire. Tout d'abord, nous allons réduire le compteur de pièces d'une unité. Passons donc aux variables, introduisons un changement par bloc et changeons les pièces par moins un. Et maintenant, nous devons retirer la pièce du jeu. Pour ce faire, nous pouvons supprimer le clone en accédant à Control et en introduisant la commande Supprimer ce bloc de clone. Avant de supprimer le clone, nous devons toutefois supprimer son article de la liste des commandes Z. Sinon, si nous ajoutions plus tard d'autres objets à un niveau pendant le jeu, cela poserait des problèmes lors du tri des couches. OK, donc pour supprimer la pièce de la liste des commandes Z, il peut sembler au début que nous puissions simplement supprimer l'article qui a le même indice que le même indice que la variable d'indice de couche que nous utilisons dans le script de la couche de tri. Cependant, une fois que les autres sprites auront été triés dans les couches, la valeur de l'indice de couche ne sera plus précise Heureusement, il existe une solution simple. Comme nous utilisons les mêmes ordres Z pour plusieurs sprites, dans ce cas, composant Z, il nous suffit supprimer l'un des éléments du composant Z de la liste En effet, lorsque nous supprimons un clone à zéro, tous les sprites des couches situées en dessous avancent d'une couche Cela se produit également lorsque nous supprimons un élément d' une liste de variables. Tous les éléments situés en dessous sont déplacés vers haut pour remplir l'espace vide. Ainsi, tant que nous supprimons l'un des éléments du composant Z de la liste, la liste coïncidera avec les couches à gratter. OK, donc revenons à la case en touchant le joueur pour supprimer un élément du composant Z de la liste Passons d'abord aux variables, un bloc Supprimer l'un des Z Orders et placez-le juste au-dessus du bloc de suppression de ce bloc clone. Pour la saisie de l'index, introduisons un numéro d'article du bloc Z Orders. Enfin, utilisons un bloc de composant Z comme entrée d'élément. Cela permet de parcourir la liste, trouver l'index du premier élément correspondant à la valeur du composant Z, puis de supprimer cet élément de la liste. Et juste pour que nous puissions voir si tout fonctionne correctement, affichons la liste des commandes Z et passons au script de configuration. Pour le niveau 1, retirons tous les blocs de clones, sauf les trois meilleurs critiques. Maintenant lançons le jeu. Pour le moment, le compteur de pièces en indique trois, et nous avons trois moins deux dans la liste Si nous touchons maintenant une pièce, elle disparaît. Le compteur de pièces baisse d'un, et les deux négatifs sont supprimés de la liste. Génial. Très bien, nous pouvons nouveau masquer la liste et ajouter les blocs de clonage critiques au script. Maintenant que le joueur peut récupérer les pièces, nous allons le laisser quitter un niveau une fois qu'il aura collecté toutes les pièces pour ce niveau. 93. Quitter un niveau: Une fois que le joueur aura collecté toutes les pièces du niveau actuel, nous activerons les sorties de niveau Si le joueur se dirige ensuite vers les sorties, il passera au niveau suivant Pour les sorties de niveau, nous allons utiliser les sorties ici Voyons d'abord ses costumes. Pour les niveaux 1 et 2, nous utiliserons un drapeau d'une couleur aléatoire comme sorties Et pour le niveau 3, nous utiliserons une porte pour entrer dans le château du boss niveau 4 étant le dernier niveau, il n'est pas nécessaire de sortir, car vaincre le boss terminera automatiquement la partie Lorsqu'une sortie de drapeau n'est pas active, nous utilisons son costume en duvet. Et lorsque le joueur aura collecté toutes les pièces du niveau, nous activerons la sortie et jouerons une animation en utilisant les costumes en place De même, pour la porte, nous utiliserons le costume de porte fermée lorsqu'elle est inactive et le costume de porte ouverte lorsqu'elle est active. OK, donc pour commencer, entrons d'abord dans le code du coin sprite et copions quelques scripts dans le sprite de sortie Et nous pouvons effectivement copier tous les scripts, en veillant à copier d'abord les scripts définis. Nous pouvons maintenant accéder au code Exit Sprite et nettoyer un peu les scripts , dans le script de configuration, les positions des clones de sortie ne seront Bien entendu, dans le script de configuration, les positions des clones de sortie ne seront pas les mêmes que celles des clones de pièces Débarrassons-nous donc de tous les blocs-crayons. Et avant de déterminer où placer les issues, passons d'abord au script de création de clones Le Sprite de sortie n'a pas de costume à pièce zéro, alors débarrassons-nous du bloc de costumes Switch. Nous ne voulons pas non plus modifier la variable des pièces, alors débarrassons-nous également de ce bloc. D'accord, et lors de la création d'un clone de Sprite de sortie, nous devrons également saisir un type pour le clone, qui sera soit drapeau, soit porte Cela signifie que nous devrons ajouter une autre entrée au script de création de clones. Faisons donc un clic droit sur le bloc défini et choisissons Modifier. Ajoutons d'abord une nouvelle étiquette avec deux points de type point-virgule. Ajoutons ensuite une nouvelle entrée appelée Type et cliquez sur OK. Nous devons maintenant créer une variable pour stocker le type d'un clone. Passons donc aux variables, créons une variable appelée type et faisons-la uniquement pour ce sprite Une autre variable dont nous aurons besoin pour chaque clone est une variable pour stocker son état, qui sera soit inactif, soit actif. Allons-y et créons une autre variable, que nous pouvons appeler state et la créer pour ce sprite uniquement Et nous n'avons pas besoin de montrer les variables. Maintenant, dans le script Create Clone, avant de créer le clone, introduisons deux blocs pour définir. Nous allons définir la variable type sur l'entrée type et définir l'état sur inactif pour le moment. Ensuite, nous devons utiliser le type pour déterminer le costume à adopter. Pour cela, passons au contrôle et plaçons un bloc if the s dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Vérifions ensuite si l'entrée de type est égale à flag. Passons maintenant à Looks et ajoutons un bloc de costumes Switch à la fois aux parties I et outs. J'ai mentionné plus tôt que si le type de sortie est drapeau, nous choisirons au hasard l'un des costumes avec drapeau. Mais pour l'instant, allons-y avec le drapeau bleu en baisse de zéro. Et comme il ne s'agira que d'un drapeau ou d'une porte, nous pouvons simplement passer à la porte fermée à zéro pour les pièces extérieures. OK, ajoutons-le maintenant au script Krik Clone avant le bloc Cra Clone of Myself. Et pour l'instant, détachons tous les blocs du script Check Touching Player et du script d'animation. Nous y travaillerons un peu plus tard. Mais d'abord, allons-y et ajoutons les sorties aux niveaux Pour le niveau 1, allons jusqu' en bas à droite. Nous voulons que la sortie apparaisse comme si elle venait du haut au centre de la case située ici. Et comme les costumes sont centrés, nous devons les positionner un peu en hauteur ici. Cliquons donc ici pour obtenir le poste. Nous pouvons maintenant passer au script de configuration. Ajoutez un bloc de clonage critique pour le niveau 1 et utilisez les valeurs de position cliquées Et pour la saisie du type, nous voulons utiliser le mot drapeau. Ensuite, tout en étant toujours en mode Dieu, nous pouvons cliquer sur le drapeau vert pour voir s'il est correctement positionné. Pour moi, cependant, rien ne se passe, et c'est parce que j'ai oublié de copier le script when I start en tant que clone à partir du coin sprite. Je vais le faire maintenant. Si je clique à nouveau sur le drapeau vert, j'ai maintenant un clone de sprite de sortie ici Le poste est cependant un peu décalé, et heureusement pour vous, j'ai déjà eu la peine de trouver un bon poste. Alors allons-y avec 1593 pour X et quatre pour Y. parti. OK, maintenant appuyons sur la touche pour passer au niveau deux. Pour celui-ci, nous voulons aller jusqu'en haut à droite. Et encore une fois, nous voulons le positionner au centre de la boîte ici. Nous pouvons maintenant ajouter un bloc CrakKline pour le niveau deux. Et allons-y avec 2078 pour X, sept, deux, trois pour Y et flag pour le type Enfin, passons au niveau trois et passons en bas à droite. Pour celui-ci, nous allons placer une porte sur le château, ce qui donnera l'impression que le joueur entre dans le château. Pour créer la porte, ajoutons un bloc crakclone à la partie vide des sorties ici Et utilisons 2050 pour X, 19 pour Y et door pour le type. Et assurons-nous qu'il utilise réellement le costume à porte fermée. Génial. Bien, maintenant, au lieu de toujours utiliser le drapeau bleu pour les niveaux 1 et 2, nous allons choisir au hasard le drapeau bleu, le drapeau vert, le drapeau orange ou le drapeau jaune Pour ce faire, nous pourrions obtenir un nombre aléatoire de 1 à 4. Utilisez ensuite un tas de blocs if then pour choisir une couleur en fonction du nombre aléatoire. Cependant, une méthode plus simple et plus propre serait de stocker les quatre couleurs dans une liste variable, puis de choisir un élément aléatoire dans la liste. OK, donc pour cela, passons aux variables et créons une nouvelle liste. Appelons cela des couleurs, et seul le sprite de sortie aura besoin d'utiliser la liste, nous ne pouvons donc la créer que pour ce sprite Passons maintenant au script du drapeau vert. Et ici, nous allons ajouter les quatre couleurs à la liste. Mais d'abord, nous voulons nous assurer que la liste est vide en introduisant un bloc Supprimer toutes les couleurs. Ensuite, introduisons quatre blocs de couleurs ADT. Maintenant, ajoutons le bleu, le vert, l'orange et le jaune. Si nous cliquons maintenant sur le drapeau vert, nous pouvons voir que les couleurs ont été ajoutées à la liste. OK, nous pouvons masquer la liste maintenant, et passons au script Crick Clone Tout d'abord, nous avons besoin d'une variable pour stocker la couleur d'un clone. Créons-en donc un nouveau. Appelons ça couleur. Faites-le uniquement pour ce sprite et masquez la variable. Maintenant, comme la variable de couleur ne s'applique qu'aux drapeaux, nous n'avons besoin de la définir que si le type est égal à drapeau. Prenons donc un ensemble à bloquer, ajoutons-le en haut de la partie I du bloc I thin outs et définissons la variable de couleur. Nous voulons le définir sur un élément aléatoire de la liste des couleurs. Commençons donc par apporter un élément d'un bloc de couleurs. Ensuite, pour la saisie du numéro d'article, passons aux opérateurs, introduisons un bloc aléatoire et choisissons un chiffre de 1 à 4. Nous pouvons maintenant utiliser la variable de couleur lorsque nous passons à un costume avec drapeau. Pour ce faire, nous pouvons utiliser la couleur suivie d'un trait de soulignement souligné de zéro. Ajoutons donc d'abord un bloc joint au bloc de costumes Switch. Passons maintenant aux variables. Utilisez un bloc de couleur comme première entrée, et pour la deuxième entrée, saisissons le drapeau de soulignement vers le bas de zéro OK. Si nous cliquons sur le drapeau vert, niveau trois utilise toujours une porte, ce qui est une bonne chose. Mais maintenant, si nous passons au niveau 1 et que nous passons à la sortie, chaque fois que nous cliquons sur le drapeau vert, une couleur aléatoire sera choisie pour la sortie. Cela devrait également se produire pour le niveau deux. Génial. À l'heure actuelle, nous devons activer la sortie d'un niveau chaque fois que le joueur collecte toutes les pièces du niveau. Pour cela, passons au script When I receive Update to. Dans le bloc ITN, avant l'animation, nous gérerons toutes les actions que le sprite doit effectuer et nous le ferons à l'aide d'un Passons à Mblocks et créons-en un nouveau. Appelons-le gérer les actions. Cliquez sur OK et placez un bloc d'actions de gestion avant le bloc d'animation Déplaçons maintenant le bloc d'actions de manipulation défini vers un espace vide. Et ici, nous déciderons d'activer ou non la sortie. Nous voulons activer une sortie si elle est actuellement inactive et qu' il ne reste aucune pièce dans le niveau. Donc, pour vérifier cela, passons d'abord au contrôle et introduisons un bloc if then. Pour ce qui est de la condition, allons voir les opérateurs, introduisons un et bloquons. Utilisez ensuite un bloc égal pour chaque côté. Passons maintenant aux variables et vérifions si l'état est égal à inactif et si les pièces sont égales à zéro. Si tel est le cas, introduisons un ensemble à bloquer et définissons l'état sur actif. Passons également à un costume actif approprié pour la sortie. Cela sera différent selon le type de sortie, bien entendu. Passons donc d'abord au contrôle et ajoutons un bloc if then outs juste après le bloc d'état défini. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le type est égal à drapeau. Passons maintenant à Looks, et ajoutons un bloc de costume à chaque pièce. Car le drapeau utilisera sa variable de couleur pour passer au costume correct jusqu'à zéro. Pour ce faire, passons aux opérateurs et ajoutons un bloc joint au bloc de costumes Switch. Passons ensuite aux variables, et joignons la variable de couleur avec un trait de soulignement jusqu'à zéro Et pour la porte, on peut simplement passer à la porte ouverte zéro. OK ? Ainsi, une fois qu'une sortie est active, si le joueur touche ensuite la sortie, nous passerons au niveau suivant. Pour cela, passons au script Check Touching Player. Le Sprite de sortie n'a pas de costume de hit box, alors débarrassons-nous du bloc de costumes Switch. Nous n'avons pas non plus besoin de supprimer le clone ou de gérer la liste des commandes Z, car cela se produira automatiquement lorsque nous passerons au niveau suivant, et nous ne voulons pas non plus modifier la variable pièces Nous pouvons donc nous débarrasser de tous ces blocs à l'intérieur du bloc I then, et nous pouvons associer le bloc I then aux scripts. Pour ce qui est de la condition, nous ne voulons passer au niveau suivant que si nous ne voulons passer au niveau suivant que si le sprite touche le sprite du joueur et qu'il est actuellement dans l'état actif Passons donc aux opérateurs, introduisons un bloc A, déplaçons le bloc du joueur en contact d'un côté du bloc et utilisons le bloc A comme condition. Pour l'autre côté, nous pouvons utiliser une copie de l'état = bloc inactif ici. Mais maintenant, nous voulons vérifier si l'état est égal à actif. Si tout cela est vrai, nous pouvons passer au niveau suivant en accédant aux événements, en introduisant un bloc de diffusion et en diffusant le message du niveau final. Il est maintenant possible que ce bloc s'exécute à nouveau avant la toile de fond ne reçoive le message du niveau terminé et ne passe au niveau suivant. Donc, pour nous assurer de ne pas diffuser le message plusieurs fois, nous devons également désactiver la sortie Pour ce faire, passons aux variables, introduisons un ensemble à bloquer et remettons l'état sur inactif. Maintenant allons-y et faisons-le. Donc, si la sortie est un drapeau, il s'animera entre ses deux costumes Pour cela, bien sûr, nous devons passer au script d'animation. Nous ne voulons animer que si la sortie est un drapeau et qu'elle est actuellement à l'état actif Passons donc d'abord au contrôle et enroulons un bloc ITN autour de tous ces blocs ici Ajoutez ensuite le tout au script. Pour la condition, passons aux opérateurs, introduisons un bloc et, puis mettons un bloc égal de chaque côté. Passons maintenant aux variables et vérifions si le type est égal à flag et l'état est égal à actif. Ensuite, pour le bloc de costume Switch, revenons aux opérateurs et utilisons un autre bloc de jointure comme première entrée du bloc actuel. Passons maintenant aux variables et pour obtenir le costume actuel, nous voulons joindre la variable de couleur avec le drapeau souligné vers le haut, puis le sol d'un cadre anim Une vitesse d'animation de 0,15 devrait être bonne. Mais l'animation ne comporte que deux images. Modifions donc un cadre animé avec deux. Très bien, pour qu'il soit plus facile de tout tester, passons au code du coin sprite Et dans le script de configuration, supprimons tous les blocs Create Clone pour le niveau 1 et utilisons uniquement le dernier en bas. Et en fait, faisons-le pour tous les niveaux, supprimant tous les blocs de clonage de la caisse et en n'utilisant que celui du bas. Ces pièces seront placées assez près des sorties. Commençons maintenant le jeu. Pour le moment, la sortie utilise toujours son costume inactif, et si on le touche, rien ne se passe car il nous reste encore une pièce dans le niveau. Mais si nous récupérons la pièce, la sortie passe à l'animation agitée, s'il s'agit d'un drapeau, et si nous touchons maintenant la sortie, nous passons au niveau suivant. Excellente. Assurons-nous que la porte du niveau 3 s'ouvre également. Cool. Bien, maintenant, toujours dans le code coin sprite, créons uniquement la première pièce pour chaque niveau Si nous commençons le jeu et passons au niveau 1, une fois que nous avons récupéré la pièce, la sortie devient active, mais le joueur n'a aucun moyen de le savoir avant de passer par les sorties Pour une meilleure expérience, en particulier pour les nouveaux joueurs, nous devons informer le joueur que la sortie est devenue active. Pour ce faire, nous pouvons geler le jeu, faire défiler la caméra jusqu'à la sortie, l' activer, puis revenir au joueur et reprendre le jeu. Nous y travaillerons dans la prochaine leçon. 94. Mettre en œuvre le défilement automatique: Pour faire défiler temporairement la caméra jusqu'à la sortie du niveau lorsqu'elle est activée pour la première fois, nous devons essentiellement suspendre le reste du jeu. Sinon, le joueur pourrait être tué par un ennemi ou quelque chose comme ça alors qu'il est hors écran. Pour ce faire, nous devons suivre l' état actuel du jeu. Pour commencer, créons une nouvelle variable. Appelons cela l'état du jeu et faisons-le pour tous les sprites. L'état du jeu influe sur ce qui se passe pendant la boucle de jeu. Passons donc au script When I receive start level dans le code de fond. Avant que la boucle de jeu ne commence, introduisons un set à bloquer. Et réglons l' état du jeu sur Exécution. Ce sera l' état normal du jeu. chaque itération de la boucle de jeu, nous voulons uniquement diffuser tous ces messages si le jeu est en cours d'exécution. Nous ferons des choses différentes pour les autres États. Passons donc d'abord à Control, un bloc ITN et enroulons la partie I autour de tous les blocs de diffusion Maintenant, prenons un bloc mince en I et mettons-le à l'intérieur de la partie extérieure. Nous utiliserons celui-ci lorsque le jeu sera en mode de défilement automatique, ce qui sera le cas lorsque la caméra défile automatiquement vers les sorties OK, donc pour les deux conditions, passons aux opérateurs et introduisons quelques blocs égaux. Passons ensuite aux variables et pour le bloc I thin s, vérifions si l' état du jeu est égal à courir. Pour le bloc ITN, vérifions si l'état du jeu est égal à Auto Dash Scroll Tout ce que nous voulons faire dans l'état Autoscroll, c'est faire défiler la caméra Comme cela se produit lorsque nous recevons le message de mise à jour 3, le seul message que nous voulons diffuser ici est le message de mise à jour 3. Utilisons donc une copie des trois blocs de mise à jour de diffusion ici. OK, passons maintenant au code Sprite de sortie. Dans le script d'action Handle, avant d'activer la sortie, nous voulons passer à l'état du jeu à défilement automatique. Ajoutons donc un set à bloquer juste en haut du I puis bloquons ici et réglons l' état du jeu sur Auto Dash Scroll. Cela gèlera tout sauf le défilement. Ensuite, nous allons faire défiler la caméra jusqu'à la sortie, activer la sortie, puis revenir au joueur et reprendre le jeu. Pour faire défiler l'appareil photo vers une position particulière, il suffit de régler le point focal de l'appareil photo sur cette position. Et comme nous allons le faire plusieurs fois dans ce sprite, ainsi que dans d'autres sprites, allons sur My Blocks et créditons Custom Block pour abord, tapez scrolling jusqu'à X deux-points, ajoutons une entrée X, ajoutons une étiquette composée de deux points Y, puis une entrée Y et cliquez sur OK. Et allons-y et ajoutons un scroll to block au script d'action Handle juste après le blocage de l'état du jeu défini. La position vers laquelle nous voulons faire défiler la page est la position mondiale de la sortie. Passons donc aux variables et utilisons blocs de variables X et Y comme entrées. Déplaçons maintenant le bloc de défilement défini dans un espace vide. Et ici, nous allons régler le point focal de l'appareil photo à l'aide des entrées X et Y. Pour ce faire, introduisons deux ensembles de deux blocs. Réglez ensuite la focale x sur l'entrée X et la focale Y sur les entrées Y. Cependant, nous devons maintenant empêcher le script d' action Handle d' exécuter ses blocs restants jusqu'à ce que la caméra ait fini de défiler vers les sorties Pour ce faire, nous pouvons forcer le script Scroll to à s'exécuter en continu jusqu'à ce que la caméra se soit installée sur la partie du niveau qui contient les sorties À ce stade, la position des sorties se situera moitié de la largeur de la scène et moitié de la hauteur de la scène par rapport à la position de défilement OK, donc pour forcer le script de défilement à s'exécuter en continu, allons dans Control et ajoutons un bloc permanent en bas du script. Maintenant, ajoutons un bloc I then au bloc pour toujours. Ajoutez ensuite un autre bloc I Thin à l'intérieur de celui-ci. Pour le premier bloc I Thin, nous allons vérifier si la distance entre l' entrée X et le scroll x est inférieure à la moitié de la largeur de la scène. Commençons donc par nous adresser aux opérateurs et en introduisant un bloc inférieur à 1. Pour obtenir la distance, il suffit de prendre l' entrée X, qui dans ce cas, sera l'exposition universelle de la sortie, et de la soustraire du scroll X. Et nous voulons que la distance soit un nombre positif, donc nous en obtiendrons la valeur absolue OK, donc prenons un bloc Abs et plaçons-le sur le côté gauche du bloc inférieur à. Mettons ensuite un bloc de soustraction dans le bloc Absv. Passons maintenant aux variables et vérifions si la valeur absolue du scroll x moins l'entrée X est inférieure à 240 ou à la moitié de la largeur de la scène. Pour l'entier du bloc, nous voulons effectuer une vérification similaire avant les valeurs Y. Utilisons donc d'abord une copie du bloc inférieur à ici. Voyons ensuite si la valeur absolue du scroll Y moins l'entrée Y est inférieure à 180 ou à la moitié de la hauteur de la scène. C'est bon. Et si ces deux conditions sont vraies, nous pouvons passer au contrôle, introduire un bloc d'arrêt et arrêter ce script. Cela arrêtera l'exécution du bloc permanent, ce qui permettra au script d'action Handle de continuer à exécuter les blocs restants. Il est également important de ne pas cocher l'option Exécuter sans rafraîchissement de l'écran pour le script de défilement. Si nous le vérifiions, cela bloquerait en fait toute la boucle du jeu et aucun défilement ne se OK, donc dans les actions de gestion, après avoir fait défiler la page jusqu'à la sortie, nous voulons activer la sortie et passer à son costume activé Ensuite, nous voulons revenir au sprite du joueur et continuer à exécuter le jeu normalement Pour accéder au joueur, allons dans MI Blocks et plaçons un parchemin à bloc en dessous de tous les autres blocs, en veillant à ce qu'il soit toujours à l'intérieur du bloc if then. Passons maintenant à la détection et utilisons un numéro de fond de bloc de scène pour chaque entrée. Au lieu du stage, nous voulons utiliser le sprite du joueur. Et pour le premier, au lieu de la position, nous voulons choisir X du joueur, qui est la variable X des sprites du joueur De même, pour le second, choisissons Y du joueur. Passons ensuite aux variables, introduisons un ensemble à bloquer et définissons l'état du jeu en cours d'exécution. Bien, désactivons le mode Dieu s'il est toujours activé, puis lançons le jeu. Si nous récupérons maintenant la pièce, elle défile vers la sortie, puis revient au joueur, mais cela se produit si vite que nous ne pouvons pas vraiment savoir ce qui se passe. Pour résoudre ce problème, nous pouvons ajouter des pauses entre les événements et le script d'action Handle. Pour ce faire, passons au contrôle et nous utiliserons des blocs de poids. Plantons-en un juste avant le premier scroll à bloquer et un autre juste après. Pour le premier, attendons 0,2 seconde et 0,5 seconde pour le second. Maintenant, ajoutons une attente pour bloquer avant et après l' autre défilement pour bloquer. Et attendons 0,5 seconde pour chacune d'entre elles. Et essayons-le. Bien mieux. Nous pouvons maintenant voir la sortie devenir active avant qu'elle ne revienne au joueur Très bien, nous pouvons donc accéder aux variables et masquer la variable d'état du jeu maintenant. Ensuite, au lieu de passer immédiatement au niveau suivant lorsque nous franchirons une sortie, nous passerons d'un niveau à l'autre en faisant d'abord passer l' écran au noir, puis en passant au niveau en faisant d'abord passer l' écran au noir, suivant 95. Créer une transition d'écran: Pour faire passer la scène au noir pendant les transitions d'écran, nous allons utiliser le sprite Blackout ici Le seul costume du Blackout Sprite est un grand carré noir qui couvre toute la surface de scène du Canvas Bien, pour commencer à coder le sprite blackout, examinons d'abord le code de l'un des autres sprites sur lesquels nous avons travaillé jusqu'à présent, puis copions le script de tri et de couche dans le script de tri et de couche dans le Passons ensuite au code Blackout Sprite. Comme le sprite Blackout n'a pas de costume vierge, nous voulons nous assurer de le masquer au début du jeu Passons donc aux événements et remportons un bloc sur lequel vous avez cliqué sur le drapeau vert Accédez ensuite à Looks et insérez un bloc de masquage. Ensuite, nous devons trier le sprite dans les couches lorsqu'il reçoit le message de configuration Revenons donc aux événements, introduisons un bloc W I receive et configurons la réception. Passons maintenant aux blocs M, introduisons un bloc de tri dans les couches, puis passons aux variables, et nous utiliserons la superposition Z pour les entrées d'ordre Z. overlay Z a l'ordre Z le plus élevé, il placera donc le sprite au-dessus de tout OK, maintenant, pour faire passer l'écran au noir, nous le ferons chaque fois que le sprite recevra le message qui passe au noir Revenons donc aux événements, ajoutons-en un autre lorsque je recevrai un bloc. Et nous allons recevoir un nouveau message intitulé Fade to Black. Et ici, nous voulons d'abord montrer le sprite. Passons donc à Looks et ajoutons un bloc d'affichage. Nous voulons ensuite faire passer le sprite de totalement transparent à totalement opaque sur une dizaine d'images Pour ce faire, introduisons d'abord un effet défini pour bloquer et définissons l'effet fantôme sur 100. Passons maintenant au contrôle, introduisons un bloc de dix répétitions, puis revenons à Looks et ajoutons un effet de changement par bloc au bloc de répétition. Modifions l' effet fantôme par moins dix. Ensuite, pour que le sprite redevienne transparent, nous faisons essentiellement le contraire du code fondu vers le noir Et nous le ferons lorsque le sprite recevra le message « fondu Nous utiliserons Fade In car cela donnera l'impression que le jeu s' estompait dans le niveau D'accord ? Donc, d'abord, dupliquons le script «   Quand je reçois FadeTo Black », et recevons un nouveau message appelé fade in Cela se produira une fois passé au noir, le sprite devrait donc déjà apparaître Par conséquent, nous n'avons pas besoin d' utiliser un bloc d'affichage pour celui-ci. Pour le bloc d'effet fantôme défini, mettons-le à zéro pour qu'il soit entièrement visible. Cela devrait déjà être le cas fois que le sprite est passé au noir, mais cela ne fait pas de mal, c'est sûr Dans le bloc de répétition, nous voulons modifier l'effet fantôme de dix, cette fois. Enfin, après le bloc de répétition, introduisons un bloc de masquage. Et c'est ce qui devrait être le cas. Maintenant, utilisons réellement ces scripts. Pour ce faire, passons au code de la toile de fond. Nous voulons faire passer l'écran au noir au début de chaque niveau. Donc, en haut du script de début, passons aux événements, introduisons un bloc de diffusion et diffusons un fondu vers le noir. Maintenant, nous voulons également donner au sprite blackout suffisamment de temps pour terminer son animation avant de continuer à son animation avant de continuer configurer les choses et de démarrer la boucle de jeu Passons donc à Control et ajoutons un bloc d'attente d'une seconde juste après la diffusion de Fade to Black. Et attendons également 1 seconde avant de diffuser le message. Ensuite, après avoir configuré tous les sprites et avant de démarrer la boucle de jeu, nous voulons revenir en mode fondu Passons donc aux événements, ajoutons un bloc de diffusion juste après le bloc de configuration de diffusion, et la diffusion s'estompe. Et nous devrons également faire une pause pour cela. Passons donc au contrôle. Ajoutez un bloc d'attente une fois que la diffusion s'estompe en bloc, et une pondération de 0,5 seconde devrait être suffisante. Bien, si nous lançons le jeu maintenant, nous pouvons toujours voir le sprite du joueur alors que l'écran passe au noir. La raison en est que les couches ne sont pas triées tant que nous n'avons pas diffusé le message de configuration. Cela signifie que le sprite blackout n'avait pas encore été introduit couche avant lorsque nous avons diffusé le message « fondu vers le noir » pour la première fois diffusé le message « fondu vers le noir » pour la Pour résoudre ce problème, passons au code Blackout Sprite. Dans le script Faye to Black, pour nous assurer que le sprite se trouve en première couche avant de noircir l'écran, nous pouvons accéder à Looks et ajouter un bloc d'accès à la couche avant en haut des Maintenant, il devrait également couvrir le sprite du joueur. Sympa. Ce qui est un peu embêtant, c' est qu'une fois réapparu, le sprite du joueur démarre brièvement dans le costume d'Idle Zero avant de tomber par terre Nous ne voulons commencer dans le costume d'Idle Zero que si Godme est activé Sinon, nous devrions commencer par le costume d'automne zéro. Pour ce faire, passons au code des sprites du joueur. Au bas du script de configuration, passons au contrôle et ajoutons un bloc I then outs. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le mode Dieu est égal à zéro. Passons maintenant à Looks et ajoutons un bloc de costume à chaque pièce. Si le mode Dieu est désactivé, nous voulons passer au costume Fall Zero. Dans le cas contraire, nous passerons au zéro inactif. Si nous lançons maintenant le jeu avec le mode Dieu désactivé, le sprite du joueur démarrera dans le costume Fall Zero Mais si nous activons Godmde et que nous le relançons, il démarrera dans le costume d' Idle Zero Bien, maintenant, juste pour nous assurer que la transition d'écran fonctionne également lorsque nous terminons un niveau, récupérons la pièce, puis passons par les sorties Génial OK, donc au cours des niveaux deux et trois, il y aura des verrous qui empêcheront le joueur d'accéder à certaines parties du niveau. Pour ouvrir les serrures, le joueur devra collecter une ou plusieurs clés à l'intérieur du niveau. Nous travaillerons sur l'ajout des serrures et des clés dans la prochaine leçon. 96. Ajouter les serrures et les clés: Nous examinons ici les costumes du sprite cadenas Les noms sont similaires aux noms des costumes des sprites de niveau et d'environnement, le numéro de niveau et les index des lignes et des colonnes étant séparés par des La seule différence avec les noms des costumes Lock Sprite est qu' ils comportent un trait d'union supplémentaire suivi d' une touche telle que la touche bleue, la touche verte et la touche orange Ils correspondent aux noms des costumes indiqués dans le sprite à clé ici, et ils indiquent quelle clé est nécessaire pour ouvrir le cadenas De plus, comme dans le cas de l'environnement Sprite, les objets Sprite verrouillés s'alignent avec les tuiles correspondant à la partie du niveau dans laquelle ils apparaissent Donc, pour intégrer les objets Sprite verrouillés dans le jeu, nous devons essentiellement faire exactement les mêmes choses que nous avons faites pour les objets de l'environnement Pour commencer, allons dans le code Sprite de l'environnement et copions tous les scripts dans le sprite de verrouillage, commençant par les scripts définis Passons ensuite au code Sprite de verrouillage et réorganisons Nous allons maintenant faire quelques ajustements. abord, le script When I start en tant que clone, nous pouvons le trier dans les couches en utilisant l'environnement Z si nous le voulons, mais je pense qu'il est plus logique d'utiliser le niveau Z. Ensuite, dans le script Generate, après avoir séparé le nom d'un costume, nous aurons maintenant quatre éléments le quatrième élément étant la clé Passons donc d'abord aux variables et créons-en une nouvelle pour la clé. Appelons-le clé et faisons-le uniquement pour ce sprite. Et cachons la variable. Ajoutons maintenant un autre ensemble de blocs au script de génération avant le bloc Create Clone, et définissons la variable clé. Pour la valeur, nous voulons introduire un élément de bloc et obtenir l'élément quatre de la liste des segments de chaîne. Et cela devrait être tout ce que nous devons faire pour le moment. Alors lançons le jeu. Et au niveau deux, si nous passons en haut à droite, nous devrions voir des verrous bleus bloquant désormais une partie du niveau. Et si on passe au niveau 3, il devrait y avoir des verrous oranges ici et des verrous verts sur la droite. Cool. Pour le moment, cependant, si nous désactivons le mode Dieu, nous pouvons passer directement à travers les verrous. Ce n'est pas très efficace. Ce que nous voulons plutôt qu'ils fassent c'est empêcher le joueur de passer. Pour ce faire, examinons le code du joueur Sprite, et trouvons le check touch solid script Et ici, au lieu de régler uniquement la touche solide sur un, si nous touchons le sprite du niveau, nous le réglerons également un si nous touchons le sprite de verrouillage Et je vais vous lancer ce défi. Mettez donc la vidéo en pause maintenant et faites en sorte que le fait de toucher le niveau ou le sprite verrouillé déclenche une collision D'accord, pour ce faire, passons d'abord aux opérateurs et introduisons un bloc or. Positionnons le bloc de niveau tactile sur un côté. Utilisons ensuite un duplicata pour l'autre côté, changez-le en verrou tactile et utilisons tout cela comme condition. Désormais, les verrous agiront essentiellement comme un mur, empêchant le joueur de passer. Bien, nous devons maintenant ajouter les clés pour que le joueur puisse déverrouiller les serrures Pour cela, bien entendu, nous utiliserons le sprite clé. Le code du sprite clé sera assez similaire au code du sprite à pièces Donc, pour commencer, nous pouvons accéder au coin sprite et copier certains scripts Tout d'abord, copions un tri par position en couches. Créez un clone et vérifiez Touching Player. La clé Sprite n'a pas d'animation, nous n'avons donc pas besoin du script d'animation. Ensuite, copions lorsque je recevrai la première mise à jour, lorsque je recevrai la mise à jour trois et lorsque je commencerai en tant que clone. Encore une fois, comme nous n' animons pas le sprite, nous n'avons pas besoin du script Update two lorsque je recevrai la deuxième mise à jour Enfin, copions le script Green Flag et le script de configuration. Et pendant que nous y sommes, allons-y et remettons tous les blocs Crack Clone dans le script de configuration. Passons maintenant au code du sprite clé. OK, donc dans le script Create Clone pour le sprite clé, nous devrons également indiquer le costume à utiliser pour le clone Pour ce faire, cliquez avec le bouton droit sur le bloc défini et choisissez Modifier. Ajoutons ici une étiquette de type point-virgule, costume (deux points). Ajoutez ensuite une entrée appelée costume et cliquez sur OK. Maintenant, dans le bloc costume switch, nous pouvons utiliser l' entrée costume comme costume. Nous ne voulons pas embrouiller le compteur de pièces, nous pouvons donc nous débarrasser du bloc de pièces de change qui se trouve ici. Et comme le sprite clé n'a aucune animation, nous pouvons également nous débarrasser du bloc d'images anim défini ici. Nous pouvons également accéder aux variables, cliquer avec le bouton droit de la souris sur la variable anim frame et la supprimer Ensuite, dans le script Check Touching Player, le sprite clé n'a pas de costume Hip Box Débarrassons-nous donc du bloc de costumes Switch Nous voulons supprimer le clone, mais avant cela, nous voulons que le Lock Sprite sache quelle clé a été collectée Pour ce faire, nous allons enregistrer le nom du costume du clone dans une liste de variables globale. Ensuite, nous diffuserons le message. Les clones de Lock Sprite peuvent ensuite recevoir le message et consulter la liste pour voir si clé requise a été Très bien, créons d'abord une liste de variables. Appelons ça des clés collectées et faisons-en un pour tous les sprites. Nous voulons nous assurer que la liste est vide au début de chaque niveau. Passons donc au script de configuration et introduisons le bloc de suppression de toutes les clés collectées. Il suffit de supprimer les éléments de la liste une seule fois au début d'un niveau. Faisons-le une fois que le nom du costume, sinon, sera égal à un bloc vide. Ainsi, seul le sprite clé d'origine effacera la liste Revenons maintenant au script Check Touching Player. Si nous touchons le joueur, la première chose à faire est d'ajouter le nom du costume des clones à la liste des clés collectées Pour ce faire, introduisons une annonce dans le bloc Keys Collected. Accédez ensuite à Looks, utilisez un bloc numérique Costum pour l'entrée et remplacez-le par le nom de la somme Ensuite, nous diffuserons un message. Passons donc aux événements, introduisons un bloc de diffusion et diffusons un nouveau message, que nous pouvons appeler clé collectée. OK, et avant de traiter le message clé collecté dans le sprite de verrouillage, ajoutons les clés aux niveaux Passons d'abord au script de configuration. Nous n'aurons des clés et des serrures qu' aux niveaux deux et trois. Alors changeons le niveau égal à un ici en niveau égal à deux. Maintenant, retirons le niveau I égal à trois blocs ici, débarrassons-nous du bloc interne si alors s et remplaçons-le par le niveau I égal à trois blocs. Et débarrassons-nous également des blocs de carton afin de ne pas placer les clés dans les mauvaises positions Très bien, commençons le jeu. Activez le mode Dieu et passez au niveau deux. Et passons sur le côté droit du niveau, près du centre. Nous allons placer la clé ici, et nous voulons que ce soit une clé bleue pour qu'elle corresponde aux serrures. OK, donc passons à M Blocks et apportons un bloc de clones génial pour le niveau deux, et j'utiliserai 1948 pour X, 511 pour Y. Et pour le costume, tapons la touche de soulignement bleue Si nous cliquons à nouveau sur le drapeau vert, nous devrions maintenant voir la touche bleue. Et si on le touche, il disparaît et touche bleue est ajoutée à la liste des clés collectées. OK ? Passons maintenant au niveau trois. Ce niveau comportera deux clés. Pour le premier, allons-y un peu. Nous allons placer une clé orange juste ici. Ajoutons donc un bloc Clone en caisse pour le niveau 3, et allons-y avec moins 130 pour X, 270 pour Y et un trait de soulignement orange pour le costume Faisons en sorte qu'il apparaisse et que nous puissions le récupérer. Cool. Maintenant, tournons un peu vers la droite. Nous allons mettre une clé verte juste ici. Ajoutons donc un autre bloc Cric Clone pour le niveau trois Ensuite, choisissons un, trois, cinq, cinq pour X, 90 pour Y, et un trait de soulignement vert pour le costume Assurons-nous que cela fonctionne. Et si nous revenons à la touche orange et que nous la récupérons également, les deux clés devraient apparaître dans la liste. Bien, nous pouvons maintenant accéder aux variables et masquer la liste des clés collectées. ne nous reste plus qu'à revenir au code Lock Sprite et gérer le message clé collecté Passons d'abord aux événements, introduisons un bloc W I receive et recevons la clé collectée. Ce que nous faisons ici, c'est vérifier si la liste des clés collectées contient un élément qui correspond la valeur de la variable clé des clones. Si c'est le cas, nous mettrons le jeu en pause, défiler la caméra jusqu'aux verrous , supprimerons les verrous, puis retournerons au joueur et reprendrons le jeu. OK, donc pour commencer, allons dans Control et introduisons un bloc I puis bloquons. Pour vérifier si la liste des clés collectées contient la valeur de la variable clé, nous pouvons accéder aux variables, introduire un bloc contenant les clés collectées et utiliser un bloc clé comme entrées. Ensuite, ajoutons un set à bloquer au bloc ITN et réglons l' état du jeu sur le défilement automatique Comme vous vous en souvenez peut-être, cela gèlera tout sauf le défilement Et maintenant, nous devons faire défiler l'écran jusqu' au clone du verrou actuel. Pour le moment, cependant, nous n'avons pas le script Scroll to ni le code Lock Sprite Donc, d'abord, nous pouvons aller au Sprite de sortie, copier le scroll to script dans le Lock Sprite Retournez ensuite au Lock Sprite. Maintenant, après avoir défini l'état du jeu et quand je recevrai les clés collectées, passons à MyBlocks et ajoutons un parchemin à deux blocs. Et pour les entrées, passons aux variables et introduisons un bloc X et un bloc Y. Passons également au contrôle et ajoutons un bloc d'attente avant et après le défilement vers le bloc. Pour le premier, attendons 0,2 seconde, et pour le second, allons-y avec 0,5 seconde. Lex va faire disparaître le clone. Pour ce faire, introduisons un bloc de dix répétitions. Passons ensuite à Looks, ajoutons un effet de changement par bloc au bloc de répétition et modifions l'effet fantôme de dix. Après avoir effacé le clone, nous reviendrons aux sprites du joueur Passons donc à Ma Blocks et introduisons un autre scroll pour bloquer. Pour les entrées, passons à la détection et mettons en arrière-plan le nombre de blocs de scène. Au lieu de scène, nous voulons utiliser le joueur. Récupérons ensuite la variable X pour le premier et la variable Y pour le second. Passons également au contrôle et attendons 0,5 seconde avant et après le défilement pour bloquer. Après cela, nous pouvons accéder aux variables, introduire un ensemble à bloquer et définir l'état du jeu en cours d'exécution. Il ne nous reste plus qu'à supprimer le clone, mais cela signifie également que nous devons supprimer de la liste des commandes Z. Donc, d'abord, supprimons bloc et remplacons-le par la liste des commandes Z. Pour la saisie, introduisons un numéro d'article ou un bloc, en utilisant également la liste des commandes Z. Lorsque nous trions les couches, nous utilisons le niveau Z. Utilisons donc un bloc de niveau Z comme entrée du numéro d'article Cela supprimera l'un des éléments de l'ordre Z de la liste, ce qui permettra de contrôler les couches. Enfin, nous pouvons accéder à Control et introduire ou supprimer ce bloc de clonage. Maintenant, avant d'essayer tout cela, nous avons un léger problème. Dans le script de génération, nous définissons la variable clé pour le sprite d'origine, qui est reportée au clone suivant que nous créons Et comme le sprite d'origine recevra également le message contenant la clé collectée, il se peut qu'il trouve sa clé dans il se peut qu'il trouve sa clé dans la liste et essaie également de faire défiler la page jusqu'à lui-même Pour éviter que cela ne se produise, nous pouvons arrêter le script si le sprite utilise le costume vierge Mais pour plus de facilité, passons au script de configuration. En bas, passons aux variables et ajoutons un ensemble à bloquer. Et définissons la variable clé sur quelque chose qui ne sera jamais ajouté à la liste des clés collectées. Cela peut être zéro ou votre mère, mais je vais choisir une valeur vide. Ainsi, étant donné que seul le sprite de verrouillage d'origine passera le bloc I then, et comme nous le faisons après avoir généré tous les clones, cela garantira que le sprite d'origine ne trouvera jamais sa valeur clé dans la liste Très bien, maintenant essayons-le. Je suis au niveau 3 en ce moment, et si je récupère la clé orange ici, elle fait défiler la page jusqu'aux verrous oranges, les estompe, puis revient au joueur Je vais aussi vérifier la clé verte. Mais d'abord, je vais désactiver le mode Dieu cette fois. Excellente. Bien, ensuite, nous allons commencer à rendre le jeu vraiment amusant en ajoutant des ennemis aux niveaux. 97. Ajouter l'ennemi de l'escargot: Le premier ennemi que nous ajouterons au jeu est le sprite escargot Si nous jetons un coup d' œil à ses costumes, il propose une animation en deux images , un costume Dead Zero et un costume hip box , légèrement plus petit que les autres costumes. Ce que nous allons faire avec les escargots, c'est les faire se déplacer d'avant en arrière d'un niveau à l' Si le joueur saute sur un escargot, celui-ci mourra et tombera au fond Mais si le joueur touche un escargot d'une autre manière, cela le blessera OK. Et pour coder le sprite Snail, nous pouvons commencer par accéder au code du sprite à pièces et copier les scripts Commençons par le bon côté. Vérifiez donc le lecteur tactile, animez, créez un clone, triez les calques et ajustez la position Copions ensuite lorsque je commencerai en tant que clone lorsque je recevrai la troisième mise à jour, mise à jour deux, la mise à jour une, et enfin, le script de configuration et le script du drapeau vert. Passons maintenant au sprite escargot et nettoyons un peu le code Bien, maintenant, pour apporter quelques modifications, commençons par le script Crate Clone Lorsque nous créerons un clone pour la première fois nous passerons au costume Move Zero. Nous n'allons pas nous occuper des pièces, alors débarrassons-nous du bloc de pièces de change. Nous devrons également suivre l' état actuel du clone, qui, selon les costumes, sera soit déplacé, soit mort. Donc, dans les variables, créons-en une nouvelle. Appelons-le état et faisons-le uniquement pour ce sprite. Et cachons la variable. Ajoutons ensuite un ensemble à bloquer avant que le clone de moi-même ne bloque, et définissons State pour qu'il se déplace. Malheureusement, avec le sprite escargot, nous ne pouvons pas utiliser la détection de collision entre celui-ci et le sprite du niveau empêcher de passer à travers tuiles du niveau comme nous le faisons avec le sprite du joueur Cela est dû au fait que les clones de sprites d' escargot passeront beaucoup de temps en dehors de la Et comme nous l'avons déjà appris, Scratch limite la distance qu' un sprite peut parcourir par rapport à la scène Cela signifie que les sprites hors scène se regroupent sur les bords de la Cela posera évidemment des problèmes si nous essayons de détecter des collisions entre les sprites C'est aussi la raison pour laquelle nous devons utiliser des variables X et Y personnalisées pour chaque sprite afin de suivre sa position mondiale dans le niveau Nous allons donc plutôt placer un clone de sprite d'escargot directement au-dessus des tuiles du niveau et lui attribuer une distance précise qu'il peut parcourir avant de faire placer un clone de sprite d'escargot directement au-dessus demi-tour et de repartir lui attribuer une distance précise qu'il peut demi-tour dans la direction opposée OK, donc pour ce faire, lors de la création d'un clone, nous devons lui indiquer la distance qu'il peut parcourir, ainsi que la direction dans laquelle il doit être orienté au départ. Cela signifie que nous devrons indiquer la distance et la direction de départ lors de l' exécution du script Create Clone. Faisons donc un clic droit sur le bloc défini et choisissons Modifier. Tout d'abord, ajoutons une nouvelle étiquette, saisissons la distance point-virgule deux-points et ajoutons une entrée appelée distance et ajoutons une entrée appelée Ajoutons maintenant un autre type d' étiquette (point-virgule , deux points), ajoutons une entrée appelée direction et Ensuite, nous devons suivre les expositions minimales et maximales des clones Passons donc d'abord aux variables et créons-en quelques nouvelles. Appelons le premier Min x et faisons-le uniquement pour ce sprite Créons-en un autre, appelons-le Maxx. Également pour ce sprite uniquement, masquons les deux variables Minx et Maxx dépendront tous deux de la direction de départ du clone, qui sera soit 90, soit moins 90 Si c'est 90, ce qui signifie que le clone est orienté vers la droite, Minix sera l'exposition de départ et Maxx sera l' entrée X plus la distance Si la direction est négative de 90, ce qui signifie que le clone est orienté vers la gauche, Maxx sera l'entrée X et minx sera X moins Alors d'abord, passons au contrôle et plaçons un bloc I Thins dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Vérifions ensuite si l'entrée de direction est égale à 90. Passons maintenant aux variables, et ajoutons deux ensembles deux blocs à chaque partie du bloc ITN ls. Pour la partie I, nous voulons régler Minix sur l'entrée X. Et pour Maxx, passons aux opérateurs, introduisons un bloc d'addition et additionnons entrées X et les entrées de distance Pour la partie ts, nous allons définir Minux en introduisant un bloc de soustraction et en faisant X moins Enfin, mettons Maxx l'entrée X et plaçons tout cela au-dessus du bloc Create Clone of myself. Et une autre chose que nous voulons faire est diriger le sprite dans la bonne direction de départ Passons donc au mouvement, ajoutons un bloc de points et de direction avant de créer le bloc Clone of myself et utilisons les entrées de direction. OK, dans le bloc de costume Switch du script d'anime, nous voulons passer aux variables et remplacer le mot pièce par un bloc d'état. Ensuite, nous ne voulons changer l'image d'animation que si l'escargot est en état de mouvement, car l'état mort ne comporte qu'une seule image Passons donc au contrôle, et enroulons un bloc si puis contournons le changement et définissons des blocs de cadre Tom. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l' état est égal au déplacement. OK. Et pour ce qui est de la vitesse d'animation, choisissons 0,05 car les escargots sont assez lents, et c'est une animation à deux images Modifions donc un cadre animé avec deux. Bien, maintenant allons-y et ajoutons un Snell au niveau 1. Passons d'abord au script de configuration. Et débarrassons-nous de tous les blocs de CrakKline pour ne pas avoir un tas de snlls aléatoires partout Maintenant lançons le jeu. Activez le bon mode et faites défiler légèrement l'écran vers la droite. Nous allons créer un snll ici et le faire aller et venir entre la boîte et le bord de la pente, et nous allons le commencer juste à droite de la boîte, à peu près ici OK, donc pour créer le clone, passons aux blocs Mi et ajoutons un bloc Create Clone pour le niveau 1. Utilisons 338 pour X, 45 pour Y, 100 pour la distance, et nous allons le faire face vers la droite en utilisant 90 pour la direction. Si nous cliquons à nouveau sur le drapeau vert, nous voyons le nouvel escargot utiliser son animation de mouvement Nous devons maintenant faire en sorte que l'escargot se déplace réellement sur les carreaux de niveau Pour cela, revenons à la date à laquelle je recevrai la deuxième mise à jour. Et ici, avant d'animer, nous allons ajouter un bloc personnalisé pour gérer les actions de l' escargot Créons donc d'abord un nouveau bloc personnalisé. Appelons-le gérer les actions. Cliquez sur OK, puis plaçons un bloc d'actions de gestion juste au-dessus du bloc d'animation Déplaçons maintenant le bloc d'actions défini dans un espace vide. Et ici, nous allons d'abord déplacer le clone d'une certaine vitesse dans sa direction actuelle. Pour ce faire, passons aux variables, apportons une modification par bloc et changeons la variable X. Passons maintenant aux opérateurs, et ajoutons d'abord un bloc de multiplication au bloc X de modification. Utilisez ensuite un bloc de division pour la première entrée. Maintenant, si nous passons au mouvement, nous pouvons prendre un bloc directeur et le diviser par 90, ce qui nous donnera soit un, soit moins un. Ensuite, nous pouvons le multiplier par une vitesse. En fait, je vais juste en choisir un ici, sorte que l'escargot ne se déplacera que d'un pas à chaque image OK, essayons-le. Parfait. Maintenant, il suffit de faire en sorte que lorsque l'escargot atteint l'exposition maximale, il fasse demi-tour et se déplace dans la direction opposée, puis répète le processus lorsqu' il atteint à nouveau l' exposition minimale Pour ce faire, nous devons vérifier si l'escargot a dépassé sa variable Maxx ou sa variable min x. Pour commencer, allons dans Control et ajoutons un bloc if then else au script d'action handle. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables, vérifions si X est supérieur à Maxx Si tel est le cas, nous voulons d'abord introduire un ensemble à bloquer et définir X sur Maxx Nous voulons ensuite faire face à l'escargot dans la direction opposée. Pour ce faire, passons au mouvement et introduisons un bloc de points et de directions. Passons ensuite aux opérateurs et utilisons un bloc de multiplication comme entrée. Maintenant, nous pouvons revenir au mouvement et nous pouvons faire la direction multipliée par moins un. Ainsi, lors de la prochaine exécution du script, l'escargot commencera dans ce cas à se déplacer vers la gauche Nous pouvons le voir si nous lançons le jeu. Une fois que l'escargot se déplace d' une distance de 100 pas, c' est-à-dire près du bord de la pente, il change de direction et commence à se déplacer vers la gauche Cependant, il bascule également à l'envers. Comme nous l'avons déjà vu, nous pouvons résoudre ce problème en cliquant dans le champ de direction des sprites et en utilisant le type de rotation gauche-droite Si nous essayons à nouveau, l'escargot reste désormais debout lorsqu' il tourne vers la gauche Nous devons maintenant faire tourner l' escargot vers la droite une fois qu'il a dépassé son exposition minimale Passons donc d'abord au contrôle, et ajoutons un bloc « if » à la partie « outs » ici. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si X est inférieur à minx Nous pouvons maintenant importer des doublons de l'ensemble x et des blocs de points et de directions d' Mais cette fois, nous voulons mettre X à minx. Et maintenant, si nous lançons le jeu, l'escargot ne devrait jamais faire plus de 100 pas dans les deux sens Génial. Bien, ce que nous allons faire ensuite, c'est laisser le joueur tuer l' escargot en sautant dessus Pour cela, passons au script Check Touching Player. Nous allons en fait supprimer les clones ailleurs. Nous allons donc extraire les deux blocs de suppression ici et les enregistrer pour plus tard. Et débarrassons-nous du bloc de pièces de change. Désormais, lorsque le joueur saute sur un escargot, il fort probable qu'il soit en train tomber au moment où il le heurte Après avoir vérifié si l' escargot touche le joueur, nous vérifierons également si le joueur est actuellement en état de chute Si c'est le cas, nous ferons mourir l'escargot. Sinon, le joueur est probablement en train de marcher dans l'escargot, ce qui devrait lui faire mal . OK, alors d'abord, passons au contrôle et ajoutons un bloc if then s au bloc I touch platter. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite à la détection et ajoutons un numéro de fond du bloc de scène au bloc égal. Pour connaître l'état du joueur, changeons de stade en joueur et obtenons-lui une variable d'état. Et voyons si c'est équivalent à une chute. C'est bon. Maintenant, lorsque le joueur saute sur un escargot, nous le mettons à l'état mort, nous le faisons rebondir un peu en l'air, puis nous utilisons la gravité pour le faire tomber en bas de la scène Passons donc d'abord aux variables et ajoutons un ensemble à bloquer à la partie F. Et mettons l'État sur mort. Nous voulons également réinitialiser le cadre d'animation en ramenant un bloc d'image tom défini à zéro. Ensuite, pour appliquer une force verticale au sprite, créons une nouvelle variable Nous pouvons l'appeler vitesse Y et l' utiliser uniquement pour ce sprite, et nous n'avons pas besoin d' afficher la variable Et d'ailleurs, si vous ne pouvez pas voir le bloc d'une variable que vous venez de créer, vous pouvez passer à un autre sprite puis revenir, et le bloc devrait maintenant être visible OK ? Maintenant, introduisons un autre ensemble à bloquer, et réglons la vitesse Y à sept. Une valeur positive fera rebondir légèrement le sprite au début. OK ? Maintenant, pour utiliser Speed Wi, récupérons les deux blocs de suppression que nous avons enregistrés ici et les transférons dans le script d'action Handle. Au début du script, nous vérifierons si le sprite est à l'état mort, et si c'est le cas, nous utiliserons la variable de vitesse Y pour affecter sa position Y. Alors d'abord, passons au contrôle et plaçons un bloc I dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'état est égal à mort. Si c'est le cas, introduisons une modification par bloc et changeons Y par SpeedY. Nous voulons également utiliser la gravité pour réduire SpeeDy Apportons donc un autre changement par bloc et changeons SpeeDy par gravité. Ensuite, nous voulons vérifier si le clone a atteint le bas de l'étape, et si c'est le cas, nous le supprimerons. Passons donc au contrôle et ajoutons un si le bloc sous le bloc de modification Byblocks Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passez ensuite aux variables et vérifiez si Y est inférieur à moins 180. Si c'est le cas, introduisons les deux blocs de suppression. Ajoutons maintenant tout cela en haut du script d' action Handle. Pour le moment, cependant, si le clone n'a pas encore atteint le bas de la scène, les blocs situés ici continueront fonctionner, ce qui entraînera le déplacement horizontal du clone. Nous ne voulons pas que cela se produise. Passons donc au contrôle. Ajoutez un bloc d'arrêt tout en bas de la case « I » est égal à un bloc mort et arrêtez ce script. Et il y a encore une chose que nous devons faire. Et lorsque je recevrai la première mise à jour, nous voulons uniquement vérifier si le clone touche le joueur lorsque le clone est en état de mouvement. Prenons donc un bloc I et enroulons-le autour du bloc joueur qui touche le chèque. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si l'état est égal au déplacement. OK, je pense que nous sommes prêts à essayer. Lancez donc le jeu et désactivons le mode Dieu. Si on entre dans l'escargot, rien ne se passe encore. Mais si on saute dessus, il passe à l'état mort, rebondit et tombe en bas de la scène. Plutôt cool. je serais encore plus belle si nous faisions également rebondir le joueur sur l'escargot Nous verrons comment procéder dans la prochaine leçon. Mais d'abord, allons-y et finissons d'ajouter les escargots aux niveaux OK, voici tous les blocs Crate Clone que j'utilise au cas où vous voudriez utiliser les mêmes valeurs. 98. Rebondir le joueur: Chaque fois que le joueur touche les sprites d' un ennemi, nous faisons rebondir le Lorsqu'ils sautent ou tombent sur l'ennemi, nous les renvoyons droit vers le haut. Et lorsqu'ils sont touchés par l'ennemi, nous les renvoyons vers la gauche ou vers la droite Quelle que soit la direction qui les éloignera le plus de l'ennemi. Et nous ferons savoir au sprite du joueur qu'il doit rebondir en diffusant un message chaque fois qu' un sprite ennemi touche OK ? Ainsi, dans le script « check touching player » du sprite escargot, si le clone touche le joueur, nous diffuserons un message «   rebond », que le joueur soit en train de tomber ou soit en train de tomber ou non Passons donc aux événements organisés un bloc de diffusion situé juste au-dessus du bloc IN Os, et diffusons un nouveau message, que nous pouvons appeler Bounce Player Ensuite, nous devons indiquer au joueur dans quelle direction il doit rebondir. Pour cela, nous pouvons utiliser une variable globale. Passons donc aux variables et créons-en une nouvelle. Appelons-le bounce der et faisons-le pour tous les sprites. Il y aura trois valeurs possibles pour le fer rebondi. Zéro signifiera « tout droit ». Un signifiera vers le haut et vers la droite, et un négatif signifiera vers le haut et vers la gauche. Lorsque le joueur est tombé sur l'escargot, provoquant la mort de l'escargot, nous voulons le faire rebondir droit vers le haut Ajoutons donc un set to block à la partie if de l'iTinoBlock et mettons bounce der Désormais, lorsque le joueur a été touché par l'escargot, nous pouvons définir la direction du rebond en comparant l'exposition du joueur à l'exposition de l'escargot Si le joueur se trouve à droite de l'escargot, nous le ferons rebondir vers le haut et vers la droite et vice versa Passons d'abord à Control et ajoutons un bloc if then outs à la partie outs de celui-ci. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Pour le côté gauche du bloc supérieur à, utilisons une copie du bloc de l'état du joueur ici et changeons-le en X du joueur. Et pour le côté droit, passons aux variables et introduisons un bloc X. Cela signifie que le joueur se trouve à droite de l'escargot. Apportons donc un set à bloquer et fixons Bounce Sir à un Sinon, nous pouvons régler le bouncer sur moins un. Désormais, lorsque le sprite du joueur reçoit le message du joueur rebond, nous pouvons simplement utiliser la valeur du videur pour déterminer si le joueur a été touché ou non par Et juste pour nous assurer que le videur est correctement réglé, lançons le jeu et passons à l'escargot Si on le touche du côté gauche, videur devient négatif Si on le touche du côté droit, il devient positif. Et si on saute sur l' escargot, il devient nul. Génial. D'accord, nous pouvons masquer la variable bouncer Maintenant, nous devons accéder au code du sprite du joueur et gérer le message Bounce Player Trouvons d'abord un espace vide. Passons ensuite aux événements et ajoutons un W, j'ai reçu un bloc de joueur rebondissant. Et ici, nous allons faire différentes choses en fonction de la valeur du videur Alors d'abord, passons au contrôle et introduisons un bloc « if then outs ». Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le bouncer est égal à zéro Maintenant, quelle que soit la valeur du videur, nous allons appliquer une force de rebond ascendante aux sprites Nous utiliserons la force de rebond dans ce script, et nous l'utiliserons également dans le script de mouvement vertical de la poignée Comme nous l'utiliserons dans plusieurs scripts, nous devrons lui créer une variable. Créons-en donc un nouveau. Nous pouvons l'appeler force de rebond, et seul le sprite du joueur a besoin d'y accéder Nous ne pouvons donc la créer que pour ce sprite Et pendant que nous y sommes, nous aurons également besoin d'une autre variable pour repousser le joueur s'il est touché. C'est ce qu'on appelle le bounce back et nous l'utiliserons à la fois dans le script Bounce Player et dans le script de mouvement horizontal Handle OK, créons donc une autre variable. Disons que c'est rebondir et qu'il ne soit réservé qu'à ce sprite Et nous pouvons masquer les deux variables. Nous devons maintenant nous assurer de réinitialiser les deux variables au début de chaque niveau afin que le joueur ne commence pas à rebondir Passons d'abord au script de configuration et ajoutons deux autres blocs set two. Et réglons à la fois la force de rebond et le rebond à zéro. Revenons maintenant au script W I receive bounce player La force de rebond sera différente selon que le du rebondi est nul ou non Ajoutons donc un ensemble de deux blocs à chaque partie du iTinoBlock Pour le premier, fixons la force de rebond à trois. Et pour l'autre, mettons-le à deux. Ensuite, sous le bloc I thin outs, nous allons régler la vitesse Y en utilisant la force de rebond pour faire monter le sprite. Ajoutons donc un bloc de deux au bas du script et définissons la vitesse Y. Et nous allons la définir en utilisant la somme de la variable de force de rebond et de la variable de force de saut Cela aura du sens dans un moment. Passons donc d'abord aux opérateurs et plaçons un bloc d'addition dans le bloc Y de vitesse défini. Revenons ensuite aux variables et calculons la force de rebond et la force de saut Et comme cela va techniquement mettre le sprite en l'air, nous devrions également en apporter un autre bloquer et le mettre en air pour un Si nous lançons le jeu et sautons sur l'escargot, il nous fait rebondir en l'air Pour l'améliorer, cependant, nous pourrions le faire. Ainsi, si nous maintenons une touche de saut enfoncée pendant que nous rebondissons, elle continue à appliquer la force de rebond, nous permettant de sauter assez haut elle continue à appliquer la force de rebond, nous permettant de sauter assez C'est là qu'intervient le script de mouvement vertical de la poignée . À l'intérieur de l'axe IY, un bloc est égal à un bloc où nous vérifions si le saut est inférieur à sept, nous réglons la vitesse en fonction de la force du saut. Nous pouvons donc également ajouter un changement par bloc après celui-ci et le modifier rapidement par force de rebond Cela revient à définir la vitesse en fonction de la somme de la force de saut et de la force de rebond comme nous le faisons dans le script Bounce Player Alors essayons-le. Si nous sautons sur un escargot et maintenons une touche de saut enfoncée, nous pouvons monter un peu plus haut Cela sera vraiment utile lorsque nous ajouterons les sauts plus tard. À l'heure actuelle, la force de rebond continue de s' ajouter à nos sauts, même lorsque nous ne rebondissons pas Pour résoudre ce problème, à un moment donné, nous devons remettre la force de rebond à zéro Pour ce faire, avant de vérifier si l'axe Y est égal à un, nous pouvons vérifier si la force de rebond est supérieure à zéro, et si le joueur a commencé à retomber au sol, ou en d'autres termes, si la vitesse Y n'est pas supérieure à zéro. D'accord, donc d'abord, passons au contrôle et plaçons un bloc informatique dans un espace vide Pour ce qui est de la condition, allons voir les opérateurs et introduisons d'abord un bloc and. Mettons un bloc supérieur à sur le côté gauche, et pour le côté droit, ajoutons d'abord un bloc supérieur à, puis un bloc supérieur à. Revenons maintenant aux variables et vérifions si la force de rebond est supérieure à zéro et si la vitesse Y n'est pas supérieure à zéro Si tout cela est vrai, nous pouvons introduire un ensemble à bloquer et régler la force de rebond à zéro Nous pouvons maintenant placer le bloc I puis juste au-dessus de l'axe IY pour obtenir un bloc, ce qui devrait résoudre le problème. Nous pouvons toujours sauter plus haut tout en rebondissant sur un ennemi, mais ensuite, le saut revient à la normale Bien, ensuite, nous devons implémenter le rebond qui devrait se produire lorsque le joueur est touché par un ennemi Pour cela, revenons d'abord au script Bounce Player Au bas du script, ajoutons un autre ensemble à bloquer et à définir le rebond La direction du rebond dépendra bien entendu de la valeur du DRE rebondi Passons donc d'abord aux opérateurs et utilisons un bloc de multiplication comme entrée. Revenons ensuite aux variables, et multiplions bounce der par trois, disons Bon, passons maintenant à la gestion des scripts de mouvement horizontal. Et ici, si le rebond n' est pas égal à zéro, nous allons continuer à ajouter de la valeur à la vitesse x. Nous empêcherons également le joueur d'annuler les mouvements Tout cela est similaire à ce que nous faisons pour le saut sur mur et le glissement en pente. Cependant, nous voulons arrêter d'appliquer le rebond dès que la force de rebond devient nulle Très bien, donc pour vérifier tout cela, passons d' abord au contrôle et plaçons un bloc FTN dans un espace vide Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc et. Pour le côté gauche, introduisons un bloc supérieur à. Et pour le côté droit, introduisons d'abord un bloc non, puis un bloc égal. Passons maintenant aux variables et vérifions si la force de rebond est supérieure à zéro et si le rebond n'est pas égal à Si tout cela est vrai, nous pouvons apporter une modification par bloc et modifier la vitesse X par spécification de rebond Et pour empêcher le joueur de le contourner, nous pouvons introduire un ensemble à bloquer et mettre l'axe X à zéro Nous pouvons maintenant placer tout cela juste au-dessus du bloc si ce n'est pas l'axe X égal à zéro. Si nous lançons le jeu et que nous rencontrons un ennemi, cela nous fait rebondir et nous éloigne de l'ennemi Excellente. Mais pour le moment, cela ne fait pas vraiment de mal au joueur puisqu'il n'a pas encore de santé. Nous allons donc résoudre ce problème dans la prochaine leçon. 99. Se blesser: Pour que le joueur soit blessé lorsqu'un ennemi le touche, nous devons lui donner de la santé. Commençons donc par créer une variable pour la santé du joueur. Comme le sprite cardiaque devra également accéder à la variable ultérieurement, nous en ferons une variable globale Appelons ça la santé des joueurs et faisons-en un pour tous les sprites Nous en créerons également un pour le maximum de points de vie que le joueur peut avoir. Appelons cela la santé maximale du joueur et faisons-en un pour tous les sprites Masquons la variable de santé maximale du joueur. Et pour le moment, nous allons garder la santé des joueurs visible sur la scène. Très bien, dans le code Sprite du joueur, passons au script du drapeau vert Apportons un set à bloquer, et fixons la santé maximale du joueur à trois. Maintenant, ajoutons un autre set à bloquer, et réglons la santé du joueur sur la santé maximale du joueur. Ensuite, dans le script de configuration, nous allons rétablir la santé au maximum, mais ce n'est que si la santé est tombée à zéro cela permettra au joueur de passer d'un niveau à l'autre. Alors d'abord, passons au contrôle et plaçons le bloc IDN dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si la santé du joueur est égale à zéro. Si c'est le cas, nous pouvons apporter un set pour bloquer et régler la santé du joueur au maximum de sa santé. Ajoutons maintenant le bloc ITN au script de configuration. Ensuite, nous travaillerons à blesser le joueur. Pour cela, nous devons savoir si le joueur est actuellement blessé ou non. De plus, lorsque le joueur est blessé, nous le rendons invincible pendant une courte période Cela empêchera le joueur de se blesser plusieurs fois à la fois et lui permettra de s'éloigner des ennemis. OK, commençons donc par créer quelques variables supplémentaires. Pour le premier, disons que c'est mal et faisons-le uniquement pour ce sprite Créons-en un autre, appelons-le Max HRP encore et encore, uniquement pour ce sprite temps maximum de HRP sera le nombre d' images pendant lesquelles le joueur sera invincible après s'être blessé Cette valeur ne changera jamais pendant le jeu, nous pouvons donc la définir dans le script du drapeau vert. Faisons-le en introduisant un ensemble à bloquer et en réglant le temps de blessure maximal à 30 images. Avec une fréquence d'images de 30 images par seconde, cela rendra le joueur invincible pendant 1 seconde après s'être blessé Maintenant, pour la variable Hurt, nous voulons la réinitialiser au début de chaque niveau. Ajoutons donc un set to block au script de configuration, et mettons Hurt à zéro. D'accord, le joueur sera évidemment blessé lorsqu'il sera touché par un ennemi. Lorsque cela se produit, nous recevons le message Bounce Player. Passons donc au script When I receive bounce player Nous savons que le joueur a été touché par un ennemi lorsque la valeur du DR rebondi n'est pas nulle Donc, dans la partie des retraits du bloc I bounced dr = zéro, nous allons faire subir des dégâts au joueur Tout d'abord, si le joueur est déjà blessé, nous ne voulons pas qu' il le soit à nouveau. Donc, si le joueur est déjà blessé, nous allons simplement arrêter le script. OK, donc pour commencer, passons au contrôle et plaçons un bloc if then else dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le mal est supérieur à zéro. Nous utiliserons une valeur supérieure à zéro au lieu d'une valeur égale à un, car nous utiliserons en fait la variable comme un chronomètre pour indiquer depuis combien de temps le joueur a été blessé. OK, et si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Si la blessure n'est pas supérieure à zéro, alors le joueur devrait se blesser. Pour cela, nous allons utiliser un bloc personnalisé. Passons donc à MyBlock et créons-en un nouveau. Tapons d'abord Get hurt B. Ensuite, ajoutons une nouvelle entrée, appelons-la damage, puis cliquez sur OK. Ajoutons maintenant un bloc « se blesser par bloc » à la partie « outs » ici. Et pour l'entrée des dégâts, choisissons 0,5. Ensuite, nous pouvons l'ajouter si, sinon, bloquer la partie du videur I est égal à zéro bloc au-dessus du bloc de force de rebond défini OK, maintenant déplaçons le bloc « get hurt by » défini dans un espace vide. La première chose que nous voulons faire ici est d'accéder aux variables, introduire un ensemble à bloquer et de définir RT sur un. Ensuite, nous allons réduire la santé du joueur en fonction des dégâts infligés. Apportons donc un changement par bloc et modifions la santé des joueurs. Pour réduire la santé, nous devons annuler la valeur d'entrée des dégâts Passons donc aux opérateurs et ajoutons un bloc de soustraction au bloc de santé de modification du joueur. Faisons ensuite zéro moins les dégâts subis. La prochaine chose que nous devons faire est de continuer à augmenter la valeur RT jusqu'à ce qu' elle atteigne la valeur temporelle Max Hert Comme cela dépend de l'état du lecteur, nous allons gérer cela dans le script d'état de mise à jour. En haut du script, nous allons commencer par vérifier si la valeur de Hertz est supérieure à zéro. Passons donc à Control et plaçons un si le bloc dans un espace vide. Passons maintenant aux opérateurs et introduisons un bloc supérieur à. Accédez ensuite aux variables et vérifiez si le Hertz est supérieur à zéro. Ensuite, nous vérifierons si la valeur HRT a atteint le temps de blessure Mx Si tel est le cas, nous le remettrons à zéro, et dans le cas contraire, nous continuerons à augmenter la valeur du HRT d'une unité Alors d'abord, passons au contrôle et ajoutons un bloc I puis s au bloc I then. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si rt est égal à max HerTT. Si c'est le cas, introduisons un set à bloquer et mettons le mal à zéro. Sinon, introduisons un changement par bloc et modifions-le un par un. Mettons maintenant tout cela en haut du script d'état de mise à jour. Et avant de tout tester, passons au script Green Flag et fixons Mx hurt time à quelque chose d'assez élevé, comme 150 , soit environ 5 secondes. Si nous lançons le jeu et que nous rencontrons un ennemi, nous rebondissons, perdons la moitié d'un point de vie et la valeur RT commence à compter Jusqu'à ce que le temps de blessure maximal soit atteint, nous pouvons traverser les ennemis sans nous blesser. Une fois qu'il atteint le temps maximum de blessure, il revient à zéro et nous pouvons à nouveau nous blesser. Pour le moment, cependant, il n'est pas très évident pour le joueur qu'il est invincible après s'être blessé Pour être plus clair, nous pouvons faire clignoter le sprite du joueur alors que celui-ci est invincible Tout d'abord, rétablissons le temps de Max Hurt à 30. Revenons ensuite au script d'état de mise à jour. Eh bien, utilisez un bloc personnalisé ici pour faire clignoter le sprite Pour commencer, allons dans Mblocks et créons-en un nouveau. Tapons d'abord flash if et cette fois nous ajouterons une entrée booléenne, que nous n'avons pas encore utilisée Une entrée booléenne, comme les blocs de comparaison et les blocs conditionnels de la catégorie des opérateurs, aura une valeur vraie ou fausse Très bien, ajoutons donc une entrée booléenne, et appelons-la point d'interrogation flash Maintenant, cliquons sur OK, et allons-y et ajoutons un flash si le bloc est bloqué une fois le changement blessé par un bloc ici. Nous utiliserons cette condition pour indiquer au bloc s'il doit clignoter ou non. Pour ce faire, passons aux opérateurs, et introduisons d'abord un bloc égal. Ensuite, nous allons placer un bloc de mods sur le côté gauche. Passons maintenant aux variables, et faisons en sorte que le mod 4 de Hurt soit égal à zéro. Ainsi, chaque fois la valeur RT devient divisible par quatre, soit toutes les quatre images, le sprite clignote OK, maintenant plaçons le bloc flash défini dans un espace vide. Et ici, nous voulons vérifier si l'entrée du flash est vraie ou fausse. Passons donc au contrôle et introduisons un bloc ITN Ls, et nous pouvons utiliser l' entrée flash comme condition La partie I s'exécutera si flash est vrai, et la partie s s' exécutera si elle est fausse. D'accord, et pour faire clignoter le sprite, nous pouvons utiliser l'effet de luminosité Pour ce faire, passons à Looks et ajoutons un effet défini à bloquer aux deux parties du bloc ITN Ls. Si le flash est activé, nous réglerons l' effet de luminosité sur 100, ce qui rendra le sprite complètement blanc Sinon, nous le mettrons à zéro, ce qui désactivera essentiellement l'effet. Maintenant, avant d'essayer, revenons au script d'état de mise à jour. Il est possible que lorsque la valeur HRT atteint le temps de blessure maximal, le sprite soit toujours Donc, pour nous assurer que ce n'est pas le cas, ajoutons un bloc d' effets fixes à la partie I de ce bloc et réglons la luminosité à zéro. Maintenant, si nous lançons le jeu et que nous sommes touchés par un ennemi, le sprite clignote alors que le joueur est invincible À l'heure actuelle, si nous continuons à être touchés, notre santé peut continuer à baisser , même si les chiffres sont négatifs. Ensuite, nous allons faire mourir le joueur lorsque sa santé atteindra zéro. 100. Tuer le joueur: Comme lorsque le joueur se blesse, nous devons savoir s'il est mort ou non. Pour commencer, passons aux variables et créons-en une nouvelle. Disons que c'est mort et faisons-le uniquement pour ce sprite. Nous voulons réinitialiser la variable morte au début de chaque niveau. Dans le script de configuration, introduisons un ensemble à bloquer et mettons dead à zéro. Bon, passons maintenant aux scripts Get hurt. Et ici, après avoir réduit la santé du joueur, nous vérifierons s'il est mort et nous allons le faire dans un autre bloc personnalisé. Alors d'abord, passons à Mbocks et créons-en un nouveau. Appelons-le Check Dad et cliquez sur OK. Et allons-y et ajoutons un bloc check dead au bas du script Get Hurt. Très bien, nous ferons mourir le joueur lorsque sa santé sera tombée à zéro ou en dessous de zéro. Donc, dans le script check dead, nous allons vérifier cela en accédant d'abord à control et en introduisant un bloc if then. Pour ce qui est de la condition, allons voir les opérateurs et apportons un bloc or. Mettons ensuite un bloc égal d' un côté et un bloc inférieur à un bloc de l'autre côté. Passons maintenant aux variables et vérifions si la santé du joueur est égale à zéro. Ou la santé du joueur est inférieure à zéro. Si c'est le cas, introduisons d'abord un set à bloquer et mettons la santé du joueur à zéro. Cela permettra d'éviter tout problème lors de la création ultérieure de l'affichage cardiaque. Apportons ensuite un autre set à bloquer et arrêtons-en un. Ensuite, nous diffuserons le message indiquant que le joueur est mort. La toile de fond recevra le message et redémarrera le niveau actuel. Passons donc aux événements, introduisons un bloc de diffusion et diffusons le nouveau message, nous pouvons appeler joueur mort Avant de traiter le message de mort du joueur, nous allons d'abord effacer le sprite du joueur ici et ajouter une courte pause avant de le faire Passons donc au contrôle, introduisons d'abord un bloc d'attente et attendons 0,5 seconde. Ensuite, introduisons un bloc de dix répétitions. Passons maintenant à Los, ajoutons un effet de changement par bloc au bloc de répétition et modifions l'effet fantôme de dix. Bon, passons maintenant au script Bounce Player. Après avoir exécuté le bloc G hurt, si le joueur est mort, nous ne voulons pas le faire rebondir Donc, pour vérifier cela, passons au contrôle et plaçons un bloc if then juste en dessous du bloc G hurt. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si un mort est égal à un. Si c'est le cas, nous pouvons passer au contrôle, introduire un bloc d'arrêt et arrêter ce script. Et pour qu'il soit plus facile de tout tester, utilisons deux comme dégâts pour le moment Il suffira donc de deux coups pour tuer le joueur. Très bien, passons maintenant au code de fond et trouvons un espace vide Nous voulons recevoir le message indiquant la date du joueur. Passons donc aux événements, introduisons un bloc W I received et recevons joueur die. Et là, nous voulons d'abord arrêter la boucle du jeu. Passons donc au contrôle, introduisons un bloc d'arrêt et arrêtons les autres scripts et sprites Ensuite, nous allons recommencer le niveau actuel. Mais avant cela, nous voulons laisser au joueur Sprite le temps de disparaître. Commençons donc par un bloc d'attente d'une seconde. Nous pouvons maintenant redémarrer le niveau en accédant aux événements, en introduisant un bloc de diffusion et en diffusant le niveau de départ. OK, si nous lançons le jeu et que nous sommes touchés deux fois par un ennemi, le jeu s'arrête et le sprite du joueur s'estompe, puis le niveau Mais maintenant, nous ne pouvons pas voir le sprite du joueur. C'est parce que nous n'avons pas réinitialisé l'effet fantôme. Pour ce faire, revenons au code Sprite du joueur et aux scripts de configuration Et ici, nous pouvons passer à Looks et ajouter un bloc d'effets graphiques clair. Cela devrait régler le problème. C'est bon. Et une autre chose est que si nous activons le mode Dieu, touchons un ennemi, puis désactivons le mode Dieu, nous nous blessons et nous rebondissons Cela est dû au fait que nous recevons toujours le message Bounce Player, qui définit la variable hurt et les variables bounce Donc, dès que nous désactivons le mode Dieu, cela nous blesse. Nous ne voulons probablement pas que cela se produise. Donc, en haut du script, nous pouvons vérifier si nous sommes en bon mode, et si c'est le cas, nous arrêterons le script. Passons donc d' abord au contrôle et plaçons un bloc ITN dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le mode Dieu est égal à un. Si c'est le cas, nous pouvons passer au contrôle, introduire un bloc d' arrêt et arrêter les scripts. C'est bon. Et maintenant, si on place ça en haut des scripts, qu'on lance le jeu, qu'on active le bon mode, qu'on touche un ennemi et qu'on désactive le bon mode, on ne se blesse plus. OK, cool. Faisons sorte de rétablir les dégâts infligés par les blessures à 0,5 et nous pourrons masquer la variable morte, la variable HRT et la variable temporelle Mx HRT. Ensuite, nous ferons en sorte que le joueur tombe du niveau dans le liquide blesse également le joueur et nous lui répondrons à un endroit proche. 101. Respawn le joueur: Lorsque le joueur tombe de la scène et tombe dans le liquide, il perd de la santé, et s'il lui reste encore de la santé par la suite, il répondra à un endroit proche de l'endroit d'où il est tombé. S'ils n'ont plus de santé, nous recommencerons le niveau. Pour décider où réapparaître, le joueur utilisera le sprite Span Point ici Le costume principal du sprite est simplement un long rectangle vertical Nous placerons des clones invisibles du sprite à différents endroits des niveaux où le joueur est susceptible de tomber du liquide et de tomber dans le liquide Chaque fois que le joueur passe par l'un des clones de points de spa, la position du clone devient la nouvelle position du joueur Donc, s'ils tombent dans le liquide, ils répondront à cette position. OK, donc pour commencer, nous pouvons d'abord accéder au code du sprite du coin et copier des scripts dans le sprite du point d'apparition Commençons par le script Check Touching Player. Ensuite, créons un clone, trions les couches et ajustons la position. Ensuite, nous voulons que je commence en tant que clone je reçoive la troisième mise à jour et que je reçoive la mise à jour 1. Enfin, copions le script de configuration et le script du drapeau vert. Passons maintenant au code du point d'apparition. J'ai défini Check Touching Player, le sprite Spawn Point n'a pas de costume Hip Box, donc nous pouvons nous débarrasser du bloc de costumes Switch Nous ne voulons pas non plus modifier le compteur de pièces ou supprimer le clone ici afin de pouvoir nous débarrasser de tous les blocs contenus dans le bloc if then. Ce que nous voulons faire lorsque le clone touche le joueur c'est utiliser la position du clone comme nouvelle position d' apparition du joueur Pour ce faire, nous aurons besoin certaines variables globales pour suivre la position d'apparition du joueur Passons donc d'abord aux variables et créons-en quelques nouvelles. Appelons le premier spawn pour un joueur X. Et faisons-le pour tous les sprites Et pour le second, passons au spawn Y. Il en va de même pour tous les sprites. Il en va de même pour tous les Ajoutons ensuite deux blocs set two au bloc I touch player. Et réglons le spawn X du joueur sur la variable X. Et les joueurs ajoutent Y à la variable Y. Ensuite, dans define crate Clone, nous voulons passer au costume de point d'apparition Nous ne voulons pas changer de pièces ou animer Nous pouvons donc nous débarrasser du bloc d' images animé défini et du bloc de pièces de change Nous pouvons également supprimer la variable de cadre anim. OK, maintenant, et quand je recevrai la première mise à jour, étant donné que nous ne changeons pas costume dans le script Check Touching Player, le costume équivaut à un chèque en blanc n'est plus nécessaire si ce n'est pas le cas. Nous pouvons donc déplacer la position d' ajustement et vérifier si vous touchez les blocs du joueur au-dessus du bloc I puis, puis nous débarrasser du I puis bloquer. La raison pour laquelle nous n'avons pas besoin de procéder à cette vérification est que pour que Scratch détecte une collision entre deux sprites, les deux sprites doivent avoir un objet visible dans leur costume actuel Comme les sprites SponPoint originaux utiliseront toujours le costume vierge, qui, bien entendu, est complètement vide, ils ne toucheront jamais le sprite du joueur Bien, maintenant allons-y et ajoutons quelques clones de points d'apparition au Passons d'abord au script de configuration et débarrassons-nous de tous les blocs critiques de Clone. Et nous aurons également des points d'apparition au niveau quatre Nous allons donc remplacer le bloc I égal à trois ici par un bloc I thin outs. Pour ce faire, passons à Control et plaçons un bloc I Thinouts dans un espace vide. Déplaçons maintenant le niveau égal à trois blocs dans le bloc ITN outs, puis remplaçons le bloc ITN par le bloc I then outs OK ? Maintenant, lançons le jeu et activons le mode Dieu. Nous placerons des points d'apparition sur les bords de toutes les parties du niveau d'où le joueur pourrait tomber et tomber dans le liquide Par exemple, l'endroit où le joueur commence est en fait une bonne position, et aussi sur cette plate-forme flottante ici et près du bord de ce côté. OK, nous allons donc créer le premier à peu près ici, près de la position de départ du joueur. Passons donc à MI Blocks et ajoutons un bloc Create Clone pour le niveau 1, et utilisons les valeurs X et Y cliquées pour les entrées Si nous lançons le jeu, nous pouvons maintenant voir le clone de Spawn Point, et si nous y entrons, les valeurs du joueur X et joueur Y sont définies sur la position du Nous allons maintenant en créer un ici. Ajoutons un autre bloc Create Clone et saisissons les valeurs de points sur lesquelles vous avez cliqué Nous devrions maintenant voir les deux clones lorsque nous lancerons le jeu. Et les valeurs de position de l'intervalle changent au fur et à mesure que nous faisons des allers-retours entre les clones. Mais bien entendu, nous ne voulons pas que ces grands rectangles apparaissent réellement dans le jeu Donc, une chose que nous pouvons faire est de passer au script « when I start » en tant que script de clonage, et au lieu d'utiliser le composant Z dans le bloc de tri des couches, nous pouvons utiliser l'arrière-plan Z. Cela fonctionne pour le moment car cela place les points d'apparition derrière les autres objets d'arrière-plan Cependant, il se peut que cela ne fonctionne pas toujours de cette façon. Pour comprendre ce que je veux dire, arrêtons le jeu et passons très rapidement aux costumes pour le point d'apparition de Sprite Choisissons le costume de Spawn Point et cliquons et faisons glisser le Sprite sur la scène Si nous lançons le jeu, les clones de Spawn Point apparaissent désormais devant les clones de Sprite en arrière-plan OK ? Donc, pour une autre solution possible, nous pouvons essayer de masquer tous les points d'apparition Pour ce faire, revenons au code du Spawn Point Sprite Dans le script du drapeau vert, retirons le bloc d'affichage et mettons-le de côté. Passons ensuite à Looks et ajoutons un bloc de masquage au script. Si nous lançons le jeu maintenant, les points d'apparition sont tous cachés, mais à mesure que nous parcourons les lieux, les valeurs des positions d'apparition ne changent pas Nous en avons déjà discuté brièvement, mais la raison en est que Scratch ne détecte pas les collisions sur les sprites cachés Il existe toutefois une solution à ce problème. Débarrassons-nous d'abord du bloc de masquage et réintroduisons le bloc d'affichage. Ajoutons maintenant un bloc d'effets fixes à deux blocs et fixons l'effet fantôme à 100. Cela rendra également les sprites invisibles, mais contrairement au fait de les masquer, Scratch détectera toujours les collisions sur eux Maintenant, lorsque nous passons en revue les emplacements des points d'apparition, les valeurs des positions d'apparition sont mises Génial. Maintenant, comme les clones des points d'apparition ne seront jamais visibles dans le jeu, nous n'avons pas du tout besoin de les trier dans les couches Nous pouvons simplement les laisser automatiquement pousser vers l'arrière, comme nous le faisons avec tous les sprites originaux Donc, dans le cas où je commence par un script de clonage, nous pouvons nous débarrasser du bloc de couches de tri. Ensuite, nous pouvons également nous débarrasser du script de la couche de tri. Et à des fins de test, allons-y et créons un autre point d'apparition juste au-dessus de la plateforme flottante là-haut Ensuite, nous allons faire en sorte que le sprite du joueur puisse réellement utiliser les valeurs de position du span lorsqu'il tombe dans le liquide Pour cela, entrons dans le code du sprite du joueur. Trouvons d'abord le script de position de départ défini. Et ici, au lieu de définir directement les valeurs X et Y de départ pour chaque niveau, définissons plutôt les valeurs X et Y d'apparition des joueurs Il s'agit simplement d'avoir une position d'apparition par défaut au début de chaque niveau Maintenant, après tous les blocs ITN avant d'ajuster la position, passons aux variables et ajoutons deux autres blocs définis Et maintenant, nous pouvons définir X pour l' apparition du joueur X et Y pour l'apparition du joueur Y. Allez-y, masquez également les variables de position d' apparition Ensuite, trouvons les scripts de déplacement vertical. En bas, nous vérifions si le joueur est descendu en bas de la scène, et si c'est le cas, nous diffusons le message du niveau de départ. Diffusons plutôt un nouveau message, que nous pouvons appeler respawn player Nous allons recevoir ce message et faire réapparaître le joueur. Alors d'abord, trouvons un espace vide. Passons maintenant aux événements, introduisons un bloc W I receive et recevons un joueur Respawn Maintenant, comme pour le script Bounce Player, nous ne voulons pas que ce script fasse quoi que ce soit lorsque le mode Dieu est activé Nous pouvons donc d'abord dupliquer le mode I God égal à un bloc du script Bounce Player, supprimer les blocs supplémentaires et l' ajouter au script du joueur de réapparition. OK. Passons ensuite au contrôle, introduisons un bloc d'arrêt et arrêtons les autres scripts dans Sprite C'est parce que nous ne voulons pas que le sprite du joueur fasse autre chose lorsqu'il réapparaît. Maintenant, comme nous pourrions éventuellement utiliser le script de réapparition du joueur à d'autres fins que lorsque le joueur tombe dans le liquide, nous allons ensuite vérifier si le joueur est tombé dans le liquide et, dans l'affirmative, nous lui enlèverons une partie de sa santé Alors introduisons un bloc « si alors ». Et pour ce qui est de la condition, nous pourrions vérifier si le sprite du joueur est descendu en bas de la scène, comme nous le faisons dans le script de déplacement vertical, ou comme le joueur sera dans le liquide à ce moment-là, nous pouvons passer à la détection, nous pouvons passer à la détection, introduire un bloc et vérifier si nous touchons le sprite liquide Si c'est le cas, nous ferons en sorte que le joueur soit blessé, mais uniquement s'il ne l'est pas déjà. Passons donc d'abord à Control et ajoutons un bloc IN au bloc liquide en cas de contact. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passez ensuite aux variables et vérifiez si le mal est égal à zéro. Cela signifie que le joueur n' est actuellement pas blessé et qu' il n'est donc pas invincible Et si c'est le cas, nous pouvons faire la même chose que dans le script Bounce Player, lançant le bloc Get Hurt, puis en arrêtant le script si le joueur est mort Dupliquons donc le bloc G hurt, qui devrait également dupliquer le bloc si un mort est égal à un bloc. Ensuite, nous pouvons les ajouter au bloc hurt equals zero et au script de réapparition du joueur Mais cette fois, pour ce qui est des dégâts infligés dans le bloc Get Hurt, choisissons-en un. Ensuite, si le joueur ne touche pas le liquide ou s'il le touche, mais qu'il est ne touche pas le liquide ou s'il le touche, toujours en vie, nous le réapparaîtrons en utilisant les valeurs X et Y d'apparition du joueur Pour ce faire, ajoutons deux blocs au bas du script, et définissons X pour apparaître le joueur X. Et Y pour le jeu Y. Nous voulons également nous assurer que le sprite ne Ajoutons donc deux autres blocs et réglons la vitesse X et la vitesse Y à zéro. OK, si nous lançons le jeu maintenant et que nous tombons dans le liquide, nous perdons de la santé et nous réapparaissons à la bonne position de span Et si nous mourons, le sprite disparaît et le niveau La réapparition fonctionne bien tant que la position de réapparition n'est pas trop éloignée du liquide Cependant, si nous tombons de la plateforme flottante là-haut, au moment où le sprite du joueur répond et que la caméra l'atteint, il est déjà tombé sur la plate-forme Si nous tombions d' un endroit encore plus haut dans le liquide, cela pourrait entraîner des problèmes de détection des collisions, car le sprite du joueur sera hors de la scène Pour résoudre ce problème, nous voulons suspendre le jeu et d'abord faire défiler la caméra vers le joueur, puis reprendre le jeu. Pour ce faire, nous devons d' abord saisir sortie ou le code du Sprite de verrouillage et copier le parchemin vers le script dans le sprite du joueur Revenons maintenant au code Sprite du joueur. De retour dans le script du joueur Respawn tout mettre en pause sauf le défilement, nous pouvons ajouter un autre set pour bloquer et régler l'état du jeu sur Auto Dash Ensuite, nous pouvons accéder au sprite du joueur en accédant d'abord aux blocs MI et en introduisant un défilement vers le bloc, puis en revenant aux variables et en utilisant les blocs X et Y comme entrées Ensuite, nous allons ajouter un court délai en accédant au contrôle, en introduisant un bloc attente et en attendant 0,5 seconde. Enfin, nous pouvons reprendre le jeu en accédant aux variables, en introduisant un ensemble à bloquer et en réglant l'état du jeu en cours d'exécution. Et maintenant, si nous lançons le jeu et que nous tombons dans le liquide, la caméra défilera jusqu'à la nouvelle position du joueur avant que le jeu ne reprenne Une chose étrange qui peut arriver, c'est que si nous faisons glisser un mur le long des carreaux dans le liquide, comme nous interrompons la majeure partie de la boucle de jeu, nous répondons dans le costume de toboggan mural De plus, si nous recommençons et que nous maintenons une touche de raccourci enfoncée avant que le jeu ne continue, nous pouvons sauter en l'air Cela se produit parce que lorsque le mur glisse, la variable d'entrée dans l'air et la variable de saut sont nulles. Ces valeurs sont reportées au fur et à mesure que nous répondons, ce qui nous permet de sauter. Donc, tout d'abord, pour résoudre le problème de saut, ajoutons deux autres blocs avant tout le défilement. Et partons à la fois dans les airs et sautons à une hauteur d'environ 99. Et pour le problème des costumes, nous pouvons simplement accéder à Looks, apporter un bloc de costumes Switch et passer au costume Fall Zero. Maintenant, nous devrions toujours réapparaître dans le costume d'automne zéro et ne pas être capables de sauter en l'air Génial. OK, et encore une chose que nous pouvons faire pour améliorer cela, c'est que si nous tombons plusieurs fois avant de mourir, lorsque le sprite du joueur disparaît, c'est un peu difficile à voir parce que le sprite se trouve à peine au-dessus du bas de la scène Pour l'empêcher de descendre jusqu'à présent, passons au script de déplacement vertical En bas, au lieu de vérifier si la variable Y du sprite est inférieure à moins 180, choisissons quelque chose comme moins 150 Passons également aux variables, ajoutons un ensemble à bloquer au bloc I puis, et fixons Y à moins 150. Passons ensuite aux blocs M et introduisons un bloc de réglage de position. Cela fera geler la position Y du sprite à moins 150 Si nous lançons le jeu maintenant et que nous tombons jusqu'à mourir, il est plus facile de voir le sprite disparaître avant le redémarrage du niveau Très bien, ce que nous pouvons faire maintenant, c'est revenir au code du sprite des points d'apparition et continuer à ajouter les points d'apparition aux niveaux OK, voici donc tous les blocs de craklone que j'utilise. Il y en a évidemment un bon nombre. Donc, si vous préférez ne pas embêter à saisir toutes ces valeurs vous-même, vous pouvez remplacer votre sprite de points d'apparition par celui que j'ai fourni en tant que ressource téléchargeable OK, et une fois les points d'apparition réglés, nous allons recommencer à ajouter les ennemis restants au jeu 102. Ajouter l'ennemi abeille: Le prochain ennemi que nous ajouterons au jeu est le Sprite B. Les costumes du B Sprite se composent d'une animation de mouche en deux images, d' un costume de mort et d'une boîte à hanches. Dans le jeu, nous ferons descendre les abeilles à plusieurs reprises en demi-cercle dans chaque direction, et elles garderont souvent quelque chose le joueur a besoin, comme une pièce ou une clé OK, et une grande partie du code du sprite Be sera le même que celui du sprite escargot Nous pouvons donc d'abord accéder au code du sprite Snail et copier tous les scripts Dans le code B Sprite, passons au script d'animation. L'état d'animation de l'abeille est l'état de mouche. Alors, déménageons ici pour voler. Le Be devrait également s'animer un peu plus vite que l'escargot. Changeons donc un cadre anim de 0,15. Passons maintenant au script Crit Clone. Le premier costume que nous voulons adopter est fly zero, et l' état par défaut doit être fly. Nous n'utiliserons pas les variables minx et maxx pour le B, nous pouvons donc nous débarrasser de toute cette direction I égale 90 blocs ici. Nous n'aurons pas non plus besoin de fournir de distance lors de la création d'un clone. Faisons donc un clic droit sur le bloc défini et choisissons Modifier. Supprimons d'abord l'étiquette de distance, puis la distance saisie et cliquez sur OK. Nous devons cependant initialiser quelques nouvelles variables Passons donc aux variables. Si nous avons toujours les variables Maxx et minx, nous pouvons cliquer avec le bouton droit sur l'une d'elles et la renommer en angle Ensuite, nous pouvons renommer l' autre pour retarder. L'angle gardera une trace de l'angle actuel du B lorsqu'il baisse et nous utilisons le délai pour ajouter une courte pause entre chaque fois que le Be descend et nous utilisons le délai pour ajouter une courte pause entre chaque fois que le Be OK, nous pouvons maintenant initialiser les deux variables en ajoutant deux blocs supplémentaires au script Crit Clone Et en réglant l'angle et le délai à zéro. Ensuite, dans le script When I Receive Update One, changeons d'état = déplacement ici en état égal à vol. Et dans le script d'action Handle, nous laisserons l'intégralité de l'état I égale à un bloc mort, mais nous ne pouvons pas nous débarrasser de tout le reste. Et allons-y et ajoutons le premier B au jeu. Tout d'abord, dans le script de configuration, débarrassons-nous de tous les blocs Crack Clone. Ensuite, lançons le jeu et activons le mode Dieu. Pour éviter d'avoir à aller trop loin lors des tests, nous placerons temporairement un B près du point de départ du joueur au niveau 1. Cliquons quelque part ici. Accédez ensuite à Mblocks, ajoutez un bloc Cre Clone pour le niveau 1 et saisissez les valeurs de position cliquées Et allons-y avec 90 pour la direction. Si nous cliquons sur le drapeau vert, nous avons notre première animation B. Maintenant, nous allons travailler à faire descendre le B vers le bas Pour cela, revenons au script d'action Handle. Au fur et à mesure que le B descend, il se déplace à la fois vers le bas et horizontalement dans le sens de son espacement Donc, d'abord, pour le mouvement horizontal, passons aux variables et ajoutons une modification par bloc au bas du script, puis changeons la variable X. Nous voulons que le sprite se déplace d' une certaine quantité dans la direction dans laquelle il fait face Pour ce faire, passons aux opérateurs et ajoutons un bloc de multiplication au bloc X de modification. Placez ensuite le bloc de division sur le côté gauche. Passons maintenant au mouvement, et faisons la direction divisée par 90 fois 3,5 pour la vitesse. Si nous lançons le jeu maintenant, le B commence à voler vers la droite. Ensuite, pour faire descendre le sprite en arc de cercle, nous devrons utiliser un peu de trigonométrie et nous devrons également Passons donc d'abord aux variables et apportons une autre modification par bloc. Et changeons l'angle par dix. La valeur que nous utilisons ici affectera la vitesse à laquelle le B basculera et nous devrons probablement l' ajuster un peu au fur OK, maintenant introduisons un ensemble à bloquer, et définissons la vitesse Y. C' est là que nous devrons utiliser une certaine trigonométrie pour que le sprite ralentisse lorsqu' il se dirige vers le bas de l'arc, puis qu'il accélère à nouveau au fur et à mesure qu'il remonte. Nous pouvons utiliser la méthode du cosinus Nous pouvons Cependant, le cosinus nous donne très petits nombres compris entre moins un et un Nous devrons donc multiplier la valeur par un plus grand nombre. Passons donc aux opérateurs, et ajoutons d'abord un bloc de multiplication au bloc Y de vitesse défini. Ensuite, mettons un abdos de bloc sur le côté gauche et changeons-le en fonction cause. Ensuite, nous voulons accéder aux variables et obtenir le cosinus de la variable d'angle Et multiplions-le par deux. Plus le nombre que nous utilisons ici est élevé, plus le B descendra vers le bas. Enfin, nous pouvons apporter une modification par bloc et modifier Y par la vitesse Y. Si nous lançons le jeu maintenant, le B bascule, mais il augmente au début Pour le réduire au début, nous devons annuler tous Pour ce faire, passons aux opérateurs et plaçons un bloc de soustraction dans un espace vide Maintenant, prenons le bloc de multiplication ici, plaçons-le sur le côté droit, soustrayons-le de zéro et utilisons tout cela pour régler la vitesse Y. Le B devrait maintenant commencer à descendre Mais cela ne descend pas assez loin, alors essayons de le multiplier par cinq dans le bloc Y à vitesse définie C'est mieux, mais pour ralentir un peu, nous pouvons essayer de changer la variable d' angle de quatre. Cela devrait fonctionner. Bien, ensuite, nous voulons arrêter l'abeille lorsqu'elle atteint le sommet de l'arc, faire demi-tour et basculer dans la direction Pour commencer avant de régler la vitesse Y, nous remettrons l'angle à zéro s'il a atteint 180 ou plus. Cela fera descendre le sprite en continu une fois qu'il aura atteint sa position Y d'origine Alors d'abord, passons à Control et plaçons un bloc ITN dans un espace vide Pour ce qui est de la condition, allons voir les opérateurs, apportons un ou un bloc. Placez ensuite un bloc égal d' un côté et un bloc supérieur à de l'autre. Passons maintenant aux variables et vérifions si l'angle est égal à 180 ou si l'angle est supérieur à 180. Si c'est le cas, introduisons un ensemble à bloquer et fixons l'angle à zéro. Pour que le sprite descende ensuite dans la direction opposée, il suffit d' inverser sa Pour ce faire, passons au mouvement et ajoutons un bloc de points et de directions au bloc I then. Pour l'entrée, passons aux opérateurs et introduisons un bloc de soustraction. Revenons ensuite au mouvement, et faisons zéro dans la direction négative. Si nous plaçons le bloc I alors juste au-dessus du bloc Y de vitesse défini et que nous lançons le jeu, le B descendra désormais continuellement dans des directions alternées nous ne voulons certainement pas qu'il se renverse, alors changeons le type de rotation à gauche ou à droite. Allons-y. Cependant, si nous attendons quelques secondes, nous pouvons voir que le B se rapproche de plus en plus du fond. Cela est dû au fait que nous continuons à modifier la position Y même après avoir redéfini l'angle, ce qui fait que le sprite s'arrête légèrement en dessous de sa position Y d'origine. Pour résoudre ce problème, nous pouvons aller dans Control, placer un bloc d'arrêt en bas du I puis bloquer et arrêter ce script. Maintenant, il doit toujours s'arrêter à sa position Y initiale en haut de l'arc. ne nous reste plus qu'à ajouter un bref délai avant que le B ne change de direction et ne redescende. Pour ce faire, retirons d'abord le bloc de points et de directions ici, mettons-le côté et attendons du délai pour changer de direction. Assurons-nous de réinsérer le bloc stop dans le bloc I then. Passons maintenant aux variables et ajoutons un autre ensemble à bloquer au bloc I then, et fixons le délai à 30. Cela créera un délai de 30 images ou 1 seconde. Ensuite, avant de passer au point B, nous allons vérifier si le délai est supérieur à zéro, et si c'est le cas, nous allons faire différentes choses Alors d'abord, passons au contrôle et plaçons un bloc I dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si le délai est supérieur à zéro. Si c'est le cas, nous voulons d'abord réduire la valeur différée, donc introduisons une modification par bloc et changeons le délai par moins un. Ensuite, nous voulons vérifier si la valeur du délai a atteint zéro, et si c'est le cas, nous allons changer la direction du sprite et commencer à basculer dans la direction Sinon, nous ne voulons pas que le sprite fasse quoi que ce soit Nous allons donc arrêter le script Passons donc au contrôle et introduisons un bloc si puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le délai est égal à zéro. Si c'est le cas, nous pouvons importer le bloc de points et de directions que nous avons enregistré ici. Sinon, nous pouvons passer au contrôle, introduire un bloc d'arrêt et arrêter ce script. Si nous plaçons maintenant tout cela juste au-dessus du bloc X de modification et que nous lançons le jeu, il y aura un court délai entre chaque fois que le B sautera. Si nous y regardons d'un peu plus près, il continue en fait à se déplacer un peu horizontalement même après l'arrêt de son mouvement vertical. Pour résoudre ce problème, il suffit de prendre le bloc X de modification et de le déplacer en dessous du bloc I puis de réinitialiser l'angle. Allons-y. OK, nous presque fini avec les sprites Be Mais d'abord, lançons le jeu et désactivons le mode Dieu. Si nous sautons au-dessus du Be, cela tue l'abeille, ce qui était normal. Cependant, si nous arrivons au bon moment et que l'abeille nous frappe par le côté lorsque nous tombons, elle tue également l'abeille, même si elle devrait probablement nous blesser. Cela se produit parce que dans le script check touch player, si l'abeille touche le joueur, tant que le joueur est en état de chute, l'abeille mourra. Cela convenait parfaitement au sprite d'escargot, car les escargots sont toujours au sol, mais cela cause des problèmes aux ennemis qui se trouvent dans les airs Donc, ce que nous pouvons faire, c' est faire sorte que le sprite du joueur soit en état de chute et soit au moins légèrement plus haut que le sprite de l'abeille pour tuer l' Pour ce faire, passons d'abord aux opérateurs et plaçons un bloc dans un espace vide. Supposons que l'état du joueur est égal à un bloc de chute ici pour un camp, et pour l'autre camp, introduisons un bloc supérieur à. Placez ensuite un bloc d'addition sur le côté droit. Pour le côté gauche du bloc supérieur à, utilisons une copie de l'état du bloc joueur. Mais cette fois, nous voulons obtenir la variable Y du joueur. Nous pouvons maintenant passer aux variables, et vérifions si Y du joueur est supérieur la variable Y des sprites B majorée d'un certain montant J'ai trouvé que 15 fonctionne plutôt bien. Si nous utilisons maintenant tout cela comme condition et que nous lançons le jeu, sauter dans le B fait mal au joueur. Alors maintenant, nous devons vraiment sauter au-dessus du B pour le tuer. Parfait. Très bien, nous avons fini de coder le sprite B. Nous pouvons donc maintenant continuer à ajouter les clones aux niveaux. Je vais d'abord me débarrasser de ce bloc Create Clone. Comme celui-ci n'était qu' à des fins de test, je vais créer ceux que je vais réellement utiliser dans le jeu. OK, voici les blocs Create Clone que j'utilise pour les abeilles. Et une fois que nous serons prêts, nous pourrons passer à la leçon suivante. Où nous ajouterons la mouche ennemie. 103. Ajouter l'ennemi de la mouche: Pour créer la mouche, l'ennemi utilisera bien sûr le sprite mouche ici Comme le sprite Be, le sprite mouche possède une animation de mouche à deux images, un costume de mort et une boîte à hanches Les mouches vont faire à peu près la même chose que les escargots, est-à-dire se déplacer d'avant en arrière sur une distance spécifiée, sauf qu'elles le feront dans les airs plutôt que sur le sol OK, donc pour coder le sprite mouche, cela va être très simple, car nous pouvons simplement voler certains des scripts du sprite de l'escargot et du sprite d'abeille et n'apporter que Passons donc d'abord au code du sprite B. À partir du Sprite B, nous pouvons copier le script du joueur à cocher dans le Sprite à la volée, ainsi que le script d'animation, trier les couches, ajuster la trier les couches, ajuster Quand j'ai commencé en tant que clone, quand je reçois la troisième mise à jour et quand je reçois la première mise à jour. Passons maintenant au sprite Snell. À partir de là, nous pouvons copier les actions de gestion de Craik Clone. Lorsque je reçois la deuxième mise à jour, le script de configuration et le script du drapeau vert. OK, maintenant entrons dans le code du fly sprite et nettoyons-le. Il ne nous reste que quelques modifications à apporter. Tout d'abord, dans le script d'animation, nous allons accélérer un peu l'animation de la mouche en modifiant l'image animée de 0,25 Ensuite, dans le script Rake Clone, nous voulons passer au costume Fly Zero et définir l'état pour voler Enfin, lors des actions de manipulation, nous voulons que les mouches se déplacent un peu plus vite que les escargots Donc, dans le bloc change X , multiplions par 2,5, et c'est tout. Nous pouvons maintenant passer au script de configuration et commencer à créer des clones. abord, débarrassons-nous des blocs de création de clones et n'hésitez pas à ajouter des fichiers au niveau 1 de votre jeu, mais je n'en ajouterai que dans les niveaux deux et trois. Donc, d'abord, je vais me débarrasser du fait que le niveau I est égal à un bloc ici. C'est bon. Et pour le premier clone, commençons le jeu. Activez le mode Dieu et passez au niveau deux. Approchons-nous du coin supérieur droit du niveau. Sur cette tuile avec le point d'exclamation ici, nous allons créer une mouche qui vole d'avant en arrière entre les murs Ajoutons donc un bloc de clonage critique pour le niveau deux, et utilisons 12 80 pour X, 530 pour Y, 200 pour la distance et moins 90 pour la direction. Assurons-nous maintenant de régler le type de rotation des sprites volants sur la gauche, la droite, puis d'appuyer sur le drapeau vert L'excellence. Nous avons maintenant notre premier ennemi volant. Bien, je vais maintenant créer les clones volants restants. Et voici tous les blocs de clonage en crêpe que j'utilise. OK, nous allons continuer à avancer en ajoutant ensuite le poisson ennemi. 104. Ajouter l'ennemi du poisson: Le dernier ennemi que nous ajouterons au jeu en plus du boss est le Fish Sprite. Les costumes du Fish Sprite se composent d'une animation à deux images, d' une animation à deux images, d' un costume de mort et d'une boîte à hanches Bien entendu, les poissons débuteront dans l'eau avec la tête légèrement au-dessus de l'eau. Après un bref délai, ils sautent hors de l'eau, retombent dans l'eau et répètent le processus. Le but sera d'essayer d'empêcher le joueur de sauter sur une partie particulière de l'eau. OK, et pour coder le sprite de poisson, nous pouvons commencer par entrer dans le code du sprite mouche et copier tous les scripts Très bien, dans le code Fish Bright, passons d'abord au script Create Clone Le costume que nous voulons adopter est le costume Up Zero. Ensuite, comme les clones de poissons commencent toujours au bas du niveau dans l'eau, nous pouvons utiliser la même position Y pour chacun d'eux afin de nous débarrasser du bloc d'entrée Y dans le bloc Y défini, et de le régler sur moins un ou cinq Cela signifie également que nous n'avons plus besoin de fournir une entrée Y dans le script. Faisons donc un clic droit sur le bloc défini et choisissons Modifier. Supprimons d'abord l'étiquette Y, puis supprimons l'entrée Y. Nous n'aurons pas non plus besoin d' une saisie de distance. Supprimons donc l'étiquette de distance, puis l' entrée de distance, et cliquez sur OK. Ensuite, l' état de départ devrait être activé, et nous n'aurons pas besoin de définir un X minimum et un maximum pour le poisson, car il ne se déplacera pas horizontalement, ce qui nous permettra de nous débarrasser du bloc I thin s. Nous devrons toutefois créer quelques nouvelles variables. Passons donc aux variables. Tout d'abord, nous pouvons renommer les variables Maxx et Minix. Changeons-en un pour démarrer Y et changeons l' autre en minuteur. Si nous devons également créer une nouvelle variable. Appelons cela une fois de poids et faisons-le uniquement pour ce sprite, et nous n'avons pas besoin de le montrer Toute la variable de poids et de temps indiquera le temps pendant lequel un clone doit attendre entre deux sauts. Cette valeur ne changera pas pendant le jeu, nous pouvons donc la définir dans le script du drapeau vert. Pour ce faire, ajoutons un bloc défini à deux au script et fixons le temps d'attente à 30 pour 30 images. Bien, revenons maintenant au script de création de clones. Nous utiliserons la variable de départ Y pour ramener un clone à sa position Y initiale après avoir sauté. Donc, pour définir la variable, ajoutons un ensemble à bloquer juste après le bloc set Y, et nous pouvons définir start Y en utilisant la variable Y. Maintenant, ajoutons deux autres blocs et réglerons le chronomètre à zéro en fonction de la pondération, du temps et de la vitesse. OK, ensuite, dans le script d' animation, nous voulons animer si le clone est à l'état actif ou à l'état inactif, ou en d'autres termes, pas à l'état ou en d'autres termes, mort Passons donc aux opérateurs et introduisons un bloc de nœuds dans un espace vide Ensuite, nous pouvons déplacer le bloc state equals fly dans le bloc knot, le changer en state equals dead, et utiliser le bloc nœud comme condition. Et changeons une image anim de 0,2. De même, lorsque je recevrai la première mise à jour, nous voulons vérifier si le clone touche le joueur alors qu'il n' est pas dans l'état mort, afin de supprimer l'état = bloc mouche et de le remplacer par un double de l'état non = bloc mort du script animé. Trouvons maintenant le script d'action Handle. Pour l'instant, nous pouvons simplement nous débarrasser de tout une fois que je suis mort équivaut à un bloc. Bien, nous pouvons maintenant passer au script de configuration et créer des clones En fait, nous n'allons créer des clones de poissons qu' au niveau trois Donc, d'abord, nous pouvons extraire le niveau I égal à trois blocs ici, supprimer le bloc I puis s, et ajouter le niveau I égal à trois blocs le script avant de passer du costume au bloc vide. Et débarrassons-nous des blocs Create Clone. Maintenant lançons le jeu. Activez le bon mode et passez au niveau trois. Venons-en au fond. Nous allons créer le premier clone dans l'eau juste ici, et nous allons le faire sauter jusqu'à la pièce. OK, alors passons à MI Blocks et ajoutons un bloc Crate Clone pour le niveau 3. Et utilisons trois sur cinq pour X et 90 pour la direction. Cliquons à nouveau sur le drapeau vert. Et maintenant, passons à droite. Nous allons créer un autre clone ici en sautant sur cette pièce. Ajoutons donc un autre bloc de clonage critique, et utilisons une direction 17 64 x et une direction négative 94. OK, allons-y et changeons le type de rotation des sprites à gauche ou à droite Et si nous cliquons à nouveau sur le drapeau vert, nous avons maintenant deux clones de poissons qui s'animent dans l' Maintenant, nous devons faire sauter le poisson en l'air. Pour cela, trouvons le script d'action Handle. abord, au bas du script, nous voulons vérifier si le clone est actuellement à la position Y de départ. Donc, pour commencer, passons au contrôle et introduisons un bloc « si alors ». Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si Y est égal au départ Y. Si c'est le cas, nous vérifierons si le chronomètre est terminé, et si c'est le cas, nous ferons sauter le clone Dans le cas contraire, nous réduirons simplement le temps imparti. Passons donc au contrôle et ajoutons un bloc I thin s au bloc I thin. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le chronomètre est égal à zéro. Pour faire sauter le clone, nous pouvons d'abord introduire un set à bloquer, et régler la vitesse Y 230. Ensuite, nous pouvons apporter un changement par bloc et changer Y par la vitesse Y. Et si le chronomètre n'est pas égal à zéro, nous pouvons apporter un changement par bloc et changer le chronomètre par moins un Ensuite, nous allons continuer à modifier la position Y du clone en utilisant la vitesse Y tout en utilisant la gravité pour le ramener vers le bas. Pour ce faire, avant de vérifier si Y est égal au début Y, nous allons vérifier si Y est supérieur au début Y. Passons d'abord au contrôle et plaçons un si dans un espace vide Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si Y est supérieur au Y de départ. Si c'est le cas, introduisons une modification par bloc et changeons Speedy par gravité Apportons ensuite un autre changement par bloc et changeons Y par la vitesse Y. Si nous mettons maintenant cela, je bloque juste au-dessus du IY, cela équivaut à démarrer le bloc Y et à lancer le jeu Après la première pause d'une seconde, le poisson sautera et tombera continuellement il ne revient pas tout à fait à Cependant, il ne revient pas tout à fait à sa position Y de départ avant de sauter à nouveau, et c'est parce que nous remontons immédiatement la position Y dès qu'il atteint la position de départ. Pour résoudre ce problème, nous pouvons passer au contrôle à un bloc d'arrêt situé en bas du bloc I Y supérieur bloc Y de départ et arrêter ce script. Cela fera attendre la prochaine image avant que le clone ne saute à nouveau. OK. Maintenant, deux autres choses que nous voulons faire sont de faire en sorte que le clone passe à l'état inactif une fois qu'il commence à redescendre et de le mettre pause chaque fois qu'il atteint le bas. abord, pour passer à l'état inactif, plaçons le bloc « if » dans un espace vide. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si la vitesse Y est inférieure à zéro. Cela signifie que le clone va redescendre afin que nous puissions introduire un ensemble à bloquer et le placer directement vers le bas. Maintenant, mettons ce bloc I Thin juste au-dessus du bloc stop this script. Ensuite, pour que le clone fasse une pause en bas, passons au contrôle et plaçons un autre bloc I Thin dans un espace vide. Pour la condition de celui-ci, passons aux opérateurs et introduisons un bloc égal. Passez ensuite aux variables et vérifiez si Y est égal au début Y. Si c'est le cas, nous pouvons introduire un ensemble à bloquer et régler le chronomètre en fonction du temps d'attente Et nous devrions également introduire un autre ensemble pour bloquer et définir l'état deux afin que le clone soit à nouveau face visible. Si nous plaçons maintenant ce bloc au-dessus du bloc stop ce script et si y est supérieur à celui de démarrer Y et de lancer le jeu, le poisson passe à l' état inactif lorsqu'il redescend et s'arrête brièvement en bas avant de sauter à nouveau. Cela fonctionne vraiment, et ça a l'air bien, mais l'arrêt en bas semble un peu trop brusque Il serait préférable de laisser le poisson s' arrêter plus progressivement en bas, puis de revenir à sa position de départ avant de faire une pause et de sauter à nouveau Pour ce faire, lorsque le clone est à l'état inactif et sa position Y n'est pas toujours au-dessus de sa position Y de départ, nous pouvons continuer à déplacer le clone vers le bas tout en réduisant progressivement la vitesse à zéro. Ensuite, nous le déplacerons étape par étape jusqu' à ce qu'il revienne à sa position initiale. OK, donc d'abord, passons au contrôle et en installons un autre, si ce n'est qu'un bloc, dans un espace vide. Pour ce qui est de la condition, nous voulons vérifier si le clone est dans le creux et s'il n' est pas toujours au-dessus de sa position de départ Passons donc aux opérateurs et introduisons d'abord un bloc and. Mettons un bloc égal d'un côté, et de l'autre côté, utilisons un bloc, puis un bloc supérieur à. Passons maintenant aux variables, et vérifions si l'état est égal à et si Y n'est pas supérieur au Y de départ. Maintenant, nous allons progressivement réduire la vitesse Y à zéro Mais une fois que la vitesse Y est proche de zéro, nous voulons faire passer le clone vers le nord et lui permettre revenir à sa position initiale Passons donc d'abord au contrôle et ajoutons un bloc de sorties ITN au bloc ITN. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Ensuite, mettons un bloc rond sur le côté gauche. Passons maintenant aux variables et vérifions si la valeur arrondie de la vitesse Y est égale à zéro. Si c'est le cas, introduisons un ensemble à bloquer et réglons vitesse Y sur zéro pour empêcher le clone de descendre davantage, puis ajoutons un autre ensemble à bloquer et activons l'état 2. Si la vitesse Y n'est pas encore proche de zéro, nous allons continuer à la réduire. Pour ce faire, ajoutons un bloc set two à la partie ts et définissons la vitesse Y. Pour l'entrée, passons aux opérateurs et introduisons un bloc de multiplication Revenons ensuite aux variables, et réglons la vitesse Y sur la vitesse Y multipliée par 0,5. Il doit s'agir d'une valeur décimale de 0 à 1, et plus la valeur choisie est élevée, plus le clone s' arrêtera lentement Pour réellement déplacer le clone, nous devons apporter une modification par bloc et changer Y par la vitesse Y. Enfin, après le bloc ITN, passons à Control, passons à Control, introduisons un bloc d'arrêt et arrêtons ce script Si nous plaçons maintenant ce bloc ITN au-dessus de tous les autres pour vérifier la variable Y et lancer le jeu, le poisson fera exactement la même chose qu'avant Cela est dû au fait que nous définissons l'état deux ici dès que le clone retrouvera sa position initiale. Puisque le bloc I Thin ici cherche l'état inactif, la condition n'est jamais remplie. En fait, nous ne voulons pas régler l'état 2 ou régler le chronomètre ici, afin de pouvoir extraire tout ce bloc IY égal au départ Y et le mettre de côté. Mais veillons à ce que le bloc d'arrêt de ce script en bas de l' IY soit supérieur au bloc Y de départ. Si nous essayons à nouveau, le poisson s'arrête maintenant plus progressivement au fond de l'État avant de passer au nord de l'État OK, donc la dernière chose que nous voulons faire est de remettre le poisson dans sa position de départ afin qu'il puisse faire une pause et sauter à nouveau. Pour cela, nous devrons en apporter un autre , puis le bloquer dans un espace vide. Pour cette condition, nous vérifierons si le clone est à l'état haut et en dessous de sa position de départ. Passons donc aux opérateurs et introduisons un bloc and. Mettons ensuite un bloc égal d' un côté et un bloc inférieur à un bloc de l'autre côté. Passons maintenant aux variables, et vérifions si l'état est égal à up et si y est inférieur au Y de départ. Si c'est le cas, nous pouvons apporter une modification par bloc et changer Y d'un pour le déplacer d'un cran vers le haut Ensuite, nous allons vérifier si le clone s'est rapproché de sa position de départ. Pour ce faire, prenons d'abord le bloc IY égal au début Y que nous avons enregistré ici et le plaçons juste en dessous du bloc Y de modification. Au lieu d'utiliser directement la valeur Y ici, car elle pourrait ne pas correspondre exactement à la valeur Y de départ, nous voulons passer aux opérateurs et envelopper le bloc Y avec un bloc rond. Et si c'est le cas, nous voulons régler le temps d'attente, mais le clone sera déjà dans le nord de l'État Donc, avec ce paramètre défini sur bloc, mettons Y pour démarrer Y, pour placer le clone à sa position de départ exacte. Enfin, passons à Control, ajoutons un bloc d'arrêt tout en bas du bloc externe if thin et arrêtons ce script. Si nous plaçons maintenant ce bloc mince au-dessus tous les autres et que nous l'essayons, le poisson s'arrête doucement en bas, remonte lentement, remonte lentement, fait une pause et saute à nouveau Parfait Bien, la dernière chose à faire pour terminer les trois premiers niveaux est d'ajouter les rampes de saut, ce que nous ferons dans la prochaine leçon. 105. Ajouter les sauts: Il y a quelques places au niveau 3 qui sont un peu trop hautes pour que le joueur puisse revenir normalement. Nous y fournirons donc des rampes de saut pour augmenter la hauteur de saut du joueur, et nous le ferons en utilisant le sprite de la rampe de saut ici Si nous regardons les costumes, le sprite du jump pad possède un costume en duvet lorsque le joueur ne saute pas dessus en ce moment, un costume en haut pour les moments où il le fait, et il possède également une boîte à hanches séparée pour le nord de l'État et le nord de l'État OK, maintenant pour coder le sprite du jump pad, commençons par accéder au code du sprite à pièces et en copiant quelques scripts Tout d'abord, copions le script Check Touching Players. Nous n'animerons pas les sauts, nous pouvons donc ignorer le script d' animation. Ensuite, nous pouvons copier des couches de tri sur un CrakKlone. Et ajustez la position. Passons maintenant au moment où je commencerai en tant que clone et quand je recevrai la troisième mise à jour. Car lorsque je recevrai la deuxième mise à jour, nous voulons tout sauf le bloc d'animation Nous allons donc d'abord extraire le bloc d'animation, copier le reste du script, puis réinsérer le bloc d'animation Enfin, copions-le lorsque je recevrai la première mise à jour, lorsque je recevrai la configuration. Et le script du drapeau vert. Passons maintenant au jump pad Sprite et nettoyons le code OK, donc dans le script du joueur qui touche les chèques, nous allons passer au costume down hip box pour le moment, et nous n'allons pas changer la variable pièces ni supprimer le clone ici afin de pouvoir nous débarrasser de ces trois blocs à l'intérieur du bloc joueur I touch. Ensuite, dans le script Crete Clone, nous passerons au costume en duvet. Nous n'aurons pas besoin d'une variable de cadre nom, mais nous aurons besoin d' une variable d'état, afin de pouvoir accéder aux variables et renommer un cadre en Moi et ici, nous pouvons changer d'état en position basse. Et débarrassons-nous du bloc de pièces de change. Très bien, maintenant nous pouvons ajouter quelques clones de jump pad au jeu. Passons donc au script de configuration. Nous n'ajouterons des rampes de saut qu'au niveau trois Nous pouvons donc d'abord nous débarrasser des blocs Create Clone, et le niveau I est égal à trois blocs, sortir le bloc, attacher le costume de switch au bloc vide situé en bas de celui-ci, débarrasser de l'autre s'il bloque. Et réinsérez tout cela dans le script. Maintenant lançons le jeu. Assurez-vous que le mode Dieu est activé et que nous sommes au niveau trois. Et passons en bas au centre du niveau. Nous allons placer le premier clone de la rampe de saut au sol, juste en dessous de la pièce. D'accord ? Passons donc aux blocs M et ajoutons un bloc Crate Clone pour le niveau trois. Et allons-y avec 625 pour X et moins trois pour Y. Passons maintenant un peu plus à droite Nous allons placer l'autre juste en dessous de la touche verte. Ajoutons donc un autre bloc critique Clone, et utilisons 13 55 pour X, et nous utiliserons également un Y de moins trois pour celui-ci. Si nous cliquons à nouveau sur le drapeau vert, vous pouvez maintenant voir les clones de la rampe de saut, mais ils utilisent actuellement des costumes Hip Box Cela se produit parce que dans le script Check Touching Players, nous passons au costume Down Hip Box. Et comme nous n'avons aucun script d'anime pour le remettre à un costume normal, il reste juste sur le costume Hipbox Pour l'instant, nous pouvons corriger ce problème en allant dans Looks, en ajoutant un bloc de costumes en bas du script et en passant au costume en bas. Maintenant, nous devrions voir les clones porter le costume en duvet. OK, maintenant, contrairement aux ennemis et aux objets de collection, nous voulons faire en sorte que le joueur ne puisse pas franchir les rampes de saut. Pour ce faire, nous devons accéder au code Sprite du joueur et trouver la case qui touche un script solide Et ici, en plus de vérifier si nous touchons le sprite du niveau ou le sprite de verrouillage, nous vérifierons également si nous touchons le sprite du jump pad Tout d'abord, nous pouvons dupliquer le bloc or ici et le mettre dans un espace vide pour le moment. Débarrassons-nous du premier bloc tactile et transformons l'autre en pavé tactile. Nous pouvons maintenant déplacer le bloc ou du bloc if then vers le côté gauche de ce bloc ou bloc, puis utiliser tout cela comme condition. Nous ne devrions plus être en mesure de franchir les rampes de saut. Et on peut aussi marcher dessus. Bien, revenons maintenant au code du sprite du jump pad. Dans le script Check Touching Player, nous voulons en fait exécuter l'un de ces blocs uniquement lorsque le clone est dans le downstate Si c'est dans le nord de l'État, nous passerons simplement au costume up hip box Passons d'abord au contrôle, prenons un bloc ITN Outs et intégrons la partie I à tout ce qui se trouve dans les scripts Nous pouvons maintenant déplacer le costume Switch vers le bas du bloc, dans la partie Outs, mais nous voulons plutôt passer au costume up hip box. Pour connaître l'état du bloc ITN Outs, allons voir les opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'état est égal à zéro. Si c'est le cas, nous passerons au costume down hip box et vérifierons si nous touchons le joueur. Maintenant, si nous touchons le joueur, pour le moment, nous allons simplement passer au nord de l'État Apportons donc un ensemble à bloquer et définissons l'état deux. Et nous voulons également apporter une copie du costume de Switch à Up Hip Box Block ici. Maintenant, avant d'essayer, nous devons encore revenir au costume normal en duvet ou au costume normal, selon l'état. Nous voulons en fait le faire lorsque je recevrai la mise à jour du script. Et comme nous devrons également faire quelques autres choses ici, nous allons créer un bloc personnalisé pour cela. Passons donc à MyBlocks et créons-en un nouveau. Nous pouvons l'appeler gérer les actions et cliquer sur OK. Ajoutons un bloc d' actions de gestion au bloc I then du script de mise à jour. Placez ensuite le bloc d'actions de manipulation défini dans un espace vide. Et pour l'instant, nous pouvons passer au bon costume en accédant abord à Looks et en introduisant un bloc de costume switch, puis en passant aux variables et en utilisant un bloc d'état comme entrée. , si nous essayons tout maintenant, Cependant, si nous essayons tout maintenant, cela ne fonctionnera pas réellement. Sauter sur une rampe de saut ne le place pas dans le nord de l'État. Cela est dû au fait que les sprites du joueur déplacent verticalement, déplacent le sprite vers le haut juste assez pour que sa boîte à hanches ne touche pas la zone des hanches du jump pad Par conséquent, le script Check Touching Player ne détecte jamais de collision avec le joueur. Ce que nous pouvons faire, c'est abord déplacer le clone d'une étape vers le haut, puis vérifier qu'il n'y a pas de collision. Pour ce faire, cliquez sur le script Check Touching Player. Passons au mouvement, saisissons une modification Y par bloc, et plaçons-la juste en dessous du costume de changement pour appuyer sur le bloc de case. Et il suffit de changer Y par un. Maintenant, après avoir vérifié si nous touchons le joueur, nous voulons remettre le clone dans sa position initiale. Prenons donc une autre modification Y par bloc, plaçons-la juste en dessous du bloc joueur I touch et changeons Y par moins un. Si nous lançons maintenant le jeu et sautons sur le tremplin, il passe à l'état actif. OK, donc ensuite, après un court laps de temps, nous voulons que le pavé de saut revienne automatiquement à l'état inactif. Pour ce faire, nous avons besoin d' une nouvelle variable. Passons donc aux variables et créons-en une nouvelle. Nous pouvons l'appeler timer et le créer pour ce sprite uniquement, et cachons-le Maintenant, ajoutons un autre set à bloquer au bloc si vous touchez le lecteur, et réglons le chronomètre sur 20 Cela créera un délai de 20 images, soit un peu moins d'une seconde. D'accord ? Maintenant, pour utiliser réellement la variable timer, passons au script d'action handle. La variable timer n'est importante que si le clone est actuellement à l'état actif. Donc, pour vérifier cela, passons d'abord au contrôle et plaçons un bloc if then dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal, puis passons aux variables et vérifions si l'état est égal à supérieur. Si c'est le cas, réduisons la variable du chronomètre en introduisant une modification par bloc et en modifiant le chronomètre par une valeur négative. Nous allons maintenant vérifier si le chronomètre est terminé, et si c'est le cas, nous passerons à l'état inactif. Passons donc au contrôle et ajoutons un bloc if then juste après le bloc du temporisateur de changement. Pour la condition, nous pouvons utiliser une copie du bloc state equals up ici. Mais avec celui-ci, nous voulons vérifier si le chronomètre est égal à zéro. Si c'est le cas, passons aux variables, introduisons un ensemble à bloquer et définissons l'état sur down. Nous pouvons maintenant ajouter tout cela au script d'action Handle juste au-dessus du switch costume to State block. Si nous lançons le jeu maintenant et que nous sautons sur une rampe de saut, il passe brièvement à l'état nord avant de revenir à l'état bas Très bien, la dernière chose à faire est de faire rebondir le joueur au fur et à mesure que la rampe de saut remonte Pour cela, revenons au script Check Touching Player. Nous voulons nous assurer que le joueur rebondit droit vers le haut, et non vers la gauche ou vers la droite Donc, dans le script I touch player, introduisons d'abord un autre set à bloquer et mettons Bounce DR à zéro Nous pouvons maintenant accéder à des événements, créer un bloc de diffusion et diffuser un joueur de rebond Essayons-le. Si nous sautons maintenant sur une rampe de saut, nous rebondissons un peu Mais bien entendu, nous voulons rebondir un peu plus haut que cela Pour ce faire, nous devons accéder au code des sprites du joueur et trouver le script Bounce Player Dans le bloc I bounce dr est égal à zéro ici, nous réglons actuellement la force de rebond à trois C'est très bien lorsque vous sautez sur les ennemis. Mais pour les sauts, nous voulons utiliser une force de rebond beaucoup plus élevée Pour ce faire, nous pouvons d' abord vérifier si nous touchons le sprite du jump pad, puis régler la force de saut en conséquence Passons donc d'abord au contrôle et prenons un bloc I thin out, ajoutons-le à la partie I du bloc I bounce dr est égal à zéro et plaçons un bloc de force de rebond défini dans les deux parties. Pour ce qui est de la maladie, nous pouvons passer à la détection, introduire un bloc et vérifier si nous touchons le pavé de saut. Si nous touchons une rampe de saut, réglons la force de rebond à 15 Dans le cas contraire, nous continuerons de le régler sur trois. Cependant, étant donné que les sprites du joueur se déplacent verticalement, le script peut empêcher les sprites de se toucher, nous devons d'abord déplacer légèrement le sprite du joueur vers le bas avant de vérifier s'il touche le pad de saut Pour ce faire, passons au mouvement. Ajoutez une modification Y par bloc juste au-dessus du bloc I touch jump pad, et changeons Y par moins un. Nous voulons également déplacer le sprite vers le haut par la suite. Ajoutons donc une modification par bloc juste dessous du bloc if thin outs et changeons-la par une valeur positive. OK, essayons-le. Génial Maintenant, nous rebondissons beaucoup plus haut Et si nous maintenons une touche de saut enfoncée pendant que nous rebondissons, nous pouvons aller encore plus haut. Très cool. Bien, nous allons donc ajouter des effets spéciaux au jeu, à savoir l' effet de glissement de pente et les particules de poussière, et nous allons commencer par l'effet de glissement de pente dans la leçon suivante 106. Créer l'effet de glissement de pente: Au fur et à mesure que le joueur glisse sur une pente, nous allons créer un effet de mouvement sympa derrière le joueur. Et pour ce faire, nous allons utiliser ici le sprite à effet de glissement de pente Le costume du sprite se compose de deux rectangles présentant un dégradé linéaire blanc à transparent OK, et pour coder le sprite, nous pouvons commencer par accéder au code du sprite à pièces et copier quelques scripts Tout d'abord, copions sur certaines couches. Ajustez ensuite la position lorsque je commence en tant que clone et lorsque je reçois la troisième mise à jour, lorsque je reçois la deuxième mise à jour, nous voulons tout sauf le bloc d'animation Supprimons-le d'abord, copions-le sur le script. Et réinsérez le bloc d'animation. Lorsque je recevrai la première mise à jour, supprimons tout le script, puis copions uniquement le bloc lorsque je recevrai la mise à jour 1, et remettons-le dedans. Ensuite, pour le script de configuration, nous voulons simplement que le nom du costume soit vide, sinon, nous voulons supprimer cette partie du clone. Extrayons donc tout le reste, commençant par le bloc I level one, puis en copiant le script. Et remettez tout comme avant. Enfin, copions le script du drapeau vert. Passons maintenant à l'effet Slope Slide Sprite et nettoyons le code Nous voulons que l'effet de glissement en pente soit dessiné juste derrière le joueur. Ainsi, dans le script When I start as a clone, au lieu d'utiliser le composant Z comme entrée d'ordre Z, optons pour l'effet B Z, dont la valeur est inférieure d'un à celle du joueur Z. Et lorsque je reçois la première mise à jour, nous voulons simplement ajuster la position Passons donc à Mblocks et introduisons un bloc de réglage de position. OK, maintenant nous devons faire savoir au sprite quand il doit créer un clone Cela devrait bien sûr se produire lorsque le joueur glisse sur une pente. Passons donc au code du joueur Sprite et trouvons le script Slide on Slope Ici, au bas du script, où nous définissons l' état de pente, nous pouvons diffuser un message l' effet de glissement de pente Sprite Pour ce faire, passons aux événements et ajoutons un bloc de diffusion après le bloc d'état défini, et diffusons un nouveau message que nous pouvons appeler crate slope slide effect. Très bien, nous devons maintenant revenir au code de l'effet Slope Slide et recevoir le message. Donc, dans un espace vide, introduisons un bloc W I receive et recevons un effet de glissement en pente. Et ici, si le sprite qui reçoit le message est l'effet de pente d'origine, Sprite créera un clone Nous voulons donc d'abord vérifier si le sprite utilise le costume vierge Pour ce faire, allons dans Control et ajoutons un bloc ITN au script Et pour ce qui est de la condition, nous pouvons utiliser un doublon du nom du costume et du bloc Blank provenant du script When I receive update to. Avant de créer un clone, nous voulons passer au costume approprié. Passons donc à Looks, ajoutons un bloc de costume Switch au bloc I then, et passons-le au costume à effet Slope Slide. Ensuite, nous pouvons créer le clone en accédant à Control et en introduisant un bloc de création d'un clone de moi-même. Enfin, nous voulons revenir au costume vierge en revenant à Looks, en ajoutant un autre bloc de costumes Switch et en passant au costume blanc. OK, donc après avoir créé un clone, nous voulons nous assurer qu'il suive le joueur lorsqu'il dévale la pente. Passons d'abord aux costumes du Sprite à effet de pente et assurons-nous que nous utilisons actuellement le costume à effet de pente Montrons le sprite sur Le sprite est actuellement situé à 00, et si nous mettons également le sprite du joueur à 00, nous pouvons voir qu'ils s' alignent plutôt bien, mais l' effet de glissement de pente est un peu élevé L'utilisation d'une position Y de moins dix pour l' effet de glissement en pente devrait mieux fonctionner. De plus, si nous définissons la direction des effets de glissement de pente sur 45, elle correspondra à l'angle des pentes orientées vers la gauche dans le jeu. De même, si vous le réglez sur moins 45, il correspondra aux pentes orientées vers la droite. OK, donc pour revenir au code du sprite à effet de glissement de pente, nous pouvons utiliser la position des sprites du joueur, ainsi que sa variable slope der pour positionner et faire pivoter correctement l'effet de glissement de pente Comme nous l'avons vu précédemment, une direction négative 45 s'aligne sur pentes orientées vers la droite et 45 s'aligne sur les pentes orientées vers la gauche La variable player sprite slope der utilise toutefois une valeur de un pour les pentes orientées vers la droite et une valeur négative de un pour les pentes orientées vers la gauche Donc, pour obtenir la bonne direction pour le clone, nous pouvons multiplier la valeur de la pente du par moins 45. OK, alors passons d'abord au mouvement et ajoutons un bloc de points et de directions au script d'effet I then block of the slope slide avant de créer le clone. Pour l'entrée, passons aux opérateurs et introduisons un bloc de multiplication. Pour le côté gauche, passons d'abord à détection et ajoutons le numéro du bloc de scène en toile de fond. Au lieu de stage, nous voulons utiliser le sprite du joueur, et nous voulons obtenir la pente du variable Et multiplions-le par moins 45. Ensuite, pour définir la position du clone, passons aux variables et introduisons deux blocs avant de créer le clone. Utilisons-les pour définir la variable X et la variable Y. Pour le bloc set X, dupliquons la pente dur du bloc joueur, et obtenons la variable X des sprites du joueur Maintenant, comme nous l'avons vu précédemment, nous voulons que l'effet de glissement en pente soit situé dix étapes en dessous du sprite du joueur Donc, pour le bloc Y défini, passons d'abord aux opérateurs et introduisons un bloc de soustraction. Nous pouvons maintenant dupliquer le X du bloc du joueur ici, le placer sur le côté gauche du bloc de soustraction, et faire Y du joueur moins dix Si nous lançons maintenant le jeu et que nous glissons le long d'une pente, nous obtenons l'effet de glissement de pente, mais il ne suit pas encore le joueur. En effet, nous ne définissons la position des clones que lorsque nous les créons pour la première fois, mais nous devons également le faire à chaque itération de la boucle de jeu Pour ce faire, nous utiliserons un bloc personnalisé dans le script W I receive Update to. Alors, d'abord, allons dans Mes blocs et créons-en un nouveau. Appelons-le gérer les actions. Et cliquez sur OK. Maintenant, dans la mise à jour du script, ajoutons un bloc d'actions de gestion au bloc ITN. Déplaçons ensuite le bloc d'actions de manipulation défini dans un espace vide. Nous pouvons maintenant dupliquer les blocs set x et set Y à partir du script d'effet Create Slope Slide, les ajouter au script d'action Handle et supprimer les blocs supplémentaires. L'effet doit maintenant suivre le joueur le long de la pente. D'accord, cela fonctionne, mais nous voulons que l'effet disparaisse lorsque le joueur atteint le bas de la pente Pour ce faire et gérer les actions, nous pouvons vérifier si la valeur de slope dur est devenue nulle, ce qui sera le cas lorsque le joueur n'est plus sur une pente, et si c'est le cas, nous pouvons supprimer le clone. Passons donc d'abord au contrôle et ajoutons un bloc ITN au bas du script Pour la condition, passons aux opérateurs et introduisons un bloc égal. Nous pouvons maintenant ajouter une copie de la pente dur du bloc joueur au bloc égal. Et vérifiez s'il est égal à zéro. Dans ce cas, nous voulons d'abord supprimer l'article clones de la liste des commandes Z, puis supprimer le clone Passons donc aux variables et supprimons le bloc. Utilisez ensuite un numéro d'article ou un bloc comme entrée. Pour la saisie du numéro d'article, introduisons un bloc de rétro-effet Z. Et nous voulons utiliser la liste des commandes Z pour les deux blocs. Enfin, passons à Control et introduisons une suppression de ce bloc de clonage. Et maintenant, une fois que nous atteignons le bas d' une pente, l'effet disparaît. Cela semble correct, mais au lieu de faire disparaître l'effet si brusquement, il serait préférable de le faire disparaître d'abord Pour ce faire, nous avons besoin de quelques variables, l'une pour l'état actuel du clone et l' autre pour le délai de disparition. Passons donc aux variables et créons-les. Nous pouvons appeler le premier état et le créer pour ce sprite uniquement Pour le second, appelons-le timer, également pour ce sprite uniquement, et nous pouvons continuer à masquer les deux variables OK, donc pour l'état, nous utiliserons actif par défaut et inactif lorsque le clone devrait commencer à disparaître. Donc, tout d'abord, dans le script d'effet Crate Slope Slide, ajoutons un ensemble à bloquer avant le bloc Crate Clone, et définissons l'état sur actif. Ensuite, dans le script d'action Handle, retirons les deux blocs de suppression et mettons-les de côté. Maintenant, nous ne voulons faire toutes ces choses que lorsque le clone est à l'état actif. Sinon, nous ferons autre chose. Passons donc au contrôle, un bloc I thin s et enroulons la partie I autour de tous les blocs du script. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si l'état est égal à actif. OK, maintenant que la pente I dr est égale à zéro, nous voulons régler l' état sur inactif, ainsi que régler le chronomètre. Apportons donc deux ensembles de deux blocs. Et réglons l'état sur inactif et le minuteur sur dix. Ensuite, dans la partie ts, nous vérifierons si le chronomètre est terminé. Si c'est le cas, nous supprimerons le clone. Sinon, nous estomperons légèrement le clone et réduirons la valeur du chronomètre. Passons donc d'abord au contrôle et ajoutons un bloc if then ls à la partie ts de celui-ci. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le chronomètre est égal à zéro. Si c'est le cas, nous pouvons introduire les deux blocs de suppression que nous avons enregistrés précédemment. Sinon, introduisons d'abord un changement par bloc et changeons le chronomètre par un changement négatif. Pour faire disparaître le clone, passons à Looks, introduisons un effet de changement par bloc, et changeons l'effet fantôme de dix. Comme nous réglons la valeur du chronomètre sur dix, l'effet fantôme sera de 100 lorsque le chronomètre sera terminé, ce qui rendra le clone complètement transparent. OK, si nous lançons le jeu et que nous glissons sur une pente, l'effet commence à s'estomper une fois que nous arrivons en bas Assurons-nous également qu'il fonctionne sur les pentes orientées à droite. Génial. Une fois cet effet terminé, nous allons créer l'effet de particules de poussière qui se produit lorsque le joueur atterrit au sol. 107. Créer les poussières: Pour créer les particules de poussière lorsque le joueur atterrit au sol, nous allons utiliser le sprite à particules de poussière ici Le costume du sprite à particules de poussière se compose de trois petites ellipses grises qui forment une sorte de nuage OK, et pour commencer à coder le sprite à particules de poussière, passons d'abord au code du sprite à effet Slope Slide et copions quelques scripts À partir de là, nous voulons copier le bloc d' actions de manipulation défini par lui-même. Extrayons donc tous les blocs du script, copions les actions de manipulation définies dans le sprite à particules de poussière et remettons les blocs dedans Copions maintenant une position en triant les couches. Lorsque je commence en tant que clone, lorsque je reçois la première mise à jour, la mise à jour deux, la mise à jour trois, le script de configuration et le script drapeau vert, je me dirige vers les sprites à particules de poussière et je nettoie le code OK, pour les clones de particules de poussière, nous voulons qu'ils apparaissent devant le joueur Donc, lorsque je commence en tant que script de clonage, pour le tri et la saisie des couches, utilisons l'effet de front Z. Ensuite, nous devons indiquer au sprite quand créer les Cela devrait se produire lorsque le joueur retombe au sol après une chute. Passons donc au code Sprite du joueur et trouvons le script d'état de mise à jour Près du bas du script, nous avons un bloc si égal à fall et in air égal à zéro où nous réglons l'état pour qu'il atterrisse. C'est là que nous voulons également créer des particules de poussière. Passons donc aux événements, introduisons un bloc de diffusion, et diffusons un nouveau message intitulé Create dust particles. Nous devons maintenant revenir au sprite à particules de poussière et gérer le message Donc, lorsque je reçois du bloc, je vais le placer dans un espace vide et créer des particules de poussière. Nous ne voulons créer des clones que si le sprite récepteur est le sprite particules de poussière d'origine Nous devons donc d'abord nous assurer qu'il utilise le costume vierge. Passons donc au contrôle et introduisons un « je », puis bloquons. Pour cette condition, nous pouvons utiliser un doublon du nom du costume égal à bloc vide lors de la mise à jour du script. Et si c'est le cas, nous créerons des clones. Nous voulons en fait le faire dans un bloc personnalisé, car nous allons créer plusieurs clones à la fois, et nous voulons qu'ils soient tous créés dans un seul cadre Passons donc à Mes blocs et créons-en un nouveau. Appelons cela créer des clones. Assurez-vous de cocher Exécuter sans rafraîchir l'écran et cliquez sur OK. Ajoutons maintenant un bloc Crate Clones au nom du costume I equals blank block et déplaçons le bloc Create Clones défini dans un espace vide . La première chose que nous voulons faire lorsque nous créons des clones est de passer au costume de particules de poussière Passons à Looks, apportons un bloc de costumes Switch et passons aux particules de poussière. Ensuite, nous voulons commencer chaque clone à la même position que le joueur, mais près du bas du sprite Pour ce faire, passons d'abord aux variables, introduisons deux blocs et définissons à la fois la variable X et la variable Y. Pour le bloc X défini, passons à la détection et introduisons numéro du bloc de scène en arrière-plan, et nous voulons obtenir la variable X du sprite du joueur Pour le bloc Y défini, passons d'abord aux opérateurs et introduisons un bloc de soustraction. Nous pouvons maintenant placer une copie du X du bloc du joueur sur le côté gauche et faire Y du joueur -35 Très bien, nous allons donc créer dix clones et les répartir un peu aléatoirement, par exemple en leur donnant des directions aléatoires, des tailles aléatoires et des vitesses horizontales et verticales aléatoires Alors d'abord, passons au contrôle et introduisons un bloc de dix répétitions. Pour randomiser la direction, passons au mouvement et ajoutons un bloc de points et de direction au bloc de répétition. Et pour la saisie, passons aux opérateurs et introduisons un bloc choisi au hasard. Allons-y avec un chiffre de 0 à 359, qui correspond à tous les angles possibles Ensuite, pour randomiser la taille, allons dans Los et introduisons un bloc de taille définie Ensuite, nous pouvons utiliser un duplicata du bloc aléatoire PIC comme entrée, et passons au nombre 80-150 Ensuite, nous devons suivre les vitesses horizontales et verticales de chaque clone. Passons donc aux variables et créons-en quelques nouvelles. Appelons la première vitesse x et utilisons-la uniquement pour ce sprite Créons-en un autre pour la vitesse Y et faisons-en un pour ce sprite uniquement Et tant que nous y sommes, nous ne voulons pas que les clones durent éternellement. Créons donc une autre variable, que nous pouvons appeler vie, et la créer uniquement pour ce sprite Et allons-y et masquons les trois variables. Ajoutons maintenant trois ensembles de deux blocs au bloc de répétition. Et ajoutons un bloc choisi au hasard à chacun d'eux. Pour le premier, réglons la vitesse X sur un nombre aléatoire compris entre moins cinq et cinq afin qu'elle puisse aller à gauche ou à droite. Ensuite, nous allons définir SpeedY, et nous voulons que les clones se déplacent vers le haut Nous allons donc choisir entre deux nombres positifs. Quelque chose de 1 à 3 devrait être bon. Enfin, fixons la vie à un chiffre de 4 à 7, en utilisant un nombre aléatoire les clones disparaîtront à différents moments Nous devons maintenant créer un clone en accédant à Control et en ajoutant un bloc de création d'un clone de moi-même au bas du bloc de répétition. Enfin, après avoir créé tous les clones, nous devons revenir au costume vierge Passons à Looks, ajoutons un bloc de costume en bas du script et passons à Blink Maintenant, pour que tout cela fonctionne, passons à la définition des actions de gestion. Et ici, nous voulons d'abord vérifier si le clone n'a plus de vie. Si c'est le cas, nous supprimerons le clone. Sinon, nous déplacerons le clone en utilisant ses variables de vitesse et nous réduirons également sa durée de vie. Passons donc d'abord au contrôle et ajoutons un bloc I puis s au script. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si la vie est égale à zéro. Dans ce cas, nous supprimerons l'article de la liste des commandes Z, puis nous supprimerons le clone. Commençons donc par supprimer le bloc. Utilisez ensuite un numéro d'article ou un bloc comme entrée, et supprimons le numéro d'article de front effet Z dans les commandes Z des commandes Z. Passons maintenant au contrôle et supprimons ce bloc de clonage. Ensuite, dans la partie ts, passons aux variables et introduisons trois blocs de modification B. Avec le premier, changeons X par la vitesse x. Avec le second, changeons Y par la vitesse Y. Et enfin, changeons la vie par moins un Bien, si nous lançons le jeu maintenant, chaque fois que nous atterrissons sur le sol, nous recevons dix particules de poussière qui se répandent dans différentes directions avant de disparaître Cela semble correct, mais les particules sont un peu trop sombres et aussi un peu trop opaques. Donc, pour l'améliorer, nous pouvons également randomiser leurs valeurs d'effet fantôme et d'effet de luminosité Pour ce faire, revenons au script CrakKline. Avant de créer un clone dans le bloc de répétition, passons à Looks et ajoutons deux blocs pour obtenir un effet. Et ajoutons un bloc choisi au hasard à chacun d'eux. Commençons par définir l' effet fantôme sur une valeur comprise entre 50 et 80. Réglons ensuite l' effet de luminosité sur une valeur comprise entre 0 et 100. Essayons-le. Bien mieux. Lors de la prochaine leçon, nous ferons en sorte que le joueur puisse une pause en interrompant le jeu 108. Pause du jeu: Pour mettre le jeu en pause, nous allons afficher un bouton de pause en haut à droite de l'étape pendant le jeu Si le joueur clique sur le bouton de pause, le jeu se fige et une fenêtre de pause apparaît, qui comporte des boutons sur lesquels le joueur peut appuyer pour reprendre le jeu ou le quitter Pour tout cela, nous allons utiliser le sprite de pause ici. Le sprite de pause contient tous les costumes dont nous aurons besoin pour faire une pause Tout d'abord, nous avons le bouton Pause, qui s'affiche à tout moment dans le Hud Ensuite, nous allons utiliser le costume BG comme arrière-plan pour la superposition de pastilles s'agit simplement d'un rectangle noir qui couvrira toute la scène, mais qui le rendra semi-transparent afin que nous puissions voir les objets du jeu situés Ensuite, nous allons utiliser le costume du panneau comme conteneur pour le bouton Zoom et le bouton Quitter dans la superposition de pause Et pour les boutons de reprise et de départ, nous avons des costumes par défaut lorsque le joueur n'appuie pas dessus, et des costumes baissés lorsque vous appuyez sur les boutons. OK, et pour commencer à coder le sprite pas, passons d'abord au code du sprite à pièces et copions quelques scripts Comme tous les clones de passprite auront la même position sur la scène, quelle que soit la position du scroll dans le jeu, nous n'aurons pas besoin d'ajuster leur position à chaque itération de la boucle de De plus, nous ne les animerons pas et ne vérifierons pas s'ils touchent les sprites des joueurs Donc, en réalité, il n'y a que quelques scripts que nous pouvons copier. Tout d'abord, nous pouvons copier les scripts de la couche de tri. Ensuite, nous pouvons copier le script du drapeau vert. Enfin, nous voulons copier le script de configuration, mais si ce n'est pas le nom du costume, seul le nom du costume est égal à des parties vides. Supprimons donc tout le reste du script, puis copions le script dans le Pa Sprite et remettons tous les blocs dedans Passons maintenant au code Sprite de pause. OK, nous allons donc créer tous les clones directement dans le script de configuration, et nous allons commencer par le bouton de pause Donc, dans la catégorie Looks, introduisons un bloc de costumes et passons au bouton pause. Ensuite, positionnez le clone. Passons au mouvement, introduisons un bloc Go to XY. Utilisons 205 pour X et 150 pour Y. Cela le placera en haut à droite de la scène Créons maintenant le clone en accédant à Control et en introduisant un bloc Create clone of Myself. Enfin, nous devons revenir au costume de Blank. Passons donc à Looks, ajoutons un autre bloc de costumes Switch et passons à Blink Bien, maintenant, avant d'essayer, nous devons trier le clone dans les couches, et nous allons le faire en utilisant un script de clonage « when I start Passons donc à Control et ajoutons un bloc When I start en tant que clone. Maintenant, pour le bouton PoS, nous voulons utiliser l'ordre Hud Z Z pour trier les couches Mais pour tous les autres clones de sprites POS, nous utiliserons la superposition Z, qui les placera au-dessus de tout ce qui se passe dans Nous voulons donc d'abord vérifier le nom du costume actuel des clones. Pour ce faire, introduisons un I puis un spplot. Pour cette condition, nous pouvons utiliser une copie du nom du costume égale à un bloc vide dans le script de configuration. Vérifiez ensuite s'il est égal à pause, bouton de soulignement. Passons maintenant aux blocs M et ajoutons un bloc de tri par couches à chaque partie du bloc I then s. Passons ensuite aux variables et pour la partie I, utilisons HudZ comme entrée de tri des couches, et nous utiliserons la superposition Z pour OK, si nous lançons le jeu maintenant, nous obtenons un bouton de pause qui reste en place en haut à droite de la scène. Cependant, il serait préférable semi-transparent afin que le joueur puisse voir les objets de collection ou les ennemis qui pourraient se trouver sous le bouton Pour ce faire, dans le script When I start as a clone, allons dans Looks et ajoutons un effet de set à bloquer à la partie I du bloc I thin outs. Et fixons l'effet fantôme à 30. Alors essayez-le. Nous y voilà. OK, ensuite, nous allons faire en sorte qu'appuyer sur le bouton pause interrompe réellement le jeu. Pour ce faire, passons d'abord aux événements et gagnons un bloc sur lequel ce sprite a cliqué dans un espace vide. Comme nous voulons faire différentes choses, en fonction du clone sur lequel vous cliquez, nous devons d'abord vérifier le nom du costume Passons donc à Control et introduisons un bloc if then else. Pour mettre le jeu en pause, nous ne voulons le faire que si le clone sur lequel vous cliquez utilise le costume du bouton de pause et si le jeu est actuellement en cours d'exécution Donc, pour ce qui est de la condition, passons aux opérateurs et introduisons d'abord un bloc and. Pour un côté du bloc et, nous pouvons utiliser un doublon du nom du costume pour le bloc de boutons de pause dès que je commence en tant que clone. Et pour l'autre côté, nous pouvons introduire un bloc égal, puis passer aux variables et vérifier si les états du jeu sont égaux à courir. Si c'est le cas, nous diffuserons un nouveau message que la toile de fond recevra et nous interromprons le jeu. Passons aux événements, ajoutons un bloc de diffusion à la partie I et diffusons un nouveau message intitulé Pause game. Nous devons maintenant accéder au code de fond et gérer le message de pause du jeu. Tout d'abord, introduisons un bloc W I receive et recevons une pause dans le jeu. Pour mettre le jeu en pause, il suffit de régler l'état du jeu sur autre chose que l'état de fonctionnement ou l'état de défilement automatique. Donc, lorsque je reçois une pause de jeu, passons aux variables, introduisons un ensemble à bloquer et utilisez-le pour définir l'état du jeu. Et je vais le mettre sur le mot suspendu. Si nous lançons maintenant le jeu et que nous cliquons sur le bouton pause, le jeu s'arrête complètement. Mais pour le moment, n' avons aucun moyen de remettre le jeu en pause Donc, pour l'instant, nous allons faire en sorte que nous puissions appuyer sur la touche Pe pour faire une pause ou une pause. Pour ce faire, passons aux événements, introduisons un bloc enfoncé sur la touche Win et vérifions si la touche P est enfoncée. Et ici, si le jeu est actuellement en cours d'exécution, nous le mettrons en pause, et s'il est actuellement en état pause, nous le reprendrons. Passons donc d'abord au contrôle, et introduisons un bloc I puis un bloc s. Ajoutons ensuite un bloc I thin à la partie Os. Pour les conditions, passons aux opérateurs et ajoutons un bloc égal à chacun d'eux. Passons maintenant aux variables et pour le bloc ITN ts, vérifions si l' état du jeu est égal à courir Pour le bloc I then, vérifions si l' état du jeu est égal à pause. Passons maintenant aux événements et ajoutons un bloc de diffusion à chaque partie. Si le jeu est en cours, nous voulons diffuser Pause game, et si le jeu est en pause, diffusons un nouveau message, que nous pouvons appeler RezomGame Nous devons maintenant gérer le message de RezomGame. Alors introduisons un autre bloc W I receive et recevons ReZoomGame Pour reprendre le jeu, il suffit d'accéder aux variables, introduire un ensemble à bloquer et de régler l'état du jeu pour qu'il fonctionne. Maintenant, si nous lançons le jeu, nous pouvons cliquer sur le bouton de pause pour le mettre en pause et appuyer sur le Pikey pour le remettre en pause. Ou nous pouvons simplement utiliser la touche P pour mettre le jeu en pause ou le remettre en pause Revenons maintenant au code de pause Brite. Dans la leçon suivante, nous allons travailler sur la superposition de pause. 109. Créer la superposition de pause: Pour créer la superposition PAS, nous devons d'abord accéder au script de configuration dans le code du sprite POS et créer les clones restants Pour ce faire, retirons le costume de changement en bloc blanc pour le moment, et dupliquons les trois blocs, commençant par le costume de changement pour le bloc de boutons de pause et en les ajoutant au bas du script. Et répétons cela trois fois de plus pour un total de cinq clones. Ensuite, nous pouvons ajouter le costume de commutateur à un bloc vide en bas du script. Pour le deuxième clone, passons au costume boutonné de reprise pour le poste, choisissons zéro pour X et 14 pour Y. Pour le clone suivant, utilisons le costume boutonné d'arrêt et positionnons-le à zéro moins 49 Ensuite, nous allons créer le costume du panneau et le positionner à 00. Enfin, passons au costume BG et positionnons-le également sur 00. Et il est important que nous fassions le costume de biji en dernier et le costume de panneau avant-dernier, car cela permettra de superposer correctement les clones sur scène, avec le clone du biji dans le dos, puis le clone du panneau par-dessus, et enfin, les boutons sur le dessus du Passons maintenant au script When I start as a clone. Bien entendu, nous ne voulons pas montrer les clones de superposition pas lors de leur première création Donc, dans la partie ts du bloc ITN ts, passons à Looks et ajoutons un bloc de masquage. De même, pour le clone BG, nous voulons le rendre semi-transparent. Passons donc d'abord à Control et ajoutons un bloc I puis un bloc « I » à la partie « sorties ». Pour cette condition, nous pouvons utiliser un doublon du nom du costume égal bloc de boutons de pause et vérifier s'il est égal à BG. Si c'est le cas, nous pouvons ajouter une copie du bloc d'effets fantômes défini ici, et le régler à 50 pour le clone de BG. Ensuite, lorsque le joueur met le jeu en pause, nous voulons afficher tous les clones de pause superposés, et lorsqu'il reprendra le jeu, nous masquerons les Alors d'abord, passons aux événements et apportons-en quelques-uns lorsque je reçois des blocs. Pour le premier, nous allons recevoir un jeu de pass. Passons ensuite à Looks et ajoutons un bloc d'affichage. Pour le second, nous allons recevoir le CV du jeu. Et ici, nous voulons tout masquer sauf le bouton de pause. Nous allons donc d'abord nous assurer que le clone actuel n'utilise pas le costume du bouton Pause. Pour ce faire, passons au contrôle et introduisons un I puis bloquons. Pour ce qui est de la condition, allons d'abord voir les opérateurs et introduisons un bloc « non ». Ensuite, nous pouvons apporter une copie du nom du costume, le bloc de boutons de pause et le moment où je commence en tant que clone. Et s'il n'utilise pas le costume du bouton Pause, nous pouvons accéder à Looks et ajouter un bloc de masquage. Bien, si nous lançons maintenant le jeu et que nous le mettons en pause, cela fera apparaître la superposition de pause Et si nous interrompons le jeu, la superposition disparaît Il ne nous reste plus qu'à faire fonctionner les boutons Zoom et Quitter. Passons donc au moment où ce sprite a cliqué. Dans la partie sorties du bloc ITN Outs, nous devrons vérifier si le clone est bouton Zoom ou le bouton Quitter Passons donc d'abord à Control et introduisons un bloc ITN Outs. Pour ce qui est de la condition, nous vérifierons si le clone utilise le costume reprenant et si le jeu est actuellement en pause. Si c'est le cas, nous passerons au costume avec le bouton de rezoom vers le bas et reprendrons le jeu Nous pouvons donc commencer par utiliser un doublon du bloc and ici à partir du premier bloc if then outs. Mais pour celui-ci, vérifions si le nom du costume est égal à CV, bouton de soulignement, trait de soulignement Et si l'état du jeu est égal à pause, si c'est le cas, passons à Looks, ajoutons un bloc de costume et passons au bouton Rezoomer vers le bas. Ensuite, nous voulons attendre que le joueur ait relâché la souris. Ensuite, nous diffuserons le message de reprise du jeu. Passons donc au contrôle et introduisons un délai d'attente jusqu'au blocage. Pour ce qui est de la condition, allons voir les opérateurs et apportons un bloc à nœuds. Passez ensuite à la détection et insérez un bloc de souris vers le bas. Enfin, passons aux événements, introduisons un bloc de diffusion et reprenons la diffusion du jeu. Très bien, maintenant, si nous lançons le jeu et que nous faisons apparaître la superposition de pause, nous pouvons cliquer sur le bouton Rezoomer pour reprendre le Cependant, si nous rétablissons la superposition de pause, le bouton Rezom est désormais bloqué sur le costume Rezom et rien ne se passe lorsque nous Pour résoudre ce problème, nous devrons réinitialiser le costume pour qu'il soit redimensionné lorsque le PAS apparaît, ce qui se produit dans le script du jeu « Quand je reçois pas », et nous devrons également le faire pour le bouton de fermeture Donc, après le bloc d'affichage, passons à Control et introduisons un bloc ITN Os. Ajoutons ensuite un bloc en I à la partie extérieure. Pour l'état de chacun, utilisons une copie de l'un des costumes dont le nom est égal à des blocs. Pour le premier, vérifions si le nom du costume est égal à CV, bouton de soulignement, souligné vers le Et si c'est le cas, nous pouvons aller dans Looks, apporter un bloc de costumes Switch et passer au bouton Rezom Up Et pour le bloc I then, vérifions si le nom du costume est égal bouton «   Quit underscore » souligné vers le bas Ensuite, apportez un bloc de costumes Switch et passez au bouton « Quitter ». Et maintenant, chaque fois que nous affichons la superposition POS, le bouton devrait utiliser les costumes par défaut OK, il ne nous reste plus qu'à faire fonctionner le bouton d'arrêt. Pour ce faire, revenons au moment où ce Bright a cliqué Dans la partie ts vide ici, passons à Control et introduisons un ID puis bloquons. Pour cette condition, nous pouvons utiliser un doublon d'un costume nommé Equals Block, et vérifions s'il est égal à Quit Underscore button underscore up Si c'est le cas, ajoutons d'abord des copies des trois blocs que nous utilisons pour le bouton Rezoom Mais cette fois, nous voulons passer au bouton Quit et diffuser un nouveau message, que nous pouvons appeler quit Game. Très bien, maintenant nous devons accéder au code de fond et gérer le message de fermeture du jeu. Passons donc d'abord aux événements, remportons un bloc Win I receive et recevons Quit Game. Une fois que nous aurons créé un écran titre, nous l'afficherons lorsque vous quitterez le jeu Mais pour l'instant, nous pouvons simplement accéder à Control et bloquer tout. Si nous lançons maintenant le jeu, ouvrons la superposition du point de vente et que nous cliquons sur le bouton Quitter, le jeu s'arrête Une chose à savoir, cependant, est que si nous lançons le jeu et que nous réaffichons le Pass, le joueur peut parfois commencer à cliquer sur le bouton Quitter, puis décider qu' il ne veut pas vraiment quitter le jeu Ils essaieront donc d' éloigner leur souris du bouton avant de la relâcher. Pour le moment, cependant, cela quittera le jeu de toute façon. Donc, ce que nous pouvons faire, c'est faire en sorte qu'il ne quitte le jeu si le bouton de fermeture touche toujours pointeur de la souris lorsque le joueur relâche la souris Pour cela, revenons au code de la pause Sprite. Et lorsque le Sprite a cliqué, nous voulons uniquement diffuser Quitter le jeu si le clone touche le pointeur de la souris Sinon, nous reviendrons au costume à boutonnage rapide. Prenons donc un bloc « if then outs » et enroulons la partie I autour du bloc de fin de jeu diffusé. Et juste pour le fun, faisons-en également un autour du bloc de jeu de CV diffusé. Pour connaître l'état de chacun d'entre eux, passons à la détection et introduisons quelques blocs de pointeur de souris tactiles. Ensuite, nous pouvons accéder à Looks et ajouter un bloc de costumes interchangeables à la partie extérieure de chacun d'eux. Et pour le bouton Zoom, passons au bouton Zoom vers le haut. Et pour le bouton d'arrêt, nous allons utiliser le bouton de fermeture vers le haut. Et maintenant, le joueur doit continuer à survoler le bouton lorsqu'il relâche la souris pour reprendre le jeu ou quitter le jeu OK, et pour plus de commodité, une autre chose que nous pouvons faire est de faire en sorte qu' appuyant sur la touche espace pendant que la superposition de pause s'affiche, nous reprenions également le jeu Pour ce faire, passons d' abord aux événements et introduisons un bloc sur la touche espace de victoire enfoncée. Passons ensuite à Control et introduisons un I puis un bloc. Pour ce qui est de la condition, nous pouvons utiliser une copie du bloc et, lorsque ce sprite clique, nous vérifierons s'il s'agit du costume rezoomé et le jeu est suspendu Ensuite, nous pouvons également ajouter des copies de tous les blocs de boutons de rezoom, en commençant par le bloc de boutons de rezoom pour passer au bloc de boutons Rezom Mais cette fois, au lieu d'attendre que la souris ne soit pas baissée, débarrassons-nous du bloc situé vers le bas de la souris, puis passons à la détection et remplacons-le par un bloc de pression sur un espace clavier. De plus, le pointeur de la souris ne survolera probablement pas le bouton Zoom lorsque le joueur appuie sur la touche espace Nous pouvons donc simplement diffuser le message du jeu Zoom et supprimer le bloc du pointeur si vous touchez la souris Si nous lançons maintenant le jeu et le mettons en pause, nous pouvons appuyer sur la touche espace pour reprendre le jeu. Bien, cela étant fait, nous allons continuer à travailler sur le Hud en ajoutant l'affichage du cœur et l'affichage des pièces, et nous allons commencer par l'affichage du cœur dans la prochaine leçon 110. Créer l'affichage du coeur: Au lieu d'utiliser l'ennuyeuse variable de santé du joueur pour indiquer la santé du joueur, nous allons afficher des cœurs dans le Hud, et nous le ferons en utilisant le Heartsprite Si nous examinons les costumes du HeartSprite, nous avons un costume en forme de cœur vide, un costume demi-cœur et un costume en forme de cœur complet OK, donc pour commencer à coder le HeartSprite, nous pouvons voler des scripts du code PA Sprite À partir de là, copions le script de la couche de tri. Et le script du drapeau vert. Pour le script de configuration, retirons d'abord tout ce que le nom du costume I est égal à Blank block, copions le script et remettons tout en place. Passons ensuite au code Heartsprit. Très bien, dans le script de configuration, nous allons créer les clones, et nous le ferons en fait dans un bloc personnalisé, car nous utiliserons un bloc de répétition qui doit terminer son exécution dans une seule image Alors d'abord, allons dans MyBlocks et créons-en un nouveau. Appelons cela créer des clones. Assurez-vous de cocher Exécuter sans rafraîchir l'écran, puis cliquez sur OK. Allons-y et ajoutons un bloc Rake Clones au script de configuration Nous voulons également nous assurer de revenir au costume vierge par la suite. Passons donc à Looks, apportons un bloc de costumes Switch et passons à Blank. Déplaçons maintenant le bloc Rake Clones défini dans un espace vide. Et ici, nous allons créer suffisamment de clones pour tenir compte du maximum de santé du joueur Mais d'abord, nous allons définir une bonne position de départ pour le premier clone. Pour ce faire, passons au mouvement, introduisons un bloc Go to X Y, et allons-y avec moins 205 pour X et 150 pour Y. Nous voulons également que chaque clone ait un indice, le premier clone obtenant un indice de un, le second un indice de deux jusqu'à la santé maximale du joueur Pour cela, passons aux variables et créons-en une nouvelle. Appelons-le index et veillons à ne choisir que ce sprite Et cachons la variable d' index. Ajoutons maintenant un bloc set two au script create Clone et définissons l'index sur un. Ensuite, l'utilisation d'un bloc de répétition créera suffisamment de clones pour le maximum de santé que le joueur peut avoir Cela est donné par la variable de santé maximale du joueur, que nous sommes actuellement en train de définir à trois dans le code Sprite du joueur Cela créera donc trois clones HeartsPrte. Cependant, si nous voulions faire quelque chose étrange, comme fixer la santé maximale à 3,5, nous aurions en fait besoin de créer quatre clones pour tenir compte de la demi-vie supplémentaire Par conséquent, nous devons utiliser la valeur arrondie lors de la création des clones. OK, je vais d'abord remettre la santé maximale du joueur à trois, et dans le script de création de clones du HeartSprite, passons au contrôle et introduisons un bloc de répétition Pour le nombre de répétitions, passons d'abord aux opérateurs et introduisons un bloc rond. Accédez ensuite aux variables et ajoutez un bloc de santé maximum pour le joueur. Ensuite, nous allons créer un clone en accédant à Control et en introduisant un bloc Create clone of Myself. Ensuite, nous voulons augmenter la variable d'index pour le prochain clone. Passons donc aux variables, introduisons une modification par bloc et changeons l'indice par un. Enfin, nous devons positionner le clone suivant un peu plus à droite. Passons donc au mouvement et apportons une modification x par bloc. J'ai trouvé que changer X par 45 fonctionne plutôt bien. Bien, maintenant que nous créons les clones, nous devons les trier dans les couches Passons donc à Control et apportons un « when I start » en tant que bloc de clonage dans un espace vide. Et ici, passons aux blocs MI et introduisons un bloc de tri en couches. Accédez ensuite aux variables et utilisez un bloc Hud Z comme entrée d'ordre Z. Et comme nous le faisons avec le bouton Pause, nous devrions également rendre les cœurs partiellement transparents afin que le joueur puisse voir à travers eux. Pour ce faire, nous réglons l'effet fantôme des boutons de pause sur 30, et nous ferons de même pour les cœurs. Donc, dans The Heart Sprites, quand je commence par un script de clonage, passons à Looks, introduisons un ensemble d'effets en deux blocs et réglons l'effet fantôme à 30 Enfin, nous devons créer un costume pour le clone. Nous allons le faire en utilisant l'index des clones et la santé actuelle du joueur dans un instant. Mais pour l'instant, apportons simplement un bloc de costumes Switch et passons à Full Heart. Avant de lancer le jeu, éliminons les pièces et les affichages des variables de santé des joueurs. Maintenant, si nous essayons, nous devrions voir trois cœurs en haut à gauche de la scène. Bien, nous voulons maintenant choisir différents costumes pour les clones en fonction de la santé actuelle du joueur Pour ce faire, nous devrons vérifier en permanence état de santé du joueur tout au long du jeu. Donc, d'abord, détachons le bloc de costumes Switch de celui où je commence en tant que script de clonage pour le moment Passons ensuite à Control et ajoutons un bloc permanent au script. Ici, nous voulons vérifier si la santé actuelle du joueur est inférieure à l'indice du clone actuel. Si tel est le cas, cela signifie que le clone doit utiliser le costume en demi-cœur ou le costume en forme de cœur vide. Par exemple, si la santé actuelle du joueur est de deux et que l' indice du clone est de trois, le clone doit utiliser le costume en forme de cœur vide. En revanche, si la santé du joueur n'est pas inférieure à l'indice, le clone doit utiliser le costume en forme de cœur complet. Donc, pour vérifier cela, ajoutons un bloc IT s au bloc forever. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si la santé du joueur est inférieure à l'indice. Et nous pouvons déplacer le costume Switch en bloc cardiaque complet ici dans la partie S. Maintenant, dans la partie I, nous voulons vérifier si la valeur arrondie de la santé actuelle du joueur est égale à l'indice des clones. Si c'est le cas, le clone doit utiliser le costume en demi-cœur. Sinon, il doit utiliser le costume en forme de cœur vide. Par exemple, si la santé du joueur est 1,5 et que l'indice des clones est de deux, arrondir la santé nous donne deux, ce qui correspond à l' Le clone utilisera donc le costume en demi-cœur. En revanche, si la santé du joueur est de 1,5 et que l' indice des clones est de trois, il doit utiliser le costume en forme de cœur vide Passons donc au contrôle et ajoutons un bloc I puis s à la partie I de celui-ci. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Placez ensuite un bloc rond sur le côté gauche. Passons maintenant aux variables et vérifions si la valeur arrondie de la santé du joueur est égale à l'indice. Ensuite, nous pouvons accéder à Looks et ajouter un bloc de costume interchangeable à chaque pièce. Pour la partie « if », passons au costume en demi-cœur. Et pour ce qui est des points forts, passons au costume en forme de cœur vide. OK ? Si nous relançons le jeu, les cœurs semblent être les mêmes qu'avant. Mais si nous commençons à perdre de la santé, les costumes affichent désormais correctement la santé du joueur. Très bien, génial. Maintenant que nous savons que l'affichage cardiaque fonctionne, nous pouvons accéder aux variables et masquer la variable de santé du joueur. Dans la prochaine leçon, nous travaillerons sur l'affichage des pièces. 111. Créer l'affichage de pièces: Pour créer le présentoir à pièces, nous allons utiliser le sprite du compteur de pièces ici La façon dont nous allons procéder sera en fait assez similaire à la façon dont nous affichons le score lors des deux matchs précédents. Et si nous examinons les costumes, comme pour les sprites qui marquent des points dans ces jeux, celui-ci a un costume pour chacun des chiffres de 0 Il possède également un costume d'icône, que nous allons d'abord afficher, ainsi qu'un costume en X, qui s'affichera entre l'icône et les chiffres. Pour commencer à coder le sprite du compteur de pièces, prenons quelques scripts du sprite en forme de cœur Nous pouvons copier le script du drapeau vert et le script de tri et de couche tels quels. Nous avons également besoin d'un script Create Clone, mais les blocs qu'il contient seront un peu différents. Supprimons donc d'abord tous les blocs et copions le bloc Create Clones défini Remettez ensuite les blocs dedans. Ensuite, nous pouvons copier le script de configuration tel quel. Enfin, pour le script When I start as a clone, extrayons le bloc permanent, copions le reste du script et remettons le tout dedans. Passons ensuite au sprite du compteur de pièces. OK, donc pour le script de création de clones, nous allons d'abord créer quelques clones en utilisant le costume d'icône et le costume de X. Ensuite, nous allons créer des clones à deux chiffres, et nous allons commencer par définir une position pour le premier clone Passons donc au mouvement et introduisons un bloc Go to XY. Pour les entrées, utilisons le négatif 205 pour X et 110 pour Y. Ensuite, nous allons changer de costume Passons donc à Looks, introduisons un bloc de costumes Switch et passons à l'icône. Enfin, nous allons créer le premier clone en accédant à Control et en ajoutant un bloc Create clone of Myself. Pour le clone suivant, nous voulons nous déplacer un peu vers la droite. Passons donc au mouvement, introduisons une modification X par bloc, et modifions-la de 32. Nous pouvons maintenant dupliquer les trois blocs du bas et les ajouter au bas. Passons au costume X. Le bloc X de changement inférieur sera pour le clone à premier chiffre et nous changerons X de 25. Avant de commencer à créer les clones numériques, nous voulons leur donner un index, comme nous l'avons fait pour les clones de Sprite en forme de cœur Passons donc d'abord aux variables et créons-en une nouvelle. Appelons-le index, utilisons-le uniquement pour ce sprite et masquons la variable Maintenant, introduisons un ensemble à bloquer et définissons l'index sur un. Nous voulons également passer à un costume numérique par défaut. Passons donc à Looks et apportons un bloc de costumes Switch. Nous pouvons choisir parmi tous les costumes qui commencent par un chiffre Je vais donc opter pour le costume à chiffres simples. Ensuite, nous voulons créer suffisamment de clones pour tenir compte du nombre maximum de chiffres que la variable coins peut avoir Actuellement, la valeur des pièces ne dépasse jamais deux chiffres, je vais donc créer deux clones. Mais si vous décidez de faire quelque chose fou, comme ajouter 100 pièces à un niveau, vous devrez créer trois clones. Très bien, donc pour créer les clones, passons d'abord au contrôle et introduisons un bloc de répétition Et je vais utiliser deux comme nombre de répétitions. Ensuite, nous allons créer un clone en ajoutant un bloc CrakKline of myself au bloc de Nous voulons ensuite passer un peu plus aux droits et augmenter l' index pour le prochain clone. Passons donc d'abord au mouvement, ajoutons une modification x par bloc après le bloc Create Clone et modifions-la par 25. Passons ensuite aux variables, introduisons une modification par bloc et changeons l'indice par un. OK, maintenant, dans le script When I start as a clone, si le clone est un clone numérique, nous voulons toujours régler son costume le bon costume numérique fonction de la valeur actuelle de la variable pièces. Nous devons donc d'abord vérifier si le clone actuel est un clone numérique. Pour ce faire, passons au contrôle et introduisons un bloc mince. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite à Regardes un bloc de numéros de costume par rapport au bloc égal. Et vérifiez si le nom du costume correspond au costume numérique par défaut que nous avons utilisé lors de la création du clone. Donc, dans mon cas, je vais vérifier si c' est égal au mot chiffre. Maintenant, pour choisir le costume approprié, nous allons utiliser exactement la même méthode que celle que nous avons utilisée pour les clones de scores dans les deux jeux précédents Et je vais vous lancer ce défi. Alors, mettez la vidéo en pause maintenant et voyez si vous pouvez écrire le code pour remplacer le costume du clone par le costume numérique correct Et n'oubliez pas que nous voulons le faire en permanence. OK, donc ce que nous allons faire, c'est utiliser l'index des clones pour obtenir le chiffre correspondant dans la variable coins Et si nous mettons le mot chiffre devant, cela nous donnera le nom du costume correct. OK, donc d'abord, pour le faire en continu, passons à Control et introduisons un blocage permanent. Passons ensuite à Looks et ajoutons un bloc de costumes Switch au bloc Forever. Pour obtenir le nom du costume, allons voir les opérateurs et introduisons un bloc de jointure. Utilisons ensuite une lettre de bloc pour la deuxième entrée. Passons maintenant aux variables et joignons le mot chiffre à l'index des lettres des pièces. Si nous lançons maintenant le jeu, nous obtenons un joli présentoir à pièces, qui compte également à rebours lorsque nous collectons les pièces. Bien, activons maintenant le mode Dieu et passons au niveau quatre niveau quatre ne contient aucune pièce, nous obtenons donc un zéro dans l'affichage des pièces. Cependant, nous ne voulons pas montrer l' affichage des pièces au niveau quatre. Nous allons plutôt afficher la barre de santé du boss. Pour l'instant, dans le script de configuration, nous pouvons supprimer l' affichage des pièces pour le niveau quatre en ne créant les clones que si le niveau actuel est inférieur au niveau final Pour ce faire, allons dans Control et prenons un bloc ITN, et nous pouvons l'enrouler à la fois autour du bloc et nous pouvons l'enrouler à la fois autour de création de clones et du bloc de changement de costume en bloc vide Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si le niveau est inférieur au niveau final. Désormais, le niveau 4 ne comporte pas de présentoir de pièces, mais les autres niveaux en ont toujours. Bien, maintenant nous pouvons masquer la variable « pièces », et en parlant du niveau 4, nous allons maintenant travailler sur l'ajout du boss au jeu, ce qui va être très amusant 112. Mettre en place le patron: Une fois que le joueur a collecté toutes les pièces des niveaux un, deux et trois, afin de racheter son vaisseau spatial volé au boss nommé NdNarb, il passera au niveau quatre, où il se retrouvera face à face avec NadNRB Cependant, NdNarb étant méchant, décide qu'il veut garder le vaisseau spatial du joueur Donc, si le joueur veut vraiment le récupérer, il devra le vaincre. Pour créer le boss, nous utiliserons le Boss Sprite Si nous regardons ses costumes, il a une animation de mouche en deux images, une animation de blessure en deux images, une animation de mort en une image et une boîte à hanches. D'accord, et comme les autres ennemis, le joueur devra sauter sur la tête du boss pour le blesser. Contrairement aux autres ennemis, le joueur devra sauter plusieurs fois sur le boss pour le vaincre et affichera sa santé dans le capot. De plus, tout au long du combat contre le boss, le boss tirera des roquettes qui poursuivent le joueur et explosent lorsqu'elles le touchent Mais nous traiterons de tout cela un peu plus tard. Pour l'instant, nous allons simplement faire bouger le boss dans le jeu. Et pour ce faire, nous pouvons commencer par accéder au code B Sprite et copier certains scripts Copions d'abord le script Check Touching Player et animons dans le Boss Sprite Nous ne créerons pas de clones pour le boss, nous pouvons donc ignorer le script de création de clones Mais nous voulons trier les couches et obtenir une position juste. Ensuite, nous voulons le script d'action handle, mais uniquement l'état if est égal à la partie morte. Retirons d'abord tout le reste, copions le script et remettons-le dedans. Nous n'en avons pas besoin lorsque je commence en tant que clone, mais nous avons besoin des trois lorsque je reçois des scripts de mise à jour. Pour le script de configuration, nous pouvons copier uniquement le bloc de configuration lorsque j'ai reçu lui-même. Enfin, copions le script du drapeau vert. Accédez ensuite au code Boss Brite et nettoyez-le. Bien, maintenant, dans le script d'animation, nous voulons changer l'image d'animation lorsque le boss est en état volant ou blessé, mais pas en état mais pas Donc, pour ce qui est de la condition, sortons que l'état est égal à un bloc de mouches pour le moment. Passons ensuite aux opérateurs et utilisons un bloc Knot comme condition. Mettons maintenant le bloc state equals fly dans le bloc nœud et vérifions si ce n'est pas le cas. Rendons également l' animation un peu plus rapide en modifiant l'image anim de 0,2 Passons maintenant au script de configuration actuellement vide. Bien entendu, nous ne voulons faire apparaître le boss que si nous sommes actuellement au niveau quatre. Sinon, nous allons simplement régler le costume de sprites sur le costume vierge Alors d'abord, passons au contrôle et introduisons un bloc if thin s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le niveau est égal au niveau final. Pour la partie ts, passons à Looks, apportons un bloc de costumes Switch et passons au costume vierge. Pour la partie I, nous allons commencer par initialiser toutes les variables du boss, puis nous devrons accéder aux variables et en créer de nouvelles Nous allons d'abord créer quelques variables pour la santé actuelle du boss et le maximum de santé qu'il peut avoir Et comme le sprite de la barre de santé Boss devra également y accéder, nous en ferons des variables globales. Donc, pour le premier, appelons-le Boss Health. Et fais-le pour tous les sprites. Créons-en un autre, appelons-le Max Boss Health, et faisons-en un pour tous les Sprites santé de MaxBos ne changera pas pendant le jeu, nous allons donc la définir dans le script du drapeau vert Pour ce faire, ajoutons un bloc défini à deux au script et fixons Max Boss Health à dix. Pour la variable boss health, ajoutons un set to block à la partie I du bloc ITN outs dans le script de configuration, et définissons-la sur Max Boss Health Ensuite, lorsque le boss est immobile et qu'il tire des roquettes, nous le ferons sauter de haut en bas. Nous utiliserons la trigonométrie pour cela et nous devrons suivre l'angle Créons donc une autre variable. Appelle-le angle et fais-le uniquement pour ce sprite. Pour l'initialiser, ajoutons un autre bloc set two au script de configuration et fixons l'angle à zéro Ensuite, nous aurons besoin d'une variable pour la vitesse que le boss utilisera en vol. Nous pouvons l'appeler vitesse de vol et l'utiliser uniquement pour ce sprite La valeur de la vitesse de vol changera ultérieurement selon que le boss est blessé ou non. Mais pour l'instant, introduisons un ensemble de deux blocs. Et réglez-le sur une valeur par défaut de quatre. Ensuite, tout au long du combat, le boss alterne entre voler au hasard dans le niveau et tirer trois roquettes sur le joueur. Pour ces actions, nous aurons besoin de trois variables une pour le chronomètre, une pour indiquer si le boss est en train de tirer ou non, et une pour le nombre de roquettes qu'il lui reste à tirer. Donc, pour la variable suivante, appelons-la timer et utilisons-la uniquement pour ce sprite Créons-en un autre, appelons-le shooting. Également pour ce sprite uniquement. Créons-en un de plus. Appelez ça des fusées à tirer et fabriquez-le uniquement pour ce sprite Pour définir les trois variables, ajoutons trois autres blocs set two au script de configuration. Réglons d'abord le minuteur sur 30. Pour le tir, la valeur sera soit un lorsque le boss tire des roquettes soit zéro lorsqu'il ne tire pas. Pour l'instant, nous allons le mettre à zéro. Enfin, réglons les fusées pour qu'elles tirent jusqu'à trois. OK, c'est tout pour les nouvelles variables. Allons-y et cachons-les tous l'exception de la santé du boss. Nous allons laisser la variable de santé du boss affichée pour le moment, mais déplaçons-la légèrement vers le bas pour qu'elle n' interfère pas avec le HUD Maintenant, nous devons également définir les variables restantes du boss, telles que sa position globale, sa vitesse, son état et le cadre d'animation Donc, pour tout cela, ajoutons six autres blocs set two au script de configuration. Réglons d'abord X à 150 et Y à 50. Cela le placera à peu près ici dans le niveau. Maintenant, nous avons besoin d' une autre variable pour la vitesse horizontale du boss Créons-en donc un nouveau. Appelez-le SpeedX. Faites-le uniquement pour ce sprite et masquez la variable Réglons maintenant la vitesse x et la vitesse Y sur zéro, car il sera immobile au début. Enfin, réglons State pour voler et Atom frame sur zéro. C'est bon. Maintenant, il ne nous reste plus que quelques choses à faire pour la configuration. Tout d'abord, nous allons faire en sorte que le boss commence face à gauche afin qu'il regarde le joueur. Passons donc au mouvement, introduisons un bloc de points et de directions et pointons dans une direction négative de 90. Et pendant que nous y sommes, changeons le type de rotation de Boss Brights de gauche à droite Ensuite, nous devons définir le costume par défaut du boss. Passons donc à Looks, apportons un bloc de costumes Switch et changez-le pour Fly Zero. Nous devons également positionner le boss sur la scène. Passons donc à Mbloxs et introduisons un bloc de réglage de position Enfin, nous devons le trier par couches. Nous allons donc introduire un bloc de tri en couches. Passons ensuite aux variables et utilisons un bloc de composant Z comme entrée. D'accord ? Si nous lançons maintenant le jeu, activons le mode Dieu et passons au niveau quatre, le boss apparaît. Et si on y regarde de plus près, on peut voir que le feu au bas de ce jet pack est en train de s'animer Il ne fait pas grand-chose d'autre pour le moment , nous allons donc corriger cela dans la prochaine leçon. 113. Faire voler le patron: Pour continuer à travailler sur le boss, passons au script d'action Handle. abord, lorsque le boss meurt et tombe en bas de la scène, parce qu'il est assez gros, nous le laissons tomber un peu plus loin que moins 180. Donc, dans le bloc I Y est inférieur à moins 180, vérifions s'il est inférieur à moins 300. De plus, comme nous n'utilisons pas de clones, nous pouvons nous débarrasser des deux blocs de suppression Nous voulons plutôt diffuser le message, qui sera reçu par la toile de fond. Passons aux événements, introduisons un bloc de diffusion et diffusons un nouveau message intitulé Boss Dide. Nous traiterons le message du boss un peu plus tard. Mais d'abord, nous allons demander au boss d'effectuer certaines actions, comme voler dans le jeu. Pour ce faire, nous allons d'abord modifier sa position à l'aide des variables speed X et SpeedY. Passons donc aux variables et ajoutons deux blocs de modification B au bas du script. Et changeons X par vitesse X et Y par rapidité. Mais comme nous initialisons la vitesse X et la vitesse Y à zéro, le boss n'ira nulle part pour l'instant. Donc, ce que nous voulons faire ensuite c'est vérifier si le chronomètre est terminé. Si c'est le cas, nous obligerons le boss voler ou à tirer des roquettes. Dans le cas contraire, nous réduirons simplement le temps imparti. OK, alors d'abord, passons au contrôle et introduisons un bloc « I » puis « outs ». Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le chronomètre est égal à zéro. Pour la partie ts, introduisons une modification par bloc et changeons le chronomètre par une valeur négative. Dans la partie I, nous voulons vérifier si le boss est en train de tirer ou non en vérifiant si la variable de tir est égale à un. Passons donc au contrôle et ajoutons un bloc I puis s à la partie if de celui-ci. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si la prise de vue est égale à un. Nous n'avons pas encore créé les fusées, nous allons donc laisser la partie I vide pour le moment. Par contre, si le boss ne tire pas actuellement, nous vérifierons si sa vitesse horizontale actuelle est égale à zéro. Si c'est le cas, nous le déplacerons dans une direction aléatoire. Sinon, nous le préparerons à commencer le tournage. Passons donc à Control, un autre bloc si c'est le cas, et placons-le dans la partie extérieure de celui-ci. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si la vitesse x est égale à zéro. Et dans la partie I, nous allons déplacer le boss dans une direction aléatoire. Et comme le script d'action Handle va devenir assez long, nous allons réduire légèrement sa taille en utilisant des blocs personnalisés pour les différentes actions. Passons donc à Mblock et créons-en un nouveau. Nous pouvons l'appeler se déplacer dans une direction aléatoire. Et cliquez sur OK. Et allons-y et ajoutons un bloc de déplacement dans une direction aléatoire à la partie I du bloc I speed X égal à zéro. Très bien, maintenant déplaçons le bloc de mouvement dans une direction aléatoire défini dans un espace vide. Et ici, nous voulons faire bouger le boss de manière aléatoire vers la gauche ou vers la droite. Pour ce faire, nous pouvons d'abord générer un nombre aléatoire 1-2, et si c'est un, nous le ferons bouger vers la droite, et si c'est deux, nous le ferons bouger vers la gauche. Passons donc au contrôle et introduisons un bloc I puis outs. Pour la condition, passons aux opérateurs et introduisons d'abord un bloc égal. Ensuite, mettons un bloc de sélection aléatoire sur le côté gauche et vérifions si un nombre aléatoire de 1 à 2 est égal à un. Passons maintenant aux variables, ajoutons un bloc set two à chaque partie du bloc I puis s, et utilisons-les pour définir SpeedXF. La partie I définira SpeedX sur la variable de vitesse de vol. Pour la partie sorties, nous voulons que la vitesse x soit négative. Passons donc d'abord aux opérateurs et introduisons un bloc de soustraction. Revenons ensuite aux variables, et faisons zéro moins la vitesse de vol. Nous voulons également que le patron fasse face dans la bonne direction. Passons donc au mouvement et ajoutons un bloc de points et de direction à chaque pièce. Pour la partie if, nous allons pointer dans la direction 90, et pour la partie s, nous allons faire moins 90. Ensuite, nous allons faire en sorte que le boss se déplace au hasard vers le haut, le bas ou qu'il ne se déplace pas verticalement. C'est assez simple de le faire. Passons d'abord aux variables, ajoutons un ensemble à bloquer en bas du script et définissons la vitesse Y. Passons maintenant aux opérateurs, et nous voulons prendre en compte la variable de vitesse de vol. Donc, introduisons d'abord un bloc de multiplication, puis mettons un bloc choisi au hasard sur un côté. Nous pouvons maintenant choisir un nombre aléatoire entre moins un et un. Ensuite, nous pouvons passer aux variables et multiplier le nombre aléatoire par la vitesse de vol. La raison pour laquelle nous n'avons pas pu le faire pour la vitesse X est que nous ne voulons pas que la vitesse X soit nulle. Bien, revenons maintenant au script d' action Handle. Après avoir défini un mouvement aléatoire pour le boss, nous réglerons le chronomètre pour lui permettre de se déplacer un peu. Ajoutons donc un ensemble de blocs en dessous du bloc de direction aléatoire en mouvement, et réglons le chronomètre sur 120 , soit environ 4 secondes. Ensuite, dans la partie vide, nous allons préparer le boss à commencer à tirer. Pour l'instant, cela consistera à arrêter le mouvement du boss et à régler la variable de tir sur un, et nous allons également le faire dans un bloc personnalisé. Passons donc à Mblock et créons-en un nouveau. Nous pouvons l'appeler « Prepare to shoot » et cliquer sur OK. Ajoutons un bloc de préparation au tir à la partie des retraits, la vitesse X étant égale à zéro bloc. Déplaçons ensuite le bloc « Prepare to shoot » défini dans un espace vide. Et ici, passons aux variables et introduisons trois ensembles de deux blocs. Pour arrêter le mouvement du boss, réglons les vitesses x et SpeedY à zéro Enfin, réglons la prise de vue à un. Ce qui se passera, c'est qu'après le délai initial de 30 images, le script d'action Handle vérifiera si le nombre de prises de vue est égal à un. Comme nous initialisons la prise de vue à zéro, il vérifiera ensuite si SpeedX est égal à Ce sera le cas, il déplacera donc le boss dans une direction aléatoire pendant 120 images. Une fois le chronomètre terminé, prise de vue sera toujours nulle, mais SpeedX ne sera plus égale à zéro Cela signifie que le bloc «   Prepare to shoot » s'exécutera, ce qui arrêtera le mouvement du boss et fixera le tir à un Ainsi, à partir de l'image suivante, tournage ne fera qu'un et le boss restera immobile. Très bien, essayons-le. Après un délai d'une seconde, le boss se déplace dans une direction aléatoire pendant environ 4 secondes, puis s'arrête. Cool. Pour le moment, cependant, le boss est capable de sortir du niveau. Nous voulons limiter ses mouvements, le faisant aller dans la direction opposée lorsqu' il atteint une limite de niveau. Nous allons le faire dans un bloc personnalisé. Passons donc à Mes blocs et créons-en un nouveau. Nous pouvons appeler cela limiter les mouvements et cliquer sur OK. Nous voulons limiter le mouvement juste après avoir modifié les variables X et Y dans le script d'action Handle. Ajoutons donc un bloc de mouvement limite juste après le changement de bloc Y. D'accord ? Trouvons maintenant un espace vide pour le script de limitation des mouvements. Ici, nous allons d'abord vérifier si le boss est proche du côté gauche ou droit du niveau, et si c'est le cas, nous allons le faire se déplacer dans la direction opposée. Passons donc au contrôle et introduisons un bloc if le s. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et vérifions si X est inférieur à moins 180. Si tel est le cas, introduisons d'abord un ensemble à bloquer et fixons X à moins 180. Ensuite, comme le boss se déplacera vers la gauche, si cela se produit, nous le ferons se déplacer vers la droite. Ajoutons un autre ensemble à bloquer, et réglons SpeedX sur la vitesse de vol, en donnant à SpeedX une valeur positive Nous voulons également qu'il fasse face à droite. Passons donc au mouvement et introduisons un point dans le bloc de direction 90. OK, maintenant, dans la partie des retraits, nous allons vérifier si le boss s'est rapproché du bon côté du niveau. Alors d'abord, passons au contrôle et introduisons un si le bloc. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Mettons ensuite un bloc d'addition sur le côté droit. Passons maintenant aux variables, et vérifions si X est supérieur au défilement maximal, X. Plus 180. Et ici, nous pouvons d'abord introduire des doublons des trois blocs du bloc si X est inférieur à moins 180 Mais cette fois, nous voulons définir X comme une copie du bloc Max Scroll X plus 180. Pour la vitesse X, nous voulons utiliser la valeur négative de la vitesse de vol. Sortons donc d'abord le bloc de vitesse de vol. Passez ensuite aux opérateurs, introduisez un bloc de soustraction et faites zéro moins la vitesse de vol. Enfin, nous voulons pointer dans la direction négative 90. Pour tout tester, passons au script d'action handle. Et après avoir bloqué le mouvement dans une direction aléatoire, faisons voler le boss un peu plus longtemps en réglant temporairement le chronomètre sur 500. Si nous lançons maintenant le jeu, le boss rebondira sur les côtés gauche et droit du niveau Ensuite, nous travaillerons sur les limites supérieure et inférieure. Pour le sommet, nous ne voulons pas que le boss monte trop haut, sinon le joueur ne pourra pas lui sauter dessus. Et pour le fond, nous l'empêcherons d' entrer dans la lave. OK. Pour en revenir au script de limitation des mouvements, nous pouvons commencer par dupliquer l'intégralité du bloc Ix est inférieur à moins de 180 et le placer au bas du Pour la limite inférieure, vérifions si Y est inférieur à moins 50. Ce sera juste au-dessus de la lave. Si c'est le cas, nous voulons régler Y à moins 50 et nous voulons que le boss commence à voler en réglant la vitesse Y sur la vitesse de vol. Pour la limite supérieure, vérifions si Y est supérieur au défilement maximal Y plus 80. Si c'est le cas, réglons Y sur MX scroll Y plus 80 et réglons la vitesse Y sur zéro moins la vitesse de vol. Et nous pouvons nous débarrasser des deux blocs de points et de directions. Désormais, le boss ne volera pas trop haut et ne pénétrera pas dans la lave. À l'heure actuelle, nous devons obliger le boss à tirer des roquettes. Mais d'abord, pendant qu'il est immobile, il serait plus beau de le faire sauter de haut en bas, comme dans une animation inactive. Nous allons le faire dans un autre bloc personnalisé. Allons dans ma boîte et créons-en une nouvelle. Appelons-le bob de haut en bas et cliquez sur OK. Nous voulons simplement que le boss monte et descend lorsqu'il ne vole pas, sinon cela aurait l' air un peu bizarre. Passons donc au script d'action Handle. Et avant de changer la position du boss, nous allons vérifier si la vitesse X est actuellement nulle Si c'est le cas, nous allons le balancer de haut en bas. D'accord ? Alors d'abord, passons à Control et plaçons un bloc INN dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si SpeedX est égal à zéro Si c'est le cas, passons aux blocs M et ajoutons un bloc bob vers le haut et vers le bas. Mettons ensuite tout cela juste au-dessus du bloc X de modification. C'est bon. Maintenant, après le bloc de déplacement et de direction aléatoire, remettons le chronomètre à 120, passons également au script de configuration et initialisons le chronomètre à environ 200 afin qu'il un peu plus longtemps avant de commencer à Trouvons maintenant le bloc bob haut et bas défini et déplaçons-le dans un espace vide. Et ici, passons d'abord aux variables et apportons une modification par bloc. Et changeons l'angle par quatre. Nous pouvons l'utiliser pour contrôler la vitesse à laquelle le boss se déplace de haut en bas. Ensuite, nous allons définir la variable de vitesse Y à l'aide de la trigonométrie. Pour ce faire, introduisons d'abord un ensemble à bloquer et réglons la vitesse Y. Passons ensuite aux opérateurs, introduisons un abdos de bloc et utilisons la fonction cause Revenons ensuite aux variables et obtenons le cosinus de la variable d'angle Si nous lançons maintenant le jeu, le boss montera et descendra en douceur . Et une fois qu'il commence à se déplacer vers la gauche ou la droite, il arrête également de bouger. Si nous pensons qu'il monte et descend un peu trop loin ou pas assez loin, nous pouvons multiplier la cause du résultat de l'angle par une autre valeur Pour ce faire, examinons la cause du blocage angulaire pour le moment. Passons ensuite aux opérateurs, ajoutons un bloc de multiplication au bloc Y de vitesse défini et mettons de côté la cause du bloc d' angle. Si on le multiplie par une valeur supérieure à un, il montera plus haut en haut et plus bas en bas. Et si nous utilisons une valeur décimale de 0 à 1, cela réduira la hauteur ou le bas qu'il peut atteindre Je pense que le multiplier par 0,8 semble plutôt bien. Nous pouvons également augmenter la vitesse de rotation en modifiant l'angle d'une valeur plus élevée Mais je vais m'en tenir à quatre. Nous pourrions également simplement laisser la valeur de l'angle augmenter de plus en plus, mais ce serait un peu inefficace Et dans tous les cas, comme nous l'avons déjà mentionné, les valeurs des cosinus recommencent une fois que l'angle atteint 360 Donc, ce que nous pouvons faire, c'est remettre la valeur de l'angle à zéro chaque fois qu'il atteint 360. Pour ce faire, passons aux variables et ajoutons un bloc d'angle défini juste en dessous du bloc d'angle de changement. Pour la saisie, passons aux opérateurs et introduisons un bloc de mod, puis revenons aux variables, et définissons l'angle sur l'angle mod 360. Désormais, la valeur de l'angle sera remise à zéro lorsqu'elle atteindra 360 degrés et l' effet de balancement restera le même C'est bon. Revenons maintenant au script de configuration et initialisons à nouveau la variable timer à 30. Nous voulons également initialiser le tir à un afin que le boss commence à tirer Et dans la prochaine leçon, nous ferons en sorte qu'il puisse réellement tirer des roquettes. 114. Tir de fusées: Pour que le boss commence à tirer des roquettes, passons au script d'action Handle. Et le tir en I équivaut à un bloc ici Nous voulons vérifier s'il reste encore des roquettes au boss en vérifiant si la variable de fusées à tirer est supérieure à zéro. Si c'est le cas, nous lui demanderons de tirer une fusée, puis de faire une pause avant de tirer la suivante. Sinon, nous mettrons le tir à zéro pour qu'il puisse commencer à voler. Passons donc d'abord au contrôle et ajoutons un bloc IT à la partie I du si tirer équivaut à un bloc. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si les fusées à tirer sont supérieures à zéro. Donc, nous allons diffuser un message, que le Rocket Sprite ici présent recevra Passons donc aux événements, introduisons un bloc de diffusion et diffusons un nouveau message intitulé Shoot Rockets. Ensuite, nous voulons réduire la valeur de tir des fusées. Passons donc aux variables, introduisons une modification par bloc et changeons de fusée pour qu'elle tire par moins un. Enfin, nous voulons attendre un peu avant de tirer la prochaine fusée. Donc, introduisons un set à bloquer, et réglons le chronomètre à 45. S'il ne reste plus de roquettes à tirer, nous voulons apporter un set à bloquer et remettre le tir à zéro. Faisons également attendre un peu le boss avant qu'il ne commence à voler en introduisant un autre set à bloquer et en réglant le chronomètre à 90. Bon, passons maintenant au script de préparation au tournage. Et ici, nous devons réinitialiser le nombre de roquettes à tirer en fonction du nombre de roquettes que nous voulons que le boss tire. Apportons donc un set à bloquer et installons des fusées à tirer. Nous pouvons maintenant essayer d' utiliser un nombre différent de fusées lors des tests afin d'éviter d'avoir à modifier la valeur ici, ainsi que dans le script de configuration, nous allons créer une nouvelle variable pour le nombre maximum de fusées. Appelons ça Max Rockets. Fais-le uniquement pour ça, et nous n'avons pas besoin de le montrer. La valeur de Max Rockets ne changera pas pendant le jeu Nous allons donc la définir dans le script Green Flag en ajoutant un set à bloquer au script et en réglant Max Rockets à trois. Maintenant, dans le script de configuration, au lieu de régler les fusées pour qu'elles tirent à trois, nous pouvons définir le nombre maximum de fusées. Et nous pouvons faire de même dans le script préparé pour le tournage. R, juste pour le fun, nous pouvons faire en sorte que le boss regarde vers le joueur avant qu'il ne commence à tirer. Pour ce faire, nous pouvons vérifier si l'exposition du boss est inférieure à celle du joueur Si c'est le cas, nous l'affronterons sur la droite. Sinon, nous l'affronterons sur la gauche. Je vais vous lancer ce défi. Mettez la vidéo en pause maintenant et voyez si vous pouvez faire tourner le boss vers le joueur. OK, alors d'abord, passons au contrôle et introduisons un bloc de sorties informatiques. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc inférieur à un bloc. Passons ensuite aux variables et plaçons un bloc X sur le côté gauche. Pour le côté droit, passons à la détection, introduisons le numéro du bloc de scène en toile de fond et utilisons-le pour obtenir la variable X des sprites du joueur Si l'exposition du boss est inférieure à celle des joueurs, nous l'affronterons vers la droite en passant au mouvement et en faisant entrer un point dans la direction 90 blocs. Sinon, nous allons pointer dans la direction négative 90. Très bien, maintenant nous devons créer les fusées et nous allons le faire en utilisant le Rocket Sprite Si nous jetons un coup d' œil à ses costumes, il possède une simple animation de mouche à deux images et un hipbx OK, et pour commencer à coder le Rocket Sprite, passons d'abord au code BSprite et copions Nous pouvons copier, vérifier toucher le joueur animer, trier en couches et ajuster la position pour les actions de manipulation . Copions uniquement le bloc défini. Maintenant, copions quand je commence en tant que clone et les scripts de mise à jour T. Pour le script de configuration, supprimons tout ce qui se trouve une fois que le costume est égal à un bloc vide, copions le script et remettons le tout dedans. Enfin, copions le script du drapeau vert. Accédez ensuite au code Rocket Sprite et nettoyez-le. OK, donc dans le script du Rocket Sprite qui touche le joueur, nous n'avons pas besoin de vérifier si le joueur est en train de tomber parce qu'il ne peut pas détruire une roquette en sautant dessus Si la roquette touche le joueur de quelque façon que ce soit, le joueur sera blessé. Donc, dans le bloc I touch player, après avoir diffusé le joueur de rebond, nous voulons seulement exécuter le I X du joueur est supérieur à la partie X ici Et nous pouvons nous débarrasser de l'état I selon lequel le joueur est égal à un bloc de chute. Ensuite, pour le script d'animation, une fusée ne sera toujours qu'à l'état volant, nous n'avons donc pas besoin de vérifier son état Sortons donc la monnaie, définissons des blocs nom frame et placons-les juste en dessous du bloc de costume Switch. Alors débarrassons-nous du bloc I then. Supprimons également le bloc d'état du bloc de costume Switch et utilisons plutôt le mot mouche. Et pour la vitesse de l'animation, changeons le nom frame de 0,2. Ensuite, et quand je recevrai la première mise à jour, nous n'avons pas besoin de vérifier l'état. Mettons la case qui touche le bloc joueur juste en dessous du bloc de réglage de la position et éliminons le bloc I state equals fly. OK, maintenant, pour créer des clones de Rocket Sprite, nous le ferons chaque fois que le boss diffusera le message Shootocket Passons d'abord aux événements, introduisons un bloc W I receive et recevons Shoot Rocket. Nous voulons créer un clone uniquement si le sprite récepteur est le sprite d'origine Nous devrons donc vérifier s' il utilise le costume vierge. Pour ce faire, allons d'abord dans Control et introduisons un bloc ITN. Et pour cette condition, nous pouvons utiliser un double du nom d' un costume égal à des blocs blancs. Ensuite, pour créer un clone, nous allons le faire dans un bloc personnalisé. Passons donc à Mblock et créons-en un nouveau. Nous pouvons l'appeler Create Clone et cliquer sur OK. Et mettons un bloc Clone en caisse à l'intérieur du bloc ITN. Très bien, trouvons maintenant de l' espace vide pour le bloc Crate Clone défini Et ici, nous voulons d'abord passer au costume de départ du clone. Allons donc à Los, apportons un bloc de costumes Switch et passons à Fly Zero. Nous voulons également que le clone commence face vers le haut. Passons donc au mouvement et introduisons un bloc de points et de directions. En utilisant une direction de zéro, il sera orienté vers le haut. Ensuite, nous allons définir une position globale pour le clone. Nous voulons qu'il donne l'impression qu'il vient du haut du jet pack du boss Nous allons donc utiliser la position du boss comme point de départ Pour ce faire, passons d'abord aux variables et introduisons deux ensembles de deux blocs. Et définissons la variable X et la variable Y. Pour X, nous devrons le décaler légèrement par rapport à l'exposition Boss Sprites Passons d'abord aux opérateurs et ajoutons un bloc supplémentaire. Passons maintenant à la détection et plaçons numéro de fond du bloc de scène sur un côté du bloc d'addition. Nous voulons d'abord choisir le sprite Boss, puis choisir sa variable X, et à cela nous ajouterons 32 pour Y, nous pouvons simplement utiliser la variable Y du boss Donc, introduisons une copie du bloc X of Boss et changeons-le en Y. Très bien, et pour l'instant, créons le clone en allant dans Control et en introduisant un clone du bloc Create clone of Myself. Nous voulons ensuite revenir au costume Blink en accédant à Looks, en introduisant un bloc de costumes Switch et en passant à Blink Si nous lançons maintenant le jeu, fur et à mesure que le boss descend vers le bas, nous commencerons à voir des fusées. Les positions de départ des roquettes sont correctes lorsque le boss est orienté vers la gauche. Mais lorsqu'il fait face à droite, ils apparaissent devant le patron. Pour résoudre ce problème, lorsque vous définissez la variable X pour un clone de fusée, si le boss est orienté vers la droite, nous voulons soustraire 32 de son exposition Pour ce faire, passons aux opérateurs et remplaçons le 32 par un bloc de multiplication. Mettons ensuite un bloc de division sur le côté droit. Pour la première entrée, tapons 32. Pour le second, dupliquons le X ou le Y du bloc boss et obtenons la direction. Divisons ensuite cela par moins 90. Maintenant, lorsque le boss est orienté vers la gauche, nous obtenons 32 points positifs, et lorsqu'il est orienté vers la droite, nous obtenons moins 32, ce qui devrait corriger le positionnement des clones. OK, ensuite, nous allons faire en sorte que les fusées commencent à voler vers le haut après leur création. Pour cela, nous devons initialiser la variable de vitesse Y. Passons donc aux variables, ajoutons un ensemble à bloquer avant que le crack clone de moi-même ne bloque, et fixons la vitesse Y à six. Nous aurons éventuellement également besoin d'une variable de vitesse X, et nous n'aurons pas besoin d' une variable d'état. Donc, si nous l'avons toujours, nous pouvons changer son nom en SpeedX Et initialisons la vitesse x à zéro dans le script Create Clone Bien, passons maintenant au script d' action Handle vide. Pour l'instant, il suffit de changer la position des clones en utilisant les variables de vitesse Faisons donc le changement par blocs. Et changeons X par vitesse x et Y par vitesse Y. Et maintenant, la fusée devrait monter en haut de la scène au fur et à mesure que le boss lui tire dessus les fusées ne sont pas très efficaces, Mais les fusées ne sont pas très efficaces, elles se dirigent simplement vers le haut. Dans la prochaine leçon, nous leur demanderons donc de chercher le joueur. 115. Chercher le joueur: Pour qu'un clone de fusée cherche le joueur, nous devons le faire pivoter continuellement pour qu'il pointe vers le joueur et le déplacer dans cette direction. Nous allons le faire dans le script d'action handle avant de modifier les variables X et Y, et nous le ferons dans un bloc personnalisé. Passons d'abord à Mes blocs et créons-en un nouveau. Appelons-le SEC player. Cliquez sur OK et placez un bloc de joueur SEC tout en haut du script d'action Handle. Maintenant, dans le lecteur Sk défini, la première chose que nous allons faire est pointer le clone vers le sprite du joueur Pour ce faire, nous pouvons simplement passer au mouvement, placer un point vers le bloc et pointer vers le joueur. Ensuite, nous allons régler les vitesses X et Y, et pour que le clone se déplace dans la bonne direction, nous devrons utiliser la trigonométrie Passons d'abord aux variables, introduisons deux ensembles de deux blocs. Et définissez la vitesse X et la vitesse Y. Pour la vitesse X, nous devons obtenir le sinus de la direction des clones, et pour SpeedY, nous devons obtenir le cosinus de la Passons donc aux opérateurs, ajoutons un abdos de bloc à chacun des deux blocs définis, et utilisons la fonction SN pour la vitesse X et la fonction cause pour la vitesse Y. Passons ensuite au mouvement et ajoutons un bloc de direction à chacun Si nous lançons maintenant le jeu, les fusées pointeront et se déplaceront continuellement vers le joueur. Mais c'est certainement un peu trop lent. Pour accélérer le processus, nous pouvons multiplier les résultats du sinus et du cosinus par une autre valeur Pour ce faire, passons aux opérateurs et plaçons deux blocs de multiplication dans un espace vide. Maintenant, pour la vitesse X, nous pouvons faire le sinus de direction multiplié par quatre, et pour la vitesse Y, faisons la cause de la direction multipliée par quatre. Les fusées se déplaceront désormais quatre fois plus vite. Cependant, cela semble un peu étrange étant donné que les fusées cherchent immédiatement le joueur dès leur création, cherchent immédiatement le joueur dès leur création, il serait préférable les laisser d'abord se déplacer un peu vers le haut. Pour ce faire, nous devons savoir si un clone recherche actuellement le joueur et nous avons également besoin d'un chronomètre. Passons donc aux variables et créons-en quelques nouvelles. Appelons le premier à le chercher et faisons-le uniquement pour ce sprite Pour le second, appelons-le minuteur et faisons-le uniquement pour ce Bright. Et cachons les deux variables. Pour initialiser les deux variables, passons au script rake Clone Avant le bloc Rake Clone of Myself, ajoutons deux autres blocs Nous voulons que le clone commence par ne pas rechercher le joueur, alors mettons la recherche à zéro. Ensuite, pour le chronomètre, nous allons le régler sur 20. C'est le temps que nous allons faire attendre au clone avant qu'il ne commence à chercher le joueur, et cela prendra un peu plus d'une demi-seconde. Passons maintenant au script d'action Handle. Ici, nous voulons exécuter le bloc de joueurs SEC uniquement si la variable de recherche est égale à un. Sinon, nous devrons gérer le chronomètre. Passons d'abord à Control, prenons un bloc ITN Outs et enroulons un bloc ITN Outs la partie I autour du bloc joueur Sk Nous voulons quand même changer la position des clones. Replaçons donc les deux blocs Change By en bas des scripts. ce qui concerne l'état du bloc de sorties ITN, allons voir les opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si la recherche est égale à un. Si c'est le cas, nous exécuterons simplement le bloc des joueurs de la SEC. Sinon, nous vérifierons si le chronomètre est terminé, en remplaçant la recherche par une recherche si c'est le cas, et en réduisant le temps si ce n'est pas le cas. Passons donc à Control, un autre bloc I puis s et placez-le dans la partie extérieure de celui-ci. Pour la condition, nous pouvons utiliser une copie du bloc « search equals one et vérifier si le chronomètre est égal à zéro. Si c'est le cas, passons aux variables, introduisons un ensemble à bloquer et un ensemble à rechercher un. Sinon, introduisons une modification par bloc et changeons le chronomètre par une valeur négative. Si nous lançons maintenant le jeu, les fusées volent directement vers le haut pendant environ une demi-seconde avant de se retourner à la recherche du joueur. La façon dont ils tournent, cependant, est un peu abrupte et ne semble pas très réaliste Pour l'améliorer, nous pouvons faire pivoter les clones par petits incréments Pour ce faire, nous devons définir une vitesse de rotation pour les clones. Toujours dans le script du lecteur Sk, avant de modifier la direction du clone pour qu'il pointe vers le joueur, nous voulons enregistrer la direction actuelle du clone. Nous pouvons ensuite vérifier si la différence entre la nouvelle direction et la direction précédente est supérieure à la vitesse de rotation, et si c'est le cas, nous tournerons uniquement en la vitesse de rotation afin que la fusée ne subisse pas un tel changement de direction. OK, donc pour commencer, nous devrons créer quelques nouvelles variables. Appelons la première vitesse de rotation et utilisons-la uniquement pour ce sprite Créons-en un autre, appelons-le DRE précédent. Utilisez-le également uniquement pour ce sprite et masquez les deux variables La valeur de la vitesse de rotation ne changera pas pendant le jeu, nous allons donc la définir dans le script du drapeau vert. Pour ce faire, ajoutons un bloc défini à deux au script et réglons la vitesse de rotation à cinq pour cinq degrés. Passons maintenant au script du lecteur Sk. Avant de pointer vers le blocage du joueur, nous voulons régler le dr précédent dans la direction actuelle du clone. Ajoutons donc un ensemble de deux blocs en haut du script. Passons ensuite au mouvement, et définissons le der précédent sur la direction. Ensuite, après avoir pointé vers le bloc joueur, nous voulons vérifier si la différence entre la nouvelle direction du clone et sa direction précédente est supérieure à la vitesse de rotation. Passons donc d'abord au contrôle, introduisons un bloc I puis, et replaçons les blocs de vitesse X et de vitesse Y au bas du script. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Nous voulons obtenir la valeur absolue de la différence. Mettons donc d'abord un bloc Abso sur le côté gauche. Ajoutez ensuite un bloc de soustraction aux abdos du bloc. Passons maintenant au mouvement et plaçons un bloc de direction sur un côté du bloc de soustraction. Passons ensuite aux variables et vérifions si la valeur absolue de la direction moins le dr précédent est supérieure à la vitesse de rotation. Dans ce cas, nous allons définir la direction du clone en soustrayant la vitesse de rotation de sa direction précédente Cela fera pivoter le clone un peu dans le sens inverse des aiguilles d'une Passons d'abord au mouvement et introduisons un bloc de points et de directions. Pour l'entrée, passons aux opérateurs et introduisons un bloc de soustraction. Passons ensuite aux variables et faisons le dr précédent moins la vitesse de rotation. Si nous lançons maintenant le jeu, les fusées tourneront plus facilement vers le joueur. Cela fonctionne bien dans certains cas, mais si nous tournons vers la droite, car nous ne permettons actuellement aux fusées de tourner que dans le sens antihoraire, elles doivent tourner dans un cercle presque complet avant de pouvoir nous poursuivre Pour l'améliorer, nous devrions permettre aux fusées de choisir le sens de rotation le plus efficace. Pour ce faire, après avoir vérifié si la différence entre les directions est supérieure à la vitesse de rotation, nous pouvons vérifier si la différence est supérieure à 180. Si c'est le cas, la fusée doit tourner dans le sens antihoraire. Dans le cas contraire, il doit tourner dans le sens des aiguilles d'une montre. Passons donc d'abord à Control, un bloc if then outs et enroulons la partie I autour du gros bloc de points et de direction ici. Pour la partie des sorties, nous pouvons introduire une copie du bloc de points et de directions. Mais pour faire pivoter le clone dans le sens des aiguilles d'une montre, au lieu de faire le DR précédent moins la vitesse de rotation, nous voulons nous adresser aux opérateurs, ajouter un bloc supplémentaire et effectuer le DR précédent en plus de la vitesse de rotation maintenant à la condition, Passons maintenant à la condition, introduisons d'abord un bloc supérieur à. Sur le côté gauche, nous voulons obtenir la différence entre la direction et le DRR précédent, mais pas sa valeur absolue Utilisons donc une copie uniquement de la direction moins le bloc dR précédent. Et vérifions-le s' il est supérieur à 180. Mais si nous l'essayons maintenant, cela ne fonctionnera pas réellement. Cela est dû au fait que les valeurs de direction doivent être comprises entre 0 et 359. Mais comme nous le savons déjà, scratch utilise des valeurs négatives lorsqu'un sprite est orienté vers la gauche Pour que cela fonctionne, nous devons nous assurer que la différence entre les directions nous donne toujours une valeur de 0 à 359 Pour ce faire, il suffit de modifier la différence avec 360. Cela fonctionne car le résultat de l'utilisation d'un module avec un nombre négatif sur le côté gauche sera la somme des deux nombres. OK, donc introduisons un bloc de mod et mettons la direction moins troisième bloc précédent sur le côté gauche. Utilisons 360 pour le côté droit. Mettez ensuite tout cela dans le bloc supérieur à. Et maintenant, les fusées tourneront correctement. Bien, il ne nous reste plus qu'à faire sorte que les roquettes atteignent le joueur et explosent, et nous allons commencer à travailler là-dessus dans la prochaine leçon 116. Frapper le joueur: Lorsqu'une roquette touche le joueur, nous voulons qu'elle explose et disparaisse. Pour ce faire, passons au script Check Touching Player. Dans le bloc joueur I touch, après avoir activé Bounce DR, nous ferons exploser la fusée et supprimerons le clone, et nous le ferons dans un bloc personnalisé Passons donc à Mblock et créons-en un nouveau. Appelons-le Explode. Cliquez sur OK et placez un bloc Explode en bas du bloc I touch player. Dans le script define explode, nous allons éventuellement créer une animation d'explosion Mais pour l'instant, nous allons simplement supprimer le clone. Cela signifie que nous devons également supprimer son article de la liste des commandes Z. Passons donc d'abord aux variables, introduisons une suppression de bloc et utilisons un numéro d'élément du bloc comme entrée. Supprimons maintenant le numéro d'article du composant Z dans les commandes Z des commandes Z. Passons ensuite à Control et introduisons un bloc Supprimer ce clone. Si nous lançons maintenant le jeu, les fusées disparaîtront dès qu'elles toucheront le joueur. Pour le moment, cependant, il est pratiquement impossible pour le joueur d'échapper aux roquettes, car elles continuent à arriver jusqu'à ce qu'elles touchent le joueur. Ce que nous pouvons faire à la place, c'est que lorsqu' une fusée arrive à une certaine distance du joueur, nous pouvons régler un chronomètre d' auto-détonation. Une fois le temps imparti, la fusée explosera automatiquement Pour ce faire, nous aurons besoin d'une variable pour savoir si un clone de fusée est sur le point d'exploser ou non est sur le point d'exploser Passons donc aux variables et créons-en une. On peut dire que c'est prêt à exploser. Faites-le uniquement pour ce sprite et masquez la variable. Un clone ne doit pas être prêt à exploser lorsqu'il est créé pour la première fois Donc, pour initialiser la variable, passons au script create Clone Ajoutons un autre ensemble à bloquer au script et un ensemble prêt à exploser à zéro Passons maintenant au script d'action Handle. Lorsque le clone cherche le joueur, nous voulons vérifier si le clone se trouve à une certaine distance du joueur. Et si c'est le cas, nous nous préparerons à exploser à un et nous réglerons également un chronomètre pour l'auto-détonation Passons donc d'abord au contrôle et ajoutons un if then juste après le bloc de plateau Sk. Maintenant, pour ce qui est de la condition, nous voulons régler le chronomètre d'auto-détonation uniquement si le clone n'est pas déjà prêt à Passons donc aux opérateurs et introduisons d'abord un bloc and. Mettons maintenant un bloc égal d' un côté et un bloc inférieur à un bloc de l'autre côté. Passons ensuite aux variables, et vérifions d'abord si ready to explose est égal à zéro Pour le côté gauche du bloc inférieur à 1, nous voulons obtenir la distance entre le clone et le sprite du joueur Pour ce faire, nous pouvons passer à la détection et utiliser une distance pour bloquer. Et vérifierons si la distance par rapport au joueur est inférieure à 120. Si tout cela est le cas, passons aux variables, introduisons les blocs pour les définir. Et préparons-nous à exploser à 1 et le chronomètre à 30, ce qui provoquera l' explosion de la fusée au bout d'une seconde environ OK, alors maintenant, en haut du script d'action handle, nous voulons vérifier si le clone est prêt à exploser Alors d'abord, passons à Control et plaçons un bloc INN dans un espace vide. Pour cette condition, nous pouvons utiliser une copie du bloc « seeking equals one » ici et vérifier si « ready to explose » est égal à un Si c'est le cas, nous devons nous occuper du chronomètre, alors introduisons un bloc si puis s. Pour la condition, nous pouvons utiliser un autre doublon d' un bloc égal et vérifier si le chronomètre est égal à zéro. Si c'est le cas, nous voulons que la fusée explose, alors allons sur MyBlocks et apportons un bloc explosif Si le chronomètre n'est pas terminé, nous voulons le réduire. Passons donc aux variables, introduisons une modification par bloc et changeons le chronomètre par une valeur négative. Si nous plaçons maintenant tout cela en haut du script d' action Handle et que nous lançons le jeu, une fois qu'une fusée passe à 120 pas de nous, elle explose automatiquement au bout d'une seconde environ heure actuelle, cependant, le joueur n'a aucun moyen de savoir qu'une fusée est sur le point d'exploser d'elle-même Pour le faire savoir au joueur, nous pouvons faire clignoter la fusée une fois que son chronomètre d'auto-détonation démarre une fois que son chronomètre d'auto-détonation Nous avons fait la même chose pour indiquer à quel moment le joueur est invincible après s'être blessé Et si nous passons au code du sprite du joueur, nous le faisons en utilisant le script flash if qui concerne l'état du bloc flash if et du script de mise à jour, nous utilisons un bloc mod entre une variable de temporisation, dans ce cas, hurt et un chiffre indiquant la fréquence à laquelle le flash doit être clignoté. OK, donc d'abord, nous pouvons copier le script Flash if dans le Rocket Sprite, puis revenir au Rocket Sprite Pour que le clone clignote lorsqu'il est prêt à exploser, revenons au script d'action Handle, allons dans M Blocks et ajoutons un flash if block en haut du champ I ready to explode equals one Pour la condition, passons aux opérateurs et introduisons d'abord un bloc égal. Placez ensuite un bloc de mod sur le côté gauche. Passons maintenant aux variables, et vérifions si le timer mod 2 est égal à zéro. Et maintenant, une fois qu'une fusée s'approche de nous, elle commence à clignoter en blanc avant d'exploser Génial. Très bien, il ne nous reste plus qu' à créer les explosions. Pour ce faire, nous allons d'abord diffuser un message dans le script Explode, qui sera reçu par l'explosion sp ici Bien, passons aux événements, ajoutons un bloc de diffusion en haut du script Explode et diffusons un nouveau message intitulé Create Explosion Maintenant, nous devons également indiquer au sprite d'explosion où il doit créer une explosion Lorsque le clone explosera automatiquement, nous utiliserons sa position dans le monde comme position d'explosion, et lorsque le clone aura touché le joueur, nous utiliserons la position mondiale du joueur et nous enregistrerons la position dans une liste de variables à laquelle le sprite d'explosion peut accéder Passons aux variables et créons une nouvelle liste. Nous pouvons appeler cela des explosions, et nous voulons en faire une pour tous les sprites Ensuite, dans le script Explode, nous voulons transmettre les positions X et Y de l'explosion en tant qu'entrées Faisons donc un clic droit sur le bloc défini et choisissons Modifier. Tout d'abord, changeons l'étiquette d'explosion explose à X deux-points Ajoutons ensuite une entrée X. Maintenant, ajoutons une autre étiquette de type Y deux-points et ajoutons une entrée de Y. Cliquez ensuite sur OK Ensuite, nous devons ajouter les entrées X et Y à la liste des explosions. Passons donc aux variables. Mettez-en deux et ajoutez deux blocs en haut du script. Et ajoutons les entrées X et Y à la liste des explosions. Passons maintenant au script d'action Handle. Nous exécutons le bloc Explode ici lorsque le clone explose automatiquement Nous voulons donc transmettre les variables X et Y du Ensuite, lorsque vous touchez le joueur, nous lançons le bloc Explode lorsque le clone touche le joueur Nous voulons donc utiliser les variables X et Y du sprite du joueur comme entrées Pour ce faire, passons à la détection et introduisons deux blocs de scène en toile de fond. Ensuite, prenons X du joueur pour le premier et Y du joueur pour le second. OK, si nous lançons le jeu maintenant, lorsqu'une roquette nous atteint, notre position est ajoutée à la liste. Et lorsqu'une fusée explose automatiquement, elle ajoute sa position à la liste Bien, nous devons maintenant accéder au sprite d'explosion, recevoir le message de création d' explosion et créer l'animation d' explosion C'est ce que nous ferons dans la prochaine leçon. 117. Ajouter des explosions de fusée: Si nous jetons un coup d'œil aux costumes des sprites de l' explosion, ils ne contiennent qu'une seule animation à huit images Et pour commencer à coder le sprite, nous pouvons d'abord revenir au code Rocket Sprite et copier certains scripts Tout d'abord, pour le script Create Clone, copions uniquement le bloc défini. Et si vous rencontrez des difficultés copier le script comme moi, nous pouvons d'abord cliquer et faire glisser le sprite d'explosion pour qu'il soit plus haut dans le volet des sprites, puis nous devrions être en mesure de copier le Assurez-vous de réajouter tous les blocs au script de création de clones. Ensuite, nous pouvons également copier des couches de tri animées, ajuster la position Lorsque je commence en tant que clone, et lorsque je reçois la troisième mise à jour, ou lorsque je reçois la mise à jour deux, nous voulons tout sauf le blocage des actions de gestion. Sortons-le d'abord, copions le script et replaçons le bloc d' actions de manipulation juste au-dessus du bloc d'animation De même, nous ne voulons pas que le chèque touche le bloc du joueur dans le script Update One. Supprimons-le donc avant de copier le script. Nous pouvons également le copier lorsque je recevrai Shoot Rocket, mais nous finirons par le remplacer par où je recevrai Create Explosion. Copions maintenant le script de configuration. Et pour le script Green Flag , copions tout sauf le bloc de vitesse de rotation défini. OK, passons maintenant à l'explosion Sprite. Dans le script d'animation du sprite explosif, lorsque nous changeons de costume, nous voulons associer le mot explosion au mot « sol » d' un Et changeons une image d' anime par une. Maintenant, pour l'animation de l' explosion, nous ne voulons l'exécuter qu'une seule fois, et une fois qu'elle sera terminée, nous supprimerons le clone. Donc, d'abord, nous pouvons nous débarrasser du bloc de cadre défini par anim. Passons ensuite au contrôle et introduisons un bloc ITN. Les images de l'animation de l' explosion sont comprises entre 0 et 7. Nous saurons donc que l'animation est terminée lorsque la valeur de nom frame deviendra huit. Donc, pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si nom frame est égal à huit. Donc, nous voulons supprimer l'article de la liste des commandes Z et supprimer le clone. Supprimons donc le bloc et utilisons un numéro d'élément du bloc comme entrée. Maintenant, pour l'ordre Z, nous voulons utiliser l'effet de front Z pour que l'explosion apparaisse devant le joueur. Et veillons à choisir des ordres Z pour les deux entrées de liste. Passons ensuite à Control et supprimons ce bloc de clonage. Ensuite, lorsque je commence en tant que clone, au lieu d'utiliser le composant Z dans le bloc de tri en couches, nous voulons utiliser l'effet de front Z. Ensuite, pour le script Shoot Rocket, remplacons-le par « when I receive create Explosion Dans le script de configuration, nous voulons être sûrs de vider d' abord la liste des explosions. Pour ce faire, passons aux variables et ajoutons le bloc Supprimer toutes les explosions en bas du script. OK, maintenant pour réellement créer une explosion, passons au script de création de clones. Tout d'abord, nous voulons passer au costume de départ. Passons donc à Looks, apportons un bloc de costumes Switch et passons à Explosion Zero. Ensuite, nous allons définir les positions X et Y des clones en utilisant les deux premiers éléments la liste des explosions Pour ce faire, passons d'abord aux variables et introduisons deux ensembles de deux blocs. Ajoutons ensuite un élément de bloc d' explosions à chacun d'eux. Réglons maintenant X sur l'élément un et réglons Y sur l'élément deux. Nous pouvons ensuite supprimer les deux éléments en introduisant pour supprimer l'un des blocs d'explosions. OK, maintenant créons le clone en accédant à Control et en ajoutant un clone génial du bloc Myself. Enfin, passons à Looks, apportons un bloc de costumes Switch et passons au costume vierge. Si nous lançons le jeu maintenant, chaque fois qu'une fusée explose, cela crée une animation d' explosion Génial. D'accord, je pense que nous pouvons accéder aux variables et masquer la liste des explosions maintenant Et lors de la prochaine leçon, nous allons terminer le combat contre le boss en faisant en sorte que le fait de sauter sur le boss réduise sa santé au lieu de le tuer automatiquement. 118. Blesser le patron: Dans le code du boss sprite, trouvons le script du joueur qui touche le chèque Il y a quelques ajustements que nous devons apporter ici. Tout d'abord, lorsque le boss meurt, il ne rebondit pas très haut Pour résoudre ce problème dans le bloc Y de vitesse défini, nous pouvons utiliser une valeur plus élevée, comme 20. Ensuite, il n'est pas nécessaire de sauter très haut sur le boss pour le toucher. En effet, actuellement, la position Y du joueur ne doit être que de 15 pas au-dessus de la position Y du boss. Cela a bien fonctionné pour le sprite Be, mais le boss est un peu plus grand que les abeilles Donc, au lieu de 15, essayons 60. Maintenant, il va falloir sauter près de sa tête pour le frapper. ne sautez pas assez haut le joueur se blessera plutôt. Bien, une fois ces deux choses réglées, nous voulons faire en sorte que pour vaincre le boss, nous devions continuer à lui sauter dessus jusqu'à ce qu'il soit à court de santé. Pour ce faire, avant de mettre le boss à mort, nous voulons réduire son état de santé. Nous vérifierons ensuite si son état de santé est tombé à zéro ou en dessous, et si c'est le cas, nous le mettrons à l'état mort. Sinon, nous le mettrons dans un état blessé pendant une courte période. OK, donc d'abord dans les variables, mettons une modification par bloc au-dessus de l'état défini en bloc mort, et changeons la variable de santé du boss. Normalement, nous voulons seulement le changer par moins un, mais à des fins de test, optons pour le moins cinq. Passons ensuite à Control, un bloc if then else et enroulons la partie I autour des quatre autres blocs. Cependant, nous voulons mettre le videur à zéro, que le boss meure ou soit blessé Déplaçons le bloc videur haut jusqu'à ce qu'il soit proche du bloc de santé du boss Dans la partie I, nous voulons empêcher le boss de se déplacer horizontalement. Passons aux variables, ajoutons un autre bloc set two ici et fixons la vitesse x à zéro. OK, maintenant pour ce qui est de la condition, nous voulons vérifier si le patron est en panne de santé. Cela signifie que la variable de santé du boss est nulle ou inférieure à zéro. Passons donc aux opérateurs et introduisons d'abord un bloc or. Mettons ensuite un bloc égal d' un côté et un bloc inférieur à un bloc de l'autre côté. Passons maintenant aux variables et vérifions si la santé du boss est égale à zéro ou si la santé du boss est inférieure à zéro. Et c'est tout ce que nous devons faire pour la partie I. Si le patron n'est pas en panne de santé, nous voulons le mettre dans un état blessé. Ajoutons donc un set à bloquer à la partie s et définissons l'état sur Hurt. Nous voulons également régler le chronomètre. Apportons donc un autre set à bloquer et réglons le chronomètre à 30. Une autre chose que nous voulons faire est de nous assurer que le boss arrête de tirer s'il est en train de tirer. Apportons donc un autre set à bloquer et mettons le tir à zéro. Enfin, nous voulons que le boss se déplace dans une direction aléatoire, et nous voulons qu'il se déplace plus vite que d'habitude. Pour ce faire, nous pouvons d' abord introduire un ensemble à bloquer et définir la variable de vitesse de vol. Cependant, au lieu de taper un chiffre ici, créons quelques nouvelles variables pour la vitesse par défaut et la vitesse de blessure. Pour la vitesse par défaut, nous pouvons l'appeler vitesse de croisière et la définir uniquement pour ce sprite Créons-en un autre, appelons-le rt speed. Également pour ce sprite uniquement et masquez les deux variables. Les valeurs de ces variables ne changeront pas pendant le jeu, nous les définirons donc dans le script du drapeau vert. Ajoutons d'abord deux blocs au script. Dans le script de configuration, nous initialisons la vitesse de vol à quatre Donc, dans le script du drapeau vert, fixons la vitesse de l'équipage à quatre. Réglons ensuite la vitesse du Hertz à dix. Maintenant, dans le script de configuration, nous pouvons régler la vitesse de vol sur la vitesse de croisière. Revenons ensuite au script Check Touching Player et réglons la vitesse de vol sur la vitesse du blessé. Ensuite, nous pouvons passer à Mbloxs et introduire un bloc de déplacement dans une direction aléatoire, qui utilisera la nouvelle valeur de vitesse de vol. Bien, nous devons maintenant passer au script d'action Handle. À l'intérieur du chronomètre I, zéro bloc est égal à zéro. Nous voulons d'abord vérifier si le patron est en état de cœur. Si tel est le cas, cela signifie que le temporisateur t est Nous voulons donc remettre le boss à l'état volant. Passons donc d'abord au contrôle et plaçons un bloc ITN dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si l'état est égal à RT. Si c'est le cas, introduisons un ensemble à bloquer et définissons State pour voler. Nous voulons également rétablir la vitesse de vol par défaut. Apportons donc un autre ensemble pour bloquer et réglons la vitesse de vol sur la vitesse de croisière. Maintenant, prenons tout cela et plaçons-le en haut du chronomètre I = zéro bloc juste au-dessus si le tir est égal à un. OK, ce qui va se passer ensuite, c'est que tir n'est pas égal un et que la vitesse x n'est pas égale à zéro, donc le boss sera immédiatement prêt à tirer une fois blessé. Nous pouvons le voir si nous lançons le jeu et sautons sur le boss. Il perd de la santé, devient fou pendant un moment, puis s'arrête et commence à tirer des roquettes. il commence à tirer un peu Mais il commence à tirer un peu trop soudainement après s'être arrêté. Passons donc à la préparation des scripts. Et ici, nous pouvons apporter un ensemble pour bloquer et régler le chronomètre à 30. Maintenant, il attendra environ une seconde après s'être arrêté avant de commencer à tirer. Bien, et pour faire comprendre au joueur que le boss est blessé, nous pouvons le faire clignoter lorsqu'il est blessé, comme nous le faisons avec les sprites du joueur Pour ce faire, passons d'abord au code Sprite du joueur, et nous voulons copier le script flash if dans le boss Sprites Revenons maintenant au boss Sprites. Pour faire clignoter le boss lorsqu'il est blessé, revenons au script d'action Handle. Au bas du script, avant de changer le chronomètre par moins un, nous allons vérifier si le boss est blessé, et si c'est le cas, nous allons le faire clignoter. Passons donc d'abord au contrôle et plaçons un bloc IN dans un espace vide. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si l'état est égal à la blessure. Si c'est le cas, passons aux blocs MI et introduisons un flash if block. Pour la saisie, passons aux opérateurs et introduisons d'abord un bloc égal, puis un bloc mod. Passons maintenant aux variables, et vérifions si le timer mod 4 est égal à zéro. Si nous plaçons le bloc I then juste au-dessus du chronomètre d'un bloc et que nous lançons le jeu, le boss clignotera lorsqu'il sera blessé. Salut, les gars, juste une modification rapide de Future Me. Nous devrions également ajouter un bloc d'effets graphiques clair au script de configuration au cas où. Bon, maintenant, si nous battons le boss après qu'il ait tiré une ou deux roquettes, le joueur peut toujours être touché par les roquettes et pourrait mourir avant que le boss ne tombe au bas du niveau. Il serait probablement préférable de faire exploser les roquettes restantes dès la mort du boss Pour ce faire, passons au code Rocket Sprite. Et trouvons le script When I receive Update One. Et ici, avant de vérifier si le clone touche le joueur, nous allons vérifier si le boss est à l'état mort, et si c'est le cas, nous allons faire exploser le clone Passons donc d' abord au contrôle et plaçons un bloc IN dans un espace vide. Pour la condition, passons d'abord aux opérateurs et introduisons un bloc égal. Passons ensuite à la détection et ajoutons un numéro de scène en toile de fond. Nous voulons obtenir le sprite du boss et choisir une variable d'état Et voyons si c'est égal à mort. Si c'est le cas, passons aux blocs MI et introduisons un bloc explose Pour la position de l'explosion, nous utiliserons la position des clones de fusées Passons donc aux variables et utilisons un bloc X et un bloc Y comme entrées. Si nous le plaçons maintenant au-dessus de la case qui touche le bloc du joueur, lançons le jeu et que nous battons le boss après qu'il ait tiré des roquettes, les roquettes exploseront immédiatement sans blesser le D'accord, et pour le moment, rien d'autre ne se passe après avoir vaincu le boss Dans la prochaine leçon, nous allons donc faire apparaître un écran agréable et joyeux. 119. Gagner le jeu: En haut du script d' action Handle dans le sprite B, nous vérifions si le boss est à l'état mort Ensuite, nous vérifions si sa position Y est descendue en dessous de moins 300. Si c'est le cas, nous diffusons le message du patron. En fait, nous n'avons pas encore traité ce message. Passons donc à la toile de fond et faisons-le. Trouvons d'abord un espace vide. Accédez ensuite aux événements, apportez un bloc W I receive et recevez le boss side. Et ici, nous finirons par émettre un son de victoire. Mais pour l'instant, nous allons arrêter la boucle du jeu, faire une pause, puis disparaître dans l'écran de fin. Donc, pour arrêter la boucle du jeu, passons à Control, introduisons un bloc d'arrêt et arrêtons les autres scripts et sprites Ensuite, introduisons un bloc d' attente d'une seconde. Enfin, pour faire apparaître l'écran, nous diffuserons un nouveau message, qui sera reçu par le Sprite Iscreen Passons donc aux événements, introduisons un bloc de diffusion et diffusons un nouveau message appelé Écran affiché. OK, passons maintenant au Sprite à l'écran N. L'Iscreen Sprite n' a qu'un seul costume, qui occupe toute la scène Et coder le sprite va être très simple. Comme le jeu est terminé, une fois l'écran affiché, nous n'avons même pas à trier les couches. Il suffit de placer le sprite de l'écran sur la couche avant et de le faire disparaître Mais d'abord, lorsque le jeu démarre, nous ne voulons bien sûr pas afficher l'écran Nous masquerons donc le sprite lorsque vous cliquerez sur le drapeau vert Pour ce faire, introduisons un bloc sur lequel vous avez cliqué sur le drapeau vert. Accédez ensuite à Looks et insérez un bloc de masquage. Nous allons également modifier l'effet fantôme du sprite. Donc, pour nous assurer qu'il est réinitialisé, nous pouvons introduire un bloc d'effets graphiques clair. Et pour que le sprite soit centré sur la scène, nous pouvons passer au mouvement et introduire un bloc Go to XY en utilisant zéro pour X et Y. Ensuite, nous allons faire disparaître le sprite lorsqu'il recevra le message d' affichage à l'écran Passons donc aux événements, introduisons un bloc « Quand je reçois » et « quand je reçois l' émission » à l'écran. Tout d'abord, nous voulons montrer le sprite. Passons donc à Looks et ajoutons un bloc d'affichage. Nous voulons également l'intégrer à la couche avant, alors passons au bloc de couche avant. Ensuite, nous allons faire en sorte que le sprite soit complètement transparent au départ , puis nous l'estomperons Donc, commençons par introduire un effet défini pour bloquer et fixons l'effet fantôme à 100. Passons maintenant au contrôle, introduisons un bloc de répétition et répétons 20 fois. Enfin, revenons à Looks, ajoutons un effet de changement par bloc au bloc de répétition, et modifions l' effet fantôme par moins cinq. Et c'est tout. Si nous lançons maintenant le jeu et battons le boss, après une courte pause, l'écran s'estompe Excellente. C'est bon. Et dans la leçon suivante, nous remplacerons l'affichage ennuyeux des variables de santé du boss par une barre de santé indiquant la santé actuelle du boss 120. Créer le Boss Health Bar: Pour créer la barre de santé du boss, nous allons bien entendu utiliser le Sprite de la barre de santé du boss Si nous examinons les costumes des sprites, nous avons d'abord une icône que nous allons afficher à gauche de la barre de santé Nous avons alors un élément pour le côté gauche de la barre de santé, et nous avons à la fois une version complète et une version vide. De même, nous avons à la fois une pleine et une version vide de la pièce centrale. Nous allons créer plusieurs clones de la pièce centrale pour remplir le centre de la barre de santé Enfin, nous avons des versions complètes et vides du côté droit de la barre de santé. OK ? Et pour coder le Bass Health Bar Sprite, ce sera assez similaire au code du Heartsprite Nous pouvons donc commencer par accéder au code HeartSprite et copier certains scripts Commençons par le script de la couche de tri. Ensuite, lorsque je commence en tant que clone, crée des clones, puis je configure et enfin, le script Green Flag Passons maintenant au Boss Health Bar Sprite. Dans le script de configuration du Boss health Bar Sprite, nous voulons créer les clones uniquement si le niveau actuel est le niveau final Passons d'abord à Control, et enroulons un bloc ITN autour du bloc Create Clones et du bloc Switch Costume Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le niveau est égal au niveau final. Ensuite, dans le script create Clone, nous voulons d'abord créer un clone en utilisant le costume d'icône. Donc, d'abord, pour le bloc Go to XY, passons aux négatifs 205 et 110. Passons ensuite à Regardes un bloc de costumes juste après le bloc Go to XY et passons au costume d'icône. Juste après, passons à Control et ajoutons un bloc CrakKline of myself Nous voulons ensuite nous déplacer un peu vers la droite pour commencer à créer les éléments de la barre de santé. Passons donc au mouvement, introduisons une modification X par bloc, et modifions-la par 28. Ensuite, après avoir défini Index sur un, nous allons créer un clone pour le côté gauche de la barre de santé. Passons donc à Looks, apportons un bloc de costumes Switch et utilisons le costume complet du côté gauche. Passons ensuite à Control et apportons un clone en caisse du bloc Myself. OK. Nous allons maintenant utiliser le bloc de répétition pour créer des clones pour les pièces du milieu. Passons donc d'abord au bon costume en accédant à Looks, en plaçant un bloc de costumes juste au-dessus du bloc de répétition et en passant à un bloc de santé plein. En ce qui concerne le nombre de répétitions, nous voulons créer suffisamment de pièces intermédiaires pour tenir compte de la santé maximale du boss Cependant, nous sommes déjà en train de créer un clone pour le côté gauche et nous en créerons également un pour le côté droit. Cela représentera donc deux unités de la santé du boss. Par conséquent, le nombre de clones de la pièce intermédiaire doit être inférieur à la santé maximale du boss Très bien, alors d'abord, débarrassons-nous du bloc de santé maximal des joueurs pour les rondes. Passons ensuite aux opérateurs et remplaçons-le par un bloc de soustraction. Passons maintenant aux variables, et passons à Max Boss Health moins deux. Maintenant, cette fois, nous voulons créer le clone après avoir modifié l'index et la position. Déplaçons donc le bloc de création d'un clone de moi-même vers le bas du bloc de répétition. Et pour changer le X, nous avons besoin que les pièces de la barre de santé soient parfaitement alignées afin qu'il n'y ait aucun espace entre elles. Les costumes des pièces de la barre de santé mesurent tous exactement dix pixels de large. Cela signifie que nous devons changer X de dix. Enfin, sous le bloc de répétition, nous devons créer un clone pour le côté droit de la barre de santé. Nous pouvons commencer par dupliquer les blocs à l'intérieur du bloc de répétition et les ajouter au bas du script Mais avant de créer un clone de Myself block, nous voulons passer à Looks, apporter un bloc de costumes Switch et passer à la santé complète. D'accord, maintenant nous devons également apporter quelques modifications au moment où je démarre en tant que script de clonage Tout d'abord, nous voulons exécuter la boucle permanente uniquement pour les clones qui font partie de la barre de santé, non pour le clone d'icônes Il va donc falloir vérifier le costume. Pour ce faire, allons dans Control et plaçons un bloc INN dans un espace vide. Pour cette condition, nous pouvons utiliser une copie du nom du costume égale à bloc vide dans le script de configuration. Et vérifions si c'est égal à une icône. Si c'est le cas, nous pouvons introduire un bloc d'arrêt et arrêter ce script. Si nous plaçons tout cela juste au-dessus du bloc permanent, le bloc permanent ne fonctionnera que pour les pièces de la barre de santé. Ensuite, sauvegardons si la santé du joueur est inférieure à celle du bloc d'index, puis éliminons tout le reste du bloc pour toujours. Ajoutons maintenant un bloc if then au bloc et utilisons comme condition la santé du joueur inférieure à celle du bloc d'index. Mais bien entendu, nous voulons remplacer la santé du joueur par celle du boss. Lorsque la santé du boss est inférieure à l'indice des clones, cela signifie que nous devons remplacer le costume du clone la version vide de son costume actuel Pour ce faire, nous devons d'abord vérifier le costume actuel du clone. Ajoutons donc un bloc ITN s au bloc ITN. Pour cette condition, dupliquons un costume nommé equals block. Et vérifions s'il est égal à Health (trait de soulignement gauche, trait soulignement côté, trait de soulignement complet), en veillant à utiliser l' Si c'est le cas, passons à Looks, apportons un bloc de costumes Switch et passons à Health, à gauche, vide. Pour sa part, nous pouvons d'abord introduire un duplicata du bloc I puis ts. Pour celui-ci, vérifions si le nom du costume est égal à la santé, soulignons à droite, soulignons le côté, soulignons le côté complet, et si c'est le cas, passons au côté droit de la santé, à S'il atteint la partie ts de celui-ci, cela signifie que le clone est une pièce centrale. Apportons donc un autre bloc de costumes Switch et passons-le à Health Middle Vide. À l'heure actuelle, une fois que le costume d'un clone aura été remplacé par une version vide, nous voulons empêcher le blocage permanent de fonctionner à nouveau. Pour ce faire, passons à Control, et ajoutons un bloc d'arrêt juste après le premier bloc I thin outs. Nous voulons nous assurer qu'il se trouve toujours dans l' IBS. La santé est inférieure au bloc d'index, et nous voulons arrêter ce script OK, le code de la barre de santé Boss Sprite devrait être complet Donc, si nous lançons le jeu, nous devrions voir une barre de santé complète pour le boss en haut à gauche de l'étape. Et si nous touchons le boss, la barre de santé baisse. Génial. Mais pour le moment, nous perdons toujours la moitié de la santé du boss chaque fois que nous lui sautons dessus. Donc, pour résoudre ce problème, passons au code Boss Sprite, trouvons le script du joueur à cocher Et ici, changeons la santé du Boss par une santé négative . Allons-y. Le boss est désormais beaucoup plus difficile à vaincre. D'accord, nous pouvons maintenant accéder aux variables et masquer la variable de santé du boss Et dans la leçon suivante, nous allons enfin commencer à ajouter des effets sonores et de la musique au jeu. 121. Ajouter quelques sons: Lorsque nous créerons l'écran titre ultérieurement, le lecteur disposera d'options pour activer ou désactiver la musique et les effets sonores Donc, avant de commencer à jouer de la musique ou des effets sonores, nous devons d'abord nous assurer qu'ils sont activés. Pour ce faire, nous devons créer quelques variables globales. Pour la variable music, appelons-la music on et appliquons-la à tous les sprites Maintenant, créons-en un autre, appelons-le et faisons-le pour tous les sprites Déplaçons légèrement les affichages des variables vers le bas afin qu'ils ne bloquent pas les éléments du HUD Lorsque le lecteur active ou désactive la musique ou les effets sonores, il diffuse un message que la toile de fond reçoit Passons donc au code de fond. Et ici, nous allons écrire le code permettant de changer la musique et les effets sonores Alors d'abord, trouvons un espace vide. Passons ensuite aux événements et introduisons un bloc quand je recevrai. Nous allons recevoir un nouveau message intitulé Toggle Music. Et ici, nous voulons vérifier si la musique est actuellement activée ou non. Passons donc à Control et introduisons un bloc I puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si la musique est égale à un. Si c'est le cas, nous voulons désactiver la musique en introduisant un ensemble à bloquer et en mettant la musique à zéro. Sinon, nous voulons l' activer en ajoutant un bloc de deux à la partie des sorties et en réglant la musique sur un. Nous pouvons maintenant dupliquer l'intégralité du script, et pour celui-ci, recevons un nouveau message intitulé Toggle Sounds Au lieu d'activer la musique, nous voulons vérifier si les sons émis sont égaux à un, et nous voulons définir les sons variables dans les deux ensembles de deux blocs. C'est bon. Maintenant, comme nous n'avons pas encore d'écran titre, nous pouvons également faire en sorte que l'appui sur certaines touches fasse basculer la musique et les effets sonores Pour ce faire, passons aux événements et introduisons un bloc enfoncé sur la touche gagnante. Et pour la musique, utilisons la touche M. Il ne nous reste plus qu'à introduire un bloc de diffusion et à diffuser de la musique à bascule De même, pour les effets sonores, dupliquons le script et utilisons la touche X. Et ici, nous devons diffuser Toggle Sounds et maintenant nous pouvons utiliser les touches M et X pour activer la musique et les sons sur les variables 0-1 OK, maintenant nous allons ajouter quelques effets sonores au jeu, et nous allons commencer par les effets sonores pour les sprites des joueurs Si nous examinons l'onglet des sons pour les sprites des joueurs, nous avons un son d'âne lorsque le joueur se blesse, un son de saut lorsqu'il saute, un bruit de boing lorsqu'il saute sur un ennemi ou une rampe de saut, et un son de glissement pour dévaler une Bien, donc dans le code du sprite du joueur, avant de jouer les sons, nous devons d'abord nous assurer que les sons sont activés Pour vous aider, nous allons créer un bloc personnalisé. Passons donc à Mes blocs et créons-en un. Tapons d'abord play sound colon. Nous voulons transmettre le son à jouer. Ajoutons donc une entrée, appelons-la son, puis cliquons sur OK. Déplaçons ensuite le bloc sonore à l'endroit défini dans un espace vide. Et ici, nous devons d'abord nous assurer que les sons sont activés. Passons donc au contrôle et introduisons un « je », puis bloquons. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le son est égal à un. Si c'est le cas, nous pouvons jouer le son donné en allant au son, en introduisant un bloc audio en amidon et en ajoutant l' entrée audio au bloc. Bien, nous devons maintenant déterminer où jouer chaque son Tout d'abord, pour le son de sortie, trouvons le script Get Hurt. Et ici, après le block check dead, si le joueur n'est pas mort, nous jouerons le son. Donc, pour vérifier si le joueur n'est pas mort, allons d'abord dans Control et ajoutons un bloc if thin au bas du script. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si dead est égal à zéro. Si c'est le cas, nous pouvons passer à M Blocks, ajouter un bloc audio et utiliser le mot Ouch comme entrée Et maintenant, tant que le son activé est réglé sur un, chaque fois que nous nous blessons, il émet chaque fois que nous nous blessons, le son aïd. Aie. Si nous désactivons les sons, le son ne sera pas diffusé De plus, si nous réactivons les sons et que nous mourons, le son ne sera pas diffusé. C'est une bonne chose car nous finirons par émettre un son différent lorsque le joueur mourra. OK, ensuite, trouvons le script Bounce Player. Et ici, quand le montant du videur est égal à zéro, nous diffuserons le son du Boeing Cela se produira chaque fois que nous sautons sur un ennemi ou que nous rebondissons sur une rampe de saut Très bien, ajoutons donc un bloc audio play en bas du bloc si une partie du videur I est égale à zéro Et jouons le son du Boeing. Si nous sautons maintenant sur un ennemi ou sur une rampe de saut, le son du Boeing sera émis. Comte Earl. Je suis Barilla. Si nous sommes touchés par une pâte ennemie, nous continuerons à émettre le son Ouch Dehors. Ensuite, trouvons la diapositive sur Slope Script. Au bas du script, où nous diffusons le message Create Slope Slide Effect, nous pouvons placer un bloc sonore et émettre le son de la diapositive. Et maintenant, lorsque nous dévalons une pente, le son de la diapositive est émis. Enfin, trouvons le script de mouvement vertical de la poignée. Dans le I jump is less than seven block, introduisons un bloc de son à un endroit, et jouons le son du saut. Pour le moment, cependant, son sera diffusé plusieurs fois à chaque fois que nous sautons. C'est parce qu'il continue à jouer jusqu'à ce que le saut ne soit plus inférieur à sept. Pour y remédier, nous voulons uniquement émettre le son du saut lorsque le saut en est un. Passons donc à Control et enroulons un bloc ITN autour du bloc audio de la place Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le saut est égal à un. Désormais, le son du saut ne sera joué qu'une seule fois à chaque saut. Au revoir. OK. Génial. Ensuite, nous émettrons un son chaque fois que le joueur collectera une pièce. Pour ce faire, trouvons d'abord le script audio de lecture. Et copions-le dans le coin sprite. S'il se trouve sur la ligne inférieure du volet Sprite, il se peut que nous devions le faire glisser d'une ligne vers le haut avant de pouvoir copier les scripts Bon, passons maintenant aux Coin Sprites. Le coin sprite émet un son de collecte. Et pour y jouer, trouvons le script Check touch player. Avant de supprimer le clone ici, passons à Mbloxs, introduisons un bloc de son et jouons le son Clet Maintenant, le son retentira chaque fois que nous collecterons une pièce. Ours. Ensuite, copions le script sonore du lieu dans le sprite clé Passez ensuite à la touche Sprite. Le sprite clé possède également un son de collecte. Et comme pour les pièces, nous voulons jouer le son avant supprimer le clone dans le script du joueur à cocher. Copions ensuite le script audio de placement dans le Sprite de pause Le Sprite de pause émet un son de clic, qui est diffusé chaque fois que le joueur clique le bouton Zoom ou sur le bouton Quitter situé sur la couche de pause. OK, donc dans le code, trouvons le gagnant de ce Sprite, cliquez sur le script Et ici, avant de diffuser le message du jeu Zoom, introduisons un bloc audio play et diffusons le son du clic. Et faisons de même avant le blocage rapide du jeu. Nous pouvons également le faire dans le bloc d'appui sur la touche espace Win avant de diffuser le jeu Resume. Maintenant, assurons-nous que tout fonctionne correctement. Génial. Copions ensuite le script sonore du lieu dans les sprites d'explosion Le sprite d'explosion émet un son d'explosion, qui retentit chaque fois qu' une explosion est créée. Trouvons donc le script Create Explosion que j'ai reçu. Et après le bloc Create Clone, introduisons un bloc audio et diffusons le son Explode Pour tester cela, nous devons passer au niveau quatre. Et chaque fois qu'une fusée explose, elle émet un son d'explosion Oui. Oui. Oui. Bien, copions maintenant le script audio de lecture dans le sprite Boss Le boss sprite émet un grognement. Nous y jouerons chaque fois qu'il sera touché par le joueur. Trouvons donc le script du joueur qui touche le chèque. Nous jouerons le son quand le boss sera blessé ou quand il mourra. Ajoutons donc un bloc audio au-dessus du bloc ITN où nous vérifierons si le boss n'a plus de santé, puis diffusons le son grognement Si nous sautons maintenant sur le boss, il émet un grognement Par. Par. Nous avons également quelques sons à jouer en toile de fond. Copions donc d'abord le script sonore du lieu. Passez ensuite à la toile de fond. Pour les sons de fond, nous avons un son de démarrage de jeu, que nous jouerons au premier démarrage du jeu, mais nous attendrons d'utiliser celui-ci après avoir créé l'écran titre. Ensuite, il y a le bruit du vent. Lorsque le joueur gagne la partie, le son perdu retentit lorsqu'il meurt et le niveau final sonne lorsqu'il passe par une sortie et termine un niveau. Nous avons également deux sons musicaux, mais nous les aborderons dans la prochaine leçon. OK, alors passons au code. Tout d'abord, et quand je reçois le joueur mort avant d'attendre et de diffuser le niveau de départ, introduisons un bloc de son Play et jouons le son Lose. Maintenant, si nous mourons, il diffusera le son Lose. Dehors. Dehors. Ensuite, quand je recevrai le niveau de fin, avant de diffuser le niveau de départ, introduisons un bloc de son et jouons le niveau de soulignement de fin Si nous passons maintenant par une sortie de niveau, elle émettra le son du niveau d' arrivée. Enfin, découvrons quand j'ai reçu Boss est mort. Et ici, avant d'attendre et de montrer l'écran de fin, introduisons un bloc audio et diffusons le son gagnant. Si nous battons maintenant le boss, il émet le son de la victoire. OK, jusqu'à ce que l'écran titre soit créé, nous avons fini d'ajouter des effets sonores pour le moment. Dans la prochaine leçon, nous allons donc ajouter de la musique. 122. Ajouter de la musique: Si nous allons dans l' onglet sons pour la toile de fond, nous avons vu plus haut que nous avions deux sons pour la musique. Musique joyeuse. Et Boss Music. Nous jouerons de la musique joyeuse dans les niveaux un, deux et trois, et nous jouerons musique de boss pendant les combats de boss et au niveau quatre. Bien, revenons maintenant au code. Nous jouerons la musique à l'aide d'un bloc personnalisé. Donc, dans mes blocs, cliquons sur Créer un bloc. Appelons ça jouer de la musique. Et nous voulons nous assurer de ne pas cocher Exécuter sans rafraîchir l'écran. Bien, cliquons sur OK et trouvons un espace vide pour le script de lecture de musique Et ici, nous voulons jouer la musique en continu jusqu'à ce qu'elle soit terminée. Alors d'abord, passons au contrôle et introduisons un blocage permanent. Ensuite, nous allons vérifier le niveau actuel. Si c'est le dernier niveau, nous jouerons la musique du boss. Sinon, nous jouerons la musique joyeuse. Ajoutons donc un bloc IN outs au bloc pour toujours. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si le niveau est égal au niveau final. Passons maintenant au son, et ajoutons un son de jeu jusqu'à ce que Don Block soit ajouté à chaque partie. Pour la partie if, nous voulons jouer de la musique boss, et pour la partie out, nous voulons jouer de la musique joyeuse. D'accord, et nous voulons que la musique commence à jouer lorsque le joueur clique sur le drapeau vert Trouvons donc le script du drapeau vert. En bas, nous jouerons la musique. Mais d'abord, nous allons attendre un peu en accédant à Control et en ajoutant un bloc d'attente d'une seconde. Passons ensuite à mBlock et ajoutons un bloc Play Music. Si nous lançons le jeu maintenant, bout d'une seconde, la musique commence à jouer. si nous terminons un niveau, Cependant, si nous terminons un niveau, la musique s'arrête et elle ne recommence pas au niveau suivant. En effet, dans le script de niveau final, nous arrêtons les autres scripts, et le jeu sonne jusqu'à ce que Don Block exécute son propre script, donc il est également arrêté. Nous devons cependant arrêter les autres scripts, car nous devons arrêter la boucle du jeu. Donc, à la fin du script, nous pouvons simplement recommencer la musique. Mais attendons d'abord un peu en accédant au contrôle, en introduisant un bloc d'attente, et en attendant 2 secondes. Revenons ensuite à mes blocs et apportons un bloc Play Music. Maintenant, lorsque nous avons terminé un niveau, la musique recommence lorsque le niveau suivant commence. La musique s'arrête également lorsque le joueur meurt. Cela est dû au fait que nous devons également arrêter les autres scripts du script « Quand je reçois le joueur mort ». Donc, ce que nous pouvons faire, c'est dupliquer les 2 secondes d'attente, lire blocs de musique dans le script de niveau final et les ajouter au bas du script mort du joueur. Maintenant, si nous mourons, O. O. La musique recommence lorsque le niveau redémarre OK, si on passe au niveau 4, on y joue la musique du boss maintenant, ce qui est plutôt cool. Cependant, lorsque nous battons le boss et que l'écran apparaît, aucune musique ne joue actuellement. Je pense que ce serait bien de recommencer à jouer de la musique joyeuse. Pour ce faire, trouvons le script mort du boss. Au bas du script, passons d'abord à Control, introduisons un bloc d'attente et attendons 3 secondes. Passons ensuite à MyBlock et ajoutons un bloc Play Music. Mais si nous essayons cela maintenant, lorsque l'écran s'affichera, il recommencera à jouer la musique du boss. Cela est dû au fait que la variable de niveau est toujours définie sur le niveau quatre. Si nous voulons jouer de la musique joyeuse, nous devons régler le niveau sur autre chose. Pour ce faire, passons aux variables et ajoutons un bloc défini à deux avant le bloc Play Music dans le script Bos d, et fixons le niveau à un. Maintenant, il jouera de la musique joyeuse lorsque l'écran de fin apparaîtra. Bien, pour le moment, le activer et de désactiver la musique en variable n' affecte pas réellement Pour résoudre ce problème, trouvons le script Toggle Music lorsque je reçois Tout d'abord, lorsque vous mettez la musique à zéro ici, nous voulons également arrêter la musique. Malheureusement, nous ne pouvons pas réellement arrêter un son en particulier et le gratter. Nous devons donc arrêter tous les sons actuels en passant au son et en introduisant un bloc d'arrêt de tous les sons. Ensuite, dans la partie des sorties, la musique a été activée Nous voulons donc la rejouer en accédant à Mbloxs et en introduisant un bloc de lecture de musique Si nous lançons le jeu maintenant et que nous essayons de désactiver la musique, cela ne fonctionnera pas vraiment La musique ne fait que redémarrer. En effet, dans le script de lecture de musique, qui s'exécute indéfiniment, dès qu'il constate que la musique n'est pas jouée actuellement, il commence immédiatement à jouer de la musique. Pour résoudre ce problème, nous voulons arrêter le script lorsque la musique est coupée. Pour ce faire, allons d'abord dans Control et plaçons un bloc ITN dans un espace vide Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si Music On est égal à zéro. Si c'est le cas, passons au contrôle, introduisons un bloc d'arrêt et arrêtons ce script. Si nous le plaçons maintenant en haut du bloc pour toujours, le basculement de la musique fonctionnera correctement OK, une autre chose que nous pouvons faire est que lorsque le jeu est en pause, nous pouvons désactiver les sons, puis les rétablir lorsque le joueur reprend le Pour ce faire, voyons quand je reçois pause le jeu et quand je reçois ReZoomGame Pour mettre le jeu en pause, passons au son, introduisons un bloc de deux blocs de volume défini et réglons-le sur 0 %. Et pour ReZoomGame, fixons-le à 100 %. Désormais, nous n'entendrons aucune musique lorsque nous interrompons le jeu. Et nous l'entendrons à nouveau lorsque le jeu reprendra. Bien, maintenant que nous savons le basculement audio fonctionne correctement, nous pouvons accéder aux variables et masquer la musique et les Ensuite, nous allons créer l'écran titre. 123. Créer l'écran de titre: Dans le script du drapeau vert pour la toile de fond, au lieu de démarrer immédiatement le premier niveau en diffusant le niveau de démarrage, nous faisons apparaître l'écran titre en diffusant un message d'écran de titre de l'émission. Ensuite, lorsque le joueur clique le bouton jouer sur l'écran titre, nous diffusons un message de début de partie, que la toile de fond recevra et commencera le premier niveau. Cependant, si le mode Dieu est activé, nous ne voulons probablement pas voir l'écran titre chaque fois que nous cliquons sur le drapeau vert. Ainsi, lorsque le mode Dieu est activé, nous démarrons immédiatement le jeu. Dans le cas contraire, nous allons afficher l'écran titre. Bien, alors d'abord, détachons les trois blocs inférieurs, en commençant par le niveau de début de diffusion, et mettons-les de côté, car nous les utiliserons ailleurs dans un instant Ensuite, au lieu d'un bloc I Thin pour vérifier le mode Dieu, nous aurons besoin d'un bloc I Thin S. Sauvegardons le mode Dieu égal à zéro bloc et le niveau défini à un bloc, débarrassons-nous du bloc I thin, puis passons à Control, introduisons un bloc I thin s et utilisons le mode Dieu égal à zéro bloc comme condition. Ajoutons le bloc de niveau défini aux parties I. Nous allons également afficher l'écran titre dans la partie F en accédant aux événements, en introduisant un bloc de diffusion et en diffusant un nouveau message appelé Afficher l'écran titre. Nous pouvons ensuite démarrer la musique en attendant 1 seconde et en écoutant les blocs de musique que nous avons enregistrés ici. Maintenant, dans la partie Es, mode Dieu est activé, nous allons donc immédiatement démarrer le jeu au niveau actuel. Pour ce faire, introduisons un bloc de diffusion et diffusons un nouveau message intitulé Start Game. OK, maintenant nous devons gérer le message de démarrage du jeu. Alors commençons par placer un bloc « Je gagne » dans un espace vide. Et recevons Start game et là, nous allons jouer le son Start Game, puis commencer le niveau. Mais d'abord, passons à Control, introduisons un bloc Stop et arrêtons les autres scripts et sprites Il s'agit principalement d'arrêter toute musique qui pourrait être jouée. OK, maintenant passons à My Blocks, ajoutons un bloc de sons et jouons le son du jeu Start Underscore Ensuite, nous pouvons introduire le bloc de niveau de début de diffusion que nous avons enregistré ici. Après cela, nous voulons attendre un peu, puis démarrer la musique. Nous pouvons donc dupliquer l'attente d' une seconde et lire des blocs de musique d'ici. Et attendons 2 secondes cette fois. Très bien, pour le moment, si nous cliquons sur le drapeau vert alors que le mode Dieu est désactivé, se passe rien à part que la musique commence à jouer parce que nous n'avons pas encore d'écran titre Et si nous activons le mode Dieu et que nous cliquons sur le drapeau vert, le script de démarrage du jeu sera lancé, le son de démarrage du jeu sera émis et le niveau démarrera. OK, désactivons le mode Dieu, et nous allons ensuite créer l'écran titre en utilisant le sprite de l'écran titre ici Si nous examinons ses costumes, nous avons tous les costumes dont nous avons besoin pour créer l'écran titre, y compris BG pour l'arrière-plan, le titre, une animation à sept images pour When the Play button is up. Un costume à utiliser lorsque le joueur clique sur le bouton de lecture, des costumes pour activer et désactiver les boutons de musique et de sons, ainsi qu'un panneau audio, qui servira de conteneur pour les boutons de musique et de sons. Très bien, passons maintenant à l'onglet code. Comme l'écran titre n'apparaîtra pas pendant le jeu et que nous utiliserons un seul sprite pour toutes les parties de l'écran titre, nous n'avons pas à nous soucier du tri des couches OK, et nous créerons les clones chaque fois que le sprite recevra le message d'écran contenant le titre de l' émission Passons donc d'abord aux événements, introduisons un bloc Quand je reçois et un écran titre de l' émission de réception. La première chose que nous voulons faire est de montrer le sprite. Passons donc à Looks et ajoutons un bloc d'affichage. Nous voulons également qu'il apparaisse au-dessus de tout ce qui pourrait se trouver sur scène. Passons donc à un bloc de couche avant. Ensuite, nous allons commencer à créer les clones, et nous voulons commencer par le clone d'arrière-plan afin qu'il apparaisse derrière les autres clones Apportons donc un bloc de costumes Switch et passons au costume BG. Ce clone doit être centré sur la scène. Passons donc au mouvement, introduisons un bloc Go to XY et passons à 00. Créons maintenant le clone en accédant à Control et en introduisant un bloc critique de clone de moi-même. Le prochain clone que nous allons créer est le clone Title. Pour ce faire, nous pouvons d'abord dupliquer les trois blocs, commençant par passer du costume au bloc BG et en les ajoutant au bas du script. Pour le costume, prenons le titre, et pour le poste, prenons zéro pour X et 110 pour Y. Ensuite, nous allons utiliser le bouton Play Dupliquons donc les trois derniers blocs. Appuyez sur le bouton de lecture jusqu' zéro et passez à zéro moins dix. Nous allons maintenant créer le panneau audio et les boutons audio en bas à droite de l'écran, et nous devons commencer par le panneau pour qu'il apparaisse derrière les boutons Donc, d'abord, dupliquons les trois derniers blocs, passons au costume du panneau audio et passons à 140 moins 135. Dupliquons à nouveau, allumez le bouton musique et passez à 220 moins 120. Dupliquons encore une fois. Activez le bouton sons et passez à 220, moins 150. Enfin, nous voulons rétablir le costume original des Sprites sur le costume vierge Passons donc à Looks, apportons un bloc de costumes Switch et passons à Blank. Si nous lançons maintenant le jeu, tous les clones de l'écran titre apparaissent et la musique démarre OK, maintenant faisons en sorte que les boutons fonctionnent lorsque le joueur clique dessus. Pour commencer, passons aux événements et gagnons ce bloc sur lequel un Sprite a cliqué Et ici, nous allons bien sûr faire différentes choses en fonction clone sur lequel vous cliquez. Alors d'abord, passons à Control et introduisons un bloc ITN. Eh bien, vérifiez d'abord si le clone utilise un costume à boutons Play. Mais comme le bouton play est une animation, nous devrons vérifier si le nom du costume du clone contient le bouton play string up. Pour ce faire, en ce qui concerne l'état du bloc ITN, passons aux opérateurs et introduisons un bloc contains. Passons ensuite à Looks. Utilisez un bloc de costume comme première entrée. Et vérifierons si le nom du costume contient le bouton Play Underscore, underscore up Si c'est le cas, nous voulons passer au costume Play button down, alors introduisons un bloc de costume Switch et passons au bouton Play down. Si nous accédons très rapidement à l' onglet Sons, le sprite de l'écran titre émet un son de clic, qui retentit chaque fois que le joueur clique sur un bouton Cependant, nous devons d'abord accéder au code d'un autre sprite qui joue des sons tels que le Boss Sprite et copier son script sonore de lecture Mais nous devons d'abord faire glisser le sprite de l'écran titre d'une ligne vers le haut dans le volet Sprite. C'est bon. Revenons maintenant à l'écran titre Sprites. Et si nous cliquons sur le bouton Play, nous voulons accéder à Mbloxs, ajouter un bloc Play Sound et jouer le clic Enfin, nous voulons démarrer le jeu en accédant aux événements, en introduisant un bloc de diffusion et en diffusant Start game. Lorsque cela se produit, nous souhaitons également supprimer tous les clones de l'écran titre Nous le ferons lorsque les clones recevront le message de démarrage du jeu Alors d'abord, plaçons un bloc W que j'ai reçu dans un espace vide, et recevons Start game. Nous allons avoir des animations et d'autres choses plus tard. Nous allons donc d'abord les arrêter en accédant à Control, en introduisant un bloc d'arrêt et en arrêtant les autres scripts et sprites Après cela, nous allons faire une pause. Alors introduisons un bloc d'attente et attendons 2 secondes. Enfin, introduisons une suppression de ce bloc de clonage. Si nous lançons maintenant le jeu et que nous cliquons sur le bouton Jouer, il passe au costume en duvet, et au bout de quelques secondes, l'écran titre disparaît et le jeu commence. Bien, maintenant faisons fonctionner les boutons de musique et de son Chacun de ces boutons peut avoir deux costumes possibles, l'un pour l'enfiler et l'autre pour le désactiver. Et nous voulons quand même faire la même chose. Donc, pour le bouton musique, nous pouvons d'abord dupliquer le nom du costume I contains Play button uplock, l' ajouter au bas du script et vérifier s'il contient le mot musique En fait, nous n'allons pas changer de costume ici car il est possible que le joueur change de musique en appuyant sur la touche Nous devrons donc vérifier en permanence la valeur de la musique sur la variable et changer le costume des boutons de musique en conséquence. Débarrassons-nous donc du bloc de costumes Switch. Et pour ce qui est de la musique, nous voulons diffuser le message Toggle Music De même, pour le bouton Sons, dupliquons d'abord le bloc de musique I costume name contains music, vérifions-le s'il contient des sons et diffusons des sons de bascule Bien, ensuite, une fois les clones de musique et de boutons Sounds créés, nous voulons définir en permanence leurs costumes fonction des valeurs de la musique activée et des sons sur les variables Pour ce faire, nous devons d'abord démarrer un script when I start en tant que clone. Et ici, parce que nous voulons vérifier les valeurs en permanence, introduisons un bloc permanent. Nous allons commencer par vérifier s' il s'agit du clone du bouton musical. Donc, introduisons d'abord un bloc if then. Et pour ce qui est de la condition , utilisons une copie du nom du costume qui contient bloc de musique datant du moment où ce Sprite a cliqué Nous allons maintenant changer de costume en fonction de la valeur de la musique sur variable. Apportons un bloc I puis s. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Accédez ensuite aux variables et vérifiez si la musique est égale à un. Si c'est le cas, la musique est activée Passons donc à Looks, introduisons un bloc de costumes Switch et passons au bouton de musique du costume. Sinon, nous passerons au costume «   Music Button Off ». Pour le bouton Sons, dupliquons d'abord l' intégralité du bloc de musique I costume name contains et ajoutons-le au bas du bloc pour toujours. Voyons s'il contient des sons et vérifions si le son est égal à un. Si c'est le cas, activons le bouton Sons. Sinon, désactivons le bouton Sons. OK, si nous lançons maintenant le jeu, nous pouvons utiliser les boutons Musique et Sons pour activer le son. Nous pouvons également utiliser les touches M et X, et les costumes changeront en conséquence. Bien, pour améliorer un peu l'écran titre, nous pouvons faire en sorte que le survol de l'un des boutons produise une animation fluide, ainsi qu'une animation de réduction lorsque nous nous éloignons du Nous pouvons également le faire dans le bloc Fever du script When I start as a clone. Cependant, nous voulons le faire uniquement pour les clones de boutons, pas pour l'arrière-plan ou le titre Donc, ce que nous pouvons faire, c'est d'abord accéder à Control et enrouler un bloc ITN autour du bloc pour toujours. Pour cette condition, nous pouvons apporter un duplicata d'un costume nommé Contains Block et vérifier s'il contient le mot bouton. Ce sera le cas pour le bouton de lecture et les deux boutons audio. Ensuite, nous allons vérifier si le joueur survole actuellement le bouton Pour ce faire, prenons un bloc I thin out et plaçons-le au bas du bloc pour toujours sous les deux blocs ITN. Pour ce qui est de la condition, passons à la détection et introduisons un bloc de pointeur de souris tactile. Nous allons faire passer le bouton à 120 % dans les parties si et le réduire à 100 % dans les parties extérieures Nous l'avons déjà fait dans nos deux jeux précédents. En guise de défi, j'aimerais que vous mettiez la vidéo en pause maintenant et que vous voyiez si vous pouvez faire fonctionner les animations de croissance et de réduction. À titre indicatif, tout ce dont nous avons besoin quelques blocs de modification de la taille et d'un peu de calcul Très bien, alors d'abord, allons dans Looks et ajoutons un changement de taille par bloc à chaque partie du bloc I then outs. Passons maintenant aux opérateurs, ajoutez un bloc de division à chaque bloc de modification de taille. Utilisez ensuite un bloc de soustraction comme première entrée de chaque bloc de division. Revenons maintenant à Looks. Et pour la partie I, faisons 120 moins la taille divisée par deux. Et n'oubliez pas que le nombre par lequel nous divisons contrôle la vitesse de l'animation. Pour que la partie ts réduise la taille à 100 %, faisons 100 moins la taille divisée par deux. Très bien, si nous lançons le jeu maintenant, le bouton de jeu et les boutons audio s'agrandissent et rétrécissent au fur et à mesure que nous les survolons et que nous nous en éloignons. Mais je pense que 120 %, c'est un peu trop pour les boutons audio. Il serait peut-être préférable de ne les faire croître qu'à 110 %. Pour ce faire, nous n'utiliserons que 120 % pour le bouton de lecture. Sinon, nous utiliserons 110 %. Passons donc d'abord au contrôle et prenons un bloc s'il est fin, et enroulons la partie I autour du bloc de taille variable pour les parties en croissance. Pour ce qui est de la condition, apportons une copie d'un bloc contenant un nom de costume, et vérifions s'il contient le mot jeu de mots. Dans le cas contraire, il doit s'agir d'un bouton audio. Dupliquons donc le bloc de modification de taille et ajoutons-le aux parties sortantes. Mais cette fois, faisons 110 au lieu de 120. Et maintenant, les boutons de musique et de sons ne s'agrandiront pas autant que le bouton de lecture. Bien, une autre façon d'améliorer l'écran titre est de faire en sorte que tous les clones, à l' exception de l'arrière-plan, s'estompent lorsque l' écran apparaît pour la première fois Comme notre script de clonage actuel est déjà assez long, créons-en un nouveau pour celui-ci. Et ici, nous voulons d'abord nous assurer que le clone n'est pas le clone d'arrière-plan. Alors introduisons un bloc « si alors ». Pour la condition, passons aux opérateurs et introduisons un bloc non, puis un bloc égal. Passons maintenant à Looks, ajoutez un bloc de costumes au bloc Equals. Et voyons si ce n'est pas le nom du costume qui est égal à BG. Si tel est le cas, nous allons faire en sorte que le clone soit transparent au départ , puis nous l'estomperons. Pour ce faire, introduisons d'abord un bloc d'effets fixes à deux blocs et définissons l'effet fantôme sur 100. Attendons maintenant un peu en accédant au contrôle, en introduisant un bloc d'attente et en attendant 0,5 seconde. Pour estomper le clone, introduisons un bloc de répétition et répétons 25 fois. Passons ensuite à Looks, ajoutons un effet de changement par bloc au bloc de répétition et modifions l'effet fantôme par moins quatre. Si nous lançons maintenant le jeu, nous ne verrons d'abord que l'arrière-plan de l'écran titre, puis les autres parties disparaîtront. Génial. D'accord, maintenant nous devons également faire fonctionner l' animation des boutons de lecture. L'animation fera descendre une ligne blanche le long du bouton, créant un bel effet brillant. Nous le ferons de même lorsque je commencerai en tant que script de clonage. Tout d'abord, nous voulons nous assurer qu'il s'agit du clone du bouton Play et qu'il utilise un costume Play Button Up. Passons donc à Control et introduisons un bloc In. Et pour ce qui est de la condition, utilisons une copie du nom du costume qui contient le bloc U du bouton Play du script de l'écran titre de l' émission. Nous voulons que l'animation fonctionne en continu. Alors, introduisons un blocage permanent. Le clone commencera par utiliser le bouton Play up zero costume Pour l'animer, nous pouvons passer d'un costume à l'autre, puis recommencer avec le premier Pour ce faire, ajoutons un bloc de répétition au bloc permanent, et répétons six fois. Passons ensuite à Looks et ajoutons un bloc de costumes suivant au bloc de répétition. Une fois le bloc de répétition terminé, introduisons un bloc de costume et revenons au bouton Play Up Zero. Et maintenant, le bouton de lecture va s'animer. Mais je pense que l'animation redémarre un peu trop tôt. Pour créer un délai, nous pouvons passer au contrôle à un bloc d'attente situé juste au-dessus du bloc de répétition, et attendre 2 secondes. C'est mieux. OK, une autre façon d'améliorer l'écran titre est de faire basculer le titre d'avant en arrière de la même manière que nous l' avons fait pour le titre dans Cosmic Havoc Pour ce faire, nous devrons utiliser trigonométrie et fournir un angle Passons donc d'abord aux variables et créons une nouvelle variable. Appelons-le angle et faisons-le uniquement pour ce sprite, et nous n'avons pas besoin de le montrer OK, maintenant, au bas du script When I start as a clone, nous allons vérifier s'il s'agit du clone du titre. Passons donc à Control et introduisons un bloc if then. Pour cette condition, nous pouvons utiliser un doublon du nom du costume égal à BG block. Et vérifiez si c'est égal au titre. Ensuite, initialisons l' angle en accédant aux variables, en introduisant un ensemble à bloquer et en réglant l'angle à zéro Bien, maintenant nous voulons que l' inclinaison se fasse en continu. Passons donc au contrôle et introduisons un blocage permanent. Pour faire pivoter le clone, passons d'abord au mouvement et introduisons un bloc de points et de directions. Et ici, nous allons faire la même chose que pour le titre Cosmic Havoc Nous allons prendre le sinus de l'angle, multiplier par une valeur plus élevée pour qu'il pivote davantage, puis ajouter 90 pour la direction de départ Bien, passons aux opérateurs et plaçons d'abord un bloc d'addition dans le bloc de points et de directions, puis plaçons un bloc de multiplication sur le côté gauche. Mettons maintenant un abdos de bloc sur le côté gauche du bloc de multiplication et utilisons la fonction SN. Passons ensuite aux variables, et faisons le sinus d' angle multiplié par deux plus 90. Ensuite, nous devons augmenter l'angle. Apportons donc un changement par bloc et changeons l' angle par deux, disons. Et comme les valeurs sinusoïdales se répètent lorsque l'angle atteint 360, nous pouvons conserver la valeur de l' angle 0-359 Et comme nous l'avons déjà fait plusieurs fois, je vais également vous lancer ce défi. OK, donc pour ce faire, introduisons un bloc à angle défini. Et pour la saisie, passons aux opérateurs et introduisons un bloc de mods. Enfin, revenons aux variables et faisons angle mod 360. Si nous commençons le jeu maintenant, le titre basculera d'avant en arrière. Maintenant, pour la commodité du joueur, nous pouvons également faire en sorte que le jeu démarre en appuyant sur la touche espace. Pour ce faire, passons aux événements et introduisons un bloc sur lequel la touche espace de victoire a été enfoncée. Et ici, nous pouvons faire exactement ce que nous faisons dans le script Win This Bright click, vérifiant si le nom du costume contient le bouton Play up, puis en passant au costume avec le bouton Play down, le son du clic et en diffusant le début de la partie. Donc, d'abord, dupliquons tout ce qui se trouve dans le script. Débarrassez-vous des deux autres blocs et placez celui-ci dans le script d'appui sur la touche Win Space. Maintenant, en appuyant sur la touche Espace sur l'écran titre, nous allons démarrer le jeu. OK, et une dernière chose. Si nous affichons la superposition de pause, cliquer sur le bouton Quitter le jeu arrête toujours le jeu dans son intégralité Ce que nous pouvons faire à la place, c'est rétablir l'écran titre. Pour ce faire, examinons d'abord le code du Pause Sprite, puis trouvons le script de clic W this Sprite En bas, lorsque vous cliquez sur le bouton de fermeture, nous diffusons le message de fermeture du jeu Nous recevons ce message en arrière-plan, et si nous accédons au code de fond et que nous découvrons quand je reçois Quit Game, nous sommes en train d'arrêter tous les scripts qui s'y trouvent. Donc d'abord, au lieu d' arrêter tous les scripts, arrêtons les autres scripts dans Sprite pour arrêter la boucle du jeu De plus, étant donné que l'affichage de la superposition POS définit le volume à 0 %, nous voulons le remettre à 100 % Passons donc au son et ajoutons un volume défini à 100 blocs au script de fermeture du jeu. Ensuite, nous voulons recommencer le jeu à partir du niveau 1. Passons donc aux variables, introduisons un ensemble à bloquer. Et réglez le niveau à un. Attendons ensuite un peu en accédant à Control et en introduisant un bloc d'attente d'une seconde. Ensuite, nous voulons faire apparaître l'écran titre, attendre une seconde de plus et recommencer la musique. Passons donc d'abord aux événements, introduisons un bloc de diffusion et un écran de titre d'émission. Revenons ensuite à Control et introduisons un autre bloc d'attente d'une seconde. Enfin, allons dans My Blocks et ajoutons un bloc Play Music. OK, si on lance le jeu maintenant, la musique ne jouera pas vraiment. Cela se produit parce que le volume est toujours réglé sur 0 % par rapport à la date à laquelle nous avons précédemment introduit la superposition POS Pour nous assurer que cela ne se reproduise pas, passons au script du drapeau vert. Passons ensuite au son et ajoutons un volume défini à 100 blocs en haut des scripts. Si nous relançons le jeu, la musique recommencera . R : en cliquant sur le bouton Quitter le jeu dans la superposition de pause l'écran titre et la musique s'affichent à nouveau Excellente. Nous avons cependant un problème. Si nous jouons au jeu et perdons de la santé, quittez le jeu et rejouez-le. Nous commençons avec une santé inférieure au maximum. Pour résoudre ce problème, trouvons le script de démarrage du jeu. Et ici, avant de diffuser le niveau de départ, nous pouvons passer aux variables, introduire un ensemble à bloquer et régler la santé du joueur sur la santé maximale du joueur. Cela garantira que le joueur dispose toujours un maximum de santé au début de la partie. Oh. Très bien, nous sommes sur le point d'en avoir fini avec le jeu maintenant Pour le moment, cependant, lorsque le joueur joue au jeu pour la première fois, il n'a aucun moyen de savoir qu'il doit collecter toutes les pièces du niveau en cours pour passer au niveau suivant. Et ils ne sauront certainement pas pourquoi ils ont besoin de collecter les pièces. Dans la leçon suivante, nous allons donc faire apparaître un texte superposé au début du premier niveau avec des informations sur ce qui se passe et sur ce que le joueur doit faire Et nous ferons de même avant le combat contre le boss dans le dernier niveau. 124. Corriger le problème du drapeau vert: Avant de passer à la création de la superposition de texte, il y a une chose un peu ennuyeuse que vous avez peut-être remarquée en jouant au jeu. Si nous cliquons sur le drapeau vert, alors que l' écran titre s'affiche, nous voyons brièvement le costume de fond et les sprites du joueur avant que l'arrière-plan de l' écran titre n'apparaisse Cela ne pose aucun problème avec le jeu, mais c'est un peu ennuyeux et très facile à corriger. Je ne sais pas exactement pourquoi, mais le problème est dû au fait que le volume est réglé sur 100 blocs dans le script drapeau vert de la toile de Je pense que la raison en est que le bloc prend une image entière pour fonctionner. Les blocs restants du script doivent donc attendre la prochaine image pour s'exécuter. Quoi qu'il en soit, pour y remédier suffit d'aller aux événements et d'en organiser un autre lorsque le drapeau vert clique sur Bloquer. Déplacez ensuite le bloc de volume défini vers le nouveau script Green Flag. placer dans son propre script drapeau vert empêchera d' interférer avec les blocs de l'autre Et maintenant, chaque fois que nous cliquons sur le drapeau vert, l'arrière-plan de l'écran titre s'affiche immédiatement. 125. Créer la superposition de texte: Pour créer la superposition de texte, nous allons utiliser le sprite de superposition de texte Mais d'abord, nous devons indiquer au sprite quand il doit afficher l'affichage et nous le ferons dans le code d'arrière-plan Maintenant, nous ne voulons pas afficher la superposition de texte si le mode Dieu est activé De plus, nous voulons uniquement le montrer lorsque le joueur commence le premier niveau ou le niveau final pour la première fois. S'ils meurent et que le niveau redémarre, il serait ennuyeux de réafficher le texte superposé Nous allons donc utiliser une variable globale pour enregistrer si la superposition de texte doit être affichée ou non Pour ce faire, passons d'abord aux variables et créons-en une nouvelle. Appelons cela afficher le texte, et nous pouvons continuer à masquer la variable. Nous voulons montrer le texte superposé la première fois que le joueur commence le niveau 1 Ce sera le cas lorsque le script de démarrage du jeu s'exécutera et que le mode Dieu sera désactivé. Ici, nous voulons d'abord vérifier si le mode Dieu est désactivé, et si c'est le cas, nous allons régler l' affichage du texte sur un. Alors d'abord, passons à Control et plaçons un bloc ITN dans un espace vide Pour cette condition, nous pouvons utiliser un duplicata du bloc Good Mode égal à zéro dans le script Green Flag. Passons maintenant aux variables, ajoutons un bloc set two au bloc I thin et définissons showtext sur un Et mettons tout cela juste au-dessus du bloc de niveau de départ de diffusion. Ensuite, dans le script du niveau de démarrage, après avoir patienté une demi-seconde, nous vérifierons si showtext est égal à Dans ce cas, nous demanderons au sprite de superposition de texte d'afficher le texte en diffusant un Nous attendrons ensuite que le texte affiché soit égal à zéro, ce qui se produira lorsque le joueur aura fini de lire le texte, puis nous commencerons à exécuter la boucle de jeu. OK, alors d'abord, passons à Control et ajoutons un bloc mince en I juste après le bloc de poids de 0,5 seconde. Et nous voulons retirer tous ces blocs et les attacher au bas du bloc I Thin. Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le texte affiché est égal à un. Si c'est le cas, nous allons d'abord attendre un peu plus longtemps en accédant au contrôle, en introduisant un bloc attente et en attendant 0,5 seconde. Passons maintenant aux événements, introduisons un bloc de diffusion et diffusons un nouveau message intitulé Afficher le texte. Nous voulons ensuite attendre que la variable show text devienne nulle. Passons donc à Control et introduisons un délai d'attente jusqu'au blocage. Et pour la condition, utilisons une copie du texte d'affichage égal à un bloc et modifions-le pour afficher le texte égal à zéro. Enfin, introduisons un autre bloc d'attente et attendons encore 0,5 seconde. D'accord, donc régler l'affichage du texte sur un dans le script de démarrage du jeu prend soin d'afficher le texte superposé la première fois que le niveau 1 apparaît Mais nous voulons également faire de même pour le niveau final. Pour ce faire, trouvons le script du niveau final. Et ici, après avoir changé de niveau, nous pouvons vérifier s'il s'agit du niveau final. Ce sera le cas lorsque le joueur aura terminé le niveau trois, commençant le niveau final pour la première fois. Nous devons donc afficher la superposition de texte. OK, alors mettons d'abord un bloc if then dans un espace vide. Pour ce qui est de la condition, nous voulons vérifier s'il s'agit du niveau final, et nous voulons également nous assurer que le mode Dieu n'est pas activé. Passons donc aux opérateurs et introduisons d'abord un bloc and. Utilisez ensuite un bloc égal pour chaque côté. Passons maintenant aux variables, et vérifions si le niveau est égal au niveau final et si le bon mode est égal à zéro. Si c'est le cas, introduisons un ensemble à bloquer et définissons l'affichage du texte sur un. Bien, mettons maintenant tout cela dans le script de niveau final avant que le niveau I ne soit supérieur au bloc de niveau final Et en fait, pour éviter d' avoir à réorganiser tous ces scripts, je vais transformer ce bloc mince en deux blocs imbriqués Pour ce faire, je vais accéder à Control et enrouler un nouveau bloc I thin autour du bloc de texte set show. Ensuite, j'utiliserai le mode Dieu égal à zéro bloc ici pour la condition. Maintenant, je vais extraire le bloc de niveau égal au bloc de niveau final ici, me débarrasser du bloc et n'utiliser que le niveau égal au bloc de niveau final comme condition. Il ne me reste plus qu'à déplacer ces scripts ici. OK, maintenant nous pouvons entrer dans le sprite de superposition de texte et créer le sprite de superposition de texte Jetons d'abord un coup d' œil aux costumes. La superposition de texte sera assez similaire à la superposition Pis avec un costume BG noir qui deviendra partiellement transparent, ainsi qu'un costume de panneau que nous utiliserons comme conteneur Nous avons également un bouton Continuer sur lequel le joueur peut cliquer pour afficher le texte suivant. Nous avons ensuite trois costumes de texte de départ, que nous utiliserons pour le texte du niveau 1, et nous avons deux costumes de texte finaux pour le niveau final. Très bien, et pour commencer à coder le texte des sprites de superposition, faisons-le d'abord glisser d'une ligne vers le haut dans le Passons ensuite à la phase du code Sprite et copions quelques scripts Copions d'abord le script de tri et de couches. Ensuite, quand je commence en tant que clone, pour le script de configuration, nous voulons simplement que le nom du costume soit égal à des parties vides. Enfin, copions le script du drapeau vert. Revenez ensuite aux sprites de superposition de texte. Ensuite, lorsque je commence en tant que script de clonage, nous ne voulons que les blocs contenus dans la partie ts ici. Sortons-les, débarrassons-nous du bloc I thin s et attachons les blocs au script. Nous utilisons donc la superposition Z pour trier les clones. Nous les faisons commencer par être cachés et nous rendons le clone BG partiellement transparent. OK, maintenant dans le script de configuration, nous allons créer tous les clones. Ensuite, nous les montrerons et les masquerons selon les besoins. Nous allons commencer par créer le clone de texte. Passons donc à Looks, introduisons un bloc de costume Switch, et comme costume par défaut, prenons le texte de départ zéro pour positionner le clone, passons au mouvement, introduisons un bloc Go to XY, et utilisons zéro pour X et dix pour Y. Ensuite, créons le clone en accédant à Control et en introduisant un bloc de création de clone de moi-même Ensuite, nous allons créer le bouton Continuer. Tout d'abord, nous pouvons dupliquer les trois blocs ici. Passons ensuite au costume du bouton Continuer. Pour la position, on opte pour 135 moins 45. Ensuite, il y a le panel. Dupliquons les trois derniers blocs. Passez au costume du panneau et passez à 00. Enfin, pour l'arrière-plan, dupliquons à nouveau, passons à BG, et nous voulons également que celui-ci soit à 00. Assurons-nous également de revenir au costume vierge en accédant à Looks, en ajoutant un autre bloc de costumes Switch et en passant à Blink C'est bon. Nous allons maintenant afficher les clones chaque fois qu'ils recevront le message texte d'affichage Passons donc aux événements, plaçons un bloc W I received dans espace vide et recevons le texte d'émission. Ici, assurons-nous d'abord que nous sommes au premier ou au dernier niveau. Sinon, nous mettrons simplement à zéro la variable show text et arrêterons le script pour que le niveau puisse démarrer normalement. Pour faire tout cela, passons d'abord au contrôle et introduisons un I puis un bloc. Pour la condition, passons aux opérateurs, introduisons un bloc non, puis un bloc ou, puis mettons un bloc égal de chaque côté. Passons maintenant aux variables, et vérifions si le niveau n'est pas égal à un ou si le niveau est égal au niveau final. Si tel est le cas, introduisons un ensemble à bloquer et mettons l'affichage du texte à zéro. Passons ensuite à Control, introduisons un stopblock et arrêtons ce script Et si nous sommes dans le premier ou le dernier niveau, la première chose que nous voulons faire est de montrer le clone. Passons donc à Looks et ajoutons un bloc d'affichage au bas du script. Si nous lançons le jeu maintenant et que nous cliquons sur le bouton Play, après environ une seconde, le texte superposé apparaît Si nous passons au niveau deux ou trois, le texte ne sera pas superposé Et si nous passons au niveau quatre, nous l'obtenons, mais le texte est erroné. Pour résoudre ce problème, et lorsque je reçois le texte d'émission, après avoir montré le clone, nous voulons vérifier s'il s'agit bien du clone de texte et si c'est le cas, nous allons définir son costume en fonction du niveau actuel. Pour ce faire, allons d'abord dans Control et introduisons un bloc ITN. Pour vérifier s'il s'agit du clone du texte, nous pouvons accéder aux opérateurs et utiliser un bloc contains comme condition. Accédez ensuite à Looks, utilisez un bloc de costume comme première entrée et vérifiez si le nom du costume contient le mot texte. Si c'est le cas, nous voulons vérifier si nous sommes au premier ou au dernier niveau. Passons donc à Control et introduisons un bloc I puis s. Pour la condition, utilisons une copie du niveau égal à un bloc d'ici. Passons maintenant à Looks et ajoutons un bloc de costume interchangeable à chaque pièce. Pour la partie I, passons au costume Start Text Zero. Et pour les parties ts, passons au texte final zéro. Et maintenant, le premier niveau commencera toujours en indiquant que vous êtes piégé sur une planète inconnue. Mais le niveau final va maintenant commencer avec NadNartks pour les pièces Bien, il ne nous reste plus qu'à faire fonctionner le bouton Continuer pour que le joueur puisse lire le texte suivant Pour ce faire, trouvons un espace vide. Ensuite, participez aux événements et remportez la victoire sur ce bloc sur lequel ce sprite a cliqué Et ici, nous voulons d'abord vérifier s'il s'agit du clone du bouton Continuer. Passons donc au contrôle et introduisons un bloc ITN. Pour cette condition, nous pouvons utiliser une copie de l'un des noms de costumes égale à des blocs. Et vérifiez s'il est égal au bouton Continue underscore. Si c'est le cas, nous attendrons d'abord que le joueur n' appuie plus sur la souris. Faisons donc attendre jusqu'au blocage. Pour la condition, allons voir les opérateurs et introduisons un kblock. Passez ensuite à la détection et insérez un bloc de souris vers le bas. Ensuite, nous diffuserons un message. Passons donc aux événements, introduisons un bloc de diffusion et diffusons un nouveau message appelé texte continu. Maintenant, pour plus de commodité, nous pouvons également continuer le texte lorsque le joueur appuie sur la touche espace. Pour ce faire, introduisons une touche WindSpaceKey, pressée sur block. Ajoutons ensuite une copie du bloc ITN à partir duquel ce sprite Au lieu d'attendre que Knot passe la souris vers le bas, nous voulons passer à la détection et attendre que l'espace de la touche Knot soit Un problème, cependant, est que même après avoir masqué la superposition de texte, le script sera toujours exécuté en appuyant sur la touche espace Donc, ce que nous pouvons faire, c'est qu' avant de faire tout cela, nous pouvons d'abord vérifier si la superposition de texte est visible Ce sera le cas lorsque la variable show text vaut un. Passons à Control et enroulons un bloc « si » autour du nom du costume « Je équivaut à un bloc de boutons « Continuer ». Pour la condition, passons aux opérateurs et introduisons un bloc égal. Passons ensuite aux variables et vérifions si le texte affiché est égal à un. Cela garantira que ces blocs ne s'exécuteront que lorsque la superposition de texte est visible OK ? Nous devons maintenant gérer le message texte continu. Passons donc aux événements, démarrons-en un autre lorsque je reçois des scripts et que je reçois du texte continu. Et ici, nous allons d'abord nous assurer qu'il s'agit du clone du texte. Ensuite, nous allons effacer le clone, passer au costume suivant et réintégrer le clone. Alors d'abord, passons à Control et introduisons un bloc ITN. Pour cette condition, nous pouvons utiliser une copie du bloc de contenant le nom du costume texte contenant le nom du costume lorsque je reçois Afficher le texte. Ensuite, pour faire disparaître le clone, introduisons un bloc de dix répétitions. Passons ensuite à Los at en changeant effet par bloc en bloc de répétition et changeons l' effet fantôme de dix. Une fois le bloc de répétition terminé, nous passerons au costume suivant. Apportons donc un prochain bloc de costumes. Enfin, nous allons réintégrer le clone. Pour ce faire, nous pouvons dupliquer le bloc de répétition. Débarrassez-vous du bloc de costume suivant, placez le bloc de répétition après le bloc de costume suivant ici et modifiez l' effet fantôme de moins dix. Et maintenant, si nous lançons le jeu, nous pouvons cliquer sur le bouton Continuer ou appuyer sur la touche espace pour passer au texte suivant. Mais pour le moment, le texte ne cesse changer jusqu'à ce que nous revenions au costume blanc. Alors rien ne se passe. Ce que nous voulons faire, c'est que lorsque le joueur clique sur Continuer sur le dernier morceau de texte du niveau en cours, nous masquons le texte superposé Pour ce faire, nous devons savoir quel morceau de texte le joueur est en train de lire, ainsi que le nombre de morceaux de texte que contient le niveau actuel. Nous devons donc d'abord passer aux variables et en créer quelques nouvelles. Pour le total des parties de texte, créons une variable appelée texte et utilisons-la uniquement pour ce sprite Et pour le texte actuel, créons-en un autre, appelons-le index de texte, et faisons-le uniquement pour ce sprite Et cachons les deux variables. Pour définir les variables, trouvons quand je reçois le texte d'affichage. Tout d'abord, ajoutons un ensemble de deux blocs en haut du bloc de texte « Le nom du costume contient ». Et fixons l'index du texte à un. Ensuite, la valeur des parties de texte sera différente selon le niveau. Ajoutons donc un ensemble de deux blocs à chaque partie du niveau I pour un bloc. Pour le premier niveau, fixons le nombre de parties de texte à trois, et définissons-le à deux pour le niveau final. Ensuite, lorsque je recevrai texte continu avant de passer au costume suivant, nous augmenterons la valeur de l'index du texte. Nous vérifierons ensuite s'il a dépassé la valeur des parties de texte. Si c'est le cas, nous masquerons la superposition de texte. Sinon, nous continuerons à passer au costume suivant et à faire disparaître le sprite OK, donc d'abord, ajoutons une modification par bloc au-dessus du bloc de costume suivant, et changeons l'index du texte un par un. Passons maintenant à Control et introduisons un bloc if then s. Nous voulons déplacer le prochain bloc de costumes et tout ce qui se trouve en dessous dans les différentes parties. Pour ce qui est de la condition, allons voir les opérateurs et introduisons un bloc supérieur à. Passons ensuite aux variables et vérifions si index du texte est supérieur à celui des parties de texte. Si c'est le cas, nous voulons masquer tous les clones de superposition de texte. Pour ce faire, nous diffuserons un message. Passons donc aux événements, introduisons un bloc de diffusion, et diffusons un nouveau message intitulé Hide Text. Bien, il ne nous reste plus qu'à gérer le message texte élevé. Commençons donc une nouvelle fois que je recevrai des scripts et que je recevrai du texte masqué. Et ici, passons à Looks et ajoutons un bloc Masquer. Maintenant, si nous lançons le jeu et continuons à parcourir le texte dans la superposition de texte, une fois qu'il atteint le dernier morceau de texte du niveau, cliquez à nouveau sur Continuer pour fermer la superposition de texte, mais le niveau ne démarre pas réellement Cela est dû au fait que nous n'avons pas défini la variable show text sur zéro. Nous le ferons lorsque je recevrai un texte continu avant de diffuser du texte en haut en accédant aux variables, en introduisant un ensemble à bloquer et en réglant l'affichage du texte sur zéro. Le niveau devrait maintenant commencer fois que la superposition de texte aura disparu. Assurons-nous également que cela fonctionne correctement au niveau quatre. Excellente. Et voilà, nous en avons officiellement terminé avec aventure de Glims et ce cours Toutes mes félicitations, et je vous verrai à la fin du cours. 126. Félicitations ! : Félicitations pour avoir terminé le cours Scratch Saga. Vous avez parcouru un long chemin entre l'apprentissage des bases de Scratch, la création de trois jeux complets et la maîtrise compétences fondamentales en matière de codage et de conception de jeux J'espère que vous avez confiance en votre capacité à donner vie à vos propres idées et que vous êtes fier des projets que vous avez créés. Grâce aux compétences et aux techniques que vous avez acquises dans ce cours, vous êtes prêt à continuer à créer. Avec Scratch, vous pouvez continuer à créer des jeux, expérimenter de nouvelles mécaniques ou même à partager vos projets avec la communauté Scratch pour obtenir des commentaires et inspirer les autres Chaque projet que vous entreprendrez à partir de là approfondira votre compréhension et suscitera de nouvelles idées. N'oubliez pas que chaque grand développeur de jeux commence quelque part et que vous avez franchi certaines des étapes les plus importantes ici. Merci de m'avoir rejoint dans ce voyage. Continuez à coder, restez créatif et, plus important encore, amusez-vous avec. J'ai hâte de voir les prochains jeux que vous allez créer. Bon codage.