UE4 pour les débutants : Créer une plateforme en 2D avec Unreal Engine 4 | Dev Enabled | Skillshare

Vitesse de lecture


1.0x


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

UE4 pour les débutants : Créer une plateforme en 2D avec Unreal Engine 4

teacher avatar Dev Enabled

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.

      01 - Introduction du cours

      2:22

    • 2.

      02 - Configuration du projet

      9:39

    • 3.

      03 - - de joueur

      18:05

    • 4.

      04 - Textures

      7:08

    • 5.

      05 - Flipbooks

      13:27

    • 6.

      06 - TileSets

      6:22

    • 7.

      07 - TileMaps

      10:06

    • 8.

      08 - Configuration de l'animation des joueurs

      14:37

    • 9.

      09 - Améliorations de l'animation des animations des joueurs

      11:10

    • 10.

      10 - Santé des joueurs

      10:39

    • 11.

      11 - Widget de santé des joueurs

      16:30

    • 12.

      12 - Base de ennemies

      8:28

    • 13.

      13 - Bats Enemy

      9:01

    • 14.

      14 - Mouvement de bats enemie

      8:43

    • 15.

      15 - Changement de direction de la bats Enemy Bat Bet

      17:14

    • 16.

      16 - Dommages

      24:57

    • 17.

      17 - Mort de joueurs

      12:53

    • 18.

      18 - Base interactive

      10:35

    • 19.

      19 - Santé interactive

      9:07

    • 20.

      20 - Spring interactif

      9:00

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

853

apprenants

3

projets

À propos de ce cours

Commencez avec l'UE4 en apprenant à créer un jeu à partir des genres classiques de la plateforme de la 2D.

- Apprenez à utiliser le système Paper2D intégré à Paper2D

- Voir certains des avantages de tirer parti de l'utilisation de l'UE4 pour les jeux 2D

- Couvrez les bases de la programmation d'un personnage de joueurs, de vos ennemis, pick-ups, et plus encore.

Rencontrez votre enseignant·e

Teacher Profile Image

Dev Enabled

Enseignant·e
Level: Beginner

Notes attribuées au cours

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

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

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

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

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

Transcription

