Transcription
1. Introduction: Bonjour, et
bienvenue dans mon cours sur la création d'une plateforme
intermédiaire, d'un jeu utilisant le moteur de jeu
Unity. Dans ce cours, nous allons créer à partir de zéro le jeu que vous
voyez actuellement. Ce faisant, apprenez tous les principes fondamentaux de la
conception et du développement de jeux, y compris tout ce que vous
devez savoir pour créer vous-même
un jeu exactement comme
celui-ci. Ce cours sera
divisé en 18 vidéos, chacune abordant un sujet
différent de la conception de jeux et une nouvelle étape
dans le développement de nos jeux. il s'agisse de commencer à
écrire du code, de créer des systèmes de particules
ou de gérer le son. En suivant ce court cours de
six heures, vous pouvez en moins d'une journée apprendre tout ce que vous
devez savoir pour commencer à développer vos
propres jeux et Unity. Pour plus d'informations sur
ce cours et son format, consultez la bande-annonce de l'autre
cours ci-dessous. Et je te verrai
lors de la première leçon. Bravo.
2. 1. Mettre en place notre scène: Bonjour, et bienvenue dans la
première vidéo de ce cours sur la création d'une
plateforme intermédiaire, un jeu utilisant Unity. Maintenant, avant de commencer, je tiens à vous dire un immense
merci pour votre soutien lors de l'inscription
à ce cours ou
à ce cours C'est un
tel soutien qui
me permet de continuer à donner des cours. Et j'apprécie vraiment
que tu aies choisi le mien. Maintenant, si vous avez regardé
la feuille de route, vous aurez essentiellement
vu un aperçu de ce que ce cours va impliquer et
des différentes vidéos et sections que nous
allons avoir. Vous aurez également vu le
jeu que nous
allons créer à la fin de
ce cours. J'espère que ce jeu a l'air
plutôt cool et que vous êtes impatient de pouvoir
créer un jeu comme celui-ci. Si cela semble compliqué, ne vous inquiétez pas, ce n'est
pas du tout compliqué. Et vous serez surpris de voir à quel point vous êtes capable de
créer un tel jeu. Pas beaucoup de temps du tout. Cela étant dit, il est évident que
créer un jeu prend un peu de
temps et nous ne pouvons pas tout
faire en une seule vidéo. Tout ce que nous allons
faire dans cette leçon, c'est présenter
l'éditeur Unity. Et nous allons
créer notre scène pour définir l'endroit où nous pouvons
commencer à créer notre jeu. Maintenant, si vous n'avez jamais
utilisé Unity auparavant, je vous suggère de regarder
cette vidéo en entier. Si vous avez un peu utilisé
Unity et que vous comprenez vraiment
la mise en page de l'éditeur, vous pouvez passer
à un horodatage ou mettre sur l'écran dès
maintenant où vous pouvez passer à, car c'est lorsque nous commencerons utiliser Unity pour créer notre scène Mais si vous n'avez jamais
utilisé Unity auparavant, je vous recommande de regarder les prochaines minutes
pendant que j'explique exactement ce que
tout est et comment fonctionne
l'éditeur.
Commençons donc. Avant de commencer, j'
utilise Unity version 2023, 0.1 0.5 et j'ai activé la mise en page
par défaut. Je vous recommande de passer à
la même mise en page que moi, afin de pouvoir suivre le cours de route. Pour ce faire, vous
allez tout en haut, vous cliquez sur Fenêtre, puis vous descendez sur Mises en page et choisissez simplement celle par défaut Cela devrait recharger votre scène
et la faire ressembler à ceci. Je n'aime pas cette petite fenêtre de navigation
basée sur l'IA. Je vais juste le faire glisser vers le
bas et ça disparaîtra. Ensuite, nous avons essentiellement l'intégralité de l'éditeur Unity
à notre disposition. Je vais commencer ici
en haut à gauche. Voici notre scène. Et vous pouvez voir que nous commençons par
une scène nommée Sample Scene. Il s'agit d'une scène
par défaut créée par Unity pour nous. Et si nous cliquons sur
cette petite flèche, nous pouvons voir qu'il n'y a actuellement qu'une caméra dans la
scène. Maintenant, c'est
essentiellement cette caméra qui va enregistrer notre jeu, et ce seront essentiellement les yeux de notre joueur. Cet appareil photo est en fait ce qu' on appelle un objet, j'y
reviendrai plus tard. Mais en gros, vous pouvez considérer une scène comme un niveau dans un jeu et considérer un objet
comme les objets du niveau. Un joueur, une balle, une pièce. Ce seront des objets ,
puis un niveau
sera une scène. Pour le moment, nous n'
avons qu'un seul niveau et notre seul objectif est
la caméra elle-même. Mais vous verrez qu'au fur et à mesure que nous
développerons notre jeu et que
nous le développerons, nous allons
peupler notre scène et ajouter de plus en
plus de choses. En gros, cette fenêtre hiérarchique gros, cette fenêtre hiérarchique est l'endroit où
vous allez
créer des objets ou des objets dans votre jeu, vous
voulez créer un personnage Si vous voulez
modifier à peu près quelque chose dans votre scène, vous allez le
faire ici en termes d'ajout ou de
suppression d'objets. Ensuite, cette grande
fenêtre au milieu est en
fait l' endroit où
vous allez
modifier la mise en page
de votre scène, ou où se trouvent les éléments, leur
taille, tout ce
genre de choses. C'est là que tu
vas le faire. Ici, c'est un peu comme si
c'était votre palette et votre toile si vous voulez utiliser une analogie artistique. Mais comme nous utilisons de plus
en plus l'éditeur Unity, cela va devenir une
seconde nature pour vous. Comment utiliser ces deux outils, en particulier en ce qui
concerne l'inspecteur, ce à quoi je reviendrai dans une minute. Ensuite, avant de passer
à l'inspecteur, la dernière chose que je voudrais
mentionner est cette fenêtre de jeu. Et il ne s'agit essentiellement
que d'un espace de test. C'est juste bleu pour le moment parce que nous n'avons
rien dans notre scène. Mais si je devais mettre quelque chose dans notre scène ici, disons que je mets un
petit bloc à l'intérieur et que je passe dans la fenêtre de jeu,
je pourrais le voir. Et je vous
le montrerai plus tard, lorsque nous commencerons
à configurer notre premier niveau,
ou plutôt notre scène. Passons à
la fenêtre de l'inspecteur, laquelle vous allez voir les
informations relatives à un objet spécifique. Vous pouvez donc voir que si aucun objet
n'est sélectionné, il est vide car nous n'
avons rien à
surligner. Mais si nous cliquons sur un
objet tel que notre appareil photo, nous pouvons voir toutes les
informations le concernant. Et je vais vous expliquer cela au fur et à mesure que nous
ajouterons nos objets à notre scène. Mais en gros,
chaque objet possède ce
composant de transformation ici , et c'est essentiellement la façon dont vous orientez votre objet
dans cette scène Il a une position,
une rotation, une échelle
qui est une taille. Et vous pouvez modifier
toutes ces valeurs. Évidemment, nous allons
utiliser deux jeux en D, donc nous n'avons pas vraiment
besoin de l'axe Z pour la plupart de ces choses. Mais c'est pratique pour la car
la rotation de l'axe
Z se fait en fait de cette façon. Vous pouvez voir que si nous
le changeons comme ça, nous pouvons réellement le faire pivoter. Quoi qu'il en soit, cette
transformation nous permet de modifier la position,
notre rotation et l'échelle de nos objets. En dessous,
il y a une caméra. Et vous êtes peut-être confus
parce que vous vous dites : «
OK, eh bien, c'est un
appareil photo ». C'est quoi ça ? Il s'agit en fait d'un script
créé par Unity. Pour programmer tout cela pour
nous, Unity
simplifie efficacement le processus de
développement de jeux en faisant préécrire tout
un tas de
code pour nous sous la forme de ces éléments
appelés composants. Cela peut
sembler difficile à assimiler,
mais croyez-moi, cela
deviendra une seconde
nature au fur et à mesure que vous l'
utiliserez de plus en plus. En gros, cette caméra principale est un objet qui a une position et une rotation dans l'échelle. Ensuite, ils ont ajouté ce script
Unity
préécrit appelé Camera, ainsi que ce script d'
écoute audio, dont vous n'avez pas
à vous inquiéter, mais qui
fait essentiellement partie de la caméra Et ces deux scripts font en sorte que
cet acte fonctionne comme il le fait. Et vous pouvez ajouter d'autres scripts appelés composants. Vous pouvez également ajouter vos propres scripts , appelés simplement scripts. Et en gros, c'
est ainsi que vous programmerez votre jeu dans Unity. Nous allons créer un objet pour le joueur. Supposons ensuite que nous voulions ajouter un sprite qui ressemble à une
image ou à une photo, essentiellement de la manière dont nous allons
représenter notre joueur Nous allons ajouter un composant de
rendu de sprites qui nous permettra d'
ajouter de l'art à notre Nous allons ajouter un composant de
collision de boîtes
, c'est essentiellement ainsi que nous allons ajouter de la physique En gros, l'ensemble de
Unity fonctionne en créant ces objets et en ajoutant
soit des scripts préécrits, qui sont des composants,
soit nos propres scripts. Bien, pour le moment,
nous avons la caméra, elle est préchargée avec
deux scripts préécrits. Mais nous pouvons évidemment ajouter
d'autres scripts si nous le voulons. Et lorsque nous créerons
nos propres objets, je vous montrerai quels scripts
nous allons ajouter. Si tout cela vous semble un
peu
confus en ce moment,
ne vous inquiétez pas. Cela deviendra très,
très simple au fur et à mesure que nous
utiliserons Unity, mais en gros, c'est l'essentiel du fonctionnement de l'
inspecteur d'objets En descendant vers
le bas, s'agit que de la fenêtre du projet. Il s'agit essentiellement d'une
représentation du dossier dans lequel votre programme est stocké ou plutôt dans lequel
votre jeu est stocké. Vous pouvez voir que j'ai un
dossier ici appelé Scenes, qui se trouve dans mon dossier Assets. Mais j'ai des actifs
et des packages, sont en fait
stockés sur mon ordinateur. C'est juste la
façon dont Unity vous montre au lieu d'utiliser l'explorateur de fichiers, c'est dans Unity lui-même. C'est donc exactement la même chose. C'est ainsi que nous
allons importer des fichiers dans nos
jeux ou créer de nouveaux fichiers. Tout est enregistré ici, puis c'est enregistré
sur votre ordinateur. C'est juste pour vous
montrer où il se trouve. Enfin, la
toute dernière chose que nous avons ici
est une fenêtre de console. Maintenant, ce n'est pas très
important pour le moment car nous n'avons pas encore
commencé à coder Mais c'est très utile
car c'est là que nous allons pouvoir
imprimer des choses. Si vous avez déjà codé, vous savez que Hello World le premier programme
que vous avez écrit dans un nouveau langage
de programmation. Ce qui affiche essentiellement
à l'écran Hello World. Si vous deviez écrire
ceci dans Unity, vous le feriez
imprimer ici. C'est ici que vous
recevrez des messages d'erreur, des avertissements
concernant votre jeu. Vous recevrez des messages si
vous souhaitez enregistrer des informations. Par exemple, si vous
voulez créer un jeu dans lequel
des joueurs affrontent sans pour autant programmer leur santé. Vous voulez juste voir
si le code qui dit «
OK, ce joueur touche l'
autre » fonctionne réellement. Vous l'imprimeriez peut-être sur cette console et vous
diriez que le joueur a été touché. Et c'est essentiellement ainsi que
vous allez l'utiliser. C'est très bon pour le
débogage ou pour simplement fournir des preuves du fonctionnement de votre
code dans vos jeux C'est un résumé assez bref du fonctionnement de l'éditeur Unity. Si cela vous semble un peu
confus, comme je l'ai dit, ne vous inquiétez
pas, car vous considérerez cela comme
une seconde nature au fur et à
mesure que nous l'utiliserons de plus en plus. Mais j'espère que cela vous
a donné
une meilleure idée de la
façon dont tout fonctionne. Maintenant, la dernière chose que nous
allons faire dans cette vidéo, puisque nous venons présenter le moteur et de
parler du cours, c'est que nous allons
commencer à créer une
scène très simple afin que nous
puissions commencer avec
notre joueur dans l'
épisode suivant pour créer une scène. Passons maintenant à
notre hiérarchie. Cette petite étoile ici, je pense qu'elle vaut la peine d'être mentionnée. Cela signifie que notre
scène n'est pas sauvegardée. Si je clique sur le contrôle S, vous
pouvez le voir disparaître. Si vous y voyez cette
petite étoile
, vous pouvez simplement
enregistrer votre programme. Contrôlez S ou enregistrez le fichier. Juste pour vous assurer de ne rien perdre de votre progression. Nous voulons maintenant créer une scène dans laquelle
notre joueur pourra
vivre lorsque nous la créerons. Et nous n'
avons pas encore terminé notre pièce. Nous devons donc tout
d'abord créer une mini-carte. Tout d'abord, je vais en faire
une incroyablement simple. Je vais faire un
clic droit ici parce que je veux
créer un nouvel objet. Et je vais sélectionner
deux sprites d'objets en D et je vais
choisir un carré Ce que cela va réellement
apporter pour moi en ce moment n'est qu'un petit carré. Tout un carré est un objet Unity. Il a une transformation, donc
une position, une rotation et une échelle,
comme nous l'avons mentionné. Et il possède un moteur de rendu Sprite, qui
lui permet essentiellement d'avoir
le sprite carré qui
s'affiche sur Si je clique dessus, je peux
réellement le déplacer. C'est ce que je vais utiliser comme plateforme sur laquelle mon
joueur pourra exister. Je vais donc en faire
deux. Je vais créer une plateforme ici. Je
vais en fabriquer un là-bas. Et je vais en fabriquer
un de plus ici. Lorsque je programme mon joueur, je peux ajouter des sauts et
m'assurer que tout fonctionne. Il y a maintenant deux
choses que nous devons
faire pour configurer correctement cette carte. Tout d'abord, nous ne pouvons pas avoir une plateforme qui ne
soit qu'un carré, car il est assez
difficile de rebondir dessus Commençons par cliquer dessus et faire
glisser pour l'agrandir Vous pouvez le faire dans
ce mode ici. Cela
ressemble essentiellement à votre menu Outils. Si vous sélectionnez différents outils, ils vous permettent de faire différentes
choses avec les objets. Par exemple,
celui-ci le déplace. Celui-ci est en train de le faire pivoter. Celui-ci va évidemment l'étendre
à la hausse et à la baisse. Celui-ci est
comme une combinaison. C'est comme vous le verrez dans les logiciels de retouche d'
image, mais vous
pouvez également faire tout cela à partir de cette
fenêtre de transformation ici. C'est ce que je vais
faire parce que c'est un peu plus précis et que je peux contrôler
exactement dans quelle mesure je veux faire pivoter ou
redimensionner ce truc. Je vais donc d'abord régler
ma rotation z à zéro. Ici, c'est ce qui permet de
choisir si nous voulons que notre échelle soit
limitée pour x et Y. Donc, si je clique dessus,
lorsque j'augmente x, y et z,
ils augmentent ou diminuent,
essentiellement des échelles proportionnelles Mais ce n'est pas ce que je veux. Je vais m'
assurer qu'il y a une
ligne , puis je
vais réduire la taille y. Ce n'est donc pas une très longue
plateforme. Super grand, désolée. Je vais légèrement augmenter x
là-bas, je dirais que c'est une
bonne plateforme et je vais juste la
déplacer vers le bas. Maintenant, avant de créer
les autres plateformes, je dois d'abord terminer
la création de celle-ci. Pour le moment, il ne s'agit que
d'un objet avec un sprite. Ce n'est donc pas encore vraiment
rien. En gros, c'est
comme une photographie. Si je veux maintenant
ajouter un joueur, rien ne dit que
lorsque je tombe dessus, je dois arrêter de bouger ou faire quoi que ce soit. En fait, c'est comme une photo. Je vais ajouter un nouveau composant qui est un nouveau script
écrit par Unity. Et je vais l'appeler bid tut ou plutôt
je vais chercher,
box Alida, Tout. C'est comme
ça que ça s'appelle. Et quand je clique dessus, vous verrez
que cela ajoute un nouveau petit script
à mon objet. Maintenant, mon objet carré ici
a un moteur de rendu de sprites
et un box Et si vous zoomez
réellement avec le parchemin, vous pouvez voir un léger
contour vert à l'extérieur de cet objet Si vous le sélectionnez, vous ne pouvez
évidemment pas le
voir si vous ne le voyez pas, mais vous pourrez peut-être
le voir un peu mieux si j'active ce moteur ici. Je ne sais pas si vous pouvez le
voir sur mon écran, mais j'espère que sur
le vôtre, vous pourrez voir un léger contour vert à l'
extérieur de votre plateforme, et c'est le box collider En gros, un box collider indique Unity que cet objet
est un objet dans l'espace Si quelque chose tombe
et
qu'il heurte le boîtier,
Unity dira, d'accord,
arrête de tomber parce que c'est un objet réel,
c'est un objet, n'est-ce pas Unity va
automatiquement, dans mon cas, parfaitement adapter mon Box Collider à
ma plateforme Mais si je voulais le changer, je pourrais cliquer ici, qui dit Edit Collider Et puis vous pouvez voir que je peux maintenant en avoir le contrôle. Vous pouvez voir la boîte
verte. C'est moi qui décide de la taille de mon
gâteau aux collisionneurs Si je voulais qu'il en soit ainsi, si un joueur tombait, il s'arrêterait là au si un joueur tombait,
il s'arrêterait là au
lieu de tomber
complètement. Je ne le veux pas vraiment,
alors je vais juste cliquer sur contrôle Z et je vais le
remettre là où il était. Mais c'est ainsi que vous
modifiez votre box collider. Avant de continuer,
une autre chose que je
dois mentionner est que cette étiquette et tous les autres types d'
étiquettes que vous voyez ici sont en quelque sorte des
attributs du script. Vous pouvez
les considérer comme des variables, mais ce
sont en réalité des attributs
du script qui
vous permettent essentiellement de modifier son fonctionnement. Ce script est évidemment
un script très général, celui-ci également. Vous ne pouvez pas avoir un
planeur qui dit : « OK, fabriquez un planeur de
ces dimensions exactes parce que nous voulons
pouvoir le personnaliser L'unité est en fait le fondement de
tout cela pour nous. manière générale,
lorsque nous les
ajouterons, je vais
vous dire ce qu'il faut changer. Donc, ne les
remplissez pas, car ils les
modifient radicalement. À moins que vous ne
sachiez ce que vous faites ou que vous ne vouliez créer quelque chose de légèrement
différent de ce que je
fais , alors par tous les moyens. Mais à l'heure actuelle,
par exemple, notre box glider possède tous les paramètres par défaut, ce
qui est parfait pour nous Celui-ci par exemple,
c'est un déclencheur. Si je devais sélectionner
cette option, cela signifierait que ce planeur n'influencera pas
réellement la physique Il va plutôt envoyer un signal et dire,
OK, j'ai été touché. Nous pourrions l'utiliser pour quelque chose comme une balle ou un ennemi. Là où nous voulons peut-être que
le joueur puisse les traverser. Mais nous voulons
être en mesure de savoir quand nous les avons trouvés
pour cette plateforme. Cependant, nous ne
voulons absolument pas cela, car nous voulons que le joueur
s'arrête lorsqu'il atterrit dessus. Laissons tout ça pour le moment. En plus du rendu des sprites, ces paramètres par défaut sont tous bons Et puis ce que je
vais faire, parce que je
n'ai pas envie de
tout refaire, c'est juste dire contrôle
C et contrôle V et je vais copier notre
plate-forme carrée et la déplacer vers le bas. J'ai dit que j'
allais en avoir un ici et que je pourrais
peut-être le
raccourcir un peu , puis je vais faire une
fois de plus et le déplacer ici
pour peut-être un peu plus bas. Je vais également
raccourcir celui-ci et le déplacer là-bas. Nous avons maintenant fabriqué trois
objets ici. Nous les avons appelés
carré un et carré deux, qui
ne sont pas de très bons noms. Nous allons les renommer dans une minute, mais en gros, ce sera le début de notre jeu Voici les trois
objets que nous avons créés auxquels nous allons ajouter
un joueur dans la prochaine leçon. Et nous allons pouvoir
sauter sur ces objets pour montrer que nos mouvements
et tout fonctionne. Mais je prends de l'avance sur moi-même. En gros, c'est le
début de notre jeu. Nous avons trois plateformes, et elles sont toutes équipées de boîtes de collision
pour montrer qu'il s'agit d'
objets dans l'espace Enfin, je vais leur donner un nom. Je vais donner à cet étage le nom d'un étage. Je vais l'appeler étage deux. Je vais appeler celui-ci le troisième étage. La toute dernière chose que
je vais faire c'est d'organiser un peu
notre scène. Tout d'abord, je vais enregistrer car je peux y voir
ces icônes. Ensuite, je vais dire, d'accord, je ne
veux pas vraiment que tout cela
soit au même niveau
que la caméra principale. Je veux créer un dossier,
vous savez comment, dans Windows, dans l'explorateur de fichiers ou sur Mac, peu importe, vous stockeriez
vos fichiers dans des dossiers. Vous n'auriez pas simplement tous vos fichiers
au même endroit. C'est pareil
ici. Je ne veux pas que ces trois objets soient
au même niveau que mes appareils photo. Je vais
cliquer avec le bouton droit de la souris et je vais
dire créer , vide, vide. Techniquement, c'est
un objet vide. Il comporte évidemment une
transformation car chaque objet doit
avoir une position. Mais vous pouvez l'utiliser
comme un dossier, comme s'il s'agissait essentiellement d'un dossier vide que vous
utilisez pour stocker d'autres dossiers. C'est ainsi que vous pouvez y penser. Je vais appeler
celui-ci « stockage ». Je vais placer mes trois
étages dans un espace de rangement
en maintenant la touche Maj enfoncée,
en les sélectionnant
, puis en les faisant glisser vers l'intérieur en maintenant la touche Maj enfoncée . Vous pouvez voir maintenant qu'ils
y sont stockés. Maintenant, j'ai une scène légèrement
plus propre et ça la rend
un peu plus belle. Si je veux voir
où sont mes défauts, il suffit de cliquer sur cette
petite flèche et je peux voir qu'ils sont tous les trois
là. J'espère que c'était une
très bonne introduction à ce cours et à la façon dont il
va être structuré. J'espère que vous avez
pu
suivre et créer des plateformes à
trois niveaux. Ils ne doivent pas nécessairement
être exactement les mêmes, mais ils n'
ont évidemment que trois plateformes. Et nous allons commencer
dans la prochaine vidéo en ajoutant notre
personnage de joueur. Merci.
3. 2. Créer notre personnage: Bonjour, et bienvenue sur la
deuxième vidéo de mon cours. Dans la dernière
vidéo, nous avons présenté l'éditeur Unity et
expliqué en gros ce que font toutes ces
différentes fenêtres. Une fois que nous
en avons terminé, nous avons configuré
cette scène de base sur laquelle nous
pourrons commencer à développer notre jeu. Maintenant, tout ce que nous avons dans notre scène, c'est cette caméra
principale et l'objet
de rangement qui contient nos trois défauts Mais ce n'est pas vraiment un
jeu en ce moment, en fait, si ce n'est pas le cas la dernière fois. Mais je vais
vous montrer maintenant qu'il
n'y a pas grand-chose d'
excitant qui se passe. Nous avons juste trois objets qui ne sont en fait
que trois sprites, donc ce sont comme trois
photos avec des colliders Ce sont donc des objets dans l'espace, mais ce n'est pas grand-chose d'autre. Si nous voulons créer
un jeu un peu plus intéressant que
celui-ci, ce que nous faisons, nous allons devoir
ajouter un autre objet et, en fait, un
tas d'autres objets. Mais le premier autre
objet que nous allons
ajouter sera notre joueur. Parce que si vous n'
avez pas de joueur, vous n'avez pas vraiment de jeu. Nous allons évidemment
vouloir ajouter notre joueur. Ensuite, nous pouvons commencer à ajouter nos autres objets
, nos ennemis et tout le reste. Cela
fait d'un jeu un jeu. Mais ne prenons pas trop
d'avance sur nous-mêmes. En gros, ce que nous devons
faire dans cette vidéo c'est ajouter
notre objet de lecteur. Nous allons ajouter
notre objet de joueur exactement de
la même manière que nous avons
créé ces objets de sol. Nous allons
cliquer avec le bouton droit de la souris ici. Nous allons en créer deux, l'objet et nous allons
en fait
créer un sprite carré Maintenant, vous pouvez voir ici que
si je crée mon sprite, j'ai ce bloc blanc
qui représente notre joueur Pour l'instant, il s'agit évidemment
d'un espace réservé, car nous ajouterons des sprites
et des illustrations à notre jeu Mais pour l'instant, elle
devra le faire. Je vais
cliquer deux fois dessus et le nommer Player. Il peut également le faire en
cliquant sur Renommer. heure actuelle, j'ai
mon objet de joueur, mais rien
ne le
différencie réellement de
ces trois objets En fait, ce sont à
peu près exactement les mêmes. Ce ne sont que des carrés
redimensionnés différemment. La première chose que je
vais faire est changer la taille de mon lecteur. Je vais le faire
0,65 au lieu d'un, et ça va
le rendre un peu plus petit Vous verrez plus tard que lorsque nous
ajouterons des sprites à notre jeu, nous serons en mesure de voir exactement de quelle taille il
faut
créer, car je vais utiliser le pixel art. Vous n'êtes pas obligé d'utiliser le pixel art. Mais évidemment, si vous
voulez créer
exactement le même jeu que moi, vous
utiliserez évidemment les mêmes sprites Je vais évidemment les lier à chaque vidéo
où nous les utilisons, afin que vous puissiez utiliser les
mêmes que moi. Mais en gros, pour le moment, je
prends de l'avance sur moi-même. Tout ce que nous avons, c'est un carré et nous pouvons donc choisir la taille
que nous voulons. Maintenant, en dessous, nous avons également
un
composant de rendu de sprites Et vous pouvez voir, comme le font
ces trois objets du sol, que c'est la seule chose
qui est ajoutée à cet objet. C'est essentiellement comme
un objet vide avec un sprite avec quelque chose pour
montrer que l'objet est là ? La première chose que je vais
faire est de
changer cette couleur
ici en jaune. Juste pour voir si c'est différent du
reste de ma scène. Nous pouvons vraiment le
constater. Nous pouvons maintenant voir que notre sol est blanc
et que notre joueur est jaune. Juste pour donner un
peu de différenciation au joueur, si je clique sur Jouer en ce moment, n'y aura pas grand-chose de différent de ce
que nous avions joué auparavant. En fait, ça va ressembler
à
peu près à la même chose. Rien ne
va bouger. Et ce joueur n'est pas du tout
capable d'interagir avec l'
environnement, ce qui est l'une des choses dont
nous avons besoin pour notre jeu. Nous allons donc
commencer par ajouter exactement
le même composant que nous les
avons ajoutés pour leur faire savoir qu'
il s'
agit également d'un objet
dans l'espace et qu'il faut également
entrer en collision avec eux savoir qu'
il s'
agit également d'un objet dans l'espace et qu'il faut également
entrer en collision avec Ajoutons deux autres
boîtes Collider D. Comme je l'ai dit la dernière fois, vous pouvez à peu près les
laisser exactement tels quels Évidemment, si vous
voulez le modifier, vous le pouvez. Mais je ne vais pas
faire ça. Je vais donc cliquer sur
Ctrl Z
et remettre comme il était correct. Nous avons maintenant un box collider. vous attendre à ce que si
nous cliquons sur Jouer et que nous déplaçons notre joueur là où
se trouvent les autres blocs, je ne
pourrai pas le dépasser, mais ce n'est pas
vraiment le cas et cela pour deux raisons principales. L'une d'entre elles, qui est
en quelque sorte la sous-raison, est que le moteur
physique de Unity n'est pas vraiment conçu pour
détecter des collisions, comme pour détecter de tels
mouvements, est que le moteur
physique de Unity n'est pas
vraiment conçu pour
détecter des collisions,
comme pour détecter de tels
mouvements,
parce que
le joueur ne serait
jamais capable de le faire. En fait, je suis en train de modifier ma scène en
ce moment et je dis que, d'accord, l'éditeur Unity
détecte désormais une collision. Et même si Unity détecte
réellement
cette collision, il ne peut vraiment
rien y faire. Parce que je n'ai pas
vraiment suivi les lois physiques de
Unity pour y placer mon truc, donc l'entreprise ne sait pas
vraiment quoi faire. C'est en quelque sorte la sous-raison. Mais la principale raison pour
laquelle Unity n'est
pas en mesure de montrer
que nous bloquons ou que
cette collision est en train de se produire est que nous
n'avons pas ajouté ce que l'on appelle
un corps rigide à ce joueur. Et un corps rigide est
essentiellement comme un composant physique
intégré qui généralise en quelque sorte tous les aspects
de la physique classique dont
vous avez besoin pour un objet Cela le rend donc
capable d'accélérer, tomber en
fonction de la gravité, se déplacer. heure actuelle, Unity
n'a aucun moyen de
déplacer cet objet, même via du code ou autre. Vous pourriez le faire en
déplaçant la transformation, mais il n'existe aucun
moyen fiable pour Unity d'
implémenter réellement la physique, le mouvement
et les forces sur cet objet. Pour ajouter cela, nous devons simplement
ajouter un autre composant,
dont j'ai parlé, à savoir le corps rigide, deux D. C'est un peu comme
un composant général, comme je l'ai dit, qui
ajoute essentiellement de la physique à cet objet. C'est une
façon assez simple de le dire, mais c'est ce que cela fait. Je vais aller de
l'avant et
changer cette
traînée angulaire à zéro. Et je vais cliquer ici
sur les contraintes, et je vais geler
la rotation de Z. Cela peut
sembler avoir fait beaucoup de choses et je
viens de les présenter,
mais je vais les
expliquer plus en détail Et vous vous familiariserez
davantage avec ces objets et avec ce qu'ils font
exactement, ou plutôt avec ces composants, au
fur et à mesure que nous avancerons dans le cours. Ne vous inquiétez donc
pas trop chacune de
ces petites choses, pour
chacune de
ces petites choses,
mais en gros, cet objet ajoute de la physique. Maintenant, son mode de fonctionnement n'a
pas une grande importance, surtout pour ce cours, car il est intégré à Unity. Il s'agit essentiellement d'un script
très compliqué que Unity a écrit pour nous. Et ce sont toutes les
variables que nous pouvons modifier. Nous pouvons donc modifier
l'échelle de gravité, nous pouvons modifier la traînée Je l'ai mise à zéro simplement parce que ce n'est pas d'
une importance capitale, mais vous n'êtes pas obligé de la
changer à zéro. Vous pouvez en quelque sorte le garder, cela ne fera
pas vraiment de différence. Et puis la seule
autre chose que j'ai modifiée c'est la rotation de l'axe Z. Et ce que cela
va faire, c'est que si je n'avais pas changé cela et que je n'avais pas
placé mon objet là-bas, lorsque je clique sur le jeu,
il tombera. Et puis il
va réellement tourner de cette façon, comme dans la vraie vie. Ce n'est pas quelque chose que
je veux pour mon jeu. Et je ne
vous recommande vraiment pas de l'utiliser pour les plateformes de jeux car à moins d'utiliser des carrés, cela n'a pas une très belle
apparence. Je vais utiliser le pixel art, donc ça ne va pas du tout être
beau. Mais une fois que vous avez ajouté ce composant de corps
rigide, que vous avez figé la rotation sur l'axe Z et réglé la traînée angulaire sur
zéro si vous le souhaitez C'est à peu près toute
la configuration dont nous avons besoin. Et maintenant, nous allons
avoir un objet dans notre jeu qui peut réellement
obéir aux lois de la physique. Si nous cliquons sur Play, nous pouvons voir
que notre objet tombera
et s'arrêtera dès que
nous atterrirons sur un autre collisionneur, qui est exactement ce que nous voulons Et nous pouvons réellement revenir en arrière
et le déplacer vers le haut. Et nous pouvons voir que cela fonctionne exactement comme nous nous y attendions. De toute évidence, nous n'
allons pas pouvoir lancer notre objet ou
quoi que ce soit d'autre. Et c'est en quelque sorte
pour la sous-raison j'ai mentionnée plus tôt, à savoir que techniquement, il ne
s'agit pas vraiment moteur physique de
Unity en tant que joueur. C'est moi qui édite mon jeu et puis je
dis : « OK, Unity Takeover ». Unity ne sait donc pas
à quelle vitesse je l'ai lancé ou si
j'ai fait quelque chose comme ça Je viens de déposer mon joueur en bas de la carte. Donc je vais juste le
déplacer à nouveau. Déplaçons-le dix minutes
comme ça. Je l'ai raté encore une fois. Voyez ce qui
se passe réellement maintenant, c'est le joueur se déplace si vite qu'il ne peut
plus détecter les collisions. Ce qui m'amène en fait à
un autre point important. Si vous pensez que vous
allez avoir une plateforme avec des collisions incroyablement
rapides, vous devez
passer à une plateforme continue. Et je vais essentiellement pouvoir
illustrer ce que cela fait. Maintenant, si je fais exactement la même
chose qu'avant, et que je fais
tomber le joueur puis prendre de la vitesse, évidemment car il accélère plus vite
vers le sol. Je vais attendre un moment, je vais passer à cinq. Non, pour le mettre à zéro. Vous pouvez voir que j'ai
pu m'arrêter à ce moment-là. Ce n'était donc pas
totalement intentionnel. Mais c'est en fait un
bon moment
pour apprendre comment fonctionne le corps
rigide de l'unité. C'est donc à vous de décider si
vous souhaitez activer ce paramètre. que le contrôle
continu est un peu plus
intensif Je crois que le contrôle
continu est un peu plus
intensif. Mais c'est en général quelque chose que j'aime ajouter
à mes jeux. Donc, en résumé, nous
venons d'ajouter notre objet Player, nous avons un
rendu de sprite ici Nous avons ajouté un collisionneur pour indiquer à Unity qu'il s'agit d'un objet dans l'espace Nous avons également notre
corps rigide ici, dont nous avons modifié
la traînée angulaire. Nous avons réglé la détection des
collisions en mode
continu à cause de
cette chose que nous avons accidentellement découverte et
nous avons gelé la rotation Z. Et ce sont en fait toutes
les étapes de configuration que nous
allons devoir faire pour
commencer à créer notre joueur. heure actuelle, nous
avons essentiellement une plateforme, un jeu, mais vous ne pouvez pas vraiment
y jouer, vous pouvez simplement tomber. Dans
le prochain épisode, nous allons donc
commencer prochain épisode ajouter notre script de mouvement pour
permettre à notre joueur de sauter et de
tomber, de se déplacer de gauche à droite et de gauche droite et
tout ce dont nous aurons besoin. Nous allons donc
commencer par le codage dans le prochain épisode, mais pour le moment, votre scène
devrait être configurée à peu près
comme la mienne.
4. 3. Ajouter un mouvement de joueur: Bonjour, et bon
retour sur Unity. Il s'agit maintenant de la troisième
leçon de notre cours. Jusqu'à présent, nous avons ajouté
un objet joueur qui peut tomber et entrer en collision avec les objets de trois étages que nous avons
créés auparavant Mais nous n'avons pas encore vraiment
de jeu. Nous avons en fait une démonstration de
physique
incroyablement simple. Il tombe et s'y arrête. Mais ce n'est pas ce qu'il y a de
plus intéressant. Et pour rendre les choses encore plus intéressantes, nous allons ajouter un script qui
permettra au joueur de se déplacer et de
jouer à notre jeu. Parce que sans script, nous
n'avons pas vraiment de jeu car nous n'
avons aucun moyen d'influencer le résultat, ce qui est tout le problème. Donc, pour commencer, nous
allons d'abord accéder à ce dossier
Assets ici. Et si
vous avez déjà porté des
fichiers ou non, si vous les avez
suivis, vous devriez ressembler à
peu près au mien avec un seul dossier de
scènes. Et à l'intérieur de la scène, nous avons notre scène ici, qui s'
appelle Sample Scene. Maintenant, je vais retourner le dossier Assets et je
vais écrire click and go Create new
folder et l'appeler scripts. Et c'est ici
que je vais mettre chaque morceau de code
que j'écris pour ce projet. Tu n'es pas obligée de
le suivre exactement comme moi. C'est exactement comme ça que j'aime organiser mes scripts et mon
dossier pour mon jeu, donc je vais
double-cliquer dessus. Maintenant, je vais commencer
à créer mon tout premier script
C Sharp. Maintenant, si vous n'avez jamais
codé en C Sharp auparavant, vous voudrez évidemment regarder cette vidéo en entier. Si vous avez codé le do sharp et que
vous n'avez pas besoin d'autant d'aide, vous pouvez écrire
votre propre script de mouvement. Mais je vais en
écrire une assez simple juste pour
présenter l'idée. Ensuite, nous pourrions le
modifier au fur et à mesure. Je vais écrire Click
et je vais
créer un script C sharp et je vais appeler
cela le mouvement du joueur. Dès que je l'ai fait,
nous pouvons cliquer sur le script et
l'afficher en mode aperçu. Ici, nous pouvons voir en
ce moment que
nous avons un cours fait pour nous et que nous avons deux vides
qui ressemblent à des méthodes Je vais t'expliquer tout ça.
Vous n'avez pas vraiment à vous soucier de
la terminologie de codage, il suffit de suivre le cours. Et vous devriez vous
familiariser davantage avec C sharp au fur et à mesure que
nous codons de plus en plus. Mais je vais
tout expliquer, alors ne vous inquiétez pas. Allons-y et
double-cliquons dessus pour l'ouvrir. Je vais utiliser
Visual Studio comme IDE. Ce qu'est un IDE, c'est que vous pouvez le considérer
comme un éditeur de code, comme vous utiliseriez Word ou
Google Docs pour modifier des essais. C'est ce que vous avez
utilisé pour modifier le code. Vous pouvez utiliser
celui que vous voulez, mais je recommande
Visual Studio. J'utilise une version assez ancienne, mais presque toutes sont vraiment bonnes,
en particulier pour Unity. suite, ouvrez-le, cela peut sembler un peu confus, exemple, quels sont tous
ces mots et que signifient les différentes
couleurs ? Comme je l'ai dit, ne vous inquiétez pas trop pour
tout jusqu'à présent. Je vais vous expliquer toutes
les choses importantes en
haut de page. En utilisant. Sans trop entrer dans la terminologie de ce que
cela signifie, considérez cela comme si nous indiquions à l' unité les parties de
l'unité que nous voulons utiliser. Donc, si nous voulions utiliser quelque chose
basé sur l'interface utilisateur, nous devrions ajouter une nouvelle ligne ici qui dit d'
utiliser Unity Engine. En gros, cela nous indique, accord, ce sont les parties
de Unity dont j'ai besoin. Ces scripts par défaut
conviendront en fait à peu
près à la plupart de nos scripts que
nous allons écrire. Et si nous devons en
ajouter un autre, je vous le
dirai évidemment au fur et à mesure que j'écris le script, car vous
allez écrire avec moi, donc ne vous inquiétez pas trop pour
ça. En dessous se trouve
notre classe publique. Encore une fois, ne vous inquiétez pas
trop de ce qu'est exactement un
cours. Mais vous pouvez voir
cela comme un conteneur pour l'ensemble de notre code. Tout cela consiste à coder de la terminologie. Si
vous le souhaitez vraiment, vous pouvez faire des recherches sur
Internet et comprendre exactement quelles sont les définitions de tout cela. Mais je ne vais
pas
trop m'attarder là-dessus dans ce cours,
car ce n'est
pas vraiment important
pour le développement de Unity. En fait, nous
allons nous concentrer davantage
sur la manière de développer des jeux. Et vous n'avez pas vraiment
besoin d'être
capable de définir ces
différents concepts, vous n'avez pas seulement besoin de savoir
comment coder. Évidemment, plus vous codez, plus vous en découvrirez et plus vous
en apprendrez à leur sujet. Mais pour l'instant, ne vous inquiétez pas
trop pour eux, car
cela peut être assez intimidant de
devoir apprendre tout ce genre de choses
par cœur en ce moment Et ce n'est pas
vraiment important pour nous. Cela étant dit, certaines choses doivent être passées en revue. Tout d'abord, il s'agit d'un commentaire. Et un commentaire est essentiellement comme un morceau de code qui
n'est pas du tout du code. C'est comme une ligne pour indiquer à
quelqu'un qui lit le code ce que désignent
ces deux barres obliques. Si vous le dites comme ça, vous pouvez écrire
ce que
vous voulez et
l'IDE ou l'éditeur le
sauront comme ça, vous pouvez écrire
ce que vous voulez et l'IDE ou l'éditeur le
sauront Ce n'est pas du code qui
doit être exécuté. Il n'est pas vraiment nécessaire
de le déchiffrer. Que signifie cette déclaration ? C'est juste un commentaire. Il s'agit commentaires
rédigés par Unity. Pour que nous puissions expliquer ce que sont ces
deux vides différents, il est indiqué que le démarrage
est appelé avant la première image, la mise à jour et la mise à jour sont appelées une fois par image Maintenant, ces deux vides,
la dernière chose que je
veux mentionner, sont comme des méthodes Vous pouvez penser à
des méthodes telles que des sections de notre code que nous pouvons
appeler à certains moments. À l'heure actuelle, nous avons
chargé notre code. Il s'agit de notre vaste programme.
Il s'agit d'une section de notre code que nous allons
appeler avant la
première mise à jour du cadre. Il s'agit d'une section de
notre code que nous allons appeler
chaque image. Et
tout cela est évidemment fait par Unity pour nous lorsque nous
créons nos propres méthodes. Plus tard, nous devrons
choisir quand les appeler. Mais ce sont les deux
méthodes à partir desquelles nous allons essentiellement construire notre code
complet. De toute évidence, la
méthode de démarrage sera exécutée que ce code sera exécuté par Unity,
avant que la première image ne
soit jouée, nous pouvons écrire des
choses ici et dire, accord, ceci, faire ceci, faire
ceci, et Unity le fera. Et ce code ici
va être exécuté à
chaque image, chaque image. C'
est ce qu'on va appeler ça. Si je dis « imprimer un numéro », chaque image, c'est ce numéro qui
sera imprimé. Et si je dis
d'imprimer un numéro ici, il l'imprimera une fois
avant le début du jeu, puis il ne
fonctionnera plus. Cela devrait être assez rapide et peut-être un peu
confus pour vous, mais j'espère que les
concepts de base ont du sens. Et comme je l'ai dit,
ne vous inquiétez pas trop détails au
fur et à mesure que vous suivez, vous les
comprendrez de mieux en mieux. Et si cela vous semble un peu
intimidant au début, ne vous inquiétez pas, cela
deviendra plus facile par la suite Mais pour
commencer avec le codage proprement dit, commençons par
aller jusqu' haut et créer ce que
l'on
appelle une variable. Maintenant, une variable est comme un espace de
stockage dans le code Nous allons
donc
créer une variable, appelons-la vitesse de déplacement. Et puis c'est un espace
de stockage où chaque fois que je veux accéder à la vitesse à
laquelle le joueur doit se déplacer, je vais regarder
cette variable et voir, accord, ce qui est stocké ici. Vous disposez de différents
types de variables. Je vais juste en aborder brièvement
quelques-uns et maintenant nous allons commencer à
coder. Mais fondamentalement, il y a des
nombres entiers qui sont des nombres. Il existe des chaînes qui
ressemblent à des mots ou à du texte. Il existe également des caractères
qui sont des lettres simples. Et puis vous avez des booléens
qui sont vrais ou faux. Enfin, vous avez des nombres flottants qui
ressemblent essentiellement à des décimales, alors ne vous inquiétez pas
trop Pour le moment, comme
je l'ai dit,
tout va
se faire plus naturellement. Mais je
voulais juste vous donner
un aperçu de base
de toutes les bases du
codage dont vous aurez besoin
pour cette leçon. Pour commencer, nous allons
créer notre première variable, que nous allons
appeler publique, ce qui signifie essentiellement qu'
elle est accessible par n'importe quel élément de
ce script flottant. Et nous allons
appeler cela la vitesse du joueur. Ensuite, nous allons ajouter
un point-virgule à la fin. C'est cette
vitesse du joueur public que nous allons
utiliser pour déterminer la vitesse à
laquelle notre joueur doit aller. Nous allons en créer un nouveau. char public, un autre char
public, nous allons
l'appeler hauteur de saut. Maintenant, en gros, ce que nous avons dit à
l'IDE ou plutôt à Unity, c'
est que nous voulons un public auquel
tout élément du script
puisse accéder. Ne vous inquiétez pas
trop pour eux non plus pour le moment, mais il suffit de les copier
pendant que je le fais, ce qui signifie que c'est
un nombre décimal et c'est ainsi qu'il s'appelle La raison pour laquelle nous
utilisons le public est que nous pouvons y accéder dans
les éditeurs Unity. Si je fais glisser ce
script sur un objet, je pourrai le voir
dans l'éditeur Unity, c'est
pourquoi j'utilise public. Mais suivez-moi pour le moment et faites exactement ce que je fais. Et tout cela devrait avoir
du sens parce que, comme je l'ai dit, même si cela semble un
peu intimidant au début, cela
deviendra beaucoup plus facile Maintenant, avant de passer à autre chose, il y a encore
quelques éléments que je
dois ajouter en haut de la page. Les quatre premiers
feront référence aux composants que
nous avons ajoutés à notre objet. Nous avons ajouté un corps rigide qui dit
essentiellement « d'accord, obéissez aux lois de la physique », mais nous devons
essentiellement être en mesure
d'accéder à ce
corps rigide dans nos codes. Je vais créer un corps rigide
public deux D et l'appeler RB Cela revient essentiellement
à dire, d'accord, maintenant j'ai une référence à ce corps rigide afin
de pouvoir y remédier. La façon dont nous allons
créer du mouvement est modifier la
vélocité de mon corps. Je vais donc dire que lorsque
je clique sur cette touche vers le bas, fais-la bouger aussi rapidement
dans cette direction. Pour cela, nous avons évidemment
besoin d'une référence à la
composante physique de mon objet, qui est ce corps rigide. Une fois cela fait, j'ai à peu près
tout ce
dont j'ai besoin pour commencer à coder mon script de mouvement
très basique. Je vais ajouter une dernière
chose en dessous, un lingot public, qui
signifie vrai ou faux C'est ce qu'on appelle un taureau en do dièse, et nous allons dire
qu'il est cloué au sol. Cela va essentiellement nous
dire si nous sommes sur
le terrain ou non ? Maintenant que vous avez créé ces quatre variables et cette référence à ce
composant ici, nous avons tout ce dont nous avons besoin
pour commencer à coder notre jeu. La première chose que je
vais faire est créer un nouveau vide. Et ce vide
sera appelé mise à jour corrigée. Maintenant, il s'agit en fait d'
un autre vide créé automatiquement
pour nous par Unity. C'est comme une mise à jour,
c'est juste corrigé. La mise à jour n'est pas basée sur la
vitesse de votre ordinateur. La mise à jour s'appelle
chaque image, n'est-ce pas ? Évidemment, si vous
avez un ordinateur rapide, il sera
appelé beaucoup plus rapidement. Si votre
ordinateur est lent, la mise à jour fixe est plutôt appelée à un intervalle
très, très court. Donc, même si la
mise à jour se fait sur la plupart des ordinateurs,
il est évident que vous avez un ordinateur
super rapide, qui peut être un peu plus lent. Si votre ordinateur est très
lent, il se peut qu'il soit un peu plus rapide. Mais c'est une bonne
méthode pour intégrer de la physique, logique et d'autres éléments de ce
genre dans votre jeu. Parce que vous ne voulez pas que quelqu'un
qui possède un ordinateur plus rapide puisse
faire
plus dans votre jeu qu'un joueur dont l'ordinateur est
lent. Par exemple, vous ne voudriez pas
qu'ils tombent plus vite. Nous allons utiliser une forme
générale de mise à jour. On l'
appelle toujours à peu près chaque image, on peut y
penser de la même manière, mais c'est une bonne
convention de le faire. Nous allons maintenant commencer à
coder le mouvement réel de notre jeu dans cette
mise à jour corrigée, suivez-moi. La première chose que je vais
faire est de
créer une nouvelle variable que
je vais appeler x.
Et je peux simplement le faire en tapant float x.
La différence
entre la variable ci-dessus dans la variable
ci-dessus est
que La différence
entre la variable ci-dessus dans la variable cette variable est accessible
par tous les éléments du script. Tous ces endroits
où nous appelons code peuvent parler de
ces variables. Mais dans l'un d'entre eux, si je crée une variable accessible uniquement
à l'intérieur de celui-ci. Si je lance une mise à jour et
que j'essaie de parler de x, il ne saura pas de
quoi je parle, mais dans une mise à jour fixe, il le saura. Et c'est très bien pour nos besoins car nous
n'avons besoin que de ce float x pour qu'il soit dans une mise à jour fixe pour
aller égal à l'entrée, obtenir l'axe brut, ouvrir les parenthèses, guillemets
doubles, puis
taper le mot horizontal Ce que cela va essentiellement
faire , c'est qu'il s'agit d'une autre
fonctionnalité de Unity. Cela va essentiellement nous
permettre de simplifier un peu
nos mouvements,
car au lieu de dire «
OK, si le joueur
maintient cette touche enfoncée, fais-le ». S'ils détiennent
cette clé, faites-le. Ce que nous disons ici
est une variable créative appelée x. Elle est de type float. Et cette variable
va être utilisée pour enregistrer si le joueur
maintient certaines touches enfoncées. Ce que fait cette ligne
ici, input get axis horizontal, c'
est qu'elle parle d'unité. Si, à la minute d'exécution de ce code, le joueur maintient la
touche flèche droite ou la touche D pour SD enfoncée , puis met une valeur de un dans x. S'il maintient la touche
A ou la flèche gauche
enfoncée, entrez une valeur négative un. Et s'ils ne maintiennent
aucune de ces touches enfoncée, saisissez une valeur de zéro. Donc, vous pouvez voir en gros
ce que cela va faire c'est que chaque image
va dire, d'
accord, est-ce qu'ils
tiennent le coup vers l'avant ? Si c'est le cas, fabriquez celui-ci. Est-ce qu'ils
se retiennent ? Si c'est le cas, faites ceci moins un. Ne
touchent-ils à rien ? D'accord ? Fais ce
zéro. Et vous pouvez imaginer
à quel point cela va être utile pour notre jeu, car cela nous permettra de vérifier à chaque image si le joueur veut que nous
bougions si
nous
devons continuer à bouger ou si nous devons reculer, etc. Il s'agit de la première ligne
de code de notre script. Et en dessous,
nous allons écrire une autre ligne de code
qui indiquera R B
comme référence à la vitesse de notre corps de
crête. Nous allons donc modifier
essentiellement la vitesse à laquelle nous nous
déplaçons égale le vecteur deux. Maintenant, ce n'
est pas très important, c'est essentiellement un vecteur, deux est un vecteur de deux composantes Je dis, d'accord, je
veux ma vitesse, évidemment,
je vais avoir une vitesse x et une vitesse y. Et je veux que ce soit le cas, je vais lui attribuer des choses
en utilisant un vecteur. Si j'ai assigné 1.1, cela dit , d'
accord, faites le x un
et le y. Si je le mets à 2.1, il est écrit
de faire le x deux et le y un. En gros, comme je l'ai dit,
ce n'est pas très important. Pensez-y comme à
un espace de rangement. Si vous savez ce qu'est
un vecteur, je suis sûr que cela
a beaucoup de sens. Mais si vous n'avez jamais
rencontré de vecteur ou si vous n'avez pas
beaucoup étudié la physique, considérez-le simplement comme un espace de stockage pour deux
nombres ou deux valeurs. moment, je
dis, d'accord, je veux que ma vitesse RB soit
ce nouveau vecteur deux, En ce moment, je
dis, d'accord, je veux que
ma vitesse RB soit
ce nouveau vecteur deux,
et je vais devoir mettre un x et un y parce que j'
ai évidemment une vitesse x horizontale
et une vitesse y verticale Je vais faire en sorte que
ma vitesse x soit égale à x, je vais
les séparer par une virgule et
je vais faire en sorte
que ma
vitesse y soit la vitesse RB Y. Cela
revient essentiellement à dire, d'accord, prenez la vitesse de
mon corps rigide, faites de x
la vitesse x et faites de la vitesse
y la vitesse y,
la vitesse y n'est pas modifiée Si je faisais en sorte que ce RB
fasse un point de vélocité x, cette ligne ne ferait
absolument rien Parce que c'est un dicton basique, d'
accord, prends
la vitesse du corps rigide et
définis-la comme
la vitesse du corps rigide, ce qui
n'a évidemment aucun effet. Et c'est ce que je
veux pour l'axe Y, car je ne veux pas que le
joueur soit en train de tomber en l'air. Puis je clique sur la flèche
droite et je commence
tout à coup à me déplacer
en ligne droite. Et c'est ce qui se passerait
si je mettais ce chiffre à zéro, par
exemple, ou à
un autre chiffre. Je ne veux pas que cela change, mais je veux que cela change
parce que je veux pouvoir influencer la direction dans laquelle le joueur
se déplace
à gauche et à droite. Ce sont en fait à peu près les deux lignes de code dont nous avons besoin pour créer le mouvement le plus rudimentaire possible. Si je retourne dans Unity et que je passe à mon
objet de jeu ici. Une fois que j'ai fini de
recharger mon script, je vais jusqu'à mon
objet de jeu et je le fais glisser ici Déplaçons-le
vers le bas. Et faisons-le glisser là-bas. Nous pouvons voir que j'ai mon script
incroyablement simple et je vais faire glisser ce corps rigide ici que mon script sache où se trouve
le corps rigide. Alors j'en parle,
parce que j'en
parle , mais je ne l'ai pas
vraiment lié. C'est ainsi que nous allons
le lier dans Unity. C'est l'une des méthodes les plus simples, et je n'ai pas vraiment
besoin de modifier ces variables
car je ne les ai pas du tout
utilisées dans mon script. Mais tu verras si je clique sur Play. En ce moment, je tombe comme d'habitude. Mais si je clique sur
toutes les touches, ainsi que sur
toutes les touches fléchées, je peux avancer comme je pourrais le faire sur
n'importe quelle autre plateforme. Encore une fois, ce n'est évidemment pas un très bon
script de mouvement parce que je ne peux pas sauter, je ne
peux rien faire. En fait, je ne peux
même pas traverser
ce truc sans
tomber dans le gouffre. Si j'essaie, je
vais juste tomber. Ce n'est donc pas un très
bon script de mouvement parce que je ne me déplace pas assez
vite, je ne peux pas sauter. Mais c'est la base
de mon script de mouvement. J'ai dit, d'accord,
selon que je
maintiens ou non certaines touches, définissez cette valeur, puis assignez cette valeur à la
vélocité de mon corps rigide. Assurez-vous donc que je vais dans la direction dans laquelle cette
valeur devrait me faire avancer. Mais nous voulons évidemment le rendre un peu
plus intéressant. Commençons donc par le multiplier
par la vitesse du joueur. Et c'est là que nous allons
commencer à utiliser nos variables. Cela va maintenant nous
permettre de déterminer à quelle vitesse le joueur se déplace fonction de la variable de
vitesse de ce joueur. Et je vais
supprimer ce tableau de démarrage parce que je n'en
aurai pas vraiment besoin pour le moment. Je pourrais l'ajouter
plus tard en
fonction de la façon dont j'édite le script. Mais pour l'instant, c'est
bien de l'avoir tel qu'il est maintenant. Maintenant, il y a quelques
modifications que je voudrais apporter. C'est juste
pour illustrer comment nous allons créer
notre script déplacé. J'essayais d'
expliquer comment fonctionnent
les différentes variables et comment cela fonctionne, mais nous voulons
l'améliorer légèrement. Donc, la première chose que
nous allons
faire est d'aller au sommet et de créer
un nouveau char public. Appelez-le x, donc nous
n'allons
pas faire référence à une variable
juste dans cette méthode. Nous voulons que ce soit une
variable
accessible n'importe où
dans le script. Ensuite, nous allons
procéder et déplacer ce code de mise à jour fixe
vers le bloc de mise à jour. Et ce que cela va
faire, c'est au lieu de baser cette valeur
sur un certain intervalle, nous allons vouloir la mettre à jour
à chaque image C'est une bien
meilleure façon de coder. Vous pouvez penser qu'
en règle générale, vous devez suivre n'importe quel
code basé
sur les entrées ou sur ce que font les joueurs qui devraient être mis à jour. Tout code basé
sur la physique ou sur le mouvement d'
objets en fonction de cela
devrait faire l'objet d'une mise à jour fixe. Parce que cela va essentiellement nous
permettre de dire, d'accord, si vous avez un
ordinateur plus rapide, bien sûr, vous devriez être capable de
réagir plus rapidement. Mais vous serez
alors capable de vous déplacer à la même vitesse que quelqu'
un
dont l'ordinateur est plus lent,
parce que c'est normal, en exagérant beaucoup trop l'effet que cela a Parce que je te promets que tu pourrais tout coder et
mettre à jour une mise à jour fixe. Vous ne pourriez probablement pas faire une énorme différence, mais c'est une très
bonne convention de codage pour faire ce que je fais ici. Cela étant dit, nous avons encore
quelques éléments à ajouter à notre script pour en faire un script de mouvement
légèrement meilleur. Nous avons déjà multiplié par la vitesse des
joueurs, évidemment. Mais la dernière chose que nous
allons ajouter est un saut, afin que nous puissions réellement commencer à bouger. Et je vais créer
un nouveau vide public, comme si je voulais un nouveau
bloc de code que je puisse appeler. À un moment donné,
je vais appeler ça sauter dans ce vide public. Je vais copier
ce code ici. Copiez-le et remettez-le là. Et je dois dire que
maintenant, lorsque je saute,
je veux que la vélocité de mon camping-car, soit la vélocité de mon joueur soit un nouveau vecteur deux. Vitesse Rb x. Cette fois, nous ne modifierons pas
du tout la vitesse x. Nous voulons que la vitesse x
reste la même lorsque nous sautons. Parce qu'il est évident que
nous ne voulons pas sauter en avant ou en arrière, nous voulons simplement sauter vers le haut, quelle que soit la vélocité x, la régler
sur ce qu'elle était. Et nous
ne voulons évidemment qu'il soit nul. Parce qu'alors, si vous vous
déplacez, vous essayez de sauter, vous
allez simplement sauter sur place,
conserver la vitesse à laquelle
vous vous déplacez. Mais nous voulons sauter vers le haut, nous allons
donc régler la vélocité
y sur cette valeur. Hauteur de saut, que nous pouvons
évidemment également modifier. Maintenant,
chaque fois que nous appelons ce vide,
nous allons modifier
notre vitesse et
nous allons dire, d'
accord, avancez comme
vous l'étiez avec x, mais sautez aussi loin que
cette valeur vous le permet. Avec la vélocité y, ce que
nous disons en fait, c'est changer votre vélocité
à une certaine valeur. Cela va donc vous faire tirer vers le haut, puis évidemment
, lorsque la gravité arrivera, vous allez
retomber sur le sol. Mais c'est ce que fait le script. Maintenant, cela nous
amène presque à la fin de notre script.
C'est incroyablement simple. Il y a trois lignes
de code à ce jour, et nous
avons en fait tout ce
dont nous avons besoin pour pouvoir nous déplacer
et accéder à Unity. Si je reviens ici, je vais réellement
changer
ces valeurs dès maintenant. Faisons en sorte que la hauteur
de saut soit environ dix. Faisons en sorte que le jeu atteigne une vitesse de cinq. Vous pouvez voir en fait, si je me
déplace et que je fais comme ça, je devrais être
capable de bouger et de sauter. Mais il y a une chose qui manque. Nous n'
appellerons jamais vraiment ce bloc de code. n'y a donc aucun moyen que je me
dise, d'accord, je veux appeler ce
code pour cela, nous allons devoir utiliser
une autre commande de saisie. Allons ici. Disons si c'est le cas, tant que cette condition est vraie, faites le code en dessous,
saisissez le point pour faire baisser la touche,
ouvrez les parenthèses, espace de
code clé ouvrez les parenthèses, ou ce que
vous voulez que ce soit En fait, je vais
utiliser le code clé parce que je préfère utiliser une
carte SD sauteuse plutôt que de l'espace, mais vous pouvez utiliser ce que
vous voulez. Sentez le jeu. Ensuite, nous allons mettre
un crochet ici et Visual Studio ou
tout autre outil que vous allez utiliser le remplira
automatiquement Vous voulez essentiellement un support C là-bas et un support co là-bas. Et cela va nous
dire quel code trouve dans cette instruction if,
tant que c'est vrai, tant que vous
appuyez sur la touche, ou tant que vous appuyez simplement sur
le WK. Exécutez ensuite ce code. Et tout ce que je vais
avoir envie de faire, c'est appeler ce jump void. J'espère donc que
tout cela a du sens. J'avance assez rapidement et il y a beaucoup
de concepts ici, surtout si vous
n'avez jamais codé auparavant, ce qui peut sembler un
peu intimidant Mais en gros, tout ce que
nous avons pour le moment, c'est que
nous avons
cet espace de stockage, nos
variables qui
stockent des éléments tels que les paramètres. Ensuite, nous définissons cette valeur en
fonction des mouvements
du joueur. Et nous disons que s'
ils appuient sur la touche W, appelez ce code ici Et ce code dit : «
OK, va dans cette direction ». Et dans ce code,
chaque image
indique de se déplacer dans
cette direction en fonction de ce que le joueur est en train de
faire avec son clavier. Donc, comme je l'ai dit, cela ne
semble pas très intuitif pour le
moment, mais j'espère que ce que nous essayons de faire a
un peu de sens. Et si je reviens à mon jeu, je pourrai sauter si ReTwk Mais il y a encore un
changement que je voudrais apporter Et je veux juste
pouvoir sauter tant que je suis au sol. Revenons donc ici
et nous allons ajouter une double esperluette
et dire que c'est Et cela signifie que ce n'
est que tant que nous sommes ancrés que nous pouvons
réellement exécuter ce code. Parce que je ne veux pas être capable de sauter au
milieu de tout ça. Je veux juste
pouvoir sauter du sol. Et nous allons ajouter
une autre condition qui nous permettra de
déterminer si
nous sommes ancrés ici. Nous allons dire « vide
» en cas de collision, entrez deux D. cas de collision, cela
signifie essentiellement qu' une fois que nous aurons heurté les collisionneurs que nous avons ajoutés
plus tôt dans la boîte, les collisionneurs
appelleront ce vide Tant que vous entrez
en collision, ils vont bien. Nous sommes entrés en collision, appelez ce vide. Cette collision stocke
ce que nous avons percuté. Nous allons dire qu'en
cas de collision, les objets
du jeu comparent-ils les tags pour ouvrir Princes et
nous allons taper du terrain. Ensuite, nous allons dire si le fondement
est égal à vrai. Nous allons créer un
code
très similaire pour sortir d' une collision Copiez ce code exactement, sauf s'il est
mis à la terre pour le forcer. Cela peut sembler beaucoup, cela peut sembler un peu confus surtout par rapport au reste
du script, mais c'est en fait très simple. Ce vide ici,
tout comme Unity appelle update et start,
est appelé Unity. Chaque fois que nous entrons en collision
avec quelque chose, le
moteur physique s'en charge, puis nous entrons en collision avec
cet objet et nous l'
enregistrons dans cette collision
variable Et en dessous, ce que
nous disons, c'est, d'accord, en
cas de collision, l'
objet avec lequel nous sommes entrés en collision ou plutôt le
collisionneur
avec lequel nous sommes entrés en collision Si l'objet auquel cela est
attaché possède un tag ground, je veux m'
assurer que j'ai défini cette variable ici
sur true, et cela me
permettra de sauter. Sinon, si nous
sortons d'une collision, si nous sortons d'un collisionneur, si le collisionneur d'où nous sommes
sortis s'appelle sol, je veux faire la même chose
sauf le régler La dernière chose
à faire avant de le tester, c'est de
retourner dans notre jeu, aller dans notre espace de stockage, de sélectionner
nos objets des trois étages, et nous voulons ajouter
cette étiquette ancrée. Cliquez sur Ajouter une étiquette, ici, cliquez sur le signe plus et
saisissez le sol. Non, je vais
retourner sur mes étages et je vais m' assurer qu'ils sont tous bien en
place. Ces balises sont essentiellement un
moyen d'
identifier certains objets
ou groupes d'objets. Tous ces objets font partie
du sol et je veux qu'ils soient
tous ancrés dans le sol. Cela me permet
d'écrire ce code ici qui m'indique quand
j'ai touché le sol ou non. C'est en fait
tout ce dont nous aurons besoin pour faire bouger nos jeux. Si nous revenons au mode
joueur, nous voyons ici que nous
les avons évidemment édités la dernière fois en mode jeu. Modifions-les donc en mode
normal, ça économise, je dois faire six, je vais faire en sorte que la hauteur de saut soit cinq. Je ne vais évidemment pas
vouloir changer l'un ou l'autre de ces éléments car ils sont
pris en charge dans mon code. Nous cliquons sur Player et cliquons, regardons ce qui se passe. Tout d'abord,
nous tombons, comme nous l'avons fait, et
nous atterrissons par terre. Si je fais défiler l'écran vers le bas, je peux
voir que mon message est ancré, c'est vrai, et c'est
exactement ce que je veux. Et si je clique sur le WK, il passe de faux à
vrai. Et je peux sauter. Si je clique sur le WK en plein
air, cela ne fonctionne pas. Donc, mon saut fonctionne
vraiment très bien. Et si je me déplace de gauche à droite, on voit que c'est un peu rapide. Je veux faire de ce mouvement
quatre, revenir à mon jeu. Et cela devrait en fait
être tout ce dont nous avons besoin pour un mouvement de base, une chute
de script Et je saute et je peux évidemment me déplacer
comme il le faut. Maintenant, cela peut sembler
un peu loufoque, et évidemment nous allons le modifier
au fur Mais c'est en quelque sorte la
base de notre jeu. Ce que je vais vraiment vouloir, fonction de la plateforme que je veux, c'est qu'elle atteigne une vitesse
légèrement plus rapide, un saut légèrement plus élevé. Et je
vais en fait vouloir changer cette
échelle de gravité à deux. Et il se peut que je doive
les modifier un peu plus haut. Il se peut que je doive en
faire huit ici. Nous pouvons voir à quoi cela ressemble. Ça a l'air un peu mieux. Je sais que ce mouvement a l'air un peu
saccadé, mais c'est un style assez rétro et facile à déplacer, mais au cas où vous
ne le voudriez pas vraiment, et je ne suis pas sûre que
je vais le garder Je l'ai juste ajouté à l'origine
parce que c'était assez simple. Il existe en fait
une solution très simple pour rendre les choses
différentes en ce moment. Vous pouvez voir que c'est un truc
assez saccadé. Si vous ne le souhaitez pas,
vous allez
passer à notre code et nous
allons simplement supprimer ce mot brut. Cela
va essentiellement dire à Unity, d'accord, ne l'arrondissez pas à 10. Faites-en une chose plus progressive en fonction de la durée pendant laquelle ils
détiennent la clé. Si nous le déplaçons, nous pouvons
voir cela en action un peu plus fluide
ici, en
fonction de la façon dont vous souhaitez vous déplacer. En fait, j'ai oublié de les
changer, alors allons-y,
en faisons 6,8 et changeons l'échelle de
clarté deux Si nous pouvons rejouer, nous pouvons constater que nos mouvements sont désormais légèrement plus fluides et cela leur donne une bien meilleure apparence. Maintenant, la raison pour laquelle j'ai
établi cette règle en premier parce que je pensais que c'était une façon plus simple d'
illustrer le concept. Mais il est généralement
préférable d'utiliser cet axe qui adoucit la chose car cela semble
un peu plus naturel Il se peut que je le change
à nouveau. Nous pouvons évidemment le modifier
au fur et à mesure du jeu J'espère que vous nous avez suivi et que vous avez
réussi à créer ce
script de mouvement très simple et que nous pourrons suivre. C'est maintenant la
fin de la vidéo. Mais il y a une dernière
chose que je voudrais ajouter tout en ajoutant du mouvement, et c'est un changement incroyablement
simple, tout ce que
nous voulons faire, c'est aller ici et créer un nouveau matériau
physique. Nous allons découvrir
ici deux matériaux physiques, deux D, que nous allons
appeler player. Et nous allons régler
le frottement à zéro. Cela
va essentiellement nous permettre de ne pas
rester coincés dans les murs. Je ne sais pas si vous l'avez
vu la dernière fois, nous allons l'ajouter
à notre box collider Maintenant, si nous sautons contre le mur, nous
n'allons pas nous y tenir. Parce que ce qui s'est passé
auparavant, c'est que si nous atterrissions contre le mur
et que
nous nous
y accrochions, nous y restons, mais
maintenant nous revenons à travers. C'
est en fait la fin. Je sais que cette vidéo est
assez longue et qu'il s'y passait pas mal de
choses, mais c'était le
tout premier script. Il est donc évident qu'il s'agit d'un
grand nombre de nouveaux concepts à la fois. J'espère donc que vous m'
avez suivi et que vous avez pu créer ce script de mouvement
comme je l'ai fait. C'est incroyablement
simple, comme je l'ai dit. Et j'ai changé d'
accès à ce jeu maintenant, mais je pourrais le modifier
au fur mais je pourrais le modifier
au fur et à mesure parce que je ne
sais pas à quel point je l'aime,
mais je vais voir en gros que c' est le jeu pour le moment et que c'est tout ce dont
nous avons besoin Donc, si vous m'
avez
suivi, votre mouvement est
exactement comme le mien. Génial. Et je vais voir
dans la prochaine vidéo où nous allons commencer
à ajouter de
plus en plus de concepts pour faire notre jeu une plateforme encore plus
impressionnante. Mais si tu en es arrivé là où je suis pour le moment, c'est génial.
5. 4. Introduction des préfabriqués: Bonjour, et bon
retour sur Unity. Dans le dernier épisode, nous avons fait pas mal de choses. Nous avons ajouté notre lecteur, nous avons
ajouté notre script de mouvement. Eh bien, nous avons créé notre lecteur de
manière à ce que nous
puissions réellement nous déplacer et nous avons ajouté
notre première ligne de code, l'intégralité de notre script. Et puis nous avons également créé ce matériel pour joueurs
dès la fin. J'espère que vous avez pu
suivre tout cela et arriver au stade où
je suis dans mon jeu. Si ce n'est
pas le cas, et
que le vôtre semble un peu différent, je vous recommande simplement d'y
retourner et de le revoir peut-être
une ou deux fois, juste pour que vous puissiez
suivre et vous assurer que vous avez tout
comme moi en ce moment Évidemment, comme je l'ai
dit, mon script sera joint
à chaque vidéo. Et presque tous les
fichiers que je crée parallèlement à
ce cours seront joints aux vidéos
respectives. Vous pouvez donc
le télécharger. Si le vôtre ne fonctionne pas, voyez
peut-être en quoi votre code est différent mien ou ce que vous
faites différemment. Et évidemment, l'utilisation de
mes fichiers devrait le
faire fonctionner parfaitement. Alors allez-y et ne vous
laissez pas trop intimider par
le rythme des choses Et vous pourriez revoir les choses
et utiliser les fichiers, et devriez être en mesure de
suivre et de faire que tout
fonctionne en un rien de temps Ne vous découragez donc pas. Le développement de jeux vidéo est difficile, mais si vous avez tout compris comme
moi maintenant, excellent travail. Parce que nous avons
en fait fait
fait assez long, le dernier épisode. Si vous écrivez à la hauteur de
ce que je suis, alors c'est génial. Maintenant, avant de
commencer cet épisode, qui sera
entièrement consacré aux préfabriqués, nous allons
d'abord commencer par
réorganiser un peu ce
dossier de ressources Allons-y
et faisons un clic droit. Créons un nouveau dossier. Et je vais appeler
cela « divers parce qu'il y a toujours
des fichiers aléatoires dans le projet
pour
lesquels vous n'avez pas vraiment besoin d'un dossier
dédié , comme ce matériel de physique. Nous n'allons pas en faire
un tas. Je vais juste le mettre
dans mon dossier Misk. Et tout ce que je
trouverai dans mon jeu, je le mettrai dans
ce dossier Misk s'il ne rentre dans aucun
des autres dossiers Cela étant dit, nous
allons également avoir besoin de
créer un nouveau
dossier ici, et nous allons l'
appeler prefabs Nous allons
expliquer exactement ce qu' est
un préfabriqué et comment nous pouvons le
fabriquer en une minute. Mais pour l'instant, créez simplement le
dossier, car vous
voudrez disposer d'un
espace de stockage pour vos préfabriqués. Maintenant, qu'est-ce qu'un préfabriqué exactement ? Nous avons mentionné
que les objets nous avons ici sont des objets. Maintenant, ce sont les
éléments de base de notre jeu
auxquels nous allons attribuer une logique
sous forme de composants. Et cela va nous permettre de
créer notre jeu à partir de zéro. Mais nous ne pouvons créer ces objets que lorsque nous
développons dans Unity pour le
moment. Par exemple, si je voulais
créer un nouvel ennemi, je devrais me rendre
ici et créer un nouvel objet comme celui-ci
dans le sprite de l'objet,
peut-être obtenir un triangle, changer de couleur, ajouter de
la logique à partir de là Mais dans le
développement de jeux, en général, vous voulez être capable de
créer des objets au moment de l'exécution. Cela signifie que pendant que
le jeu est en cours, pendant que le joueur joue
réellement, vous voulez être capable de
créer et de détruire des objets. Et pour cela, nous
allons utiliser des préfabriqués. Maintenant, si la raison pour
laquelle nous devons le faire est un peu
confuse au début ,
laissez-moi vous donner un exemple. Supposons que nous ayons un joueur et qu'il doive être capable
de tirer sur des objets. Lorsque vous photographiez quelque chose, vous voulez
en fait créer
un objet en forme de puce. Vous voulez créer
un nouvel objet qui tire avec votre arme,
traverse l'écran et fait certaines choses lorsqu'
il touche un ennemi. Maintenant, le seul moyen, ou le moyen le plus simple, de le
faire est d'utiliser des préfabriqués. Parce qu'
en gros, cela vous permettra de créer un objet au moment de l'exécution, votre puce, de le faire exister pendant toute sa durée,
puis de le détruire. Lorsque vous n'en avez plus besoin
, par exemple lorsqu'il touche un ennemi ou un mur, vous pouvez détruire cet objet. Il n'existe donc que pendant une
durée de jeu limitée. Et je vais vous expliquer
exactement comment ils fonctionnent, comment vous pouvez créer
ces préfabriqués
et comment ils peuvent être
utilisés pour
intégrer des objets dans vos jeux en une minute Mais pour le moment, tout
ce que vous devez savoir, c'est que les préfabriqués sont utilisés
pour fabriquer des objets Alors, comment utilisons-nous exactement les
préfabriqués pour fabriquer des objets ? Eh bien, nous commençons comme nous le
ferions pour n'importe quelle autre chose. Nous passons ici à la
hiérarchie et nous
cliquons avec le bouton droit sur Créer pour l'objet. Et je vais fabriquer,
le premier préfabriqué que je vais fabriquer est un pic L'ennemi a donc quelque chose dans
lequel il peut tomber et mourir dans le triangle de
sprites de l'objet Juste pour créer le
premier type d'ennemi du jeu, je vais l'appeler Spike. Allez-y,
réduisez-le un peu. Disons 0,8 sur le x et le y, et je vais
changer sa couleur rouge
pour que nous sachions que c'est un ennemi. Nous avons donc maintenant notre premier ennemi. De toute évidence, c'est
loin d'être chose faite. Il y a quelques autres
choses que nous devons ajouter. abord, la première chose que je
vais faire est changer cette étiquette,
comme je l'ai fait avec le sol. Je vais cliquer sur Ajouter un tag. Et je vais en
faire une étiquette ennemie. Et nous n'allons pas
l'utiliser tout de suite, mais cela nous sera utile plus tard. Assurez-vous donc de ne pas
abandonner cette étape pour le moment. La prochaine chose que je vais
faire est ajouter un type d'alida Si je fais une recherche sur Alida, tu peux voir que j'ai tout un
tas de Kaliders Mais celui qui correspond le mieux à
celui-ci est un polygone Alider, qui
ressemble évidemment à quatre dans un triangle Vous pouvez voir si vous faites défiler l'écran vers le bas, il existe à
peu près des collideurs pour tous les types d'objets que vous
pourriez avoir Évitez évidemment ceux
qui ne sont pas à deux D, comme un collisionneur
de sphères, un collisionneur de boîtes ou un collisionneur à capsules, car
ce sont les deux D que nous allons utiliser Mais ce collisionneur polygonal n'
a qu' une version en deux D,
donc ne vous inquiétez pas, il n'y a pas de collision triangulaire
ou pyramidale en trois D, ne pouvez
donc pas vraiment vous Mais ce que nous avons fait maintenant, c'est ajouter notre collisionneur polygonal Et en fait, avant de l'
oublier, je
veux aussi en faire un déclencheur maintenant. Ce n'est pas très important le
moment, car
nous allons simplement ajouter notre
logique ennemie et le fait que vous pouvez mourir si
vous les touchez plus tard. Mais ce ne sont que
des étapes que vous devez suivre
maintenant pour
configurer correctement votre ennemi. Nous voulons donc le nommer
, nous le nommons. Ce n'est pas si important,
mais c'est juste utile. Nous voulons
nous assurer d'avoir défini le tag. Nous voulons ajouter un
collisionneur, et nous voulons en faire un collisionneur à
gâchette Vous pouvez donc voir maintenant que
si nous cliquons sur Play, il est évident que rien ne se passera lorsque nous entrerons là-dedans. Mais vous devriez être en mesure de voir que nous
sommes réellement capables
de le traverser, et c'est en quelque sorte
ce que
nous voulons parce que nous ne voulons pas que cet objet puisse exister dans l'espace, plutôt qu'il soit
un signal indiquant que lorsque
je le touche, je peux subir des
dégâts ou quelque chose comme ça. Vous ne voulez évidemment pas
vraiment ne pas
pouvoir le dépasser. Parce que si vous
courez et que vous heurtez un objet, vous voulez être capable de le
traverser et de subir des dégâts, mais pas de vous arrêter et de ne pas
pouvoir le traverser. C'est donc toute la
configuration que nous devons faire pour notre objet pour le
moment. Mais assurez-vous d'avoir
suivi le chemin, d' avoir ajouté le polygone collider et de l'avoir
remplacé par le tag ennemi Maintenant, c'est en fait ce que
nous allons utiliser pour fabriquer notre premier préfabriqué.
Alors, double-cliquons dessus. Je vais l'emmener
ici. Cliquez sur l'objet. Je vais le faire glisser vers le bas
dans mon dossier Assets. Et ce que cela
va faire, c'
est créer ce nouveau fichier s'
appellera Spike Prefab Et vous pouvez voir ici
qu'il passe en fait au bleu. Maintenant, ce qu'est ce préfabriqué, vous pouvez le considérer
comme un modèle d'objet Donc, ce que je fais
ici, c'est dire, d'accord, j'ai cet objet que
je veux créer comme un modèle ou une
sorte de tampon. Je peux donc faire des copies de cet objet et
les intégrer à mon jeu. C'est en quelque sorte le modèle de
l'objet que je suis en train de créer. Je peux donc entrer
du code et je peux dire, accord, apparaître dans un pic Et il sait qu'il peut apparaître dans cet objet spécifique avec
ce sprite et ce polygone spécifiques et à
peu près toutes les autres qualités que je viens d'ajouter. Il sait que c'est ce à quoi je fais référence lorsque je
veux apparaître Je vais donc procéder à la
suppression de cette option supplémentaire pour le moment. Et je
vais également continuer
et supprimer ceci
de ma scène maintenant. Ne vous inquiétez pas, car
cela ne permet pas vraiment de se débarrasser de la pointe. Nous pouvons voir qu'il est toujours
là dans les préfabriqués, et si je double-clique dessus, je
peux modifier le préfabriqué lui-même Je suis donc en train de modifier le
modèle réel du préfabriqué. Si je fais glisser un préfabriqué, cela instancie cet objet
ou crée cet objet C'est ce que l'on
appelle créer une instance de ce préfabriqué. Si je change des choses sur ce
préfabriqué ici dans le jeu, assurez-vous
qu'il ne remplace pas réellement le préfabriqué Cela change cette
instance spécifique d'un préfabriqué. Donc je l'ai déjà en quelque sorte créé. Je peux faire ce que je
veux avec celui-ci. Mais cela ne changera rien
au fait que lorsque j'en créerai un autre, il sera exactement pareil Si je veux changer
le tampon ou le modèle, je
dois le faire ici. Parce que si je le fais, par
exemple, orange, vous pouvez voir maintenant qu'à
chaque fois que j' apparais dans ces préfabriqués,
ils sont Notez également que ce préfabriqué, que nous n'avons pas modifié, est
lié au fichier d'origine Dès que nous y
apportons une modification,
le lien change car
j'ai changé cette couleur. Si je passe à nouveau au rouge, nous pouvons voir que le vert et le jaune resteront verts et jaunes. Mais ceux que je n'ai pas
changés sont rouges. Mais d'autres quantités que je n'ai pas modifiées
seront efficaces. Par exemple, si
je fais une échelle de 0,85 au lieu de 85,
augmentez-la légèrement. Nous pouvons voir que tous ces préfabriqués devenus beaucoup plus grands, mais pas celui-ci, car nous l'avions
déjà changé C'était le 214-41-2616 Et si je reviens ici et que je
le ramène à huit, nous pouvons voir qu'il reste au 214-41-2616 Parce que
, en gros, dès que vous modifiez une certaine
qualité de ce préfabriqué, c'est son propre préfabriqué si je reviens ici et que je
le ramène à huit,
nous pouvons voir qu'il reste au
214-41-2616 Parce que
, en gros, dès que vous modifiez une certaine
qualité de ce préfabriqué,
c'est son propre préfabriqué. Ainsi, vous ne vous laisserez pas
emporter par ce préfabriqué original
indiqué par cette petite ligne bleue ici Ce sont les choses que
j'ai modifiées dans le préfabriqué. C'est juste quelque chose que
vous devez noter, ce n'est pas très important. Mais notez simplement que si vous voulez
changer votre préfabriqué actuel, vous devez le faire ici Je vais donc
procéder à la
suppression de tous ces
pics pour le moment Et je vais commencer
avant commencer à fabriquer d'
autres préfabriqués. Laissez-moi en faire un autre plus simple, créer deux objets et
je vais faire un cercle. Et ce sera un autre ennemi plus tard, ce
sera une balle à pointes. Vous verrez quand nous ajouterons des pointes sprites et tout le reste, mais changeons également
cela en rouge Ajoutons un collisionneur circulaire. Et assurons-nous qu'
il a le tag « ennemi ». Assurez-vous que c'est un déclencheur,
c'est tout ce dont nous avons besoin. Nous pouvons également le
réduire légèrement. C'est en fait
tout ce
dont nous avons besoin pour fabriquer nos nouveaux préfabriqués. Faisons-le donc glisser à nouveau vers le bas. Nous pouvons voir maintenant que nous
avons nos deux préfabriqués. Je vais le supprimer
. En fait, je vais le renommer
en Spike Ball Maintenant, si nous
double-cliquons, nous pouvons voir que
nous avons notre pointe
et notre boule à pointes Ce sont tous les deux des ennemis
et ils sont tous les deux rouges. Et ils sont tous deux équipés de colliders , qui sont des déclencheurs Ils ne seront donc pas autant affectés
par l'espace, mais ils informeront
le moteur
de jeu , d'accord, j'ai trouvé quelque chose. Il est important de
noter que d'autres collisionneurs
le font également. C'est juste qu'ils ont également la fonctionnalité
supplémentaire d'
exister également en tant qu'objets dans l'espace-temps , ce qui peut influencer la physique. Revenons à ces préfabriqués
et assurons-nous qu' ils sont tous à peu près
configurés exactement comme nous le
souhaitons. Parce que maintenant, ce que nous
allons faire, c'est créer un nouveau préfabriqué, qui
sera notre vignette de carte La raison pour laquelle nous créons ces préfabriqués est
que nous allons
réellement commencer à créer
notre script de génération de cartes heure actuelle, nous avons
un joueur et nous
avons trois blocs d'
où il peut sauter. Mais c'est un peu ça. Nous
n'avons pas un jeu infini. Nous n'
avons rien vers quoi déménager. Nous avons juste trois choses, et c'est en quelque sorte tout
le jeu. Donc, même si je
les ai surmontés de toutes sortes d' obstacles
intéressants,
il n'y en a que trois. Et nous voulons évidemment que
le jeu continue et
qu'
il y en ait le plus possible. Pour ce faire, nous
allons devoir créer un préfabriqué avec cet objet de sol et y mettre
ce que nous voulons Ensuite, nous allons
vouloir écrire du code qui va
générer cela Maintenant, je vais
commencer à le faire, mais avant de le faire, permettez-moi de
dire rapidement un avertissement. La façon dont nous allons
procéder est de
créer tout un tas de carreaux de sol
différents. Considérez-les comme des
plateformes dans le jeu, et vous pouvez en créer
autant que vous le souhaitez. Nous y reviendrons lorsque
nous le coderons plus tard. Mais en gros, ce sera la liste complète des
tuiles possibles dans lesquelles le jeu peut apparaître Si vous n'en créez qu'un
avec un seul pic, votre jeu ne sera qu'un tas de choses avec tout un
tas de pointes.
C'est ça. Mais si nous en fabriquons une avec une
pointe, une avec deux pointes, peut-être une avec trois pointes, une avec une pointe
et une boule à pointes,
une avec deux boules à pointes Plus vous en
ajouterez, plus votre
jeu sera varié. Et vous verrez qu'au fur et à mesure que nous
ajoutons plus d'ennemis et de choses plus excitantes, nous pouvons créer des plateformes plus
variées et rendre le jeu plus
intéressant. Mais je prends de l'avance sur moi-même. Je vais juste
commencer par en créer un de base et vous
montrer comment je peux l'intégrer pour créer
un plancher préfabriqué Je vais faire exactement la
même chose qu'avant. Je vais l'agrandir
légèrement, je pense que c'est à
peu près une
bonne taille pour une plateforme. Je vais le faire glisser vers le bas et maintenant nous pouvons voir que j'ai un
nouveau préfabriqué appelé Floor Je vais lui donner le nom
de Floor Tile One. Et ce sera
mon carrelage de sol de base. Si je double-clique dessus maintenant, vous pouvez voir que je peux
y accéder dans mon éditeur préfabriqué et je peux personnaliser exactement
ce que je veux. Comme je l'ai dit, ce
sont les tuiles que nous allons faire
apparaître dans notre jeu en ce moment C'est juste une tuile de base,
il n'y
a pas d'ennemis, pas d'obstacles,
c'est juste une tuile. Nous allons donc le rendre
un peu plus intéressant. Je vais commencer par
ajouter une pointe. Permettez-moi de faire glisser mon préfixe
jusqu'à ce préfabricant. Maintenant que nous l'avons ajouté, nous pouvons voir que c'est
ce qu'on appelle
un objet enfant. Il est lié à l'objet
d'origine et si je déplace l'
objet d'origine, il se déplace avec lui. Nous l'avons vu plus tôt
lorsque nous avons enregistré tous nos défauts dans
l'objet parent de stockage. Vous pouvez le considérer
comme le plus grand objet ou comme l'
objet du dossier ici. C'est ce qu'on appelle l'objet parent. Et nous ajoutons une pointe à
l'intérieur de notre objet parent. Je vais mettre une
pointe là-bas. C'est plutôt bien centré. Peu importe que cela soit
trop beau, car nous allons
évidemment ajouter sprites et tout le
reste plus tard Mais c'est un espace réservé,
mais je vais le copier, et je vais en mettre un
autre là-bas Déplacez-le légèrement vers le bas. C'est à peu près
notre premier objet fini et créé. De toute évidence, nous n'avons créé aucun effet mortel ni
aucun système de santé. Ça ne va pas faire grand-chose maintenant. Mais si nous revenons à notre jeu
et que nous voyons notre carreau de sol, nous pouvons voir qu'il
est réellement lié à notre objet et a créé exactement ce que nous voulions lorsque nous
jouions au jeu. Nous allons écrire un script
qui dira, d'accord, mets-en un là, mets-en un
là, mets-en un là. Nous pouvons voir que nous avons une plateforme, un jeu qui commence à se former. Si nous donnons des coups de pied, nous pouvons nous déplacer et nous pouvons faire semblant de
jouer le jeu. Nous pouvons sauter par-dessus cette plateforme
et sauter par-dessus celle-ci. De toute évidence, nous y serions
morts. Mais tu comprends l'essentiel. Notre jeu ne sera
pas si difficile, ne vous inquiétez pas. Mais c'est ainsi que
nous allons utiliser
ces objets pour jouer à notre jeu et créer
notre carte intéressante. Donc, ce que je vais
faire avec le reste de cette vidéo, c'est simplement créer
quelques préfabriqués supplémentaires. Vous n'êtes pas obligée de suivre
exactement ce que je fais, vous pouvez les créer à
peu près comme vous le souhaitez. Je recommande de suivre
mon pic et ma balle en tant qu'ennemis, car nous ajouterons des
sprites plus tard Et si vous voulez
utiliser mes sprites, je les ai déjà
créés Donc, si vous
créez un autre ennemi, vous
devrez soit créer votre propre sprite soit élaborer
un autre plan Mais si tu veux créer le jeu exactement
comme je le fais, tenir à ces
deux-là juste pour le moment. Évidemment, une fois que vous aurez
avancé dans le cours, vous pourrez peut-être commencer à ajouter vos propres ennemis et à créer
vos propres tuiles. Mais surtout si c'est la
première fois que vous utilisez Unity, suivez ces deux
objets autant que possible. Mais cela étant dit, vous pouvez créer les tuiles que vous voulez, donc vous n'avez pas à en faire
deux, vous pouvez en créer trois. Évidemment,
rendez-les toutes possibles, car vous voulez que quelque chose soit impossible dans
votre jeu. Mais vous pouvez faire
preuve de créativité et créer différentes tuiles
autant que vous le souhaitez. Vous pouvez également créer autant de tuiles
que vous le souhaitez. Plus vous êtes en fait, comme je l'ai
dit, mieux c'est. Parce que cela signifie que le jeu
va être plus varié. De toute évidence, vous
voulez avoir plus de vignettes
, que vous pouvez éventuellement
avoir pour commencer en les
copiant , en les collant. Et je vais appeler
ce carreau de sol deux. En fait, je vais le
faire un tas de fois parce que je vais commencer par créer
huit tuiles ici. J'en ai huit, en
fait dix en ce moment. Ils ont des noms bizarres et ils sont évidemment
tous pareils. Mais je vais les modifier maintenant. J'ai donc du carrelage
un, du carrelage deux. Je vais en faire trois carreaux de sol. Ceci, bien sûr, le carrelage 4. Et ainsi de suite, jusqu'
au carrelage 10. Tu vois, maintenant j'ai mes
dix carreaux de sol. Maintenant, pendant que je fais
ça, je vais rendre mon jeu
encore plus ordonné. Je vais cliquer avec le bouton droit de la souris et créer un nouveau dossier. Je vais appeler
celui-ci des carreaux de sol. En fait, je vais
les mettre tous ici, les
faire glisser, et je vais
double-cliquer sur chacun d'eux. Et puis, quand je
veux les modifier,
évidemment, si je
veux ajouter des ennemis, dois aller tout de suite, les sauvegarder dans les
préfabriqués et les ajouter comme ça Mais cela signifie que tous mes carreaux
de sol sont entreposés ici afin que je puisse les
suivre et savoir
où ils se trouvent tous. Je vais donc
garder mon carrelage tel que je
l'avais. Je pense
que c'est plutôt bien. Mes deux carreaux de sol, je vais en
faire un assez simple, il n'y aura qu'un
seul piquet au milieu. Ensuite, sur le carrelage 3, je vais avoir un double
piquet vers le bout. Comme je l'ai dit, tu peux en faire
ce que tu veux. Il n'est pas nécessaire que ce soit
exactement ce que je fais. Permettez-moi de le réduire légèrement, mais ce sont les trois premiers. Je vais fabriquer du
carrelage là-bas, ajouter le double piquet,
puis le carrelage quatre, je vais commencer à ajouter
quelque chose de plus intéressant. Je vais donc emporter
celui-ci et ajouter une boule à
pointes là-bas. Je trouve que ça a l'air plutôt cool. C'est pour le carrelage.
Étage. Carrelage 5. Je pense que je vais avoir un double pic au début. Alors ajoutons peut-être une
boule à pointes ici vers la fin. Comme je l'ai dit, tu peux vraiment faire ce que tu veux. Vous pouvez
suivre si vous le souhaitez, mais vous n'avez vraiment pas besoin
d'en carreler huit. Je pense que je vais juste avoir
des Spike Balls. Laisse-moi m'en
débarrasser. Je vais prendre une
balle à pointes par ici. Peut-être un là-bas, donc tu dois sauter par-dessus. Nous allons modifier
le script de mouvement au
fur et à mesure du jeu
pour nous assurer que cela soit
toujours possible, car il se peut qu'il ne
s'agisse pas d'un saut possible par rapport à l'état
actuel du jeu Gardez simplement à l'esprit que
vous maintenez toujours vos scripts aussi ajustables que possible, car vous
pouvez les modifier. Heureusement, avec notre
script, nous
avons évidemment ajouté ces
variables ici. Hauteur de saut et vitesses de jeu. Nous pouvons modifier ce que nous voulons dans le script pour le moment, mais nous ajouterons peut-être
d'autres éléments plus tard N'oubliez pas
que la clé d' un bon développement de
jeu, au
moins l'une d'entre elles, est de toujours vous
assurer que vous adaptez
votre jeu au fur et à mesure. Ne vous laissez pas prendre à essayer de vous
en tenir à quelque chose qui ne
fonctionne pas avant que je ne
recommence à créer d'autres pneus. Je vais en fait
supprimer ces trois préfabriqués. Et je vais aussi
changer ce préfabriqué. Ce que je vais faire,
c'est faire ce que l'on appelle
déballer un préfabriqué,
qui raconte en gros
le jeu, qui raconte en gros
le jeu Je ne veux plus vraiment que
ce soit un préfabriqué. Je veux que ce soit son propre objet. Encore une fois, je vais cliquer avec le bouton droit sur préfabriqué et
sélectionner complètement décompressé Ensuite, je vais aller de l'avant et me débarrasser de ces pointes Maintenant, j'ai retrouvé mon objet
d'origine. En gros, ce que je
viens de dire à Unity, c'est que
même si j'ai entièrement basé mon
préfabriqué sur cet objet, je veux en faire
son objet d'origine Encore une fois, je veux rompre le lien entre cela
et le préfabriqué J'ai toujours tous mes préfabriqués, mais maintenant ce n'est plus qu'un objet.
Encore une fois, ce n'est pas lié. Et vous pouvez voir qu'il est passé
du bleu à la couleur normale. Encore une fois, revenons ici, fabriquons encore quelques carreaux de sol. Je pense que c'est bien d'en avoir
peut-être un autre avec un double. Déplacez-le légèrement vers le bas, puis nous pourrons avoir une
boule à pointes juste au-dessus. Ça va être assez
difficile là-bas. C'est un peu similaire à 45, mais je pense que c'est
peut-être légèrement différent. Alors,
déplaçons-le là. Vous pouvez le déplacer, il le faut, il est un peu plus haut, donc
c'est assez facile, je suppose. Puis carreau de sol huit. Je vais juste
faire des choses assez simples. Encore une fois, celui-ci ne
sera en fait qu' une
boule à pointes au milieu. Nous
les modifierons évidemment au fur et à mesure que nous
ajouterons choses, car ce n'est pas
très intéressant en soi. Mais une fois que nous aurons joué au jeu, nous devrons évidemment passer devant pour suivre le rythme
de la caméra. Même quelque chose comme
ça peut être un peu plus intéressant qu'il n'
y paraît au premier abord. Quoi qu'il en soit,
passons au carrelage neuf. Je vais avoir un spipal
au début parce que je ne
pense pas l'avoir encore fait. Nous devons passer
en dessous, sauter
par-dessus , puis recouvrir le sol de dix. Faisons trois pointes. Ce sont toutes mes tuiles pour le moment. J'en ai quatre avec des
boules à pointes, sans balles à pointes, et j'en ai six
avec des balles à pointes et elles ont toutes à
peu près des pointes , sauf le
carrelage huit Ce seront les
éléments de base de notre carte. Et je le dis littéralement
parce que c'est en fait
ce que nous
allons créer lorsque nous écrirons
notre script de génération de cartes Maintenant, si vous suivez cette leçon et que vous
avez un jeu de vignettes, c'est tout
ce que vous devez faire. Ce que nous avons fait, c'est que nous avons créé nos préfabriqués ennemis ici Et maintenant, nous avons également créé un tas
de préfabriqués à carreaux. Au cours de la prochaine leçon, nous
allons écrire un
script qui dira, d'
accord, apparaissez dans ces préfabriqués manière aléatoire afin que nous puissions commencer à
générer Ensuite, une fois
cela fait, nous
allons ajouter un script
Camera Pan. Ou peut-être que nous pourrions le faire
d'abord. Assurez-vous donc que la
caméra est continuellement panoramique et que le joueur doit
suivre le rythme de la caméra Et cela
va essentiellement s'ajouter à notre jeu. Vous devez donc constamment
vous déplacer pour garder toute
la caméra et éviter
ces obstacles Tout cela sera présenté
dans la prochaine vidéo. Mais si vous
suivez tout et que vous avez vos dix vignettes, c'est génial et
nous allons commencer à les
utiliser dans la
prochaine vidéo. Merci.
6. 5. Générer notre carte: Bonjour, et bon
retour sur Unity. Dans la dernière vidéo, nous avons
évidemment créé tous
nos préfabriqués et tous nos différents objets dans
lesquels nous allons
apparaître lorsque nous
commencerons à créer Mais maintenant, nous devons réellement
écrire le code qui indiquera à Unity d'
apparaître dans nos objets Cela peut sembler une tâche
fastidieuse et compliquée, mais elle est en réalité beaucoup
plus simple que vous ne le pensez Et nous allons le scinder
en deux parties. La première chose que nous
allons faire est écrire un script
qui indique essentiellement à
la caméra de
se déplacer constamment sur l'écran afin que le joueur puisse suivre quelque chose
. Ensuite, nous
allons écrire un
script qui
détermine essentiellement que nous voulons générer des objets en fonction de la
position de la caméra En d'autres termes, lorsque les caméras ici font apparaître quelque chose là-bas, et lorsque les caméras de
là-bas font apparaître quelque chose
là-bas, ces objets apparaissent constamment au fur et à mesure
que nous
nous déplaçons Avant de prendre de l'avance, commençons par
créer ce script Camera Pan. Ouvrons les
scripts, notre dossier. Faisons un clic droit pour créer un nouveau script C sharp
et nous allons l'appeler Camera Move. Maintenant, ce sera en fait un script incroyablement simple. Il s'agira de deux lignes de code, voire d'une seule. Ou nous allons d'abord
nous débarrasser
de ces deux
vides et utiliser une mise à jour fixe parce que
nous allons jour fixe parce simplement avoir des résultats basés sur la
physique, ou plutôt des calculs
et des processus
basés sur la physique ici Et nous n'allons utiliser aucune entrée ou quoi que ce soit
pour ce script. Tout ce que nous allons avoir,
c'est ce vide ici, qui va évidemment parcourir tous
les intervalles fixes d'une image. Et nous allons
créer deux variables. Le premier d'entre eux
sera
un corps de crête public en deux D et
nous l'appellerons RB Vous n'avez pas à vous soucier de trouver des noms différents tant qu'ils sont dans des scripts
différents, vous pouvez utiliser les mêmes noms. Évidemment, vous ne pouvez pas nommer deux
choses, R B dans un seul script, mais nous sommes autorisés à utiliser le
même nom R B ici, même si nous
parlons en fait d'autre chose. Quoi qu'il en soit, la deuxième
chose que nous allons avoir est un char public, que nous allons
appeler vitesse de caméra. Tout le code dont nous avons
besoin ici est en fait très
similaire au code que nous avons écrit pour le mouvement des
joueurs. Nous allons devenir Rigid Body
a perdu son nouveau vecteur 2. Nous allons le régler à la vitesse de la
caméra et à zéro. Nous n'avons pas vraiment besoin de le mettre
à zéro, nous pouvons également le
régler sur le RB do losityty, mais comme nous ne
voulons généralement pas que notre caméra se
déplace de haut en bas, cela ne fait pas vraiment de
différence Allons-y et fixons
ce zéro, peu importe. Vous pouvez également le
régler sur blosityy,
car vous verrez que lorsque
nous installerons notre boîtier rigide, cela ne fera vraiment aucune
différence, car
nous
allons essentiellement faire différence, car
nous
allons essentiellement en sorte que la caméra ne soit
pas affectée par la J'y reviendrai dans une minute. Mais c'est en fait
tout le code dont nous avons besoin pour avoir une caméra capable se déplacer au fur
et à mesure que nous compliquons notre jeu. Nous pourrions régler ce problème et peut-être accélérer la caméra au fil du temps. Dans ce cas, nous
allons avoir une variable qui
augmente avec la distance. Et puis tous les quelques mètres, ou tous les quelques centaines de
mètres ou peu importe, nous allons augmenter
la vitesse de la caméra. Mais pour le moment, cela
fera très bien l'affaire. Retournons dans Unity et passons à notre
appareil photo principal. Nous allons y faire glisser notre script de
mouvement de caméra. Nous avons maintenant notre boîtier rigide
et la vitesse de notre caméra, mais nous n'avons pas encore ajouté boîtier
rigide à cette caméra principale. Si nous essayons d'exécuter le script, cela va
nous donner une erreur disant : « Je ne sais pas ce qu'est
ce corps rigide ». Vous essayez essentiellement d'y
faire référence en disant, oh, donnez-nous de la vélocité,
mais comme je n'ai
rien à mais comme je n'ai
rien voir, je ne peux pas vraiment le faire. Nous allons devoir ajouter un boîtier rigide
à notre appareil photo. Ajoutons composant, un boîtier rigide,
deux D, puis cliquez sur Play. Vous vous demandez peut-être, eh bien, est-ce que cela ne va pas faire tomber
l'appareil photo ? Et tu aurais raison à 100 %. En fait, si nous voyons maintenant
que notre appareil photo
va réellement tomber en panne. On dirait que
tout va vers le haut, mais la caméra est
en fait en train de tomber. Vous pouvez le voir s'installer là-bas, qui n'est
pas vraiment ce que nous voulons, mais c'est en fait une solution
très facile à corriger. Parce que nous n'
allons pas utiliser le même type de corps rigide
que celui utilisé pour notre joueur. Notre joueur utilise ce que l'
on appelle un corps rigide dynamique. s'agit essentiellement
d'un corps Ridgid, qui est affecté par les
forces et la gravité et par tout
un tas de choses
extérieures à Unity Il existe un autre
type de corps rigide, appelé corps rigide
cinématique, qui n'est influencé
que par les forces C'est comme le corps rigide normal et
automatisé, dans où il fait
les choses pour vous Il tombe dans l'espace libre. Il sait quand s'
arrêter bouger et glisser. Vous pouvez évidemment
y ajouter plus de mouvement comme
nous l'avons fait
ici, comme nous l'avons fait, d'accord. Lorsque vous cliquez sur ce bouton,
déplacez-vous dans cette direction. Mais il fait évidemment tout un tas de choses pour nous aussi, particulier la chute et le mouvement avant
d'ajouter du code. Maintenant, si je passe à mon appareil photo principal, je ne veux pas ça pour ça. Je veux que cette caméra ne
bouge que lorsque je lui dis de bouger. Plus précisément, comme dans un script, nous pouvons voir ici la variable R B du
mouvement de la caméra n'a pas été assignée, c'est l'erreur qui est
apparue ici et nous l'avons obtenue à
chaque image, et c' est
ce que j'ai
dit qu'il arriverait Pour résoudre ce problème, nous
allons transformer ce type de corps
en ce que l'
on appelle une crête cinématique le faisons
, le corps peut voir que
toutes ces variables, regroupées
sur une échelle de gravité de traînée, disparaissent
toutes instantanément. Parce qu'un corps rigide cinématique n'
est pas affecté par
la gravité ou quoi que ce soit d'autre. Il ne bouge que lorsque
je lui dis de bouger. Et nous allons aller de l'avant
et intégrer cela dans mon script. Maintenant, j'ai un
corps rigide qui ressemble un peu un corps rigide entièrement manuel, donc je dois lui dire, d'accord, je veux que sa vélocité soit la
même, comme je l'ai fait
ici, d'accord ? Réglez la vélocité sur cette vitesse de caméra
variable. Lorsque je modifie cette vitesse
variable de la caméra, cela va en fait
modifier la vélocité. Vous voyez une action ici. Si je clique sur Jouer, mon jeu
sera chargé,
et pour le moment il est mis à zéro. Je crois que j'ai cliqué deux fois sur Play.
Cliquons à nouveau dessus. Cliquez. À l'heure actuelle, il est réglé à zéro, donc il
ne bouge pas du tout. Mais si je mets ce paramètre sur un, nous pouvons voir la caméra commencer
lentement à se déplacer. Si je disais deux moins un, je vais aller dans
la même direction. Si je mets quelque chose comme cinq, vous pouvez voir que je vais beaucoup plus vite. Et moins dix, je fais un zoom arrière. Vous pouvez évidemment
le modifier comme vous le souhaitez. Je vais commencer
avec une vitesse
de panique de base de trois parce que je pense que ce
sera une bonne chose pour le début, surtout pendant que je développe
mon jeu, comme vous l'avez dit, vous pouvez évidemment modifier
tout cela. En fait, c'est
peut-être un peu rapide. Je vais faire en sorte
que cette version 1.8 me paraisse bien meilleure. Et vous pouvez voir maintenant que je peux
suivre la caméra. Je ne peux évidemment pas encore
faire ce saut, mais en gros, nous avons maintenant un
script qui indique à la caméra, accord, avance à cette vitesse. C'est tout, mais nous
n'avons pas de carte à générer. Nous ne savons pas vraiment dans
quoi apparaître, et nous ne savons pas vraiment
où aller parce que nous ne le pouvons pas La première chose que je
veux faire, c'est déplacer
là-bas. Parce que je ne veux pas vraiment que
ce soit une carte impossible, surtout si c'est
la première chose que vous rencontrez lorsque
vous jouez au jeu. Ce que je vais
faire, c'est commencer
à écrire du code, qui va essentiellement indiquer à la caméra ou à n'importe quel
objet que je veux, mais je vais utiliser la caméra pour faire apparaître certains objets Dès que j'
atteins une certaine longueur, à un certain intervalle, je veux apparaître dans un objet Et pour ce
faire, je
vais regarder la
longueur de mes objets, ouvrir des préfabriqués
et voir à quelle
distance se trouvent mes objets Je vais commencer
par enlever
quelques-uns de ces
pneus de sol que j'avais à l'origine, pas définitivement, mais je
vais cliquer sur trois d' entre eux et sur
la petite icône qui s'y trouve. Ils sont cachés à l'écran. Je n'ai pas vraiment
besoin de les sélectionner, cela ne fait aucune différence. Mais je
les ai juste cachés pour le moment. Ils sont toujours là, mais je ne
veux pas qu'ils soient sur mon écran. Vous pouvez les masquer ou
les afficher à l'aide d'une petite icône. En fait, vous pouvez masquer toute
la scène si vous le souhaitez, mais nous
ne voulons pas le faire. Je veux juste cacher mes
trois objets du sol. Ce que je vais faire, c'est ajouter de nouveaux objets. Je veux un objet là-bas. Je pense que je veux que les
objets espacés soient à peu près aussi grands. Voyons si j'
ai mon premier objet. Je vais le définir comme
une position plus facile. Faisons en sorte qu'il soit négatif 6,5 Je vais créer mon nouvel
objet 1.5 Voir ici. Nous avons maintenant deux objets assez régulièrement espacés. Ajoutons-en un autre
ici et nous en ferons 19.5 Nous en ajouterons un autre par la suite Ajoutons le carrelage sept, puis peut-être le
carrelage huit, nous pouvons faire 17,5
Nous pouvons faire 25,5
Nous pouvons voir que Nous pouvons faire 25,5
Nous pouvons nous avons moins 6,5 puis nous avons
1,5 puis nous avons 9,5 obtenu 17,5 et nous avons 25,5. Nous pouvons voir que nous voulons soient séparés d'environ huit
unités chacun, donc je vais
garder cela à Et je dois dire que toutes les huit unités que
la caméra déplace, je vais vouloir apparaître dans un nouvel objet, car cela signifie que je me suis déplacée autour de
l'un de ces objets Pour ce faire, je
vais créer un nouveau script. Et je vais l'appeler
génération de cartes. Dès que le script
a été mutilé, je vais
double-cliquer pour l'ouvrir C'est là que je vais
créer la logique qui apparaîtra dans mes différents objets Je vais d'abord commencer par
créer un nouveau vide public. Je vais l'appeler
Spawn Map Piece. Ce que cette méthode
va faire,
c'est qu'elle
va essentiellement prendre l'une des pièces de carte aléatoires
que nous avons conçues plus tôt et
l'intégrer dans mon jeu Maintenant, pour
obtenir un morceau
de carte aléatoire je vais créer une
structure de données connue sous le nom de tableau. Il s'agit d'un concept
de codage assez avancé. C'est en fait assez
rudimentaire. Mais pour
ce qui est de ce que nous avons
déjà abordé , c'est un grand pas en avant. Je ne vais donc pas
expliquer exactement comment cela fonctionne et tous ses usages. En gros, vous pouvez y
penser comme une liste. J'ai des types de données, dont vous avez déjà
parlé. Comme je veux stocker des nombres, je les mets dans un entier. Si je veux stocker
beaucoup de choses, qu'il
s'agisse de
nombres ou de mots, je les place dans ce que l'
on appelle un tableau ou une liste. Et la façon dont vous déclarez un
tableau est de le rendre public, vous allez taper le type de
données que vous
voulez dans votre liste. En fait, je veux des objets de jeu
parce que les objets de jeu, comme nous l'avons mentionné précédemment,
sont les éléments essentiels de notre jeu Et tous ces carreaux
que nous avons fabriqués sont en fait des exemples d'objets,
même s'ils sont préfabriqués. Ils sont donc comme des modèles
d'objets. Ils sont toujours du type de
données objet. Pour montrer qu'il s'agit d'une liste
et non d'un seul jeu. Je vais ajouter ces deux crochets par la suite, Unity, d'accord, ce n'est pas une chose,
c'est une liste de choses Je vais l'appeler des tuiles cartographiques. Maintenant, c'est essentiellement là que je vais stocker toutes mes tuiles
de carte. Si je retourne dans Unity et
que je reviens à mon appareil photo principal, je vais voir ici Si je fais glisser mon script de
génération de carte, placez-le au-dessus
du corps rigide et déplaçons le corps de la
crête là-haut. voyez maintenant, j'ai
ces tuiles de carte et il n'y a actuellement rien
dedans. La liste est vide. Mais je vais
commencer à le remplir. Je vais mettre dix
choses dans ma liste. Je vais donc changer
ce chiffre dix. Je vais ajouter les dix vignettes
cartographiques que nous avons
créées plus tôt. Passons aux
carreaux de sol préfabriqués et mettons simplement carrelage, un carreau de sol,
deux carreaux de
sol trois , du carrelage
quatre, etc. Jusqu'à ce que
nous ayons tous les
carreaux de sol que nous venons de créer
dans
cette liste, c'est ainsi que
nous allons
les faire apparaître au hasard Ne vous inquiétez pas du fonctionnement
exact des rayons. Comme je l'ai dit, il y a
quelques points délicats,
surtout si vous
avez déjà encodé, comme s'ils commençaient à l'index zéro, il s'agit en fait de l'élément
neuf, même s'
il s'
agit d'Element. Évidemment,
ces objets de jeu, le concept même
de variables et tout ça peuvent
sembler un peu confus, surtout si vous
n'avez jamais codé auparavant. Mais pensez-y
comme une liste d'objets. Nous avons expliqué ce que sont les objets, les éléments de base sont nos jeux et nous avons une liste
de modèles d'objets dans
lesquels nous allons apparaître En gros, nous disons, d'accord,
tous ces fichiers que nous avons créés, mettez-les dans la structure de données,
appelée tableau. Et je vais en choisir un
dans ce tableau au hasard chaque fois que je veux en créer
un et le mettre dans mon jeu La prochaine chose que je dois faire est d'écrire
le code pour le faire. Revenons à
mon code ici. Et je vais vous dire de choisir un membre aléatoire de mon
tableau et de le faire apparaître La façon dont je vais
le faire est la suivante. Je vais dire une vignette d'objet de
jeu. J'ai donc une nouvelle variable locale qui ressemble à un espace de stockage
local. Il n'est accessible que
dans le cadre de cette méthode. Je n'ai pas besoin de le mettre ici, mais c'est juste meilleur
pour les performances car je n'ai pas besoin qu'il
soit accessible ailleurs. J'en ai juste besoin ici,
disons que c'est égal à des tuiles cartographiques. Maintenant, pour accéder à un élément spécifique du tableau, j'utilise le
crochet. Donc ça veut dire, OK,
ouvre le premier. Ce code indiquera
, d'
accord, prenez le premier
élément des tuiles de la carte,
qui est celui des carreaux de sol, et placez-le dans les carreaux de l'espace
de stockage. Mais je ne
veux pas seulement être le premier, je veux être aléatoire. Pour ce faire, je vais
utiliser une plage de points aléatoire, je vais utiliser une plage de points aléatoire. Cela
va essentiellement me permettre de
choisir un nombre aléatoire dans une plage spécifiée, me permettre de
choisir un nombre aléatoire dans une comme
vous pouvez probablement le deviner à
partir du nom entre parenthèses ouvertes Et maintenant, nous avons besoin d'un
minimum d'inclusion et d'un maximum d'inclusion. Maintenant, je ne sais pas exactement pourquoi
ils disent maximum inclus, car une plage aléatoire de 1 à 2 ne
renverra en fait que le chiffre un. Je
pense que la raison pour laquelle ils
disent « inclusif » fait peut-être
référence aux nombres flottants, mais avec les entiers, ce n'est pas vraiment inclusif pour la valeur supérieure, mais uniquement
pour la valeur inférieure Passons ici et
fixons la valeur inférieure à zéro,
qui est, comme nous l'avons dit, le tout premier
élément de notre tableau, qui ici est le
carrelage 1. Mais nous voulons que ce soit
l'un de ces éléments. Et nous pourrions simplement passer
de l'élément zéro
à l'élément neuf. Nous pourrions simplement saisir
quelque chose comme ça. Évidemment, comme je l'ai dit,
ce n'est pas inclusif. Il faudrait en mettre
dix là-bas. Mais cela
fonctionnera parfaitement pour nos besoins. Il doit s'agir
d'un crochet carré non d'un support rond car
nous parlons d'un tableau. Et dans un tableau, vous utilisez crochets pour indiquer à quel
index vous faites référence. Quoi qu'il en soit, cela fonctionnerait
parfaitement pour nos besoins, car
vous allez choisir un nombre aléatoire à
chaque fois. Nous l'
appelons de zéro à neuf. Mais la raison pour laquelle nous ne
voulons pas le coder
ainsi, c' est
ce que l'on appelle le codage en dur, où vous entrez des valeurs exactes au lieu de ce que l'on appelle, je suppose, des valeurs dynamiques ou
variables. La raison pour laquelle nous ne
voulons pas le faire est que nous avons décidé d'ajouter
tout un tas de nouveaux pneus. Nous les ajoutons à notre gamme. Nous devons revenir en arrière et modifier ce code
au lieu de le mettre à jour
automatiquement pour inclure toute
la longueur du
tableau, ce que nous voulons. Au lieu d'en utiliser dix,
nous allons
cartographier la longueur des points des tuiles. La longueur des points des tuiles de la carte
va en fait nous donner le
chiffre dix ici, car nous pouvons voir que nous
avons dix
éléments différents ici. Les vignettes de carte ont une longueur de dix. Je pense que c'est peut-être l'une des raisons pour lesquelles l'
index commence à zéro car cette commande de plage n'
inclura
évidemment pas cette limite supérieure. Et nous n'allons jamais
vraiment
essayer d'accéder au
dixième élément, ce qui nous donnerait une erreur car il
n'y a pas de dixième élément, il n'y en a qu'un neuvième jusqu'à zéro C'est un peu
déroutant au début, mais vous devriez pouvoir l'obtenir
au fur et à mesure que vous utiliserez des tableaux Et c'est une convention
en informatique, je suppose qu'on s'
y habitue aussi après un certain temps. Quoi qu'il en soit,
ce code ici va dire, accord, donnez-moi n'importe quel élément
du tableau complet. Cela peut sembler un
peu confus, mais en gros, tout ce que
nous
faisons, c'est dire, d'accord , nous avons cette liste
de choses
et un indice spécifique, du plus petit jusqu'à un plus
grand indice, ce qui nous permettra d'accéder au plus gros indice. Donne-moi un index à partir de là. Cela va nous donner maintenant une tuile aléatoire à chaque
fois, soit la moitié. Ce que nous devons faire
maintenant, il
ne nous reste plus qu'à apparaître dans cette tuile Nous allons donc dire
instancier une tuile en tant qu'objet de jeu. Cette ligne de code ici est essentiellement ce que
nous allons
utiliser pour apparaître dans notre préfabriqué Nous disons donc, d'accord,
j'ai cette
cravate ici maintenant et je
veux l'intégrer à mon jeu. Mais nous pouvons voir ici que nous recevons un message d'erreur
qui dit, d'accord, suffit d'
incrémenter un appel d'affectation, de décrémenter un poids De nouvelles expressions d'objet
peuvent également être utilisées dans une instruction. Ce qui revient à dire que nous avons la moitié d'une déclaration ici, que
nous en avons cinq, que nous
n'avons pas l'autre côté. Donc je dis, d'accord, je veux instancier en tant qu'objet de jeu, mais qu'est-ce que je veux
en faire ? Nous allons devoir le stocker dans
une autre variable. Appelez cette tuile de carte d'objet de jeu
égale une
tuile instanciée en tant qu'objet de jeu Ce n'est pas incroyablement
similaire au code nécessaire. Nous n'avions pas vraiment besoin de
cette variable car nous aurions
pu simplement la prendre
et la mettre dedans. Mais je vais le présenter comme
ça juste
parce que cela le rend un
peu plus agréable à lire Tout d'abord, nous avons cette tuile d'objet
du jeu, qui est une tuile aléatoire. Ensuite, nous allons
instancier cette vignette et nous
l'appellerons vignette de carte
ou plutôt vignette de jeu La tuile elle-même pourrait bien changer
le nom en Spawned tile. Nous pouvons faire la différence
entre ce que nous
allions générer et une fois que
nous l'avons réellement généré, référons
maintenant à l'objet
réellement créé, non au préfabriqué.
Voici donc le préfabriqué. L'objet réel qu'il a créé. Et nous devons ajouter quelques éléments. Tout d'abord, nous devons
changer sa position. En fait, c'est
tout ce que nous devons ajouter, car pour le moment il
va le générer, mais nous ne savons pas où il
va le générer, nous voulons changer
sa position Nous allons le faire
en modifiant cette variable, une tuile générée Allons générer des tuiles, la position
transformée est égale. Ensuite, nous allons prendre position
actuelle de notre caméra. Nous pouvons le faire en utilisant un
objet de jeu en minuscules,
c'est-à-dire , d'accord, référence à l'objet de jeu auquel ce script est
actuellement attaché, qui sera notre position de transformation de
caméra. Cela revient essentiellement à dire, d'accord, réglez notre
opposition transformée par rapport à
notre tuile d' apparition exactement à l'
endroit où se trouve la caméra Nous ne voulons pas vraiment que ce soit exactement là où se trouve la caméra, nous voulons être
légèrement différents. Créons un nouveau vecteur trois. Cela signifie que nous
voulons stocker trois choses. Nous allons avoir x, y et z. Réglons la position de
transformation de l'objet du jeu de la position actuelle de
notre caméra, plus un certain décalage. Et nous allons créer une nouvelle variable, le
public float offset X, public float offset X et l'ajouter à la position actuelle de nos joueurs
plutôt qu'à la position
actuelle de nos caméras. Maintenant, cela va faire,
c'est dire, d'accord, apparaître dans une vignette et la placer là où
se trouve ma caméra
plus une position Cela devrait donc suffire. Mais nous voulons, souvenez-vous, que
nous ne le
voulons pas non plus vraiment à la
position Y de notre caméra, car notre caméra
aura probablement une position Y autour de
zéro. Et nous voulons qu'il apparaisse dans la moitié
inférieure de l'écran. Nous ne voulons pas être
au milieu de l'écran Nous allons
donc créer une nouvelle position pour
apparaître dans nos objets, mais nous voulons connaître les limites de
cette Et pour ce faire, nous
allons
revenir directement dans l'éditeur Unity. Nous allons voir, d'accord,
où devrait être About. Je vais examiner
cela et je vais examiner ces valeurs y et décider que je veux que mon objet soit compris entre
-4,5. Je pense que c'est
à -4,5. Je pense que c'est peu près le niveau le plus bas que je
veux,
jusqu' à peut-être -3,5
, ce n'est pas beaucoup, mais l'espace est assez
variable,
en particulier pour notre
petite hauteur de saut Nous changerons peut-être cette hauteur de
saut plus tard, mais je pense que c'est une bonne chose pour le moment. Allons-y et réglons
ce paramètre à moins quatre. Je ne me souviens pas
exactement de quoi il s'agissait, mais je crois que c'était autour de -3,9 Maintenant, nous allons utiliser une autre instruction de plage
aléatoire
pour dire, d'
accord, n'importe où entre
ces deux points, je vais utiliser ces points
comme variables Encore une fois, public float
min Y et max Y, que nous allons attribuer
dans l'éditeur Unity, lequel nous reviendrons plus tard. Mais je dois dire, d'accord,
je veux que ma position Y soit située n'importe où dans
cette plage aléatoire, comme nous l'avons utilisée précédemment. Et je vais aller jusqu'
au maximum Y. Enfin, nous pouvons simplement mettre sa position à zéro parce que nous
utilisons un jeu en deux D. Maintenant, ce que cela va faire,
c'est dire, d'accord, chaque fois que nous appellerons
cette pièce de carte d'apparition, nous allons faire apparaître
une nouvelle pièce de carte Et nous voulons le faire apparaître
où que nous soyons dans notre jeu. Plus un décalage X,
que nous allons découvrir au
fur et à mesure que nous jouerons au
jeu de manière expérimentale Nous allons essayer de
trouver une solution maintenant. Et nous voulons une plage aléatoire comprise entre -4,5 et 3,5, que nous allons
également ajouter maintenant Maintenant, la dernière chose que je vais
faire avant de retourner à Unity est de m' autoriser à tester le script. Je vais dire que si la saisie
permet de réduire l'espace du code clé, alors appelez mon élément de carte d'apparition Je n'ai pas réajouté le
code ici. C'est la même chose car il ne s'agit que d'une seule ligne de code. Vous n'en avez pas vraiment besoin
, mais vous pouvez les
diviser si vous le souhaitez et vous
assurer qu' ils se trouvent à l'intérieur de ce bloc. Mais juste pour info, avoir une ligne en retrait,
c'est exactement la même chose Ça a l'air un peu plus
net ici,
nous disons « OK », chaque fois que je clique sur la barre d'
espace, lancez ce code Cela
va en fait nous permettre de
tester notre script de création de cartes Pour être sûr que cela fonctionne,
revenons directement à Unity. Voyons voir, directement dans
notre script de caméra principal. La première chose
que nous voulons faire est de configurer ce décalage. Je suppose que
si je vais ici et que je le déplace,
je vais avoir envie de le faire
apparaître là-bas Cela représente environ 15 heures de fonctionnement
des caméras à zéro. Je suppose donc
qu'il va exister. Mais je
vais évidemment pouvoir le
configurer au fur et à mesure. Je pense que c'était 6,5 Allons-y et fixons
ce décalage y à 15. Nous voulons que notre Y minimum soit -4,5 maximum y soit 3,5
Voyons si cela fonctionne Je vais commencer par ne pas
déplacer du tout ma caméra, juste pour voir
si cette apparition regarde vraiment autour de
moi là où je veux qu'elle soit devant
moi. Vous pouvez voir que
lorsque je clique sur mon jeu, trois étages que j'ai atteints auparavant
sont toujours là. Nous y retournons et procédons à suppression de
cette dalle de sol. Et je l'
ai comme avant. En fait, je vais les
déplacer un peu. Je ne le sais pas. On dirait
qu'ils se sont adaptés. Je ne sais pas exactement pourquoi. Intéressant. Quoi qu'il en soit,
allons-y et cliquons sur Play. Voyons ensuite ce qui
se passe si nous cliquons sur la barre d'espace. Nous
revenons à notre scène. Nous pouvons voir, d'accord,
nous avons en fait un objet qui apparaît au hasard,
ce qui est génial Si nous le déplaçons, nous voulons cliquer à nouveau sur une barre d'espace, quelque chose de différent apparaîtra. Et cela me
semble vraiment parfait. Si je clique dessus plusieurs fois, ils ont en fait
une hauteur variable. Certains d'entre eux apparaissent donc
légèrement plus haut que les anciens, et nous avons différentes
choses qui apparaissent, qui est parfait, c'est
exactement ce que nous voulons La dernière chose que nous devons
faire maintenant est de nous
assurer que cela
se fait automatiquement. Tant que la caméra
se déplace toutes les huit unités, nous voulons en créer une nouvelle Donc, la façon dont ils
vont le faire
va revenir
directement à notre code. Et la première chose que nous
allons faire est supprimer ce code de test car vous ne
voulez pas apparaître dans
nos tuiles à chaque fois que
nous faisons cuire la barre d'espace, nous voulons apparaître chaque fois nous parcourons une certaine distance La première chose que nous
allons faire est créer
quelques variables de déplacement. Créons un float public que nous appellerons Spawn Position Cela permettra de savoir exactement
où sur le plan X nous avons fait apparaître
notre dernier morceau de carte Allons-y ensuite sous notre vide de
départ et
créons un morceau de carte C'est simple, c'est-à-dire qu'au tout début du jeu,
reportez ces parenthèses lorsque vous appelez un bloc de
code
spécifique au début de notre jeu
avant même de commencer à jouer à
Spawn sur une carte Comme nous pouvons voir
si nous optons pour Unity, nous n'avons vraiment
rien à y voir. Nous voulons le faire
dès que nous apparaissons. Mais la dernière chose que nous
allons faire pour être sûrs d'en faire apparaître
une nouvelle chaque fois que nous en avons besoin, c'est d'aller ici variable de position d'apparition et de
la définir sur notre position de transformation
actuelle x. C'est essentiellement
une manière abrégée de
dire position de transformation d'un objet de jeu X.
Nous n'avons en fait pas besoin
de
cet objet Nous n'avons en fait pas besoin ici parce que l'utilisation d'une minuscule fait référence à la transformation attachée à cet objet de jeu
que vous voyez ici. Si nous survolons, cela nous l'
explique. Cela signifie, d'accord, réglez notre position d'
apparition actuelle sur le
point d'opposition X transféré de notre objet caméra Dès que nous
apparaissons sur une carte, repérez où nous l'
avons créée sur le plan X. Ensuite, nous allons ajouter notre instruction
if à notre plaque vide. Nous dirons ma position actuelle
moins ma position d'apparition. En d'autres termes, si mon déplacement
entre l'endroit où je me trouve actuellement endroit où j'ai créé ma dernière tuile
est supérieur à huit En d'autres termes, si j'ai déplacé huit unités depuis que j'
ai créé une dernière tuile, il est temps d'en créer une nouvelle Nous devons écrire
si mon point d'
opposition transféré x
moins la position d'apparition, mettre entre parenthèses ce point est supérieur ou
égal à huit En d'autres termes, si nous avons déplacé huit tuiles ou plus
, nous voulons faire appel à
notre carte d'apparition. Cela va évidemment remettre
notre position d'apparition à ma position de transfert
actuelle vers X. Ensuite, lors de la prochaine mise à jour, il n'
y en aura plus huit. Si tout est
écrit correctement ici, un nouveau
morceau de carte devrait apparaître sur chaque huit éléments, et nous devrions le voir
en action Ou tu retournes au jeu. Allons-y,
cliquons dessus,
assurons-nous que tout est
configuré comme il se
doit pour pouvoir le remettre à 1.8 Gardons une trace de la variable
de
position d'apparition lorsque nous cliquons sur Play Allons-y et appuyons sur Play. Regardez ce qui se passe au fur et
à mesure, il semblerait que notre
première tuile soit parfaitement apparue Et en fait, si nous regardons bien, nous pouvons voir qu'il se reproduit
exactement comme il se doit Nous entrons dans la
vue de la scène, nous pouvons
voir ces tuiles se
fabriquer au fur et à mesure que nous avançons, juste au moment idéal. Ici, un nouveau style
apparaît
exactement comme nous en avions besoin juste avant qu'il n'
apparaisse à
l' écran Nous avons notre nouvelle
tuile là-bas, et il est évident que les
joueurs sont un peu laissés pour compte. Mais nous pouvons
voir que cela crée
une carte assez cool à
génération automatique. Et ce sera en fait le cœur de notre
plateforme, un jeu. Nous allons
évidemment changer cela et ajouter plein de nouvelles choses intéressantes, des objets différents
et des
modèles différents au fur
et à mesure que nous
arriverons à notre jeu. Mais ce sera essentiellement
le modèle
de la façon dont nous allons commencer à créer notre jeu et de la façon dont
tout va fonctionner. heure actuelle, nous avons
créé la base
d'un système plutôt cool pour apparaître dans des tuiles et créer une carte générée automatiquement Maintenant, la toute dernière
chose à faire est de nous
assurer que nous supprimons
réellement les vignettes que nous
n'utilisons plus. Si nous allons de l'avant et que nous appuyons sur Play, nous pouvons voir que nous pouvons très bien apparaître dans les tuiles. Et
ils fonctionnent parfaitement. Nous pouvons voir là-bas, ils
sont créés ici, mais ils ne disparaissent jamais vraiment. Au fur et à mesure que cela continue,
si j'augmente la vitesse, cela fonctionnera tout aussi bien, car cela dépend de
la position, n'a rien à voir avec le temps. Nous pouvons donc voir que nous
fabriquons de plus en plus de carreaux, et tout fonctionne parfaitement. Mais ces carreaux sont
là et ils encombrent
en fait ma scène Et je ne
veux pas vraiment qu'ils soient là. Au bout d'un moment, je vais ajouter
une autre ligne de code, que je vais
attacher aux vignettes. Je vais avoir
une petite ligne de code sur chaque vignette qui dit que si je suis si
loin de la caméra, je
peux me détruire. Allons-y et mesurons
ce que cela ne devrait pas être. Je pense que dès qu'il y aura des
tuiles par ici, elles devraient probablement
être détruites. C'est actuellement à l'exposition
111.8 Disons que c' 112 et que la caméra est à
01:20 Disons qu'il en est 130, disons qu'à la minute où ils sont
18 unités derrière la caméra, ils peuvent se
détruire eux-mêmes Et c'est un script incroyablement
facile à écrire. Faisons un clic droit
pour créer un script C sharp, nous l'appellerons tile clear. Je vais l'ajouter
à chaque vignette, double-cliquez pour l'ouvrir. Et nous allons juste avoir besoin d'
une variable ici, et ce sera en fait une référence à notre appareil photo principal. Je vais donc créer
une transformation publique. Il s'agit en fait
d'un objet de jeu, mais je dis que je n'ai besoin que la position, de la rotation et de l'échelle de
l'objet de jeu. Je vais référencer ma
caméra dans cette variable, mais je ne veux que sa position.
Je n'ai besoin de rien d'autre. Appelle-le. Maintenant, il est important
de noter que
nous attribuons généralement ces transformations dans
l'éditeur Unity. Si nous le glissons sur notre
préfabriqué et que nous disons,
OK, je veux cet Mais comme les préfabriqués ne sont pas vraiment
des objets du jeu, ce sont techniquement des
fichiers de notre programme, nous ne pouvons pas vraiment faire
la même chose ici En fait, je veux
aller de l'avant et faire glisser le script sur
chacun de mes préfabriqués. Je peux donc le faire en accédant
à chacun de mes préfabriqués et en cliquant sur
Ajouter des composants,
et notre nom, comme je l'
appelle, sera effacé. Cette tuile explique le script
à chacun d' entre eux. Il suffit de le faire rapidement. Je crois que vous pouvez le
faire plusieurs fois.
Une fois que vous les sélectionnez toutes, puis que vous ajoutez une vignette claire,
cela devrait s'ajouter à
chacune d'
entre cela devrait s'ajouter à
chacune d' elles. Je pense que cela a fonctionné. Vous pouvez voir que chacun d' entre eux a ce script transparent maintenant attaché, ce qui
est plutôt cool. Mais le problème est que
nous ne pouvons pas réellement référence à cette caméra parce que,
comme je l'ai dit, cette caméra recherche un objet
et nous ne pouvons pas
la faire glisser car
il s'agit d'un objet fichier. Vous devez écrire du code pour le trouver. C'est très simple. Nous allons dire que cam
est égal à l'objet du jeu. Trouve, appelle-la caméra principale parce que c'est
comme ça qu'elle s'appelle. Et c'est-à-dire dès que j'entre dans
le jeu, dès que je commence à exister, que je
trouve
la caméra principale, que
nous avons juste ici, et que je l'assigne à cette variable. En gros, c'est comme si nous
l'avions introduit comme avant. C'est juste une
façon différente de procéder. Et je vais procéder
à la transformation, car je n'ai besoin que de la
transformation de cet objet de jeu. Ensuite, le dernier bit
de code que nous devons simplement dire «
détruis-moi
quand je suis loin » est de dire
si ma position transforme la position point x moins
la position de la caméra. En d'autres termes, position de la caméra x. Nous disons que si j'ai
plus de 18 unités de retard, si ma position est zéro et que
la position de la caméra est 18, je vais avoir
moins 18 pour dire c'est inférieur ou égal
à moins 18. Je pourrais en fait écrire cela dans
l'autre sens et dire que si la position de la caméra moins
ma position est supérieure à 18, si le déplacement est supérieur, c'est exactement la même chose. Alors je vais dire
détruire l'objet du jeu. En d'autres termes,
retire-moi de la scène. C'est en fait tout le
code dont nous aurons besoin pour résoudre le problème dont
nous parlons tout à l'heure. Avant cela, il y a encore une chose que je
vais faire ici. Et ce
sera juste une solution très simple. Je vais créer une
nouvelle transformation publique. Je vais appeler ça du
rangement à carreaux en dessous d'ici. Une fois que j'ai créé ma tuile d'apparition, la
tuile d'apparition se transforme. Définir le parent, ce qui revient
essentiellement à dire «
OK, définissez l'objet parent ». Nous allons utiliser un
dossier comme par
le passé et le configurer
pour le stockage de tuiles. Cela signifie simplement
, d'accord, je crée mon nouvel objet, placez-le sous
cet objet vide, que je vais créer maintenant,
appelez-le stockage de tuiles cartog
7. 6. Ajouter des sprites: Bonjour, et bon
retour sur Unity. Au cours des dernières leçons, nous avons créé ce qui constitue à
peu près la base d'une
plateforme, un jeu. Nous avons créé un
personnage qui peut se déplacer. Nous avons créé une carte qui
peut être générée de manière aléatoire. Et nous avons des obstacles
que nous pouvons éviter. Et nous avons une caméra qui
se déplace en permanence, que nous devons suivre C'est à peu près
tout ce
dont nous avons besoin pour créer
une plateforme de base, un jeu comme nous l'avons déjà
fait, mais il manque quelques
points. Tout d'abord, vous pouvez vous heurter des obstacles et
rien ne se passe. Ensuite, l'appareil photo ne
vous oblige pas vraiment à rester avec lui. Tu peux sortir et rentrer. Il n'y a aucune pénalité pour cela. Troisièmement et
surtout, le jeu n'est pas très beau. Nous avons un carré, sautons sur d'autres
rectangles et nous
évitons les triangles et
les cercles jaunes, blancs et rouges C'est ça. Vous pouvez créer
un jeu avec des formes. Je l'ai fait plusieurs
fois par le passé,
mais pour cette plateforme en particulier, il s'agit d'un jeu de plateforme
intermédiaire, j'ai pensé qu'il serait bon d'utiliser sprites. Je vais
utiliser le pixel art Maintenant, tous les sprites que je
vais créer pour
mon projet seront liés tout au long Vous pouvez tous les trouver sous forme de liens
téléchargeables au
fur et à mesure que j'importe de nouveaux fichiers. tous les fichiers que j'utilise tout
au long de
ce projet Vous devriez également pouvoir trouver tous les fichiers que j'utilise tout
au long de
ce projet. J'ai créé tout un tas
de sprites pour ce jeu. Si vous souhaitez utiliser les mêmes
sprites que moi, vous suffit de les télécharger à
partir de la description de cette vidéo
ou sous le cours, vous trouverez un lien pour télécharger
cette vidéo. Comme je l'ai dit, tu n'es pas
obligée d'utiliser mes sprites. Vous pouvez utiliser vos propres sprites, ou vous pouvez utiliser des carrés
et des triangles Cela ne fait pas vraiment de
différence. Mais si vous voulez suivre et utiliser les sprites que j'utilise, vous devrez
évidemment télécharger ces fichiers Vous pouvez utiliser
les mêmes. Cela étant dit, comme je l'ai dit, vous n'êtes pas
obligé d'utiliser les mêmes sprites que moi Mais il est important de
noter que
les sprites déterminent de nombreuses manières manière dont nous allons
équilibrer notre jeu Par exemple, si nous
avions les sprites que je vais utiliser, ils seraient mineurs et les nuages Je vais donc avoir envie de
peaufiner quelques points
du jeu Je vais peut-être le
faire sauter plus haut. Nous voulons éloigner
le spawn pour qu'il
ressemble davantage à des nuages Et
nous pouvons apporter ce genre de modifications parce que nous
avons des variables dans nos scripts qui nous permettent de contrôler Par exemple, nous avons une
hauteur de saut ici et une distance d'apparition pour
les formulaires ici Vous n'êtes évidemment pas
obligé de copier mes valeurs exactes. Mais si c'est la première fois que vous
codez , Unity
et que vous créez un jeu, je vous recommande de
suivre mon exemple, car j'
importe des sprites et j'utilise les
mêmes sprites
que moi, avec importe des sprites et j'utilise les
mêmes sprites
que moi, peut-être
les mêmes valeurs Parce que cela va
permettre de comparer un peu plus facilement
ton jeu au mien. Et vous seriez
surpris de voir à quel point modifier de petites choses peut
donner à un jeu une apparence différente Tu n'es pas obligée de faire
exactement ce que je fais. Vous n'êtes pas obligée d'utiliser
les mêmes sprites, moi. Mais je vous le recommande si vous
voulez créer le même jeu. J'utilise peut-être les
mêmes sprites et peut-être que modifie comme je le fais parce
que j' aurai à peu près la même sensation Comme si vous ne vouliez pas vous
retrouver coincé dans un jeu similaire. Ce n'est pas vraiment
ce que tu voulais. Tout cela
étant dit, comme je l'ai
dit, c'est entièrement à vous de décider. Mais je vais commencer à
utiliser mes propres sprites. Je vais aller ici dans le dossier
du projet, cliquez avec le bouton droit de la souris. Je vais créer un dossier et je vais l'
appeler sprites Il existe maintenant plusieurs façons d'intégrer sprites dans votre jeu sprites ne sont en fait que des fichiers, sont des
représentations visuelles d' objets, c'est comme ça que j'
aime les appeler. En fait, nous en avons déjà quelques-uns prêts. Comme si nous avions un sprite
carré là-bas et des sprites rectangulaires ici. Eh bien, ce ne sont en fait que des sprites carrés
étirés. Mais nous voulons quelque chose d'
un peu plus intéressant. Nous allons devoir
importer des fichiers dans notre jeu. Vous pouvez le faire de plusieurs manières. Vous pouvez double-cliquer sur
le dossier des sprites et vous pouvez importer un nouvel actif Vous pouvez ouvrir l'
explorateur de fichiers et les faire glisser dans
cette fenêtre ici. Vous pouvez également accéder à
l'explorateur de fichiers, trouver où votre jeu est enregistré et simplement les copier dans le dossier spécifique que
vous venez de créer. Ce n'est pas la
meilleure façon de procéder. Je vous conseille de choisir
l'une des deux premières. Je l'ai mentionné simplement parce que la façon dont Unity fonctionne est
que lorsque vous importez un fichier, il crée un autre fichier dont il a besoin, appelé métafichier Pour chaque
fichier que vous importez, disons que vous importez
quelque chose de p quatre, cela crée quelque chose de méta
ou quelque chose de p quatre DomJe ne sais pas
exactement comment il l'appelle,
mais cela crée essentiellement un métaphile Sans
entrer dans les détails,
voici comment Unity fonctionne
avec les fichiers importés. Elle en a besoin pour
fonctionner correctement. Et ces métaphiles sont
automatiquement créés lorsque vous importez vos
fichiers via Mais si Unity n'est pas
ouvert, ou même si c'est le cas, et que vous le faites directement
avec l'explorateur de fichiers, il ne créera
pas ces fichiers pour vous. Unity fait un très
bon travail en
les créant automatiquement au lancement
et d' autres choses de ce genre, mais pour éviter les
tracas qui pourraient survenir, je vous recommande
d'importer vos fichiers en utilisant cette nouvelle fenêtre de
ressources importante ici Passons à notre dossier.
Allons importer un nouvel actif. Ajoutons ces
quatre éléments de sprite qui, comme je l'ai dit, sont tous évidemment
liés sous la vidéo Vous pouvez
donc simplement les importer
dans votre jeu comme ça Il y a certaines choses
que nous devons faire avant de les intégrer à notre jeu. Je vais tous les sélectionner. La première chose que je vais
faire est de changer ce mode de filtre en
Point No Filter, car c'est un
paramètre que vous souhaitez pour Pixelate et vous pouvez évidemment avoir à
cliquer sur Enregistrer avant de vous le montrer Mais vous pouvez également cliquer sur
Appliquer ici. Vous avez maintenant le filtre Point No, et vous cliquez sur Appliquer pour l'ajouter. La raison en est que ce mode de filtrage
brouille légèrement le sprite Et si vous utilisez le pixel, cela
n'a pas l'air très beau. Je vais vous montrer que si je fais glisser le sprite
dans mon jeu et que je fais défiler la page vers le bas pour voir le sprite, vous
pouvez voir tous les pixels Si je choisis le
filtre bilinéaire et que je clique sur Appliquer, vous pouvez voir que cela le rend
très flou, qui n'est pas ce que Je souhaite choisir le filtre Point no pour que le sprite soit
entièrement effacé Ensuite, la deuxième chose que je vais
faire est de changer ces pixels par unité parce que je ne veux pas que le sprite
soit si petit Je veux qu'il y en ait peut-être dix. Et en fait,
plus ce chiffre est bas, plus
le sprite
sera Je pense que c'est
un très bon réglage pour moi pour le moment, dix pixels par unité. Et je
vais évidemment vouloir les
remplacer tous
ici,
en assurant que tous ces pixels
par unité sont réglés sur dix. Et le mode de filtre est 0.0
Filtrer et cliquez sur Appliquer. Pour voir ce sprite, je peux le faire glisser
directement dans mon jeu Et cela crée un objet pour mon sprite
avec un rendu de sprite C'est donc
comme si vous cliquiez avec le bouton droit de la souris, nouvel objet choisit un triangle. C'est exactement la même
chose, c'est juste que cela utilise un triangle
et cela
définit évidemment le sprite que j'ai fait glisser comme sprite
par défaut Mais je vais
les supprimer parce que je ne veux pas vraiment créer
de nouveaux objets. Je souhaite attribuer ces fichiers directement aux moteurs de
rendu de sprites que j'ai déjà, le carré étiré, le
triangle et le cercle C'est beaucoup de termes que je vous
lance et cela
peut être un peu confus de
penser à tout dans le contexte du développement de jeux vidéo. Mais sachez que pour le moment nous n'avons fait qu'importer ces quatre fichiers
que nous allons
utiliser pour ajouter un peu
de style de vie à un jeu. Et nous
avons actuellement des moteurs de rendu de sprites, qui sont en quelque sorte
des Nous allons les
remplacer par
ces sprites que
nous avons créés Assurez-vous donc d'obtenir
les paramètres comme moi. Ensuite, nous allons d'
abord commencer par le joueur. Passons au joueur et nous
avons une qualité de sprite ici, c'est là que nous allons
ajouter notre sprite Passons à une question mineure. On le voit instantanément, ça a l'air
un peu malade. Et c'est parce que
la couleur est toujours réglée sur le jaune. Mettons-le en
blanc, je dirais. C'est en fait une très
bonne taille pour mon joueur. Je veux que ce soit un joueur
plutôt petit au milieu de l'écran, je pense que c'est vraiment une bonne chose. Mais il y a certaines
choses que je dois changer. Et c'est ce que je
voulais dire quand j'ai dit que les sprites affectaient beaucoup votre
jeu. De toute évidence, avec tous les colliders
, les hauteurs de saut et toutes les autres variables ou
ajustements que vous devez apporter, votre jeu est
centré sur
la taille des sprites ou plutôt
sur leur apparence Si vous utilisez mes sprites, ce
que je vous recommande de faire, il sera beaucoup
plus facile de suivre exactement ce que je fais
que si vous utilisez les vôtres Cela étant dit, vous pouvez utiliser vôtres si vous savez
ce que vous faites, car il vous suffit d'apporter des modifications
similaires à votre jeu Quoi qu'il en soit, cela étant dit,
permettez-moi d'abord de changer ce Box Glider pour m'assurer
qu'il correspond à mon sprite Et vous pensez peut-être
que cela
convient assez bien à mon sprite, mais je vais en fait le réduire
un peu. Et la raison en est
que si nous
jouons à un jeu et
que quelque chose comme une balle ou un projectile touche le haut de
votre écran, ici Supposons donc que quelque chose se passe
et qu'il vous frappe comme si c'était le cas. Cela ne touche pas vraiment
le sprite, mais cela toucherait le collisionneur Ainsi, l'ennemi, vous plutôt que le joueur,
subirez des dégâts, ce qui peut être très frustrant
si vous jouez à un jeu. Donc, en général, c'est
une bonne idée rendu de
ce sprite le plus bas
possible ici, afin de ne pas
tomber par terre Mais ensuite, nous voulons le
rendre un peu plus petit, donc nous voulons en faire
quelque chose comme ça. Maintenant, si vous êtes touché ici,
techniquement, vous ne mourrez pas. Mais si vous êtes touché là-bas, n'importe où dans ce bloc, qui est le joueur principal,
nous pouvons même le
réduire un peu, comme là-bas. Ensuite, vous allez subir des dégâts ou peut-être même mourir et
devoir recommencer le jeu à zéro. Mais en gros, cela
rend le joueur un peu plus amusant de jouer
à un jeu où il
n'est pas
constamment pénalisé s'il est touché au
pixel supérieur droit du personnage Suis ça.
Évidemment, quel que soit le joueur vous devez vous
assurer qu'il rentre dans les
limites du box clider, mais pas exactement que
vous avez des espaces vides Je pense que c'est plutôt
bien. Pour l'instant J'ai changé ma box Clider. Je n'ai pas besoin de
changer quoi que ce soit d'autre. Le corps de la crête n'est pas
affecté par les sprites. Le mouvement du joueur
devrait être correct. Il a à peu près la même taille et
j'ai changé mes sprites. Si nous appuyons sur Play, vous pouvez voir maintenant que j'ai un personnage mineur et que je peux le
déplacer et sauter. Il n'y a évidemment
aucune animation, donc ça a l'air un peu loufoque Mais c'est en fait le début de l'ajout d'un jeu de style sprite Et vous pouvez voir
que cela améliore considérablement l'apparence
de notre jeu. Je veux dire, évidemment, comme je l'ai
dit, ça a l'air stupide maintenant. Mais si vous prenez
une image figée
là-bas et que vous la regardez, même si elle ne
correspond pas vraiment au style artistique, elle est beaucoup
plus belle quand vous avez objets
réels dans votre
jeu que des carrés La plupart du temps, comme je l'ai
dit, les carrés peuvent être cool. J'ai créé de nombreux jeux
avec juste des formes. Mais dans ce genre de cas,
pour ce genre de jeu, cela donne une apparence un peu
plus professionnelle d'avoir de vrais sprites. Ne nous
arrêtons donc pas là. Allons-y et
ajoutons tous
les autres sprites dont nous avons besoin
à nos autres objets Il y a quelques modifications que nous
allons devoir apporter ici. Tout d'abord, comme nous allons utiliser des clouds
comme plateformes, nous avons évidemment besoin qu'ils soient
tous de la même taille car nous n'avons qu'
un seul sprite cloud Ils doivent tous être aussi grands. Ce n'est pas vraiment un problème pour tous nos carreaux ici, car ils ont tous
la même taille. Mais au début, ces trois modèles sont de tailles
différentes. Il va donc falloir les
modifier un peu. Je vais m'y atteler. Mais
commençons par aller ici dans mon dossier
de sprites et par le faire glisser dans ce cloud Maintenant, nous pouvons déjà voir que cela rend les
choses un peu bizarres. Nous avons un nuage incroyablement
long et plat, et je vais y remédier en
ramenant l'échelle à un. Nous avons la
taille par défaut de notre cloud. Je vais également le
faire avec les
deux autres objets du sol. En fait, je ne vais pas en
choisir trois car deux sont largement
suffisants pour mon jeu. Je vais le modifier un peu au fur et à mesure que je
progresserai dans mon jeu, mais pour l'instant, c'est un
bon
point de départ pour mon jeu La dernière chose que j'ai à faire est évidemment de changer les collideurs. Parce que ce n'est pas la collision. Je veux, je veux que ce soit
quelque chose de plus comme ça. Faisons-le glisser un peu vers le haut. Là-bas et de l'autre côté. Comme je l'ai dit, vous
ne voulez évidemment pas que le collisionneur soit nécessairement comme
ça parce
qu'il ne peut tenir debout sur rien, mais vous ne
voulez pas non plus qu'il soit là puisqu'il se trouve à
mi-chemin dans le cloud Je dirais qu'il faudrait trouver un bon équilibre quelque part dans ce
domaine. Vous pouvez toujours vous cacher un
peu derrière les nuages, mais vous pouvez toujours vous voir, peut-être le déplacer un peu vers le
haut, évidemment vers le bas. C'est moins important car
vous
n'allez probablement pas
les sauter par le bas. Mais ça devrait être une bonne chose. ne faut pas vraiment faire ce genre de choses avec un projet, autant
avec les clouds. Parce que vous n'auriez pas
vraiment envie de tomber s'il
y avait du cloud là-bas. Mais tu peux le faire un petit peu, peut-être quelque chose comme ça. Comme je l'ai dit, il n'est pas
nécessaire que ce soit parfaitement exact, mais vous vous en ferez une idée fur et à mesure que vous jouerez à votre jeu
et que vous pourrez le modifier Ce sont évidemment
vos collisionneurs. En fait, je vais
supprimer cette faille et simplement copier celle-ci parce que je n'ai pas envie de la
redimensionner Et ils devraient tous avoir le
même type de collisionneur. Si je continue et que je clique sur Play maintenant,
nous pouvons voir à quoi cela ressemble. Sautez dedans, je tomberai sur ce nuage et je
pourrai me déplacer le long de celui-ci. Et je veux dire, c'est joli. OK. Le seul problème, c'est le joueur est
en quelque sorte continuellement face au cloud. Et ce n'est pas vraiment
ce que je veux. Je préfèrerais que le joueur soit
derrière le cloud. Pour ce faire, je vais
en fait utiliser une variable dans ce script de rendu
Sprite, appelée ordre dans la couche Je vais mettre les nuages
en ordre dans la couche 6. Je vais configurer mon joueur pour qu'il
soit en ordre dans la cinquième couche. Maintenant que nous pouvons voir que lorsque nous jouerons au jeu, nous devrions être en mesure de voir
le joueur tomber les nuages, juste un
peu plus que je le voulais. Et je pense que
c'est un peu mieux en termes de conception du
gameplay. Maintenant, nous
venons évidemment d'ajouter ces sprites pour les deux
premières plateformes Nous n'avons ajouté aucun
des carreaux de sol ici. Il existe toujours le rectangle
par défaut, nous allons
donc
devoir corriger cela. Commençons par revenir aux
sprites et en faisant glisser ce
nuage directement vers l'intérieur, en
ramenant l'échelle à un Et maintenant, cela va
être un
peu délicat, car
nous allons devoir changer cela exactement comme nous avons toujours essayé de le
faire. Nous devons d'abord
changer le planeur Box, puis ajuster chacun de
ces objets enfants afin
qu'ils soient de ces objets enfants afin la bonne
taille pour le sprite Cela
va malheureusement demander beaucoup de travail, car
nous devons maintenant refaire tous nos sprites,
ou plutôt toutes
nos tuiles que nous avons déjà créées en termes de
nouveaux Si nous devions examiner
chacune d'entre elles, nous devons modifier le planeur Box, ajouter de nouvelles choses,
tout changer C'est un peu confus et
cela demande beaucoup de travail. Il existe en fait un moyen
facile de le contourner. Cela peut sembler un
peu intuitif pour la voiture, mais ce que nous allons faire,
c'est récupérer l'espace dont nous disposons
exactement comme avant. Réglez-le comme d'habitude avant d'ajouter ce sprite Ensuite, nous allons
créer dix nouveaux préfabriqués, et nous allons les utiliser comme points de
référence pour fabriquer nos nouveaux préfabriqués avec nos sprites. Ensuite, nous allons simplement les
supprimer par la suite. Cela peut sembler
beaucoup plus de travail, mais il est en fait
beaucoup plus facile à long terme de
le faire de cette
façon qu'auparavant. La première chose que nous
allons faire est changer les préfabriqués Spike
et Spike Ball,
car c'est en fait
la première étape Nous devons nous rappeler que les préfabriqués contenus dans
nos préfabriqués sont en fait des préfabriqués eux-mêmes. Nous devons donc les changer. Commençons par remplacer
la pointe par le sprite à pointes Tu vois, ça
n'a pas l'air si mal. Nous devons ramener l'
échelle à un. Il est très important que vous utilisiez la même échelle lorsque
vous utilisez le pixel art. Comme vous ne pouvez pas
avoir un pixel plus petit que la taille de l'
autre, cela semble vraiment mauvais. Assurez-vous que toutes vos
balances sont réglées sur une seule. En fait, je dois me rappeler le
faire également avec le joueur. Avant d'oublier, il
se peut que je doive modifier la taille des sprites par unité de pixel, que nous avons initialement définie
ici, ces pixels par unité Mais assurez-vous de
tout régler sur la balance, sinon cela n'
aura pas une belle apparence. Nous avons nos nuages à la fois
et notre joueur à la fois. C'est une bonne chose. Revenons à nos modes d'avant et
montrons que notre pic est à un, et que nous avons besoin que notre boule
à pointes le soit également Quoi qu'il en soit, revenons
ici. Commençons par rendre la
couleur normale, qui est le blanc. Nous n'allons donc pas le
changer de quelque façon que ce soit. Ensuite, je vais
supprimer ce collisionneur polygonal,
et je vais ajouter
un simple collisionneur de boîtes. Vous pensez peut-être qu'
il est plus logique d'
ajouter peut-être trois collisionneurs
polygonaux,
mais croyez-moi, c'est incroyablement compliqué par rapport à
ce que nous ajoutons de
Unity commettent probablement une
erreur de collision Beaucoup de nouveaux développeurs de
Unity commettent probablement une
erreur de collision. Ils essaient de rendre leurs
collideurs aussi précis que
possible en ajoutant peut-être une ligne ici, une ligne ici, une ligne
ici Ce n'est vraiment pas une bonne
utilisation de votre temps. Et vous pouvez faire
quelque chose comme
ça et cela
fera parfaitement le travail. En fait, cela rend le jeu
un peu plus agréable à jouer, car
vous ne voulez pas mourir si vous touchez, comme je l'ai dit, le tout petit sommet d'
une pointe juste là et le joueur ne le
remarquera même pas lorsqu'il
joue au jeu. Vous pouvez simplement utiliser des box
glides pour beaucoup de choses.
Évidemment, nous allons
utiliser un cercle ici Mais pour cela, un boxglider
fera très bien l'affaire. Quoi qu'il en soit, ouvrons la boule à pointes et
faisons de même ici. Accédez aux sprites et faites glisser
le sprite Spike Ball, changez-le en blanc pour obtenir la
couleur normale Ensuite, nous
pouvons simplement augmenter légèrement
la taille du cercle Au lieu d'utiliser
ce collideur d'édition, je vais utiliser
ce rayon réglé 0,6. Je pense que c'est déjà une bonne chose
parce que, comme je l'ai dit, vous ne voulez pas mourir
si vous atteignez le bout Mais c'est la majeure partie
du sprite, donc c'est bon. Oui, ce dérapage en ce moment, nous avons terminé nos préfabriqués pour
nos sprites Nous avons modifié le
sprite, modifié
les colliders et nous nous sommes
assurés qu'il est réglé sur une échelle de 1 Maintenant, si nous
revenons à nos carreaux de sol, nous pourrons
les voir les ajouter à un jeu. Mais ils ne sont peut-être pas
très beaux. Par exemple,
celui-ci est dans le cloud et ils sont un peu
plus gros qu'ils ne l'étaient auparavant. Quelque chose comme ça les
fusionne. De
toute évidence, ils sont
beaucoup plus bas. Cela rend donc ce
saut un peu plus difficile, car
ils sont également plus larges. Comme je l'ai dit, tous
ces préfabriqués sont en fait un peu
ruinés maintenant d'une certaine manière Mais nous allons
faire ce que j'ai
déjà dit et
utiliser tout un tas de nouveaux préfabriqués parce que
je pense que
cela facilitera les choses à long terme Quoi qu'il en soit, cela
prendra probablement le même
temps, car nous pourrions simplement changer
chacun de ces sprites, ajouter la boîte Clyde, y ajouter,
mais ensuite nous devons tous les déplacer vers haut
pour les ajuster à la Mon Dieu, il va falloir changer à
peu près tout ce que
nous avons déjà ajouté. Et à mon avis, ce n'est vraiment pas beaucoup plus rapide ni même plus rapide que de simplement
fabriquer de nouveaux préfabriqués. Allons-y et faisons
glisser un nouvel étage vers le bas. Nous avons donc un nouveau préfabriqué. Et commençons simplement par
déballer ce préfabriqué. Il n'est plus lié. Nous
venons de créer une référence, nous avons
maintenant notre nouveau préfabriqué. Appelons ça du carrelage, un A. J'allais le
copier dix fois. Nous avons des carreaux de sol un A, nous allons avoir des carreaux de
sol deux
, des carreaux sol trois, des carreaux de
sol quatre A, etc., jusqu'à ce que nous ayons les dix carreaux de sol fabriqués avec une
copie d'eux-mêmes Une fois que vous avez fait cela, vous pouvez à
peu près commencer
à transformer tous vos anciens
préfabriqués en nouveaux. Je vais passer à autre chose
parce que c'est un processus
assez fastidieux et que vous n'avez pas vraiment besoin de me
voir modifier. Mais en gros, avec
les nouveaux sprites, il suffit de créer tout un
tas de nouveaux préfabriqués partir des anciens que Et assurez-vous qu'une fois que
vous avez terminé vos préfabriqués, ils possèdent tous
les attributs des anciens. Donc, votre vignette, votre script
clair, votre diapositive et
tout ça. Assurez-vous que
tout est sur les préfabriqués. Et une fois que vous l'avez fait,
vous êtes prêt à partir. Une fois que vous aurez fini de
fabriquer tous vos
préfabriqués, tout devrait être fait comme nous le voulions, mais il reste encore quelques
modifications à apporter Tout d'abord, nous devons
supprimer toutes nos anciennes vignettes ici parce que nous n'en avons plus
besoin. Nous avons nos nouvelles vignettes
avec tous nos sprites. Nous avons des carreaux de sol d'un A à dix A. L'autre chose que nous
devons changer, c'est de passer
ici devant cette caméra principale. Nous pouvons voir que les vignettes de notre carte
sont désormais toutes manquantes. Parce que ce que nous avons fait est un
tableau ici qui dit, accord, utilisez cette tuile de carte, mais la vignette de carte
n'y figure plus. Il dit : « Je ne sais pas
où se trouve le fichier ». Nous devons tous les remplacer par ces nouvelles vignettes que
nous avons créées ici, car il s'agit en fait nouveaux objets que nous avons créés ou plutôt de nouveaux fichiers
que nous avons créés. C'est en fait tout ce que
nous devons faire pour créer notre nouveau jeu basé sur des sprites Allons-y et appuyons sur Play. Et nous pouvons voir maintenant que nous avons des nuages et qu'il y a un petit
saut sur les nuages. Nos nouveaux sprites apparaissent exactement comme
nous le voulions. Nous avons notre sprite ici, qui a deux nuages, et
nous avons un pic là-bas Le seul problème, cependant, est que vous remarquerez
que les sprites sont en fait bien
trop proches les uns autres et que la fosse de saut
n'est pas assez haute Ce sont toutes des modifications
que nous devons apporter. Nous avons dû tester notre
jeu pour les voir, mais les nuages
apparaissent en fait les uns sur les autres Ce n'est pas bon. Ce n'est pas exactement ce que nous voulons. Allons-y et
corrigeons un peu ce problème. Heureusement, la première chose
est que nous avons créé tous nos scripts de manière
assez dynamique. Nous avons cette
variable de décalage ici, qui indique à quelle distance les
nuages doivent être éloignés les uns autres avant d'en générer un nouveau. Nous regardons
celle-ci, elle est négative de 5,55,
celle-ci est 4,2. Techniquement, ils sont distants de
moins de 15, mais lorsque nous commençons à
ajouter notre script, cela ne fonctionne pas
exactement comme Ce que nous essayons de changer, c'est leur
fréquence, et
non leur fréquence d'apparition. Nous revenons
au script qui
génère notre carte. est possible, nous avons codé cette valeur en
dur jusqu'à huit et ce n'est pas vraiment une
variable que nous avons utilisée. Réglons ça.
Revenons ici et appelons cela la fréquence d'apparition Assurons-nous de définir cela
sur la variable ici. De toute évidence, le décalage est en fait distance à laquelle il apparaît
devant la caméra Désolée, je l'avais oublié. C'est pourquoi ils ne s'additionnaient pas. Mais
à quelle distance ils apparaissent les uns des autres est cette nouvelle variable que
nous avions
codée en dur et que nous avons corrigée Revenons maintenant à
la caméra principale et changeons-la en quelque
chose comme 12. Et voyons si ça
semble un peu mieux. Le décalage est actuellement de 15. Voyons si nous apparaissons
dans le premier
là-bas et dans le second OK. 12 c'est un peu trop. Réglons-le sur
quelque chose comme dix. Voyez si cela fonctionne. Ten
semble très prometteur. Je pense que cela pourrait être une bonne chose. Ouais. C'est bon. Je vais en fait porter le score à 11 juste parce que je veux changer encore quelques
points à ce sujet. La deuxième chose que je
veux vraiment faire, c'est arrêter ça. Je veux le remplacer par 11. Deuxièmement, je n'
aime pas le fait que les nuages apparaissent juste
en bas de la carte, alors permettez-moi de changer ce Y
minimum à moins quatre En fait, je vais faire en sorte que le Y
maximum soit environ deux. Il est un peu plus facile de
déplacer les nuages vers le haut ou vers le bas. Ensuite, je
dois évidemment changer la hauteur de
saut de mes joueurs à dix, voire 12,
afin qu'ils puissent
sauter correctement vers les nouveaux nuages. Voyons voir, avec
tous ces ajustements, nous avons maintenant un jeu de sensations légèrement
différent Le joueur peut
sauter beaucoup plus haut. Peut-être que 12, c'est un peu trop, mais je peux évidemment y remédier. Faisons en sorte qu'il y en ait peut-être dix et
revenons en arrière pour voir à quoi ça ressemble. Maintenant, avec une hauteur de saut de dix, je dirais que c'est beaucoup mieux. L'échelle de gravité est
peut-être un peu plus basse. Des cigognes flottent
vers le sol, mais cette
figurine semble
plutôt correcte pour mon jeu Je peux faire ce saut, mais peut-être que
je dois le changer
un peu aussi. Je pourrais augmenter légèrement la
hauteur du saut, mais aussi l'
échelle de gravité. Mais il semble que tout cela soit
réellement possible avec cette nouvelle variable que j'ai jugée plutôt bonne. Et nous pouvons voir maintenant que nous avons créé un jeu un peu plus
beau. Tout est un peu plus propre et tout
est beaucoup plus beau. La seule chose que je vais
changer avant de terminer cette vidéo, je sais qu'elle est
assez longue, c'est que je vais réduire légèrement
tous les sprites réduire légèrement Je vais en créer un, faire un jeu un
peu plus petit. Disons peut-être à 12. Oui, je dirais que 12 c'est
bien, comme je l'ai dit. Parce que maintenant j'ai décidé de réduire un peu
mes sprites Je vais évidemment devoir modifier tous mes collisionneurs et
peut-être la fréquence d' apparition du nuage pour qu'ils soient
toujours à
la même distance l'un de l'autre Mais en raison de la façon dont
nous avons codé nos scripts, c'est en fait
assez facile à faire. Et je vous recommande de continuer à adapter votre jeu au
fur et à mesure que vous le développez. C'est un aspect tout à fait normal du développement de jeux que de modifier
votre jeu au fur et à mesure que vous le créez. Et cela peut sembler
ennuyeux d'apporter constamment des modifications à votre jeu et de
devoir réparer des choses. Mais croyez-moi, c'est
bien mieux que l'alternative
d'avoir un jeu, qui ne vous
plaît pas particulièrement parce que vous ne
vouliez rien changer. Assurez-vous donc d'adapter
constamment votre jeu afin qu'il reflète
exactement ce que vous voulez. Je veux que mon jeu ait des sprites un
peu plus petits. Je vais devoir
ajuster tous mes carreaux,
mes préfabriqués ainsi que les
colliders de Peut-être que sur presque tous mes sprites, en fait,
sur mon lecteur aussi. Ensuite, je vais
devoir peut-être modifier
le script de génération de cartes à quelle
fréquence ils font du sport,
parce que je veux qu'ils soient à la même distance l'un de l' Je vais donc devoir
également en faire une valeur
légèrement inférieure. Mais une fois que j'aurai fait tout
cela, cela ne devrait pas prendre trop de temps
et j'aurai un jeu, dont je serais probablement
beaucoup plus content,
car il reflète quelque sorte ce que j'ai
en tête. Cool. Et puis la dernière
chose à faire est de simplement tester. Il se peut que nous devions
modifier ces variables une fois de plus avant
de terminer la vidéo, mais laissez-moi voir. Parce que je voulais en quelque sorte
sauter d' un nuage à l'autre. Oh, j'ai oublié de
régler le planeur du lecteur.
Faisons-le rapidement. Et
je pense que le cloud lui-même devrait convenir,
mais permettez-moi de m'
assurer qu'il convient
au joueur. Voyons les nuages. Ajustez-les également. Ça devrait aller. Je vais
copier ce composant, donc je dois faire la
même chose
ici et coller ses valeurs. C'est comme si le copier-coller
devait être une bonne chose. Je vais faire la
même chose avec tous
les préfabriqués juste pour
m'assurer de ne pas avoir à les refaire Permettez-moi de coller les valeurs des
composants
pour tout cela. Maintenant, je sais qu'il semble que nous ayons fait un tas de choses,
puis que nous les avons modifiées, puis que nous les avons refaites
et modifiées. En fait, ce n'est pas une mauvaise
chose. Cela signifie que vous suivez un jeu spécifique
que vous avez en tête. Et le fait que
vous peaufiniez les choses et que vous les changiez signifie que
cela ressemble un peu plus à un organisme
réel qu'à un organisme statique Et c'est ce que
devrait être un jeu au fur et à mesure que vous le
développez. Quoi qu'il en soit, voyons si cela correspond vraiment
à ce que je veux. J'ai des sauts en hauteur, je passe d'un cloud à l'autre Cela semble en fait
beaucoup mieux, à mon avis. Je pense que c'est vraiment une bonne chose. C'est vraiment génial. Nous avons à peu près
tout ce que j'essaie de faire pour enregistrer la scène en mode jeu, ce que vous n'êtes pas autorisé à faire. Nous avons à
peu près tout ce que je voulais
vraiment à ce
stade du jeu. Vous avez des nuages sur lesquels
vous pouvez sauter, obstacles s'y trouvent. C'est plutôt cool en fait. Évidemment, cela n'a pas l'air
génial parce que le joueur n'
est pas animé et qu'il lance des balles. Maintenant, les pointes
bougent ou quoi que ce soit d'autre. Nous allons commencer l'
animation dans la prochaine vidéo. Mais j'espère que si
vous m'avez suivi, vous aurez un jeu légèrement
plus beau. Même si nous avons simplement
ajouté des sprites et que nous
n'avons pas vraiment changé
grand-chose d'autre, vous pouvez le voir, nous avons
évidemment dû
modifier de nombreuses parties de notre jeu car nous avons
ajouté les sprites Vous pouvez ajouter des sprites
dès le départ Mais je pense que beaucoup de
développeurs préfèrent d'abord le
créer avec des
modèles
, puis ajuster
les choses au fur car cela facilite les choses. Vous n'êtes pas obligé de faire tout
l'art avant de commencer. Mais c'est en fait tout ce que
nous voulons faire aujourd'hui. Et je pense qu'on peut
dire sans risque de se tromper que notre jeu est bien meilleur aujourd'hui qu'il ne
l'était au début de la vidéo. Nous allons voir
dans la vidéo suivante, après avoir ajouté l'animation, comment le jeu commence
réellement à prendre vie. Et nous allons apporter quelques modifications
supplémentaires au joueur pour qu'il
fasse face dans l'autre sens lorsqu'il tourne à
gauche Ce qui améliorera beaucoup
l'apparence du jeu. Mais pour l'instant, je pense que cela semble beaucoup mieux
qu'à nos débuts. Et j'espère que vous avez pu
suivre et ajouter ces sprites ou vos propres
sprites au jeu.
Merci.
8. 7. Animer nos personnages: Je vous souhaite à nouveau la bienvenue dans Unity. Dans le dernier épisode, nous avons ajouté tous nos
sprites à nos jeux Nous avons un mineur
pour notre joueur. Nous avons tout un tas de
clouds pour les plateformes. Et nous avons des
balles pointues et des pointes dans les nuages pour éviter les obstacles De toute évidence, nous avons dû
passer pas mal de temps dans le dernier épisode peaufiner les choses et à les
déplacer pour qu'elles soient toutes dans
la bonne position J'ai dû le faire un
peu plus tard,
juste pour m'assurer qu'ils étaient tous exactement
là
où ils devraient être Mais cela va
être subjectif pour vous. Vous savez évidemment quelle est
la bonne position pour votre jeu et pour
votre projet. Même si vous me
suivez, ça ne ressemblera pas
exactement au mien. Vous allez les placer exactement
dans la même position. Donc, tant que tout est
beau et que
tout est dans la bonne
position pour votre jeu, c'est formidable que nous puissions
passer à l'animation. Parce que si nous jouons
au jeu dès maintenant, nous pouvons voir que même si tous les sprites et
tout le reste sont beaux, l'air d'une image figée Mais dès que nous
commençons à nous déplacer, le joueur ne
bouge pas du tout et qu'il se
contente de glisser et qu'
il est pratiquement sans vie. En fait, cela donne
au jeu un air un peu
bon marché ou précipité, et nous ne voulons évidemment pas que notre jeu ait l'air
bon marché ou précipité, mais nous voulons ressembler un
peu plus à un jeu
réel que vous pourriez voir sur Steam ou
en arcade, ou ailleurs. Pour ce faire, nous
allons
devoir ajouter de l'
animation à notre jeu. Et la façon dont nous
allons animer, je vais vous montrer que c'est un processus assez
compliqué si vous vous y intéressez sérieusement Parce qu'
il est évident que des emplois entiers sont construits autour de l'animation pour les
jeux
dans ces grands jeux comme
Treble Studios. C'est très
différent de ce que nous allons faire aujourd'hui, mais dans Unity, même s'il s'agit
d'un processus assez compliqué, il fournit en fait
un moyen assez simple de le faire. Et je vais
vous le montrer et vous
allez découvrir que
vous
allez probablement l' obtenir assez rapidement. Avant que je ne prenne trop
d'avance sur moi-même, présentons simplement ce que
nous allons faire. Nous allons animer
uniquement le joueur pour le moment. Évidemment, au fur et à mesure que nous
avançons dans le jeu, il se peut
que nous devions animer d'autres choses Et nous pouvons animer de nouvelles
choses au fur et à mesure que nous les ajoutons. Mais pour l'instant,
commençons simplement à animer le joueur, car c'est
la partie la plus importante Pour commencer,
passons aux ressources et créons un nouveau dossier
appelé Animation. C'est ici que nous
allons stocker tous nos fichiers d'animation. Maintenant, tout comme les sprites sont des
fichiers, notre code est constitué de fichiers. Même nos scènes et nos préfabriqués sont également
des fichiers Les animations que nous
créons seront également des fichiers. Et c'est important pour la
terminologie utilisée ici. Une animation ou
un clip d'animation est comme une vidéo en boucle
d'un objet spécifique Comme une animation de course à pied.
Ou une animation de saut d'obstacles. Ce sera
une vidéo en boucle,
vous pouvez l'appeler, mais il s'agit d'un changement de
sprites en boucle Il va donc se
déplacer d'une certaine façon. C'est ainsi que s'appellera
l'une des animations. Ensuite, la façon dont nous
allons animer dans Unity est de stocker ces fichiers d'animation
car ils sont enregistrés sous forme de fichiers dans ce
dossier Ensuite, nous allons créer
un nouvel objet appelé le contrôleur qui
indiquera à Unity lequel utiliser
à quel moment, et c'est là que nous
avons intégré notre logique. Mais avant que je ne prenne trop
d'avance, commençons par
les animations proprement dites. Maintenant, en ce qui concerne les sprites que nous
allons utiliser, j'ai évidemment créé quelques sprites
supplémentaires pour les animations Nous allons faire ce que l'
on appelle une animation basée sur des sprites, dans laquelle vous avez tout un
tas de sprites différents Comme dans le cas d'un
sprite qui court, il se peut que cette jambe soit levée,
puis une autre vers le bas, puis une autre sur le côté,
puis une autre encore vers le bas Et j'ai évidemment déjà créé
ces sprites. Ils seront bien entendu
liés par cette vidéo. En gros, notre animation
ne fera qu'indiquer à Unity lequel de ces
sprites passer
à quelle heure. C'est
en fait assez facile. Il existe un autre type
d'animation dans
lequel vous prenez l'objet entier que
vous avez créé ici
et vous créez toutes ces petites parties
du corps comme sous-objet. L'un des bras serait un objet, l'autre jambe serait un objet. En gros, dites à Unity, d'accord, faites-le pivoter à ce moment,
puis reculez-le à ce moment-là. Et c'est un
peu
plus compliqué que ce que nous allons
faire aujourd'hui. C'est évidemment une
bien meilleure façon d'
animer pour des choses plus
compliquées Comme si vous ne créez pas un jeu Pixelart, par exemple C'est à peu près
comme ça que vous allez
devoir animer en fait. Parce que vous ne pouvez pas créer
un sprite différent pour chaque image
que vous souhaitez Mais pour Pilar, comme ils le
faisaient autrefois, nous allons utiliser des animations basées sur des
sprites Et à mon avis, cela semble beaucoup mieux pour Pilot. Vous ne pouvez jamais vraiment l'obtenir
exactement comme vous le souhaitez sans l'utiliser pour Pix L, c'est ce
que nous
allons faire Maintenant, évidemment, une fois que vous aurez téléchargé tous
ces fichiers sprite, je porterai les mêmes. Ce
seront les sprites
dont nous aurons besoin pour notre animation de course à pied Et ce sont des sprites de
moins deux à six. En fait, je
les ai juste mis au mauvais endroit. Laissez-moi les couper et les
mettre dans des sprites. Parce que ce sont des sprites,
il existe des animations. Mais évidemment, lorsque
vous l'importez directement dans le dossier sprite et que nous devons
apporter les deux modifications que
nous avons apportées la dernière fois, définir ce paramètre sur 12 et le mettre
sur point. Pas de filtre. Nous pouvons voir maintenant qu'ils sont exactement les mêmes que tous
mes autres sprites Si je vais ici en tant que mineur, nous
pouvons voir qu'il n'y a absolument aucune différence entre
les deux, sauf le nom. Si je vais dans mon lecteur, je peux les y
faire glisser
sous forme de sprites Je dirais, d'accord, je veux que le
joueur soit un sprite qui court. Et nous pouvons voir maintenant
qu'il est juste coincé là. Mais nous ne
voulons pas toujours que notre joueur soit toujours dans ce
sprite Nous voulons qu'il change d'
un sprite à l'autre. Et pour ce faire, nous
allons avoir besoin d'un nouveau composant appelé animateur, comme nous l'avons déjà fait, mais nous devons ajouter
cet animateur Cet animateur
permet essentiellement à Unity de dire, d'accord, c'est quelque chose qui a
un contrôleur d'animation, ou quelque chose
qui a des animations Il va y avoir un
échange entre les deux. J'explique toute la
terminologie au fur et à mesure, mais ce composant
ici est essentiellement une référence au fait
que nous l'animons La référence au fait
qu'il dispose d'un contrôleur. Maintenant, pour ajouter un contrôleur, qui est l'
élément clé dont nous avons besoin ici, passons à l'animation des fenêtres, puis à l'animation à nouveau. Et cela va ouvrir
la deuxième fenêtre ici. Animation de fenêtre. Animation.
Vous pouvez également cliquer sur le contrôle 6 et ouvrir
cette fenêtre
d'animation qui vous dira, pour démarrer le lecteur animé, de
créer un clip d'animation
qui ressemble
à créer un clip d'animation une
course ou à un saut. C'est le clip dont
nous parlions. Cela permet de garder une trace de
l'objet que nous avons actuellement sélectionné. Si nous sélectionnons la
caméra principale, cela indique. Crée un animateur
et un clip d'animation. Évidemment, il était uniquement
question de créer un clip d'animation car nous avons déjà
un animateur pour le joueur Mais je pense que si vous
cliquez sur Créer ici, cela
créera automatiquement cet
objet d'animation pour vous C'est bien
de vous créer vous-même pour être conscient que cela
fait partie du processus. Quoi qu'il en soit,
pour créer
un clip d'animation il
suffit de cliquer ici. Nous voulons nous lancer dans l'animation
des actifs, car c'est là que je
vais stocker mes clips et je vais l'
appeler player run. Maintenant, j'ai créé ce que l'on
appelle un clip, et nous pouvons voir qu'une grande partie de ces informations
est maintenant remplie. Nous avons maintenant ce qu'
on appelle un contrôleur. Si nous le fermons
et revenons notre animation, nous
avons deux fichiers. Nous avons fait fonctionner ce joueur,
qui est mon nouveau clip. Mais j'ai aussi ce nouvel objet
ici qui s'appelle plutôt
un contrôleur d'animation C'est le cœur
de l'animateur. C'est
ce qui lui indiquera quelle animation
faire, à quel moment. Si nous double-cliquons
dessus, nous
pouvons voir cette nouvelle
fenêtre s'ouvrir ici. Et voici ma manette, c'est mon joueur animateur. Voici
mon clip d'animation. Pour donner un bref résumé, prenez un peu de
recul, il
s'agit d'un composant que
nous venons d'ajouter. Cela dit simplement, d'accord, cet objet est quelque chose
qui a un contrôleur. C'est cette manette que
je suis en train de regarder ici. Cela revient à dire, d'accord, dans
quelle animation est-ce que je veux
jouer, à quel moment ? Et cette animation est
ce clip ici, qui contient des informations spécifiques. Je vais en avoir un qui court, je vais en avoir un qui saute, je vais en avoir un inactif. Et puis ma manette
va dire, d'accord, sois dans celui-ci quand
je fais ceci, sois dans celui-ci quand je
fais ceci, sois dans celui-ci. Quand je fais ça, vous pouvez
penser à la course du joueur. Ou les animations,
comme les vidéos en boucle, course, le saut, les
chutes, etc. Vous pouvez penser à
ce lecteur comme à ce
qui indique à Unity, accord, quelle vidéo
jouer, à quelle heure ? Et puis cette manette d'
animateur dit simplement
à l'objet : «
OK, j'ai connecté cette
manette de joueur Utilise-le comme ça. C'
est donc beaucoup moins important. Mais c'est basé
simplement sur le fait de dire, d'accord, c'est quelque chose
qui a une manette et vous devez utiliser
la manette. C'est évidemment important. Si
je le désactivais, cela ne marcherait pas. Mais cette manette est en fait
un fichier dans mon jeu. Je dois donc créer un lien vers ce contrôleur et
cet objet spécifique, c'est
ce que Unity
a fait pour moi ici. Quoi qu'il en soit, ne
vous
inquiétez pas trop de la signification de
chacune de ces choses, suivez
simplement ce que je fais.
Évidemment, nous venons de créer
un animateur, puis nous avons une
animation d'animation de fenêtres Et nous avons créé un nouveau fichier pour mon joueur appelé player run. Et cela a créé automatiquement un contrôleur
pour nous. Commençons donc à animer les courses des joueurs.
Zoomons sur mon lecteur. Et je vais cliquer sur
ce bouton Enregistrer, qui indique essentiellement que j'enregistre
actuellement des choses. Mon animation. Dans la première
partie de mon animation, je veux jouer sur ce
sprite ici Je vais choisir
moins deux ici. C'est le tout
premier sprite que je veux. La raison pour laquelle j'ai ce
bouton d'enregistrement enfoncé est qu'il
indique essentiellement que les modifications apportées
à l'
éditeur font actuellement
partie de l'animation. Si je le déplace
ici, il changera
de position dans le
cadre de l'animation. Mais ce n'est pas ce que je veux vraiment. Je veux juste que ce soit le sprite. Je vais changer mon
sprite en moins deux, bouger d'un quart de seconde De toute évidence, 60, c'est une seconde
dans cette vue. Et si je clique sur Play, je ne
vois encore rien car je n'ai rien fait.
Mais je te montrerai plus tard. Je vais passer
à moins trois. Je veux vraiment que ce soit
à 15 ans. Ensuite, à 30 ans, je veux
choisir moins quatre. Ensuite, à 45 ans, je veux
choisir moins cinq. J'ai les quatre sprites que vous allez créer pour
mon animation de course à Vous pouvez y voir un
rapprochement. En fait, je voudrais ajouter
une dernière chose ici. Peu importe ce que j'ajoute, mais tant que j'
ai quelque chose ici, je vais
revenir à moins deux. Tant que j'ai
quelque chose à ce
sujet, l'unité sait que cette animation dure
exactement une seconde. Ce cadre ne
dure en fait qu' une seule image, puis
il y revient. Je ne l'ai pas
ici, même si cela
ne fait pas techniquement partie de
l'animation en cours. Unity va sauter
cette étape ou plutôt exécuter pendant une image, puis
revenir directement à celle-ci. n'est pas ce que je veux, laisse-moi m'assurer
d'avoir quelque chose ici. Si je clique sur Play, nous pouvons vraiment
voir ce genre de
rapprochement et ça a l'air bien.
Ça a l'air plutôt cool. À mon avis, je ne suis pas
le meilleur animateur, mais ce sera
l' animation courante
de notre jeu Nous pouvons toujours modifier
la vitesse et autres choses de ce genre à l'intérieur de
cette manette Si nous sommes ici,
cliquez sur l'animation Nous pouvons modifier la
vitesse de lecture lorsque nous sommes dans le jeu, mais pour l'instant, c'est comme
une animation de base. Je dirais que c'est plutôt
bon pour courir. Allons-y et créons
deux autres animations. Idole du joueur. Ce sera en fait
une chose incroyablement simple. Nous allons juste nous
assurer que Unity
sait que nous voulons participer
à ce sprite Il ne s'agit
donc pas vraiment d'une animation, mais d'un décor de sprite Mais nous allons l'
utiliser pour le dire à Unity. OK, assurez-vous que vous êtes
dans ce sprite. Notre animation
n'est donc qu'un seul sprite. Nous allons faire
exactement la même chose pour jump, Play a jump, et nous allons
choisir Sprite moins six, qui est notre animation de saut Vous voyez ici maintenant
qu'il est en train de sauter. Si l'un ou l'autre
veut être comme ça, si on court, c'est ce que nous
allons faire. Maintenant, toutes nos
animations sont terminées et corrigées. Il ne
reste plus qu'à élaborer la logique qui lui indiquera laquelle
faire à quel moment. Ensuite, la dernière chose que nous devons faire est d'ajouter un peu de code qui sera crucial pour définir cette logique. Pour créer cette
logique, nous allons passer
à ces paramètres ici. Et ce sont comme
des conditions que nous voulons fixer. Nous voulons donc avoir une condition
pour savoir si nous sommes en train de
courir ou non,
évidemment, parce que
nous devons
savoir s'il faut jouer aux animations
en cours d'exécution. Disons que c'est en cours d'exécution. Créons un autre
milliard, nous
allons dire qu'il est
ancré parce que nous voulons savoir si nous
sautons ou non ou plutôt si nous sommes au
sol ici. Si nous les examinons réellement, il
s'agit de deux milliards. Elles peuvent
être vraies ou fausses. Ce que je vais faire
maintenant, c'est
créer une logique qui définit
essentiellement ces trois animations
comme étant jouées à certains moments, en fonction de
laquelle des trois animations est vraie
et laquelle est fausse. Donc, pour ce faire, je vais me
rendre ici dans n'importe quel État. C'est en fait très, très utile pour ce qui est de l'animateur. Et il s'agit essentiellement de dire, d'accord, quelle que soit
l'animation jouée, car ce
sont ce que l'on appelle des nœuds d'état. Et c'est comme dire, d'accord, tant que je suis dans l'animation dirigée par le
joueur, je suis dans cet état géré par le joueur et je peux être dans l'état inactif
du joueur. Je peux être en état de saut de joueur. Nous créons une machine étatique très
basique. Mais ce nœud d'état quelconque nous permet
essentiellement de dire, accord, quel que soit l'état
dans lequel je me trouve, passez de là à celui-ci. Et la façon dont nous allons
passer de là à cela, ou plutôt entre ces
différentes animations, est d'utiliser les transitions. Si je continue et
que je lis ici, je peux faire la transition, d'accord ? Transition de cela à cela. Et c'
est dans cette transition que j'ai défini ma logique. Supposons que je le veuille, tant que je ne cours pas, c'est faux de
courir. Je veux passer au ralenti. Tant que je ne suis pas immobilisé, je veux passer du mode veille au saut. Et tant que je suis ancrée, je veux
passer du saut à la course. Cela peut sembler
bien, car nous avons ici une structure rudimentaire
assez basique Mais c'est en fait très imparfait parce que nous
n'avons aucun moyen, tout d'
abord, d'aller
de course en saut Tant que nous courons
et que nous sautons, nous ne pouvons que rester inactifs. Si nous courons, que nous n'
arrêtons pas de courir et que
nous sautons, nous ne
bougerons pas, nous allons rester dans mon animation de course. En plus de cela, si je saute
et que je le suis vraiment,
quand j'atterrirai, je recommencerai à courir ,
puis je passerai
au ,
puis je passerai
au ralenti parce que j'ai
ce truc ici. Mais c'est une sorte
de machine très défectueuse parce que je n'ai même pas d'
états qui définissent tout Si je veux que cela
soit vraiment complet, je devrais faire une
transition là-bas, une transition là-bas, ainsi qu'une
transition là-bas. Et puis ce serait
un peu plus complet. Mais tout cela est une façon assez
compliquée de procéder. Et je ne vais
pas m'en servir. Je souhaite les supprimer. Au lieu de cela, je vais utiliser
ce mode n'importe quel état, ce
qui facilitera beaucoup ce processus. Tout d'abord, je vais
partir de n'importe quel état, je vais dire
faire la transition
comme la dernière fois, en cliquant avec le bouton
droit de la souris et en cliquant dessus. Effectuez la transition pour passer au mode inactif. Et je dis que
tant que je ne cours pas, tant que je suis immobilisée, je veux rester inactive, car cela signifie
que je
reste immobile par terre ici. Je tiens à dire que
tant que je suis ancrée, c'est-à-dire que je ne suis pas en
l'air et que je
cours, j'ai envie de
courir ici. Je tiens à dire que chaque fois je ne suis pas ancrée, j'ai
envie de sauter. Parce que mon animation de saut ressemble en fait davantage à une animation de
chute. Vous pouvez voir ici
si nous entrons dans le jeu et que nous cliquons sur l'animation, que vous sélectionnez le joueur, que nous
regardons notre animation de saut, que nous y jouons, c'est en fait
comme une animation de chute. Cela fonctionne évidemment pour
sauter ou tomber, mais il aura une belle apparence
lorsque nous l'utiliserons,
car il pourra jouer chaque fois que nous
sautons ou même si nous
tombons simplement de quelque chose, c'est exactement ce que nous voulons. Maintenant, c'est en fait à peu près tout ce que nous devons
faire pour notre machine logique. Mais il y a encore quelques
ajustements. Tout d'abord, définissons-le comme état par défaut pour lequel nous cliquons avec le bouton
droit de la souris pour définir comme état par défaut de la
couche. Cela ne fait pas vraiment de différence,
mais j'ai juste l'impression
que l'animation inactive
devrait être une animation par défaut
plutôt que celle en cours d'exécution. Il s'est automatiquement mis en marche parce que c'est le
premier que nous avons créé. Mais ça ne fait pas vraiment de
différence , c'est
très bien. La deuxième chose que nous voulons
faire est de fixer cette durée
de transition à zéro. Parce que je trouve
qu'avec Pixi Lad c'est beaucoup
mieux si c'est zéro Parfois, vous pouvez le modifier un peu
parce que vous
voudrez peut-être être 0,1 0,2. Je
préfère mettre à zéro, mais je pourrais aussi
changer cela Je vais voir, pour l'instant,
je vais me mettre à zéro et m'assurer que toutes mes
conditions sont réunies. Tant que je ne cours pas et que je suis immobilisé, je
veux rester les bras croisés. Tant que je suis
au sol et que
je cours, je vais courir. Ouaip. Et chaque fois que je ne suis pas
immobilisé, j'ai envie de sauter. Parfait C'est
donc peu près tout ce
que nous devons réellement faire. Si je clique sur Jouer maintenant, vous pouvez voir que j'ai mon joueur et qu'il va rester dans
l'animation des sauts parce que je n'ai pas été immobilisé. Et en fait, si on
regarde les choses ici, nous avons actuellement un
joueur et il saute. Mais en fonction de ce que
je choisis,
disons que j'ai pris les choses en main. Maintenant, je
vais vraiment rester inactif. Tu peux voir que j'y reste. Si je définis running sur true, je
devrais être dans mon état de course, ce que je crois être. On dirait que tout fonctionne. Tout devrait bien
fonctionner ici. En fait, il semble que nos transitions soient
plutôt bonnes. Mais nous ne voulons évidemment pas avoir
à cliquer dessus en fonction de ce que nous voulons lorsque nous jouons réellement au jeu. Nous voulons être en mesure de dire, d'accord, quand je fais quelque chose en
particulier, de les configurer, faire quelque chose quand je cours, de le
configurer pour qu'il fonctionne, plutôt que de me
demander de cliquer ici. Et nous allons
utiliser du code pour le faire. Passons ici
à mes scripts de code. Et je vais
ouvrir le mode de déplacement des joueurs. Nous allons utiliser exactement
le même script que celui que nous avons utilisé lorsque je déménage pour montrer essentiellement si je vais
jouer certaines animations Et je vais
tout d'abord créer une référence à cet animateur, l'appeler Anum Même si je fais référence
à l'animateur, je m'adresse au contrôleur de l'
animateur Il indique une interface pour contrôler le système d'animation Mec Anum Mais oui, je fais essentiellement
référence à la manette. Je vais faire référence aux paramètres
que
nous venons de définir. Je vais aller
ici, revenir à mon script et je vais dire,
en dessous de ces collisions, des
éléments parce que c'est à ce moment-là nous changeons,
c'est une variable fondamentale. Vous pouvez voir que
j'ai déjà une variable ici qui
me dit s'ils sont
au sol En fait, je dois m'
assurer qu'il est fondamentalement aligné sur mon paramètre d'
animateur Vous accédez donc au paramètre
animators,
nous passons à anambool,
ouvrons les parenthèses et vous
prononcez le nom du bool, My b is ground. Ensuite, je vais le définir sur ma variable ancrée. En fait, je ne vais le
faire qu'ici, et ici, je pourrais le
faire à chaque image si je le voulais. Si je le fais uniquement
ici, c' est parce que ce
sont en fait les deux seuls points
de tout mon script où j'ai changé la variable
ground. Et il n'y a aucun autre endroit où
cela pourrait changer. C'est donc la seule
fois où je dois
mettre à jour mon animateur et lui dire, d'
accord, si je suis entré en collision
avec quelque chose, c'est vrai Ensuite, assurez-vous que mon
animateur le met sur true. Si je laisse quelque chose, c'est faux. Et assurez-vous que mon animateur sache que je dois définir la valeur false Et ce n'est en fait
que la base de ce dont
nous avons besoin pour notre système
fondé sur des bases solides. Si nous devions jouer
au jeu maintenant, il devrait
plutôt bien fonctionner. Chaque fois que nous atterrirons, nous
serons immobilisés,
ce paramètre est réglé sur true,
puis l'animation sera diffusée, qu'elle
soit inactive ou sautée. Mais nous n'
avons toujours aucun moyen de contrôler mon animation
en cours d'exécution. Nous allons donc ajouter une
ligne de code ici. Et cette section,
pour être très simple, nous allons juste animer. Définissez bool, comme la dernière fois. Nous voulons définir le bulow où nous allons déterminer si
nous courons ou non en utilisant ce x float N'oubliez pas que ce x float est modifié en fonction des touches
enfoncées. Tant qu'ils appuient
sur a ou D,
ou sur les flèches avant ou arrière, cela signifie en gros, d'
accord, attribuez à x un nombre
qui nous permet de dire, tant que x est un
nombre que nous sommes en train de courir. Mais tant que x n'est pas un
nombre, nous ne courons pas. Et nous n'avons pas à nous
soucier de savoir si nous courons dans les airs ou non. Parce que si nous nous en souvenons, notre contrôleur
d'animation ne prend pas réellement en compte le fait que nous
courons ou non en l'air. Tout ce dont nous avons besoin pour courir
, c'est d'être
ancrés et de courir. Et tant que
nous ne sommes pas immobilisés, même si nous
courons, la bonne animation sera toujours diffusée. Nous devrions nous
soucier de définir cette variable en
cours d'exécution selon
que nous nous déplaçons ou non. que nous allons faire. Nous
allons taper est en cours d'exécution, le
définir sur x n'est pas
égal à zéro. Cela va dire que lorsque
x est égal à zéro, cela va être
faux car cela signifie que x n'est pas égal à zéro. Tant que x n'est pas nul,
cela sera vrai. Il va dire, d'accord, passez
à cette déclaration. Cette déclaration renvoie
en fait un booléen vrai ou faux Lorsque x est égal à zéro,
il renvoie la valeur false. Et lorsque x n'est pas
nul, il renvoie vrai. Nous disons OK,
tant que x n'est pas nul. En d'autres termes, tant que nous bougeons, le set devient vrai. Lorsque x vaut zéro, set
prend la valeur false. Ce sera
en fait tout le code
dont nous avons besoin pour
configurer parfaitement notre animateur Si nous retournons dans Unity,
revenons à notre scène, assurez-vous d'
avoir une référence à l'animateur que nous
venons de créer ici, faites-le glisser, juste comme
ça. Nous appuyons sur Play. Nous devrions en fait voir
toutes les animations prendre parfaitement vie. Nous pouvons voir que nous tombons, que nous atterrissons et que nous avons notre animation de
course à pied. Oh, ça n'a pas l'
air de fonctionner. Il semblerait que ce
ne soit que la première image, ce qui est
très intéressant. Nous avons donc quelque
chose à régler,
mais pour l'instant, il semble que tout le
reste fonctionne bien. Nous devrions avoir à
déterminer pourquoi notre animation en cours ne
joue que la première image ? Et c'est ici que l'
on peut faire la transition vers soi-même. C'est en fait quelque chose
que j'ai oublié de mentionner, cela peut
simplement faire la transition vers l'état de soi. Vous devez en fait vous rappeler
de ne pas utiliser de contrôleur
d'état si vous l'utilisez.
J'avais oublié ça. Mais ce qui va se passer, c'est qu'
avec ces deux animations, nous ne l'avons pas remarqué
car ces animations ne sont pas
vraiment des animations. Ce ne sont en quelque sorte
qu'un seul type de cadres vers lesquels nous étions continuellement en train de faire la
transition Mais nous n'avons pas remarqué différence, car il ne
s'agit que d'une seule image. Mais nous avons pu constater qu'
avec Player Run, nous n'en étions qu'
au début de l'animation Si nous décochons cela,
cela ne nous
permettra pas de l'
actualiser continuellement Nous disons de n'y passer qu'une seule fois et de ne pas
continuer à y passer. Tu peux y rester
tant que tu ne passes
pas à l'autre. Tant que nous n'avons pas vérifié
cela, cela va vraiment tout
régler et
faire en sorte qu'il ne rafraîchisse pas
continuellement sa transition vers ce produit Il ne fait la transition qu'une seule fois. Et puis, quand il essaie de
passer à d'autres
endroits, il le fait Mais elle n'a pas besoin de continuer à aller vers elle-même,
ce qui est une bonne chose. Et si une minute nous avons
apporté cette correction, cela devrait être
tout ce que nous devons
faire pour avoir un système
d'animation fonctionnel. Maintenant, nous pouvons voir que nous courons
normalement, comme nous le voulions. Évidemment, nous ne faisons pas encore
demi-tour
, et c'est la dernière
chose que je vais ajouter avant de clore cette vidéo. Mais nous courons et sautons,
comme nous le voulions. d'abord, je vais juste
accélérer les choses un peu parce que je trouve que c'est
un peu lent. Et j'espère que cela devrait
être tout ce dont nous avons besoin pour rendre notre jeu un
peu plus réaliste Oui, on peut le voir maintenant.
Ça a l'air plutôt bien maintenant en fait,
tout fonctionne et nous avons fait un saut. Et
en fait, tout semble
beaucoup mieux qu'avant. Mais il y a une chose que
nous devons changer, c'est le fait que le joueur est toujours
tourné vers l'avant. Et c'est en fait
un changement très simple. Tout ce que nous allons faire, c'est
passer ici, jusqu'à cette déclaration de
mise à jour corrigée. Et nous allons dire si RB, la vitesse x est inférieure à zéro En d'autres termes, si
nous reculons,
demandez au joueur de
transformer sa rotation Nous allons écrire
Quaternion Euler. C'est juste une façon élégante
de dire les angles. Ne vous inquiétez pas trop à ce sujet. Nous allons
le régler sur notre x zéro, notre Y sur 180 et notre X00 Si nous abordons notre jeu, nous pouvons réellement voir ce
que cela va donner. Ouvrez mon jeu de plateforme
ici, passez au joueur. Nous pouvons voir que nous
les avons mis à zéro. Si je mets un y à 180, cela va faire volte-face à
mon lecteur, et c'est exactement ce que je veux. Et tant que je suis à zéro, ce n'est pas le cas. Et cela va
mettre à jour toutes nos animations
comme ça pour nous. Parce que nous faisons
pivoter l'objet lui-même, ce qui est en fait très utile. Nous allons simplement
ajouter une autre ligne de code ici qui indique si R vlocity x est
supérieur à zéro, en d'autres termes, si
nous avançons
, nous voulons avoir
une rotation normale Comme
je l'ai dit, cela va évidemment
s'occuper de toutes les animations
pour nous, tout devrait être
fait automatiquement. Si je clique sur Jouer, nous pouvons voir maintenant ce nouveau code va nous
permettre de faire face en arrière, ce qui va en fait donner une bien meilleure
apparence à notre jeu J'espère que maintenant vous pouvez
tout voir prendre vie et que notre jeu est bien
meilleur qu'il ne l'était auparavant Et toutes mes
animations fonctionnent parfaitement.
C'est plutôt cool. J'espère que vous avez pu
suivre et que vous avez un jeu assez
similaire et qu'il est bien meilleur
qu'à l'origine. Et vous avez une idée
de la façon dont nous allons créer
le reste du jeu. Mais pour le moment, si tout fonctionne comme moi, c'est génial. J'espère que
vous avez pu
suivre ce que
nous avons fait et que vous avez pu
animer votre propre joueur de la
même manière que moi Dans la prochaine vidéo, nous
allons ajouter ennemis et tout un tas
de nouveaux ennemis intéressants. Et nous allons fabriquer encore
un tas de pneus avec ces ennemis, juste pour rendre notre
jeu un peu plus varié. Ensuite, nous passerons à toutes les dernières
choses que vous aurez à faire,
à détection des
clics, son
et
tout le reste par la suite. Ainsi que quelques touches finales juste pour le rendre plus beau. Et aussi une boucle de jeu, bien sûr. Mais pour le moment,
les éléments
de base de notre jeu sont en quelque sorte terminés. Et nous avons ajouté des sprites pour lui
donner une bien meilleure apparence. C'est donc tout
pour cette vidéo. Et dans la prochaine
vidéo, comme je l'ai dit, nous allons ajouter
d'autres ennemis intéressants. Mais pour le moment,
si tout fonctionne comme moi, c'est génial. Et nous allons
commencer par un
nouveau développement dans la prochaine vidéo. Merci.
9. 8. Ajouter des ennemis plus intéressants: Bonjour, et bon
retour sur Unity. Dans cet épisode, nous allons ajouter quelques autres
ennemis intéressants à notre jeu. Parce qu'en ce moment, nous n'
avons que des pointes et des balles pointues. Même s'
ils
varient quelque peu selon les pneus que nous avons, ce ne sont varient quelque peu selon les pneus que nous avons, pas les types d'ennemis les plus
intéressants et ce ne sont en fait
que des obstacles. Nous allons ajouter
deux nouveaux types d'ennemis, et j'ai évidemment déjà créé
des pointes pour ceux-ci L'un d'eux
sera un ennemi en patrouille, et l'autre sera comme un ennemi chronométré temps en temps,
c'est dangereux, mais ensuite ça s'éteint et
ça ne l'est plus. Et pour commencer, nous allons d'
abord importer tous les
sprites ball dont nous avons besoin Je vais
cliquer avec le bouton droit sur Importer un nouvel acide. Et ce sont en fait tous
les nouveaux sprites dont
nous avons besoin pour notre ennemi Nous avons donc quatre sprites robots,
deux sprites pour cet ennemi
choquant, puis un sprite supplémentaire
pour notre Si nous avons obtenu ce sprite
Spike Ball supplémentaire, c'est parce que nous allons en fait
animer un peu notre Spike
Ball Et c'est en fait ce par quoi je
vais commencer en premier, et pour m'assurer que
tout cela est
réglé sur les bons
paramètres, évidemment. Et en fait, faites-le simplement
en sélectionnant chaque sprite Ça va les remplacer, mais c'est bon tant qu'
ils sont tous pareils Filtrez en 12 points et appuyez sur Appliquer et tout ce que nous savons
maintenant est identique. Et c'est aussi ainsi que vous
pouvez vérifier que tous vos
sprites sont identiques Tant qu'ils sont
remplis, vous êtes doué. Nous allons passer aux préfabriqués. Nous allons créer
quelques nouveaux préfabriqués. Je vais ouvrir celui-ci
et je vais simplement copier
pour que les tags
restent les mêmes. Celui-ci va
être notre robot, et celui-ci va
être comme une batterie. Avant cela, je vais d'abord réparer
ma boule à pointes
en animant et je vais passer à l'
animation de fenêtres, à l'animation Toutes ces choses supplémentaires que
nous avons faites en termes de phases et d'états, et tout
ça, c'est de l'animation. Et c'est assez simple, mais nous pouvons avoir une animation encore
plus simple si nous n'avons qu'une seule animation. Si nous voulons une
animation continue qui se
joue tout le temps, ce que je veux
avec une boule à pointes, me
suffit de créer, d'accéder à mes actifs,
de créer mes actifs, il me
suffit de créer, d'accéder à mes actifs,
de créer de l'animation et de l'
appeler Spike Ball Ensuite, toutes les
demi-secondes, je vais avoir
envie de passer au
deuxième sprite Spike Ball, celui que j'
ai là-bas Copiez-le et allez-y. Vous pouvez le voir en action ici. Ce sera notre animation
Spikeball. Cela rend juste le jeu
un peu plus intéressant. C'est en fait tout ce que nous
devons faire, car si nous
ouvrons notre animation, nous
pouvons passer à l'animation. Nous pouvons ouvrir notre boule à pointes. Tu vois, j'ai un État. Bien sûr. Mais je n'ai pas
besoin de paramètres transit
ou de quoi que
ce soit d'autre parce que c'est le seul état dans lequel j'ai toujours
envie de me retrouver si j'y retourne, tant que je suis
évidemment une boule à pointes , quel est cet objet. Tant que je
reprends mon jeu et que je peux voir dès que
je reçois une balle à pointes, que l'animation
fonctionne parfaitement et que cela rend le
jeu encore plus beau Il se peut que je
doive les déplacer un peu parce qu'ils
semblent encore assez proches. Tout est encore assez grand, mais ça a l'air
plutôt bien pour le moment. Et les spit balls s' animent exactement comme
nous en avons besoin. C'est l'époque de
l'animation que nous allons également avoir
pour le reste de
nos ennemis. Revenons ici à notre robot et commençons, tout d'
abord en
animant celui-ci Je vais supprimer le
Cercle Collider et remplacer par Robot Sprite Alors c'est exactement la même
chose avant. Cela va créer
un animateur pour moi, je vais passer à
Assets Animation C'est ce que l'on appelle une animation robotique. Alors je crois que j'ai quatre robots sprites
différents. Et ils vont juste
faire tourner le volant. Et les yeux
changent légèrement de couleur. Nous y voilà. Nous pouvons voir qu'en
action ici, la roue
va évidemment tourner. Et les yeux, et
si vous pouvez les voir, changent légèrement de
couleur et reviennent en arrière. Ce sera
la seule animation dont
nous aurons besoin pour notre robot. Maintenant, nous avons réglé le problème de notre
robot. Faisons exactement la même
chose avec notre dernière, qui
sera notre batterie. Et celui-ci va être
un peu plus compliqué. Commençons d'abord par y aller. J'ai été surpris par
les fichiers, je ne sais pas pourquoi, mais ce sera le point de départ
pour notre batterie Nous avons cette
batterie ici. La façon dont cette animation
va
fonctionner va être
légèrement différente. Oui, la raison pour laquelle je le dis
pour la fin est assez précise. Nous n'aurons
toujours qu'une seule animation, mais ce sera une
animation avec un peu de logique,
différente de celle que nous avions avant. Appelons-le Battery Dot. En gros, nous ne
voulons pas l'animer. Disons un bon moment, disons 3 secondes. Nous ne voulons pas qu'il
se passe quoi que ce soit pendant les 3 premières secondes, nous voulons juste rester sur
ce sprite, nous sommes sur le point de le faire, nous allons
rester là-bas Ensuite, les minutes 3
secondes sont passées de quatre. Dans les 2 prochaines secondes, nous
voulons avoir l'animation
choc
, et j'ai des
sprites ici Assurez-vous simplement que cela ne
dure que 3 secondes. Pendant les 2 prochaines secondes, nous
allons le faire, puis nous allons
revenir à notre activité normale. Nous n'avons pas vraiment besoin de le mettre par la suite, car il le
fera pour nous Mais pendant la
demi-seconde
qui suit, la minute 3 est écoulée, minute 3 est écoulée, et nous pouvons utiliser ces petites choses pour
passer à l'étape suivante. Une image plus tard,
nous voulons passer à cette nouvelle animation d'
ici, qui est un choc, deux. Et nous pouvons voir si là nous
commençons à changer l'animation. Et là, à partir d'une seconde
ou plutôt une image après 3 secondes,
jusqu'à 20 images après. Nous allons
vouloir entrer dans celui-ci, changer, puis revenir à
celui-ci à 40 ans,
puis le changer à nouveau. Nous pouvons voir que ça va ressembler
à ça. Je pense que nous devrions l'
avoir encore une fois. Passez à la vitesse supérieure. Je pense que
c'est le cadre que nous voulons. C'est faux,
désolé, j'ai copié le même deux fois.
Laisse-moi le mettre là. Ensuite, ici, nous allons
vouloir terminer l'animation. Il va donc rester immobile pendant 3 secondes, puis il
sera actif, puis il s'arrêtera
à nouveau. Et puis 3 secondes plus tard,
ça va bouger. Et ce sera l'
essentiel de notre sprite ici. Et en fait, c'est également ainsi que fonctionnera l'ennemi. Et nous devons ajouter un peu de logique
à cette animation, car elle fonctionne
enfin correctement. Mais nous avons besoin de
quelque chose qui indique au jeu quand il est dans cet
état et quand il ne l'est pas. Nous allons utiliser
ici ce que l'on appelle des événements. Assurons-nous donc de passer exactement une image au bout de 3 secondes. Ajoutons un événement ici. Et aussi juste à la fin
de notre animation, ici. Ou plutôt,
je vais le
mettre au début du nouveau,
juste pour que nous l' ayons
ici juste au début de notre période pour avoir un
autre événement ici. Et je vais
expliquer comment ils fonctionnent,
mais en gros, il
existe des moyens d'accéder au code attaché à
cette batterie pour dire, accord, oui, elle doit
maintenant être active et
c'est ce que vous devez
faire à ce stade. Je vais commencer
par ajouter mes collideurs. Expliquez maintenant comment nous allons
faire fonctionner cette batterie, mais en fait, cela va
être assez simple. Commençons par ajouter
le collisionneur à cela. En fait, ajoutons
un box collider. Ce sont toutes les
parties que nous voulons
jouer dès que la chose
choquante entre en action. Vous ne voulez pas pouvoir toucher
à tout
cela, à tout cela ici, ni à celui-ci, qui sera la batterie
elle-même. Parfait Je
vais juste m'assurer d'avoir
activé ces deux déclencheurs. De toute évidence, s'il s'agissait d'un
ennemi à part entière comme
celui-ci, il serait totalement
impossible de l'esquiver car il est impossible de ne rien
toucher à tout cela. Mais c'est là que
les événements seront utiles. Ces planeurs ne seront actifs que pendant cette période parce qu'
ils sont tous deux des déclencheurs Nous allons
donc évidemment les parcourir de toute façon Mais pendant cette période,
ils
seront actifs, puis une fois
cette période terminée, ils ne
le seront plus. En fait,
programmons-le rapidement. Créons un nouveau script. Nous l'appellerons Battery Script.
Nous allons le charger. Et nous devrons également créer un script pour un autre
ennemi, le robot, auquel je
reviendrai dans une minute. Mais créons d'abord
ce script de batterie. Et nous allons simplement
avoir deux vides simples. Pour qu'il y ait un vide public
, dis-le tout. Je vais en créer un autre en dessous et
l'appeler batterie allumée. Nous allons créer une référence
à nos deux planeurs. Boîte publique, diapositive 2 D, nous allons avoir la boîte
1 et l'appeler boîte deux. Tout ce que ces garçons vont
dire, c'est que lorsque la batterie est activée, la
case 1 est activée est fausse, la case 2 activée est fausse, alors nous allons faire exactement
la même chose avec batterie allumée, sauf les
régler sur vrai. Ce que je veux dire, c'est que
dès que j'appellerai
ce vide ici,
la batterie allumera dès que j'appellerai
ce vide ici, ces deux
planeurs Mais dès que j'
appelle ce vide
ici, la batterie les désactive. En fait, nous allons également
commencer par les désactiver. Cela signifie qu'à la minute où cet objet apparaît, il n'a rien d'actif Mais dès qu'une
animation choquante est diffusée, nous voulons qu'elle soit active
et qu'elle soit active. Et comme il s'agit d'une étiquette ennemie, nous allons
coder en disant logiquement, accord, vous devez subir des dégâts Mais quand ce sera terminé, nous
voulons que tout soit redémarré. Nous allons revenir à
notre animation ici. Nous retournons à
notre événement ici. Et nous pouvons simplement
choisir une fonction à appeler ici, mais il faut que ce soit une fonction
d'un script joint. Nous allons donc utiliser notre
script de batterie. Déplaçons-nous directement vers le
bas et mettons-le là-bas. Et nous pouvons voir ici que nous avons notre script de batterie juste là. Nous avons un script de batterie ici, qui est écrit là-bas, et nous avons notre véritable script. J'ai découvert que parfois, lorsque
vous ajoutez des éléments portant des noms tels qu'un
script de batterie ou un script, cela peut
générer une erreur indiquant
« oh, nous ne trouvons pas le script ». Assurez-vous que la classe existe. Et c'est peut-être
parce que vous avez nommé votre script ou votre mot réservé. Par exemple, je veux essayer d'
appeler ma caméra à script unique. Et j'ai toujours eu une erreur et
je ne sais pas ce que c'est. C'est parce que vous ne pouvez pas
vraiment utiliser le mot caméra. La façon de résoudre ce problème
est simplement de changer ce mot ici
et ce mot ici. Et c'est ainsi que vous
renommez votre script. Si celui-ci m'inquiétait, parce que j'ai eu
quelques erreurs par le passé, je pensais l'avoir simplement mentionnée. Je l'appellerai batterie. Ensuite, cela va me
donner une erreur
parce que maintenant il ne sait pas
vraiment ce qu'
est la batterie ou non, mais il le devrait. Ensuite, je vais également
passer à la batterie, et je vais la
renommer en batterie Et assurez-vous de
renommer les deux. Assurez-vous de renommer le
nom du fichier et le nom réel de la
classe qu'il contient Et puis tu devrais
avoir résolu le problème. Si vous rencontrez des problèmes
tout au long du développement, c'est ainsi
que vous les corrigerez. Quoi qu'il en soit, cela devrait
être tout ce dont nous avons besoin. Et ajoutons-y nos
boxgliders. Revenons à notre animation, que nous avons ouverte ici. Passons à notre
événement et choisissons les méthodes de batterie pour
cet événement. Ensuite, nous choisissons d'
éteindre la batterie pour le début. Ce n'est qu'ici que nous
choisissons la batterie allumée, la batterie là-bas et
la batterie éteinte là-bas. Cela devrait en fait parfaitement
fonctionner. Nous avons maintenant créé un préfabriqué
avec notre script ici. Tant que cette
animation est diffusée, dès qu'elle atteindra
ce point, elle appellera ce vide et activera
ces collisionneurs Et vous ne le verrez
pas ici, mais vous le
verrez lorsque nous
jouerons réellement au jeu. Ensuite, vous pouvez voir que cela
devrait fonctionner parfaitement, ce qui
est vraiment très cool. Repartons et
revenons à nos préfabriqués. Nous avons
encore un préfabriqué ici,
qui est un préfabriqué robotisé, que
nous n'avons pas encore terminé Ajoutons un box collider 2 D. Redimensionnons-le
un peu ici Gardez à l'esprit que ce
n'est pas vraiment là qu'il peut
tomber, et cetera Ce sera
là que se trouvera la boîte à succès. Faisons en sorte qu'il soit un
peu plus petit que. D'habitude, comme nous avons tout
le temps, mais pas trop peu parce que nous voulons que
cela puisse frapper, surtout avec ces
petits objets rouges. Déplaçons ça un peu vers
l'extérieur et vers le bas. Ça devrait être une bonne chose pour le moment. Assurons-nous de le
configurer pour qu'il se déclenche. Assurez-vous simplement que tous les autres
sont également réglés sur
des déclencheurs
, au cas où nous aurions oublié
quoi que ce soit, ils le sont en fait, ce qui est cool, nous avons nos animateurs sur ces deux-là et nous avons juste notre
animateur ici Nous avons nos trois ennemis
animés, ainsi que notre
Spike, qui est le seul que nous
n'avons pas animé. C'est en fait à peu près
tout ce que nous devons faire sauf ajouter une certaine logique
aux patrouilles robotisées, car il s'agit d'un ennemi en
patrouille Avant cela,
créons
rapidement quelques pneus supplémentaires , juste pour
affronter ces nouveaux ennemis. Je ne vais pas en faire
trop, mais vous pouvez évidemment en ajouter
quelques autres. Et juste pour gagner du temps, je vais en ajouter un peu plus entre cette vidéo et la suivante. Mais c'est vrai. Je vais juste en
créer trois juste pour mettre en valeur ces nouveaux ennemis. Et ils vont
être très ennuyeux. Ils auront tous soit un seul robot
,
soit robot, et c'est choquant Donc, celui-ci, ici,
je vais juste
utiliser une seule de
ces batteries. Mets-le là-bas. Maintenant, il est évident mon ennemi de batterie est
assez difficile à voir. Si je devais le dire comme d'
habitude j' aimerais
quelque chose comme ça, alors vous ne
pourrez pas vraiment voir le fil, ce qui
rend les choses assez difficiles. Je vais donc
mettre ça en avant, je vais dire ordre par
couches jusqu'à six ou plutôt sept. Et je vais
faire en sorte qu'il soit au-dessus de tout le
reste du cloud. Cela semble un peu bizarre, mais nous pouvons le modifier au fur C'est juste pour que ce soit un
peu plus facile à voir. Déplaçons-le vers le haut. Je pense
que ça devrait aller. Comme je l'ai dit, nous
pouvons évidemment le modifier au fur et à mesure, mais pour l'instant, cela devrait
être un bon
ennemi dans le jeu C'est notre
carrelage 11, je crois. Assurons-nous de
passer au carrelage 12. Et ajoutons simplement un seul
robot juste là. J'aurais dû
descendre un peu parce que nous pouvons évidemment
voir que sans cela, assurons-nous
qu'il
roule toujours au sol. Oui,
ça devrait être bien. Enfin, nous
allons avoir,
disons , un robot et une pointe. Juste pour montrer que vous pouvez évidemment en
utiliser plusieurs par objet. Cela devrait être tout ce
que nous devons faire. Maintenant, la dernière chose
à faire est de simplement coder notre logique pour que le robot
patrouille à destination et en provenance Nous allons utiliser
une solution assez simple ici. Nous allons juste
avoir une variable ici qui définit les limites. Patrouillez-en deux là-bas et
patrouillez deux là-bas. Ensuite, nous
aurons juste un code
qui dira , d'accord,
tant que je bouge, tant que je suis mince de cette façon, tant que moins que
cela, bouge de cette façon. Et je vais vous montrer exactement
comment écrire le code. Mais avant
cela, nous
devons en fait ajouter un corps rigide,
notre robot, afin qu'il puisse se déplacer. Mais nous voulons nous
assurer de le régler sur un corps cinématique rigide afin qu'il ne tombe pas
dans les nuages Comme il n'a pas de véritable collisionneur
attaché à lui, il se déplace simplement
conformément au code Passons ensuite à Scripts
et
écrivons rapidement notre script de robot très
simple. Appelez ça un robot move. Allons-y et
double-cliquons dessus pour l'ouvrir. Ensuite, comme je l'ai dit, tout d'abord, nous devons définir la
vitesse à laquelle il va. Ensuite, nous allons
avoir deux chars. Nous l'appellerons min x et max x, qui seront essentiellement les deux positions
à partir
desquelles il pourra passer. Ensuite, nous allons juste
avoir dans notre correctif, le mettre à jour ici. Nous allons coder
dans notre corps rigide. Nous allons le rendre
public, Richard, le corps deux, D, l'appeler R B. Ensuite, nous allons dire RB, la
vitesse est égale au vecteur
trois, le vecteur deux Nous allons vouloir
régler notre
vélocité ici à quelques valeurs x. Créons une autre
variable, appelons-la X. Ensuite, nous voulons que la vitesse Y de notre RV deux B zéro, toujours parce que nous
n'allons soit
deux B zéro, toujours parce que nous
n'allons pas nous déplacer de haut
en bas avec un robot. Alors la dernière chose
à faire est ici dans
ce cadre de mise à jour. Nous devons dire si la position de
transformation x est inférieure à notre valeur x
minimale. En d'autres termes, si
nous dépassons notre valeur x minimale, nous devons faire deux choses. Tout d'abord, nous devons nous
assurer que nous sommes la bonne direction et que
nous allons faire pivoter le robot comme nous l'avons
fait pour le joueur qui
arrête la rotation du joueur est quaternion.u0 0.0 Ensuite, la deuxième chose que
nous allons faire est
de régler notre x sur notre
valeur positive pour la vitesse. Sinon, nous allons écrire un cours en L s
et nous allons dire
si la position du point de transformation
x est supérieure à si la position du point de transformation notre maximum x. En d'autres termes, si nous ne sommes pas
inférieurs à notre minimum x, mais nous ne sommes pas supérieurs à notre
maximum x parce que nous ne
voulons pas être trop grands
non plus. C'est trop loin, non ? En d'autres termes,
nous allons copier exactement
cela ici
et y changer cette valeur en 180, puis
en vitesse négative. Ce code va dire,
à
chaque vérification d'image, que chaque vérification d'image je ne suis pas en dessous de cette limite
minimale. Si c'est le cas, alors faites demi-tour. Si je suis supérieur à
cette limite maximale, en d'autres termes, si
je ne suis pas
supérieur à la
limite minimale, c'est génial. Mais cela implique que je
dépasse les limites minimales. Je suis peut-être en train de me déplacer vers
la droite. Si je dépasse une
certaine autre limite, alors tourne-moi dans l'autre sens. Cela devrait en fait être
tout le code dont nous avons besoin pour écrire la logique de notre robot. Passons au robot. Ajoutons le script
ici. Le robot bouge. Assurons-nous d'assigner
le corps rigide là-bas. Je veux choisir une
vitesse de départ d'environ cinq, puis ce minimum X, Y, je vais
choisir en
fonction de la vignette de cette première vignette. Je pense que je veux que mon minimum x soit
de -2,9 Allons-y. C'est au minimum x -2,9 Je suppose que mon maximum x sera
assez proche de 2,9 Oui, je vais le
faire à 2.8 En fait ici, mon x maximum est de 2,8.
Vous pouvez le voir ici, c'est en gras parce que
ce
sont des valeurs que je modifie pour cet exemple spécifique de modèle, l'instance
spécifique. Mais c'est très bien,
c'est vraiment ce que tu veux. Cette variable x
va évidemment dépendre des vitesses. Nous verrons ce changement au fur et à mesure. Mais la dernière chose que je puisse faire pour
voir ces robots en action, que je vais rapidement
modifier ce script de tour cartographique. Je vais faire en sorte
qu'il ne contienne que deux éléments pour pouvoir les tester. Je vais d'abord en mettre un avec le robot ici. En fait, je vais
mettre les deux Rob et maintenant, parce que c'est la
seule méthode que j'ai testée, juste pour m'assurer
que cela fonctionne, je vais appuyer sur Play. Vérifiez si je rencontre des erreurs. Il se peut que quelque chose
se produise là où ils se trouvent, c'est ce que
je pensais pouvoir se produire. Donc, les routes volent
actuellement hors des nuages et c'est
parce que nous avons fait référence à une position spécifique
ici lorsque nous avons écrit le code. Et nous l'avons mis dans ce préfabriqué, nous voyons que nous avons ces valeurs
ici qui disent, d'accord,
tant que vous n'êtes ni
moins que cela,
mais ce que nous oublions, c'est qu'il s'agit en fait un objet enfant de cet objet parent
plus grand Il s'agit donc de choisir
un point dans l'espace, pas une référence
ponctuelle à ce nuage. Pour résoudre ce problème, il suffit modifier pour
transformer le point de position local x. Changez ceci pour transformer la position
locale de do x. Puis j'ai remarqué que
je les avais échangés. Cela devrait donc être 180, cela devrait être zéro parce que c'est là que nous
avançons et c'est là que
nous reculons. Alors la dernière chose que nous
voulons faire, c'est
aller ici et nous voulons
vraiment ajouter notre vide de départ. Nous voulons commencer par définir
x comme étant égal à la vitesse, car cette variable x indique
si nous nous déplaçons et elle n'est attribuée que si nous dépassons l'une
des limites Nous voulons également
le définir au début. Tous les changements que nous
venons d'apporter ont du sens. Ne vous inquiétez pas trop pour
les positions locales. Mais en gros, cela ne
fonctionnait pas parce que nous faisions référence à
des positions mondiales alors que nous voulions en fait
des positions locales. Et nous venons d'ajouter cette modification. Nous avons donc commencé par déménager également, et nous nous sommes assurés de prendre
la bonne direction, car c'était en fait
un problème que nous avions. Alors allons-y,
revenons à notre jeu, et voyons si cela fonctionne maintenant. J'espère que tout devrait bien se passer. Vous pouvez voir ici
que nous avons un robot. Annie marche vers le bout. Annie fait
demi-tour, ce qui est parfait. Si je peux rattraper mon retard, je ne sais pas si je
vais y
arriver. Donc,
recommençons. Nous devrions pouvoir voir notre
jeu maintenant avec nos animations Tout peut se dérouler et nous pouvons
croiser ces robots, et évidemment nous allons
devoir essayer de les esquiver. Mais c'est plutôt cool. C'est un nouvel ennemi
redoutable dans nos jeux. Et ils
patrouillent en quelque sorte à côté. De toute évidence, ils ne
vont pas ressembler à ça parce qu'ils sont
tous synchronisés maintenant, ce qui rend les choses encore plus difficiles. Mais au fur et à mesure que nous ajouterons
différentes tuiles
et autres objets et
que nous définirons différentes positions, tout ira bien. Allons-y et
ouvrons ce nouveau. Et en fait,
ce sera légèrement différent. Je vais vouloir que
celui-ci s'arrête là, soit -1,17. Je
vais fixer le
maximum y à 2,72 À part ça, tout
devrait être bon. La dernière chose que nous devons tester est cette dalle de batterie ici. Revenons donc à
notre jeu et
assurons-nous d'ajouter
11 A
à la pile, pour voir si elle
fonctionne parfaitement. Nous allons tester
si nous allons
simplement mettre
le jeu en pause et examiner les tags pour nous assurer que tout fonctionne comme prévu. Nous avons donc actuellement
un robot pour démarrer, puis un robot. J'espère que nous
aurons bientôt une batterie. On dirait que nous avons une batterie, donc actuellement, le mécanisme des amortisseurs semble fonctionner. Mais nous allons devoir
faire un test plus approfondi. Nous allons le suspendre maintenant, car
c' est à
ce moment-là que les collisionneurs
devraient être actifs Nous allons passer par
ici pour ce pneu de sol. Nous allons passer à la
batterie. Et allons-y voir. OK, les deux collisionneurs sont actifs. C'est exactement ce que nous voulons ,
car maintenant c'est l'
ennemi. Mettons-le en pause et
attendons qu'il s'arrête. Et nous pouvons voir que les deux
sont désactivés. C'est donc en fait
tout ce qu'
il nous faut maintenant terminer
pour nos nouveaux ennemis. Comme je l'ai dit, vous pouvez évidemment fabriquer tout un tas de pneus neufs. Je viens d'en créer quelques-uns, mais
je vais en créer d'autres pour la prochaine vidéo afin que nous ayons un jeu un peu plus varié. Vous pouvez en créer
autant que vous le souhaitez, en particulier avec les nouveaux
ennemis que nous avons ajoutés qui
devraient avoir tout un tas de choses
supplémentaires à créer. Et il se peut que nous
rencontrions un ou deux bugs avec ces nouveaux ennemis au
fur et à mesure que nous avançons. Comme il s'agit de nouveaux
ajouts à nos jeux, nous allons voir comment nous
devons les modifier en parallèle Mais j'espère qu'il est dans un état assez
stable pour le moment. Je n'ai rien trouvé
qui empêche cela de fonctionner. J'espère donc que
tout va bien
en ce moment et que votre jeu fonctionne
aussi bien que mal. Nous allons commencer
dans les vidéos suivantes sur l' ajout de la détection des attaques
et d' un véritable système de santé. Nous avons donc un jeu où vous pouvez réellement perdre et recommencer. Ensuite, il
va falloir ajouter toutes les choses supplémentaires,
comme le post-traitement réparation du ciel
et toutes ces choses pour que le jeu
soit un peu
plus beau qu'il ne l'est actuellement. Mais j'espère que vous avez la base d'une plateforme
plutôt cool, un jeu écrit dans Unity. Jusqu'à présent, nous avons actuellement
12 ou 13 tuiles différentes. Et je vais en ajouter quelques
autres maintenant, comme je l'ai dit, et cela devrait vous
permettre de créer à nouveau
une plateforme assez variée et
cool. réalisation de cette vidéo a donc été assez difficile, en particulier pour ce qui est de
quelques nouveaux concepts. Et nous avons un ennemi en
patrouille et
un ennemi qui n'est
actif qu'à certains moments. Mais j'espère que vous avez
pu suivre. Et je vous verrai dans la prochaine vidéo où
nous allons
commencer à ajouter la détection
des clics. Merci.
10. 9. Introduction de la détection de coups: Bonjour, et bon
retour sur Unity. Dans le dernier épisode, nous avons ajouté un
tas de nouveaux ennemis, en plus d'animer
quelques ennemis que nous avions déjà
ajoutés au jeu Ensuite, j'
ai créé tout
un tas de nouvelles tuiles pour les
tester et m'assurer qu'elles fonctionnent
toutes parfaitement. Je vous ai dit que si vous voulez
ajouter d'autres tuiles, vous le pouvez. Et comme je l'ai dit, j'ai créé
quelques vignettes supplémentaires entre
la dernière vidéo et celle-ci. J'ai maintenant une tuile complète, 13 A, et je ne les ai pas encore
nommés, mais 141-516-1718 19.20 Donc la première chose
à faire est de réparer
notre bande d'apparition pour qu'elle apparaisse à nouveau à partir Parce que la dernière
chose que nous avons modifiée, c'est nous étions juste en train de tester
les nouveaux modèles, mais maintenant nous voulons
tous les redevenir. Et comme je l'ai dit,
j'en ai 20 maintenant. Ajoutons-les
donc rapidement à cette liste. Une fois que nous aurons tout ajouté
à cette liste de tuiles de carte, nous devrions
pouvoir cliquer sur Jouer et voir notre jeu complet avec toutes les
nouvelles tuiles ajoutées. J'en ai fabriqué quelques-uns, comme
un avec deux robots, un avec deux de ces
batteries. De toute évidence, il
faudrait sauter là. Ce serait très difficile. Il se peut que nous
devions modifier la longueur de cette animation car
elle est assez régulière Ou il se peut que je
doive modifier le bloc lui-même. Mais actuellement, cela
semble plutôt bon jusqu'à présent. À mon avis, nous avons également
ces 12 robots. Oui, ils sont évidemment
assez difficiles à esquiver, mais ce sera la base des blocs que nous
allons avoir dans mon jeu. Ce que je dois maintenant
ajouter, c'est un système de détection des attaques. Parce qu'
actuellement tout va bien. Mais tu ne peux pas mourir. Tu ne
peux même pas perdre la partie. En fait, même si vous sautez de la carte entière, vous ne pouvez pas perdre. Dans
cette vidéo, je vais
commencer par faire fonctionner la détection des
hits. Ensuite, dans la
vidéo suivante, nous allons commencer par un système de
santé et créer un système
de santé capable de réellement mourir. Mais dans cet épisode, tout ce que nous allons faire, c'est détecter
les hits, qui est en fait assez simple. Il nous
suffit donc de créer un nouveau script. Je vais l'appeler
Player Health. Ouvrons-le. En fait, tout ce que
nous allons ajouter ici, c'est un vide pour être
sûrs de savoir quand
nous subissons des dégâts. Nous allons commencer par
toutes les autres questions de
santé plus tard. Pour l'instant, tout ce dont nous avons besoin, c'est d'un vide
public, de dégâts. Nous allons faire ce que l'
on appelle un paramètre, qui est comme une valeur que vous
pouvez transmettre dans un vide. Comme je l'ai dit, un
vide est une méthode, c'est un bloc de code
que vous pouvez appeler. Ce paramètre est une valeur
que vous pouvez saisir dans ce bloc. Quand vous l'appellerez, je
vais dire « into damage ». Ensuite, chaque fois que j'appelle
ce bloc de code, je peux choisir l'ampleur
des dégâts que je veux infliger. En d'autres termes, je
peux choisir ce que je veux que cette valeur soit. Je vais m'en
débarrasser. Je vais juste écrire Print Player. Ensuite, je vais arrêter complètement
mes
dégâts variables. Ajoutez un espace là-bas et je vais m'assurer que
cela indique deux chaînes, donc c'est le bon
type de variable. Maintenant, cela utilise quelques points que nous n'avons pas
réellement abordés. Comme je l'ai dit, des paramètres
et deux méthodes de chaîne, mais ce n'est pas si important. En gros, comme je l'ai dit, une méthode est quelque chose que vous pouvez appeler à un moment
donné et le code qu'elle contient exécutera tout cet entier ici
dit que lorsque
je l'appelle, je peux également choisir une valeur. Je peux donc maintenant choisir
différentes choses, peux infliger
des dégâts différents. Par exemple, un robot
peut faire deux dégâts, mais une pointe n'en fait qu'un. Ensuite, quand
je l'appelle je dis simplement que j'imprime à l'écran. Je dis que ce joueur a subi, puis je donne le montant des dégâts
que j'ai subis. J'ai donc écrit Damage. Et comme il s'agit d'un entier, je dois le changer en chaîne. Si je veux l'utiliser
dans un relevé imprimé, je dis dommage. Maintenant, il ne me reste qu'à créer un nouveau vide. Je vais appeler cela un vide
sur le déclencheur 2 D et c'est en fait très similaire à celui que
nous avons utilisé auparavant sur le vide de collision, sauf
qu'il ne s'
agit que de quatre collisionneurs qui sont réglés pour se
déclencher, soit tous ceux que nous avons
utilisés sur nos ennemis Nous allons dire si collision game object point compare tag, comme nous l'avons fait auparavant. Cette fois,
s'il s'agit d'
un ennemi de type tag nous voulons maintenant savoir combien de
dégâts nous devons infliger. Pour cela, nous allons
devoir écrire un autre script. Allons ici et créons un nouveau script,
appelons-le information sur l'ennemi. Dans le script, nous allons créer un tas de variables. C'est comme une
colonne de statistiques pour l'ennemi. Nous allons donc
créer un T public, puis nous allons l'
appeler dégâts infligés aux joueurs. Nous allons ajouter le script à chacun de nos ennemis. Ensuite, chaque fois que nous
entrons en collision avec un ennemi, nous allons examiner script avec
l'ennemi avec lequel
vous êtes entré en collision Et c'est de là que
nous allons obtenir notre variable de dégâts. Cela peut sembler un
peu confus, mais supportez-moi. Si nous sommes entrés en collision avec
un ennemi, nous dirons Collision Point Game
Object Dot Get Component En d'autres termes, fixez un composant à ce avec quoi nous
venons d'entrer en collision Collision est le collisionneur avec lequel
nous venons d'entrer en collision. Si l'objet du jeu auquel
il est attaché,
c' est-à-dire notre
ennemi, est un ennemi, alors allez chercher un autre script
attaché à cet ennemi
, appelé information sur l'ennemi. Parenthèses après
ça. Ensuite, nous infligons des dégâts aux joueurs. Nous pouvons désormais accéder à la
variable de manière explicite. En gros, cette déclaration ne
fait rien, mais elle dit d'infliger des dégâts aux
joueurs à cause de tout ce avec quoi
nous sommes entrés en collision Il
ne nous reste plus qu'à le
considérer comme notre
paramètre endommagé. Nous allons donc écrire pour prendre dégâts dans le bloc ouvert et nous allons mettre
ce code ici. Comme je l'ai dit,
même s'il ne s'agit
techniquement que de deux lignes de code, cela peut sembler un
peu confus, mais ce n'est en fait pas si mal. Tout ce que nous faisons, c'est que nous avons défini ce code ici
qui dit, d'accord, quand j'appelle ça, je veux
jouer en subissant autant de dégâts. De toute évidence, nous allons
approfondir ce point plus tard. Mais pour le moment, tout ce que ça fait, c'est dit, d'accord, un
joueur a subi des dégâts, mais le nombre de dégâts
que nous subissons est déterminé par ce vide ici
, lorsque vous entrez dans un collisionneur à gâchette ,
si ce collision est
attaché à un ennemi, alors dites que chaque fois que nous
entrons dans un collisionneur à gâchette , alors appelez cela un vide de dégâts En d'autres termes, exécutez ce code et définissez le montant
des dégâts
que je souhaite subir en fonction des dégâts enregistrés dans cette colonne d'informations sur
l'ennemi, nous allons
attribuer lorsque nous ajouterons à
chacun de nos ennemis. Repartons.
Entrez dans nos préfabriqués. C'est ici que sont entreposés tous
mes ennemis. Et je vais ajouter des
informations sur l'ennemi à chacune d'entre elles. Informations sur les bons ennemis. Faisons en sorte que
la batterie s'abîme. Je pense que le robot
ne devrait faire qu'un seul dommage. Je pense que Spike ne devrait
également faire qu'un seul dégât. Ensuite, je vais demander
à la
boule à pointes d'infliger un dégât également. C'est juste la batterie
en fait. Ou peut-être
qu'une
balle à pointes inflige deux dégâts. Rends juste les choses un
peu plus intéressantes. Maintenant, chacune
de ces choses est associée à
ce script
qui enregistrera les
dégâts qu'elle inflige. La dernière chose que nous allons
faire est de nous assurer qu'ils sont tous prêts à étiqueter l'ennemi. On dirait qu'ils le
sont. Il ne
nous reste plus qu'à
retourner dans notre joueur. Ajoutons ce nouveau script que nous venons d'appeler Player Health. Placez-le sous
le mouvement du joueur. Nous n'avons pas vraiment besoin
d'assigner quoi que ce soit ici car nous n'avons
aucune variable ici. Nous avons juste un vide
qui dit « subissez des dégâts ». Nous avons un événement. Chaque fois que nous entrons en collision avec le collisionneur, nous
subissons autant de dégâts Maintenant, que devrait-il
se passer si nous
effaçons cette console
et cliquons sur Play ? Nous pouvons voir que rien n'
est imprimé pour
le moment, mais au fur et à mesure, interagissons avec ce Spipal
et voyons ce qui se passe Et nous pouvons voir que
le joueur a subi deux dégâts. Je le fais encore, ça
recommence Ici, joueur a subi un dégât. Ici, le joueur a subi un dégât.
Et essayons de le faire. Le joueur a
subi deux dégâts, deux dégâts, parce que les deux joueurs
ont subi deux dégâts, joueur a subi un dommage, un dommage, un dommage. Parfait. Cela
fonctionne vraiment très bien. Maintenant, la dernière chose que
je veux ajouter,
juste pour que la prochaine
vidéo ne soit pas trop longue, c'est une période d'invincibilité C'est également assez
facile à créer car c' est le script que nous allons utiliser pour la santé de tous nos joueurs. Je vais juste commencer à le
détailler maintenant,
mais en gros, tout ce que nous avons
à faire,
c'est de récupérer notre mise à jour
sur les annulations. Donc, chaque image. Et ensuite, montons
un char ici. Appelez ça Max Invincibility Time. Ensuite, nous
aurons un autre char qui s'
appellera Invincibility Time Tout ce que nous allons faire, c'est
dans cette mise à jour vide, nous allons dire que si le temps d'
invincibilité est supérieur à zéro, puis nous allons
le réduire du temps écoulé
depuis la dernière période,
le
temps du delta temporel Ce qui va faire, c'
est qu'il va indiquer chaque image si
cette valeur n'est pas nulle, en d'autres termes, si
elle est égale à
cinq moins le temps écoulé
depuis la dernière image. En d'autres termes, il
s'agit essentiellement d'un compte à rebours. Eh bien, en fait, cela ne
fonctionnera qu'en tant que fois, mais nous allons dire que s'
il est supérieur à cinq, compter à rebours jusqu'à zéro. Ensuite, tout ce que nous
allons faire, c'est en dessous de ce
vide de dégâts. Nous allons ajouter une autre condition d'instruction
if
en haut ici. Nous allons dire si nous sommes
entrés en collision avec un ennemi et notre temps d'invincibilité est
inférieur ou égal En d'autres termes, si nous ne sommes pas actuellement à une époque
où nous sommes invincibles Ajoutons alors quelques
parenthèses supplémentaires,
et ce n'est qu'alors que nous subissons des dégâts La dernière chose que
je vais faire, c'est simplement
supprimer ce mot Enter et
le remplacer par un mot stay. La raison pour laquelle nous pouvons le
faire maintenant est que cet événement déclencheur ici est en fait appelé une fois par image pour chaque collision avec
vous qui vous touche En d'autres termes, si je
devais entrer en collision avec
un objet et que je
devais rester là, j'endommagerais continuellement
chaque cadre Mais comme nous avons ajouté
ce délai d'invincibilité, nous pouvons désormais écrire
le code de cette et fixer une durée pendant laquelle nous
ne pouvons pas subir Parce que si je ne l'ai pas
fait à l'origine, c'est parce que nous aurions vu 100 000 messages à chaque fois
que nous touchons quelque chose. Parce qu'il va
exécuter chaque image. Mais parce que maintenant, nous ne subissons des dégâts que chaque
fois que nous le pouvons. En d'autres termes, à chaque
intervalle défini que nous
allons définir ici, nous ne pouvons pas subir de dégâts
tout le temps. Je peux maintenant écrire ce
code comme ceci. Et c'est en fait bien mieux, car cela
signifie que si nous
restons sur un pic ou
quelque chose comme ça, nous allons continuellement subir dégâts tant que
nous sommes sur les pointes Et c'est exactement
ce que nous voulons. Avant de
revenir à mon jeu, il y a une dernière
chose que je dois faire. Je dois m'
assurer que mon temps d'invincibilité est toujours égal à mon temps d'
invincibilité maximal tant que je viens Dès que je subis des dégâts,
réinitialisez ce délai. En gros, c'est à
peu près tout le code que nous devrions écrire
pour avoir un
système de base capable de subir des dégâts. Revenons à Unity. Réglons mon maximum,
mon temps à 1,5 seconde. Voyons cela en
action. Si je continue et que je clique sur Play, je peux courir. Et nous allons réellement
surveiller ces deux variables. Nous pouvons donc voir si cela fonctionne. Regardez celui-ci. Toutes les 2 secondes, je
vais subir des dégâts. Vous pouvez voir là-bas, le
joueur a subi un dommage, jeu a subi un dommage, le jeu
a subi un dommage fourni. Je reste sur ces collisionneurs. En fait, je subis continuellement des
dégâts à chaque
fois que je suis à bord de l'un d'entre eux, c'est exactement ce que je veux Maintenant, il y a encore un
changement que je voudrais apporter tant que je suis occupé à
faire des choses dans mon jeu. Et il va ajouter
une animation de détection des impacts. En fait, nous allons passer
à mon joueur et nous pourrions animer de telle sorte que
chaque fois qu'
il subit des dégâts, un certain effet se produise, Et nous l'écrivons dans la fenêtre
d'animation ici. Cela va
compliquer les choses car
nous avons déjà toutes ces animations ici et
nous ajouté une animation blessée. Ensuite, nous devons nous blesser au ralenti, blesser en courant, etc. Au lieu de cela, nous allons
utiliser un effet simple, qui sera un
bloc rouge comme ça. Quand je subis des dégâts
puis que je reviens en arrière. Je vais clignoter en
rouge dans un instant. Ensuite, je vais arrêter. La façon dont nous allons
réellement le faire est
d'utiliser entièrement des codes. Nous allons passer ici
dans le script de santé de mon joueur, nous allons écrire ce que l'on
appelle une routine conjointe. Nous allons donc écrire un
numérateur, subir des dégâts. Cela va
nous permettre de programmer
comme si les minuteries
attendaient ce nombre de secondes. Je vais écrire
ce qui suit. Je vais dire qu'
en haut, je vais avoir une référence
publique à mon Sprite Renderer,
appelez-le Sprite Je vais dire que dans
mon Take Damage Void. Ne vous y trompez
pas. En gros, pensez-y comme un vide. Mais je peux utiliser des commandes qui me permettent d'attendre un
certain nombre de secondes. Ce n'est pas exactement
ce
que c'est, mais c'est exactement pour cela que nous
allons l'utiliser. Pensez-y
comme à un vide avec une capacité supplémentaire, évidemment. Ne l'utilisez pas à la place des vides. Utilisez-le uniquement de la façon
dont je l'utilise actuellement, mais ne vous
inquiétez pas trop pour cela. Vous allez dire rendement,
retour sur poids pendant quelques secondes. Ensuite, nous allons entrer un
certain nombre de secondes. Je vais utiliser invariable pour décider que c'est ce que
je vais dire Heure de changement de couleur du flotteur public. Cette variable de temps de changement de couleur
est celle que nous allons
utiliser pour déterminer le temps que nous
devons attendre avant de
changer de couleur. Je vais d'abord dire que la
couleur du sprite est égale à la couleur blanche. Ensuite, je
vais continuer et
attendre la durée de mon changement de
couleur. Ensuite, je vais passer de... je vais en fait mettre du
rouge en haut d'ici. À l'origine, je passe au rouge, j'
attends
quelques secondes, puis je passe au blanc. Et c'est en fait à peu près tout ce que nous
devrons faire. Nous allons régler
la couleur
du sprite rouge dès que nous le voulons, puis lorsque nous aurons
fini de subir des dégâts, nous allons le
remettre sur le blanc Et évidemment,
chaque fois que nous subissons des dégâts, c'est ce que
nous appelons
cela de la co-routine. Maintenant, deux choses. Tout d'abord, cela porte en fait
le même nom que les vides. Je vais l'appeler Take
Damage Effect au lieu de cela, c'est
un peu mieux le nom. Ensuite,
nous allons devoir l'
invoquer à chaque
fois que je vais passer
en dessous et écrire à nouveau
start co routine. Ne t'inquiète pas trop pour
ce truc. Ce n'est vraiment pas si
important et je ne veux pas passer
trop de temps à m'y attarder. Mais en gros,
considérez-le comme un vide qui nous permet d'
attendre un
certain temps. Ensuite, nous allons
appeler ce vide spécifique ici,
ce qui
nous permet de subir des dégâts. Cela signifie qu'à
chaque fois que nous subissons dégâts, nous passons
au rouge. Et puis, aussi
longtemps que nous voulons rester rouges, nous le garderons. Ensuite, nous allons
revenir au blanc. C'est à peu près
tout ce que nous devons
faire pour
avoir un indicateur de succès. Revenons à Unity. Retournez jouer tout de suite. Réglons le
temps de changement de couleur à 0,2 seconde. Maintenant, si tout
fonctionne comme il se doit, nous devrions être en mesure continuer
comme d'habitude. Comme d'habitude,
lorsque nous subissons des dégâts, nous devons passer au rouge. Nous n'avons pas assigné de sprite,
assurons-nous de le faire. Faites-le glisser vers le bas. Assignez la variable sprite
à l'objet sprite. Essayons encore une fois,
si nous subissons des dégâts, nous clignotons en rouge, qui est exactement ce que nous voulons. Et c'est en fait plutôt
bien à mon avis. Vous pouvez clairement voir quand vous
subissez des dégâts et vous pouvez voir,
évidemment, que si vous
restez à l'intérieur, vous subissez des dégâts continus C'est plutôt bien. La dernière chose est de savoir
combien de temps nous sommes invincibles quatre et nous allons également
écrire une autre routine pour cela Allons ici et prenons le
recenseur pour dire que c'est l'heure de l'
invincibilité En d'autres termes, nous allons dire «
while », le faire jusqu'à ce que cela ne
soit plus vrai. Le temps d'invincibilité est
supérieur à zéro. En d'autres termes, alors que nous sommes
actuellement invincibles. Allons-y, flashons
à l'intérieur et à l'extérieur de l'écran. Nous allons faire la même
chose avec la couleur. Allons-y, la couleur du sprite
est égale à une nouvelle couleur. Nous allons définir
cette nouvelle couleur de
manière à ce
qu'elle soit à peu près identique à celle du blanc, sauf avec un alpha légèrement
moins évident. Cela va être
un peu transparent. Définissez cette valeur sur 111, qui est la valeur maximale, puis nous définirons alpha. Utilisons également une variable
pour cela. Transparence des flotteurs publics. Allons-y,
copions-le et mettons-le là-bas. C'est en fait à
peu près exactement ce que nous voulons. Bien que ce
temps d'invisibilité soit vrai, nous
allons passer à
un temps légèrement transparent Ensuite, nous allons
écrire un nouveau rendement à attendre quelques secondes. Je vais utiliser une autre
variable ici. Je vais appeler cela
un délai d'invincibilité. En d'autres termes, combien de temps nous voulons que l'intervalle entre les clignotements soit Écrivons le
délai d'invincibilité là-bas. Ensuite, allons-y
et remettons notre affaire ici, normalement 1111 En fait, je vais répéter ce processus plusieurs fois. En d'autres termes, nous allons
changer la couleur transparente, revenir à la couleur normale, puis attendre
encore quelques secondes. Après cela, nous
devenons transparents. Nous attendons, nous redevenons
normaux, nous attendons. Et puis, si nous sommes
toujours invincibles, nous redevenons transparents. Attendez, cela va
se répéter encore et encore, jusqu'à ce que ce ne soit plus vrai,
puis ça va s'arrêter. Il est important de noter
que, compte tenu la façon dont nous avons écrit ce code, il ne s'arrêtera jamais
si vous êtes transparent. Comme il
va uniquement vérifier si temps d'
invincibilité est
supérieur à zéro à la
fin de ce code, il ne pourra pas
s'arrêter au milieu du Il va fonctionner
immédiatement et ensuite dire, d'accord, dois-je le refaire ? Vous devez vous inquiéter d'être
à moitié transparent. Maintenant, avant de revenir à Unity, nous devons
faire une chose. Nous devons nous assurer que nous l'appelons
vraiment cotine. Sinon, cela ne
fera jamais effet et nous ne pourrons pas
le voir. Allons au sommet. N'oubliez pas d'écrire
dans Start Corotine Invincibility Time,
comme ceci Cela va en fait nous
permettre d'appeler la corotine. Assurez-vous de mettre un
point-virgule à la fin. Maintenant, si nous retournons dans Unity, nous pouvons nous assurer de modifier
ces valeurs dans notre lecteur. Faisons en sorte que cette invincibilité
retarde de 0,2 seconde. Faisons en sorte que ma transparence de 0,5 soit une valeur de 0 à 1.
Gardez cela à l'esprit Maintenant, cela devrait en fait être tout ce dont nous avons besoin pour avoir un effet d'
invincibilité efficace Voyons si cela fonctionne.
Si je charge mon jeu, il est évident que l'effet de
dégâts rouge fonctionnait. Mais testons si
celui-ci fonctionne aussi bien. Vous pouvez voir que cela
fonctionne parfaitement bien. C'est juste que nous semblons avoir
perdu l'effet des dégâts. Et la raison en est
que nous annulons en fait notre couleur Revenons ici et apportons
rapidement une petite correction. Nous n'allons pas
vouloir le changer. Ce que nous sommes en train de faire, c'est que
nous le changeons en rouge. Mais ce code
le rend à nouveau blanc. Au lieu de dire « OK,
changez-le en blanc », je vais dire «
changez-le comme avant ».
Couleur du point Sprite Couleur du sprite. Chien cool Sprite Dot. Et pour le C rouge, vert et bleu, cela devrait fonctionner beaucoup mieux. Maintenant, nous n'allons plus modifier aucun des aspects réels de
la couleur,
à l'exception
de son canal alpha, qui
est exactement ce que nous voulons. Revenons ici et voyons si
cela fonctionne un peu mieux. Et je pense qu'il
devrait
veiller à ce que le
temps d'intervinsibilité varie. Si nous subissons des dégâts, nous pouvons voir que cela fonctionne
parfaitement bien. Tant que nous faisons le compte à
rebours à l'heure des esprits, nous clignotons et
dès que nous nous arrêtons, nous nous arrêtons, ce qui nous donne une assez
bonne idée du
fonctionnement de notre jeu et du système de dégâts, ce qui est excellent. C'est à peu près tout ce que nous devons faire dans cette vidéo. Évidemment, maintenant nous pouvons voir que nous pouvons réellement subir des dégâts et tout ce
dont nous avons besoin pour commencer,
c'est notre système de santé, euh, qui devrait nous aider à rendre ce jeu beaucoup plus
amusant et,
en fait , plus semblable à un jeu
qu'il ne l'est actuellement. J'espère donc que votre jeu
fonctionne aussi bien que
mal pour le moment. Évidemment, vous
devez modifier cela et assurer que tout
fonctionne correctement vous
assurer que tout
fonctionne correctement avant
de passer à
la vidéo suivante où nous
allons commencer avec
notre système de santé. Merci.
11. 10. Ajouter la santé des joueurs: Bonjour, et bon
retour sur Unity. Dans le dernier épisode, nous avons ajouté la fonction de détection des coups, qui a permis
à notre joueur de savoir quand il a subi des
dégâts et aussi combien de temps il est invincible avant de pouvoir
subir des dégâts Encore une fois, nous pouvons voir tout
cela en action ici, avec les dégâts subis et
le clignotement, tandis que
vous pouvez voir où vous venez de cesser de
subir des dégâts et où vous êtes
désormais invincible Et puis, quand ça se
dissipe également, c'est bien beau, mais nous n'avons toujours pas de système
qui indique, d' accord, quel est mon état de santé et combien de temps avant ma mort ? Et la partie est terminée car le joueur n'a
pas une santé infinie. Ce ne serait pas un jeu très
intéressant si tu ne pouvais jamais mourir. Ce que nous devons ajouter
dans cet épisode c'est un système de santé
pour montrer, d'accord, qu'il reste
autant de points de vie au joueur, et lorsqu'il atteint
cette santé, il meurt. Et pour ce faire, nous
allons simplement utiliser exactement
le même script que nous avons
toujours utilisé,
ce script de santé des joueurs. Passons donc aux scripts et double-cliquons sur
la santé du joueur pour l'ouvrir. Dans Visual Studio, nous devrions pouvoir voir tout ce
que nous avons codé la dernière fois. Juste ici.
Parfait. Il ne
nous reste plus qu'à
ajouter un int public, appelé Max health. C'est quelque chose qu'il
n'est pas vraiment nécessaire d'ajouter à une variable, car cela
indiquera le niveau de santé que nous
devrions avoir au maximum. En d'autres termes,
quel est le niveau de santé que
je veux atteindre lorsque je suis en pleine santé ? Et vous pourriez penser, oh, c'est une bonne chose d'
avoir comme variable. Mais comme j'ai déjà créé
les sprites et tout le reste, je sais quelle
santé maximale je vais avoir Il y en aura six, mais vous pouvez l'ajouter si vous le souhaitez. Quoi qu'il en soit, c'est juste une bonne
pratique du programme. Mais nous allons le
laisser là et ajouter un nouveau public
à santé
actuelle, qui
s'appellera, il l'
appellera en fait santé actuelle. Cool. Alors tout ce que nous
allons faire, c'est aller ici pour que je
fasse des dégâts ici. Et je vais dire que l'état de
santé actuel est inférieur à égal. En d'autres termes,
la santé actuelle est égale à la santé actuelle négative. Ensuite, nous allons
parler de dégâts,
c'est-à-dire diminuer la santé
actuelle en fonction du
montant des dégâts. En fait, je vais supprimer cette déclaration imprimée qui
indique
l'ampleur des dégâts que j'
ai subis parce que c'était
juste pour les tests. Alors tout ce que j'ai besoin de faire
ici, c'est d'avoir un autre vide en dessous , que je vais
appeler « check dead ». Je vais appeler ce vide dès que je subis
des dégâts,
avant même de faire les effets, de passer le temps
d' invincibilité
ou quoi que ce soit Je vais dire que si mon état de santé actuel est inférieur ou égal
à zéro, alors je suis mort. Je dois invoquer un autre vide. Je vais écrire
ci-dessous : « La mort ». Allons-y et
ajoutons-le là-dedans. Les dégâts sont nuls et je réduis mes points de vie actuels en fonction du
montant des dégâts que j'ai subis. J'ai mon chèque
vide où je dis,
OK, si mon état de santé actuel est
inférieur à zéro, appelez ça. Et j'ai mon vide
mortel ici qui dit : OK, maintenant, une fois morte,
ce que je veux faire, alors je vais vraiment
commencer, programmer là-dedans. Ensuite, je vais ajouter
un dernier élément en haut de la page qui dit, d'
accord, réglez mon état de santé
actuel sur le maximum de santé
au début. En fait, je vais juste le faire maintenant. Allons-y et
disons que la santé
actuelle d'un départ annulé est
égale à la santé maximale. En d'autres termes, tout
va bien. Nous recommençons et mon
état de santé actuel est
au maximum. Ensuite,
en dessous de mon vide mortel, nous allons dire : « OK, qu'
est-ce que je veux qu'il se passe quand je mourrai ? Eh bien, la première chose que
je
veux, c'est que le joueur ne
puisse plus bouger. ce faire, je vais accéder à l'objet de jeu auquel il
est actuellement attaché,
à savoir le joueur. Je vais aller sur Game Object ,
puis je vais trouver
un autre script à ce sujet. En d'autres termes, le script de mouvement
Get. Je vais aller au joueur pour obtenir une
composante du mouvement du joueur. Je vais dire que
activé est égal à force. En d'autres termes, je vais
empêcher l'activation de ce script
actuellement. Je vais dire
OK, c'est fini. Cela va essentiellement me
permettre
de désactiver le mouvement
tant que Glary est mort. Je ne veux pas non plus que la gravité m'affecte sur
mon corps rigide .
Je
ne veux plus tomber. Je vais dire d'obtenir une échelle de gravité en
deux D pour le corps rigide des
composants . Je vais le
mettre à zéro. En d'autres termes, je
ne veux pas tomber, je reste au milieu
des airs et je ne peux
actuellement pas bouger. Ensuite, il y a encore quelques
choses que je voudrais faire. Je veux réellement désactiver l'animateur qui
se trouve sur mon composant, sur mon objet en ce moment Maintenant, je ne peux pas changer d'animation. Enfin,
je voudrais remplacer mon sprite par un sprite de la mort
spécifique, que je vais
mettre ici. Je vais dire Public
Sprite, disons que c'est mort. Je vais dire que le composant
Sprite Renderer Sprite est égal Ces quatre lignes de code ici
vont essentiellement dire, d'accord, je meurs, désactivez
mes scripts de mouvement. Maintenant, je ne peux plus bouger
parce que la partie est terminée, non ? Je ne
veux pas non plus tomber, alors réglez ma gravité à zéro. Je suis juste suspendu
au milieu des airs, je ne bouge pas correctement. En fait, je vais ajouter
une autre chose avant de le faire c'est
que je vais
dire objet de jeu, get component rigid body two D velocity est
égale au vecteur 20. En d'autres termes,
arrêtez-moi en plein vol parce que selon la façon dont
cela fonctionne actuellement, si je devais mourir et
que je faisais tout ça, je continuerais à me
déplacer sur l'écran, ce que je ne veux pas Donc je veux d'abord faire en sorte
que je ne puisse pas bouger. Je veux m'arrêter dans les airs
et désactiver ma gravité. Je suis donc debout au
milieu de l'écran. Et plutôt juste là,
au milieu de l'écran, je veux désactiver mon animateur Donc je n'ai
plus rien, d'accord,
que je sois immobilisé ou
non, que je tombe, je le désactive
carrément Ensuite, je vais
configurer mon composant de Sprite Renderer, celui qui m'indique
quels sprites
affichent actuellement sur ce
sprite spécial ici, je vais également ajouter C'est à peu près
tout le code dont nous devrions avoir besoin pour créer
un système de santé. Je vais dire qu'au début
du jeu, réglez mon état de santé au maximum. Et puis chaque fois que je
subis des dégâts sans les dégâts, et dès que je suis mort, appelez ça Spoid ici, ce qui montre
clairement que je suis mort Ouvrons Unity,
passons au lecteur. Voyons lequel de
ces éléments nous devons ajouter. Fixons mon maximum de points de vie à six et nous devons ajouter
ces sprites morts Je vais entrer dans les
sprites, cliquer avec le bouton droit de la souris et importer un nouvel actif avec le bouton
droit de la souris
et ça fait moins sept Il devrait être lié sous cette vidéo, comme toutes
les autres. Je vais les mettre à jour
pendant que je suis réellement ajouté. Je vais également importer
ces sprites cardiaques que nous utiliserons dans un avenir proche pour notre système de
santé. Allons-y et
faisons-en également 12 et Point No
Filter and Perfect. Nous allons vérifier
comme nous l'avons fait la dernière fois, assurant que les deux sont bien remplis. Parfait. Faisons
défiler la page vers le bas et veillons à ce
que mes sprites négatifs sur cette valeur moins sept Voyons si tout fonctionne
comme prévu. Nous avons
ajouté notre dernier sprite, tout le reste. Passons à mon joueur,
nous pouvons voir que
j'ai actuellement et un maximum
de six points de vie. Maintenant, ma santé est de quatre
parce que je viens de subir des dégâts, et ma santé est maintenant de trois. Et si j'en subis deux dégâts , la santé
sera réduite à un. Maintenant, que se passera-t-il si
je tombe sur le sprite ? Je devrais arrêter Miller et transformer en pierre tombale,
ce qui est parfait J'ai toujours l'
effet sourd que je dois corriger. Mais vous pouvez voir nous n'avons
évidemment pas tout
désactivé,
les scripts ne sont pas complètement morts, mais cette pierre tombale
semble fonctionner J'ai une pierre tombale ici, et c'est plutôt cool Il y a encore quelques modifications que
je voudrais apporter à cela avant de commencer à intégrer mon
système cardiaque La première, je pense que
la pierre tombale devrait être légèrement plus haute dans les
airs qu'à chaque fois que vous mourez. Commençons par dire
ici où se trouve tout le
reste de ce code. Disons également que la position de transformation
est égale au nouveau vecteur trois. Position de transformation x, point d'opposition
transformé
y opposition transférée. De toute évidence, cette déclaration
ne fait encore rien. Je dis simplement qu'une opposition
transformée équivaut à une opposition transformée. Mais ensuite, nous allons aller en haut et
ajouter
le décalage y pour
le moment où nous mourrons. Copions-le là-bas, puis
ajoutons-le ici. Et je pense
que deux ou trois donneront une bien meilleure
apparence à ça. Ensuite, une fois cela fait, la dernière chose
que nous voulons faire est
d'ajouter une nouvelle variable, disant qu'elle est morte. Et cela va
nous permettre de savoir quand nous
sommes réellement en vie et non pas ici au
début du jeu. Nous voulons que le mot
mort soit égal à faux, parce que nous ne sommes pas
ici quand nous mourons. Nous voulons que ce soit
égal à la vérité. La raison pour laquelle nous
allons le faire est que nous allons réellement nous
occuper de toutes les choses que nous faisions auparavant
, alors que cela subissait encore dégâts et que le temps d'invisibilité prenait encore effet Et l'endroit où nous allons le
mettre, c'est que nous allons
en fait déplacer
ce script ici. Allons-y, examinons
mon script de vérification de l'endettement ici et disons si santé
actuel est
inférieur à zéro décès. Et puis en dessous,
avant de passer aux autres choses,
nous dirons que si ce n'est pas le cas, c'est mort, en d'autres termes, si
je suis toujours en vie, alors vous pouvez faire toutes
ces autres choses. Ensuite, vous pouvez définir l'heure de début, vous pouvez invoquer les objets
endommagés. Mais si nous venons de mourir, nous ne voulons pas vraiment
que cela se produise. Nous pourrions également mettre
cela sous la forme d'une déclaration L. En d'autres termes, vous pourriez dire autre chose, si mon état de santé actuel n'
est pas là, ce que je vais
faire juste pour améliorer légèrement les procincts, mais cela ne fait vraiment aucune
différence En fait, cette variable morte n'
est pas vraiment
nécessaire à 100 % ici,
car nous pourrions simplement écrire autre chose et
ne pas l'utiliser du tout. Mais je pense que c'est quand même une
bonne chose
de savoir si le
joueur est vivant ou non. Revenons au joueur et faisons en sorte que mon Y soit décalé d'environ
deux pour voir si tous ces
changements vont fonctionner. Allons cliquer sur Jouer pour voir
si je subis continuellement des dégâts. Ça fait deux, c'est
quatre, ça fait cinq. Sur le sixième, nous
pouvons voir là-bas, deux c'est peut-être un peu haut,
fixons-le à peut-être un. Mais en fait, cela a fonctionné à
peu près parfaitement. Tout
fonctionne bien. Si nous mourons devant
quelque chose comme un pic, nous passerons devant le pic, mais nous ne continuerons pas à subir des
dégâts ou à voir les dégâts affichés. Laissons le robot nous
tuer. Presque. Ça en fait quatre. Donc, si
nous mourons ici, nous y voilà. Nous devrions voir là-bas, nous
avons notre effet fatal là-bas. Et nous voulons également que
la caméra s'arrête. Mais nous allons l'
ajouter dès maintenant. Allons voir mon appareil photo. Allons voir où
il se trouve ici. Vitesse de la
caméra sous le script de déplacement de la caméra, sous ce
vide vide ici. Je vais dire Game
Object Dot Find. En d'autres termes,
entrez dans la scène, mon appareil photo principal, trouvez-le. Ensuite, nous disons « get component », trouvez dessus mon
script de déplacement de caméra qui va régler ma vitesse, la vitesse la
caméra étant égale à zéro. C'est en fait
tout ce dont nous avons besoin. Maintenant, à la minute où
je mourrai, la
vitesse de mon appareil photo devrait être réglée sur zéro et tout devrait parfaitement
fonctionner. Revenons-en à mon jeu. Je vais vouloir
ajuster mon décalage
y à quelque chose comme 0,5 Je pense que l'un d'eux était encore
un peu élevé. Voyons si
tout fonctionne exactement comme nous l'avions prévu. Pour le plaisir des tests,
je
vais juste régler mon état de santé à un, dois continuer
à le tester. Réglons l'état de
santé actuel. Tu vas à l'un d'eux et tu vois si nous
rencontrons ce pic. Nous pouvons voir que nous mourons et que la caméra s'arrête,
ce qui est génial. C'est exactement ce que nous
voulons. C'est à peu près tout ce
que nous devons faire pour montrer
que nous sommes
en train de mourir. Mais nous avons encore besoin d'un
moyen pour le joueur de
savoir combien de points de
vie il lui reste. Pour commencer,
nous devons
commencer par utiliser notre interface utilisateur. Cliquez avec le bouton droit de la souris et cliquez sur Créer. Je vais vouloir
créer une image. Vous pouvez voir que cela donne
une toile massive et qu'elle est en fait beaucoup plus grande que cela. Voilà notre jeu en bas. Cela peut sembler un
peu confus. Il s'agit d'une superposition d'espace d'écran. Je préfère de loin utiliser le mode caméra spatiale à
écran. Et vous pouvez y faire glisser votre caméra voir votre interface utilisateur
devant votre jeu. Il n'y a pas une
énorme différence, c'est juste une question de préférence. Mais je préfère généralement utiliser l'espace de l'écran, le mode caméra. Je pense qu'il y a des avantages
distincts, mais je n'ai jamais vraiment
fait de recherches approfondies sur eux car je n'ai jamais eu de
problème avec le mode appareil photo Allons-y et utilisons la caméra à l'intérieur de cette image. Commençons par renommer
notre canevas en UI. Ce canevas est comme un élément de base pour tous les composants
de l'interface utilisateur. Et ce système d'événements
nous permet de faire fonctionner les boutons. Tous ces éléments seront créés automatiquement lorsque vous
créerez une nouvelle image, tout comme l'animateur a été
créé lorsque vous avez créé, ou plutôt le
contrôleur a été créé lorsque vous avez créé une animation Laisse-les tous.
Ne les supprimez pas. Laissez le
système d'événements là où il se trouve et laissez le
canevas de l'interface utilisateur tel quel. De toute évidence, sans le canevas, aucune de ces
images ne
fonctionnera réellement et elles
n'apparaîtront pas. Si nous le déplaçons hors du canevas, nous pouvons voir qu'il n'est plus
affiché sur notre écran. Laissons
les choses telles quelles. Changez cela à cœur, puis allons-y
et intégrons notre cœur. Pour l'image source,
nous allons cliquer sur Définir la taille native afin de
voir exactement comment cela fonctionne. Il semble que cela ne
restitue qu'une partie spécifique
de mon cœur. Je pense que la raison en est que si nous regardons ces
flèches ici, nous pouvons voir qu'il
y a trois choses qui apparaissent alors que
tout le reste n'en a qu'une. Pour une raison ou une autre,
Unity
pense automatiquement qu'il est
intelligent et essaie les
séparer en
trois sprites différents alors que je ne
veux en faire qu'un Je vais sélectionner
toutes ces options.
Assurez-vous de régler le
mode sprite sur une seule tête. Ensuite, si je reviens ici et que j'essaie de faire glisser mon sprite, tout fonctionne beaucoup mieux Je ne savais pas vraiment
que ce serait un problème, mais assurez-vous simplement de le faire,
surtout si
vous utilisez mes sprites Maintenant, je pense que beaucoup d'
entre eux sont en fait définis sur multiple par défaut. Mais
ce n'est même pas un problème. Par exemple, ce mineur est multiple, mais il n'en est qu'un. En fait, je pense que
chacun de mes autres sprites
ne fait qu'un,
même s'ils sont tous configurés sur plusieurs Cela ne fait donc pas vraiment de différence. Vous pouvez les laisser là,
assurez-vous simplement que celui-ci
est réglé sur single, car sinon
Unity, nous essaierons de diviser en différents
sprites pour vous Ce n'est évidemment pas
ce que je veux pour mon jeu. Maintenant, revenons
à mon cœur. Nous avons maintenant besoin d'un clic pour
définir la taille native pour assurer qu'elles correspondent
à tout le reste. Ensuite, nous devons, maintenant
évidemment, les réduire pour qu'ils aient
la même proportion. Allons-y et faisons-le glisser jusqu'à ce
que
les pixels aient la même taille. Vous pouvez voir qu'
ils ne sont pas encore là. Faisons-le glisser un peu plus. En fait, nous y sommes presque. Allons-y
légèrement jusqu'à ce qu'il rentre bien. Il n'est pas nécessaire que ce soit exact,
mais plus vous vous en rapprocherez, meilleur sera votre jeu
. Cela ne fait pas vraiment de
différence à ce stade. Je pense que c'est à peu près
exact. Ça devrait être une bonne chose. Ça va tout à
fait bien paraître comme ça. Mais
déplaçons-le en haut de l'écran. Maintenant, nous pouvons voir que ces
cœurs seront là pendant que je joue au
jeu, ce qui est parfait. C'est exactement
ce que je veux. Maintenant, nous
devons relier ces cœurs au code qui définit
essentiellement ma santé. Pour
ce faire, je vais passer
à mon
script de santé ici,
qui se trouve sous script, et je
vais cliquer sur Santé du joueur. Je me souviens qu'au
début du cours, j'ai mentionné ces trois
points en haut de la page. Si vous devez utiliser
différentes choses dans
Unity , par exemple ajouter une ligne. Et c'est ce que
nous allons faire ici. Nous allons utiliser l'interface utilisateur du moteur
Unity. C'est juste pour que nous puissions
parler de choses comme les images. Nous allons passer ici
en dessous de tout cela, créer un tableau de sprites
public, en d'autres termes, une
liste de sprites, que nous appellerons cœurs Nous voulons que ces cœurs soient de
zéro à cinq. Parce qu'il y aura
six types différents de
dépenses cardiaques en fonction de
votre état de santé, en dessous de cela. Nous allons
créer une référence
à mon image, mais elle n'apparaîtra
pas, mais nous n'avons pas saisi d'interface utilisateur. Pour assurer que vous
l'avez en haut, nous allons l'appeler icône
en forme de cœur Maintenant, ici, nous avons
l'icône de notre cœur , et nous avons notre cœur. Permettez-moi de remplacer cela par
une icône en forme de cœur. Ces deux éléments
vont pouvoir
montrer au joueur combien de points de
vie il lui reste. Allons ici, dans mon vide là
où je subis des dégâts. Et je veux m'
assurer de régler mes dégâts, ou plutôt mon nouveau sprite , selon l'icône du
cœur En fait, je vais le
mettre
ici avec toutes mes autres choses parce que je ne veux pas vraiment m'
embêter à les mettre à jour. Si je suis mort, je peux juste le
régler sur celui par défaut, qui est évidemment le plus bas
. Et en fait, je vais le
faire aussi. Mais avant de prendre trop d'
avance sur moi-même, permettez-moi de me concentrer sur le
changement des choses ici. Je dois dire que, évidemment,
sur une échelle de 0 à 6, je veux mettre
mon sprite en forme d' icône en forme de cœur pour qu'il soit égal à un
cœur entre crochets ouverts Ensuite, nous aurons la santé restante, la santé actuelle moins une,
car évidemment, dans
un rayon, elle commence à zéro Si nous avons une santé,
vous voulez la première image. C'est en fait à peu près
tout le code dont nous avons besoin. La dernière chose que je veux faire, c'est sous mon dépôt ici, je vais écrire le bas, assurer de mettre
mon truc à zéro En fait, je viens de
me rendre compte que nous devrons également faire preuve d'un cœur différent si nous
n'avons absolument aucune santé. Réglons donc
cela sur l'état de santé actuel car c'est le bon. Pour une santé que nous voulons avoir. La deuxième chose, c'est la santé
actuelle ici et zéro là-bas. Revenons à l'unité. Maintenant, la dernière chose à faire
est de
créer, tout d'abord, une référence
à
ce Heart Cyçon, que nous allons
simplement insérer ici Ensuite,
nous avons besoin de sept éléments dans ce tableau car il y a six cœurs
différents, vous pouvez avoir de
la santé,
puis un avec zéro. Revenons aux sprites
et ajoutons-y tous ces éléments. Nous avons des cœurs, sept cœurs, six cœurs, cinq cœurs, 432.1 Cela devrait en fait être à peu près
tout ce que nous devons
faire pour que ce système fonctionne Si nous appuyons sur Play, nous pouvons voir que nous avons trois cœurs. Et puis, selon l'
ampleur des dégâts que nous subissons, ces cœurs devraient s'effondrer.
Alors on commence, on en prend un. Vous pouvez voir que
là-bas, nous montrons qu'il a un
demi-cœur, puis un autre. Et puis plus
nous subissons de dégâts, évidemment, plus nous perdons de santé jusqu'à ce que
nous
atteignions zéro cœur et que nous
devenions cette petite pierre tombale C'est tout ce que nous devons
faire pour construire notre système de santé. Notre jeu fonctionne à
peu près parfaitement maintenant. Nous pouvons même mourir et perdre. De toute évidence, il
nous reste encore quelques retouches à apporter. Nous devons ajouter une boucle de jeu. Nous devons améliorer
les graphismes et évidemment tous les éléments audio, mais cela représente en
fait une bonne partie de notre
jeu déjà terminée pour nous Cela ne
semble peut-être pas encore terminé, mais nous avons en fait développé une grande partie
des mécanismes de base. Et ce qui
reste après ça, c'est beaucoup plus d'ajouts
et de trucs plus amusants. Nous avons construit la plupart
des éléments de base. J'espère que vous m'avez suivi
et que vous avez réussi à faire
fonctionner un système aussi performant que moi, ainsi que
les indicateurs de santé et de dégâts. Dans le prochain épisode,
nous allons
commencer à ajouter des devises. Nous allons ajouter des diamants, et chaque nuage aura
très peu de chances d'
apparaître dans un diamant Nous allons commencer
dans le prochain épisode, mais j'espère que vous avez pu
suivre jusqu'à présent et que votre jeu est en
train de se préparer. Merci.
12. 11. Présentation des gemmes: Bonjour, bienvenue dans Unity. Maintenant, nous avons déjà ajouté le système de santé de
nos joueurs. Et à peu près
tout le reste dont un
jeu de plateforme aurait besoin
jusqu' à présent. À l'exception d'un
mécanisme de score, de pièces, de
pierres précieuses ou d'autres objets que vous pouvez ramasser pour montrer que vous
progressez dans le jeu C'est ce que nous allons
ajouter dans cet épisode et nous
allons utiliser des diamants. Maintenant, commençons, importons notre sprite diamanté parce que
je l'ai déjà fabriqué Importez Diamond Dong, qui est évidemment lié dans ce
dossier de la vidéo. Ensuite, réglez cette unité d'
images sur n'importe quelle autre unité et réglez
le mode de filtre sur point Maintenant, nous avons un
diamant que nous pouvons évidemment collecter dans notre
jeu, ce qui est plutôt cool. Maintenant, ce diamant, tout
comme les cœurs ont ajouté un contour
autour de lui, juste pour un peu plus clairement qu'il
y a des cœurs et un mécanisme de notation, je pourrais le supprimer
plus tard dans le jeu, mais pour l'instant je pense qu'il
fait un très bon travail en soulignant
qu'il est
différent des autres En fait, je vais également
vouloir définir un ordre et
une couche
plus élevés que dans le reste du jeu,
afin qu'ils ne soient ordre et
une couche
plus élevés que dans le reste du jeu, pas
cachés dans les nuages. Mais j'aborderai tout
cela dans une minute. Permettez-moi de commencer par le faire glisser sur l'
écran comme je viens Et il s'agit essentiellement
d'une méthode abrégée pour
créer un objet avec
un moteur de rendu de sprites Avec ce sprite en particulier, je ne perdrai
pas de temps à en
faire un préfabriqué appelé Diamond Ensuite, je vais supprimer
celui-ci que j'ai ici et ouvrir
mon préfabriqué en diamant. Maintenant, ce préfabriqué en diamant que
nous allons utiliser,
évidemment, pour coder une grande partie de la logique que nous voulons
pour mon Et avant de
commencer à écrire du code, nous devons essentiellement décider comment le système va fonctionner. Le système que j'ai
choisi est que
chaque nuage ait
une certaine probabilité,
nous pouvons
en faire un sur chaque nuage ait
une certaine probabilité, 31 sur quatre, peu importe ce que nous voulons pour faire apparaître
un diamant lorsque le joueur
atterrit sur le cloud Et lorsque vous sautez sur un nuage, il est possible que
le nuage
projette un diamant
hors d' une position et que vous
deviez
attraper ce diamant
avant qu'il n' atterrisse. Je pense que je vais commencer par le photographier directement
pour que vous puissiez le voir. Mais les diamants ne feront
pas partie du cloud. Ils vont sauter
puis tomber à travers. Vous devez donc être
capable de le saisir soit en l'air, soit
lorsqu'il retombe. Mais il ne va pas y
rester longtemps, il va sauter
puis retomber. Nous
ne voulons donc évidemment pas avoir un planeur normal, nous
voulons avoir un déclencheur Commençons donc. Je
vais ajouter un planeur circulaire En fait, ce n'est pas un planeur juste parce que je pourrais aussi ajouter
un polygone Mais dans ce cas, avoir comme un cercle
n'est pas la pire chose au monde, car il
faut être un peu plus indulgent
avec les bonus qu'avec les hitbox Parce que personne ne sera contrarié d'avoir
collecté quelque chose Évidemment, ne le
rendez pas ridicule. Et je vais mettre le
décalage à zéro, non ? Permettez-moi de le maintenir à 0,1 0,05. Faisons en sorte que ce soit
trois. Nous y voilà. Comme je l'ai dit,
personne ne sera
contrarié d' avoir collectionné
quelque chose comme ça, mais il ne faut évidemment pas le rendre
ridicule, il suffit de le faire à peu près de cette taille Et je dirais que c'est
probablement une bonne chose. Ensuite, assurez-vous de le
définir comme déclencheur et nous devrons
créer un nouveau tag. Nous allons l'appeler diamant. Maintenant, avant de commencer, attribuons-le évidemment
là avant que je ne l'oublie, avant de commencer à
ajouter toute la logique de la
façon dont le score
, le suivi des diamants et le fait d'avoir
environ diamants par série, tout cela
va fonctionner. Passons d'abord à la logique
qui consiste à
faire apparaître
les diamants quand nous voulons qu'ils apparaissent, puis nous pourrons ajouter tous
les autres éléments Pour ce faire, il va
falloir aller dans mes clouds et retourner
dans mes préfabriqués ici. Et je vais ajouter
à chacun de ces
préfabriqués
un script qui dit, d'
accord, vous avez de nombreuses chances de
naître dans un diamant Commençons par
ce script ici. Je vais créer
un script C sharp. Je vais l'appeler
Diamond Spawn. Je vais
double-cliquer pour l'ouvrir dans Visual Studio. C'est là que je veux que le
script fonctionne. Je tiens à dire que chaque fois qu'
un joueur me saute dessus, c'est à ce moment-là
que l'on calcule une
chance sur trois savoir si je veux
apparaître dans un diamant Mais c'est un peu déroutant car il est assez
difficile de faire la différence. OK. Est-ce la première fois que
les joueurs me sautent dessus ? Parce que je ne veux évidemment pas que le joueur puisse sauter
autant de fois qu'il le souhaite et
finir par apparaître dans un diamant Je veux qu'on décide avant même
qu'il ne saute dessus, si cela va
générer un diamant ou non Je vais utiliser une méthode de codage
un peu étrange ici, mais c'est en fait l'une
des meilleures façons, à mon avis, de le faire. Je vais commencer
dans mon vide initial. Je vais dire qu'un entier
x soit égal à une plage aléatoire. N'oubliez pas que nous avons
décidé que la gamme était inclusive au minimum,
mais pas au maximum. Je pense que si vous utilisez des nombres
flottants, c'est inclusif, mais ce n'est pas le cas pour les entiers Et nous allons placer ici un entier
public et nous
allons avoir l'occasion, c'est celui dans
combien de chances ? Je vais passer de un à
ma variable de chance plus un. En d'autres termes, si
je fais 1.2, cela passera à
3, ce qui me donnera un ou deux. Ensuite, je vais dire que si
x est égal au hasard, parce que c'est
probablement la meilleure façon de le coder. Évidemment, si nous sommes égaux
au nombre maximum, par
exemple, s'il est égal à trois, il va choisir 1 à 3. Et
s'il est égal à trois, nous savons qu'il y a toujours autant de chances de l'obtenir. À peu près tout fonctionne
réellement. On pourrait dire chance
moins un ou même 001, mais c'est une bonne façon de savoir qu'il se
situera dans la fourchette. Ajoutons des crochets
autour de cette instruction if. Et puis, dans ce
code,
c'est ici que nous allons dire ce qui se passera si nous
en avons l'occasion. En fait, ce
n'est pas ce que
nous voulons, nous voulons dire que si nous
n'avons pas cette chance, si j'obtiens autre chose que le chiffre
que
je veux obtenir, je vais vouloir détruire ou supprimer ce script
attaché à mon code. Je vais dire
gameobject, Get component. En d'autres termes, trouvez
dans mon objet de jeu quelque chose appelé Diamond Spawn , qui est le script actuel Puis supprimez-le. Cela peut sembler un
peu confus, mais en gros, ce que
je fais, c'est que je vais, d'accord, démarrer le jeu. Choisissez un nombre aléatoire entre
un et trois. Et si vous en avez
autre que trois, détruisez le script. Ce que cela
va faire signifie qu'en moyenne, seul un script sur trois script restera sur mon objet de jeu. Quand j'aurai joué, combien de nuages
vont apparaître ? Il y a une chance
sur trois que ce script survive. Ensuite, je vais écrire un code en dessous
qui dit, d'accord, si j'interagis avec le joueur, dans le diamant Et puis je vais également
supprimer le script parce qu'ils
ne veulent pas faire apparaître
plus de diamants une fois que j'en ai créé un. Avant de prendre de l'avance, créons d'
autres variables, public gameobject,
diamond, et je vais également
créer une référence à un corps rigide Ensuite, je vais aller de l'avant
dans le vide de ma mise à jour. Je le supprime, je vais
le remplacer par un vide
en collision, entrez
deux D. Je vais dire si Collision Game Object Point Compare
Tag est un joueur. En d'autres termes, si je viens d'
entrer en collision avec le joueur. Et ce code ne
sera évidemment vérifié que si
j'ai atteint les 13 chances. Si j'entre en collision avec le joueur,
je veux faire apparaître mon objet. Je vais dire que l'objet de
jeu D est diamant
instancié en
tant qu'objet de jeu Je vais définir la position de
mon nouvel objet de jeu (action d'opposition
transformée) égale à ma
position actuelle sur le cloud , qui sera la position de
transformation. Il se peut que je ne
le lance pas pour qu'il
apparaisse exactement dans la même
position que les nuages Je vais créer
un nouveau vecteur. Troisièmement, go
transformed opposition, do x, opposition
transformée y plus un offset que je vais
choisir maintenant. Et puis option transformée, je crée un nouveau flottant,
appelez-le Cela me
permettra de choisir où
je veux apparaître au-dessus des nuages La dernière chose que je vais faire est
de sertir RB, qui est ma référence à
un corps rigide égal à D, qui est mon diamant nouvellement
créé Procurez-vous un deuxième composant rigide
D. Je vais
ajouter un corps rigide
à mon diamant et c'est ainsi
que je vais le
faire sauter en l'air. Je vais choisir Rb,
la vélocité est le nouveau vecteur deux, mettre à zéro et
je vais définir, je vais créer un
nouveau flotteur ici qui sera ma vitesse de lancement
en diamant Je vais donc simplement
appeler ça un lancement. Cela indiquera à
peu près à quelle hauteur dans les airs le diamant
va tomber. Ensuite, je vais
créer un script séparé au-dessus de mon diamant, qui
indiquera si je passe en direct
avec le joueur, faites-le, sinon je
vais vouloir
me supprimer dès que
j'atteindrai ce niveau
de position en y. Parce que la façon dont
ça va fonctionner c'est que chaque fois que j'atterris sur un nuage, il fait
exploser un diamant. Alors ça va tomber. Si
le joueur ne le touche pas, nous ne voulons pas
tomber pour toujours. Cela va affecter
beaucoup de
calculs et de puissance informatique au jeu, même si cela ne
se produit même pas à l'écran. Alors allons-y et
laissons ça pour le moment. En gros, nous
disons que tant que nous existons, le temps que
le
joueur atterrisse sur nous, apparaisse dans un diamant Positionnez-le légèrement au-dessus de nous et
lancez-le dans le ciel. Donc, avant de vraiment tricher, si cela fonctionne, il y a
quelques choses que nous devons faire. Tout d'abord, nous devons nous assurer que le joueur est tag-player. Allons-y et
taguons-le en tant que joueur, ce que nous n'avions pas
fait auparavant. La deuxième
chose à faire est d'aller dans mon préfabriqué. Et je dois y aller et m'
assurer d'ajouter le script à
chacun d'entre eux. Allons-y et tapons mon script de poésie que
nous venons de faire ici. Passons
à 1.3 Pour l'instant, passons aux préfabriqués
et sertissons notre diamant, car les corps
rigides préfabriqués seront assignés
lorsque nous Réglons ensuite le
décalage à environ
0,5 et le lancement à environ
cinq pour le moment. Nous pouvons évidemment
modifier cela plus tard, mais assurez-vous simplement qu'il édite
évidemment
chacun de ces
préfabriqués, comme le Et nous pouvons évidemment
les modifier selon les besoins. Mais la dernière chose que nous
devons faire pour le moment, c'est que
cela fonctionnera plutôt bien. Nous allons apparaître
dans notre diamant. Et tout va fonctionner
sauf le corps rigide car nous n'
avons pas encore de corps rigide attaché à notre
diamant. Corrigeons cela
en ajoutant deux
D. À un corps rigide , c'est à
peu près tout ce
que nous devons faire. Je vais figer
la rotation Z, même si cela ne fait pas
vraiment de différence. Je vais m'assurer
que le collisionneur est un déclencheur, et
c'est ce que je voulais C'est en fait
tout ce que nous devons
faire lorsque nous
créons notre script. Nous avons ce script
ici qui va dire «
OK, apparaissez dans notre diamant Chacun des trois nuages
devrait générer un diamant.
Essayons de voir si cela fonctionne. Appuyons sur Play et
voyons au fur et à mesure. Nous avons un nuage en train de germer. Voyons s'il a conservé un script.
Le script n'y figure pas. Je suppose que ce n'était pas
le cas sur trois. Voyons s'il y en a
un après ça. Celui-ci
ne l'a pas non plus. Celui-ci a
clairement été détruit. Mon Dieu, c'est difficile.
Vous pouvez le voir là-bas, c'est la seule
chance sur trois que nous puissions voir le diamant apparaître dedans Maintenant, le problème est que nous
n'avons pas réellement
détruit le script, donc cela va
se produire à chaque fois. Mais je trouve que ça
a l'air plutôt cool. En fait, cela fonctionne très bien, et nous avons un
diamant qui apparaît dedans Je voudrais apporter quelques modifications. Tout d'abord, je voudrais changer cette vitesse de lancement
à 6,8 pour que nous ayons maintenant une meilleure chance
d'apparaître Il sera un peu plus facile d' attraper ce diamant
au
fur et à mesure qu'il s'élèvera. En fait, je vais en faire quelque chose comme
huit, voir si c'est
un peu ridicule, mais ça pourrait très bien fonctionner. Laissez-moi simplement tester cela, évidemment. Et puis, évidemment, pour
mon joueur également, je veux
réduire un peu
sa vitesse et augmenter légèrement la
hauteur de saut. En fait, je pourrais
même augmenter légèrement l'échelle de gravité. Ce ne sont que
des modifications que je suis en train d'apporter. Je vais donc modifier
mon échelle de gravité, je
vais la porter à 2,5 , la hauteur de
saut à 12 et la vitesse à
cinq. Et voyons comment se joue ce
jeu, car on a l' impression qu'il flotte un peu
en ce moment. C'est en fait bien
mieux que ce à quoi je m'attendais. C'est beaucoup mieux et ressemble
beaucoup plus à ce que
je veux que vous voyiez maintenant. Il est beaucoup plus facile d'
attraper ces diamants. De toute évidence, ils se
reproduisent encore à l'infini, mais cela devrait être une bonne chose pour Rédigons donc rapidement le
tweet dont nous avons besoin. Dès que nous faisons apparaître
un diamant, nous voulons évidemment supprimer notre script, car nous ne
voulons pas le faire apparaître en plusieurs Donc, recopions-le. Ensuite, il ne
nous reste plus qu'à ajouter un script sur le diamant lui-même qui dit que si j'
entre en collision avec le joueur, alors augmentez cette
variable sur le joueur Et je vais avoir un
nouveau script ici. Je vais avoir
deux nouveaux scripts. L'un d'eux
sera ajouté au joueur, qui gardera une trace du nombre de diamants
dont dispose
le joueur Et l'un d'entre eux
sera ajouté aux diamants qui suivront lorsque le joueur
entre en collision avec le diamant Allons-y et
créons un script en C sharp, appelons-le player diamonds. En fait, ce ne sera pas
vraiment un script, ce
sera juste un entier, qui indiquera
public int diamonds. En fait, nous
allons également avoir un public intéressé les diamants de haut niveau. Il y aura le
diamant, la
course actuelle et il y aura
notre lycée. Nous y reviendrons
plus tard, mais ce sont
les seuls dont nous avons besoin pour le moment. Ensuite, tout ce que nous allons
faire ensuite c'est créer également
un nouveau script. Ici, je vais créer
un script de boutique et l'appeler « diamant » sur le script. Tout ce que je vais avoir, c'est un seul événement nul au
déclencheur, entrez deux D. Si un objet de jeu en collision
compare un joueur, alors nous allons entrer en collision avec l'
objet avec lequel je suis entré en collision nous trouvons un composant
appelé diamant joueur Allons-y et mettons
des crochets ici afin que nous
puissions mettre tout cela dans
l' énoncé et trouver une variable sur cette variable
appelée losanges incrémentée
d' En d'autres termes, si
j'entre en collision avec le joueur, les
diamants augmentent d'un Ensuite, nous devons réellement
supprimer l'instance
de ce préfabriqué. Allons-y,
détruisons l'objet du jeu, ce qui va essentiellement
supprimer ce diamant actuel. Ensuite, la dernière chose que
nous allons faire est ajouter une condition. Si
nous entrons en collision avec le
bas de la carte, nous voulons aussi
faire exactement la même chose, me
détruire et ne pas
l'incrémenter cette Pour ce faire, nous allons
en fait ajouter un collider en bas
de la caméra principale, car c'est là que le
jeu va se dérouler Et nous allons ajouter
un Edge Collider en deux D. Nous allons aller le
voir là-bas C'est ce qui
va être utilisé pour savoir si nous avons atteint la fin
de la carte ou non. Je vais déplacer le décalage du Y vers le bas. Nous pouvons en avoir un
peu sous l'écran, cela ne fait pas vraiment de
différence. Fixons ensuite les
points à moins cinq, ou plutôt à moins
dix, peut-être même. En fait, nous voulons être
plus grands que l'écran. Disons négatif 12.12 Maintenant, ce sera également un collisionneur à
gâchette Ensuite, nous allons juste
avoir une petite ligne de code à l'intérieur qui dit contraire si collision game
object point compare tag. Si j'appuie sur la caméra principale, je souhaite toujours supprimer
l'instance de ce préfabriqué. Cela devrait en fait très
bien fonctionner si nous entrons en collision
avec le joueur Nous voulons supprimer
l'objet du jeu mais également l'ajouter à l'inventaire du
joueur. Si nous entrons en collision avec
la caméra principale, nous voulons également simplement
cesser d'exister Voyons voir si cela fonctionne.
Je vais d'abord essayer de ne pas ajouter de diamant du tout. Avant de
tester cela, je dois
évidemment ajouter le script Diamond de mon
joueur, ce que j'ai oublié de faire, et suivre le nombre de
diamants que nous avons. En fait, j'ai également oublié d'ajouter le
script en diamant sur le diamant. Allons ici et ajoutons le script
en forme de diamant. Et je pense que c'est tout. Parce que
nous avons déjà ajouté le Diamond Spawn. Appuyons sur Play et testons exactement
si cela fonctionne ou non. Nous allons devoir faire des tests
pour voir si les diamants apparaissent ou s'il n'y en a pas encore. Nous allons devoir
suivre le rythme de la
caméra, évidemment, pour voir si nous allons
en rater une. Diamond est apparu. Il semble qu'il soit indiqué que la
caméra principale du tag n'est pas définie. Oh, nous l'avons mal orthographié. C'est une solution très simple.
Allons-y supprimons cet espace
et testons-le à nouveau, car nous
recevons actuellement des erreurs qui disent, d'accord, je ne sais pas ce qu'est la caméra
principale, mais c'est juste la caméra principale. Un seul mot. Essayons encore une fois. Cela devrait fonctionner maintenant. Non, ce jeu est
terriblement difficile, mais j'y arriverai dans De toute évidence, les modifications apportées au jeu
proviennent généralement de la
difficulté avec laquelle vous créez les ofscles
que Je vais tricher un peu et redonner ma santé à Max
parce que je suis sur le point de mourir. Réglons l'état de santé actuel à six. C'est l'un des avantages
du développement du jeu. C'est également impossible,
ce que je dois corriger tel quel. Nous y voilà. Voilà un diamant, et
on dirait qu'il est apparu
, ce qui est génial Remettons mon état de santé
à dix cette fois. Nous allons avoir des
erreurs parce que nous ne sommes pas censés avoir une santé
supérieure à dix. Mais c'est bon. Cela ne va pas
ruiner le jeu. Je vais essayer de récupérer un diamant et il a l'air parfaitement
fonctionné.
Je collectionne un diamant. Si nous allons voir mon joueur, nous pouvons voir que j'ai des
diamants parmi eux. peu près tout
a vraiment très bien fonctionné. ne nous reste plus
qu'à ajouter un compteur pour savoir combien de
diamants nous avons collectés. Passons à mon interface
utilisateur ici en haut,
sous les cœurs, nous allons vouloir créer une nouvelle image. Je vais juste le copier pour moment et le déplacer légèrement vers le bas. Je vais vouloir que cette
image soit un diamant. Je vais
définir la taille native. Je vais évidemment avoir besoin de le réduire,
comme je l'ai fait
pour l'autre, pour m'assurer que les
pixels sont de la même taille, qu'ils sont un peu plus grands. Tu vois, ça
me semble plutôt bien. Évidemment, comme je l'ai dit, il n' nécessaire d'être parfaitement exact, mais il faut que ce
soit assez précis. Si vous voulez qu'un jeu soit beau, il
suffit de le déplacer. Au lieu de l'avoir
directement en dessous, je vais l'avoir de
l'autre côté, comme ça. Maintenant, je vais avoir la
partition sur la gauche, ce qui peut sembler un peu
étrange à certains, mais vous pouvez choisir
ce que vous voulez faire. Il se peut que je
change cela plus tard, mais pour l'instant je pense que
cela fonctionnera très bien. Déplaçons-le vers le
bas, c'est en ligne, puis nous allons
l'appeler diamant. Ensuite, tout ce que nous avons à faire
est d'accéder à
mon interface utilisateur et de créer
une autre interface utilisateur d'objets, de l'
appeler texte, et vous devez
créer un Text Mesh Pro. Vous
allez faire apparaître cette fenêtre contextuelle. Cliquez simplement sur Importer pour importer tous les fichiers dont il a besoin pour
ce package spécifique. Vous n'avez pas vraiment
besoin des exemples dans les extras, donc je ne
vais pas les importer. Ensuite, je vais prendre
ma nouvelle zone de texte et mettre en tant qu'objet
enfantin de ce diamant Je vais le
faire glisser en dessous, comme nous l'avons fait
au début du
jeu avec le stockage. Je vais ajuster la
position X pour qu'elle soit quelque chose comme -100, la position Y soit zéro C'est au milieu.
Je vais juste ajuster le reste de
cette boîte comme bon me semble. Je pense que c'est probablement une bonne chose. Déplacez-le ensuite vers le haut et vers le bas. Je vais juste
m'assurer d'avoir le bon sens. Je veux qu'il soit bien aligné. Je pense que le code PIN est activé, je vais garder le pH maintenant
parce que je ne peux pas vraiment imaginer un cas où
vous utiliseriez le tout. Il faudrait collecter
beaucoup de diamants. Mais juste pour être sûr, je
vais le déplacer de cette façon et je vais désactiver
le wrapin Ce n'est pas ce qu'il fait.
Voilà, c'est beaucoup mieux. Il va désormais s'étendre le plus loin
possible, au-dessus. Ensuite, je vais devoir
choisir quantité de ces informations que je veux
évidemment afficher. Testons une valeur par défaut de 540 qui ne semble
pas très bonne. Vous allez évidemment devoir choisir une police différente et
tout le reste. Voyons voir, nous avons
une police Drop Shadow. Ça n'a pas l'air génial. Une police de
contour peut sembler correcte. Vous ne pouvez pas vraiment le voir car
il n'y a pas une quantité incroyable de polices disponibles juste
intégrées à Unity C'est pourquoi j'ai
inclus une autre police qui est la même que celle que je vais
utiliser , que j'ai trouvée
sur Internet. Vous pouvez trouver tout un
tas de polices
gratuitement sur différents sites. Assurez-vous qu'ils disposent
de la licence appropriée. Mais si vous pouvez trouver
l'une de ces polices, vous pouvez trouver une
police qui convient assez bien à votre style de jeu.
Je vais utiliser celui-ci. Passons aux questions
diverses et cliquez sur Nouvel actif important. Le voici, Bloopf. Nous avons une taille de police ici. Je ne
les embêterais pas trop. Nous pouvons les essayer une fois que
nous avons ajouté la police, mais laissez-les tels quels. Maintenant, pour utiliser une police supplémentaire, nous ne pouvons en fait pas utiliser
cette prose de maillage de texte. Nous allons devoir le
supprimer et créer une nouvelle interface utilisateur. Nous allons juste
vouloir un texto normal. Je dois aller sous
Héritage et cliquer sur Texte. Nommons ce compteur. Ensuite, je vais faire glisser
exactement comme je l'ai fait la dernière fois. Je vais régler le trop-plein horizontal pour qu'il
déborde. Et je vais le régler
correctement. Déplace-le de cette façon. Je veux qu'il soit
centré au milieu. Je veux que ce soit Font
Bloop, tu vois. Ça a l'air d'aller bien. Mais c'est
très flou Et
pour résoudre ce problème,
nous allons en fait augmenter la taille de la police, déplacer la chose aussi
grande que possible. Vous pouvez en faire un
maximum de 300. Et je trouve que
c'est généralement ce qu' il
faut faire pour que les pixels s'
affichent correctement, puis il suffit baisser complètement l'échelle
. Réduisons-le à la baisse. Cliquons dessus et réduisons les
proportions
jusqu'à ce que nous voulons. Je pense que nous avons besoin d'un
peu plus petit que cela. En fait, essayons un
0,12 qui pourrait convenir. Essayons de changer la couleur pour qu'elle soit celle que nous voulons réellement,
à savoir le blanc. Il est aligné au centre, mais
il ne semble pas être au centre. Je vais donc le régler sur
l'alignement inférieur. Et essayons 150.
Ça a l'air d'aller bien. Je ne suis peut-être pas votre police
préférée, mais c'est celle que je
vais utiliser dans le cadre de
cette démonstration. Vous pouvez évidemment trouver une police
différente en ligne
si vous le souhaitez, mais je pense que pour le moment elle fonctionne
plutôt bien. Rendons-la un
peu plus foncée, pour qu'elle ne soit pas d'un blanc éclatant, mais cela devrait fonctionner comme police de base pour suivre le
nombre de pierres précieuses que nous avons. Maintenant, il ne nous reste plus qu'
à écrire le code qui dit, accord, affiche le
bon numéro ici. Et tout cela se fera dans le
script Diamond de notre joueur, ici. Nous allons créer une
référence à Eyes in Unity. Nous allons rendre public le texte de
mise à jour. Et à l'intérieur, au-dessus de
cela, nous allons créer une référence à notre compteur. Nous allons dire que le contre-texte est égal à des diamants, à deux cordes. En d'autres termes, définissez
la variable de texte, c'est
ce que nous écrivons
dans cette petite boîte ici. Lorsque nous avons cliqué dessus, ce que contient
cette petite boîte qui
définit la valeur actuelle de qui
définit mes
diamants sous forme de chaîne,
est stockée sous forme de nombre entier Nous devons
le convertir au format texte. Avant de pouvoir le faire, nous
allons évidemment appeler ce texte de mise à jour nul
chaque fois que nous incrémentons du texte. Faisons une collision, récupérons diamants des
composants, mettons à jour le texte. Cela devrait en fait très bien
fonctionner. Tout ce que nous devons faire est de retourner dans Unity et de
nous assurer que nous avons également attribué ces
deux variables. Allons au
comptoir ici et faisons-le glisser dedans. Commençons par
une valeur de zéro, afin de ne pas commencer par
une quantité aléatoire de diamants pour voir si
cela fonctionne réellement. Si nous cliquons sur Jouer, nous avons notre compteur de diamants
sur la droite. Nous avons le
cœur tourné vers la gauche. Voyons si nous pouvons collecter
et rendre ce jeu plus facile. Voyons si nous pouvons
collecter des diamants. En fait, je pourrais
même augmenter un peu plus la hauteur de
saut. Je vais y arriver à partir de 12, je vais en faire 14. Voyons si cela
fonctionne un peu mieux. C'est peut-être un peu élevé. Restons-le à 12, mais augmentons
peut-être un peu la
vitesse. Faisons en sorte que la vitesse soit six. Je sais que c'était six à l'origine, mais je pense que cela
fonctionnait un peu mieux. Oui, c'est un peu
plus facile à traverser. Ça devrait être une bonne chose. Il ne nous reste
évidemment qu'à attendre une faible apparition pour voir si nous pouvons tester notre collection de diamants Je ne pense pas que je l'aurais
obtenu de toute façon. Non, il n'y a pas de diamant là-bas. Il y en a une.
Nous y voilà. Et vous pouvez voir que cela fonctionne
vraiment très bien. Nous avons un diamant maintenant
et nous l'avons collecté, et j'espère qu'il sera là. Il y a deux diamants.
C'est à peu près la base de notre système de collecte de
diamants. Bien évidemment, nous
allons
commencer par les dernières
touches de notre jeu. Mais nous avons tous les éléments de
base avant de pouvoir le construire. Nous devons ajouter du
post-traitement, lui
donner une bien meilleure apparence, son et de la musique, et
tout le reste. Et nous devons également réaliser
des économies afin de nous assurer d'économiser le
nombre de diamants dont nous disposons. Mais je pense que nous
sommes allés assez loin et que nous avons
fait une bonne partie
du jeu si vous m'avez
suivi et si
votre jeu est vraiment
comme le mien en ce moment, un bon travail car vous avez déjà à
peu près un jeu de plateforme. Comme tout ce que
nous allons ajouter maintenant,
cela va l'améliorer beaucoup. Mais ce sont toutes les bases. Nous avons des ennemis, un système de santé, mécanismes pour moi, et nous avons aussi le décompte
du nombre de diamants que
vous collectez. Tout
fonctionne à peu près exactement comme nous en avions besoin. Dans la vidéo suivante,
nous allons ajouter une boucle de jeu afin
de pouvoir continuer jouer au jeu sans avoir à cliquer pour redémarrer. Mais une fois cela fait, vous
aurez pratiquement
terminé le jeu,
tous ses composants de base, tous ses composants de base en aucun cas terminé le jeu. Parce que vous devrez tout de même
ajouter de la musique et tous les autres
éléments de post-traitement pour lui donner une meilleure apparence Mais vous allez terminer la base du jeu, c'est
ce que je dois dire. Quoi qu'il en soit, tout est
dans la vidéo suivante. Et si vous suivez
jusqu'ici, excellent travail. Merci.
13. 12. Créer une boucle de jeu: Bonjour, et bon
retour sur Unity. Il y a encore une
chose que nous devons ajouter
pour que ce jeu
reprenne à peu près toutes les bases d'un jeu auquel nous devrions être capables de jouer.
Et c'est une boucle de jeu. En d'autres termes, nous
pouvons continuer à jouer aussi longtemps que nous
le voulons,
car pour le moment, si nous
sautons de la carte ou
si nous mourons, s'il arrive quelque chose, c'est tout. Il ne se passe vraiment
rien d'autre. Et on ne peut même pas vraiment mourir comme
ça. C'est la première
chose que nous devons corriger. Mais nous ne pouvons évidemment pas
continuer à jouer, ce qui est d'abord le problème. Ajoutons le mécanisme qui
dit que si nous touchons le dos de l'écran ou si nous tombons en
bas, nous mourons. Commençons par le
déplacer un
peu vers le haut ici pour qu'
il se trouve à peu près en bas de l'écran. Évidemment, si vous
le touchez, vous ne
pourrez pas vous relever comme vous pouvez
le faire en avion. C'est très bien Ajoutons un autre Edge Collider cette fois. Nous allons l'ajouter sur
les côtés des écrans. Je vais cliquer sur
Modifier Collider. Et je vais
le traîner là-bas. Je pense que c'est
en fait un peu trop proche. Je vais le faire glisser
juste derrière cet écran. Et le second, je
vais le faire glisser ici. Ensuite, je vais juste les
ajuster de manière à ce que la distance soit exactement la
même,
soit -10,8 pour les deux Je vais faire en sorte que l'élément y
soit cinq et moins cinq. Cela devrait en fait être à
peu près tout ce dont nous avons besoin. Il ne nous reste
plus qu'à ajouter un script sur
ma caméra principale, sur mon lecteur, qui dit que si je touche la caméra principale,
je dois mourir également. Revenons-en aux scripts. Ouvrez la santé du joueur ici, sous ma gâchette,
restez en trois D. Je vais dire que si je heurte
un ennemi et temps d'
invisibilité est
écoulé, alors faites-le Sinon, si ce n'est pas un ennemi, si je percute
la caméra principale, est-à-dire
les limites de la carte,
le c'est-à-dire
les limites de la carte,
le temps d'invisibilité restant n'a pas d'importance Quoi que ce soit d'autre,
je dois mourir instantanément. Au lieu d'appeler Take
Damage Noid, je vais
juste faire un certain nombre de
dégâts et vérifier si je suis mort et si je suis mort,
puis appeler le Death Noid. Sinon, appelez,
il y a un vide. Je vais juste appeler le Death Void moi-même et lui dire, accord, alors je dois évidemment mourir et le
jeu doit s'arrêter. C'est en fait à
peu près tout le code dont nous avons besoin pour nous assurer qu'il s'agit
d'une fonctionnalité ajoutée. Maintenant, il y a encore une chose que nous devons vraiment nous rappeler de faire. J'ai oublié de faire de
ces deux déclencheurs, lequel ou plutôt
celui-ci est un déclencheur, celui du bas se déclenche, mais
celui-ci devrait l'être aussi. Faisons un
test si cela fonctionne. Si nous courons et
que nous
sautons contre le mur,
nous mourons instantanément. Nous pouvons voir que nous avons réellement
pris l'avion là-haut. met en évidence
un autre
problème qui, selon moi , pourrait poser problème parce que je me rappelle
l'avoir vu une ou deux fois, mais je ne savais pas vraiment pourquoi la pierre tombale s'élevait
plus haut qu'elle ne le devrait Cela le
rend en fait beaucoup plus clair. Ce qui se passe, c'est que comme il s'
agit d'un événement déclencheur, nous appelons le
vide mortel à plusieurs reprises. Je vais devoir m'
assurer que nous n' appelons le vide mortel que
tant que nous ne sommes pas morts. Si mon état de santé actuel est bon
et nul, je ne suis pas mort. En d'autres termes, je ne peux pas mourir
deux fois. Je ne peux mourir qu'une seule fois. Parce que ce qui se passe ici c'est
qu'à chaque fois que nous mourons, nous recommençons tout
ça. Et c'est comme si je
progressais légèrement,
ce qui explique
pourquoi parfois je meurs. J'ai eu ce qui explique
pourquoi parfois je meurs. J'ai l'impression d'avoir gravi les
échelons aussi. Je suis content que nous
l'ayons compris , je me
demandais ce que c'était. Nous devons ajouter ceci et ce n'
est pas une clause morte
ici qui dit, accord, tuez-moi uniquement si
je ne suis pas déjà mort. Le besoin d'ajouter exactement la même
chose ici est mort. Assurons-nous simplement
que c'est à la fois ici et ici. En d'autres termes, nous ne pouvons pas appeler la clause de décès si nous l'avons déjà appelée une fois auparavant. Ce sont les deux seuls endroits du script où
j'ai appelé clause de mort. Tout devrait bien
se passer. Revenons en arrière et voyons si cela fonctionne maintenant. Il devrait y faire un saut. Vous pouvez voir que je meurs instantanément, et c'est parfaitement ce que je
veux. Et cela devrait également fonctionner. Si je tombe du
bas de la carte, je devrais mourir moi aussi,
ce qui est génial. C'est tout
réglé comme il le fallait. Maintenant, évidemment, je
dois ajouter ma boucle de jeu, car pour l'
instant je meurs et il
n'y a aucun moyen de rejouer
au jeu. Je vais ajouter un peu de code qui dira que quand je meurs, arrête une minute, puis tout
passe au noir. Et puis ça va
disparaître du noir, après avoir fait son apparition dans un
nouveau type de scène Et pour ce faire, je vais
réinitialiser la scène elle-même. Donc, au lieu d'essayer de tout
remettre à zéro, au lieu d'essayer de
réactiver tous ces scripts
et de les remettre en place, je vais simplement
recharger la scène, qui revient en fait ce
qui revient en fait à cliquer à nouveau sur ce bouton , à
faire comme ça
puis à recommencer Ce qui
va vraiment très bien fonctionner pour moi parce que j' aurai un écran noir
estompé Je devrais être capable de le
charger à nouveau et de le faire ensuite. Et ça va
être une bonne chose aussi parce que je n'aurai pas
à coder des éléments supplémentaires
pour
le remettre dans l'état que je veux
être, c'est-à-dire celui-ci. Je vais donc créer
un nouvel objet to D. Je vais créer un carré, et je vais l'appeler rideau
parce que ce n'est pas
vraiment un rideau. Il va agir
comme un rideau. vais le rendre plus grand que tout
mon jeu à peu près aussi gros. Permettez-moi de baisser cet alpha
pour que je puisse voir où il se trouve. Disons que c'est une question de bien. Et
évidemment, avec un décalage nul, je vais
augmenter l'Alpa Je vais le rendre
complètement noir. Je vais le
mettre en ordre et en couche 100 pour qu'il soit devant
absolument tout. Ce rideau. Je n'existerai pas pendant la
majeure partie du jeu. Mais dès que j'en ai eu envie, je vais le faire apparaître et il va passer au noir, puis il existera Ensuite, dès que je commencerai, je
vais vouloir passer du noir au noir
, puis me désactiver. Je vais faire tout
cela en utilisant des animations. Je vais d'abord
créer un nouveau script. Je vais l'appeler
Curtain Script. Avant que je ne
code vraiment. À ce stade, je vais l'ajouter à
mes objets de rideaux. Je vais aller ici
et je vais ajouter un script de rideau à mon objet de
rideau. Comme ça. Ensuite, une fois cela fait,
je vais ouvrir Curtain Script et
créer un nouveau vide public. Appelez ça « désactiver ». Cela signifie simplement que l'
objet du jeu est activé, faux. En d'autres termes, arrêtez d'exister. Nous allons devoir réactiver
cet objet à partir d'un autre script. qui convient
parfaitement à nos besoins, car ce script de mort, nous
allons réactiver l'objet et nous allons
appeler un vide spécifique. Nous disons d'accord, passez au
noir, ne passez pas au noir. Mais pour le moment, nous avons
besoin de ce vide ici qui dit :
OK, arrête d'exister. Je vais l'utiliser dans
l'animation pour dire, accord, oui, tout va bien. Alors je vais créer
un nouveau vide ici
et l'appeler Fade Two. C'est dans ce vide que
se trouvera tout mon code
d'animation. Je vais devenir animateur public, retirer et je vais dire qu'
un set bool s'estompe et je
vais le mettre en vrai Ce que cela va
faire, c'est avoir un taureau qui
me permettra de contrôler, d'accord, je dois disparaître maintenant
et ensuite je vais faire le reste en utilisant ces
événements dans l'animateur Mais j'ai besoin d'un autre
vide et ce sera le vide pour recharger la scène Et pour ce qui est de la façon dont
nous
allons coder cela, nous allons
aller en haut
et
utiliser Unity Engine, Scene Manager ou Scene
Management.
Ce code indiquera gestionnaire de scène, scène de chargement, parenthèses
ouvertes, gestionnaire de scènes, obtention du nom de scène actif Ce que cela va faire,
c'est
charger quel que soit le nom de
la scène active que j'ai, qui est ma seule scène. Si je retourne dans Unity, j'ai la scène de Sable. Renommons-le parce
que ce n'est pas le meilleur nom. Je vais juste l'appeler
scène principale parce que c'est la seule scène que nous allons utiliser pour ce jeu. Nous allons
tout construire à l'intérieur. Et nous allons avoir ce
code ici qui dit, d'
accord, lorsque ce vide est appelé, qui sera appelé
par l'utilisateur de l'animation
lors d' un événement, désactivez-moi. Ensuite, lorsque ce code
est appelé ici, effacez deux, qui sera appelé par le script de santé du
joueur. Je vais régler mon fondu sur vrai et je vais m'estomper. Et puis à la minute où ce code, qui sera également
appelé par l'animation, je rechargerai complètement
la scène et elle me lancera
exactement là où je veux être Revenons dans
Unity et créons une nouvelle animation. Bien sûr, il va
nous en falloir deux. La première animation s'appellera Curtain Fade In. Et nous voulons évidemment passer
du noir complet au néant. Et nous allons
ajouter une zone tampon ici. Cela va gâcher
l'animation, mais mettons-la
à zéro là-bas. Ensuite, assurez-vous que nous
avons également le set 20. Maintenant, j'ai un fondu,
puis il reste ici. Et si je l'
ajoute, c'est parce que je vais ajouter un
événement ici Parfois, vous ajoutez un événement
juste à la fin d'un cadre. Cela vous pose quelques
problèmes car il n'existe pas réellement dans
ce cadre depuis très longtemps. S'il ne déclenche pas techniquement
l'événement, parfois il remonte au
début sans appel, puis il se répète deux fois
juste pour enregistrer tout cela Je vais lui donner suffisamment
de temps pour appeler cet événement. Et croyez-moi, un tiers de
seconde est amplement suffisant. Je vais passer à Curtain Script, et je vais dire « désactiver Une fois que je serai connecté, il
se désactivera tout seul. Assurons-nous simplement que
si nous ouvrons le rideau, c'est la solution par défaut, parce
que
c' est ce que je
veux voir se produire en premier. Dès que je commence le jeu,
c'est ce qu'il fera. Ensuite, je vais
créer un nouveau script. Disons que c'est Curtain Fade Out. Ce script, ou plutôt
cette animation, désolé, ne sera
appelé que tant qu' un paramètre de type
fade out est vrai. Je pense que c'est ainsi que nous l'
appellerons si nous revenons ici. Oui, nous l'avons appelé Fade Out. Ce n'est que lorsque le fondu est vrai. Nous n'allons utiliser
aucun État ici, car il s'agit de la machine d'État la
plus simple au monde. Mais nous allons
fixer un délai X, nous allons fixer la durée de
transition à zéro. Nous allons fixer
les conditions. Fade out est égal à vrai, alors tant que le fader est vrai, nous allons appeler cela une animation en
fondu Cela va dire, d'
accord, à partir de rien, nous allons
vouloir passer au noir. Ensuite, ce que nous allons faire
ici après cela, fois que nous sommes passés au noir, nous voulons
lancer un nouvel événement. Nous allons faire
exactement la même chose ici. Nous allons ajouter une zone tampon ici
au bout d'une seconde. Nous allons appeler
ce nouvel événement qui sera
une scène de rechargement C'est à
peu près tout ce que nous devons faire, car à l'heure
actuelle tout le code disparaît à
la minute où nous commençons ou disparaissons
plutôt qu'à la minute où nous commençons la scène et disparaissons. Mais nous avons encore besoin de quelque chose
qui puisse appeler ces scripts. En d'autres termes, à la minute où
nous mourons après avoir attendu une ou deux secondes,
nous voulons appeler ce script. Passons au script de
santé de mon joueur ici. Créons d'abord
un nouveau numérateur I. Appelez ça du rechargement, Delay. Cela
va être très simple. Nous allons juste
dire rendement, retour, attendre quelques secondes, et nous
allons attendre 2 secondes. Alors nous allons
vouloir faire deux choses. Tout d'abord, nous
allons vouloir activer cet
objet de jeu Curtain. Créons une référence
à celui-ci. Passons à objet de jeu
public,
appelons-le rideau. Nous allons activer les
rideaux. En d'autres termes,
réactivez le rideau. Alors nous allons vouloir
appeler ce fade to void. Immédiatement, nous allons
passer au rideau, au composant,
au rideau, au script, au fondu deux. Je pense que c'est ainsi
que s'appelle le vide. Oui, effacez deux. En d'autres termes, lorsque nous
mourons, attendez 2 secondes. Activez le rideau et
faites-le disparaître. Ou
fais-le disparaître. Tout ce que nous avons à faire ici,
à la fin de la mort c'est annuler ce délai de rechargement Je pense que cela devrait être tout ce dont nous avons besoin
pour travailler, évidemment. Vérifions-le car il y a souvent des bugs lorsque
nous faisons cela. Mais veillons à
ce que tout soit conforme à nos besoins. Nous n'avons évidemment changé que le script du
rideau ici. Et écoutez, nous n'avons pas
activé l'animateur, mais à part ça, je pense que
tout devrait bien se passer Oh, nous avons presque oublié
d'attribuer les rideaux. Allons ici pour jouer avec notre
santé et nous assurer que nous avons correctement
attribué le rideau.
Voyons voir si cela fonctionne. Si nous avions joué, nous pourrions
y voir comme nous le voulons, ce qui est génial si nous mourons. Essayons là-bas. Nous attendons 2 secondes, ce qui peut être un peu long. Ensuite, nous pouvons voir que le rideau ne
semble pas être réellement activé. Il se peut qu'il y ait un problème ici. Revenons simplement en arrière
et examinons notre code. Combien de temps nous attendons 2 secondes et nous activons le
rideau comme vrai. Assurons-nous que ce délai de
rechargement est respecté en définissant une
instruction d'impression ici C'est ainsi que vous
avez pu le tester. Ce n'est pas comme ça que tu dois faire, c'est comme ça que j'aime
le faire. Essayons encore une fois. Et nous pouvons constater que la déclaration imprimée ne fonctionne
clairement pas. Cette corotine
n'est donc pas appelée. Et c'est parce que nous n'avons pas
écrit Start Corotine. Tu vois, c'est un truc difficile. Parfois, j'oubliais à ce moment-là. Mais écrivons Start Corotine,
reload delay, et j'espère que
tout devrait fonctionner Revenons maintenant à mon jeu. Cliquez donc sur Play et
voyez si nous travaillons. Quand on meurt, on tombe. Allons-y. Maintenant,
il faut attendre 2 secondes. Passons à l'évanouissement, et nous allons
revenir dans le jeu. Cela
fonctionne plutôt bien en fait. La dernière chose est évidemment que
le fondu n'a pas vraiment effet, car
il ne le fait
que sur un
emplacement précis de l'écran, qui n'est pas du
tout ce que nous voulons pour être exactement là où se trouve
la caméra principale. Je vais juste écrire encore un
tout petit bout de code. Tout d'abord, nous allons
agrandir un peu le rideau car la
caméra commence par bouger. Cela
va en fait changer lorsque nous ajouterons notre hub de départ. Mais pour l'instant, agrandissons-le légèrement,
par mesure de sécurité. Augmentons légèrement cette échelle
, juste pour ne pas
en disparaître déjà. Enfin,
nous allons aller
ici où nous allons dire que
transformer la position est
égale à que
transformer la position est l'objet du jeu.
Trouvez dans notre scène, trouvez une caméra principale. La position de cette
caméra principale est celle où je veux être. Voyons si cela fonctionne. Cela
devrait parfaitement fonctionner. Nous appuyons maintenant sur le bouton Play. Nous pouvons constater que nous avons un fondu
parfait dans l'animation fonctionne parfaitement si nous
mourons en attendant 2 secondes, ce qui peut être un
peu long, mais je vais voir
que cela ne semble pas fonctionner. Je pense que le
problème est que cela
change peut-être la
position Z. C'est capricieux Des choses comme ça la
plupart du temps. Allons chercher l'objet du jeu et ne
trouvons pas la position principale de la caméra. Ensuite, allons-y et
assurons-nous de changer réellement cette position à
zéro sur l'axe z, ce qui pourrait
résoudre notre problème. Voyons si c'est le
cas. Allons-y. C'est toujours bizarre,
ce genre de choses. La caméra principale est
légèrement en retrait, c'est pourquoi elle nous a donné un aspect un
peu glitchy Mais c'est tout ce
que nous devons faire. Nous avons veillé à ce que la
position soit la même. Maintenant, nous pouvons jouer au
jeu à l'infini. Nous avons ce qu'
on appelle une boucle de jeu, ce qui est vraiment très cool, car c'est la base dont
nous avons besoin pour notre jeu. Nous avons créé tout ce dont
nous avons besoin maintenant, sauf tous les éléments supplémentaires
tels que l' audio, la musique
et tout ça. Allons-y et supprimons script de test
que nous avons mis ici, qui était l'
impression de celui-ci. Nous avons évidemment
changé de position maintenant qu'elle réinitialise
la position zéro Mais tout le reste
devrait bien se passer. En fait, nous
n'avons plus qu'un jeu, cette animation s'estompe
pour donner au jeu
un aspect un peu plus professionnel, je
suppose C'est donc la base
de cet épisode,
terminé, ainsi que
la base de notre jeu. C'est presque fait,
ce qui est plutôt cool. Dans la vidéo suivante, nous
allons commencer par économiser, afin de pouvoir économiser le nombre de
diamants que nous conservons réellement. Et nous avons un
lycée qui continue même après avoir
quitté le jeu, afin que nous ne perdions pas notre
progression à chaque fois. Mais c'est à peu près
tout pour cette vidéo. Et si vous m'
avez suivi et que tout fonctionne comme le mien, c'
est génial. Et j'espère que votre boucle
de jeu fonctionne comme ça. Et vous avez réussi
à construire à peu près toute
la base d'
une plateforme, d'un jeu. Félicitations pour
être arrivé jusqu'ici. Et si tout
fonctionne
comme le mien, c'est
génial. Merci.
14. 13. Sauver notre jeu: Bonjour, et bon
retour sur Unity. Maintenant, ce
sera probablement l'épisode le plus court de tout
le cours, car
tout ce que nous allons
ajouter dans cet épisode, c'est de la sauvegarde. Cela peut
sembler assez compliqué. En fait, si nous utilisons certaines
méthodes d'épargne, ce serait beaucoup plus difficile que ce que
nous allons faire. Mais nous allons utiliser
la méthode la plus simple et la plus basique Unity vous permet de sauvegarder
dans son moteur de jeu
, appelé Player Prefs Maintenant, juste à titre d'avertissement, si vous prévoyez de
sortir ce jeu et peut-être surtout s'il s'agit d'un jeu multijoueur ou
quelque chose comme ça. Je veux dire, je ne
sais pas exactement comment vous allez
passer de cette plateforme
à un jeu multijoueur. Mais vous savez, si vous vous en servez comme tremplin pour démarrer le développement de jeux et que vous envisagez de publier une
version appropriée et
commercialement viable, vous devrez probablement choisir sauvegarder vos jeux
d'une autre manière Parce que je vais
enregistrer mes jeux en enregistrant des
fichiers spécifiques sur l'ordinateur. Et je suis en
train de les enregistrer la manière la plus
cryptée ou difficile à déchiffrer, je suppose. Donc, si je sauvegardais
l'intégralité de mon jeu comme
ça, il ne faudrait pas trop
de difficulté à quelqu'un pour modifier ces fichiers et se donner tout
un tas de
capacités ou de pièces supplémentaires. Maintenant, ce n'est pas le plus gros
problème parce que, je veux dire, si quelqu'un
veut vraiment le faire pour un jeu solo,
il le peut en quelque sorte Et peu de joueurs de jeux
vidéo finissent par falsifier
les fichiers
de toute façon Mais si vous envisagez de créer quelque chose comme un jeu
multijoueur, c'est évidemment une
très mauvaise chose à avoir. Parce que
certains joueurs ne peuvent pas
se donner tout un
tas de choses et d'autres non. Quoi qu'il en soit, avec cette clause
de non-responsabilité,
économiser pour la plupart
des plateformes
indépendantes de base serait plutôt
bien, à mon avis Certaines personnes peuvent ne pas être d'accord, mais c'est assez facile
à modifier. Mais ce n'est pas vraiment un problème
pour les jeux indépendants comme celui-ci, car le plaisir est
déterminé par le joueur, et s'il veut
tout gâcher, il le peut Mais je suppose que c'est vrai
pour tous les jeux en général. Commençons par
le script de sauvegarde ,
car cela ne
prendra pas très longtemps. Tout ce que nous
avons à faire, c'est de passer ici à notre
script en diamant. Ce n'est pas un script en diamant. Je vais jouer un script en forme de diamant ici. Je vais
double-cliquer dessus. Et nous allons
avoir un nouveau vide. Je vais appeler ça un vide public. Conservez les diamants à l'intérieur de
ce bloc
si vous dites si les diamants sont
supérieurs à ceux du lycée. En d'autres termes, si nous avons
obtenu notre lycée, alors nous voulons que les préférences des joueurs
soient serties en diamants, nous voulons les sertir en diamants Cette courte ligne de code ici va
simplement dire, d'
accord, prenez ce que
je veux mettre dedans, qui est ma variable diamond, et mettez-le dans cet entier
dans Playerprefs appelé diamants, qui revient essentiellement à le
sauvegarder dans un fichier Si je veux l'obtenir
plus tard, je peux opter Playerprefs, gagner des diamants En fait, je vais le
faire juste en haut d'ici
dans mon vide de départ. Je vais dire « Void Start ». Et je dois dire que les diamants du
lycée sont équivalents à Playerprefs obtiennent des En fait, cela ne
fonctionnera qu' après avoir joué
au jeu au moins une fois, car d'ici là, nous n' aurons aucune valeur ici. Ajoutons donc une
brève déclaration si si préférences
du joueur ont des diamants clés,
en d'autres termes, si nous avons
déjà sauvegardé quelque chose dans ce
truc de diamants, alors sortons-le Ce code ne s'exécutera
évidemment pas la première fois
que nous jouerons au jeu. Les diamants des lycées seront mis à zéro. Nous pouvons en fait définir
cette valeur
là-bas comme valeur par défaut, ce qui est également une bonne
convention de programmation. Parce que Unity définit toutes
ces valeurs par défaut à zéro parce que nous les avons
attribuées en l'air. Mais si vous utilisez
un moteur
ou un langage de programmation différent, ce n'est peut-être pas le cas. Alors allons-y
et faisons-le. Et puis disons un vide de départ. Si nous avons
conservé quelque chose dans des diamants, sortez-le et
mettez-le dans des diamants de lycée. Ensuite, les
diamants conservés sont vides ici. Si notre score actuel
est meilleur que
cela, nous voulons le remplacer. Tout ce que nous allons faire en dessous,
c'est
cliquer sur Préférences du joueur, puis sur Enregistrer Allons-y et inscrivons tout
cela dans la déclaration. Ce sera à
peu près tout le code
dont nous avons besoin pour sauvegarder notre jeu et faire
fonctionner les choses entre les sessions. Il ne nous reste plus qu'
à appeler ce vide. Revenons à la santé des joueurs. Dès que nous mourrons, cela sera également attaché
à notre joueur. Allons-y. Objet du jeu, ne trouvez pas de
diamants pour Component Player, économisez des diamants. Testons cela.
Si nous revenons à notre jeu, nous cliquons sur mon joueur. Nous pouvons voir que toutes
nos
valeurs par défaut seront
ici. Cliquez sur Play. Voyons si nous
avons zéro diamant et si le
diamant du lycée est nul. Et cela ne changera pas.
Nous n'allons pas avoir d'erreur car nous avons
utilisé cet élément clé. Voyons si nous pouvons
essayer d'obtenir un diamant. Cela ne ressemble
pas à de la chance jusqu'à présent. Dès que nous en aurons un,
je
testerai ce code. J'ai un diamant, maintenant les diamants
actuels sont sertis à un. Je vais mourir.
Voyons voir si cela fonctionne. Actuellement, nous
allons le réinitialiser. Maintenant, faisons une courte pause
et si nous revenons à mon joueur, nous devrions être en mesure
de constater que nous avons effectivement des
diamants sertis à un au lycée. La prochaine fois que je mourrai, je n'aurai pas
plus d'un diamant. Je vais donc recommencer
à jouer. Voyons si
tout fonctionne comme
prévu. Nous avons toujours des
diamants de lycée fixés à un, et cela fonctionne,
peu importe le nombre de fois que
vous jouez au jeu,
le nombre de fois que
vous le fermez ou quoi que ce soit d'autre. Le système de sauvegarde va
fonctionner car nous sauvegardons maintenant la valeur de notre
jeu dans un fichier séparé. C'est tout ce que
nous devons
faire pour que la sauvegarde fonctionne dans mon jeu. Je vais évidemment
ajouter un hub de départ plus
tard où je pourrai afficher
le meilleur score
du joueur ainsi que le
titre et tout le reste. Mais pour l'instant, nous pouvons savoir que tout fonctionne
comme il se doit. C'est vraiment le dernier mécanisme que nous devons ajouter
à notre jeu. Ensuite, nous allons
améliorer les visuels
et
ajouter le hub de départ et
tous les autres éléments supplémentaires, notamment des améliorations
audio et visuelles Mais pour l'instant, c'est en quelque sorte
la dernière étape de la
création de notre jeu. Et nous avons
tout fait jusqu'ici. Un excellent travail si vous m'
avez suivi jusqu'au point où je suis. Maintenant, il est évident que nous devons encore
y apporter quelques modifications car certaines d'entre elles
sont Et peut-être faire un
peu de débogage pour que notre jeu soit un
peu plus fluide Mais jusqu'à présent, tout
fonctionne à peu près comme
on pourrait s'y attendre. Et il ne semble pas
y avoir de gros
problèmes pour le moment. Notre jeu est donc en
très bon état et nous avons tous les mécanismes de base, comme je l'ai dit, si vous avez pu suivre et que votre jeu est comme le mien en
ce moment, excellent travail. Parce que c'est en fait un
jeu assez impressionnant à créer, surtout si vous n'avez jamais créé jeux
Unity par le passé. Excellent travail d'avoir suivi cette
vidéo jusqu'à la fin. Assurez-vous d'être au
courant de cette vidéo avant de
regarder la suivante, car nous
ajouterons alors la dernière
touche au jeu. Et vous voulez en arriver
là avant de passer à autre chose. Mais j'espère que
tout fonctionne dans votre ordinateur
comme dans le mien. Dans la vidéo suivante,
nous allons commencer par ajouter nos
améliorations visuelles. Merci.
15. 14. Améliorer les visuels: Bonjour, et bon
retour sur Unity. Maintenant, j'ai mentionné dans la
dernière vidéo que nous avions pratiquement terminé toutes
les bases de notre jeu. Et je sais
que je l'ai dit plusieurs fois, mais c'est en fait à
peu près tout à fait vrai. Nous avons maintenant fait tout
ce dont vous avez besoin pour
une plateforme de base. Encore une fois, nous avons une génération de cartes
infinie et aléatoire. Nous avons une boucle de jeu,
tu peux mourir et recommencer. Nous avons un
système de score avec sauvegarde, et nous avons tout un tas d'
ennemis, des obstacles variés
et tout le reste. Et évidemment, comme je l'ai
dit, vous pouvez mourir et réapparaître et tout
sera sauvé. Et tout
fonctionne à peu près comme nous en avions besoin. Mais il y a certaines choses que
nous n'avons pas ajoutées. Tout d'abord, l'un d'
entre eux est un hub de départ, que nous aborderons un
peu plus tard dans le cours, afin que vous n'ayez
pas à revenir instantanément au jeu. Tu peux te détendre un peu. Ensuite, nous
n'avons aucun moyen d'afficher vos meilleurs scores, même s'ils sont enregistrés, ils
n'y figurent pas réellement. Nous allons également vous faire accéder
au centre de départ. Mais surtout, le jeu ne semble
toujours pas très beau. Si je
désactive ce rideau, si vous le pouviez, exactement comme moi, vous pouvez simplement le désactiver
quand vous en avez besoin ,
car il ne fera désactiver le fondu dans l'animation. En fait, nous
le désactivons,
puis le réactivons ultérieurement via un code. Le fondu fonctionnera
toujours, mais si vous voulez voir des
éléments dans votre jeu sans avoir à le désactiver
et à le déplacer, désactivez-le simplement pour le moment. Je vais le faire, le
jeu n'est pas très beau. Nous avons cet énorme fond bleu foncé. Rien ne se passe
en arrière-plan. Nous n'avons toujours aucun effet lorsque nous mourons
ou que nous collectons des pièces. Nous les faisons tous
changer de sprite immédiatement. Nous allons changer tout
cela dans cette vidéo et commencer par une
amélioration visuelle du jeu. Mais avant de
commencer, je voulais juste mentionner
que j' ai changé certains de
ces carreaux de sol entre
cette vidéo et la dernière. Cela n'a
aucune importance, car je suis presque certain que vous n'avez pas exactement
les mêmes
carreaux de sol que moi. Mais certains de mes carreaux de sol étaient impossibles à traverser. Je voulais juste
mentionner que si quelqu'un remarque qu'ils ont un aspect légèrement différent, j'ai modifié quelques
points. Par exemple, je l'ai légèrement déplacé vers le haut et celui-ci vers le bas, je pense que celui-ci était
impossible par le passé, alors je l'ai déplacé vers le haut également.
Et celui-ci, j'ai déménagé. Ils sont à peu près identiques à
ce qu'ils étaient, avec quelques
légères modifications. Mais comme je l'ai dit, ce
n'est pas important du tout. Je pensais juste en avoir
parlé au cas où quelqu'un serait confus et
remarquerait une différence. Quoi qu'il en soit,
nous allons
commencer à mettre à jour
les visuels de ce projet Passons aux sprites et
aux nouveaux actifs importants,
comme nous le faisons toujours Ces
dix actifs de sprites ici seront évidemment toujours liés sous la vidéo et ils se trouvent également
sous celle-ci Allons-y et sélectionnons les dix nouveaux sprites que nous
venons de collecter là-bas Ensuite, réglons simplement
tous ces paramètres un seul 12 et pointons sur aucun filtre. Évidemment, si vos pixels par unité sont différents,
utilisez votre propre valeur. Mais vous devez le configurer de
manière à utiliser le pixel art. Et je vais juste faire
le single pour bonne mesure parce que
nous avons eu quelques
problèmes cardiaques, mais ce n'est pas grave. Quoi qu'il en soit, commençons par faire glisser cet
arrière-plan dans notre jeu Nous n'avons jamais créé
un tel objet auparavant, mais il crée simplement
automatiquement un objet sprite avec le sprite
actuel activé Je pense que nous l'avons fait une fois et
je vais refaire parce que
c'est le
moyen le plus simple de créer un sprite Ensuite, tout ce que je vais
faire, c'est le faire glisser sous mon appareil photo
principal comme ça, et je vais m'assurer
qu'il s'agit maintenant d'un objet enfant de l'appareil photo principal et je
vais mettre sa position à zéro. Cela va en fait me
permettre de faire en sorte que cela bouge toujours
avec la caméra principale. Si je déplace la
caméra principale de cette façon, vous pouvez voir l'arrière-plan
bouger avec la caméra principale. Vous pouvez imaginer que
pendant que nous jouons au jeu, cela
ressemblera à ça. Ce
sera toujours en arrière-plan, ce
qui est à peu près
exactement ce que nous voulons pour un
objet d'arrière-plan comme celui-ci. Allons-y et
assurons-nous
qu'il s' agit d'un objet enfant
comme celui-ci, et que nous avons défini sa
position à zéro. Ensuite, si nous appuyons sur
Play, nous pouvons réellement
voir la différence cela fait déjà dans notre jeu. Nous avons maintenant un jeu bien
plus beau. Nous n'avons pas ce genre de choses bleues
aléatoires
en arrière-plan. Maintenant, nous avons
en quelque sorte une apparence correcte. Jeu. Mais il
y a quelques problèmes. Tout d'abord, nous n'avons plus le
cœur. J'ai l'impression de
subir des dégâts au hasard sur ce truc. Et il ne semble pas
y avoir d'ennemis du tout. Mais je subis toujours des dégâts sauf ceux-ci,
pour une raison ou une autre. La raison en est
en fait liée à
l'ordre et à la couche
de nos sprites La plupart de mes sprites sont définis
à l'ordre et à la couche zéro car c'est la valeur par défaut et cela ne
pose aucun problème Mais maintenant que nous avons
ajouté un arrière-plan
comportant également un ordre
et une couche zéro, il
obtient la priorité de manière aléatoire par rapport ces sprites, nous ne
pouvons donc rien voir Fixons-le à quelque chose
comme moins cinq. Peu importe
ce que vous avez défini, tant qu'il est inférieur à celui
du reste de votre jeu. Allons-y également
et réinitialisons mon appareil photo principal parce que je
ne m'en rendais pas compte. Mais je l'ai
légèrement déplacé vers la gauche, c'est pourquoi le premier
nuage était un peu décalé. Maintenant, si nous avions joué,
nous devrions être en mesure de
voir si ces problèmes
ont été résolus, nous avons notre cœur et
notre petit contrepoids,
et si nous avons maintenant des objets normaux qui
apparaissent avec des diamants Et nous pouvons voir que cela
rend déjà le jeu bien meilleur. Nous avons en quelque sorte connu une amélioration
considérable, mais nous n'avons
rien d'autre en arrière-plan. Nous venons en quelque sorte d'avoir ce ciel et ces
nuages qui apparaissent,
qui sont au premier plan
et dans le jeu Mais nous n'avons
rien d'intéressant
en arrière-plan. J'ai créé
ces
nuages de fond ainsi que cet aigle, qui
seront tous deux très intéressants à voir
voler dans notre jeu,
mais nous ne les avons pas encore ajoutés. Pour cela, nous devons
écrire un script. Mais avant d'écrire mon script, je vais créer un
préfabriqué pour tous ces éléments Parce que si vous l'avez deviné, nous allons
les créer à peu
près comme nous les affichons sur
le reste de notre carte, juste qu'ils
seront en arrière-plan, donc ils ne seront pas vraiment importants,
ce
seront juste des sprites qui se déplaceront pour faire entrer
mes Je vais faire exactement comme
je l'ai fait avec l'arrière-plan. Faites-les simplement glisser dedans, comme si vous les voyiez
tous l'écran maintenant,
ils ont l'air plutôt cool. Il se peut que je doive changer cela ouvertement, un peu moins Vous pouvez donc voir qu'
ils ne font pas partie du jeu et qu'ils
font partie de l'arrière-plan. Mais je m'en
occuperai dans une minute. Tout d'abord, laissez-moi simplement
fabriquer mes préfabriqués. Je vais passer aux
préfabriqués et j'appelle,
je vais
les garder nommés Background Cloud 12.3. Je pense que cela
les résume assez bien. Je vais maintenant supprimer
ces objets de ma scène. Maintenant, j'ai mes trois préfabriqués avec mes
nuages de fond Avant de passer
à autre chose, je vais en fait
ajouter un corps rigide ce qui peut sembler un
peu confus, mais qui concerne la façon dont je veux que mes nuages se déplacent
dans les airs. Je vais
utiliser des corps rigides pour déplacer les nuages
dans le ciel. Allons-y et ayons trois corps
rigides, deux D dessus. Sélectionnez-les tous et assurez-vous
qu'ils sont également
tous réglés sur la cinématique Maintenant que je l'ai fait, je
dois le faire manuellement. C'est un peu dommage. Nous y voilà. J'
ai dû rater celui-ci. Très bien, maintenant j'ai trois corps
cinématiques rigides
ajoutés à mes nuages Et c'est en fait
tout ce dont j'ai besoin pour eux. Mais l'ego est un peu
plus compliqué car évidemment l'
aigle possède une animation. Au lieu de l'animer
comme nous l'avons fait, je vais vous montrer une astuce Si vous sélectionnez quatre
sprites et que vous les faites glisser, Unity crée déjà une
animation pour vous, automatiquement par
exemple, car c' est la seule animation que
nous voulons avoir En fait, cela
fonctionnera parfaitement. Je vais donner à cet aigle un nom que nous avons créé pour nous. Nous avons cet aigle,
un sprite ici, nous avons une manette Eagle Et si nous
ouvrons l'animateur, nous pouvons voir que nous
avons déjà cette animation d'aigle Si nous double-cliquons
dessus ou si nous l'ouvrons comme ça, nous pouvons voir que nous
avons une animation d'ego, qui va changer par rapport
à mes quatre sprites Si je vais sur mon aigle
et que je clique sur Play, nous devrions pouvoir voir que cela
fonctionne à peu près
parfaitement, ce qui est formidable. C'est en fait à peu près tout ce que j'
allais avoir à faire, mais vu pour moi, je
ne pense pas
que ce battement soit nécessairement
la meilleure vitesse Je vais passer à une vitesse de lecture de 0,5, puis si je clique sur Play, je pourrai le voir
en action. Et laissez-moi voir si je me décide, je pense que c'est bien
mieux pour un aigle. Mais à peu près
ce que nous avons fait ici, vous ne pouvez pas le faire manuellement. Nous sommes passés à une animation et nous avons créé un nouveau clip d'animation, ajouté un composant d'animation Et évidemment, lorsque
nous avons créé notre clip, cela a créé un
contrôleur pour nous, puis nous avons fait de notre clip
l'animation par défaut. Mais évidemment, Unity a
en quelque sorte fait tout cela pour nous. Si vous souhaitez le faire
manuellement, vous pouvez également le faire. Il suffit de suivre exactement le même
processus que nous avions fait auparavant. Mais si vous voulez
créer
rapidement un objet et une animation et que
vous n'avez besoin que d'une seule animation, ou si vous voulez avoir quelque chose comme
ça où il s'agit d'une animation, elle sera toujours jouée. C'est une façon assez
simple de le faire. Ensuite, vous pouvez simplement
modifier la vitesse de lecture, comme vous le souhaitez. C'est mon Eagle Done. Permettez-moi de l'
intégrer également aux préfabriqués. Je vais le renommer en
Eagle plutôt qu'Eagle One. Ensuite, il ne me reste plus qu'
à ouvrir cela et je vais
revenir à ma scène et ajouter un corps rigide,
comme je l'ai fait pour les autres, sauf pour
rendre celle-ci cinématique Maintenant, ce que je vais
faire, c'est
écrire de courts scripts. En gros, je vais
avoir un script qui va
apparaître dans un aigle, et un autre script qui
va apparaître dans les nuages Et je vais les faire
voyager à toute vitesse, à des vitesses aléatoires
sur l'écran. À des vitesses aléatoires, euh, à partir d'une plage spécifiée. Et dès qu'ils atteindront une certaine chose de
l'autre côté, ils se désactiveront Maintenant, je ne vais
utiliser aucune sorte de limite sur le
côté droit de l'écran. Je ne vais pas dire de fixer une
limite ici et de dire, d'accord, si l'aigle la touche. Parce que je ne veux pas que le
joueur puisse franchir des limites et mourir de
ce côté de l'écran. Je pense qu'il suffit que
ce soit sur la gauche. Tu devrais être capable de
prendre une longueur d'avance. Je vais avoir besoin de
coder manuellement. Je dois dire qu'une fois que cette position est passée à une certaine position, vous
devez arrêter. En fait, je vais le
faire d'
une manière un peu légère, mais cela
fonctionnera beaucoup mieux. Je vais avoir un objet
limite ici, et je vais le
déplacer comme ça. Et puis tout ce que je vais faire, c'est, au lieu d'essayer de calculer
constamment, accord, où est-ce que je fais référence
à la caméra principale ? Quelle est la distance entre ma position réelle
et ma position relative ? Je dois dire qu'à la minute où
j'aurai dépassé cette limite, je vais le
mettre de l'autre côté parce que des objets vont apparaître des deux côtés Alors laisse-moi le déplacer un
là-bas et un autre là-bas. Disons que dès que je devant l'un de ces objets
limites, je peux arrêter
et tout est fait. Le E
volera de droite à gauche et les nuages de gauche à droite. Je dois donc juste m'
assurer de savoir
lequel est lequel. Mais ça va plutôt bien
fonctionner. C'est ce que j'appellerai
la limite gauche. Je vais appeler celui-ci
ici, Boundary right. Cela me
permettra de savoir où se trouve ce qui se trouve. Je vais le remplacer par -11,5 et le faire 111,5. Ensuite, dès que
mon objet aura dépassé ce point, je ferai apparaître En fait, je vais déplacer
les choses un peu comme
ça parce que les
nuages sont assez gros et je ne veux pas qu'ils apparaissent hors
écran plutôt qu'à l'écran.
Faisons en sorte que ce soit 14. Les aigles sont assez petits, donc je pense que 12 devraient
suffire ici. C'est à peu près tout ce que nous devons faire pour préparer notre scène. Il ne nous reste plus qu'à écrire le
script pour ce spawning. Je vais arrêter les Eagles, créer un script en C sharp
et l'appeler Eagle Spawn Double-cliquez
dessus pour l'ouvrir. Maintenant, il ne nous reste plus qu'à
écrire un code qui dit, d'accord, chaque intervalle
aléatoire apparaît dans un nouvel aigle Créons un,
appelons-le float. Nous appellerons cela
Y minimum et Y maximum, et c'est là que nous
voulons apparaître sur l'axe Y. Ensuite, nous allons créer
un autre flotteur public, appelé durée minimale
et durée maximale. C'est le temps que nous voulons
attendre entre deux aigles. Ensuite, il ne nous reste plus qu'
à créer une référence à mon objet de
jeu public préfabriqué Eagle Ensuite, avant de commencer,
je vais supprimer
cette mise à jour nulle et
créer une nouvelle routine. Au numérateur,
appelez-le spawn delay. Ensuite, tout ce que je vais faire, c'est dire « rendement », redonner du poids » pendant quelques secondes,
du temps minimum au temps maximum. Je vais attendre qu'il y ait un nombre
aléatoire là-dedans. En fait, j'ai oublié ma plage de points
aléatoire. Permettez-moi d'écrire une plage
aléatoire allant du
temps minimum au temps maximum. Il va choisir un nombre
aléatoire dans cet intervalle, puis
attendre que cette longue
minute soit terminée. Je veux créer un nouveau vide. Appelez-le Spawn Eagle. Retournons ici et
appelons mon Spawn Eagle Void. Dès que nous l'avons fait, il ne nous
reste
plus qu'à coder
ce truc ici qui déterminera ce qu'
il faut plus qu'à coder
ce truc ici qui faire lorsque nous voulons faire apparaître un aigle La première chose,
comme je l'ai déjà fait, c'est que je vais dire qu'un
objet de jeu pour un aigle équivaut à
instancier un aigle en
tant qu'objet de jeu En d'autres termes, créez une instance de ce
préfabriqué dans mon jeu Maintenant, je veux que ma position S
soit derrière la caméra principale. Et ce script
va
en fait être attaché à
la caméra principale. Disons qu'une
opposition transformée équivaut à un nouveau vecteur trois. Permettez-moi de créer une
variable de décalage ici, comme nous
l'avons toujours fait. Allons-y, mon
opposition transformée. Si vous ajoutez la caméra à ce décalage, vous obtiendrez
une valeur négative. Parce que je veux être en retard. Ensuite, je vais choisir un nombre aléatoire entre mon Y
minimum et mon maximum Y. Passons à la plage aléatoire
entre le minimum Y et le mois de mai Ensuite, je vais juste mettre mon Z à zéro parce que
c'est un jeu en deux D, cela ne fait pas vraiment de
différence. Il ne me reste plus qu'
à créer un autre script qui sera attaché
à l'Eagle. Et je vais dire, d'accord, voyagez aussi longtemps. Et puis dès que je suis derrière cette limite, supprimez. Je vais écrire le même script pour The
Eagle and the Cloud. Je vais l'appeler objet céleste. Cela va rendre les choses un peu
plus compliquées à faire, mais ce sera également une façon légèrement meilleure de le coder. Doublons le
contenu du script. Nous allons vouloir
une transformation publique. Nous allons l'appeler « frontière ». Nous allons faire
attention à ce truc. Nous allons avoir un
booléen public et nous allons l'appeler right », car
il est
évident que l'aigle va se
déplacer Les nuages vont
se déplacer vers la gauche. Nous allons donc utiliser pour
déterminer la voie à suivre. Ensuite, la dernière chose dont nous avons besoin est une
référence à un corps rigide. Je vais évidemment simplement
l'intégrer lorsque j'aurai
créé mes objets dans mon jeu. Je vais le
mettre sur les préfabriqués. La dernière chose que je veux, c'est un char
public appelé Velocity. Tout ce que je vais faire
dans le cadre de la mise à jour fixe ,
c'est de dire à
chaque image, m'
assurer que la vélocité
de mon corps rigide est égale à un nouveau vecteur deux et quelle que soit ma
vélocité, zéro parce que je et à zéro parce que je
ne veux pas qu'ils se
déplacent de haut en bas. Maintenant, je vais passer à chaque image, assurer que je
voyage de cette façon. Ensuite, sous
chaque cadre également. Je dois dire que si je
voyage à ce moment-là, je sais que je dois
être derrière la limite. Si je suis en avance sur la limite, je veux m'assurer de détruire cette instanciation
des objets Je vais dire si vous
voyagez bien. Ensuite,
je vais dire que si la position de
transformation x est
supérieure à la position limite x, alors je veux m'assurer de
détruire cette instance
de mon objet de jeu. En d'autres termes, supprimez l'objet auquel il est attaché. Si je ne voyage pas à droite, cela signifie que je voyage à gauche. Permettez-moi donc de copier exactement ce code. Disons simplement que si ma position de
déplacement x est inférieure à ma limite, alors je veux détruire cette
instance de l'objet du jeu. C'est en fait tout le code dont
nous avons besoin pour nous assurer que nos objets
voyageront dans le bon sens. Mais nous devons évidemment
lui attribuer des valeurs,
car à l'heure actuelle, cela n'a absolument aucune valeur pour la limite, le déplacement vers la
droite ou la vitesse. Il n'a qu'une valeur corporelle rigide. Revenons à Eagle Spawn et créons quelques nouvelles variables Flottage public,
vitesse minimale et vitesse
maximale et c'est
ainsi que nous allons choisir
la vitesse de nos aigles. Nous allons chercher composant et trouver
le script de l'objet céleste
au-dessus de notre aigle. Nous allons dire que
la vitesse est égale à la plage
aléatoire entre
notre vitesse minimale et notre vitesse maximale. Maintenant que cette vitesse est
cochée, nous avons évidemment déjà
le corps de la crête qui va l'entraîner. Nous avons maintenant besoin de cette variable
mobile vers la droite. Et nous savons
que ce sera vrai pour un aigle. Allons-y,
copions toute cette ligne de code
pour arriver ici et disons simplement que voyager à droite est égal à vrai parce que
nous allons nous déplacer
de gauche à droite. Enfin,
nous avons besoin de cette limite et
nous allons créer
une référence à la limite
pour la transformation des aigles d'ici, appelez-la Eagle bound. Copions ensuite à nouveau le code. Et en dessous, dites simplement que limite de la
flèche est
égale à la limite de l'aigle En fait, nous allons appeler cela une routine dès le début de notre jeu, dès que nous commençons
à apparaître Dans ce comportement, attendez quelques secondes,
puis commencez à apparaître dans un aigle, ce qui est à peu près
tout ce que nous devons faire nous reste plus qu'
à assigner toutes ces choses dans l'éditeur
et à tester si cela fonctionne. Je pense que ça devrait être le cas.
La dernière chose que nous devons ajouter
en dessous de tout cela est évidemment d'appeler à nouveau
la corotine, afin que nous puissions dire si nous voulons faire naître un autre aigle. Cela va évidemment continuer
à jouer même après la
mort du joueur. Mais c'est bon. Vous pouvez voir des nuages passer et des aigles voler après
la mort du joueur. Ce n'est pas trop un problème. Et évidemment, le
joueur n'est
mort que pendant 2 secondes de toute façon. Cela ne fait donc pas vraiment de
différence. Mais c'est tout
ce dont nous avons besoin. Nous commençons notre
cotine depuis le début. Nous disons, d'accord,
attendez quelques secondes. Ensuite, en faisant apparaître cet aigle, réglez sa position
sur « derrière nous »
, puis sur une position « y » aléatoire
, puis assurez-vous que sa vitesse
est ce nombre aléatoire Le fait qu'il
voyage correctement est vrai et qu'il a fixé cette
limite à ce truc. Ensuite, à l'intérieur de l'Eagle, nous avons attribué toutes ces valeurs ici et à
chaque image, nous nous assurons de nous déplacer à la bonne vitesse et la bonne vitesse et
de ne pas dépasser
notre objectif. Ouvrons Unity, retournons
dans nos préfabriqués et nous
allons ajouter ce script d'objet du ciel
à notre aigle La seule chose que nous allons
signer, c'est le corps rigide. Tout le reste sera
fait pour nous. En fait, dans un
souci d'efficacité, nous allons également l'ajouter
aux clouds. Pour l'instant, pour ne pas
avoir à le faire plus tard, passons de l'objet du ciel ici à cet objet du ciel nuageux ici à ce nuage et l'objet du
ciel d'
ici à ce nuage. Et veillez à ce que nous
entrions nos corps rigides. Vous n'êtes pas obligé de le
faire pour le moment, mais je vais simplement passer à la caméra principale et
ajouter de nouveaux composants. Et nous allons ajouter
mon générateur d'aigles ici. Je vais définir
le minimum y à 0,6
, puis
le maximum y à 0,6 et
2,5
Allons-y et assignons-le ici,
moins 0,62 0,5. Je dirais que je veux que le temps minimum entre les aigles soit d'au
moins 10 secondes et le temps
maximum d'environ
14 Je vais assigner
cet aigle ici. Je pense à l'offset.
Nous allons juste le tester. Mais ça devrait probablement être, je dirais, peut-être moins 12. Si nous regardons la
caméra principale en position zéro, le joueur est
actuellement à moins 12. C'est à peu près là que je veux que
les aigles apparaissent. Réglons cela également. Continuez ici et réglez sur 12
, puis sur la vitesse minimale. Je vais juste
commencer à trois heures et régler la vitesse maximale à quatre. Gardez à l'esprit que la
caméra se déplace
actuellement à 1,8. Elle sera
plus rapide que la caméra, mais elle ne sera peut-être pas
beaucoup plus rapide, ce qui est une bonne chose. En fait, fixons-le à 2,5
et 3,5. Enfin, en direction de l'
aigle, nous
allons
définir cette
limite de droite ici. Voyons si tout
cela fonctionne réellement. Si j'appuie sur le
bouton Play, je m'assure que nous
n'avons rien oublié
ou que nous n'avons pas détecté de bugs. Voyons voir, ici, nous jouons
actuellement au jeu. Dès que nous le
faisons apparaître, nous devrions avoir cet aigle qui
apparaitra derrière nous Voyons donc si nous
veillons là-bas. Oh, c'était un diamant. Oups Il nous faudra au moins 10
secondes avant d'en voir un. Ah, il y en a un juste
là. Nous avons un aigle. Cela ressemble un peu
à un ennemi. Je ne mentirai pas. Nous allons donc devoir
l'augmenter un
peu augmenter un
peu parce que je ne sais pas si cela devrait être exactement là où il se trouve. Je vais
fixer la limite et m'
assurer que l'heure soit un peu différente,
car nous ne voulons pas vraiment autant d'aigles. Faisons quelques ajustements. Fixons le
minimum y à un, le maximum y à trois. Faisons en sorte que le temps
minimum soit de 10 secondes et le temps maximum d'environ 20 secondes. Faisons ensuite la vitesse
minimale, maximale. Je pense que les deux sont bons. Faisons en sorte que
l'aigle soit légèrement plus transparent pour qu'il n' ait pas l'
air de jouer
un rôle important dans le jeu. Faisons en sorte que ce soit 180. C'est peut-être un
choix de design étrange, mais croyez-moi, cela va donner l'impression qu'il ne fait pas vraiment
partie du jeu Nous pouvons évidemment modifier
cela selon les besoins, mais testons simplement comment
cela fonctionne pour le moment Il faut évidemment attendre
un peu pour que le truc apparaisse, mais il
devrait sortir. Il y a un aigle juste
là. Et voilà. Vous pouvez voir qu'il a l'air
embrumé par les nuages. Mais ça a l'air plutôt
cool à mon avis. De toute évidence, nous devons
ajouter quelques nuages supplémentaires et cela va
lui donner une bien meilleure apparence. Mais pour le moment, je pense que
les Eagles sont une réussite. Ce n'était pas ce que je
voulais faire. Nous pouvons voir que nous en avons un
bon nombre. Il se peut même
que nous devions allonger un peu ce délai. Mais
changeons cela rapidement. Je veux vraiment faire
ça 30 secondes et dix, puis je vais
peut-être les faire un
peu plus vite aussi pour
qu'ils puissent survoler. Mais c'est à
peu près tout le script de
reproduction des aigles dont nous avons besoin jusqu'à présent Nous devons maintenant
commencer par les nuages. Le script cloud sera
en
fait très similaire
au script Eagle. Je vais tout copier et
créer un nouveau script, appelé cloud spawn En fait, je vais tout
coller. Maintenant, il y a quelques points
que je dois garder à l'esprit. Tout d'abord, cela va me
donner tout un tas d'erreurs parce que j'ai la même classe ici sans
trop expliquer ce qu'est une classe. En gros, c'est ainsi que l'unité
dit l'unité , ou plutôt avec
netteté, l'unité. Quel type de code d'identité. C'est le fait qu'ils
portent le même nom
maintenant qui pose problème. Allons-y et changeons
cela en cloud spawn. Ce doit être exactement le même
nom que celui que vous avez ici. Et cela devrait en fait éliminer chacune
de nos erreurs. Vous pouvez maintenant utiliser les
mêmes noms de variables, ce
n'est pas un problème de section, mais nous devons évidemment en
modifier quelques-uns. Allons-y d'abord et
changeons cela en spawn cloud, puis nous devrons également le
mettre à jour Passons ensuite
au cloud à lié au cloud. Il semblerait que nous aurions
pu le faire dans un seul script et nous aurions
honnêtement pu le faire. J'ai pensé qu'il serait préférable d' faire deux simplement parce que
nous allons
apporter quelques différences
et modifications. Et il sera un peu plus facile comprendre si nous avons
deux scripts différents, plutôt que d'essayer de les regrouper en
un seul et de
faire apparaître des aigles et des
nuages simultanément Oui, nous aurions pu le
faire en un seul script, mais je vais juste en utiliser deux. Par souci d'efficacité
ou plutôt de simplicité, je peux garder ce Y minimum et ce Y maximum car
j'en ai toujours besoin. Je veux évidemment toujours avoir mon temps. J'ai mon cloud d'objets de jeu. Je veux mon offset tel
qu'il était. Ce sera évidemment une valeur positive maintenant. Et j'ai ma vitesse minimale
et maximale qui vont être
différentes et ma transformation, à peu près tout le reste , nous pouvons rester les mêmes. Nous avons le délai d'apparition. Nous allons
instancier un cloud. Nous apparaissons à une position, nous le disons à
une vitesse aléatoire Nous allons régler les problèmes de voyage
ici, et nous assurer d'
avoir la bonne limite. Cela devrait être à
peu près tout ce dont
nous avons besoin pour nos clouds. Revenons à mon jeu. Va vers mon appareil photo principal. Je vais maintenant ajouter ce script
cloud spawn
en dessous Et évidemment, vous pouvez voir
que cela ressemble beaucoup
au script Eagle parce que c'est peu près le même script. Nous pouvons à peu près continuer
et utiliser exactement la même chose, mais nous avons un
petit problème. Nous n'avons qu'un seul
objet pour un nuage, car nous
n'avions qu'un seul aigle. Mais pour les nuages, nous devons choisir trois au hasard. C'est en fait assez
facile à faire. Tout ce que nous avons à faire est d'en
faire un tableau. Ensuite, au lieu de dire
instancier le cloud en tant qu'objet, nous dirons instancier des crochets
ouverts, c'est-à-dire plage
aléatoire allant de zéro
à la Nous allons donc prendre la longueur des points du nuage, puis fermer le crochet. Fermez le support carré. Et cela devrait être tout ce que
nous devons faire maintenant Nous choisissons simplement un élément
aléatoire dans ce tableau. Revenons plutôt à Unity. Si nous faisons défiler l'écran vers le bas,
nous pouvons voir que
nous avons maintenant un réseau de nuages, ce
dont nous avons besoin. Faisons glisser nos trois
objets ici. Fixons le minimum Y
à zéro et le Y
maximum à trois. Vous pouvez donc faire apparaître des nuages. Je vais en fait
faire ce Y minimum
moins deux et le
maximum Y trois, je vais régler
le temps minimum à 2 secondes et le
temps maximum à 4 secondes. Je vais régler la vitesse
minimale à moins un et la
vitesse maximale à zéro. Plus 0,5 est le décalage, je vais en faire 12 parce que
c'est le contraire. Cela devrait évidemment être à peu près tout ce dont nous avons besoin
jusqu'à présent. Assurez-vous simplement d'avoir
notre limite sur la gauche. Cliquez presque sur la
mauvaise, la limite
sur la gauche correspond à celle de notre nuage. Allons-y et vérifions-le. Voyons si cela fonctionne. Si nous appuyons sur Jouer maintenant, nous devrions être en mesure de voir les nuages apparaître depuis la droite
peu de temps après avoir commencé à
jouer au jeu Allons-y et
voyons si cela fonctionne. Et là, nous avons un
nuage qui est en train de naître. Mais cela
semble évidemment faire partie du jeu. C'est un peu un problème pour nous parce que nous le voulons
évidemment. Nous pouvons également
les voir apparaître, ce qui est également un peu problématique Il est clair
que nous devons augmenter légèrement ce décalage et les rendre
légèrement plus transparents. Faisons en sorte que le décalage
soit plus proche de 20. Passons ensuite à
chaque nuage et faisons peut-être sorte que
l'alpha soit
environ 180 au lieu de 255. C'est peut-être un peu radical, mais nous pourrons l'
ajuster au fur et à mesure. Je pense que ça
devrait aller pour le moment. Revenons à mon jeu, et je pense que les nuages peuvent également se déplacer un peu plus vite devant
le joueur. Revenons à la caméra principale et
fixons la
vitesse minimale à un point négatif. Et la
vitesse maximale est de moins
0,5 . Ils sont en fait toujours en
mouvement. Voyons maintenant si cela
semble un peu mieux. Au fur et à mesure que nous
apparaissons dans le jeu, nous devrions être capables de
voir un nuage apparaître juste au moment où il arrive. De côté, nous avons un
nuage qui rend le jeu beaucoup
plus beau Maintenant, il y a
un petit retard au début,
car nous n'avons
pas de cloud pour simplifier
un peu les choses. Je vais juste en ajouter
quelques-unes dès le début du jeu, comme ça, comme ça, pour donner au jeu un aspect un peu plus vivant dès le début. Évidemment, je vais
devoir définir
ces valeurs de vélocité moi-même car ce
sont des cas particuliers, elles ne sont pas attribuées à un média. formant, je vais rendre la vélocité négative de
0,5. Je vais également les
modifier et je
vais m'assurer définir la limite par
rapport à celle de gauche. Alors laissez-moi continuer
, je
vais en fait régler la vélocité
à zéro pour le moment. Ils ne sont détruits qu'
une fois qu'on les dépasse. Allons-y et voyons si
ça semble un peu mieux. Peut-être que celui-ci, très
spécifique, peut avoir une vélocité de moins 0,2 et celui-ci peut être de moins
0,1. Juste pour lui donner un peu d'unicité, si nous appuyons sur Play
Now, nous pouvons voir nos nuages et nos
aigles sont maintenant dans notre jeu Et cela lui donne, à
mon avis, une bien meilleure apparence. Il y a toujours ce petit écart
bizarre ici. Je vais donc ajouter
peut-être un autre cloud
là-bas, juste pour le
rendre un peu plus beau. Mais je pense que c'est en fait
un bon début pour mises
à jour visuelles de nos projets. Et nous avons en fait fait
beaucoup de choses jusqu'à présent. Nous avons évidemment
ajouté l'arrière-plan les aigles et les nuages, et à mon avis,
c'est
beaucoup plus beau qu'avant Mais il y a deux autres
choses que nous devons ajouter. Et ils sont assez faciles à ajouter, ils ne sont pas très compliqués. Cela
ajoute également un effet intéressant lorsque les boules d'espionnage sont cachées, ce qui rend le jeu un
peu plus difficile Mais je pense que dans l'ensemble,
cela rend le jeu beaucoup plus beau et
plus vivant car vous sautez
dans les nuages au lieu de simplement vous promener dans
cette sorte de masse bleue Et nous pouvons voir que les nuages sont en train de se détruire,
comme ils devraient l'être. Les aigles prennent
leur temps. Mais je suis là, nous
y sommes, voici notre premier. Je trouve que cela rend le jeu
beaucoup plus beau, ce qui est plutôt cool Mais de toute façon, comme je le disais, il n'y a pas d'effet de particules, non seulement lorsque vous
collectez un diamant, mais aussi lorsque vous mourez. Et je pense que
vous constaterez qu'en ajoutant ces petits
éléments à votre jeu, cela le rend encore plus
impressionnant à long terme. Surtout pour
quelqu'un qui ne sait pas nécessairement à
quel point il est simple. En fait,
l'ajout rend le jeu bien
plus impressionnant que
la quantité de travail
qu'il faut pour l'ajouter. Je vais donc vous montrer
exactement comment procéder maintenant. Nous allons aller voir
mon Diamond Sprite. Je vais ajouter un composant
appelé système de particules. Il s'agit sans doute de l'un
des composants
les plus compliqués de l'ensemble de Unity. Pour être honnête, je ne comprends même pas tout à fait
comment cela fonctionne, mais j'ai trouvé une façon de l' utiliser
qui
fonctionne généralement pour la plupart de mes jeux. Et je pense que c'est
aussi un moyen assez simple de le faire. Je vais donc vous le montrer maintenant sans
trop entrer dans les détails. De toute évidence, ce
système de particules est basé sur tout
un tas de choses
différentes ici que vous
pouvez voir répertoriées. Nous avons la vitesse d'une
vie, une forme, une émission, rendons toutes ces choses assez
compliquées, mais nous n'avons pas vraiment à soucier de la plupart
d'entre elles pour le moment En fait, je vais vous montrer lesquels vont permettre, nous avons besoin d'émissions
et nous avons besoin de forme. Nous n'avons besoin d'aucun d'entre eux. Nous allons avoir besoin de
couleur tout au long de la vie et nous allons avoir besoin de
taille pendant toute la durée de vie. Alors aucune des autres ne
devrait être aussi nécessaire. Il se peut que nous devions activer l'animation des feuilles de
texte en fonction de ce que nous voulons faire. Mais essayons-le
comme ça pour le moment. Une fois que vous avez activé ces cinq menus différents, ouvrez le moteur de rendu
et assurez-vous de définir ce matériau comme matériau par défaut du
sprite Maintenant, nous apparaissons
dans des sprites aléatoires. Il y a en fait un
autre truc malade. Nous devons ajouter ce
texte, une animation de feuille. que nous allons sélectionner. Nous allons sélectionner le mode « sprites Et nous allons aller de l'avant
et c'est pour notre diamant, nous voulons apparaître dans notre diamant, sprites
étoilés, nous
allons choisir Maintenant, nous avons tout un tas d' étoiles qui volent sur ce diamant, qui a l'air plutôt
cool en soi. Je ne vais pas mentir,
mais nous voulons que cela
se produise uniquement une fois que nous
aurons collecté le diamant, que
nous aurons configuré notre
animation de texture et que
la seule chose à changer dans rendu était ce matériau Une fois cela fait, nous avons tout ce dont nous avons besoin dans
ces deux menus. Les derniers viennent
de ceux d'ici. Commençons par aller
à mon menu original, en fait en haut ici.
Il s'agit également d'un menu. Je vais faire en sorte que la
durée soit 0,3 seconde. Je vais démarrer en boucle, je vais faire en sorte que la
durée de vie de démarrage de ces unités soit 1 seconde, ou plutôt 0,6. En fait, vous
devrez
évidemment modifier cela au fur et à Et voyon
16. 15. Créer un hub de départ: Ici. Et bon
retour sur Unity. Dans cet épisode, nous
allons créer un hub de départ pour
notre plateforme, un jeu. Nous allons également lui
donner un nom. Un nom que j'ai
trouvé est Sky Miner, ce qui est vraiment horrible. Mais heureusement, ce jeu ne sera accessible
à personne C'est juste pour vous d'
apprendre à créer des plateformes. J'ai choisi Sky
Miner et je vais créer un
hub de départ pour ce jeu. En plus de faire en
sorte que vous ne jouiez pas automatiquement au jeu.
Dès que nous cliquons sur Play. À l'heure actuelle, nous sommes entrés
dans le jeu. Et je ne veux pas être comme
ça. Je veux que ce soit pour que tu puisses choisir quand commencer. Je vais vous expliquer comment je vais
faire tout cela,
mais en gros, je
vais construire comme un hub de départ,
en faisant en sorte que cela semble assez spectaculaire, c'est juste un gros cloud. Je vais également avoir le
titre en haut. Ensuite, je vais faire en
sorte qu'à la minute où tu passes un certain point,
le jeu commence. Pas à la minute où tu
commences le jeu, à
la minute où tu passes
un certain point avant que je ne prenne de l'avance sur moi-même. Permettez-moi d'importer
tous mes différents actifs. Je vais cliquer avec le bouton droit de la souris. Importez un nouvel actif,
comme toujours. Ensuite, je vais importer
ces deux actifs que j'ai créés, appelés
start et title. Réglons-les simplement sur 12, point
unique, sans filtre. Ensuite, je vais vraiment
aller sur ce cloud ici. Et je vais le supprimer parce que je vais le
remplacer. Je vais également utiliser
ces
clouds préfabriqués et les
stocker parce que je n'
aime pas le fait qu' ils se trouvent juste
en dessous Cela a l'air très
chouette, à mon avis. Ensuite, je vais faire glisser
ce nuage de départ vers l'intérieur. Tu peux voir à quoi ça ressemble. C'est ce que j'ai imaginé
pour le début du jeu. Vous commencez par cet énorme, évidemment pas comme ça, qui
doit être à peu près là. Vous commencez avec ce gros nuage au milieu et je
vais
le déplacer vers le bas Nous ne voulons pas
occuper une telle partie de
l'écran, mais nous ne
voulons pas non plus une petite partie de l'écran. Je pense que c'est
probablement une bonne chose. Je pourrais l'ajuster au fur et à mesure, mais je pense en fait que je vais le
faire avancer un peu plus. En fait, voyons voir. Nous pouvons évidemment changer
cela au fur et à mesure, mais je pense que c'est en fait une
bonne chose de commencer dès maintenant. Je vais avoir le
titre au milieu de l'écran juste pour voir
tout ce qui se passe. Je vais cliquer sur ces icônes. Je peux masquer tous
ces éléments supplémentaires, mais je pourrais aussi choisir de
déplacer certains de ces nuages maintenant que je crée
cette nouvelle zone centrale, mais j'y reviendrai plus tard. Tout d'abord, permettez-moi de
désactiver ces nuages. Je vais également faire
glisser mon titre, et vous pourrez le voir au milieu
de l'écran. Je trouve que c'est un
titre plutôt correct. Du moins pour le moment. En fait, je vais
les désactiver simplement parce que les masquer ne
fonctionne que dans l'éditeur, et je veux le voir
au milieu de l'écran. Ensuite, je vais
passer à mon titre, que je vais vraiment
vouloir conserver sous forme de sprite Je ne veux pas être un objet d'interface utilisateur, le centrer à zéro puis le
placer juste en haut ici. Pour
le moment, je
vais également désactiver cette
interface utilisateur parce que je ne
veux pas non plus qu'elle apparaisse au
début de mon jeu. Je vais évidemment régler tout cela lorsque je
créerai mon jeu. Mais
supportez-moi pendant une minute. Tout d'abord, je vais l'
avoir ici. Sky Miner. En fait, la première chose
que je vais vouloir
faire est de créer une animation de titre. Allons créer une nouvelle animation. Je vais donner
son titre alors. Je vais juste le faire monter et descendre
lentement. Passons aux
30 premières secondes, disons de 2,6 à
2,4. Vous procédez comme ça, puis je veux
rester à 2,4
et descendre
légèrement vers le bas au cours des
30 prochaines secondes pour atteindre peut-être 2,3. Donc on y va, puis on veut revenir à 2.4 Un peu plus vite. Revenons ensuite à ce que nous avions
initialement ici, qui était, je crois, 2.6 Oui. Voyons à quoi ça ressemble. Nous verrons si nous allons passer au jeu
un peu rapide, mais je pense qu'il
fait le travail. Ça a l'air joli. Très bien, en tant qu'animation
en boucle subtile, fixons cette vitesse à 0,3 Voyons voir si nous appuyons sur
Play à quoi cela ressemble. va donc
falloir voir la caméra bouger et
nous allons mourir dans Son, parce qu'
il n'y a rien. Mais je pense que cela
fait du bon travail. Il se déplace très lentement
dans le truc. Cela m'amène à
la prochaine chose que je veux faire, savoir commencer construire
cette zone de départ, pas simplement à avoir une place. Ajoutons un box collider 2 D. Nous allons
évidemment devoir l'étiqueter comme sol Allons-y et
vérifions-nous que ce sont les bonnes dimensions. Cela pourrait être assez difficile à voir si vous avez tout
ce que je fais. Je vais donc également désactiver
l'arrière-plan maintenant. Je vais pouvoir le
voir. Passons maintenant à peu près là. Il n'est pas
nécessaire qu'il y en ait beaucoup plus haut ici parce que vous ne devriez pas vraiment être
capable de vous en sortir. Cela devrait être tout ce qui
se fait là-bas. Voyons maintenant si nous
pouvons jouer au jeu. J'ai toujours désactivé mon
arrière-plan dans l'éditeur. Ça va montrer
que ça a l'air plutôt bien. En fait, je vais
le réduire légèrement. Je vais le déplacer
à peu près là. C'est à peu près le. Je viens rendre
compte que ça va poser un petit problème. Déplaçons ça peut-être
un peu et descendons un peu plus. Je pense que c'est probablement une bonne chose maintenant vous pouvez vous tenir au
bout du cloud, mais cela ne pose pas
trop de problème. Ce sera la
base de mon point de
départ ici. Et j'ai mon titre qui
va évoluer vers le haut et vers
le bas. Le titre. En fait, je ne veux jamais déménager. Je veux le garder
ici tout le temps. Je n'ai pas besoin d'en faire
quoi que ce soit. Pareil pour le démarrage. Ce
sont des positions fixes. Mais ce que je veux faire, c'est faire en sorte que les choses
suivent la caméra, comme l'interface utilisateur, ou qu'elles ne soient
activées qu' une fois que nous l'avons
parcourue. Et je veux aussi
simplement commencer le jeu. Une fois que nous
aurons franchi ce point
imaginaire au
milieu du départ, je créerai
un nouvel objet vide. Et je vais l'
appeler limite, comme nous l'avons fait auparavant. Ici, à cette limite, je vais fabriquer un collisionneur Je vais en
faire un collisionneur de bord parce que ce
sera une limite Je vais faire
entre 0,0 et 0,5 et moins cinq, c'est une longue limite. Ce sera un déclencheur
et ce sera du type zone
de départ. ce qui est des tags, je vais
créer la
zone de départ des tags et j'ai ce
gros collisionneur à gâchette Et je dois
dire qu'une fois que le joueur
l' a réussi, je
veux commencer le jeu. Donc, évidemment, vous pouvez
voir que nous pouvons avancer. En fait, je vais l'allonger un peu , sinon il risque de tomber
à l'eau. Selon l'apparence
étrange que cela peut paraître, je pourrais en faire un collisionneur de boîtes puis un autre
entrer en collision en dessous, mais cela semble être un peu de travail
supplémentaire pour une petite
modification, Mais pour le moment, tout ce sur quoi nous nous concentrons, c'est d'avoir
cette limite. Et nous voulons dire, d'
accord, dès que
le joueur franchit cette limite, nous voulons commencer le jeu. Nous avons étiqueté ce
tag « zone de départ ». Mais nous allons
en fait faire le codage de ce truc lui-même. Nous allons dire que lorsque j'
entre en collision avec le joueur, nous n'allons pas nous inquiéter le joueur entre en collision avec lui Ce n'est qu'une formalité. Je vais réactiver le
stockage afin de
pouvoir voir tout que j'ai et je
vais ce que j'ai et je
vais commencer à le personnaliser Je ne veux plus vraiment que ce
cloud soit là. Je ne veux pas vraiment
ce cloud ici. Oups, je ne voulais pas
supprimer l'intégralité de l'interface utilisateur. Je ne veux pas ce nuage ou
ce nuage ici en fait, parce que notre jeu se porte
bien avec juste le ciel. Puisque nous avons maintenant ajouté
les autres éléments, je ne
veux même pas vraiment ce cloud. Mais je vais mettre ce
nuage ici juste pour avoir quelque chose à quoi me
connecter au début du jeu. Déplace légèrement ce nuage vers le haut. Nous n'avons qu'un seul cloud
pour démarrer. Voilà à quoi ressemblera le
jeu au début. Évidemment, une fois
ce point passé, nous voulons que le jeu commence. Allons-y,
écrivons un nouveau script que nous appellerons start Game. La façon dont le script
va fonctionner est que nous allons remplacer une grande partie de ces démarrages vides que nous
avons et qui commencent au début
du jeu. Nous allons appeler deux vides. Les seuls qui vont
réellement nous intéresser sont
le script de mouvement de caméra et
le script de génération de cartes. Si nous allons ici, nous pouvons
voir la caméra se déplacer ici. Nous allons
vouloir nous
préoccuper celui-ci et
nous voulons également nous
préoccuper de ce script de
génération de cartes ici. Ce sont les deux que
vous pouvez voir ici. Nous devons créer une pièce, mais nous voulons
changer cela pour commencer le jeu et en
faire un vide public Nous n'avons même pas
besoin de créer ce vide. Nous pourrions simplement nous égarer,
créer une carte. Mais par convention,
je vais juste
faire en sorte que ce soit ici où nous
ne commençons que lorsque nous
disons que le jeu est nul. Cette annulation de mise à jour
ne posera
pas vraiment problème, car nous n'
allons pas déplacer la caméra Nous n'avons
donc pas à nous
soucier de l'apparition d' autres éléments de carte. Revenons à mon
jeu et créons une collision lors d'un événement déclencheur. Sur le déclencheur, entrez deux balises de comparaison d'
objets de jeu en D (point). Comme nous l'avons toujours fait
, c'est joueur. En d'autres termes, si le
joueur vient de nous rencontrer, nous voulons
commencer le jeu. Nous allons créer une
référence à ces deux scripts. Camera move, nous allons
l'appeler camera move. Nous allons également créer
une référence à notre script de génération
de cartes. Appelez ça une carte. Nous allons faire, c'est dire « map begin game ». En d'autres termes, lancez le jeu. Nous allons dire caméra, mouvement de
caméra. La
vitesse de la caméra est égale à. Ensuite, nous allons
avoir cette valeur par défaut ici lorsque notre caméra se déplace, qui sera celle que
nous voulons pour la vitesse. En fait, je vais
changer ça. Je vais rendre cette vitesse de caméra flottante
publique. Ensuite, il y aura un char
public en dessous
, que j'appellerai vitesse. La vitesse ici, je vais la définir comme étant la variable
qui la déplace. Et puis cette vitesse
de caméra correspond au réglage que
je voulais . Je vais le régler
dans le jeu, mais il ne
sera influencé que par la vitesse. Et je vais
dire que la vitesse de la caméra est égale à la vitesse de la caméra. En d'autres termes, j'ai
ce réglage ici, mouvement de la
caméra, la vitesse de la caméra, j'ai le réglage ici, qui me dit à quelle vitesse
je dois me déplacer. Ensuite, j'ai la variable de
vitesse, qui va évidemment commencer
à zéro. Ensuite, dès que
je commence à jouer et que je dis, OK, réglez
la vitesse en fonction de la vitesse de la caméra, elle
changera selon ce que j'ai mis ici et je vais commencer
à nous faire avancer. C'est à peu près tout le
code dont nous devrions avoir besoin pour démarrer notre jeu manuellement. La façon dont nous pouvons tester, c'est que nous pouvons atteindre notre limite ici. Alors allons-y et faisons
glisser le pointeur pour démarrer le jeu. Ensuite, faites glisser notre script de déplacement de
caméra depuis notre caméra et notre
script de génération de carte depuis notre caméra. Ensuite, pour que nous puissions voir
à la minute où je touche un joueur, je devrais lancer ce code.
Je devrais commencer à bouger. Revenons à mon appareil photo principal. Réglons la vitesse de mon appareil photo à
un point. Ma vitesse est nulle. Maintenant, jouez à hit.
Je ne devrais pas commencer le jeu avant d'y être allé.
Voyons si cela fonctionne. Actuellement en cours de déménagement,
rien n'est encore apparu. De toute évidence, les nuages
continuent d'apparaître,
ce que je souhaite, mais
rien d'autre ne s'est produit Mais dès que je
franchis cette limite ici, le jeu commence.
Voyez par ici. Maintenant, je peux vraiment commencer à jouer au jeu, et c'est
exactement ce que je veux. Évidemment, ce premier nuage
est un peu bizarre, car il apparaît
au-dessus d'un autre Il se peut
que je doive ajuster ce décalage initial et le
faire commencer un peu plus loin, mais je pense que ce serait bien. Nous pouvons changer cela un petit peu. Concentrons-nous simplement
sur le déplacement. Peut-être n'avez-vous même pas besoin de
sauter sur le premier nuage, il s'agit simplement d'un nuage
dans un autre. Ensuite, le premier nuage
devrait apparaître au-dessus, pour
qu'il soit bien plus beau Maintenant, cela a parfaitement
fonctionné. Je vais déplacer cette limite un peu sur
le côté d'ici. Dès que tu passes une certaine
chose, elle disparaît vraiment. Mais il y a deux autres
choses que je voudrais faire. Tout d'abord, je
veux m'assurer que ce
panneau représente votre
lycée de diamants. C'est également
assez facile à faire. Tout ce que vous avez à faire
est d'accéder à mon interface utilisateur et je vais
créer un nouveau texte ici. Passons à Legacy Text, car nous ne voulons
pas utiliser le texto moi. Appelons ça des diamants. Je
vais le déplacer ici. En fait, pour des raisons de
simplicité, je vais
juste copier ce comptoir de diamants que
j'ai ici. Et déplace-le ici. Ensuite, je vais définir une valeur de
test d'environ 300. Rien ne semble
visible. Essayons de le
redimensionner. C'est derrière tout ça. En fait, je vais
devoir changer l'ordre de ce canevas. Je vais organiser le
canevas dans la
deuxième couche au lieu d'une ou
même de cinq, car nous voulons à peu près le canevas soit vu de
face. Alors laissez-moi passer à dix, voir si cela a résolu notre problème. Si nous revenons ici. Oui,
maintenant nous pouvons voir que cela apparaît devant,
et c'est exactement ce que nous voulons. Je vais
le faire légèrement pivoter car le panneau est lui-même un
peu tordu Je vais le redimensionner à ce qu'il devrait être, c'est-à-dire
quelque chose comme ça Je vais régler ça comme ça. Je vais le
faire pivoter un peu plus. Je pense que c'est probablement une bonne chose. Il a peut-être fait une petite rotation. Revenons un peu en arrière. Nous pouvons voir maintenant que nous avons
un petit marqueur qui
nous indique le maximum de diamants que nous collectés lors de l'une des courses. Maintenant, nous devons évidemment
le programmer pour
afficher réellement le meilleur score. C'est en fait incroyablement facile. Tout ce que nous avons à faire, c'est que le script
que nous choisissons n'a pas vraiment d'importance. Nous pouvons choisir n'importe qui,
mais je vais
choisir le
script Diamond de ce joueur ici. Parce que l'interface utilisateur est déjà
là et qu'il y a déjà une
référence à un objet texte. Créons-en un nouveau, un
texte public, appelons-le lycée. Alors tout ce que j'ai à faire dans
le vide de départ, c'est dire que texte à points du
lycée est égal aux diamants du lycée à
points sur deux cordes. Cela signifie en
gros : OK, quand je commencerai le jeu, assurez-vous de définir ce
texte ou quel que soit mon meilleur score.
Si nous revenons mon jeu, passons maintenant à mon joueur pour voir
si cela fonctionne. Découvrons ici que
nous avons fait nos études secondaires. Réglez-le sur ce compteur. Je vais le renommer en High Score Count. Alors, si nous avions joué, nous
devrions annuler cela. Au début du jeu
avec notre lycée, ce qui semble être le cas,
notre lycée ne devrait pas
être zéro, il devrait en être un. Il semble que nous ayons un petit bogue, mais je crois qu'
en fait, le seul
problème est le fait que nous l'attribuons auparavant Nous avons assigné la variable
ici , et c'est
exactement ce qu'elle est. Retournons ici
et mettons-le en dessous. Et puis cela devrait parfaitement
fonctionner. Si nous revenons à notre jeu, nous appuyons sur jouer, nous devrions voir, maintenant cela devrait passer à un dès le
début de la partie. Et on dirait que c'
est le cas. C'est parfait. Maintenant, nous avons un comptoir de
lycée. Nous avons ce truc qui
nous permet de démarrer le jeu
en le parcourant. Et tout le reste
fonctionne comme il se doit, ce qui est plutôt cool. Tout ce que nous devons faire maintenant, la toute dernière chose dont nous
devons vraiment nous assurer, c'est assurer que lorsque
nous recommencerons, cela ne nous pose aucun problème. En fait, au lieu
de déplacer ce nuage
, je
vais simplement faire sorte que le premier nuage apparaisse un
peu plus loin Ensuite, je vais le faire,
je vais
entrer dans mon script de génération de cartes. Je vais avoir des lingots
ici comme point de départ. En d'autres termes, si c'est
le tout premier bloc, je vais mettre la
valeur false ici, mais ici, le tout premier bloc doit
toujours être vrai. Et cela nous
permet simplement,
lorsque nous appelons cet objet, appeler cette méthode, nous pouvons entrer une valeur ici,
lorsque nous l'appelons d'ici, nous pouvons différencier l'
endroit où nous l'appelons d'ici. Ensuite, il ne nous reste plus qu'à ajouter une petite déclaration
if à la fin. Il faut dire « commencer ». En d'autres termes, s'il y a
le tout premier, je veux juste le déplacer
un peu sur le côté. Je dirais que j'ai vu une
tuile engendrée, une opposition transférée. Ajoutons un décalage de départ. Passons donc à l'
offset de départ flottant public et nous
allons le rendre légèrement plus grand que
celui que nous avons ici. Il suffit de le mettre là-bas. Et nous
allons essentiellement dire, d'accord, mettons le carreau là. Mais s'il s'agit d'une toute première tuile, j'ai vraiment envie de la
mettre ailleurs. Alors laisse-moi le mettre là. Cela va le faire apparaître
dans un endroit différent, mais cela ne fait vraiment aucune
différence Revenons ici, et revenons à
notre caméra principale. Faisons en sorte que le
décalage de départ soit 18 plutôt que 15,
et voyons si cela fonctionne. Nous le déplaçons maintenant un peu, voyons si cela fonctionne un
peu mieux en termes d'espacement. Testons ensuite
ce moule durable, qui était de voir si le reste
du jeu fonctionne correctement. Il semble que 18
fonctionne plutôt bien. Nous avons un problème
ici avec celui que vous devez résoudre,
il ne va pas disparaître. En fait, nous avons également
un problème avec l'interface utilisateur, que je
souhaite également corriger afin qu'il ne persiste pas lorsque vous
ne jouez pas au jeu. Mais
testons d'abord l'autre chose,
mourons, puis la caméra bouge toujours. C'est un autre problème
que nous devons régler. Revenons en arrière et tout
semble bien fonctionner. Allons-y et examinons rapidement ce que
nous devons corriger. Tout d'abord, la raison pour
laquelle la caméra est toujours en mouvement est que ce script
original,
qui modifiait la
vitesse de la caméra lorsque vous mourez, a modifié la variable de
vitesse de la caméra. Nous voulons modifier
la variable de vitesse car nous avons modifié
le fonctionnement de ce script. Nous voulons donc faire en sorte que
cela change la vitesse, pas la vitesse de la caméra.
C'est la première chose à faire. La deuxième chose que nous
voulons faire est de nous
assurer que texte que nous avons ici ne bouge
pas lorsque
la caméra bouge. La façon dont je vais le faire est créer une nouvelle interface utilisateur, de la stocker dedans et de
faire en sorte qu'elle ne bouge pas. Et puis j'ai cette
interface utilisateur que je peux modifier et dans laquelle je peux apparaître quand je
veux démarrer le jeu Nous avons déjà fait
pas mal d'épisodes, je sais que cela fait longtemps,
mais nous avons presque terminé. Donc, supportez-moi pendant que nous
terminons ces deux dernières choses. Je vais d'
abord
passer au point de départ et
créer un nouveau canevas. Je vais appeler ces deux-là. Ensuite, je vais copier mon compte de
lycée et le mettre en deux au lieu de
là où il était à l'origine. Et je vais juste
changer l'interface utilisateur 2 pour afficher caméra
spatiale et
faire glisser ma caméra, puis double-cliquer dessus
et voyons où elle se trouve, pas où elle devrait être, mais
remontons-la simplement vers le haut. Nous allons également modifier
cet ordre et cette couche pour soient dix, tout
comme les autres. Alors déplaçons-le là. Je pense que c'est
à peu près là que c'était. Nous pouvons évidemment l'ajuster au
fur et à mesure que nous jouons, mais je pense que c'est
plutôt bien pour le moment. En fait, une fois que
j'aurai orienté tout cela, je vais y retourner
et je vais
changer cela en fonction de l'espace mondial. En d'autres termes, il ne
bougera pas avec la caméra. Une fois que je l'
ai parfaitement positionné, cela devrait
fonctionner parfaitement. Et maintenant, nous avons cette interface utilisateur qui ne va pas évoluer
avec le reste du monde. Donc, si nous appuyons maintenant sur Play, et que nous voyons si cela fonctionne, cette interface utilisateur restera
exactement là où elle est. Et au fur et à mesure que nous avançons, il ne nous suit pas,
ce qui est parfait. De toute évidence, cette interface utilisateur est toujours là, ce qui pose un problème. Faisons en sorte que cette interface utilisateur soit
uniquement activée. que nous arriverons sur cette position de
départ, nous allons avoir
une petite animation que tout soit
un peu plus beau. Passons à l'animation des fenêtres. Allez dans mon U ici et
créons deux animations. En fait, passons
à l'animation des actifs. Et le premier sera un fondu dans l'animation. Ensuite, la deuxième animation que
nous allons
avoir sera ce que nous allons simplement
appeler une animation statique. Et ça veut juste
dire, d'accord, gardez les positions
exactement là où elles sont. Mettons du cœur à cette
position ici, 498,5 Et mettons le diamant
à cette position ici, 52,94 59,8 désolée Euh, et cela devrait maintenant indiquer si nous jouons en tant qu'
animation, cela fonctionne. Voyons comment fonctionne mon
animation décolorée. Je veux que ça passe d'ici à
là-bas environ 2 secondes. Je veux qu'il disparaisse
là où il était, à savoir la position 400. Et quel était le poste ? Je crois que c'était 459. Passons à notre autre
animation juste pour la voir. 502,9 pour les diamants, puis 459,8 Copions la position de ces
cœurs. Retournez ici,
puis ici. À ce stade, je veux que les
cœurs soient dans cette position. Passons à 459,8 Et ensuite je voudrais faire à peu
près la même chose, avec le diamant qui partira
d'ici Ensuite, 2 secondes plus tard, je
veux qu'il soit à l'autre position, soit
52,9 par ici À ce stade, je veux que les
diamants soient également présents. vois, maintenant ils vont
s'estomper comme ça, puis le jeu
va commencer. Tout ce que nous devons faire, c'est ce que nous
devons faire, non ? Oh, faisons aussi une
autre animation où ils sont hors de vue. Créons-en un nouveau et
nous l'appellerons « out of view ». En fait, ce
sera juste à ce moment-là ces deux-là seront
un peu hors écran. Peu importe où
ils se trouvent tant qu'ils sont touchés. Et nous pourrions également les désactiver
en quelque sorte désactiver
en Mais je vais juste le faire comme
ça pour le moment, car cela leur facilite un peu les choses puisque nous
ne faisons que changer leurs positions. Ce sera en fait l'animation par défaut. Nous allons commencer par ceci ou
par des choses hors de vue.
Ouvrons l'interface utilisateur. Réglons ce paramètre sur
l'état par défaut. Ensuite, nous voulons nous
assurer de passer
directement à
la statique dès que nous sommes passés à la statique Allons faire
la transition ici. Cela va nous présenter un nouveau concept qui ressemble à des transitions
automatiques. Nous allons les mettre tous
les deux à zéro, mais ensuite nous allons
garder heure de sortie
a changé. Cela signifie qu'
à la minute où cela est fait, passage en statique
et l'heure de sortie à
zéro signifient que l'animation sera terminée,
puis déplacée ici. Ce qui va avoir l'
air plutôt cool. ne nous reste plus qu'à avoir un déclencheur qui est également un nouveau
type de paramètre. Cela ressemble beaucoup à un booléen. Pensez-y comme à un bouton
plutôt qu'à un levier. Nous allons juste
l'appeler Start. Nous allons aller
ici et créer cette condition de
transition. Commencez à zéro, assurez-vous qu'il n'y a
pas de temps supplémentaire et que
la durée de transition est également fixée
à zéro. Cela fonctionnera
en gros :
dès que nous cliquons dessus ici, cela disparaîtra
puis y restera. C'est tout ce dont nous avons
besoin pour nous assurer que notre interface utilisateur ne démarre pas
lorsque nous démarrons le jeu. Nous devons maintenant ajouter
un autre paramètre ici
à notre code de
départ du jeu. allons créer un animateur
public, qui sera notre anum Alors allons juste
en bas et disons que je peux régler le déclencheur, je crois que nous l'avons appelé start. Maintenant, ces trois éléments réunis
vont essentiellement
nous permettre de démarrer le jeu
manuellement à partir de cet événement. Et celui-ci
va faire en sorte que nous nous
assurions que notre interface utilisateur ne démarre
qu'au démarrage du jeu. Revenons à
mon script de départ. Ici, Boundary,
c'était ici. Faisons glisser cet animateur d'interface utilisateur et voyons si tout fonctionne
exactement comme nous le souhaitions Jouons et voyons voir. Nous commençons par l'interface utilisateur hors écran, exactement comme une ou deux. Nous commençons avec le score
d'un, rien d'autre. Dès que je commence ce jeu, nous pouvons voir mon interface utilisateur s'estomper. Et ça a
vraiment l'air vraiment cool. Maintenant, je peux commencer à jouer
comme d'habitude. C'est le dernier grand
changement que vous apportez à nos jeux, vous devez toujours
ajouter du son et du son. Je sais que je le dis à
peu près à chaque épisode, mais je trouve que c'est
une modification plutôt intéressante que
nous avons apportée à notre jeu jusqu'à présent. Et nous l'avons fait pour qu'
il soit beaucoup plus beau, en particulier avec
les visuels supplémentaires Et maintenant, avec tous
ces autres trucs. Et maintenant, nous
devons également commencer par les hubs. Donc, si nous
mourons et que
nous perdons la partie, nous voyons tout disparaître, puis nous allons
recommencer à zéro,
comme nous en étions
avec un nouveau score élevé
parce que nous avons obtenu beaucoup
plus de centimes cette fois-là , ce qui est vraiment très cool C'est donc tout
pour cet épisode. Nous allons évidemment ajouter
notre son et notre musique dans le
prochain épisode, puis nous devrions
apporter quelques
touches finales et nous en aurons
terminé avec notre jeu. Vous avez donc presque terminé ce cours dans
son intégralité, qui est vraiment un excellent travail si vous avez
pu tout
suivre jusqu'à présent et votre jeu ressemble au mien. Si certaines choses sont différentes,
revenez
peut-être en arrière, regardez
quelques vidéos et téléchargez ressources pour voir en quoi
les
vôtres sont différentes des miennes. Parce que vous devriez
être capable de créer exactement
mon jeu
en utilisant à peu près les fichiers et les espaces que je fournis sous toutes les vidéos Assurez-vous donc
que tout est pareil. Et j'ai même joint mon code au cas où vous voudriez le
vérifier également. J'espère donc que votre jeu
est exactement dans le même état
que le mien actuellement. Et vous avez pu tout
suivre dans cette vidéo. Excellent travail pour être arrivé jusqu'ici. Et nous allons
commencer à ajouter son et de la musique dans
le prochain épisode. Merci.
17. 16. Ajouter des effets sonores et de la musique: Bonjour, et bon
retour sur Unity. Le moment est
venu pour notre jeu ajouter enfin un son, car même si nous avons fait à peu près
tout le reste, notre jeu est toujours
totalement silencieux. L'ajout d'un son n'est une des autres
choses qui rendent votre jeu beaucoup plus réactif et vivant
pour le joueur. Pour ajouter un fichier audio, nous allons suivre un processus assez
simple. Nous allons d'abord
créer un nouvel objet appelé gestionnaire audio, lequel nous
allons suivre tous les éléments audio centraux,
notamment si
le son est activé ou désactivé, et
ce qu'il faut écouter à quel moment. Ensuite, nous allons modifier
tous nos scripts et nous allons dire « joue
un son » à ce stade. Pour commencer,
créons un nouvel objet, appelons-le Audio Manager. Je vais juste le
mettre à zéro pour aucune autre raison que ma préférence. Ensuite, je vais créer un
nouveau script et je vais
lui donner le même
nom de gestionnaire audio. Ensuite, dans mon script de
gestionnaire audio, je vais avoir une référence à chaque source audio, où
nous allons lire son dans le jeu. Et puis il y aura
des vides différents pour chacun qui diront « jouez ceci », jouez ceci », « jouez ceci », etc. En fait, je
vais le simplifier. Je vais avoir un vide et je vais dire joue le son. Mais je prends de l'avance sur moi-même. Permettez-moi d'abord
d'écrire une source audio publique. Je vais devoir en
créer un
pour chaque
fichier audio que j'ai. Maintenant, avant de créer ceci, permettez-moi
d'abord d'importer mes fichiers audio. Je vais créer un nouveau
dossier, l'appeler audio,
puis à l'intérieur de celui-ci , je
vais vouloir mettre
chacun d' Je crois qu'il y a sept fichiers
audio que j'ai jusqu'à présent. Allons-y donc et
importons-les tous. Je les ai tous ici et je vais laisser tous
ces paramètres pour le moment. Il s'agit essentiellement de
tout un tas de fichiers audio. C'est pour collecter des diamants, c'est pour les piles. Fais un Zap. Son Cela
peut être un jeu de sons. Il s'agit de take damage, du
son, d'un saut, de
la musique du jeu, puis aussi des effets sonores
pour le robot. Je vais aborder tout cela maintenant, mais pour le moment,
permettez-moi simplement d'ajouter une source audio, ou en fait je vais
ajouter sept sources audio à ce script de gestionnaire audio, puis je vais créer
une référence pour tout le monde. Permettez-moi donc de
saisir la source audio. Je vais en ajouter sept
, sept ici. Et le mineur
que j'ai fait, je vais maintenant
commencer à mixer mon audio. Alors laisse-moi aller de l'avant et
désactiver tout cela. Ce sont tous des
sons différents et certains d' entre eux sont beaucoup
plus forts que je ne le souhaiterais. Maintenant, à cause du
logiciel d'enregistrement que j'utilise, il se peut que
vous ne puissiez pas
entendre le son de mon jeu directement
dans la vidéo. Si tel est le cas,
vous
devez évidemment
suivre le processus. vue sera exactement la même
et il vous suffira de régler le volume de chaque clip audio au
fur et à mesure que vous l'avez ajouté à votre jeu. Permettez-moi donc de commencer
par la musique. Je vais faire glisser le clip
dans cette propriété du clip audio. Je vais mettre en place un wake true et un loop true
pour la musique. Et maintenant je veux juste
changer ce volume. Je peux déjà dire que l'un d'eux
va être beaucoup trop fort, alors laissez-moi essayer 0.2 au début et voir comment je
dois l'ajuster. Je pense que 0,1 est légèrement plus agréable, juste pour que cela ressemble plus à de la musique de
fond Peut-être que 0,15
est probablement une bonne solution
entre les deux, alors je vais
faire exactement la même chose avec tous les autres Au lieu de le changer, je vais juste désactiver celui qui se trouve au-dessus, puis
faire retentir
le son du saut
lors d'un sillage et d'une boucle Je peux donc également obtenir un bon
volume pour cela. De toute évidence, c'est
un peu trop fort. Faisons en sorte que 0,20 0,2
soit encore trop fort. 0,10 0,05 Je pense que 0,1 est probablement
un bon intermédiaire Passons à 0,1 Je vais juste répéter ce processus encore et encore
jusqu'à ce que nous ayons
tout fait. Ensuite, je vais essentiellement
désactiver tous ces fichiers, je ne veux pas
qu'ils soient
activés . Si vous suivez
depuis longtemps, j' espère avoir des fichiers audio similaires
à moi, j'ai trouvé ces œuvres Vous pouvez évidemment
les adapter à votre jeu. peut que je les change au fur et à
mesure, mais c'est ainsi que je vais mixer tout mon son
, puis je vais simplement décocher
Play on awake pour à décocher
Play on awake pour peu près tout
le monde, ainsi que Muet et Loop parce que
je ne veux pas que tout
cela passe en boucle ou
joue pendant un le monde, ainsi que Muet et Loop parce que
je ne veux pas que tout
cela passe en boucle ou
joue vraiment pareil pour le hit,
comme ça, je ne veux pas que
la partie
se termine, ni
que ce soit le robot. Ensuite, je vais
régler la même chose pour le saut par ici
, que
nous allons également déclencher. La musique, je vais
continuer à jouer éveillée et
en boucle juste parce que vous
voulez évidemment jouer la
musique quand elle est allumée. Maintenant, avant d'aller plus loin, je vais
commencer par ajouter un muet et un bun sound off Ce qui va essentiellement les
programmer pour dire, d'
accord, les désactiver tous
et les enregistrer. La façon dont je vais
le faire est de
créer un tableau de sources
audio publiques. Ce sera
l'effet sonore qui permettra de créer une autre source audio
publique. Et celui-ci sera
pour la musique. Ensuite, je vais
créer quelques vides. Le premier vide sera un vide musical muet,
qui mettra la musique en sourdine Égal à vrai. Je pourrais en fait créer un autre vide ici qui indiquerait « non muet » Musique Mais en fait, je les
combine dans un seul vide. Je vais dire que c'est un, muet. Muet. Musique Il y
aura un lingot ici, on
appellera muet À l'origine, il
devait être défini sur false. Ensuite, je vais juste
définir muted comme muted. En d'autres termes, changez
ce qui était en sourdine. Et je vais également le
mettre en sourdine ici. Pas en sourdine. La première
fois que je clique dessus, le message «
OK, muet » est faux Réglez le mode muet sur Non
muet, ce qui est vrai. Et puis définir muted comme égal à
non muted, muted est faux. Par conséquent, définissez muted sur true. Ensuite, la deuxième fois,
on dira « mettre en sourdine » ou « non muted »,
ce n'est pas vrai Il va donc être défini sur false. En gros, cela va
alterner à chaque
fois que nous l'appellerons. Je vais écrire exactement
le même vide pour les effets sonores, les effets sonores muets et muets Nous allons écrire
pour chaque source audio telle que je dois la taper comme ceci, car as est un mot
réservé dans SFX En d'autres termes,
chaque source audio que
nous allons attribuer
à cet objet S, S est la première, peut
être la première, puis la seconde pour
chacune des sources présentes ici. C'est ce que l'on
appelle une boucle à quatre boucles. Il s'agit en fait d'une boucle pour chaque boucle, mais vous pouvez les considérer
comme une répétition du code O. Cela signifie que pour
chaque S,
il est écrit un peu pour
nous, mais pensez-y comme pour chaque source audio
contenue dans ce truc. Réglez sa valeur mute sur différente de celle
de mon muet. Pour SX, cette option est désactivée. Musique Cela va
être un SFX en sourdine. Permettez-moi de changer cela rapidement alors. Il suffit de le copier
ici, ici. Je vais dire Muted FX. En d'autres termes, mettez à jour tout
pour que ce soit pareil. Réglez ensuite le mode muet sur
ce qu'il n'était pas auparavant. En d'autres termes, alterné Ce code ici
va nous permettre d' activer ou de désactiver toutes les sources audio
que nous avons dans notre jeu Nous devons maintenant écrire des codes pour lire les sources
audio spécifiques, mais je vais
les combiner dans un seul espace. Je vais appeler ça
public void, appeler ça play. Son En tant qu'entrée, nous allons essentiellement
saisir une source audio. Nous allons
saisir la source audio CAR tout le vide sera sous forme de jeu. En d'autres termes,
nous allons diffuser une source audio que nous
choisissons ici. Alors je vais
appeler ce vide. Je vais créer
une référence à ce script de gestionnaire audio dans un tas d'autres scripts
où je dois appeler des vides Appelez ce vide spécifiquement et je vais transmettre
le son que je veux. Commençons par
renseigner tous les sons. Tout d'abord, nous avons notre game over Sound ainsi que
nos sons de dégâts. Passons à la santé des joueurs. Créons une référence à mon gestionnaire audio.
Appelons-le AM. Ensuite, ici, dans
mon vide de prise
de dégâts , je vais
écrire AM Fx. Maintenant, je dois choisir l'
index que je vais avoir. Permettez-moi de commencer à
attribuer les index à ce sujet. Avant
de faire le reste ici, allons-y et faisons glisser mon script de gestionnaire audio
vers le bas. Je
les réduis simplement
parce que je n'ai plus besoin de
modifier les paramètres. Maintenant, je vais avoir
Music This source ici et toutes les autres sources. Il devrait y avoir
six autres sources je vais
juste inclure comme ça. Et vous pouvez voir que
cela nous pose un petit problème. Maintenant, nous en avons
ceux qui ne sont pas là. Je vais donc simplement supprimer
ceux qui cliquent avec le bouton droit de la souris et disent « supprimer Array Element ». Et puis j'ai mes six sources
audio, puis je saute,
puis un robot, puis je reprends le jeu. Appuyez ensuite sur Electrical, puis sur Diamond pour récupérer celui auquel je
veux faire référence ici. Hit est le quatrième. C'est l'élément 3 ici. Et vous pouvez voir qu'
ici, c'est le troisième élément. Frappe. Revenons à mon code et disons Suis-je l'élément trois. Et je vais passer
ça à AM, Play Sound. Allons-y, allons-y comme ça. Cela
va essentiellement dire, d'accord,
écoutez un son et écoutez importe quelle source audio dans
laquelle vous l'avez stockée. La troisième chose, qui
est celle que nous venons de
créer, je vais répéter ce
processus à peu près partout où nous voulons
jouer un son, passons à la mort. Dans celui de la mort, nous
voulons rejouer la partie. Sound Which, alors crois que
c'est l'avant-dernier. En fait, c'est
le troisième, je crois. Oui, c'est le troisième,
qui est l'élément deux. Passons ici et
jouons au deuxième élément ici. Maintenant, nous en avons trié deux
. Nous devons encore ajouter
les sons de saut. Passons au script du mouvement. Je crois que c'est par
ici. Mouvements du joueur. Nous allons créer
une autre référence à mon gestionnaire audio, appelez-le AM. Allons ici, dans mon espace
vide, et disons AM Play. Son Et nous devons maintenant
trouver le son du saut. Honnêtement, je ne m'en souviens pas
parce que je ne les ai pas mémorisés. Mais je
tiens à dire que c'est le premier. Oui, c'est le premier.
Allons ici et jouons le tout premier son. Maintenant, nous en avons fait trois. Il n'en reste
que trois. Nous avons évidemment besoin du son pour
l'électricité, ainsi que du son
pour le robot. Et nous avons besoin du son pour
la collection Diamond. Passons à la
collection Diamond, One first. de
cet événement, nous allons devoir jouer les sons ici. Mettons le gestionnaire
audio public AM sous le système de particules. Allons jouer Sound le matin. Je crois que Diamond Collect
est le tout dernier son. Nous allons simplement confirmer. Oui, ça l'est. C'est l'élément 5 ici. Allons-y et
jouons au dernier. Nous avons maintenant deux autres sons. Nous avons le robot Sound,
que nous devons jouer chaque fois
qu' un robot est un peu différent sur les écrans
. Cela va en fait
être un peu plus délicat. Je vais donc changer
ce que je fais ici. Au lieu de faire en sorte que
ce son fasse partie du réseau sur lequel je vais
nécessairement me concentrer, je vais le faire
jouer en mode éveil et être diffusé en boucle Mais au lieu de cela, je vais
le mettre en sourdine. Et puis, chaque fois qu'
un robot apparaît, je vais juste m'
assurer régler de manière à ce
qu'il soit désactivé Et chaque fois qu'
un robot meurt, je le configure pour qu'il ne soit
plus en sourdine. Cela
fonctionnera dans la
plupart des cas s' ils peuvent nous donner s' il y a un robot
qui apparaît puis
meurt alors qu'
un autre est encore à l'écran Ce peut être un
robot sans son, mais pour le moment, ce sera une solution à
peu près parfaite Allons ici, dans
mon vide. Voyons dans mon script, lorsque je débuterai en tant que robot, je vais vouloir
définir ma source audio
, et je vais créer une référence au gestionnaire
audio. Encore une fois, M ici, je vais juste dire AM ou X. Je vais dire que c'
est le premier élément. Je crois que c'est
le second, mais c'est le
premier élément du tableau. Muet est égal à faux. En d'autres termes, jouez au robot. Son Ensuite, à la minute où
ce robot meurt, à
la minute où il n'
existe plus à l'écran,
nous allons vouloir
remettre cette sourdine sur true ce
faire, ils vont en fait modifier le script
qui se trouve au-dessus du, qui indique ce qu'il faut supprimer. Nous allons
entrer dans ce script qui s'appelle Tile clear. C'est le script
qui va
détruire les tuiles.
À la minute près. Je vais ajouter une nouvelle variable, appelée robot, à bord. Et ce
sera du type lingot. Ensuite, quand je
détruis mon objet de jeu, je vais juste ajouter une autre
ligne juste en dessous. Et je dois dire que s'il y avait
un robot à bord, je veux m'assurer que mon gestionnaire audio n'
émet plus de son. Je ne vais pas créer de référence
comme je
ne le sais pas ici. Je vais utiliser le gestionnaire audio Game Object Find car
cela sera beaucoup plus facile pour un composant Get préfabriqué Ensuite, je vais trouver un script de gestionnaire
audio qui y est
attaché. Je vais dire X, attacher l'élément deux ou
était-ce l'élément un ? Je pense que c'était
peut-être le premier élément. En fait, oui, c'
était muet comme vrai. Tout ce que j'ai à faire dans
ce script
de robot , c'est qu'à la minute où je le désactive, je dois l'attacher, accéder à mes objets parents et
transformer le parent Ensuite, je vais
dire que la
vignette des composants est claire et je
vais dire que robot à
bord est égal à vrai. C'est peut-être une façon
un peu étrange de le faire.
Honnêtement, si vous
ne voulez vraiment pas ajouter ce son
à ce robot, ce
n'est pas la fin du monde. En gros, ce que je fais,
c'est juste dire, d'accord, cet élément spécifique
du tableau dont il n'a pas
réellement besoin dans le tableau. Je le garde juste
là comme souvenir. Et je dis, OK, muet. Il met le muet sur false
dès que j'apparais et m'assure que je dis
à ma vignette qu'il y a
un robot ici, et dès que ma tuile
est détruite, s'il y avait un robot là-dedans,
elle doit s'assurer que
cette sourdine est réglée sur elle doit s'assurer que
cette sourdine est réglée Nous pourrions également simplement le
définir sur true chaque fois que nous détruisons une tuile qui ne fonctionnerait pas aussi bien,
car alors n'importe quelle
tuile deviendrait muette Les robots d'ici n'existent plus
depuis un moment. Espérons que cela survivra pendant la majeure partie de
la durée de vie des robots. Et ça va très
bien fonctionner pour le moment. Si nous revenons à
mon gestionnaire audio, j'ai déjà programmé dans mon script musical et
j'ai fait le saut J'ai fait le robot maintenant, j'ai
terminé le jeu, et j'ai fait le
hit aussi, Mais l'électricité. Ça y est,
j'ai aussi fait le diamant. Passons au son
électrique qui
figurera dans le script de la
batterie ici. Trouvons mon script de batterie, il se trouve en fait dans Unity Store,
il n'a pas été ouvert. Ensuite, nous allons faire cette
vidange de batterie ici. Nous allons avoir une
référence à mon gestionnaire audio. Encore une fois, je vais également
devoir attribuer celui-ci par code car ce
sera un préfabriqué. Je vais dire que M est égal à l'objet
du jeu point find audio manager get component. Maintenant, je vais trouver un script de gestionnaire
audio à ce sujet. Je vais m'assurer de l'avoir
attribué correctement. Ensuite, tout ce que je vais
faire, c'est dire
ce code comme je l'ai
dit pour tous les autres,
comme la santé des joueurs
ici, c'est ici AM. Play Sound Ensuite, je vais
choisir un élément du tableau. Je vais émettre le son
lorsque la batterie s'allumera. Je crois que c'est le cinquième son. Permettez-moi de vérifier par mesure de sécurité.
Jouons à l'élément 5. Maintenant, la façon dont cela
va fonctionner est que nous avons créé
notre gestionnaire audio, dans
lequel tous les
sons sont stockés, ainsi que le script, qui, espérons-le, nous
permettra de désactiver la musique et non.
Et nous ne l'avons pas encore
programmé Mais nous allons
ajouter cela dès tous les
sons fonctionneront. Ensuite, nous espérons avoir
pu appeler chaque son
de manière appropriée à partir de chaque script, afin de pouvoir jouer
les sons quand nous en avons besoin. Souvenons-nous de tous
les sons que nous avons créés pour la première fois , Music Which
n'avait aucune programmation. Le saut a été référencé
dans le son du lecteur. Assurons-nous d'attribuer le gestionnaire audio ici. Juste comme ça. Revenons en arrière, voyons ce que
nous avons déjà fait d'autre. Le robot va être
assigné par le robot. Et en fait,
réalisez simplement que nous
n'avons pas créé de référence à ce
script de gestionnaire audio dans Start. que nous devrions probablement faire car il s'agit d'un autre préfabriqué. Écrivons donc exactement le
même code que celui que nous avons écrit pour la batterie à l'intérieur de
cet autre préfabriqué. La raison pour laquelle nous le
faisons pour les préfabriqués est que, généralement, lorsque nous
avons des objets, nous pouvons dire « d'
accord, mettez-les dans cet objet », mais comme ces objets
n'ont pas encore été créés, ils ressemblent à des
robots et Nous devons écrire
du code pour le faire à notre place, car nous ne sommes pas là pour le
faire glisser au début
du jeu. C'est pourquoi quatre,
quelques-uns d'entre eux, nous avons dû écrire
ce code ici. Quoi qu'il en soit, cela devrait être
le code dont nous avons besoin pour attribuer au robot.
Voyons donc ce que nous avons d'autre. Le robot est terminé,
le saut est fait, partie et le coup vont
tous deux la santé du joueur
, qui est maintenant attribuée. De plus, les collections
de diamants porteront sur les diamants. Et je pense aux diamants, je ne
me souviens pas si nous avons pensé
à les attribuer par code,
mais je ne pense pas que nous l'ayons fait. Faisons donc exactement la même
chose que nous avons faite là-bas. Assurez-vous simplement que nous l'
attribuons par code. Nous l'avons également fait pour
la batterie. Cela signifie que le
dernier que nous avons est juste pour le joueur qui subit des
dégâts et meurt. Passons donc au gestionnaire audio, au lecteur et
veillons à attribuer au script d'état du lecteur ce
script de gestionnaire audio ici. Maintenant, allons-y
et appuyons sur Player. Il se peut qu'il y ait des problèmes, mais nous allons
les résoudre en cours de route. Mais j'espère que nous avons
tout fait pour
ne pas avoir de bugs. Et nous pouvons entendre la musique et appuyer sur Play pour voir
si tout fonctionne. On dirait que le saut fonctionne. Nous avons notre son, nous
avons le son des sauts. Nous allons tester
chacune d'entre elles.
Évidemment, je vais
aller de l'avant et désactiver la musique juste pour que je puisse entendre
tout le reste. Il ne
semble pas que le son de mon cœur fonctionne avec ma batterie. Le son ne semble pas l'
être. Mais testons. Le cœur fait
évidemment mon saut, ma partie
semble terminée, ce qui est génial. C'est en fait la plupart d'entre eux. Voyons quels
sont ceux qui restent. Si vous continuez et coupez à nouveau
la musique,
le saut sonne comme s'il fonctionnait Je dois tester le robot et le gameplay
fonctionne. Les coups fonctionnent. Je dois tester l'électricité. Ça n'a pas l'air de fonctionner. Collectionneur de diamants, je
n'ai pas encore testé. Et je ne pense pas que le robot
fonctionne non plus.
Allons-y. Nous avons une erreur qui indique que
la référence à
l'objet n'est pas définie
sur l'instance d'un objet. Oui, il semble que notre
code ne fonctionne pas exactement. Et je pense que la raison en est nous avons mal
trié le gestionnaire
audio. Allons-y
et réglons ce problème. Nous y avons aménagé un espace là où
il n'aurait pas dû se trouver. Nous devons y aller, je pense que
nous l'avons écrit dans
ces trois lignes de code ici et que nous l'avons également écrit
en clair. Assurons-nous d'être bien
placés à ce moment-là. C'est vrai. Allons-y
et essayons à nouveau. Je vois que toutes ces erreurs
essayaient de jouer des sons
, mais elles n'y sont pas parce qu'elles ne trouvaient pas
d'objet de gestionnaire audio avec un espace parfaitement
logique. Essayons encore une fois.
Je vais baisser légèrement
le saut
parce que c'est assez bruyant. Essayons
encore une fois. Je vais à nouveau
couper le son pour que
je puisse tout entendre Voyons voir, Jumping
semble fonctionner. Nous avons un diamant. On dirait que le
son du diamant joue ici. Au moins quelque chose joue, mais le son n'est
pas le bon. Nous allons juste tester. Nous avons commis
d'autres erreurs. Le son du diamant
retentit également lorsque nous collectons un diamant. est intéressant de noter que
nous
l'avons
probablement Il est intéressant de noter que
nous
l'avons
probablement mal attribué dans le tableau, mais allons-y et essayons. Le robot Sound
fonctionne également, ce qui est excellent. Revenons à mon tableau.
Allons par ici. Electricity Sound devrait
être le cinquième. Allons-y,
ajoutons-le et voyons simplement parce que je ne pense pas qu'
il ait été attribué correctement, c'était
probablement le problème. Passons simplement à ma
batterie et vérifions si nous appelons la bonne personne et si
nous appelons l'élément 5, nous appelons en fait
la mauvaise personne. Remplaçons cela à quatre. Nous avons une autre erreur ici
: la
référence à l'objet n'est pas définie sur : la
référence à l'objet n'est pas définie l'instance
d'un objet et indique que
le robot de script se déplace. Allons-y et voyons quel est
exactement le problème ici, trouvant un gestionnaire audio et nous devrions également être en mesure de faire fonctionner
ce code. Il semble que le
problème vient peut-être d' ici avec cette vignette get
component clear. De toute évidence, toutes nos tuiles devraient contenir ce
script qui garantit qu'elles
se suppriment d'elles-mêmes une fois qu'elles
atteignent une certaine hauteur. J'ai fabriqué quelques nouveaux carreaux. À un moment donné, je serais
peut-être allée les ajouter. Faisons en sorte que ce
ne soit pas sur tous mes carreaux. Voyons simplement
lesquels ne l'ont pas. Ils le font tous, ils
font tous celui-ci,
celui-là ne le fait pas. Donc, ces deux-là n'
ont pas les tuiles claires. Allez-y, ajoutez-leur ça. Nous n'avons évidemment
rien à régler. Et puis aux autres. Oui, ils le font, il n'y a
que ces deux-là. Maintenant, si nous
revenons au jeu, tout devrait
fonctionner plutôt bien et tous nos sons devraient être excellents. Allez-y, appuyez sur
Play et voyez si tout fonctionne parfaitement. Donc, ma musique joue. Dès que je commence à jouer à
tout ce qui se passe, on dirait que les sons
fonctionnent aussi Il semble y avoir un petit problème
où deux apparaissent complètement l'un
sur l'
autre .
Bien sûr ce que c'est. Mais ça a l'air cool. Oups. Vous pouvez entendre
tout ce qui se passe, vous pouvez entendre le
zapping et vous pouvez entendre le robot si sournoisement Évidemment, si tu meurs, tout recommencera, ce qui est vraiment cool. C'est à
peu près toute la
configuration audio dont nous avons
besoin pour notre jeu. La toute dernière chose est que
nous devons maintenant ajouter quelque chose qui nous permette de
couper le son et le son, parce que
nous l'avons codé dès le début Passons à mon interface utilisateur. Je vais aller sur cette interface utilisateur ici. Ce Camas que j'ai créé, je
vais créer un bouton. Je vais avoir deux boutons. Passons à l'héritage. Je n'ai pas besoin d'
un bouton avec Textez-moi. Je vais juste
le déplacer ici. Et je vais supprimer le
composant de texte et le renommer Fx et renommer celui
situé en dessous en Music Je vais
les mettre là. Je pense que je veux que sur mon cloud puisse désactiver
la musique comme ça Je vais évidemment utiliser de
vrais sprites ici. Je vais définir ces positions. Négatif 4,445,
négatif 445, cool. Passons ensuite à
mes sprites et découvrons ces deux sprites que j'ai
créés spécialement
pour ce qui créés spécialement
pour Music Et je crois que l'
autre s'appelait Sound. Ça y est.
Importons ces deux éléments. Assurez-vous que nous avons
à la fois sélectionné et faisons ce que nous
faisons normalement lorsque nous ajoutons de nouveaux sprites Passons simplement ici à
l'image source et
veillons à ce que nous fassions
glisser notre sprite sonore sur le X ,
alors cliquez sur Définir la taille native Ensuite, nous allons
devoir adapter cela en fonction du
reste du jeu. Mais avant cela,
ajoutons des pixels. Ajoutons de la musique afin que nous puissions faire
la même chose en même temps. Voyons ensuite comment
nous devons changer cela. C'est évidemment un pixel. Il faut que ce soit une, c'est un
peu réduit. Encore une fois, ça devrait aller. Parfait Je pense
que c'est suffisant. Peut-être qu'une fois, c'est plus petit. Ouais Maintenant, il ne nous reste plus qu'à revenir
au schéma d'ici. Assurons-nous simplement d'avoir un système d'événements,
car c'est ce dont
nous avons besoin pour que ces
boutons fonctionnent. Allons-y et faisons
glisser celui-ci ici, et celui-ci ici vers le bas, jusqu'à ce qu'ils ressemblent à ça, peut-être un peu sur le côté. En fait, je vais
les vouloir tous les deux en bas de page. Je pense comme ça. Passons
à la musique et déplaçons-la. Nos boutons sont
là. En fait, je vais les déplacer
un peu plus haut également. Je pense que
ça va pour le moment. Maintenant, il ne me reste plus qu'
à m'assurer que le
code que j'ai créé s'exécute
lorsque je fais ces boutons. Allons-y, sélectionnons-les. Ensuite, en cliquant sur le bouton, je vais faire glisser cet objet du
gestionnaire audio et je vais choisir Audio
Manager mute S of X. Ensuite, pour la musique, je
vais le remplacer mute Music.
Voyons si elles fonctionnent. Ce qui devrait arriver est en fait la dernière
chose que je vais faire avant d'en avoir fini avec ça, c'est de
retourner dans le gestionnaire audio. Je vais juste faire
référence à ces deux boutons. Allons-y avec Unity Engine. Créons une référence
à mes deux boutons, le bouton
public X et l'autre est de la
musique avec une majuscule. Cette fois, tout ce que je
vais faire, c'est dire, d'accord, si je dois vraiment
créer quelques couleurs, je vais créer une
couleur appelée Grade out. Tout ce que je vais faire, c'est
dire, OK, si vous avez maintenant désactivé la musique, puis grisez Music. Vous
pouvez voir le changement Allons-y et
disons si la musique est désactivée.
En d'autres termes,
si nous avons maintenant désactivé le
micro, le son sera
réglé sur vrai à la minute où disons si la musique est désactivée.
En d'autres termes,
si nous avons maintenant désactivé le
micro, le son sera la musique est coupée. En d'autres termes,
si nous l'avons mise en sourdine, réglons la
couleur de mon image musicale Ensuite, en dessous,
je vais écrire L. La couleur de l'image musicale est
égale à la couleur blanche. Je dois écrire à peu près
le même code sous les
effets sonores ici. Supposons que si X est désactivé, couleur du point X de l'image
est grise Sinon, mettez-le en blanc. Revenons à mon jeu alors. Sous mon script de
gestionnaire audio, ici, j'ai juste besoin de créer une
référence à ces deux. Faisons glisser X là-dedans
et faisons glisser de la musique comme si nous allions créer la
couleur comme ceci. Et voyez si nous pouvons le voir en
action pendant que nous jouons au jeu. Allons-y et appuyons sur Play. Et testez simplement ces deux
boutons pour voir s'ils fonctionnent. On dirait que c'est le cas. Je vais voir si on clique sur
le son. Nous ne devrions pas avoir
de sons du tout. Allons-y et désactivons les
deux pendant que je parle, juste pour vérifier si quelque chose ne
fonctionne pas Il semble que le robot
soit toujours un problème. Et cela s'explique par le
fait
que nous sommes en train de le désactiver manuellement Ce que je vais faire à la
place, c'est dire
régler le volume au
lieu de le désactiver. Puis réglez le volume. Ce qui est plutôt cool en fait. Je n'y avais pas vraiment pensé. Mais
apportons rapidement ce changement. Au lieu de dire que muet est faux, je vais dire que do
volume est égal à Et puis quel est le volume je veux que mon robot
soit normalement, il est généralement de 0,01. Je
vais donc régler le volume 0,01. Il suffit de mettre un après cela C'est ce que tu
dois faire. Ensuite, ce qui sera dicté
quand ce sera à nouveau désactivé, c'
est que lorsque je l'aurai
fait, ma vignette sera effacée.
Alors allons-y. Au lieu de dire muet, je dirais que le volume
est égal à zéro En fait, la dernière
modification que vous devez apporter après cela est
de revenir à mon jeu. Je dois consulter ce
script ici. Et je dois
vraiment le mettre à zéro au début
du jeu. Et pas muet comme ça. Maintenant, quand je joue à mon jeu, je ne devrais plus
avoir de bruit de robot Quand je commence, si je coupe à la
fois le son et le son, cela ne devrait
plus poser de problème. J'ai maintenant
un endroit où nous pouvons tester En fait, ce
chiffre devrait toujours monter à 0,01 quand je le joue, car il est coupé
quand je l'entends Nous devrions avoir un robot à l'
écran maintenant, ce qui est parfait. Vous pouvez voir que cela fonctionne
réellement. Puis, à la minute où
ce robot
est réellement détruit par le cloud, aucun effet sonore ne se produit. Rien ne joue, et
c'est exactement ce que nous voulons. Dès que ce robot sera
réellement détruit, nous devrions
revenir à zéro, ce qui semble être le cas. Ce qui est génial. C'est
en fait tout le son dont nous avons besoin
pour notre jeu. Et maintenant, vous pouvez évidemment changer cela chaque fois que vous
apparaissez dans le jeu Vous pouvez le sélectionner si
vous le souhaitez activé ou non. Il sera activé par
défaut évidemment. Mais ensuite, vous pouvez
simplement le désactiver si vous le souhaitez, ce
qui est plutôt cool. C'est en fait la dernière chose. Maintenant, pour terminer notre jeu, la dernière chose
dont nous avons besoin, ce sont les touches finales. Mais après cela,
nous avons pratiquement terminé notre jeu, ce qui
est vraiment très cool. Évidemment, comme je l'ai dit
dans la vidéo suivante, nous allons apporter quelques touches finales
pour que tout
soit un peu plus beau. Mais nous avons presque terminé, donc si vous suivez et que
vous avez un jeu qui ressemble à celui-ci, c'est
vraiment très cool. Parce que c'est évidemment un
jeu
assez impressionnant à créer si vous
n'avez jamais vraiment beaucoup utilisé Unity
auparavant. C'est donc un bon travail d'avoir suivi. Et j'espère que votre
jeu vous impressionne et que vous en êtes très
fier en ce moment. Et comme je l'ai mentionné
dans la vidéo suivante, nous allons apporter
quelques touches finales pour améliorer
un peu l'apparence de notre jeu. Mais j'espère, comme
je l'ai dit, que vous êtes
satisfait de la situation
actuelle et que tout fonctionne bien
dans votre jeu ,
tout comme dans le mien. Nous
terminerons ce cours dans les deux prochaines vidéos
et dans la prochaine, nous allons juste
ajouter quelques touches finales. Ensuite, je vais vous montrer
comment créer et exporter ce jeu et terminer
ce cours. Merci.
18. 17. Touches finales: Bonjour, et
bienvenue sur Unity pour la dernière leçon consacrée au
développement de ce jeu. Dans cette leçon,
nous allons maintenant ajouter quelques touches
finales. Nous allons
ajouter deux choses. Tout d'abord, nous
allons accélérer
la caméra au fil du temps. Ensuite, nous allons également
ajouter du post-traitement,
qui ressemble à des effets visuels en plein
écran, qui ne font que rendre le jeu
un peu plus beau. C'est assez difficile à expliquer, mais vous verrez qu'une fois que
nous l'aurons ajouté, en commençant par l'original
, avant de le faire, je vais juste activer ce rideau parce que
je l'ai désactivé il y a
quelques épisodes et
avant de l'oublier, lorsque j'essaierai de
créer mon jeu, je trouve qu'il a l'air beaucoup
plus cool avec ce fondu. Allons-y et
voyons si tout fonctionne. Nous avons donc notre fondu
et notre son et son fonctionnent exactement comme
avant, évidemment. Commençons par
cela. Accélérez la caméra. Je vais passer aux scripts et en créer un nouveau. Je vais appeler
cela l'accélération de la caméra, la façon dont le script va
réellement fonctionner. Il y a plusieurs
façons de procéder, mais la méthode que je vais choisir donnera au joueur un
certain contrôle sur la vitesse de la caméra
à certains moments. Je vais avoir
une variable
ici appelée time elapsed À chaque image, je
vais incrémenter le temps écoulé par le temps delta. En d'autres termes, le temps écoulé
va augmenter, ce sera essentiellement un compteur Et si nous le
plaçons sur un objet, je vais le mettre sur l'appareil photo
principal, par exemple. Allons-y et ajoutons
mon script ici qui s'appelait camera speed
up, jusqu'en bas. Voilà. Quoi qu'il en soit, si nous observons
simplement cette
variable de temps, je vais couper le son de la musique pour je
puisse parler
pendant qu'elle joue Faisons défiler la page vers le bas et
voyons ici que cette valeur
compte de haut en haut. Nous avons une erreur dès le
début qui indique que la valeur ne peut pas être nulle,
ce qui, je suppose,
fait référence au temps écoulé parce
que nous ne l'
avons pas encore initialisée, ce à quoi je vais revenir dans une
minute Mais en gros, c'est juste un chronomètre. Je veux juste
te montrer ce que c'est. Commençons
par le mettre à zéro, et c'est maintenant une minuterie. Ce que nous allons
faire à chaque image c'est dire si le temps écoulé est supérieur à une valeur, ce qui signifie
essentiellement augmenter un niveau, alors nous allons
augmenter le niveau de ce niveau Vitesses des caméras, nous allons
avoir une matrice en haut. Réseau flottant public, ce
sera la vitesse des caméras. Ensuite, nous allons avoir
un tableau à côté, qui sera des fois. Ce que nous allons dire en
gros, c'est à
la minute où je suis
supérieur à une heure, vous
devez augmenter la vitesse de la
caméra d'autant. Nous allons stocker cette variable temporelle dans un autre flottant
appelé heure actuelle. À la minute où nous commençons
le jeu, à la minute où il commence, nous allons régler l'heure actuelle égale à celle de la toute première
fois. Ça va être multiplié par zéro. De toute évidence, la vitesse
de la caméra sera également réglée sur zéro. Nous allons devoir créer une référence
à la vitesse de ma caméra ici. Passons à la caméra publique, bougeons, appelons ça vitesse de caméra. Script de caméra plutôt. Ensuite, nous allons
parler de script de caméra. La vitesse de la caméra est égale
à la vitesse nulle de la caméra. Cela va nous
permettre de le faire, c' est-à-dire de modifier la vitesse
de la caméra. Cela rend la
modification que nous avons apportée plus tôt, en séparant la
vitesse de la caméra de sa vitesse actuelle, très utile, car nous pouvons
désormais modifier la vitesse sans nous soucier de la vitesse à laquelle la
caméra se déplace réellement. C'est exactement à quelle vitesse il
devrait se déplacer, n'est-ce pas ? Mais cela ne veut pas dire qu'il
va commencer à bouger si certain temps s'écoule alors que nous sommes morts ou
quoi que ce soit Ce qui est vraiment
très cool en ce moment. Nous avons un script
ici qui dit régler l'heure actuelle
à zéro et de régler le script de caméra à
cette vitesse de caméra car nous utilisons la
même variable ici. Je vais en fait
définir une autre variable, appelez-la index. Au début, nous allons définir
l'index égal à zéro, et nous allons simplement le
définir égal à index. Et puis chaque
fois que le temps s'écoule, nous allons
augmenter Et nous allons dire si le
temps écoulé est supérieur temps de l'indice plus En d'autres termes, si
nous sommes passés au niveau supérieur, si nous avons passé suffisamment de
temps pour passer au niveau suivant, la première chose
à faire est d'
incrémenter l'index Nous allons indexer plus, en d'autres termes, l'
augmenter d'une unité. Ensuite, nous allons
dire en dessous ceci, en fait avant. Nous allons plutôt
parler de script de caméra, vitesse de la
caméra est égale
à l'indice de vitesse de la caméra. Et nous allons en fait
déplacer cela ci-dessous. En gros, ce que nous allons
faire, c'est
augmenter la vitesse des caméras d'une telle quantité Eh bien, cela va
permettre de faire la façon dont ce code va
fonctionner, comme je l'ai expliqué. Nous allons avoir
une zone de time-lapse qui va
compter à partir de zéro Nous allons avoir une
liste des vitesses des caméras et une liste des durées respectives. Et nous allons
avoir l'heure
actuelle vitesse de la caméra
et un indice actuel. Nous n'avons pas réellement besoin de cette variable temporelle actuelle. Je ne sais pas pourquoi je l'ai créé, je peux en fait supprimer
les deux ici. En gros, tout ce que nous avons
à faire est d' avoir ce flottant ici
qui indique le temps écoulé, vitesses de la
caméra, les temps,
ainsi qu'une référence
au script et un index à l'index de départ
est mis à zéro Nous avons réglé la vitesse de
notre caméra sur celle d'origine. Ensuite, tant que le temps écoulé est
supérieur à un,
l' indice est supérieur De toute évidence, dès que nous aurons
plus d'augmentation, il y
aura une erreur. Je vais ajouter un petit
code en dessous qui dit : «
Tant que nous n'atteignons pas l'index maximum et dès que nous sommes à
l'index maximum », je vais simplement
détruire complètement le script Mais d'ici là, je vais
augmenter mon compte chaque fois que le temps s'écoule est en fait supérieur à
celui qui suit Ils vont augmenter l'indice,
puis je vais régler la vitesse
de la caméra sur celle qui se trouve en dessous. Je vais dire que si l'indice
est égal à la vitesse et à la
longueur de la caméra , en d'autres termes,
si nous avons atteint le maximum, l'index fonctionnera
tant qu'il est inférieur d'un. Mais dès qu'il
en sera un de plus, c'est-à-dire que nous serons
au maximum, je supprimerai
ce script. Cela ne posera aucun
problème car lorsque nous rechargerons la scène,
elle y sera retournée Mais en gros, juste pour le
moment , parce que je
n'en ai plus besoin, je dirais de détruire l'objet du jeu, point accélérer la caméra à composants. Ou plutôt, au lieu
de Destroyer, je
dirais que les objets du jeu ne peuvent pas activer la
vitesse de la caméra à
composants Parce que je pense que détruire
pourrait en fait se débarrasser de l'objet du jeu
lui-même est faux. En gros, dès que je n'en plus, je me désactive. Et évidemment, ils seront réactivés lorsque nous
commencerons la scène Mais cela devrait en fait assez bien
fonctionner nous indiquer la vitesse de la
caméra. Passons à la caméra principale,
marquons-la en bas et réglons la vitesse de ma caméra. Au départ, je vais en mettre
quatre. Cela doit évidemment
être de la même longueur, disons qu'au bout de 2 secondes, bout de 4 secondes,
au
bout de 6 secondes, au bout de 8 secondes, je
vais passer à 123.4 Donc, nous pourrons
pratiquement tout voir Ils vont choisir
mon script de caméra. Je vais aller de l'
avant et appuyer sur Play. Et voyons exactement
comment cela fonctionne. Nous n'avons plus réellement
besoin de cette variable de caméra. Nous avons ici la
vitesse de la caméra à assigner là-bas. Cela ne
fera aucune différence. Allons-y et mettons zéro à zéro. Cela n'a pas vraiment d'importance. Alors allons-y
et appuyons sur Play. Et avant que nous ne commencions à jouer, je viens de me rendre compte que la vitesse de
la caméra
va nous être attribuée avant
que tout ne commence réellement. Nous voulons uniquement que ce vide soit créé lorsque nous
commençons réellement le jeu. Passons au public. Void Begin. Et il sera
en fait appelé par script du gestionnaire de démarrage
que
nous avons créé il y a quelque temps. Revenons ici
et créons une caméra publique pour accélérer la vitesse. Allons ici
et disons que la vitesse de la caméra commence. Sinon, la caméra
va commencer à bouger avant que nous ne commencions le jeu.
Retournons ici. Passons à mon script de
départ jusqu'à la limite. Assurons-nous d'y ajouter mon script d'accélération de la
caméra. Voyons voir si cela fonctionne. Maintenant, ce qui devrait se passer, c'est que
nous devrions avoir 4 secondes ,
la première, ou
plutôt 8 secondes, et quatre vitesses différentes
selon la durée pendant laquelle
nous jouons au T,
nous commençons le jeu, la caméra devrait toujours bouger, ce
qui, espérons-le, va
se produire. Super, je vais le désactiver
pour pouvoir expliquer. Puis à la minute
où je commence à passer, je passe d'une
ou deux secondes. Alors je devrais partir à deux heures. On dirait que l'indice est en dehors des limites, du rayon Regardons simplement
quel est le problème. Apparemment, l'indice se trouve
en dehors du rayon limite, ce qui signifie que nous
essayons de faire référence à quelque chose qui
n'existe pas ici. Regardons simplement comment
nous l'avons codé ici. C'est en fait
censé être le cas, c'est égal à la longueur de la
caméra moins une. L'indice est en fait
inférieur d'un à la longueur de la caméra si
la longueur de la caméra est de trois. Lorsque l'indice est de deux,
il n'y aura pas troisième élément ici.
Cela doit être inférieur à un. En fait, je viens de
me rendre compte que nous n'avons pas non
plus codé le fait que le script de la
caméra devrait le fait que le script de la
caméra devrait
réellement être la vitesse que
nous avons programmée ici. Nous allons partir du principe
que dès que nous
commencerons ,
il sera bien signé. Mais chaque
fois que nous faisons cela, nous voulons nous assurer
que nous respectons les délais, que la vitesse de la caméra
correspond réellement à la vitesse maximale de la
caméra. Pour cela, nous devons réellement
prendre en compte le décès. Créons une référence à l' santé de
mon joueur public, appelons-le Player. Alors allons-y
et
disons que tout ce code
ne sera exécuté que si le joueur
n'est pas mort = faux. Retournons ici. Passons ensuite à la vitesse de ma
caméra et disons que la vitesse script de
caméra est
égale à la vitesse de caméra du
script de caméra. Cela devrait en fait faire en sorte que tout fonctionne
parfaitement bien. Nous allons maintenant procéder à un nouveau test,
évidemment parce que vous
rencontrez de tels bugs à chaque fois que vous développez un jeu. De toute évidence, nous avons maintenant, espérons-le tout
réglé. Retournons en arrière. Voyons voir, la façon dont nous avons codé cela tient
compte du fait que nous n'avons pas
besoin de temps ici parce que nous ne
parlons jamais vraiment de ce moment. Nous parlons uniquement de
tant que ce nombre de secondes se sont écoulées. Allons-y donc et
apportons un autre changement. Avant cela, nous
voulons simplement prendre en compte le temps, la minute
pendant laquelle le jeu
a réellement commencé Allons-y et
disons que si nous avons besoin d' un autre lingot, disons que c'est commencé Disons que si vous avez commencé,
en d'autres termes, si nous
jouons réellement, le jeu qui a commencé ne
se réalisera qu'ici. Allons-y et examinons
le nouveau code. Il y a eu quelques
erreurs que
nous devons corriger, mais elles devraient toutes être corrigées. Revenons maintenant à notre jeu. Regardons toutes les
différentes choses que nous
avons ici dans notre nouveau script. Ce laps de temps devrait être nul avant le début du jeu Ensuite, nous devrions
pouvoir voir la caméra accélérer. J'ai presque oublié d'
attribuer des points de santé aux joueurs. Revenons ici et
attribuons cela à mon joueur, le double clic ou
plutôt le simple clic. Voyons si tout
fonctionne pour le moment. Begun est défini sur false,
comme il se doit. Désactivons le. Son. Voyons si le temps ne s'écoule
pas à la minute où nous passerons.
Le temps commence à compter. Parfait, il nous reste actuellement 1 minute, 4 secondes se sont écoulées. Nous devrions passer maintenant à deux. Il ne semble pas que
nous accélérions à nouveau. Revenons au script. La vitesse de la caméra est
actuellement réglée sur un. Maintenant, la vitesse de la caméra ne se met pas à jour, peut-être que la variable morte
est à l'origine du problème. Allons-y et voyons,
car je ne pense pas que notre index soit réellement
mis à jour. Oui, ça ne l'est pas. Notre indice reste à zéro. Revenons en arrière et voyons
si nous pouvons y remédier. La troisième fois, c'est le charme. Je pense que mort n'est pas tout. Oui, le lingot est mort. Allons-y et
changeons cela, c'est mort. C'est en fait un sprite,
je crois. Oui, c'est clairement
pour cela que ça ne fonctionnait pas. Maintenant, si nous revenons à
mon jeu ici, nous devrions pouvoir
voir la caméra
accélérer au fur et à mesure. Allons-y et appuyons sur Play pour tester si cela fonctionne réellement. Nous devrions commencer par un
temps écoulé de zéro. Le temps ne devrait pas
vraiment être
compté avant que nous commencions à jouer, ce
qui semble être le cas. Allons-y et
entrons dans le jeu. Et maintenant, nous partons
à une vitesse de un. Et il semble que cela
va rester à un, peut-être que ce sera une augmentation de deux, pas une augmentation de trois, et
une augmentation de quatre. Évidemment, nous pouvons voir
le jeu s'accélérer façon
assez drastique,
ce qui est plutôt cool. Au fur et à mesure que nous
accélérons la caméra, ces choses s'éloignent de plus en plus. En fait, ils ne
s'éloignent pas, mais ils deviennent plus fréquents. Mais j'espère que
cela donnera au jeu un
aspect un peu plus évolutif. De toute évidence, il est un peu plus difficile de suivre le rythme
de la caméra, et si vous ne le faites pas,
vous mourrez évidemment. Ce que vous allez
devoir faire, c'est modifier ce que vous
voulez qu'ils soient. Je vais le régler sur 1.8 au début,
comme nous l'avions fait. Ensuite, je pense que je
veux régler sur 2,2 0,4. Ensuite, je
vais essentiellement l'incrémenter
beaucoup Je vais faire
dire à dix d'entre eux qu'à partir de 2,4, nous pouvons passer à 2,6 puis à 2,62 0,82 0,83, puis nous
allons passer à 3,23 points, 4,3 0,6. Et je pense que ce devrait être au maximum 3,6 après avoir joué
pendant Réglons donc le temps écoulé. Cela ne devrait changer qu'après environ 20 secondes, 30 secondes, 40
secondes, 50 secondes. Et je dois
dire que vous atteignez vitesse
maximale après avoir joué
pendant environ 100 secondes. Et je veux dire, vous n'êtes pas
obligé d'utiliser ces valeurs exactes. Ce sont peut-être
ceux que je vais utiliser, mais je pense qu'ils
devraient très
bien fonctionner compte tenu de la façon dont nous avons
joué au jeu jusqu'à présent. Voyons donc si
cela
fonctionne réellement et semble naturel
pour le début. Au moins,
désactivons le son. Il suffit de voir
que nous avons
la même vitesse à laquelle nous nous sommes toujours habitués. Et puis 20 secondes
, la vitesse devrait augmenter
de plus en
plus, ce qui est cool. C'est donc la première étape
que nous devons faire pour obtenir le résultat final que nous devons apporter
à notre jeu La deuxième chose, c'est le post-emballage. Heureusement, j'espère que c'est
beaucoup moins de codage
et beaucoup plus facile. Commençons par créer
un objet de post-traitement. Et nous allons passer au Gestionnaire de
packages Windows dès maintenant. Nous allons trouver
ce colis de post-emballage. Ce que vous devez faire, c'est
accéder aux packages que vous pourriez
avoir dans l'ensemble de projets. Allons donc dans le registre
Unity et trouvons cet objet de
post-traitement. Ensuite, vous allez
cliquer sur Installer. Cela va
installer cette pile ou ce package dans votre projet. Ça va dire « installer ».
Cela peut prendre un certain temps, en fonction de la vitesse de votre
ordinateur et/ou de votre Wi-Fi. Mais après cela, l'installation est
terminée. Vous pouvez voir que vous aurez
cette fenêtre contextuelle ici, alors tout devrait se charger. Maintenant, ce que permet cette
pile de post-psing, je vais en fait me débarrasser du rideau de l'éditeur Nous utilisons ce
bouton. Cela n' affectera pas le
jeu, ce qui est cool. J'aurais dû le faire plus tôt. Quoi qu'il en soit, cela nous
permettra
en fait ajouter des
effets visuels à nos jeux. Passons d'abord à cet objet de post-pose que
nous avons ici. La première chose à
faire est d'aller sur mon appareil photo et je dois ajouter une couche de
post-traitement. Tapons les articles, nous verrons si vous avez toutes
ces nouveautés. Cela peut prendre un certain temps
pour tous les charger, mais nous avons un débogage dont nous n'allons pas nous
préoccuper Nous avons une couche,
nous avons un volume. Attendez juste qu'il soit rechargé. Ensuite, revenons ici
et ajoutons une couche à la caméra. Vous pouvez maintenant laisser
pratiquement tous ces paramètres tels quels, sauf que vous
devez évidemment choisir une couche
qui sera affectée
par le post-psing, comme dans nos effets
spéciaux Je vais passer à autre
chose et créer une nouvelle couche, c'est un tag. Je vais créer une nouvelle couche, je vais
l'appeler post-traitement. Accédez à mon post et
assurez-vous qu'il se trouve sur cette couche. Je vais passer à ma caméra
principale et je
vais configurer ma caméra principale pour qu'elle
soit cette couche de post-traitement laquelle
tout devrait fonctionner. Je vais laisser les
autres tels quels pour le moment. Je vais maintenant accéder à mon objet de
post-traitement ici et
ajouter un volume de post-traitement. Cela va me permettre
de modifier essentiellement mon jeu. En fait, je vais le désactiver
maintenant pour pouvoir le voir,
car vous ne pouvez voir que le
post-traitement dans le jeu Je vais pouvoir ajouter tout
un tas d'effets spéciaux vraiment
sympas, vous pouvez jouer avec eux. Pour être honnête, je ne suis pas le plus
doué pour m'en servir. Il s'agit essentiellement
d'éditer son noyau. Vous allez avoir tout
un tas de paramètres
différents
et évidemment, plus vous
serez performant
en retouche photo et en post-édition, je suppose que le montage vidéo, tout cela
va être lié à cela J'ai quelques astuces
que j'utilise pour mes jeux, mais je ne suis pas très
expérimenté dans ce domaine. Quoi qu'il en soit, c'est assez
facile à apprendre, tout comme pour les systèmes de particules, vous devez commencer par
créer un nouveau profil. Ensuite, vous pouvez commencer à
ajouter un effet. Passons à Unity et
ajoutons Bloom. C'est l'
effet préféré de la plupart des gens. Maintenant, avant de
pouvoir en voir l'
effet, nous allons devoir
cocher cette case est globale. Ensuite, vous pouvez voir
que vous allez augmenter l'intensité
de la floraison. Vous pouvez voir que le jeu
devient brillant, évidemment, nous ne voulons pas
qu'il en soit ainsi. Mais vous pouvez voir si
vous avez quelque chose comme zéro ou si vous avez quelque chose comme 0,30 0,5 pair Cela rend le jeu un
peu plus beau. Ce n'est peut-être pas facile
à voir dans la qualité vidéo, mais évidemment,
lorsque vous passez à 0,7 ou 0,8, vous pouvez voir le jeu
prendre vie un peu. Je veux fixer le mien à 20,8,
ce qui est assez élevé, mais je vais le
laisser là pour le moment Je vais baisser légèrement
le seuil ou plutôt le
relever. Vous pouvez voir qu'au fur et à mesure que j'
augmente l'intensité, certaines choses sont affectées,
mais je trouve que ça a l'air plutôt cool pour le moment. Un seuil assez élevé.
Mais ensuite, je vais
aussi avoir un
Bloom assez haut Réglons-le sur deux, juste pour vérifier s'il
fait réellement quelque chose. Vous pouvez
cliquer dessus pour l'activer ou le désactiver. Mon seuil est
peut-être un peu élevé, fixé à 1,2. Vous pouvez voir maintenant que vous pouvez constater une
légère différence. Je vais m'en tenir à
cela pour le moment. Je vais ajouter un nouvel effet. La prochaine chose que je vais
ajouter sera une vignette ou une vinette Je ne suis pas sûr, c'est juste un
noircissement sur les bords. Je vais donc en ajouter un
tout petit peu sur les côtés, pour que mon
jeu soit un peu plus encadré. Ensuite, je vais
ajouter un étalonnage des couleurs. C'est une question incroyablement
complexe. habitude, je ne l'utilise pas
trop dans mes jeux, mais je vais définir la plage de
basse définition car elle
semble préférer cela Ensuite, je vais simplement
continuer et je peux évidemment modifier ma température, ce que je ne vais pas
vraiment faire. Laisse ça comme ça pour le moment. Je pourrais le faire -0,1 juste pour voir si cela fait
une quelconque différence Vous pouvez voir une petite
différence, mais je vais le
faire à 0,2. Ensuite, je peux évidemment ajouter un
filtre de couleur si je le souhaite. Je n'ai pas vraiment envie de
faire ça, pour être honnête. Mais si je le voulais, je pourrais
ajouter un filtre, pourrait rendre un jeu un peu
plus sombre si je le voulais, mais je vais laisser
cela de côté pour le moment. Ensuite, vous pouvez également modifier
des éléments tels que la luminosité,
évidemment, comme je l'ai
mentionné, vous le pouvez. Je vais rendre le premier jeu plus lumineux et je vais
en fait
modifier le contraste juste une
petite partie de mon jeu. Faites-en moins deux
ou moins trois. Juste pour clarifier les choses, moins
cinq devrait être une bonne chose. Voici les trois effets
que j'ai utilisés jusqu'à présent. Il y en a en fait
tout un tas ici que vous pouvez utiliser en fonction de ce que
vous voulez pour votre jeu. Vous pouvez ajouter du
grain, par exemple. Peut-être que tu peux voir à
quoi ça sert. Ce n'est évidemment pas l'
effet que je recherche, mais si vous le vouliez, vous le pourriez. Je suppose que les très gros grains peuvent sembler cool selon le style
que vous recherchez si vous créez un jeu rétro. Mais je ne vais rien faire d'autre que ce que j'ai fait jusqu'à présent. Vous devriez pouvoir voir cela prendre effet, vous pouvez
voir la différence. Et il suffit de rendre le jeu un peu meilleur, à mon avis. En fait, je vais augmenter légèrement
la floraison. Je vais réduire légèrement mon
étalonnage des couleurs. Je ne
veux pas vraiment que ma luminosité soit aussi efficace qu'elle l'était. Hum, je ne suis pas sûr que l'étalonnage des couleurs
soit un bon changement. Je pourrais même
le supprimer complètement. Mais comme je l'ai dit, vous pouvez les
contourner
autant que vous le souhaitez. Et vous pouvez voir maintenant,
si je
réactive mon rideau
et que je joue à mon jeu, je peux maintenant voir quel est mon jeu Sky Miner
terminé Il s'agit de la plateforme
intermédiaire que nous avons créée ces dernières semaines ou quelle que soit la durée pendant laquelle vous avez suivi le
cours. Nous pouvons voir, évidemment, tout semble un peu plus beau maintenant. Et puis, lorsque nous intervenons,
les choses s'enchaînent. Et nous pouvons voir le développement
complet de ce jeu terminé, ce qui est plutôt cool, surtout s'il s'agit de
l'un des premiers jeux que
vous avez créés dans Unity. J'ai l'impression d'être mort. C'est l'un des premiers jeux que
vous avez créés dans Unity. C'est impressionnant d'avoir pu
réaliser tout cela. Si vous avez
tout fait et tout fonctionne comme si rien n'était, alors c'est vraiment
génial et bon travail pouvoir
suivre comme ça. Dans la prochaine vidéo,
nous allons
créer et
exporter ce jeu. Et ce n'est même pas
vraiment une vidéo. C'est juste moi qui
vous montre comment
l'intégrer à un projet afin de
pouvoir y jouer correctement. Mais pour le moment, nous avons pratiquement tout
terminé
pour ce jeu. Si vous me suivez
et que tout
fonctionne comme si c' était le cas
, j'espère que c'est le cas. Et j'espère que vous avez
pu apprendre beaucoup de choses
en créant ce jeu. Et peut-être que vous pouvez même
le transformer en un jeu que vous
souhaitez publier sur mobile ou
PC ou quelque chose comme ça Mais pour l'instant, excellent travail d' avoir suivi le
cours jusqu'au bout. Et félicitations pour
la création de votre jeu. Merci.
19. 18. Créer et exporter: Bonjour, et bon
retour sur Unity. Maintenant, nous avons presque terminé. Eh bien, en fait, nous avons
complètement terminé notre jeu de
plateforme intermédiaire Sky Miner derniers temps, nous avons passé d'innombrables
heures ou minutes, selon la rapidité avec laquelle vous avez
pu visionner
toutes les vidéos, à
créer ce
que nous avions
devant , ce
qui est
vraiment très cool, nous, ce
qui est
vraiment très cool, car nous avons pu
créer un jeu comme celui-ci, probablement pas si longtemps. Comme je l'ai dit dans la dernière vidéo, félicitations
pour être arrivé jusqu'ici. Et si vous avez réussi
à atteindre la fin du
cours comme celui-ci et votre jeu fonctionne comme mien, alors excellent travail. Et c'est vraiment
impressionnant, surtout s'il s'agit de l'un de vos premiers jeux auxquels vous jouez Unity. Mais même s'il ne s'agit pas de
créer un jeu Unity, importe quel jeu en général est
une récompense en soi,
surtout s'il s'agit de
sprites, de musique, de mise à l'échelle, de
difficulté et de génération aléatoire Tout cela est une réussite plutôt
cool. C'est tellement bien fait. Maintenant, nous
devons encore être capables de créer le jeu parce que nous ne
pouvons pas vraiment dire, oh oui, regarder mon
jeu et
charger Unity chaque fois que nous voulons le montrer
à quelqu'un. Nous devons donc pouvoir
exporter ce jeu un fichier afin de ne pas avoir
à y jouer dans l'éditeur. Ce sera le
but de cette vidéo. Je vais juste vous montrer rapidement comment
exporter votre jeu et y
jouer dans une énorme fenêtre en
plein écran. Ensuite, je vais
terminer le cours Pendant que je joue au
jeu en arrière-plan,
remontons en haut de
la page et cliquons sur Paramètres de création de fichiers. Et c'est ici que
vous allez modifier l'intégralité de l'
aspect kind building du jeu. Maintenant, je ne vais pas entrer dans les détails de
chacun d'entre eux, car si vous cliquez sur Play A Sets, vous pouvez voir
combien il y en a réellement. Il y a tout ça.
Il existe une gestion des préréglages. Eh bien, en fait, ne l'
oubliez pas. Il y a une icône que
vous pouvez modifier ici, il y a la résolution,
il y a une image de démarrage, qui se joue
en quelque sorte au début du jeu. Ensuite, il y a tout un
tas d'autres paramètres que vous ne
devriez vraiment pas trop manipuler, surtout si vous ne
savez pas vraiment ce que vous faites Parce que, eh bien, ils
peuvent ruiner le jeu. Mais pour l'instant, tout ce que
nous allons faire est de les laisser par défaut. C'est la
plateforme pour laquelle nous
allons construire. Si vous souhaitez le remplacer
par un jeu Andro, il vous suffit d'
installer le module et de cliquer sur Changer de plateforme. Et il fait beaucoup
de choses pour toi. Mais nous allons créer
notre jeu pour ordinateur. Aucune des scènes de
ces joueurs ne va nous inquiéter pour le moment. Mais vous pouvez évidemment tout
changer. Ils seront
intégrés à l'application. Vous pouvez donc changer le
nom de votre entreprise, le nom du produit. Je peux passer à Sky
Miner si je le souhaite. Et je peux changer l'icône, le curseur et à
peu près tout le reste ici. Comme je l'ai dit, ne filtrez pas
trop avec ces autres paramètres, sauf si vous savez ce que vous
faites ou si vous l'avez recherché sur Google. Mais ceux d'
ici, tu peux quelque sorte faire ce que tu veux. Vous pouvez modifier l'icône. Vous
pouvez modifier la résolution. Et vous pouvez également modifier
l'image de démarrage Comme je l'ai dit, si nous cliquons sur Aperçu, nous
pouvons la voir réellement. C'est une image que
Unity affiche lorsque vous lancez un jeu comme celui-ci
, et je suis vraiment content. Je pense que tout va bien pour le moment. Je vais donc laisser
ces paramètres par défaut et
commencer à créer mon jeu. Nous le construisons pour 64 bits et
je vais cliquer sur Construire. Bill va
ouvrir l'explorateur de fichiers. Je peux choisir où
placer mon jeu. Maintenant, c'est le dossier
où se trouve l'intégralité de mon projet, je vais
donc
créer un nouveau
dossier dans cet appel qu'il construit. Et je vais
double-cliquer dessus
et m' en servir comme dossier
pour créer mon jeu. Et cela va
lancer ce processus création
complète de mon jeu. Maintenant, cela prend un certain temps, surtout en fonction de
la vitesse de votre ordinateur. Mais en général, il s'agit d'un processus
assez intensif. Attendez, cela devrait
prendre 1 à 2 minutes, selon l'ampleur de
votre projet. Pour moi, cela ne prendra peut-être pas trop de temps car ce
n'est pas un très gros jeu. Mais comme je l'ai
dit, en fonction de votre projet et de
tout le reste, ainsi que de
tous les articles que nous avons ajoutés, compilation peut prendre un
certain temps. Asseyez-vous ici et ne
touchez pas trop à votre ordinateur, car
il exécute actuellement un
certain nombre de processus. Maintenant, au bout d'un moment,
l'esprit a pris 65 secondes. Vous devriez avoir ce
fichier ici, qui est créé avec
le nom de votre projet. Et il s'agit en fait du fichier exécutable
que vous pouvez utiliser pour exécuter votre jeu si vous
allez ici pour le compiler. Si nous double-cliquons sur ce fichier, nous allons réellement
charger notre jeu. Avant de le faire,
je tiens juste à dire que la première
fois que vous chargerez le jeu, vous pourriez avoir des problèmes de rapport
hauteur/largeur. Par exemple, en fait, si
je devais le charger maintenant, je suis presque
certain que je
me laisserais simplement le tester et voir. Parce que c'est la dernière
chose que nous devons corriger pour notre jeu. Et
bien sûr, voilà. Nous avons certaines choses
qui ne sont pas exactement là où elles devraient être.
Passons au jeu. Et la façon dont nous allons
résoudre ce problème est de choisir un aspect
ici, 1920 par 1080. Et je vais aller de
l'avant et me débarrasser de mon rideau juste
pour voir les choses. Cela va me permettre de tout
redimensionner et de le déplacer, afin que ce soit exactement dans l'
orientation que je souhaite Je vais les déplacer
sur le côté comme ça. Ça devrait être une bonne chose. Je vais déplacer ce cloud là-bas. En fait, je pense que je pourrais
également avoir besoin d'augmenter le spawn à
temps pour le début Je vais plutôt en
faire 20. Maintenant, je dois évidemment également en
augmenter
la taille. Les cœurs et les
diamants sont désormais de la mauvaise taille en pixels. Allons-y et
augmentons-les un peu. Voyons juste où
nous les avons trouvés. En fonction de votre
ordinateur et que vous avez suivi,
c'est exactement ce que j'ai fait. Vous pouvez
avoir ce problème ou non, il se trouve que votre ordinateur peut-être pas le cas. Cela dépend vraiment. Mais comme je l'ai dit, si
vous allez dans le jeu et que vous modifiez ce
paramètre ici, vous pouvez créer le jeu en quatre résolutions
différentes. Je le construis pour 1920 x 1080
en ce moment. Permettez-moi de m'
assurer de le réciter correctement, juste pour avoir
une vue d'ensemble Ce n'est même pas près. Récentons-le un
peu plus. Voyons voir. Je dirais que c'est plutôt bien. Allons-y et
remettons-le là où il était en haut ici. Mets ça ici aussi. Ensuite, allons à mon comptoir. Déplacez-le là et
agrandissez-le également un peu. Ça devrait être une bonne chose à ce sujet. Maintenant. Nous allons évidemment
devoir également tester
nos animations d'interface utilisateur
puisque nous les avons déplacées. Voyons donc à quoi ils ressemblent. Fade in, oui, ce ne sont évidemment pas les bonnes positions
maintenant, donc nous allons juste
devoir définir les positions de départ
là-bas et là-bas. Et puis il va falloir que
les
positions s'estompent ici. Et ici, ça devrait
être une bonne chose pour le moment. Assurons-nous simplement d'
avoir les mêmes paramètres, 880 et moins 772
pour le statique, que nous devrions pouvoir
voir si nous y jouons maintenant Et puis, hors de vue
n'a pas vraiment d'importance, mais ils doivent évidemment être
hors de vue. Allons-y et
déplaçons-les également. Maintenant, ce processus de mise à l'échelle
du jeu prend un certain temps. Il y a une chance que nous en ayons fini ici, il y a une
chance que ce ne soit pas le cas. Mais la seule façon de le faire
est de le compiler, de le
réexécuter et de le tester pour voir si nous avons d'autres problèmes ou si nous devons corriger quoi que ce soit
d'autre. Voyons voir, maintenant nous le chargeons. En fait, ça a l'air
plutôt bien jusqu'à présent. Nous pouvons cliquer sur ces boutons et tout
semble fonctionner. Mon pilote graphique
pense que c'est un jeu, et je suppose que c'est le cas.
Vous pouvez voir là-bas. En fait, tout
semble bien fonctionner. Dans mon cas, la
seule chose que j'ai besoin changer, c'est ce paramètre, et le reste de mon
jeu
fonctionne vraiment très bien, ce qui
est plutôt cool. Comme je l'ai dit, vous pouvez être
différent en fonction de la mesure dans laquelle vous avez modifié votre ratio hauteur/largeur et de la mesure dans laquelle vous avez suivi. Mais c'est plutôt cool
que ce genre de jeu soit si facile
à créer. Je veux dire, évidemment, ce n'est pas facile et plus
vous codez, difficile, plus c'est facile. Mais pouvoir faire quelque chose
comme ça sans être développeur
trop expérimenté est
plutôt cool à mon avis. Je veux juste dire un énorme. Merci de
soutenir mon cours avoir acheté et d'
avoir créé ce jeu. J'espère que vous êtes vraiment satisfait de ce que vous avez
pu accomplir et que vous avez beaucoup appris tout au long du processus. À tout moment, si vous
avez besoin d'aide pour bug ou problème lié à
votre jeu,
vous pouvez utiliser n'importe quelle forme
de discussion sur cette page de cours ou le
laisser dans une critique, comme vous voulez faire de toute façon. Merci encore une
fois d'avoir acheté ce cours et j'espère
que vous êtes vraiment satisfait de ce que vous avez
pu réaliser. n'y a pas de prochaine vidéo, je ne pourrai pas
vous dire ce que nous allons faire ensuite, mais j'espère que si vous
décidez de développer jeux vidéo en tant que hobby ou
même en tant que carrière, vous serez en mesure de créer quelque chose
de vraiment cool. Merci encore d'avoir
acheté ce cours, et j'espère vraiment que vous
ne l'avez pas apprécié. Bravo.