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.