1. 01 - Introduction du cours: Tout le monde, et bienvenue à ce bref aperçu de la section des vidéos. Ce que nous allons chercher à faire un jeu de plateforme 2D à l'intérieur de l'Unreal Engine. Unreal est connu comme étant une sorte de moteur puissant, lourd, basé sur 3D, mais il a des fonctionnalités uniques et des outils très puissants qui nous permettent également de réaliser ces projets 2D à l'intérieur d'Unreal. Avoir un exemple ici de certains dans quels projets sur certains projets complets qui ont été réalisés à l'aide de l'Unreal Engine, en utilisant le système d'animation pré-construit et certains des outils de conception de niveau qui viennent pré-emballés avec Unreal. Certaines des raisons que vous pourriez vouloir utiliser ce type de moteur 3D focalisé pour faire un jeu comme celui-ci que vous pouvez voir en arrière-plan. Unreal est livré avec un éclairage puissant vers vous pouvez certainement mettre en œuvre les effets d'éclairage, comme vous pouvez le voir dans certains des jeux ont construire à partir de choses comme les normales et obtenir que la qualité de surface réfléchissante normale que vous serait s'attendre à voir dans d'autres jeux 3D. Vous avez aussi des choses comme le voyageur ApiPath, qui a été fait à nouveau à l'intérieur d'Unreal. Et c'est tirer parti d'un peu du meilleur des deux mondes et de créer un jeu un peu unique qui n'a pas vraiment été vu auparavant, où c'est une sorte de jeu 2.5 D où le monde est 3D, mais tout fonctionne hors de 2D animations pour se lever rarement sentiment original JPEG, mais l'amener à une sorte de public moderne et revitalisé ici. D' autres jeux utilisent très similaire 2.5, le monde 3D, mais aussi des animations 2D. Tout ce que nous avons des jeux comme vous l'avez vu, qui est purement 2D et nous allons regarder dans ce cours comment nous pouvons commencer à comprendre comment tirer parti de certains de ces systèmes pour faire des jeux similaires. Pour ce faire, nous allons travailler à partir d'un projet vide et nous allons mener à ce genre de type d'approche complète tranche verticale d'un jeu de plateforme 2D, pleine largeur, un joueur, animations de joueur une IA ennemie de base, automatisée aussi. Nous aurons différentes classes insolubles telles que les ressorts et le ramassage de santé. Nous avons donc un système de santé complet et tout cela se fera en mettant l'accent sur un code directeur propre, structuré et maintenable. Et la création de ce jeu prototype très simple va nous permettre de regarder toutes les fonctionnalités qui entrent dans les systèmes 2D, telles que le système d'animation flip book, jeux de serviettes et les cartes de tuiles, qui seront un vue d'ensemble du système de peinture de niveau intégré fourni avec le moteur Unreal Engine par défaut. Donc, j'espère que ces sujets et intéressant pour vous, et je suis impatient de vous voir dans le reste de ces vidéos. 2. 02 - Configuration du projet: Pour essayer de gagner un peu de temps à tout le monde, je vais juste passer en revue un bref aperçu de ce que j'ai ici. J' ai donc créé un tout nouveau projet. Je ne vais pas passer par nos pas. Je suppose que vous avez une certaine expérience avec l'Unreal Engine. J' ai des choses installées et lancez votre projet. Donc, le projet que j'ai ici cependant, si vous voulez suivre exactement, est une base de plan, projet complètement vide, donc aucun contenu d'étoiles ne sera nécessaire ici. Les paramètres de qualité ont été définis pour le bureau, définis sur la qualité la plus élevée. Donc, il devrait être assez bon même si nous travaillons avec les actifs 2D. Et moi avant de sauter et de faire bouger les choses et d'obtenir notre configuration de classe et d'apporter des textures et toutes ces bonnes choses pour le jeu. Je voulais juste passer par quelques étapes de ménage que j'ai tendance à prendre dans tous les nouveaux projets que je crée. Donc il va y avoir quelques choses que je voulais mettre mon projet à faire juste pour la commodité et je ne voulais pas d'auto-dépistage cas, vous suivez le long. Je voulais les mêmes résultats. Donc, la première chose que j'ai tendance à faire est que nous pouvons voir comment si nous ouvrons un nouveau Blueprint ou asset par défaut, cela s'ouvrira dans une sorte de fenêtre flottante qui peut devenir un peu ennuyeux. Je préfère que tout soit ancré ici en haut de mon écran. Donc, il a ce résultat. Je vais vous montrer ce qu'on a en ce moment. Nous avons un plan que nous pouvons utiliser ici, qui est le gratte-ciel. Et vous pouvez voir en fait que cela n'a pas ouvert d'outil. C' est sur ma deuxième fenêtre sur extraire cette idée d'un. Et comme je l'ai dit, nous avons cet écran flottant. Si on veut ça, on doit faire glisser ça vers le haut et on devra le faire pour chaque nouveau plan ou actif que l'on voulait ouvrir. Donc idéalement, je voudrais qu'ils stockent tous ici par défaut. Je vais donc aller à la Modifier, Modifier les préférences. Et puis juste ici, nous pouvons voir l'éditeur d'actifs ouvrir l'emplacement changer que par défaut. Et ils changeront ça à la fenêtre principale. Vous avez beaucoup d'options différentes ici aussi si vous le vouliez. Mais je préfère que ce soit juste la fenêtre principale par défaut. Donc, cela signifie que si nous n'avons rien ouvert d'outil, nous pouvons cliquer à nouveau et nous pouvons voir que le plan de planification alimenté par le ciel est maintenant ouvert exactement où je le voulais. Donc ça va être la première chose que j'ai tendance à changer. Ensuite, il y a juste quelques autres petits problèmes que je trouve avec le projet par défaut. C' est donc un peu difficile à voir dans l'enregistrement. Je sais que je l'ai déjà essayé, mais vous pouvez voir en zoomant ici, le sol semble passer d'une sorte de gris plus foncé à un gris plus clair. Et la même chose se produit si on appuie sur Démarrer et qu'on regarde autour de lui. On peut voir une adaptation avec l'éclairage ici. Maintenant, c'est l'exposition automatique est d'essayer de recréer ce que les yeux font généralement lorsque vous passez d'une lumière à un environnement sombre ou vice versa. Et c'est une chose très utile à avoir sur, mais généralement comme quelque chose que vous allez vouloir contrôler dans un effet post-processus ou 30 caméra directement. Et ce que cela peut conduire, c'est que vous pouvez commencer créer quelque chose dans l'Odessa qui vous semble plutôt cool. Et puis quand vous appuyez sur Play, les couleurs vont sembler saturées et laver la nuit. Donc, pour éviter que cela se produise, nous allons avoir essentiellement ce que nous voyons dans l'éditeur être exactement ce que nous voyons quand nous appuyons aussi sur Play, moins que nous ne remplacions cela manuellement dans certains de ce système de post-processus. Donc, il est choisit cela, nous pouvons aller à Paramètres du projet, nous allons aller à l'auto ou simplement chercher l'exposition de tout temps. Donc Auto III, on parlera de ça. n'y a pas d'autres résultats ici. Donc l'exposition automatique est ce que nous cherchons à désactiver. Et ça veut dire que si on y retourne, même si on se rapproche, on peut voir qu'on n'aura pas sol de couleur plus foncée, car ce n'est pas ce qu'on va voir dans le jeu. Donc, si nous appuyons sur Play, ce sera maintenant exactement le même que dans l'éditeur. Donc, nous savons maintenant que si nous voulons notre monde à Dhaka quand il vous touche, mettez à jour cela dans notre fenêtre juste ici. Ensuite, nous voulons juste une partie de notre configuration de la structure de dossiers. Donc, si nous le faisons maintenant, nous pouvons sauter et commencer à ajouter des plans, à apporter des actifs, à mettre en place des matériaux, et toutes ces bonnes choses quand nous en avons besoin. Et nous n'avons pas besoin de nous soucier de la structure de notre projet. Parce que généralement nous savons que nous allons avoir une structure très similaire pour presque tous les projets que nous les travaillons. Donc, ce que je vais faire est dans le dossier de contenu, qui est notre dossier racine, je vais créer un nouveau dossier nommé assets. Donc, ce sera là où toutes nos choses externes, textures, modales, quelque chose comme ça, que nous pourrions apporter, les effets secondaires iront à l'intérieur de ce dossier. Maintenant, pour cette série de vidéos, je sais que nous allons avoir besoin de différents types de fichiers. Nous allons travailler avec des textures, des sprites, des flip books et différents éléments de tuiles. Donc, je vais créer un dossier pour chacun d'entre eux. Le raccourci, en passant, si vous voulez récupérer nouveau dossier est Contrôle Shift et Entrée lorsque vous êtes sélectionné à l'intérieur du dossier, vous voulez que ce soit un enfant de. Et cela devrait le faire pour les actifs pour l'instant. Si nous finissons par ajouter autre chose, nous pouvons toujours revenir et ajouter un nouveau dossier plus tard. Ensuite, à l'intérieur du dossier de contenu aura également un dossier Blueprints. Et encore une fois à l'intérieur du dossier de contenu, nous pourrions également faire avec un dossier de cartes. Maintenant que nous avons le dossier de cartes, nous pouvons également aller de l'avant et enregistrer cela sur cette carte serrée que nous pouvons voir a sans titre et nous pouvons appuyer sur Control ns, placer ceci à l'intérieur du dossier de cartes, et nous allons juste appeler ce Main . Et ce sera notre carte principale à partir de laquelle nous travaillerons pour le reste du projet. Cela nous permet également de faire autre chose, qui est de définir certains paramètres par défaut du projet. Et nous y reviendrons dans un instant. Fondamentalement, nous voulons que ce soit la carte que nous chargeons dès que nous fermons et rouvrons le projet. Avant de faire cela, nous pouvons également définir certains des autres paramètres par défaut tels que le personnage qui contrôlera et Game, et aussi le Mode Jeu qui contrôle les différents contrôleurs, les personnages, et des choses comme ça, qui sera généré, et la logique en jeu qui sera un peu suivi si nous avons des choses comme les pickups, scores ou tout type de système objectif. Si vous vouliez développer ce projet, je l'emmène plus loin par vous-même. Donc pour faire ça, je vais aller dans le dossier Blueprints. Nous allons créer un nouveau Blueprint et comment cela est fait en cliquant avec le bouton droit de la souris sur la classe Blueprint , en trouvant la base du mode gouvernement, qui sera la classe Game Mode. Nous voulons utiliser un nom, celui-ci, le gain de soulignement BP pourrait se baser. Donc quelque chose d'autre à noter dans ces sélections de vidéos que je vais suivre la convention de nommage irréel standard. Donc, vous pouvez être sûr que si vous voulez mettre quelque chose sur le marché ou simplement travailler avec d'autres personnes familières avec l'écosystème irréel, cette convention de nommage, cela devrait être un bon moyen de vous faire démarrer. Donc BP pour Blueprint, soulignez le nom de la classe. Et juste au cas où nous voulions faire des classes enfants de ce mode de jeu, nous allons spécifier qu'il s'agit de la version de base ou parent des classes. Et ce sera un peu plus logique lorsque nous entrerons dans le reste des vidéos, car nous utiliserons ce genre de structure hiérarchique un peu plus tard. Pour l'instant, nous pouvons ouvrir ceci. Et ce que nous voulons faire ici est défini sur la tête de classe par défaut qui contrôlera quand nous avons un personnage créé. Bien sûr que nous n'avons pas encore ce personnage. Donc, je vais juste retourner dans le dossier Blueprints, clic droit à nouveau, créer une nouvelle classe de Blueprint. Et nous voulions trouver que le type de personnage que nous pouvons contrôler. Donc, nous avons deux des bases contrôlables. Nous avons l'attraction ou le personnage. Maintenant aucun d'entre eux n'est vraiment créé spécifiquement pour les caractères 2D et nous avons en fait une classe prête pour cela à l'intérieur d'Unreal. Donc, si nous tapons du papier, fondamentalement tout sera utilisé fait partie du système papier 2D. Donc, nous avons des flip books, qui seront nos animations, des sprites. Si vous voulez quelque chose qui n'anime pas, nous avons des choses comme des applications Tom, des éditeurs formés. Et nous pouvons voir ici que nous avons un enfant du porno est le personnage, qui est juste un porno contrôlable avec quelques choses supplémentaires comme le collisionneur de capsule sur elle attend un maillage squelettique et des choses comme ça. Et puis nous avons l'alternative, qui est le personnage de papier, qui est l'enfant de la classe de caractères. Mais au lieu d'avoir un maillage squelettique 3D, il a prédéfini certaines propriétés, comme un flip book papier 2D, qui est exactement ce que nous voulons. Donc, nous allons sélectionner celui-ci, nous appellerons ceci une base de joueur de soulignement BP. Donc encore une fois, si jamais nous avons une sorte de versions alternatives du joueur que nous voulons potentiellement générer, alors nous pouvons en faire un enfant de notre classe de base. Toute la logique de base que je serai dans notre classe de base de joueur, comme les variables de santé du mouvement et des choses comme ça que nous pouvons mettre ici. Donc, avec cela, nous pouvons jeter un coup d'oeil et la tête, mais il n'y a pas grand-chose que nous pouvons voir pour le moment. Nous n'avons pas de sprites ou de flip books que nous pouvons assigner. Comme je l'ai dit, cela va contrôler avec l'animation comme moi mais ce que nous avons est un collisionneur de capsule et un composant de mouvement de personnage, ce qui va nous permettre de configurer très facilement le mouvement pour notre classe de personnages. Alors qu'est-ce qui n'est pas prêt ? Nous pouvons maintenant revenir à notre mode de jeu. On va aller à la classe de porno par défaut, et on changera ça à la base de joueur de soulignement BP. Donc ça ne fera rien pour le moment. Si nous appuyons sur Play et voir par ici était toujours obtenir le gouvernement pourrait se baser. Donc, ce n'est pas utiliser que j'étais en ce moment, ce qui signifie que nous obtenons aussi la Pune par défaut, qui si vous ne l'avez jamais vu auparavant, est la sphère grise. Donc, si vous voyez cela, c'est la Pune par défaut, qui signifie que si vous ne vous attendez pas à ce que cela soit utilisé, cela signifie que vous avez probablement manqué une étape quelque part et que vous n'avez pas sélectionné votre classe personnalisée à sélectionner. Et cela nous donne ce genre de vol autour du mouvement de type mode spectateur. Donc, ce que nous voulons faire est d'aller dans les paramètres du projet. Nous voulons définir le mode de jeu par défaut, celui que nous avons créé comme par défaut pour le projet à utiliser. Nous le faisons à travers la section cartes et mode. On va aller à la base du mode jeu ici. Nous changeons cela d'une base de mode de jeu à base de modes de jeu non qualifiés BP, qui est la nôtre. Nous pouvons voir que sait automatiquement utiliser notre joueur comme joueur par défaut. Et maintenant, si nous allons et appuyez sur Play, la différence ici est que nous n'avons aucun mouvement parce que sur le côté droit, nous pouvons voir que nous utilisons le jeu non qualifié BP pourrait base. Et parce que nous avons un joueur commence dans le monde, il a créé la base de joueur de soulignement BP à cet endroit. Donc, je suis juste en appuyant sur F8 a dû éjecter du joueur, ce qui me permet de voler autour. On peut voir son changement à posséder ici. Et nous pouvons voir que nous avons la base de joueurs au début du niveau. Et la raison pour laquelle nous ne pouvons pas déplacer ça autour de nous parce que nous n'avons pas mis code dans notre classe pour lui donner une compréhension de ce qu'est le mouvement. Peut voir qu'il a des choses comme la gravité déjà traitée cheveux bien. Donc si nous possédons, nous serons toujours sur le sol en ce moment, mais c'est un bon début. Cela signifie maintenant que lorsque nous le faisons en ajoutant ce code à notre jeu d'une classe, le projet sait sélectionner cela comme classe par défaut pour essayer de posséder et exécuter la logique à travers. 3. 03 - - de joueur: Avec toute cette configuration et hors du chemin, nous pouvons maintenant commencer à fournir une sorte de référence visuelle pour notre classe. Donc, à l'intérieur de la base du lecteur, comme nous n'avons pas les flip books, donc les animations prêtes oui, sont importées de nos textures. Je vais juste ajouter un simple composant cube commencer par. Donc, si nous allons ajouter des composants, allez au cube. Cela va juste être un maillage statique pour au moins une sorte de représenter visuellement où le joueur va être. Et cela signifie que nous pouvons commencer à regarder la configuration de la caméra aussi. Donc je, pour la caméra, je vais utiliser quelque chose de festival appelé un composant de printemps. Ça va être comme une caméra. Boom est un long bâton, essentiellement un bâton virtuel planifie notre appareil photo, il va reposer sur, nous pouvons voir qui est représenté ici. Donc le courant va être à la fin de notre bâton. Et cela nous donne juste un peu de flexibilité avec la distance à laquelle la caméra va être gardée. Il a une fonctionnalité intégrée pour nous de l'animer ou différents types de caméra retardée pour obtenir un système de caméra sensation un peu plus dynamique. Maintenant, je viens de remarquer que j'ai toujours mon cube sélectionné. Je veux que ce soit un enfant des composants de la capsule. Je vais glisser et déposer ça dans les composants de capital juste pour que nous suivions la rotation de la capsule et non la correspondance statique. Si nous faisons quelque chose à cela, alors avec le printemps je suis toujours sélectionné. Je vais aller à Ajouter un composant, trouver la caméra, et ensuite on placera le composant de la caméra, le ressort allumé. Donc maintenant, chaque fois que nous prenons le printemps, la caméra suivra. Nous étions serrés ceci ou bougeons autour comme la caméra est attachée au bras. Cela signifie juste que nous devons faire beaucoup moins avec la caméra aussi. On ne va pas le faire tourner ou faire accidentellement des choses avec la caméra que nous ne voulions pas. Et moi, parce que nous avons ça, nous pouvons voir que c'est à l'intérieur d'Unreal. X est toujours en avant. X à gauche et à droite. Pourquoi la nourriture et l'achat ? Donc, nous voulons réellement se déplacer à gauche et à droite comme évidemment dans une plate-forme 2D passant de gauche à droite, zed, de haut en bas. Et comme je l'ai dit, Y4 à l'arrière. Donc, cela signifie que la caméra est actuellement à la recherche dans la mauvaise direction pour le moment, serait à la recherche de l'arrière du personnage si le face vers cette flèche lorsque nous apportons dans le flip book animé. Donc ce que nous allons faire, nous pouvons obtenir que j'étais au printemps et c'est l'une des premières choses que nous verrons est très utile. On peut faire pivoter le bras à 90 degrés. La caméra va suivre ça. Je suis en regardant le, ce qui serait notre Animation de joueur frontal. Maintenant, ça va aussi être un peu clefs. J' imagine que si nous appuyons sur Play, il sera par défaut d'utiliser cette image de caméra. Et nous allons regarder très, très près de notre cube. Donc, ce qu'on peut faire, c'est venir avoir attrapé le printemps. Je vais monter ce printemps cible. J' ai environ 600 ans. Et cela signifie que lorsque nous appuyons sur Play maintenant, nous pouvons voir un peu plus du niveau ainsi que juste le joueur que nous allons ignorer pour le moment que les composants de la capsule peu hors. Nous n'utiliserons pas ce maillage statique pendant très longtemps, car uniquement des fins de démonstration lorsque nous entrons dans la partie de base de la configuration de la caméra. Mais je pense que ça va être bon pour moi. Ensuite, nous allons vouloir configurer nos entrées de projet afin les liaisons relient les claviers et les manettes de jeu afin que nous puissions réellement faire bouger notre personnage. Pour ce faire, nous allons aller dans les paramètres de notre projet. Nous allons naviguer vers la section d'entrée. Et ici, nous avons deux options. Nous avons la cartographie d'action et la cartographie d'axe. Donc, comme un aperçu rapide pour ceux d'entre vous nouveaux dans le moteur, la tête de différence que nous avons des mappages réels serait des choses comme des entrées de presse simples, comme saut loup, CMake, vous sautez une fois, ou des touches d'interaction comme appuyez sur E pour ramasser serait un mappage réel est quelque chose que vous appuyez et relâchez. Et généralement comme une sorte d'interrupteur marche/arrêt. Vous avez ensuite des mappages d'accès, qui fourniront une valeur renvoyée selon que l'entrée est pressée ou non. Donc, si rien n'est pressé, il retourne constamment 0. Si vous l'avez entièrement enfoncé, comme une touche est soit allumée, un clavier est soit enfoncé et jamais peut-être si vous avez la touche Daniel renvoyant un ou moins un. Et puis nous pouvons aussi travailler des choses comme des bâtons de déchargement qui ont une portée. Donc ce serait entre moins 11. Donc, si vous poussez seulement le bâton d'enveloppe à mi-chemin vers l'avant, alors vous retournerez une valeur de comme un arrondi de 0,5. Donc encore une fois, c'est un peu, rendre ça un peu plus logique. Quand nous aborderons cela dans un instant, nous allons avoir juste quelques entrées différentes pour ce jeu. Nous allons vouloir que notre personnage saute. Donc, nous allons le faire sauter la mappage d'entrée. Je vais vouloir qu'ils aillent de l'avant et de l'arrière ou de la gauche et de la droite. Donc, nous allons avoir une cartographie de l'axe droit de déplacement. Donc, si nous faisons le mappage d'action, tout d'abord, nous allons ajouter un nouveau mappage d'action ici en appuyant sur l'icône plus va tomber cette fois. Je vais nommer cette nuit de saut pour cela, nous allons dire que le saut va être, nous pouvons ajouter beaucoup de boutons différents, avoir à gérer juste une seule entrée. Donc, cela va être utile si vous vouliez rendre votre propre possession un peu plus flexible. Donc, à titre d'exemple, nous pourrions dire pour les gens qui utilisent Ws et D, Nous pourrions avoir w comme une option pour sauter. Pour ceux qui aiment encore utiliser la sélection irlandaise, nous pourrions utiliser la flèche vers le haut sur le clavier. Aussi pour sauter. Pour les gens familiers avec la barre d'espace, nous pourrions utiliser de l'espace pour sauter. Et nous pourrions aussi dire que nous allons utiliser un compte de testament pour les manettes aussi bien. Donc, nous allons utiliser la manette et ceux-ci vont être le visage Watson, gauche, droite, bas et haut être x, y, a et B, ou triangle, cyclin carré x par exemple. Donc, si vous visualisez juste où ils sont sur la manette, je vais aller avec la manette Xbox. Donc, nous allons utiliser un et je veux un saut, qui sera bouton en bas. Donc ce sera la manette de jeu. Donc, nous pouvons maintenant utiliser un comme le saut de manette ainsi. Donc, c'est comme ça qu'une entrée de saut. Donc, si nous appuyons sur l'un de ces éléments et nous assignons ceci à la fonctionnalité de saut dans la classe de caractères. Nous allons faire sauter notre personnage autour de Next. Ensuite, nous voulons permettre à notre personnage de bouger. Nous allons donc ajouter un mappage d'axe. Donc, le mappage des axes, comme je l'ai dit, va renvoyer une valeur. Donc, nous pouvons voir la différence ici, c'est que ce ne sont que des presses simples. Nous pouvons ajouter des combinaisons, mais il ne renvoie pas de valeur, alors que pour l'Access, nous retournons une valeur d'axe. Mais celui-là, je vais juste appeler ça. Et ne sera en fait que créer la fonction de déplacement droit. Et vous verrez pourquoi dans un instant. Donc ce que nous allons faire, c'est pour la gauche et la droite du personnage, nous avons une valeur positive. Donc, disons que nous étions en mouvement dans un, nous voulons que le personnage se déplace à droite sur l'écran, ce qui sera notre valeur positive. Nous allons assigner ceci à D pour l'entrée WASD. Donc on trouvera D sur le clavier. C' est ainsi qu'un mouvement de droits fondamentaux ici. Maintenant, nous voulons aussi qu'ils puissent se déplacer à gauche. Donc, nous allons ajouter une autre liaison d'entrée, et nous allons trouver celle-ci en tant que a. Et une fois que nous avons défini l'entrée a, nous voulons changer cette échelle en moins 1. Maintenant, la raison en est que nous allons être en mouvement dans une valeur positive à travers l'écran pour aller à droite. Et nous voulons déplacer dans la valeur négative à travers l'écran pour se déplacer à gauche. Et c'est pour ça qu'on n'a pas besoin de bouger. Et je bouge à gauche, nous pouvons simplement créer et déplacer à droite, ce qui sera l'affectation positive. Et puis c'est un peu pris ou intuité que déplacer à gauche est la valeur négative. Et puis on peut faire la même chose que pour le saut. Donc, nous pouvons créer un certain nombre d'entre eux, permettre les touches fléchées I flèche droite. Quand on a la flèche droite, on peut encore s'assurer que c'est positif. Et puis à gauche. Va être notre moins un et nous pouvons assigner un mouvement bien compris aussi pour la manette de jeu. Donc serait tomber cette fois. Et il nous reste la manette. pouce est quand nous voulons l'utiliser dans le monde de la manette de jeu, x est à gauche et à droite, y est de haut en bas. Donc, nous voulons que l'axe X du manche gauche soit contrôlé de la hanche. Rappelez-vous maintenant ce que j'ai dit, que la valeur de l'axe renvoie une valeur de moins 10 ou un ou entre cette plage. Maintenant, quand le stick analogique est indéplacé au milieu, et ce sera 0 si l'utilisateur le pousse vers la droite et cela va être à une valeur de 1. Et s'ils le déplacent à gauche, et cela va être fait à une valeur de moins un. Donc ce gars ici, en fait une gentillesse pour tout ça en fonction de la façon dont le client déplace l'enveloppe. Donc, c'est tout prêt pour la fonctionnalité de déplacement droit. Donc, si nous les replaçons vers notre base de joueurs, va se déplacer dans le graphique d'événements et nous pouvons faire un peu de rangement a, donc nous pourrions avoir besoin de cela un peu plus léger pour le Begin Play. Nous pouvons nous débarrasser de tout le reste pour ni nous sommes allés soigner le chevauchement ou la coche de l'événement pour le moment. Et plutôt que de jeter toutes nos liaisons d'entrée dans le graphique d'événements général, ce que je vais faire est dans ces rapports sexuellement, mais oui, je vais créer un tout nouveau graphique. Je vais nommer cette entrée. Et nous mettrons toutes les choses liées à nos intrants ici. Souvenez-vous des noms que vous venez de refroidir, vous mettez l'accent sur ses mains. Donc nous avons saut et bouger ? Parce qu'on va se refroidir et ceux-là dans une seconde. Donc, pour se lever la fonction de mouvement droit, nous allons juste taper move right ? Et vous pouvez voir que nous avons deux options. Nous avons l'axe ou l'événement. Donc, si nous commençons avec les événements et autres pour moi des droits, et puis obtenir l'axe juste quelque chose qui peut confondre de nouvelles personnes, embaucher un peu. Fondamentalement, l'axe est la valeur renvoyée lorsque vous appuyez sur certaines choses comme je l'ai mentionné, moins 10 ou un ou entre cela. Et puis l'événement est l'option qui nous donne la broche d'exécution. Donc, nous pouvons exécuter certaines fonctionnalités hors de cela. Alors faisons une chaîne d'impression rapide. Donc, ce que cela fait, et nous pouvons imprimer la valeur de l'axe. Donc, si je viens sur le composant, appuyez sur Play, quand je n'appuie sur rien du tout, nous pouvons voir que cela fonctionne constamment, donc c'est un peu comme une fonction de mise à jour ou une coche d'événement. Quand j'appuie sur D, ce qui est mon bon mouvement, alors j'en ai un. Quand j'appuie sur un, je reçois moins un. Même chose pour la flèche droite sur la gauche et la droite, nous pouvons dire, Eh bien mise à jour, Je ne suis pas dans la forme la plus simpliste est élevé. La liaison d'axe fonctionne. Donc je suis juste connecté à la manette de jeu ici. Et je vais maintenant à gauche sur le rouge à lèvres légèrement à droite. Et on peut voir qu'on a une certaine valeur entre 01. Et puis si je le déplace à gauche, nous avons cette valeur entre 0 et moins un. C' est ainsi que nous allons conduire le mouvement de notre personnage dans un instant. Ce que je voulais démontrer, la seule différence ici, la valeur de x est exactement la même que la valeur retour de la valeur des droits GetMethod ici, la seule différence entre les deux est de savoir si vous besoin juste de la valeur pour un calcul comme celui-ci, si vous avez besoin des événements pour la broche d'exécution pour appeler une autre fonction. Donc, nous pouvons voir que je vais l'utiliser à nouveau et nous obtenons exactement les mêmes options ou réponses. On en obtient un quand j'appuie sur D moins un quand j'appuie sur A. Et j'ai encore le panneau de contrôle, et on peut voir que nous avons cette valeur en fonction de la façon dont je déplace l'irréaliste. Donc exactement la même chose. C' est juste agréable et pratique si vous utilisez un calcul et que vous essayez d'obtenir la vitesse multipliée par la direction de quelque chose et que vous ne voulez pas avoir à refroidir les événements. Vous pouvez simplement vérifier la valeur renvoyée à partir du mappage en entrée. Donc, avec cela fait, avoir une meilleure compréhension de ce que cela fait. Ce que nous pouvons faire maintenant, c'est à partir de cela, nous allons refroidir notre entrée de mouvement d'ajout. Et c'est vraiment aussi difficile que ça l'est. Un personnage qui bouge. Cela prend quelques fonctionnalités intégrées de la classe de joueur sur le composant de mouvement de personnage. Et il va simplement ajouter mouvement dans une direction que nous lui donnons en fonction d'une échelle. Donc, si nous disons que l'échelle est définie sur une échelle permanente, cela signifie que nous allons être même une phrase que la direction opposée à la valeur constamment. Donc nous savons que nous voulons aller de gauche à droite et nous allons en dire un sur le x parce que rappelez-vous, nous avons déjà vu que l'axe des x est celui-ci rouge, et c'est ainsi que nous voulons bouger. Donc juste ici, y serait en avant et en arrière. Nous ne voulons pas entrer et sortir de l'arrière-plan et dit serait haut et bas. On ne veut pas monter et descendre à moins de sauter. Donc, si nous appuyons sur Play maintenant, cela va déplacer une unité et une valeur positive x, parce que nous avons codé cela en dur pour être basé sur notre direction multipliée par l'échelle, va se déplacer constamment dans cette direction si nous ne changeons pas ça. Donc, la façon dont nous allons modifier ce que vous avez peut-être deviné est basée sur la valeur de l'axe. Ce qui veut dire que si on supprime quelque chose, on multiplie ça par 0, ce qui va arrêter notre mouvement. Si on appuie, D se déplace à droite. Si on appuie sur un va se déplacer à gauche. Même pour les Arabes, et encore une fois, même pour le bâton de déverrouillage. Donc, il est vraiment aussi difficile que de faire bouger un personnage. Maintenant, c'est un peu magique parce qu'il y a quelques choses en arrière-plan ici. Vous vous demandez peut-être pourquoi une telle valeur nous fait avancer relativement rapidement en fonction de la direction que nous voulons la déplacer. La raison pour laquelle c'est, c'est que nous ne déplaçons une unité dans le composant Mouvement des personnages ici, nous déplaçons en fait 600 unités. Donc, ce que cela fait sous une forme très simplifiée fait beaucoup plus de choses dans la classe C plus parent. Mais pour faire passer les bases, ce qui se passe, c'est que nous multiplions la direction du monde par je vais marcher à la vitesse. Donc, nous sommes en train de déplacer 600 unités multipliées par la valeur scalaire. Donc nous prenons notre valeur de 600 et nous disons que si vous n'appuyez pas sur quoi que ce soit, alors multipliez cela par 0, ce qui revient à nouveau à ce mouvement. Si vous appuyez sur D ou sur quoi il a été affecté, déplacez à droite sur la valeur positive, alors nous multiplions 600 par un. Donc nous déplaçons 600 unités dans cette direction. Et si on tient une valeur négative, donc a ou gauche, alors on multiplie 600 par moins 1. Et cela nous fera bouger dans une valeur négative ou à gauche sur l'écran. Donc juste pour vous faire savoir qu'il y a beaucoup à regarder ici si vous voulez jouer avec différentes choses et pour confirmer que c'est ce qui est contrôlé ici. Si nous abaissons cela à quelque chose de vraiment lent, comme 50, alors nous pouvons voir que le mouvement est complètement entravé par ce changement de vitesse. Donc il y a beaucoup de choses que tu peux jouer avec elle. Je ne vais pas passer par tout ça. Je pense que beaucoup le nom est assez bon sens. Et si vous regardez à travers, vous pouvez voir de quoi il est responsable. Et ce serait certainement quelque chose à jouer entre les vidéos et juste avoir une meilleure idée de ce que le composant de mouvement de personnage qu'il fait. Vous avez beaucoup de flexibilité en utilisant cela, vous pouvez faire des choses comme changer l'accélération afin que vous puissiez le faire prendre plus longtemps si vous le vouliez, pour avoir comme une construction à cette vitesse, 2048 est à peu près 0 à plein vitesse. Si nous chargeons ça à quelque chose d'extrême comme 512, alors encore une fois, vous verrez un grand changement dans le temps qu' il nous faut pour atteindre cet élan maximum. Donc, vous pouvez avoir comme un, Je suppose que ce serait votre vieux genre de façon de jeu Sonic. Vous auriez l'animation de jogging menant à la course, menant au sprint lorsque vous atteindrez cette 2014 complète. C' est donc l'accélération maximale. Encore une fois, je vais laisser ça la même chose ce soir, mais vous pouvez modifier toutes ces valeurs différentes et vraiment changer la façon dont votre personnage se sent pour moi pour droit ? Maintenant, la dernière chose pour l'entrée alors est que nous allons ajouter nos entrées de saut. Encore une fois, très simple. On veut refroidir le nom de ça. Mapping d'action que nous avons fait plus tôt, tout simplement sauter. Vous pouvez voir que c'est en fait beaucoup de retours différents ici pour sauter. Et c'est parce qu'il y a beaucoup de choses intégrées à notre classe de personnages qui nous permettront de modifier la façon dont nous sautons et comment cela réagit. Mais nous voulons que notre saut d'événement d'action commence par, avec celui que nous avons créé dans les liaisons d'entrée. Et vous pouvez voir à nouveau, cela est légèrement différent de la cartographie de la carte des axes. La principale différence est que nous ne retournons pas de valeur. Donc, comme je l'ai dit, c'est soit pressé ou pas pressé. Donc, lorsque vous appuyez sur W ou la flèche vers le haut ou un sur la manette, cela sera refroidi et quand vous la relâchez, ce sera cool de voir que vous avez déjà ces deux états. Maintenant, encore une fois, tout simplement, il y a toute cette fonction sur qui est déjà intégrée. Je vais sortir d'ici. Je vais appeler la fonction de saut. Nous avons une fonction diable sauterait. C' est à travers la classe de personnages et a encore une fois, une sorte de magie de se passer sous le capot, mais c'est juste appliquer de la force dans l'axe z pour nous. Donc si je viens et appuie sur W, alors on saute. Et même pour une nuit de manette parce que cela a des trucs prêts pour nous à manipuler et jouer avec. Nous pouvons venir ici à la base des joueurs, la chercher, sauter dans le panneau Détails ici. Et nous avons des choses différentes qu'on peut changer. Donc on peut changer le saut. On peut régler ça à un maximum de cinq. Et nous pouvons faire ça faire un saut de tuplet de synchronisation. Bien sûr, si tu voulais juste un double saut, on doit, tu as un double saut, donc super facile. Donc déjà obtenir un double saut implémenté. Et puis nous avons le Max HoldTime ici aussi. Maintenant, cela va être pertinent pour le prochain endroit, quelque chose que nous voulons faire si nous allons utiliser le système de saut intégré de base. Chaque fois que nous relâchons cela, nous voulons aussi appeler le saut d'arrêt. Donc, cela mettra à jour cette classe parent vérifiait tout cela et il mettra à jour le système pour lui faire savoir que le bouton de saut a été libéré, qui vient ensuite dans cette attente de saut serré. Donc, si vous avez joué à des jeux comme les vieux jeux Sonic, Mario jeux, ou plate-forme et jeux modernes aussi bien. Ils auront quelque chose que beaucoup de designers vont refroidir, hauteur de saut variable. Donc, si vous maintenez le bouton diagonale quatre, ou si vous appuyez simplement sur le bouton une fois que vous avez atteint ce minimum à la hauteur de saut. Alors que si vous le maintenez pendant une certaine période de temps, vous atteindrez un pic légèrement plus élevé dans votre site de saut comme. Donc encore une fois, système très flexible prêt à aller à l'intérieur de Unreal. Nous avons déjà tenu compte de cela. Au moment où nous n'avons pas cette hauteur de saut variable. Nous allons obtenir la même chose indépendamment de la durée d'un service d'assistance, parce que nous avons le saut maximum à 0. Maintenant, si je mets ça à quelque chose d'extrême, comme 55 est beaucoup trop élevé pour ça. Mais si je l'ai mis pendant aussi longtemps qu'un tout jusqu'à cinq secondes, force de saut est appliquée ici. Et la façon dont nous utiliserions cela, pour que le joueur ait un peu plus de contrôle est que dès que nous appuyons sur cette version et arrêtons la fonction de saut, cela sera déclenché et nous allons sortir tôt et ne pas atteindre ce pic . J' ai jusqu'à cinq secondes pour le tenir. Mais tu peux voir si je ne le tiens qu'une seconde, on va commencer à sauter, à retomber. Si je le maintiens plus longtemps que jusqu'à ce que je le libère, nous allons obtenir cette hauteur de saut variable. Alors rappelez-vous toujours pour des raisons comme celle-ci, parce que des choses se font sous le capot que vous ne voyez peut-être pas. Vous voulez vous rappeler de toujours appeler votre arrêt saut lorsque vous appelez une fonction de saut, si vous utilisez la fonctionnalité intégrée, maintenant abaissez cela à quelque chose d'un peu plus bas. Comme, je pense que quelque chose comme 0.25 fonctionne généralement assez bien pour le saut variable. Ce ne sera pas une énorme différence. Mais cela donne à ce joueur un peu de ce sentiment d'un peu plus de contrôle sur la façon dont ils sautent et les analysent pour affronter différents types d'obstacles de différentes manières. Et je pense que pour ce jeu, je vais le rendre un peu plus difficile. Nous réduirons le saut maximum à un. Ne pense pas vraiment qu'on ait besoin d'un double saut pour celui-là. Alors encore une fois, venez tester ça. Cela fonctionne avec toutes les entrées et j'ai le mouvement pour la manette sautant avec un. Et encore une fois, nous avons ce VAB, nous sautons hauteur si je tiens fait. Alors j'ai envoyé mes systèmes. Commençons par, il est assez clair ce qu'ils font, mais entrez juste dans ce genre de bonnes pratiques de programmation. On peut jeter quelques commentaires, d'accord, gentil. Donc, si je sélectionne les nœuds, appuyez sur C, Ensuite, nous arrivons à un commentaire. Celui-ci dirait juste qu'il contrôle le mouvement directionnel. Et nous ferons encore la même chose. Donc, nous allons sélectionner ces appuyez sur C et nous dirons que celui-ci contrôle le saut. Maintenant, il peut sembler évident, mais la façon dont les commentaires ce qui est très pratique. Donc, même pour les choses qui sont très évidentes, quand vous avez fait beaucoup de paniers, vous ne serez pas en mesure de voir le nom des événements, mais les commentaires sont mis à l'échelle en fonction du Zoom. Donc, il peut être utile juste de mettre des commentaires comme ça même si le très simple. Donc, si jamais vous vouliez plonger directement dans la section de saut, vous avez plein de nuits partout. Et juste Herman, je trouve que le saut très, très vite. Donc avec cela fait que nous pouvons compiler et enregistrer cela. C' est à peu près les bases du mouvement du plan. 4. 04 - Textures: Avec certains des trucs amusants déjà implémentés, nous pouvons arriver à travailler sur le visuel afin que nous puissions arrêter d'apporter les actifs, en particulier les textures pour commencer à changer la classe afin que nous puissions réellement voir un peu plus et mettre à l'échelle son apparence et sa représentation lors de la soirée de jeu. Pour cela, je vais utiliser un pack d'actifs gratuit que vous pouvez obtenir à partir de chaque point io. C' est ce qu'on appelle l'aventure pixel. Il y a aussi une aventure de pixel à, il est fait par pixel grenouille, et il est complètement gratuit à télécharger. Bien sûr, si vous avez aimé le paquet et que vous vouliez soutenir ce travail, je suis sûr que cela apprécie plus que quelques petits dons plus importants, si vous êtes en mesure de le faire quand vous avez fini de les écrire. Maintenant, je vais aussi fournir quelques dihalodes que vous pouvez obtenir d'en bas, qui ont tous ces actifs ou certains des actifs, ceux que nous allons utiliser spécifiquement pour ces vidéos, qui ont été réaffectées, modifié en fonction de la mise à l'échelle et des choses. Et j'expliquerai ça dans un instant pourquoi j'ai fait ces changements. Mais si vous vouliez les mettre en évidence, ils viennent dans une très petite taille, qui fait partie de l'une des classes. Un peu du problème lorsque vous travaillez dans un moteur comme Unreal. Mais encore une fois, j'espère que vous comprenez le processus de téléchargement de quelque chose de chacun, si vous vouliez obtenir le chemin entier comme il vient ici. Sinon, on dirait qu'il a le téléchargement pour les fichiers du projet à suivre avec les vidéos de la même manière exacte. Donc ce que je vais fournir, nous allons obtenir la chauve-souris, les hauteurs, deux formes de jeu, ou ils ne monteront que la grenouille, le ressort et les morceaux de niveau. Ceux-ci que j'ai mis en place d'une manière particulière afin que je puisse montrer certaines approches différentes pour les extraire, les animer et les mettre en place dans un projet. Et aussi ceux-ci ont été redimensionnés. Donc, c'est la façon dont vous trouverez des choses ou téléchargées si vous l'obtenez à partir de la page Web. Donc ce sont ceux qui n'ont pas été touchés. Nous pouvons voir qu'ils sont 32 par 32 pixels. Si nous regardons l'animation de saut ou l'animation de double saut, nous pouvons le voir un peu petit. Et si vous commencez à essayer d'augmenter ça, alors nous allons avoir cet effet flou. Maintenant, j'ai augmenté la taille des actifs que j'utiliserai. Je recommande de suivre avec d'une manière qui ne le fait pas, qui est fondamentalement l'exécuter à travers un paquet 2D comme Photoshop ou Krita. J' ai choisi d'augmenter l'échelle de 400 pour cent et de m'assurer que nous définissons l'algorithme sur le voisin le plus proche, ce qui signifie que vous obtiendrez le pli de mise à l'échelle basé sur le pourcentage de pixels et que vous n'obtenez aucun de ce genre de lissage sur les bords, sorte que vous obtenez toujours un pixel parfait type d'image. Maintenant, la raison de cela, quelques choses que je voulais mentionner. Eh bien, ce n'est pas une façon très optimisée d'amener des choses dans un moteur comme Unreal. Parce qu'Unreal va essayer de compresser les choses. Il compresse les tailles d'image pour des performances plus tard seulement si vous le fournissez avec une puissance de deux. Donc c'est quelque chose comme ça. Pourquoi je les ai tous réunis dans une grande feuille de style. Vous pouvez voir comme 1024 par 1024 dimension, qui est la puissance de deux. Donc 512 par 512, 256 par 256, et ainsi de suite. Et moi, à cause de ça, il est capable de prendre ces actifs avec lesquels j'ai fait ça, et il essaiera de les compresser s'ils sont en puissance de deux. Donc, il est probablement allé le faire avec ça. Mais comme je l'ai dit, c'est plus une démonstration. Je voulais montrer quelques façons différentes au cas où tu obtiendrais, on nous donnerait comme si ce n'était pas la fin du monde. Ça ne va pas briser votre projet. Et il sera utile de savoir comment extraire les choses de cette façon également. C' est la première chose que j'ai changée, c'est le web ou l'école. Je leur ai fait un pouvoir de deux feuilles de sprite. Maintenant, l'autre chose est évidemment la taille et la raison pour laquelle j'ai choisi d'opter pour la plus grande taille. Donc, plutôt que d'obtenir les 32 pixels par 32 pixels, nous travaillons plus avec un 128 par 128 par espace de grille, donc par image. Et la raison en est que cela évitera devoir remplacer certaines des valeurs par défaut du projet, telles que la navigation IA, volume de recherche. Si vous considérez ça de nos jours, nous travaillons avec des choses comme, d'accord, des résolutions. Vous aurez des images dont chaque image individuelle pourrait être le style de vie de la loi, et 24 même 2048 par lui-même pour obtenir ces images haute résolution. Donc travailler avec quelque chose qui n'est qu'une image de 128 pixels va toujours être relativement petit, certainement pas être révolutionnaire. Nous pouvons voir que cette feuille de sprite entière ne mesure que 31 kilo-octets en taille. Et cela signifie que ça va être beaucoup plus facile de travailler avec. Nous n'aurons pas besoin de changer la taille du monde. Nous pouvons toujours travailler avec une taille de soudure centimètre par centimètre. Nous avons eu besoin de remplacer n'importe quel système IA aussi. Donc je pense que dans ce cas, travailler avec un jeu d'images légèrement plus grand va rendre les choses beaucoup plus pratiques. Donc, comme je l'ai mentionné, si vous comptez, je recommande certainement de suivre avec les actifs que je fournit ici. Laissez-les, une fois que vous les avez extraits, retourner dans le moteur et nous cherchons à obtenir certaines de ces textures dans le moteur et à travailler. Nous pouvons donc le faire de plusieurs façons. La chose que nous allons importer, c'est une texture. Donc je vais aller dans le dossier des textures. Vous pouvez naviguer jusqu'à l'endroit où vous les trouvez ou les stockez sur votre système. Accédez à Importer des éléments de jeu, des textures qui sera l'emplacement, et vous les trouverez simplement et sélectionnez tous et choisissez Ouvrir. Et ça les amènerait. Une autre façon est d'ouvrir la fenêtre ici. Nous pouvons faire glisser, sélectionner tous ces éléments et simplement les déposer dans notre projet. Donc ils regardent un peu en ce moment, mais c'est bon. On va réparer ça dans une seconde. Je suis ce qu'on veut faire. En fait, tout d'abord, si nous en ouvrons une, nous pouvons jeter un coup d'oeil à certaines évaluations. Donc, pour la plupart, ils ont l'air bien, peut-être un peu floue sur les bords. C' est difficile à dire, mais nous pouvons faire quelque chose pour améliorer cela en un instant. Donc nous avons l'Alpha que nous sommes prêts, vous devez le faire. Donc la première chose est que c'est une texture qui signifie que nous ne pouvons pas la traîner dans le monde qui ne peut pas voir cela dans le monde en ce moment, nous avons besoin de quelque chose appelé un sprite pour pouvoir le faire. Donc, je vais retourner au dossier principal, ce dossier Textures. Et ce que je veux faire, c'est qu'on puisse attraper tout ça. Et fondamentalement, nous voulons changer les détails ici et le faire mettre à jour automatiquement pour mieux s'adapter à notre projet. Et nous pouvons le faire en sélectionnant tous ces éléments. Donc, déplacez et sélectionnez, faites un clic droit sur nos ressources et allez Actions Sprite et appliquez-le les paramètres de texture 2D papier. Et ce que cela fera, vous pouvez voir tous les alphas ont été comptabilisés. Il s'est débarrassé de ce fond noir. Et juste ici, nous pouvons voir ce qui a changé, c'est que cela était le dx t par défaut d'une part, il est décidé que l'interface utilisateur serait Claire et je pense que cela semble un peu plus net. Et puis ici, l'important, c'est qu'il a changé ça pour être des pixels 2D. Et cela fonctionne parfaitement bien parce que nous ne allons pas pour ce lisse peint à la main ou les contacts devraient en quelque sorte regarder. L' image parfaite du pixel est à peu près ce que nous voulons ici. Et encore une fois, je pense que ça a commencé son monde par défaut. Donc, faire cela sur tous nos actifs nous permet de gagner beaucoup de temps à configurer cela manuellement. Maintenant, la prochaine chose que nous voulons faire est de les transformer en sprites afin que nous puissions réellement commencer à en extraire des choses. Avant de sauter là-dedans, je voulais juste vous donner un exemple rapide de ce que je voulais dire par ces mises à l'échelle. Donc si je commence par les huttes, vous n'avez pas besoin de suivre ici. Et nous allons le faire d'une manière particulière ce moment, mais je vais juste extraire les sprites, laisser choisir n'importe quelle option à la fois. Nous allons aller plus loin dans les options pour le moment. Et ce sont les sprites, pas les textures, comme je l'ai mentionné, que nous pouvons traîner dans le monde. Donc, vous pouvez voir que c'est en fait à peu près la même taille que cette plante a arrêté si nous appuyons sur Play n'est pas trop loin de la taille de notre cube. Donc, comme je l'ai dit, c'est déjà une sorte de rapprochement avec les options de mise à l'échelle mondiale basées sur le centimètre. Donc je vais juste me débarrasser de ça pour les NIH. Et de la même manière, je vais me débarrasser des actifs de grenouille ninja. Nous n'aurons pas besoin des versions plus petites, celles qui n'ont pas été fournies avec les mises à jour prêtes incluses. Nous allons juste garder pour NIH nos textures ici. Maintenant, pour le moment, je vais juste me débarrasser des hots fera probablement le même processus dans un instant. Mais je voulais passer un peu plus de détails sur la façon dont nous pouvons les extraire dans notre jeu. 5. 05 - Flipbooks: Donc, la raison pour laquelle cela nous amène et sujet quand il s'agit d'extraire des choses de ces textures, est qu'il y a plusieurs façons de le faire. Et selon la façon dont les actifs vous ont été fournis, qui, selon votre équipe ou le projet sur lequel vous travaillez, ne vous sont pas toujours donnés de la manière idéale ou de la même manière. Vous pouvez rencontrer des problèmes avec le point de pivot hautement fonctionne qui peuvent affecter votre animation. Pas parfait exemple pour cela. Si nous allons à la grenouille joueur, quand nous voulons extraire toutes les images individuelles, nous allons à, faites un clic droit sur les actions de sprite de texture et extraire les sprites. Maintenant, c'est pourquoi je l'ai fait très rapidement il ya juste un instant sur la texture chaude ici. Et je l'ai juste laissé choisir l'extraction automatique. Donc, vous pouvez voir comment cela fonctionne. Nous avons la couleur du contour, qui est le contour et chaque image qu'il trouve en fonction de la transparence qui l'entoure. Donc, il va trouver chaque pixel de fin et classe qui est le bouton. Cela va extraire tous ces éléments. Pour qu'on puisse recommencer. Si vous vouliez changer le modèle de dénomination, vous pouvez changer ces cheveux et ensuite chacun sera nommé quelque chose comme t soulignement joueur grenouille, soulignement, sprites, etc Donc, nous pouvons le faire. Nous pouvons voir que les conventions de nommage ici très utile car il ajoute les nombres. Donc, nous savons que nous avons 25 de ces images sont basées sur un tableau d'images à base zéro. Et ce que je voulais montrer, c'est que nous avons l'animation inactive, qui est ces deux premiers euros. Ensuite, nous avons l'animation en cours d'exécution. Nous avons l'animation de saut et l'animation de chute ou l'inverse. Donc, le premier 11, donc 0 à 10, l'animation inactive. Donc, la façon dont nous faisons ensuite notre animation à partir des sprites est de cliquer avec le bouton droit sur une sélection de sprites que nous voulons construire l'animation, s' assurant que la numérotation est remarquée I, ce sera le début de l'animation jusqu'à la fin . Donc, cela va automatiquement le mettre dans le bon ordre pour nous, puis créer un flip book à partir de cela. Si gentil et simple. Rappelez-vous que le flip book est notre animation. Les sprites sont l'image que nous pouvons apporter dans le monde et les textures construisent toutes ces informations. Maintenant, si nous apportons cette animation, nous pouvons voir immédiatement qu'il y a un petit problème. Donc je vais traîner ça, je vais appuyer sur la fin. Donc, la touche de fin va le déposer sur le sol. Et nous pouvons voir que les pieds sautent en quelque sorte et que la tête se déplace vers le bas. Et c'est parce qu'il est basé sur ce point pivot central. On dirait qu'il flotte un peu. Idéalement, la façon dont cette animation a été conçue pour fonctionner est que les pieds restent parfaitement immobile et que tout se déplace de haut en bas autour de ce point de pivot. Donc, si nous y allons et que nous pouvons voir à nouveau, ce n'est pas tout à fait idéal, ce n'est pas tout à fait haut. L' animation était destinée à s'exécuter. Ainsi, nous pouvons résoudre manuellement ce problème si nous le voulions, en sélectionnant tous ces actifs. Donc encore une fois, 0 à 10, nous pouvons cliquer avec le bouton droit sur ceux-ci et nous pouvons aller à Actions Assets, puis modifier en bloc via Property Matrix. Ce que cela nous permettra de faire est que nous pouvons faire glisser et sélectionner tous ces, déplacer et sélectionner tous ces, aller aux options sprite. Et rappelez-vous que j'ai dit que c'est parce le point de pivot est que j'ai placé qui est cassé parce que cela va du centre et parce que chaque image n'était pas de la même taille, elle était basée sur la météo, les pixels et n'a pas post-its va changer d' image en image est un peu confus si l'est, donc ce que nous voulons faire est de changer cela du centre, du centre au centre inférieur. Maintenant, si nous faisons cela, nous pouvons voir les pivots sauter ici et c'est plus haut que l'animation était censée regarder. Donc c'est une solution facile si vous nous obtenez c'est comme ça et c'est comme ça que vous devez travailler avec les choses, alors c'est parfaitement bien. On a des moyens de réparer ça. Juste pour rejoindre un autre exemple, nous pouvons changer cela à quelque chose comme en haut à gauche et cela va complètement le casser. Animations et je joue en haut à gauche des sprites. Donc tout remonte à ce point de pivot. Donc c'est une façon de le réparer. Non, je ne vais pas les garder parce que j'ai mis en place ça d'une manière spécifique. Donc, je vais supprimer ces finis. Si vous devez également faire ce type de processus, assurez-vous de retirer la chose du monde. Nous avons toujours ce qui est une icône d' une référence nulle à un actif qui n'existe plus. Donc nous allons nous débarrasser de t pour tout t du monde. Et ce que je vais faire n'est pas à peu près le même processus, mais je vais vous montrer la façon dont je voulais que ça marche. Donc, je vais faire un clic droit sur la grenouille joueur à nouveau. Nous irons aux actions de sprites, extraire les sprites à nouveau. Mais cette fois, la raison pour laquelle je l'ai mis dans une grille est que j'ai veillé à mettre en place tout ce qu'elle a traîné à 128 unités de chaque dernière image. Donc, nous pouvons changer cela d'auto en grille, et nous pouvons voir que trouve la grille entière. Ce n'est pas tout à fait le site où sont les images. Et nous pouvons changer la largeur de la cellule de 1024, qui est la pleine taille à 12 huit. Donc on peut voir qu'on les a séparés, puis la hauteur à 128. Et que quand j'extraie tout, c'est exactement la même taille. Donc nous avons un peu de marge de manœuvre sur ceux-ci, mais nous pouvons voir que tous les pieds sont coupés au même endroit. Les animations dans lesquelles le courant est destiné à être. Oui, encore une fois, c'est la même taille de l'espace de grille. Le problème avec cela vient que vous obtenez ces cellules supplémentaires, celles-ci deviendront des sites et classés comme un sprite. Nous pouvons corriger une partie de cela par le nombre de cellules que nous voulons réduire, que je vais mettre à six, parce que nous n'avons que ces six que nous voulons vraiment. Mais vous verrez qu'il y a aussi nous aide avec la convention de dénomination. Et nous pouvons très facilement créer nos animations en utilisant cela. Donc ce que je vais faire, c'est que je vais extraire ça. Donc nous avons maintenant, comme je l'ai dit, ceci est assez bien séparé. Nous savons que tout cela est l'inactivité jusqu'au premier espace vide. Tous ces éléments sont exécutés jusqu'à l'espace vide suivant. Ensuite, nous avons plein et nous avons sauté. Donc ce qu'on va faire, recréer ce flip book. Je vais faire un clic droit sur ce super flip book. Maintenant, je vais garder celui-ci, donc je vais nommer juste veulent FB, Flip book underscore complet inactif ou joueur inactif. Encore une fois, la convention de dénomination pour les flip books est le nom de soulignement FB du flip book, textures, un nom de soulignement t de la texture, et ainsi de suite. Parce qu'il y a tellement de sprites que tu vas devenir un peu paresseux et ne pas les renommer. Je vais juste Shift sélectionner tous ces sprites et faire glisser cela dans le dossier sprites juste pour les faire correctement comme nous savons maintenant que nous pouvons supprimer ces sprites vides aussi bien. Et nous pouvons juste aller de l'avant dans cet ordre et cela rend le processus assez indolore pour nous. Maintenant, vous pouvez voir que parce que cela a la taille exacte qu'il sait que chaque image qui a réellement fonctionné pour nous correctement pour commencer, nous ne recevons pas cette animation de chute indésirable. Ensuite, nous pouvons faire la même chose avec notre course. Donc, il va changer, sélectionner tous ces clic-droit, créer, flip book, boiterie. Vous voulez exécuter le joueur de soulignement du FBI. Et nous avons notre animation de course. Maintenant, je pense que cette vitesse fonctionne assez bien. La première chose qui vient à l'esprit ici est que le ralenti semble un peu intense parce qu'il s'anime si rapidement. Et c'est vraiment juste pour être quand le joueur ne fait rien. Je vais changer les images par seconde de 15 à quelque chose comme huit. Et ça me semble un peu mieux. Vous pouvez changer cela à ce que vous voulez qu'il soit, mais cela change fondamentalement le taux de lecture. Donc, si vous voulez qu'ils soient très énergiques, alors nous avons quelque chose de plus haut. Ou comme je l'ai dit, quelque chose d'un peu plus détaillé, on peut aller un peu plus bas. Encore une fois, nous allons faire glisser tous ces éléments dans le dossier sprites que nous ne les utiliserons pas à nouveau, mais bien sûr celui référencé dans les flip books, donc nous en avons besoin pour qu'ils existent toujours. De même avec les textures, il va sans dire que j'espère. Et ça laisse ces deux-là. Donc nous avons l'animation de chute. Maintenant, c'est assez intéressant lorsque vous travaillez avec quelque chose comme ça, même en tant qu'image unique, nous devons toujours en faire un flip book parce que c'est ce que nos composants de la classe de caractères 2D attendent. Donc nous appellerons ceci un trait de soulignement FB plein et nous appellerons celui-ci, créera celui-ci, désolé, et appellera celui-ci f être souligné saut. Maintenant, si nous ouvrons ces deux, donc je suis juste des changements en sélectionnant et en appuyant sur Entrée. On peut voir que c'est toujours en train de jouer. On peut sauver un peu de mémoire, je suppose. Ouais, au revoir. Il est temps de 0. Donc ça ne va pas boucler. Il n'a pas été réellement jouer l'animation, mais ce n'est pas le type d'actif dont nous avons besoin pour ces deux animations, car ce sont techniquement des animations. Donc, c'est tous nos livres à rabat de joueur prêts à partir. Encore une fois, nous pouvons prendre ces sprites et nous allons le déposer dans le dossier des sprites. Et puis on peut enlever toutes ces cellules vides. Cela nous laisse avec, je vais retourner des livres pour que nous puissions déplacer nos livres de lecture dans le dossier de flip book. Et c'est essentiellement la configuration du projet que nous allons pour la structure. Maintenant, la prochaine chose est notre joueur de masque. La raison pour laquelle je l'ai, je veux juste montrer un autre exemple de l'Ouest certaines choses sont allées. De quoi pouvez-vous avoir besoin pour sauter entre les deux ? Donc, ceux-ci ont été mis en place exactement de la même manière, un 128 unités distinctes les unes des autres. Mais à cause de la taille de ce joueur et de la tête qu'il a, si nous venons dans l'option Extrait sprites, encore une fois, l'automatique ne fonctionnerait pas ici à l'école parce que ces deux-là, les exploits sont en fait en train de toucher la tête pièce. Donc, ceux-ci seraient toujours extraits ensemble et complètement rompre cette première configuration. Donc encore une fois, bien que pour la grenouille qui était une sorte de travail, pour celle-ci, ce ne serait pas une solution de contournement. Et vous devez connaître la mise à l'échelle des grilles. Et encore une fois, séparer ceci par un 128 sur chacun. Et vous pouvez voir que ça coupe juste si le pied sur le morceau de tête sorte de se toucher les uns les autres. Donc j'ai juste quelque chose que j'ai réalisé ce qui va être un exemple utile. Comme je l'ai dit, je ne vais pas utiliser le masque. Je vais en fait me débarrasser de ce NIH, mais je voulais juste montrer cet exemple rapide. De même, la même chose se produit réellement avec le bot. Va le faire ensemble. Nous irons aux extractions de sprites bot et extrayons ceci. Encore une fois, parce que ces étendues d'ailes se touchent en classe, ces deux comme une seule chauve-souris et ensuite le reste fonctionne parfaitement bien. Donc ce qu'on va faire, c'est changer ça en grille. C' est une largeur totale de 1288 et nous avons des images de chauves-souris du Sud, donc je la divise par sept et nous aurions une cellule avec un 184. C' est bon d'être, oui. Donc, ce serait exactement le montant que nous devons couper. Donc, nous pouvons maintenant voir qu'ils ne sont pas de la même taille, mais c'est parfaitement bien. Rappelez-vous que nous avons ces dérogations de pivot si nous en avons besoin, mais c'est ma coupe de droits entre ces deux ailes qui nous relie la taille dont nous avons besoin. C' est parfaitement bien. Un 120 est ramassé quel est le maximum, tous ceux-là. Encore une fois, nous allons les extraire. Nous allons créer un flip book et pour cette boîte FB non divulguée. Et nous vérifierons que ça a fonctionné. Et en fait, nous n'avions pas besoin de faire des décalages de pivot. Comment ça a l'air parfait. Alors encore une fois, déplacez ceux-ci dans les sprites. On peut tisser ça dans le flip book. Et on va faire ça pour le reste d'entre eux. Donc, pour les huttes, comme nous l'avons vu précédemment, cela fonctionne en fait si nous faisons simplement le guide d'extraction des sprites pour extraire les sprites. Et celui-ci fonctionnera réellement avec l'extrait automatique. Donc, nous pouvons cliquer avec le bouton droit sur ce Créer flip book appelé FB subit hots. Et il suffit de vérifier que c'est. Poster du milieu, ce qui est ce que nous voulons de toute façon. Donc, cela a été réglé pour parfaitement bien. Et la dernière, je vais choisir l'option ici que nous allons au printemps, nous allons à nouveau cliquer avec le bouton droit de la souris. Nous allons aller à l'option d'extraction et qu'elle ne se souvient pas si j'ai configuré ça pour être basé sur une grille, donc nous allons jeter un oeil sur ce que je pense que j'aurais pu faire. Et pourtant, nous pouvons voir que tout cela sur le terrain. Si vous faites une grille 128 par 128, cela signifie que nous avons juste besoin de se débarrasser des cellules vides. Ensuite, nous pouvons sélectionner tous nos points d'animation printanière. Grant flip book a appelé ce FB printemps non divulgué. Et cela fonctionne parfaitement pour qu'il reste à la terre et il fait une petite animation de poussée. Donc juste pour ranger, encore une fois, flip books dans un dossier flip book et sprites dans le dossier sprites. Et vous pouvez cliquer sur Contrôle pour désélectionner les choses que vous ne voulez pas. Tisser ça et on est si bien fait, ça veut dire qu'on peut fermer toutes ces fenêtres. On en a fini avec ça à moins que tu ne veuilles changer la vitesse de lecture. Nous pouvons maintenant aller à notre classe de base de joueurs. A l'intérieur de ça, nous voulons aller à notre sprite. Et en fait, tout d'abord, il voulait se débarrasser de ce cube. Alors supprimez le cube, on ira au sprite. Et ici, nous pouvons maintenant changer notre flip book source par défaut à notre soulignement FB, disons joueur inactif, ce qui nous donne une idée de la taille du joueur. Maintenant, je sais que nous allons avoir besoin de déplacer cela un peu vers le haut parce que le point de pivot n'est pas tout à fait au milieu de la capsule, donc nous allons déplacer le haut juste un peu. Et puis on peut prendre notre capsule et on va faire glisser la taille de la capsule. Et nous voulons que ça soit probablement juste à l'intérieur des exploits. On ne veut pas que le plan soit en train de planer et on va rendre la capsule un peu plus petite que le joueur. Donc, on dirait qu'il repose assez bien sur le sol. Et si nous essayons ça, ça devrait tomber dans le monde. Et puis on y va, on peut voir qu'on bouge. Ça n'a pas l'air planant. Et quand nous arrivons au bord, ça ressemble à peu près ? Donc, nous voulons évidemment commencer à jouer différentes animations quand nous nous déplacons. Mais c'est certainement un bon endroit pour pourquoi nous devons l'être. Nous avons maintenant le système d'animation 2D, et nous pouvons commencer à avoir une idée de ce que c'est d'être dans le monde. Donc c'est un peu comme ce dont je parlais dans la bande-annonce de ces vidéos. Nous avons le jeu à la hauteur du voyageur, qui est un flip book 2D, essentiellement se déplacer dans le monde 3D. Donc nous pourrions, si nous ajoutons de nouvelles dimensions à la mort, avoir un jeu très similaire en utilisant ces animations 2D, mais ayant ce genre de monde 2.5 D ou 3D avec lequel interagir. Encore une fois, un autre avantage de faire tout cela, bien que ce ne soit pas un moteur que les gens considèrent vraiment être une sorte de 2D 3D ou 2D optimisé. Nous avons quelques fonctionnalités plutôt cool que nous pouvons faire avec l'Unreal Engine, avec le genre d'hybride 2D. Encore une fois, à ce stade, nous allons assez loin et nous assurons que vous sauvegardez votre projet fur et à mesure que vous continuez à conserver toutes les mises à jour que nous faisons. Je veux dire, une autre chose dont je viens de me souvenir, si vous fermez et ouvrez le projet, vous serez probablement accueilli avec une nouvelle carte à chaque fois. Donc, ce que nous pouvons faire pour contourner cela pour mon aller à la section cartes et mode, parce que nous avons notre carte principale sauvegardée, nous pouvons changer l'éditeur Startup Map. Vous obtenez le modèle par défaut, qui est juste la carte vide similaire à ce que nous avons, mais pas celle que nous avons travaillé. Alors ce que nous pouvons faire, c'est que nous allons changer ça en principal. Donc maintenant, chaque fois que nous fermons et ouvrons le projet, ce sera par défaut la carte à ouvrir. Et de même, si jamais vous voulez donner ça à quelqu'un d'autre pour jouer, nous pouvons changer le jeu à la carte par défaut pour le Maine aussi. Une fois de plus, il sera accueilli avec cette carte sur laquelle nous travaillons et nous allons commencer à apporter des modifications à ce sujet bientôt. Pour rendre cette base plus 2D utilisera notre carte de tuiles peintes et voir la prise de cela fonctionne. 6. 06 - TileSets: Avant de pouvoir peindre des choses à l'intérieur de nos cartes de tuiles, nous avons besoin de quelque chose appelé un ensemble de tuiles. Et pour les obtenir, nous allons une fois de plus réutiliser nos textures. Donc, à partir des assets et du dossier textures, la dernière chose que nous n'avons pas utilisée, vous avez peut-être remarqué est le terrain T non divulgué. Ce que nous voulons faire c'est quelque chose d'un peu plus unique. Donc nous allons à nouveau cliquer avec le bouton droit de la souris. Auparavant, nous avons extrait des choses en tant que sprites individuels. Ce que nous voulons faire si celui-ci est, nous allons changer ceci pour créer un jeu de tuiles. Cela signifie que vous pouvez dire que c'est exactement le même pour le moment. Cela nous permet de définir spécifiquement des choses comme la taille de chaque cellule individuelle, puis donner à ces différentes cellules des choses comme des collisions de cette option ici. Donc, pour le moment, la taille de tuile par défaut est 32 par 32. Et pour ceux d'entre vous qui font attention en fonction de la taille de la texture, si vous avez regardé cela, cela ne fonctionnera pas. Donc chacun de ces quatre, fondamentalement je voulais être ce que nous choisissons. Donc on peut voir que 32 sur 32 est un peu trop lisse quand on peint des choses, on s'attend à ce que nous peignions des choses dans des blocs de cette taille. Donc, ce que nous voulons faire pour y parvenir, c'est juste jusqu'à 64 sur 64. Et c'est très important que nous fassions ce changement neuf car cela va en quelque sorte passer à notre carte de tuiles lorsque nous créerons cela un peu plus léger. Cela va nous faire gagner du temps et automatiser un peu le processus. Donc, cela signifie que nous avons maintenant la bonne taille de sélection, ce que nous aurons nos différentes pièces comme ça, donc c'est la première étape importante. Maintenant, la prochaine chose à noter est que je ne vais travailler avec cette sélection ici que si vous vouliez faire des niveaux différents et utiliser ces différents actifs que j'ai fournis, alors vous pouvez utiliser l'un de ceux-ci, juste suivre le même processus que je vais faire sur cette sélection ici pour les différents pots ci-dessous. Et puis vous pouvez trouver vos propres créations pour les niveaux avec ces boutons. Maintenant, la prochaine chose est que nous voulons considérer qu'ils embauchent ces seront utilisés dans le monde. Donc des choses comme ça, je vais classer ceci comme un peu d'informations de fond. Donc, des choses comme la mouture arrière n'aura pas besoin de collision ne va pas interagir avec le joueur ou quoi que ce soit d'autre. De la même manière, nous avons des morceaux au milieu juste ici. Donc, ces encore une fois, que probablement ne va jamais entrer en contact avec les joueurs. Donc, nous n'aurons probablement pas besoin d'ajouter une collision minuscule chose comme ça, les bits autour de l'extérieur. Merci. Donc, ces murs, les planchers et les choses, ils auront un potentiel d'interagir avec. Nous voulons donc ajouter une collision à ces tuiles. Maintenant, la façon dont nous faisons cela est un peu répétitif, mais nous allons sélectionner chaque tuile individuelle et nous verrons que cela apparaît ici. Maintenant, malheureusement, si nous sélectionnons plusieurs choses qui disparaissent et qu'il n'y a pas de sorte de copier-coller que j'ai vu. Donc, ce que nous voulons faire est de sélectionner chaque bit que nous voulons avoir une collision, aller ajouter des livres. Et vous pouvez voir ici une boîte blanche est juste un pad autour de notre tuile de collision, ce qui nous montre où la collision est réglée. Si nous voulions mettre à jour ça un peu. Donc peut-être que c'est un peu trop, monter un peu trop loin, un peu trop haut, nous pouvons déplacer la flèche autour et cela changerait la taille d'une boîte en collision. Ou nous pouvons étendre que si nous le voulions, passer l'image visible. Et j'ai entendu parler de ceux-ci, ils fonctionnent vraiment très bien si nous laissons juste très bien autour de la taille de la grille que nous avons ici. Donc, je vais juste passer par et essentiellement sélectionner chaque bit et appuyer sur la boîte Ajouter. Donc c'est la première chose faite. Fondamentalement, tous les côtés là-bas. Je veux tous les côtés. Donc, ces sommets et la science et ensuite tous ces individuellement peuvent avoir cette collision aussi. Donc je vais mettre ça dans une sorte de montage rapide en arrière-plan ici. Donc je n'ai pas à le regarder en temps réel et vous pouvez le suivre et le tirer si elle avance. Ok, Donc tout fait, J'ai donné ces collisionneurs aussi bien parce que ceux-ci ne peuvent pas un beau détail autour du bord des niveaux que vous pouvez toujours sauter dessus juste pour briser la monotonie de juste voir ce 1-bit de Lund et de la frontière. Donc, la dernière chose est qu'une fois que vous avez toute votre collision, vous pensez que vous l'avez mise en place de la bonne manière. On peut aller à l'option des tuiles en collision ici. Et cela changera réellement tout pour être une grille bleue basée sur ce qui a une collision et ensuite ce qui n'a pas de collision. Donc nous pouvons voir que tout ce que j'ai dit aurait besoin de collision a un F. Je ne pense pas que les joueurs vont jamais atteindre ça. Donc probablement pas la peine de le faire. Ils ne seront certainement pas en mesure d'atteindre ça à moins qu'ils ne soient un peu poussés. Et de même, c'est juste une sorte de remplissage visuel pour que d'aller entre les différentes grilles lorsque la peinture pour rendre les choses un peu plus intéressantes, ceux-ci auront tous besoin de collision il ya vraiment va être utilisé comme des plates-formes ou des briques pour sauter vers le haut. Donc c'est à peu près parfait. Maintenant, je n'utiliserai probablement pas ça. Mais juste pour vous montrer un dernier exemple, nous avons ces dynamiques. Donc, si vous vouliez utiliser des plates-formes flottantes ou quelque chose, ceux-ci ne seront probablement pas idéaux à utiliser dans une carte de tuiles de toute façon, parce que si vous voulez tracer quand nous voulons normalement être en mesure de sauter à travers eux. Et vous ne pouvez pas le faire très facilement avec une carte de tuiles. Vous voulez probablement faire ce plan de son fer sur votre collision de configuration d'une manière différente. Mais si pour une raison quelconque vous vouliez l'utiliser, si vous voulez juste qu'ils soient comme un pont solide que vous ne pouvez pas sauter à travers. Encore une fois, de façon très similaire, nous allons juste ajouter la collision ici. Donc, tous ces, et puis c'est là que cela est utile cependant. Évidemment, le bonjour MOOC avec cette abridge est certainement trop grand à partir du bas ici. Donc, nous allons sélectionner ceci et nous pouvons juste faire glisser ceci et peut-être le faire glisser juste un peu plus pour qu'il n'y ait pas de bon moyen de chevaucher cela. On peut changer la dynastie de la grille, quelque chose comme 1. Donc nous obtenons moins d'un snob et j'irais, nous pouvons parfaitement contourner le contour et nous l'avons fait. Mais tous ces, donc je pensais que cela servait à mettre à jour. Il semble avoir seulement des informations sur l'ensemble des tailles de grille. J' espérais qu'il représenterait visuellement cela ici, mais je ne peux pas confirmer d'expériences précédentes que dans le jeu, il faudra la collision de cette taille de livre ici. Je ne suis pas forcément ce que vous voyez ici. Donc, cela signifie que si vous les faites dans, le personnage ne sera pas en collision tant qu'ils atteindront pas le bas absolu de ceci plutôt que D, l'espace de pixel mort autour d'elle. C' est vraiment tout ce que vous devez faire pour obtenir un ensemble de serviettes qui est prêt à faire les collisions comme nous en avons besoin. Et comme je l'ai dit, si vous vouliez adopter la même approche, vous pouvez le faire pour tous les différents atouts. Vous pouvez probablement déjà voir pourquoi je ne vais pas faire ça pour tous les actifs ici, pour le bien des tutoriels est que ce serait un peu répétitif. Et cela sera plus que suffisant pour montrer les principales techniques et principes qui entrent dans la création de notre carte de tuiles. Donc nous pouvons maintenant fermer les Taus que nous avons à peu fini avec ceci pour le reste du cours, je vais déposer ceci dans les actifs de tuiles. Donc, nous n'aurons qu'un seul jeu de tuiles sur une carte de tuiles. Donc, cela ne vaut probablement pas la peine d'avoir des dossiers séparés pour eux. Donc, je viens de créer une sorte d'englober un dossier d'actifs de tuiles. 7. 07 - TileMaps: Avec notre tunnel en place et prêt à l'emploi, nous avons maintenant l'atout sur lequel nous devons baser une carte des serviettes. Donc similaire à nos textures, si nous faisons un clic droit sur cela, nous avons une option sensible au contexte. Nous pouvons donc maintenant créer une carte de tuiles à partir de nos jeux de tuiles. Nous pouvons donc choisir cette option. Encore une fois, cela va créer un nouvel actif ici. Je vais y aller et on verra comment ça marche. La première chose est que le jeu de tuiles actif a été automatiquement choisi parmi celui que nous avons créé un peu plus tôt. Si vous en aviez plus d'un, vous pourriez changer cela ici et cela prend quelques informations. Encore une fois, la chose importante à droite, nous pouvons voir que nous avons ces flèches d'annulation et que la largeur et la hauteur du tunnel ont été réglées à 64 par 64. Si nous avions ceci par défaut, il aurait été 32 par 32. Et comme je l'ai dit, cela signifierait alors que c'était sélectionner tailles incorrectes de la tête quand nous essayons de peindre des choses. Donc si on devait entrer et choisir ça, on va se tromper comme on peut le voir. C' est pourquoi il était important que nous utilisions la largeur et la hauteur de carreaux correctes pour commencer lorsque nous sélectionnons des choses de la peinture de haie dans le monde. Alors maintenant que je les sélectionne, vous pouvez voir comment il change le pinceau et nous avons l'option ici, peindre l'Asie et remplir. Donc très simple, mais vous êtes probablement familier avec ce qu'ils font. Et puis cette grille blanche est un peu comme comment Toile ce sera le monde sur lequel on peint. Donc, la prochaine chose serait probablement de changer la taille que nous voulons que cela soit pour le moment, si nous devions , par exemple, attraper toutes les morts, placer cela, ce serait essentiellement la taille de notre monde. Voyons donc comment cela fonctionne. Nous pouvons glisser dans notre carte de tuiles avec nous dans le monde, et c'est probablement un peu trop petit pour que les planètes les corrigeront. Donc, j'ai une collision hors de la caméra, a appris que, un peu plus tard, ce que nous voulons faire, ceux qui rendent cela plus grand afin que nous puissions changer cela avec la largeur de la carte et la hauteur. Donc, chaque tête d'unité de grille va être 64 sur 64 comme vous vous attendiez. Et si on traîne ça, on peut le rendre beaucoup plus grand. Mais vous ne voudriez probablement pas que ce soit énorme, sinon vous avez un très grand espace à remplir. En fait, je pense que quelque chose comme 60 sur 40 pourrait être assez sympa ici. Peut-être un peu plus petit dans mes tests, je pense que j'ai dépassé 80 par 20. Donc quelque chose de plus large fait est outil. On va juste faire une sorte de niveau horizontal. Et puis nous pouvons commencer au moins à travailler sur le fonctionnement du système. Donc, la première chose est que je vais chercher l'outil gomme et me débarrasser de ceux-ci. Et nous voulons nous concentrer comme si vous êtes familier avec Krita ou encore, Photoshop, nous avons un dernier système très flexible ici. Donc la première couche est celle qu'on n'a pas de moment. Nous pouvons ajouter de nouvelles couches à cela parce que quelque chose de assez simple. Je vais donc créer un arrière-plan et un niveau de premier plan. Donc, celui sur le dessus sera en fait le premier plan. C' est la couche la plus avant, puis nous avons huit couches d'arrière-plan. Je suis juste en appuyant sur F2 pour renommer ceux-ci et étant donné que ceux-ci sont un nom rapide. Maintenant, comme un exemple rapide pour montrer à quoi cela ressemblera, je vais obtenir cette couleur noire ici. Donc, en sélectionnant cela, sélectionnez l'outil de remplissage et sur l'arrière-plan, il suffit de remplir qui sera en noir. Et puis pour tester, nous avons le bon devant. Prenons un peu de changements de colline à peindre. Et bien sûr, tout ce que vous sélectionnez sera peint ici. Et nous allons juste nous assurer que cela peint sur le fond. Donc c'est à peu près comme ça que nous allons utiliser ça. Nous avons maintenant notre expérience est à peu près prête et prête à partir. Donc tout derrière nous va être beaucoup. Couleur noire peinte. Et puis nous pouvons commencer à dessiner au premier plan, ce qui serait le bit avec lequel le personnage avec la tarte va interagir, avec nos pièces en collision. Donc, quelques choses festival, ceux-ci ont été donnés une collision pour une raison. Donc, je vais les ajouter comme une sorte de contour au niveau. Donc, idéalement, ce que je pensais, c'est que nous aurions une sorte de quota autour de tout cela. Et c'est pour contenir l'appareil photo aussi. Donc, la caméra ne verra jamais ce genre de contour noir, dont le niveau doit être plus large parce que la caméra peut voir assez loin horizontalement, donc nous avons besoin d'une bonne chose. Et quelque chose comme 16 unités était à peu près quand la caméra commençait à voir que c'était de l'espace vide autour d'elle. Donc on aura comme un coin par ici. J' appuie juste sur zed pour faire pivoter cela et x le retournera horizontalement. Donc je vais faire pivoter celle de droite, celle de droite à peu près là. Et on peut juste effacer celui-là et prendre un de ces morceaux de côté. Rappelez-vous, nous voulons que les joueurs entrent en collision avec ce morceau de pierre ici. Donc encore une fois, je vais juste retourner ça et on peut juste peindre ce restaurant ici. Vous pouvez utiliser différentes pièces si vous le souhaitez. Ils sont tous à peu près de la même façon. Donc je vais juste retourner ça pour le réutiliser. Et c'est essentiellement comme ça que nous allons établir le niveau. Donc, ça va être beaucoup de choses de retournement, de le faire glisser. Si vous faites une erreur, alors nous allons arrays ça. Vous pouvez également venir dans l'outil de peinture de sélection et de largeur. Tant que vous avez sélectionné l'outil de peinture, Shift select, nous le copierons. Et encore une fois, on peut retourner ça et juste le coller. Encore une fois, assurez-vous que vous avez environ 16 points de distance du bord ici. Et vous devriez être d'accord avec la caméra ne pas voir l'espace vide que nous allons avoir en arrière-plan. Parce que rappelez-vous, nous allons toujours avoir tout ça autour en arrière-plan. Nous pouvons simplifier cela un peu pour le style artistique. Mais l'essentiel est que vous ne voulez toujours pas voir ce genre de 200, évidemment que ce n'est pas le monde entier. La prochaine chose, donc c'est une sorte de frontière faite. Nous pouvons sélectionner cela aussi. Et je vais juste retourner ça à nouveau en utilisant Zed. Ce n'est pas un peu bête. La prochaine chose, c'est qu'on veut notre colline. Donc, cela va à peu près juste être et cela un peu trop court beaucoup pour l'ajouter un peu plus de hauteur à cela. On verra comment ça se passe. Alors collez ça ici. Ensuite, nous allons vouloir que ça descende au sol et vous pouvez voir qu'il a un peu de contours. Alors gardez cela à l'esprit que ceux-ci devraient aller le long du sol aussi longtemps que vous voulez qu'ils aillent. Et puis ce sera se joindre avec les autres pièces, en veillant à ce que la pièce du milieu là à cause du contour. Et puis comme je l'ai dit, c'est le peu, c'est juste une charge que le joueur est allé le voir tôt l'autiste. Donc, je vais aller plancher est quand nous voulons un nouveau rebord juste en utilisant un type similaire de configuration que nous pouvons ensuite coller ces long. Et un autre conseil est que si nous faisons glisser, sélectionnez ces deux vers la droite, puis faites simplement glisser cela le long. C' est ça. Et la paix sera toujours traînée jusqu'à la fin. Et ainsi vous pouvez le voir, cela permet juste d'économiser un peu de temps là-bas à sélectionner différentes pièces encore et encore. Nous avons manqué de flexibilité, donc je peux simplement coller ça. Ça ne veut pas dire que nous avons besoin de ça pour descendre un peu plus loin. Et puis nous pouvons faire quelque chose comme sélectionner l'outil de remplissage et le remplir là dedans. Encore une fois, vous allez probablement vouloir faire quelque chose d'un peu plus créatif que moi. Donc, je ne vais pas continuer à courir et faire le tout avec des commentaires. Donc, vous avez l'idée de base que nous pouvons glisser et sélectionner différentes choses pour avoir quelques regards intéressants ici, comme dit, plutôt que d'avoir juste un morceau de niveau d'herbe constant, c'est comme ça que vous pouvez simuler un peu de premier plan et fond regarde avec les différentes connexions là-bas. Et puis la dernière chose que je vais faire aussi est la zone dans ce genre de reliure que j'ai faite. Je vais retourner à la zone d'arrière-plan, prendre la gomme, et juste m'assurer qu'on prenne ça. Parce que je trouve que cette couleur s'oppose un peu trop avec le contour du personnage. Et ils peuvent avoir l'air un peu désordonnés, un peu confus. Et c'est agréable d'obtenir ce beau contour noir solide du personnage. Donc je vais juste effacer tout ce qu'il avait de l'ostéo, toute autre chose que tu me verras faire ? Pour la prochaine chose que vous allez voir est un fondu aux résultats finaux. Si vous êtes au Royaume-Uni, une sorte de pizza bleue, voici une que j'ai faite tout à l'heure. Et en voici une que j'ai faite tout à l'heure. Donc, comme je l'ai dit, c'est très, très simple. J' ai nettoyé l'arrière-plan. Si je faisais quelques couches différentes de plates-formes avaient des têtes de chose qui se chevauchent sûr que vous pouvez les faire regarder de sorte que l'intersection qui aurait qu'il est un peu compte dans la façon dont les contours se font ici. J' ai fait une plate-forme pour qu'on saute dessus. Je n'ai pas utilisé la plate-forme en bois, mais vous pouvez l'ajouter si vous le souhaitez. Et puis juste une brique ici pour que nous jouions aussi. Donc, il est donc le résultat final, vous pouvez obtenir quelque chose de très, très similaire à cela si vous vouliez. La chose principale comme je l'ai dit est que quand on fait glisser ça dans le monde, cela va tenir compte de la, ce que l'appareil photo peut nous voir n'importe quel point et quand il ne serait pas en mesure d'obtenir plus haut ou plus bas sur la caméra genre point de vue ou le champ de vision du côté vertical n'est pas aussi élevé que le plan horizontal. Donc si nous revenons sur la carte maintenant, nous pouvons commencer à voir haut, ça va marcher. Donc on va traîner ça dans le monde. On peut voir qu'il est beaucoup plus grand. Je vais 0 ce site on peut aller 000. Et parce que le point de pivot est en haut à gauche, je voudrais juste faire glisser cela dessus. Et nous voulons vraiment que ça s'harmonise avec les points en plastique. Je vais juste faire glisser ça sous le point des planètes et nous pouvons commencer à nous débarrasser de choses comme si nous ne voulions plus avoir besoin de cet étage. Nous sommes également allés besoin de la sphère de réflexion ou le folk, de sorte que nous pouvons nous débarrasser de quelques-unes des choses du contour du monde ici. Maintenant, si nous appuyons sur Play, tant que cela est en ligne avec le plastique pour le joueur devrait tomber sur ces grilles et entrer en collision. Donc nous avons quelque chose que nous pouvons avoir l'air aléatoire. Nous pouvons voir que le plasma est en quelque sorte en planant, c'est pourquoi nous avons voulu l'obtenir en bonne et bonne heure. Nous pouvons revenir au plan rapidement, apporter ce composant de capture un peu plus. Et comme je l'ai dit, on peut faire ce genre de faux en taille et avoir ce côté du pied un peu là pour que quand on se repose, dirait qu'on se repose sur le sol. Et je ne suis pas un grand fan de ces clients réalistes dans un jeu d'art pixel. Donc ce que je vais faire, c'est pour la sphère du ciel, petit pourboire ici, je vais faire les couleurs déterminées par le soleil, pas basées sur la lucarne que nous avons. Donc nous avons notre source de lumière. Nous sommes également allés besoin de la maille refonte assez. Retour au gratte-ciel. Je vais régler la luminosité Lightspeed et Clyde opacité à 0 et la luminosité de l'étoile. Ce que tout cela ne sera pas pertinent, ce qui nous donne maintenant un gars de classe. Je pense que ce n'est pas un peu aveuglant et un peu lumineux. Donc, il semble que je suis allé au paradis ou quelque chose comme ça. Donc ce qu'on veut faire, c'est que je vais changer la couleur du zénith un gris bleuté plus foncé. Je vais copier cela parce que nous allons réutiliser cette valeur hexadécimale dans un instant. Je vais changer la couleur de l'horizon à la même couleur. Et ça nous donne juste une belle sorte de gratte-ciel plat. Si vous avez jamais voulu que les veggies du ciel soient juste une sorte de couleur plate minimale. Je pense que ça marche un peu mieux. Ça n'entre pas en conflit avec les contours. Ainsi, nous pouvons encore voir clairement les contours qui ont été ajoutés à tous les actifs, mais ne sont pas trop brillants. Il n'a pas le Clyde. Il semble un peu plus approprié avec le style. Et juste un test qu'on peut voir la caméra, on ne peut plus voir l'arrière-plan ici. Je ne verrai rien au-dessus de nous. Et on ne verra rien du côté droit, j'espère. Donc ça a l'air plutôt bien. Je suis en collision avec tout ce qu'on attend de nous d'entrer en collision. 8. 08 - Configuration de l'animation des joueurs: Avec nos jeux de cartes de tuiles et prêts à partir. Nous avons maintenant quelque chose de plein sur le joueur à courir autour. Donc, nous avons notre lieu basé, essentiellement, ce que nous voulons faire maintenant est retourné à la classe de joueur et nous allons passer par le mouvement et la configuration de l'animation. Donc, nous allons concrétiser ce système pourrait être un peu plus. Donc, de retour à l'intérieur de la base de joueurs non divulgués BP, nous voulons que l'événement coche à nouveau. Donc, un possible, évidemment, nous voulons essayer d'éviter l'événement ne refroidisse beaucoup de fonctions en permanence, certaines choses comme l'animation et la vérification de certains états, nous allons vouloir être à peu près mis à jour constamment donc nous obtenons que retour d'information. Donc, nous allons le faire hors de la tique de l'événement. C' est le genre de chose qui va être subtil, léger à ce Rooney n'ajoutera aucune sorte de roulement de performance ici. Maintenant, vraiment ce que nous voulons faire, il va y avoir deux choses différentes que nous voulons constamment vérifier et mettre à jour sur la coche de l'événement. Nous allons vouloir contrôler l'animation en fonction de l'état actuel du mouvement, si elles sont dans l'air, dans le sol, au ralenti, en mouvement, etc. Nous allons également vouloir mettre à jour l'animation des joueurs en fonction de la direction, du mouvement ou de l'entrée que la planète appuie. Donc pour le faire, parce que nous savons que nous avons ces deux choses principales que nous voulions vérifier. Je dirige ce festival hors d'une séquence. Donc, en gros, nous allons avoir notre séquence de mouvement et notre séquence de rotation. On peut avoir une soirée de réacheminement de la moitié qu'on voulait. Parfois, il est agréable de se documenter comme vous allez le long. Donc, nous savons que quand nous reviendrons, nous laisserons un commentaire et nous dirons que ce sera notre rotation. Donc, mon simple commentaire juste pour nous rappeler ce que nous faisons est que nous traversons pour le mensonge du mouvement, ce sera l'animation basée sur le mouvement. Ce sera la chose un peu plus complexe que je vais courir à travers cela en deux étapes, sera étoffée à ce stade, l'implémentation rudimentaire très basique que nous pouvons entrer dans les ticks d'événement afin que nous puissions très rapidement visualiser ce qui se passe. Je vais revenir un peu plus tard et nous allons affiner cela avec une approche légèrement meilleure. Mais je voulais montrer les deux approches pour que nous puissions voir Y1 automatiser un peu la task force. C' est un. Donc, pour commencer, ce que nous voulions faire est de commencer à vérifier tous les états possibles dans lesquels nous pouvons être, en ce qui concerne l'embauche de la playa se déplace si vite que nous pouvons exécuter ce hors d'une branche initiale. Et ce sera de vérifier si nous sommes punis ou non. Donc, le composant de mouvement de personnage a, encore une fois, tout ce genre de flore de voies. Et plutôt que de broyer à droite, vous allez vérifier si nous trompons, même genre de chose, mais une sorte de logique inverse. Donc, il a une variable en cours de suivi, si le personnage est actuellement dans un état de chute. Donc, si nous sommes dans l'air à un moment donné, si nous le sommes, ce que nous voulions faire est de prendre notre sprite pour que notre animation que nous avons et nous allons mettre le flip book. Mais nous voulons mettre le flip book à certains états, bien sûr, quand nous trompons. Donc, en bougeant à la fin de toute façon, nous allons commencer par supposer que nous sauterons. Donc, nous changeons ceci en saut souligné FB, et nous allons le brancher ici. Maintenant, cela va vraiment causer un petit problème parce que nous avons essentiellement deux états dont nous voulons rendre compte. Que nous nous déplacions dans une valeur vésiculaire positive ou négative. Donc, que nous atteignions le sommet du saut ou que nous nous retirions de lui. Fondamentalement, tout ce qui n'est pas sur le terrain est classé comme trompeur. Donc ce n'est pas tout à fait ce dont nous avons besoin de moment, mais c'est un bon début. Maintenant, parce que nous allons réutiliser cela beaucoup, je vais l'attraper du flip book et promouvoir ceci à une variable. Je vais nommer ce saut FB non divulgué. Et nous aurons besoin de tous ces éléments en tant que variables au fur et à mesure que nous traversons cela comme un moyen agréable et facile de mettre en place cela. Parce que maintenant que nous avons cet ensemble dans notre emplacement, vous verrez qu'il affecte automatiquement la valeur de saut non divulguée FB à l'animation de saut. Donc, nous allons passer par cette étape et cela va en quelque sorte extirper certaines des variables dont nous avons besoin aussi. Ou quand nous reviendrons dans cette logique, je vais faire une autre vérification de branche ici. Et on veut savoir si on est sur le terrain. Donc maintenant, en supposant que nous ne tomberons pas ou ne montons pas, et encore une fois, nous reviendrons à cela un peu plus tard en chair, le site fera les choses au sol. Tout d'abord, je ne voudrais pas savoir si nous sommes sur le sol et nous nous déplacons d'un côté à l'autre ou si nous sommes complètement stationnaires. Donc, tout simplement, nous pouvons utiliser le get velocity cool ici. Ainsi, nous pouvons trouver la vitesse que le personnage bouge. Et nous voulions vérifier si ce n'est pas égal ou non. Donc, nous avons obtenu ceci comme une longueur pour nous assurer que nous comptons pour n'importe quelle des directions. Donc, cela retournera le vecteur essentiellement sous forme de flotteur. Je suis fondamentalement cela saura que si nous avançons à gauche, à droite, une sauvegarde, s'il y a des retours 0, alors nous saurons que nous ne bougeons dans aucune direction. Donc on peut dire qu'il n'est pas égal à. Donc, si ce n'est pas égal à 0, alors nous savons que nous bougeons, donc cela va bouger ou ne pas bouger. Donc encore une fois, ce que nous voulons faire à partir d'ici, nous allons devoir prendre nos sprites et notre flip book. Donc je vais contrôler W pour copier cette ligne ici. Et je recommencerai. Donc, contrôler W comme nous avons besoin de le faire la troisième fois. Et j'espère que vous pouvez commencer à voir pourquoi ce ne sera pas configuration la plus idéale dont nous avons besoin pour continuer à refroidir cette fonction encore et encore. C' est une sorte de logique de réplication. Et encore une fois, vous verrez comment nous pouvons résoudre ça assez facilement en un instant. Mais tout d'abord, on va faire tourner les choses visuellement. On peut commencer à tester ça au fur et à mesure. Donc pour le moment, parce que nous n'avons rien à faire, nous devons faire quelques pas de plus avant de pouvoir tester. Mais si nous devions sauter, nous pouvons voir que nous obtenons l'animation de saut. Toute autre chose va rendre ça invisible. Donc, ce que nous disons, c'est que si la vitesse n'est pas égale à 0, donc si nous bougeons, alors nous allons vouloir définir notre flip book ici pour être exécuté. Donc, nous allons définir ceci pour être le flip book en cours d'exécution ou promouvoir ceci à une variable appelée à nouveau celui-ci FB et la course à l'école. Et on va faire quelque chose de très similaire ici. Donc celui-ci est bien sûr si nous ne bougeons pas, donc nous allons définir ceci sur FB underscore inactif, ou c'est un joueur inactif juste la nuit juste un peu quand le problème de nommage ne pas avoir cela. Pour que je puisse y retourner et réparer ça un peu plus léger. Je vais promouvoir cela à nouveau à une variable et ce sera FB underscore inactif. Donc maintenant, nous avons quelque chose qui remplit ces fentes pour que nous puissions maintenant tester ça. Donc, nous avons notre animation inactive, il, nous ne faisons rien de saut d'animation si nous sommes dans l'air et en cours d'animation quand nous ne sommes pas stationnaires. Donc, bien sûr, nous avons une rotation de la vérité. Nous n'avons pas tenu compte du saut et de la chute, mais ils vont bientôt arriver. Pente pour le saut et la chute. Je vais maintenant vous présenter la note de sélection si vous ne l'avez pas vu auparavant. Fondamentalement ce que nous voulons faire, si nous savons que nous sommes dans une certaine forme d'être dans le, nous ne savons pas si c'est une vitesse positive ou négative que nous allons avancer encore sur l'axe z, ce que nous allons faire c'est que nous sommes aller décrocher notre saut de soulignement FB, et nous sélectionnerons un flip book en fonction d'un certain résultat. Donc, nous allons choisir nos services publics. En prenant un caractère générique, nous pouvons changer cela en quelques variables différentes par défaut. Et nous voulons que ce soit le retour d'un booléen à nouveau. Donc on va faire une vérification booléenne rapide. On peut copier, j'aurai de la vélocité ici. On va vérifier ça dans un instant. Nous pouvons diviser ça, nous n'étions pas intéressés cette fois par l'un des axes, cette vitesse. Donc nous allons diviser la broche de la structure. Nous voulons savoir si nous évoluons dans une valeur positive ou négative dans l'axe z. Donc, de haut en bas, et ce que nous allons faire, c'est dire que si cela est inférieur ou égal à certains vols. Donc nous allons tenir compte du point de données exact que nous avons atteint le sommet, puis nous allons passer ça dans notre joker. Je vais changer cela en un booléen et nous avons maintenant une vérification pour savoir si oui ou non nous nous déplacons verticalement dans une valeur positive ou négative. Bien, parce que nous savons que c'est un booléen, nous obtenons cela changé en vrai ou faux. Donc, si c'est vrai, donc si nous sommes inférieurs à 0, c'est vrai. Alors nous savons que ce sera notre animation de chute. Et celui-là s'appelle terriblement. Je vais y retourner et réparer ces neuf parce que c'est pire que ce que je m'attendais. Donc FB soulignement imbécile devrait être ludique et FB saut à carreaux. Ok, ça va rendre beaucoup plus facile de ne pas trouver dans un bon ordre à l'avance. Donc bien, je disais que si c'est inférieur ou égal à 0, si c'est correct, alors nous savons que nous trompons. Si c'est faux, alors nous savons que nous avons une valeur positive et nous sommes toujours en train de sauter, mais nous n'avons pas encore atteint un sommet plat. Pour que nous puissions appuyer sur Play. Nous vérifierons que ça marche. Donc, nous avons sauté et tomber. Et ça semble plutôt parfait. Donc, il nous donne juste ce genre d'idéal de la façon dont les joueurs se déplacent. Cela nous donne un peu plus de cette rétroaction visuelle et il remplit un peu plus poli immédiatement que nous savons dans quelle direction nous nous dirigeons verticalement. Donc je vais juste rebrancher ça dans Jump, promouvoir celui-ci à une nouvelle variable. Et je suis heureux de donner ces noms parce qu'on est dans la classe. C' est un peu évident ce que cela va être. La convention de dénomination ici est plus qu'elle s'alignera d'une manière agréable et précise dans le navigateur de contenu et il est facile de trouver comme vous l'avez vu options de la liste alors que c'est le mouvement mis en place. C' est l'approche rapide et sale pour faire avancer le mouvement. Nous avons maintenant un peu juste pour presque tout ce que nous n'avons pas de flux d'animation. Donc sauter, bowling, bouger. Et je fais ça. Je serai alors prêt à partir. Pour finir ça. Nous voulons aborder ce commentaire de rotation ici. Donc je vais les déplacer un peu, juste pour nous donner un peu d'espace et déplacer ça un peu plus. Pour la rotation, ce que nous voulons c'est que notre sprite fait fondamentalement quelques façons différentes que nous pouvons faire cela. Nous pouvons entrer la taille de nos sprites. Donc faire face aux droits serait positif sur l'échelle x ici et moins un nous ferait retourner. Maintenant, si nous avons quelque chose qui est attaché à notre personnage, si quelque chose a comme un point de projectile ou un PowerApp que nous voulions lancer, cela peut devenir déroutant parce que les power-ups vont toujours être ici. J' aurais également besoin de rendre compte de cela. Et cela pourrait aussi changer l'échelle des choses qui sont divisées. Et donc en général, je vais éviter de faire ce genre d'approche plus simple que je suppose à la place que nous voulions faire, c'est en fait que nous allons simplement les faire tourner complètement autour. Et nous pouvons voir avec cela que nous voulons le faire sur l'axe z, nous affectons la vue de la rotation de notre personnage. Donc, je vais remettre cela à 0 par défaut juste pour que nous ayons comme une idée maintenant de ce que nous visons et de ce que nous pouvons faire. Nous pouvons le faire en fonction de notre contribution. Donc, nous savons déjà que nous l'avons fait. Déplacer l'axe des droits. Et nous pouvons vérifier si c'est supérieur ou inférieur à 0. Si c'est plus de 0, en appuyant sur la droite, parce que moins qu'en appuyant sur la gauche. Le problème est que si nous changeons cela chaque fois que le joueur appuie sur un bouton, il pourrait devenir un peu twitchy si la plante appuie constamment. Donc, au lieu de cela, je vais à nouveau l'éloigner de la vitesse. Donc, nous allons volontairement changer cela pour correspondre à l'endroit où le personnage se déplace dans le monde. Quelque chose comme quelle est la vitesse verticale ? Nous pouvons diviser cela car nous ne sommes intéressés que par la vitesse de déplacement que nous avons ici. Je vais tirer de cela et nous allons utiliser une comparaison. Donc, nous pouvons obtenir les flotteurs de comparaison fonctionne et cela sera exécuté. Nous pouvons exécuter ce noeud réécrit de mouvement pour garder ce bien rangé de toute façon, donc nous obtenons une belle ligne avait, en fait, je vais faire la même chose ici. Bonjour, je prends un peu de place. Donc je double-clique sur ce que si vous n'êtes pas familier avec ce double-clic sur un fil vous donnera une nuit de réacheminement. Et ce que nous voulons faire, c'est que nous pouvons vérifier si c'est plus qu'une certaine valeur. Donc si c'est une valeur positive, on bouge, non ? Donc nous voulons que ça fasse face à la nourriture. S' il s'agit d'une valeur négative, alors lorsque vous vous déplacez à gauche. Donc, si est plus de 0 ou moins de 0, ce qui est notre composé avec valeur ici, alors nous allons soit dans une direction positive, soit dans une direction négative gauche. Donc, nous pouvons définir la rotation du personnage ni le moyen le plus sûr de le faire parce que le contrôleur de l'usine suit beaucoup de nos mises à jour de rotation. Nous voulons obtenir, je vais jouer une manette. Et nous voulons définir la rotation de contrôle de ceci. Donc, cela signifie que nous, parce que nous avons déjà une classe qui regarde et regarde la configuration de rotation de la classe, plutôt que d'avoir toute sorte de logique affligante contre cela, nous pouvons simplement utiliser l'information qui est suivi dans notre contrôleur de joueur et mettre à jour cela. Ils vont diviser ça et brancher ça ici. Maintenant, rappelez-vous que nous voulions affecter l'UE, la rotation zed, les valeurs par défaut se déplacent droit est correct tel qu'il est. Donc je vais laisser ça à 0. On peut copier ça ici, et on peut régler ça sur 180 si le personnage se déplace vers la gauche. Pour que nous puissions le tester à nouveau. Laisse-moi écrire ce qui se passe comme on s'y attendrait. Et à gauche. C'est retourner absolument tout. Et c'est un problème avec la caméra, mais cela ne veut pas dire que notre logique fonctionne. Alors je vais retourner au printemps. Fondamentalement, cela se produit parce que comme je viens de mentionner tout cela comme étant des vérifications et mis à jour dans le contrôleur. Je ne vais pas inclure aussi une partie de la caméra et de la configuration du printemps. Donc, en gros, ce qui se passe si vous n'êtes pas sûr du moment où nous appuyons sur Gauche, l'acteur entier est en train de tourner autour. Les caméras sont toujours orientées dans la même direction. Mais quand je regarde cela de derrière la carte de tuiles plutôt qu'en face. Donc, pour arrêter ça, on va prendre notre printemps. Nous changerions cela pour utiliser la rotation des commandes. Donc encore une fois, c'est un autre avantage d'utiliser cette rotation playa et fro parce que certaines choses au sein de notre propre classe seront en mesure de faire référence à cela. Donc, nous voulons maintenant que j'étais printemps sur pour hériter de la même rotation est que le contrôleur est suivi. Et cela signifie que nous n'avons pas besoin de nous soucier d'hériter de n'importe quel terrain. Tu finiras Row. Donc, fondamentalement, ce que cela signifiait est si nous avons ces conseils chaque fois que le composant sur lequel il est placé est en train d'être déplacé, faites-le pivoter ou quoi que ce soit. Donc, à titre d'exemple rapide, si nous apportons cela dans le monde et je vais appuyer sur la tête F8. Donc, en utilisant Backpack à la, nous pouvons voir comment la caméra hérite de la rotation si nous bougeons cela autour. Donc nous ne le faisons pas nécessairement. Et ce serait aussi si vous rouliez un personnage. Si vous jouez une animation à un moment donné, vous ne voulez bien sûr pas ce printemps. Suivez la même rotation que le personnage prend dans toutes ces directions potentielles différentes. On veut toujours que ça fasse face à tout droit. Donc, ce que nous allons faire, c'est que nous allons entreprendre tout cela et assurer qu'il s'ensuit que la Puna contrôle l'irritation. Donc, si nous appuyons sur Play, vous pouvez voir que nous pouvons tourner et nous déplacer à gauche et à droite. Et la caméra est toujours orientée vers l'avant car elle met à jour correctement via la manette du lecteur. Nous avons toute notre animation va. Nous aimerions. Donc, la police de chose juste pour ranger le code, c'est que je vais entrer, me débarrasser de ce commentaire. Et ce que je pense que nous pouvons faire, c'est de mettre ces neuf fonctions. Donc, cela prend un peu de place et nous pouvons potentiellement économiser un peu de performance en les laissant tomber dans des fonctions aussi bien. Donc on va utiliser ça. Ce que je ferais, c'est prendre toutes ces notes. Donc, en ce qui concerne le mouvement et l'animation fera un clic droit sur l'un de ces nœuds, va réduire cela à une fonction. Et nous appellerons cette mise à jour flip book car c'est vraiment ce qui est responsable. Ok, Donc c'est ce qui va permettre une logique de flip book aller et on peut dire que ça ne nous a pas sauvé beaucoup d'espace et le graphique d'événements. De même, nous pouvons faire la même chose et nous changeons ceci pour mettre à jour l'irritation du jeu en réduisant cela en une fonction et en nommant cette cavitation de mise à jour. Et encore une fois, juste un peu de rangement pour que ce soit agréable et facile à lire. On n'aura probablement pas besoin de réacheminer les notes, donc je vais m'en débarrasser. Et avec cela fait, nous pouvons voir que nous avons économisé beaucoup d'espace ici. Et j'allais être très facile de sauter à travers notre code si nous voulons mettre à jour l'animation est que nous allons faire dans un instant, nous savons que nous devons regarder dans la fonction flip book. Et si jamais nous voulons changer la façon dont la rotation fonctionne, nous pouvons sauter directement dans notre section de rotation. 9. 09 - Améliorations de l'animation des animations des joueurs: Comme je l'ai mentionné, les mises à jour d'animation de flip book n'ont pas été faites de la manière la plus idéale. C' est très genre de manuel sur la base d'une situation par action. Nous devons continuer à refroidir cette même fonction. Et encore une fois, ce n'est pas vraiment idéal non plus. Donc, ce que nous allons faire est d'essayer d'automatiser certains de ce processus avec quelque chose appelé une énumération ou un numérateur. Si vous n'avez pas entendu ce terme auparavant, cela signifie essentiellement que nous pouvons créer une valeur différente qui peut être suivie, représentée par des valeurs entières. C' est très facile à parcourir et nous aurons un état d'énumération pour chacun des différents états dans lesquels le joueur peut être. Cela signifie que nous pouvons stocker un état pour le joueur en fonction de ce qui se passe et définir l'animation du flip book une seule fois, fonction de l'état dans lequel nous sommes actuellement. Encore une fois, comme pour tout, si vous ne l'avez pas vu auparavant, cela aura beaucoup plus de sens que nous allons créer ce joli. Revenons dans notre photo de plans. Il s'agit essentiellement d'un type de plan directeur. Nous trouvons cela en cliquant avec le bouton droit de la souris, en allant aux Blueprints et énumération. Je vais appeler celui-ci e, appliquer un mouvement. Remarquez ici qu'il n'y a pas de soulignement. La convention de nommage pour les énumérations est E sans soulignement ici. Et puis le nom de ce qu'ils représentent, on pourrait appeler ça quelque chose comme les États du mouvement E, les états, tout ce que vous vouliez. Je pense que ce genre de chose fait passer l'idée. Et comme je l'ai dit, nous voulions essentiellement venir ici et nous allons créer un nouvel état d'énumération. Donc, vous pouvez voir que c'est tout à fait Berlin vide. Enfin, nous devons, nous pouvons appuyer quelques fois sur le bouton Nouveau et obtenir quelques recenseurs différents. Donc ça va juste se nommer automatiquement. Ce sont juste une représentation nommée et nous allons simplement en créer une pour chacun des différents états. Donc, je vais renommer, a besoin d'Idle, courir, sauter à plein. D' accord ? Donc, vous remarquerez que ceux-ci ne sont associés à rien. Ils ne fournissent pas un livre à papier. On ne leur attribue rien. Ce sont purement une représentation qui nous permet de mettre à jour facilement l'état actuel et de les suivre commodément au fur et à mesure que nous traversons notre logique. Nous leur donnons des descriptions si nous le voulions, mais ce n'est pas nécessaire. Et quelque chose qui est généralement une bonne pratique à faire aussi est de fournir une sorte d'état nul ou par défaut. Donc, je vais ajouter un état de plus et nommer celui-ci par défaut. Généralement si nous avons un coup de l'état, donc cela signifie que quelque chose a mal tourné. Donc, cela peut être comme une vérification que quelque chose n'a pas été mis à jour correctement. Pour une raison quelconque, ce serait un, par exemple, tous nos contrôles de mouvement de feutre et nous ne sommes pas retournés qui étaient dans aucun état du tout. Donc, cela signifierait que nous sommes comme quelque part entre Idle run, saut et plein, ce qui est quelque chose que nous n'avons pas tenu compte. Donc, nous allons définir ceci par défaut, et je vais juste cliquer sur cette flèche pour déplacer cela, parce que généralement ce sera le premier, um, état que nous fournissons. Donc si c'est fait, on peut fermer ça. Nous avons maintenant notre nouvelle variable, et c'est ce que nous allons utiliser comme un type de variable dans notre classe de joueurs. Donc, si nous revenons à l'option variables, nous allons cliquer sur ce nom, cet état de mouvement. Et pour le type variable, nous voulons utiliser la liste déroulante, trouver nos mouvements E ou E plan mouvement. Donc la chose que nous venons de créer un soi-même, et nous pouvons voir maintenant, si nous faisons glisser cela, nous obtenons notre broche variable. Et si nous faisons quelque chose comme utiliser notre note de sélection que nous avons vu quelques fois 9, nous pouvons voir que nous pouvons sélectionner des choses entre défaut, Idle, courir, sauter, et plein. Nous pourrions également définir cela comme une variable. Encore une fois, idéalement ce que vous voulez faire. On va entrer. J' ai bu ça à côté de l'événement. Commencez à jouer, déplacez cela un peu, et nous allons juste nous assurer que lorsque le jeu commence, nous allons définir ceci à l'état par défaut est un peu définit les valeurs par défaut de toute façon. Mais encore une fois, si nous avons un test quelque chose, disons que nous voulions juste tester le saut, alors nous pourrions oublier de réinitialiser cela à un moment donné. Il est donc bon de définir ceci sur une valeur par défaut pour commencer. Ensuite, lorsque nous mettrons à jour notre flip book, nous garderons une trace de ceci et mettrons à jour ceci en fonction de ce que fait le joueur. Donc, à l'intérieur des mises à jour de flip book, je vais me débarrasser de ce fini, on peut écarter ça. Nous allons réutiliser une partie de cela au fur et à mesure que nous traversons. Mais les souris à mort seront éviscées et retirées en un instant de la mise à jour flip book, nous pouvons redéfinir l'état du mouvement. Encore une fois, si vous n'êtes pas familier avec cela, si nous définissons juste une variable ici, cela va créer les stylos d'exécution entre les morsures de ceux-ci. Et nous voulons essentiellement que ce soit le retour d'une série de chèques. Donc, nous allons être très familiers d'ici la fin de cela avec notre note de sélection car cela peut fournir un code automatisé vraiment utile, facile à lire de différentes manières. Donc, ce que nous voulons faire est que nous allons définir ceci comme le retour d'un ensemble de logique en utilisant notre nœud select. Maintenant, la première chose que nous pouvons vérifier, encore une fois, nous avons beaucoup de tout ça prêt à partir. Nous pouvons commencer par vérifier si la place sur le terrain. Donc, voici comment une logique broyée. Donc je vais juste à Control X et Control V. Donc on a encore besoin de ça, donc on peut juste le réutiliser. Donc, c'est bien, si on est sur le terrain, c'est faux, bien sûr, ça veut dire que nous sommes inactifs. Donc, on va mettre ça à faux. Donc nous allons supposer que nous ne bougeons pas. Cela nous laisse encore plus de logique dont nous avons besoin ici. Donc, cela va être, cette vraie variable sera basée sur le retour de la prochaine note de sélection que nous utilisons. Donc, nous utilisons une autre note de sélection ici. On peut voir qu'il passe à travers les états du mouvement vers tout ça. Donc, ces broches attendent tous les états de mouvement. Et ce qu'on veut faire maintenant, c'est vérifier si on tombe ou non. Donc, si ce n'est pas le cas, ce qui signifie que nous allons passer à travers et vérifier la prochaine note de sélection. Nous voulons savoir si oui ou non nous trompons. Donc, encore une fois, nous pouvons contrôler X et Control V afin de savoir ce que nous réutilisons et comptabilisons tous les mouvements États que nous avons déjà examinés dans les frais généraux. Encore une fois, si c'est vrai, nous dupons. Nous sommes prêts, sachez que nous voulons savoir dans quelle direction nous plions. Donc, nous ne pouvons pas définir ceci pour sauter ou complet parce que cela pourrait être deux options. Donc, cela nous permet de savoir que c'est une autre option de sélection ici ou un autre scénario où la sélection et je vais juste travailler et ce sera le retour de ce crétin. Rappelez-vous que notre vérification positive ou négative permet le mouvement vertical. Encore une fois, Control X, Control V. Donc nous avons maintenant tous nos chèques. Donc nous savons que si cela revient, nous n'aurons pas besoin d'une moitié sélective. Cela signifie que si cela retourne vrai, alors nous trompons parce que nous obtenons une, une valeur négative juste ici. Donc, nous allons dire plein pour vrai et sauter pour faux. Donc ça explique notre mouvement de saut. Les différentes options qui peuvent en découler, ce qui nous laisse avec une seule option ici. Donc, pour cette sélection, nous savons que cela ne bouge pas. Donc on a une idole, ça veut dire que ça bougerait, mais sur le terrain, ce qui veut dire que ça va être notre logique de course. Donc on va entrer dans l'état de mouvement de R1. Et puis c'est que je tombais logique. Donc nous allons être dans l'état de mouvement de saut ou plein. Donc, nous pouvons laisser quelques commentaires juste pour que nous puissions facilement revenir à cela un peu plus tard. Donc je vais dire que celui-ci vérifie spécifiquement le mouvement. Je suppose que ce serait la vitesse dans laquelle on se déplace à défaut de savoir qu'on n'est pas dans les airs, alors on va vérifier le mouvement au sol. Donc, laissez une moitié commune de ça. Et celui-là, si nous ne bougeons pas dans les airs ou dans le sol et que nous retournerons au ralenti. Donc quelques beaux commentaires reviennent. Donc, vous nous rappelez juste ce qu'ils font et la meilleure façon de penser à ceux-ci, si c'est encore une fois complètement nouveau pour vous, c'est qu'ils sont un peu trompés à travers. Donc, comme cela est en cours de mise à jour , le premier et cela va faire, va sélectionner quels mouvements aiment définir cela. Donc, si la vitesse n'est pas égale à 0, alors nous ne allons pas simplement retourner la fausse tête, nous allons aller vérifier la prochaine note de sélection parce que cela signifierait que c'est vrai. Ensuite, nous allons vérifier cette logique. Encore une fois. Si ce n'est pas le cas, si c'est vrai, alors nous allons revenir en arrière et voir ce que pourraient être nos derniers chèques et notre aria. Et ça va nous donner un genre de mouvement. Donc, cela fonctionne déjà si nous avons eu la dernière étape, qui va être l'évaluation de notre flip book, et j'espère que ce sera le peu qui solidifie pourquoi cela peut être si utile. Donc, nous pouvons décrocher tout cela sélectionné, juste un de ces ensembles pour retourner les notes du livre ici. Donc Control X, Control V, idéalement capable de cultiver le sprite avec cela aussi bien. Donc on va accrocher ce sprite là-dedans. Nous allons le brancher ici et nous allons utiliser ce nœud de sélection utile une fois de plus. Donc ce que nous allons faire, c'est que nous allons sélectionner le flip book que nous voulons afficher en fonction de notre énumération que nous avons tracé. Donc, il va tirer d'ici à nouveau et sélectionner. Tout simplement. Cela va être vraiment, encore une fois, assez intéressant, je pense pour ceux d'entre vous qui n'ont peut-être pas vu cela auparavant, mais nous pouvons contrôler la traînée dans les états de mouvement dans l'index. Donc, nous allons obtenir l'état, et nous verrons que cela va automatiquement lire combien d'états différents cela a et de fournir un nœud de sélection pour chacun de ces états. Donc, cela signifie que nous pouvons vivre définir ce flip book juste une fois basé sur ce qui est retourné ici. Cela va être un bon signe tell à nouveau, donc nous allons laisser vide par défaut, laissant délibérément ce signe vide. Donc encore une fois, si jamais nous voyons que notre sprite ne joue rien, nous savons que quelque chose a mal tourné et nous n'avons pas mis à jour l'état. Sinon, nous pouvons prendre toutes ces valeurs que nous commençons ici. Nous allons brancher le ralenti au ralenti, le saut dans Jump, courir dans r1 et l'intervalle complet à peu près comme vous vous attendiez. Et puis assurez-vous qu'on puisse les voir. Et c'est vraiment notre machine d'état genre de configuration et prêt à partir. Vous avez dû vérifier ce qu'il fallait faire avec l'Animation du Lecteur. Ça veut dire que nous n'avons pas besoin de toute cette logique de branchement. On peut se débarrasser de toute cette nuit. Nous allons appeler la fonction de flip book une seule fois et passer le résultat de tout ce qui arrive à nos États de mouvement et comment cela est suivi. Donc, nous pouvons aussi voir cela dans un peu comment je vais ajouter une séquence ici, et vous verrez que cela se met à jour constamment afin que nous puissions imprimer la chaîne, juste que nous pouvons en quelque sorte visualiser aussi. Salut, c'est opérationnel. Nous pouvons convertir l'état enum en une chaîne et cela, quand nous jouons ceci, gardera une trace de ceci pour nous. Donc on ne passe rien, ce qui veut dire qu'on est en état d'inactivité. Si je saute, alors on saute et puis on dupe, Saute, plie et courir. Donc, tout cela est suivi en fonction exactement des mouvements de Highlight. État est en cours de mise à jour et basé sur à peu près les mêmes vérifications que nous avions précédemment. Mais plutôt que d'avoir des vérifications de branchement qui vont partout, nous avons maintenant ce type de flux logique de trois états complets basés sur ce qui est sélectionné et le calcul étant abstinent pour sélectionner le nœud. Ensuite, tout cela a été finalisé en définissant le flip book en fonction de l'état actuel du mouvement. Encore une fois, très facile à lire, très facile à gérer. Et cela signifie aussi que si jamais nous voulions ajouter autre chose, si nous ajoutons des choses comme un double saut ou une diapositive de loup, tout ce que nous avons à faire, nous n'avons pas besoin d'ajouter des instructions de branche supplémentaires. Habituellement, vous devez interrompre une autre vérification ailleurs. Prêt ? Briser le genre de flux de la logique que nous avions à passer au-dessus. Tout ce que nous devons faire, c'est retourner à nos mouvements. Ils ajoutaient deux choses nouvelles. Je dirais whoo, toboggan et double saut. Cela ajouterait immédiatement deux nouveaux livres juste ici. Et puis on peut juste exécuter une autre logique d'ici. Donc encore une fois, si nous sommes dans l'air et nous allons également glisser, alors nous aurions un autre noeuds de sélection vérifier pour cela et reviendrions soit sauter plein, presque comme ou si nous sautons et c'est la deuxième fois que nous l'avons appuyé avec écrit une autre légère note ici que nous avons juste momentanément sur le double saut, changer cet état de mouvement. Et encore une fois, cela sera mis à jour assez automatiquement pour nous. Et il n'y avait pas de véritable système automatisé pour cela. Mais je pense que c'est en quelque sorte arriver à cet état où cela semble peu réutilisable et flexible comme nous pouvons le faire pour ce genre de projet. Alors juste avant d'emballer ça, assurez-vous que nous y retournions. Nous ne voulons pas faire de sprint constamment. Si vous avez déjà eu une autre séquence, une autre exécution Ben de la séquence, nous pouvons faire un clic droit sur cela et supprimer la broche d'exécution sept, je fais juste le flip book et la mise à jour de rotation. Et il y a toujours assurez-vous que nous compilons et sauvegardons ceci. Nous n'aurons plus besoin que le mouvement du joueur soit ouvert plus longtemps. Et je pense que cela nous met dans un assez bon état où le joueur est à peu près une lampe de poche. Nous leur faisons faire tout ce que nous voulons de la manière la plus robuste que je puisse penser à le faire pour un petit projet comme celui-ci. Je pense que ce que nous pouvons faire maintenant, c'est que nous pouvons passer à l'interaction avec d'autres choses pour la maison, micros et les choses à utiliser ou les ennemis pour vraiment nous fournir tout type de danger ou de danger. Nous allons devoir commencer à implémenter une fonctionnalité de santé. 10. 10 - Santé des joueurs: Donc, avec le mouvement à peu près entièrement mis en œuvre sur la scène, je pense que c'est un bon moment pour commencer à regarder comment nous pouvons interagir avec d'autres choses dans le jeu que nous avons prévu. Donc, les ennemis, les micros, ils vont un peu nous soigner d'avoir ce concept de santé et de dommages. Nous pouvons donc commencer par ajouter un système de santé à notre joueur, ce que nous allons faire maintenant. Ensuite, nous allons examiner comment nous pouvons visualiser cela et faire en sorte que cela soit mis à jour en fonction de ce qui est en interaction avec le monde. Alors commençons par la santé est concept très simple. Nous allons suivre cela dans les flottants juste parce que je sais que ce sera plus facile pour nous d'implémenter cela avec le système de widget un peu plus tard, nous pourrions représenter cela comme une valeur entière, surtout si vous avez eu un système de santé où il est tout comme les cœurs ou quelque chose, vous prendriez une façon chaude à un moment qui serait parfait comme un int. Mais pour l'instant, je vais créer deux nouvelles variables de type float, une nommée santé par défaut, et une nommée Santé. Ensuite, nous pouvons compiler ceci afin que nous ayons accès à ces deux nouvelles variables. Et ce que nous voulons faire, c'est que je vais définir la santé par défaut à une belle valeur arrondie de 100. Donc, nous allons commencer avec une santé de 100, et la santé elle-même laissera à 0 pour commencer. Maintenant, sur le script de construction, vous pourriez faire est sur l'événement commencer jouer aussi bien. Mais généralement des choses comme ça, les gens aiment mettre dans le script de construction que nous sachions avant même de commencer à jouer, nous allons réinitialiser notre santé actuelle à la santé maximale que nous pouvons avoir ou à la valeur par défaut la santé. Donc, nous allons obtenir la valeur par défaut en faisant glisser le contrôle et en définissant la santé en faisant glisser et allons tout simplement définir Santé comme santé par défaut. Donc maintenant, nous savons que encore une fois, nous pouvons faire quelques tests si nous voulons décrocher ça. Mais dans le jeu principal, dans le jeu complet, si partout jouer avec les choses ici et nous voulions tester rapidement quelque chose entre les widgets et mettre cela à une valeur différente. Nous savons que lorsque nous arrêtons de jouer ou quand cela est mis à jour et le constructeur que nous allons remettre notre valeur de santé principale au maximum que nous voulons avoir. Pour le démontrer encore une fois, si nous appuyons simplement sur le Begin Play, nous commencerons à déboguer beaucoup, je pense qu'avec des chaînes d'impression, juste pour nous assurer que les choses ont du sens au fur et à mesure que nous traversons. Donc, nous pouvons simplement dire que notre santé sera imprimée à l'écran et nous commençons par le 100 santé. Donc c'est mon fils simple, c'est notre mise à jour pour avoir la santé. Nous avons maintenant ce concept. Bien sûr, nous voulons ensuite avoir le concept de dommages. Donc les dégâts sont très simples, et en fait, nous allons utiliser un événement qui vient pré-construit avec n'importe quelle classe d'acteur dans le jeu. Et c'est une fonction nommée n'importe quel dommage. Donc nous avons l'événement n'importe quel dommage, nous pouvons voir que la cible est un acteur. Et ce qui est génial, c'est que nous pouvons contourner un peu de casting et savoir exactement avec quoi nous communiquons quand il s'agit de systèmes endommagés. Nous pouvons en fait simplement dire si quelque chose a une fonction sur elle qui s'attend à avoir des dommages gérés, refroidir la fonction de tout dommage, passant quelques informations, généralement les montants de dommages et laisser cette séance d'entraînement de classe et un cette logique qu'il est censé contrôler. C' est une très sorte d'approche orientée objet à la programmation. Il découple beaucoup de références, peut garder vos projets chez IDEO et plus facile à entretenir et économise également, dans certains cas aussi sur les performances. Donc, ce que nous allons faire chaque fois qu'un montant de dégâts est passé, nous allons mettre la maison actuelle à une nouvelle valeur. Nous allons donc évaluer cela et nous voulons que ce soit la santé actuelle. Donc nous allons obtenir la santé actuelle moins un flotteur, ce qui sera les dégâts transmis. Donc si nous avons un 100 santé 20 est passé. Nous allons transmettre cela à notre valeur pour la santé ici, et nous en aurions 80. Maintenant, encore une fois, nous pouvons faire du débogage ici. C' est toujours agréable de déboguer les choses au fur et à mesure que nous traversons. Donc, je vais créer un temporaire et met, généralement je ne créerais pas et met dans le graphique d'événements ou même en dehors des paramètres du projet. Mais parce que ça va être temporaire, je me souviendrai juste de l'enlever plus tard. Et disons que nous allons appuyer sur H. Donc nous allons trouver la liaison de clé pour h, H pour les sorties. Et chaque fois que nous appuyons sur ça, nous allons appeler le pli tout dommage ou infliger des dégâts. Et la raison pour laquelle cela s'appelle tout dommage si vous n'êtes pas familier, c'est que nous avons des types différents. On pourrait donc lier ça aux dégâts du point d'événement, aux dommages radiaux. Donc, si nous utilisons des dégâts, cela signifie que quel que soit le type de dégâts qui nous est transmis, cela sera déclenché et ôtera la santé. Donc, nous allons juste appeler la fonction d'application des dégâts par défaut, l'acteur que nous voulons endommager. C' est un peu étrange, mais ça va être notre moi. Alors rappelez-vous que c'est juste une fonction de débogage ici afin que nous puissions vérifier notre système de santé fonctionne et les dommages que nous voulons transmettre, disons que 20 unités de dégâts que j'ai mentionnés il y a un instant. Et si nous le voulions si nous voulions vérifier différentes choses comme qui les dommages ont été causés par ou provoqués par aussi. Ce serait pour des choses comme si vous aviez des décalages différents, quatre types de dégâts. Donc des dégâts balistiques contre des dégâts explosifs et des choses comme ça. Vous pourriez savoir ce que l'initiale. Donc, ce n'était pas si vous deviez appliquer la totalité des dommages ou comme une version modifiée basée sur cela. Encore une fois, on va faire un simple type de dégâts. Oui, Vingt unités de vol de dégâts. Et ce que nous voulons faire, c'est quand cela est refroidi, je vais faire une autre chaîne d'impression. Et nous allons imprimer la valeur de notre santé actuelle. Et cela va avoir quelques problèmes que je vais résoudre un instant et vous verrez ce qu'ils sont pendant que nous sommes en train de déboguer. Donc, nous compresser H et nous pouvons voir que les dégâts sont refroidis à 0. Donc le plan ne devrait pas être mort ? Si nous pressons de vous haïr encore quelques fois, nous allons dans les valeurs négatives. Donc, ce que nous voulions faire pour arrêter une telle bizarre qui se produirait où nous pourrions potentiellement tuer le joueur après qu'il ait déjà été tué, nous allions cela à une certaine valeur. Donc, nous allons tirer d'ici, va serrer cela à un vol, fera en sorte que le minimum est 0. On ne peut donc jamais dépasser le seuil 0. Et le maximum que je vais définir pour être la santé par défaut. Donc, si nous avons utilisé cela d'une manière où nous, une chose très commune que vous verrez est que les systèmes de santé peuvent fondamentalement passer dans des dommages négatifs. Donc, vous pourriez passer moins 20 points de dégâts. Évidemment, un moins, un moins et un moins sera un positif, donc vous commencez à ajouter sur cette façon la santé à votre joueur. Nous n'entrerons probablement pas dans quelque chose de aussi déroutant dans cette playlist. Nous allons juste ajouter une fonction AddHealth très simple. Il y a des problèmes qui viennent avec essayer d'utiliser le système de dommages comme système de guérison aussi. Une partie de la logique, surtout si vous commencez à ajouter des modificateurs et à essayer de changer les choses comme et devenir un peu confus. Mais pour tenir compte de cela, nous pourrions nous assurer que nous ne laissons rien passer une valeur à satis, essentiellement tricher, je suppose que au-delà de notre maximum à la santé par défaut Valley. Et la dernière étape que nous voulons ajouter dans le concept de réellement mourir. Donc, quand nous arrivons à cette valeur 0 de santé, nous allons vérifier quelques choses pour savoir si les joueurs sont morts et créer une nouvelle fonction prête pour cela. Donc nous allons créer une nouvelle valeur booléenne ici, et je vais appeler celui-ci B est mort. Donc, il peut être utile de suivre les états des joueurs semble un peu évident, mais nous voulons à nouveau éviter des choses comme si la plante est tuée puis ramasse, comment pouvons-nous leur permettre de relancer ? Et si oui, et les dégâts encore, peuvent-ils mourir une seconde fois ? Donc, pour éviter quelque chose de bizarre comme ça, fera en sorte que cela soit évidemment faux. On ne veut pas qu'ils commencent à mourir, mais ensuite. On a une certaine valeur, alors on va vouloir définir ça pour être vrai. Donc ce qu'on va faire, c'est faire une vérification de succursale ici. Et nous allons dire si la santé actuelle, plutôt que de tirer de cette épingle, vous pourriez, si vous le vouliez. J' aime bien avoir la variable supplémentaire, comment nous pouvons contrôler glisser ceci dans mon plus cher ou quoi que ce soit, et ensuite nous pouvons faire une comparaison. Donc, si c'est inférieur ou égal à, et encore une fois, certaines personnes trouveront ce programme un peu bizarre. C' est que vous voulez, vous pouvez dire moins ou égal à si vous le vouliez, parce que nous avons cette valeur agglutinante que nous ne devrions jamais obtenir en dessous de 0. Mais encore une fois, cela peut changer à tout moment et d'autres programmes pourraient entrer, trouver qu'ils ne veulent pas que cela soit aggloméré. Mais bien sûr, vous voulez probablement que quelque chose de moins de 0 soit mort. Donc, compte tenu de choses comme ça, je vais juste dire moins ou égal à 0 car la santé va être classée comme morte. Donc, ce n'est pas un oublis de programmation. C' est juste quelque chose que j'aime faire parce qu'on ne sait jamais comment le projet va se dérouler à l'avenir. Comme je l'ai dit, tu pourrais travailler avec quelqu'un d'autre. Ils pourraient entrer et décider que cette touffe n'est pas pertinente, pas utile, ou ils veulent utiliser la pince d'une manière différente, auquel cas vous pourriez commencer à entrer en chiffres négatifs et toujours pas avoir votre plaid mourir. Donc si c'est vrai, alors on va dire que c'est un joueur mort. Et encore une fois, juste pour cette sécurité supplémentaire, probablement pas quelque chose dont nous avons besoin dans un projet aussi simple, mais je vais dire que nous ne pouvons le faire que si la santé est inférieure ou égale à 0. Et avec elle dans un chèque et booléen. Et nous ne sommes pas déjà morts. Donc, nous pouvons dire, est que ce n'est pas égal à vrai. Et une façon facile de dire que, désolé, est de simplement dire n'est pas vrai, donc pas booléen. Donc, si nous ne sommes pas déjà morts et que la santé est inférieure ou égale à 0. Encore une fois, c'est le genre de chèques que vous voulez jeter juste pour vous assurer que vous pouvez avoir des choses bizarres. Et je l'ai vu dans certains jeux où ils n'ont pas fait ce genre de chèques. La façon dont je compte faire ça, je pense qu'on aura comme une animation de Mario ou de mort sonore. Donc, quand tu mourras, tu seras jeté dans les airs. Vous aurez l'entrée supprimée du lecteur. Et vous allez en quelque sorte animer l'écran de ce que j'ai vu dans certains jeux parce qu'ils n'ont pas fait un simple contrôle comme ça, un autre projectile va les frapper. Je suppose qu'ils n'ont pas non plus fait inégal pour vérifier ou vérifier agglutinant. Et ce qui se passe, c'est que l'automatisation de la mort continue de jouer et continue essentiellement rentrer dans la boucle de la mort jusqu'à ce qu'ils cessent de se faire frapper par quelque chose, même si techniquement ils sont déjà morts cette fois. Donc, il peut sembler un peu exagéré, mais ce sont juste un peu gentil, simples vérifications sur l'annonce que la sécurité. Ils ne vont pas avoir un jeu à la recherche bogey où vous pouvez mourir plusieurs fois dans une seule vie et c'est la pire chose aussi. Surtout si vous avez un jeu basé sur la vie, alors cela pourrait commencer à enlever la plupart des gens des vies, même si vous n'avez même pas répondu à cette étape. Donc si c'est faux, on n'a pas besoin de faire quoi que ce soit un outil. Bien sûr, si c'est faux, nous allons toujours courir autour du niveau de bien faire. Vous pourriez, si vous le vouliez, c'est peut-être là que, si c'est faux, vous avez subi des dommages. Vous pouvez jouer un effet de retour ou une animation clignotante. Donc, dans une sorte de temps d'invincibilité, ce genre de chose qui peut être fait ici. ce que nous voulons considérer, si c'est vrai, nous allons jouer une nouvelle fonction. Donc nous allons ajouter une nouvelle fonction ici et nous allons juste appeler ce joueur mort. Et maintenant, au moment où nous n'avons rien à placer dans les cheveux, donc je vais ajouter une autre chaîne d'impression. Ce sera comme je suis sujet un peu plus tard. Mais encore une fois, juste pour que nous puissions tester cela va fonctionner. On va faire la fonction iodure. Refroidissez de cela et nous allons juste jouer des boutons, imprimer la chaîne. Alors, revenant à nouveau, compresser h jusqu'à ce que la santé soit descendue jusqu' à ce que nous puissions voir un autre joueur est mort, et cela a été suivi correctement. Nous savons donc que tout cela fonctionne comme nous le voulions. Et la chose importante encore, pour s'assurer que ceux que j'ai valu la peine, nous pouvons continuer à appuyer sur H et nous ne recevons pas plusieurs appels de fonction iodure. Donc nous savons que ce n'est pas un coffre-fort autorisé. On ne peut pas continuer à entrer dans une sorte de mort infinie. C' est donc à peu près aussi complexe que notre système de santé doit l'être. Nous pourrons revenir et apporter des améliorations plus tard. Je pense que la prochaine chose sera d'ajouter une sorte de visualisation au système de santé grâce à l'utilisation de widgets. Donc c'est probablement tout ce que nous avons à faire en deux. Et maintenant, nous pouvons fermer la classe des joueurs. Je encore une fois, assurez-vous de compiler et de sauvegarder un point. Il semble que j'ai eu une carte de tuiles restantes pour la justice. Je vais juste supprimer l'ancien et m'assurer que nous avons est le bon ici. C' est parfait. Et cela signifie que quand je suis bon d'aller de l'avant et de créer nos widgets pour la santé du joueur. 11. 11 - Widget de santé des joueurs: Pour commencer avec ce processus, nous allons juste créer un nouveau dossier, que je vais cool interface utilisateur placera ceci dans la base du dossier Blueprints. Et puis à l'intérieur d'ici serait juste créer une nouvelle classe de widget. Trouvez-les, nous allons cliquer avec le bouton droit de la souris. Nous allons aller aux options de l'interface utilisateur, donc pas sous Blueprints cette fois, je vais aller à l'option Widget Blueprint ici, la convention de nommage pour ces classes sera le soulignement WPP. Donc Widget Blueprint soulignement, et puis le nom de la classe, je vais juste appeler celui-ci que la santé du joueur. A l'intérieur de la classe. Si vous n'êtes pas familier, nous allons faire un bref aperçu ici. Mais ce que nous avons au milieu ici, c'est une toile. C' est donc un peu comme l'espace de travail dans lequel nous pouvons ajouter nos différents éléments pour constituer l'interface. Dans ce cas, ce sera juste un bot de santé. Mais cela pourrait aussi faire des choses comme les menus. Nous pourrions ajouter des boutons, du texte, et bien d'autres choses. Donc cette toile ici, et on peut voir qu'elle est représentée à gauche. Nous avons notre toile. Et si nous devions faire glisser des choses sur la toile, nous verrons que cela apparaît dans cet espace d'écran juste ici. Dessiner la santé dérange. Ce qu'il nous faut, c'est une barre de progression. Donc, c'est à peu près parfaitement mis en place. Nous avons le contrôle de remplir ça. Nous pouvons donc le remplir avec une valeur qui, dans ce cas, représentera notre santé. Je vais juste traîner ça pour rendre ça un peu plus long. Et je pense que ça devrait être une taille assez décente. Maintenant, la façon dont cela fonctionne est que nous avons à cette valeur de pourcentage juste IN ici sur le côté droit lorsque nous avons cette sélection. Et fondamentalement, alors que nous traînons cela de haut en bas, nous avons le contrôle sur la façon dont c'est plein. Maintenant, nous pouvons voir que c'est une valeur normalisée entre 01. Nous devrons donc faire un calcul rapide un peu plus tard pour prendre en compte notre valeur de santé et faire en sorte que cela s'affiche entre une valeur de 01 en fonction de la quantité de santé que le joueur a laissée. Maintenant, une autre chose est que si vous avez vu un de mes autres contenus ou tutoriels, vous pouvez être familier avec mon dédain pour ce vote dégradé genre de texture parapluie ici. Donc la chose la plus importante et la première chose que nous allons faire est que nous allons descendre aux parents, aller à l'option de style ici. Et nous voulons changer l'image de fond et l'image fédérale. Donc nous n'avons pas eu ce truc bizarre de dégradé en haut ici, et il va zoomer dessus aussi. C' est une belle façon de sauter indice et de savoir comment mettre à jour et changer le style de votre barre de santé. Si vous aviez quelque chose de coutume que vous vouliez apporter dans le moteur pour l'utiliser. Donc je n'ai rien fait pour celle-là. Je suis généralement fait avec ces juste pour les faire paraître un peu plus moderne et opter pour cette approche minimale est que nous allons abandonner le festival de fond. Idéalement, nous aurions une texture que nous avons apportée, surtout pour quelque chose comme ça et j'ai un peu une texture de pixel, est-ce que ce serait plutôt bon car nous n'avons pas ça ? Et bien sûr, utiliser les images que nous avons ne va pas vraiment mouiller. Ce que je vais faire à la place, c'est aller à ces options de vue ici. Je vais les basculer pour afficher le contenu du moteur. Je vais chercher un carré blanc. Et nous pouvons voir ici, nous avons la texture carrée blanche et ça va être parfait. Peu importe combien il est grand parce que tout est mis à l'échelle en fonction de ces options juste ici, nous pouvons les voir. J' ai juste une texture blanche en arrière-plan qui laisse encore ce coin. Donc une chose de dégradé pour le remplissage. Donc encore une fois, dans le style, je vais juste copier ceci, nous pouvons cliquer avec le bouton droit de la souris. Copiez ceci, puis collez-le dans l'image fédérale ici. Et on peut voir que c'est remplacé aussi. Maintenant, dans ce cas, pour une raison quelconque, ça n'a pas vraiment fonctionné correctement. Donc, si cela se produit, alors nous pouvons simplement sélectionner l'un des autres et peut-être revenir juste pour que nous utilisions la même texture sur les deux. Nous devons donc l'extraire moins du contenu du moteur de cette façon. Nous allons donc utiliser les mêmes carrés blancs supplémentaires dans les deux fentes. Donc, nous pouvons bien, cela semble immédiatement beaucoup mieux qu'il ne l'a fait et fonctionne toujours et exactement de la même manière parce que cette mise à l'échelle se passe automatisée en fonction des images transmises. Donc, nous avons toujours l'option complète de changer cette barre de pourcentage et cela échouera ou épuisera complètement notre santé dès maintenant une fois que vous avez franchi cette étape, la prochaine chose que nous voulons faire est de nous assurer que nous revenons à la vue Options, puis Afficher le contenu du moteur. Sinon, on va avoir beaucoup plus d'informations dans cette barre de recherche. Ensuite, nous voulons, en général, je pense que les choses comme la santé ont une couleur assez uniforme, que je pense que la plupart des gens seraient d'accord aussi vert que je vais changer cela de bleu et changer cela à une sorte de teinte verte à jaune ici. Et encore une fois, je pense que ce sera plutôt bon pour notre système de santé. Maintenant, une autre chose que vous pouvez changer si vous n'avez jamais utilisé la barre de progression auparavant, vous pouvez également changer. Cela va mettre à jour la couleur de la santé que nous changeons ce pourcentage plus léger. Si vous vouliez également changer la couleur de fond, nous pouvons également donner à notre style la couleur. Donc, nous allons changer la teinte de l' arrière-plan et nous pouvons rendre ce quelque chose de plus sombre ou plus léger ou quelque chose de complètement différent selon la façon dont vous vouliez que cela ressemble. Et je vais juste aller pour un beau fond gris simple. Faites glisser ceci vers un gris légèrement plus foncé juste ici. Peut-être pas plein noir, mais un gris foncé avec un beau bot de santé vert vif devrait sembler assez bon. Donc, pour le pourcentage, nous pouvons laisser cela parce que nous allons faire tout cela dans le code. Mais cela nous donne une belle façon de visualiser ce qui se passe avant que nous n'obtenions le code. Maintenant, ce que je voulais faire pour le moment, bien sûr, si nous allons de l'avant avec ça, nous n'avons pas ça refroidi. Nous ne verrons pas cela dans le jeu. Donc, avant d'ajouter une logique ici, et revenons à notre classe de joueurs. Et à l'intérieur de la classe des joueurs, nous pouvons commencer à créer notre budget santé et nous assurer que nous affichons ceci. Donc, c'est assez simple. Si vous n'avez pas travaillé avec des widgets auparavant, ce que nous voulons faire est sur le Begin Play, nous voulons créer un widget. Donc, nous allons juste appeler la fonction create widget. Et à partir de cela, nous voulons passer dans le widget pour créer, qui va être notre WPP soulignent la santé des joueurs. Et beaucoup de gens pensent que cela fonctionnerait maintenant si vous appuyez sur Play juste pour vérifier que ce n'est pas le cas. Et c'est parce que nous avons créé l'objet, mais nous n'avons rien fait avec. Donc, cela existe, mais nous ne lui avons pas dit d'afficher ou de se comporter. Donc, ce que nous voulons faire est de la valeur de retour maintenant que nous avons cela, nous allons promouvoir ceci à un festival variable parce que nous allons l'utiliser un peu plus tard. Nous allons vouloir refroidir diverses fonctions et mettre à jour les valeurs de notre système budgétaire plus tard. Donc, il va être utile d'avoir une référence à cela. Donc, nous allons appeler ceci un widgets de santé, réf. Donc, nous avons une référence et I2, le budget de la santé Chaque fois que nous devons faire quelque chose avec cela à nouveau. Et puis à partir d'ici, nous allons appeler une fonction spécifique au widget, qui est Ajouter à la fenêtre d'affichage. Donc, nous avons l'option de clôture et cela prend tout simplement cet objet et nous allons dire au système de l'afficher sur l'écran actuel du lecteur. Donc, cela signifie maintenant pour venir, nous pouvons voir que nous avons notre widget. Bien sûr, il s'est passé quelque chose d'étrange. Mais nous pouvons voir en haut à gauche que nous avons notre santé, ce qui montre comme prévu. Il semble que quelque part le long de la ligne, la fonction de flip book de mise à jour a quelque peu rompu avec l'animation de saut. Donc, il semble que je n'ai tout simplement rien rempli dans le lot de sauts, juste au cas où vous auriez le même problème. Je vais garder ça dans la vidéo. Cela aurait dû être assigné. Oh, oui, je pense que ça fonctionnait auparavant, mais ça ferait juste double chèques. Maintenant, nous pouvons sauter avant androgène et tout cela est parfaitement bien juste au cas où vous obtenez le même problème là-bas. La chose principale était l'accent de la santé Bahasa, mais pas avoir la partie santé affichage. Bien sûr qu'on peut faire des dégâts. Nous avons toujours notre fonction pour refroidir nos dégâts, notre genre de débogage. Donc, nous pouvons voir que j'ai appuyé sur H plusieurs fois que nous avons au débogage pour que le joueur est mort. Mais bien sûr, ce n'est pas sombrer avec nos widgets de santé. Ça va être la prochaine étape. Donc, de retour dans la classe widget, nous avons juste besoin d'ajouter quelques fonctionnalités pour enregistrer quand une valeur de santé a été mise à jour. Et je voulais vous montrer tout d'abord, la façon dont je vois encore beaucoup de gens faire cela dans de tels tutoriels en ligne. Et c'est une habitude que je veux aider les gens à sortir et c'est une sorte de mauvaise pratique. Et je vais vous montrer pourquoi pendant que nous traversons. Donc nous allons le faire le festival de mauvaise façon juste pour que, vous savez, pour éviter cela dans les manières autour de cela, si vous le dites à l'avenir, et ce que vous pourriez voir est que les gens descendent à la valeur de pourcentage ici et nous avons une liaison et nous l'avons combiné à une nouvelle fonction. Donc, si nous appuyons sur ce bouton, cela nous emmène du design quelques uns ici au graphique si vous. Donc, le design des années où nous ajoutons toute notre visualisation, tous nos éléments, et nous étendons ce widget. Et puis le graphique est un peu comme notre graphique d'événements essentiellement dans n'importe quel autre plan. Donc, c'est là que nous mettons toute notre logique et que l'ajout de cette liaison crée automatiquement une fonction pour lier la valeur de retour de cette fonction à nos éléments widgets. Donc, dans ce cas, il s'agit d'une valeur, valeur flottante car elle est liée à la valeur de pourcentage flunked. Maintenant, la raison pour laquelle c'est mauvais, ce que vous trouverez les gens faire, c'est qu'ils auront le poème du joueur. Nous utilisons donc la fonctionnalité par défaut. Et disons qu'ils vont simplement faire quelque chose de simple comme casting pour s'assurer que c'est la base de joueurs. Nous savons qu'à l'intérieur de la base de joueurs, nous avons nos valeurs de santé. Ainsi, ils peuvent ensuite accéder à la valeur Santé. Et puis ils vont brancher ça, potentiellement brancher ça. Ça ne va pas marcher parce que ce calcul que j'ai mentionné, nous devons, pour normaliser cette valeur. Mais encore une fois, on ne va pas garder ça. C'est plutôt mauvais. C' est juste un exemple de la façon de ne pas le faire afin que vous sachiez quoi éviter et alors nous verrons pourquoi. Donc, ce que cela fait maintenant, nous enroulons ceci à la classe noire avec casting, puis vérifions quelle est la valeur de santé actuelle. Donc, si nous appuyons sur Play, nous pouvons voir que c'est maintenant mis à jour. Et je vais devoir appuyer beaucoup sur ça et ensuite la santé va descendre à 0. Donc, nous savons au moins avoir la mise à jour. Mais voyons pourquoi ce n'est pas une si bonne idée. Donc, ce qui se passe réellement ici, c'est que cela fonctionne un peu comme un événement tick. Donc, si nous jetons la chaîne d'impression ici, et nous allons juste imprimer l'élément ne correspond pas à ce que cela dit. Et puis appuyez sur Play. Même lorsque l'état de santé n'est pas mis à jour, même lorsque nous simplement complètement inactif et ne pas faire quoi que ce soit un outil. Nous avons notre fonctionnalité liée ici, juste en vérifiant constamment en cours d'exécution. Et dans ce cas, non seulement en cours d'exécution constante, mais constamment en train de lancer dans une autre classe, rafraîchissant constamment ce type d' emplacement de mémoire et toutes les variables qui pourraient être dans cette classe d'être transmises à lui de juste pour vérifier que la valeur de santé n'a pas changé. Donc, c'était vraiment tout le point de ce côté tangent ici est chaque fois que vous voyez des gens si vous tombez hors du contenu et ils recommandent d'utiliser une liaison, un peu sauter ce peu, Brady, pas de très bonne pratique. Et ce que nous voulons faire, c'est que nous allons délier cela, donc nous allons supprimer cette liaison. Vraiment, n'utilisez jamais ce bouton. Je pense que c'était une sorte d'héritage de transfert sur quatre. Tests qui n'ont jamais été supprimés car ils ne sont pas destinés à faire partie du pipeline de développement. Et tandis que le casting et les ticks d'événement ne sont pas complètement sacrilege, ils peuvent être utilisés dans les jeux parfaitement bien si vous imaginez que vous aviez un widget entier et je veux juste bouton Santé Bot et cravate qui Amanda, vous jouez tous un texte. Les icônes et tout autour d'une lampe de poche plus complètement genre de widget. Stage, pas seulement faire cette liaison et casting une fois que vous pourriez le faire cinq, 10, 15 fois par widget juste pour vérifier que rien ne s'est passé. Donc j'espère que ça a un peu de sens pourquoi on ne va pas faire ça. Donc, ce que nous devons faire pour ranger cela, nous allons juste supprimer complètement cela, va se débarrasser de cette fonction de pourcentage. Nous pouvons revenir en arrière aussi, et nous allons renommer notre bot de santé de barre de progression pour jouer un bot de santé. Juste parce que quand nous revenons à la section graphique que non montre le nom et une façon plus logique, nous savons exactement ce que nous regardons. Donc nous en voulons un autre fonctionnellement, ce que nous allons faire c'est que nous allons déposer ça dans une fonction. Nous allons nommer cette mise à jour santé. Et c'est un peu plus une approche manuelle qui prend un peu plus de temps pour le faire de cette façon. Mais encore une fois, nous économisons cette performance et nous avons déjà un peu de contrôle total dans l'ovale quand cela est refroidi. Donc, au lieu de cela, ce que nous allons faire est de faire glisser dans la santé du joueur en référence les actifs qui sont utilisés dans le concepteur. On va s'éloigner de lui. Je vais refroidir avec ces fonctions de pourcentage, non ? Donc, le pourcentage, rappelez-vous est la chose que nous pouvons glisser de haut en bas normalisée entre 01 et nous voulons juste brancher ça. Donc, chaque fois que cette fonction est refroidie, ce qui ne devrait être fait que lorsque la santé est en train de changer. Donc, quand nous recevons un bonus de santé ou quand nous subissons des dégâts, nous allons ensuite passer cette épingle à la fonction santé et nous pouvons l'appeler à travers. Maintenant encore une fois, rappelez-vous que cela s'attend à un nombre entre 01 et notre santé est actuellement entre 0100. Donc, comme nous l'avons vu précédemment, ce que cela fait c'est pour le moment si nous continuons à refroidir, cela ne va changer que quand il est plus d'un ou moins d'un, ce qui est dans notre cas va être quand il atteint 0. Donc on ne va pas voir le, le robot de santé se déplacer de haut en bas. Au lieu de cela, ce que nous voulons faire pour normaliser la valeur est assez simple. Nous allons traîner cela parce que nous n'avons pas une valeur de vol appelée en pourcentage et nous allons juste changer celui-ci pour qu'il s'appelle Santé. Et puis tout simplement nous voulons une autre valeur, qui est la santé par défaut ou maximale. Donc, je vais ajouter une autre valeur ici et changer ceci un flotteur et nommer celui-ci santé max. Fondamentalement, une valeur normalisée va juste être notre valeur actuelle divisée par la valeur maximale. Donc on va tirer ça d'ici. Et nous allons diviser notre santé par notre santé maximale et le plug-in que la valeur normalisée. Donc, cela va toujours retourner une valeur comprise entre 01. Si cela n'a pas tout à fait de sens, il suffit de jeter une chaîne d'impression à la fin de cela et de faire quelques tests et de voir ce qui se passe quand nous passons par et appelons cette fonction dans un instant. Mais fondamentalement, si nous avons une santé de 50 et que nous divisons cela par 100, bien sûr, nous allons obtenir 0,5. Donc c'est comme ça que nous obtenons cette valeur de 0 à 1 quand ne passera jamais cette plage. Alors la façon dont nous utilisons cela, donc c'est en fait la fonction de santé prête à aller pour nous. Rappelez-vous que nous avons cette référence sur la classe de joueur, donc nous reviendrons ici. Et ce que nous voulons faire, c'est quand nous commençons à jouer, créons une fonction que nous allons appeler sur le Begin Play Festival nommée mise à jour santé. Ok, et à l'intérieur de la mise à jour santé, nous allons obtenir notre référence de widget. Nous allons appeler cette fonction ici, qui était à nouveau la santé de mise à jour. Et nous voulons simplement transmettre ce qu'est notre santé actuelle. Et puis rappelez-vous que cela va être divisé par la santé maximale, qui dans ce cas est notre santé par défaut. Parce que rappelez-vous dans le script de construction en définissant l'état de santé par défaut. Et nous sommes également dans le système de santé, nous nous assurons que nous ne dépassons jamais le maximum ne sera jamais plus que la santé par défaut. Donc c'est pour ça que nous avons mis en place de cette façon. Et donc on va se réunir neuf. Et la raison pour laquelle je fais ça sur Begin Play est de me souvenir de la façon dont nous pouvons jouer avec le widget ici. Donc, comme je l'ai dit, est vraiment agréable que nous pouvons entrer, vérifie les différents styles si jamais nous voulons vérifier la couleur de l'arrière-plan de notre barre de santé, nous pouvons toujours jouer avec ce pourcentage ici. Nous pouvons ensuite entrer et jouer avec différentes couleurs sur des images différentes. Et nous pouvons oublier de réinitialiser ceci à la totalité ou au minimum. Donc, ce que nous voulons faire dans notre classe de joueurs est de nous assurer que nous avons le contrôle total sur cela. Donc, je ne commencerai à jouer qu'une fois que nous aurons créé les widgets. Nous allons aussi refroidir notre mise à jour, notre fonction, et nous allons laisser cela faire son. Maintenant. La prochaine chose est que quand on subit des dégâts, on peut aussi le faire ici. Alors entre notre brunch pour vérifier si nous sommes morts ou non. Encore une fois, chaque fois que nous avons la santé en cours de mise à jour, nous allons vouloir refroidir les fonctions d'état de mise à jour. Donc nous allons juste tirer de lui, refroidir la fonction de mise à jour ici. Et rappelez-vous que si vous faites cela entre deux broches d'exécution, il remplira toujours cet envoyé d'exécution d'entonnoir. Alors maintenant, ce qui devrait arriver est bien que nous n'avons pas mis à jour ou modifié notre widget ici. Dans l'autre type d'élément visuel de cela, nous allons appeler ce jeu fonctionnel qui va découvrir que nous avons la pleine santé pour les travaux de santé. Et puis si nous jouons sans système de santé de débogage, sorte que le bouton de débogage que nous avons eu les dommages appliqués, alors nous devrions voir notre widget à être mis à jour. Donc ici, nous avons la presse santé complète H, et cela baisse d'un petit pour cent basé sur ce que j'ai ici. Donc 20%, qui regarde les droits d'octet pour cette valeur normalisée. Si je fais 50 dégâts, donc la moitié de notre santé, alors on va perdre la moitié d'un bar, et la moitié suivante on est morts. Donc encore une fois, nous pouvons juste vérifier que notre bouche fait définitivement ce qu'il faut. Et disons que 1909, nous devrions avoir comme la plus petite tranche de la Santé. Et nous pouvons voir qu'il nous reste à peu près une maison et encore une fois, et nous sommes morts. Nous savons donc que cela fonctionne correctement. C'est la chose principale. C' est pourquoi nous voulons que ces fonctions de débogage pratiques soient juste pour vérifier quand nous faisons de nouveaux systèmes, qu'ils sont implémentés correctement avant même que nous ayons des ennemis et des choses comme ça, nous pouvons facilement tester des choses avec cette nuit. Ce que je vais faire, c'est aussi, c'est un peu difficile à trouver. Je vais juste appeler ce débogage dans un commentaire et je vais rendre ça rouge. Je n'oublierai donc jamais qu'à un moment donné nous voulons probablement supprimer cela. Nous ne voulons pas que cela soit expédié parce que bien sûr nous ne voulons pas que les plantes jouent avec le clavier et qu'elles prennent soudainement la santé. Donc, nous reviendrons et nous rappellerons de supprimer cela quand nous aurons fini avec le système de santé. Donc, de retour dans les widgets, c'est à peu près tout. Donc, nous vérifions juste. Nous avons tout ça, rangez-les et nous avons vraiment besoin de venir ici. Nous pouvons voir Nous allons juste normaliser une valeur, assurant que nous n'avons pas notre liaison à nouveau, cela a du sens pourquoi nous ne lions rien à une fonction widget, que ce soit un bouton, du texte ACEF, de la progression acheté et rien n' a vraiment besoin d'être liant est plus agréable d'avoir ce contrôle total. Et vous pouvez voir maintenant que cette fonction est seulement refroidie à ces moments spécifiques que nous pensons que quelque chose pourrait avoir besoin d'être mis à jour sur la santé des plans, donc sur le début de jeu. Et pour le moment dans le système de dégâts devrait être ce que nous devons faire dans la classe de widget et le joueur pendant un peu de temps. Donc ce que nous allons faire, en fait, nous allons utiliser le joueur dans un instant pour les dégâts ennemis. Donc, nous pouvons simplement fermer le widget classifier, assurez-vous que nous avons compilé et enregistré toutes nos mises à jour. 12. 12 - Base de ennemies: Donc, avant de sauter dans le système de santé et de dégâts du joueur lorsque vous interagissez avec les ennemis, essayant de le faire avant même que nous ayons quoi que ce soit pour vraiment le tester. Encore une fois, je pense que la meilleure chose à faire est en fait de prendre une pause de la classe de joueur à cette étape. Et nous allons mettre en œuvre la classe d'anatomie de base pour commencer. Et puis je suis retourné en classe et on peut vérifier ça contre le joueur quand ils interagissent les uns avec les autres. Donc, pour le moment, nous fermerons en fait la classe de joueur si vous avez toujours l'ouvert et à l'intérieur de tous les Blueprints photo OCR ajouter un autre dossier, ceci nous allons avoir quelques classes imbriquées ici. Oh cool, celui-là ennemis. Et bien que nous ne créions qu'un seul ennemi dans cet ensemble de vidéos, je voulais introduire l'idée de héritage et montrer comment nous pouvons créer une sorte de hiérarchie, tous les différents types d'entités où la classe de base compte beaucoup de fonctionnalités et de variables plus génériques. Nous allons donc prendre l'approche et puis vous pouvez facilement étendre cela à vos propres ennemis tels que des personnages de champignons ou un type d'art stationnaire, ennemis ou tout ce que vous avez vraiment voulu ajouter. Donc, à partir d'une classe de base, nous allons cliquer avec le bouton droit de la souris et maintenant nous allons créer une nouvelle classe de Blueprint. Et je vais en fait réutiliser la classe de caractères 2D papier à nouveau. Donc, si nous trouvons cela avec un caractère de papier, raison est que si nous en avons déjà fait un pour ajouter un type détaillé d'implémentations d'IA dans cela et cela aura tout prêt à aller dans ce système de mouvement de caractères, qui sera automatiquement être configuré pour tenir compte des volumes de navigation et élevé pour interagir avec eux. Non seulement cela, cela aura aussi nos flip books et tout le reste comme ça, que nous devons aller pour animer et mettre en place des choses et y compris la gravité du client capsule et tout ce que nous avons utilisé. Donc pour celui-ci, ça va être notre classe de base. Il s'agit de la classe parent dont tous les autres ennemis héritent. Donc nous allons appeler ça une base ennemie BP soulignée. Maintenant, ce que nous faisons à l'intérieur de la classe de base, nous avons essayé de garder la logique ici aussi générique que possible. Donc, nous rendons compte de tout ce que chaque enfant de cette classe pourrait avoir besoin de faire. Donc ce serait des choses comme le mouvement intentionnel, mais peut-être même cela est un peu trop spécifique parce que comme je l'ai déjà mentionné, l' une des deux premières idées qui me sont venues à l'esprit était les champignons ennemis qui auraient besoin d'une sorte de mouvement très probable. Et puis le second était l'ennemi des tartes. Donc, je suis déjà venu avec l'idée d'un personnage qui pourrait vouloir mettre dans qui ne déplace pas un outil qui pourrait être trop spécifique, mais ils ne feront que des choses telles que les valeurs de santé, une victoire, perdre une sorte d'état de mort lorsque la plante et les pièges avec eux, peut-être un état causant endommagé et des choses comme ça. Donc, c'est un peu plus générique que les classes enfants auront probablement besoin. Mais l'autre bonne chose à propos de l'utilisation de ce personnage de papier, nous avons aussi toutes les autres choses que les classes d'enfants dont nous avons besoin. Donc nous avons notre collisionneur de capsules. Donc, encore une fois, nous avons déjà les propriétés de collision de toutes les classes enfants est mis en place et prêt à partir. Et nous avons aussi les composants sprites. Donc encore une fois, toutes nos classes enfants vont avoir besoin d'être visuellement représentés en quelque sorte, probablement avec le sprite 2D papier parce que nous utilisons un jeu de plateforme 2D ont, donc encore une fois, cela a quelques-uns des composants déjà ici que nous sommes va avoir besoin à l'avenir. Et je ne vais pas remplir ça. La raison en est que cela va s'assurer que si nous avons un oubli de fournir une représentation visuelle pour notre enfant ou les classes héritées. Ensuite, en laissant cela vide, ça va être un indicateur très clair que dans la classe enfant, nous avons fait une erreur et oublié de faire quelque chose. Ce que nous aurons besoin d'inhaler est quelques variables. Donc ça va être nos traqueurs de santé. Cela va être très similaire à notre jeu une classe de personnages. Nous aurons une valeur flottante. Le premier, je nommerai une Santé par défaut. Et je vais copier ça. Donc contrôle et w pour copier ceci et nous allons juste appeler celle-ci santé. Et de la même manière, nous voulons que cela définisse toujours la santé au début pour être la santé par défaut. Et nous allons définir la valeur par défaut donnera à ceux-ci une valeur par défaut de 100 également. Nous pouvons changer cela en classes enfants, comme vous le verrez un peu plus tard. Mais nous supposons juste qu'ils commencent tous par un appartement à 100, comme le fait le joueur. La prochaine chose que nous allons vouloir faire est d'ajouter à nouveau un système endommagé, toutes nos classes enfants, tout ce qui hérite de cela va probablement devoir subir des dommages à un moment donné. On peut retourner dans le graphique des événements ici. Nous pouvons supprimer les fonctions dont nous n'allons pas avoir besoin, qui devrait être à peu près tout de naturellement et venir et ajouter le sur tous les dommages. Donc cette fonction que nous avons utilisée auparavant, l'événement de dommages, nous voulions faire les mêmes calculs, enlever la santé de ce qui est passé. Et en fait, en disant que nous pouvons juste revenir à notre joueur et à l'intérieur d'ici parce que nous avons, si vous avez fait la même chose que j'ai tout nommé de la même façon, nous pouvons en fait simplement pincer ça, donc nous allons copier ce d'une classe. Il réalisera que les noms correspondent et nous pouvons simplement passer cela en deux. Donc, je tous les jours à ce stade, encore une fois, nous allons pour une très sorte de minimum de base, MVP, minimum de produits viables pour ce projet. Mais c'est là que vous voudrez peut-être commencer à examiner des choses comme des composants, composants raisonnables comme un composant de santé, parce que nous copions déjà une sorte de logique entre les classes. Cela signifie donc que cela pourrait être utilisé comme une sorte de composant ou d'interface. Donc nous n'avons pas besoin de garder les lectures. Mais pour ça encore, on veut juste que les choses fonctionnent. Et ce n'est pas nécessairement une mauvaise pratique de codage, mais nous ne voulons pas non plus prendre des centaines de vidéos juste pour obtenir une plate-forme simple fonctionnent. Donc, cela va mettre à jour la santé de l'ennemi chaque fois que nous subissons des dégâts. Et nous avons déjà la prochaine partie de la logique prête aussi ici. Donc, nous ne montrerons aucune représentation de la santé visuelle. Nous pouvons sauter ce bit, mais nous pourrions aussi bien aller de l'avant et vérifier à nouveau la santé nous assurer que nous suivons si oui ou non avec cela, nous pouvons également copier ceci et nous allons nous assurer que nous n'avons pas copié la fonction mort du joueur, mais nous allons mettre en œuvre quelque chose de très similaire dans notre classe ennemie. Donc nous copierions tout ça reviendra ici. Nous allons coller ceci dans le graphique d'événements. Nous pouvons avoir un petit problème. Et c'est que nous n'avons pas encore fait ce booléen. Mais si jamais vous obtenez cela, vous pouvez voir que nous avons une ligne légèrement blanche au-dessus de cela, ce qui signifie que cette valeur n'existe pas. Si nous appuyons sur compiler, nous avons maintenant agréable et facile à réparer cela. Nous pouvons faire un clic droit quelque part près de cette ligne blanche et nous pouvons lui dire de créer la variable. C' est ça. Donc nous n'avons pas ces tracts là-dedans aussi sans frais supplémentaires pour nous. Donc nous ne faisons pas la même chose pour que nous n'ayons pas la capacité comme nous ne voulions pas, mais le joueur où nous ne voulons pas mourir plus d'une fois, nous pourrions avoir quelque chose où le joueur saute continuellement sur un ennemi et le met à une sorte constante de boucle de la mort. Ce qui pourrait être assez drôle maintenant que je dis ça, mais ça pourrait aussi avoir l'air un peu buggy. Pas tout à fait la mécanique ou les résultats que vous voulez, mais nous faisons la même moitié de contrôle. Donc si la santé est inférieure ou égale à 0, alors nous sommes morts. Encore une fois, je suis pleinement conscient qu'en agglutinant cela, mais juste pour pérenniser notre code, nous allons également nous assurer que rien ne glisse dans ce cas d'utilisation et nous n'avons pas un, un ennemi à un moment donné avec moins 50 santé qui est encore en vie. Et aussi si ce n'est pas mort, donc nous ne pouvons pas le tuer plusieurs fois, alors nous allons tuer notre ennemi. Assurez-vous que nous définissons, est que pour être vrai. Et puis nous allons refaire cette fonction. Et nous appellerons ça un ennemi mort. Celui-ci va être un peu différent. Je ne vais pas mettre de logique ici. Ce que je vais faire, je vais juste ajouter un blanc réécrit, juste pour que nous ayons quelque chose de visuel et un commentaire autour de la soirée de réacheminement. Ok, donc un joli commentaire simple, juste un peu de nous dire ce que fait cette fonction. Nous avons donc fait cette fonction qui va être laissée complètement vide dans la classe parent. Et cela devrait être utilisé dans complètement écrasé juste dans les classes enfants. Maintenant, nous pourrions faire quelque chose ici comme refroidir la fonction de destruction. Mais dans la classe des enfants est que nous pouvons vouloir faire quelque chose comme mettre les cheveux communs, jouer des animations, des particules signées, et des choses comme ça. Donc nous ne voulons pas détruire la classe avant que ça ne se produise. Et nous ne pouvons pas changer la façon dont les fonctions sont appelées. Donc, nous pourrions Kuhn notre fonction enfant d'abord, puis hériter de la fonction parent après et détruire. Mais encore une fois, il peut y avoir des cas d'utilisation où nous ne voulons même pas qu'il soit détruit. Peut-être que nous allons avoir des cadavres jonchés autour de l'arène. Peut-être que ça va faire partie du mécanicien où ils doivent continuer à exister. Donc, pour éviter des problèmes comme ça, je ne suis généralement pas cool. Détruire les fonctions dans la fonction parent appelle un outil lorsque les classes parents. Mais je vais avoir mis en place la fonction sont prêts pour que cela soit refroidi sorte que la santé est pris au piège et nous savons que l'ennemi est mort. Cela nous évite d'implémenter la même fonctionnalité encore et encore dans toutes nos classes enfants. Mais nous obtenons cette liberté et cette flexibilité pour ajouter aux fonctions la logique unique et la fonctionnalité basée sur la classe qui appelle cette fonction. Donc ce qu'on va faire, on appellera ça. Nous voulons toujours que cela soit refroidi même si rien ne se passe. Parce que dans n'importe quel enfant de cette classe et moi quand la santé comme étant suivi et il est classé comme un ennemi mort. Et ça va encore être refroidi. Nous verrons bientôt haut. Cela peut toujours être utilisé dans la classe enfant est si vous n'êtes pas familier avec cela, mais c'est à peu près tout. C' est donc notre classe ennemie de base prête à partir. C' est le projet, au moins les variables et les fonctionnalités qui, je pense, vont être les plus génériques. Les choses dont n'importe quelle classe que je pourrais imaginer hocher la tête aurait besoin. Et ils sont certainement les seules choses que je suis retourné en classe va avoir besoin pour nous éviter d'implémenter manuellement cela dans cette classe aussi. 13. 13 - Bats Enemy: Il suffit donc de regarder ce prochain dans le système d'héritage, comment nous pouvons obtenir différentes classes pour hériter fonctionnalités et des variables et des propriétés de leurs classes parents, nous pouvons maintenant commencer à créer nos chauves-souris ennemies. Et nous pouvons le faire en retournant à notre dossier des ennemis. Et ici, depuis la base ennemie, on va faire un clic droit sur ça. Et nous avons une option ici pour créer une classe de Blueprint enfant. Donc, cette classe hérite maintenant de tout ce que nous venons d'implémenter dans notre classe de base. Je vais juste nommer cette batte ennemie BP soulignée. Et on peut même voir ici. Donc, si encore une fois, vous n'êtes pas familier avec la structure d'héritage de classe irréelle, nous pouvons voir que la classe parent est la base ennemie. Nous pouvons naviguer vers cela, qui sera juste ici. Nous pouvons voir que les classes parents de base ennemie, le personnage de papier, qui est celui que nous avons choisi à l'origine, nous cliquons dessus. Cela nous mènera à une classe C plus, que nous allons définir toutes ces choses. Donc, nous héritons essentiellement du composant de capture, composant sprite et tout ce comme ça de notre classe parente C Plus dans ce cas. Donc je vais juste me débarrasser de la classe planète. Nous n'aurons plus besoin de ça à l'intérieur de l'ennemi. Mais ce que nous voulons faire, nous pouvons commencer à ajouter certains visuels ici, afin que nous puissions ajouter nos sprites dans celui-ci. Souviens-toi, on va se débarrasser de ça, ma version parent. Cela a été laissé vide exprès. Donc, nous pouvons remplir cela avec l'animation, mais nous allons également vouloir changer la taille du composant Capsule pour que nous puissions simplement faire de ce cercle plus parfait. Donc 34 et 34 semble à peu près très bien. Ça veut dire qu'on ne va pas se faire frapper de l'envergure. Mais je pense que ça va être accepté était de vouloir paraître trop vieux dans ce genre de jeu. Et puis juste pour vérifier quelques choses comme à nouveau, juste au cas où vous n'êtes pas familier. À l'intérieur du festival de script de construction, nous pouvons voir que nous avons un cool d'avoir un script de construction normal, qui refroidit ensuite le script de construction parent. Donc, ce que cela fait, si nous double-cliquez dessus, cela nous mènera à la classe parent. Et nous pouvons voir que fondamentalement l'ordre d'exécution est que nous allons refroidir notre propre festival de fonction que nous pourrions faire est d'ajouter quelque chose comme une chaîne d'impression ici, ce qui signifie que dans le script de construction imprime tout ce qui va être sur la chaîne d'impression. Et puis nous serions cool version parent heure, qui va juste définir la santé. Oui, si on fait les différentes façons. En fait, je vais montrer ça juste pour faire passer ce point. Donc nous allons dire imprimer la chaîne. On dira que c'est un enfant ROM. Et puis dans la classe de base, nous ferons une chaîne d'impression ici aussi. Et ils se rendent compte que cela va être un peu déroutant parce que la façon dont il fait défiler l'écran, mais j'espère que cela devrait avoir du sens. On dira apparente. Donc, cela va montrer clairement si ces écoles viennent de pas changer celui-ci à être orange. Juste pour que ce soit un peu plus évident. Et nous pouvons déjà le voir. Nous avons beaucoup de choses différentes que les scripts de construction exécutent à peu près constamment chaque fois que vous changez quelque chose, compilant quelque chose dans l'éditeur. Donc si nous amenons juste les parents obtiendraient juste le code de la fonction parent. Je déplace cela parce que encore une fois, le script de construction est refroidi chaque fois que nous bougeons quelque chose dans l'autre ensemble. Donc, ce que cela fait, c'est qu'il définit la santé, puis refroidit cette chaîne d'impression. En comparaison, si nous apportons la chauve-souris, nous pouvons voir que c'est refroidir l'enfant. Il fait défiler vers le bas pour qu'on puisse voir si je le laisse un moment. Le premier devrait être bleu, enfant-parent enfant. Donc c'est appeler la fonction enfant d'abord, puis les parents. Et une sorte de boucle que chaque fois que vous achetez un certain nombre d'unités. Donc c'est l'Oda, lui, mon, on peut changer ça si je raccroche ça vite et ensuite l'accroche comme ça, celui-là je tombe dans le gilet de Construction Script des parents. Je ne devrais pas lire un parent puis un enfant parce que nous allons refroidir notre script de construction sur le Fest des parents et refroidir cette chaîne d'impression. Et puis nous allons refroidir notre chaîne d'impression dans la classe à partir de laquelle nous l'appelons directement. Encore une fois, je vais amener les chauves-souris ennemies et c'est un peu difficile à voir contre le néant. J' ai senti la page, mais je ne le fais pas d'autre audit. Nous avons donc des parents, des enfants, des parents et des enfants. Donc nous pouvons voir va dans le bon ordre là-bas. Donc, ce genre de a du sens comment nous avons la structure de l'ordre dans lequel les choses sont refroidies lorsque vous héritez des choses d'autres classes. Parce que nous allons utiliser cela au fur et à mesure que nous allons passer avec la classe de bouton. Et c'est exactement ce que je voulais dire avec nous pouvons remplacer les choses dans les événements morts ennemis. On aurait pu faire quelque chose comme placer la fonction de destruction ici. Je m'assure juste que lorsque nous écrasons cette fonction, nous faisons le festival de version de l'enfant, qui jouera les effets. Et puis appeler la fonction parent, qui gérerait la destruction de la classe. Mais comme je l'ai mentionné, même avec ce genre de remplacement, il peut y avoir des situations où nous ne voulons pas que tout soit détruit immédiatement, avoir des choses comme ce genre de permanent et le jeu peut être assez agréable avec les corps et ayant différents interactibles est quand les ennemis sont morts. Donc, pour cette raison encore une fois, je vais juste ignorer cela et m'assurer que nous faisons toutes les fonctionnalités que nous voulons à l'intérieur de la classe enfant. Donc, la façon dont cela va fonctionner, nous pouvons obtenir cette fonction que j'ai la façon de commencer, sorte que nous pouvons réellement regarder dans l'écrasement une autre fonction qui sera notre ennemi mort override. Donc, ici, dans les fonctions, plutôt que de recréer cela, nous pouvons voir que nous avons quelques choses qui ont déjà été définies dans la base ennemie. Donc, nous pouvons remplacer la fonction de dégâts dans la base ennemie et nous pouvons remplacer la fonction « Il est mort » de la base ennemie. Nous avons aussi un tas de fonctions que nous pouvons remplacer de la classe des acteurs. Tout cela encore une fois, sont déjà en cours dans l'Acte général pour les établissements de classe mis en place. Mais celui qui nous intéresse, c'est que l'ennemi est mort. Donc, comme je l'ai dit, nous allons garder ce cool pour le parent juste au cas où nous ferons quelque chose générique que nous voulons arriver dans la classe de base dans cet exemple simple, cela ne va pas arriver, mais juste au cas où nous fait, alors nous garderons cette hanche. Et vous avez déjà vu comment cela fonctionne avec le script de construction avait ce sera appelé en premier, qui va essentiellement entrer, ne rien faire racine d'histoire, noeud, et puis nous appellerons notre propre logique ici. Maintenant, contre tout ce que je viens de dire, ce que nous allons faire à l'intérieur de la classe arrière ennemie est détruit la classe. Donc, dans ce cas, nous ne allons pas entrer en vigueur, dit beaucoup de tutoriels sur les effets de particules et les effets secondaires et des choses comme ça. Je vais juste visualiser le personnage en train de disparaître. Il va donc refroidir la fonction Destroy Actor chaque fois que le joueur saute sur le dessus de l'ennemi. Mais encore une fois, si vous vouliez faire quelque chose comme ajouter une animation rapide, alors vous pouvez ajouter cela ici, avoir un aller hors écran, puis après une seconde à, pour le détruire de cette façon. Mais encore une fois, cela va être une belle représentation visuelle, va voir que nous sautons sur le dos et puis il disparaîtra. On dirait qu'en ce moment, si nous arrivons, nous pouvons les amener au monde. Si nous essayons de le faire glisser quelque part sur la carte de tuiles ici, nous pouvons le voir juste se reposer juste au-dessus. Mais assez proche, nous voulons définir ceci sur 0 et sur l'axe Y. Et pour éviter ça comme un conseil, on va juste s'assurer que ça ne va pas dans le sol et on peut le laisser quelque part comme ça. Donc, il devient impressionnant plan I. Nous avons un peu d'un problème de streaming ici qui va prendre une seconde et ensuite cela devrait se résoudre. Et nous pouvons déjà voir que ça va être quelques problèmes que je m'attendais ici. Et c'est que nous pouvons sauter là-dessus et nous allons être déplacés, potentiellement repoussés en arrière, qui est ce que j'espérais arriver là-bas. Donc, parce qu'il faut que la lumière spéc interagit les uns avec les autres, elle ne sait pas de quelle façon résoudre la collision. Et nous ne pouvons pas avoir ce problème où nous sommes déplacés vers l'avant et vers l'arrière sur l'axe Y. Donc, une fois que nous aurons ce genre de problème à l'esprit, je vais juste retourner dans la classe des joueurs et nous pouvons résoudre ça pourrait sonner la classe des joueurs sur les mouvements des personnages. On a l'option ici. Si nous recherchons une contrainte ou commençons simplement à taper une contrainte, nous avons la contrainte pour jouer une option. Nous voulons fondamentalement que cela ait une valeur positive sur l'axe des y, ce qui signifie que nous ne allons pas lui permettre de déplacer n'importe quelle direction sur l'axe des y. Nous avons encore du mouvement dans le X et le XIJ, qui est de gauche à droite et de haut en bas. Mais ce que cela devrait faire, c'est que si nous revenons et sautons sur les chauves-souris à nouveau, nous pouvons voir que nous avons juste poussé seulement l'oeil gauche et l'oeil droit. Donc ça va prendre assez de vitesse. Et nous ne devrions pas, ce qui aide cela autant de fois que nous voulons sans nous soucier d'être poussés vers l'avant ou vers l'arrière. C' est donc le premier problème. Maintenant, la prochaine chose que vous avez peut-être remarqué est la chose de Bernstein, légèrement plus haut, mais est toujours en train de finir par terre. Alors bien sûr que nous ne le ferons pas. Je suis sur le point de pouvoir voler. Et encore une fois, nous pouvons facilement le faire à l'intérieur de l'ennemi. Retour en classe cette fois, en revenant au mouvement des personnages. Et nous avons un tas d'acariens de mouvement différents. Nous pouvons définir le mouvement terrestre par défaut assez étrangement pour voler. Donc, fondamentalement, quand cela est initialisé, il définira le type de mouvement par défaut sur Lund. Et quand nous sommes en quelque sorte des défauts dans ce pays, nous voulons que ce soit classé comme un mouvement volant. Donc c'est une sorte de contredire cela, mais soyez conscient. L' essentiel est que c'est le mode de mouvement par défaut, qui est Lund. Et nous ne volerons pas alors comme cela fonctionnera, parce que si nous venons et simulons cela, nous pouvons voir que cela enlève la gravité. Et c'est ma classe de personnage volant, pour qu'il puisse se déplacer d'un côté à l'autre. On peut aller de haut en bas. Et ça va complètement ignorer la gravité à moins qu'on la remplace pour avoir une sorte d'animation bouillonnante avec une certaine gravité, une sorte de forme. Mais sinon cela va rester complètement sur l'application. Même si nous le possédons, alors nous pouvons monter et commencer à sauter sur le lit. Donc, à ce stade, nous avons un assez stationnaire, mais la prochaine chose que nous allons vouloir faire est d'ajouter une sorte de logique de mouvement à cela. Je vais juste rendre ça très simple. Il va voler de gauche à droite. Il choisira au hasard s'il veut se déplacer dans une certaine direction. Et puis ce sera l'un de ces ennemis qui, quand il frappe un mur ou quelque chose, collision avec lui, alors que sur son chemin, il changera juste de direction et volera dans l'autre sens. 14. 14 - Mouvement de bats enemie: Le mouvement réel pour cette classe devrait être assez simple à implémenter car encore une fois, nous utilisons le composant de mouvement de personnage ici. Cela signifie, comme pour notre classe de joueur, juste pour résumer ce que nous faisions, nous pouvons vraiment tirer parti de la logique de mouvement déjà disponible dans le mouvement de personnage pour fournir une direction qu'il a besoin de déplacer. Et ce sera à peu près la logique dont nous avons besoin pour le faire. Donc c'était sur le mouvement d'entrée, et nous pouvons voir que nous avons les entrées de mouvement. Donc on va faire quelque chose de très, très similaire. En fait, si vous avez la classe de joueur ouverte, nous pouvons copier cette note. Nous allons utiliser exactement la même chose, reviendrons à la matraque ennemie en classe. Et la seule différence, bien sûr, c'est parce que nous n'avions pas d'entrée dans cette pièce. Nous allons coller ceci à côté de la coche de l'événement, OK, cette sauvegarde. Et puis tout ce que nous avons vraiment à faire, c'est de déterminer comment nous allons obtenir cette valeur d'échelle. Donc, pour le moment, nous avons le x, eh bien, la direction d'emménager. Encore une fois, on se déplace à gauche et à droite. Nous n'avons pas besoin de mouvement vers l'avant, vers l'arrière ou vers la verticale pour nos boutons. Donc, si nous allons jouer ça maintenant, ce serait au moins faire le mouvement très fondamental dont nous avons besoin. On peut simuler ces cheveux. On peut voir que quelques choses sont probablement un peu. Le premier est que la chauve-souris coule vers l'arrière. la seconde où je dirais qu'il bouge un peu trop vite. Et la dernière question est le point principal de cette question, qu'il va toujours aller dans cette direction ou dans la bonne direction. Donc ce qu'on va faire, c'est élaborer ces différentes étapes au cours de ce cours. Donc la première chose sera la chose la plus facile à approcher, que nous allons changer la vitesse du mouvement. Nous avons encore vu dans le passé qu'il s'agissait du composant Mouvement des personnages. Donc, avec ce D sélectionné, Rappelez-vous que nous utilisons les mouvements par défaut pour voler, ce qui signifie que nous ne changerons pas avec la vitesse de marche comme nous l'avons fait avec le joueur. Au lieu de cela, nous devons descendre à la section volante et abaisser cela. Donc je vais faire cette moitié ronde à la vitesse des joueurs qui bougent. Je pense que les joueurs par défaut à 600, donc nous allons faire la vitesse maximale du vent à 300. Cela signifie juste qu'il devrait être un peu plus facile pour le joueur ou pour nous-mêmes de rattraper et de jouer avec les ennemis pour les tests et aussi pour les jeux. Vous voulez normalement que le joueur se sente un peu plus contrôlable et puissant que les ennemis. Donc, nous pouvons voir et c'est fixe, la vitesse de mouvement, qui est la première et genre d'étape simple à faire ici. Sélectionnez dans le sens du mouvement. Ce que nous pouvons faire, c'est que nous pouvons tirer d'ici et nous utilisons une autre de ces notes dormées auxquelles nous nous sommes habitués. Encore une fois, je vais aller pour les utilitaires sélectionner parce que j'aime la façon dont cela imprimera le vrai ou le faux. Quand nous tournons cela à un booléen. De là, je vais juste faire glisser et créer ou promouvoir ceci à une variable. Et je vais nommer celui-là qui bouge B, non ? Donc, encore une fois, nous utilisons par défaut le nom positif de ceci, que les droits de déplacement seront le type de défaut attendu. Et ce qu'on peut faire, c'est régler ça. Donc, si c'est vrai, on va en faire un. Et si c'est faux, nous mettrons ça en moins un. Donc très similaire à ce que nous faisons avec l'axe d'entrée. On va être positif se déplaçant à droite moins un serait négatif se déplaçant à gauche. Logique très similaire, juste une façon différente de conduire cela à partir d'un booléen. Maintenant, pour tester cela, nous pouvons très simplement prendre l'œil. Donc, nous allons rendre ce public qu'il compile. Et nous verrons que cela sera par défaut faux parce que l'index ici était faux. Et cela signifie que si nous attrapons notre batte dans l'éditeur, nous devrions avoir un contrôle total sur la direction du mouvement ici en trouvant ce booléen, nous avons le droit booléen ici. Donc nous nous attendrions si nous laissons ça non coché quand je bouge à gauche. Ok, donc le premier test est fait. Et si nous prenons ça, nous devrions déplacer les droits. Et nous pouvons voir que nous avons maintenant le contrôle de la chauve-souris comme prévu. Donc ça va être la prochaine partie de la direction de mouvement contrôlée. Nous avons donc maintenant une variable à contrôler. Ça marche. Maintenant belle façon simple que nous pouvons mettre à jour ceci sur l'endroit de départ afin que nous puissions un peu randomiser la façon dont les chauves-souris vont se déplacer. Je vais juste supprimer le chevauchement d'accès. On n'en aura pas besoin. Ce que nous pouvons faire est que nous pouvons glisser dans notre variable, brancher cela, et nous pouvons juste tirer d'ici et utiliser une fonction booléenne aléatoire. Donc tout simplement, cela aura 5050 chances de choisir vrai ou faux quand nous commencerons à jouer, nous n'aurions aucun contrôle sur cela. Nous allons juste utiliser ces affectations complètement aléatoires de la valeur booléenne. Et puis quand il arrivera à la coche de l'événement, cela sera pris en compte et notre chauve-souris se déplacera dans des directions différentes. Ok, donc j'ai essayé plusieurs fois et vous pouvez vraiment voir un peu haut, on a obtenu une répartition exactement 5050 de la randomisation que je ne m'attendais pas à ça. Donc, pour ce que c'est et ce que nous pouvons faire ici, c'est de nous assurer que nous sommes allés devoir tester cela plus pour que nous puissions rendre ce privé à nouveau de C. Nous ne voulons juste pas trop d'être exposé s'il n'a pas besoin de l'être. Et la dernière chose pour le genre d'implémentation de mouvement de base que je dirais est de le faire face à la bonne façon. Donc, bien sûr, nous voulons que cela entre en collision avec la surface en ce moment. Si nous obtenons ce mouvement à gauche, alors ce qui va se passer, c'est entrer en collision avec ce mur et voler indéfiniment dans ce mur. Donc nous allons étoffer ça un peu plus tard pour amener la chauve-souris à changer de direction dès qu'elle heurte un mur comme celui-ci. Mais pour l'instant, je pense que nous pouvons juste faire face au personnage de la bonne façon. Donc, dès que nous faisons changer une direction, nous pouvons prendre dans cette variable de mouvement droite que nous suivons. Et nous pouvons le faire paraître à gauche ou à droite selon la façon dont il bouge. Donc encore une fois, pour ce faire, C'est très simple, Je pense que dans ce cas, plutôt que d'essayer de travailler sur les irritations de contrôle et des choses comme ça. C' est une de ces choses où vous pouvez le faire d'une façon ou d'une autre. n'y a pas de bonne ou de mauvaise façon. Surtout si quelque chose comme un ennemi, je sais qu'on n'aura rien comme une batte. Les fibres crachées sont des choses que nous n'avons pas besoin d' être concernés par la direction de rotation. Nous n'ajoutons pas de sous-composants. Donc, je voulais vous montrer l'autre façon que j'ai mentionné pour le faire, qui est d'utiliser la mise à l'échelle du sprite. Donc, j'ai complètement optionnel, mais je voudrais vous montrer autant de façons différentes de faire les choses que possible afin que vous ayez ces options dans votre arsenal prêt à aller. Donc ce qu'on va faire, c'est en fonction de la direction que nous allons aller, nous allons avoir notre composant sprite. Vous pouvez également le faire à l'acteur entier complètement à vous comment vous gérez cela afin que vous puissiez définir l'échelle de l'acteur. Mais tout simplement, rappelez-vous que l'une que j'ai dit une option que nous aurions pu faire avec notre jeu un personnage, plutôt que de changer la rotation, est simplement d'obtenir notre X gal, mettre ceci à moins un et nous sommes confrontés à la autre direction. Donc c'est ce qu'on va faire. Une approche simple et agréable ici. Et comme je l'ai dit, juste une autre option que je voulais te montrer. Donc, pour gérer cela, nous allons d'abord obtenir l' échelle actuelle car nous aurons besoin de ce recalcul dans un instant. Et nous pouvons le faire avec l'échelle mondiale GET, le sprite. On peut diviser la broche de la structure. Donc nous avons les x, y et Zed. Et puis de la même manière, nous allons ensuite définir l'échelle en fonction de cela. Encore une fois, nous pouvons définir l'échelle mondiale 3D pour notre sprite. Et encore une fois, nous allons vouloir diviser la broche de structure juste parce que si vous y pensez, nous ne voulons pas qu'elle renverse le y ou le zed. Donc, nous pouvons simplement les brancher automatiquement pour que ceux-ci ne changent jamais. Vous pourriez les coder en dur à un. Vous pouvez oublier la façon de faire ça. L' essentiel est que nous voulions élaborer le calcul basé sur notre valeur x. Ensuite, la dernière chose est qu'on va sortir d'ici, et on va multiplier ça par un flotteur. Flotteurs multipliés par un flotteur. La valeur de retour sera ce que nous voulions définir l'échelle de ceci pour être. Et comme toujours, nous allons tirer de cette dernière broche et nous allons utiliser une note sélective. Encore une fois, on va opter pour l'option des services publics. Pour résumer, on ne veut pas que ça soit un peu ambigu. Et bien sûr, dès que nous tournons ceci pour utiliser la valeur booléenne, nous obtenons le vrai ou faux. Donc, encore une fois, est très lisible par l'homme. Nous savons maintenant que si nous allons bien, si c'est vrai, alors nous voulons que cela soit mis à l'échelle d'une manière. Si c'est faux, alors nous voulons qu'il soit mis à l'échelle de l'autre. Et comme nous venons de le voir, c'est en fait un peu différent à cause de la façon dont les actifs sont tirés. Il est vrai, genre de commun que les actifs, le joueur sera tiré face à droite, les ennemis retirés face à gauche est juste quelque chose que j'ai remarqué à 2D artistes creuser, ce qui signifie par défaut se déplacer à droite ? Donc, nous devons en fait inverser cela. Par défaut, c'est aussitôt que l'ennemi commence à se déplacer à travers le niveau. Donc, si c'est vrai, nous voulons que ce soit une valeur négative. Donc on va régler ça à moins un. Et si c'est faux, donc si on se déplace à gauche, alors on va mettre ça sur positif. Avec cela fait, nous pouvons brancher ça ici, ranger ça un peu, et ce sera aussi bon d'aller tester ce ite. Ok, et on y va. Donc la chauve-souris ne l'est pas, je fais face dans la bonne direction en fonction de la façon dont ce booléen aléatoire est sélectionné au début de la partie, si on se déplace à gauche, alors il vole du liquide vers la gauche. Et si nous bougeons à droite, il tourne autour et bouge ou du bois vers la droite. 15. 15 - Changement de direction de la bats Enemy Bat Bet: Pour que les boutons réagissent aux loups, comme on s' y attend, il y aura des règles et des attentes différentes que je vais mettre dans la logique juste pour que nous sachions que nous avons le contrôle total sur la façon dont les fesses pourraient potentiellement interagir avec les différentes parties des niveaux, comme le plancher du joueur, différents objets insolubles comme des loups et ainsi de suite, de retour à l'intérieur de l'ennemi. Mais pour la classe à l'intérieur du graphe d'événements, la première chose que nous voulons faire est la façon dont nous allons gérer cela va provenir des événements de collision, comme je l' ai déjà mentionné, le contour de base de ceci est quand la chauve-souris frappe quelque chose, nous voulons qu'il décide s'il devrait revenir ou non. Nous avons donc déjà le composant principal dont nous aurons besoin pour cela, qui va bien sûr être le composant Capsule. Sur le composant de capture, nous pouvons faire défiler vers le bas et nous pouvons trouver le composant hits événements et nous pouvons ajouter ceci dans. Maintenant, je vais juste passer par la façon dont j'ai fait mourir cet étang. Vous voudrez peut-être que votre personnage ennemi interagisse différemment avec le monde. Généralement, cependant, il ya quelques sortes de règles quand il s'agit de la façon dont le, Je sorte de regarder la conception de jeu sur un concept plus basé sur la théorie et le concept que juste les mécanismes ruraux genre derrière elle. Donc la première chose qui me distingue toujours le plus, c'est que l'une des choses que cet ennemi pourrait potentiellement entrer en collision sera la classe des planteurs. Une chose que je trouve toujours très mariée quand cela arrive est quand l'ennemi frappe la playa, puis a ce type automatique de logique déclenché pour le faire tourner autour et se déplacer dans l'autre direction. Surtout quand vous le brisez et pensez que l'ennemi est peu tôt dans le niveau juste pour chasser, dîner, trouver, ou interagir avec la classe de joueur d'une manière ou d'une autre pour infliger des dégâts. Surtout que je m'approche de cela comme un jeu ionique très vieille école ou Mario, pas certains des plus récents où les ennemis peuvent passer à travers et le type spécifique du hub de montage est où ils jettent un coup de poing le personnage, comme un par exemple, ce sont ceux qui vont simplement fournir des dommages de contact. J' ai donc tendance à penser que c'est un peu étrange si la seule chose que l'ennemi est censé faire est de marcher dans le jeu et de causer des dégâts, puis de tourner autour. Donc ce que je vais faire, c'est la première chose que nous allons partir de là, c'est que nous allons sortir de l'autre acte et découvrir ce que nous avons frappé. Et nous ne voulons faire notre vérification de collision que si ce n'est pas égal au pion du joueur. Donc nous n'avons pas besoin de faire de casting ou quoi que ce soit. Comment nous pouvons littéralement vérifier si la seule chose, le seul joueur du jeu va contrôler si la chose que nous avons touchée n'est pas égale à ça. Donc l'autre porno ou le plasma va faire un brunch à partir d'ici. Et si c'est vrai, alors nous pouvons aller de l'avant et faire notre direction en tournant la logique. C' est la première étape pour ce type de logique. La prochaine chose va être de trouver. Donc, si nous avons passé ce seul critère, cette façon nous voulons être complètement aimés et ignorer toute logique future. La prochaine chose que nous pouvons regarder faire est de vérifier la surface sur laquelle nous avons frappé ou sur laquelle nous avons interactif. Et nous pouvons le faire en déposant le hit Pin juste ici. Cela fournit beaucoup plus d'informations sur la chose que nous avons touchée, comme le type de matériau qu'il pourrait avoir son nom s'il a une prise osseuse, la distance et vous pouvez voir tous les stylos supplémentaires que nous avons ici. Maintenant, celui qui va nous intéresser est la normale. Et cela peut nous donner une idée de la direction dans laquelle le coup a été pris. La prochaine chose que je voulais en rendre compte comme si quelque chose venait d'en haut ou en bas. Donc plafond ou un plancher, ou même un autre type d'ennemi ou une classe interactive. Toutes ces choses devraient également être ignorées. Donc on peut voir à quoi ça ressemble. Si on fait glisser d'ici, je vais imprimer la chaîne. Et à l'intérieur de la chaîne d'impression, on peut juste brancher le hit. Normal va être celui que nous voulons ici. Donc, nous allons juste avoir une compilation rapide de celui-ci et nous pouvons voir ce qui va être des retours selon que c'est ou non touché. Ok, donc si on frappe une surface comme celle-ci, on peut voir que nous recevons beaucoup de retours de cette seule collision. Fondamentalement aussi longtemps que cela va entrer en collision, peu comme un terrible gâchis, nous allons retourner cette fonction de succès. Maintenant, l'important que nous pouvons voir ici, c'est que cela est frappé sur un positif sur l'axe X. Donc ce n'est pas en fait la position de frappe du cul de SES va être moins un à l'extérieur gauche, comme nous le savons déjà, ce que nous obtenons réellement est l'emplacement positif de la chose que nous frappons, qui est à un sur l'axe des x de cette règle. Donc, en retournant ça, je vais juste faire une pause dès qu'on aura atteint ce petit coin qui, et en fait, ce que je vais faire, c'est rentrer. Je vais arrêter cela parce que ce ne sera pas assez long et nous pouvons augmenter cela à quelque chose de assez élevé. Donc la première chose que je voulais montrer est les hits de ce coin parce que ce n'est pas tout à fait direct, mais ce n'est pas en dessous. Nous pouvons voir quand nous obtenons ces valeurs comme 0.25.9 ou entre 0.8, nous pouvons voir que cela nous donne une idée. Et aussi non, désolé, moins 0,2, parce que ça vient du côté gauche de cette petite colline juste ici. Mais ce genre aussi de sur le coin qui est le sommet des collines ont obtenu un positif sur le zed, surtout positif sur le zed nous donnant une idée que c'est un coin et une coupe du côté, il juste les cheveux aussi bien. Donc, dans ce cas, ce que je ferais c'est que je vais prendre ces valeurs et nous pouvons grouper certaines plages que nous allons ignorer en fonction de ce qui est retourné. Donc, si nous laissons cela aller un peu plus loin, nous pouvons voir une chose similaire à partir de cela, ce que nous avons été frappés d'en haut est la façon dont nous voulions regarder cela. On peut voir quand j'ai une valeur négative sur le Zed parce que c'est le fond de la plate-forme plutôt que le sommet de cette colline. Et encore une fois, sur le x, nous obtenons une valeur négative parce que c'est du côté gauche de cette plate-forme. Et nous allons attendre à peu près le même genre de chose de cette brique et du mur. Et c'est ainsi que nous pouvons utiliser notre hit Normal pour obtenir des informations sur la direction dans laquelle nous avons été touchés. Donc, la première chose que nous voulons faire est plutôt que de rendre notre anode à un composant beaucoup, beaucoup plus grande en divisant le stylo de structure. Parce que rappelez-vous où vous êtes réellement intéressé par l'un de ces, qui va être l'axe des x. Donc je vais juste recombiner ça juste pour te montrer que si on continue à faire ça, ça va devenir assez gros. Une autre façon d'écrire ceci comme nous pouvons tirer d'ici. Et si vous n'êtes pas familier, nous pouvons casser ça dans une nuit séparée. Donc ils font la même chose. On peut briser ce vecteur. Cela signifie juste que nous allons avoir ça dans un endroit un peu plus séparé. Nous avons déjà fait cela assez long, donc nous pouvons probablement économiser un peu d'espace en séparant cette puissance sous un autre jour. Maintenant, à partir du X, je vais juste être assez stricte avec ça. Donc, si ce n'est pas égal à 0, donc tout ce qui n'est pas 0 sur l'axe des x va être classé comme un résultat auquel je veux répondre. Donc, encore une fois, nous ignorons le vent est ajouter un léger défaut et ce genre de collisions de fond de mouture complète potentiellement être ignoré. Et tout ce qui est supérieur ou inférieur à Xerox, vous pouvez voir où renvoie une valeur de point. Donc, même si c'est comme faire un virage, alors je vais la classe comme une raison de faire demi-tour. Donc, à titre d'exemple ici, si nous devions frapper à nouveau ce coin, même si c'est comme un point à est quelque chose nous ferions toujours tourner autour et changer de direction. Maintenant, vous pouvez ajouter dans les plages au-dessus est entre moins 0,4 ou 0,4, alors cela pourrait être le bas d'un résultat de coup sur le zed. Et vous ne voudrez peut-être pas répondre à ce genre de chose qui dépend complètement de vous si vous voulez ajouter ce niveau de complexité et j'espère que la façon dont nous pouvons utiliser cette diapositive est logique. Mais juste pour avoir la majeure partie de la logique et nous allons garder ça gentil et simple pour l'instant. Donc ce que nous voulons faire maintenant, maintenant que nous avons cette vérification de l'état et que nous allons définir notre bonne direction. Et pas de truc ici, c'est qu'on va prendre la bonne direction. Et nous allons définir ceci pour être ce que les courants qui se déplacent bon état ne sont pas. Donc, on va dire bouger à droite égale à ne pas bouger à droite ? Et nous pouvons utiliser la vérification NOT booléenne ici, passer cela, et c'est essentiellement juste l'inverser. Donc, cela va dire que si vous bougez à gauche et à droite, si vous bougez à droite, que vous bougez à gauche, que vous vous déplacez ensuite, nous allons vouloir retourner la direction des chauves-souris et nous avons déjà une certaine logique ci-dessus pour le faire. Donc, bien sûr, nous ne voulons pas copier ce code. Au lieu de cela, ce que nous allons faire est que nous pouvons saisir cela comme nous l'avons fait auparavant, clic droit sur l'un de ces nœuds et le réduire en une fonction. Pour le nom de ceci, nous ne modifions pas techniquement la rotation. Plutôt que de l'appeler changer la rotation ou mettre à jour la rotation ou quelque chose. Je vais nommer celui-là que le Togo fait face à la direction. Je pense que c'est la description la plus précise de ce que nous faisons ici. Et puis maintenant, nous avons ceci comme une fonction. On peut saisir ça et on peut brancher ça de notre fonction ici. Je sais déjà qu'il va y avoir des problèmes ici cause de la façon dont les collisions fonctionnent. Ce genre de vous donne une idée de ce qui pourrait se passer parce que nous obtenons plus d'un de ces appels de fonction par collision essentiellement avant même que nous ayons la chance de tourner, parce que nous obtenons plus de ces rendements par lésion que nous ne le voulons. Il se peut que nous obtenions des affrontements ou des renversements trop rapidement. Donc on peut juste vérifier ce qui se passe pour commencer. Vous pouvez voir ça qui a essayé de tourner et qui ne s'est pas calmé. Et puis on a une face arrière, ça peut avoir l'air un peu twitchy. Nous voulons donc nous assurer d'avoir un peu plus de contrôle, surtout sur ce genre d'endroits serrés ici. Et pour s'assurer que nous n'avons pas trop de mises à jour à la fois. Donc, pour gérer cela, je vais utiliser quelque chose appelé un do autrefois connu comme le nom indiquerait que cela va nous permettre de faire quelque chose à ce moment même jusqu'à ce que nous réinitialisions quelque chose. Ceci est connu sous le nom de porte de contrôle de débit. Donc on va passer ça en het. On va faire cette fonctionnalité juste une fois après ça, et j'ai mis ça au mauvais endroit. Nous voulons que tout cela soit après que je le fasse une fois. Et nous, pour cette branche revient comme vraie, alors nous voulons seulement basculer tout cela une fois et changer de direction une fois de plus, cela va causer un problème parce que cela ne se réinitialisera pas automatiquement. Donc si on frappe quelque chose maintenant, ça va être un long chemin pour le vérifier, mais on va frapper ce mur. Et si on touche ce coin, on devrait espérer te voir ce coup ou faire quelque chose. Mais parce que nous avons ce fait une fois en place, cela signifie que nous allons seulement continuer à aller avant et que la fonctionnalité ne sera jamais vérifiée à nouveau. Ce que nous voulons faire ensuite, c'est qu'une fois que cela s'est produit, nous voulons retarder. Je ne veux pas que cela se réinitialise immédiatement. Souviens-toi de la pompe, le problème, c'est qu'on a trop de coups en collision avec le mur immédiatement jusqu'à ce qu'on retourne, non ? Donc on va ajouter un noeud de retard ici. Et le retard peut être quelque chose de très, très petit. Quelque chose comme 0.1 devrait être parfaitement bien. Et puis quand vous voyez d'autres personnes utiliser cela beaucoup, le temps qu'ils vont juste jeter un nœud réécrit ici pendant qu'il passe dans y hat et jeté pour revenir note. Essayez de rendre cela un peu plus lisible. Montre-toi un moyen de contourner ça en un instant. Une chose assez simple à faire et juste garder le code plus lisible, mais cela fonctionnera. Donc nous pouvons maintenant voir qu'en entrant, nous allons frapper celui-là. Donc, nous aurons ce code. Et puis nous avons un autre problème que nous pouvons voir a dit que nous allons résoudre un peu ces problèmes au fur et à mesure que nous traversons. Mais l'essentiel est que lorsque je retourne à nouveau et que cette fonctionnalité est refroidie et vérifiée plus d'une fois, tant que nous avons eu ce délai de 0,1 seconde. Et on devrait voir ça se reproduire quand on a quelque chose ici. Et c'est un parfait bienvenu. Eh bien, à part le fait que la chauve-souris coule en arrière comme un travail parfait. Ok, Donc avant de finaliser et de résoudre ce dernier problème, encore une chose, nous cherchons beaucoup dans cette série de vidéos à une sorte de nettoyage à coder avec espoir. Donc, alors que nous avons quelques belles choses imbriquées dans les fonctions, tout ici est très en quelque sorte bloqué pour faire sa propre chose. Je suis l'une des choses que vous avez beaucoup comme un détourné des plans est élevé. Vous obtenez du code spaghetti et il peut être difficile de lire et de maintenir votre base de code. Et c'est vrai à venir certainement être si rien n'est mis dans une fonction, si tout est placé dans l'Event Graph, si vous avez boucle y est ici, qui peut rendre beaucoup plus difficile de déterminer ce que l'école, ce qui quand vous avez vu ajouter des choses différentes sur différentes branches et séquences sortir de cela et tout est en boucle autour de celles qu'un point va devenir très difficile à déterminer quelle direction votre logique coule. Donc, au lieu de cela, ce qu'on va faire, c'est d' enlever ça et ce n'est pas une excellente façon d'aller de l'avant. Nous allons créer un événement personnalisé ici. Donc je suis gentil, simple réparation, cool celui-là. Réinitialiser, direction, changer de vérification. Donc, le lancer réinitialise dans la convention de nommage correctement aide juste à frapper. Nous savons que cela va être refroidir une sorte de fonctionnalité de réinitialisation intégrée beaucoup de temps et Unreal, Dans ce cas, il va être cette porte d'écoulement et qui font une fois la nuit. Ensuite, bien sûr, à partir d'ici, nous allons juste tirer du retard et sera refroidir et cela réinitialise la vérification du changement de direction. Donc rien de trop sauvage. La plupart d'entre vous ont probablement sauté à ça comme le premier type de correction pour ce genre de fonction de boucle. Voyons maintenant. Je ne suis pas juste lire beaucoup, beaucoup plus clairement. La meilleure chose est ici, alors que vous lisez ceci, si vous commencez à ajouter du code plus tard, vous avez un peu clignotant les lumières et l'expansion de cette logique. Et cela devient beaucoup plus long en allant dans différentes fonctions. La chose principale maintenant est que nous n'avons pas à vérifier si ce Ys aléatoire allant d'une partie de votre Blueprint à une autre, double-cliquez sur le noeud, et cela vous mènera ici et vous pouvez voir ce que cela va refroidir. Essayer de garder le code aussi propre, lisible et réutilisable que possible. Donc ça va faire la même chose. Nous savons qu'il y a encore un bug pour le réparer. Et je vais être honnête, je ne sais pas trop pourquoi ce qui se passe c'est que la chauve-souris est encore un peu en arrière à un moment donné. C' est arrivé, donc je me demande si on lance une chaîne d'impression ici, en s' assurant qu'on ne fait ça qu'une fois. Il peut être encore un peu élevé de tomber à travers ça, peut-être que celui-ci n'est pas assez long. Et il se peut que nous basculons ce plus de temps CPU, mais peut-être pas totalement dans le sens de quelque chose. Je ne suis pas sûr de ce qui se passe, alors on va imprimer ça, voir ce qui se passe. Comme Ernie invité voir un bonjour revient là-bas. Cela semble se passer beaucoup plus dans ce coin. Ils n'en ont qu'un aussi. Ok, donc ça ne se passe pas, ce qui signifie que je ferais une fois fonctionne correctement. C' est donc au moins une bonne chose. Et je vais garder ce peu et comme une sorte de tutoriel de débogage, ce n'était pas prévu que parfois, je veux dire, c'est comme ça que la programmation va. Le développement n'est généralement pas trop simple. Cela pourrait donc être très utile, espérons-le, comme exemple d'apprentissage. Donc la seule autre chose que nous faisons, nous retournons notre chèque booléen, hey, nous n'avons pas eu de retard une fois, ce que nous savons fonctionne. Donc, cela signifie que cela va devoir être quelque chose à voir avec la logique dans notre direction de basculement. Donc, nous allons juste double-cliquer ici et nous allons jeter un oeil à ce qui se passe. Donc si nous arrivons, nous prenons la direction actuelle et je peux déjà voir le problème, d'accord ? Donc, parce que nous avons ce genre d'étrangeté que j'ai mentionné tout à l'heure, au moins je pense que c'est ce que cela serait parce que nous avons l'ennemi potentiellement face à la direction opposée. Et quand nous bougeons dès que nous commençons à jouer, nous risquons de renverser cela. C' est ce qui aurait aussi du sens pourquoi tout se passe lorsque nous nous dirigeons vers la droite. Parce que nous avons déjà appliqué le plus grand nombre d'applications en fonction de l'échelle actuelle du sprite. Donc parce que nous prenons cela dans le contexte et que nous le retournons de cette façon, eh bien, je pense que nous faisons c'est que nous multiplions un négatif par un négatif dans certains cas, ce qui ne change pas la direction que nous devons prendre. Donc, si nous jetons un cauchemar absolu, nous voulons toujours obtenir la valeur, mais nous allons nous assurer que nous devinons la valeur absolue retournée. Donc, cela signifierait que dans les cas où cela se produit, nous devrions obtenir un négatif multiplié par un positif, puis retourner toujours pas dans la bonne direction. Alors, laisse-moi partir. Nous pouvions voir que c'était la direction du problème avant. Et puis on y repart. Donc il suffit de vérifier quelques fois de plus. Nous allons laisser ça frapper tous les différents mouvements. Ok, donc le temps de retard qui était peut-être un peu trop bas parce que nous avons pu changer rapidement plomberie qui l'a fait paraître comme j'interagissais avec le niveau assez organiquement d'une manière où il a retourné que je suis retourné tout droit en arrière broyer et poursuivi. Donc je pense que je vais continuer à jouer. Ce délai plus petit semblait fonctionner assez bien, qu'un peu d'un bascule, nous aurions pu l'avoir, donc c'est un peu plus long. Mais l'essentiel était la valeur absolue juste un problème maintenant. Donc, ce n'était pas un problème à commencer parce qu'il y a rarement une règle de sifflement. Mais une fois que nous avons retourné quelques fois, nous voulons nous assurer que nous prenons en compte la multiplication correcte ici pour la somme des cas où nous pouvons prendre cela déjà bouger à droite ? Parce que nous avons dû retourner cela au début parce que techniquement le sprite est confronté à la mauvaise façon d'aller de l'avant pour commencer, nous voulons juste nous assurer que cela est mis à jour pour tenir compte de cela. Et avec ça, ça semble fonctionner. Donc, on va vérifier comment ça marche quand on frappera l'utérus lointain. Et puis nous irons à gauche dans une sorte de boucle infinie. Je pense que c'est plus quelque chose pour nous à fixer dans la conception du niveau ici ou le placement de la chauve-souris. Je pense que ça a l'air mieux. Alors pointez vers le retard. Je pense qu'au moins le faire passer entre ce point et ce point semble mieux que de le faire basculer et ensuite monter et encore. Idéalement, ce que nous allons faire de toute façon, c'est que nous n'allons pas le placer quelque part où il pourra s'attaquer à ce problème. Je le mettrais directement en ligne avec ça et même si ça frappe ça, on va aller entre ces deux murs. Et en fait, nous pourrions aussi, nous pourrions garder 1,5 et donc en mettre un ici. Donc, nous avons maintenant plusieurs ennemis et le niveau. Et encore une fois, de cette façon, vous pouvez voir que je n'ai pas vraiment ce problème. Ils vont frapper les choses à peu près en face. Alors que je pense va être une bonne solution avec cela fait que nous sommes à peu près prêts à sauter dans les situations de combat entre le joueur et l'ennemi, La cause et la prise de dégâts entre les deux classes différentes. La seule chose qui dépasse, c'est que nous avons déjà fait nos remplacements pour la classe ennemie. Nous avons notre ennemi mort fonctionnalité. Et dans la classe arrière de la classe de base, vous voulez juste vérifier que les chauves-souris ennemies ont aussi aidé. Donc, encore une fois, nous avons défini cela sur 100 par défaut dans la classe de base. Si vous voulez changer cela, hey, vous pouvez changer cela pour être remplacé dans chaque classe personnalisée, chaque classe enfant client en remplaçant l'intégrité par défaut. Et rappelez-vous que nous laissons la santé seule car ce sera deviner défini dans la construction du script à travers le cool à la classe parent avant que nous finissions réellement jouer. Donc, si vous vouliez que les chauves-souris ont une très faible santé ou quelque chose comme ça, alors vous pourriez changer ça. Mais avec cela fait, je pense que nous sommes prêts à partir maintenant et à commencer à regarder comment nous pouvons amener le joueur et l'ennemi à interagir les uns avec les autres. 16. 16 - Dommages: Avant de sauter dans la classe de joueur pour obtenir une partie des dégâts entre l'ennemi sur le joueur lui-même sorte de branché et de travail. Je me rends compte que j'ai un peu brossé sur une chose qui a peut-être laissé certains d'entre vous se demander pourquoi nous faisions une certaine chose dans notre direction face à bascule. Donc, à l'intérieur de cette fonction, nous venons de voir que nous avions besoin de cette valeur absolue pour multiplier l'échelle actuelle, l'échelle que nous voulons que l'échelle cible soit. Vous avez peut-être pensé que c'était un peu plus compliquant les choses. Et c'est, vous avez probablement vu que la chose la plus simple que nous aurions pu faire est simplement brancher ça. Donc, pour aller à droite, nous allons définir l'échelle pour être une chose. Et si on se déplace à gauche, on va définir l'échelle pour en être une autre. Ce que j'ai oublié de mentionner il y a un instant, c'est la raison pour laquelle je ferais ça. Eh bien, la raison pour laquelle j'ai mis en place cette façon est que si vous imaginez un jeu comme Mario, ce que vous pourriez avoir une sorte de super puissance qui va vous mettre à l'échelle ou la façon dont le système de santé fonctionne. Même toi, tu as Mini Mario et je suis plus grand Mario. Nous pouvons le faire en changeant simplement la mise à l'échelle du sprite. Nous pouvons aussi faire des choses comme l'animation. Si vous n'aviez pas le drone d'images pour ajouter du squash et de l'étirement, vous pouvez faire quelque chose où vous animez l'échelle pour compresser lorsque vous sautez et que vous l'écrasez lorsque vous atterrissez. Donc, la raison pour laquelle je fais ceci est que nous pouvons rendre compte de ces mises à jour si le sprite est un jour en cours d'animation, pendant une puissance, nous ne forçons pas cela à être un parce que nous avons peut-être doublé l'échelle de notre sprite. Ce que nous allons faire à la place, c'est de savoir quelle est l'échelle actuelle. Donc, si nous avons doublé en taille, alors nous allons multiplier ceci par le 1, 1 négatif. Donc, nous obtenons toujours cette échelle augmentée ou diminuée de nos sprites. Nous prenons cela en compte et le multiplions ensemble pour renverser l'échelle. Bien sûr, si vous savez que c'est quelque chose que vous ne ferez jamais. Si vous êtes certain que vous n'allez pas jouer avec l'échelle du sprite ou quoi que ce soit sur lequel vous utilisez cette logique, vous pouvez très en toute sécurité alors il suffit de brancher le retour de votre note sélectionnée dans le crâne et de le faire de cette façon . Juste quelque chose que je voulais mentionner, comme je viens de réaliser, qui pourrait être un peu déroutant et laisser les gens se demander pourquoi nous ne faisons pas que ce genre de façon manuelle et codée en dur avec la ligne d'adresse. Ce qu'on va faire, c'est sauter dans notre classe de joueurs. Nous allons commencer à chercher à enregistrer la direction dans laquelle nous avons touché. Les choses auront été touchées. Et en fonction de la façon dont cela est enregistré au moment de l'impact, nous allons décider soit si la plaque doit subir des dommages, soit fournir des dommages. Maintenant, dans ce cas, pour simplifier encore les choses, je vais mettre tout cela dans une seule classe. Donc, nous aurons le joueur complètement en contrôle si les dégâts sont appliqués, reçu quel doute, encore une fois, dans un projet plus grand, plus complet, vous pouvez avoir quelque chose comme une classe endommagée à dégâts maintenant pour tirer une communication entre les classes, mais nous allons essayer de garder toute la logique en un seul endroit dans ce cas. Donc la première chose que nous devons faire très similaire à notre configuration de détection Nous allons. Nous allons obtenir le composant de la capsule, mais toute collision qui est enregistrée dans cette classe, nous allons utiliser le hit non-compartiment car nous savons que ceux-ci se bloquent mutuellement. Donc, ce seront des événements frappés, pas des événements qui se chevauchent. Et la première chose que je voulais faire est de jeter contre l'autre chose que nous frappons et de vérifier que c'est un type d'ennemi que nous avons touché. Donc, nous faisons cela en utilisant le casting en soulignement BP. Et je vais utiliser la base ennemie plutôt que l'ennemi. Mais encore une fois, si vous avez créé une sous-classe de la classe de base, cela signifie que cela tiendra compte de tous les différents types d'ennemis hérités avec cette distribution vérifiée si c'est vrai. Donc, si la chose que nous avons touchée est un ennemi, nous allons devoir faire des choses, vérifier quelques variables. Travailler avec les données basées sur cette classe au fur et à mesure. Donc, je ne vais pas faire est plutôt que de constamment mettre de cette broche ou cette lumière de broche à, nous allons juste promouvoir cela à une variable. Et moi, cela nous évite aussi le potentiel d'avoir besoin de refonte. Je vais lui donner un nom, j'appellerai ça, puis le href. Et puis à partir d'ici, nous voulons recommencer à tirer de certaines de ces informations. On va diviser le stylo de la structure pour le coup. Et nous voulions trouver des informations sur la direction dans laquelle le hit a été fourni. Donc plutôt que de revenir sur le hit Normal que nous avons utilisé dans le passé. Je vais vous montrer une autre façon que vous pouvez voir ce genre de calcul fait est quelques maths vectorielles très simples pour trouver ou déterminer quelle direction un impact de collision a été détecté. Donc c'est très, très simple. Tout ce que nous devons faire, c'est nous allons trouver l'emplacement de nous-mêmes, ou dans ce cas, l'emplacement de la chose que nous avons touchée et ensuite nous enlever de l'emplacement de nous-mêmes. La valeur renvoyée à partir de ce calcul vectoriel sera la direction dans laquelle l'impact du code. Nous avons donc cette information ici. On peut voir l'endroit touché. C' est donc la première partie du calcul. Et une traction de ceci et obtenir le vecteur moins un vecteur. Et puis, comme je l'ai dit, la deuxième partie du calcul est notre propre emplacement. Donc, nous pouvons tirer de cette broche et nous pouvons simplement rechercher l'acte get à la valeur de retour de l'emplacement. C' est une belle et simple. Donc ça va prendre la localisation mondiale de ce que nous avons frappé, enlever notre position loin de ça. Bien sûr, la valeur de retour de cela sera la direction dans laquelle nous avons été touchés. Maintenant, faisons un autre débogage et nous allons imprimer cette chaîne parce que cela ne va pas être très lisible, je suppose que o le rendre très facile à travailler avec cette valeur. Donc, dans la chaîne d'impression, nous allons juste laisser tomber cela augmenterait la durée ici afin que nous puissions voir pourquoi cela peut ne pas fonctionner, parce que nous voulions trouver à partir de cette information dans la direction que nous avons été touchés. Et nous voulons une sorte de valeur simple que nous pouvons toujours tester, que nous ne serons jamais dans une certaine fourchette. Et fondamentalement, nous allons chercher à voir si le coup a été détecté dessous du joueur ou a été détecté du côté de la planète. Si elle est inférieure au joueur dans cette tolérance, alors nous savons que cela sera classé comme causant des dégâts à l'ennemi. Donc nous avons, encore une fois pour ce genre de demande de Mario, sauter sur quelque chose a eu va causer ce dommage. Et si elle entre dans le côté de nous, alors cela sera considéré comme étant dommageable nous-mêmes. Et nous verrons quand nous testons ceci, pourquoi ce n'est peut-être pas le genre de valeur avec laquelle nous voulons travailler tout de suite. Ok, pour qu'on puisse voir quelques choses. Probablement voir ce qui se passe en arrière-plan c'est que nous recevons des chiffres assez importants. Ce que nous voulions vraiment faire est de nouveau, nous sommes très familiers avec travailler avec des valeurs normalisées sont comprises entre une plage de 01. Juste un peu ce que j'essaie de souligner ici, c'est que nous devons toujours nous rappeler ce que 67 serait par rapport à l'axe des x va être 67 degrés, travaillait à l'échelle de certaines choses. Donc ce que nous allons faire, c'est que nous allons en classe comme étant 0. Et puis nous avons un degré entre 01 sur le côté, ou entre 0 et moins un de l'autre côté. Par exemple, c'est vraiment ce que nous allons chercher à faire. Donc, la façon dont nous pouvons le faire est plutôt que d'utiliser le numéro directement, nous allons tirer de cette structure ici. Et nous allons juste normaliser cette valeur. Cela nous donnera quelque chose de très similaire à ce que nous avons eu avec le coup normal sage entre 01, en fonction de la direction qui est d'avoir cette information fournie. La principale différence ici est quand nous branchons ça, je vais donner à cela une tolérance de 0. Et la principale différence que vous verrez ici est que lorsque nous faisons le calcul de cette façon sera deviner le calcul par rapport à l'ACTA. Donc la chose que nous contrôlons. C' est la direction à partir de laquelle on va voir le coup. Donc, nous devrions nous attendre à voir un numéro moins si nous sautons au-dessus de quelque chose et un nombre positif, si ça nous frappe d'en haut, si nous sautons dedans avec notre tête et vice versa, nous pouvons alors dire si ça nous frappe de gauche ou de droite Très, très facilement. Alors qu'avec l'ennemi, mais ce que nous faisions, c'est que Normal retournait la direction que les objets que nous avons touchés étaient confrontés. Si tu t'en souviens. Je vais sauter en 90 presse Play. Maintenant effacé les débogues. Et celui-ci est un peu trop haut pour que nous puissions frapper, mais nous pouvons voir que c'est comme prévu. Nous avons frappé d'en bas, donc nous obtenons une valeur négative sur le Zed. Et nous avons frappé celui d'en haut est un peu difficile de se débarrasser de ces travaux. Donc, nous pouvons voir que nous avons une autre chose utile sur le sol, avoir à dire que nous obtenons moins 0,15 quand il nous frappe légèrement du côté sur l'axe z. Et nous obtenons notre entre 0. Donc si nous le laissons, c' est nous de la gauche est presque moins un, donc nous savons que c'est de la gauche. Et si vous êtes touché par la droite, alors nous sommes presque positifs. Donc, ce que nous voulons faire, c'est trouver ce genre de tolérance où nous pouvons sauter dessus. On peut voir que lorsque j'ai sauté sur la tête de la chauve-souris qu'on presque moins 1 ou juste que j'ai exactement moins un. Donc, ce serait le point idéal pour appliquer des dommages à la classe et qui a le signe odométrie pour le bot à. Nous voulons également prendre en compte avec ces valeurs que nous pouvons obtenir mon, eh bien, nous voulons que notre gamme de recevoir des dommages serait aussi bien. Donc, nous pouvons voir que nous avons beaucoup de valeurs différentes ici. Certains d'entre eux peuvent être juste entre une prise et recevoir des dommages. C' est ce qu'on va faire dans cette étape. C' est donc ce que nous devions faire pour obtenir notre emplacement avec lequel nous avons maintenant les informations pour travailler. Ce que je vais faire est que je vais promouvoir cela à une autre variable. Et je nommerai cette nouvelle variable direction de frappe. Encore une fois, nous allons avoir besoin de ces calculs multiples complets à mesure que nous allons de plus en plus loin à droite des notes qui gardent les choses bien rangées. Les feux stop allaient partout. Nous allons juste faire la promotion de ces deux variables au fur et à mesure. Celui-ci, je vais mettre un commentaire autour juste pour que nous nous souvenions de ce que cela fait. Donc, il est agréable et simple juste de nous rappeler, c'est obtenir le calcul à partir de quelle direction nous avons été touchés. Et le plus va juste les attraper et déplacer ça un peu vers le bas. Comme je sais que nous allons avoir besoin d'une logique de ramification pour décider ce que nous faisons avec l'ennemi lorsque le coup ou la plante lorsque les coups, en fonction de la valeur qui est retourné à. Donc à partir d'ici, nous allons faire notre vérification de branche et ce serait y. Nous avons d'abord divisé la logique pour voir si nous fournissons ou recevons des dommages. Et la façon dont nous allons le faire parce que nous allons obtenir notre direction de frappe, va diviser la broche de la structure. Et la façon la plus simple de vérifier cela est que nous allons baser la plupart de cela hors de l'axe z. Voyez un très simple pour commencer. Nous modifierons cette valeur au fur et à mesure. Mais pour l'instant, je vais vérifier si c'est inférieur ou égal à exactement 0. Donc on peut laisser ça quand je, ça pourrait avoir besoin de peaufiner au fur et à mesure que nous avançons. Donc, si nous obtenons cette valeur, alors ce que nous allons faire ceci sera classé comme les dégâts infligés à la classe ennemie. Pour qu'on puisse sortir d'ici. Donc, si c'est vrai et que nous avons obtenu cette valeur, cela serait classé comme les dégâts infligés à l'ennemi. Donc, je vais très simplement de sa piscine, de la vraie broche d'exécution tant pour les dommages appliqués. Rappelez-vous, nous n'avons pas besoin de savoir à quelle classe cela applique des dégâts. Et nous avons déjà à la cible des poux ou le médecin des dommages dans ce cas sera notre ennemi touché. Les dégâts de l'esprit dans ce cas, je vais juste garantir que nous tuons l'ennemi. Donc je vais tirer de ça, je vais chercher la santé. Donc un peu d'une façon de tricher pour le faire, mais nous allons juste passer dans quelle que soit la santé actuelle des ennemis est comme la quantité de dégâts à appliquer. C' est au moins deux. Essayons très rapidement et il y aura quelques choses que je veux faire en plus des décès. Mais nous avons le système de la mort mis en place chez l'ennemi. Donc, ça devrait travailler pendant que nous allons passer et tester ce que nous avons obtenu. On a un ennemi qui disparaît. Et si nous frappons celui-ci de quelque part en haut, inférieur ou égal à, rappelez-vous, donc nous avons une très large portée qui alors nous pouvons voir que les dégâts sont appliqués à l'ennemi et qu'ils sont détruits parce que nous avons cette fonctionnalité dans l'ennemi, mais la classe juste ici sur l'ennemi est mort. Maintenant quelques choses que je veux faire avant cela, et c'est une sorte de polissage et de raffinement. Étape 2, le système d'impact que nous allons avoir. Encore une fois, quand vous regardez des choses comme Mario et Sonic va continuer à retomber sur ces beaucoup. Ils font des choses simples, ce qui est, ils vont enlever une sorte momentanée d'élan, peut-être arrêter l'entrée pendant une très petite milliseconde, et cela va appliquer une impulsion. Donc, il semble que je rebondisse parce qu'en ce moment, on passe par ça. Et quand nous traversons l'ennemi, il n'a pas vraiment l'impression qu'il s'est passé beaucoup de choses. C' est juste un peu de remplissage qui disparaît. Et celui-ci est difficile de savoir si c'est dû à ce que nous faisons, si nous avons réellement interagi avec eux ou s'ils sont sortis de l'existence. Donc ce que nous allons faire, il y a quelques choses que nous voulons, donc ça commence par les chars. Donc, la première chose est que la vitesse est toujours suivie dans le mouvement du personnage. Et je pense que parce que ce n'est pas basé sur la physique, cela peut ne pas être un problème, mais juste au cas où nous changerons quoi que ce soit à l'avenir, nous allons arriver au mouvement du personnage et régler la vitesse à 0. Donc, très simplement comprendre comment, pourquoi la vitesse est suivie dans le mouvement du personnage et quoi que ce soit en ce moment, nous allons mettre cela à 0. Je pense que la chose la plus importante pour la façon dont nous avons archivé pour mettre en place est que nous allons à nouveau traîner du mouvement des personnages et nous allons arrêter le mouvement immédiatement. Prenez l'entrée que nous avons fournie actuellement, que ce soit de gauche à droite, Sarah est hors de la vitesse et empêche toute forme de mouvement d' être suivi dans la composante actuelle de mouvement Too. Donc, cela va nous donner un gel momentané. Et la dernière chose avant de détruire l'ennemi, j'ai dit qu'on allait ajouter une impulsion. Donc encore une fois, je vais contrôler W, le mouvement de personnage car il en aura besoin à nouveau, je vais tirer d'ici et appeler la fonction d'impulsion ajouter. Je vais juste les brancher entre les deux pour m'assurer que ça fait quelque chose dont nous allons avoir besoin pour prendre le changement de vitesse. Et juste pour montrer une sorte de réponse extrême à ce qui se passe, je vais ajouter quelque chose comme 500 unités auto-impulsion à ajouter au joueur quand il se lie est hors du chapeau ennemi. Oh, on y va. Donc j'ai touché au mauvais endroit, mais vous avez vu que nous avons eu l'impulsion vers le haut, alors essayez celui-là. Et puis on a eu, je veux dire, elle a l'air, hé, je pensais que j'allais être un peu plus extrême 500 regards car je pourrais être un bon rapport qualité-prix pour aller avec ça. Donc nous arrêtons cet élan que nous avons. Nous posons le, le personnage momentanément, puis appliquons cette impulsion vers le haut. Et en fait, je pense que ça a l'air assez bien. J' allais faire quelque chose de plus complexe avec ça. Prendre dans la direction que nous avons frappé les choses en ajoutant une impulsion ou renverser. Mais je pense que pour l'instant, cela semble plutôt bien comme une réponse à sauter de la tête de l'ennemi. Donc avec ça, je pense que c'est une section presque terminée. Donc, nous allons mettre un commentaire autour de cela juste à nouveau. C' est ce que ça fait. Très simplement, je vais juste dire que c'est la logique, la comptabilisation de ce qui se passe quand on endommage l'ennemi ? Maintenant, quelques choses sont venues à l'esprit ici. Quelque chose que nous pourrions vouloir faire semblable à notre ennemi, mais nous allons au Festival, jeter un dû une fois par nuit quelqu'un a. Alors j'ai fait en sorte que nous ne répétons pas ça encore et encore. Et une autre chose est que nous voulons nous assurer que nous suivons ceci inférieur ou égal à interroger ici. Maintenant, en ce moment, je le devine en quelque sorte. Ce que nous travaillons, une chose très simple que nous aurions pu faire est de laisser à cette chaîne d'impression. Et chaque fois que nous frappons quelque chose, quand nous testons différentes choses, comment nous pouvons en quelque sorte noter ce qui se sent bien, qui aurait fait quelque chose que nous aurions senti comme trop indulgent pour classer que la planète refroidit les dégâts, hum, lequel d'entre eux peut avoir senti mieux être une réception des dégâts de l'ennemi. Donc, je vais tirer d'ici et nous faisons une chaîne d'impression et très similaire à avant, je vais juste définir cela pour être beaucoup plus élevé pour la durée afin que nous puissions lire cela un peu mieux. Et ce que je vais faire c'est que je vais tirer dans la direction de la hanche mais la broche de la structure et plutôt que d'obtenir toute l'information, parce que cela semble un peu encombrant à l'écran. Nous ne sommes vraiment intéressés que par cette étape dans l'axe z. Donc on va brancher ça dans le Zed. Et comme je l'ai dit, une fois qu'on aura fait ça, on va s'assurer qu'on ne fait tout ça qu'une seule fois. Et je ne pense pas qu'on ait même besoin de réinitialiser ça pour le moment, du moins pour le moment quand on teste juste, ça veut dire que nous ne pourrons tester que contre un ennemi, mais c'est très bien. Je veux dire, si vous le vouliez, nous pourrions, même si nous n'avons pas tout préparé et prêt à partir, nous pouvons toujours nous en tirer. Donc, si c'est vrai ou faux, cette étape réinitialisera toujours ceci et nous allons simplement décrocher plus tard parce que, bien sûr, nous ne voulons jamais que ce soit une sorte de code prêt à la production avec lequel nous allons travailler. Donc je vais venir ici et on pourra encore tester. Nous savons que ça marche, mais le 0, 1, 2 ressenti par elle, non ? Peut-être un peu indulgent. Et bien sûr 0,9 est certainement assez élevé que bien assorti directement sur le dessus de la fesse. C' est maintenant que nous traversons, nous pouvons tester cela, nous pouvons ajuster et nous pouvons commencer à voir. Donc, disons que la valeur de moins 0,1 pourrait se sentir bien. Donc maintenant, si nous commençons à faire d'autres tests avec les dégâts du joueur et que nous constatons que cela n'est pas déclenché quand nous pensons que ce sera le cas, alors nous obtiendrons des informations alimentées par des soins avec lesquels nous pouvons travailler. Donc, pour les dégâts, nous allons faire une logique très similaire. Nous voulons une fois de plus arrêter tous les mouvements. Nous allons donc compter en même temps la vitesse et le mouvement du composant de mouvement de personnage et l'appliquer également une certaine impulsion. Donc, nous pouvons effectivement copier et coller toutes ces dynamiques en appuyant à nouveau sur Control W, pour copier tous ceux, je vais enlever ça. Donc, nous devons vraiment brancher ça, dans un instant. Et ce que nous voulons faire, je pense que ce sera exactement la même chose. Nous allons vouloir faire un peu de calcul pour l'impulsion que nous ne voulons pas que cela aille directement vers le haut. Ce que nous voulons quand la plante est endommagée. Et surtout parce que le il a été mis à se déplacer constamment vers nous. Nous ne voulons pas qu'il soit dans cet état où le mouvement s'est arrêté et nous serons coincés dans ce genre d'état d'être constamment frappé par l'ennemi, ce qui va évidemment être assez ennuyeux pour le plan. Je vais juste bouger la chauve-souris Dine car c'est très difficile à tester. Donc si nous venons montrer à quoi ça ressemblerait et que les chauves-souris se sont un peu coincées. Ok, on teste, c'est celui-là, celui-là. Donc, nous pouvons déjà voir que c'est en fait à ce stade. On a cette étape où je n'ai pas regardé quelles étaient ces valeurs. Mais nous savons que cela va être un peu trop indulgent. Donc je n'essayais pas de tuer un des meilleurs coups de couteau. Il l'a tué. Donc 0,4. Et en fait, pour les NIH, nous allons sauter complètement les étudiants parce que je vois que cela va causer des problèmes. Je vais m'assurer que les chauves-souris s'alignent. Et je veux que celui-ci soit facile à tester. Alors je vais le poser ici. Ok, donc on ne veut pas que le joueur monte tout droit. Parce que si on monte tout droit comme ça, on peut voir qu'on a une sorte de tuer gratuitement après avoir perdu un peu de santé. On va tuer gratuitement l'ennemi. Ce n'est donc pas un type idéal de réponse à cela. Et ce que nous allons faire, c'est que nous allons nous assurer de prendre en compte la direction dans laquelle nous avons été touchés et que nous allons l'appliquer un peu renversé pour nous. Donc repousser le joueur loin de l'ennemi, ce qui va donner à l'ennemi un peu de rattrapage avec nous et ne pas nous mettre dans une boucle constante de perte de santé et d'être frappé par l'ennemi sans avoir aucun contrôle sur notre joueur. Donc, pour ce faire, je vais tirer de l'impulsion et faire un vecteur. La principale chose que nous voulons changer ici est la valeur x qui, qui va appliquer une force à. Donc, ce qu'on va faire, c'est obtenir la direction du coup. Nous allons diviser la broche de la structure ici, allons tirer d'ici et obtenir un flotteur multiplié par un flotteur. Et puis nous allons réellement avoir besoin d'un autre multiplier par flotteur. La raison en est que nous voulons nous assurer que nous allons dans une version négative dans la direction opposée d'où nous avons été frappés. Donc on va prendre quoi que ce soit, multiplier par moins un, puis le multiplier par une valeur qui, je pense, va être à peu près la même que notre retour ici. Donc, si nous mettons ça à 500, voyez ce que ça fait, et nous pouvons venir tester ça contre la chauve-souris. Ok, donc ça ne marchera pas parce que nous sommes poussés le long du sol. Nous aurons également besoin d'une partie de cette poussée verticale. Nous allons donc être poussés vers le haut et vers l'arrière pour nous assurer que nous pouvons accumuler une certaine vitesse ici. Et c'est exactement ce que je voulais. Donc, vous pouvez voir que là comme le genre SS de tête sur, pousser vers l'arrière et vers le haut, ce qui nous donne la vitesse dont nous avons besoin pour sortir et échapper à la chauve-souris. Et cela signifie que nous ne allons pas prendre de multiples coups en permanence et être dans ce genre d'état d'être coincés avec l'ennemi. Donc on veut s'assurer que ça arrive de l'autre côté aussi. Donc parce que nous inversons cette impulsion qui fonctionne parfaitement. Et encore une fois, je pense que c'est à peu près le bon type de force appliquée aux deux côtés. On obtient ce joli coup d'en haut. Donc je pense que nous pouvons faire, parce que ceux qui travaillent, je vais juste promouvoir ça à une variable, les 500 que nous avons, et je vais appeler ça notre renversé pour nous. Nous pouvons changer cela pour différents cas si vous voulez. Eh bien, je pense que dans cet état, ils fonctionnent tous assez bien à la même valeur. Donc, je vais aussi diviser la structure épingle celle-ci plutôt que d'utiliser ces nombres magiques. Pourquoi on oublierait ce que ça fait. On peut contrôler Dragon, j'espère que ces valeurs ici, ce qui ne me laisse pas faire. Et nous pouvons brancher ça pour savoir que ce que nous faisons c'est que nous appliquons un revers pour nous comme une impulsion au personnage lorsque les ennemis sont frappés. Donc, l'ajout de ces noms de variables permet de garder les choses qui, encore une fois, un peu plus lisible et facile à maintenir le code. Donc, dernière étape, nous avons calculé notre impulsion. Une autre chose que nous voulions faire, nous allons à nouveau contrôler W, les dégâts. Et comme nous l'avons fait dans le passé avec notre test pour la santé, rappelez-vous que nous avions ceci sur l'entrée. Nous savons qu'on peut vraiment prendre ça en fait. Ce serait le bon moment pour couper le code de la base à Stein ici, parce que nous voulons nous infliger des dégâts à nouveau à une certaine valeur. Donc nous dirons que c'est quand ça ira parfaitement. Et comme je l'ai dit, nous ne voulons pas que ça soit dans le dernier match, donc nous allons supprimer ça. Et c'est le moment idéal pour voir n'oubliez pas de le faire. Pour qu'on puisse entrer. Et si nous sommes frappés par le côté, quand je commence à perdre la santé, même si nous sommes frappés d'en haut, quelque chose d' étrange s'est passé là-bas. Donc, nous allons examiner ça dans un instant. Mais ce qu'on a obtenu du côté, au moins on va enlever les dégâts. Si nous sommes touchés de 0, si nous les frappons d'en haut, alors nous enlevons cette santé. Jetons un dernier coup d'oeil ici. On va décrocher ce neuf. Je pense que nous allons accrocher la sauvegarde du V1 et nous devons trouver un bon nom pour ce que cela fait. Et nous appellerons cela des deux, donc nous voulons que les deux réinitialisent ce faire une fois que post-Civil mettra un commentaire autour de cela. Si gentil et simple, rappelle-nous que c'est pour cela que les dégâts de la plante sont comptabilisés. C' est en quelque sorte faire un coup de contrôle ici. Donc ce que je vais faire, et en fait, juste pour m'assurer que cela n'est pas mis à jour plus qu'il ne devrait. Je vais juste changer la direction ou l'endroit qui était, s'ils le font une fois refroidi. Si cela réussit, nous ne voulons définir la direction qu'une seule fois par ennemi que nous touchons. Et si c'est le cas, nous créerons d'autres événements personnalisés. On nomme celui-là, on réinitialise, on touche le chèque. Encore une fois, c'est à peu près ce qu'on fait. Nous réévaluons la capacité de vérifier si nous avons touché quelque chose de réécrit, notez cela, et nous appellerons cette fonction dans les deux cas ici. Et nous voulions nous assurer que nous le faisons sur le vrai et le faux. Bien sûr, si nous avons oublié de le faire une fois, alors nous pourrions réinitialiser après que les ennemis ont été endommagés. Mais si on subit des dégâts, ça ne va pas faire de réinitialisation et on ne pourra plus jamais subir de dégâts. Assurez-vous que nous branchons cette sauvegarde, peut probablement ignorer la chaîne d'impression pour l'instant. Je pense que ce que j'ai trouvé fonctionnait assez bien, quelque part entre moins 0,25. Si vous pensez à pourquoi c'est sur le joueur, ce sera quand nous siffler, errer autour de cette zone sur la classe I du bas vers notre genre de coins du joueur. Ça va être un endroit doux pour infliger des dégâts. Partout ailleurs, nous attendons à ce que les ennemis nous fassent du mal. Que nous subissons des dégâts là-bas. Et ça se sent plutôt bien. Donc je pense que c'est à peu près comme ça que nous voulons que cela soit appliqué. Donc, cela se sentait comme un bon endroit prendre des dégâts. C' était moi qui les rencontrais. Un peu trop de force s'y appliquait. Il peut y avoir des bizarreries avec la force appliquée à quelque chose pour que vous puissiez jouer avec et tester cela. Mais je pense que pour ce qui est des réponses de résultat de succès va, et où sont les points doux pour l'application et la prise de dégâts ? Je suis plutôt content de ceux qui sont à ce stade. Encore une fois, tout cela est en quelque sorte destiné à vous orienter dans la direction de la façon dont vous pouvez commencer à chercher à créer ces effets. On s'attend déjà à ce que vous preniez cela et amélioriez ce qui est couvert ici. Je suis vraiment le vôtre avec votre propre système de dommages à la santé et les différents effets et choses qui sont joués. Une chose que je viens de me rappeler en fait était de regarder ceci est que cela va toujours être problématique. Ce n'est pas vraiment faire quoi que ce soit. Donc juste un retour rapide de, Je viens de dire que nous allons supprimer la tête de Jack réinitialiser parce que tout cela se passe si vite que essentiellement, moins que les ennemis meurent, cela fonctionnerait sur l'ennemi mourant Parce que dès que c'est arrivé, nous avons perdu notre référence de toute façon. Et tous les faux retours, je vais juste réinitialiser cela pour être une valeur nulle. Mais potentiellement avoir la tête de jeu pourrait se produire plusieurs fois parce que cela se produit dans une minute de la milliseconde. Essentiellement, ce que nous voulons faire est de cela, quelle que soit la réponse. Donc avant d'entrer dans notre vérification de branche, nous allons lancer une séquence. Et à partir de la séquence, nous allons lui permettre d'exécuter ses logiques, vérifier ce qui est frappé à nouveau. Et puis très similaire à l'ennemi, retour à ce que nous voulions vraiment faire cela est un retard. Donc, assurez-vous que nous avons une petite piscine avant une autre vérification. Et c'était ce que l'approche initiale. Donc, j'ai un peu négligé ici momentanément ne tenait pas compte du fait que nous voulons ce genre de retard de sorte que pendant un certain temps nous ne sommes pas en mesure de prendre ou même de calculer de nouveaux résultats. Et puis on va faire la même chose. Et cela signifie aussi que nous n'avons besoin de le faire qu'une seule fois. Donc, nous pouvons maintenant faire notre vérification de réinitialisation ici. Et nous pouvons le faire une seule fois, peu importe les résultats ici, je reviens , nous pouvons jouer et nous assurer que les choses ne se passent pas trop vite pour que cette 0,1 de seconde soit trop faible. Mais je pense que ça va bien se passer. Donc j'ai un peu même fait, vous pouvez voir que par insuline eux et c'était un si petit retard avant que cela ne soit réinitialisé que nous allons encore frapper la deuxième fois. Donc je pense que ça va aller. La chose principale, comme je l'ai dit, ce cas, il aurait fonctionné. Ce cas, cela n'aurait pas fonctionné parce que cela se produit si rapidement, réinitialise immédiatement et nous pouvons toujours obtenir ces multiples coups en cours par vérification de collision ici. 17. 17 - Mort de joueurs: Avec le système endommagé et j'ai entièrement mis en œuvre. Nous avons ramené l'ennemi à subir des dégâts et à être tué ou retiré du monde. Nous avons la plupart de cette configuration et prêt à partir pour le joueur. Bien sûr, au moment où la place ne recevait que des dégâts allait encore appeler cette chaîne d'impression par défaut, qui est juste nous rappeler dans la fonction d'iodure de jeu, alors rien n'a été mis en place. Alors, nous allons sauter là-bas et nous pouvons commencer à travailler sur ça. Et nous allons examiner ce qui doit être fait pour la planète soit morte au scénario et comment nous pouvons le mettre en œuvre. Ok, donc la première chose est qu'on sait qu'on est déjà en train de suivre ça. B est la valeur morte, ce qui va être très important pour nous. Nous allons donc supprimer la chaîne d'impression pour commencer. On va frapper, le B est mort. Et nous allons juste être sûrs de définir cela pour être vrai. Donc, encore une fois, que nous savons que tous nos contrôles ou si nous devrions ou non prendre d'autres dommages est basé sur cela. On peut enlever ça de, hé, on n'a pas besoin de faire ça deux fois. Cela correspondrait probablement un peu plus bien à l'intérieur de la fonction gérant la nuit de l'iode. Mais cela signifie que cela est maintenant suivi et nous sommes allés tout autre dommage et nous sommes allés jouer cette réponse qui pourrait mettre en place pas plus d'une fois. Donc, à l'intérieur de la pince morte, appliquer mort. On va mettre le booléen ici. C' est comme je l'ai dit, un peu plus propre. Maintenant, la première chose que je pense que je veux faire est de prendre la vague d'entrée de la place. Nous ne voulons pas qu'ils puissent continuer à courir à n'importe quelle sorte de contribution finale à cela. Donc la toute première chose que nous allons faire est d'appeler une fonction sur la planète, contrôler ça. Donc, nous utilisons le contrôleur get planet et nous appellerons la fonction d'entrée de désactivation. Assurez-vous juste que cela est branché au bon endroit. Donc, le contrôleur de joueur va être le contrôle PI, la cible, et la cible réelle pour l'entrée à désactiver est nous-mêmes. Donc maintenant, quand nous mourrons, cela signifie que si nous poussons vers l'avant, arrière ou quelque chose comme ça, nous ne serons pas en mesure de sauter ou de bouger dans n'importe quelle direction. Et encore une fois, c'est très simple, juste testable que je vais faire est de revenir aux dégâts et va promouvoir cela à une variable aussi, les dégâts de base pour quand le joueur est endommagé. Donc, si nous promouvons cela à une variable, nous pouvons changer cela de n'importe où, ce qui rendra juste un peu plus facile pour nous. Et je vais appeler celui-là infliger des dégâts. Maintenant, idéalement, nous allons changer cela en fonction de ce que nous sommes en train de frapper. Mais encore une fois, projet très simple pour faire avancer les choses. Cela peut être facilement changé plus tard, mais cela nous permettra juste de NIH très rapidement changé cela à un 100. Et cela signifie que quand nous travaillons à l'intérieur de notre planète morte fonction. Si jamais tu veux tester ça maintenant, on peut entrer directement dans le jeu, ok, touché par l'ennemi. On peut voir qu'on est morts. Je ne vais pas continuer à essayer de bouger, sauter, de bouger, tout ça est désactivé. Donc, la première vérification est faite ici, nous avons ce peu de travail. Donc, si vous vous souvenez précédemment, j'ai mentionné que je voulais répliquer à nouveau ce type de Mario ou sonore rétro d'animation 2D où vous volez dans l'air et hors de l'écran. Donc, nous avons déjà quelque chose de très similaire au travail. Mais au lieu d'utiliser l'impulsion du mouvement des personnages, cette fois je vais bouger tout. Nous allons donc prendre les composantes conceptuelles. Et comme ce sont les composants racine, évidemment tout est en quelque sorte imbriqué en dessous de cela pour le mouvement. On va l'attraper et l'impulser. Nous allons également devoir nous rappeler de désactiver toute la collision pour nous permettre de fusionner à travers le sol. Donc, si nous contrôlons la traînée dans nos composants de capture, nous le pouvons, tout d'abord. Pour nous permettre de faire cela, nous devons définir l'ensemble, simuler la physique à vrai. Et nous allons juste accrocher ce coup de secours. Si nous ne l'avons pas fait, nous recevrons un avertissement quand nous avons essayé de faire quelque chose comme ajouter des forces ou des impulsions à quelque chose qui par défaut n'a pas la simulation physique activée. Nous pouvons voir ici, simuler la physique est définie sur false, ce qui signifie que si vous essayez de faire quelque chose lié à la physique, nous obtenons un avertissement ou un message d'erreur arrive. Je vais appuyer sur la touche Ctrl W pour obtenir à nouveau le composant Capsule. Et maintenant que nous avons cela en place, nous pouvons tirer d'ici et nous allons faire fonctionner l'impulsion publicitaire. Donc très semblable à ce que nous avons fait à travers notre mouvement de caractère. Combinez-les, nous pouvons faire la même chose ici. Nous allons définir le changement de vitesse sur true, divisera la broche de structure ici. Et l'imite l'impulsion cette fois un peu plus dramatique. Donc on va mettre ça en place quelque chose comme 800 ou peut-être 900. C' est donc clairement plus élevé que d'être touché. Donc encore une fois, si nous venons dans la presse Play, nous pouvons tester cela. Et ça ne marche pas tout à fait. Rappelez-vous que j'ai mentionné l'autre chose, c'est la collision, donc je pense que ça va être assez élevé. Le problème, c'est que nous avons été immédiatement frappés de coups de parce que nous sommes toujours en train de prendre nos réponses. Mais je veux dire, c'est bien que nous obtenions des résultats drôles en faisant ça. Et nous testons que les choses fonctionnent et comment elles réagissent au fur et à mesure. Donc, nous sommes juste en train de courir partout. Pas tout à fait la réponse que nous voulons, mais nous nous rapprochons définitivement. Encore une fois, nous voulons nous assurer que tout cela soit pris en compte dans la bonne direction. Donc, la première chose que nous voulons faire, nous ne voulons pas que tout ça soit joué potentiellement avant que nous n'ayons désactivé, je voudrais collision. Donc j'ai juste fait un peu de place ici. Je vais à nouveau contrôler W, la composante capital. Encore une fois, c'est juste pour sauver y va de plusieurs endroits. Ça commence à avoir l'air un peu désordonné. Je vais sortir d'ici, je vais régler la réponse à la collision. On peut régler ça sur tous les canaux. Nous n'allons pas avoir à nous inquiéter de ce manque de quoi que ce soit parce que bien sûr à ce stade avec mort, tout ce que nous savons c'est que nous voulons que cela ignore les réponses de collision sur chaque canal. Par canaux. Si vous ne connaissez pas trop les paramètres de collision, nous avons les paramètres prédéfinis de collision. Ce sont les canaux que nous avons le traçage, chevauchement et le blocage et les différentes choses que nous pouvons soit tracer, ce qui serait des choses comme re-cast, vérifier, jeter dans l'eau si vous avez frappé quelque chose ou regardé à quelque chose qui se chevauche pour des choses qui ne bloquent pas les autres objets, mais détectent simplement cet événement dans le même espace. Et puis le blocage, ce qui est ce que nous faisons pendant que nous déplaçons physiquement les choses, ce qui pourrait les frapper avec une réponse presque physique. Donc, nous allons mettre tout ça à l'ignorer. Donc aucun d'entre eux ne bloquera plus. Vous pouvez voir que la plupart d'entre eux sont configurés pour bloquer. Nous allons mettre cela à l'ignorer, qui signifie que nous allons aussi commencer à faire des choses comme tomber par le sol. Nous ne répondrons même pas à la réponse à la collision des planchers, ce qui est idéal parce que j'ai dit qu'une partie de l'installation nous fait tomber du niveau. Donc, en sautant vers le haut et puis en coulant à travers le sol. Donc c'est plutôt bon. Nous pouvons voir encore plus de problèmes ici. Donc, ce que nous avons un problème avec le couteau, c'est que la caméra entre en collision avec des choses avec lesquelles nous n'avions pas de problèmes avant d'entrer en collision. Donc ce que nous voulions faire, si vous vouliez garder la caméra attachée et empêcher ça de se produire. On va aller au printemps et on peut voir que le test de collision est activé. Et fondamentalement ce qui se passait quand il vacillait, le printemps. Rappelez-vous que nous avons ce long bras ici, essayons de s'ajuster s'il fait face au monde et détectons qu' il y a quelque chose que nous pourrions potentiellement entrer en collision. Donc, comme remarquer que lorsque je coupe à travers cela et qu'il essaie de déplacer la caméra , c'est pourquoi il semble un peu GEC. Nous pouvons arrêter cela en entreprenant le test de collision. Et encore une fois, nous allons essayer à nouveau, voir les nouveaux résultats. Donc ce qu'on devrait voir maintenant, c'est qu'on va toujours fusionner, mais c'est bon. Nous pouvons changer le décalage Y quelque chose si nous voulions remplacer cela. Mais l'essentiel, c'est qu'on n'a pas la caméra qui saute. Généralement. Ça va montrer que nous n'avons pas tout un niveau autour de nous. Ce n'est pas ce à quoi tu serais habitué dans ce genre de jeux de la vieille école. Donc, ce que nous allons faire à la place est juste une solution. La façon dont je vais aborder ceci, c'est que nous allons saisir le ressort que je suis composant. Nous allons tirer de cela et nous allons utiliser le détachement du compartiment. Ready sait à quel composant il est attaché, est attaché au composant Capsule, comme vous pouvez le voir ici dans la hiérarchie. Mais ça va prendre le printemps. Il va se détacher de ce qu'il est joint à l'amendement, pour garder l'emplacement et la rotation, nous pourrions avoir besoin de les mettre à jour et il restera là où il se trouve dans le monde. Et c'est plus ce que vous êtes habitué à dire, c'est le genre de joueur de voler vers le haut et hors de l'écran. Donc c'est relatif. Nous ne voulons pas que ce soit relatif, car il est actuellement relatif au composant Capsule. Nous voulons que cela conserve sa position dans le monde. Donc, je n'ai pas où il était par rapport à ses propres composants. Si le bras de ressort est déplacé ici, nous voulons qu'il reste ici quand le joueur meurt parce que vous avez vu ce genre de vol vers le coin de l'écran. Et maintenant on y va. Donc nous avons maintenant le joueur qui saute sur la caméra pour dire où il était. Et nous évitons tout ce problème de coupure. On peut encore voir que le joueur passe par le sol. Mais encore une fois, dans ce cas, pas trop important si vous le voulez. Lorsque cela se produit, vous pouvez faire quelque chose d'aussi simple que vous pouvez ajouter une très petite impulsion sur le y. Donc, si nous ajoutons simplement un impulsif comme un ou quelque chose, cela nous mettra légèrement en avant ou derrière le sol. Les ennemis ont disparu. Celle-là ne m'a pas tué. Et ils vont très petite impulsion. Et encore une fois, si vous vouliez qu'ils volent derrière le sol. Et vous pouvez voir que les différentes tailles qu'il est tombé derrière la colline. Et si vous le vouliez, vous pourriez devenir un peu créatif avec ça. Vous avez vu comment ajouter différents décalages. Encore une fois, en utilisant une sélection, vous pouvez ajouter quelque chose comme une sélection booléenne aléatoire. Et 50, 50 % des chances que vous puissiez les faire voler en avant avec une note sélectionnée ici. Et de même pour le X. si tu trouves ça ennuyeux qu'ils vont toujours tout droit vers le haut et vers le bas. Vous pouvez ajouter une chance aléatoire pour eux de voler à gauche ou à droite. Et les dernières choses que j'ai faites tous ces tests quand je suis toujours parfait. Toujours. Si nous nous dirigeons vers l'arrière, vous pouvez voir quelque chose d'étrange comme ça se produit cependant. On a un peu trop de force avec des forces différentes s'appliquant l'une à l'autre. Donc je pense que ce que nous devons faire avant que tout cela ne se produise, nous allons aussi arrêter ce mouvement. Donc, nous allons désactiver l'entrée, arrêter le mouvement que nous avons. Et juste pour dire, revenir à cela très rapidement, si vous vouliez appliquer différentes impulsions au x et au y et l'appliquer au hasard. Alors je ne vais pas passer par ça à ce stade, nous avons fait des choses très similaires. La plupart du temps, ce serait un bon genre de tests d'apprentissage via Sud entre les sujets. Donnez simplement les vidéos de tirages et voyez si vous pouvez l'implémenter vous-même. Prenez certains de cela comme des nuits que nous avons utilisé, certains des chats aléatoires peuvent mettre ensemble ces et vous avez peu près le résultat pour certains à impulsions aléatoires ont. Donc, la prochaine chose avec cet arrêt de l'élan que nous avons déjà fait cela, nous sommes prêts à copier le code ici, ce qui n'est jamais idéal. Donc ce qu'on va faire, probablement familier avec ça, pas aussi bien. Nous allons en sélectionner deux. On va effacer ça en fonction, et on nommera celui-là le Mouvement du Conseil. Bien sûr, nous allons supprimer ces moitié Dine. On peut traîner dans nos mouvements du conseil et on va juste accrocher ça à la fausse épingle. Donc, faire exactement la même chose par l'impulsion est légèrement différent. On pourrait passer différents dérogations si on le voulait. Mais je pense que dans ce cas, ces deux-là sont assez uniques, pas un laissant tomber cela dans une fonction. Et je pense que ce serait un peu plus un obstacle à notre progrès de code, alors cela nous aiderait. Mais dans ce cas, nous pouvons prendre le mouvement du conseil une fois de plus, aller dans l'iodure de jeu, tirer d'ici, trouver que la fonction de mouvement du conseil et les brancher entre les deux broches d'exécution. Et cela veut juste dire que si nous essayons de nouveau, ce que nous devrions avoir, c'est que le mouvement est annulé. On peut dire que ce n'est pas le cas. Donc ce n'est pas la philosophie Up. Je pense que le problème, c'est que nous ne recevons pas de vitesse du mouvement des personnages. Au lieu de cela, on obtient la vitesse du composant de la capsule. Donc, nous pouvons soit remplacer ou juste à une sorte de fail-safe et 0 bogues, ce qui est l'option que je vais opter. Et ce que nous voulons, c'est sur le composant de capture est un nom légèrement différent. C' est la vitesse linéaire. C' est l'ancienne vitesse linéaire physique que nous recherchons. Donc, le moyen le plus simple est juste de taper linéaire, légèrement à vent long. Mais nous voulons définir toute la vitesse linéaire physique à 0. Et puis on pourra réessayer ça. Et je pense que ça devrait résoudre tout bien. Donc si on va trouver la batte, ouais, tu y vas. Donc nous nous débarrassons de tout le mouvement. La vitesse était en fait calculée sur le composant de capture, non sur le mouvement du personnage. Mais encore une fois, il peut y avoir des cas où il y a changements suggérant que je vais laisser ça dans. Mais nous pouvons voir que, peu importe la façon dont nous bougeons, quand il s'agit de cela, je vais appliquer cette force au maximum que nous voulions faire, qui est une vitesse verticale pour reproduire cette ancienne automatisation en train de mourir. Donc c'est à peu près tout ce que vous pouvez, comme je l'ai mentionné plusieurs fois maintenant, vous pouvez entrer. J' ai déjà arrêté de publier ça. Une autre chose que vous avez peut-être remarqué, c'est que quand nous mourons, nous entrons simplement dans les animations de saut et de chute parce que c'est ce qui est suivi. Nous n'avons vraiment rien comme une animation de la mort. Donc, si vous vouliez en importer un, vous pourriez l'apporter. Et comme je l'ai mentionné, ajouter nouveaux états d'animation devrait être aussi simple que d'ajouter un nouvel état de mouvement, qui est nos énumérations que nous avons exposées ici, pourrait ajouter après le saut, avant de pouvoir avoir une animation de mort , puis en ajoutant ceci pour être suivi. Donc encore une fois, le simple comme dans la fonctionnalité de flip book de mise à jour du lecteur, vérifiez ici et vous pouvez même faire une autre branche entièrement. Donc, plutôt que d'ajouter des choses à ce flux de logique, il pourrait être aussi simple que si c'était mort, puis jouer l'animation de la mort ou arrêter toute animation. Si ce n'est pas mort, continuez à vérifier quelle animation basée sur le mouvement nous devrions évaluer. Et puis il suffit d'ajouter cette épingle supplémentaire ici pour l'animation de la mort. Encore une fois, juste pour résumer pourquoi nous avons adopté ce genre d'approche automatisée, pas entièrement automatisée, mais vous pouvez voir à quel point il est plus facile de brancher un seul nouvel état de mouvement. Et cela aurait été d'avoir un ensemble supplémentaire de logique de ramification sur le côté. Donc, entre les sujets à nouveau, si vous vouliez faire une pause et faire ce genre de chose juste pour ce genre de vernis raffiné, alors n'hésitez pas. Ce n'est pas quelque chose que nous allons ajouter, dans les sujets. Mais cela signifie qu'à ce stade, quand j'en ai fini avec les ennemis et le joueur, ils interagissent vraiment à peu près comme prévu. Et comme nous le voulions, nous pouvons maintenant passer au sujet final, qui va être les classes interactives, les micros pour reconstituer la santé, et les éléments de printemps pour agir comme une sorte de tapis de saut et fournir un niveau légèrement plus intéressant à manœuvrer autour. 18. 18 - Base interactive: Pour les déplacer vers les classes interactives, cela sera considéré d'une manière très similaire à nos classes ennemies. Nous allons donc avoir quelques types différents de cours interactifs dans le projet. Par conséquent, nous pouvons dériver beaucoup de la logique générale d'une classe de base qui dit que nous allons avoir plusieurs classes interactives où nous n'avons qu'un seul ennemi. Nous avons le flip book prêt pour nos chaudes et sources qui chaque fois que nous avons deux cours disponibles, et bien sûr vous pouvez étendre cela pour commencer. Nous allons juste nous assurer que nous gardons la hiérarchie du projet, il est agréable et bien rangé. Nous allons donc créer un nouveau dossier appelé interactifs. A l'intérieur de cela, nous allons créer nos classes principales. Donc, le premier sera notre classe de base interactive. Et bien sûr, ce que nous avons vraiment besoin de cela, c'est d'exister dans le monde avec le potentiel d'interagir avec le joueur. Donc, pour toute personne familière avec Unreal, vous êtes probablement déjà conscient que pour ce la hiérarchie de classes ou de la structure de classe à l'intérieur d'Unreal, le type de verre le plus basique qui peut exister dans le monde avec un transformer et ce genre d'entité physique est une classe d'acteur. Donc nous allons juste descendre et créer une nouvelle classe de plan de type Acteur. Et je vais nommer celui-là que BP souligne la base interactive. Comme je l'ai dit à l'intérieur de cette classe, c'est là que nous voulons prendre ces considérations. Donc, les choses qui seront génériques entre les différentes classes interactives potentielles pour ce projet, je ne peux voir que deux variantes différentes que nous aurons. Et entre eux, il n'y a que deux choses que je peux voir qu'elles doivent faire. L' un d'entre eux sera plus un problème avec la façon dont les flip books sont mis en place. Donc, ça marche autour de ça. Et la seconde est l'interaction réelle que nous allons avoir besoin d'un type de collision ou le joueur pour déclencher cette interaction. Et le problème vient du fait que les flip books sont automatiquement configurés pour jouer et cette boucle. Donc, nous allons devoir rendre compte de ça parce que le cœur va avoir l'air bien en boucle. Mais je pense que le printemps, bien sûr, nous ne voulons pas que ça joue constamment. Tout d'abord, si nous disons que sont les éléments dont nous aurons besoin pour cela, tout ce dont nous avons vraiment besoin, c'est la représentation visuelle de l'animation et de la Loi sur les collisions. Et je vais séparer ces deux actes ou la composante collision. Et je vais séparer ces deux pour que nous n'ayons pas à nous soucier fournir une animation sprite sur le flip book animé. Et ce serait des cœurs de performance potentiellement supplémentaires dont nous n'avons pas besoin. Ce qu'on va faire, c'est encapsuler le flip book entier à l'intérieur d'un planeur cube. Donc, pour que les composants commencent, je vais ajouter un nouveau composant de scène, juste pour le glisser et le déposer au-dessus du composant par défaut ou du composant de apparence par défaut. C' est purement pour que nous ayons comme un point d'ancrage et une transformation pour que les autres composants s'asseoir sur. Mais nous n'avons pas besoin de ces représentations de panneaux d'affichage sphériques, donc nous allons nous en débarrasser avec un composant de scène. Ensuite, au-dessus de la composante péché placera notre livre papier flip. Donc, ce sera l'animation pour les différents sprites. Et puis s'assurer que nous avons sélectionné le livre papier à papier. On peut utiliser la liste déroulante à nouveau et trouver un collisionneur de boîte. Donc, ce sera la chose avec laquelle le joueur va potentiellement interagir. Et je vais juste donner à celui-ci le nom de collisionneur interactif. Cela va juste rendre beaucoup plus facile à mettre à jour à nouveau, revenir va être très clair pourquoi nous avons un flip book papier est un jeu 2D. Nous avons besoin de cette représentation visuelle. Ce que fait le collisionneur pourrait ne pas être si clair. Donc, si nous nommons cela avec précision maintenant, cela rendra les choses un peu plus faciles quand nous reviendrons sur le projet. Donc, la première chose à rendre compte sera cette configuration de collision. En regardant le livre papier pour commencer, nous pouvons voir que la collision que ce canal est réglé pour bloquer tout. Donc, si nous devions ajouter un flip book et qu'il avait des informations de collision, alors cela pourrait potentiellement, encore une fois, en tenant compte de choses comme le composant de ressort lorsque nous avions les États-Unis, cela bloquerait potentiellement le caractère pour se déplacer plutôt que d'ajouter qui l'imposent correspondent à vous, vous empêcher de vous déplacer autour du niveau. Ce que nous ferons à la place, c'est que nous laisserons tomber cette case d'option Collision Presets et nous changerons ceci en aucune collision. Donc, cela ne va pas entrer en collision avec un outil qui ne fournirait aucun coût de collision. Je m'assure également que nous décochons les événements de chevauchement juste au cas où quelque chose change. Donc l'une des collisions va être faite avec notre planeur interactif. Si nous regardons ici, nous pouvons voir que cela est réglé pour chevaucher toutes les dynamiques. Et nous pouvons rendre ça un peu moins cher si nous considérons comment nous allons l'utiliser. Donc, pour le moment, nous pouvons voir que le type d'objet est un type dynamique du monde lui-même. Donc, cela signifierait pour le moment que les autres classes interactives pourraient potentiellement se chevaucher comme elles le feraient avec les véhicules, quelque chose de destructeur. Cela pourrait être des choses comme, je pense que la classe ennemie est probablement une dynamique aussi bien. Donc cela pourrait être déclenché par un ennemi. Donc, ce que nous voulons faire est que nous allons changer ceci en personnalisé à partir de la liste déroulante ici. Je vais prendre ce bouton ici, l'ignorer le haut. Si vous prenez la rangée supérieure, toutes les options ci-dessous seront modifiées. Donc je vais faire en sorte que ça ignore tout sauf la piscine. Donc, la chose que le joueur contrôle est la seule chose avec laquelle nous voulons que cela interagisse. Donc, cela signifie que rien d'autre dans le monde ne déclenchera pas cette fonctionnalité rendra cela un peu moins cher à exécuter. Et cela signifie aussi que nous n'avons pas besoin de considérer autant d'éventualités différentes avec les collisions. Ok, donc c'est notre configuration de composants. Nous pouvons maintenant passer au graphique d'événements comme nous l'avons fait par le passé. Quelques choses que nous pouvons faire ici, nous pouvons nous débarrasser des fonctions que nous savons que nous n'utiliserons pas, qui seront ces deux-là. Et nous n'avons vraiment ces deux considérations que j'ai mentionnées que nous voulions faire, ou un plancher en tant que fonctionnalité générique pour toute la classe interactive potentielle. Donc le premier que je pense va aborder est ce correctif. Donc, la façon dont cela fonctionne, nous allons juste revenir dans la fenêtre rapidement. Si vous n'êtes pas familier avec cela, si nous sélectionnons un sprites pour notre flip, nous avons les hot et nous avons le printemps. Donc, quand nous placerons ça dans le monde, cela fera exactement ce que nous avons ici. Cela va en quelque sorte poster et pomper avec la chasse, ce qui je pense semble assez cool dans le contexte de sorte de développer votre monde. C' est assez agréable d'avoir ces flip books et sprites animés, ayant des choses comme le feuillage se déplaçant autour, les ennemis, rythme en arrière et en avant les micros sorte d' animer dans ce genre de façon de poster ici apporte votre niveau et rend le laboratoire déjà tombé vivant et apporte à la vie. Donc ce n'est pas quelque chose que je voulais rassembler. Cependant, si nous considérons ensuite le printemps FB, bien sûr, nous ne voulons pas que cela jaillit constamment rien comme nous marchons juste par elle. Nous voulons que cela réagisse seulement. Donc, cela va être très réactif, c'est pourquoi nous avons supprimé la coche d'événement. Et nous voulons que celui-ci ne réagisse qu' une fois en jeu cette animation quand elle ajoute de l'impulsion au joueur. Donc ce sera la première chose que nous réparons. Et je vais juste défaire ça comme avec les ennemis. Je veux m'assurer que si nous avons oublié de changer cela dans les classes dérivées, il est très clair que nous n'avons pas donné à cela un flip book parce qu'il y aura, eh bien, ils sont allés montrer quoi que ce soit. Donc ce que nous allons faire, c'est que nous allons tirer le papier flip book va contrôler, glisser ça dedans. On va sortir d'ici. Je vais le chercher en boucle. Donc nous pouvons faire deux choses bien ont, nous aurions pu juste chercher, mettre en boucle, ou nous pouvons vérifier si c'est en boucle. Tout ce que nous allons faire est immédiatement sur Begin Play Set, si nous voulons ou non que cela bouclera. Accrochez cela au stylo d'exécution dès le début de la lecture, puis la nouvelle boucle, je vais sélectionner ceci et nous allons promouvoir ceci à une variable. Et je vais juste nommer celui-là comme étant la lecture automatique. Je vais rendre cela public aussi et compiler ceci et juste m'assurer que par défaut, supposons que nous voulons tout jouer automatiquement et ensuite nous entrerons et nous allons changer cet étage, la classe de printemps. Donc, ce que cela va faire est que cela va entrer et il devrait vérifier s'il doit continuer à boucler indéfiniment ou si ce devrait être une sorte de jeu il une fois type de Sprite. Nous l'avons rendu public de sorte que si jamais nous voulions remplacer quelque chose pour une raison quelconque, peut-être que nous voulions un type très spécial de hot à ramasser. Si ça n'anime pas pour une raison quelconque, alors on pourrait facilement changer ça du World Outliner. Juste quand nous l'avons laissé tomber dans notre monde, nous pourrions choisir les frais généraux que vous avez vus, mais sur d'autres propriétés publiques. C' est donc la première partie de la logique générique que je pense que nous devons faire. La prochaine chose est que nous allons avoir besoin de cette nouvelle fonction, qui se produira lorsque nous interagissons avec le joueur. Je vais créer une nouvelle fonction comme nous l'avons fait avec les Banks ennemis. Je vais nommer celui-là interagir. Et très similaire à la classe de base ennemie. On ne va pas faire quoi que ce soit ici. Au lieu de cela, je vais juste me définir un rappel avec un commentaire simple disant que la fonctionnalité est destinée à être remplacée dans les classes enfants avec leur propre type de fonctionnalité unique. Mais une chose qui, parce que cela va être très simple, vous pourriez étendre cela si vous le vouliez. En changeant les configurations de collisionneur interactif, vous pourriez avoir ces choses interactives comme des ennemis. Donc, si vous vouliez mettre en place des systèmes où les ennemis pourraient utiliser les ressorts ou ils pourraient potentiellement prendre la santé et partager ce genre de pool de santé d'objets avec les séries éliminatoires. Je donnerais au joueur une sorte de défi supplémentaire pour m'assurer que tout en endommageant les ennemis, ils ne se souviennent pas non plus de la santé ailleurs. Vous pouvez facilement changer cela pour être pris en compte dans ce projet, ce que je vais faire, c'est que je vais supposer que nous allons seulement interagir avec le joueur. Donc, pour l'apport, afin que nous ayons accès à toutes les informations sur la santé et à des choses comme ça. Je vais créer une nouvelle entrée, avoir un changement. Le type de variable devait être l'objet de base du joueur non divulgué BP. Donc, nous allons pour cette référence d'objet. Et je vais nommer celui-là que le joueur rugueux. Et nous allons l'utiliser dans un instant. Donc, nous allons nous assurer que nous compilons ceci et sauvegardons. Et c'est à peu près tout ce que nous devons faire pour notre fonction Interact dans le graphique d'événements, nous allons obtenir le collisionneur interactif. Et nous voulions descendre ici. Rappelez-vous que nous faisons les événements de chevauchement. Donc les chevauchements et pas les coups. Le coup est ce que nous utilisons dans les classes ennemies. La principale différence est que les événements HIS agissent comme une sorte de bloqueur. Donc, si vous vous souvenez que la collision devait être résolue à l'étape où le joueur a été poussé hors de sa ligne dans l'axe des y et il a été poussé à l'arrière-plan. En comparaison, lorsque vous faites des chevauchements, vous pouvez faire passer deux choses l'une l'autre. Ils ne vont pas s'arrêter physiquement. Mais nous pouvons avoir un événement déclenché lorsqu'un chevauchement est déclenché ou remarqué et que cela utilise le composant en ligne pour commencer le chevauchement. Maintenant, nous n'allons pas avoir besoin de toutes les informations que nous avons dans le passé. Mais ce que je vais faire, c'est parce que nous voulons refroidir notre fonction Interact et nous voulons notre référence de joueur, même si nous savons que la seule chose contre laquelle nous devrions entrer en collision est la classe de joueur. Je vais faire un chèque supplémentaire ici. Donc, nous allons lancer ceci au type de joueur non divulgué BP. Voyez que nous avons la base de joueur de soulignement BP et de cette façon la fonction Interact quand je n'ai jamais été refroidi. Si c'est un truc CAS réussi, la chose que nous touchons est définitivement le plan. Et non seulement cela, mais nous pouvons ensuite passer dans la référence à la base de joueurs. qui signifie encore une fois que lorsqu'il s'agit d'ajouter de la santé, d' ajouter de l'impulsion, nous avons quelques informations que nous pouvons utiliser sur le joueur. Et c'est vraiment ça. Donc, c'est la classe de base faite. C' est la fonctionnalité générique que les classes enfants que nous sommes sur le point de créer peuvent toutes hériter et réutiliser très simplement. 19. 19 - Santé interactive: La première classe avec laquelle nous allons commencer, nous pouvons quitter la classe de base Interact si vous avez toujours. Ce que nous pouvons faire maintenant est d'utiliser ceci, nous pouvons arriver à une autre classe à partir de cela comme vous l'avez vu avec les ennemis. Donc, nous allons faire un clic droit sur la base interactive, sélectionnez, Créer une classe Blueprint enfant à partir de cela. Et je vais nommer celui-ci BP soulignent la santé interactive. Peu de choses que je vois que nous allons avoir besoin de faire du festival est de s'assurer que les composants sont configurés car nous avons besoin d'eux pour être dans la classe des enfants. Et tout ce que nous avons vraiment à faire, c'est que nous pouvons sélectionner le livre papier et définir ce livre pour être la santé que nous avons déjà. Et puis nous devons nous assurer que l'interactif entre un ajustement assez serré autour de l'image. Pensez à l'étendue de la boîte de 25, un et 25. Ça devrait marcher assez bien là-dessus. Donc nous n'avons pas besoin de rien dans le Y pour passer par profond. Et c'est à peu près une image carrée. Donc, à 25, 25 rayon semble s'adapter assez bien. Ensuite, nous n'avons pas vraiment besoin de faire quoi que ce soit. Rappelez-vous, nous pouvons définir ceci si nous voulions qu'il ne joue pas, nous pouvons définir l'autoplay sur false. Cela prendra effet dans l'événement commencer le jeu. Si vous vouliez que cela se produise plus tôt dans la classe parent, vous pouvez toujours le mettre sur le script de construction, mais je pense que l'événement Begin Play, il devrait être parfaitement bien pour l'instant. La seule chose qu'il nous reste vraiment à faire est d'ajouter des fonctionnalités au lecteur. Et cela va être fait grâce à notre fonction de remplacement que nous déposerons ceci et nous pouvons trouver la fonction Interact ici. Eh bien, nous voulions faire, c'est travailler sur quelques choses qui se passent sur l'événement Interact. Donc, cela va être déclenché dès que la fonction de classe parent du chevauchement est déclenchée si nous frappons le joueur. Donc, nous avons ici les informations sur les joueurs dont nous allons avoir besoin. Et il y a quelques choses à considérer, donc vous pouvez probablement voir comment ça va se passer. Nous voulons ajouter de la santé au joueur, puis nous voulons détruire le ramassage de santé interactif afin qu'il n'existe plus dans le monde. Et prenez juste un moment avant de passer à travers ça ensemble et réfléchissez à quel ordre de cool vous pourriez vouloir faire ça. Donc nous allons ajouter la destruction ici. Ouais, euh, où allons-nous appeler cette mise à jour des fonctionnalités de santé ? Ok, donc bien sûr nous savons que la première chose qui va arriver est qu'on peut expliquer quoi que ce soit qui se passe sur le parent cool si on le voulait. Donc, si nous avons ajouté le cool de destruction ici, bien sûr, cela va arriver avant même que nous puissions même appeler la fonctionnalité parent. Maintenant, dans ce cas, rien ne se passe vraiment sur la fonctionnalité. Donc, nous pouvons soit supprimer tout fait ou simplement brancher ceci et tout faire après cela. Cela n'a vraiment pas d'importance dans ce cas parce que je sais que nous n'allons pas revenir à la classe parent et ajouter des fonctionnalités de base. Donc, dans ce cas, je pense que ce que nous pouvons faire est que nous allons juste montrer comment nous pouvons passer par ce processus sans même appeler la classe parent si nous ne le voulons pas. Ensuite, nous avons la référence du joueur. Et un petit conseil pratique ici. Si vous ne l'avez pas vu auparavant, car c'est maintenant une variable locale aussi longtemps que nous sommes à l'intérieur de cette fonction, nous pouvons rechercher la variable par le même nom. Et plutôt que de tirer ça de partout comme nous l'avons vu dans le passé, nous voulions vraiment éviter d'avoir y va partout. Nous pouvons simplement utiliser le jeu Get ou rref, note, juste frapper. C' est exactement la même chose. Cela signifie que peu importe combien de fois un, où nous avons besoin de refroidir cela, nous pouvons réutiliser cette variable très, très facilement. Et ce que nous voulons faire, c'est voir si nous avons la configuration de la fonctionnalité de santé. Donc, nous savons que c'est la base des joueurs de soulignement BP. Nous recherchons la santé. Nous pouvons voir que nous avons la fonction de mise à jour et nous pouvons définir les variables de santé manuellement. Maintenant, on ne veut jamais vraiment le faire. Les variables d'une classe dans une autre. Cela peut rendre très difficile de suivre où les variables sont définies et mises à jour, surtout si elles ont cessé d'être effectuées en dehors de la classe de joueur à titre d'exemple. Donc ce que nous voulons vraiment faire, idéalement, nous les rendrions privés pour qu'on ne puisse même pas les voir d'une autre classe. Mais idéalement sans cela, cela étant pris, nous voulons créer une autre fonction dans la classe de joueur similaire à la mise à jour de la santé. Mais nous allons appeler celui-ci AddHealth. Allons à la classe des joueurs. Rappelez-vous que la santé de la mise à jour est tout simplement trouver ce qu'est la santé actuelle et de la mettre à jour vers le widget. Donc nous pourrions probablement renommer cela pour être un peu plus clair en fait. Donc, nous allons faire ce widget de santé de mise à jour parce que c'est vraiment tout ce qu'il fait. Ce que nous voulons faire est de fournir une fonction que nous allons créer une nouvelle fonction. Nous nommerons celui-ci AddHealth. Et ici, nous voulons juste fournir une contribution, qui est l'esprit de la santé, qui sera retenu par notre ramassage. Nous allons donc ajouter une nouvelle variable. Oui, on va faire de ça un flotteur et on changera le nom de ça pour guérir ça. Ils ne seront peut-être jamais retenus. Et très similaire à ce que nous faisons sur les événements de dégâts. Si nous pouvons trouver qu'ici sur le seul dommage, nous allons vouloir mettre notre santé plutôt que d'être un moins ici cependant, nous allons définir ceci pour être positif afin que nous puissions copier beaucoup de ceci. Je vais juste copier et nous allons coller ceci dans la fonction addHealth que nous allons définir notre santé pour être la santé actuelle. Et puis plutôt que d'utiliser un moins dira plus une autre variable ou un autre vol, la fiche que dans la valeur, et ce sera ici. Donc, quelle que soit la santé actuelle, plus notre hélium sera notre nouvelle santé. Et encore une fois, nous allons nous assurer de bouffer cela afin que nous ne faisons rien de stupide en étendant, le rendant inférieur à 0. Et nous sommes allés le rendre plus élevé que la santé par défaut. Donc c'est gentil et simple. Copier et coller était parfaitement bien. Nous avons déjà vu cette logique, donc nous n'avions pas vraiment besoin de retracer ça trop. Maintenant, la dernière chose est que nous pouvons appeler nos widgets de santé de mise à jour. Et si nous faisons cela ici, cela va prendre en compte les variables que nous venons de changer. Et cela montrera à l'écran que la nouvelle santé pourrait être shopping là-bas, agréable et simple, qui n'a pas pris très longtemps un outil. Et c'est tout le système de santé maintenant mis en place dans la classe des plaques. Et quelques choses que j'ai remarqué avec la propreté cependant, est que nous avons plusieurs variables en même temps, un peu séparées et prenant beaucoup plus d'espace et ils ont besoin de là-bas. Donc, cela peut arriver dans certaines grandes classes. Ce que nous pouvons faire pour contourner cela, c'est que nous pouvons réellement les classer dans différentes catégories. C' est un exemple, je vais sélectionner le premier type de livre flip, et je vais le mettre dans une catégorie nommée FB. Pour qu'on puisse le montrer et ça. Et ensuite, on peut faire glisser les autres livres à rabat dans ça. Eh bien, nous pouvons maintenant utiliser l'option déroulante et changer les différentes catégories que nous venons de créer. Nous pouvons alors déposer ce diamant afin de voir que nous avons économisé un peu d'espace sur les multiples types de variables là-bas. Et de même, je ferai la même chose pour les vols. Donc, ce n'est qu'un cas de création de nouveaux déviations de nom de catégorie , en les faisant glisser, puis nous pouvons les réduire. Mais c'est fait. Maintenant, il nous reste encore quelques uns, mais je pense que cela va rendre les choses beaucoup plus facile de trouver un I et ensuite ces types uniques et ne pas prendre trop de place. Avant de revenir à la classe de santé, assurez-vous simplement que vous compilez et enregistrez ceci pour vous assurer que cette nouvelle fonction sera en mesure d'être située dans l'autre classe. On va aller au cours de santé interactif. Et à partir d'ici, nous avons maintenant notre référence. Nous sommes prêts à utiliser, nous pouvons tirer de cela et nous pouvons maintenant trouver que cette nouvelle fonction Ajouter la santé. Donc, j'espère que vous pouvez voir pourquoi cela va être un peu plus sûr, mais maintenant ne pas définir la valeur de santé en dehors de la classe où il est utilisé. qui signifie à l'intérieur de la classe de joueur, comme un résumé, nous savons maintenant que cette fonction de santé ou cette variable est uniquement mise à jour dans la fonction AddHealth ou que les dommages sont la connexion du graphe d'événements ici, cela signifie que si nous avons une sorte de débogage à travers cela, nous savons où regarder si quelque chose d'étrange se passe dans le domaine de la santé. Alors que si vous commencez à ajouter ces appels pour définir des variables d'autres classes, il commence à devenir un peu plus difficile de retracer où les multiples de maison peuvent être modifiés, quelque chose à un moment donné dans votre projet. La dernière chose, c'est qu'on peut régler ça à dix pour l'hélium blanc. Et je vais promouvoir cela à une variable. Je vais nommer ceci une valeur de santé et juste déposer ceci et ranger les Unites un peu ici. Nous pouvons également faire ce hit public Compiler. Et la raison pour laquelle nous avons rendu ce public est un œil quand nous traînons ça dans la nature. Alors je reviendrai un peu. Nous trouverons notre santé interactive. Faites glisser ceci, assurez-vous qu'il s'agit de l'axe 0 et de la valeur y sur l'axe y. Et si nous faisons glisser ceci et ajoutons quelques composants de santé différents, Loi, Santé ramassage, désolé, nous pouvons changer la valeur dans l'édition à avoir en rendant ce public. Encore une fois, nous pouvons ajouter une certaine variété à ceux-ci. Donc celui-là peut valer 50. Celui-ci peut être avec et nous quitterons le premier à 10 heures. On peut entrer et tester ça ? Donc je vais vouloir trouver un ennemi pour faire face à quelques dégâts. Nous avons mis l'ennemi pour terminer le test de neige tueur. Alors assurez-vous de retourner dans la classe des joueurs. Si vous avez oublié de revenir à quelque chose d'un peu plus gérable. Donc, les dégâts du joueur ont été réglés à 100. On va vouloir réduire ça à quelque chose comme 20. Encore une fois, habilitez cela afin que nous ne mourons pas immédiatement. Et cela nous donne un peu de temps pour tester la valeur de la maison. D' accord ? Donc on peut voir que ça est récupéré. Nous pouvons également voir la seule chose que nous avons oubliée de faire dans la classe interactive. On n'a pas fini. Nous pouvons vérifier que les différentes valeurs fonctionnaient. Tout ça semble plutôt bon pour ça. La dernière chose, bien sûr, est une fois que nous avons interagi, une fois que nous avons ajouté comment, comme je l'ai dit, nous voulons juste détruire l'acte d'interagir avec sont en fait non, c'était faux. Ne détruisez pas la glace avec laquelle nous interagissons parce que celle avec laquelle nous interagissons serait le joueur. Évidemment, nous ne voulons pas détruire la Playa. Nous allons nous détruire pour que, quand nous entrons, nous puissions ajouter une maison et nous pouvons voir comme étant ramassés, prendre un peu de dégâts. Et puis nous pouvons venir chercher nos ramassages de santé. On se fait arrêter qu'il est détruit. Nous avons donc un ramassage de santé assez standard mis en œuvre. 20. 20 - Spring interactif: Le dernier cours interactif et le cours d'entonnoir que nous allons faire dans cette sélection de vidéos seront notre printemps interactif. Nous avons déjà beaucoup de ce dont nous avons besoin ici. Et en fait, nous avons tout ce dont nous avons besoin pour faire face. Donc, ce que je vais faire plutôt que de créer une toute nouvelle classe, rappelez-vous que celle-ci, notre classe de santé ici, hérite déjà de la base interactive, qui est exactement ce dont nous avons besoin. Alors ce que je vais faire à la place, plutôt que de recréer complètement la roue, je vais contrôler W, notre santé interactive. Nom, ce printemps interactif. A l'intérieur de, hey, encore une fois, nous pouvons voir que cela prendra les mêmes valeurs par défaut que le côté santé que nous dérivons de la classe parent de la base interactive, ce qui est la chose principale ici nous avons une variable. Donc, cette variable de vol va être très utile dans un instant. Je pourrais déjà imaginer ce que nous allons utiliser. Et nous avons notre fonction indirecte aussi être pris. Donc, les principales choses dont nous allons avoir besoin ajuster la moitié, nous pouvons le retravailler un peu. Nous ne voulons pas détruire le ressort quand il est utilisé. Nous ne voulions pas AddHealth, mais nous aurons besoin de deux variables qui seront la référence du joueur. Nous voulons faire quelque chose pour cela et cette valeur pour la santé, nous allons juste avoir besoin de changer le nom, mais nous l'avons déjà disponible. Nous voulions vraiment faire quand le printemps est touché. Nous allons venir ici et nous allons appeler la fonction de personnage de lancement. Donc encore une fois, c'est pourquoi il est utile de savoir que nous interagissons directement avec l'école BPM de base végétale parce que nous savons que c'est un type de personnage qui était un laissez-nous savoir que nous pouvons utiliser cette fonctionnalité intégrée par défaut dans le personnage à lancer. Et essentiellement ajouter de la vitesse à notre classe de personnages est un peu comme un saut, mais avec des écrasements différents. La raison pour laquelle nous voulons notre valeur de vol, nous avons déménagé cette fois. Nous ne voulons pas prendre de vélocité x ou y. Donc nous allons diviser la broche de la structure ici. Et nous, nous pouvons brancher ça dans le Zed comme le lancement, le personnage. Sur l'axe z. Nous voulons les remplacer, ajouter override. Donc, nous prendrons cela pour être vrai et nous pouvons renommer ceci en flux de lancement. Comme on l'a vu dans le passé, on peut laisser ce public. Donc encore une fois, sur l'un des différents ressorts que nous avons autour du niveau, nous pouvons très facilement mettre à jour et remplacer la force qui va être appliquée. Je pense que par défaut, 20 ou 10, même, même le dilemme va être assez faible. Donc, nous pouvons commencer avec quelque chose autour de 500 et avoir un bon sentiment pour une impulsion de 500 et il pourrait être trop faible. Nous pouvons mettre à jour cela dans un niveau lors des tests. Maintenant, la prochaine chose est de se souvenir de la façon dont les visuels vont fonctionner. Alors le festival des visuels, nous voulons changer le livre papier. Nous allons changer ça de chaud pour être notre printemps. Et si nous sautons juste à la fenêtre, nous pouvons aussi voir que je serais entrer en collision va être un peu petit. Je pense que tout ce que je voulais changer, c'est la largeur de ce truc. Donc je vais aller au collisionneur interactif, changer la largeur, ce qui va être notre x pour justifier l'ajustement. Et puis rappelez-vous que nous avons un co-animateur C9. Cela nous permet donc la liberté et la flexibilité de changer la position du flip book, ou dans ce cas, le collisionneur interactif, parce que le collisionneur interactif est un enfant du flip book. Bien sûr, si nous bougeons cela, le collisionneur se déplacera avec lui. Donc, ce que nous voulons faire, c'est prendre ce collisionneur et simplement déplacer cette fois à peu près au fond du printemps. Mais l'idée est que si cela ne jouait pas, il sera recherché. Juste au-dessus du sommet du printemps pour qu'il ressemble dès que nous atteignons le sommet de ce printemps, nous allons jouer cette animation. Donc c'est le côté visuel fait là et mis à jour. La dernière chose est de retour dans la fonction Interact. Rappelez-vous que nous allons définir ceci pour se multiplier pour être faux. Donc, nous ne allons pas jouer constamment dans le niveau. Ce que nous voulons faire, c'est dès que nous aurons interagi avec ça, nous allons régler ça pour jouer à partir de l'action. Nous le faisons en obtenant notre livre papier. Donc contrôle glisser dans le livre papier flip et je trouve le jeu de la fonction arrêtée. On a juste repris ça et rangé un peu la fonction. Je ne suis pas tout ce que le printemps interactif a vraiment besoin de faire. Si nous revenons au niveau, nous avons probablement trop de sources. Donc, je vais prendre un de ceux-ci avec le printemps interactif sélectionné. On peut faire un clic droit sur le cœur. Et nous pouvons choisir l'acteur Remplacer Selected avec. Et l'une des applications va être le printemps interactif parce que nous l'avons sélectionné ici. Donc nous allons le remplacer par ça. Nous pouvons voir qu'il y a peu de changements radicaux et nous pouvons venir ici et bouger ça. Maintenant, dans l'éditeur le regardant, peut-être que ce sera un peu ennuyeux que nous ayons ces automatiser constamment. Donc, dans la base interactive, ce que je vais faire, c'est saisir ça et mettre ça dans le script de construction. Donc, nous espérons que cela devrait arrêter toute animation en boucle. Et maintenant, nous allons, nous pouvons voir que le printemps est immédiatement arrêté d'animer. nous fait savoir que cela fonctionne ne changera que si nous déplaçons cet endroit. Mais c'est mieux que de le faire jaillir constamment. Et ajoutons quelques uns de ceux-ci aussi pour que nous puissions en utiliser un ici. Lorsque nous passons cette section, nous pouvons glisser les planètes facilement, sauter et atteindre cette section. Ceux-ci vont également fonctionner comme de bons moyens de tester différentes vitesses et l'impasto va ajouter. Si parfait, on peut voir que je n'ai pas animé avant qu'on commence à jouer. Saute dessus. Ça va s'animer une fois, pas retourner à la boucle, on doit tuer la chauve-souris. Et on peut encore sauter dessus. Je pense que l'impulsion est peut-être un peu trop faible. Donc, il ne semble pas que nous soyons poussés aussi haut que nécessaire pour que nous puissions entrer et que nous puissions changer cela à 800. Et j'espère que oui. Donc, il semble que je montais avec le printemps plutôt que par lui. Et ça nous pousse à moins que la distance. Pour que nous puissions aller jouer avec différentes valeurs. Sur les autres que nous pourrions tester, peut-être ce que cela pourrait ressentir avec une impulsion des cuisses et autrement assez bon. Mais la principale chose que vous pouvez voir est que ceux-ci réévaluent que l'animation joue constamment et tout est à peu près répondre comme nous l'espérons, inattendu. Espérons que vous avez vu le, le genre de valeurs de l'ajout de ces propriétés publiques également. Donc, nous pouvons facilement entrer et changer les valeurs de la maison maintenant, valeurs du ressort pour que nous puissions ajouter un peu de fil de lancement supplémentaire. Et comme je l'ai dit, si nous le voulions vraiment, nous pourrions mettre un des ressorts pour une raison quelconque pour jouer automatiquement, un des chauds à ne pas jouer. Donc quand on entrera et jouera aux NIH, celui-là continuera de poster sans raison valable. Et le chaud va être congelé en place. Nous avons donc un peu de flexibilité avec la façon dont notre classe est une classe ouvrière ou dérivée du même type de classe de base, ce qui signifie que nous devions programmer. J' aime cela une seule fois et nous pouvons le réutiliser entre différentes classes d'enfants héritées. Maintenant, la seule autre chose que je n'ai pas vraiment abordée est que nous recevons beaucoup d'articles différents ici. Donc, vous pouvez commencer à renommer certains d'entre eux, surtout considérer la façon dont nous avons changé l'une des huttes pour être un composant à ressort ou un acteur à ressort. Il est toujours nommé le nom par défaut. Donc on peut dire que c'est un acte de printemps à entendre, mais c'est toujours cool. Bp souligne la santé interactive. Donc tout peut être caviardant. Nous pouvons changer cela au printemps et cela sera une sorte de mise à jour correctement. Et nous avons la même chose pour celui-ci parce que était juste une copie de l'original, ce qui était vraiment cool pour la santé. Et une autre chose que vous pourriez vouloir commencer à faire est que vous pouvez créer différents groupes. Donc, vous pouvez avoir des sous-dossiers ici. Donc on nommera un ennemi, et on en créera un autre, et on nommera celui-ci interactif. La raison principale est que nous pouvons alors facilement laisser tomber les ennemis et les ennemis dans les directives. Directives, et si nous en avons une, éclaircir les choses et juste regarder le niveau, faire un peu plus de conception de niveau. On peut cacher certaines choses. Bien sûr, quand vous appuyez sur Play, tout cela va revenir. Seules les modifications sont liées. Et bien sûr, cela signifie juste aussi, vous n'allez pas avoir ces énormes centaines et centaines d'objets abandonnés en tout temps, surtout si vous voulez juste trouver quelque chose comme la source de lumière, déplacer quelque chose autour, alors ça va rendre les choses un peu plus faciles à parcourir et nous pouvons laisser tomber ces diamants. Je travaille avec eux quand c'est nécessaire. Avec tout cela fait, nous avons maintenant les bases d' un jeu de plateforme 2D mis en place et fonctionnant à l'intérieur de l'Unreal Engine. Espérons que tout au long de la série de vidéos, vous êtes venu à apprécier une partie de la puissance qui peut être tirée de l'irréel. Et bien qu'il y ait de légers obstacles avec le système de flip book, la façon dont nous pouvons automatiser certains des processus de travail avec ceux-ci n'est pas si mauvaise. Nous avons encore cet outil d'édition de pile vraiment, vraiment utile vraiment compatible avec les collisions et les choses que je n'ai même pas plongé dans. Comme nous pourrions mettre en place des matériaux en utilisant la valeur par défaut sur l'éditeur momentanément pour prendre dans des choses comme normales afin que nous puissions ajouter de l'éclairage et essentiellement répliquer des techniques d'éclairage 3D sur ces sprites 2D. Si nous avons cette information disponible , vous pourriez en faire beaucoup, beaucoup plus. Mais encore une fois, c'est vraiment juste pour mettre en lumière un peu plus que cela. C' est certainement plus qu'un moteur 2D approprié ainsi que 3D. Ce que nous faisons déjà à la fin de la journée est enlevé et l'accès à deux, encore une fois, irréel a toutes ces choses où nous pouvons restreindre différentes choses à différents axes pour nous permettre de travailler vraiment facilement dans un monde 2D. Donc, si vous avez apprécié ce contenu, n'oubliez pas de me suivre pour plus de contenu comme celui-ci, nous envisagerons de faire des mises à jour plus importantes et plus approfondies de contenu similaire à l'avenir. Alors n'oubliez pas de me suivre ici pour du contenu comme ça. Si c'était quelque chose que vous trouvez utile, je voulais en voir plus. J' espère que vous avez apprécié cette série de vidéos. Si vous êtes allé jusqu'ici, alors merci de suivre avec tout et de passer tout le processus avec moi. Je vous remercie donc de votre temps et de votre patience et j'ai hâte de vous voir à l'avenir.