Développement d'Unity - Créez votre premier jeu de plateforme ! | Tirion Learning | Skillshare
Recherche

Vitesse de lecture


1.0x


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

Développement d'Unity - Créez votre premier jeu de plateforme !

teacher avatar Tirion Learning, Software Engineer

Regardez ce cours et des milliers d'autres

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

Regardez ce cours et des milliers d'autres

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

Leçons de ce cours

    • 1.

      Bande-annonce du cours

      0:46

    • 2.

      Leçon 1 - Mettre en place notre scène

      15:24

    • 3.

      Leçon 2 - Créer notre personnage

      8:00

    • 4.

      Leçon 3 - Ajouter du mouvement du joueur

      24:28

    • 5.

      Leçon 4 - Présentation des préfabriqués

      20:10

    • 6.

      Leçon 5 - Générer notre carte

      32:06

    • 7.

      Leçon 6 - Ajouter des sprites

      24:52

    • 8.

      Leçon 7 - Animer nos personnages

      22:04

    • 9.

      Leçon 8 - Ajouter des ennemis plus intéressants

      21:30

    • 10.

      Leçon 9 - Présentation de la détection de coups

      19:14

    • 11.

      Leçon 10 - Ajouter la santé des joueurs

      18:11

    • 12.

      Leçon 11 - Présentation de pierres précieuses

      25:11

    • 13.

      Leçon 12 - Créer une boucle de jeu

      16:05

    • 14.

      Leçon 13 - Sauver notre jeu

      6:42

    • 15.

      Leçon 14 - Améliorer les visuels

      41:09

    • 16.

      Leçon 15 - Créer un centre de départ

      22:16

    • 17.

      Leçon 16 - Ajouter des effets sonores et de la musique

      28:45

    • 18.

      Leçon 17 - Touches finales

      20:47

    • 19.

      Leçon 18 - Créer et exporter

      7:51

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

Généré par la communauté

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

281

apprenants

6

projets

À propos de ce cours

Bonjour, et bienvenue dans mon cours sur la création de votre propre jeu de plates-formes dans Unity !

Dans ce cours, nous allons développer un jeu de plateforme intermédiaire à partir de zéro et apprendre toutes les bases de la création de jeux ! Nous allons utiliser Unity et C # pour développer notre jeu, et nous allons couvrir tout ce que vous devez savoir pour vous lancer dans le développement de jeux, des bases du codage à toutes les spécificités de notre moteur de jeu.

Au cours des dernières années, j'ai créé et publié plusieurs jeux pour les mobiles, les applications Web et les plates-formes PC, entièrement sur mon propre. Aujourd'hui, grâce aux compétences que j'ai acquises, j'ai créé ce cours parmi plusieurs cours complets couvrant les bases du game design, dans l'espoir que vous puissiez facilement entrer dans le monde du développement de jeux en suivant l'un de ces cours !

D'après mon expérience, le développement de jeux peut être assez intimidant pour les débutants, et courir des problèmes, et passer des heures, voire des jours, à rechercher sur le Web des moyens simples de les surmonter peut être un peu démotivant. J'ai donc créé ce cours, qui couvre tout ce que j'aurais aimé savoir quand j'ai commencé le développement de jeux, de sorte que le processus soit beaucoup moins fastidieux pour vous, quelle que soit votre expérience antérieure.

Après avoir terminé ce cours, vous aurez acquis toute l'unité et le C # dont vous avez besoin pour commencer à créer vos propres jeux et applications par vous-même ! Vous apprendrez également plusieurs notions de design de jeu plus avancées, telles que la génération de cartes, la gestion audio, l'animation de sprite, et bien plus encore !

Ce cours couvrira tout ce que vous devez savoir pour commencer à créer vos propres jeux dans le moteur Unity, que ce soit pour le mobile, le PC ou toute plateforme !

Si vous choisissez de vous inscrire, vous apprendrez des compétences précieuses et recherchées et vous vous amuserez. J'espère avoir le privilège de vous enseigner.

Passez une bonne journée ! : )

Rencontrez votre enseignant·e

Teacher Profile Image

Tirion Learning

Software Engineer

Enseignant·e
Level: All Levels

Notes attribuées au cours

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

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

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

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

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

Transcription

1. Introduction: 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.