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