Unreal Engine 5 Blueprints : Plateforme RPG 2D multijoueur | Pixel Helmet | Skillshare
Recherche

Vitesse de lecture


1.0x


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

Unreal Engine 5 Blueprints : Plateforme RPG 2D multijoueur

teacher avatar Pixel Helmet, Game Developer & Publisher

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.

      Introduction

      2:09

    • 2.

      Téléchargement d'Unreal Engine 5

      1:51

    • 3.

      Créer un nouveau projet

      2:13

    • 4.

      Unreal Engine 5 Aperçu

      17:37

    • 5.

      Créer un nouveau niveau

      2:07

    • 6.

      Importation des actifs environnementaux

      3:11

    • 7.

      Créer un ensemble de tuiles

      3:07

    • 8.

      Créer une carte de tuiles

      4:31

    • 9.

      Concevoir l'environnement

      14:07

    • 10.

      Suppression du flickering

      2:12

    • 11.

      Placer la carte des tuiles au niveau

      4:07

    • 12.

      Volume de processus de post

      5:34

    • 13.

      Suppression des Anti

      2:06

    • 14.

      Ajout de la collision

      8:26

    • 15.

      Créer des sprites

      5:12

    • 16.

      Créer des Flipbooks

      2:46

    • 17.

      Introduction au plan

      1:08

    • 18.

      Cours de Blueprint

      5:23

    • 19.

      Contrôleur de mode et de lecteur

      3:47

    • 20.

      Blueprints pour les parents et les enfants

      5:12

    • 21.

      Aperçu du graphique Blueprint

      4:16

    • 22.

      Événements et fonctions

      7:51

    • 23.

      Variables

      17:22

    • 24.

      Configuration du personnage

      8:15

    • 25.

      Mouvement de base

      6:18

    • 26.

      Saut de joueur

      8:29

    • 27.

      Animations de mouvement de joueur

      22:49

    • 28.

      Animations de jeu

      8:25

    • 29.

      Entrée variable personnalisée

      4:27

    • 30.

      Structures

      4:33

    • 31.

      Finaliser le mouvement de personnages

      8:30

    • 32.

      Créer le deuxième caractère

      6:52

    • 33.

      Ajout d'un effet sonore

      21:21

    • 34.

      Interface Blueprint

      8:42

    • 35.

      Introduction au plan d'exécution du Widget

      6:32

    • 36.

      IU de sélection de personnages

      18:34

    • 37.

      Ajout d'une interface utilisateur au Viewport

      7:33

    • 38.

      Fonctionnalité de sélection de personnages

      27:33

    • 39.

      Suppression de l'interface utilisateur du Viewport

      3:12

    • 40.

      Créer l'emplacement Spawn

      12:06

    • 41.

      Créer l'acteur de la caméra

      2:02

    • 42.

      Spawning the Camera

      11:00

    • 43.

      Mise à jour de la position de l'appareil photo

      12:24

    • 44.

      Arrêt du mouvement de la caméra

      15:52

    • 45.

      Améliorer le mouvement de la caméra

      8:25

    • 46.

      Ajout de limites de la carte

      2:14

    • 47.

      Créer les Flipbooks Enemy

      4:06

    • 48.

      Configuration des pions d'ennemis

      3:26

    • 49.

      Volume des limites de maille de navigation

      3:37

    • 50.

      Contrôleur d'IA

      1:52

    • 51.

      Blackboard et arbre de comportement

      3:20

    • 52.

      Trouver un point aléatoire dans la zone mobile

      19:04

    • 53.

      État du mouvement ennemi

      13:39

    • 54.

      Correction du bug et du problème de découpage

      3:03

    • 55.

      Ajout du Sprite de corde

      5:14

    • 56.

      Événement de chevauchement de corde

      12:36

    • 57.

      Entrée de mouvement Up

      4:08

    • 58.

      Climb Conditioning

      19:06

    • 59.

      Mise à jour du mode de mouvement des joueurs

      14:40

    • 60.

      Enumération de type d'objet

      7:51

    • 61.

      Canal de collision personnalisé

      6:39

    • 62.

      Régler l'emplacement du Climb

      10:10

    • 63.

      Supprimer Climb Up Spamming

      7:53

    • 64.

      Pause de l'animation Climb

      14:04

    • 65.

      EXTRA : Nettoyer votre code

      11:27

    • 66.

      Préparer les Flipbooks

      7:25

    • 67.

      Ajout de l'entrée d'attaque

      9:44

    • 68.

      Pour chaque boucle

      3:01

    • 69.

      Joueur appliquant des dommages

      14:35

    • 70.

      Arrêtez l'animation d'attaque

      3:38

    • 71.

      Ennemi recevant des dommages

      8:36

    • 72.

      Animation Enemy Hit

      9:56

    • 73.

      Arrêt de l'arbre de comportement

      7:14

    • 74.

      Ennemy Chasser le joueur

      6:22

    • 75.

      Améliorer Enemy Poursuivre le joueur

      14:00

    • 76.

      Ennemi Appliquer des dommages

      9:27

    • 77.

      Joueur recevant des dégâts

      8:51

    • 78.

      Mode Dieu joueur

      4:07

    • 79.

      Joueur Hit VFX

      15:22

    • 80.

      Joueur Hit Impulse

      10:18

    • 81.

      Mort du joueur

      17:52

    • 82.

      Créer l'interface utilisateur principale

      17:18

    • 83.

      Ajout de l'interface utilisateur principale au Viewport

      5:16

    • 84.

      Mise à jour du Barre de santé

      15:42

    • 85.

      Mettre à jour le texte de la mort

      11:14

    • 86.

      Respawn

      10:53

    • 87.

      Correction des bugs existants

      26:27

    • 88.

      Retirer la chasse du joueur sur la mort

      3:43

    • 89.

      Mort et Respawn

      19:10

    • 90.

      Enemy Respawn Fade

      14:13

    • 91.

      Placement de niveau d'ennemi

      6:54

    • 92.

      Frappé, mort et Respawn SFX

      16:58

    • 93.

      Correction du bug de mort d'échelle

      14:30

    • 94.

      Ajout d'expérience aux structures

      3:49

    • 95.

      Introduction aux tables de données

      3:04

    • 96.

      Tableaux de données à travers Google Sheets

      6:01

    • 97.

      Créer une bibliothèque de fonctions

      7:19

    • 98.

      Ajouter de l'expérience sur la mort d'ennemi

      3:31

    • 99.

      Mettre à jour l'expérience

      2:19

    • 100.

      Mettre à jour le niveau

      8:10

    • 101.

      Créer l'interface utilisateur de niveau

      4:41

    • 102.

      Fonctionnalité de niveau d'interface utilisateur

      6:54

    • 103.

      Finaliser le système de mise à niveau

      6:28

    • 104.

      Niveau Up SFX & VFX

      10:37

    • 105.

      Correction des bugs finaux

      10:31

    • 106.

      Créer l'interface utilisateur de texte flottant

      6:29

    • 107.

      Ajout d'une animation d'interface utilisateur

      5:49

    • 108.

      Fonctionnalité d'interface utilisateur de texte flottant

      4:19

    • 109.

      Créer l'acteur de texte flottant

      7:01

    • 110.

      Logique de texte flottant

      7:30

    • 111.

      Enumération de texte flottante

      7:19

    • 112.

      Fonction de bibliothèque de texte flottante

      8:39

    • 113.

      Réplication d'acteur

      2:43

    • 114.

      Nettoyer le projet

      5:36

    • 115.

      Ressources utiles

      5:57

    • 116.

      Mises à jour du cours

      2:14

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

1 149

apprenants

5

projets

À propos de ce cours

****TOUJOURS À JOUR AVEC LES NOUVELLES LEÇONS****

Commencez votre parcours de développement de jeu avec Unreal Engine 5.

Que vous soyez un développeur de jeux, un programmeur, un artiste ou un concepteur, Unreal Engine 5 vous offre tout ce dont vous avez besoin d'être l'un des moteurs de jeux les plus populaires et largement utilisés par les professionnels. Ce cours s'adresse à tous les acteurs du développement de jeux pour tous les niveaux de compétences, car nous allons non seulement coder mais concevoir et développer un jeu Unreal Engine 2D du début à la fin.

Sauter à droite dans la création de jeu avec sa fonction clé : Unreal Engine 5. Programmez un jeu complet sans écrire une seule ligne de code. Pas d'expérience nécessaire !

Amusez-vous tout en apprenant rapidement à mesure que nous créons un plate-forme RPG 2D multijoueur Unreal Engine 5. Vous verrez à quel point il est facile de commencer et à quelle vitesse vous pouvez créer vos propres jeux. Utilisez les mêmes outils que les studios AAA utilisent dans leurs projets de schémas Tout est gratuit.

À la fin de ce cours, vous aurez créé et codé un plateau RPG 2D multijoueur Unreal Engine 5 avec un suivi facile et approfondi le long de vidéos. Vous apprendrez de nouveaux flux de travail, des outils et des compétences pour faire vos propres jeux 2D dans Unreal Engine 5.

Ce cours couvre tout ce que vous devez savoir pour commencer à développer des jeux 2D, y compris :

  • Unreal Engine 5

  • Unreal Engine 5

  • Unreal Engine 5 multijoueur

  • Importation d'actifs 2D

  • Conception d'environnement à l'aide de tuiles et de tilemaps

  • Création et mouvement de personnages (sauter, courir, frapper..)

  • Création d'ennemis à l'aide d'Unreal Engine AI

  • Animation de personnages à l'aide de Sprites & Flipbooks (pour les joueurs et les ennemis)

  • Système de santé et Unreal du moteur Unreal (pour le joueur et l'ennemi)

  • Système d'expérience et de mise à niveau

  • Interfaces utilisateur (barres de santé et d'expérience, écran de mort, menu de sélection de personnages..)

  • Effets vidéo et sonores (VFX et SFX)

  • Système de caméra Unreal Engine

  • Mécaniciens d'escalade pour cordes et échelles

  • Texte de combat flottant

  • Ressources utiles (qui faciliteront votre processus de développement de jeux)

Je vous fournirai également le projet terminé pour que vous puissiez l'inspecter comme vous le souhaitez tout en suivant le cours.

Apprenez la meilleure pratique de développement de jeux à partir d'un développeur publié.

Je m'appelle Moustafa, et je suis le directeur et le développeur de Farmtale on Steam réalisé uniquement avec Unreal Engine Blueprints. Avec des années d'expérience dans la fabrication de jeux et d'enseignement, je serai là pour vous à chaque étape du chemin. Il existe de nombreuses façons de développer et de coder des jeux, certains mieux que d'autres. Je vous montrerai différents outils et conseils d'optimisation pour obtenir des performances prêtes au jeu.

Inscrivez-vous maintenant, accédez à notre communauté de développeurs de jeux exclusifs et voyez des résultats réels.

Rendez-vous dans la leçon 1 !

Moustafa Nafei

Rencontrez votre enseignant·e

Teacher Profile Image

Pixel Helmet

Game Developer & Publisher

Enseignant·e

Pixel Helmet is a video game developer and publisher based in Denmark. We have recently released our first game Farmtale on the Steam platform.

We decided to get on Skillshare to create high-quality courses and share our knowledge with the game development community. Learning can be tedious at times and we aim to create a fun learning experience.

We offer to create courses within Modeling, Texturing, Unreal Engine, Blueprints, C++, Game Design, and much more. If you need any help during a course, please let us know through Skillshare or connect with us on Discord, Twitter, or LinkedIn.

Voir le profil complet

Level: All Levels

Notes attribuées au cours

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

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

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

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

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

Transcription

1. Introduction: Dans ce cours, nous allons apprendre à développer un multijoueur sur la plateforme pixel off sur l' utilisation de Blueprints et Unreal Engine phi phi recréant une mini version du célèbre jeu 2D Maple Story. Ce cours contient tout ce que vous devez savoir pour commencer développement du jeu en mode multijoueur dans Unreal Engine cinq, y compris Unreal Engine cinq, vue d'ensemble et navigation. Importer dans la conception de l' environnement des ressources l'aide de cartes tuilées, non ? Certains flip books pour animer les actifs de pixels. Les principes fondamentaux des plans, de création de personnages et des mouvements tels que sauter, courir et frapper un système de caméra pour le personnage, créer des ennemis en travaillant avec l'IA. Mécanique aveuglante pour cordes et lettres. dégâts de santé et la mort sont à la fois le joueur et l'ennemi. Et l'expérience et le système de nivellement, création d'interfaces utilisateur, le chargement de combat, le texte, les effets visuels et les effets sonores, ainsi que des ressources utiles qui vous aideront dans votre processus de développement de jeu. Je vais également vous fournir le projet terminé afin que vous puissiez l'inspecter comme vous souhaitez tout en suivant le cours. Mon nom est le plus important et je suis PDG, directeur de jeu et concepteur de casques pixel. Je travaille dans Unreal Engine depuis huit ans et j'ai récemment sorti fan tail on steam, ce qui a été très positif. J'ai également passé deux ans à développer mon métier personnel de conseil de projet. Et je suis actuellement en train de réaliser et programmer le nouveau titre de mon entreprise, qui est un jeu de plateforme 3D inopiné. À la fin de ce cours, vous serez en mesure de créer en toute confiance votre propre projet de jeu 2D multijoueur à partir de zéro. J'ai conçu ce cours pour tous ceux qui sont intéressés par la création de jeux et Unreal Engine cinq luttes pour créer un jeu qui répondra aux normes actuelles de l'industrie. J'espère que vous vous inscrirez et vous joindrez à moi à ce cours. Et rappelez-vous que je suis ici tout au long du cours pour vous aider. J'espère vous voir bientôt. 2. Télécharger Unreal Engine 5: Allez Installer Unreal Engine cinq, vous devez aller dans Epic Games.com. Donc, à droite, Epic Games.com, à l'intérieur de votre navigateur Internet. Et à l'intérieur d'ici, vous avez un bouton bleu à droite appelé téléchargement. En cliquant sur ce bouton de téléchargement, il installera le lanceur Epic Games. Je vais maintenant annuler l'installation car je l'ai déjà installée. Et voici le lanceur sur mon bureau. Je vais donc lancer le lanceur Epic Games. Il vous demandera maintenant de vous connecter et vous pouvez vous inscrire avec un compte Epic Games gratuit si vous n'en avez pas, vous pouvez également vous connecter avec toutes les autres options. Mais je vais me connecter avec mon compte Epic Games car j'en ai déjà créé un. Donc, en cliquant ici, j'écris mon e-mail, en exécutant mon mot de passe. Et une fois que vous vous êtes connecté au lanceur Epic Games, voici à quoi il ressemble. Ici, ce que vous voulez faire est cliquer sur cet onglet Unreal Engine. Et à l'intérieur d'ici, vous voulez cliquer sur la bibliothèque. Au lieu de la bibliothèque, vous pouvez voir toutes les versions Epic Game sont toutes les versions Unreal Engine. Et vous pouvez cliquer sur ce bouton plus si vous souhaitez installer une version Unreal Engine. Donc, en cliquant dessus, vous pouvez voir celui-ci apparaît et en cliquant sur le numéro, vous pouvez sélectionner la version d'Unreal Engine que vous souhaitez installer. Maintenant, vous pouvez voir que j'ai déjà installé Unreal Engine 55.2. Il peut s'agir d'un chiffre différent au moment où vous regardez cette vidéo, peut-être 0,4 ou 5.1, et cela n'a pas vraiment d'importance. Ce cours fonctionnera sur n'importe quelle version que vous avez installée ici. Assurez-vous donc d'installer Unreal Engine cinq ici, vous pouvez voir vos projets précédents. Voici donc mes projets précédents et ils seront vides si vous n'avez pas utilisé le moteur auparavant. Donc, une fois que vous avez installé Unreal Engine cinq, passons à autre chose. 3. Créer un nouveau projet: Allons de l'avant et lançons Unreal Engine cinq. Une fois que vous avez lancé le moteur, cette fenêtre s'affiche. Ici. Vous pouvez ouvrir vos projets récents, mais en ce moment, nous créons un tout nouveau projet et un tout nouveau jeu. Donc, en cliquant ici sur l'onglet jeux, vous pouvez également voir un implacable, vous pouvez réaliser des choses comme le film et la vidéo, automobile, le design, l'architecture, etc. C'est tellement cool. Mais en ce moment, nous sommes intéressés par les jeux. En cliquant ici et à droite, vous pouvez voir différents modèles avec lesquels vous pouvez commencer. Par exemple, vous pouvez commencer par un modèle à la première personne. Si vous créez un jeu de tir à la première personne, vous pouvez commencer par un modèle à la troisième personne, un modèle de véhicule, etc. Mais vous pouvez voir qu'il n' y a pas de machine à sous pour les choix ou un jeu 2D. Et c'est bon. Tous ces modèles, vous pouvez réellement les créer vous-même à partir de zéro si vous savez ce que vous faites. Ce n'est donc pas très difficile à créer. Et ce que je fais habituellement pour mes projets, pour mes cours, je commence généralement par un projet vide parce que je veux tout vous apprendre à partir de zéro. Et une fois que vous avez tout appris à partir de zéro, vous pouvez créer tous ces modèles vous-même. Créons donc un projet vierge. Et pour le codage, nous sélectionnons le Blueprint. La plateforme cible est le bureau, la qualité prédéfinie est maximale. Et pour ces données, consentez si cela est coché pour vous uniquement sur les tickets, donc nous n'avons rien ici. Nous voulons simplement un projet vide et vide et nous sélectionnons maintenant un nom pour le projet. Et pour celle-ci, nous créons une petite version d'une histoire d'érable. Alors appelons-le «  Maple story » comme ça. Et vous pouvez bien sûr choisir l' endroit où vous souhaitez l'enregistrer. Mais je l'enregistre simplement dans l'emplacement par défaut. Allez-y et cliquez sur Créer. Une fois le projet lancé, voici à quoi il ressemble et il est dit : Voulez-vous mettre à jour ce projet ? Je vais juste cliquer sur la mise à jour. Et pour les plugins, je vais juste cliquer sur Dismiss. Et cela n'est probablement pas ouvert à l'utilisation. Je vais le cacher rapidement. Votre moteur ressemble probablement à ceci. Et maintenant que nous avons créé notre premier projet, passons à la leçon suivante. 4. Aperçu de Unreal Engine 5: Avant de commencer à créer notre projet 2D, prenons rapidement un aperçu de ce moteur. chose la plus importante ici, au milieu, c'est la fenêtre d'affichage. Et à l'intérieur de la fenêtre d'affichage, vous pouvez visualiser visuellement votre jeu. N'oubliez pas qu'il s'agit d'un moteur 3D, nous sommes donc à l'intérieur d'un monde 3D. Il s'agit de la carte de démarrage par défaut dans Unreal Engine cinq. Et ici, à l'intérieur du port de vue, vous pouvez naviguer. Donc, en maintenant le bouton droit de la souris en maintenant le bouton droit de la souris enfoncé et en cliquant sur W sur le clavier, nous allons vous faire avancer. Et le fait de maintenir le bouton droit de la souris enfoncé et de cliquer sur S vous déplacera vers l'arrière. Cliquer sur D vous déplacera vers la droite et le fait de cliquer sur un vous déplacera vers la gauche. Alors n'oubliez pas de maintenir le bouton droit de la souris enfoncé et vous pouvez voir, vous pouvez regarder autour de vous, vous pouvez vous déplacer avec W. D est un a, et c'est ce que j' utilise tout le temps. C'est ainsi que je navigue à l'intérieur du moteur. Mais vous pouvez également maintenir le bouton droit de la souris enfoncé et maintenir le bouton gauche de la souris enfoncé. Donc, en maintenant les deux boutons, vous pouvez voir que vous pouvez également vous déplacer comme ça. En maintenant uniquement le bouton gauche de la souris, vous pouvez avancer et reculer comme ceci. Et en maintenant le bouton droit de la souris, en cliquant sur E sur le clavier, nous vous déplacerons vers le haut, en maintenant le bouton droit de la souris et en cliquant jusqu'à ce que je vous déplace sur votre clavier. Enfin, vous pouvez effectuer un zoom avant et arrière avec la molette de votre souris. Si vous l'avez sur votre souris, vous pouvez effectuer un zoom avant et arrière. Et encore une fois, le contrôle le plus basique que j' utilise est de maintenir le bouton droit de la souris et de cliquer sur W, D, S et A. est ainsi que je trouve cela, le moyen le plus simple de naviguer, mais vous êtes le bienvenu. pour trouver votre propre style. C'est bon. Ensuite, nous avons quelques boutons dans la fenêtre d'affichage. Donc, en cliquant sur la première ici, vous pouvez, par exemple, afficher les images par seconde et voir comment, combien d'images par seconde votre jeu fonctionne actuellement. Assez à ce sujet maintenant, supprimons le FPS. Il y a aussi quelque chose appelé une vue de jeu. Et la vue du jeu augmente toutes les icônes à l'intérieur du jeu. En cliquant sur celui-ci ici, vous pouvez voir que l' icône a disparu. Le raccourci est un G sur le clavier, alors cliquez sur G. Vous pouvez afficher et masquer toutes ces icônes. Et c'est plutôt cool quand vous voulez réellement visualiser votre jeu sans aucune icône. Vous pouvez imaginer que si vous avez un jeu volumineux, vous pouvez avoir beaucoup d'icônes à l'intérieur de votre niveau. En cliquant sur G, vous pouvez voir votre jeu sans toutes ces icônes. Vous pouvez également passer en mode immersif ici, le raccourci est de 11, ce qui maximise la fenêtre d'affichage. Cliquez donc sur G pour masquer les icônes. Cliquez sur si 11 réduira ou maximise la fenêtre d'affichage. Et vous pouvez voir le jeu ici en plein écran sans aucune icône et vous pouvez voir à quoi il ressemble. Je cliquerai donc à nouveau sur F7, et je cliquerai à nouveau sur G pour afficher les icônes. Ensuite, nous sommes à l'intérieur du mode perspective, mais il y a aussi quelque chose que l' on appelle des vues orthographiques. Nous pouvons donc voir le jeu depuis la gauche. Voici donc à quoi ça ressemble de gauche. Si vous effectuez un zoom arrière, c'est ce à quoi il ressemble en haut et ainsi de suite. Revenons au mode Perspective. Je veux juste vous montrer que cela existe. Revenons donc au mode Perspective. Vous avez les modes de vue ici en ce moment nous le regardons en mode Dalit. Ainsi, avec l'éclairage, nous pouvons également le regarder sans éclairage. Donc, en cliquant sur non éclairé, voici à quoi ressemble le jeu. Sans éclairage, vous pouvez l'utiliser en mode filaire. Vous pouvez revenir au mode Lead et ainsi de suite. Ensuite, très important, nous disposons de différents outils que nous utilisons tout le temps. Le premier est l'outil de sélection. Et avant de faire cela, je voulais vraiment engendrer quelque chose à l'intérieur de mon niveau. Continuons donc et cliquons rapidement sur le bouton Ajouter au projet. Cliquez ici sur les formes. Et je veux juste ajouter un cube simple. Cliquez donc sur ce cube et il l' ajoutera à votre fenêtre d'affichage ici dans le niveau. L'outil Sélectionner n'est qu'un outil dans lequel vous pouvez sélectionner des éléments. C'est tellement explicite. En cliquant sur l'outil Déplacer, vous pouvez déplacer des éléments. Cliquez donc sur cette case ici ou sur ce cube, et vous pouvez voir un point pivot ici. Et vous pouvez faire glisser le curseur à partir de la taille différente et vous pouvez le déplacer. Ou nous pouvons cliquer dessus, ce cercle blanc au milieu et vous pouvez le déplacer dans toutes les directions en une seule fois. Mais si vous voulez le déplacer dans une seule direction, vous pouvez faire glisser ces flèches. Ensuite, vous avez l'outil de rotation. Et encore une fois, vous pouvez faire pivoter cette boîte en faisant glisser ces angles ici. Ensuite, vous avez l'outil de mise à l'échelle où nous pouvons redimensionner la boîte sous différents angles. Et si vous souhaitez le redimensionner uniformément, vous pouvez cliquer ici au milieu. Et vous pouvez l'adapter à tous les côtés en même temps. Maintenant, il est très important de se souvenir des raccourcis de ces outils. En cliquant sur q sur le clavier, nous allons sélectionner l'outil Sélectionner. En cliquant sur w, sélectionnez l'outil Déplacer, en cliquant sur E sur le clavier, nous sélectionnerons l' outil Rotation et en cliquant sur R pour sélectionner l'outil d'échelle. Et vous pouvez voir que cela accélère beaucoup plus vite. Au lieu de cliquer ici et de le déplacer, cliquez à nouveau ici et faites-le pivoter, etc. Cela prend une éternité. Donc, en cliquant sur w, par exemple, nous pouvons le déplacer comme un E. Nous pouvons le faire pivoter. En cliquant sur notre peut-être que vous voulez augmenter, cliquez sur W pour le déplacer à nouveau au-dessus du sol. Et vous pouvez voir que c'est beaucoup plus rapide à utiliser, donc vous n'avez pas besoin de cliquer ici tout le temps. Mais n'oubliez pas que vous pouvez utiliser les raccourcis Q, W, E et R. Donc, si vous voulez un document complet de tous ces raccourcis, vous pouvez les trouver sur mon site Web. Ensuite, nous avons les outils d'accrochage. Donc, celui-ci est le mouvement qui s'enclenche. Vous pouvez donc voir quand je clique sur w pour mon outil de déplacement et que je déplace ma boîte, vous pouvez voir qu'elle ne bouge pas correctement, qu'elle s'accroche à quelque chose. Et c'est l' outil de capture si vous le désactivez. Donc, en cliquant ici, vous pouvez voir maintenant que je peux le déplacer en douceur. Si je l'active à nouveau, je suis en train de prendre. Vous pouvez également augmenter cette capture en cliquant sur ce numéro, puis en augmentant le nombre. Maintenant, vous pouvez voir qu'il s' enclenche beaucoup plus. Et c'est très utile à utiliser si vous souhaitez placer des objets comme les uns à côté des autres à un endroit précis. Un autre raccourci est que vous pouvez maintenir la touche Alt sur votre clavier et cliquer et faire glisser. Et cela copiera essentiellement l'élément comme ça. Et peut-être souhaitez-vous placer des éléments comme celui-ci, comme enfoncer Alt, faire glisser et les placer comme ceci. C'est très cool où vous pouvez utiliser le snapping ici. Mais si vous voulez déplacer quelque chose en douceur, vous pouvez simplement le désactiver. Et peut-être voulez-vous le placer spécifiquement comme ceci ou tout ce que vous faites ici. Ensuite, nous avons l'accrochage de la rotation. Cliquez à nouveau sur E. Vous pouvez voir qu'il tourne tous les dix degrés. Vous pouvez le désactiver, et maintenant nous pouvons le faire pivoter en douceur. Une fois encore. Vous pouvez également augmenter les montants de capture, par exemple tous les 30 degrés. Maintenant, il s'enclenche tous les 30 degrés. Maintenant, vous pouvez les remettre à la normale, par exemple dix ici, et ce n'était qu'ici. Et il en va de même pour la mise à l'échelle. Vous pouvez également effectuer la capture pour la mise à l'échelle. La dernière chose que nous avons, c' est la vitesse de la caméra. Vous pouvez donc voir quand je déplace ma caméra dans la fenêtre d'affichage, Disons que vous avez ce grand monde ouvert et qu'il me faudra une éternité pour que je me déplace tout le long là-bas. C'est ainsi que vous pouvez augmenter la vitesse de la caméra. Par exemple, vous pouvez le mettre à huit. vois maintenant que je peux aller beaucoup plus vite dans mon monde. Et c'est très utile à utiliser une fois que vous avez un monde vaste. Mais je doute que nous utiliserons autant pour notre jeu 2D parce que nous n'avons pas vraiment un monde aussi vaste. Mais dans un jeu 2D, peut-être voulez-vous vous concentrer sur quelque chose de très petit. Et ici, il est très utile de réduire la vitesse de la caméra à quelque chose de très lent. Parce que parfois dans les jeux 2D, vous regardez de très petits détails. Et c'est bon de le régler à très lent afin qu'il puisse se rapprocher des objets. Bon, assez à propos de la fenêtre d'affichage. C'était la chose la plus importante à l'intérieur du moteur. C'est ici que vous pouvez voir le jeu. Ensuite, nous avons le panneau Détails, et à l'intérieur, vous pouvez afficher différents détails sur les éléments que vous avez sélectionnés dans la fenêtre d'affichage. Vous pouvez donc voir quand je sélectionne le sol ici, j'ai des détails différents. Lorsque je sélectionne ce cube. Encore une fois, différents détails. Des détails tels que l'emplacement, où se trouve ce cube dans mon monde ? Quelle est la rotation de ce cube ? Quelle est la balance ? Et rappelez-vous que nous avons mis ces cubes à l'échelle. Je vais juste augmenter encore un peu la vitesse de ma caméra. Alors, ce cube ici, rappelez-vous que nous l'avons mis à l'échelle de haut en bas. Et si vous souhaitez le réinitialiser, vous pouvez simplement passer à l'échelle dans le panneau Détails. Et vous pouvez écrire 111, comme ça. Et maintenant, nous sommes de retour à ce qu'était ce cube. C'était donc à l'échelle de 111. Si vous avez fait pivoter, vous pouvez voir que nous avons fait pivoter le cube de dix degrés et l'axe Z. Et vous pouvez voir ce qu'est x, c'est en maintenant la souris au-dessus. Le rouge est donc l'axe X , le vert est l'axe Y, et le z est le bleu. Le bleu ici est le Z, le X est cette flèche rouge et la flèche verte ici est l'axe Y. Encore une fois, vous pouvez réinitialiser la rotation en écrivant 000, et maintenant nous avons réinitialisé leur rotation. Et si vous souhaitez placer le cube à un emplacement spécifique, vous pouvez modifier l'emplacement ici. Vous pouvez voir les modifications de l' emplacement lorsque vous déplacez ce cube comme celui-ci dans la fenêtre d'affichage, il suffit de regarder ici la valeur Y maintenant. Mais si vous voulez le placer spécifiquement à 1 000, vous pouvez aussi juste un millier comme celui-ci. Et vous pouvez voir que le cube a été placé spécifiquement à 1 000. Il est donc très utile d'utiliser le panneau Détails ici. Si vous avez des numéros spécifiques, vous souhaitez que les articles soient inclus. Et si vous faites défiler vers le bas, vous pouvez voir tous ces différents détails que vous pouvez afficher et modifier propos de cet élément que vous avez sélectionné. Ne vous inquiétez donc pas de tous ces détails pour l'instant. Nous allons travailler avec tout cela plus tard dans le projet. Ici, dans World Outliner, vous pouvez voir ce que vous avez actuellement à l'intérieur de votre niveau. instant, si vous cliquez sur ce cube, par exemple, vous pouvez voir qu'il le sélectionne également à l'intérieur du plan. Si vous sélectionnez ce cube ici à l'emplacement sélectionné, automatiquement à l'intérieur du plan. Vous pouvez également sélectionner les articles en cliquant ici dans le plan général. Et je l'utilise surtout lorsque je veux trouver un article spécifique et que je clique sur cet objet. Par exemple, la lumière de direction est la lumière du soleil. Et quand je clique dessus, je vois qu'il est ici avec toutes les autres icônes. Très, très basique. Le World Outliner affiche tous les éléments que vous avez actuellement à l'intérieur de votre niveau. Si je clique sur ce cube et que je clique sur Supprimer sur mon clavier, je clique également sur ce cube et je clique sur Supprimer sur mon clavier. Vous pouvez les voir disparaître du World Outliner parce que vous ne les avez plus à l'intérieur du monde. Ici, nous avons la barre d'outils avec les boutons de base. En cliquant sur le fichier, vous pouvez créer un nouveau niveau. Vous pouvez également enregistrer le projet et créer un nouveau projet. À l'intérieur de la modification, vous avez les préférences de l'éditeur. Et dans les préférences de l' onglet Modifier, vous pouvez modifier les paramètres de votre éditeur. Par exemple, lorsque je sélectionne cette case, vous pouvez voir que la ligne de sélection est orange. Je peux cliquer ici ici, cette couleur orange ici. Je peux cliquer dessus et je peux changer la couleur. Et vous pouvez voir que je peux modifier la couleur de la sélection à l'intérieur de ma fenêtre d'affichage. Maintenant, je n'ai jamais eu besoin de modifier quoi que ce soit à l'intérieur d'ici, donc je vais le fermer à nouveau, mais il est agréable de savoir que vous avez cette option dans les paramètres du projet. Vous pouvez modifier les paramètres à l'intérieur de ce projet. Par exemple, vous pouvez modifier l'icône de démarrage de ce projet. Vous pouvez écrire le nom d'une entreprise, écrire un e-mail de contact d'assistance. Par exemple, lorsque vous lancez le jeu sur Steam, les gens savent à qui contacter s'ils ont des bugs dans le jeu ou s'ils veulent réellement vous contacter. Vous pouvez également ajouter un film. Donc, vous savez, lorsque vous ouvrez un jeu, vous avez ce film de démarrage, peut-être cinq secondes. Vous pouvez donc en ajouter un à l'intérieur d'ici. y a donc beaucoup de choses que vous pouvez modifier ici spécifiquement pour ce projet. Les préférences de l'éditeur sont donc des paramètres de votre éditeur et les paramètres du projet sont paramètres spécifiques à ce projet, les projets Maple Story que nous sommes en train de créer. Ensuite, nous avons des plugins et nous voulons travailler avec cela dès maintenant. Ne vous inquiétez pas à ce sujet. À côté de la fenêtre, vous pouvez ouvrir plusieurs fenêtres. Cela est très utile si vous disposez de plusieurs moniteurs. Par exemple, nous pouvons accéder à Viewport et cliquer sur Afficher le port deux. Et cela ouvre une deuxième fenêtre d'affichage ici. Et je peux voir ici cette fenêtre d'affichage, c'est très utile. Je peux voir mon jeu en plein écran et je peux le mettre à l'intérieur de mon autre moniteur. Et maintenant, je peux voir ce jeu ici. Et sur mon deuxième moniteur, j'ai cette fenêtre que j' ai ouverte tout le temps. Ne vous inquiétez pas de tout ça. Nous n'y toucherons que plus tard dans le projet. Et à la fin de l'aide, vous pouvez consulter la documentation d'Unreal Engine cinq. Je pense que c'est un peu manquant en ce moment et difficile à comprendre, mais vous pouvez y jeter un coup d'œil si vous le souhaitez. Ici, dans la barre d'outils, vous disposez de différents outils entre lesquels vous pouvez basculer. Par exemple, vous pouvez créer des paysages, créer des feuillages, tels que de l'herbe et des arbres, etc. Mais nous ne voulons vraiment toucher aucun de ces outils, car n'oubliez pas que nous créons un jeu 2D et non un jeu 3D. Gardons donc ces outils pour l'instant. Pour ce bouton, vous pouvez ajouter différents éléments. Nous avons ajouté la sphère ou le cube, en fait le cube à l'intérieur d'ici. Mais vous pouvez également ajouter d'autres éléments tels que l'éclairage. Et vous pouvez ajouter des cinématiques. Ainsi, les appareils photo, vous pouvez ajouter des volumes, des effets visuels. Et nous ajouterons quelques choses à l'intérieur d'ici. Mais encore une fois, n'oubliez pas que nous créons des jeux 2D, donc nous n'utiliserons pas tous ces éclairages. Mais je dirais ce qui est génial de créer un jeu 2D à l'intérieur d'un moteur 3D. Vous pouvez imaginer que vous pouvez créer un jeu 2D avec des effets d'éclairage 3D. Il y a des choses intéressantes que vous pouvez faire à l'intérieur d' un moteur 3D lorsque vous créez des jeux 2D. Voici les plans. C'est le codage et nous y travaillerons plus tard. Ne vous inquiétez pas à ce sujet. Et ici, vous pouvez cliquer sur le bouton Jouer pour jouer au jeu. Et pour l'instant, nous n'avons pas vraiment beaucoup de choses à faire. n'y a donc pas grand-chose à voir. Cliquez sur Escape pour quitter le mode Play Game. Enfin, ce que je veux vous montrer, c'est le navigateur de contenu. Et c'est là que seront tous les fichiers que nous importerons. Donc, si vous descendez ici à gauche, vous avez quelque chose appelé un dessin de contenu, en cliquant sur ce bouton, cette fenêtre apparaîtra à l'intérieur de ce dessin de contenu. Tous les articles que nous importons seront à l'intérieur d'ici. Donc, tous les personnages que nous avons, toute la musique, tous les effets visuels, tous les fichiers seront ici dans le navigateur de contenu. Et maintenant, vous pouvez voir que vous devez cliquer ici pour que cela soit ouvert. Et je pense que pour moi c'est un peu ennuyeux car quand je clique sur quelque chose dans la fenêtre d'affichage, cela disparaîtra. Certaines personnes pensent que c'est cool, et tout dépend du style. Mais je pense que pour moi, c'est un peu ennuyeux qu'il disparaisse tout le temps quand je clique sur quelque chose ici. Et aussi pour le cours, je pense que ce sera génial d' avoir cela tout le temps. Je vais donc cliquer sur creusé dans la mise en page. C'est aussi comme ça que c'était dans Unreal Engine quatre. Et cela restera tout le temps même si je clique sur les choses ici. Et je préfère le faire tout le temps pour pouvoir voir mes fichiers dans le navigateur de contenu. Vous pouvez cliquer sur ce bouton Ajouter et ajouter différentes choses. Par exemple, nous pouvons ajouter une classe Blueprint, et c'est la programmation que nous effectuerons ultérieurement. Vous pouvez également ajouter des éléments concernant l'animation, des Blueprints, des effets de feuillage interfaces utilisateur pour l'interface utilisateur. Et cela peut paraître écrasant parce que vous avez tellement de choses que vous pouvez ajouter, mais vous n'allez utiliser que, je dirais environ vingt-cinq pour cent de tout cela. Ne vous inquiétez donc pas de tous ces boutons. Vous n'utiliserez pas tout cela. Et je dirais que vous devriez simplement commencer à apprendre les bases et passer à partir de là et vous faciliter la tâche ici et pour le papier 2D, c'est ce avec quoi nous travaillerons. C'est donc le pixel art, le jeu 2D avec lequel nous allons travailler. Vous pouvez également ajouter des éléments dans le navigateur de contenu en cliquant ici avec le bouton droit de la souris. Ainsi, vous pouvez voir, vous pouvez voir la même chose. En général, je ne clique jamais sur ce bouton. Je clique avec le bouton droit de la souris ici à droite. Vous pouvez également ajouter différents dossiers en cliquant ici avec le bouton droit de la souris. Et en haut, vous pouvez cliquer sur Nouveau dossier et créer de nouveaux dossiers. Et je vais simplement supprimer celui-ci en cliquant sur Supprimer sur mon clavier pour le moment. Et si vous le souhaitez, vous pouvez aller de l'avant et cliquer sur ce cube supprimé, supprimer celui-ci également. Nous connaissons maintenant les bases de ce moteur et comment il est construit. Il est donc beaucoup plus facile pour nous de travailler avec notre projet. 5. Créer un nouveau niveau: Pour créer un nouveau niveau, commençons par créer un dossier. Ici, dans le dossier de contenu. Cliquez avec le bouton droit de la souris et cliquez sur Nouveau dossier. Et appelons simplement ça des cartes. Au lieu de ce dossier de cartes ici à droite, vous pouvez cliquer avec le bouton droit de la souris, puis cliquer sur le niveau. Appelons ça maintenant. J'aimerais indiquer à tous mes fichiers que je crée un préfixe. Je vais donc appeler ça la carte pour commencer. Et cela facilite la tâche une fois que vous avez beaucoup de fichiers, vous pouvez les rechercher beaucoup plus facilement en écrivant le préfixe. Appelons ça carte, et appelons ça principal. Je l'appelle simplement la carte principale. Je ne sais pas quel nom je veux lui donner maintenant, alors appelons-le simplement Carte principale. Et ici, au fait, vous pouvez sauver, donc tout sauvegarder. Et si vous avez effectué des modifications à l'intérieur de ce niveau, donc avant d'éditer des cubes, donc si j'ajoute un cubain supprimé et que vous essayez d'enregistrer, il vous demande d'enregistrer cette carte ici parce que vous avez fait des modifications. En fait, nous ne voulons pas vraiment enregistrer cette carte car nous n'allons pas utiliser ces cartes par défaut. Je vais double-cliquer sur ma nouvelle carte que j'ai créée. Il va me demander de sauvegarder ce niveau ici. Je vais cliquer sur Ne pas enregistrer. Maintenant, je suis à l'intérieur de mon nouveau niveau et vous pouvez voir ici dans mon plan, World, Outliner, je n'ai vraiment rien parce que vous n'avez rien à l'intérieur de ce niveau en ce moment. Avant de terminer cette vidéo, définissons ce niveau comme carte par défaut. Je vais donc modifier et dans les paramètres du projet, vous pouvez cliquer sur les cartes et les modes. Et ici, vous pouvez voir que l' éditeur Startup Map est actuellement la carte du monde ouverte par défaut. Cliquez ici et modifiez-la sur notre carte que nous avons créée, à la fois la carte de démarrage et la carte de jeu par défaut. Juste comme ça. Maintenant, lorsque vous le fermez, cliquez simplement sur fichier et enregistrez tout. Maintenant, lorsque vous fermez le moteur et que vous l'ouvrez à nouveau, il s' ouvrira par défaut à ce niveau. 6. Importer les ressources de l'environnement: Importons maintenant les actifs environnementaux que nous utiliserons dans les prochaines leçons. Par conséquent, ici, je vais cliquer à nouveau avec le bouton droit de la souris dans le dossier de contenu et créer un nouveau dossier. Et appelons cela un atout. Au lieu de ce dossier de ressources, je vais cliquer avec le bouton droit de la souris et créer un nouveau dossier. Et appelons cela un environnement dans les restes de fil. D'accord, il est donc très bon de rester organisé à l'intérieur de votre projet car une fois que le projet devient volumineux, il sera difficile de naviguer. Si vous ne savez pas où se trouvent les fichiers à l'intérieur de ce dossier d'environnement, je vais cliquer dessus. Nous voulons importer nos fichiers. Je vous ai donné ce matériel de cours. Donc, à l'intérieur du matériel de cours, si vous pouvez aller dans le dossier Environnement, à l'intérieur d'ici, je vous ai fourni certains fichiers. Il se peut qu'il y ait d'autres fichiers que vous voyez ici. Je mets juste ces fichiers dans ce dossier au fur et à mesure. Donc ce que je veux que vous importiez comme celui-ci, la route du dragon et celle appelée Sea Dragon Road, BG pour l'arrière-plan. Pour ces deux-là, il vous suffit de cliquer et de les glisser et de les placer dans le dossier Environnement. N'oubliez pas que si vos fichiers sont encore dans un format rare ou zip, vous ne pouvez pas faire glisser directement un dossier zip à l'intérieur de ce vous devez peut-être extraire ces fichiers sur votre bureau, ou n'importe quel emplacement que vous voulez. Et puis vous pouvez simplement, comme dans un dossier normal ici, les faire glisser à l'intérieur du projet. D'accord ? Lorsque vous êtes à l'intérieur du projet ici, vous pouvez voir que nous avons nos deux textures et lorsque vous cliquez dessus, par exemple, je clique sur ce PGY1 et les dopants sur mon deuxième moniteur. C'est celui que nous utiliserons. Maintenant, celui-ci peut avoir, vous pouvez voir quand je zoome, il est floue. Ce n'est pas vraiment un choix. Et comme vous le savez, le pixel art n' est pas floue comme ça. Ce sont des pixels très clairs que nous voulons. Et c'est ce que nous réalisons actuellement, car vous êtes à nouveau à l'intérieur d' un moteur 3D et que le moteur 3D l'explose pour que tout soit beau. Mais dans le cas d'un jeu 2D, nous ne voulons pas vraiment qu'il soit flou. C'est très facile. Il suffit de cliquer sur les deux. Cliquez donc sur celui-ci en maintenant Ctrl, en cliquant sur le second, je peux cliquer avec le bouton droit de la souris, aller les actions Sprite et dire Appliquer le papier aux paramètres. Et cela supprimera essentiellement cet effet de flou. Donc, lorsque je retourne ici et que je zoome, vous pouvez voir que l' effet de flou a disparu et vous pouvez voir chaque pixel. Et maintenant, cliquons sur File and Save All, et c'était tout pour cette vidéo. Il est donc très important de prendre de cette vidéo lorsque vous importez un fichier pixel art, n'oubliez pas de cliquer avec le bouton droit de la souris, aller dans les actions Sprite et d' appliquer les paramètres Pepper 2D pour supprimer cet effet de flou que le moteur annonce par défaut. 7. Créer un ensemble de mosaïques: Maintenant que nos actifs sont prêts, nous sommes prêts à créer un jeu de tuiles. Et dans la vidéo suivante, nous allons créer quelque chose appelé carte de tuiles. Donc, la différence entre un ensemble de serviettes et une carte de tuiles est que Tell a dit que vous pouvez l'imaginer. Si vous peignez les serviettes sont vos couleurs et la carte des tuiles est votre toile. Nous devons donc indiquer aux ensembles de créer une carte de tuiles. Créons les ensembles de serviettes, les couleurs que vous souhaitez peindre sur la carte de tuiles que nous créons ultérieurement. Cliquez avec le bouton droit de la souris sur ce premier ici. Ceux-ci, ce sont les tuiles. Cliquez dessus avec le bouton droit de la souris. Passons à l'action Sprite et cliquons sur Créer un ensemble de serviettes. Je vais le renommer. Je supprime généralement ce jeu de tuiles et la fin ici. Et je l'appelle simplement un ensemble de serviettes. Et faisons la même chose ici avec l'arrière-plan. Allez dans les actions Sprite et appliquez un autre endroit. Très bons jeux d'outils. Encore une fois, renommons ces deux niveaux dès le début. Maintenant, nous devons dire les décors. Allons dans le premier ici, nos tuiles. Nous voyons maintenant que ce sont les tuiles et nous ne pouvons pas faire grand-chose ici au lieu d'un ensemble de serviettes. N'oubliez pas ce jeu de tuiles, nous l' avons créé uniquement pour pouvoir utiliser ces tuiles pour peindre sur notre carte de tuiles. Et maintenant, vous pouvez cliquer sur ces différentes tuiles et vous pouvez voir les serviettes lorsque vous cliquez dessus. Ils seront affichés ici à droite pour que vous puissiez voir la serviette et à quoi elle ressemble. Mais la taille n'est pas correcte. Vous pouvez voir ici la taille de la tuile à droite. Vous devez régler cela sur 30 pixels 30 pixels car je sais que c'est 30 pixels. Je les compose à l'intérieur de Photoshop, alors je les ai assemblés ici en une seule texture. Je sais donc que la taille totale est de 30 pixels. Pixels. Lorsque vous téléchargez des objets depuis Internet, ils spécifient généralement leur taille. C'est donc là que vous les définissez. Donc, 30 sur 30. Maintenant, c'est correct et lorsque vous cliquez sur les tuiles, vous pouvez voir à quoi elles ressemblent. Et nous utiliserons cela plus tard pour peindre sur notre carte de tuiles. Fermons cela et passons au jeu de titres pour l'arrière-plan. La taille de la tuile est également de 30 sur 30, il faut donc changer cela à 30 pixels par 30 pixels. C'était donc ce qui était important. Nous avons fixé la taille de notre carrelage à l'intérieur de cet ensemble de carreaux. Et maintenant que nous avons ces jeux de tuiles, permettez-moi de cliquer avec le bouton droit de la souris à l'intérieur de ce dossier, faire un nouveau appelé textures. Et je veux placer cette texture à l'intérieur de mes textures parce que nous n'en aurons plus vraiment besoin. Ne le supprimez pas car ils sont réellement dérivés de cette texture. N'oubliez pas que nous avons cliqué avec le bouton droit et créé un ensemble de serviettes. Mais je les ai simplement mis à l'intérieur des textures parce qu'on n'a pas vraiment besoin de la revoir. De plus, la même chose avec ce fond, déplacez-le à l'intérieur de ce dossier, et nous n'avons besoin que de voir ces jeux de tuiles. Cliquons donc sur Fichier, Enregistrer tout et passons à autre chose. 8. Créer une carte de mosaïques: Nous pouvons maintenant cliquer avec le bouton droit de la souris sur notre ensemble d'outils. Et lorsque vous cliquez avec le bouton droit de la souris, vous pouvez voir ici que vous avez la possibilité de créer une carte de tuiles. Créons donc une carte de tuiles. Et encore une fois, je vais supprimer cette carte ici à la fin qu'elle met. Et je vais juste l'appeler TM pour la carte de tuiles en tant que préfixe. Et vous pouvez double-cliquer sur la carte des tuiles pour entrer ici. Avant de faire quoi que ce soit à droite, oubliez pas que vous devez régler la largeur et la hauteur de la queue sur 30 x 30. Alors, assurez-vous simplement que c'est correct. Et c'est juste pour le définir comme celui-ci. Donc, quelle que soit la valeur que vous définissez ici à l'intérieur de l'ensemble, vous devez définir la même chose à l'intérieur de la carte de tuiles que pour la largeur et la hauteur de la carte, vous pouvez choisir la taille de votre carte. Quelle devrait donc être la largeur de votre carte B ? Et pour celui-là, je pense que je vais aller avec 60 la largeur et 40 et la hauteur. C'est donc la carte sur laquelle nous allons travailler à gauche. Vous pouvez voir les ensembles de serviettes. ce moment, l'ensemble de tuiles actives est celui-ci, la route du dragon où nous avons nos tuiles. Et vous pouvez cliquer n'importe où ici, sélectionner quelque chose. Et lorsque vous le sélectionnez ici à gauche, vous l' avez maintenant comme pinceau à l'intérieur de vos cartes de tuiles. Je peux donc cliquer ici et vous pouvez voir quand vous cliquez sur le peindre sur votre carte de tuiles. Il n'existe pas de moyen rapide de le supprimer. Vous devez le supprimer, mais un par un. Cliquez donc sur moi pour choisir la gomme. Et vous pouvez également cliquer ici sur la peinture, le rasoir et le remplissage avertir en cliquant sur e pour choisir la gomme. Vous pouvez les effacer et cliquer sur B sur le clavier pour choisir le pinceau. Donc B pour le pinceau et cliquez sur IE pour effacer à nouveau ces pinceaux. Donc, peu importe ce que j'ai aimé ici à gauche, vous pouvez maintenant le peindre ici sur la carte des tuiles. Et à l'intérieur de la carte de tuiles, elle est constituée de couches. Donc, si vous avez travaillé dans Photoshop, vous savez ce que c'est. Si vous souhaitez modifier le nom d'une couche, vous pouvez cliquer sur F2 sur le clavier. Vous pouvez cliquer avec le bouton droit de la souris et modifier le nom, mais je clique généralement sur F2 pour renommer les choses. Donc, en cliquant sur F2, et par exemple, je peux l'appeler la couche de base. Je peux créer un nouveau calque en cliquant sur ce bouton. Et je peux, par exemple, renommer cela en arrière-plan dans le calque de base. Si vous avez sélectionné cette option, nous allons simplement peindre quelques tuiles aléatoires ici. Imaginons que ce sont les carreaux de sol que nous avons. Je peux maintenant passer en arrière-plan et disons que je veux peindre l'arrière-plan. Et disons qu'au hasard, mon parcours est ceci. Je peux peindre ça. Vous pouvez voir qu'il est maintenant au premier plan, car c'est ainsi que les calques fonctionnent. Le premier sera donc à l'avant. Donc, si vous voulez que ce soit l'arrière-plan, vous devez le placer sous le calque de base. Cliquez donc sur l'arrière-plan. Vous pouvez cliquer sur cette flèche. Il est écrit « Envoyer en arrière », et il va le mettre à l' envers ici. Et maintenant, peu importe ce que vous peignez, vous pouvez voir que vous ne pouvez pas peindre dessus parce que c' est votre arrière-plan. Maintenant, lorsque vous cliquez sur le calque de base, vous peignez davantage. Vous pouvez voir, vous pouvez peindre devant votre arrière-plan. Parce que rappelez-vous que c' est l'arrière-plan et il s'agit de deux calques distincts. Donc, si vous cliquez sur l'œil ici sur le calque de base, vous pouvez voir qu'il s'agit de l'arrière-plan. Vous pouvez également masquer l' arrière-plan, etc. Très, très utile. Nous allons les utiliser pour peindre notre carte. Et c'est essentiellement pour la carte des tuiles. Donc, rien de complexe. Nous avons quelques tuiles. Nous pouvons dessiner notre carte ici et la rendre géniale. Et nous pouvons utiliser ces couches pour la peindre. Donc l'arrière-plan, la base, nous avons peut-être un avant-plan et ainsi de suite. N'oubliez pas de définir la largeur et hauteur de votre carte comme vous le souhaitez. Je veux que la mienne ait 60 sur 40, et la tour devrait être de 30 sur 30 car ces tuiles mesurent 30 x 30 pixels, vous pouvez simplement supprimer l'arrière-plan. Donc, en cliquant ici, en cliquant sur Supprimer sur mon clavier, ça a écrasé mon moteur. Laissez-moi simplement le redémarrer. Cela arrive parfois avec Unreal Engine. Parfois, il s' écrase au hasard. Laissez-moi donc revenir à mon jeu de tuiles et vous pouvez voir tout cela déjà supprimé. Cela arrive parfois, donc Unreal Engine, je dois le recréer. Donc, en créant la carte de tuiles, je vais juste créer le tout à nouveau, accord, maintenant je suis de retour là où j'en suis. J'ai réglé mes paramètres ici et nous sommes de retour. Passons donc à la leçon suivante et concevons l'environnement. 9. Concevoir l'environnement: Commençons maintenant à concevoir notre environnement. Pour commencer, revenons à notre carte de tuiles. Et à l'intérieur d'ici, si vous n'avez pas de set de serviettes sélectionné ici sur le côté, comme vous pouvez le voir sur mon écran, vous pouvez cliquer sur ce petit bouton. C'est également ici que vous basculez entre vos tuiles d'arrière-plan et vos cellules normales ici. Commençons donc par ces tuiles normales pour l'instant. Ce que je vais commencer, c'est juste appeler cette couche quatre baies. Je vais donc cliquer sur F2, appelant cette couche de base. À l'intérieur d'ici, nous allons peindre. Mais avant de peindre, ce que j'aime faire ici dans les hauteurs de la carte, j'aime ajouter un peu plus de tuiles en tant que tuiles tampons. Parce que lorsque notre personnage l'est, vous pouvez imaginer que c'est notre carte et ce sont là les limites. Quand le personnage est ici dans le jeu. Et la caméra est comme ça, en regardant le personnage. La chose ici sous la carte sera sombre. Et nous ne voulons pas que le joueur regarde cette partie inférieure ici. Je veux que le personnage soit debout d'une manière où la caméra ne passe jamais en dessous de cette ligne ici. J'aime ajouter un peu plus de tuiles que ce que j'ai écrit ici, juste pour avoir des tuiles tampon pour que la caméra ne passe jamais sous le sol. J'aime donc ajouter dix tuiles en bas ici, et aussi dix tuiles en haut ici. Donc, la caméra ne va jamais au-dessus de cette ligne ici. Donc ce que je peux faire, c'est que dix plus dix ont évidemment 20 ans, et c'est 60 ans. Quelque chose de très cool et d'Unreal Engine. Vous pouvez réellement écrire plus 20 et appuyer sur Entrée, et il l'ajoute automatiquement et cela indique 60. Maintenant, je ne pense pas que nous ayons besoin d'un tampon ici et ici car ce que je vais faire , c'est que je vais arrêter la caméra. Quand le joueur va dans cette direction, je vais arrêter la caméra ici. Il ne va donc jamais derrière cette ligne, mais nous pouvons toujours l' agrandir si vous le souhaitez. Bon, donc comptons ici. Nous avons ajouté dix tampons, dix tuiles tampons ici. Donc, 123412345678910. Donc, ici, à 50 ans. Donc, si on peint une serviette ici, j'ai 50 ans. Ainsi, les tuiles tampon vont jusqu'ici et les tuiles réelles sont au-dessus juste ici. Donc, ce que vous pouvez faire, c'est simplement prendre ces tuiles ici et commencer par la gauche. Vous pouvez donc simplement sélectionner plusieurs tuiles. Vous n'avez pas besoin d'en sélectionner un à la fois. Vous pouvez sélectionner, cliquer et survoler et sélectionner plusieurs tuiles à la fois. Et vous pouvez les placer ici à l'intérieur de notre couche de base que nous avons créée. Maintenant que j'ai placé ceci, vous pouvez continuer à placer comme ça. Mais en tant que variété, je vais cliquer sur Control Z pour annuler. En tant que variété, vous pouvez voir que vous en avez deux. Vous pouvez donc en choisir un autre au hasard et le placer. Il peut choisir un aléatoire, placer, ce qui donne aux carreaux un peu de variété. Vous pouvez donc voir ici que vous avez un peu de variation et vous pouvez constater qu'il s' agit du même titre. Je vais donc choisir au hasard ici. Peu importe ceux que vous choisissez simplement pour essayer de sélectionner des options aléatoires. Nous éliminons donc schémas répétitifs que nous voyons parfois en pixel lot. Très bien d'avoir différentes tuiles sur lesquelles vous pouvez la placer. Je vais accélérer ce processus. Je vais le faire jusqu'ici. Et vous devez aussi le faire jusqu'ici. Donc, continuez simplement à faire ça. Cela prendra peut-être cinq minutes. Très bien, maintenant, je finis ici. Je fais les dernières tuiles. Maintenant, j'ai fini cette partie inférieure ici. D'accord ? Donc, lorsque vous en avez fini avec cette partie, vous devez déjà créer l'herbe ici. Donc, ici, pour l' herbe, la même chose. Vous pouvez ajouter une variante. Et vous pouvez les sélectionner, les cliquer et les sélectionner. Et n'oubliez pas de sélectionner cette partie supérieure car si vous cliquez ici, vous pouvez voir que vous manquez l'herbe ici si vous ne sélectionnez pas cette partie supérieure également. Donc, en cliquant sur les deux, sélectionnez ceci et ceci au-dessus. Donc, ces six tuiles. Et ensuite, comme avant, vous pouvez simplement cliquer ici et sélectionner une autre variante et cliquer à côté. Et continuez jusqu'à ce que je ne veuille pas que vous le fassiez jusqu'ici. Je veux que vous vous arrêtiez quelque part ici, alors je vais aller un peu plus vite. D'accord. Je vais donc m'arrêter ici et je me suis arrêté vers 3947. Ce sont les coordonnées que vous n' avez pas à faire exactement comme moi, mais si vous le souhaitez, ce sont les coordonnées que je m'arrête. Vous pouvez créer votre propre design. C'est très bien. Vous n'êtes pas obligé de faire la même chose. Mais ce que je veux faire ici, nous avons quelques rampes ici dans la texture. Et nous voulons ajouter ces tuiles. Je veux ajouter une rampe ici pour que nous puissions avoir quelques variations. Encore une fois, vous pouvez cliquer ici et sélectionner comme ceci ici. Et vous pouvez ajouter la rampe ici. Et encore une fois, continuons avec les tuiles, sélectionnez-les et continuons simplement comme avant. Continuez à sélectionner une variante comme celle-ci. Vous pouvez voir que cela prend du temps, mais c'est aussi, je pense que c'est la partie amusante. Vous pouvez être créatif avec la carte que vous créez. Et vous pouvez créer quelque chose de cool. Il nous manque donc quelques tuiles ici. Maintenant. Allons de l'avant et, comme avant, comblons ces lacunes vides. Très bien, donc cette partie est terminée. Maintenant, ce que je veux faire en dernière partie est sur une plateforme apparaît. Alors, encore une fois, pour ajouter une plateforme, nous allons sélectionner cette partie inférieure. En sélectionnant l'une de ces options, vous pouvez voir que vous avez également des variations ici. Donc, en sélectionnant la partie inférieure, je ne sais pas. Oui, nous devons également sélectionner la partie inférieure ici, car vous pouvez voir qu' également sélectionner la partie inférieure ici il y a quelques petites tuiles qui se trouvent en dessous. Encore une fois, tout comme l'herbe où nous sélectionnons six pièces ici, nous devons également sélectionner six pièces ici. Et pour la plateforme, il suffit de la regarder, voir où se trouve le personnage. Et je crois quelque chose comme ici. Et encore une fois, choisissons quelques variantes et ajoutons-les ensemble. N'oubliez pas de sélectionner tous les rapports sexuels et pas seulement ici, car sinon vous manquez les tuiles ici. Alors, sélectionnez ici, faites quelques variantes et faites la plateforme en sautant un peu d'avance. Très bien, maintenant que j'ai cette longue plateforme ici, vous pouvez ajouter l'herbe et, comme avant, il suffit de sélectionner ce que nous avons fait ici. Sélectionnez une variation. Et maintenant il nous manque ces tuiles ici à droite. Je n'ai pas vraiment pu les trouver. J'ai essayé et essayé et je n'ai pas pu les trouver. Mais ce que nous pouvons faire, c'est simplement ajouter certaines de ces tuiles pour terminer cette partie ici, car elle est coupée comme vous pouvez le voir et elle n'a pas l'air bien. Et je n'ai pas vraiment la partie coupante. Ceux-ci ne fonctionnent pas vraiment avec ça. Nous devons donc faire les nôtres et nous contentons d'utiliser celui-ci. Donc ce que je vais faire, vous pouvez le voir ici, si je le sélectionne et que je l' ajoute dessus, comme ici, vous pouvez voir que je supprime mes tuiles actuelles et ce n'est pas quelque chose que nous voulons faire. N'oubliez pas que nous avions des couches avec lesquelles nous pouvions travailler. Vous pouvez donc créer une nouvelle couche. Et appelons ça des marques. Et avec cette couche avant, nous pouvons maintenant sélectionner ces tuiles ici, par exemple. Par exemple, de ce côté, vous pouvez voir maintenant que vous pouvez cliquer et ajouter, et vous ne supprimez pas les tuiles que vous avez faites auparavant. Et c'est parce que maintenant vous peignez sur cette couche avant. Vous ne peignez plus sur cette couche de base. N'oubliez pas de sélectionner cette couche avant et de peindre dessus dessus. Et sélectionnez également ces tuiles ici, juste les trois en bas. Et ajoutons-le en haut d'ici. Et vous pouvez le voir comme ça fonctionne. C'est mieux que rien. Maintenant, nous avons les serviettes qui ferment cette coupe ici. Et je vais sélectionner le prochain, l' ajouter dessus et sélectionner la partie inférieure pour accompagner celle-ci. Je peux maintenant voir que nous avons une plateforme. Ce serait peut-être mieux si nous avions les titres de clôture, mais c'est très bien. C'est uniquement pour la pratique. La prochaine chose que vous pouvez ajouter ici est l'arrière-plan. Et ce que nous pouvons faire, c'est ajouter une autre couche. Et je vais en fait appeler ça le ciel. Je vais juste utiliser ce calque juste pour le ciel et le mettre, vous pouvez cliquer sur cette flèche, rappelez-vous, et le mettre à l'arrière parce que nous voulons que ce soit un arrière-plan pour ce type. Rappelez-vous maintenant que nous sommes à l'intérieur des tuiles normales. Vous souhaitez passer à l'arrière-plan. Encore une fois, vous pouvez cliquer sur ce petit bouton et vous pouvez basculer entre l'arrière-plan et les tuiles normales. Donc, en arrivant au fond, vous avez ce petit bleu. C'est en fait le ciel. Il suffit donc de cliquer sur celui-ci, cliquer sur G pour l'outil de remplissage, ou vous pouvez le sélectionner ici. N'oubliez pas que vous pouvez sélectionner les outils ici. Et n'oubliez pas de cliquer d'abord sur ce type. Et ici, vous pouvez cliquer sur le dessus de l'ouïe, vous voir combler le vide et maintenant nous avons le ciel. Maintenant, ce que nous pouvons ajouter ici est un peu fade, donc nous devons ajouter quelques éléments de fond. Maintenant, vous voulez créer un nouveau calque car si vous peignez, supposons que vous vouliez épingler cette herbe et cliquer sur B pour sélectionner l'outil pinceau et l' ajouter ici, vous pouvez voir que le ciel est en train d'être enlevé parce qu'on ne peut pas peindre dessus. Créons donc un nouveau calque et laissez-moi simplement l'appeler arrière-plan et étroitement arrière-plan. Ce ne sont que des accessoires arrière. Appelons simplement cela en arrière-plan et voyons si nous devons en changer le nom. Essayons donc de concevoir quelque chose. Je vais donc commencer par ce bâtiment. Il suffit donc de sélectionner tout ce bâtiment ici et de le placer quelque part ici. C'est donc un peu intéressant comme ça. Ok, donc maintenant nous avons celui-ci et vous pouvez même ajouter un mât lumineux ici. Il s'agit donc simplement d'être créatif, essayer de faire ce que vous voulez. Vous n'avez pas vraiment besoin de me suivre ici. J'essaie juste de créer des choses au fur et à mesure et je vais passer un peu plus loin. Comme avant. Il suffit de sélectionner ce que vous voulez ajouter quelque part. Peut-être voulez-vous ajouter ce poteau lumineux ici. Alors essayez de faire votre propre truc et je vous verrai dans un petit moment. Très bien, j'ai donc ajouté quelques éléments. Vous pouvez voir que ma carte ressemble à ceci. Maintenant, j'ai ajouté. Il y a une herbe ici. Je viens de l' ajouter sur le côté. Il a donc l'air un peu coupé et intéressant. Et j'ai ajouté ces objets ici, les fleurs et juste le côté que j'ai ajouté auparavant. Je n'aime donc pas trop ajouter à l'intérieur de l'environnement. J'aime rester simple car il sera regroupé si vous ajoutez trop à l'environnement et cela ne sera pas beau à mon avis. Nous avons donc maintenant ces éléments minimaux que nous avons insérés dans un environnement. Maintenant, ce que je veux que vous fassiez, je veux remplir le fond ici pour qu'il ne soit pas trop bleu. Je veux le remplir de ces grands fonds. Alors allez-y et sélectionnez cette grande chose ici, juste comme ça et vous pouvez voir que vous pouvez la placer autour. Maintenant, nous ne voulons pas le placer au-dessus de nos articles ici. Je vais donc ajouter un autre calque ici, et je vais juste l'appeler BG pour l'arrière-plan 01. Je crois que nous devons en faire deux et vous comprendrez pourquoi. Donc, BG 0102, je vais juste passer 0 en dessous du 01. Et celui-ci, au lieu de l' appeler arrière-plan, appelons-le BG props, donc des accessoires d'arrière-plan ou quelque chose comme ça. Donc, en cliquant sur le premier, l'arrière-plan est 01. Je ne veux pas ajouter tout ça ici comme ça. Ce que je veux faire, c'est juste que je veux l'ajouter comme ça. Je ne vois donc que l'arbre sans tout, sans tout ce bâtiment en dessous. Donc seulement voir les arbres et remplir le fond avec. Donc pour le contexte 01, essayons de voir si on peut le rendre intéressant, quelque chose comme ça. Et 0 à, je ne pense pas qu'on puisse encore le remplir avec 01. En fait, nous pouvons le remplir ici. En fait, remplissons 0 en premier, cliquez sur 0 pour, je veux juste mieux le visualiser. Quelque chose comme ça, peut-être. Essayons encore 01. La raison pour laquelle je ne refais pas 02, car rappelez-vous que vous ne pouvez pas peindre sur vos couches comme ça. Donc, remonter à 0101, c'était ici. Nous pouvons donc maintenant peindre ici sans rien affecter. Donc, quelque chose comme ça. Je pense que ça marche, ça, ça a l'air bien. Revenons ici. Je sélectionne juste la gomme pour ne pas avoir à regarder tout ça. Mais vous pouvez voir ici maintenant, si le personnage se promène, ça va bien, nos antécédents sont remplis. Vous pouvez, bien sûr, je n'ai pas de nuages, mais vous pourriez bien sûr, s'il y en a pour rendre les nuages plus intéressants ici. Mais je pense que c'est bon. C'est comme si on se promène ici, ça n'a pas vraiment l'air mal et ça a l'air intéressant. Vous pouvez même ajuster vos accessoires ici, les invites d'arrière-plan que vous avez placées auparavant. Vous pouvez les ajuster si vous le souhaitez. Et c'était en fait pour concevoir l'environnement. Donc, la raison pour laquelle je n'ai rien ajouté ici, ou peut-être ici ou ici. Nous pourrions utiliser certains de ces points vides pour ajouter des portails ultérieurement afin de pouvoir nous téléporter vers différentes zones et je peux vous montrer comment faire un système de portail. Cela dit, passons à la leçon suivante. 10. Supprimer les scintillements: Revenons maintenant à notre carte de tuiles. Je veux vous montrer quelque chose que vous pouvez voir ici lorsque je me déplace, lorsque je clique avec le bouton droit et que je fais un panoramique, vous pouvez voir que le ciel vacille et mes tuiles aussi. C'est très subtil. Mais par exemple, vous pouvez voir ici la ligne ici, elle coupe mes carreaux. Parfois, les tuiles clignotent aussi. Et nous voulons supprimer ce scintillement car cela se produira également pour vous dans le jeu. Fermons donc cette carte de tuiles ici. Et ce que vous voulez faire, c'est ces jeux de tuiles font simplement un clic droit sur l'ensemble de serviettes et cliquez sur la condition Texture du titre XI. Il va maintenant créer quelque chose de nouveau pour vous. Il suffit d'appuyer sur Entrée et cela créera cela pour vous. Ils sont donc rembourrés, sorte qu'ils tamponnent automatiquement les serviettes pour vous. Vous pouvez donc voir ici n'a pas vraiment l'air différent d'avant. Mais la différence est si je retourne à mon jeu de tuiles, maintenant si je clique sur ma tuile avant qu'elle ne sélectionne la tuile ici sur les côtés, mais vous pouvez voir que le moteur automatiquement rembourré vos tuiles pour qu'elles ne clignotera jamais car nous avons ces appariements sur chaque tuile. C'est la même chose pour toutes les autres tuiles que vous possédez. Faisons la même chose pour l'arrière-plan. Cliquons avec le bouton droit de la souris sur l' ensemble de serviettes et cliquons sur l' état des serviettes, de la texture des draps et cliquons sur Entrée. Bon, maintenant j'avais fini de peindre ma deuxième texture. Cela a pris du temps parce qu'il s'agissait d'une texture si légère et il semble presque que votre moteur s'est écrasé, mais ce n'est pas le cas. revenant à l'environnement et en cliquant sur ma carte de tuiles maintenant, vous pouvez voir quand je zoome et que je me déplace, vous pouvez voir que le scintillement a disparu. Et cela vaut également pour le jeu. Nous avons donc supprimé ce scintillement. Ainsi, chaque fois que vous importez des serviettes à ajouter à vos cartes, n'oubliez pas de cliquer avec le bouton droit sur le jeu de tuiles et cliquer sur la texture de la serviette conditionnée. Et il sera automatiquement un tampon de cette texture pour vous. Et vous supprimerez tous ces problèmes scintillants. 11. Placer la carte de carreaux au niveau: Placons maintenant notre niveau que nous avons créé ici à l'intérieur de notre carte. Alors, en fermant cela, rappelez-vous que nous avons fait une carte ici, un niveau appelé main. Double-cliquez dessus pour vous assurer que vous êtes à l'intérieur d'ici. Vous pouvez également le voir. Ici, à droite, vous êtes à l'intérieur de la carte principale. À l'intérieur d'ici, il suffit d'aller dans l'environnement et de cliquer et de faire glisser votre carte de tuiles. Donc, pas les ensembles de serviettes , mais la carte des tuiles. Cliquez et faites-le glisser et vous pouvez le déposer ici dans l'environnement. Souvenez-vous de notre navigation avant de pouvoir cliquer avec le bouton droit de la souris et maintenir WD est un moyen de se déplacer. Et vous pouvez voir qu'il s'agit de la carte de tuiles que nous avons ajoutée. Maintenant, j'aime supprimer cette grille car je ne vois pas vraiment ce qui se passe. Donc, en cliquant sur cette carte de tuiles dans le panneau Détails, vous pouvez descendre et trouver ici sous Rendu, afficher par grille enfant lorsque cette option est sélectionnée, je vais la décocher pour que je puisse voir ma carte. Et c'est la carte que nous avons créée. Ce que j'aime faire, c'est que j'aime le placer à l'emplacement des zéros, des zéros 0. C'est donc ma carte initiale. J'aime commencer à 000 heures. C'est tout simplement ça. Nous avons créé la carte. Et comme il s'agit d'un moteur 3D, rappelez-vous qu'il ne s'agit pas d'un moteur 2D. Vous pouvez voir ici si vous regardez le côté de votre carte de tuiles, agit en fait d'une tuile de couche. N'oubliez donc pas qu'à l'intérieur de la carte de tuiles, nous avons créé nos couches ici. Vous pouvez ainsi voir toutes ces couches s'empiler ensemble dans un environnement 3D. Ce que je veux faire, je veux séparer ces couches, car plus tard, nous voulons nous assurer que nous n'avons pas de problème lorsque le joueur se déplace. Et je vais descendre ici et ici, et cette séparation par couche, je vais juste l'augmenter à quelque chose d'extrême pour que vous puissiez voir ce qui se passe. Donc, quelque chose comme 50 ans et je vais économiser. Vous pouvez réellement voir ces couches maintenant, elles sont séparées les unes des autres. Maintenant, ce que j'aime faire ici dans la séparation, j'aime écrire dix et je veux vous montrer pourquoi j'écris dix, ou vous pouvez également écrire 15. C'est bon. Cela n'a pas vraiment d'importance. Mais je veux vous montrer pourquoi je n'y vais pas, pourquoi j'y vais à la place avec dix, par exemple. En cliquant ici, vous pouvez voir maintenant que nous avons séparé la couche. Vous pouvez donc imaginer que le personnage se tient ici au sol, sur ces tuiles. Techniquement, vous êtes sur cette couche de base que nous avons créée. Il y a dix pixels entre ce calque et le calque avant ici. Maintenant, la séparation, depuis que nous en avons écrit dix, la séparation est de dix pixels pour chaque calque. Vous avez donc la liberté d' ajouter des éléments entre ces couches. Par exemple, si vous souhaitez ajouter un élément devant ces arrière-plans, mais que vous souhaitez modifier derrière le joueur qui se promène. Il est évident que vous devez sélectionner le numéro qui se trouve entre ces deux couches. Ainsi, plus vous créez ces calques, plus vous aurez de liberté à placer des éléments à côté ou entre ces calques. Je ne pense donc pas que nous ayons besoin de plus de dix. Je n'ai jamais eu besoin de plus de dix, donc je vais écrire dix pour m'assurer que mes carreaux de sol sont à 0, car cela nous facilitera la tâche plus tard lorsque nous programmerons. Je veux simplement pousser cette couche ici. Ce sont mes tuiles, deux devant ici, donc c'est au milieu. Vous pouvez donc voir ici au point de pivot, lorsque l'outil Déplacer est sélectionné, lorsque vous cliquez dessus, l'outil Déplacer est sélectionné. Vous pouvez voir si vous voulez aller dans cette direction, vous devez le déplacer de dix. Et maintenant, c'est vrai. N'oubliez pas que notre outil de capture s'accroche tous les dix degrés, dix pixels plutôt que tous les degrés. Donc maintenant, ce n'est pas correct car avec le claquement, nous sommes arrivés à dix. Vous pouvez donc voir maintenant que c'est le cas, maintenant le fond est à 000. Lorsque vous écrivez dix ici dans le Y, vous avez la dose, dose de nouveaux carreaux est de 000. Et cela nous facilitera beaucoup tard lorsque nous programmerons. 12. Volume du processus post-processus: Très bien, le problème que nous avons actuellement dans notre niveau est que l'éclairage et les couleurs ne sont pas corrects. Comme vous pouvez le voir ici, si j'ouvre ma carte de tuiles et si je zoome ici, vous pouvez voir la différence entre cette carte de tuiles, les couleurs correctes et ce à quoi elle ressemble. Et c'est notre niveau, donc ça a vraiment l'air mal et l'éclairage est trop fort. Et c'est là que le volume post-processus entre en jeu. Donc, ici et ajouter rapidement le bouton. Cliquons ici , puis passons à Effets visuels. Et ajoutons celui-ci appelé volume post-traitement. Donc le volume post-traitement, ce que c'est, c'est comme dans Photoshop. Lorsque vous placez une image dans Photoshop, vous pouvez modifier les chercheurs de l'image, modifier la saturation, la luminosité de l'image. Il en va de même dans Unreal Engine nous utilisons un volume post-traitement pour modifier l'éclairage et les couleurs, etc. Donc presque comme l'étalonnage des couleurs. Nous avons donc le volume post-processus et ce que nous voulons faire est de faire défiler vers le bas ici. Et nous voulons prendre ce qu'on appelle une étendue infinie. Ce que cela fait, c'est que cela affecte le monde entier. Si vous n'appuyez pas dessus, cela ne fonctionnera que lorsque vous serez à l'intérieur de cette boîte. Par exemple, juste pour le démontrer pour vous, je vais augmenter cette floraison. Donc, pour l'intensité de dix, si extrême. Et si je vais ici à l'intérieur de ma boîte, vous pouvez voir que la floraison prend effet, ces effets rêveurs. Et si je sors de cette boîte de volume post-traitement, elle revient à la normale pour que vous puissiez voir la différence. Ok, donc au lieu d' aller à l'intérieur de cette boîte, pas ici et peut-être comme essayer de faire en sorte que cette boîte corresponde au niveau. Nous n'avons pas vraiment besoin de le faire. Nous voulons simplement cliquer sur celui-ci appelé étendue infinie. Et cela affectera le monde entier. Nous n'avons donc pas besoin d'être à l'intérieur de cette boîte pour qu'elle prenne effet. Ok, donc ce que nous voulons faire, je vais juste placer ce volume post-processus à 000. En fait, ce n'est pas vraiment important, mais j'aime juste le faire. Et commençons ensuite à passer en revue tous ces paramètres. Et il m'a fallu environ six à sept heures pour régler ça avec tous les réglages corrects. Donc, ici en fleur, réglons le 0. Nous ne voulons pas vraiment de fleurs à l'intérieur de notre niveau. Ensuite, nous allons passer à l'exposition. Et à l'intérieur de l'exposition, prenons la luminosité minimale et la luminosité maximale. Et fixons-les deux à deux. Donc 22. Et puis passons à Lens Flare. Cliquons sur l'intensité et réglons la valeur 0. Et nous n'avons pas vraiment besoin de fusées éclairantes. Ensuite, nous allons cliquer sur les effets d'image et d' autres effets de dégâts. Nous pouvons définir la vignette sur 0 avant d'effectuer un classement des couleurs. Sautons ça un peu pour l'instant. Ils vont tomber et je vais trouver l'occlusion ambiante. Mais l' occlusion ambiante que nous voulons définir à 0, nous n'en avons pas besoin. Et le flou de mouvement aussi, je vais régler la valeur 0. Ok, donc nous n'avons pas vraiment plus de paramètres à jouer ici. Revenons donc à l'étalonnage des couleurs. Et encore une fois, j'ai passé sept heures à faire ça. Justifiez donc avec des nombres aléatoires. Ce n'est pas parce que je devine correctement, c'est parce que j'ai essayé trouver les bons chiffres ici. Donc, ici, d'abord dans le monde entier, nous pouvons cliquer dessus. Et prenons ce que l' on appelle la saturation. Ainsi, vous pouvez augmenter, vous pouvez voir que vous pouvez augmenter et diminuer la saturation de l'image. Et pour cela, 1.980 était le chiffre parfait. Et faisons défiler un peu vers le bas, à l'ombre. Cliquez donc sur les ombres et prenez la fois la saturation et le contraste et le gamma. Qu'est-ce que la saturation ? Nous voulons y aller avec 0,9. Et avec le contraste, passons avec 0,9 pour le Gamma, Allons-y avec 1,01. Et allons-y maintenant. Et dans les tons médians, nous n'avons rien d'autre que dans les faits saillants, si nous cliquons sur celui-ci, voulions simplement prendre celui-ci appelé Highlights minimum. Je vais donc en régler un. Et ensuite, nous allons passer à Divers. Je vais prendre ce montant appelé Tone Curve , et nous allons le réduire à 0. Vous pouvez voir que nos couleurs changent beaucoup. Donc, en descendant à 0, et cela devrait résoudre tous nos problèmes. Cliquons maintenant sur la carte des tuiles et vous pouvez zoomer et jeter un coup d'œil. Et vous pouvez jeter un coup d' œil à notre niveau ici, et vous pouvez voir qu'ils se ressemblent parfaitement maintenant. C'est un petit problème maintenant, et nous allons résoudre ce problème dans la prochaine leçon. Comme vous pouvez le constater, ils sont pixélisés, mais vous pouvez voir qu'il y a une sorte de douceur à l'intérieur de notre niveau, pas trop pixélisé. Et c'est à cause de l' anti-crénelage que nous devons supprimer. Mais vous pouvez voir ici, si vous passez en mode live et que vous passez en mode non lié, c'est à quoi ressemble la texture correcte. Voilà donc à quoi ça ressemble sans éclairage. Donc, si vous revenez au mode Lead, vous pouvez essayer de comparer les deux. C'est donc ce que nous essayons de réaliser. Nous essayons de faire en sorte le mode élite soit de la même couleur que le mode non éclairé. Tellement près l'un de l'autre. La seule chose est que le mode live est plus fluide à cause de l'anti-crénelage. Et nous allons régler cela dans la prochaine leçon. 13. Supprimer l'anti alimentation: Très bien, déplacons l'anti-crénelage, ce qui provoque cet effet lisse à l'intérieur de tout notre niveau. Et nous n'avons pas vraiment besoin de lissage lorsque nous travaillons avec pixel lot, nous voulons regarder les vrais pixels. Nous allons donc modifier et passons à l'intérieur des paramètres de nos projets. À l'intérieur d'ici, nous pouvons faire défiler vers le bas et trouver celui-ci appelé rendu à l'intérieur du rendu du moteur et à l'intérieur d'ici. Maintenant, c'est un anti-crénelage, mais c'est pour mobile et nous ne créons mais c'est pour mobile et nous ne créons pas de jeu mobile pour le moment, donc cela n'a pas d'importance. Mais je vais descendre ici. Et nous voulons trouver ces paramètres par défaut pendant que nous y sommes. Supprimons en fait quelques choses qui fleurissent. Nous l'avons déjà réglé sur 0, mais nous pouvons toujours désactiver ici également l'occlusion ambiante. Celui-ci, l'exposition automatique et nous pouvons également supprimer le flou de mouvement. Donc, tous ces éléments ont été supprimés. Et c'est l'important, la méthode anti-crénelage. Je ne sais pas si vous pouvez voir une différence si je mets simplement sur le côté et vous pouvez voir si quelque chose se passe lorsque je le désactive. Donc cette super-résolution temporelle, si je clique sur Aucun, vous pouvez voir la différence. Bien sûr, vous pouvez le maintenir si vous voulez que votre jeu soit lissé comme ça. Mais pour le vrai pixel art, vous n'avez pas ça. Si vous cliquez sur aucun, vous verrez les vraies tuiles, comment elles sont créées dans le logiciel Pixel Art. Donc maintenant, si nous passons en mode non éclairé et en mode, n'oubliez pas que c'est ce que nous essayons de réaliser, les mêmes couleurs. Vous pouvez voir qu'il n'y a pas de différence maintenant, et c'est ce que nous voulons. Nous voulons que le mode Lit soit le même que le mode non éclairé. Et si vous voulez voir la différence, cliquez sur ce volume post-traitement avec lequel nous avons travaillé dans la leçon précédente. Nous pouvons cliquer sur cette option activée pour le supprimer, et vous pouvez voir la différence. Il s'agit maintenant du mode OnLoad. Il s'agit d'une vraie couleur. Il s'agit du mode live. Et lorsque nous l' activons, nous le faisons exactement comme nous le voulons. 14. Ajouter de la collision: Activons maintenant la collision pour nos tuiles. Ce sont donc les collisions qui rendent ces tuiles faciles à marcher. Vous pouvez donc imaginer que si nous ajoutons un personnage à l'avenir, le personnage ne peut pas marcher sur ces tuiles car il n'y a pas de collision. Le personnage suivra donc les tuiles et tombera à travers le sol. Nous devons donc ajouter une collision que le personnage puisse marcher sur ces tuiles, et c'est très simple à faire. Passons donc à l'ensemble de tuiles. Allons donc à Tulsa Dragon Road. Et à l'intérieur de cette tuile, rappelez-vous que la seule chose que nous avons faite dernière fois était de régler la taille de la tuile à 30. Les bactéries peuvent également ajouter une collision. Donc, en cliquant sur ce bouton appelé tuiles en collision. Vous pouvez maintenant voir la collision. Maintenant. moment, vous ne pouvez rien voir car nous n'avons aucune collision. Donc, en cliquant sur la première vignette ici, et celle-ci, par exemple, vous pouvez cliquer sur celle-ci appelée Add box. Et maintenant, vous avez ajouté une collision. Donc, si je clique sur Enregistrer maintenant, et que je voulais juste vous montrer qu'il a effectivement ajouté une collision. Donc, si je clique sur, me présente ici et que je clique sur Collision, maintenant vous ne pouvez rien voir et c' est parce que dans le jeu de tuiles, vous devez vous rappeler de cliquer sur Actualiser les cartes. Cette opération actualisera toutes vos cartes de tuiles. Et maintenant, vous pouvez le voir ajouter une collision. Maintenant, je peux voir ces boîtes ici. Et c'est la collision, nous l'ajoutons et nous devons le faire pour que le personnage puisse réellement marcher sur ces tuiles. Techniquement dans la programmation, ce personnage marche sur ces petites boîtes, mais on dirait que le personnage marche sur les carreaux. Donc, en revenant ici et nous l'avons fait, il n'y a malheureusement pas de méthode permettant tout sélectionner et de cliquer ici. Nous devons le faire manuellement, mais nous voulons prendre beaucoup de temps. Cliquez ici, en regardant la boîte, très simple. Nous ajoutons simplement des collisions à ces tuiles. Et vous devez le faire pour toutes les tuiles que vous avez utilisées. Juste comme ça. Par exemple, nous n'avons pas besoin d'ajouter une collision pour ces tuiles car nous ne les avons pas utilisées. Mais si vous les avez utilisés sur votre carte, vous devez également y ajouter des collisions. Nous n'ajoutons donc pas de collisions pour ces dernières car évidemment le joueur ne va pas marcher sur ces tuiles. Donc, si j'enregistre ici et que je rafraîchis les cartes, vous voyez ici que les tuiles sont additives, les collisions sont ajoutées, et nous n'avons pas vraiment besoin d'ajouter collision ici parce que le joueur ne le fera jamais Va en dessous d'ici. Nous n'avons donc pas vraiment besoin de le faire. Maintenant, je veux que ma boîte de collision soit plus grande car vous pouvez imaginer que lorsque le joueur marche ici sur ces boîtes, il y a une chance que, rappelez-vous qu' il s'agit d'un moteur 3D. Il y a une chance que le joueur soit poussé de manière à que le joueur tombe le côté et tombe du sol, tombant des boîtes de collision. Donc, pour éliminer ce risque, je veux augmenter la longueur de la boîte de collision. Nous pouvons le faire à l'intérieur de la carte des tuiles. À l'intérieur de la carte des tuiles ici, nous pouvons aller ici en bas, épaisseur de collision. Disons que c'est 254. Cliquez maintenant sur Enregistrer. Et lorsque nous minimisons, vous pouvez voir que les boîtes de collision sont beaucoup plus longues et nous n'avons aucune chance pour le joueur de tomber du sol, car c'est maintenant couvert. D'accord, ajoutons la collision au reste. Je pense que nous croyons, je crois que cette partie nous manque ici. Alors, en allant à l' ensemble d'outils et à l'intérieur d'ici, ajoutons également la collision deux. Celui-ci nous manque, donc, en ajoutant une boîte de collision ici, faites la même chose avec celle-ci. Nous devons également ajouter une collision ici, donc le côté, donc en cliquant sur la case Ajouter, vous pouvez voir ici sur le côté, nous n'avons pas vraiment besoin de collision si je rafraîchis la carte pour que nous puissions la voir. Maintenant, il a ajouté la collision jusqu'ici. Nous n'avons pas vraiment besoin de cela. Il suffit de recouvrir la tuile. Donc, ce que nous pouvons faire, c'est cliquer dessus , puis lécher et planer et sélectionner ces deux sommets. Et nous pouvons cliquer et faire glisser. Donc, tout comme notre fenêtre d'affichage, je vais peut-être désactiver la capture. Voyons voir. Ou en fait, c'est très bien. Tout comme ça, c'est parfait. Je fais la même chose ici. Je vais ajouter une boîte de collision et prendre ces deux sommets et les réduire comme ça. Vous pouvez maintenant actualiser la carte et voir à quoi elle ressemble. C'est ça, à quoi ressemble. La collision est donc deux ici. Et si nous avons l'impression que c'est trop, nous pouvons toujours revenir en arrière et le réduire. Donc maintenant, il nous manque celui-là. Ajoutons une boîte de collision. Et choisissons-les pour les rapprocher de la même chose ici. Rapprochez-les comme ça. Et encore une fois, n'oubliez pas de cliquer sur Actualiser les cartes. La dernière chose, c'est que nous manquons cette pente ici parce que celle-ci que nous avons également utilisée. Je vais donc cliquer sur ce premier et ajouter une boîte. Maintenant, celui-ci est un peu plus délicat, alors choisissons ces sommets. Ce sommet ici, en cliquant sur Supprimer sur votre clavier, va le supprimer. Et maintenant, nous n'avons que trois sommets. Maintenant, celui-ci, vous pouvez descendre comme ça. Et passons à la suivante. Alors celui-ci ici, cliquez sur la case Ajouter. Nous voulons déplacer celui-ci vers le bas, peut-être comme ça, et aussi déplacer celui-ci sur le côté. Nous n'avons pas vraiment besoin de collision jusqu'ici. Et je vais réduire mon accrochage parce qu'il ne me laissera pas le déplacer ici au milieu. Je vais donc le réduire à cinq au lieu de dix. Et je pense que quelque chose comme ça fonctionne pour moi. Maintenant, nous allons cliquer sur celui-ci. Vous pouvez voir que les pistes sont un peu plus difficiles à travailler. En cliquant sur celui-ci, nous voulons ajouter une petite collision ici pour que le joueur ne tombe pas. En cliquant à nouveau sur la zone Ajouter, nous pouvons sélectionner ce sommet, cliquer sur Supprimer sur le clavier. Nous pouvons prendre celui-ci et le rapprocher. Donc, si je peux le toucher ici, en me rapprochant, puis en prenant ce sommet et en le déplaçant comme ça. Ensuite, nous pourrons prendre la suivante ici et ajouter une boîte. Nous pouvons prendre ce sommet et le déplacer vers le bas. Et c'est ce que nous pouvons laisser tomber. Je pense que c'est une bonne courbe. Et le dernier, il y a un petit insecte. Je l'ai testé plus tôt. Nous devons également ajouter une très petite collision ici sinon le joueur va réellement, si je rafraîchis la carte et que je peux vous montrer, le joueur restera coincé ici. Au sommet. Il y a un très petit écart que nous ne pouvons pas voir. Et nous devons ajouter une collision ici. Et c'est évidemment parce que je l'ai déjà testé. Ce que nous voulons simplement faire ici, c'est que nous voulons supprimer le sommet ici, comme avant. Nous pouvons les déplacer de très près. Maintenant, pour voir le numéro spécifique à cela, vous pouvez aller ici. Et les données de collision d' index, descendant deux formes. En cliquant sur cet index et en regardant ces sommets. Vous pouvez voir quand je déplace ce sommet ici, ce nombre de changements. Je veux juste que ce chiffre soit 14,9. Vous pouvez donc voir que si je retire le claquement, plus je le déplace vers le bas. Le dernier numéro est 15, évidemment ici. Je veux donc passer au 5.9e, 14. Et celui-là aussi. Très, très, très proche. Celui-ci, si je le déplace simplement pour voir lequel il s' agit, c'est ici. 14.9. Et je ne sais pas pourquoi j'ai dit 15.914, juste comme ça. sont donc tous les deux 14,9. Il y a donc une petite université ici qui fait que le joueur ne passe pas par le sol. Et c'est parce que je l'ai déjà testé sur mon projet de préparation. Nous avons donc maintenant toutes les collisions. Je me souviens juste, n'oubliez pas de toujours cliquer sur la carte de rafraîchissement et de cliquer sur Enregistrer, sauvegarder tout. Et maintenant, tu es prêt à y aller. Vous pouvez donc jeter un coup d'œil à votre carte. Vous pouvez voir qu'il y a une collision ici. Nous devrons peut-être réduire celle-ci. C'est peut-être trop loin. Et vous pouvez également le regarder ici. Mais nous devons généralement avoir un personnage pour courir dans le monde entier et tester cela avant de pouvoir le dire avec certitude. Mais maintenant, nous avons effectué la collision initiale et nous pouvons passer à la création de notre personnage. 15. Créer des sprites: Il est maintenant temps d'importer les ressources des personnages. Je vous ai donc fourni ici encore une fois, à l'intérieur du matériel de cours, il y a un dossier appelé personnages. Donc, en cliquant sur ce dossier. Commençons par Serena. Ce que je veux que vous fassiez pour l' instant, c'est simplement importer l'inactif, le saut et les animations de course. Donc d'abord, avant de le faire, passons au dossier des ressources. Créons un nouveau dossier appelé caractères. Et puis à l'intérieur d'ici, nous allons en faire un nouveau appelé Serena. Et ici, nous pouvons importer nos actifs. Je veux donc faire glisser le saut inactif et courir, les faire glisser dans votre projet. Et lorsque vous lâchez prise, vous importez ces textures. En fait, nous allons créer quelque chose qui s'appelle des sprites et des flip books. Faisons donc un nouveau dossier et je vais appeler ça les textures. Et je vais les avoir à l'intérieur de ce dossier. Et tous les flips que nous fabriquons seront ici. Donc, au lieu de textures, rappelez-vous quand vous importez des textures, et encore une fois, si vous double-cliquez dessus et effectuez un zoom avant, vous pouvez voir qu'Unreal Engine lisse ces pixels. Et comme je vous l'ai déjà dit, vous devez tous les sélectionner. Et si vous souhaitez les sélectionner comme ceci, vous pouvez cliquer sur un seul décalage et cliquer sur le dernier. Il sélectionnera tous les éléments. Vous pouvez également cliquer avec le bouton droit sur les actions de sprite et appliquer du papier aux paramètres. Comme auparavant, vous pouvez voir qu'il supprime la fluidité et que vous pouvez voir les pixels plus clairement. Vous pouvez maintenant voir que la texture est livrée avec cette animation. Vous avez donc l'animation, vous avez l'animation en cours d'exécution et elles sont assemblées en une seule texture. Et maintenant, vous devez créer des sprites à partir de ceux-ci. Commençons donc par le ralenti. Vous pouvez cliquer avec le bouton droit sur des actions inspirées. Vous pouvez dire extraire des sprites. Et ici, vous devez aller ici en haut à droite et cliquer sur la grille au lieu d'auto. Ensuite, vous devez spécifier la taille de la grille. Maintenant, j'ai fait ça dans Photoshop, donc je sais que la grille est de quatre vingt, quatre vingt. Et si vous téléchargez quelque chose sur Internet, ils vous diront quelle est la taille de cette grille, une quatre-vingt, une quatre-vingt. Et il va extraire ces animations sous la forme d'images uniques. Donc, en cliquant sur Extraire ici, vous pouvez voir qu'il les extrait en images uniques et ces images sont appelées sprites. sprites sont des images statiques. Ici, dans notre niveau, vous ne pouviez pas vraiment faire glisser une texture et la déposer au-dessus d' ici, car vous pouvez voir qu'elle remplace tout ce que vous faites glisser, en la faisant glisser par-dessus. Je vais donc cliquer sur Control Z. Mais les sprites sont des images statiques et peuvent en fait glisser celles à l'intérieur du niveau. Donc, si vous avez quelque chose de statique, par exemple, un canon qui ne bouge jamais, vous pouvez ajouter cela ici à l'intérieur de votre niveau. Mais notre personnage a des animations, donc nous ne voulons pas vraiment faire glisser images statiques car il s' agit en fait d'animations, mais nous travaillerons avec les animations plus tard dans la vidéo suivante. Supprimons donc. Je vais supprimer ce matériau qu'il a créé chaque fois que j'ai fait glisser cette texture dessus, exactement comme ça. Maintenant, je vais renommer les sprites. Habituellement, je supprime cela à l'avant. N'oubliez pas que vous devez faire attention aux chiffres. C'est donc le numéro 0123. Vous devez donc le faire dans l'ordre. Et ici, le premier, je vais l'appeler S car Sprite est inactif et 01 comme ça. Nous sommes donc un peu plus organisés. Celui-ci est 02 maintenant et 0304. Juste comme ça. Maintenant, nous avons l'idole. Et faisons la même chose avec le saut. Vous pouvez le faire vous-même uniquement pour vous entraîner si vous le souhaitez. Vous pouvez cliquer avec le bouton droit ici et accéder à des actions de repérage et extraire des sprites. Sélectionnez la grille ici et, encore une fois, 180, extrayez les sprites. Et encore une fois, faites attention aux chiffres. Il est écrit 0123. Alors ne pensez pas que vous pouvez entrer ici et appeler ce 10, car celui-ci est numéro trois. Parfois, ce que je fais, c'est simplement cliquer loin du dossier. Cliquez donc ailleurs et revenez au dossier. Et vous pouvez voir qu'il les trie comme vous le souhaitez. C'est donc le premier, c'est r1, 01. Et faire la même chose avec les autres. Il faut donc un peu de temps pour organiser vos dossiers. Mais en fin de compte, quand ils seront organisés, vous aurez facilement le temps de travailler avec elle. Maintenant, le dernier est le saut. Et celui-ci, vous pouvez voir que le saut n'a qu'une seule animation. Il n'est donc pas logique de cliquer avec le bouton droit de la souris et de dire extraire des sprites car vous n'avez vraiment qu'un seul sprite. Donc, la chose que vous voulez faire est cliquer avec le bouton droit de la souris et de cliquer simplement sur Create Sprite au lieu d' extraire car vous n'avez qu'un seul sprite. Et appelons que celui-ci est un saut. Très bien, maintenant nous avons créé nos sprites. Sauvons tout et passons à la leçon suivante. 16. Créer des cahiers de voyage: Maintenant que nous avons créé des sprites pour notre personnage, il est temps d' animer ces sprites. Donc, ce que vous voulez faire, c'est , par exemple, commencer par le ralenti. Vous pouvez tous les sélectionner. Donc, l'un ou l'autre, vous pouvez maintenir le contrôle. J'irais à trois ou quatre. Ou un moyen plus rapide de le faire est de cliquer sur le premier, maintenir la touche Maj enfoncée et de cliquer sur les derniers sur le numéro quatre. Et nous allons sélectionner le tout ici dans la ligne. Vous pouvez maintenant cliquer avec le bouton droit. Et ici, il est écrit créer un flip book. Donc, en cliquant sur Créer un flip book, il en créera un. Et d'habitude, au lieu de S et de devant, j'écris habituellement FB pour un flip book. C'est le flip book inactif. Vous pouvez maintenant double-cliquer sur le flip book. Et vous pouvez voir maintenant que c'est animé, mais à l'heure actuelle, il est animé trop rapidement. Je veux donc que vous changiez les images par seconde en haut à droite. J'ai donc joué à Maple Story hier et j'ai vu à quel point l'animation était rapide, et c'était environ deux images par seconde. Donc, écrivez à, et vous pouvez voir maintenant que c'est animé. Il s'agit de l'animation inactive. Maintenant, faisons la même chose pour la course. Pour exécuter le numéro un à quatre, il peut cliquer avec le bouton droit de la souris, créer un flip book, l' appeler FP run. Et vous pouvez double-cliquer dessus. Et pour l'animation de course, il s'agit de six images par seconde. Bien sûr, vous pouvez le rendre plus rapide. Par exemple, si vous voulez que votre personnage s'exécute aussi rapidement ou que l'animation soit aussi rapide, vous pouvez le faire. Mais pour moi, j'essaie d' imiter Maple Story autant que possible. Et on dirait que l'animation est d'environ six images par seconde, comme ça. Ok, on va le fermer. Et le dernier, nous avons le saut. Maintenant, nous pouvons créer un flip book à partir de cela et nous devons le faire, car plus tard, lorsque nous créons nos personnages, le personnage veut entrer un flip book. On ne peut donc pas vraiment utiliser ce sprite de saut. N'oubliez pas que c'est un sprite, c'est un flip book. Nous devons en faire un flip book car plus tard , le personnage a besoin d'un flip book. Donc, même s'il s'agit d'un cadre unique, nous devons créer un flip book. Cliquons avec le bouton droit de la souris et créons un flip book hors du saut. Et appelons ça FB, sautez, comme ça. Et évidemment, ce n' est qu'une seule image, donc je vais simplement changer cette image par seconde par une et nous pouvons la fermer et nous pouvons aller de l'avant et sauvegarder tout. Nous avons donc créé nos cahiers à clapet. Je vais déplacer ces flip-books hors du dossier de textures. Je vais donc les déplacer à Tsarina ici et cliquer sur Déplacer ici. Maintenant que nous avons ces flip-books et ces secteurs, nous n'avons plus vraiment besoin de les revoir. C'est pourquoi j'ai créé un dossier Textures pour qu'il soit plus facile à regarder car nous n'avons vraiment besoin que de ces flip books. 17. Introduction au plan de travail: Blueprint est le langage de script visuel d'Unreal Engine. Et lorsque vous écrivez des plans, croyez-le ou non, vous êtes programmeur. Vous êtes en train de programmer. Au lieu d'écrire des lignes de code traditionnelles, vous pouvez coder l'ensemble du jeu en ajoutant simplement des notes et en les connectant ensemble. Il s'agit donc d'un langage de script visuel. Blueprint est aussi puissant que n'importe quel autre langage de programmation, qu'il s' agisse de C plus, de C-Sharp ou de n'importe quel autre langage, vous pouvez créer ce que vous souhaitez en utilisant Blueprint. En ce moment, nous sommes en train de créer une mini version de Maple Story. Mais vous pouvez également créer des anneaux Fortnite, Metal Gear, Solid, Rouille ou même Aldon. Vous pouvez programmer n'importe quelle idée avec des plans. Donc, la seule chose qui vous limite , c'est votre imagination. Quel que soit le programme que vous voulez programmer, vous pouvez le faire avec Blueprint. Et il est également optimisé et fonctionne bien avec cela, passons directement à l'apprentissage des bases des plans. 18. Cours sur les plans d'orientation: Parlons maintenant des cours de Blueprint. Donc ici, dans n'importe quel dossier aléatoire, je vais cliquer avec le bouton droit de la souris. Je voulais juste vous montrer les classes de Blueprint pour l'instant. Vous pouvez cliquer avec le bouton droit de la souris et ici, vous pouvez cliquer sur la classe Blueprint. Vous pouvez également le trouver sous Blueprints, celui-ci appelé classe Blueprint. Donc, la même chose, mais c'est plus rapide de cliquer ici. Il s'agit donc des différentes classes que vous pouvez créer dans Blueprint. Et je veux commencer par le premier. Le premier que nous avons est un acteur et vous pouvez voir la description ici à droite. Il est dit qu'un acteur est un objet qui peut être placé ou engendré dans le monde. Donc un acteur très simple, par exemple, il peut s'agir d'une table, d'une chaise, d'un marteau. Donc, tout ce qui peut être engendré dans le monde, c'est juste un objet. Le prochain est un pion. Et il y a un acteur qui peut être possédé et recevoir des commentaires d'un contrôleur. Et ce que cela signifie, c'est quelque chose que le joueur peut contrôler. Donc, dans un autre cours que j'ai fait que vous pouvez voir ici sur le site c'est que je suis en train de créer un ballon ou une sphère. Il se déplace. Cette sphère qui se déplace est là parce que je voulais que le joueur contrôle cette peur de se déplacer avec le clavier. Ainsi, n upon est un acteur qui peut être possédé et recevoir des entrées d'un contrôleur. Vous devez donc transformer ce que vous voulez en étang. Si vous voulez que le joueur contrôle cet objet, vous ne pouvez pas créer d'acteur et que le joueur contrôle cet objet, vous devez en faire un point. Ensuite, nous avons un personnage. Et un personnage est un type de ****. Vous pouvez donc voir qu'il y a une relation. Donc, un personnage est en train de commencer. Un personnage est un type de **** qui inclut la possibilité de se promener. Donc, chaque fois que vous voulez créer un personnage, c'est juste que vous pouvez imaginer un humain avec deux bras et deux jambes qui se promène. Il faut faire un personnage. Mais si vous voulez faire votre personnage quelque chose comme une balle ou une sphère qui roule dans le monde sans qu'il n'ait pas deux bras, deux jambes. Vous pouvez aller de l'avant et créer un point. Il s'agit donc de la différenciation la plus facile. Ainsi, lorsque vous avez un personnage, deux bras, deux jambes qui se promènent, vous pouvez aller de l'avant et créer un personnage à la place. Ensuite, vous avez quelque chose appelé manette de joueur. Et appliquer le contrôleur est un acteur qui est responsable du contrôle sur l'utilisation par le joueur. Il faut donc y penser. ne s'agit pas vraiment de la manette que vous avez chez vous, ni de votre manette Xbox ou de votre manette PlayStation. C'est-à-dire que vous pouvez imaginer cela comme le cerveau du personnage. C'est donc le cerveau du personnage. Tous les personnages que vous générez dans le monde auront une manette de joueur. Et à l'intérieur, vous pouvez ajouter des codes tels qu'une interface utilisateur. Ou si vous voulez créer un jeu solo, vous créez des mouvements impressionnants. Vous pouvez le faire à l'intérieur d'ici, mais nous allons travailler avec toutes ces lettres. Ne vous inquiétez pas à ce sujet. Ce n'est là que l' explication de base pour l'instant. Ensuite, le dernier dont je veux parler s'appelle le mode jeu, et c'est presque explicite. La base du mode de jeu définit le jeu en cours de jeu, ses règles, le score et d'autres facettes du type de jeu. Par exemple, si nous avons un jeu de tir, vous avez capturé le drapeau. Vous avez combien de temps vous avez par tour. Par exemple, dans Maple Story, si nous voulions créer un événement, par exemple, nous pouvons définir combien de temps cet événement prendra, etc. Donc, juste les règles du jeu. Par exemple, dans Capture the Flag, lorsque vous capturez le drapeau d'une équipe, il vous donnera quelques points. Et ces points peuvent également être notés dans le mode de jeu, car c'est les règles du jeu. Maintenant, puisque nous travaillons actuellement avec 2D. Tous ces éléments sont en 3D. Puisque nous travaillons avec 2D, vous devez cliquer dessus, celui-ci appelé toutes les classes. Et ici, vous pouvez rechercher du papier. Vous pouvez voir que nous avons beaucoup de cours et ce ne sont que les cours de base que nous utilisons tout le temps. Et vous n'allez presque jamais ici à moins que vous ne travailliez avec des trucs avancés. Par exemple, un système de sauvegarde et de chargement, que nous ferons plus tard, je l'espère. Dans toutes les classes ici, vous pouvez rechercher du papier. Et le papier n'est que le lot de pixels 2D ici dans Unreal Engine. Par exemple, au lieu de cet acteur ici, qui est en 3D, nous pouvons créer celui-ci appelé Paper Sprite Actor. Ou nous pouvons créer un acteur de flip book si nous avons un flip book, rappelez-vous que les flip books étaient les sprites animés assemblés. Donc, si vous avez une animation, vous voulez utiliser un flip book. Si vous avez un élément statique, vous souhaitez utiliser un sprite, puis vous avez également un personnage. Donc, au lieu d'utiliser ce personnage ici, car il s' agit d'un personnage 3D, nous devons utiliser celui-ci appelé personnage papier. Et celui-ci comprend un flip book. Nous avons créé des flip books pour notre personnage que nous pouvons mettre ici à l'intérieur de notre personnage en papier. Ce sont donc les classes de base que nous voulons utiliser, et la plupart du temps, nous n'allons pas les utiliser ici. Nous allons ajouter une manette de joueur et un mode de jeu car ils ne sont pas nécessaires. Mais pour tout cela, on allait surtout travailler ici dans notre personnage en papier, notre sprite en papier et notre flip book. 19. Contrôleur de mode et de joueur: Commençons maintenant par créer nos premiers plans. Pour ce faire, allons dans le dossier de contenu. Vous pouvez cliquer ici avec le bouton droit de la souris et créer un nouveau dossier appelé Blueprints. Et à l'intérieur de ce dossier, et d'ailleurs, vous pouvez donner une dose complète de couleurs. Donc, si vous pouvez cliquer avec le bouton droit ici sous le dossier Blueprints et vous pouvez cliquer sur Définir la couleur. Parfois, je le fais juste pour m'organiser, je sélectionne juste une couleur bleue. Je sais donc que ce sont des plans comme celui-ci, par exemple. Et vous pouvez le voir clairement à l'intérieur d'ici. Vous pouvez à nouveau cliquer avec le bouton droit de la souris et sélectionner Classe Blueprint. Et créons un mode de jeu. Chaque jeu que vous créez possède un mode de jeu et une manette de joueur. Ce sont les éléments de base que vous commencez dans un jeu. Créons donc un mode de jeu. Et appelons ça g, m comme préfixe pour le mode jeu. Et je l'appelle généralement le nom du jeu. Alors, l'histoire de Maple pour celui-là. Le suivant, encore une fois, cliquez avec le bouton droit sur Loop and class. Cliquez sur la manette du joueur et appelez-le PC pour manette de joueur, encore une fois, appelez-le le nom du jeu. Alors Maple Story. Maintenant, évidemment, vous devez créer plusieurs modes de jeu si vous avez plusieurs modes de jeu. Par exemple, dans Counter-Strike, vous avez quelque chose appelé Death Match. Vous avez capturé le drapeau, vous avez cinq joueurs contre cinq. Vous avez donc différents modes de jeu. Et vous pouvez créer plusieurs modes de jeu. Vous pouvez, bien sûr, au lieu de les appeler le nom du jeu, vous pouvez les appeler pour un DN, Capture the Flag. On l'appelle donc le nom du mode de jeu. Mais pour celui-ci, nous n' avons qu'un seul mode de jeu. Je vais juste l' appeler Maple Story. Maintenant, pour que ce mode de jeu fonctionne à notre niveau, il faut d' abord tout sauvegarder. Donc File Save All. Et passons à Edit. Et à l'intérieur des paramètres du projet. Et dans les paramètres du projet, vous pouvez cliquer sur les cartes et les modes ici. N'oubliez donc pas que dans les cartes et les modes précédemment, nous avons modifié la carte de démarrage en fonction de notre moyenne de tapis. Maintenant, ce que nous voulons faire, c'est également définir notre mode de jeu par défaut. Il s'agit de la base utilisée par le moteur. Je vais donc cliquer dessus, puis cliquer sur GM Maple Story, c'est notre histoire personnalisée. Ensuite, je veux que vous cliquiez sur cette petite flèche à côté du mode K sélectionné. Vous devez maintenant modifier les classes par défaut. On peut donc voir ici que c'est la classe de manette de joueur, on vient d'en faire une. Cliquez donc ici et changez-le en histoire PC Maple. Nous devons également définir notre classe de bassin par défaut, mais nous n'en avons pas vraiment pour le moment, donc nous allons ignorer cela pour l'instant. Et fermons ça. Maintenant, à l'intérieur de cette carte dans laquelle vous vous trouvez, vous devez également vous rappeler d' aller dans les paramètres du monde. Donc, si ces paramètres du monde ne sont pas ouverts, vous pouvez cliquer sur Fenêtre. Ensuite, vous pouvez cliquer sur celui-ci appelé « Paramètres du monde » pour ouvrir la fenêtre. Mais ici, dans les paramètres du monde, vous devez également vous rappeler de changer ce mode de jeu écraser. ici, cliquez sur GM Maple Story, et je vais cliquer sur cette flèche juste pour m' assurer que la manette du lecteur est correcte. Juste ce que je l'ai défini dans les paramètres du projet. Donc PCM peut l'histoire. Vous pouvez également voir ici, si vous double-cliquez sur le mode jeu, vous pouvez voir ici à droite des valeurs par défaut de la classe. Ici, à droite, vous pouvez voir si je réduis ça. Il est dit que le contrôleur du joueur est PC, Maple Story. Il l'a dit automatiquement parce que nous l'avons fait dans les paramètres du projet. Ok, nous ne voulons pas vraiment travailler à l'intérieur d'ici en ce moment, alors fermons ça. Nous avons donc créé le mode de jeu de base et la manette de base d'un joueur. Allons donc dans la prochaine leçon et créons le personnage. 20. Plans de parents et d'enfants: Il est donc temps d' ajouter le personnage. Tout comme ce que je vous ai déjà dit. Cliquez ici avec le bouton droit de la souris et accédez à classe de Blueprint ici. Lorsque vous cliquez sur toutes les classes ici, recherchez du papier. Maintenant, au lieu de créer ce personnage, rappelez-vous que nous travaillons en 2D, donc nous devons créer un personnage papier. Cliquez sur celui-ci ici et cliquez sur Sélectionner. Maintenant, nous devons appeler ça quelque chose. Et pour l'instant, je veux vous expliquer quels sont les plans parents et enfants. Donc, le premier ici, créons-le et appelons-le la base de personnages. Nous avons maintenant une base de personnages ici et cliquons dessus avec le bouton droit de la souris. Et maintenant, vous pouvez voir la classe Create Child Blueprint. Laissez-moi donc le créer et je veux vous expliquer ce que je fais. Donc, PPE, appelons ça la base de joueurs bp. Et nous allons en faire un autre ici à partir de la base de personnages. Cliquez à nouveau dessus avec le bouton droit de la souris et créez la classe Child Blueprint. Appelons cette base ennemie VP. Ok, donc ce que je fais ici c'est de me laisser tout sauver d'abord. Ce que je fais ici, c'est que nous avons créé un personnage de base, à partir de là, j'ai cliqué avec le bouton droit et créé des Blueprints enfants. Ce que sont les Blueprints enfants, c'est que lorsque vous codez quelque chose à l'intérieur du caractère, Aujourd'hui, ce code sera automatiquement transféré à celui de l'enfant. N'oubliez pas que la base ennemie et la base de joueurs sont tous deux enfants de la base de personnages Donc, ce que j'ai codé ou que je fais à l'intérieur de la base de personnages sera également appliqué à n'importe quelle base et jouera une base. C'est très utile pour que vous n'ayez pas à coder la même chose encore et encore. Donc, si, par exemple, je veux citer quelque chose ici, et que je veux que la même chose soit ici, et que la même chose soit ici. Ce serait beaucoup de travail et ce ne serait pas aussi optimisé. Au lieu de cela, j'ai créé des plans appelés. Donc, tout ce que je fais à l'intérieur d'ici sera automatiquement transféré à l'ennemi et au joueur. Par exemple, dans la base de caractères, vous pouvez double-cliquer dessus. Et nous avons quelque chose qu'on appelle composants de mouvement de personnage. Ainsi, à l'intérieur d'ici, par exemple, vous pouvez contrôler n'importe quel mouvement du personnage. Par exemple, à quelle vitesse votre personnage doit-il marcher ? Et si j'écris, par exemple, disons 200 au lieu de 600. Et la compilation, c'est juste économiser. Nous en parlerons dans la prochaine leçon. Donc, compiler et économiser ici. Et si je minimise cela et que j' ouvre mon, disons joueur. Et je regarde la composante mouvement des joueurs, vous pouvez voir qu'elle est automatiquement tombée à 200. Parce que rappelez-vous que c'est un enfant de caractère. Donc, quoi que ce soit à l'intérieur du personnage, il sera appliqué sur le joueur. Donc, si je retourne ici et que je clique sur cette petite flèche pour revenir à la valeur par défaut, et elle remonte à 600. Maintenant, si je vais voir le joueur, vous pouvez voir dans le joueur qu'il est également passé à 600. C'est donc très utile. Et ce que nous voulons faire maintenant, l'intérieur de la base de joueurs, nous voulons cliquer ici avec le bouton droit de la souris. Et maintenant, nous voulons créer les joueurs, car maintenant nous avons une base pour les joueurs. Cliquez avec le bouton droit de la souris. Et je veux créer celui-ci appelé Tsarina. Et nous avons également un autre personnage appelé Luke. Nous travaillerons avec eux plus tard, mais nous pouvons le créer dès maintenant. Créez donc à nouveau Child Blueprint à partir du joueur et appelez-le BP Luke. Bon, maintenant ces deux enfants, chaque fois que nous codons quelque chose dans la base des joueurs , par exemple, le mouvement, nous ne voulons pas vraiment coder le mouvement ici pour la boucle for. Ensuite, nous voulons coder le même mouvement pour Serena, car ces deux joueurs ont le même mouvement. Ils courent de la même façon. Ils sautent avec le même bouton. Par exemple, cliquer sur l'espace pour sauter ou cliquer sur les flèches du clavier pour courir. Nous ne voulons pas faire cela deux fois. Il suffit de coder cela à l'intérieur de la base de joueurs. Maintenant, il n'aurait pas de sens de coder le mouvement à l'intérieur de caractères. Parce que rappelez-vous que nous avons une base ennemie et que l'ennemi ne marche pas vraiment comme vous en tant que joueur, l'ennemi n' utilise pas de clavier. L'ennemi n'a pas de souris avec laquelle regarder autour de lui, il n'est donc pas logique de coder le mouvement des joueurs à l'intérieur de l'ennemi car il s'agit d'intelligence artificielle. Il n'a pas vraiment de clavier, ce n'est pas un humain. Il serait donc plus logique de coder le mouvement des joueurs à l'intérieur de la base de joueurs. Très bien, nous avons maintenant créé les Blueprints parents et enfants. Et encore une fois, rappelez-vous que si vous avez besoin d'aide pour cela, vous pouvez toujours aller à l'intérieur de mon serveur Discord et je suis plus que prêt à vous aider avec tout cela. Cliquez avec le bouton droit de la souris maintenant et créons un nouveau dossier. Et je vais juste appeler ça un joueur. Et je suis en train d'en créer un nouveau appelé ennemi. Nous restons donc organisés. Je vais placer cette base ennemie au lieu de l'ennemi. Nous allons créer de l'intelligence artificielle plus tard. Et ensuite, Luke, la base des joueurs et Serena à l'intérieur du joueur. Maintenant, maintenant, cliquons sur Fichier et Enregistrer tout. Passons à la leçon suivante. 21. Aperçu du graphique des plans: Nous continuons, prenons un aperçu du graphique de Blueprint. Passons donc à notre dossier Blueprints à l'intérieur de Player Atlas. Il suffit d'entrer dans cette base de joueurs. Maintenant, il va s' ouvrir comme ça, mais vous devez cliquer sur Ouvrir l'éditeur complet, un éditeur de Blueprint. Et cela se produit lorsque vous n' avez pas encore de code à l'intérieur d'ici. Donc, cliquez ici et vous pouvez voir que c'est le graphique de Blueprint. Et à l'intérieur d'ici, vous avez le graphique des événements. Et à l'intérieur du graphique des événements, c'est ici que vous écrivez tout votre code. Vous pouvez voir ici que Unreal Engine vous propose par défaut des événements très simples. Et pour naviguer à l'intérieur du graphique d'événements, vous pouvez maintenir le clic droit enfoncé et vous pouvez effectuer un panoramique comme ceci et utiliser la molette de la souris pour effectuer un zoom avant et arrière. Vous pouvez également cliquer avec le bouton droit de la souris pour ajouter des fonctions. Plus tard, nous allons utiliser cela pour ajouter du code, mais ne vous inquiétez pas. Cela vous paraît probablement écrasant. Il y a beaucoup de choses que vous pouvez ajouter ici, mais nous y travaillerons tout au long du cours. Outre le graphique d'événements où nous écrivons le code, nous disposons également d'une fenêtre d'affichage. Et à l'intérieur de la fenêtre d'affichage, c'est ici que nous ajoutons nos éléments. Vous pouvez donc voir ici à gauche que nous avons quelque chose appelé composants. Et à l'intérieur de cet onglet de composants ici, par exemple, le sprite, nous allons ajouter un flip book ici pour que nous puissions le voir dans le panneau Détails, comme je vous l'ai dit ici dans ce panneau Détails, lorsque nous cliquons sur les éléments de notre niveau, nous pouvons modifier des éléments et modifier, par exemple, l'emplacement, la rotation, l'échelle. Nous pouvons également modifier des éléments concernant la collision. C'est la même chose ici à l'intérieur de la classe Blueprint. Lorsque nous cliquons sur un composant, nous pouvons ajouter des paramètres relatifs à ce composant dans les détails. Par exemple, le sprite. Plus tard, nous allons ajouter le personnage. Et vous pouvez voir quand je clique sur ce flip book source, vous pouvez voir, nous pouvons voir les animations du personnage que nous avons créé dans une leçon précédente. Comme avant. Nous disposons d'un panneau de détails dans lequel nous pouvons modifier les paramètres et, plus tard, nous ajouterons d'autres composants. Et cela peut être fait en cliquant sur ce bouton Ajouter. Et vous pouvez voir que vous pouvez ajouter beaucoup de choses. Par exemple, un cube, une sphère. Vous pouvez ajouter de l'éclairage, audio et beaucoup de choses. En bas, ici. Nous pouvons voir nos événements que nous avons créés dans notre graphique d'événements. Par conséquent, si vous revenez au graphique d'événements ici, vous pouvez voir qu'Unreal Engine vous donne ces informations par défaut. Et vous pouvez également voir ces événements appelés Begin Play, acteur, commencer à se chevaucher et à prendre, et vous pouvez les voir ici. Plus tard, lorsque nous ajoutons des fonctions, vous pouvez également voir nos fonctions ici. Vous pouvez voir les macros, vous pouvez voir des variables, et je vais les expliquer dans une leçon ultérieure. Et après cela, nous avons également cette barre d'outils ici. Le plus important est ce bouton appelé compilation. Et chaque fois que vous écrivez un code, donc si j'écris quelque chose pour m'amuser, vous pouvez voir ici que cela vous donne un point d'interrogation et ça dit que le sale doit être recompilé. Il vous indique donc que vous devez cliquer sur ce bouton chaque fois que vous avez fini d'écrire votre code, je dois cliquer sur ce bouton. Et ce bouton est, il vérifie simplement si le code que vous avez écrit est bon ou non. Donc, si je clique dessus et que cela me coche, cela signifie que je n'ai aucune erreur dans mon code et que je suis prêt à appuyer sur Play et jouer à mon jeu. Mais si vous faites quelque chose de mal, cela vous donnera une croix et vous dira que vous avez fait quelque chose de mal. Et lorsque vous obtenez une erreur, elle vous la donnera ici et les résultats du compilateur. Vous pouvez voir ici qu'il a réussi. le moment, nous n' avons aucune erreur. Mais si vous avez une erreur, elle apparaîtra ici et vous indiquera quelle est votre erreur. Maintenant, je vais sélectionner ce nœud le moment, c'était juste pour le test. Je vais cliquer sur Supprimer. Et encore une fois, dans la barre d'outils, vous pouvez enregistrer votre projet. Bien sûr, vous pouvez rechercher des plans. Vous pouvez accéder aux paramètres de classe, accéder aux valeurs par défaut de la classe, etc. Et nous allons travailler avec tout cela tout au long de ce projet. 22. Événements et fonctions: Jetons un coup d'œil aux événements et aux fonctions. Je vais retourner dans ma base de joueurs bp. Ainsi, à l'intérieur d'ici par défaut, Unreal Engine vous donne ces événements par défaut et les événements sont toujours marqués en rouge. Je vais donc survoler ces derniers maintenant et je vais cliquer sur Supprimer sur mon clavier. Je n'en ai pas besoin pour le moment. Mais vous avez celui-ci, le très basique appelé start play. Cet événement. Il vous indique ce que je dois faire chaque fois que je clique ici sur la pièce, chaque fois que je commence à jouer à mon jeu. Par exemple, très simple. Vous pouvez le faire glisser à partir de cette épingle d'exécution et le faire glisser et dire imprimer. Donc, à la recherche d'impression. C'est la fonction très basique que vous apprendrez dès le début, et elle imprime simplement du texte à l'écran. Donc, en cliquant sur cette fonction. Il s'agit donc d'une fonction et vous pouvez la voir par le f là-haut. Il s'agit donc d'un événement, c'est une fonction. Dans Blueprint, vous avez toujours besoin d'événements pour déclencher du code. Et le code se compose de plusieurs fonctions. toujours besoin d'un événement pour déclencher du code autrement, votre moteur ne sait pas quand vous voulez déclencher ce code. Donc, si je l'ai déconnecté et que vous pouvez le faire en maintenant Alt sur votre clavier et en cliquant ici. Cela va les déconnecter. Si je me dirigeais comme ici, le moteur, on ne saura jamais quand déclencher ce code. Si vous n'avez pas d' événement associé à celui-ci, je vais le faire glisser ici vers l'autre stylo d'exécution et le connecter , en cliquant sur compilé. N'oubliez pas de le faire. Vous pouvez également ici, au lieu de compiler et d'économiser tout le temps, vous pouvez cliquer sur ces trois boutons sont des points et dire Enregistrer sur la compilation, échec seulement. Et cela signifie que chaque fois que vous compilez maintenant, enregistrez automatiquement pour vous si cette coche apparaît. Alors maintenant, ce qui se passe est sur Begin Play, mon écran va dire bonjour. Je vais minimiser un peu cela et vous devez regarder ici en haut à gauche. Donc, cliquez sur Play, et vous ne voyez rien se passer. Et c'est en fait une petite erreur de ma part. Nous allons donc ajouter la base de joueurs. Souvenez-vous que je vous ai dit plus tôt que nous voulions ajouter l'étang. Cliquons donc sur la croix ici. Faissons-le maintenant avant de l'oublier. Donc, pour modifier les paramètres du projet et dans les cartes et les modes qui remontent ici, rappelez-vous que je vous ai dit que nous devions l'ajouter plus tard lorsque nous créons un personnage et que nous en avons un maintenant. Alors, cliquez ici, et faisons de notre personnage Serena pour l'instant. Nous allons le coder Serena. Nous n'allons donc pas créer de base de joueurs pour l'instant. Nous voulons donc faire apparaître Serena dans le monde plus tard. Je vais donc sélectionner ma classe de poèmes par défaut, juste Serena. Mais plus tard, nous aurons un écran de sélection de personnages. Et quand nous aurons cela, nous n' y arriverons pas parce que le joueur sélectionne le personnage et il apparaîtra en tant que Tsarina ou Luc en fonction de ce qu'il a sélectionné. Mais pour le moment, nous n'avons pas d'écran de sélection de personnages. Je vais donc apparaître en tant que Tsarine par défaut. Je vais cliquer sur Crosshair, aller dans les paramètres du monde et m'assurer ici et le mode de jeu global que Serena est également appliqué ici. Maintenant, cliquons à nouveau sur Lecture. Et vous pouvez voir mon écran dit bonjour. Maintenant, je tombe à travers le sol. Vous pouvez voir ici que je tire à travers le sol parce que je n'ai pas de départ de joueur. Et nous pouvons en ajouter un, juste pour ne pas tomber par terre en allant ici. Et ils ajoutent rapidement un bouton, allant à la base et ajoutent ce début de joueur. C'est donc par là que nous pouvons commencer ici. Et si vous cliquez sur G, vous n'oubliez pas d'afficher et de masquer les icônes. C'est le départ du joueur. Je vais le placer dans mon monde ici, faisons le y 0. C'est donc ici, devant. Et puis nous le pourrons, je vais le rendre plus petit maintenant parce que si vous avez cette capsule au milieu de vos tuiles de collision, ça va dire une mauvaise taille. Je vais réduire l'échelle ici à 0,25,25,25. Et puis je vais juste le faire glisser ici près du sol. Maintenant, lorsque nous cliquons sur Play, vous pouvez voir où tomber à travers le sol, mais nous ne tombons pas complètement parce que nous avons notre collision. Bon, donc revenons aux plans maintenant, nous avons dit Bonjour et vous pouvez voir ici en haut à gauche que ça dit Bonjour sur mon écran. Le code fonctionne donc en ce moment et il passe par cette base de joueurs. Les autres événements que nous avons sont appelés « Event tick ». Vous pouvez donc le rechercher ici si vous cliquez avec le bouton droit sur le graphique comme je vous l'ai déjà dit, vous pouvez le rechercher ici. Et si vous écrivez simplement un événement, vous pouvez voir tous les événements que nous pouvons appliquer à notre code. Par exemple, un événement frappé, ou si votre acteur commence à chevaucher quelque chose, ou si votre personnage a sauté, vous voulez faire quelque chose. Peut-être que si vous commencez à jouer au jeu, c'est ce que nous avons en ce moment. Et peut-être que celui-ci a appelé « Event tick », c'est ce que je veux montrer en ce moment. C'est quelque chose que vous ne devriez jamais utiliser. Et chaque fois que vous l'utilisez, c' est probablement parce que vous devez l'utiliser à un moment donné, mais essayez d'éviter cela, ne jamais l'utiliser dans votre jeu. Ce que je veux dire par là, c'est parce que celui-ci exécute votre code 60 fois par seconde. Donc, si je clique sur Control X pour copier ceci et Control V pour le coller ici. Si je connecte ça ici, donc l'événement malade, vous pouvez la voir quand je clique sur Jouer cet endroit tant fois et qu'il joue 60 fois par seconde. Il peut donc imaginer que si vous avez un code qui est joué 60 fois par seconde, votre jeu sera en retard. Et si vous en avez plusieurs, votre jeu va encore l' aimer et les joueurs sentiront la jambe. Essayez donc de ne jamais, jamais, ne jamais utiliser cela. Il existe toujours une meilleure solution que d'utiliser un événement six. Je vais supprimer celui-ci. Je ne l'utilise jamais dans mes jeux. Et il y a des moments où vous devez l'utiliser, mais c'est à chaque fois que votre jeu est très volumineux et que vous vous trouvez dans une situation où vous ne pouvez rien faire d'autre que de le faire. Mais je dirais un très grand jeu, l'utilisez-le qu'une seule fois. Donc, jamais, ne l'utilisez jamais. Essayez de le supprimer. Ne pensez même pas à cela, à cet événement. Et comme vous pouvez le constater, il y a beaucoup de fonctions que vous pouvez ajouter à votre jeu. Nous avons des tables de données, donc nous avons un marié, nous avons des couches et ainsi de suite. Donc beaucoup de choses que vous pouvez ajouter, nous utiliserons probablement 10% de tout cela. Alors ne vous inquiétez même pas de tout cela, même si cela semble écrasant. Encore une fois, si je vais ici et que j' écris une chaîne d'impression, il existe une autre fonction appelée delay. Je peux donc retarder ici. Si j'écris un délai , nous pouvons retarder de deux secondes, par exemple. Ensuite, nous pourrons imprimer une autre chaîne. Et ici, je vais dire que c'est fini, quelque chose comme ça. Et vous pouvez cliquer sur cette flèche pour la rendre plus longue. Par exemple, je veux le lire pendant dix secondes sur mon écran. Je veux rendre la couleur rouge. Vous avez donc ici quelques variables que vous pouvez modifier. Et je vais compiler, n'oubliez pas de le faire. Ensuite, vous pouvez cliquer sur Jouer sur votre jeu. Je peux dire bonjour et après deux secondes, ça va dire que c'est fini. Très basique, c'est Blueprint. Vous pouvez voir qu'il est très facile de travailler avec. Et une fois que vous avez appris les bases, vous pouvez créer des jeux très puissants. Maintenant, dans l'usine, supprimons tout, compilons et sauvegardons, et passons à autre chose. 23. Variables: Nous continuons à mettre en place le personnage. Parlons de la dernière chose appelée variables. Et c'est le principe principal de la programmation dans les plans et quel que soit le langage que vous écrivez. Allons donc à la base des joueurs nouveau et à gauche comme vous l'avez vu auparavant, il y a quelque chose appelé variables. Et je veux que vous considériez les variables comme des conteneurs qui contiennent une sorte d'information. Ils peuvent, par exemple, contenir quantité de personnage en meilleure santé, le type d'arme que possède votre personnage , votre vitesse de déplacement, si vous avez suffisamment de pièces pour acheter un article dans la boutique. ou non. Donc, un conteneur contenant le nombre de pièces que vous avez. Les variables sont donc des conteneurs qui contiennent des informations spécifiques, quelles que soient les informations que vous essayez de stocker. Et pour créer une variable, vous devez cliquer sur ce bouton Plus. Et lorsque vous créez une variable, vous devez lui donner un nom. Et à droite, vous pouvez voir tous les types de variables. Par exemple, créez un booléen. Et appelons cette arme booléenne. Et je commence habituellement mes booléens par un b. Et c'est parce que c'est généralement ce qui se fait dans C plus plus. Et lorsque vous faites glisser cela vers l'extérieur, vous pouvez le faire glisser dans le graphique. Et lorsque vous lâchez prise, vous pouvez choisir d'obtenir cette variable pour la définir à quelque chose de spécifique. Voyons donc simplement cette variable. Nous avons maintenant cette variable et si vous compilez, vous pouvez voir ici dans le panneau Détails que vous pouvez modifier certains paramètres. Vous pouvez modifier le type de variable, vous pouvez modifier le nom que nous venons de dire. Vous pouvez ajouter une description et une réplication. Nous allons y toucher plus tard. Il s'agit d'un mode multijoueur. Et maintenant, il est dit s'il vous plaît compiler les plans. Et nous allons compiler ici. Et il va vous montrer quelle est la valeur par défaut. Ce qu'est un booléen, c'est quelque chose qui peut être vrai ou faux. Donc, il peut être faux comme ça ou je peux le prendre et la valeur par défaut sera vraie. Par exemple, nous pouvons vérifier si le joueur possède l' arme ou non. Et nous pouvons peut-être commencer par défaut à être faux. Ainsi, le joueur n'a pas l'arme, mais plus tard, lorsque le joueur aura pris l'arme, celle-ci sera vraie. Bon, par exemple, prenons un exemple ici. Reprenons l'événement de début de jeu. Donc, si vos droits commencent à fuir ici. Maintenant, prenons ceci et nous pouvons dire une chaîne d'impression. Maintenant, lorsque nous imprimons cette chaîne, ce que vous pouvez faire au lieu de dire bonjour, vous pouvez la faire glisser et la brancher ici. Et ça va vous dire que je vais convertir cette variable booléenne en chaîne, car une chaîne est également une variable. Vous pouvez voir ici qu'il existe une variable appelée chaîne. Vous pouvez donc faire glisser ceci et il va convertir en chaîne, ce qui signifie simplement en texte. Et je vais imprimer ce texte à l'écran. Maintenant, lorsque vous branchez la variable, vous pouvez maintenant cliquer sur Play. Et ça va dire faux, et c'est la valeur du booléen. Plus tard, disons qu'au bout de cinq secondes. Je vais donc faire le nœud de retard et faire cinq secondes. Au bout de cinq secondes, je veux dire que le personnage a pris l'arme. Je peux donc faire glisser ça et dire « set ». Je peux le connecter ici et le définir sur vrai. Maintenant, laissez-nous refaire la chaîne d'impression. Je vais donc cliquer sur Control C, Control V ici. Et je vais maintenant connecter ma variable, la valeur. Et il va imprimer cela à l'écran, compiler et cliquer sur Play. Il va donc dire faux. Et au bout de cinq secondes, ça va dire vrai ici, d'accord ? Il va donc dire faux et ensuite ça va dire vrai parce que nous avons défini cela sur vrai plus tard. C'est ainsi que nous définissons les variables de manière dynamique. Premièrement, le joueur entre plus tard dans notre arme, nous allons mettre cette arme à vrai par exemple. Supprimons donc tout cela pour l'instant. Nous avons donc ce booléen qui peut être vrai ou faux et vous pouvez vérifier les choses avec elle. Vous avez les autres, vous avez un biais, vous avez un entier, un entier 64 et un float. Tous ces éléments pour nos valeurs numériques. Par exemple, essayons de créer un entier. Allons le faire sortir. Une fois encore. Cliquez sur Obtenir. Au lieu de cliquer sur Obtenir et définir tout le temps, vous pouvez cliquer et faire glisser et maintenir la touche Contrôle sur le clavier. Cela va l'obtenir automatiquement. Vous pouvez également maintenir la touche Alt enfoncée sur le clavier et cliquer et faire glisser, ce qui le définira automatiquement. Ainsi, au lieu de faire glisser et de cliquer sur le réglage, vous pouvez maintenir la touche Contrôle ou Alt enfoncée. D'accord ? Donc toutes ces valeurs numériques, donc l'entier, entier 60 pour le float, l'octet, toutes ces valeurs sont numériques. Et si je compile et que je clique dessus ici, vous pouvez voir qu'il s'agit d'un numéro, il faut un numéro dans celui-ci, nous pourrions peut-être en changer le nom, cliquer sur F2 pour changer le nom. Et celui-là pourrait dire quantité de pièces. Alors peut-être que nous collectons des pièces de monnaie. Et je vais compiler les mots s'il vous plaît compiler la compilation du plan directeur. Et ici, vous pouvez voir la quantité de pièces. Nous commençons donc par 0, et en entrant dans les pièces, nous allons ajouter des pièces dans cette variable. Nous avons donc quelques opérateurs. Et si vous cliquez et faites glisser à partir de cela, vous pouvez enregistrer, par exemple, Plus. Et vous pouvez voir que nous pouvons ajouter des pièces de monnaie. Si vous écrivez moins, vous pouvez soustraire des pièces de monnaie. Si vous écrivez le signe divisé, vous pouvez voir qu'il est dit diviser. Nous avons également la multiplication comme celle-ci. Par exemple, on peut dire plus comme ça. Et dans Maple Story, vous pouvez collecter les pièces. Je crois que c'est ce qu'on appelle des micelles. Micelles, je ne suis pas sûr. Je ne sais pas vraiment comment ça s'appelle. Donc, appelons ça des pièces de monnaie. Et par exemple, je peux ajouter chaque fois que je m'y trouve, je peux ajouter dix pièces comme celle-ci. Maintenant, si je fais simplement glisser d'ici et écrire une chaîne d'impression, je peux maintenant la connecter à ma chaîne d'impression, et cela va convertir l'entier une chaîne qui est une variable de texte. Maintenant, il va en imprimer dix. Permettez-moi donc d'augmenter la durée ici. Laissez-moi rendre la couleur rouge. Cette compilation économise. Et quand je clique sur Play, vous pouvez voir qu'il y a dix pièces ici parce que j'ai dix pièces. L'entier. Très cool. Vous pouvez écrire des chiffres. Nous pouvons utiliser ces opérateurs pour modifier ces variables. Et un autre type de variable est le flotteur, très important, on peut dire par exemple, la santé des couches. C'est ce que nous pouvons appeler cela. Nous pouvons le faire glisser, garder le contrôle, le faire sortir automatiquement ici. Donc, si vous compilez maintenant, ce qui est intéressant avec notre float par rapport à un entier, c'est qu'un float peut contenir des décimales. Par exemple, je peux écrire 50,5 ici. Et la valeur par défaut, comme pour les pièces, si j'essaie d'écrire une décimale, par exemple 50,5, elle va la convertir automatiquement en 50 car vous ne pouvez pas écrire de décimales à l'intérieur d'un entier. Ainsi, chaque fois que vous voulez un nombre avec des décimales, vous devez sélectionner un nombre flottant. C'est le seul, mais si vous voulez un nombre complet sans décimales, vous pouvez choisir un entier ou un nombre plus grand et un nombre entier 64. Quant à la morsure, vous ne pouvez définir que le nombre. Si je change la variable ici. En ce qui concerne la morsure, vous ne pouvez modifier le nombre que sur un maximum de 255. Donc, pour la santé du joueur, c'est maintenant un octet. Encore une fois, si j'écris des décimales, il ne l'acceptera pas. Seul le flotteur accepte les décimales. Et celui-ci ne peut contenir que le nombre 200 jusqu'à 255. Donc si j'écris 256, ça va le changer à 255 pour que je puisse écrire n'importe quel numéro, les genoux 255. Mais si j'écris quelque chose ci-dessus, il ne l'acceptera pas. Vous pouvez donc imaginer les usages de ceux-ci. Par exemple, si j'ai un écran de sélection de personnages et que j'ai, disons que j'ai peut-être 60 coiffures et Maple Story, je peux utiliser la morsure. Mais si c'est le cas, disons dimanche que j'ai 600 coiffures pour une raison quelconque. Je ne peux plus utiliser une bouchée car je ne peux avoir que 255 coiffures. Bon, donc ce sont les valeurs numériques et nous avons également d'autres valeurs. Nous avons le nom, la chaîne, le texte et nous demandons le nom. Créons ça. Et si je fais glisser le nom ici, vous pouvez voir toutes les variables que nous créons ont des couleurs différentes. Donc, si je crée des variables aléatoires ici, et que je change celle-ci par une chaîne, changez celle-ci en texte, whoops, textes. Et nous pouvons les faire sortir. Nous pouvons, par exemple, appeler cet identifiant de réussite. Nous pouvons appeler le deuxième nom de serveur, et nous pouvons appeler le dernier message de discussion. Ok, donc la différence entre ces éléments que vous pouvez essayer de compiler et vous pouvez voir lorsque vous cliquez sur ces variables, ce ne sont que quelques textes que vous pouvez écrire ici. va de même pour le nom du serveur, et va de même pour le joueur. La santé du joueur Ashley, nous devons compiler. Maintenant, compilez ce n'est pas le bon. Je vais plutôt traîner celui-là. Et vous pouvez voir ici cet identifiant de réussite, il n'en dit aucun pour le moment. s'agit donc de variables textuelles et vous pouvez écrire quelques types de textes ici. La différence entre eux est que vous devez toujours choisir cette variable de nom chaque fois que vous avez des textes qui ne changent jamais dans le jeu. Par exemple, l'ID de réussite. Peut-être qu'un succès que vous avez est appelé ID 273 ou n'importe quel numéro aléatoire que vous possédez. Cet identifiant, vous n' aurez jamais besoin de le changer dans le jeu. Et c'est ici que vous pouvez utiliser un nom, car ce que vous écrivez ici. Ne peut jamais être modifié dans le jeu, mais ce n'est pas le cas avec le nom du serveur. Par exemple, si j' écris Maple Story, meilleur serveur, joignez-vous maintenant, ou quelque chose comme ça. Maintenant, ce texte que j'écris ici, vous pouvez le modifier. Par exemple, un exemple que je peux vous donner est un nom de serveur. Par conséquent, si le joueur écrit ceci comme nom de serveur, nous pouvons modifier le texte que le joueur a droit ici. Si vous faites glisser depuis cette variable de chaîne et que vous écrivez simplement une chaîne, vous pouvez voir toutes les fonctions que vous pouvez utiliser avec une chaîne. Si vous faites défiler vers le haut, vous pouvez voir qu'il s' agit de la catégorie appelée chaîne. Et ici, vous avez toutes les fonctions que vous pouvez utiliser avec cette chaîne. Par exemple, vous pouvez vérifier si le texte écrit ici est vide. Donc, si la variable est vide, et si elle est vide, vous pouvez voir la variable rouge. N'oubliez pas qu'il s'agit en fait d'un booléen, donc il peut être vrai ou faux. Par exemple, si le nom du serveur est vide, vous allez envoyer une erreur au joueur en lui disant d' écrire un nom de serveur car vous ne pouvez pas créer un nom de serveur vide. Nous pouvons faire glisser à nouveau, nous pouvons écrire des chaînes et nous pouvons vérifier à nouveau. Par exemple, vous pouvez rendre tous les caractères en minuscules ou en majuscules. Vous pouvez même diviser le texte. Et peut-être certains. Ce que je l'utilise, c'est si le joueur écrit un mauvais mot, par exemple, l'intérieur, et je ne veux pas que le joueur écrive cela dans le nom du joueur. Je peux traîner ici. Et je peux dire trouver. Il y a quelque chose ici dans cette chaîne appelé find substring. Et je peux écrire à l'intérieur. Je ne veux pas vraiment le faire ici sur la vidéo. Et il va trouver ce mot à l'intérieur du serveur du lecteur. Donc, peu importe ce que le joueur a écrit ici, il va trouver ce mot. Et si c'est le cas, vous pouvez en faire quelque chose. Et dans ce cas, nous pouvons utiliser celui appelé remplacer. Pour que nous puissions remplacer également, nous pouvons simplement le faire à la place, trouver la sous-chaîne. Nous pouvons également le faire. Remplacez donc l'intérieur par autre chose et vous pouvez simplement le laisser vide et cela montrera que le remplacer par rien, ce qui signifie qu'il supprime le mot et qu'il ne met rien à l'intérieur d'ici. Des trucs très cool. Vous pouvez modifier les variables de chaîne comme vous le souhaitez, mais vous ne pouvez pas le faire ici. Si vous faites glisser de là et que vous connaissez le bon nom, vous pouvez voir dans le nom que vous n'avez pas grand-chose à faire. Vous n'avez donc pas l'est vide, vous n'avez pas le remplacement. Vous ne pouvez donc modifier que des chaînes et non la variable name. La dernière chose que vous avez, c'est le texte et le texte. La seule chose que je veux dire à ce sujet différemment de la chaîne, c'est que des textes que vous pouvez localiser, afin que vous puissiez les traduire dans différentes langues. Supposons que vous souhaitiez traduire votre jeu en allemand, en japonais ou en chinois. Quel que soit le texte que vous souhaitez traduire, vous devez utiliser une variable de texte, quelle que soit la valeur que vous écrivez dans une variable de chaîne. Cela ne peut pas être traduit plus tard dans le jeu. Donc, avant de commencer à créer votre jeu, pensez à : est-ce que je veux traduire mon jeu en allemand ? Quand j'ai fini ? Si je le veux, quel que soit le texte que vous voulez traduire, vous devez l'écrire dans une variable de texte. Quant au nom du serveur, je ne pense pas que nous ayons besoin de traduire le nom du serveur. Par exemple, supposons que nous ayons terminé notre jeu. Il n'est pas vraiment logique de traduire un nom de serveur. C'est exactement quoi, quels que soient les droits du joueur. Mais pour ce qui est d'un message de discussion, disons, par exemple, quelqu'un dit bonjour, comment allez-vous ? Ou peut-être qu'un PNJ dit ça ? Et maintenant, nous voulons traduire ce message en japonais parce que quelqu'un du Japon doit voir ce que cela signifie. Nous allons donc changer cela en japonais. Mais si vous écrivez ceci ici, ici, vous ne pouvez pas le traduire. Vous devez l'écrire dans une variable de texte. Et alors, vous pourriez vous demander pourquoi ne nous contentons pas d'utiliser cela tout le temps ? Pourquoi devons-nous même utiliser ceci ou ceci ? Et c'est pour l'optimisation. Le nom utilise moins de mémoire, puis vient la chaîne. Et celui qui coûte le plus cher, c'est le texte. Bien sûr, cela n' affectera rien si vous n'en utilisez qu' un ou deux dans votre jeu. Mais si vous avez un gros jeu sur lequel vous travaillez depuis trois ans et que vous ne l'utilisez que tout le temps. Bien sûr, cela va affecter votre jeu. Celui-ci utilise donc le moins de mémoire. Essayez donc toujours d'y aller. Si vous avez des textes qui ne changent jamais, par exemple, un ID de réussite, mais utilisez une chaîne après cela. Par exemple, vous pouvez également l'utiliser pour le nom d'un joueur. Parce que le nom du joueur, encore une fois, vous devez modifier le nom. S'ils écrivent un mauvais mot, il faut le vérifier en leur nom. Et enfin, si vous voulez que votre jeu soit traduit et que vous avez des textes à traduire, vous devez l'écrire, l' écrire dans une variable de texte. Très bien, assez à ce sujet. Supprimons cela pour l'instant. Encore une fois, vous pouvez créer d'autres variables de valeur. Et les derniers que nous avons sont le vecteur, le rotateur et la transformation. Nous pourrons l'utiliser plus tard dans le projet. Je ne vais pas couvrir cela pour l'instant, mais pour le vecteur, très, très simple si vous le créez tout de suite et cliquez sur Compiler. Vous pouvez voir qu'il est livré avec trois chiffres. Et généralement, pour quoi nous utilisons un vecteur, nous l'utilisons généralement ici. Si vous cliquez sur quoi que ce soit ici, vous pouvez voir dans l'emplacement que nous utilisons généralement un vecteur pour changer ou rechercher un emplacement car l'emplacement comporte trois chiffres. Et nous utilisons généralement des vecteurs pour cela car il y a trois nombres. Par exemple, nous pouvons définir l' emplacement des caractères chaque fois qu'ils prennent un portail, nous pouvons le définir à un emplacement spécifique. Il en va de même pour le rotateur. Si je change cela par un rotateur, il comporte trois valeurs, comme ici dans le panneau Détails. Chaque fois que je clique sur quoi que ce soit, ils ont une rotation. Il s'agit donc d'un rotateur et vous pouvez définir ou obtenir une rotation. Et c'est la dernière chose que vous avez transformée. Et cela est utilisé chaque fois que vous frayez des choses dans le monde. Par exemple, vous générez le personnage sur la carte. Ensuite, vous devez définir l' emplacement des caractères à l'endroit où vous souhaitez générer le personnage, quelle rotation doit avoir ce personnage et l'échelle que le personnage doit avoir. Très bien, donc ce sont les variables les plus importantes et je vais toutes les supprimer. Nous allons créer d'autres variables personnalisées. Et je veux commencer par couvrir ces éléments très basiques, car cela vous facilitera la tâche plus tard. Je vais donc tout supprimer ici. Compilons-le. Maintenant. Passons à la configuration du personnage et vous apprendrez tout cela étape par étape pendant ce cours. 24. Configurer le personnage: Pour configurer notre personnage, revenons d'abord à notre dossier Blueprints et mettons en place Serena. Donc, au lieu de jouer, nous avons créé cette classe de Blueprint appelée Tsarina. C'était un personnage de papier et il s'agissait d'un enfant de la base de joueurs. Ici, pour BP Tsarina, nous devons ajouter ces actifs. N'oubliez pas que nous avons créé ces flip books et nous pouvons les ajouter à notre classe de Blueprint. Revenons donc au dossier du lecteur ici, en cliquant sur Serena, lorsque cela s'ouvre, est parce qu'il est vide. Par conséquent, le panneau Détails remplit tout l'écran, vous devez donc cliquer sur Ouvrir tout l'éditeur de Blueprint. Et nous sommes à l'intérieur d'ici. Vous pouvez voir que nous n'avons pas vraiment besoin de coder quoi que ce soit pour le moment, alors je vais à la fenêtre d'affichage. Ici. flip book de Serena apparaîtra. Une fois que vous l'avez ajouté. Vous ajoutez les flip books ici à gauche. Vous pouvez voir que nous avons un sprite et nous pouvons ajouter le flip book de Serena à l'intérieur d'ici. Nous avons également un mouvement de personnage où nous pouvons contrôler le mouvement plus tard lorsque nous ajoutons du mouvement. Cliquons donc sur le sprite et ici, dans le flip book, il y a deux façons d' ajouter un flip book. Vous pouvez soit cliquer ici et le sélectionner. Ce serait le moyen le plus simple en ce moment. Ou si vous minimisez un peu cela et que vous le rendez un peu plus grand. Vous pouvez également accéder à votre dossier de ressources, et vous pouvez également cliquer et faire glisser. Vous pouvez le voir surbrillance pour vous et vous pouvez l'ajouter à cet emplacement. À vous de choisir si vous voulez l' ajouter de cette façon ou de cette façon. Je vois que nous avons ajouté notre flip book et cela fonctionnera déjà. Donc, si vous le testez ici, si vous cliquez simplement sur Compiler et enregistrer. Et encore une fois, cela garantit que vous ne commettez d'erreur ici dans les paramètres du projet. Comme avant, lorsque nous avons ajouté le mode de jeu. Ici. N'oubliez pas que vous aviez également la classe **** par défaut pour Serena car c'est ce que nous testons en ce moment, juste pour vous assurer que vous avez suivi cette leçon. Bon, donc maintenant vous devez ajouter un joueur recommencer à apparaître. Vous avez donc cette arène peut également le vérifier ici dans les paramètres du monde pour vérifier la classe de pion par défaut pour vous assurer qu'il s'agit de la Tsarina. Et aussi que vous avez un joueur commence ici dans le niveau. Donc, en cliquant sur Jouer maintenant, vous pouvez voir que nous sommes en train de frayer à l'intérieur du niveau, mais nous pouvons toujours voir le personnage, mais le personnage est en fait là. Et c'est parce qu' il ne connaît pas la vue souhaitée car vous n'avez pas ajouté de caméra. Retournons à Tsarina ici. Et sur ce brillant, vous pouvez cliquer dessus ici et cliquer sur la capsule. Nous ne voulons pas fixer la caméra au-dessus d'ici. Cliquez donc sur la capsule et cliquez sur Ajouter. Et la première que nous voulons ajouter est quelque chose qu'on appelle un ressort sur un ressort sur lui ici. Vous pouvez l'imaginer comme le support de la caméra, donc il tient la caméra. Nous pouvons le bras à ressort, puis cliquer à nouveau sur Ajouter et cliquer sur une caméra. Alors, ici, appareil photo. Nous avons donc ce bras brûlant et la caméra se trouve à l'intérieur de ce bras à ressort. C'est donc un enfant du bras de ressort. Et vous pouvez voir que la caméra est un peu fausse, pivotée. Nous regardons actuellement le personnage comme celui-ci. Nous devons donc faire pivoter la caméra. Et rappelez-vous que beaucoup de gens font une erreur en cliquant ici et tournant la caméra en appuyant sur E sur le clavier. Vous pouvez voir que vous disposez de ces différents outils. Encore une fois, comme vous l'avez fait dans la fenêtre d'affichage. Beaucoup de gens font l'erreur de faire tourner la caméra ici, mais il faut en fait tourner le bras du ressort. Donc, cliquez sur le bras de ressort et tournez, tournez le z pour que la caméra soit devant elle, donc moins 90 degrés. Juste comme ça. Et compilons et économisons. Vous pouvez cliquer sur Jouer maintenant et voir ce qui se passe. Cliquez donc sur Play. Maintenant, nous pouvons voir, vous pouvez voir le personnage. L'appareil photo fonctionne donc, mais les paramètres par défaut sont erronés, nous devons donc les modifier. Très bien, alors finissons tout ça. Il vous suffit donc de cliquer sur le bras de ressort l'appareil photo et vous devez changer la caméra en perspective. Donc, ce que vous devez faire ici sur la caméra, vous devez changer cela vue orthographique car nous ne travaillons pas avec la 3D. Nous travaillons avec 2D. Donc, en cliquant sur la vue orthographique. Et ici, pour la largeur de l'ortho, vous pouvez modifier votre proximité avec la caméra. Donc, plus il est bas, plus le nombre est bas, plus vous êtes proche du personnage. Vous pouvez voir que c' est très énorme maintenant. Et plus il est grand, vous serez loin du personnage. Vous pouvez donc voir ici, si vous venez essayer un grand nombre aléatoire, vous vous éloignerez plus loin. Alors, que voulez-vous faire ici ? Je l'ai testé dans Maple Story, je l'ai joué et j'ai testé la longueur de la caméra et c'est environ 1304. Encore une fois, c'est quelque chose que j' regardé et quand j'ai testé Maple Story, alors peut-être que c'est 201 250, peut-être 1300. Je ne peux pas le dire avec certitude dans le vrai jeu, mais on dirait que c'est vers 1304. J'ai essayé de jouer au jeu plusieurs fois et de tester la caméra. Et ensuite, ce que nous voulons faire est de cliquer sur le bras de ressort et de désactiver celui-ci appelé faire des tests de collision car il va boguer la caméra. Donc, en supprimant cela, en cliquant sur Compiler, en cliquant sur Enregistrer. Maintenant, lorsque vous cliquez sur Play, vous pouvez voir que c' est le personnage. Et si vous vous en souvenez, nous pouvons cliquer sur FL1 pour maximiser la fenêtre d'affichage. C'est à ça que ça ressemble. En ce moment. Le joueur ne démarre pas au départ du joueur et cela pourrait avoir quelque chose à voir avec notre collision. Donc si nous revenons ici sur Serena, nous avons cette capsule ici, vous pouvez voir cette capsule et c'est la capsule de collision, ce composant de la capsule. Nous devons donc le réduire pour s'adapter à notre personnage. Sinon, il entrera en collision avec les tuiles et cela ne fonctionnera pas correctement. Vous pouvez donc changer la demi-hauteur de cette capsule et changer le rayon pour mieux s'adapter à notre personnage. Je vais écrire 16 ici. Et le rayon de la capsule, je vais écrire 33 ans. Il est donc un peu plus petit et il correspond davantage à notre personnage. Cliquez maintenant sur Compiler and Save. Voyons si c' était le problème. Je clique donc sur Jouer maintenant. Et c'était le problème, il était en collision avec ça. Vous pouvez voir ici que nous avons des données de collision ici, nous avons des données de collision ici. La capsule est trop grande, elle entre en collision avec ces deux-là. Et c'est en train de le déranger. Cela fait donc commencer ici en haut. Mais maintenant que nous avons corrigé notre capsule de collision, de sa taille, au moins, nous pouvons maintenant cliquer sur le jeu et vous pouvez voir que le personnage est ici. Maintenant, le petit problème que nous avons en ce moment, vous pouvez voir que les pieds du personnage sont derrière l'herbe et nous voulons avoir les pieds devant l'herbe. C'est une solution très facile. N'oubliez pas que nous avons nos tuiles ici à 000, parce que lorsque vous regardez ici, et encore une fois, vous pouvez aussi faire une belle astuce. Vous pouvez cliquer sur cet outil de capture. Et vous pouvez augmenter le nombre. Et en augmentant le nombre à quelque chose du genre, disons 100. Vous pouvez voir ici la ligne médiane qui m'intéresse, cette ligne médiane. Vous pouvez voir la moelle et traverser les tuiles. Donc cette deuxième couche que nous avons, que nous avons faite auparavant, et la deuxième couche, se souviennent que nous avons un premier plan. C'était le premier plan. Et la zone médiane que nous avons à zéros, zéro 0 est notre tuile. Et en ce moment, notre frai, nos joueurs ont la position de 0 dans le y, mais il suffit de le pousser un peu plus loin pour que le personnage ne soit pas derrière l'herbe. Ce que je vais faire, c'est je vais juste faire ça. Je vais juste en écrire un ici dans le Y parce que 0 est essentiellement au niveau de ces titres. Mais si vous en écrivez un, techniquement, nous sommes devant ces carreaux. Donc, si vous n'en écrivez qu'un pour le point de place dans le Y, et que vous pouvez cliquer sur Lecture. Vous pouvez voir maintenant que vous êtes devant l'herbe. Maintenant que nous avons créé notre personnage, passons au mouvement des joueurs. 25. Mouvement de base des joueurs: Créons maintenant le mouvement de base du joueur. Revenons donc au dossier Blueprints à l'intérieur du lecteur. Et rappelez-vous ce que j'ai déjà dit au sujet des plans d'enfants et des plans parents. La meilleure façon de le faire est de coder ce mouvement l'intérieur de la base des joueurs car si vous maintenez la souris au-dessus de cela, vous pouvez voir que la classe parente de Tsarina est le joueur, et la classe parente de Luke est le base de joueurs. Donc, si nous enduisons le mouvement à l'intérieur de la base de joueurs, Serena et Look hériteront de ce code car sont des plans enfants de cette base de joueurs. Bon, donc allons à l'intérieur de la base des joueurs, encodons le mouvement. Donc, cliquez ici. Maintenant, ouvrons l'éditeur de Blueprint complet. Et maintenant, nous sommes à l'intérieur de ce graphique d'événements. Et encore une fois, vous pouvez cliquer avec le bouton droit souris, le maintenir enfoncé et le clic droit pour naviguer Maintenant, pour coder cela, commençons par le très basique, qui s'appelle ajouter une entrée de mouvement. C'est celui que vous utiliserez toujours dans chaque projet si vous souhaitez ajouter du mouvement. Cliquez avec le bouton droit de la souris et vous pouvez rechercher un mouvement. C'est quelque chose qui est vraiment utile parfois lorsque je code et que je ne sais pas comment s'appelle la fonction. Et je l'ai aussi fait quand j'étais débutant. Je pense simplement à ce que je veux faire ? Peut-être que je veux faire quelque chose avec l'emplacement, alors je clique avec le bouton droit de la souris et je recherche l'emplacement. Ensuite, j'essaie de m'écrémer. Parfois, il faut beaucoup de temps pour écrémer cela. Mais je le trouve ensuite. Par exemple, je voulais obtenir l' emplacement de cet acteur et je veux utiliser ces informations pour quelque chose. Et c'est ce que vous pouvez faire lorsque vous êtes débutant. Vous n'avez pas vraiment besoin de savoir comment tout cela s'appelle. Vous pouvez essayer de rechercher ce que vous essayez de faire. Par exemple, il peut résoudre la recherche de rotation si vous essayez de faire quelque chose avec la rotation. En ce moment, nous essayons donc d'ajouter du mouvement. Donc, à la recherche du mouvement, on peut toujours essayer de passer à travers, je sais comment ça s'appelle, mais je voulais voir si je peux le trouver maintenant, le mouvement est un peu difficile à trouver ici. En tant qu'élément de mouvement, c'est ce que nous essayons de trouver. Cliquez donc sur Ajouter ici, ajoutez une entrée de mouvement. Maintenant, rappelez-vous ce que j'ai dit auparavant. Vous ne pouvez pas exécuter de fonctions si vous n'avez pas d'événement. Et nous voulons que l'événement soit les touches du clavier. Ensuite, vous voulez modifier ici et les paramètres du projet. Et dans les paramètres des projets, vous avez celui-ci appelé entrées, et c'est ici que vous ajoutez les touches de votre clavier. Cliquez donc sur les entrées. Ici, dans le mappage des accès, vous avez également celui-ci appelé Action Mapping. La différence entre le mappage des actions et le mappage d'accès est vous pouvez considérer que le mappage des axes est continu. Un clic continu, un mouvement continu. Tous les mouvements seront donc ici. Par exemple, en cliquant sur W pour avancer, sur D pour se déplacer vers la droite et ainsi de suite. Vous l'avez fait, ce sont des mappages d' accès. Toutefois, si vous voulez simplement un événement en un clic, par exemple, vous appuyez sur la barre d'espace pour sauter ou appuyez sur le bouton de la souris pour tirer sur votre arme. Il s'agit de mappages d'actions, de mouvements, mappages d'accès et d'événements en un clic. Ils sont dans les actions Mappings. Ici, ajoutez toujours les mouvements aux mappages d'accès. Nous voulons donc ajouter, par exemple, déplacer vers la droite et la gauche. Comme il s'agit d'un jeu 2D, nous nous dirigeons vers la droite et vers la gauche sur ce jeu de plateforme. Et ici, vous devez attribuer des touches à ce que vous souhaitez utiliser pour vous déplacer vers la droite et la gauche. Vous pouvez soit cliquer ici cliquer ici et trouver la clé. Mais une autre méthode utile consiste à cliquer sur ce bouton, puis à cliquer sur la touche de votre clavier. Je vais donc cliquer sur D sur mon clavier. Cela va déplacer le personnage vers la droite, et je vais cliquer sur ce bouton plus, regardant ce clavier et en cliquant sur un de mon clavier pour me déplacer à gauche. Et vous devez régler l'échelle à moins un pour la gauche. Vous pouvez donc le considérer comme deux directions différentes. C'est donc plus un lorsque vous vous déplacez vers la droite et moins un lorsque vous vous déplacez vers la gauche, tout comme un graphique avec les axes X et Y. Très bien, alors fermons les paramètres du projet et revenons ici. Maintenant, lorsque vous y avez ajouté le mappage des axes, vous pouvez maintenant cliquer avec le bouton droit ici et écrire le même nom que celui que vous avez appelé dans les paramètres du projet. Je l'appelle donc se déplacer à droite et à gauche. Et vous pouvez voir ici, je peux voir les événements de l'axe. Vous souhaitez donc ajouter celui-ci appelé Access Events, non les valeurs d'axe. Et vous pouvez voir que les événements ont toujours cette icône. Je peux donc cliquer dessus. Une fois encore. Les événements sont toujours marqués comme lus. Vous savez donc que c'est un événement. Vous pouvez maintenant le connecter à l'entrée de mouvement ici. La prochaine chose que vous devez apprendre sur les fonctions est cette cible. Ils sont très importants. Et vous pouvez voir ici que c'est écrit ici, la cible est ****. Il veut donc ajouter du mouvement à un pion. Et souvenez-vous de notre personnage. Nous sommes à l'intérieur du personnage ici, la base des joueurs. Et ce plan que nous avons créé, c'est un personnage, c'est un personnage papier. Et comme avant ce que j'ai dit ici dans la classe Blueprint, un personnage est un type d'étangs. Il s'agit donc d'un type de téléphone. On va créer un personnage dont nous avons déjà la bonne cible. Vous pouvez voir que c'est dit soi-même. Self signifie ce plan. Vous êtes déjà là, donc vous essayez d' ajouter du mouvement au plan dans lequel nous nous trouvons déjà, donc c'est exact. Et en ce qui concerne la direction dans laquelle nous voulons ajouter un mouvement, vous pouvez cliquer ici avec le bouton droit de la souris et dire Obtenir la rotation du contrôle. Nous essayons donc d'obtenir la rotation de notre manette. Et puis on peut dire aller de l'avant vecteur. Et maintenant, nous pouvons le relier ici à la direction mondiale. Nous essayons donc d'obtenir la direction vers l'avant de notre contrôleur. Maintenant, en ce qui concerne la valeur d'échelle, vous pouvez y connecter cette valeur d' axe. Et maintenant, vous avez le mouvement. Nous allons donc compiler et sauvegarder, et essayons de bouger. Donc, en cliquant sur Jouer maintenant, je vais à la personne D pour passer à droite et cliquer sur âge et passer à gauche. Vous pouvez donc voir que le mouvement s'agenouille maintenant. 26. Joueur qui saute: Ajoutons maintenant le saut pour les joueurs. Cliquez ici dans la base de joueurs. Et n'oubliez pas que nous avons besoin d'un événement. Revenons donc aux paramètres de modification et de projet à l'intérieur d'ici dans les entrées. Maintenant, comme le saut est un événement en un clic, nous allons l'ajouter ici dans le mappage des actions. N'oubliez pas que ce ne sont que des mouvements que nous ajoutons dans Access Mappings. Ici, cliquez sur le plus pour le mappage des actions. Ajoutons-le ici. Appelons ça saut. Et je vais y ajouter ma barre d'espace ici. Vous pouvez ajouter un autre bouton si vous le souhaitez. Je vais le fermer. Et maintenant, nous pouvons cliquer avec le bouton droit et dire sauter. Et ici, vous pouvez le voir ici dans l'Action Events disant sauts. Cliquez ici, et maintenant nous avons nos événements. Ensuite, vous avez déjà une fonction intégrée à l'intérieur d'Unreal Engine appelée sauts. Vous pouvez donc faire glisser depuis ce stylo d'exécution et écrire saut, et vous avez déjà cette fonction appelée sauts. Donc, en cliquant dessus. Maintenant, compilez des sauvegardes. Et vous pouvez cliquer sur Play. Et vous pouvez voir quand j'appuie sur l'espace, vous sautez. Évidemment, nous devons ajouter l'animation Slater, et nous devons également modifier les mouvements. Alors, combien nous sautons et quelle est la gravité, ce que c'est pour plus tard. Revenons maintenant et je veux vous montrer quelque chose pour l'optimisation. Je vais donc ajouter une chaîne d'impression ici. Il va donc dire bonjour chaque fois que je clique sur saut, si je clique sur Play now et que je clique sur l'espace, vous pouvez voir en haut à gauche, il est dit Bonjour chaque fois que je clique sur l'espace, maintenant je clique sur l'espace tout dans tout ce que je peux maintenant. Et vous pouvez vous voir. Je peux cliquer sur l'espace et sauter même si je suis en l'air. Et je ne veux pas le faire dans un souci d'optimisation. Je ne veux pas exécuter le code tout le temps. Je veux juste exécuter le code une fois. Et quand j'atterrisse au sol, je permets au joueur de sauter à nouveau. Parce que si j'autorise le joueur à appuyer sur l'espace tout le temps, vous pouvez voir que nous pouvons dépenser le code. Ce n'est pas vraiment optimisé, donc je veux simplement que le joueur n'exécute ce code que lorsque le joueur le peut, lorsque le joueur est souterrain. Et nous avons quelque chose qui s'appelle « tomber ». Par conséquent, si vous prenez ce composant de mouvement de personnage, vous pouvez cliquer dessus et le faire glisser dans ce graphique d'événements. Et vous pouvez voir qu' il s'agit également d'une variable. N'oubliez pas avant d'apprendre ces variables très élémentaires. Mais celle-ci est également une variable si vous la faites glisser ici. Nous pouvons donc maintenant faire quelque chose avec le composant personnage. On peut s'en sortir et on peut dire qu'il tombe. Et maintenant, nous pouvons vérifier s'il s' agit de vérifier si le joueur est dans les airs. Et rappelez-vous que le stylo rouge ici est booléen. Vous pouvez donc faire glisser depuis ce booléen et cliquer sur b, et cela peut faire de celui-ci une branche. Une branche est, vérifie simplement si cette valeur est vraie ou fausse et vous pouvez faire quelque chose avec elle. Donc maintenant, vous dites que vous prenez le mouvement du personnage, vous vérifiez si le joueur tombe et si c'est vrai, oui, le joueur est en train de tomber. Nous ne voulons pas sauter car le joueur est déjà dans l'air. Mais si le joueur ne tombe plus, alors il vérifie, le joueur tombera-t-il ? Il dit non, le joueur ne tombe pas. Ok, alors vous êtes autorisé à sauter parce que vous êtes au sol. Donc maintenant, vous pouvez voir si je compile et je clique sur Play, ajoutons une chaîne d'impression ici pour que vous puissiez voir que le joueur tombe et que nous ne pouvons pas vraiment sauter. En fait, c'est ici. C'est un meilleur exemple. Donc, il ne va dire bonjour que partout où nous avons sauté. Cliquons donc sur saut. Maintenant. Cliquez sur l'espace. Vous pouvez voir que je ne peux pas dépenser mon espace. Je ne peux exécuter le code que lorsque je suis au sol. C'est donc optimisé. Maintenant, ce code est optimisé et le lecteur ne peut pas exécuter le code en permanence. Cependant, pour me faciliter la lecture, je peux supprimer cela et je peux me déconnecter maintenant Alt enfoncé et en cliquant sur cette épingle d'exécution. Maintenant, au lieu de le faire ici, je veux que cela soit vrai parce que je peux mieux le lire si j'ai cette fonction définie sur true. Mais maintenant, nous devons faire un autre booléen ici. Il est donc maintenant dit : le personnage est en train de tomber ? Que voulons-nous dire si on l' accroche au vrai, est-ce que le personnage ne tombe pas ? Si c'est vrai, donc le personnage ne tombe pas, les personnages au sol. Nous pouvons sauter pour faire cela juste pour que cela devienne le contraire. On peut traîner ici et dire des cinglés. Et vous ne pouvez pas voir celui-ci non égal, nous devons utiliser celui-ci PAS booléen. Et ce que cela dit, c'est si le joueur est fou qui tombe, si c'est vrai, allez-y et vous pouvez sauter. Et je pense que c' est beaucoup plus facile à lire que de faire faux. Très bien, donc la dernière chose que je veux vous apprendre est de créer des fonctions. Donc avant que vous puissiez le voir, nous avons beaucoup de fonctions que nous pouvons ajouter qui sont prédéfinies, mais vous pouvez également créer vos propres fonctions. Et je veux faire de celle-ci une fonction et vous pouvez raccourcir celle-ci. Et nous le faisons généralement pour nettoyer le code. Vous pouvez cliquer avec le bouton droit de la souris ici. Et vous pouvez dire s'effondrer pour fonctionner. Donc, au lieu que vous alliez ici et que vous créiez la fonction, il la créera réellement pour vous. Donc, en sélectionnant tous ces trois, en cliquant avec le bouton droit de la souris et en disant réduire pour fonctionner. Maintenant, vous pouvez voir qu'il a fait une fonction et j'écris généralement F comme préfixe pour les fonctions. Appelons celui-là. Il ne saute pas. C'est donc ce que c'est. C'est vérifier si vous sautez. C'est simplement dire que vous pouvez maintenant double-cliquer. Au fait, je l' ai peut-être fait trop vite. Vous pouvez double-cliquer sur cette fonction créée. Et maintenant, vous pouvez voir la fonction ici. Ça commence. Je vais faire glisser ça ici pour qu'il soit plus organisé comme ça. C'est donc la fonction. Il commence ici, il se termine ici, et il donne une valeur de retour. Et la valeur renvoyée, si vous revenez au graphique d'événements, apparaîtra ici. Il s'agit de la valeur en cours de vérification ici. C'est donc un peu plus organisé. Vous masquez ce code à l'intérieur de cette fonction et seule cette fonction apparaîtra. Maintenant, rappelez-vous que vous devez les ajouter au stylo d'exécution, car dans Blueprint, vous ne pouvez pas vraiment faire cela parce que vous n' avez pas connecté, une fonction non connectée et cela va ne courez jamais si vous l' avez comme ça. Le meilleur moyen serait donc de le faire comme ici, puis de l'exécuter dans le code. Cependant, vous pouvez rendre cela un peu meilleur. Je sais que je vous ai donné beaucoup d' informations dans cette vidéo, mais je veux vous apprendre la meilleure méthode de codage. Ici, vous avez créé cette fonction, et elle fonctionne correctement dans le code. Vous pouvez donc voir si je clique sur Play, rien ne va vraiment avec mon code. Je peux sauter et ça marche parfaitement. Mais vous n'avez pas vraiment besoin de le connecter à des broches d'exécution ici. Parce que généralement dans ces fonctions bleues, vous pouvez voir que nous avons des fonctions vertes et que nous avons des fonctions bleues. Les fonctions vertes vous donnent simplement quelques informations que vous pouvez utiliser pour quelque chose. Par exemple, nous avons ici la rotation du contrôle. Nous avons eu le vecteur avant, donc la direction vers l'avant. Ensuite, nous recevons ces informations et nous les utilisons comme direction mondiale. Les fonctions vertes sont donc utilisées pour obtenir des informations. Cependant, les fonctions bleues sont utilisées pour définir des informations. Nous avons donc défini des fonctions et nous avons des fonctions. Par exemple, la fonction saut définit le saut. Et ici, nous ne vendons rien vraiment. Donc, si vous cliquez sur cette fonction que nous avons créée, elle ne vend rien, c'est juste si le joueur tombe ou non. Il reçoit donc de l'information. Il n'est donc pas logique d'avoir une lumière bleue ici et vous pouvez la changer. Nous pouvons donc cliquer sur cette fonction et vous pouvez cliquer sur celle-ci appelée pure. Donc, cliquer sur pur signifie que je reçois des informations de cette fonction. Je n'ai pas vraiment besoin de le régler. Je ne mets aucune information, je ne fais que la recevoir. Le joueur tombe ou non. En revenant au graphique ici, maintenant, vous pouvez le reconnecter comme ceci et vous pouvez voir qu'il est plus optimisé. Maintenant. Vous obtiendrez simplement si le joueur tombe ou est fou, et si le joueur ne tombe pas, si c'est vrai, vous pouvez sauter. 27. Animations de mouvements de joueurs: Nous sommes maintenant prêts à ajouter les animations de mouvement pour le personnage. J'espère que vous êtes complètement éveillé car j'ai beaucoup à vous enseigner dans cette leçon. Donc, si nous revenons à notre joueur et à l'intérieur de la base de joueurs. Nous voulons donc ajouter les animations ici, donc nous ajoutons le mouvement, mais nous voulons également ajouter l'animation. Mais maintenant, c'est un peu plus complexe, mais parce que maintenant nous avons un vrai mode multijoueur. Si je minimise cela avant de faire quoi que ce soit, je veux vous en apprendre davantage sur les énumérations, cliquons avec le bouton droit ici et créons un nouveau dossier appelé enums pour les énumérations. Vous pouvez entrer dans ce dossier, cliquer avec le bouton droit ici et les Blueprints, vous pouvez créer celui-ci appelé énumération. L'énumération n'est qu' une liste de n'importe quoi. Donc, si vous le faites et que je peux vous montrer, généralement je commence les énumérations, les préfixes en écrivant E, et appelons ça des états de mouvement. Nous sommes en train de créer une liste des états des mouvements. Une énumération n'est donc qu'une liste de n'importe quoi. Vous pouvez cliquer sur ce bouton ici. Vous pouvez voir chaque fois que vous cliquez dessus, vous ajoutez une liste ou ajoutez un élément à cette liste. Par conséquent, une énumération n'est qu'une liste de tout ce dont vous voulez faire une liste. Par exemple, l'épicerie. Vous pouvez écrire vos pommes, oranges ou concombres ou tout ce que vous voulez écrire. Vous pouvez écrire des voitures, par exemple, une liste de voitures. Vous pouvez les écrire ici et peut-être les modèles des voitures. Vous pouvez écrire une liste d'armes et une liste de n'importe quoi. Je vais faire la liste des objets. Mais pour ce bien, nous rédigeons ici une liste des états de course ou de mouvements. Le premier que je vais appeler inactif. Nous avons donc une animation inactive, puis nous avons une animation de droits d' exécution. Nous avons une animation de course à gauche, puis nous avons une animation de saut. Et nous avons également une animation automnale. Et en fait, nous n'avons pas vraiment d'émission baissée parce que nous n'avons fait que faire, revenons au personnage des actifs. Nous avons fait une animation inactive, une animation de course. Même si cela s'appelle Run, nous avons couru à droite et à gauche. Et puis nous avons l'animation de saut ici. Mais nous n'avons pas vraiment d'animation automnale. Mais dans Maple Story, l'animation complète est la même que celle du saut. Nous allons donc simplement utiliser ce saut en tant qu'animation complète. Cliquons donc sur Enregistrer tout. Maintenant que nous avons fait notre énumération, nous en avons fait la liste. Revenons maintenant à la base de joueurs. Vous pouvez maintenant ajouter l'énumération. Donc, si vous créez une variable et appelons cela des états de mouvement. Et vous pouvez modifier la variable ici. Et pour trouver votre variable personnalisée, vous pouvez l'appeler quel que soit nom, le fichier d'énumération. Ainsi, comme préfixe et vous pouvez écrire des mouvements, des dates, et vous pouvez voir, vous pouvez voir votre énumération ici. Ils sont généralement de cette couleur vert foncé. Ainsi, ce mouvement E indique qu'il s'agit de notre énumération, en cliquant dessus, et maintenant c'est une variable que vous pouvez compiler. Si vous voulez voir à quoi cela ressemble, vous pouvez toujours le consulter ici et cliquer sur, Obtenir ceci comme obtenir l'information. Vous pouvez regarder ici, cliquer sur l'ensemble et vous pouvez voir que vous pouvez le définir sur tous ces différents éléments de liste que vous avez définis ici dans la liste. Donc, si vous ajoutez une autre chose et que vous cliquez sur Enregistrer, vous pouvez voir ici cette nouvelle chose que je dois compiler ici, Compiler et Enregistrer. Maintenant, je peux cliquer dessus et vous pouvez voir le nouvel élément de liste qui a été ajouté. C'est ainsi que vous ajoutez des choses à gauche. Vous pouvez également le supprimer ici. Nous pouvons économiser, encore une fois, compiler et enregistrer. Et maintenant, vous pouvez voir que c'est la liste que nous avons. OK ? Donc, en gros, ce que nous voulons faire c' est prendre cette valeur d'axe. Laissez-moi l' imprimer à l'écran que je puisse vous montrer ce qui se passe. Alors, imprimons maintenant. Si vous faites glisser cette valeur d'axe et que vous êtes connecté à la chaîne d'impression. Il va maintenant imprimer cette valeur d' axe chaque fois que vous exécutez. Donc, si vous cliquez sur Play et que vous courez, vous pouvez voir que c'est un quand je me suis déplacé vers la droite et que c'est moins un quand je me déplace vers la gauche, rappelez-vous que c'est ce que nous avons écrit dans les paramètres du projet et dans le entrées. Un pour se déplacer à droite. Je veux juste me déplacer à gauche et quand nous sommes immobiles, c'est 0. OK ? Mais cette information que nous avons maintenant, nous sommes beaucoup plus intelligents maintenant. Donc quand c'est le cas, lorsque cela est égal à 0, vous êtes immobile, vous êtes au ralenti. Donc, en sortant cela et en écrivant le signe égal, ou vous pouvez écrire égal si vous le souhaitez. Vous pouvez demander à cet opérateur ici de dire égal. Donc, si ce nombre est égal à 0, et je peux faire glisser à nouveau ici et écrire b ou une branche. Si ce nombre est égal à 0, si c'est vrai, que voulons-nous faire ? Et en fin de compte, ce que nous voulons faire. Nous voulons que cet élément de liste soit inactif car nous savons maintenant que le joueur est ralenti parce que le joueur est immobile, la valeur de l'axe est égale à 0. Mais s'il n'est pas égal à 0, cela signifie que vous bougez. Oui, vous déménagez. Mais si je ne fais que copier, collez ce contrôle C contrôle V. Vous déplacez-vous vers la droite ou vous déplacez-vous vers la gauche ? Donc, nous devons également vérifier cela. Par exemple, vous pouvez faire glisser à partir de cette valeur d'axe et vous pouvez dire que le signe le plus grand comme celui-ci est-il plus grand ? Vous pouvez donc choisir celui-ci. C'est cette valeur d'axe, est-elle supérieure à 0 ? Et on peut traîner cette année, je serais pour la succursale. Et oups, il a zoomé. Je ne sais pas ce qui se passe comme ça. Donc, si cette valeur x est supérieure à 0, cela signifie que nous allons vers la droite. Nous allons donc relier celui-ci du faux. Ce que nous disons maintenant, c'est que cette valeur x est égale à 0. Si c'est le cas, il est inactif. Si ce n'est pas le cas, allez-y et vérifiez celui-ci, alors ici, ce que nous vérifions, c'est la valeur excédentaire supérieure à 0. S'il est supérieur à 0, vous vous déplacez vers la droite. Cependant, si vous bougez, s'il est inférieur à 0, alors vous vous déplacez vers la gauche, comme ceci parce que c'est moins un. Très bien, c'est donc le principe principal. Nous devons maintenant faire un peu plus de travail pour que cela fonctionne en mode multijoueur. Je vais déplacer ce saut, sauter la fonction IF ici, sauter la logique ici. J'ai donc plus d'espace ici. Donc, je veux en faire une fonction. Je vais donc descendre ici et je vais cliquer avec le bouton droit de la souris. Et vous pouvez également, vous avez vu ici si vous écrivez des événements, vous pouvez sélectionner un événement à ajouter, mais vous pouvez créer vos propres événements. Donc, si vous écrivez un costume, vous pouvez voir que vous pouvez ajouter un événement personnalisé et vous pouvez l'appeler comme vous le souhaitez. Je vais appeler cela un état de mouvements ensemble parce que c'est ce que nous essayons de faire. Définissez donc l'état du mouvement et nous avons maintenant cet événement. Bon, donc je veux en prendre un, alors je vais cliquer sur Control X pour le couper et le coller ici. Maintenant, sinon, ce que je veux que vous fassiez, c'est définir l'état de mes mouvements ici et l'événement. Et une chose cool que vous pouvez faire ici. Vous avez vu que vous pouviez ajouter des variables ici, mais vous pouvez également ajouter des variables aux fonctions. Vous pouvez voir toutes ces fonctions prédéfinies. Tous ces éléments sont en fait des variables. Vous pouvez donc cliquer sur ces événements personnalisés. Vous pouvez ajouter une nouvelle variable, mais vous pouvez également l' ajouter facilement en faisant glisser cette épingle et en la déposant au-dessus de votre fonction personnalisée. Vous pouvez voir qu'il crée automatiquement cette variable pour vous. Si vous vouliez l' ajouter manuellement, vous pouvez toujours cliquer sur le plus ici et vous pouvez lui donner un nom. Par exemple, nom. Vous pouvez voir qu'il change de nom ici et vous pouvez sélectionner à nouveau E. Mouvements restés et vous auriez pu le sélectionner comme ceci. Je vais juste supprimer celui-ci. Je ne faisais que te montrer. Donc les composés Économisez maintenant. Alors maintenant, ce que vous pouvez faire ici. Donc maintenant, au lieu de faire écrire cette énumération, vous pouvez le retirer et écrire le nom de l'événement que vous avez écrit ici. C'est ainsi que vous appelez un événement personnalisé. Définit les états de mouvement. Et vous pouvez voir la fonction appelée ici, définir l'état des mouvements. Maintenant, au lieu d'exécuter directement cette énumération, il va en fait exécuter cet événement qui définit cette variable sur ce que vous sélectionnez ici. Donc, les informations que vous choisissez ici sont parcourues ici. Et il définit votre variable sur toutes les informations qu'elle parcourt ici. Très bien, c'est très, très cool, mais nous devons faire un peu plus parce que nous sommes en mode multijoueur. ne s'agit pas d'un jeu solo. Cela aurait été parfaitement fonctionné en solo. Mais en mode multijoueur, nous ne définissons généralement pas de variables sur les clients, donc nous avons un client et le serveur, et généralement le serveur, qui est celui qui fait le jeu. Donc, si je joue à Counterstrike, je crée un serveur. Je suis le serveur. Imd, le vrai jeu. J'ai donc l' autorité du jeu. Et vous entendez parfois qu' il y a des tricheurs ou des hex, c'est ce qu'on appelle une attaque côté client. Donc, ce que nous faisons habituellement est de définir des variables via le serveur, car le serveur contrôle le jeu, vous devez toujours vous rappeler que dans Unreal Engine, serveur a le contrôle du jeu et quoi que vous fassiez, Quelle que soit la logique que vous écrivez, vous devez l'exécuter via le serveur. Les clients sont tous les calques connectés. Vous allez donc créer le serveur, vous êtes le serveur et tous les joueurs qui se connectent à votre serveur. On les appelle les clients. Et si vous n'exécutez pas tout le code via le serveur, donc si vous ne vérifiez pas ce que vous faites, par exemple, sauter ou faire ce réglage une variable. Si vous ne le vérifiez pas en premier, avec le serveur, le client a plus de facilité à tricher dans le jeu. Donc, si vous faites simplement passer cela par le client et que vous définissez cette variable, le client a un moyen facile de tricher à l'intérieur de votre jeu. Souvenez-vous donc toujours que le serveur a l'autorité du jeu, que le serveur est le vrai jeu. Le serveur vérifie si vous avez fermé l'arme, puis le serveur dit oui, ce client a effectivement tiré sur l'arme. Ensuite, allez de l'avant et infligez des dégâts à ce personnage. Le serveur doit donc toujours vérifier ces informations pour s'assurer que le client ne fait rien d'illégal. Un autre exemple, juste avant de continuer, par exemple, le client, donc la couche connectée. Tire un RPG et RPG le plus éloigné qui doit vérifier via le serveur. Le serveur vérifie. Ce joueur a-t-il réellement un RPG dans la main et tire-t-il l'arme ? Ensuite, le serveur vérifie et dit, oui, ce client a un RPG en main et l'a fermé. Ensuite, il renverra ces informations au client qui a tourné le RPG. Et cela indiquera à ce client que vous êtes autorisé à tirer sur cette arme parce que oui, vous avez le RPG en main. Moteur de règles. Vous disposez de cette autorité lorsque le serveur possède l'autorité et ce que fait le client doit être vérifié via le serveur. On peut juste le mettre ici. C'est-à-dire que vous pouvez voir ici c'est le client et vous pouvez également le vérifier ici si vous cliquez avec le bouton droit de la souris et écrivez une chaîne d'impression. Et rappelez-vous que la chaîne d'impression est si puissante même si elle n'imprime qu'une chaîne. Compilons et économisons. Et vous pouvez voir ce que je dis. Maintenant, au lieu de cliquer sur Jouer maintenant, cliquons sur ces trois boutons et passons à un certain nombre de joueurs. Nous sommes maintenant à l'intérieur du mode multijoueur. Écrivons deux. Ici, en mode net, cliquez sur celui-ci appelé jouer en tant que serveur d'écoute. Cliquons à nouveau sur ces boutons, et je vais cliquer sur cette nouvelle fenêtre d'éditeur. C'est donc ce que je vais jouer maintenant. Je ne vais plus jouer dans la fenêtre d'affichage sélectionnée. Cliquez donc sur la nouvelle fenêtre de l'éditeur. Maintenant, nous pouvons voir que nous avons le serveur. Vous pouvez le voir en haut ici. Nous avons le serveur. J'ai créé ce jeu. Et vous pouvez voir le client connecté à mon serveur que j'ai créé. Si je clique ici, vous pouvez voir que je peux me déplacer en tant que serveur, et je peux aussi me déplacer en tant que client ici. Nous sommes donc maintenant dans le mode multijoueur. Et comme vous pouvez le voir ici, le client bonjour et le serveur imprime également bonjour. Cela signifie cette information. Cela signifie que cet événement est en cours d'exécution sur le serveur et le client. Ils disent tous les deux bonjour. Et lorsque je définis des variables, je ne veux les définir que sur le serveur. Je veux m'assurer que le client ne triche pas. Je ne veux donc jamais définir de variables sur le client. Et supprimons cela. Cliquez ici avec le bouton droit de la souris et disons un autre événement personnalisé. Ajoutons un événement personnalisé. Appelons ça S RV par serveur. Je les appelle généralement R V et appelons ça le même nom que celui-ci ici. Selon le mouvement. Juste comme ça. Maintenant, pour le faire fonctionner uniquement sur le serveur, vous avez celui-ci en multijoueur appelé réplication. Cliquez donc ici et cliquez sur Exécuter sur les serveurs. Nous voulons donc simplement l'exécuter sur le serveur et cliquer sur fiable. Je vais déconnecter cela en maintenant Alt, en les déconnectant et en connectant le plateau ici avec ça. Et maintenant, ce que nous pouvons faire ici, c'est organiser ces événements. Donc ici, courir est notre v comme ça, et connecter ces entrées comme ça. Bon, donc maintenant, ça se passe correctement. Ce que nous faisons maintenant c'est que nous vérifions si la valeur x est 0, donc le joueur est au ralenti si c'est vrai. Et cette information sur les idoles. Nous organisons maintenant cet événement appelé « set movement state », qui est celui-ci. Nous mettons donc cette information au ralenti dans le sud. Ces informations sont en cours d' impression sur le serveur. Et le serveur définit cette variable sur ce que vous avez écrit ici ou ce que vous avez choisi ici. C'est donc la bonne méthode pour le faire. Alors maintenant, ce que nous devons faire ici, alors supprimons ceux-ci. Et encore une fois, vous pouvez simplement écrire le nom de cet événement ici pour appeler les ensembles d'événements. Les mouvements, les états comme ça et sélectionnez celui-ci, pas celui-ci, donc celui-ci ici. Et copions-le, collons-le ici. Par conséquent, si la valeur de l'axe est supérieure à 0, cela signifie que si c'est vrai, cela signifie que nous sommes à droite. C'est faux. Nous courons vers la gauche, comme ça. Maintenant, c'est plus correct. Ok, donc maintenant, nous avons défini la variable et maintenant ? Parce que vous pouvez voir si je compile enregistre et enregistre tout, si je peux cliquer sur Jouer maintenant, rien ne se passe vraiment. Et c'est bon. Parce que ce que vous faites moment, c'est que vous définissez cette variable, mais vous n'avez pas vraiment défini le superviseur. Si je retourne ici, vous n'avez pas vraiment utilisé ce flip book. N'oubliez pas que vous définissez simplement cette variable sur toutes les informations que vous définissez ici. Donc, pour les énumérations, nous avons quelque chose appelé «  switch on enumeration ». Donc, juste en tant que test, si je fais simplement glisser cette énumération, et si je la fais glisser ici et que je dis changer, vous pouvez voir un interrupteur sur l'énumération. Ce que c'est, c'est qu'il vous donne juste des épingles d' exécution en fonction de ce que vous avez écrit ici sur la liste. Et vous pouvez faire différentes actions. Et vous pouvez voir ici que lorsque nous sommes au ralenti, nous pouvons exécuter ce flip book. Quand nous le sommes. Je retourne ici. Si nous courons à droite, je peux lancer ce flip book et ainsi de suite. Nous pouvons donc effectuer différentes actions en fonction de ce que nous sommes, ce que nous avons défini à cette variable. Bon, donc à l'intérieur du multiplicateur, vous pouvez cliquer sur une variable. Et ici en mode multijoueur, comme avant, où vous avez une réplication sur l'événement, disant que l' exécution sur les serveurs fonctionne spécifiquement sur le client. Pour les variables, vous pouvez également les répliquer. Ainsi, comme vous pouvez l'imaginer, si vous définissez une variable sur le serveur ici, le client doit connaître ces informations d'une manière ou d'une autre. Et c'est ce que vous utilisez cette fourche de réplication. Parce que si vous définissez cette variable sur le serveur, comment le client le noterait-il ? Parce que le client n'a aucune chance de savoir ce que vous avez dit, car vous êtes le serveur. Vous avez défini les informations sur le serveur, mais vous devez renvoyer ces informations au client afin que le client sache à quoi le serveur l' a configurée. Et c'est là que la réplication des variables entre en jeu. Donc, si je clique dessus et que je clique sur répliqué, vous pouvez voir ces deux sphères apparaître. Cela signifie que je suis en train de définir la variable sur le serveur et que je renvoie ces informations au client afin que le client sache quelle est la valeur de cette variable. C'est ce que fait la réplication. Maintenant un peu complexe. La dernière chose dont je veux vous apprendre avant de vous faire sauter la cervelle, c'est celle qui s'appelle Rep. Et cela crée une fonction pour vous. Donc, si vous cliquez sur Retinas die, vous pouvez voir ici qu'il crée automatiquement cette fonction de déballage. Et ce que cela fait, c' est qu'il va exécuter fonction chaque fois que vous définissez cette variable. Ainsi, chaque fois que vous définissez cette variable, elle exécutera cette fonction. Je vais donc double-cliquer sur cette fonction. Et je vais faire glisser ce mouvement resté ici en tenant le contrôle, tomber ici, et maintenant en le faisant glisser ici, disant activer l'énumération. Juste comme ça. Chaque fois que je vais exécuter ce code, exécutez-le ici via le serveur définissant cette variable. Chaque fois que cette valeur change, elle exécute cette fonction. Donc, ce que je veux faire avec cette fonction c'est changer le flip book. Parce que rappelez-vous que dans le sprite n'est pas là nous sommes à l'intérieur de la base des joueurs. Donc, si je vais voir le joueur Tsarina, rappelez-vous dans les sprites, nous avons celui-ci appelé flip books source. C'est donc un flip book que nous sommes en train de changer. Ce que nous avons ici, c'est quelque chose qui s'appelle Sets Flip Book. Et maintenant, il va vous dire que c'est pour le sprite ici. Et vous allez cliquer sur OK, Oui, c'est pour le sprite et cela créera automatiquement pour vous. Vous auriez aussi pu simplement cliquer dessus et le faire glisser d'ici et dire flip book, c'est la même chose. Nous allons donc mettre ce flip book à l'idole ici. Lorsque nous sommes au ralenti, lorsque nous courons vers la droite, je vais copier le collage, connectant ceci à la cible, comme ceci. Lorsque nous courons vers la droite, nous exécutons l' animation de course ou le flip book. Je vais copier ça quelques fois. La course à gauche est en fait également l'animation de course. Et le saut est l' animation de saut comme celle-ci, saut, le lipide comme celui-ci et la chute. Nous n'avons pas vraiment de nouvelle animation, donc je vais connecter ma chute ici et utiliser la même chose ici, le saut flip book. Ok, n'oubliez pas de prendre cela lumineux, vous pouvez soit faire comme ça et vous connecter à plusieurs endroits, soit peut-être il est parfois plus propre d'en utiliser plusieurs comme celui-ci. Vous pouvez également le faire. Faisons ça pour celui-là. Je vais copier un peu ça. Et relier le dernier ici. Je vais faire ce nettoyant plus tard, mais travaillons avec ça maintenant. Enregistrement composé, en cliquant sur Lecture. Maintenant, vous pouvez voir ici, si je cours à droite, je suis en train de courir. Si je cours vers la gauche, voyez, je cours, mais je ne suis pas la bonne direction quand je saute. Sauter correctement. Et c'est parce que rappelez-vous que nous n'avons pas vraiment fait l'animation de saut et que nous le ferons juste après cette leçon. Mais concentrons-nous sur la course à pied. Donc courir fonctionne, mais je suis dans la mauvaise direction quand je cours vers la gauche. Et c'est parce qu'il s'agit d'un sprite et que vous devez faire pivoter votre image pour qu'elle fonctionne correctement. Je veux juste faire pivoter ce sprite quand je cours. Donc, quand je cours à gauche ici, ce n'est pas dans la bonne direction. Donc, ce que vous pouvez faire, c'est prendre ce sprite ici et vous pouvez dire rotation. N'oubliez pas que lorsque vous ne savez pas ce que vous faites, recherchez simplement la rotation et vous pouvez essayer les parcourir et de voir ce que vous voulez faire. Et celui que nous utilisons est la rotation relative. Nous voulons le faire pivoter. Vous pouvez mettre un peu de réduction et cliquer sur n'importe quoi ici. Par exemple, ce joueur démarre et clique sur E pour l'outil de rotation. Et vous pouvez voir que vous devez faire pivoter le z. Donc, si vous voulez que quelque chose tourne de l'autre côté, vous devez tourner le Z de 180. Je vais donc cliquer sur Control Z ici. Et le z, vous devez faire pivoter le sprite de 180. Et vous pouvez appeler connecté ici. Il va donc le faire pivoter avant de régler le flip book. Et rappelez-vous, pour la course, à droite, il faut le faire pivoter. Donc, copier le collage de ce code devient désordonné, va se déplacer de cette façon. Nous allons donc le faire pivoter en arrière. Donc, le régler sur 000 et la connexion fonctionne correctement, comme ceci. Maintenant, cela devrait fonctionner correctement si je compile et que j'ai oublié d'ajouter une cible ici. Alors copions ceci, collez-le ici comme ça. Et vous pouvez voir quand vous avez une erreur, elle écrit la flèche ici et indique que vous avez besoin d'une cible. Ceux-ci compilent et économisent. Juste comme ça. Et maintenant, jouons et voyons si je me déplace vers la droite, je vais vers la gauche. Parce que maintenant, notre animation fonctionne parfaitement. Et maintenant, nous manquons l'animation de saut, et nous allons le faire dans la prochaine leçon. 28. Animations de sauts de joueurs: Faisons maintenant l'animation de saut. Revenons donc à la base de joueurs. Et ici, dans le graphique des événements. Ici, nous avons fait ce mouvement avec l'OIT, avec la course à droite et ce qu'ils courent à gauche. Ce que nous n'avons pas vraiment réglé le saut. Et en sautant plus loin si nous glissons à nouveau celui appelé état des mouvements définis, alors en faisant glisser celui-ci ici pour cet état de mouvement, nous pouvons le faire sortir deux fois. Nous avons donc à la fois le saut ici et aussi la chute. Nous devons vérifier si le joueur saute ou s' il tombe. C'est la même chose. C'est la même animation dans Maple Story. Donc, ça n'a vraiment pas d'importance. Mais si vous créez votre propre jeu et que vous avez deux animations différentes pour le saut et le pli. Ce serait vraiment agréable à savoir. Encore une fois, comme avant ici, dans la logique de saut, vous vérifiez si le joueur tombe ou non. Nous devons donc faire la même chose ici. Si nous revenons au graphique des événements, nous devons faire la même chose ici. Donc avant que nous ne soyons d'idols, je vais tenir Alt et cliquer ici pour déconnecter ça. Je vais aller un peu plus loin , car maintenant on peut ajouter le saut. Je vais donc prendre le mouvement du personnage et vérifier si le joueur tombe. Donc, si je peux trouver que ça tombe ici, on va chercher celui-ci. Et créons une branche comme celle-ci. Maintenant, nous vérifions si le joueur tombe et si le joueur tombe, nous sautons. Nous sommes donc dans l'air. Et si le joueur ne tombe pas, ce qui signifie que le joueur est souterrain, alors nous ne sommes pas dans le saut. Nous allons juste exécuter ce code en cours d'exécution comme avant. Mais ici, nous sautons si nous sommes dans les airs. Maintenant, nous devons vérifier. Est-ce que le joueur saute ou c'est le joueur qui tombe ? Lequel s'agit-il ? Nous pouvons le faire si nous obtenons la vitesse de ces acteurs. Je vais donc faire un clic droit et obtenir la vitesse, comme ici. Et nous obtenons la vitesse. Et maintenant, c'est un vecteur. Vous pouvez maintenant briser ce vecteur. Mais parce que ce qui m' intéresse en ce moment, si nous avons le joueur ici, je suis intéressé à savoir si le joueur saute ou tombe. Et encore une fois, il s'agit du z, la flèche bleue ici est le z. Dans l'axe z. Je veux voir, est-ce que ça va dans la direction plus, ce qui signifie que le joueur va haut ou que l' avion va vers le bas, ce qui signifie que le z est en fait dans la valeur négative. Je vais donc finir par la base de joueurs, cette vélocité. Je peux prendre ce vecteur et je peux dire « break ». Vous pouvez diviser ce vecteur sur les x, y et z. Souvenez-vous d'un vecteur, si je peux vous montrer ici, lorsque nous avons créé une variable vectorielle, un vecteur se compose de trois nombres, tout comme l'emplacement ici, trois chiffres. Donc, si je reviens en arrière, laissez-moi simplement supprimer celle-ci à nouveau. Nous sommes donc en train de diviser ce vecteur en x, y et z parce que nous ne sommes intéressés que par la valeur z. Je veux vérifier si cela va vers le haut, qui signifie que c'est dans le plus ou vers le bas, ce qui signifie que c'est le moins. Je vais donc prendre ça et dire plus grand. Est-ce donc supérieur à 0 ? Et de recréer une branche comme celle-ci. Donc, s'il est supérieur à 0, cela signifie que le joueur saute parce que vous montez s'il n'est pas supérieur à 0, donc c'est dans le moins que vous tombez. Et si le joueur ne tombe pas, vous allez simplement exécuter ce code normal. Ok, permettez-moi de me rapprocher un peu maintenant. Maintenant, nous avons cette logique de saut et nous pouvons toujours, généralement consacrer une leçon entière un nettoyage de tout cela, alors ne vous inquiétez pas si cela semble un peu désordonné. Mais ici, nous pouvons simplement compiler et économiser. Et maintenant, je veux vous expliquer cela. Cliquons simplement sur Play et voyons ce qui se passe. Donc si je clique sur jouer et que j'ai sauté, vous pouvez voir que je saute. Il fonctionne. Génial. Ok, donc ce qui se passe, c'est que vous vérifiez ici et que vous vous déplacez à droite, à gauche. Avant d'exécuter cette animation de mouvement, vous vérifiez si le joueur tombe. Et si le joueur tombe, cela signifie que vous sautez. Ok, c'est très bien. Donc oui, vous sautez. C'est vrai. Vous êtes en train de tomber. Quoi alors ? Ici, vous prenez la vélocité de ce personnage et vous brisez ce vecteur car nous ne sommes intéressés que par la valeur z. Nous vérifions si la valeur z est supérieure à 0. Si c'est le cas, vous sautez. Si la vitesse est inférieure à 0, ce qui signifie que vous descendez, cela signifie que vous tombez. Alors, que se passe-t-il ici ? Vous organisez cet événement et vous l'avez configuré pour sauter ces informations, vous êtes assis ici, nous allons passer par cet événement car c'est finalement l' événement que vous organisez. Définir les mouvements États dont vous vous souvenez que vous appelez cet événement. Il est donc en train de traverser cet événement. C'est mettre cette information qui saute sur laquelle vous l' avez définie ici, en parcourant le code. Il passe par le serveur. Le serveur est en train de définir cette variable. Et n'oubliez pas que nous avons défini cette variable sur une notification de représentant. Et encore une fois, si vous ne vous souvenez pas d'une notification, car à l'heure actuelle, vous êtes le serveur et le serveur définit la variable. Comment le client sait-il ce qu' est cette variable si vous ne faites rien, car n'oubliez pas vous êtes sur le serveur et que le client ne peut pas vraiment voir à quoi vous la paramétrez à moins que vous reproduisent cette inflammation. Vous répliquez donc les informations sur le client afin que le client puisse voir la valeur de cette variable définie. Donc, quelle que soit la notification, elle notifie à tous les clients ce que vous avez configuré et il le fait via cette fonction Ribner OnReceive. Ainsi, un représentant notifie chaque fois que vous définissez une variable sur rip notification, il crée cette fonction de déballage. Et à l'intérieur d'ici, quel que soit le code que vous codez ici, tous les clients verront ce changement. C'est pourquoi nous mettons le flip book ici. Parce que nous voulons que tous les clients voient que je suis dans mon flip book inactif. Je veux que tous les clients voient que je suis dans mon carnet de saut et ainsi de suite. Vous envoyez donc toutes ces informations au client. Maintenant, l'information a été définie ici, c'est sauter, passer par le serveur ici, définir la variable, et elle va entrer dans la fonction de déballage car chaque fois que vous modifiez une variable de notification de représentant, il va exécuter la fonction de déballage. Et comme vous définissez cette valeur maintenant pour sauter, elle ne fera que passer par cette épingle d'exécution de saut. Il va ignorer tout cela parce qu'il ne voit que maintenant que vous l'avez configuré pour sauter. Il va donc exécuter cette épingle d'exécution, et il va régler le flip book de ce brillant pour sauter. Par conséquent, lorsque vous cliquez sur l'espace et sautez, il réglera votre flip book pour qu'il saute. Et pour le tester. Vous pouvez le voir, ça marche. Je le vois aussi sur le client. Pour s'assurer que cela fonctionne. Je dois aussi courir en tant que client et sauter en tant que client pour voir si je suis le client et autorisé à sauter. Parce que rappelez-vous que le serveur vérifie ce que vous faites en tant que client. Maintenant, vous pouvez voir que je peux sauter en tant que client. Et aussi si je baisse un peu ça, vous pouvez voir que le serveur peut faire tout cela. Bien sûr, le serveur, encore une fois, le serveur a le pouvoir de faire n'importe quoi dans le jeu, car le serveur est le vrai jeu, le serveur vérifie tous les clients pour ce qu'ils font et le serveur est capable de tout faire. C'est donc plutôt comme le client. Nous devons également vérifier auprès du client. Si le client est en mesure de faire tout cela et que le client est en mesure de le faire également. Il fonctionne donc parfaitement. 29. Entrée variable personnalisée: Maintenant, je veux vous montrer quelques entrées de variables personnalisées. Donc, si nous revenons à la base des joueurs, et ici à l'intérieur de votre fonction de mouvement non lu, vous pouvez voir ici avant de définir maintenant le flip book inactif, nous réglons le flip book run, nous réglons le flip book, etc. Mais que se passe-t-il si nous allions ici pour regarder, maintenant ? Si nous apparaissons, regardez dans le serveur. Nous pouvons donc maintenant voir que nous répondons en tant que Tsarina. C'est-à-dire que c'est génial. Mais si nous avons engendré Luke ? Luke n'a pas vraiment ce flip book. Regardez. Cette fille n'est-elle pas retournée ? Nous devons faire un autre flip book pour Luke. Et comment utiliser flip book de Luke au lieu de celui de Serena ? Et c'est pourquoi nous n'avons presque jamais de code dur dans les jeux. Habituellement, je déteste le codage dur comme ça. C'est ce qu'on appelle le codage dur ou simplement sélectionner une variable. Au lieu de cela, cliquez ici avec le bouton droit et promouvez cela en variable. Et maintenant, vous pouvez appeler cela une variable, quelque chose par exemple, je peux l'appeler inactif, retourner, pas si bon espace comme ça. Je vais faire un flip book. Maintenant, j'ai fait de cela une variable. Maintenant, si je compile, et que vous pouvez voir si je clique sur cette variable, la valeur par défaut en ce moment est ce flip book, car j'ai sélectionné ici, nous avons sélectionné le flip book run. Maintenant, si je clique avec le bouton droit de la souris et que je promeut une variable, cela va être défini par défaut. Nous pouvons maintenant supprimer cela par défaut pour celui-ci. Maintenant, je clique simplement sur Effacer. Donc, en cliquant sur l'inactif, retournez une variable que vous venez de créer. Vous pouvez également le voir en faire un papier de type flip book. Vous pouvez cliquer ici, je clique sur Effacer. Maintenant, la valeur par défaut n' est plus rien. D'accord ? Alors, à partir de là, comment savoir quel flip-book courir pour Serena et comment savoir ce qu'il faut faire pour Luke ? Maintenant, puisque vous en avez fait une variable. Et rappelez-vous que nous sommes à l'intérieur de la basse des joueurs. Player Bass est le parent de la boucle for et de Serena. Voici donc les parents. Chaque variable que vous créez à l'intérieur du parent apparaîtra également dans les enfants. Donc, si je clique d'abord sur Tsarina, et si je vais aux valeurs par défaut de classe ici à droite, vous pouvez voir que j'ai à la fois l'état de mouvement et le flip book inactif car dans la base des joueurs, nous avons à la fois le mouvements de variables, état et flip book inactif. Ici, pour Serena, par exemple, je peux choisir l'animation inactive pour le flip book inactif. Mais si je retourne à Luke maintenant, et que j'ai ouvert l'éditeur de Blueprint complet pour Luke. Si je vais aux valeurs par défaut de classe, je peux choisir un autre flip book inactif. En ce moment je ne le fais pas vraiment, nous n'avons pas encore importé ça ressemble à des animations. Mais je peux sélectionner une animation inactive personnalisée. Et ici, je pourrais choisir le flip book inactif de Luke si je l'ai fait. Donc, au lieu de coder les variables de codage dur ici, je le transforme généralement en variable. Et vous pouvez désormais définir ces animations en permanence selon si vous en avez, disons que vous avez dix caractères maintenant, nous pouvons cliquer sur les dix caractères et les définir comme un flip book personnalisé ici pour les inactifs, vous pouvez revenir en arrière et cliquer avec le bouton droit ici et promouvoir cette variable pour le saut. Ensuite, vous pouvez définir le carnet de saut pour chacun des personnages. Nous pouvons donc voir si je clique avec le bouton droit de la souris sur tous ces éléments, promeut une variable. Et si je clique avec le bouton droit de la souris ici, si je les promeut toutes en une variable, vous pouvez voir que j'obtiens beaucoup de variables et vous pouvez économiser de l'espace à partir de toutes ces variables en utilisant une structure. C'est ce dont nous allons parler dans la prochaine leçon, nous allons parler de structures. Je vais donc les supprimer à nouveau ici. Si je les supprime simplement, je ne veux pas créer trop de variables sur ces animations. On appelle cela que vous pouvez créer une variable à partir de celles-ci, mais vous pouvez en fait utiliser quelque chose appelé une structure qui est plus efficace. Et je vais vous montrer comment en faire un dans la prochaine leçon. 30. Structures: Mega structure. Cliquez maintenant avec le bouton droit de la souris et créons un nouveau dossier. Je vais créer un dossier appelé Structs. Il s'agit des structures et double-cliquez dessus, et au lieu d'ici, vous pouvez cliquer avec le bouton droit de la souris à l'intérieur des Blueprints. Vous pouvez faire de celle-ci une structure. En créant cela, je vais vous montrer ce que c'est. Commençons par le STS, le préfixe. Et pour celle-ci, cette structure va contenir toutes les variables des joueurs. Je vais appeler ça des infos du joueur. Donc, toutes les informations sur ce joueur. Désormais, à l'intérieur de la structure, vous pouvez ajouter autant de variables que vous le souhaitez. Par exemple, le premier, appelons-le l'animation inactive. Sans espace. En fait, je vais juste appeler ça comme ça. Je vais cliquer sur une nouvelle variable et je vais créer une pour l'animation de course. Et travaillons avec ça pour l'instant. Voici donc le bon. Vous pouvez modifier le type d'animation. Et pour les animations, n'oubliez pas que nous travaillons avec 2D, c'est donc des flip books en papier. Et si je peux le trouver ici, si vous écrivez simplement du papier, ce flip book et sélectionnez la référence de l'objet. La même chose avec ce flip book en papier. Maintenant, lorsque vous créez une nouvelle variable, elle la réglera automatiquement pour paver un flip book car c' est ce que vous avez sélectionné précédemment, l'animation de saut. Ajoutons également l' animation automnale. Bon, donc nous avons ces animations maintenant. Donc avant de cliquer avec le bouton droit de la souris et de les promouvoir en une variable. Et vous voyez ici, nous avions beaucoup de variables ici. Vous pouvez économiser de l'espace si vous placez toutes ces variables à l'intérieur d'une structure. Maintenant, la structure que nous pouvons utiliser s'appelle info joueur. Par conséquent, plus tard, nous pourrons l'utiliser à quelque chose comme le nom du joueur. Si vous avez une vignette pour le lecteur, nous pouvons placer l'image ici. Si vous avez des effets sonores sautants, nous pouvons également créer une variable pour les effets sonores. Toutes les informations du joueur se trouvent donc à l'intérieur de cette structure. Maintenant, pour utiliser une structure, vous pouvez revenir à la base de joueurs. Et à l'intérieur d'ici, vous pouvez créer une nouvelle variable et vous pouvez l'appeler, appelons-le info du joueur. Maintenant, changeons ce type pour ce que vous appelez, il n' y a pas d'informations sur le joueur. Il ne s'agit donc pas d'informations sur les joueurs et vous pouvez le voir ici. C'est la structure. Si vous compiler et enregistrer, vous pouvez maintenant faire glisser cette structure ici, cliquez sur Obtenir des informations. Et vous pouvez faire glisser depuis cette structure. Et ce qui généralement fait, c'est de cliquer sur la structure de rupture. En cassant cette structure, vous pouvez voir toutes les variables que vous avez ajoutées à la structure. Et comme une chose très, très cool, maintenant que vous avez ajouté cette structure, rappelez-vous quand vous ajoutez des variables, permettez-moi maintenant de supprimer ce flip book pour l'instant, le flip book inactif que nous avons créé plus tôt Ici, je vais le supprimer. Maintenant, nous n'avons que cela. Donc maintenant ce que vous pouvez faire, très cool, c'est que vous pouvez maintenant les brancher au ralenti. Celui-ci était donc l'idole ici, et c'est l'animation de la course. Je vais donc brancher la course ici, la course ici. Voici l'animation de saut ici. Et l'animation d'automne est la même que le saut, mais on peut simplement la brancher ici. OK ? Maintenant, je peux voir que toutes ces variables sont dans une structure et cela semble beaucoup mieux maintenant. Et tout comme ce que je vous ai dit auparavant, vous pouvez, lorsque vous ajoutez une variable à la classe parente, la classe enfant en hérite également. Donc, si vous allez sur Serena maintenant et que vous pouvez cliquer sur les valeurs par défaut de classe, vous pouvez voir cette infrastructure de lecteur. Et si vous cliquez dessus, vous pouvez voir toutes ces variables et vous pouvez les définir n'importe quel flip book que vous souhaitez ajouter. Ainsi, pour Luke, nous pouvons également faire de même chaque fois que nous ajoutons des boucles, des animations, nous pouvons également ajouter des flip books de Luke ici. Pour que cela fonctionne, revenons à Serena et vous pouvez cliquer sur inactif ici pour une animation inactive. Pour toute l'animation d'exécution, vous pouvez sélectionner Exécuter, sauter, vous pouvez sélectionner Java. Et pour l'automne, c'est exactement le même que ce saut comme celui-ci. Compilez et économisez, enregistrez tout. Essayons ça. Cliquons sur Play. Et maintenant, lorsque nous courons, vous pouvez voir toutes les animations fonctionnent et nous utilisons maintenant cette rupture. 31. Finaliser le mouvement de personnage: Enfin, finalisons le mouvement pour le joueur et passons à autre chose finalisons le mouvement pour le . À partir de là, revenons au joueur, à la base de joueurs. Et ce que je veux faire, c'est simplement modifier le mouvement des personnages. Donc, en cliquant sur les mouvements des personnages, définissons l'échelle, échelle de gravité sur une. ce moment, quand j'ai sauté, je pense que mes personnages volent un peu trop haut. C'est donc comme si la gravité n'était pas assez élevée. Je vais donc augmenter l'échelle de gravité ici dans la composante du mouvement à 1,9. N'oubliez pas que dans l' espace pleural, lorsque vous le changez, cela s'appliquera également à Serena et à Luke car ils sont enfants de la base des joueurs. Ici, à l'échelle de gris, 1,9 et S pour la vitesse de déplacement de Maple Story, je l'ai testé. Je jouais au jeu et je pense à environ 155 à la vitesse de marche. Et vous pouvez voir si je clique sur Play, maintenant nous travaillons beaucoup plus lentement. Et c'est plutôt comme Maple Story. C'est la vitesse que vous allez courir avec elle. Donc, si je l'agrandis, vous pouvez le voir ici. C'est donc plus comme Maple Story, le saut, mais je pense que nous devrions sauter un peu plus haut. Je vais donc revenir aux mouvements des personnages de base des joueurs. Et ici, dans le saut Z Velocity, je vais l'envoyer, le régler à 500 à la place. Bon, alors compilons et économisons. Et je pense que c'est tout pour le mouvement. Donc, si je clique sur Play et vois que c'est le mouvement et qu'il peut sauter. Donc, en ce moment, nous sommes également bloqués par le personnage. Nous devons supprimer cela pour que vous puissiez voir que c'est en train de dégager notre personnage, poussé, notre personnage bec. Mais revenons à la base des joueurs et cliquons sur les composants de la capsule. Il s'agit donc de la collision. Et nous allons faire défiler vers le bas et vous pouvez voir celle-ci appelée la collision. Cliquons sur ce préréglage de collision pour voir ce qui se passe, et c'est la collision. Maintenant, cliquons ici et cliquons sur le costume car nous voulons le modifier. Maintenant, nous pouvons voir les pons. C'est ce que c'est. C'est un pion. Les étangs se bloquent mutuellement. Et ce n'est pas ce que nous voulons. Nous voulons que les points s' ignorent les uns les autres pour l'instant, ignorons les uns les autres. Compilons et voyons si c'est ce travail. Cliquez donc sur Play and running around. Je vois que je ne peux pas me bloquer maintenant. Donc, si je prends ce client, c'est corrigé maintenant, d'accord ? Les étangs ne peuvent donc plus se bloquer. C'est donc ce que nous voulons. Et vous pouvez voir que tout fonctionne bien. Le saut, je pense que je saute assez haut. Mais encore une fois, c'est votre jeu. Si vous voulez courir plus vite, si vous le souhaitez, la caméra doit être plus proche. N'oubliez pas que vous pourriez modifier la caméra si vous alliez à Tsarina et que nous l'avons mal ajoutée. Je vois que j'ai ajouté la caméra à l'intérieur de Tsarina, mais nous devons ajouter la base de joueurs car Luke a également besoin de la caméra. Il s'agit donc d'une solution rapide. Permettez-moi de supprimer ce bras à ressort. Supprimez la caméra. Laissez-moi plutôt aller à la base de joueurs. Cliquez sur la capsule, ajoutez le bras à ressort. À la caméra, comme ça, il suffit de chercher l'appareil photo. Maintenant, nous avons le bras à ressort et nous avons la caméra. Et encore une fois, cliquez sur la caméra, montez ici, remplacez-la en vue orthographique. Et n'oubliez pas que vous pouvez modifier la proximité et la distance de l'appareil photo en modifiant cette valeur. Et c'était sur 130 pour ça. Donc maintenant, Luke et Tsarina ont tous deux cet appareil photo. Donc, avant de finir ça, passons rapidement en revue le code parce que je veux nettoyer les choses , donc ce n'est pas un vrai gâchis. Donc, je vérifie ici, c'est à quoi ça ressemble. Et pour nettoyer le code, vous pouvez également double-cliquer sur ces épingles. En double-cliquant, vous allez créer ce nœud de réacheminement, épingle de réacheminement. Et vous pouvez double-cliquer ici et le rendre un peu plus propre. Et je pense que ça a l'air bien et que je regarde ici, peut-être juste en le plaçant ici, comme ça. Une autre astuce est que vous pouvez sélectionner ce que vous voulez ici et cliquer sur Queue. Cela permettra de redresser toutes les notes que vous avez sélectionnées. Donc, en les sélectionnant, Cliquer sur Q va les redresser. Nous avons donc le saut et nous avons la chute ici à côté de l'autre. Et allons-nous un peu plus loin. Et nous avons également l'animation de la marche. Je pense que c'est bien. Maintenant, ce que nous pouvons faire, je peux faire baisser cela, et je peux aussi le faire baisser. Encore une fois, vous pouvez les sélectionner, cliquer sur le repère pour les redresser comme ceci. Et vous pouvez également le faire avec celui-ci. Ou je pense que c'est peut-être comme ça, et on peut faire baisser cela plus loin. Comme ça, cela semble probablement beaucoup mieux. Et nous pouvons aller plus loin pour qu'ils ne soient pas regroupés les uns sur les autres comme celui-ci. Et peut-être que vous pouvez aussi déplacer ça au-dessus d'ici. Comme vous pouvez également créer des neiges de réacheminement pour des épingles d'exécution si vous le souhaitez. Mais je pense que je vais laisser ça se passer comme ça. Je vais le rapprocher. Je pense que c'est un peu bizarre comme ici. Bon, donc maintenant, nous avons corrigé cela. Et une autre chose, c'est que vous pouvez survoler tous ces nœuds. Vous pouvez cliquer sur Voir pour créer un commentaire. Cliquez donc sur voir. Vous pouvez appeler ce mouvement à un seul joueur. Elle peut aussi être plus précise de ce que vous voulez dire. Donc, Claire Movement, je vais juste appeler ça quelque chose de court juste pour le cours que les vidéos ne soient pas trop longues. Le mouvement lent était en fait, ce n'est pas un jeu 3D, donc à droite et à gauche, par exemple, quelque chose comme ça. Et pour celui-ci, il agit également de l'étape du mouvement, sorte que nous pouvons les inclure dans le commentaire. Je vais cliquer et faire glisser le commentaire vers le bas comme ceci. Et maintenant, ici, nous avons le saut. Je vais cliquer sur « Voir et dire sauter ». Et posez-le ici. Bon, donc c'est un peu plus organisé maintenant. Et vous pouvez également accéder à la fonction de déballage. N'oubliez pas que vous pouvez également accéder aux fonctions et organiser ces fonctions. Celui-ci semble donc un peu désordonné à cause de ces lignes, mais nous devons vraiment faire beaucoup à ce sujet. Nous ne pouvons donc pas vraiment créer d' autres structures comme celle-ci. Je pense donc que cela semble bien, mais on peut toujours essayer de les séparer un peu plus loin l'un de l'autre. Essayez de les mettre comme ça les uns sous les autres. Ok, je pense que ça va bien pour l'instant. Vous pouvez toujours, si vous voulez essayer, créer des notes de réacheminement. Si vous le voulez. Écoutez un double-clic, j'ai essayé de le faire, je peux même faire pour réacheminer les notes si vous voulez essayer de les nettoyer autant que possible. Mais je pense que je vais le laisser ici pour l'instant, nous savons ce qu' il fait en ce moment. Vous pouvez également faire un commentaire si vous le souhaitez. Et compilons et économisons. Et maintenant, tout fonctionne. Et en cliquant sur jouer ici. Et il fait nuit et je sais pourquoi j'ai oublié de faire pivoter la caméra. Donc, en revenant à la base de joueurs ici d'abord au printemps, je suis de nouveau retiré. Ils font des tests de collision. Et dans les fenêtres d'affichage, cliquons sur le bras à ressort. Cliquons sur E pour faire pivoter. Et faisons pivoter ce 90 moins 90 degrés, donc c'est devant, pour que nous puissions voir le personnage. Et maintenant, cliquons sur Play. Et maintenant, tout fonctionne correctement. On peut sauter, le mouvement fonctionne. Et encore une fois, vous devez également le vérifier sur le client. Donc, si je réduis ça, il faut le vérifier auprès du client. Et le client peut aussi sauter et courir pour que vous puissiez jouer ensemble maintenant. Et maintenant, tout fonctionne et passons à la leçon suivante. 32. Créer le deuxième personnage: Nous sommes maintenant prêts à créer Luke en tant que personnage. Maintenant, j'ai ce qui est important pour vous dans votre matériel de cours. Encore une fois, si vous allez à vos supports de cours, aux personnages de Luke et à l'intérieur de Luke, je veux que vous les importiez ici. Passons donc aux personnages actifs ici. Créons un nouveau dossier et appelons ça Luke. Importons maintenant tout ce qui se trouve à l'intérieur de ce dossier. Et vous aurez probablement d'autres animations ici. Je vais ajouter des animations au fur et à mesure que je vais suivre ce cours. Faites-les donc glisser dans votre navigateur de contenu et vous les avez importés. En tant qu'exercice, ce que je veux que vous fassiez, essayez de faire tout ce processus vous-même, car ce processus ressemble à ce que nous avons fait auparavant dans les leçons précédentes. Essayez donc d'appliquer les paramètres 2D papier, essayez d'extraire les sprites, essayez de fabriquer vous-même des flip books. Essayez de les importer dans le personnage Blueprint de Luke, personnage papier que nous avons créé. Essayez donc de le faire vous-même et de voir si vous réussissez. Et si vous avez encore du mal, allons ensemble ici et continuons, mais essayons de le faire vous-même. C'est une très bonne pratique d'essayer ça. Ça ne fait de mal à personne. Vous pouvez simplement revenir ici et nous le ferons ensemble. Donc, si vous n'êtes pas sûr de la façon de faire, c'est toujours le cas, nous pouvons essayer de le faire ensemble. Encore une fois, je vais cliquer sur eux tous. Cliquez avec le bouton droit sur production, appliquez du papier aux paramètres, puis parcourez chacun d'eux. Donc, le ralenti, je vais extraire les sprites. Je vais aller un peu plus vite parce que nous avons déjà fait cela auparavant, nous allons Tsarina. Donc, grille augmentant le 180 par 180 pour extraire les sprites comme celui-ci. Et encore une fois, je vais les renommer. Très bien, je les ai tous extraits dans des sprites ici. Et j'ai également créé des flip books. N'oubliez pas que vous pouvez sélectionner, exécuter par exemple, cliquer avec le bouton droit de la souris et créer un flip book. J'ai donc créé ces trois flip books et maintenant je dois changer les images par seconde. Et pour la course ou pour le saut plutôt, faisons simplement une image par seconde. Et pour le ralenti, c'était deux images par seconde. Et pour la course, je crois que c'est six. Je suis juste en train de vérifier avec Tsarina ici. Oui, six images par seconde. Nous faisons donc la même chose. Six images par seconde comme ça. Maintenant, créons un nouveau dossier ici. Cliquez avec le bouton droit de la souris, créez un nouveau dossier appelé Textures. Et je vais prendre toutes ces choses ici, à la fois ces lumineuses et les textures à l'intérieur d'ici, nous n'avons que les flip books. La prochaine chose que nous pouvons faire est d' aller voir Blueprints Player, Luke. Maintenant, nous allons ajouter le flip book. Ouvrez donc l'éditeur de Blueprint complet. Et allons dans les fenêtres d'affichage. Et à l'intérieur d'ici, en cliquant sur les sprites, puis en ajoutant un regard ici. Donc, l'animation inactive ici. Nous devons encore ajuster cette capsule pour qu'elle n'entre pas en collision avec nos tuiles. Je vais juste revenir à Serena pour voir ce qu'était la sienne. Ou peut-être qu'une meilleure chose que nous puissions faire est de le faire dans la base de joueurs. Cela s'applique donc à tous les joueurs si vous avez plus de joueurs. Donc, 33 à 16, je vais revenir à valeur par défaut et me souvenir des numéros 3316. Je vais donc le faire à l' intérieur de la base de joueurs, donc nous n'avons pas à le faire tout le temps. Peut-être ajouterons-nous beaucoup plus de personnages plus tard. Donc, en cliquant sur la capsule, en écrivant 33. Et nous devons changer ce numéro ici d' abord, sinon ça va vous permettre. Donc 16 par 33. Et lorsque nous compilons ces plans enfants, ils seront tous à cette taille. Très bien, c'est ce qui devrait être fait. Et n'oubliez pas que dans la base de joueurs à l'intérieur de notre fonction de déballage, nous avons ajouté cette structure. Alors n'oubliez pas qu'il faut voir quelles sont les animations du personnage. Et rappelez-vous que lorsque vous créez, lorsque vous créez des variables à l'intérieur d'une classe de Blueprint parent, elles apparaîtront dans la valeur par défaut enfant ici dans les valeurs par défaut de classe. Vous devez donc sélectionner comme Serena où nous avons sélectionné ces animations. Vous devez le faire aussi, ou Luke. Maintenant, vous pouvez voir à quel point c'est cool. Chaque personnage que nous pouvons avoir notre personnalisé, notre idole, notre course personnalisée, notre saut personnalisé et notre chute personnalisée. Plus loin. Faisons ça. Et pour le saut, nous avons un saut et pour la chute, nous utilisons également la même chose ici. D'accord. Donc je ne pense pas que nous manquions quoi que ce soit. Essayons de jouer et de voir ce qui se passe. Et passons d'abord aux paramètres du monde. N'oubliez pas que nous avons sélectionné Serena comme classe par défaut en ce moment, car nous n'avons pas encore d'écran de sélection de personnages. Alors cliquons ici et changeons ça pour regarder plutôt pour que vous puissiez le tester. Et cliquons sur Play. Maintenant, les répondants regardent et vous pouvez voir que Luke travaille également. Tout fonctionne bien. Nous avons donc tous les deux regardé maintenant et nous avons Tsarina dans le jeu. 33. Ajouter un effet de son qui s'est lancé: Très bien, donc pour l'effet saut, encore une fois, dans le matériel de cours que j'ai importé à l'intérieur de l'audio. J'ai importé celui-ci appelé sauts SF6. Nous avons donc l'effet saut et laissez-nous créer un nouveau dossier. Je vais cliquer sur ce dossier de contenu. Et ici, créons-en un nouveau appelé audio. Et à l'intérieur d'ici, revenons à l'audio et faites-le glisser dans ce dossier. Et nous pouvons y jouer et voir s'il est trop fort. Je pense que le volume est sympa. Alors, lorsque vous importez un son, essayons de coder cette chose et je vais vous montrer comment le faire en mode multijoueur. Donc, en fin de compte, ce que vous voulez faire ici dans le plan directeur, revenons au joueur, à la base de joueurs. Maintenant, si nous revenons au graphique des événements, vous êtes peut-être tenté de le faire. Alors, ici pour le saut. Maintenant, je vais le faire de la mauvaise façon que vous puissiez tirer des leçons de cela. Donc ici, dans le saut, en solo, je compare solo et multijoueur pour que vous puissiez voir les bonnes pratiques. Donc, en solo, ce que vous voulez qu'il fasse, c'est comme dans le saut. Quand je présenterai saut, évidemment, nous ferons cet effet sonore ici, mais c'est faux en mode multijoueur. Et je vais vous montrer pourquoi ici. Pour faire un son, on peut dire jouer du son. Et vous pouvez soit lire le son à un endroit, soit lire son à d. Donc si vous voulez que les gens entendent le son, quelle est la différence si vous jouez un son à un endroit donné. Donc, si vous êtes un joueur, que vous êtes debout de ce côté et que vous sautez, le son sera entendu de ce côté ici. Donc, si un joueur se tient ici et que vous sautez ici, il entendra le son venant de cette zone. Mais si vous jouez le son 2D, donc si vous choisissez un son de retard 2D, il ne sera pas posé à un certain endroit, mais il jouera comme un effet 2D. Habituellement, nous l'utilisons comme éléments d'interface utilisateur. Et si vous voulez qu'un son soit entendu à un endroit donné, nous utilisons le son de lecture sur place. Tout dépend si vous voulez que les gens vous entendent sauter. Et disons que nous voulons le faire. Donc, en fin de compte, vous voulez qu' il émette du son à un endroit. Vous souhaitez sélectionner le son. Et au lieu de sélectionner l'onde sonore, revenons ici à l'audio. Cliquez dessus avec le bouton droit de la souris. Et créons une file d'attente. Et appelons ça comme C pour le signal sonore et le saut. Vous pouvez double-cliquer dessus maintenant pour l'ouvrir. Et il s'agit d'un signal sonore, vous pouvez donc cliquer sur Play up ici. Et il peut entendre le son. Une chose très cool, c'est que si vous voulez une variation ici, vous pouvez le faire glisser. Vous pouvez voir que ce sont les notes sonores que vous pouvez utiliser. Vous pouvez faire glisser ici et dire modulateur. Vous pouvez également voir le modulateur ici. Donc, en cliquant sur modulateur et ce que cela fait c' est qu'il change ici le son chaque fois qu'il est joué. Nous choisissons donc le terrain, minimum et le maximum ici. Par exemple, de 0,9 à 1,1. Et chaque fois que vous cliquez sur Lecture maintenant, il va changer la hauteur du son, de sorte qu'il semble qu'il s'agisse d'un son différent à chaque fois. Vous pouvez donc voir que c'est un peu une variation que vous pouvez parfois faire. Mais je veux que le son soit le même, donc je vais simplement le supprimer et le faire. Je pense donc que c'est très bien pour l'instant. Et fermons ce signal sonore vers le bas. Donc ici se joue sur place. Nous allons sélectionner notre signal sonore. Et quel est le lieu ? Et c'est là que se trouve le personnage. Alors cliquons avec le bouton droit de la souris et disons obtenir emplacement de l' acteur comme ça et connecté ici. Nous obtenons donc ce lieu d' actrice où que vous soyez et vous y jouez le son. Ok, donc vous essayez de le faire, puis vous cliquez sur jouer et vous sautez ici. Il fonctionne. Et c'est la mauvaise façon de le faire. Parce que rappelez-vous que vous êtes en mode multijoueur en ce moment. Ainsi, chaque fois que vous faites cela, les autres ne l'entendront pas. N'oubliez pas que nous avons ces relations avec le serveur et le client. Vous l'avez donc en tant que serveur et vous l'avez en tant que client. Et vous voulez jouer le son , puis le déployer auprès de tous les clients. Ainsi, le serveur place le son et le jette au client. Revenons ici et encore, comme ce que je vous ai déjà dit, nous devons tout vérifier avec le serveur pour que les clients ne trichent pas. Le serveur est le vrai jeu. Le serveur a le pouvoir de faire n'importe quoi dans ce jeu. Par conséquent, chaque code que vous effectuez doit être vérifié par le serveur, puis le répliquer sur les clients. Voyons donc un exemple de cela. Revenons au joueur. Supprimons simplement celui-ci. Donc, peut-être êtes-vous également tenté de dire, d' accord, alors avant que nous ayons fait ce mouvement ici, et que nous ayons traversé les états du mouvement, puis cet état de mouvement est passé par le serveur. Et le serveur a défini cette variable. Et il va exécuter une fonction sur ramp car rappelez-vous que cette variable a été répliquée en tant que notification de représentant. Ainsi, avec le serveur va avertir tous les clients du changement de cette variable. À l'intérieur de cette fonction de déballage. Tout cela va être répliqué à tous les clients. Donc, peut-être essayez-vous de dire que tout cela est répliqué aux clients. Je peux donc ajouter le son de ma place ici et il va être reproduit à tous les clients. Nous avons donc un saut ici. Nous avons le carnet de saut flip. Et peut-être essayez-vous d'ajouter le son de lecture sur place ici. Vous pouvez le faire et ça va marcher. Tous les clients vous entendront sauter. Donc, si vous êtes le serveur, si vous êtes le client, c'est bon. Ils vont tous vous entendre sauter. Cela fonctionne également correctement. Mais il y a une petite erreur et je vais vous apprendre que c'est la dernière chose en multijoueur, et nous avons quelque chose qui s'appelle une multidiffusion. Donc, si je vais à l'événement et que je vais vous dire la différence entre une fonction de rampe et une multidiffusion. Nous savons donc que nous avons quelque chose qu'on appelle une multidiffusion. Par conséquent, si vous cliquez sur l'événement serveur, nous le configurons pour qu'il s'exécute sur le serveur. Mais vous avez aussi ce qu' on appelle une multidiffusion. Essayons donc d'abord de créer le code et je pourrai vous l' expliquer plus facilement après cela. Alors, déplacons cette logique de saut ici. Et là, je vais faire de nouveaux événements personnalisés. Ajoutons cet événement personnalisé et appelons-le MC pour la multidiffusion. Et je vais juste appeler ça saut parce que nous voulons faire un effet sonore de saut. D'accord ? Vous pouvez maintenant cliquer sur ce répliqué et sélectionner la multidiffusion, puis sélectionner fiable. Et ici, ajoutons celui s'appelle jouer un son sur place. Voyons maintenant ce son au lieu de le coder en dur comme ça. N'oubliez pas que nous avons ajouté une structure. Donc fondamentalement la structure, elle contient toutes les informations du joueur, sorte que nous pouvons même ajouter des sons ici. Donc, dans cette variable ici, je peux cliquer sur Ajouter une variable et appeler un saut en tant qu'effets pour l'effet sonore de saut. Et ajoutons un signal sonore, car en fin de compte, il s'agit d'un signal sonore que nous avons créé. C'est donc un signal sonore. Cherchons un signal sonore. Et c'est ici, référence à l'objet. Ok, donc maintenant nous avons un effet sonore de saut et nous pouvons l'utiliser à partir de notre structure. Encore une fois, vous pouvez revenir à, revenons au joueur. Pour Luke. Depuis que nous l'avons ajouté, chaque personnage peut avoir son propre effet sonore personnalisé, mais nous ne l'avons pas vraiment dans Maple Story. Ajoutons donc cet effet de saut, ou Luke. Pour Serena, je vais ajouter le même effet de saut ou le même effet sonore ici. Ok, donc nous en avons ajouté maintenant dans la structure. Et revenons à la base de joueurs. Et maintenant, je veux vous expliquer ce qu' est une multidiffusion avant de continuer. Ce n'était donc pas mal de le faire ici. Le serveur a donc défini cette variable ici et vous revenez à la fonction de déballage , puis vous ajoutez l'effet sonore ici. Cela fonctionnera comme si les clients plus âgés vous entendront sauter. Le serveur vous entendra sauter. Cela fonctionnera donc. Cependant, la différence est entre une fonction non encapsulée ici et la multidiffusion. La multidiffusion ici fait la même chose. Ainsi, la multidiffusion, vous pouvez l'imaginer comme si cela coûtait toutes les informations au client. Les informations sont donc transmises au serveur et le serveur définit une variable. Ensuite, vous pouvez exécuter une multidiffusion pour rembourser ces informations à tous les clients afin que les clients sachent ce qui se passe. Vous pouvez donc lancer la multidiffusion ici. Cliquez ici et ajoutons un saut DMC ici. Et la chose la plus importante à savoir ici est événements de multidiffusion ne peuvent être exécutés que via le serveur. Vous ne pouvez pas exécuter cela ici, par exemple, cela ne fonctionnera pas. N'oubliez pas que nous sommes encore en déclin à savoir. Encore une fois, si vous voulez savoir si vous êtes actuellement sur le client ou sur le serveur, vous pouvez simplement imprimer une chaîne. Il s'agit donc d'imprimer une chaîne de caractères très basiques. Et je traîne ça par erreur. Et ici, cliquons sur Play. Maintenant, vous pouvez maintenant voir que le serveur et le client disent bas. Je sais donc que je ne suis pas seulement sur le serveur, mais aussi sur le client, donc je suis à la fois sur le serveur et le client sur cet événement. Mais si j'imprime la chaîne ici, et que nous exécutons cet événement sur le serveur, seul le serveur va dire bonjour. J'imprime donc la chaîne est très utile pour savoir où vous en êtes actuellement. Et une multidiffusion ne peut être exécutée que via le serveur. Vous ne pouvez pas exécuter de multidiffusion sur le client. Cela ne va pas marcher. Et c'est aussi vous dire ici. Serveur. Cela ne fonctionnera donc que si c' est le serveur à partir duquel vous l'exécutez. Nous pouvons donc maintenant multidiffuser l'effet sonore de saut à tous les clients afin qu'ils entendent que je saute. Quelle est la différence entre cette fonction et la fonction de déballage ? Parce qu'ils font tous les deux la même chose. Celui-ci fonctionne également comme lorsque vous ajoutez l'effet sonore de saut ici va également fonctionner. Alors, quelle est la différence entre celle-ci et celle-ci ? La différence est que si vous vous tenez loin, supposons que vous ayez une grande carte du monde ouverte. Si vous êtes loin et que vous jouez une multidiffusion, c'est la bonne façon de le faire ici pour le son. Parce que lorsque le joueur qui tient loin s'approchera de vous, il n'entendra plus le son parce que vous avez peut-être sauté il y a dix minutes. Donc, mais si vous le faites ici dans la fonction de déballage et que le joueur se tient loin lorsque vous sautez, c'est bon. Le joueur ne peut pas l'entendre. Mais si le joueur se rapproche de vous, comme dix minutes plus tard, le joueur entendra l'effet sonore même si vous avez sauté il y a dix minutes. La fonction Unwrap mettra à jour le lecteur. Même si vous avez fait cette chose il y a une heure ou deux heures ou même il y a longtemps. Supposons qu'un joueur ne s'est pas encore connecté à votre serveur et que vous sautez, le joueur se connecte dix minutes plus tard. Ensuite, le joueur qui se connecte peut vous entendre sauter. Même si vous ne sautez pas, comme si vous étiez immobile, mais que vous avez sauté il y a dix minutes, cet effet sonore de saut sera entendu par le lecteur connecté. Et ce n'est pas exact parce que vous avez sauté il y a dix minutes. Vous n'avez pas sauté en ce moment. Cela se produit si vous l'ajoutez au déballé. Donc, ce que je veux que vous tiriez de cela, c'est la fonction de déballage est utilisée pour les changements visuels. Vous pouvez donc voir ici le flip book dans lequel je suis, par exemple, si je cours ou que je suis en messagerie instantanée, disons danser, sauter, peu importe. Tous les effets visuels sont effectués lors du déballage. Disons donc que j'ai un feu de signalisation et qu'il passe du rouge au vert ou du rouge au jaune au vert, ce feu de signalisation. Vous souhaitez ajouter. L'effet visuel change à l'intérieur du déballage. Parce que si un joueur se connecte cinq minutes plus tard, et disons que vous êtes un léger, il faut cinq minutes pour changer de couleur. Disons qu'il passe du rouge au jaune. joueur qui se connecte au serveur peut voir que votre lumière est maintenant jaune. Mais si vous ajoutez des modifications visuelles ici, la multidiffusion, cette couleur jaune ressemblera toujours au rouge pour le lecteur connecté. Parce que la multidiffusion n'est mise à jour que pour les joueurs connectés. Il n'est mis à jour que pour les joueurs proches de vous. Donc, si un joueur se tient loin et la lumière passe du rouge au jaune, joueur qui se tient loin de vous s'approche maintenant, et ce joueur verra toujours la lumière être lire parce que vous exécutez cela via une multidiffusion. Cette mise à jour est réservée aux joueurs proches vous et aux joueurs connectés au serveur. Donc, ce que nous utilisons habituellement des fonctions non mûres pour nos changements visuels, car cela devrait être mis à jour visuellement pour les joueurs qui se connectent. Disons donc que je me connecte dix minutes plus tard et dix mois plus tard, je peux voir que vous êtes dans le, disons ici en état de marche, ou peut-être que vous détenez une autre arme. Donc, si nous avons plus de flip books ici, mais que je ne veux pas vous entendre ou je ne veux pas entendre l'effet de saut que vous avez fait il y a dix minutes, cela n'a aucun sens. Donc, n'importe quel effet sonore, n'importe quel effet visuel. Par exemple, un effet de particules, un effet de feu, etc. Je veux que tous ces éléments soient en multidiffusion. C'est la bonne façon de le faire. Tous les changements visuels sont effectués lors du déballage. Nous sommes donc ici via le serveur, nous exécutons la multidiffusion. Encore une fois, la multidiffusion ne peut être exécutée que sur le serveur. Et au lieu de faire le saut ici, laissez-moi simplement le connecter ici. Une très bonne pratique en mode multijoueur consiste à exécuter ces variables jusqu' aux premiers événements afin qu'elles fonctionnent correctement. Donc, faites glisser ce son et l'ajouter ici, sous-tendez ici, de sorte qu'il crée automatiquement une variable pour moi. Donc, si je clique sur cette multidiffusion, vous pouvez voir qu'elle crée cette variable. Et je vais juste l' appeler ici au lieu des effets Sound Jump S. Et je vais aussi faire glisser cet emplacement, mettre ici et l'appeler peut-être emplacement du joueur. Je peux donc maintenant faire l'effet sonore ici. Et n'oubliez pas que pour l'effet sonore, nous avions des infos sur nos joueurs. Nous allons donc faire glisser notre structure. Et à partir de là, disons casser le stylet de la structure pour que nous puissions voir les variables. Je vais bouger un peu ça que nous ayons plus d'espace. D'accord ? Donc, ici, je vais cliquer sur cette flèche pour voir mes variables. Vous pouvez faire glisser à partir de cet effet sonore de saut et il jouera automatiquement ce que vous avez. Insérez ici dans le saut comme effets pour Serena et quatre. Alors n'oubliez pas de les faire. Et je retourne ici. Maintenant, pour ceux que vous n'utilisez pas, vous pouvez cliquer ici sur Masquer les épingles non connectées, et cela les masquera pour vous. C'est un peu plus propre à travailler. Et quel est le lieu ? Encore une fois, obtient un joueur ou ne pas obtenir de joueur, obtenir l'emplacement de l'acteur. Et comme ça. Maintenant, ça va fonctionner correctement. Maintenant que nous avons fait cela, essayons de compiler et de tout sauvegarder. Et cliquons sur Play et voyons si cela fonctionne. Très bien, donc pour terminer cela, maintenant, au lieu de le faire ici, cela jouera constamment parce qu'en ce moment cela se déroule à travers l'état du mouvement, qui se place tout le temps ici. Donc, au lieu de le faire, cela vous fera mal aux oreilles. Prenons donc ceci et créons un nouveau serveur appelé serveur. Donc, le serveur de palettes personnalisées saut. Et cela va passer par le serveur comme ça. Et nous allons nous connecter ensemble. Le serveur va donc exécuter ces événements de multidiffusion. Et rappelez-vous que nous avions cette structure. Sortons ça et sortons de là et disons casser la structure. On peut donc voir les épingles. Ici. Vous pouvez cliquer sur cette petite flèche. Je vais déplacer ça un peu dans l' autre sens pour que nous puissions voir ce qui se passe. Et maintenant, je peux faire glisser ce saut en tant qu'effets dans cette variable. Et rappelez-vous que vous devez, en Tsarina dans les valeurs par défaut de la classe, faut ajouter l' effet sonore ici pour que cela fonctionne. En plus de Luke, la classe définit par défaut l'effet sonore ici. Assurez-vous simplement qu'ils sont ajoutés. Celui-ci fonctionne donc aussi. Pour les épingles que vous n'utilisez plus, vous pouvez cliquer sur celle-ci et cliquer sur Masquer les épingles non connectées. Ce sera beaucoup plus propre. Et l'emplacement du joueur à nouveau cliquez et faites glisser ici et dites obtenir la position de l'acteur. Donc, comme ça. Maintenant, vous avez cet événement Jump, Jump ici. Maintenant, vous n' organisez vraiment cet événement nulle part. Alors n'oubliez pas que vous ne l'avez pas fait, vous n'avez pas vraiment froid cet événement. Donc, phi et en fait, avant de continuer, cliquons dessus. Des répliques fiables avant que j'oublie ici, et juste pour m'assurer que les autres présentent un danger. Donc, si je clique sur Jouer maintenant, vous pouvez voir que ce n'est pas vraiment un son. Et c'est parce que nous n'avons jamais défini cela. Nous n'avons jamais appelé cette fonction ou cet événement ici. Donc, pour appeler cet événement, appelons-le ici dans le saut. Nous pouvons donc maintenant le faire. Donc, le serveur saut. Alors maintenant, qu'est-ce qu'on a sauté ? Il va passer par le serveur et nous pouvons le faire ici pour qu' il soit plus organisé. Groupes. Je vais faire baisser ça comme ça. Ok, donc maintenant ce qui va se passer , c'est que je vais cliquer sur saut. L'effet sonore de saut va passer par le serveur. Et ensuite, ça va passer au bout. Et en fait, j'aimerais prendre mes variables jusqu'ici. Je vais donc cliquer sur Control X pour les couper et les coller ici. Et permettez-moi de passer en revue ça aussi, comme ça. J'aime les lancer jusqu' à l'événement source ici. Maintenant, nous pouvons sélectionner ici nos actions. Donc, nous allons relier ça ici, comme ça. Maintenant, cela va passer par le serveur. Le serveur va vérifier si vous êtes autorisé à le faire ? Et si c'est exact, il va passer par la multidiffusion où cela coûte l'information, l'effet sonore pour tous les clients. Et n'oubliez pas que la multidiffusion est destinée à tous les clients proches de vous qui sont déjà connectés au serveur. Pour les joueurs qui ne sont pas proches de vous, ils ne pourront pas jouer cela plus tard lorsqu' ils se rapprocheront de vous. Et pour les joueurs non connectés, lorsqu'ils se connectent au serveur, ils n' entendront pas cela s' il y a cinq minutes. C'est donc logique. Et finalement, les joueurs qui se rapprochent de vous, ou ceux qui se connectent dix minutes plus tard. Ils ne verront que les changements ici. Et nous voulons qu'ils le voient. Nous voulons qu'ils voient notre carnet mis à jour en flip book. C'est très bien. Mais nous ne voulons pas qu'ils entendent un son diffusé il y a dix minutes. C'est donc quelque chose que nous effectuons à la place d'une multidiffusion. Cliquons donc sur Compiler et assurez-vous que tout est correct. Essayons de cliquer sur Play et de voir ce qui se passe. Et vous pouvez voir que le son joue bien. Très bien, sortons de ce jeu ici. Faisons en sorte que cela soit un peu plus organisé. Donc, pour ce saut, je vais inclure tous ces nœuds ici ensemble. Parce que maintenant tout ça saute. Et pour celui-là, nous allons le rendre plus petit comme ça. Compilons et sauvegardons tout et continuons avec le cours. 34. Interface de plan: Avant de passer à la section suivante, je veux parler des interfaces Blueprint. Les interfaces Blueprint sont utilisées pour organiser votre projet. Il est également plus facile de travailler avec lorsque vous parlez de communication Blueprint. Et qu'est-ce que je veux dire par « communication Blueprint » ? Ce que je veux dire est parfois ici dans la base de joueurs, par exemple, si nous revenons ici, parfois à l'intérieur de la base de joueurs, vous devez utiliser quelque chose des modes de jeu. instant, nous n'avons rien fait à l'intérieur d'ici. Et si je passe en mode jeu et que je l'ai ouvert, à un moment donné, nous codons quelque chose à l'intérieur d'ici. Ainsi, à un moment donné de la base de joueurs, nous avons besoin de certaines informations stockées dans notre mode de jeu. Nous pouvons accéder à ces informations par quelque chose appelé « communication Blueprint ». Cet acteur de Blueprint communique donc avec cet acteur de Blueprint. Ces deux Blueprints communiqueront donc ensemble. Et c'est ici que les interfaces Blueprint interviennent. Mais pour l'instant, je ne veux pas trop parler la communication Blueprint car nous ne l'avons pas encore utilisée. Mais nous allons régler nos événements. Donc ici, dans la base de joueurs, ce que nous avons fait plus tôt, c'est cet état de mouvement unique. Au lieu de créer des événements personnalisés comme celui-ci, allons-y et une interface Blueprint. Cliquez ici avec le bouton droit de la souris et passons aux Blueprints et créons une interface Blueprint. En fait, je dois créer un dossier pour, alors créons un dossier appelé interfaces. Et à l'intérieur d'ici, laissez-moi cliquer avec le bouton droit sur Blueprints et Blueprint Interface. Habituellement, je commence par int ou interface. Et pour l'instant, nous voulons en faire un pour la base de joueurs. Je les appelle donc généralement le nom du plan. Je veux les utiliser pour. Je veux l'utiliser pour la base de joueurs. Je vais ouvrir ça maintenant. Et vous pouvez voir qu'il s'agit essentiellement d'une bibliothèque de fonctions. Donc, à l'intérieur d'ici, dans le graphique, vous ne pouvez vraiment rien faire. Vous ne pouvez pas faire glisser ça. Et vous pouvez tout faire. Vous pouvez voir que vous avez vos fonctions ici pour ajouter une nouvelle fonction. Et vous pouvez voir les détails de cette fonction ici. Commençons par créer cet état appelé « set movement state ». Donc, au lieu de le créer comme un événement personnalisé ici, passons à l'interface et faisons ici définir des états de mouvement comme celui-ci, compilons et sauvegardons tout. Maintenant, pour ajouter une interface Blueprint, vous devez accéder à ce Blueprint Nous allons donc l'utiliser et la base de joueurs va dans les paramètres de classe. Et ici, vous pouvez voir les interfaces implémentées. Nous allons la chercher comme ça, et nous pouvons choisir l'interface ici. Compilons et économisons maintenant. Et maintenant, c'est une erreur. Et c'est parce que vous venez de créer une interface. Vous pouvez le voir ici, celui que vous avez défini les mouvements, et maintenant c'est parce que vous en avez deux, donc cela vous donne une erreur. Nous allons supprimer celui-ci. Mais rappelez-vous ici, si cela n'apparaît pas pour vous, oubliez pas de revenir à l'interface et de cliquer sur Compiler. Il est très important toujours compiler vos plans. Passons donc à la base de joueurs. Maintenant, supprimons cet ensemble d'états de mouvement et compilons. Et maintenant, cela nous donne beaucoup plus d'erreurs. Et c'est en fait ces derniers parce que nous devons les remplacer. Mais ne nous inquiétons pas de ces flèches pour l'instant. Maintenant, cette interface, nous avons fait un état de mouvement. Nous pouvons appeler cela en cliquant avec le bouton droit de la souris et en disant définir les états de mouvement. Et maintenant, nous pouvons voir que cet événement est un état de mouvement défini. Donc, si vous cliquez dessus et que cette icône se trouve sur Pier, cette icône signifie qu'elle provient d'une interface Blueprint. Parce que rappelez-vous que nous l'avons fait à l'intérieur de l'état des mouvements. Ainsi, chaque fois que vous ajoutez l'interface à l'intérieur de votre Blueprint, elle apparaît ici et vous pouvez l'appeler comme événement. Et vous pouvez également voir ici, nous ne pouvons pas vraiment le faire sortir. Cela ne fonctionne donc pas. Nous devons donc cliquer avec le bouton droit de la souris et rechercher le nom. génial avec les interfaces, c' est que si vous en créez une nouvelle, appelons-le simplement aléatoire. Je voulais juste vous montrer quand c'est comme ça. Et si vous revenez au plan ou à la base de joueurs, vous pouvez voir cet événement aléatoire ici. Si je clique avec le bouton droit de la souris et que j'écris au hasard et que je trouve les événements, et que vous pouvez voir ici, événement aléatoire ici. Mais si je mets une sortie ici, si je clique sur aléatoire et que j'ajoute une variable ici, alors je clique sur ce bouton plus et ajoutons simplement une variable aléatoire ici. Si je compile maintenant et économise, et que je retourne à ma base de joueurs, vous pouvez maintenant voir qu'il n'est plus jaune. Donc si je, si vous ajoutez une sortie à un événement ici, elle dans une fonction. Nous pouvons donc maintenant double-cliquer cette année. Et vous pouvez voir que c'est une fonction à la place, tout comme lorsque vous avez créé des fonctions ici ne sautait pas. Par exemple, nous l'avons créé plus tôt. Vous pouvez également créer des fonctions à l'intérieur des interfaces et les utiliser. Ainsi, lorsque vous ajoutez une sortie, deux fonctions à l'intérieur d'ici, elles deviennent des fonctions. Et si vous n'ajoutez pas de sortie, ils deviendront des événements. C'est très, très bon de s'en souvenir. Les événements sont jaunes, les fonctions sont de cette couleur, donc supprimons cette couleur aléatoire. Nous n'en avons pas vraiment besoin pour l'instant. Compilons et économisons. Et revenons ici et connectons cet état de mouvement défini. Maintenant, le mouvement est resté ici. Et comme auparavant pour les événements clients, nous ne pouvons pas cliquer, glisser et ajouter automatiquement la variable. Vous pouvez donc voir ici, si je clique et que je fais glisser, je ne peux pas l'ajouter automatiquement, donc je dois le faire moi-même. Les interfaces Blueprint prennent donc un peu plus de temps à configurer, mais elles sont plus optimisées. Votre jeu sera beaucoup plus rapide. Revenons donc à l'interface Blueprint. Cliquez sur celui-ci et ajoutons les entrées. Et il s'appelait l'état des mouvements E. C'était donc notre énumération. Alors cliquons ici, et appelons cela des États du mouvement comme ça. Et maintenant, vous pouvez voir que ça ne me laisse pas faire ça. Je dois donc compiler et me laisser réessayer. Parfois, ça se dérange comme ça. Je devrai probablement fermer le projet et l'ouvrir à nouveau. Très bien, je viens de fermer et d'ouvrir le projet. Essayons donc à nouveau, en cliquant ici, étape du mouvement. Il ne me laisse pas encore le faire ici. Je pense que c'est parce que dans la base de joueurs, nous avons déjà. Revenons à une base de joueurs. Découvrons-le. Je pense que c'est parce que nous avons déjà ce qu'on appelle l'état du mouvement. Permettez-moi de supprimer tous ceux de ce genre. Vous pouvez peut-être prendre une photo pour vous afin de vous rappeler ce qu'il disait. Mais maintenant compilons ici, sauvegardons, revenons à l'interface, et essayons maintenant de changer les états du mouvement. Et maintenant, ça m'a conduit, c'est probablement à cause des autres fonctions là-bas. Maintenant que nous l'avons, vous pouvez le voir ajouté à notre interface d'événement. Et encore une fois, comme avant, nous pouvons le connecter. Et maintenant, nous pouvons l'appeler ici. Je dois donc me souvenir de ce qu'il y avait ici. Il était inactif lorsque le mouvement était de 0. Donc, exécuter le nom des mouvements d'événement ici, définit donc les états du mouvement. Et vous pouvez voir ici, vous pouvez appeler cette fonction en disant int player base. Donc, en l'appelant depuis l'interface, je peux le faire ici. Mais j'ai découvert quand je travaillais qu'il était préférable de sélectionner celui-ci sous int player base. Lorsque vous le sélectionnez via l'intérieur au lieu de la fonction charbon, celui-ci est automatiquement mis à jour. Chaque fois que vous le mettez à jour ici dans l'interface, une erreur s'affiche si vous sélectionnez l'autre, une seule mise à jour automatiquement. Je sélectionne donc toujours celui-ci. Donc l'idole ici, je peux simplement cliquer et copier coller ici et les sacs connectés. Il s'agissait donc de droits de course, puis de gauche. Et là-haut, c'était sauter. Alors quand ce n'était pas plus, c' était de la cochonnerie et c'était l'automne. Donc, juste comme ça. Nous avons donc implémenté l'interface Blueprint et nous avons la fonction ici. Et c'est beaucoup plus propre et vous pouvez avoir toutes vos fonctions pour la base de joueurs. Vous l'avez peut-être déjà deviné. Plus tard, nous allons créer d'autres interfaces Blueprint, une pour le mode jeu, une pour la manette du joueur, etc., chaque fois que nous tuons des choses là-dedans. Ok, donc maintenant je ne vois plus d'événements personnalisés que nous avons faits ici, donc tout va bien et c'était tout pour l'instant. Passons donc à la prochaine leçon. 35. Introduction au plan de l'abonnement: Il est maintenant temps de parler du système de génération et commençons par parler des Blueprints du widget et Widget Blueprint est l' endroit où vous créez l'interface utilisateur. Donc, ce que nous voulons commencer, créons un nouveau dossier ici dans le contenu. Je vais cliquer avec le bouton droit de la souris sur créer un nouveau dossier et appelons-le l'interface utilisateur pour l'interface utilisateur. À l'intérieur d'ici, cliquez avec le bouton droit de la souris. Et ici, dans l'interface utilisateur, vous pouvez créer un Blueprint Widget. Donc, créez celui-ci et sélectionnez Widget Blueprint ici. Écriture de WB pour Widget Blueprint. Et la première chose que nous allons créer , c'est la sélection des personnages. Donc, la sélection des personnages. Bon, vous pouvez donc double-cliquer dessus maintenant. Et pour commencer, je veux parler l'interface ou de la vue d'ensemble de ce qu'il s'agit. Au lieu d'ici au milieu, vous pouvez voir le graphique. Encore une fois, vous pouvez cliquer avec le bouton droit de la souris et faire un panoramique pour vous déplacer dans le graphique. C'est ici que vous concevez l'interface utilisateur. Et la deuxième partie est constituée par le graphique. Vous avez donc le concepteur qui conçoit l'interface utilisateur. Ensuite, vous disposez du graphique dans lequel vous ajoutez des fonctionnalités à l'interface utilisateur. Vous pouvez voir que cela nous est familier. C'est ici que nous codons. Ici. Nous pouvons voir nos variables et nos fonctions, etc. Vous pouvez également voir les différents détails concernant, par exemple, une variable sur laquelle nous cliquons. Cela nous est très familier maintenant. Et chez le concepteur, ce que vous avez ici, c'est le graphique. Vous disposez des éléments que vous pouvez utiliser pour concevoir votre interface utilisateur. Ensuite, vous pouvez voir tous les éléments que vous ajoutez ici. Encore une fois, vous disposez d'un panneau de détails dans lequel vous pouvez modifier les détails des éléments. Par exemple, vous pouvez modifier le style de police, la taille de la police, l'image est style, etc. Juste pour un petit entraînement avant la fin, essayons d'ajouter quelque chose. Par exemple, vous disposez d'un bloc de texte, donc nous avons ici les ressources communes et communes. Vous pouvez essayer de les parcourir et voir ce que vous avez ici. N'hésitez pas à ajouter des éléments à l'interface utilisateur. Vous pouvez. C'est toujours agréable de l'essayer. Donc ce que vous pouvez faire, c'est ce que je commence habituellement lors de la création d'une interface utilisateur, je crée généralement un panneau de canevas. Par conséquent, si vous recherchez Canvas ici, vous disposez de ce panneau de canevas. Vous pouvez donc le faire glisser et le placer ici. Il l'ajoutera à l' interface utilisateur comme ça. Et vous pouvez voir que le canevas a été ajouté. Maintenant, c'est une chose très basique. Vous ajoutez un canevas, le canevas, vous ajoutez différents éléments. Par exemple, nous pouvons ajouter ce texte. Vous pouvez l'ajouter en cliquant et en le faisant glisser vers le bas sur le canevas. Et vous pouvez voir que le texte a été ajouté. Vous pouvez également cliquer et faire glisser et le placer n' importe où à l'intérieur du canevas et le placer. Habituellement, ce que j' aime faire, c'est simplement glisser vers le bas , puis je clique dessus. Supprimons donc simplement l'un d'entre eux en cliquant sur Supprimer sur mon clavier. Vous pouvez cliquer sur ce texte, par exemple, et vous pouvez voir différents détails sur ce texte. Vous pouvez donc modifier sa position, de sorte qu'il puisse cliquer et faire glisser et modifier la position. Par exemple, nous pouvons écrire cent cent et y et vous pouvez modifier la couleur du texte. Vous pouvez modifier la police ici, en sélectionnant le type de fonds financé, la taille du fonds, etc. Vous avez donc des détails différents. Vous pouvez modifier les éléments. Les éléments les plus courants sont ici. En commun, vous pouvez essayer, par exemple, faire glisser un bouton et de voir ce que vous pouvez modifier à propos d'un bouton. C'est donc toujours agréable de les faire glisser ici, une image. Nous utilisons toujours des images pour que vous puissiez essayer de vous familiariser avec elles. Vous pouvez voir, vous pouvez les mettre à l'échelle ici avec ces jolis éléments d'assemblage pour que vous puissiez cliquer et faire glisser dessus. Vous pouvez cliquer sur ce pinceau, par exemple, pour une image et sélectionner de quel type d'image il s'agit. Par exemple, en cliquant ici, je peux sélectionner, Voyons mon sprite. Et vous pouvez voir que le sprite a été ajouté en tant qu'image. Et vous pouvez modifier la taille de l'image ici. Vous pouvez également modifier la couleur de l'image. Vous avez donc beaucoup d'options avec lesquelles nous travaillerons plus tard. D'autres trucs sympas avant que je finisse ça ici, vous avez quelque chose appelé une boîte horizontale. Une boîte horizontale ici, on peut faire glisser ça ici. Laissez-moi supprimer tous ces éléments pour l'instant. Cliquez sur Supprimer. Nous avons donc cette boîte horizontale. Je vais le faire glisser ici et le mettre à l'échelle. Donc, dans cette boîte horizontale, où que je place ici sera placé horizontalement. Donc, si je prends ce texte et que je le place ici dans la boîte, vous pouvez voir maintenant qu'il se trouve à l'intérieur de cette boîte horizontale. Et si j'ajoute un texte de plus, ou si j'ajoute une image à la place. Ajoutons une image sur la boîte horizontale. Maintenant, vous pouvez voir qu'il ajoute des choses horizontalement afin qu'elles ne se chevauchent pas. Et si j'ajoute un autre texte, vous pouvez maintenant voir qu'il ajoute des éléments horizontalement. Maintenant que j'ai ajouté, je l'ai ajouté par erreur ici pour que je puisse cliquer et le faire glisser dans cette boîte. Et vous pouvez voir des éléments ajoutés horizontalement. Là. va de même pour une boîte verticale. Il ajoute des choses verticalement les unes sous les autres. Et si vous voulez que les pièces se superposent ensemble. Par exemple, nous avons un bouton et nous avons une image sur le bouton. Nous utilisons ce qu' on appelle une superposition. Je peux donc ajouter une superposition ici. Et laissez-moi simplement ajouter un bouton. Donc, si je clique sur le bouton ou que je recherche un bouton, ajoutez-le à la superposition. Vous pouvez voir maintenant que mon bouton est sur la superposition, et maintenant je peux rechercher une image et la placer sur le bouton ici. Maintenant, vous pouvez voir que je superpose des choses les unes sur les autres. J'ai un bouton et j'ai une image sur les boutons. Par exemple, je peux choisir une image ici et vous pouvez voir maintenant que j'ai une image sur mon bouton pour que vous puissiez voir qu'elle n'a pas fière allure parce que je dois cliquer sur ma superposition et la redimensionner, etc. Mais nous allons travailler sur tout cela. Je veux juste vous présenter l'interface utilisateur. N'hésitez pas à chercher des choses ici, essayez de mettre cette barre de progression. Voyez ce qui se passe si vous augmentez le pourcentage comme celui-ci et que vous essayez de jouer avec l'interface utilisateur, c'est toujours agréable de jouer. Et lorsque vous avez terminé, supprimez tous ceux, y compris le panneau de canevas, puis compilez et enregistrez. Passons ensuite à la leçon suivante et commençons à leçon suivante et commençons créer l'interface utilisateur de sélection des personnages. 36. UI sur la sélection de personnages: Commençons par créer l'interface utilisateur de sélection des personnages. Par conséquent, ici, dans le Blueprint Widget que nous avons créé précédemment, cliquons dessus ici. Donc, la chose que nous voulons créer, je suis allée de l'avant et je l'ai créée à l'avance pour pouvoir vous montrer ce que nous essayons de créer. Et c'est toujours agréable de voir cet objectif que nous visons. Nous visons à créer ce personnage. Ensuite, nous avons deux boutons où vous pouvez créer une boucle ou Serena en fonction de ce que vous appuyez. C'est donc ce que nous essayons de créer. Ensuite, nous avons un arrière-plan qui est floue. C'est donc l'objectif que nous devons créer. Et c'est toujours agréable d'imaginer cela dans votre esprit et d' essayer de le décomposer. Encore une fois, j'ai parlé d'une boîte verticale et d'une boîte horizontale dans la leçon précédente. Par exemple, ces deux boutons se trouvent à l'intérieur d' une boîte horizontale car ils sont en retard l'un à côté de l'autre. L'image et le bouton se trouvent à l'intérieur d'une superposition car vous superposez des objets les uns sur les autres. Des trucs très basiques, donc très bon d'imaginer ce que vous essayez de faire pour savoir quels éléments vous allez utiliser. Mais allons-y et créons notre propre truc. Nous devons donc d'abord importer des actifs. Commençons par ici dans l'interface utilisateur, cliquez avec le bouton droit de la souris et accédez à Nouveau dossier. Faisons un plan appelé arrière-plans. Ajoutons un autre dossier appelé Buttons. Ajoutons-en un autre appelé Fonts. Et le dernier, appelons ça des images. Peut-être qu'on a besoin d'une icône appelée plus tard, mais c'est pour plus tard. Par conséquent, ici, dans les milieux, je vous ai fourni ces supports de cours ici. Donc, dans le matériel de cours, sautez de l'avant et trouvez l'interface utilisateur. Et ici aussi, ce sont les dossiers. Donc, en arrière-plan, vous pouvez faire glisser ça ici. Et pour celui-ci, ne cliquez pas avec le bouton droit de la souris et n' appliquez pas les paramètres 2D. Ce n'est pas un choix, il n'est pas pixélisé. Il s'agit essentiellement d'une image. Revenons donc en arrière et à l'intérieur des boutons. Ici, importons tous ces boutons. Nous n'allons donc pas tous les utiliser, mais vous avez une variété si vous souhaitez utiliser différentes couleurs dans votre version du jeu. Ensuite, passons aux polices de caractères, et revenons ici, allons aux fonds et allons ajouter tous ces fonds. Et ensuite, il vous demandera si vous voulez créer ces fonds ici et cliquez simplement sur Oui, tout cela créera des fonds pour vous. Et la dernière chose, ce sont les images ou les images. Et revenons en arrière et ajoutons les images, ce qui est un hasard et Serena. Donc, en les ajoutant ici, je vais m'appliquer à ces paramètres car ce sont en fait beaucoup de choix. Cliquez avec le bouton droit de la souris dessus et appliquez les paramètres de texture 2D papier. Juste comme ça. Si vous vous demandez où trouver des polices comme celle-ci, vous pouvez toujours rechercher des polices Google. Je l'utilise pour créer mes jeux vidéo. C'est tellement amusant. Google Fonts recherche ça. À l'intérieur, vous avez de superbes polices gratuites et vous pouvez les utiliser commercialement pour les publier sur Steam ou toute autre plateforme. Tous ces éléments sont donc gratuits. Quoi que vous trouviez ici, vous pouvez essayer de rechercher un fonds, essayer de trouver différents styles spécifiquement et ainsi de suite. Donc, site web très cool si vous le voulez, allez-y et trouvez-le dans les polices Google. Bien sûr, vous pouvez acheter des polices pour de l'argent et les importer à l'intérieur d'ici également. Cliquons donc sur Fichier et sauvegardons tout. Maintenant que nous avons tout, revenons à la version Blueprint du widget et nous sommes prêts à commencer ici. Donc, tout d'abord, je veux ajouter une boîte verticale. Cherchons la verticale et ajoutons ici. Et en fait, avant de le faire, j'ai oublié d' ajouter le panneau de toile. Ajoutez donc toujours le panneau de canevas comme premier élément. Et ajoutons ensuite la boîte verticale. Nous avons toujours besoin d'une toile d'abord. Nous avons maintenant cette boîte verticale où tout sera à l'intérieur. Nous avons donc, encore une fois, si je reprends cela ici, nous avons la case verticale où nous avions ce titre et sous celui-ci, nous avons les boutons. C'est pourquoi nous utilisons une boîte verticale. Et la première année, nous devons centrer cette pièce au milieu de l'écran. Et pour ce faire, c'est ici que vous utilisez des points d'ancrage. Il est très important d'utiliser des points d'ancrage et de les définir pour tous vos éléments. Cliquez donc sur cette ancre et positionnez-la au milieu de l' écran comme ceci. Maintenant, dans la position où vous écrivez 00, vous pouvez voir qu'il s'aligne sur cette partie supérieure ici, mais nous voulons qu'il soit au milieu. Et c'est là que vous pouvez jouer avec l'alignement. Vous pouvez voir l'alignement dans le x et l'alignement dans le Y. Et il semble que si vous écrivez 0,5 dans chacun, il s'alignera au milieu, comme ceci. Très bien, commençons par ici. Créons une superposition et la plaçons ici dans les bogues verticaux, car maintenant une superposition est là où vous superposez des éléments. Je veux donc superposer une image et un texte par-dessus. Cherchons donc une image. Faites-le glisser ici, placez-le dans la superposition et vous pouvez voir maintenant que nous avons une image. Nous allons sélectionner l'image que nous voulons utiliser. Maintenant, ce n'est que l'arrière-plan que vous souhaitez utiliser. Je vais juste utiliser ce bouton appelé. En fait, ce bouton plat, Black Square Flat. Donc, en utilisant celui-ci et je vais faire remplir tous ces segments. Vous pouvez donc voir ici que vous avez un alignement horizontal et vertical. Horizontalement, je veux le remplir ici. Maintenant, en fonction de la taille de vos boîtes verticales. En gros, je vais remplir le tout. C'est ce que sont les alignements verticaux et horizontaux. Ensuite, je vais utiliser du texte, et je vais déposer les textes au-dessus de la superposition. Ici. Je veux que le texte soit au milieu. Je vais donc aligner ce texte au milieu ici, au milieu ici. Et appelons-le ici dans le texte. Sélectionnez un personnage. Juste comme ça. Maintenant, on peut choisir la couleur, je pense que c'est très bien. Ensuite, nous pouvons sélectionner des éléments concernant la police. Ce que je veux faire, c'est nous utiliserons ce qui s'appelle Source Sans Bold. Donc, j'utilise celui-ci ici. Et je vais le faire 14 en taille. Habituellement, lorsque je regarde quand je crée l'interface utilisateur, est-ce généralement plus correct lorsque vous avez Zoom Plus deux ici, si vous regardez cela, donc si vous effectuez un zoom arrière et avant, généralement c'est autour de Zoom Plus deux, mais parfois je les corrige après les avoir ajoutés au jeu. Alors, sélectionnez un personnage et faisons quelques ombres. J'aime avoir quelques ombres sur mon texte. Donc, ici, dans la couleur de l'ombre, vous devez mettre à jour alpha ici l'alpha est essentiellement l' opacité de l'ombre. Donc, si vous en écrivez un, vous pouvez voir que vous avez de l'ombre pour nos opacités 0,5 comme 50 %, je vais écrire 0,35. Donc 35 % l' ombre et de l'ombre que je vais écrire 22. C'est donc un peu plus loin du texte, quelque chose comme ça. Ce que je vais faire maintenant, c'est que je vais aussi ajouter une image ici juste pour le style. Je vais donc ajouter une image ici à nouveau sous superposition. Maintenant, vous vous superposez l'un sur l'autre. Je vais sélectionner le bleu maintenant, le bouton, carré bleu à plat. Ce que vous pouvez faire maintenant, c'est que vous pouvez diminuer la taille ici dans le Y, de sorte qu'elle soit plus petite. Et je veux aussi le remplir horizontalement comme ça. Je vais faire une taille de cinq pixels, juste comme ça. Et si vous souhaitez visualiser votre interface utilisateur sans ces lignes pointillées, vous pouvez cliquer ici. Et je pense que parfois c'est cool de le faire pour que je puisse voir à quoi ressemble réellement mon interface utilisateur. Je viens de le faire pour le coiffage. Vous pouvez cliquer sur cette image ici. Vous pouvez également le rendre plus petit. Donc si je clique sur cette image ici, vous pouvez faire plus petit et y juste au cas où vous pensez que c'est trop grand, je vais en faire quelque chose comme ça. Maintenant, ce texte ne semble pas être complètement au milieu, car lorsque vous le réduisez, vous pouvez voir qu'il atteint cette ligne plus rapidement qu'ici. En revenant à 61 ans, je vais repousser ce texte un peu vers le bas. Ici, dans le rembourrage, on peut pousser les choses sur les côtés. Donc, du haut, je vais le pousser. Vous pouvez imaginer que quelqu'un le pousse par le haut. Je peux le pousser à des pixels. Donc, vous pouvez voir, si j'en ai écrit dix, vous pouvez voir que ça va baisser. Quelqu'un le pousse par le haut. Ici, à droite, quelqu'un le pousse par la droite. C'est donc ce que cela signifie. Et le jumelage ici depuis la baignoire, je voulais juste le pousser en pixels, donc c'est plus bas comme ça. Très bien, je vais ensuite faire une boîte horizontale pour pouvoir avoir ces deux boutons ici. Donc, à la recherche de l'horizontale. Et je vais le déposer au-dessus de mes dollars verticaux parce que je voulais sous cette chose que j'ai créée ici. Donc, cette boîte horizontale, je voulais avoir deux boutons. Créons notre premier. Le bouton est composé d' un bouton et d'une image. Faisons donc d'abord une superposition car nous voulons superposer deux éléments l'un sur l'autre. Nous voulons un bouton, premier bouton, et mettons ce bouton sur la superposition. Ensuite, nous avons besoin d'une image au-dessus du bouton, comme ceci ici. Donc, mettez-le jusqu'à la superposition. Nous avons donc deux éléments qui se superposent. Donc, en cliquant sur le bouton, sélectionnons le style. Donc ici dans le style, dans la normale, sélectionnons le bouton et je veux utiliser le bouton bleu ici, bouton, le carré bleu, celui-ci. Maintenant, certains paramètres peuvent être modifiés. La teinte est géniale. Je ne veux pas que ça fasse ça. Je vais donc changer la teinte pour que je puisse utiliser les vraies couleurs de mon bouton. Et puis, au lieu de bogues arrondis, vous pouvez voir qu'il y a une ligne bizarre autour de mon bouton. Et c'est parce que c'est une boîte arrondie. Je vais plutôt le changer en boîte. Je vois qu'il a l'air un peu basse résolution, c'est floue. Et il peut le faire en augmentant la marge pour la rendre plus claire. Par conséquent, 0,5 est la marge maximale que vous pouvez faire. Il va donc entre 0,10123450. Donc 0,5, le meilleur à utiliser. Dans ce cas, si je zoom arrière un peu comme ça, c'est à quoi ressemble le bouton. Je dois faire la même chose ici pour le Hubbard et presser. Donc, au lieu d'aller ici et trouver ce même bouton encore et encore, comme petite astuce, vous pouvez cliquer avec le bouton droit de la souris et copier ceci, puis cliquer avec le bouton droit et le coller ici. Un raccourci pour cela. Vous pouvez voir si vous maintenez la touche Maj enfoncée sur votre clavier et cliquez avec le bouton droit, vous pouvez copier. Maintenez la touche Maj enfoncée, cliquez avec le bouton droit et copiez, puis maintenez la touche Maj et cliquez sur gauche Et vous pouvez le coller ici. Il peut donc le faire avec ça. Vous pouvez également le faire avec la couleur de teinte. Cliquez donc avec le bouton droit sur Maj et cliquez avec le bouton droit pour copier Maj et cliquez avec le bouton gauche pour le coller sur ces deux. Pour ça. même chose avec les marges est un flux de travail très rapide ici. Quant à la teinte quand je survole. Donc, quand quelqu'un survole mon bouton, je veux qu'il le fasse, je voulais changer un peu de couleur. Donc, quelque chose comme ça. Ok, quand vous êtes satisfait de cela, vous pouvez cliquer sur OK. Et ici, en déprimé, je veux avoir une couleur un peu plus foncée quand quelqu'un appuie sur le bouton. Et maintenant, nous avons le bouton ici et ici pour cette image, mettons-le ici au milieu du bouton comme celui-ci. Laissez-nous sélectionner l'image. Et ce que je veux utiliser, c'est ici dans les images que nous voulons utiliser Serena pour celle-ci. Je vais le faire, vous pouvez soit trouver Tsarina ici dans les images comme celle-ci, soit cliquer et faire glisser. Parfois, c'est un moyen plus rapide comme cette année. Bon, donc nous avons l'image ici. Je vais le pousser un peu vers le haut parce que vous pouvez voir que nous avons ça ici et je dois le pousser un peu vers le haut pour faire croire qu'il se trouve au centre du bouton. Encore une fois, ce que je vous ai appris sur le rembourrage, nous le poussons par le bas, à partir du bouton, je peux le pousser vers les pixels vers le haut, comme ça. Ce que je veux faire ici, je veux cliquer sur cette case horizontale et cliquer sur Remplir. Maintenant, je peux voir que la boîte horizontale remplit le tout. Et la même chose avec la superposition, je veux cliquer sur remplir le trou. superposition remplit toute la zone ici. Et en ce qui concerne ce bouton ici, cliquons dessus et cliquons sur Remplir horizontalement et verticalement, comme ça. Ensuite, nous avons besoin d'un peu d'espacement entre ces deux-là. Vous pouvez voir qu'ils sont assemblés et nous ne voulons pas cela. Ici, vous pouvez rechercher une entretoise. Cela, je veux le mettre entre l'oreille et la boîte verticale, entre la superposition et la boîte horizontale ici. Et vous pouvez voir que c'est entre ces deux éléments maintenant, en sélectionnant cela, et c'est le x et le y, et c'est dans le y, nous avons besoin d'espacement. Je vais en faire dix, comme ça. Et vous pouvez voir maintenant que nous avons un peu d'espacement entre eux. Vous pourriez penser, pourquoi avez-vous rempli le tout ici ? Et j'ai aimé que mon interface utilisateur soit dynamique. Ce que je veux dire par là, c'est que si je clique sur cette case verticale maintenant pour la redimensionner, vous pouvez voir mon interface utilisateur se redimensionner dynamiquement. Je le redimensionne ici. Donc, au lieu de définir, si je clique sur le bouton, au lieu de définir la taille par cette image. Et plus tard, j'ai découvert que j'aime que ce soit plus grand. Au lieu d'aller ici et de redimensionner des choses, j'aimerais simplement cliquer sur mon élément supérieur et simplement redimensionner et le rendre beau. C'est donc une semaine que nous devons faire. Et je pense que c'est aussi plus propre de le faire comme ça. Nous avons maintenant ce bouton, nous avons besoin d'un autre bouton. Donc, si je clique sur cette superposition et que je clique sur Control D, ou vous pouvez cliquer avec le bouton droit de la souris et cliquer sur dupliquer. C'est la même chose. Nous avons donc maintenant deux boutons. Maintenant, pour cette image, je veux utiliser le bouton rouge. Celui-ci, bouton rouge, carré rouge, cliquez avec le bouton droit de la souris tout en maintenant la touche Maj pour copier, cliquez avec le bouton gauche tout en maintenant la touche Maj pour les coller. Bon, donc maintenant je l'ai et pour cette image, je dois la changer. Je vais donc regarder cette image maintenant. Je vais ajouter une entretoise entre ces deux boutons. Donc, une entretoise entre ces deux superpositions, comme ça. Et maintenant, cette entretoise est dans le x je vais augmenter de 15 pour celle-ci. Maintenant, j'ai deux boutons et ils sont bien assemblés. Maintenant, je peux faire glisser ça et l'agrandir. Je peux également le redimensionner ici. Je pense que quelque chose de ce genre serait très approprié pour moi. Maintenant, si vous cliquez sur la case verticale, assurez-vous qu'elle se trouve au milieu. Vous pouvez voir que ce n'est pas complètement au milieu. Maintenant, je vais changer cette position dans les X et Y à 00, comme ça. Et maintenant, c'est à l'intérieur du milieu. Compilons et sauvegardons tout. Donc, la dernière chose que nous devons faire ici maintenant que nous avons nos boutons, nous devons ajouter un arrière-plan. Et ce n'est qu'une image. Donc, si vous minimisez cela ici, et si je fais glisser une image ici derrière tout, je veux qu'elle remplisse tout l'écran. Encore une fois, vous pouvez cliquer sur l'ancre et cliquer sur celle-ci pour remplir tout l'écran. Et maintenant, nous pouvons simplement écrire 0 dans les décalages ici, 00. Maintenant, il remplit tout l'écran et vous pouvez modifier l'arrière-plan. Ainsi, dans le dossier de mon arrière-plan, je peux faire glisser mon arrière-plan. Et maintenant, il remplit tout l'écran ici. Maintenant, je veux flouter l' image. Et vous pouvez le faire. Si vous écrivez du flou ici et que celui-ci s'appelle flou d'arrière-plan, je vais le mettre ici et vous devez spécifier à nouveau la quantité de flou, vous devez cliquer sur les points d'ancrage, faire remplir tout l'écran, droite 00 et les décalages. Et vous pouvez écrire la quantité pour le flouter. Nous pouvons maintenant écrire dix par exemple, et vous pouvez voir que rien ne se passe. Et c'est parce que le flou d' arrière-plan doit être sous l'image pour être au-dessus, comme ceci ici. Maintenant, nous pouvons voir le flou. Et c'est ainsi que vous floutez les images. Et je pense qu'un flou de dix fonctionne bien pour celui-ci. Maintenant, ce que je vous conseille de faire, vous pouvez, par exemple, cliquer sur ce texte ici. Si je fais un projet sérieux, je change le nom de tous ces projets ici. Parce que si vous accédez au graphique, vous pouvez voir les éléments que vous avez créés. Vous pouvez ainsi voir toutes les images et les deux boutons que vous avez créés. Passons donc, par exemple, à ce bouton si vous cliquez dessus ici, et vous pouvez également le sélectionner ici, vous pouvez changer ce bouton en btn. Je l'utilise généralement comme préfixe pour les boutons. Et je l'appelle pour Serena. Et je clique sur l' autre et je l'appelle n. Écoutez, c' est très bien à faire, car si vous allez au graphique maintenant, nous pouvons réellement voir quels sont ces éléments. C'est le bouton de boucle. C'est le bouton de Serena. Je n'ai aucune idée de ce que c'est si je ne leur donne pas de nom, il m'est donc impossible de savoir ce que c'est. Et parfois, nous n'avons pas vraiment besoin de variables. Vous pouvez donc voir qu'il s' agit en fait de variables que vous pouvez utiliser ici dans le graphique d'événements. Mais parfois, nous n'en avons pas besoin comme variables. Par exemple, cette boîte de titre ici, nous n'allons jamais rien changer à ce sujet. Je n'ai donc pas vraiment besoin que ce soit une variable. C'est donc ici que vous pouvez décocher celui-ci appelé est variable. Il peut donc le décocher. Je peux faire la même chose avec celui-ci ici est variable. Et je pense que nous pouvons également le faire avec ces derniers. Faisons vraiment ça. Maintenez la touche Contrôle enfoncée, sélectionnez-les tous les deux, supprimez cette variable, Compiler et Enregistrer. Et vous pouvez voir dans le graphique que nous avons supprimé tous ces éléments. Il nous reste maintenant une seule image. Nous pouvons essayer de deviner ces images et c'est probablement le fond. Donc, si vous le regardez ici, image 1026, on appelle ça la même chose, 1026. Et nous n'avons pas vraiment besoin de le changer non plus. Je vais donc supprimer ce qui est variable. Et cela rend le tout plus propre. J'aime donc rester propre dans mes projets. Et ce ne sont probablement que les boutons dont nous avons besoin en tant que variables car nous allons les utiliser lorsque le joueur appuie sur les boutons. C'était donc les gars de l'écran de sélection des personnages. J'espère que vous vous êtes amusé à créer cette interface utilisateur et passons à la prochaine leçon. 37. Ajouter de l'interface utilisateur au port de vue: Nous allons donc ajouter notre interface utilisateur à l'écran. Nous avons donc créé cet écran de sélection de personnages et nous voulons l'ajouter ici à la fenêtre d'affichage. Donc, lorsque nous cliquons sur Play maintenant , rien ne se passe vraiment. Nous sommes de retour ici avec notre personnage, mais nous voulons ajouter l'écran de sélection des personnages. ce faire, nous ajoutons généralement une interface utilisateur dans la manette du lecteur. Passons donc aux Blueprints, et maintenant utilisons notre contrôle de joueur. Je crois que nous ne l'avons pas encore utilisé, donc il est toujours vide, ouvert, éditeur de Blueprint complet. Et à l'intérieur de la manette du lecteur se trouve endroit où nous ajoutons UR est si important à retenir. Supprimons ces événements par défaut. Nous pouvons toujours les ajouter si nous le voulons. Maintenant, il est très important de comprendre que interface utilisateur est quelque chose du côté client. Ce n'est donc que vous, en tant que joueur, qui va voir votre propre interface utilisateur. Donc, chaque joueur du jeu en tant qu'interface utilisateur. Vous avez peut-être un bar expérimenté ici. Vous avez un peu de nivellement ici. Je ne sais pas, une interface utilisateur aléatoire. Donc, toute l'interface utilisateur que vous avez est côté client, donc elle n'est pas côté serveur. Donc, toute l'interface utilisateur est individuelle pour chaque joueur. Revenons donc à la manette du joueur ici. Et la première chose, faisons des événements personnalisés. Nous allons donc créer un événement personnalisé et l' appeler initialiser les widgets. Et encore une fois, je vous l'ai déjà dit , au lieu de créer ces événements personnalisés, il est bon d'utiliser une interface Blueprint, , au lieu de créer ces événements personnalisés, il est bon d'utiliser une interface Blueprint, mais passons d'abord à l'aide d'une interface Blueprint. Faisons donc un autre événement, un autre événement personnalisé et je vais l'appeler CL, initialiser les widgets. Il s'agira donc d' un client qui n'a pas utilisé un côté client. La seule chose que nous utilisons si nous revenons à la base de joueurs maintenant, la seule chose que nous utilisons jusqu'à présent est côté serveur, donc l'exécution sur le serveur. Mais pour l'interface utilisateur, ils sont exécutés sur le client. Cliquez donc sur Exécuter sur le client propriétaire, puis fiable. Et maintenant, pour créer une interface utilisateur, nous disons créer des widgets. L'interface utilisateur s'appelle des widgets. Nous créons des widgets. Créez donc un widget. C'est ainsi que vous créez une interface utilisateur dans Blueprint. Donc, connectons-le ici. Et maintenant, vous devez sélectionner l'interface utilisateur que vous souhaitez créer. Et de toute évidence, nous n'avons pas grand-chose. Nous n'avons que celui-là, la sélection des personnages. C'est donc celui que nous voulons ajouter. Maintenant que vous l'avez ajouté, il est toujours agréable de cliquer avec le bouton droit ici et de la promouvoir en variable afin que vous puissiez utiliser cette variable plus tard lorsque vous souhaitez masquer ou afficher à nouveau la fenêtre. Promeut donc une variable. Appelons ça WB, c'est mon préfixe. Vous pouvez choisir ce que vous voulez. Et je vais appeler ça la sélection des personnages. Il s'agit donc de la variable Widget Blueprint de sélection de caractères . Maintenant, vers la fenêtre d'affichage, elle est donc visible. Vous pouvez voir ici si je clique sur Lire maintenant, rien ne se passe et c'est parce que vous devez l'ajouter à la fenêtre d'affichage. Donc, si je retourne ici, je dois faire glisser depuis la variable et dire ajouter deux fenêtres d'affichage. Et vous pouvez voir celui-ci appelé Ajouter à la fenêtre d' affichage. Juste comme ça. Donc maintenant, si vous cliquez sur Play et que rien ne va se passer car rappelez-vous que vous devez appeler le moteur LCD de l'événement ne sait pas ce que vous faites. Donc, à partir de cet événement personnalisé, vous l'avez peut-être déjà deviné. Nous devons appeler notre événement côté client ici. Ainsi, CL a initialisé des widgets. Cela passe d'un événement normal en cours d'exécution sur le client. Par conséquent, à partir du client, vous créez l'interface utilisateur et elle sera affichée. Mais bien sûr, nous devons également organiser cet événement car le moteur ne sait pas quand vous voulez organiser cet événement. Et je veux juste le lancer ici au début de la pièce. Donc, chaque fois que je clique sur jouer sur le jeu, je veux montrer ma sélection de personnages ici. Appelons cet événement ici, initialisons les widgets comme celui-ci. Maintenant, lorsque je clique sur Play, il va lancer cet événement. Cet événement exécutera cet événement qui s'exécute sur le client. Ensuite, nous allons créer l'interface utilisateur, puis l'ajouter à la fenêtre d'affichage. Nous allons tout sauver. Cliquons sur Play. Et vous pouvez voir quand je clique sur Lecture, mon interface utilisateur est maintenant à l'écran. Cependant, vous pouvez voir que je peux survoler les boutons, mais ma souris n'est pas visible. Cela est dû au fait que dans la manette du joueur, vous avez des valeurs par défaut dans la classe. Vous devez cliquer sur celui-ci appelé Afficher le curseur de la souris. Alors, en cliquant ici, compilons et sauvegardons et voyons ce qui se passe. Maintenant, je peux voir mon curseur, et vous pouvez voir maintenant que je peux voir mon interface utilisateur et cliquer sur les boutons. Vous voyez que nous avons un petit insecte ici. Je peux survoler le bouton que vous pouvez voir changer de couleur. Mais si je survole l'image, je ne peux plus la survoler. Vous pouvez voir que l' effet de survol disparaît. C'est parce que mon image bloque mon bouton. Nous devons remédier à cela. Revenons donc à l'interface utilisateur ici, et c'est très important. Cette image bloque actuellement ce bouton, je ne peux donc pas appuyer dessus. Et sélectionnons à la fois cette image et cette image. Allons-y et tu dois changer celle-ci. La visibilité de leur comportement. Handicap, remplacez-le par aucun, frappez testable. Et cela signifie que peu importe que cette image soit là. Je veux juste l'ignorer. La souris va donc l'ignorer. Vous pouvez voir ici en jouant maintenant, et je survole l'image, peu importe. Je suis toujours en train de planer sur le bouton. Ainsi, vous devez définir les éléments sur non testables si vous ne voulez pas qu'ils bloquent votre interaction avec les boutons et le monde. Ok, donc avant de terminer, au lieu de faire ces widgets initialisés par événement personnalisé, transformons en une interface Blueprint et vous pouvez également avoir quelques exercices à partir de cela. Nous allons donc le minimiser et essayer de le faire vous-même si vous le souhaitez. C'est la même méthode que nous l'avons fait avant d'aller dans le dossier des interfaces. Maintenant, nous en avions créé un pour la base de joueurs, nous devons donc en créer un nouveau pour la manette du joueur. Cliquez avec le bouton droit de la souris, accédez aux Blueprints ici et sélectionnez Blueprint Interface. Et encore une fois, je l' appelle généralement le nom du Blueprint dans lequel je veux l'utiliser. Nous voulons donc l'utiliser dans la manette du lecteur comme ceci et cliquer dessus. Et maintenant donnons un nom à cette fonction et appelons-la à nouveau, initialisons les widgets comme ça. Compilez et économisez. Et revenons à la manette du joueur. Rappelez-vous, encore une fois, n'oubliez pas de compiler ici, très important, compiler sauvegarder. Revenons à la manette du joueur. Et à l'intérieur d'ici, passons aux paramètres de classe. Et ici, dans les interfaces, ajoutons notre interface pour la manette du lecteur. Et maintenant, vous pouvez le voir apparaître ici. Vous pouvez ensuite écrire des widgets d' initialisation. Et vous pouvez voir les widgets d' initialisation de l'événement ici, qui proviennent d'une interface Blueprint. C'est ce que signifie l'icône. Maintenant, nous pouvons le connecter ici. Et nous pouvons également appeler l'événement ici, initialiser des widgets. Et encore une fois, je vais sélectionner celui-ci sous manette int Player, comme ça. Maintenant, il fonctionne parfaitement. Une fois encore. Si je clique sur Play, ça va fonctionner comme il se doit. 38. Fonctionnalité de sélection de personnages: Revenons maintenant à notre widget. Allons dans l'interface utilisateur et le Blueprint du widget. Et ici, nous voulons maintenant ajouter des fonctionnalités à l'interface utilisateur. Par conséquent, pour ajouter des fonctionnalités à l'interface utilisateur, n'oubliez pas que ce Blueprint de Widget est divisé en un concepteur et un graphique. Et c'est dans le graphique que nous ajoutons nos fonctionnalités pour les boutons. En cliquant sur le concepteur, vous pouvez cliquer sur l' un des boutons. Commençons donc par Serena en cliquant sur ce bouton. Et si vous descendez sur le bouton, vous pouvez voir certains événements que vous pouvez ajouter. Par exemple, que se passe-t-il si je clique sur ce bouton ? Que devrait-il se passer si je survole le bouton ? Que devrait-il se passer si je découvrais le bouton ? Nous avons donc différents événements que nous pouvons ajouter pour le bouton. Maintenant, je veux utiliser celui-ci pour l'instant, que se passe-t-il lorsque je clique sur le bouton ? Cliquez donc sur le plus, et vous ajouterez cet événement ici. Vous pouvez maintenant les supprimer si vous le souhaitez. Il s'agit des valeurs par défaut. Nous pouvons les ajouter si nous le voulons. Alors, en les sélectionnant, en cliquant sur Supprimer sur mon clavier. Donc, je vais juste avoir celui-là pour l'instant. Donc le flux de travail, avant de commencer, le flux de travail avec lequel nous allons est lorsque vous voulez créer le lecteur, vous allez appuyer sur ce bouton. Ce bouton va vous emmener à un événement dans la manette du joueur. Nous devons donc organiser un événement ici et la manette du joueur pour le frai sélectionne le personnage. Et lorsque vous sélectionnez le personnage, il passe par le mode de jeu. Et il est très important de se rappeler que le mode de jeu ne fonctionne que sur le serveur. Vous ne pouvez donc pas venir ici créer un événement personnalisé et le définir sur un client exécuté. Cela ne fonctionne pas. Le mode de jeu uniquement n'existe que sur le serveur. Et c'est très bien car nous pouvons utiliser le mode jeu pour vérifier ce que fait le client. Encore une fois, n'oubliez pas que dans Unreal Engine ou simplement en mode multijoueur en général, le serveur vérifie ce que font les clients, sorte que nous évitons la triche. Et le mode de jeu est très bon à utiliser pour cela car il ne fonctionne que sur le serveur. Nous pouvons donc faire passer les choses ici, puis un joueur dans le mode de jeu nous permet d'engendrer le joueur. Revenons donc au Blueprint du widget. présence d'un événement dans la manette du joueur, la manette va nous lancer dans le mode de jeu. Le mode de jeu, quand il voit que oui, vous êtes autorisé à générer le joueur, il va renvoyer il va renvoyer cette information à la manette du joueur. Vous pourriez vous demander pourquoi n' ajoutons-nous pas ce code ici ? Pourquoi l'ajoutons-nous à la manette du joueur plutôt qu'à la base de joueurs ? Parce que c'est le joueur que nous voulons dépenser un joueur et c'est spécifique au joueur. Comme nous n' avons pas de séance plénière, oubliez pas que nous sommes en train de frayer le joueur. Ainsi, ce code n' existe pas lorsque vous êtes ici dans l'écran de sélection car vous n'avez pas encore généré le lecteur. Vous ne pouvez donc pas ajouter de code ici. Cela ne fonctionnera pas car cela n'existe pas encore si vous n'avez pas créé le joueur. Donc vous ne pouvez pas, nous ne pouvons pas faire le code à l'intérieur d'ici, donc nous devons le faire dans la manette du lecteur, car la manette du joueur apparaît chaque fois que le joueur se connecte au serveur. Donc, si je joue à Counter-Strike ou si je joue à Maple Story, lorsque je me connecte au serveur, il crée automatiquement une manette de joueur pour chaque joueur. La manette du lecteur existe même si mon **** n'a pas encore répondu. Passons donc au Blueprint du widget. Et à l'intérieur d'ici, nous voulons commencer par un contrôle de plaque. Je pense que ce sera plus facile pour vous ici. Alors, nous allons créer un nouvel événement, faire un ici, et appelons-le. Appelons le personnage Select. Maintenant, parfois quand je suis confus sur la façon dont je devrais faire un mécanicien , je commence généralement par l'arrière, donc c'est parfois très agréable à faire. Parfois, vous pouvez commencer par l'arrière. Alors, qu'est-ce que vous essayez de réaliser au final ? Ce que j'essaie de réaliser, c'est celui qui s'appelle un acteur de spawn. C'est celui que nous allons utiliser. Finalement. Nous voulons créer un acteur, vous voulez faire naître le personnage. Et ici, c'est le personnage que nous voulons créer. Et laissez-moi créer un événement ici appelé couche d'apparition. C'est l'événement ultime que nous voulons obtenir avec un résultat. Vous pouvez donc commencer par derrière. Et au lieu de commencer ici, il est parfois beaucoup plus facile à comprendre. Donc, revenir en arrière est beaucoup plus facile parfois, encore une fois, engendrer le joueur. Cela devrait venir du mode de jeu, car comme je l'ai déjà dit, lorsque vous cliquez ici, il va aller à la manette du joueur ici, la manette du joueur va nous jeter à l'intérieur du mode de jeu, et le mode de jeu va nous jeter ici, répondra au joueur. Je vais faire glisser les variables Is sur l'événement ici. Et au lieu de la classe, changeons le nom de celui-ci, appelons-le joueur et créons la transformation. On peut juste appeler ça la transformation du frai, c'est très bien. Nous avons donc l'événement du joueur de spawn ici. Cela va venir du mode de jeu. Revenons donc au mode de jeu maintenant. Donc, nous travaillons à recul pour passer en mode jeu maintenant, je vais supprimer cet événement pour que vous puissiez commencer jouer parce que nous n'en avons pas besoin pour le moment. Économisez des composés, et je vais créer un nouvel événement ici, des événements personnalisés. Appelons cela la couche d'apparition de demande. Juste comme ça, demande un joueur d'obligations. Et il va lancer notre joueur Spawn depuis la manette du joueur. Mais pour le moment, nous n' avons pas de variable pour la manette du joueur, donc je ne peux pas appeler cet événement ici. Tu te souviens ? Maintenant, il devient un peu plus avancé car nous devons utiliser ce joueur d'apparition d' événement, qui se trouve dans la manette du joueur, nous devons l'utiliser en mode jeu. Et c'est ce qu'on appelle la communication Blueprint, comme je vous l'ai déjà dit, nous utilisons des interfaces Blueprint pour cela. Mais pour l'instant, ce que nous pouvons faire, c'est simplement cliquer dessus et nous pouvons ajouter la manette du lecteur. Ensuite, en tant que variable, nous pouvons sélectionner la manette du lecteur et nous l'appelons PC. Je pense que PC Maple Story, on l'a appelé oui, un PC Maple Story. Et puis créons réellement à partir de la manette du joueur. Maintenant, si vous faites glisser dessus, car maintenant que la variable est cette classe de Blueprint ici, nous pouvons maintenant appeler cette couche d'apparition. Donc, si vous faites glisser à partir de ceci et que vous dites calque d'apparition, Ok, maintenant nous pouvons appeler cet événement ici. Et comme avant, je vais les ramener à nouveau. Donc, en faisant glisser le joueur ici parce que celui-ci demande un joueur, nous allons l' appeler ici à nouveau à partir de la manette du joueur. Et S4, l'emplacement. D'habitude, je décris ça. Souvenez-vous donc d'une variable de transformation, si j'en crée une et que je vous montre ici, une variable de transformation est une variable où nous pouvons voir l'emplacement, la rotation et l'échelle, tout comme dans notre fenêtre d'affichage ici, lorsque nous cliquons sur quelque chose, nous pouvons voir la transformation. Il s'agit de la variable de transformation. Nous en avons donc toujours besoin pour définir l' endroit où le joueur doit apparaître, comment le joueur doit être pivoté lors du frai, la taille du joueur doit être un seul frai. Permettez-moi donc de supprimer celle-ci pour l'instant. Et au lieu d'avoir la transformation inverse, vous pouvez faire glisser d'ici et cliquer sur celui-ci, faire ceci, nous allons la décomposer en trois. Donc, l'emplacement, la rotation et l'échelle. Et d'habitude, je laisse ça dans le mode de jeu. C'est aussi comme ça que vous préférez en tant que programmeur, certaines personnes le font différemment, mais je l'ai généralement fait, je fabrique le transformateur et le décompose comme ça. Et puis je n'ai qu'à brancher l'emplacement ici parce que la rotation est la même et que l'échelle est la même. Voici donc à quoi ça ressemble. Nous pouvons également, au lieu de l'emplacement, nous pouvons l'appeler lieu de frai. Juste pour ne pas être confus plus tard sur ce que c'est. Ok, donc maintenant j'ai celui-ci appelé Request Spawn Player. Maintenant, ici, dans le joueur sélectionné, c'est là que ça va être parce que le joueur sélectionné va nous jeter ici. Et pour communiquer avec un mode de jeu. Encore une fois, je l'ai déjà dit , le mode de jeu fonctionne uniquement sur le serveur, donc vous devez l'exécuter sur le serveur. Nous savons donc comment le faire maintenant. Faisons donc un événement personnalisé et appelons-le S RV, sélectionnez un personnage. Et déjà d'ici, nous pouvons organiser cet événement. Donc SRB sélectionne le caractère et n'oubliez pas de l'exécuter sur le serveur, celui-ci, sélectionnez un personnage et cliquez sur fiable. Nous avons donc maintenant ce personnage sélectionné. Il va passer par le serveur. Et rappelez-vous, nous allons appeler le joueur d'apparition de la demande. Et encore une fois, nous devons communiquer avec notre plan directeur. Nous devons utiliser le mode de décroissance ici à l'intérieur de la manette du lecteur, je vais vous apprendre à communiquer quels Blueprints. C'est quelque chose que nous n'avons jamais touché auparavant. Pour communiquer avec le mode de jeu. Vous devez dire qu'il obtient le mode de jeu. Très basique. Maintenant, obtenez le mode de jeu. Ce n'est pas votre mode de jeu ici. Il s'agit simplement d'un mode de jeu général dans le moteur. Lorsque vous dites « obtenir le mode jeu », vous devez définir. Vous pouvez voir ici, si vous maintenez la souris dessus, il indique que c'est retour à la base actuelle du mode de jeu. Maintenant, lorsque vous obtenez le mode de jeu, vous devez définir de quel mode de jeu vous parlez, car il ne s'agit que du mode de jeu général. Et nous avons quelque chose qui s'appelle le casting. Donc, si vous faites glisser cela et dites que coût coûte deux moyens comme lesquels, de quel plan je parle. Je parle de TM Maple Story. Ça coûte donc à Maple Story, celui-là. D'accord ? Maintenant, en tant que Maple Story, cela signifie que je peux maintenant utiliser tout ce qui se trouve à l'intérieur de ce plan. Maintenant, par exemple, je peux utiliser ou je peux appeler cette demande de spawn player. Donc, si je traîne et que je dis demande un joueur d'apparition, vous pouvez voir que je peux appeler cet événement maintenant. Ou disons que si j'ai créé un événement appelé une variable appelée bonjour, et que c'est une transformation, je peux revenir à ma manette et dire : Bonjour. Je peux voir maintenant que je peux également obtenir cette variable. C'est ainsi que vous communiquez entre les Blueprints pour que je puisse obtenir le mode général de jeu. Et je le dis, je parle spécifiquement histoire de GM Maple car parfois, dans les jeux, vous avez plusieurs modes de jeu, donc vous n'en avez pas qu'un parfois. C'est de cela que je parle. Quant à la manette du joueur, ce que vous pouvez faire ici est d'obtenir la manette du joueur. Et vous pouvez voir, vous pouvez obtenir la manette du joueur, même principe. Vous pouvez voir, maintenant il s'agit d'une manette de joueur général et vous pouvez aussi voir le coût, car je parle spécifiquement de cette histoire de BC Maple Story. érables Bc. Vous pouvez voir que c' est ainsi que vous communiquez avec les Blueprints. Maintenant, ce bon contrôle de la plaque est réservé au joueur solo. Je vais vous l'expliquer dans un peu. Supprimons donc celui-ci ici. Et au lieu d'établir des coûts, vous savez maintenant ce qu'est l'établissement des coûts. Au lieu d'établir des coûts, j'aime utiliser les interfaces Blueprint. Le problème avec le casting, c' est qu'il crée références difficiles et qu'il va retarder votre jeu, beaucoup d'entre elles. Donc, si vous avez un gros jeu sur lequel vous travaillez depuis un an et que vous avez beaucoup de casting comme vous le causez, vous en coûtez cher. Et vous le faites mille fois dans un jeu, ça va ralentir votre jeu. Maintenant, je ne dis pas que c'est mauvais à utiliser. Je l'utilise parfois et vous devriez l'utiliser parfois. Mais chaque fois que vous pouvez utiliser une interface Blueprint, je vous recommande d'utiliser une interface Blueprint afin de ne pas créer ces références matérielles, ce qui ralentira votre jeu. Donc, vous devez d'abord réfléchir à ce que vous essayez de faire référence ? Ce que nous essayons de faire référence au mode de jeu. Nous pouvons donc utiliser cet événement ici. Bon, donc pour le mode de jeu, nous devons créer une nouvelle interface Blueprint pour le mode de jeu. Maintenant, passons aux interfaces, créons une nouvelle interface Blueprint ici, puis appelons ça termine le mode de jeu. Maintenant, ici, la fonction que nous voulons créer s' appelle, je vais le faire. Ensuite, je peux vous montrer de quoi je parle. Je pense que c'est beaucoup plus facile. Appelons donc ça Get's Game Mode réf. Nous essayons donc d'obtenir la référence du mode de jeu. Et c'est une fonction, donc nous créons une sortie. Ici. La variable que vous souhaitez sélectionner est celle laquelle vous tentez de faire référence. J'essaie de faire référence à mon histoire d'érable GM. Donc mon mode de jeu, et appelons-le simplement le mode de jeu. Ok, donc maintenant j'ai la fonction et ajoutons à nouveau. Il est sorti sur notre plan de camouflage, l'interface d'un jeu ou d'un plan. Allons donc dans Paramètres de classe et sélectionnons. Il est venu ici et a composé Save. Et encore une fois, vous pouvez voir l' interface apparaître ici. Et comme mode de jeu. Nous devons maintenant définir ce qu'est ce mode de jeu. Et je vais juste traîner et dire soi-même, ce que soi veut dire, quel que soit le plan dans lequel je suis. En ce moment, je suis dans l'histoire de GM Maple Story. Maintenant, il connaît le mode g, m, k, ou ce mode de jeu signifie GM Maple Story. C'est donc ce que soi veut dire. Donc, soi signifie juste quoi, quelle classe Blueprint je suis en ce moment. Bon, maintenant que nous avons créé cela, nous pouvons maintenant revenir à la manette. Et au lieu de faire du casting, nous pouvons maintenant appeler cette fonction ici appelée Get Game Mode brut. Alors glissons-nous d'ici et disons Get Game Mode réf. Et en tant que fonction lorsqu' il est écrit message, cela signifie qu'il provient d'une interface Blueprint et que c'est la bonne. Voyez donc toujours s'il indique un message avant de le sélectionner, s'il provient d'une interface Blueprint. Alors, sélectionnez-le ici. Nous avons le mode de jeu maintenant et nous pouvons faire ce que nous voulons, comme avant, par exemple, appeler cette variable Hello aléatoire. Donc, en disant bonjour, vous pouvez voir maintenant que ça fonctionne aussi. Donc, juste pour l'expliquer rapidement, ce qui se passe, c'est que vous obtenez le mode général Okay, puis vous dites obtenir le mode jeu rref. Et c'est la fonction que nous avons créée ici. Et il sait ce qu' est le mode de jeu car à l'intérieur d'ici, nous définissons la variable Mode de jeu comme auto-référence, ce qui signifie qu'elle la connaît. L'histoire de Gm Maple. Voici donc GM Maple Story que nous utilisons. Très bien, donc c'est le mode de jeu ref que nous voulons maintenant utiliser. Supprimons cette variable avant que j'oublie. Appelons celui-ci appelé Requests spawn player. Donc, par ici, demandez le joueur de spawn. Et je dois définir mon joueur. Et je ne veux pas encore faire ça. Je veux définir mon joueur ici parce que lorsque je clique sur Tsarina, mon joueur sera Tsarina. Et quand je clique sur le bouton, Luke, je veux définir le look de mes personnages. Laissez-moi simplement glisser ça et continuez ici. Et quant à l'emplacement, nous pouvons également continuer et le faire glisser ici. Et ensuite, vous pouvez le voir ici. Sélectionnez un personnage, je vais simplement continuer à les brancher là-dedans. Maintenant, nous pouvons appeler celui-ci appelé Sélectionner un personnage. Et c'est là que je veux appeler dans le Widget Blueprint. Maintenant, le Blueprint Widget, je dois appeler ce personnage de sélection. Nous allons donc maintenant nous entraîner à nouveau avec notre interface Blueprint. Ainsi, dans le Widget Blueprint, vous pouvez dire obtenir le personnage du joueur. Maintenant, c'est bon à utiliser en solo car vous pouvez voir le joueur et cet indice est 0. Mais vous, lorsque vous vous connectez en tant que joueurs et le jeu en multijoueur. Le joueur à connecter doit être planifié X1. Et puis le troisième gars se connecte au serveur, et il est prévu x2 et 3406 et ainsi de suite. Ainsi, à mesure que de plus en plus de joueurs se connectent, ils auront des index différents. Nous ne pouvons donc pas vraiment l' utiliser en mode multijoueur. Il s'agit uniquement d'un mode solo et multijoueur. Nous utilisons Get Owning Player. Et si vous survolez la souris, il est indiqué que manette du lecteur est associée à cette interface utilisateur. Il va obtenir cette manette de lecteur, votre manette de lecteur, vous en tant que joueur connecté, il va obtenir votre manette de lecteur, qui est associée à cette interface utilisateur. Maintenant, nous avons la manette du joueur, et encore une fois, nous devons dire obtenir la référence de la manette du joueur, et qui ne l'a pas encore fait. N'oubliez pas que nous avons créé une interface pour la manette du lecteur. Nous pouvons l'utiliser en cliquant ici. Et comme avant, cliquons sur Ajouter une fonction et disons obtenir le contrôleur de mise en page réf. Et maintenant, nous pouvons ajouter une sortie. Et tout comme ce que j'ai déjà dit, quoi essayez-vous de faire référence ? C'est ce que vous devriez avoir comme variable que j'essaie de référencer mon contrôleur de lecteur, PC. Nous appelons ici l'histoire PC Maple et nous l'appelons manette de lecteur. Bon, alors n'oubliez pas d'aller dans la manette et vous devez définir la manette du joueur. Donc, comme avant, traînez de l'année et dis-toi. La manette du joueur est donc définie comme cette Maple Story PC. Maintenant, ce que nous pouvons faire dans le widget, nous pouvons obtenir le joueur propriétaire. Maintenant, nous avons la manette du joueur, et maintenant je dois spécifier de quelle manette de joueur parlez-vous spécifiquement ? Je parle de et nous avons fait ce qui s'appelle obtenir manette de joueur ref maintenant ici. Maintenant que nous avons la manette du joueur et ce que nous voulons faire à l'intérieur d'ici, nous voulons appeler cet événement sélectionner un joueur, sélectionner un personnage. Et nous pouvons appeler cela ici un personnage de sélection. Et vous pouvez voir que nous pouvons sélectionner le personnage. Donc, lorsque vous cliquez sur Tsarina, nous voulons que le personnage soit Serena. Lorsque nous cliquons sur Luke, nous voulions un regard agréable. Ici, au lieu d'utiliser le Select Character, il y a l'événement normal, tout comme ce que je vous ai dit auparavant tout comme ce que je vous ai dit auparavant, transformons en une interface Blueprint. Pour revenir en arrière, c'est la manette du joueur. Alors, en allant à la manette du joueur, créons une nouvelle fonction ici, appelons-la sélectionner un personnage. Et créons deux nouvelles variables. L'un est le joueur et l'autre est l'emplacement du lien. Je vais donc supprimer celui-ci ici pour l'instant. Je vais compiler. Allons ici, à l'interface et au personnage de sélection que nous venons de créer. Faisons un acteur ici. La variable est donc acteur, et c'est une référence de classe car c'est quelque chose que nous allons créer. Donc, une référence de classe, et appelons ça joueur. Et l'autre est le lieu d'apparition et c'est un vecteur. Donc, l'emplacement de l'étendue du vecteur, comme ça. Et nous pouvons maintenant finir comme un contrôleur, appeler cela en disant sélectionner un personnage. Et il vient ici d' une interface Blueprint. Et nous pouvons le relier ensemble. Maintenant, puisque nous avons celui-ci, nous pouvons maintenant revenir au Blueprint du widget ici et l'appeler nouveau sélectionner un personnage. C'est donc très bon à pratiquer. En général, je n'arrive pas directement à l'intérieur de la manette du lecteur ou de l'interface car je veux vous apprendre la différence. Alors, faisons-le. Comme le personnage, c' est la fonction ici. Juste comme ça. Et vous choisissez Serena comme personnage. Bon, revenez à la créatrice. Cliquez sur Luke, le bouton ici, redescendez, cliquez sur décliqué. Et en tant que Luke, je vais juste copier, coller tout ce code à nouveau, copier-coller. Et je vais le faire regarder ici. Donc, quand on clique sur la boucle, ça va apparaître. Quand on clique sur la sérine, ça va parrainer Arena. Passons donc en revue le code. Donc, lorsque je clique, je vais sélectionner mon personnage. Je vais exécuter cette fonction. Cette fonction est finalement la manette du joueur. Je vais donc exécuter cette fonction, cet événement ici, sélectionner un personnage va passer par le serveur. Les serveurs, puis passer par le mode de jeu. Et il va demander à un joueur. Et encore une fois, je veux en faire une fonction Blueprint Interface, comme vous pouvez le voir ici en mode jeu, c'est juste une fonction normale pour l'instant. Nous pouvons donc voir qu'il faut un peu de temps pour créer les fonctions d' interface, mais c'est très agréable à faire et cela maintient votre projet optimisé et propre. Demandez donc un joueur d'apparition, revenons à la fonction ou à l'interface du mode de jeu. Appelons cela un joueur de création de demande. Juste comme ça. Et pour celui-ci, nous avons ajouté, revenons au mode de jeu. Nous avons ajouté la manette du joueur. Nous avons ajouté l'acteur en tant que joueur. Nous avons ajouté les lieux d'apparition. Alors permettez-moi de le supprimer pour l'instant, compiler des sauvegardes, et revenons en arrière. Je les supprime juste avant de les créer pour qu' ils ne soient pas mis sur écoute. Nous allons donc créer trois variables différentes. L'un était la manette du joueur, l'autre était le joueur. Et le troisième, c'était le lieu de frai. Sur l'emplacement de l'apparition se trouve un vecteur et le joueur était acteur. Et c'est la référence de classe car nous voulons engendrer le joueur. La manette du joueur est notre PC Maple Story. Maintenant, cette couche d' apparition de demande, je vais l'appeler ici la couche d' apparition de demande , mode de jeu indépendant. Et maintenant, nous pouvons le reconnecter comme ça. La cible est donc la manette du joueur et celle-ci à l'endroit. D'accord ? Donc, avant de cliquer sur Serena, il va passer par le mode de jeu. Voici la manette du lecteur, désolé, cette charge électrique va passer par le serveur et maintenant nous devons appeler la bonne. Si je le supprime, nous devons appeler le lecteur d'apparition de la demande car nous venons de le faire. Et je vais sélectionner ce message. N'oubliez pas de sélectionner un message lorsqu' il s'agit d'une fonction d'interface. Vous pouvez également voir cette icône lorsqu' elle touche une fonction d'interface. Et encore une fois, reconnectez-les. Et maintenant, vous devez définir ce qu'est la manette du joueur. Parce que même si en mode jeu, vous avez appelé le contrôle de la plaque ici et appelez cette fonction ici. Vous n'avez pas vraiment défini ce qu'est la manette du joueur. Et revenons en arrière. Maintenant. C'est vide pour le moment. Alors, sortons de ça. N'oubliez pas que nous sommes à l'intérieur de la manette du joueur. On peut simplement traîner et se dire soi-même. Nous ne parlons que de contrôleur d'affichage ici. Il va donc passer par cet événement. Et puis dans le mode de jeu, demandez le joueur d'apparition, ça va disparaître. Et nous le faisons passer en mode jeu parce que nous ne voulons pas que le client triche. Nous vérifions tout cela et cela revient au joueur d'apparition, à la manette du joueur. Il va engendrer le joueur. Et ça va engendrer un joueur ici. Maintenant, au lieu d' un petit joueur, encore une fois, nous pouvons en faire une fonction d' interface. Il contient donc le joueur comme acteur et engendre la transformation. Pour le supprimer, accédez à l'interface de la manette du lecteur. Je sais qu'il y a beaucoup de choses qui se passent, mais si vous obtenez cela, essayez de regarder cette vidéo deux ou trois fois, vous obtiendrez un comme vous serez un expert en la matière. Essayez donc de vous entraîner et je sais que c'est difficile, mais une fois que vous verrez cela deux ou trois fois, cela deviendra beaucoup plus facile. J' ai eu du mal à faire tout ça. Faisons donc le joueur d'apparition. Et nous avions, maintenant j'ai presque oublié, nous avions le joueur comme acteur et nous avons également eu la transformation du frawn. Il s'agissait donc d'une transformation et le joueur était acteur, et c'était une référence de classe. Bon, revenons donc à la couche de liaison de la manette du joueur et à six événements de couche d'apparition. Et maintenant, nous pouvons le connecter ici. Je connecte la dose et je connecte ça ici. Et rappelez-vous que cela vient du mode jeu. Vous devez donc aussi le changer dans les modes de jeu, probablement en bogue. Et rappelez-vous que c'est aussi à partir des fonctions de l'interface. Nous avons donc besoin de cette icône ici. Permettez-moi donc de le supprimer et de dire « spawn ». En fait, laissez-moi glisser depuis la couche d' apparition de la manette du lecteur. Maintenant, je peux cliquer sur ce message de joueur. Et relions-les ici, juste comme ça. Nous allons donc engendrer le joueur. Et nous allons revenir à la manette du joueur et cela va engendrer le joueur. Ok, donc quand on crée un joueur, on doit faire une dernière chose. Nous devons utiliser quelque chose appelé processus parce que vous avez créé le joueur, mais vous n'avez pas dit au moteur que vous vouliez contrôler ce joueur et c'est ce que nous appelons posséder. Faisons donc référence à la base de joueurs. C'est ce que nous devons faire, car nous devons faire référence à un acteur. Qu'est-ce que vous essayez de contrôler ? Et nous essayons de contrôler cela, cet acteur naissant qui est une base de joueurs parce que maintenant nous l'avons engendré. Ici. Nous avons maintenant la référence à la base de joueurs. Et je crois que nous n'avons pas créé d'interface pour cela. En fait, nous avons une base de joueurs. Allons à l'intérieur d'ici. Et réinventons-en un nouveau. Disons que c'est un représentant de calque. Nous obtenons donc la référence du joueur comme ce que nous avons fait avec la manette du joueur et le mode de jeu. Et nous essayons de référencer la base de joueurs bp. Ici, appelons ça une couche. Et encore une fois, n'oubliez pas de retourner à la base de joueurs, retourner à la base des joueurs. Et à l'intérieur d'ici, nous trouverons la réf Get Player. Comme avant, quel est le joueur ? Le joueur est lui-même. Donc, quel que soit le plan dans lequel nous nous trouvons. Maintenant, ce que nous essayons de faire c'est ici, dans la manette du joueur. Nous devons donc faire référence à la base de joueurs. Obtient donc la couche REF. Et c'est parce que maintenant c'est le joueur, c'est l'acteur, mais il faut définir car c' est le joueur. Et en tant que joueur, je veux posséder ces joueurs répondants. Vous devez donc le faire dans Blueprint pour pouvoir indiquer le moteur. Oui, j'ai engendré l'acteur, mais je veux aussi contrôler cet acteur. Bon, donc maintenant, nous avons fait tout ça. Donc, beaucoup de code dans cette vidéo, je m'excuse de l' avoir rendu trop long. Je sais qu'il devient parfois mouvementé, mais nous ne pouvions pas le raccourcir. Et j'ai essayé d'expliquer tout ce que je traversais. Mais maintenant que nous cliquons sur Play et que nous cliquons sur le bouton, vous êtes en train de frayer. Mais cette interface utilisateur reste toujours à l'écran. Passons à la leçon suivante où nous supprimons cette interface utilisateur. 39. Supprimer l'interface utilisateur du port de vue: Maintenant que nous avons terminé notre sélection de personnages, supprimons l'interface utilisateur de la sélection des personnages. Donc, lorsque je clique sur le bouton, vous pouvez voir que l'interface utilisateur reste toujours ici. Nous allons donc d'abord supprimer ça. Passons à l'interface utilisateur et au Blueprint du widget ici. Donc, lorsque je clique sur Serena, lorsque je sélectionne mon personnage, je veux supprimer l'interface utilisateur. Et c'est très facile à faire car maintenant nous avons tout mis en place. Je peux prendre cette manette de joueur, ce que j' essaie finalement de faire. N'oubliez pas que nous avons ajouté le widget ici. Nous avons ajouté un widget initialisé. Nous avons ajouté le widget de sélection de personnages. Au lieu d'ajouter deux fenêtres d'affichage, il y a quelque chose qui s'appelle supprimé des parents et c'est ce que j'essaie de faire. Je dois donc obtenir une référence pour cette variable dans le Blueprint du Widget. Nous avons donc déjà celui-ci et nous avons le contrôle de la couche get notre référence. Nous avons donc déjà la référence de la manette du joueur, ce qui nous permet d' appeler facilement cette variable. Nous avons accès à ce plan directeur. Maintenant, si je sors de cela et que je dis WB, et que vous pouvez voir que nous avons cette variable que nous avions ici, obtient la sélection des personnages WB. La seule chose que je dois faire est de dire retirer des parents. C'est ainsi que vous supprimez l' interface utilisateur de la fenêtre d'affichage. Très facile, très courte vidéo. Je vais aussi copier ça pour Luke. Alors copiez le collage ici. Et nous allons le relier ensemble comme ça. Maintenant, nous déplaçons Dui. Voyons ce qui se passe. Si je clique sur Jouer maintenant, je sélectionne le personnage. Vous pouvez voir que je suis en train de frayer. Nous n'avons pas encore vraiment défini de point de frai. Et si j'ouvre mon autre écran ici, le client, et si je clique sur la boucle par exemple, vous pouvez voir que je fraie aussi en tant que Luke et moi sommes apparus en tant que Tsarina ici. Maintenant, l'emplacement des pieds, comme vous pouvez le voir, est bloqué et c' est parce que nous n'avons pas encore défini de lieu de frai. Et vous pouvez également voir que nous apparaissons en tant que personnage ici. Et c'est parce que nous devons maintenant repartir, je vous l'ai déjà dit, dans les paramètres du projet, dans les cartes, les modes et le mode de jeu. Maintenant que nous avons un écran de sélection de caractères, nous pouvons supprimer cette classe de points par défaut. Nous ne voulons pas apparaître comme n'importe quel personnage. Nous voulons simplement sélectionner Aucun. Et nous sélectionnons notre propre personnage à partir de l'écran de sélection des personnages. Nous ne voulons donc pas apparaître avec un personnage préfabriqué. Fermons ça et je vais tout sauvegarder pour m' assurer que ça marche. Et je vais dans les paramètres du monde et je m'assure que dans les paramètres du monde que le mode jeu n'en dit pas plus ici. Maintenant, lorsque je clique sur Play et que je fais apparaître comme par exemple, vous pouvez voir que nous n'avons pas de personnage ici, mais parce que nous n'y apparaissons pas par défaut, cela fonctionne maintenant. Et la prochaine chose que nous voulons faire est de créer un lieu d'apparition, car maintenant nous n'avons plus vraiment de lieu d'apparition. Nous sommes juste en train de repartir de rien ici. Nous voulons donc ajouter un lieu d'apparition, et c'est ce que nous ferons dans la prochaine leçon. 40. Créer le lieu de la spawn: Donc pour cet emplacement unique et nous voulons faire apparaître le joueur au départ du joueur. Donc avant que cela ne fonctionne, car nous avons défini cette clause ON par défaut sur l' un des caractères. Mais maintenant, lorsque vous créez un joueur dans l'interface utilisateur ici dans les Blueprints du widget. Si vous accédez à nouveau au graphique, comme vous le voyez ici, lorsque nous lançons le joueur, nous les engendrons à zéros, à 0. C'est pourquoi ils réagissent ici. En haut à gauche. Nous devons définir de les faire apparaître ici au départ du joueur. Et je veux créer des points d'apparition dans le mode de jeu, car rappelez-vous que le mode de jeu ne fonctionne que sur le serveur afin que la manette du joueur triche si quelque chose se trouve à l'intérieur d'ici. C'est l' objectif du multijoueur. Nous essayons d' empêcher le refus de tricher ici au début. Donc, lorsque nous commençons à jouer au jeu, je veux définir ce dernier point comme étant mes points de départ. On peut dire que vous obtenez un acteur de classe. Et ce que c'est l' acteur de classe, il vous permet d'obtenir tout ce qui est déjà apparu à l'intérieur du niveau. donc très important de se souvenir ce qui est déjà apparu à l'intérieur du niveau. Ce départ de joueur est déjà apparu et nous pouvons essayer de le rechercher. Alors obtenez un acteur de classe, nous pouvons obtenir tout ce qui est déjà apparu et vous pouvez rechercher des démarrages de joueurs. Et vous pouvez voir ici, le joueur commence, vous pouvez le sélectionner ici. Il va donc sélectionner un joueur débute, ça va être beaucoup plus difficile. Imaginez donc que si nous avions plusieurs statistiques de joueurs, alors vous deviez définir laquelle essayez-vous d'obtenir, car pour l'instant, il n'y a qu'une de ces statistiques au hasard. Mais ce n'est pas grave pour l'instant, à cette fin, nous sommes simplement déplacés ici. Nous n'avons qu'un seul point pour le moment. Nous allons donc compiler et économiser. Alors, au début de ce joueur, je vais amener les acteurs à l'emplacement. Et puis je vais faire de cela une variable, promouvoir une variable et l'appeler lieu d'apparition du joueur. Ok, donc maintenant nous avons cette variable, l'emplacement d'apparition du joueur dans le mode de jeu. Nous avons maintenant cet endroit unique. Nous pouvons maintenant l'utiliser à l'intérieur du joueur. Donc, à l'intérieur de la base des joueurs, à l'intérieur du graphique de l'événement ici. Nous pouvons donc maintenant faire apparaître le joueur à l'endroit que nous avons créé dans le mode de jeu. Donc, quand nous avons fait apparaître le joueur en haut ici, avant que je fasse quoi que ce soit, disons des sets. En fait, créons une variable personnalisée. Appelons ça l'emplacement de l'apparition du joueur. Nous allons donc définir cet emplacement de liaison à l'intérieur du joueur ici. Et je veux le faire passer par le serveur. Donc, ce n'est pas de la tricherie. Et dire que les serveurs définissent l'éblouissement, génèrent l'emplacement et l' exécutent via le serveur, fonctionnent sur le serveur, fiables. Et ce que nous essayons de faire, c'est que nous essayons de dire, comme si nous avons essayé d'utiliser ce qu'on appelle l'emplacement de l'acteur. C'est la fonction ultime que nous essayons d'utiliser définir l'emplacement de l'actrice. N'oubliez pas que vous devez le faire à l'intérieur d'une côte. Notifiez. Parce que rappelez-vous comme ce que nous avons dit précédemment dans la fonction de déballage, cela sera mis à jour pour tous les clients, car ce moment, vous l'exécutez via le serveur. Donc ce que nous essayons de faire ici, alors laissez-nous simplement le faire et peut-être que c'est beaucoup plus clair si nous faisons d' abord ici, ce que nous essayons de faire, c'est que nous essayons d'obtenir ce dernier emplacement du jeu. mode. Donc, comme ce que j'ai dit auparavant, obtenez le mode jeu. Et puis vous pouvez dire obtenir un graphique chimio, que nous avons créé plus tôt. Et maintenant en tant que mode de jeu, vous pouvez prendre ce qu'on appelle le dernier emplacement de l'os. Maintenant, nous avons cette variable à l'intérieur d'ici. Cliquons avec le bouton droit de la souris et promus en une nouvelle variable à l'intérieur d'ici. Et je vais juste appeler ça la même chose, le lieu d'apparition du joueur. Mais cette fois, puisque je suis sur le serveur, reproduisons-le maintenant sur les clients car lançons ça ici et je peux vous dire pourquoi. Ainsi, le lecteur de serveur a défini l'emplacement du plasmon. Et commençons le jeu. Et quand je commencerai à jouer au jeu et à commencer le jeu, il s'exécutera chaque fois que vous apparaîtrez le personnage. Donc, lorsque je clique sur Play, le début du personnage n'a pas encore joué. Mais que se passe-t-il si je clique sur le joueur ? Maintenant, le jeu débutant va jouer. Donc, chaque fois que j'engendrerai mon personnage, ça va se lancer. Donc, pour commencer le jeu, chaque fois que j'ai créé le personnage, je veux immédiatement définir l'emplacement du joueur. Définit donc l'emplacement de la couche, emplacement de l' apparition , et non l'emplacement. Ainsi, le joueur crée l'emplacement. Et transformons également celle-ci en interface Blueprint. Donc, définissez l'emplacement de l'apparition du joueur. Supprimons celui-ci ici de la base des joueurs et passons à la base du lecteur d'interface. Créons une nouvelle fonction appelée set player spawn location. Revenons à la base des joueurs et disons Définir les emplacements de liaison des couches. Appelons donc cet événement. Et connecté ici. Lorsque j'ai commencé à jouer au jeu, j'appellerai cet événement ici. Définissez donc l'emplacement d'apparition du lecteur , puis il passera par le serveur et le serveur. Il va obtenir les modes de jeu. Les modes de jeu apparaissent ici. Et je vais définir la variable ici. Mais n'oubliez pas que vous exécutez cela via le serveur. Le client n'a donc aucune chance de savoir ce qu' est cette variable car elle ne s'exécute que sur le serveur. Donc, seul le serveur que vous pouvez voir ici, je suis le serveur maintenant. Seul le serveur sait ce qui se passe actuellement, le client ne peut pas voir l'emplacement d'apparition. Et tout comme ce que je vous ai déjà dit en mode multijoueur, vous devez reproduire cette variable au client. Ainsi, lorsque le serveur a fini d'exécuter la logique, la logique doit être répliquée sur le client. Les données doivent donc être renvoyées aux clients. Et tout comme ce que nous avons fait avec l'état d'humeur, nous avons fait cela sur la rampe. Nous pouvons cliquer sur cette variable et la répliquer aux clients avec la notification du représentant. Nous allons donc aviser tous les clients. Et encore une fois, je vous l'ai dit avant d'utiliser le représentant notifié chaque fois que nous avons des changements visuels, et que c'est un changement visuel, nous répondons au personnage, nous déplacons le personnage de cette indiquer où répondre au personnage. À ce stade, il s'agit donc d'un changement visuel. Vous devez donc définir ce changement visuel pour que tous les clients puissent le voir. Je vais faire une notification de côtes, pour que tous les clients puissent le voir. Et ce que nous voulons faire ici et la localisation des lettres sur la rampe. Et en fait, juste pour mon TOC, je vois qu'il y a des espaces entre ici. Je vais juste le supprimer à nouveau. Je veux le changer avant de faire quoi que ce soit. Je vais supprimer ces espaces ici dans ma variable. Comme ça. Je vais encore appuyer sur Retina Ossify, juste comme ça. Maintenant, dans la fonction de déballage, prenons maintenant que nous sommes déjà à l'intérieur du personnage, donc nous pouvons simplement dire l'emplacement de l'acteur. C'est ce que nous voulons faire. Donc l'emplacement de l'actrice et l'emplacement est, nous voulons le définir sur cet emplacement mis à jour, afin que ce joueur apparaisse. Passons donc ici à la fonction de déballage. Faites glisser cet emplacement plasmon. Je viens de le brancher dans le nouvel emplacement. C'est donc le nouveau lieu que l'acteur souhaite définir. Maintenant, tous les clients pourront voir que le personnage change de position à ce nouvel emplacement. Maintenant, cliquons sur Play et voyons ce qui se passe si nous avons foiré quelque chose. Donc, cliquez sur jouer ici, et vous pouvez voir que je suis frayer ici, donc ça marche. Et si je retourne sur les lèvres de Luke pour regarder, ce sont les clients. Voyons par exemple. Vous pouvez voir maintenant que cela se produit correctement et je peux jouer comme s'ils pouvaient jouer ensemble toujours bon à tester et voir si ce n' est pas le cas. Avant de continuer. Vous pouvez voir que cela fonctionne et répond correctement. Donc, pour passer par là très rapidement parce que parfois je crains que cela puisse être déroutant. Commençons donc ici dans l'interface utilisateur. Ici, nous cliquons sur Serena, par exemple. Laissez-moi les rapprocher l'un de l'autre. Ici, nous cliquons sur Serena pour parrainer Arena. Il va aller sur manette du joueur et sélectionner le personnage. Il va donc organiser cet événement ici. Et il va également supprimer l'écran de sélection des personnages. Il va donc à ce personnage sélectionné à la manette du joueur. Passons donc au contrôle de la plaque et voyons ce qui se passe. Dans la manette du joueur, qui est ici. Il exécute cet événement Select Character il y a un personnage qui passe par le serveur, puis le serveur appelle cet événement ici en mode jeu parce que nous voulions empêcher tricher, nous voulons vérifier si nous sommes autorisés à créer le personnage. repassant en mode, demande un joueur de bond. Il passe par le mode jeu. Et puis il va nous rejeter dans la manette du joueur. Et dans la manette du joueur, nous allons engendrer le joueur. Et nous allons également contrôler le joueur. Chaque fois que vous lancez le joueur, il exécute ce point de départ. Ainsi, chaque fois que le joueur apparaît, il va définir l'emplacement de l'apparition du joueur. Il organise cet événement ici, et cet événement passe par le serveur. Encore une fois, nous empêchons le refus de tricher. Le serveur. Il faut vérifier si ce que vous faites est correct. Vous pouvez donc voir la méthode ici où tout ce que nous essayons toujours de définir des variables via le serveur. Je vais donc juste sauter directement dans le serveur. Et puis un serveur sans fin, je fais toute cette logique de codage. serveur. Il va définir l'emplacement du lieu. En fait, il va arriver à l'emplacement du joueur depuis le mode de jeu, que nous avons inventé ici. Nous avons donc commencé cette pièce de classe d'acteur et nous avons obtenu le lieu d'accès et nous en avons fait une variable. Nous savons maintenant que l'emplacement spécifique de ce joueur commence ici. Et maintenant, nous avons cet emplacement pour ces points d'apparition. Ensuite, nous en avons fait une nouvelle variable à l'intérieur de la base des joueurs et nous avons appelé le lieu d' apparition du joueur. Maintenant, répliquez-le dans une notification de rip, ce qui vous amène ensuite à la fonction de déballage car chaque fois que vous modifiez la valeur ou qu'une fonction de notification de rep est une variable de notification d'épave. Il va exécuter la fonction Rep Notify. Vous pouvez maintenant voir que nous définissons cette variable. Ensuite, nous allons automatiquement exécuter cette fonction de déballage. Et la seule chose que la fonction déballée fait, c' est de localiser nos acteurs. Encore une fois, nous utilisons une notification de représentant car c'est ce que nous faisons en mode multijoueur. Chaque fois que vous avez un changement visuel et que la modification de l'emplacement d'un joueur de ce point à ce stade est un changement visuel. Tous les clients peuvent voir le changement visuel en faisant cela, tout comme ce que nous avons fait avec l'état du mouvement. Nous avons donc dit les flip books. Il s'agit également de changements visuels. Changez donc les flip books pour que le joueur puisse voir ce flip book changé. Il s'agit également d'un changement visuel. J'espère donc que c'était clair. Encore une fois, si quelque chose est déroutant et que vous avez besoin de clarifier davantage quelque chose, vous pouvez rejoindre mon serveur Discord, et je suis très heureux de vous aider. Continuons donc à partir d'ici. Nous allons tout sauver. Permettez-moi de terminer cela et passons à la leçon suivante. 41. Créer l'acteur de caméra: Comme vous pouvez le voir ici en ce moment, je suis à l'intérieur de Maple Story la caméra et de Maple Story. Ce n'est pas comme le nôtre en ce moment, vous pouvez voir quand je me déplace, la caméra suit sans heurts. Il n'est pas vraiment attaché au personnage. Donc, quand je me déplace ici, vous pouvez voir qu'il me suit, mais ce n'est pas vraiment attaché à moi. Il se déplace donc comme ce mouvement fluide. C'est donc ce que nous essayons de réaliser. Revenons ici à notre jeu, au lieu d'avoir la caméra attachée ici et la base des joueurs. Nous avons donc actuellement cette caméra attachée au lecteur. Nous devons créer des caméras séparées pour pouvoir suivre le joueur en douceur. Maintenant, bien sûr, vous pouvez garder la caméra comme ça si c'est l' endroit que vous voulez, mais j'essaie de reproduire Maple Story autant que possible pour que nous puissions nous entraîner à partir de là aussi. Commençons donc par créer l'acteur de caméra. Donc, au lieu d'avoir la caméra attachée, transformons plutôt un plan. Cliquez avec le bouton droit de la souris, créez une classe de Blueprint. Et faisons juste un acteur. Et appelons ça la caméra BP. Ok, alors cliquez ici, caméra VB. Remontons ici et ajoutons les caméras. Donc, tout d'abord, comme avant, ajoutons un ressort à ces derniers. C'est donc le support de la caméra. Ensuite, nous allons ajouter la caméra. Comme avant, rien de nouveau. Cliquez sur le bras à ressort. Je vais le faire pivoter moins 90 degrés, comme avant, Compiler et enregistrer. Et je vais supprimer celui-ci appelé Remote do collision testing. Je vais cliquer sur la caméra et la changer en vue orthographique et définir la largeur sur 1304. Et ce n'est pas vraiment nouveau. C'est ce que nous avions également fait ici, dans notre caméra. Ce ne sont donc que les mêmes paramètres que j'essaie d'utiliser. Ok, donc maintenant nous avons la caméra et je vais aller à ma base de joueurs et je vais supprimer cette caméra maintenant. Maintenant que nous avons créé une caméra, nous pouvons l'engendrer dans la leçon suivante. 42. Élaborer la caméra: La chose que nous essayons de faire, c'est que nous essayons maintenant d'engendrer l'ecto de la caméra. Et le but est d'apparaître dans la caméra chaque fois qu'un nouveau joueur se lie. Faisons donc la logique de frai à l'intérieur des joueurs. Ainsi, chaque fois que le joueur se connecte au niveau, il y aura une caméra qui apparaîtra afin qu'il puisse suivre ce joueur comme nous l'avions auparavant. Ici encore, au début, c'est à ce moment que notre joueur apparaîtra. Ici, nous allons dire acteur de frai. C'est donc très bon de se souvenir de tous ces outils. L'acteur de spawn est utilisé chaque fois que vous générez quelque chose. Tout comme dans la manette du joueur où nous avons engendré le joueur. Vous pouvez utiliser à nouveau cet acteur osseux pour engendrer la caméra. Disons donc que l' acteur de classe apparait. Et auparavant, je vous ai dit que nous devions passer par le mode jeu pour créer quelque chose afin d'éviter la tricherie. Ce n'est pas grave pour l'instant pour cette caméra de le faire directement depuis le client. Parce que cet appareil est uniquement basé sur un joueur. Ce n'est pas global, comme ajouter des joueurs au niveau. Nous ajoutons simplement une caméra pour que le joueur soit suivi. Il y a un acteur ici. Et nous devons choisir la caméra et nous l'avons appelée caméra BB, BP. Donc, je cherche juste un appareil photo. Et cette caméra BP ici. Nous devons maintenant sélectionner la transformation de la spline. Et je vais conduire d'ici et cliquer sur Make Transform, comme ça. Et maintenant, nous devons définir à quel endroit nous voulons faire apparaître cette caméra. Et je veux juste le faire apparaître chez le joueur. Nous sommes donc déjà à l'intérieur du joueur. On peut donc simplement dire trouver l'emplacement de l'acteur. Et la cible est elle-même parce que c' est le personnage que nous contrôlons actuellement. Nous recevons donc ce personnage généré et nous allons juste à cet endroit de ce personnage de lien. Je vais déplacer ça un peu ici. La rotation est celle-ci et l'échelle est la suivante. Cela n'a pas vraiment d' importance pour le moment. Et en ce qui concerne le frai, je veux cliquer ici, et cliquons sur celui-ci en disant essayer ajuster l'emplacement mais toujours apparaître. Cela permet de s'assurer que même si nous sommes en collision avec certains, quelque chose, à un moment donné, nous ne faisons que frayer la caméra de toute façon. Et en fait, je pense que nous devons également le faire dans le contrôle de la plaque. Ici, si vous l' avez toujours par défaut pour le joueur, n'oubliez pas de le définir pour essayer de régler l'emplacement mais toujours apparaître. nous empêchera que le joueur ne puisse apparaître à un moment donné, mais nous essayons d'ajuster l'emplacement, mais nous continuons à engendrer le joueur. Cette collision sera un problème par défaut, comme celle-ci chaque fois que nous aurons des ennemis, car il y aura des ennemis et vous entrerez en collision. Donc, toujours lié même si nous avons une collision essayée d'ajuster l'emplacement. Bon, revenons à la caméra ici. Maintenant, nous avons engendré la caméra. Maintenant, vous pouvez le voir ici, même si nous avons engendré la caméra et que je vais cliquer sur Play. Et n'oubliez pas de retirer l'appareil photo ici si vous ne l'avez pas fait dans la leçon précédente. Donc, retirez l'appareil photo, générez une nouvelle caméra. Essayons de cliquer sur Jouer maintenant. Et maintenant, vous pouvez voir ici que même si nous avons créé la caméra, nous sommes toujours embarqués ici dans la vue. Et c'est parce que même si vous générez une caméra, vous devez dire au moteur que vous voulez que cette nouvelle caméra soit votre nouvelle vue. Donc, si vous sortez de là et que vous dites Définir la cible de vue , vous pouvez le voir, vous ne pouvez vraiment rien voir même si vous la recherchez. Mais si vous supprimez le contexte sensible, vous pouvez voir que c'est celui que nous essayons d'utiliser. Définissez votre cible avec Blend. Et pourquoi cela se produit-il ? Pourquoi n' apparaît-il pas ici ? Vous pouvez voir si vous placez votre souris dessus. Il est dit que la cible est une manette de joueur. fonction contextuelle signifie simplement pour le contexte ici, pour ce stylo à partir duquel vous faites glisser le curseur. ne s'agit pas vraiment d'une manette de joueur. C'est l'appareil photo. Donc, si vous recherchez quelque chose qui nécessite un contrôle de l' approvisionnement, je ne vais pas vous le montrer à moins que vous ne supprimiez ce contexte sensible. Mais si vous obtenez la manette du joueur, essayons dans l'autre sens. Disons que c'est un contrôleur. C'est ainsi que vous obtenez la manette du joueur. En mode multijoueur, vous êtes à l'intérieur du joueur et vous dites simplement obtenir la manette. Et il est dit que le contrôleur revient pour cet acteur parce que nous voulons notre manette de joueur ici. Nous avons le contrôleur et utilisons le contrôleur get black REF que nous avons créé avec notre interface précédemment. Disons donc la manette du joueur réf. Maintenant, nous parlons spécifiquement de ce contrôleur. Maintenant, connectons ça ensemble. Et à partir de là, en tant que contrôleur du joueur, on peut dire définir la cible de vue. Vous pouvez le voir, je peux le voir avec l'édition contextuelle et c' est ce que cela signifie. Il sait maintenant de quoi vous parlez car la cible est la manette du joueur. Donc, quelque chose dont vous devez être conscient. Maintenant, cliquons sur celui-ci ici afficher la cible avec fusion. Il a maintenant besoin d'une nouvelle cible de vue. Et la nouvelle vue Chocolate n' est que cet appareil photo. Juste pour que tout ce soit comme vous pouvez prendre ça et être connecté ici, ce n'est pas un problème. Cela va marcher. Mais parfois j'aime organiser les choses et j'aimerais les transformer en variables. Je vais donc cliquer avec le bouton droit ici et promouvoir la variable et l'appeler caméra noire. Et en fait, je l'ai déjà créé à partir de quoi je teste quelque chose. Permettez-moi donc de supprimer l'ancien, compiler et de le refaire. Caméra Layer. Bon, maintenant, laissez-moi le connecter. Et maintenant, en tant que variable, vous pouvez simplement savoir que vous avez la variable. Vous pouvez simplement cliquer et faire glisser cette variable et vous connecter comme ceci. Vous pouvez donc le faire comme ça ou vous pouvez le faire comme ça, qu'ils fonctionnent tous les deux. C'est la bonne façon de procéder. J'aime juste parfois le faire séparément comme ça pour rendre tout plus propre. Encore une fois, il est correct de définir cette variable même si nous sommes en cours d'exécution depuis le client, donc nous ne sommes pas en cours d'exécution sur le serveur, ce que je vous ai déjà dit. Nous devons définir des variables sur le serveur. Je mets cette variable spécifique sur le client parce que c' est côté client, la caméra qui suivra autour du personnage ne sera vue que par ce personnage. Tous les autres personnages, tous les autres clients ne se soucient pas vraiment du personnage joueur ou de la caméra du joueur. Plutôt. La caméra du lecteur est quelque chose de particulier pour vous et tous les autres joueurs ne s'en soucient pas vraiment. Tout comme l'interface utilisateur, l'interface utilisateur, votre interface utilisateur, les autres joueurs ne s'en soucient pas. Ils ont leurs propres interfaces. Bon, donc nous avons cet appareil photo. Nous avons maintenant défini l'objectif de vue avec le mélange. Et je vais organiser ça un peu mieux, comme ça avant que ça ne devienne trop désordonné. Donc quelque chose comme ça ici et je vais le rapprocher comme ça. Okay, alors cliquons maintenant sur Compiler, Enregistrer et cliquer sur Jouer et sélectionner un personnage. Vous pouvez voir même si nous avons le code, je sais que nous avons le code correctement, mais vous pouvez voir qu'il est toujours foiré. Et pourquoi est-ce que c'est ? C'est parce que parfois il faut, vous pouvez voir ici qu'il y a une erreur ou parfois il faut une seconde pour qu'un personnage apparaisse en mode multijoueur, il y a un petit retard. Et ce code, tout ce code ici, fonctionne si vite qu'il est fou. Il faut donc donner du temps, parfois pour que le personnage apparaisse. Donc ici, nous définissons l'emplacement des joueurs à chaque fois que le joueur se lie, je vais mettre un nœud de retard. Essayons donc de tirer ici et de dire « retard ». Et parfois, il s' agit d'essais et d'erreurs. Je sais que ce code est correct, donc parfois je suis confus. Pourquoi cela ne fonctionne-t-il pas ? Et je pourrais penser qu'il y a un petit retard entre l' apparition des joueurs et l' ajout de la caméra. Donc, il ne peut pas, il ne peut pas trouver le joueur. C'est-à-dire qu'il essaie de le faire apparaître ici, mais il ne trouve pas la manette du joueur parce que vous devez lui donner du temps ici. Retournons donc de 0,05. Très, très petit retard. Si vous en écrivez un, cela signifie qu'il s'agit d'une seconde. Donc, 0,05 seconde. Donc, très, très léger retard ici. Cliquons sur Compiler et Enregistrer, et essayons de cliquer sur Jouer maintenant, cliquer sur le personnage et voir apparaître le personnage. Le retard a donc beaucoup aidé ici. Essayons d'engendrer le client. Et le client est également en train de frayer et s'assurer qu'il se voit. Si je fais ça plus petit. Oui, donc tout fonctionne et essaie juste de frayer. Maintenant, nous obtenons une erreur. Je vais essayer de voir ce que c'est. Essayons de cliquer sur Play now et quitter le serveur et regarder ici. Look peut aussi apparaître. Ok, donc nous avons une erreur ici et je veux essayer de voir pourquoi nous obtenons cette erreur. Ok, donc parfois, le code fonctionne trop vite ici, donc au lieu de cela, nous l'avons joué ici pour ne pas avoir d'erreurs. Donc, tout fonctionne parfaitement maintenant. Et parfois, le code fonctionne rapidement ici et il ne sera pas en mesure de trouver l' autre variable de contrôle de la vessie est vide. Voici donc ce que nous voulons faire pour nous assurer que cela ne se produira pas. Laissez-nous maintenant glisser à partir de manette du joueur et disons que c'est valide. Et vous pouvez sélectionner ce point d'interrogation. Donc, si la manette du joueur est valide, nous pouvons aller de l'avant et régler cette caméra. Et si ce n'est pas valide, ne faites rien. Nous pouvons donc essayer de le faire ici, et cela corrigera l'erreur. Je vais donc double-cliquer sur cette épingle. Ce n'est donc pas trop déroutant. Juste pour organiser les choses ici, quelque chose comme ça. Et essayons plutôt d'utiliser ce code. Nous allons donc compiler des sauvegardes. Donc maintenant, si cette manette de lecteur est valide, créons la caméra. Si ce n'est pas le cas, ne faisons rien qui l' empêche de donner ces erreurs lorsque les variables sont vides. Cliquons sur Compiler. Et maintenant, cliquons sur Créer ce personnage. Créons Luke. Voyez que tout se passe bien. Je vais cliquer sur Contrôler ou m'échapper. Vous pouvez voir que nous ne recevons aucune erreur. Maintenant, il est également très agréable de vérifier si quelque chose est valide. Vous pouvez également le faire avec des variables parfois lorsque vous en avez besoin. Donc, si je tire cette caméra pour la science, nous pouvons cliquer dessus avec le bouton droit de la souris et cliquer sur Convertir pour valider, obtenir. Cela fonctionne également. Nous aurions donc pu faire ces lignes de contrôle de plaque une variable et nous pouvons la vérifier comme ceci. Si la manette du joueur est valide, vous pouvez faire quelque chose. S'il n'est pas valide, cela ne fait rien. 43. Mettre à jour la position de la caméra: Il est maintenant temps de mettre à jour la position de la caméra. Vous pouvez voir ici lorsque nous cliquons sur Jouer maintenant, nous pouvons aller avec le personnage, nous pouvons nous déplacer, mais la caméra est statique et elle ne suit pas notre personnage, et c' est ce que nous voulons. Revenons donc à la base de joueurs, et faisons cette logique à l'intérieur d'ici. J'ai donc deux nouveaux outils à vous enseigner. Il s'agit de minuteries et d'une chronologie. Deux choses très essentielles dans Blueprint. Nous allons donc le faire ici au début. Ainsi, chaque fois que nous commençons à jouer au jeu et que nous avons engendré la caméra, et nous attachons notre vision à cette caméra. Allons également mettre à jour la vue de la caméra afin qu'elle suive le lecteur tout le temps. Maintenant, avant de faire un minuteur, je veux vraiment faire cocher un événement. Je voulais vous le montrer et avant de vous dire de ne jamais utiliser cet événement de tick, car cela fonctionne 60 fois par seconde et votre jeu ne sera pas optimisé. Vous pouvez faire beaucoup mieux que de l'utiliser. Je vais l'utiliser maintenant et nous allons l'activer avec une minuterie. Et c'est ce que je vous ai dit avant. Vous pouvez faire d'autres choses que d' utiliser une coche à certains moments. Et ce que je veux dire par là, c'est que vous pouvez utiliser des minuteurs pour éviter d'utiliser des textes qui exécutent votre code 60 fois par seconde. Nous pouvons donc utiliser des minuteries pour éviter cela. Mais prenons une tique maintenant. Et je peux vous montrer comment nous le modifions plus tard pour que vous puissiez en tirer des leçons. La chose que nous essayons de faire, c' est que nous essayons d'obtenir une caméra d'affichage que nous avons. C'est la caméra que nous avons engendrée ici. Nous essayons d'obtenir cet appareil photo et de définir l'emplacement de celui-ci. C'est donc ce que nous essayons essentiellement de faire. Nous essayons de définir l'emplacement de celui-ci sur celui du joueur. Donc, si nous rendons les choses très, très faciles, nous pouvons simplement dire obtenir un emplacement réel. Et l'emplacement réel est lui-même, qui est ce joueur. Le nouvel emplacement de cette caméra est donc celui du joueur. Il va donc suivre le joueur tout le temps. Et comme cela se déroule 60 fois par seconde, il suivra constamment le joueur. Maintenant, cliquons sur jouer ici. Et vous pouvez voir quand je cours, maintenant nous suivons le joueur comme avant. C'est donc essentiellement ce que nous essayons de faire. Et bien sûr, cela va vous donner une erreur car vous exécutez essentiellement cet événement avant d'avoir exécuté cet appareil, cette caméra, répondez à cette caméra ici. Et vous pouvez éviter cela encore une fois, tout comme ce que j'ai dit dans la vidéo précédente, vous pouvez convertir cela en validate qu'il obtient. S'il est valide, vous pouvez mettre à jour la caméra. D'accord ? Donc ça court, ne prends même pas, ça court 60 fois par seconde et il suit notre personnage. Mais nous voulons que ce mouvement soit fluide. Nous ne voulons pas qu'il suive le personnage comme avant. Parce que nous l'avons déjà fait avant. Nous voulons suivre le personnage en douceur. Et pour suivre quelque chose en douceur, vous pouvez utiliser une chronologie. Parce que la chronologie, vous devez y réfléchir chaque fois que vous voulez passer de 1 du point A au point B de manière fluide. Par exemple, si vous ouvrez une porte double, vous ouvrez les portes doubles en douceur, ou même une seule porte si vous ouvrez la porte simple. Donc, déplacer la porte du point A au point B, ce sont des mouvements fluides que vous pouvez faire avec les délais. Par exemple, si vous avez joué à Maple Story, lorsque vous lâchez des objets ou lorsque vous tuez quelque chose et qu' ils lâchent des objets, ils le déposent ici, comme si l'objet vole dans les airs et tombe au sol. Ce mouvement fluide est également une chronologie. Ainsi, tout mouvement fluide d'un point A à un point B, vous pouvez utiliser une chronologie. Cherchons donc la chronologie et apprendrons à ce sujet. Alors cliquons ici à la chronologie, et donnons un nom et je vais l'appeler disposition, position de la caméra. Et double-cliquez sur cette chronologie. Et à l'intérieur de cette chronologie, nous pouvons ajouter une nouvelle piste. Et ce que nous voulons ajouter, c'est simplement un flotteur. Et je peux vous montrer pourquoi nous ajoutons un flotteur. Float encore une fois, tout comme la variable ici, float n'est qu'une valeur numérique avec des décimales. C'est simplement ce que c'est. Par exemple, 25.2 et c'est un flotteur. Permettez-moi donc de supprimer celui-ci ici. Nous allons donc ajouter un flotteur. Et essayons ça. Allons le nommer le mouvement alpha. Ok, permettez-moi de cliquer avec le bouton droit de la souris sur le graphique à deux points. Et je veux le sélectionner d' abord et à l'heure 0, donc à 0 secondes, je voulais qu'il soit 0, donc 00. Et la durée de cette chronologie ici, je veux que vous n'ayez qu'une seconde. Pour la seconde, à la fois 1 seconde, je veux que la valeur soit une. Et vous pouvez cliquer sur ces deux flèches pour l' adapter à l'écran ici. Donc après 1 seconde, je veux juste que ce soit la valeur d'un. Je peux donc vous montrer pourquoi nous faisons cela et à quoi nous pouvons l'utiliser. Je veux également que vous cliquiez dessus, utilisez la dernière image-clé comme celle-ci. Revenons maintenant. Nous avons maintenant cette chronologie et vous pouvez voir le mouvement alpha, la charge que nous avons créée est maintenant affichée ici et nous pouvons l'utiliser. Et ce que nous voulons utiliser est ce qu'on appelle une boucle. Donc, la boucle ici, c'est le cas. Interpolation linéaire. Et il va du point A au point B. Et il faut un Alpha. Et vous pouvez voir que nous avons créé cet Alpha et ce que cela signifie, il va doucement du point A au point B. Il va donc jouer cette chronologie. Quelle que soit la valeur que vous branchez ici du point A au point B, elle va se mettre en boucle de ce point à ce point en douceur parce qu'elle va aller comme ceci jusqu'au point B. Nous pouvons donc imaginer que c'est un point. A, c'est le point B. Et après 1 seconde, il va aller au point B. mouvement est donc fluide, c'est l'alpha ici, c' est ce qu'il fait. Nous devons donc préciser ce qu'est le point A et ce qu'est le point B. point a est là où se trouve la caméra en ce moment. Alors, prenons la caméra ici. Et laissez-moi juste baisser un peu ça et dire qu'il y a un emplacement d'acteur. point a est donc là où se trouve la caméra en ce moment. En fait, nous avons besoin d'une boucle pour le vecteur car vous pouvez voir qu'il s'agit d'un vecteur, il s'agit d'un flotteur, donc ce n' est pas tout à fait correct. Alors écrivons une boucle, et sélectionnons celui-ci appelé vecteur, en supprimant celui-ci. Voici donc l' emplacement réel de l'appareil photo. point A est donc où se trouve la caméra en ce moment, point B est l'endroit où se trouve le personnage en ce moment. Nous essayons de déplacer la caméra de l'endroit où elle se trouve actuellement à l'endroit où se trouve le personnage, qui a un bon emplacement pour les acteurs. Et cela va se passer sans heurts parce que nous avons cet alpha qui va du point A au point B en douceur comme ceci. Ok, alors laissez-moi supprimer tout ça en fait, laissez-moi simplement le supprimer. Laissez-moi supprimer tout cela va juste le faire à partir de nouveau. Maintenant, je veux jouer ça dès le début ici. Donc non, ne jouez pas ici. Je veux partir de cette ville pour commencer par ici. Et maintenant, connectons-le ici dans la mise à jour, nous voulons juste, encore une fois , comme avant, définir l'emplacement de la caméra. Alors définissez l'emplacement de l'acteur. Le nouvel emplacement est celui-ci. Et nous allons mettre à jour cela comme ici. Il va donc passer du point A au point B sans heurts, car cette chronologie est ajoutée. Et grâce à cette mise à jour, il va mettre à jour cet emplacement tout le temps du point A au point B. Cela va donc être mis à jour 60 fois par seconde car nous utilisons une coche d'événement. Cliquez donc sur Play now et cliquez sur Tsarina ici. Vous pouvez voir que lorsque je déménage maintenant, il se déplace sans heurts, comme dans Maple Story. Effet très cool. Ok, donc maintenant, ça fonctionne comme il est censé le faire. Génial. C'était donc facile. Et vous pouvez voir, bien sûr, nous obtenons des erreurs car cela fonctionne sur prise et nous aurions pu l' empêcher à nouveau, ce qui rend ce nœud valide. Mais ne faisons pas cela. En fait, je veux vous montrer comment nous ne pouvons pas utiliser l'événement malade car cela fonctionne maintenant 60 fois par seconde et vous pouvez optimiser votre code. Je n'aime pas quand je vois ça dans mon projet. Allons donc un peu vers le bas. Ainsi, pour éviter l'utilisation de tick, vous pouvez utiliser ce qu' on appelle des minuteurs afin de contrôler la durée de fonctionnement par seconde. Disons de définir une minuterie en fonction des événements. Ok, qu'est-ce que cela signifie maintenant que vous devez spécifier combien de fois vous allez exécuter chaque seconde. Par exemple, si vous en écrivez un, il ne s'exécutera qu' une fois par seconde. Si j'écris 0,5, il s'exécutera deux fois par seconde car il va terminer cet événement dans 0,5 seconde. Si R est de 0,2, elle sera exécutée cinq fois par seconde. Donc, essentiellement, la façon dont vous calculez cela consiste à écrire un divisé par 0 par le nombre que vous avez écrit ici. Et vous pouvez voir que cela donne cinq, cela signifie que ce code est exécuté cinq fois par seconde. Si vous écrivez 0,08, il s'exécutera 12,5 fois par seconde. Et en ce qui concerne les événements, les billets d'événement tournent autour de 0,1516. C'est donc la coche de l'événement. Il fonctionne à 0,0017, comme ça. Par exemple, vous pouvez optimiser votre code en l'exécutant comme ceci. C'est donc seulement dix fois par seconde au lieu de 60 fois par seconde. Vous pouvez donc voir que vous pouvez optimiser les choses à l'aide de minuteries. Vous ne pouvez pas, vous pouvez choisir de ne pas courir 60 fois par seconde. Alors connectons ça ici. Maintenant, vous avez besoin d'un événement pour l'exécuter. Voici ce que vous pouvez dire, vous pouvez faire glisser depuis cet événement et créer un événement personnalisé. Et faisons cet événement, appelons qu'il met à jour la position de la caméra de couche. Nous pouvons maintenant connecter notre code. Permettez-moi de supprimer cette coche d'événement. Et laissez-moi connecter ce code ici dès le départ du joueur. Laissez-moi maintenant cliquer sur Compiler, Enregistrer et cliquer sur Play. Et maintenant, laissez-moi cliquer sur cette boucle, car si vous ne cliquez pas sur la boucle, cela ne jouera qu'une seule fois. Laissez-moi donc cliquer sur le bouclage. Et si je clique sur Play now, mon appareil photo, il est en retard car il ne me suit que cinq fois par seconde. Il ne s'agit donc que de mettre à jour notre position cinq fois par seconde car nous avons écrit 0,2 ici. Maintenant, le nombre que j' ai trouvé est 0,03. C'était comme ça, a rendu lisse et quelque chose au-dessus qui le rendra réellement plus lent. Si je devais m'en occuper ici. Et vous pouvez voir que cela fonctionne maintenant 33 fois par seconde. C'est donc beaucoup mieux que de courir 60 fois par seconde. Donc, à chaque seconde, vous l'exécutez 30 fois moins qu'une tique. Essayez donc d'équilibrer cela et d' avoir un équilibre entre apparence de votre jeu et votre optimisation. Donc, parfois, vous voulez peut-être faire 0,04 à la place. Et cela fait une énorme différence parce que si j'écris 0,04 ici, donc si je le prends ici, 0104, vous pouvez voir que ça va de 33 fois par seconde, exécutant le code, qui seulement 25 fois par seconde. Cela fait donc une énorme différence d'aller de 0320403 a été le meilleur résultat visuellement aussi. Donc, ça n'aime pas trop. Donc, si je compile et que je sauvegarde et que je joue ici, vous pouvez voir qu'il fonctionne bien comme la coche de l'événement. Mais maintenant, nous ne le faisons que 33 fois par seconde et non 60 fois par seconde. C'est donc beaucoup mieux qu'avant. 44. Arrêter le mouvement de la caméra: Très bien, voyons maintenant comment nous arrêtons le mouvement de la caméra. Donc, lorsque nous jouons au jeu et que nous allons sur le côté ici, je veux arrêter les mouvements de la caméra ne pas dépasser ce bord ici. Je veux donc arrêter la caméra quelque part ici. Nous n'allons donc jamais à la limite. Quand le joueur marche. À partir de maintenant, jusqu'à présent, la caméra va juste être arrêtée et le joueur va juste se promener. C'est ainsi que ça se passe dans Maple Story. Voyons comment nous arrêtons la caméra. Et essentiellement, j'ai essayé différentes méthodes et j' essaie toujours de trouver la meilleure car je ne suis pas satisfait, même si deux d'entre elles fonctionnent. J'ai essayé de trouver le meilleur si c'était moi qui faisais mon jeu. Et quelle serait la meilleure solution pour cela ? Le meilleur pour cela, c'est que nous pouvons ajouter quelque chose appelé une boîte de collision. Premièrement, le joueur ou la caméra intéresse cette boîte de collision et l'événement devrait se produire. Donc, pour ajouter une boîte de collision, nous avons en fait changé cette carte de tuiles en acteur. Faisons donc ça ici pour commencer. Allons donc dans le dossier Blueprints. Nous pouvons simplement le faire ici si vous le souhaitez, ou nous pouvons créer un dossier. Et nous pouvons toujours créer un dossier. Peut-être que vous avez plus de cartes, cela peut rester plus organisé. Donc des cartes de tuiles. Cliquons avec le bouton droit ici et créons une nouvelle classe de Blueprint. Et si vous êtes ici, cherchez Talmud. Encore une fois, vous pouvez obtenir celui-ci appelé acteur de carte de tuiles en papier. Sélections-le maintenant et appelons-le TM pour la carte de tuiles. Et laissez-moi juste appeler ça Dragon Road. C'était la carte, comme elle s'appelait. Maintenant, notre carte de tuiles est un acteur de Blueprint au lieu d' être simplement une carte de tuiles ici. Double-cliquez dessus, en se réveillant sous le composant de rendu. Et il suffit de sélectionner notre carte de tuiles. Et c'est celle-ci appelée carte de tuiles, a écrit un dragon ici. Nous allons donc compiler et économiser. Maintenant, pour cette carte de tuiles, nous devons ajouter deux boîtes de collision. C'est donc essentiellement ce que nous essayons de faire. Nous allons donc ajouter un nouveau composant. Cherchons une collision. Nous avons celui-ci appelé la boîte de collision. Et cette boîte de collision, de collision, vous pouvez voir ici que nous avons différents événements. Que devrait-il se passer si vous commencez à chevaucher cette boîte de collision ? Et nous allons mettre la caméra en pause. allons donc couvrir la zone où nous voulons la mettre en pause. Alors, montons ici. Et nous avons de l' ampleur, de l'ampleur ici. Et la valeur est que je vais mettre un 650 dans le x , donc ça va s'étendre ici. Et 500 et DY. Et je vais mettre 1 mille et le z. Et ce ne sont que quelques chiffres que je teste. Vous pouvez simplement les agrandir. Essentiellement. Permettez-moi faire ce 50 peut-être dans le, le mouvement, le claquement et essayer de le regarder. Voyez si je vais accélérer un peu la vitesse de ma caméra. Donc, je vais juste le regarder et le rendre égal, comme ça. Donc, il vient ici et il monte ici. Et cela n'a pas vraiment d' importance parce que la seule chose qui nous intéresse est ce domaine parce que le joueur n'a jamais fait ici, mais j'aime juste être structuré comme ça. Donc, essentiellement, nous essayons simplement de rendre ces bugs assez gros. Et en fait, je pense que ça doit être beaucoup moins élevé que ça. Essayons ça. C'est donc dx, c'est le plus intéressant selon la position du joueur . Faisons donc 600 pour l'instant dans le x et copions-le coller. Je crois que nous pouvons le faire, alors nous allons le dupliquer ici. Prenons cette deuxième case et laissez-moi la déplacer de l'autre côté de la carte. Juste comme ça. Maintenant, c'est de l'autre côté. Bon, maintenant, nous avons ces deux boîtes de collision. Nous pouvons toujours le tester et voir si nous devons les rendre plus petits ou plus grands. Donc, nous allons compiler Save. Maintenant, ce que nous pouvons faire, c'est me laisser les renommer en premier. Laissez-moi appeler cette boîte de collision gauche. Donc, si je pouvais épeler comme ça et l' autre, la boîte de collision droite. Ok, donc pour la gauche, cliquons dessus et descendons et cliquons sur le composant commence à se chevaucher. Que devrait-il se passer lorsque je commence à chevaucher ce composant ? Permettez-moi de supprimer ces événements standard par défaut. Écoutez donc, ce que nous commençons généralement par les chevauchements. Donc, lorsque nous chevauchons quelque chose ici, nous n'avons pas vraiment de serveur exécuté et exécuté sur des clients. Donc, ce que nous faisons habituellement, c'est que nous utilisons ce que l'on appelle le commutateur qui a l'autorité. Encore une fois, je vous l'ai dit avant que le serveur n'ait l'autorité du jeu. Le serveur peut tout faire. Donc, l'autorité signifie que si je suis le serveur et que je suis distant signifie si je suis le client, que dois-je faire ? Ok, donc il suffit de s'assurer que ce composant superposé est exécuté sur le serveur. Et généralement, ce qui se passe, c'est chaque fois que vous avez des boîtes de collision ici, chaque fois que vous avez des boîtes de collision, vous voulez généralement changer autorité, puis l' exécuter sur le serveur. Parce que encore une fois, vous évitez la tricherie. Nous veillons juste à ce qu'il y ait une boîte qui se chevauche ici. Parce que si vous l' exécutez simplement sur le client, parfois le client peut réaliser là où il se chevauche, même si cette boîte n'existe pas sur cette boîte. En fait, se chevauchant. Peut-être que c'est ici, ils se tiennent ici et ils le chevauchent encore à partir de là. Tricher. Donc, nous nous assurons simplement de tomber sur le serveur. Donc, l'autorité signifie que je suis le serveur, donc Switch a autorité. Et ici, nous pouvons exécuter le code. Ce que nous voulons faire, c'est mettre la caméra en pause chaque fois que le joueur a interagi avec cette boîte de collision. Nous n'avons donc pas vraiment un événement appelé caméra post-caméra. Faisons donc cela dans la base de joueurs. Et ce que nous voulons faire, c'est que nous voulons poster cette caméra, et nous ne l'avons pas encore vraiment rendu variable. Faisons donc cela pour le temps que nous voulons mettre en pause ce minuteur est essentiellement de sorte que nous ne voulons pas exécuter ce code de position de mise à jour ici. Cliquons avec le bouton droit de la souris sur cette valeur. Faites la promotion de votre variable. Et laissez-moi appeler ça met à jour le lecteur, la caméra, la position. Et j'aime généralement dire « poignée » à la fin parce que c'est une poignée à la fois. Sa main, joueur de mise à jour, poignée de position de la caméra. La chose que nous essayons de faire est de créer un nouvel événement personnalisé. Et au lieu de simplement le faire comme ça, faisons cela dans nos interfaces Blueprint qui étaient maintenant presque expertes dans les interfaces Blueprint, alors créons-le ici pour la base des joueurs. Allons au lecteur, en fait pas ici et aux interfaces par base, faisons un appel. Faisons une pause, une pause, un calque, une caméra, la compilation et l'enregistrement. Revenons donc à la base des joueurs et appelons cela après leur appareil photo. En fait, j'avais besoin de la caméra de la couche de pause des événements. Alors, événement Pause la caméra du lecteur ici. Nous voulons donc appeler cet événement. Donc, si je retourne ici sur la carte des tuiles, maintenant, nous organisons cet événement de boîte de collision et nous voulons appeler le joueur. Le joueur. Nous pouvons appeler cela en utilisant cet autre acteur. autre acteur signifie que tout ce qui se chevauche, cette boîte de collision chevauchait des composants, la boîte de collision et l'autre acteur est tout ce qui le chevauche. Nous sommes donc en train de marcher à l'intérieur. C'est le joueur. Et juste pour m'assurer que c'est le joueur qui le chevauche, je le fais généralement pour m' assurer que nous ne commettons pas d'erreur ici. D'habitude, je le fais. L'acteur a marqué. Donc l'acteur a marqué, vous pouvez donner une attaque à l'acteur. Donnons donc le joueur de balises. Et ce que cela signifie, c'est ici dans la base de joueurs. Si vous revenez ici, et si vous y allez, je crois que c'est dans les valeurs par défaut de la classe. Donc, si vous recherchez une balise, vous pouvez voir que nous pouvons ajouter une balise à cette base de couches. Ajoutons donc un tag et appelons ça joueur. Donc, quel que soit le pion a, entre en collision avec cette boîte de collision. Alors, n'oubliez pas que lorsque nous avons l'ennemi, l'ennemi est également là. L'ennemi est également là. Donc, juste pour s'assurer que ce n'est pas l'ennemi qui entre en collision avec lui. Et ce n'est que le joueur. On peut dire que l'acteur a marqué Player. Et si c'est vrai. Donc, si l'acteur a le joueur de tags, que nous avons ensuite défini ici et la base des joueurs. Ainsi, tous les joueurs connectés auront le lecteur de tags. Nous allons exécuter ce code. Donc, si c'est vrai, nous allons exécuter ce code. Et ce que nous voulons faire, c'est que nous voulons exécuter cette caméra de couche de pause. L'autre acteur ici est notre joueur. Définissons donc précisément de quel joueur il s'agit. Et encore une fois, on peut dire obtenir couche REF parce que c'est celui que nous avons fait plus tôt. Et puis on peut dire pause calque, caméra. Et lorsque vous sélectionnez ce message car il s'agit d'une fonction d'interface. Bon, donc revenons ici et faisons quelque chose avec cet événement. Et je vais l'exécuter sur les clients parce que vous ne voulez pas vraiment l'exécuter sur le serveur. Parce que rappelez-vous que cet appareil photo n' est spécifique qu'au client. Cette caméra ne fonctionne que pour ce joueur spécifique. Tous les autres joueurs ne se soucient pas vraiment de votre appareil photo, ils ne le verront pas. Je vais donc l'exécuter sur le client, si personnalisé. Et appelons cela CL pour les clients, pause calque, caméra. Lançons celui-là. Si je clique ici, lançons ça sur des clients propriétaires comme peu fiables. N'oubliez pas de le faire. Maintenant, ce que nous voulons faire, c'est que nous voulons obtenir cette variable. La chose que nous essayons de faire, c'est dire le minuteur de pause géré. Donc, lorsque nous entrons dans la boîte, nous voulons faire une pause. Lorsque nous sortons de la boîte, nous voulons annuler la pause de l'appareil photo ou le minuteur, afin qu'il soit à nouveau mis à jour. C'est donc ce que nous essayons de faire. Nous avons donc besoin d'un booléen ici, car ici, lorsque nous chevauchons la boîte de collision, nous allons faire une pause. Cependant, si nous cliquons à nouveau sur la case et que nous descendons, nous avons celui-ci appelé chevauchement d'extrémité n composant. Donc, lorsque nous sortons de la boîte à nouveau, je vais copier ce code ici, comme ça. Nous n'avons pas vraiment besoin de le faire à nouveau mûr. Donc, d'autres acteurs se sont connectés ici. Maintenant, les acteurs sont également connectés ici. Donc, chaque fois que nous quittons la boîte, nous voulons ne pas faire une pause. Nous ne pouvons pas vraiment, je veux dire, vous pouvez aller de l'avant et créer un nouvel événement, mais vous pouvez simplement utiliser cet événement pour faire les deux choses en utilisant un booléen. Souvenez-vous donc d'un booléen comme s'il était vrai ou faux. Faisons donc un booléen ici, en cliquant sur celui-ci. Et le booléen devrait simplement dire pause. Et s'il est mis en pause, faites-le glisser d'ici et cliquez sur B ou sur la branche. Donc, s'il s'agit d'une pause, si c'est vrai, nous devrions faire une pause. Et si ce n'est pas vrai, nous devrions nous arrêter comme ça. Il peut donc faire les deux choses à l'intérieur d'un même événement, comme cela en utilisant un booléen. Et il est évident que nous devons organiser cet événement ici. Et ensuite, nous devons exécuter ce booléen par ici. Nous devons donc créer un booléen et notre événement ou dans notre interface. Et maintenant, c'est un problème pour une raison quelconque. Je ne sais pas pourquoi. Compilons, sauvegardons et réinventons. Parfois, cela arrive, une pause scellée, comme ça. Bon, alors faisons-le dans l'interface. Supposons que la caméra du lecteur, créons une nouvelle entrée, un booléen, et appelons-la une nouvelle pause, Compiler et enregistrer, et revenons en arrière. Je peux les relier ensemble. Et maintenant, si vous revenez à la carte de tuiles, vous pouvez voir que nous avons un booléen. Donc, lorsque nous entrons dans le chevauchement, nous voulons faire une pause. Donc, régler cela pour corriger. Et lorsque vous le quittez, appelons à nouveau cet événement, mettez en pause la caméra du lecteur. Et nous voulons ne pas faire une pause. Donc, laissez ce faux. Maintenant, ça devrait fonctionner. Chaque fois que nous partirons, nous allons prendre cela. Nous allons vérifier si c'est le joueur qui quitte vraiment ça. Nous allons définir ce booléen vrai ou faux. Et en fonction de la valeur, elle va fonctionner ici. Selon la valeur, il va mettre en pause ou surPause ce minuteur. Alors, avant que je puisse cliquer sur Play, vérifions d'abord ces cases de collision. Donc, dans la boîte de collision gauche et droite, vous pouvez descendre ici et vérifier leur collision ici. Avec quoi sont-ils en collision ? Et juste pour vous assurer que tout est correct, vous pouvez cliquer ici et vous pouvez voir qu'il se chevauche avec tout, même le pon, il se chevauche avec les étangs pour que nous puissions faire des événements de chevauchement. Donc, je pense que oui, ça a l'air correct. C'est très bien. Maintenant, nous avons fini avec le code, et maintenant ce que nous devons faire, allons-y et supprimer cet ancien Talmadge. Et cela serait-il supprimé ? Mettons-en notre nouveau. Passons donc à la carte des tuiles ici. Et placons le nouveau. Et nous allons encore le placer à 000 heures. Je vais rapprocher l'excellence ici. Encore une fois, comme ce que je vous ai déjà dit, nous allons le déplacer de dix. Je crois que c'était dix ans. Et juste pour bouger, nous avons ces cinq couches, 123456 couches. Et j'y vais, nous avons cette deuxième couche sur mes zéros, zéros, zéros. Vous pouvez donc le voir ici. C'est sur mes zéros sont 0, mais ce n'est pas le cas. La première couche jaune est la deuxième couche jaune. Maintenant, à 1 h, c'est que vous pouvez voir que nous avons les boîtes de collision. Maintenant, cliquons sur jouer et apparaître en tant que Tsarina. Et laissez-moi marcher sur le côté et vous pouvez voir que ça s'arrête vraiment. Donc, ça marche. Maintenant, si je vais à droite, ça ne fonctionne pas et c'est parce que j'ai même oublié de l'ajouter. Revenons donc à la carte des tuiles ici et ajoutons la seconde. J'ai même oublié de l' ajouter en fait. Donc, en cliquant sur le bon , ils peuvent se chevaucher. Je fais le même code que celui-ci. Vous pouvez le copier, le coller ici, le relier ici, connecter l'autre acteur ici, connecter l'autre acteur ici. Et cliquez à nouveau sur la case de droite. Et si vous le laissez, donc si vous mettez fin au chevauchement, vous allez copier celui-ci, puis le relier ici. Donc, un autre acteur ou réalisateur ici, et ça va se relâcher. Ok, donc essentiellement, je vais travailler maintenant, j'espère. Nous allons donc le tester à nouveau. En se dirigeant vers la droite, il va arrêter la caméra. Vous pouvez voir qu'il y a un petit insecte. Quand j'entre dans la boîte ici. Il va suivre mon personnage pour une raison quelconque avant qu'il ne s'arrête. Il suit donc mon personnage, puis il s'arrête. Je ne veux pas que ça fasse ça. C'est quelque chose que nous pouvons améliorer dans la prochaine leçon, car c'est en fait, il est en pause ici, mais il est mis à jour. Il est en train de terminer la mise à jour ici sur la localisation des acteurs. Il suit donc un peu plus l'acteur et quand il finit, il s'arrête ici. Nous allons donc améliorer cela dans la prochaine leçon. 45. Améliorer le mouvement de la caméra: Dans cette leçon, nous allons améliorer la caméra et le mouvement. Ce dont nous avons parlé ici, c'est que lorsque je vais à droite, les caméras s'arrêtent, c'est tout bien. Le problème est qu'il suit le personnage, qu'il colle au personnage avant qu'il ne s'arrête comme ça, puis il s'arrête pour une raison étrange. Et c'est là que nous essayons de nous améliorer maintenant. Donc, ici, il fait cette logique raison du bon emplacement de l' acteur. Donc, même si nous posons le minuteur, il termine cette mise à jour ici se termine, terminant la position de la caméra du lecteur de chronologie. Et il est toujours en train d'obtenir la position de notre joueur et d'essayer de définir l' emplacement de la caméra ou en fonction de cela. Nous pouvons donc régler ce problème en une variable temporaire pour la bonne position de l'acteur afin que la caméra n' obtienne plus la position de nos acteurs lorsque nous sommes ici au début de notre boîte de collision. Nous allons donc dire au minuteur c'était le dernier point sur lequel vous devriez mettre à jour et vous ne devriez plus me suivre ici. D'accord, donc de la façon dont nous faisons cela, faisons un autre minuteur. Donc, et au fait, faisons la fonction en premier. C'est donc plus clair. Je vais donc faire une fonction. Donc, en cliquant sur le plus ici et en écrivant f pour la fonction. Et puis appelons celui-ci, obtient l'emplacement actuel du joueur. Maintenant, avec celui-ci, la chose la plus simple que nous allons faire est d'obtenir l'emplacement du joueur. Alors, obtenez un emplacement réel. Je vais obtenir cet emplacement d' actrice, et je vais juste le stocker dans une variable. C'est très simple. Cliquez donc avec le bouton droit de la souris, faites la promotion vers une variable et écrivez l' emplacement de la couche Comme ça. C'est la seule chose que cette fonction va faire. Ainsi, restaurer l'emplacement de l'acteur get dans une variable temporaire que nous utiliserons. Revenons au graphique des événements. Et nous allons créer notre deuxième minuteur. Disons donc de régler une minuterie. Et cette fois-ci, au lieu de régler un minuteur par événement, réglons la minuterie par nom de fonction. Donc, nous pouvons le faire également. Alors connectons cela et vous pouvez voir comment cela fonctionne. Maintenant, il va vous demander quelle est la fonction que vous voulez exécuter ? Et c'est celui-là. Je clique ici, je copie le nom. Et vous devez copier le nom exactement comme il est, la fois avec des majuscules, des minuscules , des majuscules, etc. Donc, copiez-le exactement tel qu'il est. Et si jamais vous changez de nom, vous devez vous rappeler de le changer ici aussi, sinon cela ne fonctionnera pas. Le temps que je vais définir ici est de 0,1, donc il va être mis à jour dix fois par seconde. Et je vais également le définir en boucle et cliquer avec le bouton droit de la souris sur cette minuterie promue en variable, et appelons-le la poignée de localisation de la couche parents de get. Ok, donc nous avons cette fois-ci, maintenant, cette fois-ci en cours d'exécution. Donc, au lieu d'un bon emplacement d' acteur, utilisons notre position actuelle de joueur. C'est celui que nous venons de faire, celui-ci, l'emplacement actuel des joueurs. Je regardais. Celui-ci a été confus. C'est le lieu de frai. Il obtient donc cet emplacement actuel du joueur. Je vais le faire sortir et le mettre ici. D'accord ? L'astuce est maintenant que chaque fois que nous atteindrons cette boîte de collision ici, chaque fois que nous l' atteindrons, nous allons arrêter cette minuterie. Donc, au lieu d'arrêter cette mise à jour ici, nous allons arrêter ce minuteur. L'astuce est, et permettez-moi de supprimer toutes ces lignes de grille. Ça m'ennuie un peu. Alors revenez ici à nouveau dans le rendu et cliquez sur ici. Donc, quand j'atteindrai cette ligne de boîte de collision, ça va arrêter le minuteur. Et quand j'arrête le minuteur ici dans la base de joueurs, il ne va plus mettre à jour cela, obtenir l' emplacement actuel du joueur. Il ne se met plus à jour, il va rester coincé ici au début. C'est donc l'astuce pour faire ça. Donc, au lieu d'arrêter ce minuteur ici dans le minuteur de publication, supprimons celui-ci et arrêtons celui-ci appelé obtenir l'emplacement actuel du joueur. L'emplacement ne sera plus mis à jour chaque fois que nous arriverons ici. Et la caméra ne va que s'arrêter là. C'est donc l'astuce. Relions-les ici. Maintenant. Compilez et économisez. Maintenant, laissez-moi cliquer sur jouer et tester et voir si tout est correct. Donc, si je marche sur le côté, vous pouvez voir que ça ne suit plus et s'arrête sans heurts. Et si je sors d'ici, ça va aussi se dérouler sans heurts. Si je vais à droite, ça s'arrête aussi bien. Nous arrêtons donc la localisation actuelle ici, que notre emplacement actuel, nous arrêtons la mise à jour des variables ici, donc il pense que le joueur est toujours là. C'est ce qui se passe essentiellement. Cette caméra pense que Player est toujours là parce que nous arrêtons la minuterie. Nous redémarrons la minuterie lorsque je quitte cette boîte. Et là encore, j'arrête le minuteur ici pour mettre à jour les variables. La caméra pense donc que nous sommes toujours là. Vous pouvez voir qu'il est toujours en train de couper, nous devons donc ajuster la taille de la boîte de collision. Donc, si je minimise cela, revenez aux cartes de tuiles et allez dans la zone de gauche. Et maintenant, nous allons l'ajuster un peu. Nous devons le rendre un peu plus grand. Alors dans le x, essayons 625, peut-être six, essayons 650 et voyons ce qui se passe. Donc six cent cinquante, six cent cinquante, cliquez sur le jeu. Quand je marcherai ici, ça va s'arrêter ici. Ok, on peut peut-être en ajouter un peu plus, mais ça arrête l'air donc il n'y a pas de problème. Oui, je pense que c'est bien. Maintenant, il s'arrête ici, sur les bords. Nous ne voyons plus ce bord noir. Maintenant, c'est corrigé. Et en marchant ici. Et il en va de même pour celui-ci. Cependant, nous pouvons encore sortir du bord et c'est ce que nous allons régler dans la prochaine leçon. Bon, donc avant de finir ça, revenons à la base de joueurs. Je dois mieux structurer cela . Laissez-moi simplement les pousser. N'oubliez pas d'organiser votre projet toujours parce que ce sera un gâchis. Fais-moi confiance. Vous travaillez depuis quelques mois et vous ne le faites pas, votre projet ressemblera un gâchis et vous le regretterez à ce moment-là. Essayez donc de tout mettre bien ensemble. J'essaie de saisir ces variables. Ainsi, en mettant les choses bien ensemble, double-cliquez sur cette épingle pour faire un nœud de réacheminement comme celui-ci. Maintenant, ça a l'air beau et organisé. Et celui-là, je veux dire, je pense que c'est génial. Maintenant. Vous pouvez aussi, nous pouvons même pousser cela un peu plus loin. Il y a de la place pour que celui-ci soit jusqu'ici. Et celui-ci que nous pouvons mettre juste en dessous parce qu' ils appartiennent ensemble. Je vais aller ici. Cela est également organisé. Et nous pouvons toujours faire un commentaire. Par conséquent, ici, nous pouvons prendre cela et dire des mises à jour, à jour les mouvements de la caméra pour qu'il suive un joueur. Vous pouvez essayer d'écrire ce que vous voulez. Donc, j'essaie juste de trouver quelque chose dans ma tête. Vous pouvez même modifier la couleur du commentaire si vous le souhaitez, modifier la taille, si vous le souhaitez. Et pour celui-ci, nous fixons le lieu de naissance des joueurs. Permettez-moi donc de commenter cela également. Disons que la recherche dans les calques, emplacement initial de l'apparition. Juste comme ça. Essayez donc de rester aussi organisé que possible. Vous pouvez même extraire des données communes. Et je pense que cela semble parfait maintenant, compilons et économisons. Bon, donc c'était tout pour l'instant. Passons à la leçon suivante et ajoutons les limites. 46. Ajouter des limites de la carte: Ajoutons maintenant les limites de la carte pour que le joueur ne puisse pas sortir du bord. C'est très, très facile. Il s'agit d'une courte vidéo, probablement ici en détail, carte Dragon Road. Revenons ici. Et comme avant, ajoutons deux autres boîtes de collision. Ajoutons donc une boîte de collision ici à gauche. Et comme celui-ci, je vais y arriver, c' est le X, le Y et Z, et le Z, je vais encore faire 1 000. Ils ne font que copier ça et je vais le faire glisser à nouveau comme ça. Permettez-moi de réduire un peu la vitesse de la caméra. Je pense que c'est bien, alors essayons ça. Je vais renommer ça et appeler ça le rebond gauche. Et je vais dupliquer ça et appeler ça des limites correctes. Et nous allons faire glisser celui-ci vers la droite. Comme ça, je crois. Ok, la chose que nous voulons faire ici pour ceux qui sont dans la collision, donc si vous cliquez sur l' un d'eux et descendez à la collision ici et cliquez sur cette petite flèche ici. Je veux que vous cliquiez sur celui-ci et que vous cliquiez sur personnalisé ici. Et maintenant, vous pouvez changer les choses pour les pons pour que notre joueur soit activé, et au lieu de se chevaucher, je veux bloquer mon téléphone. Je ne veux pas que le but dépasse cette boîte de collision. La même chose ici. Cliquez ici, cliquez sur costume et cliquez sur Bullock le. Mais essayons de poser ça. C'est probablement la seule modification que nous ayons à faire. Allons donc à droite et voyons si nous sommes bloqués. Nous sommes en mer. Nous ne pouvons même pas aller plus loin. Génial. Cela fonctionne et vous devez le tester pour voir si le solde est suffisamment important. Ils vont de l'autre côté. Et j'espère que cela fonctionnera également. Et cela fonctionne aussi et ça s'arrête parfaitement comme ça. C'est ainsi que vous ajoutez des limites de carte où nous empêchons simplement le personnage de tomber du rebord avec une boîte de collision. 47. Créer les cahiers de voyage ennemis: Nous allons maintenant nous éloigner un peu du joueur et nous allons mettre en œuvre l'ennemi. C'est donc la première chose que je vous ai donnée ici dans le matériel de cours. Donc, si vous allez aux matériaux coûteux, aux ennemis, je vous ai fourni ces textures. Il y a probablement plus de textures dans votre dossier. Et encore une fois, je ne fais que les mettre en place au fur et à mesure que je continue le cours. Mais pour l'instant important, le cochon tourne au ralenti et bouge et l'escargot tourne au ralenti et se déplace. Allons donc d'abord dans le dossier Assets. Et à l'intérieur d'ici, cliquons avec le bouton droit de la souris et créons un nouveau dossier et appelons ça des ennemis. À l'intérieur d'ici, je vais créer un nouveau dossier appelé textures, afin que vous puissiez essayer de le faire vous-même si vous le souhaitez. C'est quelque chose que nous avons fait plusieurs fois maintenant. Vous pouvez également cliquer et faire glisser ces textures à l'intérieur du dossier de textures. Sélectionnez-les tous, cliquez avec le bouton droit de la souris, Appliquer les paramètres de texture 2D papier. Nous avons donc supprimé le flou. Et commençons par cet escargot ici. Nous avons donc le ralenti, nous pouvons cliquer avec le bouton droit de la souris et créer un sprite. Je vais le renommer en sprites S4 et escargot inactif. Et puis, faisons-le pour le déménagement. Cliquez avec le bouton droit de la souris et extrayons ce prix car nous en avons plusieurs. Donc, la sélection de la grille ici , puis l'écriture intègrent 90 par 90. Il s'agit donc de la largeur et de la hauteur de la cellule. C'est ce que j'ai fait dans Photoshop. C'est pourquoi je sais combien de pixels il s'agit. Cliquons donc sur Extrait maintenant. Et maintenant, je vais cliquer à nouveau dans le dossier. Ils trient donc automatiquement comme ça de 0 à sept. Et maintenant, je veux que vous renommiez cela. Je vais sauter cette partie. Ok, donc maintenant que je les ai renommés, je peux tous les sélectionner et cliquer avec le bouton droit de la souris, créer un flip book et l' appeler pour FB Snail move. Je vais cliquer sur cet escargot ici et définir les heures en images par seconde sur six. C'est donc la vitesse avec laquelle il se déplace. La même chose que je vais faire avec l'idole ici. Cliquez avec le bouton droit de la souris, créez un flip book, et appelons-le F être escargot, inactif et double-cliquez dessus. Les images par seconde ne sont qu' une seule, car il s'agit d'une seule image. Et je vais prendre l'escargot ici, celui-ci, l'Irlande, le déplacement et les déplacer le dossier des ennemis. Nous les avons donc ici, hormis tout cela. Je vais donc le faire aussi avec le cochon au ralenti et le cochon bouge. Et je vais sauter cette partie. J'ai fait maintenant le cochon inactif et le mouvement de cochon. Maintenant, je vais cliquer sur l'idole du cochon ici et régler les cadres par seconde sur six, comme ça. Et faites la même chose avec le déménagement. Réglez les images par seconde sur six. Maintenant, nous allons tout sauver. Cliquons sur ces deux-là et faites-les glisser vers le dossier ennemis. Maintenant, nous avons les flip books pour ces deux-là. 48. Configurer les pons ennemis: Pour configurer les points ennemis. Passons aux plans. Et passons au dossier des ennemis que nous avons créé, bien en arrière dans ce cours. Souvenez-vous donc de la base ennemie. Nous l'avons fait en cliquant avec le bouton droit de la souris sur la base des personnages et nous avons créé une classe Blueprint enfant. La base est donc un enfant de la base de personnages ici. Alors, ici pour la base ennemie, cliquons avec le bouton droit de la souris et créons un autre enfant. Et maintenant, nous allons appeler cet escargot VP. Nous pouvons à nouveau cliquer avec le bouton droit de la souris sur la base d'images, créer un nouvel enfant et appeler ce choix de VP. Passons à cet escargot ici. Double-cliquez dessus. Et ici pour l'escargot, on clique sur le sprite. Et ici, dans le flip book source, nous sélectionnons l'escargot inactif. J'y vais, je vais chercher le ralenti et sélectionner cet escargot ici. Je vais faire la même chose pour le cochon. En cliquant sur le sprite. Et ici, recherchez le ralenti et sélectionnez le cochon au ralenti. Maintenant, nous avons le cochon et les escargots installés ici. Nous devons maintenant réduire la taille de cette capsule et essayons de le faire et de la base ennemie, donc cela s'applique aux deux. Cliquons donc sur la capsule ici. Et ici. Changeons ça pour qu' on le fasse ici d'abord. Donc, peut-être 15 sur 15. Laissez-moi juste retourner à l' escargot et voir à quoi il ressemble. Il a l'air, ça a l'air bien pour l'instant. Nous pouvons toujours l' ajuster dans le jeu. Je vois que c'est un peu petit pour le cochon. Ainsi, lorsque vous le faites dans la base, étant donné qu'il s'agit de la classe parent de ces deux-là, cela sera automatiquement appliqué. Mais si vous avez besoin de changements individuels, vous pouvez simplement cliquer sur cette capsule de porc. Vous n'êtes pas obligé de suivre les parents. Il change ici. Vous pouvez toujours faire le changement individuel pour ce cochon en particulier, peut-être quelque chose comme ça à la place. Faisons 2323, quelque chose comme ça. Celui-ci n'est pas vraiment très important pour le moment. Nous devons le tester en jeu et voir à quoi il ressemble. Nous devons donc tester cela avant de savoir que cela fonctionne. La dernière chose que je veux faire, c'est nos ennemis entrent en collision avec nos joueurs, donc ils bloquent nos joueurs. Je le crois. Essayons donc de jeter un coup d'oeil là-dessus. Donc, la base ennemie BP, nous pouvons cliquer sur la capsule ici et vérifier les collisions. Et pour l'instant, cela bloque notre personnage. Donc, en fait, ils ne bloquent pas seulement notre personnage parce que les ennemis sont également sur eux, donc ils se bloquent mutuellement. Allons donc ici et la collision présente. Cliquons ici sur le Personnalisé. Cliquons maintenant. Donc, pour les pons, cliquons simplement sur le chevauchement car nous devrons peut-être effectuer des événements qui se chevauchent plus tard. Nous allons donc simplement chevaucher les pons pour qu'ils ne se bloquent pas lorsqu'ils se promènent et ne bloquent pas notre personnage. Et c'était tout pour eux maintenant. Et nous devrons probablement faire plus de choses plus tard, mais je pense que c'était tout pour ce cours. Donc, si nous mettons ça à 0, vous pouvez voir à quoi cela ressemble. C'est maintenant l' ennemi que nous avons. Et bien sûr, il n'y a pas de mouvement moment, nous devons ajouter le mouvement. Et c'est quelque chose avec lequel nous allons travailler au cours de la prochaine leçon. 49. Volume des limites des mailles de navigation: Maintenant que nous travaillons avec l' intelligence artificielle, nous devons savoir où toutes ces IA peuvent se déplacer, car pour l'instant, l'IA ne sait pas vraiment où elle peut naviguer. Vous ne leur avez pas vraiment dit où ils sont autorisés à se déplacer. Et c'est ce que nous allons faire ici. Et c'est très simple en fait. Allons ici et ils ajoutent rapidement un bouton. Et les volumes que vous avez quelque chose appelé volume de rebond de maillage de navigation. Il est utilisé pour l'intelligence artificielle, pour l'IA, et il indique où ils peuvent se déplacer. Maintenant, il crée cette boîte ici. Permettez-moi de le mettre comme 0 dans le Y , donc c'est ici dans notre carte de tuiles. Ensuite, nous devons l'agrandir. Donc, en descendant ici dans les paramètres du pinceau, allons-le plus grand et dx, sorte qu'il remplit toute la zone. Et on peut le faire descendre comme ça, donc c'est sous terre. Et si vous cliquez sur P, donc P sur votre clavier, une ligne verte apparaît. Et si vous cliquez à nouveau sur P, c'est la hauteur. Donc, il est dit de s'installer ici. Whoops, la configuration ici appelée navigation et spectacle. Et le raccourci est P pour cela. Et il vous montrera où l'IA est autorisée à se promener. Pour l'instant, c'est vert. Ils sont autorisés à travailler ici. Ils ne sont pas autorisés à passer cette ligne ici. Et pour l'instant, l'IA n' est pas en mesure de monter ici parce que nous n' avons pas de ligne verte. Et c'est parce que vous devez également couvrir cette zone. Alors laissez-nous dans le Z, agrandissons et je vais simplement le faire monter comme ça. Il couvre donc les deux. Cette zone est maintenant verte, et cette zone en bas est également verte comme celle-ci. Il y a donc quelques petits paramètres que nous devons régler juste pour nous assurer que tout fonctionne bien. Ici, dans le maillage de navigation refonte créé lorsque vous avez ajouté le volume de rebond du maillage de navigation. Ici, dans le décalage du tirage, j'aimerais ajouter 0. Et c'est essentiellement là que vous voulez que ce dessin se trouve. Et j'ai juste aimé 0 au lieu de dix. Ce n'est donc pas vraiment important, mais j'aime ça comme ça. La prochaine chose est que les paramètres les plus importants sont ici dans la pente maximale de l'agent. Je vais juste mettre ça en place. Vous pouvez voir ce qui se passe si vous le posez. Cela signifie qu'ils ne peuvent pas remonter cette pente. C'est ce que cela signifie. Et je vais juste le mettre en place parce que je veux qu'ils puissent marcher sur cette pente. Et c'est la hauteur de marche. Je vais aussi le mettre en place. Et je ne pense pas que nous ayons besoin d'ajuster davantage de paramètres. Nous devons essayer notre volume de navigation pour nous assurer qu'il fonctionne. Laissez-moi tout enregistrer et tout enregistrer. Et avant de terminer ces modifications ici, vous devez créer le volume de la balance de navigation. Donc, en cliquant sur Build-up ici et en cliquant sur Build ou niveaux, vous devez vous rappeler de construire avant que cela ne prenne réellement effet. Bon, maintenant le bâtiment est terminé très rapidement. Et le bâtiment prend généralement beaucoup de temps si vous avez de l'éclairage dans votre scène. Donc, si vous travaillez avec un jeu 3D, mais vous pouvez voir que cela n'a pas pris de temps. Nous n'avons pas d'éclairage. C'est très rapide à faire. Et maintenant que notre volume de rebond de navigation est terminé, nous pouvons maintenant travailler avec le mouvement de l'œil. Nous pourrons donc tester plus tard si cela fonctionne correctement. 50. Contrôleur d'IA: Tout comme nous avons créé une manette de joueur ici, nous pouvons maintenant créer une manette pour notre IA. Passons donc au dossier Enemy. Et à l'intérieur d'ici, vous pouvez cliquer avec le bouton droit et créer une nouvelle classe Blueprint, C ici, vous ne pouvez voir que la manette du joueur. Le contrôleur est donc quelque chose plus avancé et pas vraiment avancé, mais il ne l'a pas inclus ici car c'est le cas, les gens ne travaillent généralement pas avec IA et commencent un jour à travailler avec ce moteur. Vous pouvez le rechercher ici si vous cliquez sur toutes les classes et que vous recherchez un contrôleur IA. Et vous pouvez voir celui-ci appelé contrôleur IA. Nous allons le sélectionner ici. Et je vais lui donner un préfixe AIC pour contrôleur IA. Et je vais juste appeler ça pour un Emmy comme celui-ci. Donc, nous allons tout sauver. Et maintenant, ce que je vais faire, c'est que je vais cliquer sur cette base ennemie. Et ici, dans la classe de base, est par défaut à droite. Vous pouvez voir ici comment posséder l'IA. Je vais juste passer à un endroit dans le monde ou je suis apparu. Donc, peut-être que vous engendrez les ennemis et que l'IA sera possédée. Et la classe de contrôleur IA, nous devons changer cela par la classe de contrôleur IA que nous venons de créer. Il n' utilisera donc pas celui par défaut. Nous voulons utiliser les nôtres. Et c'était la seule chose que nous devions faire. Nous avons maintenant notre contrôleur IA et vous pouvez cliquer dessus et voir à quoi il ressemble. Et tout comme notre manette de lecteur ne contient pas vraiment beaucoup. La seule différence est qu'il contient un composant d'action et un chemin qui suit les composants, mais rien ne nous inquiétera vraiment pour le moment ou l'utilisation. Fermons donc ça et passons à la leçon suivante. 51. Arbre de tableau noir et de comportement: Créons maintenant un tableau noir et un arbre comportemental. Donc, si vous cliquez avec le bouton droit de la souris ici dans le dossier ennemis et que vous allez à l' intelligence artificielle, vous pouvez voir que nous avons quelque chose appelé tableau noir et arbre comportemental. Cliquez donc d'abord sur Créer le Blackboard, le créer ici, l' appeler dB pour Blackboard, puis écrivons ennemi. Et si vous double-cliquez sur ce tableau noir, vous pouvez voir qu'il ne contient pas vraiment beaucoup. Nous pouvons créer une nouvelle clé qui n'a qu'une variable. Et cette variable, vous pouvez voir quelques informations à ce sujet. Nous pouvons basculer entre l'arbre comportemental et le tableau noir ici. Il ne se passe donc pas vraiment beaucoup et nous n'avons pas vraiment besoin de l'utiliser pour le moment. Créons donc un arbre comportemental. Vous pouvez voir que nous ne pouvons pas cliquer dessus et c' est parce que nous n'en avons pas pour le moment. Alors, fermons ça. à nouveau avec le bouton droit de la souris. Accédez à l'intelligence artificielle et créez un arbre comportemental. Et appelons cela un ennemi BT ou un ennemi de l'arbre comportemental. Vous pouvez maintenant double-cliquer sur cet arbre comportemental. Et à l'intérieur de cet arbre comportemental se trouve l'endroit où vous construisez l'IA, comme le comportement de l'IA, façon dont elle se déplace. Donc, pour commencer par ici, dans l'arborescence des comportements, vous pouvez faire glisser et lâcher prise. Ensuite, comme première chose que vous faites dans l'arborescence comportementale, vous devez choisir un sélecteur. très important de savoir à l'intérieur de l'arborescence comportementale est très important de savoir à l'intérieur de l'arborescence comportementale que le code est exécuté de gauche à droite. Et je vais vous montrer comment je dois créer certains nœuds ici pour que vous puissiez voir ce que je veux dire. Ainsi, en commençant par la racine, vous pouvez faire glisser et créer un sélecteur. Et la prochaine chose est de faire une séquence. Nous avons un sélecteur, nous avons une séquence, et maintenant nous allons ajouter notre code. Vous pouvez voir ici, si j'ajoute quelque chose d'aléatoire, je vais juste vous montrer, je vais juste ajouter la même chose encore et encore. Vous pouvez voir, vous pouvez voir les notes. Ils ont des chiffres. Nous avons donc le numéro 0, le numéro un, et il va exécuter le code de gauche à droite. Nous commençons donc à gauche, nous avons le numéro deux, puis le numéro trois et le numéro quatre. Si je le déplace, de cette façon, vous pouvez voir qu'il passe au numéro trois, il passe au numéro deux. Le code va donc toujours se déclencher de gauche à droite. Une chose très importante à retenir. Ce que nous voulons faire avec cet arbre comportemental, c'est que nous voulons l'IA, donc notre cochon ou un escargot ici. Et le niveau que nous voulions trouver un emplacement aléatoire sur ce maillage de navigation. Une fois qu'il trouve un emplacement aléatoire, il se déplacera vers cet endroit. Comme dans Maple Story, où l'ennemi se déplace dans le niveau. Il trouve un point aléatoire sur le maillage de navigation, puis il se déplace vers cet emplacement. Il attend peut-être deux secondes. C'est comme en mode inactif , puis il passe à un autre point. Nous devons donc commencer par trouver un point aléatoire à notre emplacement. Et après avoir trouvé le point aléatoire, nous devons passer à ce point. Avant cela, nous devons trouver un point aléatoire. Et c'est ce que nous allons faire dans la prochaine leçon. 52. Trouver un point aléatoire dans la zone mobile: Mais faisons maintenant que notre ennemi trouve un point aléatoire sur cette zone mobile sur ce maillage de navigation. Revenons donc à l'arbre comportemental. Et à l'intérieur d'ici, nous n'avons pas vraiment quelque chose comme ça, donc nous devons le créer nous-mêmes. Et vous pouvez le faire en cliquant sur la nouvelle tâche ici. Donc, en cliquant sur une nouvelle tâche, vous devez enregistrer cette tâche et je vais l'appeler, je vais supprimer ceci, donc BTT. Et puis supprimons tout cela et appelons-le simplement lieu de liaison aléatoire. D'accord ? Et vous pouvez voir la tâche qu'il enregistre ici. Vous avez donc toutes les tâches à accomplir. Nous pouvons même créer un nouveau dossier ou toutes vos tâches. Ici, à l'intérieur de la tâche, vous commencez toujours par quelque chose appelé recevoir, recevoir, exécuter Ai. C'est l'événement avec lequel vous commencez toujours, et vous terminez toujours avec l'exécution terminée. Vous avez donc toujours ces deux-là dans une tâche ici dans l'arborescence comportementale. Et puis tout le code se situe entre ces deux-là. Donc, la fonction principale que nous essayons d'utiliser à l'intérieur d'ici est appelée obtenir un point d' accès aléatoire dans le rayon, vous en avez d'autres. Obtenez donc un point aléatoire et un rayon navigable. Je veux en obtenir un à un point accessible. Vous avez peut-être un peu de navigation ici. Donc, si l'ennemi est ici, vous avez une certaine navigation ici que l'ennemi ne peut atteindre. Et je ne veux pas vraiment le déranger. Je vais utiliser celui-ci appelé Get Random atteignable point dans rayon. Je vais donc cliquer dessus et il va regarder notre maillage de navigation. Quelle est donc l'origine à partir de laquelle il doit commencer à chercher ? Et je veux juste chercher où se trouve l'escargot ou le plus gros. Mettons un escargot ici pour que vous puissiez le visualiser un peu plus. Nous avons donc l'escargot à l'intérieur de notre niveau. Par où voulez-vous commencer la recherche ? Ici, à l'origine ? J'ai juste un escargot grand et digne de confiance. Ici, dans le pion contrôlé, c'est l'ennemi qui se promène. Et rappelez-vous, nous avons fait avant, obtenez la référence du joueur et obtenez la réf de manette. Je ne crois pas que nous en ayons un pour l'ennemi, alors faisons une interface Blueprint car nous avons besoin d'une référence de cette base ennemie. Parce que nous devons l'utiliser ici pour obtenir l'emplacement des acteurs et les insérer comme origine. Nous avons donc besoin d'une référence à l'interface Blueprint ou à la base ennemie, où nous disons obtenir la référence ennemie. Revenons ici et créons une nouvelle interface Blueprint. C'est donc la même méthode que ce que nous avons fait jusqu'ici. Cliquez avec le bouton droit de la souris, accédez aux Blueprints et sélectionnez Blueprint Interface. Appelons ça E termine la base ennemie. Allons-y ici. Et appelons que celui-ci reçoive NME. Alors, obtenez les ennemis pour référence. Maintenant, dans la sortie, quoi essayez-vous de faire référence ? Vous essayez de faire référence à BP et à l'interface. Donc, comme ça. Et vous pouvez l'appeler pour un ennemi. Ok, n'oubliez pas d'aller à, à la base ennemie et à l'intérieur d' ici, allez dans Paramètres de classe, puis ajoutez cette interface que vous venez appelée base ennemie de fin, Compiler et enregistrer, et elle apparaîtra vers le bas. ici. Maintenant, qui est l'ennemi ? L'ennemi n'est qu'un désir de soi, ce qui signifie quel que soit le plan dans lequel je suis. L'ennemi n'est donc que cette base ennemie. Ok, maintenant on peut revenir à la tâche et depuis l'étang de contrôle, on peut maintenant dire qu'on obtient la référence ennemie. Donc, si c'est l'escargot qui se promène, il sait maintenant que c'est l'escargot. C'est la référence ennemie que nous avons ici. Je vais juste faire un clic droit sur cet ennemi et promouvoir une variable. Je vais juste appeler ce pion ennemi variable. Comme ça, juste pour dire plus propre. Et donc cette origine maintenant, nous pouvons prendre cet ennemi **** et nous pouvons dire obtenir un emplacement d'acteur comme celui-ci. L'origine est donc là où se trouve cet ennemi. Maintenant, l'origine vient de cet ennemi. Et il va chercher un point autour de cet ennemi. C'est le rayon. Nous devons maintenant spécifier la taille du rayon dont il a besoin pour rechercher. Maintenant, dans ce rayon, on pourrait simplement insérer un nombre et dire 50 et 100 unités. Mais peut-être avez-vous des cartes différentes. Imaginez donc que vous n' avez pas seulement cette carte dans votre jeu, mais que vous avez plusieurs cartes. Certaines cartes sont plus grandes que d'autres. Parfois, vous devez rechercher des points plus éloignés. Nous ne voulons donc pas vraiment avoir comme un nombre solide écrit ici dans le rayon. Habituellement, ce que j'aime faire pour mes jeux, j'aime avoir la taille de cette zone navigable. Et avec cette taille, cette taille diffère d'une carte à l'autre, car vous pouvez imaginer ce volume de rebond du maillage de navigation est plus grand ou plus petit sur d'autres cartes. Il va donc simplement obtenir cette taille, quelle que soit la carte dans laquelle vous vous trouvez, et il va chercher dans cette zone. Donc, la façon dont vous faites cela est que nous allons nous éloigner un peu. La façon dont vous faites cela est encore une fois, obtenez acteur de classe et vous utilisez l'acteur de classe. Encore une fois, nous l'avons déjà utilisé, mais si j'ai besoin de l' expliquer à nouveau, vous devez l'utiliser, obtenir un supplément de classe. Vous pouvez obtenir un acteur qui est déjà apparu à l'intérieur du niveau. Le volume des limites du maillage de navigation est donc déjà à l'intérieur de notre niveau en ce moment. Nous pouvons donc simplement rechercher un maillage de navigation. Si je peux voir ici le volume de rebond du maillage nav. Nous avons donc maintenant le volume équilibré de navigation. Maintenant, nous pouvons traîner de là et dire que l'acteur rebondit. D'accord ? Maintenant, nous avons les limites de l'acteur. Et ce que nous pouvons faire, c' est que nous avons maintenant besoin du rayon, mais ici le rayon, vous pouvez voir l'étendue des bogues. Vous pouvez réellement l'imprimer à l'écran et voir à quoi il ressemble. Mais nous devons exécuter l' arbre comportemental avant de le faire, je vais vous le montrer plus tard, mais pour l'instant, essayons de finir ça. Ce que nous essayons de faire, c'est de trouver le rayon ici, mais vous pouvez voir que l' étendue des bogues est un vecteur. Je vais casser ce vecteur pour voir les x, y et z. La seule chose qui nous intéresse est le x. Parce que vous voyez ici le point rouge, le point pivot rouge, si vous vous souvenez de avant, le rouge est le x. Si vous survolez la souris ici, il n'y avait que l' intérêt réel de la zone sur le x. Nous ne nous soucions pas vraiment du Z ou du y. Nous essayons de trouver un point dans cette taille ici. Mais revenons en arrière. La seule chose qui nous intéresse, c'est le X. Donc, je vais diviser cette zone par deux parce que je l'ai beaucoup testée. Et je pense que cette taille, comme la recherche dans toute la zone navigable, n' est que de la grande taille. Et j'aime que mes pions ne fassent que chercher dans une zone plus petite. Je n'aime pas que cet escargot fouille dans toute la région. Parfois, il se déplace de ce point de la carte, puis il se déplace de l'autre côté de mon Je n'aime pas ça. J'aime les escargots parfois il ne se déplace que d'ici à ici. C'est peut-être le mouvement maximal. J'aime donc diviser cette boîte s'étend avant de faire cette dose divisée par deux. Il est donc beaucoup plus petit dans la zone. Vous pouvez voir ici lorsque vous écrivez diviser. Donc, si je traîne encore une fois, je l'ai peut-être fait trop vite. Vous pouvez écrire le bouton diviser et cliquer ici. Vous pouvez voir maintenant que c'est un vecteur, mais je n'en ai pas vraiment besoin. J'ai juste besoin de le diviser par deux. Cliquez avec le bouton droit de la souris sur cette épingle. Et vous pouvez convertir cette épingle en entier. Maintenant, ce n'est qu'un chiffre, donc nous pouvons le diviser par deux. Je peux le relier ici au vecteur de rupture. Ici. Maintenant, le x est divisé par deux. Et maintenant, je peux brancher ça dans le rayon, oups, comme ça. Et nous allons faire tomber ça, quelque chose comme ça. Nous avons donc maintenant cet emplacement aléatoire. Encore une fois, la seule chose qui nous intéresse, c'est la valeur x. Nous voulons que la valeur Z soit la même parce que je veux toujours que mon escargot soit ici. Et la valeur y devrait être la même car je veux toujours que mon escargot soit là. Je ne veux que le déplacer sur l'axe X. La chose que je vais faire, c'est que je vais revenir ici et casser ce vecteur. Maintenant, nous avons les x, y et z. Donc x est le point qu' il trouve dans le x. Laissez-moi cliquer avec le bouton droit de la souris et dire créer un vecteur. Nous pouvons maintenant reconstruire ce vecteur pour que le x reste le même. C'est le point aléatoire qui se trouve. Mais je veux que mes Y et Z restent les mêmes. En fait, je vais juste copier ça ici. Et je vais juste retrouver mon emplacement d'actrice et casser ce vecteur x, y et z. Je peux donc utiliser ces valeurs. Je vais juste brancher le y et le z. Le y et le z restent les mêmes que le, comme le poème que nous avons l'ennemi ****. Mais seules les sorties vont trouver un emplacement aléatoire, et c'est la seule chose qui va changer. Ainsi, le Y et le Z resteront toujours les mêmes. Très bien, donc c'est le résultat final et nous devons le brancher quelque part et l'utiliser dans notre arbre comportemental ici. C'est ici que le Blackboard entre en jeu. Revenons donc au Blackboard. En fait, je pense que nous pouvons activer ici et l'arbre comportemental, afin que vous puissiez soit trouver le tableau noir à l'intérieur d'ici et l'ouvrir. Mais comme avant, nous pouvons également le faire en allant leur arborescence comportementale et en cliquant sur le tableau noir ici. Faisons donc une nouvelle clé et créons un vecteur. C'est ce dont nous avons besoin. Et appelons ce vecteur l'emplacement x. Nous ne sommes donc intéressés que par l'emplacement X. Et juste s'assurer qu'il s' agit d'un vecteur et que nous n'avons pas vraiment besoin de changer quoi que ce soit ici. Alors, gardons ça ici. Et revenons à la tâche. Et ensuite, nous allons créer une nouvelle variable. Cette variable, je vais juste l'appeler vecteur car c'est un vecteur. Et ce que vous devez faire ici c'est chercher Blackboard. Et sélectionnez celui-ci appelé sélecteur de touches Blackboard. Nous pouvons compiler et économiser. Et maintenant, vous pouvez prendre ce vecteur ici. C'est le vecteur du tableau noir. Et vous pouvez dire définir Blackboard, valeur du tableau noir comme vecteur. Vous devez le sélectionner maintenant. Et ce qu'il va faire maintenant, cela va ajouter cette valeur ici dans ce vecteur que vous avez créé. Alors, ajoutons-le maintenant ici. Donc maintenant c'est le résultat, et connectons-le. Il va donc partir d'ici jusqu' ici, comme ça. Maintenant, c'est connecté. Et finissons, exécutons. Et n'oubliez pas de toujours cliquer sur ce bouton de réussite. C'est très important. Compilez et économisez. Voyons maintenant ce qui se passe. Revenons maintenant à l'arbre comportemental ennemi. Cliquez donc sur l'arborescence des comportements. Maintenant, ce que nous pouvons faire, c'est que nous pouvons aller chercher notre tâche ici. Donc, juste en écrivant pour BTT et on peut trouver celui-ci, PTT trouve un emplacement aléatoire. Et maintenant, nous devons le dire, c' est cet emplacement x que nous devons utiliser dans notre Blackboard. Mais vous pouvez voir ici, je ne peux pas vraiment, si je clique sur cette tâche, je ne peux pas vraiment, je n'ai pas d' option pour le faire. Et c'est parce que dans la tâche, vous devez cliquer sur ce vecteur et vous devez cliquer sur celui-ci appelé instance modifiable. N'oubliez pas de le faire sinon vous ne pourrez pas le voir. Retournez donc à l'ennemi. Et vous pouvez voir maintenant que nous pouvons sélectionner un vecteur et le vecteur que nous voulons utiliser est cet emplacement x. Maintenant, il va trouver un emplacement aléatoire et ce sont ces vecteurs. Nous avons donc maintenant le résultat. Il va se déplacer à cet endroit. Et à la fin, ce que je veux faire, c'est juste dire attendez. Parfois, lorsqu' il trouve un point, il se déplace à ce point. Je voulais attendre un peu avant qu'il ne bouge à nouveau. Ici, dans le temps d'attente, je vais juste écrire 0. J'ai trouvé que c'était la meilleure façon de le faire. Le temps d'attente est donc de 0, mais la variation est de trois secondes. Parfois, ils attendent 0 seconde, parfois trois secondes, parfois deux secondes. Parfois, ils peuvent attendre 0 seconde pour ne pas attendre, ils bougent à nouveau. Il y a des variations aléatoires, trois secondes ou parfois elles attendent trois secondes. Mais maintenant, il va trouver un emplacement aléatoire. Il va se déplacer à cet endroit. Ensuite, il va attendre jusqu'à trois secondes , puis recommencer et répéter ce processus. Bon, donc pour que tout fonctionne, nous devons retourner à la manette du joueur. Et à l'intérieur d'ici, commençons à jouer. Vous devez dire exécuter l'arborescence comportementale. Sinon, votre arbre comportemental ne fonctionnera pas. Et ensuite, vous devez sélectionner l'arborescence de comportements que celui-ci va composer Enregistrer. Et maintenant, mettons un ennemi au niveau et voyons si cela fonctionne ou s'il y a quelque chose que j'ai oublié. Il suffit donc de frapper un ennemi dans le niveau. Cliquons sur Jouer maintenant, sélectionner le personnage. Et maintenant, ce que je regarde mon ennemi, je vois que mon ennemi ne bouge pas. Il y a donc quelque chose qui ne va pas et je dois trouver ce que j'ai mal fait dans ce processus. Très bien, donc la façon dont je fais ça pour déboguer les choses. Vous pouvez donc voir ici quand je joue de nouveau ici, l'IA n'est pas vraiment en mouvement. Quelque chose ne va pas. Et mettons-le ici. Peut-être qu'il est à l'intérieur du sol et qu'il ne bouge toujours pas. Donc, la première chose que je n' aime pas quand je débogue, parfois le volume de rebond du maillage de navigation bogue, donc ça ne fonctionnera pas. Parfois, j'ai effectivement supprimé et j'ai essayé de le refaire. Je ne sais donc pas pourquoi dans Unreal Engine parfois ça marche. Ce n'est peut-être pas le problème, mais nous pouvons commencer ici. Et donc dans les volumes, ajoutons à nouveau le volume des limites du maillage de navigation , mettez-le à 0. Et dans l'étendue des boîtes, je vais l'augmenter encore, quelque chose comme ça. Et puis augmentez le, le z. Ok, maintenant je l'ai à nouveau et dans la refonte ici, je vais régler le décalage de nouveau tirage à 0. Et nous avons réglé la hauteur de l' agent sur la boucle maximale 289 de l'agent et la hauteur maximale 289. Ensuite, je vais tout sauvegarder et reconstruire. Bon, maintenant on peut essayer de cliquer sur Play et ça ne bouge toujours pas. La prochaine chose, ce que j'essaie de regarder, c' est de trouver un point dans mon arbre comportemental sur ma tâche en fait. Donc, pour commencer, ce que je fais habituellement, c'est que je vais juste imprimer à l'écran. impression de chaîne est donc la meilleure chose que vous puissiez faire pour le débogage. Parce que lorsqu'il imprime une chaîne sur votre écran, vous savez que ce code se déclenche. Ce code fonctionne. Donc, si je clique sur Play now et que vous pouvez voir ça dit Bonjour. La tâche est donc de dire bonjour. Donc, en essayant d'exécuter le code, rien ne va pas ici. Passons donc à nouveau avec le code. Par ici. Essayons de voir s' il trouve ce point. Nous allons donc imprimer à nouveau sur l'écran, connectés à partir d'ici maintenant. Parce que maintenant nous le savons, nous savons maintenant que cette partie du code fonctionne, donc elle lance cette tâche. Donc, ici, nous allons maintenant imprimer cette valeur. Il va donc imprimer ce vecteur et voir si nous avons trouvé quelque chose ici. Et vous pouvez voir dans le X, il est en fait de trouver des emplacements différents, mais cela fonctionne réellement. Il s'agit donc de trouver correctement ces emplacements. C'est très bien, ce sont ces emplacements et je sais que mes contrôleurs IA fonctionnent également parce que c' est celui qui exécute l' arbre de comportement que nous avons créé. Et c'est peut-être un mouvement, puis une attente instantanée. C'est donc aussi quelque chose qui peut arriver. Donc ici, dans l'arbre comportemental, il se déplace peut-être et qu'il attend instantanément pour une raison quelconque. Alors permettez-moi de connecter ça et de connecter ces deux-là. Laissez-moi enregistrer , puis cliquez sur Play. Et si je regarde mon arbre comportemental, vous voyez ici que je joue au jeu maintenant. Et je pense que c'est ce qui se passe finalement parce que je ne vois rien de mal dans notre code. C'est trouver un point aléatoire. Il essaie de passer à ce moment-là. Mais vous pouvez voir ici que notre arbre comportemental devient fou. Il s'agit en fait de se déplacer vers cet endroit, trouver un nouvel emplacement, de se déplacer, trouver, de se déplacer, de se déplacer, de trouver. Il continue de le faire. Il trouve un nouvel emplacement. Même si l' emplacement est loin, il se déplace en quelque sorte par un petit pas avant de commencer à atteindre, la recherche d'un nouvel emplacement. Encore une fois, je pense que la touche Blackboard ici est réglée auto-acteur que c'est peut-être le bug ici. Revenons ici, quittons le mode de lecture et cliquons sur ce déplacement vers. J'ai donc oublié de changer cet endroit ici. Reconnectons ça ici. Cliquons sur Play. Maintenant. Vous pouvez voir, maintenant, ça fonctionne réellement. L'escargot se déplace donc. Il a déménagé dans un endroit. Il attend jusqu' à trois secondes , puis il se déplace à nouveau. C'était donc le bug. Et je ne veux pas supprimer cela de la vidéo car je veux vous montrer comment déboguer les choses parce que vous allez rencontrer des problèmes. Et lorsque vous essayez d'utiliser la chaîne d'impression pour imprimer une chaîne à l'écran. Et quand il imprime une chaîne, vous savez que ce code fonctionne parce qu'il déclenche le décodage pour vous, il déclenche l'événement. Vous pouvez également essayer de trouver l'endroit à voir, est-ce qu'il trouve un emplacement aléatoire ou non ? La dernière chose, évidemment, c' est que l'arbre comportemental est solide. C'est devenu fou. Et c'est parce qu' il passait à ce facteur cellulaire dans le Blackboard, ce qui n'avait pas de sens. Il était censé déménager à cet endroit. Maintenant, il fonctionne ici. Mais vous voyez bien sûr notre animation ne fonctionne pas car nous n'avons ajouté aucune animation pour l'escargot ou pour aucun des ennemis. Nous allons donc le faire dans la prochaine leçon. 53. État du mouvement d'ennemis: Très bien, ce que nous devons faire dans cette leçon, c'est que nous devons changer l'état du mouvement de cet ennemi pour qu'il change le flip book. Chaque fois qu'il se déplace, il a le flip book de mouvement, et chaque fois qu'il est inactif, il a le flip book inactif. Donc, en fait, le même processus que celui que nous avons fait avec notre joueur lorsque nous bougeons et nous arrêtons. C'est la même chose. Revenons maintenant à la base ennemie. Et à l'intérieur d'ici, supprimons tous ces événements par défaut. Et ce que nous voulons faire en fin de compte, c'est créer une nouvelle variable et la définir en mouvement. Donc, en fait, je vais écrire un B devant lui. Car Boolean déplace ce booléen ici. Si je le fais glisser, nous voulons le configurer pour notifier le représentant. N'oubliez donc pas que toutes les modifications visuelles doivent être interrompues, notifier et changer le flip book est un changement visuel pour que tous les clients puissent le voir. Et c'est ce que nous voulons faire. Donc, dans la fonction de déballage, rappelez-vous qu'elle crée une fonction de rampe lorsque vous faites quelque chose pour enrouler la notification. Et à l'intérieur d'ici, prenons-le. Donc pas en ce moment, je travaille juste reculons pour que vous puissiez voir ce que je veux dire. Donc c'est le résultat final, déplacement est défini sur vrai. Donc, créer une branche. Si c'est vrai, nous allons prendre ce sprite et set flip book. Maintenant, nous allons régler ce flip book deux. Donc, s'il bouge, nous ne serons pas au ralenti. Nous allons déménager ici. S'il bouge, on va bouger. Et s'il tourne au ralenti, s'il ne bouge pas, nous allons rester inactifs comme ça. Mais maintenant, vous pouvez voir que nous devons choisir, nous devons également sélectionner le cochon. Nous devons donc le faire de manière dynamique. Donc, si vous avez deux ennemis, ce n'est que pour un seul ennemi, cela ne fonctionne que pour l'escargot. Nous en avons également besoin pour le cochon. Et rappelez-vous que, comme nous l'avons fait avec le joueur, vous devez créer une structure. Allons dans le dossier Structures. Cliquons avec le bouton droit de la souris et créons une nouvelle structure. Cliquez donc avec le bouton droit de la souris et trouvons-le sous Blueprints et structure et appelons ça s t info animal. À l'intérieur d'ici, nous allons simplement créer deux choses. Nous allons créer l'animation inactive, et nous allons créer l'animation d'exécution. On peut simplement appeler ça l'animation du mouvement. Nous l'appelons simplement déplacer, déplacer l'animation. Et c'est évidemment un flip book comme celui-ci. Et c'est aussi un livre papier. Ok, donc nous avons ces deux-là, et vous pouvez deviner que plus tard, nous pourrons peut-être ajouter de la santé aux ennemis afin que nous puissions créer une nouvelle variable plus tard et l'appeler santé. Toutes les informations sur l'ennemi vont donc être stockées à l'intérieur d'ici. Alors, combien de santé ils ont, combien de dégâts ils font, combien d'or ils vous donnent et ainsi de suite. Donc, toutes les informations sur les animaux seront ici plus tard. Revenons maintenant à la base ennemie. Et maintenant, nous pouvons ajouter la structure et les variables. Et on peut appeler ça des informations sur les animaux. Nous pouvons le sélectionner ici et nous l'appelons « info animal ». Et c'est la structure. Maintenant que nous avons cette structure, nous pouvons la faire glisser et comme avant, en sortir et cliquer sur casser pour voir toutes les variables. Ensuite, vous pouvez ajouter le ralenti. Vous pouvez voir que nous avons l'ADL ici et qu'ils se déplacent ici, ce sera un gâchis parce qu'il va être traversé comme ça. J'aime rester propre dans mon projet. Donc, ce que je vais faire, essayons d'avoir le ralenti ici pour que nous puissions inverser cela en disant « dingue ». Par conséquent, ne signifie pas booléen. Donc, si cela signifie maintenant que l'ennemi ne bouge pas, donc si cela se déplace est faux, donc s'il ne bouge pas, alors nous sommes au ralenti. Permettez-moi donc de supprimer ces flip-book et de me connecter ici. Donc, ce que nous devons faire ici, donc si vous ne bougez pas, si c'est vrai, vous êtes au ralenti. Nous nous connectons donc au ralenti ici. Et je vais copier ça ici, son cou, les sprites. Il y a connexion false ici et connectez-les vers le bas ici. Donc, lorsque nous ne bougeons pas, nous sommes au ralenti. Lorsque nous bougeons, nous sommes dans l'animation du mouvement. Et pour que cela fonctionne, il faut y aller. Vous avez maintenant ces deux variables et vous devez les définir. Et n'oubliez pas que lorsque vous ajoutez une variable à la classe parente, nous sommes donc à l'intérieur de la base ennemie. Toutes les classes de Blueprint enfant hériteront de ces informations. Le cochon et l'escargot sont donc les enfants de la base ennemie. Donc, allez au cochon et ouvrez l'éditeur de Blueprint complet ici dans les valeurs par défaut de la classe. Vous pouvez voir que la variable d' informations sur les animaux est ici car vous l'avez ajoutée à la classe parente. Vous pouvez donc sélectionner ici l'animation inactive pour le cochon. Alors cherchez le ralenti, prenez ça et la lune, et sélectionnez-le. Déplacer l'animation. La même chose ici pour l'escargot. Alors ouvrez-le, ouvrez la classe complète de l'éditeur de Blueprint, les informations sur les animaux par défaut , recherchez le ralenti et ajoutez les escargots, recherchez le mouvement et ajoutez également le mouvement pour l'escargot. Bon, donc nous l'avons maintenant, et revenons à la base. C'est donc le résultat final que nous viserons. Et permettez-moi rapprocher comme ça pour qu' il soit plus organisé. Revenons au graphique des événements. Nous avons donc maintenant cette variable que nous devons définir, et nous les définissons toujours qu'elles se battent via un serveur. Faisons une valeur personnalisée l'appelons états de mouvement du serveur comme celui-ci, et nous allons l'exécuter via le serveur et nous sommes fiables et nous pouvons maintenant connecter cela. Maintenant, rappelez-vous ces variables de serveur, nous devons également nous faire passer par une variable normale. Et c'est ce qu'on appelle le stade du mouvement. Créons-en un directement à l'intérieur d'une interface Blueprint. Parce que maintenant, nous en avons un. Allons aux interfaces ou à la base ennemie. Et appelons-le ici. Le mouvement déclare. Nous allons compiler. Et ici, dans la base ennemie, nous avons créé une variable appelée est en mouvement, donc nous avons besoin d'un booléen. Créons donc un booléen et l'entrée appelée D se déplace. Compilons et sauvegardons, et revenons à la base ennemie. Nous pouvons donc maintenant appeler cela des états du mouvement. Et nous pouvons appeler cela des événements. Et nous pouvons maintenant exécuter cet événement serveur à partir d'ici. Ok, donc maintenant, nous travaillons à rebours. Nous partons donc de cet état de mouvement événementiel. Il va passer par le serveur , puis définir cette fonction de notification de perturbations. Et selon que c'est vrai ou non, il va régler ce flip book. Nous devons donc organiser cet événement quelque part. Et je crois que le meilleur, ou je trouve, j'ai trouvé que la meilleure façon de faire cet état de mouvement est ici dans l'arbre comportemental à l'emplacement aléatoire défini à la fin. Donc, quand on trouve un emplacement aléatoire, allons-y et disons qu'il se déplace. Nous allons donc faire en sorte que l'état des mouvements soit vrai. Et ensuite, il va aller de l'avant et se déplacer à cet endroit. Nous avons donc déjà une référence à notre pion. C'est donc très facile. Nous pouvons prendre cela et dire Définir l'état du mouvement et sélectionner ce message car il s'agit d'une interface Blueprint. Juste comme ça. Et en fait, c'est une base de joueurs qui n'est pas la bonne. Revenons en arrière et voyons comment l'appelons-nous. En fait, je viens d'appeler ça un état de mouvement. Permettez-moi d'appeler ça un état de mouvement fixe. Je pense que c'est beaucoup mieux. Donc, en appelant celui-là aussi, les mouvements fixes restent comme ça. Compiler. Revenons à cela et disons « Définir les mouvements, les États ». Et ici, c'est dans la base ennemie, pas dans la base des joueurs. Quoi qu'il en soit, le message sélectionné ici. Maintenant, nous avons dit que le mouvement est vrai. Maintenant, c'est en mouvement. Mais nous devons le définir faux à un moment donné, car maintenant si vous cliquez sur Play et que vous pouvez l'essayer, vous pouvez voir qu'il se déplace maintenant. Et permettez-moi de réduire un peu la vitesse de déplacement , car maintenant elle se déplace si vite. Alors, pour l'escargot, passons au mouvement des personnages. Et je vais régler le mouvement à 45. Je l'ai fait beaucoup et je pense que quarante-cinq ans était un bon numéro pour cet escargot à histoire de métal. Vous pouvez donc voir qu'il bouge, mais lorsqu'il est au ralenti, il ne s'arrêtera jamais comme dans le flip book d'animation inactif. Et c'est parce que nous n'avons jamais défini le booléen sur faux. Il ne sait donc pas vraiment quand lire ce flip book d'animation inactif peut voir quand il tourne au ralenti, il bouge toujours. Nous devons donc définir, si je retourne à l'interface, nous devons définir cela sur false à un moment donné. Faisons cela ici, dans l'arbre comportemental, nous pouvons également le faire. Donc, il se déplace à cet emplacement et avant qu'il ne pèse, allons de l'avant et mettons ce booléen à faux. Faisons donc une nouvelle tâche ici et cliquons sur celle-ci ici. Nous faisons donc une nouvelle tâche. Et celui-là, je vais appeler le mouvement booléen, définir la boule de mouvement, ce qui signifie que le mouvement Booléen, c'est la seule chose qui est en train de faire. Encore une fois, tout comme ce que je vous ai dit auparavant, nous devons commencer par une réception d'exécution Ai. Et nous devons finir dans les exécutions finies. Et nous devons réduire le succès quand c'est fini. Et la seule chose que nous faisons, c'est de prendre ce dicton devient ennemi, obtient une référence ennemie. Nous obtenons donc cette référence ennemie ici et dans la base. Et depuis l'interface, nous pouvons simplement faire glisser et dire Définir les états de mouvements ici et la base ennemie. Et la seule chose que nous faisons est de définir ce booléen sur faux parce que maintenant nous ne bougeons plus. Nous avons fini de bouger. Revenons donc à l'arbre comportemental. Et ici, nous pouvons faire glisser et dire BTT et sélectionner ce booléen de mouvement unique . Ok, donc le truc se passe maintenant, c'est trouver un endroit aléatoire. Il se déplace à cet endroit. Et quand il bouge et finit ce mouvement, il va définir le booléen vrai, faux, donc nous ne bougeons plus. Ensuite, il va attendre ici. Maintenant, cliquons sur la plaquette. En fait, il suffit d'ajouter quelques autres ennemis juste pour ne pas avoir à attendre que cet escargot s'arrête. Donc, cliquez ici, et vous pouvez voir que c'est maintenant, celui-ci est inactif et ça fonctionne très bien. Maintenant, il est inactif. Et quand il bouge, il est dans le flip book. Maintenant, cela fonctionne parfaitement. Ce que nous pouvons faire maintenant, c'est nous pouvons simplement ajouter quelques ennemis supplémentaires. Donc, le fait de maintenir Alt et de faire glisser sera dupliqué. Et vous pouvez simplement dupliquer quelques ennemis à ce niveau. Combien vous en voulez. Je ne vais pas les placer en fait, on les place ici. Pourquoi, pourquoi pas ? Allons voir l'ennemi et je vais placer le cochon ici. Les ennemis les plus durs sont au sommet ici. Mettons ça à 0. Et en fait, au lieu de 0, nous devons en mettre un pour ne pas mentir sur les carreaux. Mais ajoutons, par exemple, pour les cochons ici. Et oui, je pense, je pense que c'est très bien. Supposons donc que nous cliquions sur Play pour voir si tout fonctionne plutôt que les cochons sont trop rapides. Revenons donc aux photos. Et d'autres porcs que j' appelle, je vais fixer à 90 ans. Je pense que les 90 je l'ai testé aussi. Mais les cochons sont un bon nombre. Et vous pouvez voir qu'ils sont derrière les tuiles. Donc, en fait, nous devons les faire avancer un peu. Le moyen le plus rapide de le faire est les sélectionner ici dans le plan général. Ce sont donc les cochons. Ce sont les escargots. Maintenez la touche Maj enfoncée, sélectionnez le dernier, afin que nous les ayons tous et réglez-le sur un ici dans le Y. Et cliquez sur le joueur. Au lieu d'un joueur, je veux qu' il soit devant les ennemis. Donc, cliquer sur deux sur ce joueur apparaît, donc nous sommes devant tous les ennemis. Et maintenant, cliquons sur Play. Et c'est à ça que ça ressemble. Nous avons donc les cochons qui courent là-haut. Le ralenti fonctionne bien et le mouvement fonctionne bien également. Vous pouvez voir que ces escargots sont un peu au sommet. Ce que vous pouvez faire, c'est cliquer sur l'escargot. Le fait est que lorsque vous augmentez cette capsule, il va pousser cet escargot vers le haut pour qu'il n'ait pas l' air d'être au sol. Par exemple, pour l'escargot, si vous essayez seulement de 11 ici et plus haut, cliquez sur enregistrer le composé. Et vous pouvez voir maintenant qu'il est sur l'herbe, maintenant il ne s'envole plus. Le problème est maintenant et nous allons le résoudre dans la prochaine leçon, vous pouvez voir qu'il est toujours en mouvement, comme c'est le cas, il est en fait inactif, mais il se déplace comme ça. Ils sont en train de s'en sortir. Cela est dû au fait que l' animation inactive est pompée. J'ai donc passé quelques temps à voir pourquoi il faisait cela. Et je ne sais toujours pas pourquoi il fait ça. Mais je pense que ma théorie est d' essayer de trouver un point dans la navigation et qu'elle se déconnecte parce qu'elle est en train de bouger. Il ne tourne pas au ralenti, mais il ne peut pas se déplacer dans cette zone. Et c'est dû à cette capsule ici. Il fait une collision étrange et il emmagasine l'ennemi. Passons donc à la leçon suivante et corrigeons ces bogues. 54. Corriger les problèmes de bogue et d'écrêtage: Ok, donc pour réparer le dernier dollar de la dernière vidéo, il faut y aller, commençons par cet escargot. Essayons donc d' augmenter cette capsule. Jusqu'à 2828, c' était le meilleur chiffre pour ces escargots. Et déplacons cet escargot moins 18 pour voir s'il est au sol. Donc, le ramener à moins 18, c'est bouger sur le sol. Et juste pour vérifier et voir s'il y a des problèmes ici à la Colline, ils semblent se déplacer sans heurts maintenant. Très bien, donc ça semble bien maintenant. Donc, si elle se livre, vous pouvez augmenter cette capsule ici et elle peut descendre cet escargot pour le faire marcher sur l'herbe si vous ne le faites pas, elle plane sur l'herbe. Et pour les cochons, ce que j'ai fait c'est que j'ai fait cette capsule 30 par 30, puis je déplace ce cochon de moins huit pour qu'une capsule soit plus grande. Celui-ci est grand maintenant, j'ai donc trouvé que c'était la meilleure solution pour résoudre ce problème de bogue. Et maintenant, nous pouvons voir que tout se déplace correctement et que nous n'avons aucun problème. Encore une fois, si vous rencontrez un problème lorsque l'ennemi se déplace et reste au ralenti au même endroit. Vous pouvez essayer d'atteindre la taille de la capsule , puis descendre l'ennemi. Nous avons donc fait tous ces progrès. Super travail jusqu'à présent. En fait, vous avez progressé très loin dans ce cours. Et la prochaine chose que nous pourrions faire est endommager ou peut-être que nous avons besoin d'une échelle ici. Je vais donc vous voir ce que je vais faire pour la prochaine section. Et jusqu'à présent, tout va bien. Si vous voulez ajouter d'autres ennemis, vous pouvez le faire. Si vous voulez le faire vous-même, encore une fois, vous ne pouvez pas le publier sur Steam ou ailleurs. C'est uniquement à des fins éducatives. Mais si vous vouliez simplement vous entraîner, j'utilise ce site Web appelé Maples que je suis un simulateur d'érable. Vous pouvez donc simplement cliquer ici et créer un nouveau personnage. Vous pouvez également créer un nouveau monstre ici. Une foule peut voir ici que vous pouvez créer des cartes. Vous pouvez sélectionner le type de mob que vous voulez créer, peut-être un slime, quelque chose d'autre pour créer plus de cartes, vous pouvez ensuite, après cela, je les retourne généralement horizontalement parce qu'ils doivent être dans cette direction avant que cela puisse fonctionner. Parfois, vous avez besoin de Photoshop pour les faire pivoter. Vous pouvez ensuite télécharger la feuille de calcul. Ensuite, vous pouvez utiliser cette feuille de calcul slime et vous pouvez les importer ici dans nos projets. Donc, si je retourne ici et notre projet, vous pouvez simplement importer à nouveau ces textures dans les atouts, les ennemis, et vous pouvez refaire tout le processus, et vous pouvez ajouter d'autres ennemis. Donc, à vous de choisir ce que vous voulez faire avec le jeu, vous pouvez essayer de jouer et de vous amuser avec cela. Disons donc : Eh bien, et passons à la prochaine leçon. 55. Ajouter le sprite de corde: Bonjour à tous et bienvenue. Dans cette section, nous allons travailler avec le déclin comme mécanicien. C'est un excellent travail pour être arrivé jusqu'ici. Vous avez fait beaucoup de progrès. Et vous pouvez voir que nous avons beaucoup fait. Et dans cette section pour que le client soit mécanicien, nous avons beaucoup à apprendre. Allons de l'avant et commençons à ajouter le sprite de corde. Dans le matériel de cours. J'ai inclus pour vous, les cordes brillantes. Si vous allez au matériel de cours , puis vous allez dans l'environnement. Et à l'intérieur d'ici, vous avez cette texture appelée corde. Revenons donc à notre dossier constant. Et à l'intérieur des ressources, et nous avons déjà un dossier d' environnement. Donc à l'intérieur d'ici, à l'intérieur des textures, je vais télécharger ma corde, alors faites-la glisser dans le dossier des textures. Bon, donc à l'intérieur d'ici, faisons un clic droit. Accédez à Actions Sprite et appliquez du papier aux paramètres. Essayons de cliquer dessus, puis de créer un sprite. Rien de nouveau jusqu'ici. C'est ce que nous avons fait jusqu'ici. Je vais l'appeler comme une corde. Bon, maintenant, nous avons ce sprite à corde. Jusqu'à présent, nous avons fabriqué des flip books. Et comme vous pouvez le voir ici, la corde n'est évidemment pas un flip book, ce n'est pas une corde animée. Faites-le glisser ici vers l'environnement. Et maintenant, nous travaillons avec un sprite. Je crois que c'est le premier sprite que nous allons ajouter à notre environnement. Et avant d'ajouter le sprite, comme si vous pouvez faire glisser le sprite et l'ajouter à l' environnement comme celui-ci et peut-être définir le y sur 0 ou un. Et vous pouvez simplement placer la corde comme celle-ci et tout va bien et la corde est ajoutée. Mais le problème, c'est que nous allons ajouter du code à la corde parce que notre joueur va interagir avec elle. Nous allons donc le supprimer ici. Et je vais en faire un plan directeur. Ainsi, chaque fois que vous avez quelque chose avec lequel le joueur interagit, vous devez automatiquement penser en faire un plan. Passons donc aux plans et cela nous permettra de créer du code pour la corde. Laissez-moi donc cliquer ici avec le bouton droit de la souris et créer un nouveau dossier et appeler ça grimper. Par ici. Cliquez avec le bouton droit de la souris et accédons aux Blueprints. Et puis, en fait, cliquez ici, Blueprint Class. En cliquant de nouveau ici, recherchez du papier ici. Et nous voulons faire un sprite. Donc, avant de créer des flip books et des cartes de tuiles, mais cette fois, nous avons également créé des personnages. Cette fois, nous allons créer un sprite. Pour celui-là, je vais appeler ça la chaux étant la base. C'est donc le plan de base pour que le client soit exactement comme celui que nous avions pour la base des personnages et la base de joueurs. Nous avons maintenant un client basé parce que c'est très bien. Vous avez une corde en ce moment, mais à l'avenir, que se passe-t-il si vous vouliez avoir une échelle ? Et si vous vouliez avoir un tuyau comme vous l'avez comme une carte de l'industrie, alors vous aurez peut-être des tuyaux que vous utiliserez comme lettres ou cordes. Nous avons donc une base de serrage et nous pouvons ensuite ajouter beaucoup d'objets grimpants. Donc des échelles, des cordes, des tuyaux, tout ce que vous voulez ajouter à votre jeu. Nous allons maintenant cliquer avec le bouton droit sur cette base d'escalade et créer une classe Child Blueprint. Et à partir de là, nous allons créer la corde BP. OK, nous allons tout enregistrer jusqu'à présent. Donc, pour la corde d'escalade ou autres cordes ici, double-cliquez. Et à l'intérieur d'ici, nous avons l'objet de rendu ou nous rappelons les composants de rendu. Et choisissons notre ligne ici. Donc, à la recherche d'une corde et en sélectionnant notre corde. Très bien, donc maintenant celui-ci est ajouté. Et ce que nous pouvons faire ici, c'est que nous pouvons maintenant faire glisser nos plans, traînés dans le niveau. Définissons l'emplacement sur 0. Je vais le régler sur un car rappelez-vous que les tuiles de base sont à 0 et je ne veux pas tout embêter. Je vais donc mettre celui-ci à un seul et laisser le déplacer ici. Je ne sais pas, peut-être quelque chose comme ça. Et je vais déplacer cet ennemi pour que je puisse réellement voir où je place ça. Donc quelque chose comme ça et un peu en bas pour que cette partie est accrochée aux carreaux ici. Maintenant, vous pouvez voir que la corde interfère réellement avec notre maillage de navigation, donc nos ennemis ne peuvent plus se déplacer ici. Cliquons donc sur la base d'escalade. Nous ne voulons pas cela. Cliquez donc sur la base d'escalade. Supprimons tout le client étant des objets. À l'intérieur d'ici, cliquez sur les composants de rendu. Laissez-nous maintenant entendre dans la collision ou aucune collision du tout. Et le joueur ne peut pas marcher dessus. Et il ne générera aucun événement de chevauchement. Les événements de chevauchement que nous ferons plus tard, nous allons ajouter des boîtes de collision. Ce n'est donc pas vraiment le composant de rendu lui-même. Ce sont les boîtes de collision que nous allons faire, les chevauchements. Vous pouvez donc voir maintenant qu'il ne se chevauche et que tout est réparé. 56. Événement de chevauchement de corde: Travaillons maintenant sur les événements de chevauchement des cordes. Donc, pour les événements de chevauchement des cordes, nous avons besoin d'une boîte de collision. Allons donc à la base d'escalade et ajoutons une. Et la raison pour laquelle nous l'ajoutons à la base colombienne et non à la corde, nous l'ajoutons à c'est parce que chaque fois que nous créons plus tard de nombreux objets grimpants, tous ces objets auront ces insectes de collision parce que tous ces objets agglomérés seront les enfants de cette base d'escalade. Ainsi, tout ce que nous ajoutons ici s'appliquera à tous les enfants présents dans le composant de rendu. Juste une boîte de collision. Recherchez donc une collision et ajoutez celle-ci appelée collision de boîte. Et laissez-moi juste appeler ça la boîte de collision et Compiler et économiser. Et nous n'avons pas vraiment besoin d'en faire plus ici. Laissez-nous donc minimiser cela et laissez-moi revenir à la corde maintenant. Et ouvrons l'éditeur de Blueprint complet. Accédez à la fenêtre d'affichage. Et à l'intérieur d'ici, nous devons ajuster celle-ci pour qu'elle remplisse cette corde ici dans l'étendue de la boîte que je vais faire maintenant 55, nous devons en fait tester cela dans le jeu. Donc, mais pour l'instant, nous pouvons simplement le régler à 55. Ou peut-être que si vous voulez l'agrandir, vous pouvez même faire 1010. Et faisons-le en fait. Essayons d'en faire dix au lieu de cinq. négatif cinq est trop petit pour ce nombre, peut-être quelque chose comme 50 ou 6065. Encore une fois, nous devons tester cela dans les jeux. Je ne sais pas à quoi ça ressemblera en ce moment. Donc quelque chose comme ça où nous l'avons placé comme 40 dans le z et 101065 ici pour la boîte de collision. Je vais donc retourner à la base d'escalade et pour la boîte de collision, descendant à la collision, la seule chose que je vais changer, celle-ci peut monter sur les personnages, je vais pour cliquer et non, je pense que tout va bien pour l'instant, alors ne touchons rien ici. Maintenant, pour créer les événements de chevauchement, vous pouvez cliquer à nouveau sur la zone de collision comme auparavant. Descendez en bas et cliquez sur celui-ci sur le composant, commencez le chevauchement. Alors, que devrait-il se passer lorsque nous commençons chevaucher la boîte ici, je vais supprimer les événements par défaut. Que devrait-il se passer si nous commençons à chevaucher cette boîte de collision ? Et vous pouvez voir que la boîte de collision est celle-ci, ce carré que nous avons ajouté ici. Alors, que devrait-il faire le verrou lorsque le joueur vient ici et saute sur cette boîte de collision, que doit-il se passer ? abord, nous devons vérifier si c'est le joueur qui interagit avec notre boîte de collision. Et avant cela, je vais dire que Switch a autorité. Car encore une fois, pour les collisions, nous ajoutons qui a l'autorité assurer que c'est le serveur qui gère toutes ces informations. Nous ne voulons pas que le joueur triche, car encore une fois, l'autorité est le serveur, la télécommande est le client. Et si le client fait tout cela, donc si nous supprimons cela et que nous codons simplement ici, le client a de grandes chances de tricher et nous ne voulons pas vraiment que les clients trichent dans notre jeu. Switch a donc autorité, le serveur a l' autorité sur n'importe quoi. Et le serveur vérifiera si les clients sont autorisés à le faire. Switch a l'autorité et nous devons ensuite vérifier si ce sont les joueurs. Donc, l'autre acteur, qui est le joueur, glissons-nous ici et disons que l'acteur a marqué. Et si l'acteur a le tag player, et créons une branche ici. Autorité. Donc, comme ça. Il passe donc par le serveur et vérifie si l'acteur possède le lecteur de tags, ce qui signifie qu'il s'agit du joueur. Et veillons simplement à ce que notre joueur ait cette étiquette. En revenant aux plans, aux joueurs, à la base de joueurs, je crois que nous l'avons déjà ajouté. Permettez-moi de vérifier les valeurs par défaut de la classe et ici vous pouvez rechercher une balise. Et ici, nous l'avons ajouté plus tôt. Assurez-vous donc que le lecteur de tags est ajouté à votre base de joueurs. Donc maintenant si le tag ou si l' acteur a le joueur de tag, ce que nous faisons, si c'est vrai quand nous voulons faire quelque chose. Et je vais juste organiser un événement appelé Can Climb. Ainsi, lorsque vous entrez en collision avec cette boîte, vous pouvez grimper. Mais si vous n'entrez pas en collision avec cette boîte, cela signifie que vous ne pouvez pas grimper car aucun client n' est un objet près de chez vous. Revenons donc en arrière. Laissez-moi l'ouvrir à nouveau ici. Et ici, nous pouvons dire que nous pouvons organiser un événement disant que nous pouvons grimper, et cela sera à l'intérieur de la base des joueurs. Donc, à l'intérieur d'ici, nous devons d'abord organiser un événement, et travaillons ici pour l'instant. Permettez-moi de faire un événement personnalisé en disant « Can lime ». Et celui-là, nous pouvons en fait transformer une interface Blueprint. En fait, faisons cela tout de suite au lieu de faire tout ce travail. Laissez-moi donc aller à l'interface Blueprint et laissez-moi aller à la base de joueurs. Et ici, permettez-moi d'ajouter une nouvelle fonction Blueprint. Et laissez-moi dire que je peux grimper. Ce que nous voulons ajouter ici est un booléen. Je vais donc ajouter deux variables. abord, un dicton booléen peut grimper. Et laissez-moi ajouter un B ici pour que Booléen puisse grimper. La deuxième chose est que je veux définir le client en tant qu'objet. Donc, être client. Objet. C'est donc une lettre, est-ce une robe de chambre ou quoi que ce soit ? L'objet grimpant est donc, encore une fois, ce que vous avez fait ici. Cette base d'escalade. Si vous regardez ici, c'est un acteur de sprite de papier, donc nous avons besoin d'une référence à cela. Revenons donc en arrière et disons acteur de sprites de papier ici, référence d'objet. Nous avons donc maintenant la canette et la référence de l'objet. Ok, donc la base des joueurs d'Endo, on peut maintenant appeler ça en disant qu'on peut grimper et que vous avez cet événement ici. C'est donc ce que nous voulons en fin de compte. Ici, lorsque vous entrez en collision dans la base d'escalade, lorsque vous entrez en collision avec la boîte de collision. Et c'est le joueur. Nous voulons appeler cet événement. Donc, pour appeler des événements à partir de la base des joueurs, encore une fois, nous devons traîner de l' autre acteur et le dire, jouer la référence que nous avons faite plus tôt. Et puis on peut dire, on peut grimper. Nous pouvons donc maintenant l'exécuter et nous souvenir qu'il s'agit d'un message car il s'agit d'une fonction Blueprint Interface. Ici, on peut grimper. Nous devons prendre cela parce que maintenant nous nous chevauchons. Oui, nous voulons grimper ou oui, vous pouvez grimper. Quel est l'objet de serrage que vous pouvez faire glisser d' ici et vous dire vous-même. Car rappelez-vous que vous êtes à l'intérieur de la base d'escalade Donc, s'il s'agit d'une corde, s'il s'agit d'une échelle, cela va nous donner une référence personnelle et se définir automatiquement parce que vous êtes déjà à l'intérieur d'ici. OK ? Nous avons donc besoin d'un chevauchement fini ou d'un chevauchement final. Donc, en cliquant à nouveau sur la boîte de collision, descendant et en cliquant sur n composant et chevauchement. Que devrait-il se passer lorsque vous terminez chevauchement avec ce composant ? Je vais copier tout ça encore une fois, nous n'avons pas besoin de l'écrire. Une fois encore. J'adore copier-coller le code. Il suffit donc de se connecter, n'oubliez pas de connecter tous ces éléments et de grimper. Il faut simplement l'enlever parce que vous ne pouvez plus grimper parce que vous avez mis fin au chevauchement. Quant à l'objet Alembic, je vais supprimer ceci et ce que cela signifie, il va déclin vide étant variable objet. La variable sera donc vide car nous ne sommes plus en collision avec quoi que ce soit. Et c'est logique. Allons-y, disons tout ici. Et maintenant, il va passer à la base des joueurs et jouer à cet événement. Donc, pour cet événement, ici peut grimper au lieu de le faire directement ici, rappelez-vous que nous jouons en multijoueur, donc nous devons l'exécuter sur les serveurs. fait donc de nouveaux événements personnalisés appelés Harvey et lime. Car rappelez-vous que lorsque vous définissez des variables, vous devez le faire via le serveur pour assurer que le client ne triche pas. Encore une fois, cliquons sur le serveur, exécutons-le sur le serveur, fiable. Et maintenant, vous pouvez simplement exécuter ces événements de serveur. Vous pouvez donc voir que c'est le même schéma que nous avons fait depuis le début. Comme la même chose avec le saut, ou il passe par le serveur et passe ensuite par la multidiffusion avec le son. Et voici la même chose avec le mauvais état du déménagement. Il passe par le serveur, puis il définit la variable sorte que c'est le même schéma que nous faisons tout le temps ici. Je dirais simplement continuer à pratiquer et nous serons beaucoup plus faciles. Je sais que c'est très difficile depuis le début, mais passons maintenant à travers le serveur. Et le serveur va maintenant définir ces variables. Encore une fois, nous avons besoin de deux variables ici. L'un est un dicton booléen qui peut grimper. Et le second était un acteur de papier, qui décroît les objets. Et c'était le journal, un acteur de sprite. Ce journal est un acteur brillant. Bon, on peut maintenant définir les variables. Cliquons avec le bouton droit de la souris sur cet objet de serrage et promu en variable. Et je vais retirer cet espace ici. Nous avons donc maintenant l' objet grimpant en tant que variable. Et cliquons avec le bouton droit de la souris peut monter promu à une variable. Et je vais supprimer cet espacement ici. Et il est dit que nous avons déjà cette variable I, et je pense que c'est la fonction ici. Laissez-moi juste mettre un B devant, donc c'est un booléen et maintenant nous pouvons l'écrire ici. On peut donc grimper et pomper l'objet. N'oubliez pas que nous sommes sur le serveur, de sorte que le client n'a aucune idée des valeurs de ces variables, car vous les définissez sur le serveur. Donc, quand je joue en tant que client, vous avez le serveur ici. Mais si je joue en tant que client, maintenant, je n'ai aucune idée de ce qu'est la montée. Je peux donc simplement imprimer à l'écran pour que nous puissions réellement voir et apprendre ensemble de cela. Donc, en faisant glisser ce booléen, je vais imprimer la valeur de ce booléen. Donc maintenant, si je suis le serveur, c'est le serveur maintenant et j'ai vécu avec lui. Vous pouvez voir qu'il est faux en ce moment. C'est parce que nous ne sommes pas vraiment en train de le faire. Alors, faisons-le maintenant. Relions-les. Donc l'événement, donc il va de cette boîte de collision à la ligne ici. Cela va être vrai. Donc peut grimper est réglé sur vrai. Maintenant, il va aller à la base des joueurs et connectons ceux-ci. Et ça va aller jusqu' ici et il va l'imprimer. Maintenant, ça va dire vrai. Sautons ici. Et vous pouvez voir que c'est vrai lorsque nous entrons en collision et dit faux lorsque nous ne nous heurtons plus. C'est donc exact. Jouons maintenant en tant que client ici. Je suis en train de frayer en tant que client. Et vous pouvez voir comme client, c'est vrai. Mais c'est naturellement le client qui dit que c'est le serveur. Vous pouvez voir qu'il s'imprime en tant que serveur, mais je suis le client. C'est là le problème. En tant que client, je n'ai aucune idée de ce que sont ces valeurs parce que je ne peux pas les voir. Le serveur ne m'a pas donné cette information. C'est pourquoi il est si important de reproduire les choses. C'est la base du multijoueur et de l'Unreal Engine. Cliquons donc sur cette variable et répliquons ces informations aux clients afin que les clients puissent voir quelle est la valeur. Ok, donc maintenant qu'ils sont répliqués, laissez-moi supprimer ceux qui sont dans la chaîne. Donc maintenant, si vous cliquez sur Play et que vous , en tant que client, jouerez comme ce personnage, même si vous sautez et que vous voyez que c'est le serveur qui les imprime ? C'est exact. C'est le serveur qui définit réellement ces variables. Mais maintenant que vous les répliquez sur le client, le client peut en fait voir la vraie valeur si elle est vraie ou fausse. N'oubliez donc pas de répliquer les variables qui doivent également revenir au client. Donc, pour cela peut grimper, nous pouvons faire glisser depuis ce booléen et créer une branche. Donc maintenant, si vous pouvez grimper, nous devons faire quelque chose. Si vous ne pouvez pas grimper, nous devons faire autre chose et nous le ferons dans la prochaine leçon. 57. Entrée du mouvement de haut en bas: Donnons maintenant au joueur la possibilité de monter et de descendre sur cette corde ici. Pour monter et descendre. Revenons aux plans et ajoutons le mouvement à l'intérieur de la base de joueurs. Donc à l'intérieur d'ici, jusqu'à présent, nous avons celui-ci appelé se déplacer à droite et à gauche, mais nous avons besoin d'un nouveau qui s'appelle « Move up and Down ». Faisons donc de nouvelles entrées. Revenons donc à Modifier et aux paramètres du projet. Rappelez-vous que nous l'avons fait il y a quelque temps. J'espère que vous vous en souviendrez. Allez donc dans les paramètres du projet, en cliquant sur les entrées. Et à l'intérieur d'ici, nous avons cela jusqu'à présent. Faisons un nouveau mappage d'accès et appelons-le déplacer de haut en bas, droite et de gauche si vous le souhaitez. On peut aussi entendre que Lipsky s'est trompé. Donc ici je veux cliquer sur ce plus ici, vous pouvez ajouter d'autres boutons si vous le souhaitez. Par exemple, la flèche droite et la flèche gauche de votre clavier. Ainsi, da et aussi droite et gauche fonctionnent sur le clavier. Et rappelez-vous pour la gauche que vous devez écrire moins un. Donc, au cas où vous le vouliez également dans votre jeu, vous pouvez même ajouter une manette pour jouer, mais nous avons besoin d'un peu plus de configuration. Concentrons-nous ici sur eux. Déplacez-vous de haut en bas. Et nous pouvons utiliser W pour monter et S pour descendre. Et encore une fois, nous devons écrire moins un pour le S. Donc monter comme un, moins un pour le descendant. Si vous le souhaitez, vous pouvez ajouter les touches de votre clavier. Flèche haut, flèche vers le bas. Et faisons un moins sur la flèche vers le bas. Bon, donc maintenant, nous sommes allés de haut en bas. Allons le fermer. Et à l'intérieur d'ici, je vais l' écrire comme la première chose ici. C'est notre événement principal. Alors écrivons, montons vers le haut, vers le bas et sélectionnons cet événement d'axe. Donc, de haut en bas. Donc avant, si vous revenez ici, vous avez dit obtenir la rotation du contrôle puis vous avez obtenu le vecteur vers l'avant. Peut-être que vous pouvez déjà le comprendre. Donc, ce que nous allons écrire ici, donc on obtient la rotation du contrôle ici. Ensuite, vous voulez le faire monter vecteur. Maintenant, nous allons monter et descendre. Ajoutons, encore une fois, des entrées de mouvement, comme avant. Connectons-le ici, et connectons la valeur de l'axe ici. Maintenant, si vous compilez et cliquez sur Enregistrer, et que vous cliquez sur Play. Et si vous cliquez sur le haut et vers le bas, vous voyez que rien ne se passe vraiment, mais vous avez écrit votre code. Le problème est ici irréel, c'est que le haut et le bas ne fonctionneront que lorsque vous changez de mode de mouvement. Ainsi, dans le mouvement des personnages, vous pouvez voir que nous avons différents modes de mouvements. ce moment, vous êtes dans le mouvement marchant. Nous avons donc fixé notre vitesse de marche et ainsi de suite. Nous sommes donc en effet des mouvements de personnages qui marchent. Mais pour ce qui est de monter et de descendre, vous devez en fait basculer votre mouvement vers le vol. Donc, vous êtes en train de voler. Techniquement. Nous devons passer à cela et nous le ferons dans la prochaine leçon. Donc, pas pour l'instant. C'est la raison pour laquelle cela ne fonctionne pas actuellement. Mais avant de finir ici, permettez-moi d'ajouter ce booléen ici. Depuis que nous y sommes déjà arrivés. Nous voulons monter et descendre uniquement lorsque nous appliquons des êtres. Nous ne sommes donc pas intéressés à le faire si nous ne sommes pas en train de grimper. Je vais donc le faire glisser ici et faire une branche ici. Donc, si ce booléen peut grimper est vrai, alors nous allons exécuter ce code car il n'a pas vraiment de sens d' exécuter ce code si vous ne pouvez pas grimper. Très bien, donc c'était tout pour cette vidéo, très courte. Mais plus tard, nous allons ajouter maintenant dans la prochaine leçon le conditionnement de l'escalade. Nous fixons donc certaines règles au moment où le joueur peut grimper au burnout. Passons donc à la prochaine leçon. 58. Conditionnement de l'escalade: Ajoutons maintenant un peu de conditionnement et les règles pour le moment où le joueur peut grimper. Revenons donc à la base de joueurs ici. Et au lieu de la base de joueurs, passons à celle où nous nous sommes arrêtés. Ils peuvent grimper. Donc, si vous maintenant encore, permettez-moi de vous rappeler ici, dans les plans l'intérieur de la base d'escalade et d'escalade, c'est là que vous avez interagi avec la boîte de collision de chevauchement de début. Et maintenant, je peux grimper, c'est vrai. Donc, ce qui se passe quand ils peuvent grimper est vrai. Quand la vache peut grimper, c'est vrai. Vous voulez vérifier si le joueur appuie sur la touche W. Alors, on va vers le haut parce que le joueur veut grimper, parce que nous ne voulons pas vraiment grimper ici. Si le joueur n' appuie pas vers le haut ou w, nous sommes uniquement intéressés par le fait que le client soit à chaque fois que le joueur appuie vers le haut. C'est donc quelque chose que vous devez vérifier. Revenons ici. Et quand vous appuyez ici dans le mouvement, n'oubliez pas que ça va aller plus un. Si vous cliquez sur S en descendant, cela va aller moins un, comme nous l'avons dit précédemment. En fait, je vais en faire une variable pour que nous puissions l'utiliser plus tard. Laissez-moi faire un clic droit. En fait, on ne peut pas vraiment le régler directement. Nous ne pouvons le faire qu' en mode solo. Encore une fois, nous devons l' exécuter via le serveur. Laissez-moi donc créer un nouvel événement ici, événement personnalisé et l'appeler la valeur de l'axe Z. Parce que rappelez-vous, z est, nous avançons de haut en bas et c'est l'axe Z. Définissez donc la valeur de l'axe z x, z. Et laissez-le passer par le serveur, serveur définit une valeur d'axe z. En fait, nous pouvons le faire via l'interface, l'interface Blueprint et la base de joueurs. Alors, permettez-moi de le faire à la place. Interface la base du lecteur et laissez-moi créer une nouvelle fonction, appelez-la définir la valeur de l'axe z. Et évidemment, la valeur est un flotteur ici, c'est ce que nous essayons de définir. Laissez-moi créer des charges d' entrées flottantes, d'accord ? Et appelons ça l'axe Z. Et laissez-moi, oui, l'axe Z va bien. Je vais retourner à la base de joueurs. Et à l'intérieur d'ici, appelons la valeur de l'axe z. Et c'est la fonction d'interface. Et maintenant, il va passer par le serveur. Configurons donc celui-ci pour qu'il fonctionne sur le serveur et fiable. Permettez-moi de baisser un peu ça pour que nous puissions voir ce qui se passe et laissez-moi descendre. OK, lançons cet événement serveur ici. Set x correspond à la valeur de l'axe z, et nous avons besoin d'un flotteur. Créons donc un flotteur ici. Et appelons ça l'axe z. Et maintenant, ce que nous pouvons faire, c'est que nous pouvons cliquer avec le bouton droit de la souris et promouvoir en une variable et l'appeler axe z. Ici. Nous avons l'axe Z et laissez-moi connecter tous ces éléments. Et maintenant, nous pouvons l'appeler ici. Donc, si la montée est vraie, nous ne sommes intéressés à mettre à jour cela que lorsque nous pouvons réellement grimper, mais parce qu'avant de pouvoir grimper, nous ne le faisons pas vraiment, nous ne sommes pas vraiment intéressés si le joueur appuie ou non. Nous ne sommes intéressés que si le joueur n'appuie pas dessus chaque fois qu'il peut grimper. Laissez-moi donc dire ici définir une valeur d'axe z. Et en fait, laissez-moi l'appeler à partir de la valeur de l'axe z défini. Permettez-moi de l'appeler à partir de la base de joueurs int. Et comme ça. Et maintenant, nous avons connecté ceci, nous devons connecter cette valeur, l'axe ou cette valeur d'axe à l'axe Z en bas. Et laissez-moi juste l'exécuter ici. OK ? Nous avons donc maintenant tout connecté ensemble et cette valeur d'axe va être mise à jour via cette valeur définie sur l'axe z. Il va descendre ici, puis descendre sur cette valeur. Rappelez-vous ce que j'ai dit auparavant, il faut reproduire cela pour que ces informations soient envoyées à tous les clients. Sinon, seul le serveur connaissant la valeur de cette variable. Très bien, donc revenons ici encore. On peut donc grimper, si on peut grimper, c'est vrai. Maintenant, nous interagissons avec la corde. Prenons cet axe Zici. Si l'axe Z est supérieur à 0. Ce qui signifie que le joueur appuie vers le haut. Et nous pouvons simplement supprimer cela et simplement dire, si l'axe Z n'est pas égal à 0, alors nous voulons faire quelque chose. Laissez-moi simplement faire ça. Et puis on peut créer une branche ici. Si l'axe Z n'est pas égal à 0, nous voulons créer un nouveau dicton booléen qui grimpe. Faisons donc un nouveau booléen ici. Je dis que B grimpe. Donc maintenant, avant que nous ayons ce nom, on peut grimper, mais maintenant nous sommes en train de grimper. Nous fabriquons donc un nouveau booléen appelé grimpant. Et encore une fois, nous devons l'exécuter via le serveur pour que nous puissions le faire ici comme ça, car rappelez-vous que nous sommes déjà à l'intérieur du serveur, mais je pense que nous l' utiliserons plus tard là où nous en fait vont l'utiliser ici via le client et il doit passer par le serveur. Nous allons donc simplement créer un événement pour cela. Créons-en un nouveau appelé événement personnalisé. Et laissez-moi simplement le faire directement à l'intérieur de l'interface ici. Et il suffit de l'appeler, l' ensemble grimpe. Et il va simplement prendre un booléen en entrée. C'est Vi, il grimpe. Et revenons à la base de joueurs. Et ici, on peut dire que l' ensemble grimpe. Et nous pouvons appeler cet événement que nous venons de créer. Faisons passer par le serveur. Nous allons donc créer un nouvel événement personnalisé. Le même ensemble de serveurs grimpe. Donnez-lui une entrée d' un booléen appelé est une ligne comme ceci. OK ? Et celui-ci peut vraiment grimper, mais je vais mettre un B ici juste pour les bonnes pratiques, juste en m'assurant que tout est correct et puisse grimper. Il y a un B ici, donc c'est cool. Donc, ici, l'ensemble grimpe et nous allons l'exécuter à travers le serveur, fiable. Et la seule chose que nous allons faire ici, c'est l'escalade. Nous avons donc créé cette variable, faites-la glisser vers l'extérieur, la définir ici, et nous allons l'exécuter via les clients pour accéder aux serveurs. L'ensemble des serveurs grimpe et le connecte ici. Bon, nous allons donc définir cette variable ici. Et ce que nous voulons faire avec celui-ci n'est pas reproduit. La réplication n'est utilisée que lorsque vous souhaitez envoyer des informations aux clients. Cependant, encore une fois, Rep Notify est utilisé lorsque vous souhaitez modifier quelque chose visuellement. Par conséquent, non seulement des informations comme ici et la valeur de l'axe Z, nous voulions seulement envoyer des informations. Cependant, ici, nous voulons effectuer des changements visuels car nous allons changer le flip book le client en flip book. Nous allons donc modifier cette réplication pour encapsuler la notification car nous avons quelques modifications visuelles que nous devons refuser de connaître. Bon, donc nous allons l'ajouter ici. Donc, si la valeur de l'axe Z n' est pas égale à 0, ce qui signifie que le joueur appuie vers le haut ou vers le bas, nous voulons grimper. Alors, faisons-le. Disons que l'ensemble est en train de broyer. Nous pouvons maintenant appeler celui-ci, ensemble grimpe et nous pouvons le faire à vrai parce que maintenant nous voulons grimper. Cependant, ici à l'automne. Alors permettez-moi de faire glisser ça d'une meilleure façon ici dans le faux. Nous pouvons donc grimper. Mais maintenant, nous avons quitté la corde. Donc maintenant, nous ne pouvons plus grimper parce que lorsque vous finissez, nous chevauchons les bugs. Disons que nous sommes déjà grimpés et que cela devient faux. Nous devons également définir cette valeur sur false parce que sinon nous n'avons nulle part dans notre code à l'heure actuelle, avons-nous précisé quand cela sera faux ? Et si vous grimpez sur la corde et que vous quittez la rangée, celle-ci est toujours vraie. Nous allons donc copier ceci et le placer ici comme ça. Disons que nous sommes déjà grimpés, alors laissez-moi prendre cette escalade et laissez-moi dire branche ici. Donc si nous le sommes, donc ici, si nous quittons la boîte de collision ici dans la base d'escalade, si nous la quittons et que c'est faux. Si nous sommes déjà des êtres grimpés. Donc, s'il y en a, s'il y a une escalade réglée sur true, allons-y et réglons la valeur false. Il suffit de s'assurer que la valeur est fausse. Et nous ne sommes toujours pas en train de grimper comme ça. Permettez-moi donc de faire avancer cela et d'organiser cela un peu plus. Une fois encore. Lorsque quelque chose n'est pas structuré correctement, vous pouvez les sélectionner et cliquer sur Q sur le clavier pour en faire une ligne comme celle-ci. Ok, donc nous avons un petit problème avec ça et peut-être que vous pouvez déjà le comprendre. Laissez-moi simplement compiler ici et laissez-moi imprimer ceci sur l' écran comme ça. Et laissez-moi bouger, laissez-moi aller voir le client étant basé sur la corde. Allons donc à l' escalade de la corde. Laissez-moi aller à la fenêtre d'affichage et augmentez cela à 80 ou quelque chose comme ça. Quelque chose de grand. Et laissez-moi placer le joueur ici. Comme ça. Laissez-moi cliquer sur Play. Et maintenant, je veux aussi l' imprimer à l'écran. Donc, en allant à la base de joueurs, nous allons maintenant imprimer bonjour. Oui, c'est bien. Laissez-moi cliquer sur Play. Et maintenant, si je clique sur la touche de ma souris et que je bouge, vous pouvez voir si je bouge. Laissez-moi passer d'abord. Donc, cliquez sur un pour bouger, puis je clique sur S ici. Vous pouvez voir qu'il dit Bonjour parce qu'il peut vérifier que lorsque je cours, puis je collision avec ma boîte ici et que je peux grimper. Il peut voir que j'appuie sur mon axe Z pour qu'il ne soit pas égal à 0, ce qui signifie qu'il va en fait gravir les êtres. Cela fonctionne donc correctement. Cependant, le problème que nous avons en ce moment, c'est si je suis debout à la corde et que je veux descendre, si je clique sur S pour descendre, ça ne va pas vraiment vérifier. Parce que rappelez-vous que cet événement n'est organisé qu'une seule fois. Il ne fonctionne que lorsque vous entrez en collision avec la boîte. Que se passe-t-il si vous êtes déjà en collision avec la boîte ? Que faire si vous êtes debout sur la boîte ? Cela ne s'est jamais reproduit. Cela ne fonctionnera que lorsque vous quittez la collision et que vous entrerez en collision avec elle. Une fois encore. Cet événement ne se déroulera qu'une seule fois si vous n'appuyez pas sur le bouton Bas au moment où vous entrez en collision avec la corde, ce sera toujours 0, donc cela ne sera jamais vérifié. Donc, si je clique sur, si je retourne à mon jeu ici, cliquez sur S pour descendre. Cela ne va pas vraiment marcher. Nous avons donc besoin de quelque chose pour vérifier continuellement ici chaque fois que je suis debout sur la boîte de collision ici pour vérifier continuellement si cela est égal à 0 ou non. Et encore une fois, nous utilisons des minuteries pour cela, nous avons déjà utilisé la minuterie ici. Donc, en vérifiant en continu, vous pouvez toujours utiliser des minuteries, très bons outils à retenir. Alors écoutons, déconnectons ça et améliorons ce code. Permettez-moi donc de faire une minuterie, réglage, une minuterie par événements. Relions-le ici. Maintenant, nous pouvons faire un événement à deux reprises à partir d'ici et le faire glisser et dire des entrées de lime. En fait, créons des événements personnalisés. C'est ce que je voulais dire. Et appelez ça des entrées grimpées. Donc cette entrée client, il va vérifier, est-ce égal à 0 ou non ? Et si ce n'est pas le cas, allez-y et montez. Je vais organiser ça un peu plus comme ça. Et pour celui-là, pour le minuteur, je vais le faire en boucle. Et pour le temps qu'il va faire une boucle, je vais juste écrire 0,1, ce qui signifie que toute la boucle est exécutée tous les 0,12, ce qui signifie qu'elle est exécutée dix fois par seconde. Chaque fois que je suis client, je ne veux plus vraiment vérifier cela. Je vais donc promouvoir cela à une variable. Et appelons ça vérifier les entrées chaulées. Et je vais prendre ça et dire Lear et minuteur invalidé par poignée. Donc, chaque fois que nous avons vérifié ici, nous vérifions les commentaires. Donc, chaque fois que nous voyons que le joueur appuie de haut en bas sur cette corde, qui signifie que nous allons grimper. Et à ce moment-là, nous ne voulons plus vraiment vérifier. Parce que tout cela a pour but de vérifier si le joueur appuie de haut en bas sur cette boîte de collision. Nous pouvons donc simplement arrêter cette fois. Et rappelez-vous, si vous n'arrêtez pas la minuterie, je vais vous montrer. Donc, si vous imprimez simplement Hello tout le temps et que vous pouvez aimer le débogage avec le halo est si utile. Donc, en cliquant sur S vers le bas pour descendre, vous pouvez voir qu'il imprime Hello tout le temps. Bien sûr, c'est le top lorsque vous n'appuyez plus sur S parce que vous ne descendez pas vraiment. Mais si j'appuie, il imprime tout le temps, je ne veux pas vraiment l'imprimer tout le temps chaque fois que je grimpe car cela n'est utile que pour vérifier si nous sommes déjà, si vous voulez vraiment grimper à la corde. . Donc, si nous sommes déjà grimpés, nous ne voulons pas vraiment vérifier cela. Et c'est là que nous disons minuteur clair et invalidé Par poignée. Parce que maintenant, nous pouvons dire que lorsque c'est vrai, nous allons le régler pour monter et aller de l'avant et retirer cette minuterie. Donc, si je clique sur Play now et que je ici et que je clique sur S, maintenez-le enfoncé. Et bien sûr, nous devons imprimer quelque chose, donc je vais mettre quelque chose nous puissions réellement voir ce qui se passe. Je vais cliquer sur Play, cliquer sur S pour descendre. Et même si je le maintiens en ce moment, il n'a dit bonjour qu'une seule fois. C'est ainsi que vous créez quelque chose d' optimisé et de Blueprints, oubliez pas d'arrêter la minuterie chaque fois que vous n'en avez plus besoin. Sinon va courir éternellement et vous n'avez pas vraiment envie de le faire. Donc pour le minuteur ici aussi, juste pour s'assurer qu'il s'arrête, copions ce code. Laissez-moi aller ici. Donc si on peut grimper est défini sur false. Donc, chaque fois que vous finissez à se chevaucher avec la boîte de collision, nous le sommes. Donc, si vous grimpez déjà et que vous quittez la corde, n' oublions pas encore une fois d'arrêter cette minuterie. Donc, il suffit de s'assurer que le minuteur ne fonctionne plus. C'était donc tout pour cette vidéo ici. Nous avons donc beaucoup de choses à faire. Nous avons configuré la minuterie pour vérifier continuellement si le joueur se déplace ou non. L'ensemble du processus consiste donc à l'expliquer très rapidement avant de terminer cette vidéo, juste au cas où vous auriez besoin d'une explication complète. Ce que nous faisons ici au départ, c'est le joueur va sauter ici sur la corde. Le joueur va toucher cette boîte de collision. Et ce que le joueur touche cette boîte de collision, cet événement va jouer. L'événement se déroulera sur le serveur et il va vérifier si l'acteur a le joueur technique juste pour s' assurer que le joueur touche réellement la corde et non quelqu'un d'autre. Et c'est, si c'est vrai, nous allons appeler l'événement can climb, qui est à l'intérieur du joueur, acteur joueur ici. Nous allons définir peut grimper booléen pour être vrai. Nous voulons donc grimper, et quelle est la chose que nous allons grimper ? Cette chose que nous allons grimper elle-même, est tout ce que vous avez placé ici. Donc, dans ce cas, nous avons placé leur corde, qui est un enfant de montée, base d'escalade. Ainsi, en écrivant soi-même, il sait automatiquement aller ici à la corde. Et c'est l'acteur que nous sommes en train d'escalader. Donc ça va aller pour pouvoir grimper. Nous commençons donc ici. Les informations ici, le booléen, vous le définissez comme vrai, donc ça va être vrai ici. Les informations vont continuer ici sur le serveur, envoyant ces variables et en les vendant pour les répliquer. Parce que nous sommes intéressés à fournir ces informations aux clients parce que nous sommes sur le serveur en ce moment, le client n'a aucune idée de la valeur de cette valeur si vous ne les répliquez pas aux clients. Maintenant, s'ils peuvent grimper, c'est vrai. Nous allons vérifier si le joueur appuie réellement sur le bouton bas pour grimper sur la corde. Si le joueur appuie sur le bouton Bas, nous allons définir, cela devient vrai. Lorsque nous le faisons, il va définir son client passant par le serveur, passant par le serveur ici, puis définir cette variable sur true. Maintenant, nous avons codé cela, mais nous allons le faire dans la prochaine leçon. Nous avons donc configuré ceci pour envelopper notification, ce qui, encore une fois, rappelez-vous qu'une notification rouge crée une fonction de rampe. Ici, nous allons coder beaucoup de choses comme changer votre flip book pour refuser d'être flip book. Ainsi, le joueur peut voir visuellement que vous grimpez. Et si je retourne ici, donc s'ils peuvent grimper, c'est faux. Si vous l'êtes déjà, si vous avez déjà dit que c'est vrai, c'est vrai. Nous allons le définir sur faux parce que vous ne pouvez plus grimper. Et nous allons quand même arrêter la minuterie. S'ils le peuvent, l'escalade sera fausse et vous ne le trouverez pas. 59. Mettre à jour le mode mouvement des joueurs: Bonjour et bienvenue. Il y a donc un petit insecte juste avant que nous commencions, vous pouvez voir si je me déplace ici sur le côté, tout d'un coup mon sprite disparaît et si je reviens, il apparaît. C'est un bug très, très bizarre que nous avons en ce moment. Allons le réparer, avant de passer à la correction de ce bug bizarre, j'ai découvert que si vous allez sur j'ai découvert que si vous allez les plans et que vous allez à la base d' escalade, d'escalade ici, faisons face à tout le serrage. vous pouvez cliquer sur le composant de rendu. Et si vous passez au rendu ici, vous pouvez cliquer sur Avancé. Et si je minimise cela, vous pouvez aussi voir disparaître à chaque fois. Laissez-moi cliquer sur G pour supprimer tout cela. Vous pouvez voir qu'il apparaît quand je suis ici, il disparaît quand je suis ici. J'ai découvert ici dans le rendu sous les composants de rendu que vous pouvez accéder à la priorité recherchée par translucidité, et en écrire une, Compiler et enregistrer. Et vous pouvez voir qu' il apparaît pour que ce bogue n' apparaisse plus. Très bien, la chose que nous voulons faire maintenant , c'est de mettre à jour le mouvement des joueurs. Donc, en ce moment, nous avons la bonne chose, nous faisons la bonne chose. Mais pour l'instant, nous ne pouvons pas vraiment vivre ici. Et c'est parce que nous le voulons, nous devrions changer le mode de mouvement de nos joueurs. Revenons donc à la base de joueurs. Et à l'intérieur d'ici, commençons à coder la chose à l'intérieur de notre fonction IsClient en cours de décapsulation. Alors, en entrant ici, faisons d'abord glisser la variable et écrivons une branche. Que devrait-il se passer lorsque vous grimpez ? Le joueur frappe donc la corde et appuie sur le bouton W pour se déplacer vers le haut. Que devrait-il se passer ? La première chose que nous voulons faire est prendre le composant de mouvement de personnage , puis de faire glisser le curseur d'ici et de dire « Définir les mouvements ». Celui-là. Et puis c'est que nous allons régler ça pour voler parce que lorsque vous grimpez, vous volez réellement. Par défaut, en ce moment, nous nous promenons, et c'est la marche. Chaque fois que nous sautons. Rappelez-vous ici dans le saut, si je retourne au graphique des événements, chaque fois que nous avons sauté, donc si je peux trouver le code est quelque part ici. Donc, pour le code de saut ici, vous pouvez voir plus tôt si vous vous en souvenez, nous avons fait de cela une fonction pure où nous avons vérifié si le mouvement de personnage tombant n'était pas vrai. La chute, c'est chaque fois que nous sautons ici et que le mode de mouvement, si je reviens à la fonction de déballage, la chute se fait chaque fois que vous sautez, la marche est en ce moment lorsque nous nous promenons. Cependant, lorsque nous voulons grimper, nous devons le faire voler. Nous sommes donc en train de voler. Et juste avant que j'oublie, laissez-moi aller aux mouvements des personnages et descendre ici pour voler ici. Permettez-moi de régler la vitesse de vol à 1 cinquième. Je l'ai testé dans Maple Story, alors j'ai joué à Maple Story aujourd'hui pour le découvrir. Et c'est environ 115 vitesses. Vous devez le tester en jeu pour voir que vous pouvez simplement laisser ça être 600 et que vous pouvez réellement tester et voir à quelle vitesse c'est. Mais je vais le changer à 150 en ce moment. Et briser l'accélération si vous ne mettez pas ça. Donc, si vous cliquez sur W et que vous lâchez prise, vous allez toujours voler vers le haut. Je ne veux pas ça. Je veux que Wonder Player qui libère le bouton W ne monte plus. Je veux que le joueur s'arrête complètement et ne glisse pas encore vers le haut. Je vais mettre ça à quelque chose de haut, comme 10 000. Donc, certains sont juste un nombre aléatoire, Compiler et Enregistrer. Et quand le joueur ne grimpe pas, alors quand le joueur a lâché la corde, je vais copier, coller ça et le mettre en chute parce que je marche vraiment, parce que je veux que le joueur tombe de la corde. Donc, quelque chose comme ça. Et si, encore une fois, si vous voulez que cela soit meilleur, vous devriez probablement déplacer cette plateforme et enchérir à la hausse. Donc, en fait, cela ne frappe pas le sol. Revenons donc à la base de joueurs ici. Donc, lorsque le joueur n' est pas en train de grimper, nous allons le faire tomber. Maintenant, fixons notre flip book. Prenons notre sprite ici. Disons de mettre un flip book. Et connectons-nous d'abord ici à l'escalade. Donc, lorsque nous grimpons, nous voulons que le client soit animé et laissez-moi copier ça. Et quand nous tombons, nous voulons avoir notre animation de saut. Donc l'animation de saut que nous avons en ce moment, mais en déclin, nous ne le faisons pas, donc nous devons préparer cela. Donc, pour la chute, vous avez cette animation de saut. Je me souviens que nous avons deux personnages et que nous voulons rendre cela aussi dynamique que possible. Reprenons donc notre structure. On va le casser. Et ici, nous pouvons maintenant prendre notre animation de saut. Prendre cette animation de saut et la connecter ici, en cachant toutes les autres épingles comme celle-ci. Il a donc l'air beaucoup plus propre. Nous avons maintenant cela prêt, mais en ce qui concerne le vol, nous n'avons pas vraiment d'animation de montée en ce moment. Ici, dans le matériel de cours dans les personnages de Tsarina. Vous pouvez voir que j'ai préparé la montée pour vous ainsi qu'à Luke. Allez-y et réduisons cela ici. Passons au bleu, en fait ici dans les personnages des actifs ou Serena d'abord et les textures. Et laissez-moi importer la montée et faire la même chose pour la boucle for. Alors, allez à la texture de Luke. Ici. Nous avons Luke et la montée, si important, mais tous les deux font un clic droit sur ce 1 abord et appliquent du papier aux paramètres. Faites de même pour Serena. Cliquez avec le bouton droit, appliquez du papier aux paramètres et cliquez ici avec le bouton droit de la souris. Et nous allons extraire les sprites. La grille est de un quatre-vingt, une quatre-vingt clique sur des extraits. Et donc celui-ci, vous devez les renommer en S lime 01. Celui-ci est en fait 0202. Et celui-là, où est l'autre ici ? 01. Et faites la même chose pour Luke. Cliquez donc avec le bouton droit, Extraire les sprites, grille, un quatre-vingt, un quatre-vingt. Celui-ci est comme 01 et l'autre est le climat 0 to. Maintenant, vous pouvez les sélectionner en cliquant avec le bouton droit de la souris pour créer un flip book appelé FB grimped. Faites-le glisser vers le dossier de Luke. Et réglons les images par seconde à quatre. Mettons-le à quatre comme ça et faisons la même chose pour Serena ici pour le client, clic droit, faites un flip book appelé climb. Placez-le à l'extérieur de ce dossier. Ici, nous allons changer les images par seconde à quatre. Maintenant, sauvegardons tout et nous devons nous rappeler de l' ajouter à notre structure ici dans la base de joueurs. Nous ne l'avons donc pas encore fait. Passons donc à la structure et aux Blueprints, structurons les informations du lecteur et ajoutons-en une nouvelle, une nouvelle variable appelée animation choline. Maintenant, si vous voulez ajouter, nous allons le rendre plus dynamique. Vous n'avez donc pas forcément de corde. Vous pouvez également avoir une lettre qui aura une autre animation. Nous pouvons donc soit appeler cela l' émission climatique , soit pour être meilleur, ou vous pouvez l'appeler une animation de corde. Et plus tard, si vous le souhaitez, vous pouvez ajouter une animation d'échelle. Et c'est une autre animation. Donc, animation robot, appelons-le papier flip book ou la variable est un flip book papier, comme ici. Et laissez-nous économiser, laissez-moi monter ça, alors faites-le glisser au-dessus des effets sonores. Oui, je voulais vraiment que les effets sonores soient ici en bas. Donc Robin émission, économisez. Par ici. Nous allons tout sauvegarder, compiler et enregistrer. Et vous pouvez voir apparaître l'animation de corde. Laissez-moi cliquer à nouveau dessus, cliquez sur Masquer les épingles non connectées. Donc, ici, ce que nous voulons faire , c'est copier cette structure. Et vous pouvez, comme, vous pouvez voir chaque fois que vous masquez épingles non connectées et qu'elles se cachent simplement comme ça, vous pouvez maintenant les voir plus. Vous pouvez cliquer dessus et cliquer sur cette catégorie par défaut et sélectionner celle-ci est la volante, donc c'est une escalade, cette animation de corde et vous pouvez la voir apparaître et vous pouvez la connecter ici. N'oubliez pas que vous devez connecter l'animation de corde car nous n'avons pas encore spécifié de quoi il s'agit. Vous devez donc aller voir Serena et Luke. Alors, Blueprints Player. Commençons par regarder ici. N'oubliez pas que dans la classe T false, vous devez définir l'animation de corde. Donc, si vous montez pour Luke, allons à Serena. Pour Serena, ça va ressembler à ça. Donc, l'animation de corde. Et puis trouvons le corbillard. Celui-ci a grimpé. Bon, maintenant, ils devraient travailler. Revenons maintenant à notre base de joueurs. Ce que nous faisons maintenant, c'est que nous l'envoyons en mode vol. Nous devrions donc pouvoir monter et descendre ici dans le graphique, je descends. Nous devrions donc pouvoir monter et descendre parce que nous sommes maintenant en mode vol et nous pouvons grimper. Et laissez-moi revenir ici, puis nous mettons le flip book. Essayons donc d' y jouer et de voir s'il me manque quelque chose. C'est toujours bon de le tester. Donc, nous allons tout sauver. Allons jouer. Maintenant, si je vais ici, je clique sur le bas. Vous pouvez voir que je déménage vraiment. Mais le problème, c'est que cette tuile de collision arrête mon personnage. Permettez-moi de l' essayer par le bas ici. Tombez. Et si je vais à la corde ici, vous pouvez voir que je vais monter et descendre l'échelle. Le problème, c' est que le titre nous empêche de monter. Et c'est quelque chose que nous voulons régler ce problème dans le prochain. Mais je crois encore une fois dans la prochaine, nous supprimons ces collisions afin de pouvoir avancer vers le haut. Nous avons également un petit insecte où nous pouvons marcher sur les côtés même si nous marchons ici. Allons de l'avant et résolvons ça. Laissez-moi cliquer sur Escape et laissez-moi ouvrir la base de joueurs. Et ici, permettez-moi d'aller au graphique des événements. Laissez-moi tout fermer. Je pense que j'ai beaucoup d' ouverture, beaucoup de choses ouvertes. Maintenant, dans le graphique des événements, je vais cliquer avec le bouton droit de la souris et dire fermer les onglets à droite. Je n'ai donc que cela ouvert pour le moment. Par conséquent, ici, dans les mouvements à droite et à gauche, nous ne voulons pas vraiment bouger à droite et gauche chaque fois que vous grimpez. Nous pouvons donc ajouter un booléen pour cela. Donc, si je le fais glisser ici et que nous pouvons utiliser celui qui grimpe et vous pouvez écrire un booléen. Donc, si vous ne grimpez pas , vous pourrez vous déplacer à droite et à gauche. Mais deuxièmement, si vous grimpez sur une corde, nous ne voulons pas vraiment bouger à droite et à gauche. Donc, quelque chose de simple comme celui-ci peut corriger un bogue comme celui-ci. Donc, en utilisant simplement un booléen, vous pouvez parfois empêcher un certain code. Souvenez-vous donc toujours que les booléens sont très, très utiles ici. Et vous pouvez voir que je ne peux pas me déplacer vers la droite et la gauche. Et aussi notre animation, l' animation d' escalade fonctionne parfaitement. Maintenant, je ne peux pas, je ne peux pas m' éloigner de ma corde parce que je crois que ma boîte de collision est très longue en ce moment. Laissez-moi retourner à la corde. Parce que nous étions en train de tester ici, d' aller à la corde ici. Et permettez-moi de réduire ça à 65 ans, quelque chose comme ça. En cliquant sur Play maintenant, vous pouvez, bien, laissez-moi mettre mon joueur commence ici. Nous n'avons pas vraiment besoin de tomber tout le temps. Ici. Je peux grimper, je peux descendre et laisser ma corde ici. Une fois encore. Vous pouvez placer cette plate-forme plus haut si vous le souhaitez, ou simplement rendre la boîte de collision un peu plus petite que vous n' ayez pas nécessairement à aller jusqu'ici. Donc quelque chose comme 60 ans et je peux le faire monter, quelque chose comme ça. Cliquez donc à nouveau sur Lecture. Et nous pouvons sauter et nous quitterons la corde chaque fois que nous sommes quelque part ici. Très cool. Nous pouvons maintenant monter et descendre. Et vous pouvez également voir que nous glissons un peu lorsque je me déplace sur le côté. Parfois, je m' éloigne de la corde, quelque chose comme ça. Maintenant, je suis en train de monter et de descendre la route, mais nous allons également ajuster l' emplacement du client plus tard. Ne vous inquiétez pas, mais pour l'instant, vous pouvez voir que nous pouvons sauter pendant que nous sommes ici sur la corde. Donc, résolvons ça aussi. Revenons donc à la base des joueurs et pour le saut. Retrouvons donc la logique de saut. Si vous ne tombez pas et que vous n'êtes pas aligné, nous ne voulons pas vraiment sauter lorsque vous grimpez. Prenons donc ça. Et ici, on peut dire fin ici et booléen. Et vous ne grimpez pas. Tellement dingue, booléen. Encore une fois, si vous ne tombez pas et que vous ne grimpez pas, nous ne voulons pas vraiment sauter lorsque vous grimpez. Laissez-moi avancer et laissez-moi cliquer dessus et cliquez sur Masquer l' épingle non connectée. Il remonte donc et connecte celui-ci à la place. Donc, si nous tombons, nous ne voulons pas sauter. Si nous sommes de la choline, nous ne voulons pas non plus sauter. Nous devons donc vérifier ces deux-là pour nous assurer que nous ne pouvons sauter que sur votre nullcline étant ou tombant. Permettez-moi de le rapprocher et nous pourrons le tester à nouveau, Compiler et économiser. On peut jouer, aller sur la route. Et si je clique sur l'espace, je peux ajouter saut ici. Ok, donc maintenant c' est corrigé et passons à la leçon suivante où nous effectuons une énumération des objets grimpants. Donc, au lieu de faire la corde, vous seul pouvez ajouter des lettres et des animations pour eux aussi. 60. Énumération des types d'objets d'escalade: Ok, donc, jusqu'ici, dans la rampe, il y a une fonction d'escalade. Jusqu'à présent, nous avons ajouté que nous devrions passer à l'animation de la robe chaque fois que vous grimpez. Mais que se passe-t-il si vous avez aussi une échelle ? Et si vous avez autre chose et que vous avez besoin d'une nouvelle animation, vous avez besoin d'une animation d' escalade. Vous avez peut-être deux animations dans votre jeu. Nous voulons maintenant faire une énumération pour résoudre ce problème. Et j'aime rendre mon jeu dynamique. Donc, à l'avenir, lorsque je veux ajouter quelque chose, je peux le faire en deux minutes, pas en 30 minutes. Faisons donc en sorte que tout soit dynamique en ce moment. Cela prend un peu plus de temps, mais cela vous fera gagner beaucoup de temps lorsque vous aurez créé votre jeu. Essayez toujours de faire ces belles choses pour votre jeu. Essayez de faire de bonnes pratiques de codage. Et vous pouvez gagner beaucoup de temps à chaque fois que vous créez un DLC ou quoi que ce soit que vous tentez créer des mises à jour ultérieurement. Vous pouvez le faire en deux secondes. Essayons donc d'abord de faire une énumération. Encore une fois, les énumérations sont très, très puissantes. Jusqu'à présent, nous avons créé ces états en mouvement. Cliquez ici avec le bouton droit de la souris, accédez aux Blueprints et créons une nouvelle énumération. Appelons ce type d'objet d'escalade E. Si je pouvais épeler ici, tapez et cliquez dessus ici. Permettez-moi d'ajouter deux types pour l'instant. Je n'ai pas vraiment plus que ça. J'ai donc une corde et j'ai une échelle comme celle-ci, alors sauvez tout. Et revenons à la ligne d'attente ici et à la base d'escalade. Et permettez-moi d'ajouter cette variable à mes variables. Donc, appeler cette ligne étant un type d'objet. Ajoutons maintenant ce type à notre énumération que nous avons faite appelée type d'objet grimpant. Il s'agit de l'énumération. Donc, ce que nous pouvons faire maintenant, n'oubliez pas que lorsque nous ajoutons des variables au parent, classe Blueprint sera ajoutée à tous les enfants. Donc, en cliquant sur la corde ici, vous pouvez voir dans les valeurs par défaut de la classe, je peux maintenant voir cette énumération. Et vous pouvez modifier le type de chaque élément que vous ajoutez ici. Donc, cette corde est évidemment une corde. Mais si vous avez ajouté une échelle par la suite , vous pouvez changer cela par un briquet et il saura qu'il s'agit d'une échelle. Et quand il sait qu'il s'agit d'un côté, il sait qu'il doit jouer l'animation la plus légère. Nous allons donc coder cette information dans. Donc, celle-ci n'est qu'une corde. Je viens donc de régler ma nouvelle énumération sur corde. Et revenons à la base du client et nous pouvons l'ajouter ici, en fait, pas la base d'escalade. Revenons à la base de joueurs. C'est ce que je voulais dire. Je vais dans une base de joueurs. Et dans les oreilles, la pince grimpe. Fonction de déballage. C'est ici que nous voulons l'ajouter. Allons donc un peu plus loin. Nous nous demandons ici de faire référence à la base de nos clients car nous voulons utiliser cette variable. Et rappelez-vous que nous avons déjà fait une variable pour cela. Si vous descendez ici, quand nous avons dit qu'on peut grimper, nous avons ajouté, rappelez-vous cette auto-référence. Nous sommes donc déjà en train de définir cette base d'escalade, que nous devons appeler cette fonction ou cette variable. Maintenant, nous pouvons créer une interface Blueprint et dire que le client est basé. Vous pouvez le faire si vous le souhaitez. Mais pour ce jeu, c'est très minime. Non, je ne veux pas m' embêter parce que nous n'allons pas vraiment l'utiliser autant que la base de joueurs et ce pour quoi nous l'utilisons. Donc je vais juste coûter cher, j'ai déjà dit qu'il est normal de coûter cher tant que vous ne le faites pas tout le temps. Revenons donc ici et nous pouvons simplement prendre cette référence ici, laissez-moi trouver que l'objet de serrage, laissez-moi maintenant le faire glisser et dire le coût aussi. Quel est donc l'objet grimpant ? L'objet de serrage est lorsque nous coûtons cher quelque chose que nous pouvons dire qu'il parle spécifiquement de cette base d'escalade BP. L'objet grimpant est donc spécifiquement ce plan car rappelez-vous cette référence, si vous tenez la souris au-dessus, c' est juste un acteur de sprite en papier. Et nous sommes en train de définir que cet acteur de sprite en papier est spécifiquement cette base de serrage et le déclin S étant la base. Je peux maintenant accéder à toutes les informations dont j'ai besoin à l'intérieur d'ici. dont nous avons besoin, c'est cette variable appelée type d'objet grimpant. Allons donc à la base des joueurs et faites-le glisser à partir de cela et disons que la choline obtient des types d'objets grimpants. Nous pouvons donc maintenant utiliser cette variable. Comme avant. Rappelez-vous ce que nous avons fait. Donc, si vous vous souvenez d'ici, en fait, c'est ici sur le côté. Sur le mouvement sur la rampe States. Nous avons créé ces états de mouvements il y a longtemps. Et vous pouvez le faire, activer l' énumération pour sélectionner l'animation que vous voulez trouver. Nous allons donc refaire cela, allant à la base des joueurs, l'IsClient étant déballé. Et à l'intérieur d'ici, nous pouvons faire glisser à partir de cela et dire changer, activer cette énumération. Que devrait-il se passer quand il s'agit d'une corde ? Que devrait-il se passer si nous avons cette corde ? Nous voulons jouer cette animation. C'est donc l'animation de corde. OK ? Et qu'est-ce que c'est une échelle, si c'est une lettre, nous voulons jouer une autre animation. Alors, laissez-moi copier ça ici. Et maintenant, nous n'avons pas vraiment d'animation pour cela. Nous pouvons donc accéder à la structure ici et vous pouvez ajouter une nouvelle animation appelée animation d'échelle. Nous n'en avons pas vraiment pour le jeu. Je vous montre simplement comment vous pouvez le faire au cas où vous voulez apprendre à le rendre dynamique. Donc, en créant un flip book ici, animation de lettres, je peux simplement le déplacer ici. Maintenant, ce que vous pouvez faire, je vais juste mettre une animation aléatoire juste pour voir si elle fonctionne. Je vais donc voir le joueur à Tsarina. Si je sauvegarde tout ce que j'ai besoin de compiler pour paraître alors sauver ici et aller à Serena. Et pour une raison quelconque, il n'apparaît pas vraiment. Je pense que je dois compiler dans ma base de joueurs. Alors ici, cliquez et compilez. N'oubliez pas qu' il est très important de compiler. Maintenant, en revenant à Serena dans les valeurs par défaut de la classe, vous pouvez le voir apparaître. Donc, pour l'animation de lettrage, je vais juste mettre ce cochon ici. Le cochon est au ralenti. Quelque chose de très aléatoire juste pour voir si ça marche. Vous pouvez également le faire sur Luke, en allant à Luke et en mettant simplement une animation aléatoire de cochon inactif juste pour voir si cela fonctionne. Maintenant, c'est sur lettre et nous pouvons essayer cliquer sur Place si je retourne à la lecture, veillant à ce que tout soit correct. Alors, allons frapper ceci ou connectons ça ici. Pour cette dernière animation, je vais la relier ici. Maintenant, nous avons les deux. Et si nous ne faisons que téléphoner, alors supprimez le client, si c'est faux, nous allons simplement sauter. Et laissez-moi cliquer à nouveau sur Masquer les épingles, comme ça. Bon, maintenant, ça devrait marcher. Donc, si je clique sur Play, maintenant, je grimpe. Vous pouvez voir que cela fonctionne. Et si je change ça par une autre corde ? Mais si c'était une échelle ? J'ai donc changé ce type d'escalade. C'est en fait une échelle maintenant. Et si je grimpe maintenant, vous pouvez voir que l'animation est en train de changer. Donc, selon que vous possédez une corde ou non, cela modifiera l'animation l'animation que vous avez ajoutée ici, selon qu'il s'agit d'une corde ou d'une échelle. 61. Canal de collision personnalisé: Le problème auquel nous sommes confrontés en ce moment est une ferme qui serre ici sur ma corde. Permettez-moi de changer cette animation. Ça a l'air tellement bizarre. Je dois encore changer ça en corde. Donc, si je vais aux plans, vais à l'escalade la corde et je le remplace en corde ici. OK ? Le problème auquel nous sommes confrontés en ce moment est que si je monte ici et si je monte au sommet, je ne peux pas vraiment monter en haut ici. Et la raison en est cette tuile de collision ici. N'oubliez pas que nous avons eu des collisions. Ces tuiles de collisions empêchent mon personnage de monter ici. Nous devons donc dire que ces collisions s' éteignent chaque fois que nous grimpons. Mais nous ne voulons pas vraiment le désactiver pour chacun d'eux. Si nous le voulons, si nous l'éteignons pour tout le monde, tous ces ennemis tomberont du sol. Il en va de même pour tous les joueurs qui sont connectés avec vous, ils tomberont du sol s'il n'y a pas de collision. Nous voulons donc le supprimer spécifiquement pour ce client en tant que joueur. Et la façon la plus intelligente de le faire est créer notre propre canal de collision personnalisé, ce qui est très, très facile. Je vais donc vous enseigner ça maintenant. Nous pouvons le faire en allant Modifier et en accédant aux paramètres du projet. Et à l'intérieur d'ici, nous pouvons aller à la collision, qui est ici sous le moteur. Et puis ici, dans les canaux d'objet , il s'agit de collisions, suffit donc de cliquer sur un nouveau canal d'objet, en cliquant dessus ici. Et ensuite, nous devons lui donner quelque chose ici. Alors appelons simplement que la ligne soit une couche. Et la réponse par défaut, suffit de la définir pour qu'elle se chevauche. Cliquez sur Accepter. Nous avons donc maintenant une chaîne. Qu'est-ce que cela signifie ? Qu'est-ce que cela apparaît ? Et cela apparaît réellement. Revenons à la carte de tuiles que nous avons créée dans le dossier des cartes de tuiles. C'est ici que nous avons ces collisions. Donc, à l'intérieur d'ici, rappelez-vous dans le composant de rendu de cette carte de tuiles ici que si vous descendez à la collision, vous pouvez voir Alice trouver une collision ici, Préréglages de collision. Cliquons sur cette flèche pour la voir. Vous pouvez voir qu'il nous bloque tous ici. Et nous venons de créer ce joueur d'escalade. Voyez à quel point c'est facile. Il apparaît juste ici. Ainsi, chaque fois que vous créez une chaîne personnalisée, elle apparaîtra ici. Et vous pouvez en fait définir un paramètre en fonction de ce que vous essayez de faire. Donc, jusqu'à présent, tout notre joueur est un pion. Et lorsque le joueur est sur, nous sommes bloqués de toute la collision qui se trouve sous les tuiles. Et pour le lecteur de serrage maintenant, nous le configurons pour qu'il se chevauche par défaut. N'oubliez pas que vous pouvez toujours changer cela en cliquant ici et en disant costume. Et vous pouvez toujours le changer par autre chose. Tout simplement parce que vous l'avez dit ici dans les paramètres du projet, dans la collision, juste parce que vous définissez la valeur par défaut sur chevauchement, vous pouvez bien sûr cliquer sur Personnalisé et le modifier par autre chose, mais il sera simplement superposé par défaut. Je vais donc revenir à nouveau bloquer. Par défaut, le joueur d'escalade est maintenant configuré pour se chevaucher, ce qui signifie que je peux maintenant me laisser supprimer toutes ces lignes ici. Par défaut, je peux maintenant, si je suis le client en tant que joueur, je peux maintenant traverser toutes ces collisions car elles ne me bloqueront plus. Ils vont se chevaucher avec moi. Nous devons donc lui dire le moteur maintenant que chaque fois que je monte, je veux que le joueur soit ce joueur de choline. Je ne veux pas que mon joueur soit toujours un étang parce que même si j'ai créé ce canal en ce moment quand j'escalade mon personnage et qu'il est bloqué par ces collisions. Nous devons donc dire que nous voulons changer de chaîne. Et si je vais à une base de joueurs maintenant, vous pouvez le voir ici sur le sprite ou sur la capsule. Ici, sur cette brillante, vous pouvez voir que je suis sur, donc le canal d'objet est un pion. Et rappelez-vous ici que les bassins d'objets de rendu sont bloqués du canal de collision. Nous devons donc modifier ces paramètres. Et faisons cela dans la base de joueurs où nous avons le client, nous ne sommes intéressés à le faire que lorsque le joueur grimpe. Nous allons le faire avant de modifier l'animation. Permettez-moi donc de déplacer toutes ces animations sur le côté, plus loin ici. Donc, chaque fois que je suis en ligne, je veux prendre le joueur. Ainsi, en prenant ce composant Capsule, vous pouvez voir que le composant capsule ici est réglé sur costume, mais ici, dans le canal objet, il est réglé sur un étang et nous ne voulons pas que la capsule se chevauche. Revenons donc ici à la capsule, moins de traîner ça ici dans le monde. Et nous pouvons modifier ce type de collision. Donc, si vous descendez, vous pouvez voir que c'est le type d'objet. Et c'est toujours bon de regarder les noms , car alors on peut vraiment savoir comment ça s'appelle. Donc, si vous faites glisser d' ici et que vous dites collision, car c'est ce qui nous intéresse de changer. Je me souviens que ça s'appelait le type d'objet. Essayons de voir si nous avons une fonction appelée set object type. Et ici, définissez ou est-ce ici Définir le type d'objet de collision. Donc, cliquez ici. Et si, pour une raison quelconque, j'en ai fait un pour moi, permettez-moi de supprimer mon ancien et de me connecter ici. Donc, chaque fois que nous sommes en train d'escalader, je souhaite changer ma capsule qui entre en collision. Je veux changer la ligne en jouant. C'est celui que nous avons fait sur mesure. Et chaque fois que je ne suis plus en train d' escalader, je veux le refaire. Vous pouvez donc copier, coller ceci ici, relié comme ceci. Et nous allons l'éloigner. Ici. Vous pouvez le changer en poème. Par conséquent, nous ne faisons que le remplacer par un joueur de serrage chaque fois que nous grimpons, mais nous le repassons à **** lorsque nous ne grimpons plus. Maintenant, compilons et économisons, et c'est aussi simple que cela. Essayons donc de voir si nous avons des bugs. Maintenant, vous pouvez le voir, maintenant je peux traverser parce que je suis un joueur d'escalade. canal objet et mes collisions. Et je peux monter ici, et maintenant je peux me promener parce que maintenant je suis dans mon canal d'objets de pion. 62. Ajuster le lieu de l'escalade: Bon, donc le petit problème que nous avons en ce moment, chaque fois que nous marchons et sautons, il tombe parfois sur la corde. Parfois, on peut le voir atterrir sur le côté de la corde. Pas vraiment sur le peignoir ici. Nous devons donc ajuster l'emplacement du saut chaque fois que vous sautez sur cette corde ici. Laissez-moi revenir ici et retourner à la base de joueurs. Et la meilleure façon de le faire est continuellement mise à jour quelque part. Et la chose à laquelle je pense lorsque je fais cela, c'est quels événements puis-je utiliser continuellement mis à jour  ? Je ne veux pas vraiment faire cocher un événement. Je ne veux pas vraiment faire ça. Nous avons donc quelques minuteries, mais celles-ci s'arrêtent chaque fois que je mets mon client en train devenir ce qui se met à jour continuellement, cela s'arrête lorsque je grimpe. Le truc est donc là lorsque nous montons et descendons, cela est toujours en cours de mise à jour. Je suis donc toujours en train de monter et de descendre. Alors, faisons-le ici. Après avoir ajouté l'entrée de mouvement. Nous ne voulons ajuster l'emplacement que lorsque nous sommes choline. Laissez-moi donc parce qu'ici, si je ne fais pas cela, il ajustera l' emplacement chaque fois que je n'interagis que avec la corde et que je peux grimper. Faites-le glisser ici et créons une branche booléenne ou en fait une branche. Chaque fois que je grimpe, je veux ajuster l'emplacement de mon client. La chose que nous essayons de faire, c'est que nous voulons définir l'emplacement du joueur où que ce soit, cet acteur ici est cet acteur de corde. Donc, où que se trouve cet acteur et quand nous sautons dessus, je veux définir les joueurs x emplacement. N'oubliez pas que l'emplacement x est ce qui ne va pas en ce moment. Parce que le joueur est trop à gauche ou trop à droite de la corde. C'est donc l'emplacement x que nous devons ajuster ici. Je veux que mes joueurs x emplacement soient identiques à ceux de cet emplacement d' acteurs x. Donc, si je retourne à la base de joueurs, donc si je réclame ici, je veux modifier mon emplacement. Prenons cet objet ou cet objet de serrage. Laissez-moi cliquer avec le bouton droit de la souris et dire Convertir en obtenir un get validé. Parce que rappelez-vous que si vous ne vous chevauchez plus, si je reviens à ma logique que vous puissiez voir pourquoi je fais cela. Je retourne à la base d'escalade. N'oubliez pas que lorsque vous ne grimpez plus, vous définissez cette variable comme rien, qui signifie que vous n'avez rien à l'intérieur de cette variable. C'est pourquoi je suis en train de régler ça pour ne pas avoir de bugs. Je vois donc simplement si cette variable est valide, si elle contient quelque chose et si elle le fait, si elle le fait. Permettez-moi donc de prendre ici l'emplacement des acteurs, mais l'emplacement des acteurs. Et puis je vais aussi obtenir l'emplacement de l'acteur des joueurs. Alors, trouvez l'emplacement de l'acteur. Et celle-ci, la cible est elle-même. N'oubliez pas que nous sommes dans la base des joueurs, donc c'est l'emplacement du joueur. Il s'agit de l'emplacement de l'objet. Je vais casser les deux pour pouvoir utiliser les X, Y et Z parce que je ne suis intéressé que par le x ici. Je vais aussi casser le vecteur ici. Et je vais seulement exécuter ce code ici, ajustant la position du joueur lorsque Nous ne sommes pas sur la corde. Mais si nous nous sommes ajustés à la corde , je ne veux plus vraiment exécuter ce code. Donc, si le x de la corde n'est pas égal au x des joueurs, alors s'ils sont différents, c'est vrai. Je vais donc connecter ça comme valide ici. Si c'est vrai, je vais ajuster l'emplacement. Je vais donc faire un nouvel événement ici. N'oubliez pas que cela s'exécute sur le client et que lorsque nous ajustons un emplacement, s'agit d'une mise à jour visuelle. Et nous devons le faire par l'entremise d'un avis de représentant. Faisons donc un nouvel événement ici. Appelons ça un événement personnalisé. En fait, nous allons d'abord en faire une interface Blueprint. Permettez-moi donc d'aller à l'interface Blueprint des joueurs. Et créons une nouvelle fonction appelée Ajuster, ligne étant l'emplacement, Enregistrer composé. Je ne sais pas si nous avons besoin de commentaires pour le moment. Je ne peux pas y penser pour le moment. Faisons tout simplement et nous pouvons toujours ajouter des variables si nous le voulons. Alors, laissez-moi appeler ça en disant ajuster, monter l'emplacement. Et il s'agit d'une fonction Blueprint Interface. Mettons-le sur le serveur. Donc, serveur personnalisé et ajustez la ligne étant. Si je peux écrire un lieu d'escalade et le changer pour courir la réponse et la fiabilité. Et à partir de là, bien sûr, nous pouvons organiser cet événement serveur, juste en escalade des lieux. Maintenant, ce que nous voulons faire, c'est ici, si c'est vrai, si l' emplacement de la corde et l'emplacement x n'est pas le même que l'emplacement x du joueur. Nous voulons ajuster la position du joueur. Ajustez donc l'escalade. Nous voulons essentiellement organiser cet événement. Nous voulons donc ajuster la position du joueur. En fin de compte, ce que nous essayons de faire c'est que nous essayons de créer un vecteur. Créons-le donc. Maintenant. Nous essayons de créer un vecteur appelé lieu d'escalade. Et transformons cela en vecteur car c'est un emplacement. Et celui-ci, en fin de compte, nous voulons le définir à un représentant notifié. Et à l'intérieur de cet emplacement de serrage de déballage, la seule chose que nous devons faire est de définir l'emplacement de l'acteur. C'est ce que nous essayons de faire. La cible est elle-même, donc nous essayons de définir l'emplacement du joueur, ce nouvel emplacement, cet emplacement ajusté. Relions-le ici. C'est ce que nous voulons faire en fin de compte. Donc, définir l'emplacement du joueur sur cet emplacement ajusté, qui se trouve à cet emplacement des cordes, qui permet de définir l'emplacement x. Donc, si le x de la corde n'est pas le même, agit en tant que joueur, nous voulons ajuster l'emplacement. Alors, comment ajuster l'emplacement ? abord, je veux reprendre cet objet aggloméré, vous pouvez faire un get validé juste pour vous assurer qu'il est valide. Encore une fois, prenons, laissez-moi copier ça à nouveau. Nous allons en fait écrire la même chose. Nous obtenons donc l'emplacement des cordes et nous obtenons l'emplacement du joueur. La seule chose qui nous intéresse est de changer cet emplacement x parce que l'emplacement y de cette façon ne nous intéresse pas vraiment, nous sommes intéressés à l'ajuster. Nous ne sommes pas non plus intéressés à ajuster le z. Nous ne sommes intéressés qu'à ajuster le x ici. Si je reviens à mon plan directeur, la seule chose qui nous intéresse est d'ajuster cela. Alors permettez-moi de prendre mon vecteur de localisation d'escalade ici, connecté et faites-le glisser à partir de cela et dire faire du vecteur. Maintenant, ce que nous pouvons faire ici, c'est que nous voulons définir l'emplacement du joueur. N'oubliez pas qu'il s'agit, en fin de compte, de l' emplacement ou du réglage du joueur. Nous voulons donc définir l' emplacement du joueur sur les cordes x. Ensuite, y et z. Nous voulons simplement qu'ils restent les mêmes. Nous ne voulons pas avoir les Y et Z de la corde. Nous voulons juste les y et z et z du joueur, quel qu'il soit actuellement. Nous ne sommes donc intéressés qu' à ajuster le x. Toutes ces informations vont entrer dans ce vecteur dès maintenant. Et chaque fois qu'il va définir la notification de votre représentant, il exécutera cette fonction ici. Maintenant, nous allons définir le lieu de l'actrice. Ok, alors cliquons sur Jouer maintenant, quand on saute sur la corde, accord, maintenant c'est parfait. Revenons sauter ici. Parfait aussi. Ok, alors quand nous jouerons au jeu maintenant, je vais jouer Luke sur le serveur et Serena sur la ligne. Donc, il suffit de les rendre un peu plus grands comme ça. Donc sur le serveur et maintenant je peux sauter sur la corde. J'ajuste bien mon emplacement. Z cependant, j'ai sauté, ça ajuste mon emplacement. identifiant d'Alice sur le client pour s'assurer que tout fonctionne, donc je saute, ça ajuste correctement mon emplacement. Vous pouvez voir sur le serveur qu'il y a un bug ici. Je suis client, mais mon animation n' est pas en cours de lecture. Je pense que cela se réparera plus tard dans les leçons où nous posons et mettons à jour. Vous pouvez voir maintenant que ça fonctionne. Nous allons donc faire une pause et mettre à jour cette animation Columbia parce que nous ne voulons évidemment pas la jouer pendant que nous sautons. Mais au départ, nous allons définir cette animation de saut, la jouer et l'arrêter. Je pense que ça va tout au long. ne va pas avec ça , c'est ici dans la base de joueurs. C'est comme si ça joue. Même si nous avons placé un booléen ici sur la droite et la gauche. Il s'agit en fait de lire l' animation ici avant ou après. Ici, dans la rampe est montée après avoir réglé le flip book sur l'escalade ou l'échelle, il passe toujours par ici et joue. Par conséquent, plus tard, nous allons arrêter et démarrer l'animation selon que le joueur saute ou non. Je pense donc que ça va se réparer. Plus tard, nous verrons. Mais pour l'instant, laissons ça se passer comme ça. Donc tout fonctionne correctement maintenant et le saut va bien, tout va bien. Nous sommes en train d'ajuster l'emplacement. Compilons, sauvegardons tout et passons à la leçon suivante. 63. Supprimer la montée vers le haut du courrier indésirable: Bon, donc nous avons un petit bug que nous devons corriger maintenant. Et si je vais voir le client et le peignoir et que je me laisse aller aux fenêtres d'affichage. En fait, je vais augmenter ça ici et le mettre ici pour pouvoir grimper par le haut. Maintenant, je peux jouer en tant que serveur et je monte ici, monte jusqu'au sommet, ça fonctionne parfaitement. Mais le problème est maintenant que si je descendais, vous pouvez voir que cela fonctionne bien aussi. Mais maintenant, si je suis ici et que je clique dessus, vous pouvez voir que je peux me calmer, c'est très bien. Mais si je clique dessus, je peux vraiment le spams. Et ça ressemble à ça. Je veux dire, ce n'est pas vraiment le plus gros problème de votre jeu, mais visuellement, je pense que nous pouvons faire cela au joueur. Je pense que c'est un peu stupide, alors résolvons ça. Comme supprimer ce client Bob spamming ici. Revenons ici. Et pour ce faire, je pense que le meilleur moyen est d'ajouter une autre boîte de collision, ce qui vous empêche d'appuyer sur le bouton Haut si c'est le cas. Ajoutons donc une boîte de collision ici sur le dessus de cette corde. Faisons ça dans la base d'escalade. Et ici, dans l'objet de rendu, il suffit d'ajouter une autre boîte de collision. Recherchez la collision dans la zone de collision, et appelons cette boîte de collision supérieure. Ce que nous voulons faire au départ, comme ici et la base de joueurs. Ce que nous voulons faire, c'est que nous voulons faire qu' un événement puisse grimper. Et il s' agit essentiellement d'un booléen. Faisons donc un appel booléen et montons. C'est en fait la chose que nous voulons faire et nous allons la reproduire, évidemment parce que tous les clients ont besoin de savoir à ce sujet. On peut donc grimper Bob, c'est ce que nous essayons de définir, et évidemment, nous allons le régler via le serveur. Faisons donc un événement personnalisé traversant le serveur en disant que l' ensemble peut grimper. Et connectons-le ici. Et maintenant, nous avons besoin d' un événement normal ici, pas d'un serveur. Alors, permettez-moi de me souvenir de l'exécuter sur le serveur, en cliquant sur peu fiable. Nous voulons donc un ensemble normal , pouvons grimper Bob et le faire à l' intérieur de l'interface Blueprint. Terminez l'interface Blueprint de base du joueur. Créer une nouvelle fonction ici appelée set peut monter. Faisons un booléen. Faites la même chose. Vous pouvez monter. OK ? Maintenant, nous pouvons retourner à la base de joueurs et appeler cet ensemble d'événements peut s'aligner ici. Et maintenant, nous pouvons exécuter les événements du serveur via celui-ci. Voyons où c' est, on peut monter. Et connectons-le. Et maintenant, ça va traverser ça. C'est donc ce que nous essayons de courir et nous allons le définir sur false lorsque le joueur ne peut pas grimper Bob. Nous allons donc compiler et économiser, et revenons à la base d'escalade. Et ici, nous avons cette boîte de collision supérieure. Je vais le déplacer un peu vers le haut, donc c'est ici pour que je puisse le voir compiler et économiser. Et nous pouvons revenir à la corde et nous pouvons réellement ajuster la taille. Je ne pense pas qu'il soit aussi grand. Je veux dire, ça n'a pas vraiment d'importance, mais on peut peut-être le changer en quelque chose comme 25. Je peux juste essayer. Et je vais juste le mettre ici. Ainsi, lorsque le joueur est debout au sol et frappe cette boîte, vous ne pouvez pas appuyer sur le bouton Haut. Bon, alors compilons et sauvegardons ça et revenons à la base d'escalade. Alors maintenant, en cliquant sur cette boîte de collision supérieure, passons en bas et cliquez sur celui-ci sur le composant commence à se chevaucher. Que devrait-il se passer lorsque vous chevauchez cette case ici ? Ce qui devrait arriver, c'est que vous ne pouvez pas cliquer sur le bouton haut et vous ne pouvez pas monter. Une fois encore. Laissez-moi simplement copier tout ce code. Nous faisons la même chose. Nous passons par ce serveur vérifier s'il s'agit du joueur, et si c'est le joueur, pour vérifier s'il s'agit du joueur, et si c'est le joueur, appelons celui-ci appelé, nous appelons qu'il peut monter. L'ensemble peut donc grimper et c'est le message car il s' agit d'une fonction Blueprint Interface. Bob peut donc être réglé sur false car lorsque vous touchez cette boîte de collision, vous ne pouvez pas appuyer sur le bouton Haut. Cependant, faisons maintenant que le second est lorsque vous quittez cette case. Ainsi, lorsque vous êtes sous terre, par exemple, vous pouvez monter. Laissez-moi donc relier ça ensemble. autre composante est également celle-ci ici. Vous pouvez monter chaque fois que vous ne vous chevauchez plus avec cette boîte. Le fait est que maintenant nous avons ce booléen. Et donc, dans la base de joueurs, voyons où nous pouvons l'utiliser. Dans la base de joueurs, nous pouvons utiliser ici lorsque nous vérifions que le client est entré, nous ne voulons pas que le joueur grimpe chaque fois que c'est vrai et qu' il est sur le terrain. Je peux donc monter ici. Nous pouvons dire qu'au lieu de simplement dire n'est pas égal à 0, nous pouvons simplement supprimer cela et passer à autre chose. Donc, s'il est inférieur à 0, ce qui signifie que le joueur veut descendre, cela ne nous pose pas vraiment de problème. Le joueur peut descendre. Cependant, quand le joueur, et maintenant nous pouvons reprendre cela, je peux en fait juste, oups, je peux simplement glisser de cela et dire s'il est supérieur à 0, qui signifie que le joueur est J'essaye de monter. Voici le problème que nous rencontrons. Donc, si le joueur essaie de monter et qu'il est autorisé à le faire, il peut donc grimper. Rappelez-vous qu'ils ne peuvent pas monter en collision avec cette boîte de collision ici. Donc, s'il est supérieur à 0, on peut dire fin. Et ils peuvent grimper. Ensuite, nous voulons aller de l'avant et grimper. Et ce que nous pouvons faire ici, nous pouvons simplement dire, ce qui peut faire glisser de ceci et dire, ou celui-ci ou booléen. Ensuite, nous pourrons connecter cela ici et nous connecter cette année. Ce que nous disons, c'est si le joueur appuie sur le bouton bas, ce qui signifie que l'axe Z sera négatif. Nous sommes capables de grimper. Si l'axe Z est positif, ce qui signifie que le joueur appuie vers le haut et que nous sommes en mesure de monter. Ensuite, nous allons grimper. C'est donc soit cette condition ici, soit cette condition ici. C'est ce qu'il dit en fin de compte. Donc maintenant, on peut monter, donc ça vérifie maintenant, pouvez-vous vraiment monter ? Et cela résoudra notre problème avec le spamming. Laissez-moi compiler et économiser. Je peux simplement cliquer sur Play et voir ce qui se passe. Alors, quand je monte maintenant, j'ai un petit insecte. Vous pouvez voir que je ne peux pas grimper Bob, alors je vais y retourner et voir ce que j'ai mal fait. Ainsi, l'axe Z peut grimper est en train de passer par là. Et il définit cette valeur. Et laissez-moi aller ici pour voir si je l'ai dit correctement. Le problème est en fait que cela doit être vrai par défaut, car par défaut, vous pouvez grimper. Nous devons donc composer en toute sécurité. Alors rappelez-vous aussi que cela peut grimper comme vrai par défaut. Nous pouvons donc monter ici. Vous pouvez voir maintenant que nous pouvons grimper Bob. Et si je monte Bob ici, je peux me promener. Si je clique sur le bouton haut, je ne peux plus dépenser. Mais si je clique sur le bouton Terminé, je peux descendre l'échelle. Maintenant, ça marche. Nous ne pouvons pas spams ici. Nous pouvons simplement descendre, mais nous pouvons marcher de haut en bas, ici. Ce n'est donc pas un problème. 64. Faire une pause avec l'animation de la montée: La dernière chose dans cette section, je veux mettre en pause l'animation du client chaque fois que je ne suis pas en train de grimper. Donc, quand je monte ici, vous pouvez voir que l'animation est toujours en cours de lecture et je ne veux pas le faire. Nous avions aussi un dollar auparavant où j'étais client en jouant. Et je le fais juste un peu plus grand ici. Quand je grimpe, on voit mon personnage a l' air bizarre ici, l'animation a l'air bizarre. Donc, peut-être que ça va se réparer une fois que nous aurons fait une pause et que nous jouerons l'animation. Essayons donc de le faire. Revenons à la base de joueurs. Et à l'intérieur d'ici, je veux que vous fassiez cela dans le mouvement de haut en bas, car cela va continuellement vérifier que je monte ou que je descends ou que je reste immobile. Ce que je vais faire maintenant est un peu désordonné et nous devons nettoyer ça à la fin de cette vidéo. Alors, laissez-moi déplacer ça par ici. Je veux donc le mettre à jour chaque fois que je grimpe parce qu' avant de monter et je ne veux pas vraiment faire quoi que ce soit. Alors, après celui-ci, je suis en train de grimper. Déconnectons ça. Donc, avant de régler l'emplacement, jouons et arrêtons l'animation. Prenons notre axe Zici. L'axe Z va simplement nous dire si le joueur appuie vers le haut ou vers le bas, ou le joueur est-il immobile ? Donc, si ce n'est pas égal à 0, ce qui signifie que le joueur est en mouvement, nous voulons jouer l'animation. Pour lire l'animation, vous pouvez prendre ce sprite ici , puis vous pouvez dire Play, et il lit ce flip book. Mais rappelez-vous que vous ne pouvez pas simplement jouer le flip book car vous êtes dans la plaque automatique du client. Et il s'agit d'une mise à jour visuelle. Encore une fois, nous sommes en mode multijoueur, nous devons donc le faire passer par une notification de représentant. Parce que si vous faites cela, un seul client le verra. Enlevons-le donc. Et maintenant, nous devons en faire un nouvel événement appelé pause, escalade flip book. Et nous pouvons définir cela sur vrai ou faux. Revenons donc à la fonction d'interface de la base de joueurs. Faisons une nouvelle fonction. Et appelons celui-là. Pause, j'ai grimpé. Supposons que j'ai grimpé, flip book. Créons une variable ici chez Boolean. J'appelle juste ça pause, grimpé, allumé livre. Et compilons et économisons. Ok, alors appelons-le ici, pause aveugle, flip book, et nous voulons l'exécuter sur le serveur, appeler ça pause limed flip book. Maintenant, celui-ci est également doté d'un booléen appelé pause blind flip book. D'accord ? Donc ici, je m' assure juste d'avoir B devant mon booléen juste pour de bonnes pratiques. Et d'accord, donc maintenant nous avons cet événement, l' exécutons sur le serveur, fiable, et nous voulons promouvoir cela en une variable. Promouvez cela à une variable appelée pause, choline, mais flip book et je vais mettre un B devant cela et supprimer les espaces comme ça. Ok, donc celui-ci est un représentant averti. Cliquez donc sur ici, cliquez sur Rep notifier, compiler et enregistrer. Et lançons le serveur ici. Alors, faites une pause. J'en ai beaucoup maintenant. Permettez-moi de chercher, de faire une pause, de la choline mais du flip book. Laissez-moi passer par ici. Et en fin de compte, ce que nous essayons de faire, c'est que nous essayons d'aller à cette pause, de monter, un flip book, de vérifier si la pause est réglée sur vraie ou folle. Donc, si la pause est réglée sur vraie, nous voulons prendre ce sprite et dire « Stop ». Ici, le flip book. Lorsque vous maintenez la souris dessus, il est indiqué « Arrêter la lecture des livres ». Nous voulons donc arrêter l'animation. Donc, lorsque la pause est vraie, nous voulons arrêter l'animation. Une pause est fausse, ce qui signifie que nous voulons jouer l'animation. On peut dire « commencer » ou « jouer ». C'est ce qu'on appelle le jeu. Nous allons donc jouer l'animation. Et maintenant, revenons en arrière et codons cette logique. Nous avons donc maintenant cet événement prêt. Donc, lorsque nous montons et que l'axe Z lorsque nous appuyons, lorsque nous appuyons vers le haut et vers le bas signifie qu'il n'est pas égal à 0, donc nous voulons le déplacer si c'est vrai. Nous allons donc le relier ici. Si c'est vrai, nous voulons jouer l'animation, qui signifie que nous pouvons appeler cet événement Pause, grimper, flip book, pause, escalade, flip book. Celui-là, ici. Nous pouvons donc définir cette valeur sur Faux. Par conséquent, parce que le paramètre est faux, ce qui signifie que nous ne voulons pas faire de pause, nous voulons uniquement le définir ici pour le mettre en pause. Donc, lorsque cela est défini sur false, il va déballer la notification ici est la fonction Honorlock. Et quand il est défini sur False, il va lire l'animation. Maintenant, je ne veux pas lire l'animation en permanence, mais seulement quand elle n'est pas encore en cours de lecture. Donc, ce que vous pouvez faire, c'est prendre ce brillant et ensuite vous pouvez dire flip book. Et maintenant, nous pouvons voir que nous avons, voyons nous avons comme la marche arrière est en jeu, celui-ci est en train de jouer. Nous voulons vérifier s'il est déjà en cours de lecture. Et disons, disons que c'est dingue. Donc, oups, pas celui-là. Ce n'est pas B, ce qui n'est pas booléen. Alors maintenant, ce que nous disons ici, écrivons également un booléen fin. Donc maintenant, ce que nous disons, si le joueur appuie vers le haut et vers le bas, l'axe Z n'est pas égal à 0 et que l'animation n'est pas déjà lue. Alors allez-y et jouez l' animation car nous ne sommes pas vraiment intéressés par le spamming. Jouez à cette animation. Nous sommes déjà en train de jouer l'animation. Donc, lorsque vous ne jouez pas déjà l'animation, alors lorsque l'animation n'est pas lecture et que les joueurs appuient réellement vers le haut et vers le bas, nous voulons aller de l'avant et jouer l'animation. Laissez-moi aller de l'avant. Nous avons des problèmes avec l'espace, alors organisez un peu les choses ici. Ok, donc la prochaine chose que nous voulons vérifier, nous voulons dire maintenant, nous voulons dire maintenant est que le joueur reste immobile, ce qui signifie que l'axe z est égal à 0 parce que le joueur n'appuie pas vers le haut et le bas. Donc, si cela est à nouveau égal à 0, et si l'animation est déjà en cours de lecture , nous voulons arrêter l'animation. Donc, et Boolean à nouveau, connectez-les ensemble et créez une nouvelle branche. Et prenez le faux ici. Nous vérifions donc si l'axe z est égal ou non égal à 0, ce qui signifie que le joueur se déplace. Si c'est faux parce que le joueur ne bouge pas, il va aller ici et vérifier si le joueur ne bouge pas ? Si c'est vrai. Comme si elle allait également vérifier si l'animation est déjà en cours de lecture. Si c'est vrai, continuez et mettez l'animation en pause. Je vais encore les faire baisser. Et comme ça. Nous allons maintenant lire l'animation ou suspendre l'animation si elle est déjà en cours de lecture. Mais nous sommes immobiles. Nous voulons réellement la mettre en pause parce que nous ne voulons pas jouer l'animation pendant que nous sommes immobiles. Et quand tout est faux, nous voulons simplement ajuster notre emplacement. Alors, posons ça ici. Et donc, lorsque nous déménageons ici, si nous bougeons, mais l'animation est déjà en cours de lecture. Allons-y ici. Ça va devenir faux, ça va devenir faux. Et ensuite, nous ne faisons qu' ajuster l'emplacement. Il se concentre donc d'abord sur la lecture de notre animation ou sur la pose de notre animation, puis il va ajuster notre emplacement. Bon, je pense que nous n'avons pas vraiment besoin de plus ici. Voyons donc si tout est réparé. Laissez-moi cliquer sur jouer en tant que serveur et laissez-moi sauter ici. Vous pouvez voir que je ne joue pas. Si je me déplace de haut en bas, c'est en train de jouer. D'accord. On dirait que tout est correct maintenant. Génial. Laissez-moi maintenant aller en tant que clients et ouvrez-le ici. Cela fonctionne également. Voyons maintenant si nous avons toujours ce compartiment ou si nous devrons peut-être le réparer. Laissez-moi le déplacer ici. Maintenant, nous avons toujours cette boîte, donc je dois jeter un coup d' œil à l'endroit où il a mal tourné pour corriger ce bogue parce que parfois il apparaît et parfois non, donc nous avons un bug. Et je pense que si nous allons ici et que nous déplacons la base de joueurs, essayons rapidement ici. Donc, si le joueur est debout ici et que je vais à la base des joueurs, et que je les déconnecte, bouge à droite et à gauche. Peut-être que quelque chose ne va pas, car nous organisons également des animations ici. Alors, laissez-moi cliquer sur le jeu. Et si je joue en tant que serveur, en fait pas le serveur, le client, alors que j' ai le lien de service. En sautant, cliquez sur le haut. Vous pouvez voir que l' animation complète n'est évidemment pas mise à jour car j'ai déconnecté cet événement. Mais il joue correctement. On dirait que ce n'est pas le cas, nous n'avons jamais de problème sur l'échelle. Il y a donc un décodage initialement correct tout le code, il y a juste ces mises à jour qui se produisent même si nous lui avons dit que nous ne voulions jouer cela que lorsque nous ne grimpons pas. Je vais donc voir ce que je peux faire à ce sujet. Donc je crois que la meilleure façon de corriger ce bug est si nous y allons, donc c'est jouer cette animation, mais parfois elle passe par là et joue sexuellement la fonction sur la rampe. Nous pouvons donc essayer d'aller à la, rappelez-vous que nous avons fait cet état de mouvement ici, ce mouvement est sauvegardé, exécute en fait fonction d' état des mouvements déballés. Donc, pour passer à la fonction d'état du mouvement ici avant qu'elle ne puisse changer, il faut aussi vérifier si nous sommes en train d'escalader ou non. Prenons donc notre client. C'est en train de s'agglutiner ici et faisons une branche. Et maintenant, il va dire, écrivons un booléen fou ici. Donc, si nous ne sommes pas en train d'escalader, vous êtes autorisé à effectuer tous ces mouvements. Cependant, si nous sommes en train d'escalader, ne faites rien. Donc, quelque chose comme ça ici. Alors, allons maintenant compiler, sauver et prier pour que tout soit correct. Essayons donc de sauter maintenant et ça marche. Essayons à nouveau quelques fois pour nous assurer que cela fonctionne. Bon, maintenant, ça résout le problème. Maintenant, ça marche et si je suis le serveur, et qu'ils peuvent se voir, donc maintenant je saute en tant que serveur, vous pouvez voir que cela fonctionne aussi. Ainsi, le client et le serveur peuvent tous deux se voir. Et encore une fois, juste pour s'assurer qu'il n'y a pas d'embêtement. Ici, dans le joueur, je voulais juste vérifier ma collision sur l'échelle. Donc, en tant que sprites, je ne génère aucun événement de chevauchement, donc cela n'a pas vraiment d'importance. Nous, les événements de chevauchement proviennent principalement de la capsule. Cliquez donc sur la capsule, regardant vers le bas les préréglages de collision ici. Ainsi, les poèmes s'ignorent les uns les autres et la ligne des joueurs se chevauche. Donc, en fait, je vais changer celle-ci aussi. Ignorez les uns les autres. Ainsi, les joueurs sur les lettres vont également s' ignorer les uns les autres. Et vous pouvez toujours le modifier si nécessaire, mais c' est ce que nous pouvons faire pour l'instant. Bon, maintenant tout fonctionne et vous pouvez voir l'appareil photo dès maintenant. Vous pouvez voir que c'est en train de s'éteindre. Et c'est parce qu'il faut juste faire attention à ne pas le placer à l'intérieur de cette boîte de collision, sinon il peut le réduire. Je vais le placer à l'extérieur parce que nous sommes déjà dans le chevauchement. Maintenant, cliquons sur Play. Jouez en tant que joueur et client pour vous assurer que le jeu fonctionne. Nous avons donc le client ici et nous avons le joueur ici. Donc le joueur répond maintenant au serveur, au lieu, ce type ici, au lieu du personnage, à la Tsarina ici. Et nous sommes en train de nous déplacer. Et ça a l'air bien. Maintenant, en tant que serveur. Cela a l'air bien aussi, et ils ne peuvent pas se bloquer mutuellement. D'accord. Donc, tout semble correct et je ne peux pas passer le bouton Up ici. Le lecteur et le client peuvent tous deux s'étendre sur le bouton Up. Ok, donc tout fonctionne correctement. Et essayons de jouer maintenant les clients S2, parfois vous devez le tester en tant que deux clients pour voir si cela fonctionne correctement également. Alors en jouant, Serena et Luke, marchant ici, sautant sur la lettre que les choses fonctionnent. Le client et le serveur. Donc, cliquer sur le spam ici ne fait pas de spam. Mais c'est bien. Tout fonctionne et le client, la caméra fonctionne. Vous pouvez voir que c'est en train d'ajuster l'emplacement de lui. Juste comme ça. Donc, tout fonctionne correctement maintenant. Et bien sûr, si nous rencontrons une boîte à l'avenir, nous allons les réparer. Mais pour l'instant, il semble que tout fonctionne et qu'il n'y a pas vraiment de bugs ici. La prochaine chose que nous pouvons faire est travailler sur la santé et les dommages. Et ce sera vraiment intéressant car maintenant nous pouvons être endommagés par les ennemis. Nous pouvons leur infliger des dégâts et ce sera très amusant. Passons donc à la section suivante. 65. EXTRA : Nettoyer votre code: J'ai donc voulu ajouter cette vidéo supplémentaire car je pense qu'il est très important de nettoyer le projet et je pense que ça devient un peu désordonné. Allons de l'avant et nettoyons une partie du projet. La première chose que nous pouvons faire est d'aller ici dans la base de joueurs. Et ici, nous avons terminé notre système climatique et ainsi de suite. Nous avons donc des événements ici que nous pouvons nettoyer. Ainsi, à partir du déplacement vers le haut et vers le bas, vous pouvez double-cliquer sur ces épingles ici pour créer un nœud de réacheminement. Et je le fais généralement pour le rendre maigre afin que nous puissions cliquer ici et le faire ici. Et au lieu d'en avoir deux, parce que cela vient d' abord de la même chose. Je peux simplement glisser à partir de celui-ci et connecter ici et je peux supprimer celui-ci ici. Et pour certaines raisons, le pompage ne me laissera pas le supprimer. Permettez-moi de le fermer et de l'ouvrir à nouveau et de le supprimer. Maintenant, ça marche. Bon, donc je vais faire baisser ça. Faites donc de votre mieux pour nettoyer tout ça ici. Et je peux le déplacer jusqu'ici. Si vous le souhaitez, vous pouvez en faire deux. Vous pouvez en faire un ici et un ici et le connecter comme ça si vous le voulez, si vous pensez que cela semble plus propre, je pense que ça a l' air bien maintenant, peut-être le déplacer vers le haut. Non, je pense que c'est bien. Par ici. Nous pouvons déplacer cette morve comme ça. On peut monter ça comme ça ici. Et cette partie du code. C'est comme si ça avait l'air bien. On peut le déplacer un peu plus haut, peut-être plus loin, quelque chose comme ça. Et je pense que ça va bien jusqu'à présent. Nous avons donc le calcul de l'axe Z. Et je vais le déplacer dessous parce qu' ils appartiennent ensemble. Je vais juste le déplacer ici. Ensuite, nous avons le code de l'escalade. Je vais déplacer tout ça ici pour qu'ils puissent grimper est presque propre ou en fait, c'est complètement propre, donc on peut juste le rapprocher. C'est la canette de grimper, mais je pense qu'ils peuvent grimper. Cela devrait être le numéro deux, car il s' agit également de l'un des codes initiaux. Je vais faire baisser ça. Et je vais prendre cette partie du code ci-dessous, juste m'assurer qu'ils ne se heurtent pas ici sur le côté. Ensuite, nous pouvons également grimper ici. C'est en fait le serveur, donc besoin de le déplacer un peu vers le bas, mais peut le déplacer, peut grimper au-dessus. Il commence donc ici et se dirige vers le serveur. Et puis nous avons l' escalade et nous avons la pause du flip book et la pose du flip book vient d'ici. Peut-être que je peux placer ça ici, ou je peux faire de la place et juste les placer l'un à côté de l' autre par ici. J'aime mettre les choses ensemble qu'elles ne soient pas trop étendues, mais je pense qu'elles sont beaucoup trop proches l'une de l'autre. Donc je vais le faire, je vais réduire un peu ça. C'est ici que c'est le code principal. Et nous avons quelques événements ici. Il s'agit donc d'ajuster l'emplacement, ce qui se passe ici. Donc, en ajustant l'emplacement, je peux encore le mettre de côté ici juste pour le rendre plus propre. Et je peux sélectionner tout cela. Je vais encore le faire baisser un peu, comme ça. Ok, donc nous avons le plateau est en train de grimper et nous pouvons monter cette ascension, je vais juste en fait nous laisser ici, juste le rapprocher pour qu' il ne soit pas trop loin. La même chose avec celle-ci. Et ce que nous pouvons faire avec ce code et simplement le rapprocher un peu comme ça. Nous pouvons tout prendre ici. Ensuite, on peut cliquer sur, voir. Appelons ça « grimper ». Grimpez en étant peut-être que vous n'avez pas appelé ça mieux ou peut-être mécanicien d' escalade ou toute une ligne de texte. Vous pouvez également faire, rappelez-vous que nous pouvons également saisir des commentaires, de sorte que vous n'avez pas à le faire uniquement ici, vous ne pouvez pas aussi bien le faire. Faites-le ici, donnez-leur des couleurs si vous le souhaitez, si vous établissez vos propres règles. Parfois, ce que je fais pour mes jeux, s'il vient du serveur, je fais un commentaire, puis ce commentaire sera lu. Donc tous les commentaires rouges à l'intérieur de mon jeu, je sais que c'est le serveur, donc quelque chose peut faire. Et si c'est spécifiquement pour le client, j'aime peut-être le rose plutôt que le rouge. Vous pouvez donc essayer d' établir vos propres règles et de tout organiser ici. Je vais faire en sorte que ça corresponde ici. Maintenant que nous avons refusé d'être mécanicien, nous avons le saut. Celui-là, je vais nettoyer un peu plus. Donc, en rapprochant ça. Donc, au départ, très important, j'ai essayé de rendre votre code beaucoup plus maigre. Maintenant, cliquez sur celui-ci, cachant la connexion parce que je n'en ai pas vraiment besoin. Et je vais aller tout ça, mais plus loin. Il y a donc plus d'espace ici. D'accord ? Quelque chose comme ça. Et maintenant, ce que nous pouvons faire, c'est simplement déplacer les uns sous les autres. Ok, donc maintenant nous avons ceci, et en fait, celui-ci est un peu foiré. Prenons cette épingle ici et déplacons-la de cette façon. Au lieu d'en avoir autant, je peux simplement double-cliquer ici, et je peux le connecter ici, et connecter celui-ci ici. Je peux donc supprimer celui-ci. Et maintenant, nous avons ceux qui sont liés aux trois. Un peu plus propre qu' avant celle-ci, nous puissions faire glisser un peu en arrière pour voir la ligne. Je pense que tout le reste va bien. Nous pouvons donc déplacer cela, le front comme celui-ci, et nous pouvons l' éloigner un peu plus loin pour qu'ils ne se heurtent pas. Ok, donc je pense que ça regarde des notes. Et rappelez-vous que lorsque vous nettoyez tout ici, n'oubliez pas de vérifier vos fonctions pour assurer que tout va bien. Je pense que tout va bien ici. Nous pouvons l'éloigner un peu plus loin pour qu'ils ne se heurtent pas comme ça. Vous pouvez soit double-cliquer dessus et le faire comme ça ici. D'accord ? Maintenant, je peux éloigner ça, et ici vous pouvez faire de même. Je peux donc m'éloigner un peu plus loin. Et celui-là plus loin. Vous pouvez même double-cliquer dessus, déplacer vers le bas comme ceci et cliquer sur q. Deux. Ils sont attachés ensemble, quelque chose comme ça. Quelque chose comme ça. Je veux dire, ça va être beaucoup plus propre. Peut-être que vous pouvez simplement vous éloigner de tout cela à l'exception de celui-ci, qui aura l'air un peu plus propre, mais ça a l'air bien jusqu'à présent. D'accord ? Donc, quand vous avez tout nettoyé, alors essayez de tout vérifier, essayez de commenter tout ce qui est très important lorsque vous revenez comme trois mois plus tard, vous n'avez aucune idée de tout cela c'est si vous n'avez commis aucune de ces actions. Alors n'oubliez pas de nettoyer le code, essayer de tout commenter et bien comprendre ce qui s'est passé ici, ce que vous avez codé. La deuxième chose est que vous pouvez nettoyer vos variables. Donc, ce que vous pouvez faire ici, par exemple, la montée est ici. Ce que vous pouvez faire ici à droite, vous pouvez y ajouter une catégorie. Je peux donc appeler cette catégorie d'escalade. Et vous pouvez voir qu'il l'ajoute automatiquement à une catégorie. Et il peut le faire pour tous les autres êtres clients. Pour que celui-ci puisse grimper Bob. Je peux maintenant sélectionner la catégorie et sélectionner la ligne étant. Et il les rassemblera automatiquement ici. Ils vont grimper étant que l' emplacement est également en escalade. La pause a grimpé et le chèque a également grimpé. Donc, tous les deux, je vais les changer en escalade. Maintenant, nous pouvons grimper est également en déclin. Et puis nous avons l'objet grimpant c'est aussi l'escalade. Et nous avons une autre chose ici. Nous avons l'état du mouvement. Celui-ci, par exemple, vous pouvez appeler des mouvements de joueur. Et nous avons l'emplacement de la couche. Celui-ci peut donc appeler ça des propriétés du joueur, quelque chose comme ça ou emplacement. Donc l'emplacement actuel du joueur. Nous pouvons également modifier les propriétés du joueur. Mettre à jour la caméra du lecteur. On peut donc appeler la caméra de disposition. Donc, tout ce qui concerne les caméras branchées ici et les informations sur l'usine. Peut-être pourrons-nous le modifier pour jouer des propriétés aussi. apparition de la couche et l'emplacement pour jouer une propriété également. Et la caméra du lecteur, nous pouvons passer à la caméra et nous avons l'axe Z. C'est le mouvement. Alors peut-être que vous pouvez simplement le changer en mouvement du joueur. Vous pouvez donc maintenant voir que vous avez organisé tous ces éléments et lorsque vous les minimisez, vous voyez à quel point c'est propre. Lorsque vous avez un jeu volumineux, il est très important de nettoyer tout votre code. Vous savez donc ce qui se passe. Bon, donc nous avons essayé de faire ça avec tous vos plans. Et la prochaine chose que nous pouvons faire est ici. Ce que nous pouvons faire ici, dans le plan général, vous pouvez regrouper les choses. Par exemple, nous avons les cochons ici. Je peux tous les sélectionner et créer un nouveau dossier. Et je peux les appeler des ennemis. Et j'essaie de trouver tous mes escargots. Donc, de cet escargot à cet escargot, je peux maintenir la touche Maj et cliquer dessus, les faire glisser dans le dossier des ennemis. Et maintenant, nous avons tous les ennemis que vous pouvez voir ici. D'accord ? Et maintenant, nous avons la corde ici. Vous pouvez peut-être l'ajouter dans un dossier appelé environnements. Et je ne pense pas que je l'ai correctement orthographié , comme ça. Et nous avons celui-là. C'est aussi l'environnement, donc je vais le déplacer à l'intérieur d'ici. Le joueur commence par le maillage de navigation. Vous pouvez peut-être appeler ça des volumes. Et c'est le volume du maillage de navigation. Post-traitement, je peux créer un nouveau dossier appelé post-processus. Ok, donc on peut déplacer cette refonte aussi à l'intérieur des volumes et le joueur commence, on peut juste laisser sortir ici. Nous n'avons pas besoin de le mettre dans un dossier. Maintenant, vous pouvez voir que celui-ci est également organisé. Si vous voulez passer au niveau suivant, vous pouvez même renommer des choses. Par exemple, il peut les renommer. Mais je pense que c'est très bien pour l'instant. La dernière chose que vous pouvez faire aussi, vous pouvez accéder aux interfaces Blueprint. Par exemple, ici. Souvenez-vous de ceux-ci. Vous pouvez également donner une catégorie. Ainsi, par exemple, peut grimper, vous pouvez à nouveau lui donner une catégorie comme les variables, et elles seront toutes dans une catégorie. Il est donc très important de le faire pour vos propres projets. Nettoyez tout votre code. Et je voulais juste faire cette vidéo supplémentaire juste pour la nettoyer un peu. Et maintenant, je pense que c'est beaucoup plus propre de travailler avec. Et oui, c'était tout pour cette vidéo. Je vous verrai donc dans le prochain. 66. Préparer les cahiers de voyage: Bonjour et bienvenue dans cette section. Il est maintenant temps de travailler sur la santé et les dégâts, tant pour le joueur que pour l'ennemi. Nous avons donc beaucoup à faire ici dans cette section. Commençons donc. Tout d'abord, voici dans les supports de cours que j'ai mis en ligne pour vous quelques surprises ou textures que nous devons préparer en premier. Pour ce qui est du personnage, j'ai celui qui s'appelle La Mort. Passons donc aux atouts ici et passons aux personnages. Je vais juste le télécharger ici parce que c' est la même chose pour la sérine et le look, nous venons de le télécharger ici. Cliquez dessus avec le bouton droit de la souris, appliquez la texture du papier 2D. Nous savons que toutes ces choses vont maintenant paraître, nous avons ces effets d'étape. vais donc regarder dans les textures, et je veux que vous importiez également cet effet de pas. Même chose avec Tsarina ici. Je vois que je l'ai déjà téléchargé pour Luke, et essayons de le télécharger maintenant pour Serena. Donc, cet effet en une étape est téléchargé pour Tsarina ici et applique du papier aux paramètres. Et avant de les transformer en sprites, je veux que tu y ailles, revenons ici. Va voir les ennemis. Et à l'intérieur d'ici, prenons les coups de cochon et choisissons la mort. Et passons maintenant aux ennemis et aux textures. Et téléchargeons le cochon, il et la mort. Et aussi les coups d'escargot et la dette d'escargot. Donc ces deux-là aussi les téléchargent. Et pour tous ceux que j'ai téléchargés, appliquez du papier aux paramètres. Et je veux que vous fabriquiez des flip books à partir de tout ça. Donc, la mort HIT ou les deux. Et la mort de la mer ici. Et aussi Luke poignarder, celui-ci appelé l'étape de l'onglet Anserinus. Je vais donc sauter ça dans la vidéo. Nous savons déjà quoi faire ici. Je veux donc que tu crées des sprites à partir de ces derniers et des flip books. Ainsi, le plus grand 180 par 180 pour les personnages et les ennemis. Lorsque vous extrayez les sprites, la grille est de 90 sur 90. Ok, j'ai fini les flips. Donc pour la mort du cochon, j'ai dit les images par seconde, deux pour l'instant, je ne suis pas sûr des quatre images ici. Il faut peut-être que ce soit six ou plus lentement, donc nous devrons le tester dans le jeu plus tard. Et pour la tête de cochon, n'oubliez pas de régler une image de moins par seconde sur une. Je crois que cela affectera le code plus tard, alors réglez-le sur un. Et pour les têtes d'escargot ou la mort d'escargot, j'ai dit qu'un à huit images par seconde pour cet escargot a touché. Je l'ai réglé sur une image par seconde. Il est également très important de le faire ici. Et pour la profondeur ici et les personnages l'ont réglé sur huit images secondes. C'est donc l'animation de la mort. Et pour Luke, le coup de couteau se fait à travers les images par seconde. Et la même chose ici pour Serena est de poignarder deux images par seconde. Bon, donc maintenant nous avons tous ces flip-books prêts. En fait, avant de terminer cette vidéo, appliquons-les également à la structure. Passons donc à nos plans dans les structures et ouvrons les informations du joueur. Maintenant, vous pouvez voir ici que nous n' avons pas d'animation attaquante, alors cliquons sur Ajouter une variable. Et disons une animation d'attaque. Je vais traîner celui-ci ici. Peut-être que je veux le faire glisser juste après le saut ici, ça n'a pas vraiment d' importance, mais c'est juste moi qui écris ici, un flip-book. C'est un livre en papier ici. Maintenant, j'économise. Et faisons la même chose ici pour les informations sur les animaux. Donc, l'animal a maintenant l'idole et nous bougeons, mais nous avons aussi l'animation Hit. Nous avons l'animation de la mort. Je l'ai aussi pour le joueur. Permettez-moi donc d'abord de changer cela en un flip book en papier. Encore ici et ici. Comme ça. Ok, donc maintenant j'ai caché sans mort ajouter ça pour le joueur aussi pendant que nous sommes des modifications. Ajoutons donc l'animation de la mort. Permettez-moi de le déplacer ici au-dessus de l'effet sonore. Et rappelez-vous que c'est un flip book en papier. Ok, je crois que nous avons tout ici, alors nous allons tout sauver. Allons voir le joueur. Allez sur Luke et cliquez sur Ouvrir l'éditeur de Blueprint complet, cliquez sur les valeurs par défaut de classe. Et ici, dans les valeurs par défaut de la classe, trouvons les informations du joueur ici. Et vous pouvez voir qu'ils ne peuvent pas vraiment les ajouter ici même si nous les avons ajoutés, rappelez-vous, vous devez aller à la base de joueurs, cliquer sur Compiler, cliquer sur Enregistrer, et vous devez cliquer sur Compiler à l'intérieur de ici. Parce que vous avez ajouté la structure à l'intérieur d'ici, les variables à l'intérieur d'ici, elle doit être compilée ici. La même chose avec l'ennemi. Avant de pouvoir ajouter ceux en escargot et en cochon, vous devez aller vers l' ennemi et compiler et sauver. Et maintenant, nous pouvons les voir. Pour un aperçu, vous pouvez maintenant cliquer sur les valeurs par défaut de classe et vous pouvez voir que nous avons l'animation d'attaque. Et cherchons simplement l'étape. Donc, Luke, pas, plus de profondeur. On peut prendre celui qui s'appelle FB Death. Cette échelle d'animation. Nous n'avions vraiment rien. C'était juste pour des tests. Et si vous voulez encore une fois, je vous ai dit que vous le pouvez, vous pouvez aller sur ce site Web appelé Maples. Je suis ici pour créer un personnage et essayer d'utiliser votre personnage ou simplement de créer. Vous voyez ici, vous avez quelques animations que vous pouvez faire. Et vous pouvez simplement sélectionner l'animation de l'échelle et vous pouvez voir à quoi elle ressemble. Ou vous pouvez simplement mettre l'animation de corde ici si vous le souhaitez. Faisons vraiment ça. Donc, ça n'a pas l'air bizarre. Je pense que c'est ce qu'on appelle « escalade ». Bon, donc allons à Serena maintenant, aller voir les joueurs, Tsarina, pas ici. Couche Tsarina et ouvre le plan complet selon lequel il s'agit d'une attaque NDA. Encore une fois, recherchez l'étape , sélectionnez Salinas, Serena et la lettre. Cherchons ceux qui ont grimpé. Ici. Ajoutez pour l'animation de la mort, il suffit de rechercher la mort et de sélectionner celle-ci. Maintenant, nous avons tout sélectionné. Faisons maintenant la même chose pour les ennemis. Allons donc voir l'ennemi. Nous allons choisir le premier éditeur de Blueprint complet ouvert dans les valeurs par défaut de la classe. Retrouvons celui-ci appelé info animal. Et ici, dans les tubes, on peut rechercher des coups de cochon et la mort. Nous pouvons rechercher la mort des cochons. Faites la même chose maintenant pour l'escargot. Ouvrez l'éditeur de Blueprint complet et à l'intérieur des informations sur les animaux, ajoutons les coups d'escargot et ajoutons la dette d'escargot. Maintenant, nous avons tout ajouté ici dans la structure. Alors, avec ces choses ajoutées maintenant, passons en revue et faisons les joueurs qui attaquent la contribution. 67. Ajouter la saisie de l'attaque: Allons maintenant et ajoutons les entrées d'attaque. Allons donc d'abord dans les paramètres du projet. Et à l'intérieur de la contribution ici, nous n'avons que le saut jusqu'ici. Donc, en cliquant sur ce plus et en ajoutant un nouveau appelé attaque. Et je vais cliquer ici et cliquer sur mon contrôle gauche sur le clavier. Maintenant, je vais utiliser la commande de levage comme bouton d'attaque, mais ce n'est qu'un cours, vous pouvez donc choisir votre propre bouton si vous le souhaitez. Je crois en Maple Story, c'était soit ceci, soit le bouton Alt. Je vais donc choisir le bouton Moins de contrôle de mon clavier. Fermez-le vers le bas, en allant dans plans et à l'intérieur du joueur et d'une base de joueurs N. Faisons donc ce mouvement d' attaque ou cette logique ici dans la base de joueurs. Donc, ce que j'ai fait ici, je viens de sélectionner tous mes nœuds et de cliquer sur C pour créer un commentaire à partir de la vidéo précédente sélectionner tous mes nœuds et de . Et je viens d'appeler ce mouvement et j'ai changé la taille de la police à soixante-dix. Je n'ai que tous mes mouvements. La chose que nous avons codée jusqu'à présent à l'intérieur d'ici. Nous pouvons donc économiser de l'espace. Et maintenant, nous pouvons attaquer ici. Donc, ici, ce que je veux que vous fassiez, c'est que je veux cliquer avec le bouton droit de la souris et dire attaque, quel que soit votre nom dans les paramètres de votre projet. Sélectionnez-le ici. Et maintenant, pour l'attaque, nous voulons le faire passer par le serveur car encore une fois, il s'agit d'un mode multijoueur et nous voulons nous assurer que le client ne triche pas. Et donc ce que je vais faire, c'est créer un ici et les interfaces Blueprint et la base de joueurs. Ici. Cliquons sur Ajouter et créons une nouvelle fonction appelée attaque. Et créons simplement une nouvelle variable ici. Ici, le B est en train d'attaquer. Donc, nous ne faisons que vérifier si le joueur attaque. Maintenant, vous pouvez voir ici parfois que ça bogue, c'est attaquer. Lorsque je l'écris ici et que je clique sur Entrée, je vais le supprimer. Je ne sais pas s'il le fait parfois sans raison. Je vais donc supprimer cela ici, supprimer et créer une nouvelle fonction. Maintenant, je peux voir si je clique ici et que je clique sur Ajouter. Tout d'un coup, ça marche. Je ne sais pas pourquoi il fait ça. Parfois. Nous allons le renommer pour attaquer à nouveau. Par ici. Maintenant que nous pouvons le faire, nous pouvons l'appeler maintenant en disant attaque et sélectionné ici l'attaque de l' événement. D'accord ? Nous voulons donc que cela passe par le serveur. Nous allons donc créer un nouvel événement personnalisé appelé attaque serveur. Et celui-ci va aussi avoir ce booléen appelé B qui attaque. Appelons, en fait, lançons le serveur la première année et appelons cet événement serveur ici. Comme ça. Relions-le. Et maintenant, ici, nous pouvons appeler cette attaque depuis la base des joueurs finaux. D'accord ? Et maintenant, faisons en sorte que cela soit vrai. Ainsi, chaque fois que vous cliquez sur le bouton d'attaque, vous allez définir le booléen attaquant comme vrai. Il va passer par le serveur et le serveur. Vous pouvez cliquer ici avec le bouton droit de la souris, promouvoir cette variable en tant que variable, l' appeler B attaque. Et maintenant, le serveur va définir cette variable comme vraie. Et évidemment, je veux le reproduire aux clients pour qu'ils puissent voir mon changement. D'accord ? La chose que nous voulons faire ici, c'est nous ne voulons pas que le joueur attaque. Si vous attaquez déjà, cela n'aurait aucun sens pour les cellules que vous pourrez tout le temps attaquer par spam. Donc, ce que nous voulons faire, c'est prendre ce booléen et créer une branche. Et faisons un cran ici, donc PAS booléen. Ce que nous disons maintenant, c'est si le joueur n'attaque pas, donc si c'est faux, le joueur n'attaque pas. Nous pouvons aller de l'avant et attaquer. Mais si nous attaquons déjà, nous ne voulons pas vraiment attaquer le spam. Donc, n'attaquez que lorsque vous n'attaquez pas déjà. Bon, donc il va passer par le serveur et il va définir la variable. Maintenant, ce que nous voulons faire, c'est jouer et attaquer l'animation. Et rappelez-vous qu'il y a très, très longtemps, nous avons fait état de ce mouvement ici où nous changeons les mouvements. Nous allons donc ajouter un nouveau mouvement ici. Nous en avons ajouté un à la structure. Passons donc à l'énumération maintenant, car ici, dans l'énumération, si je le remonte à nouveau, nous n'en avons que maintenant. Mais dans la structure de jeu ici, nous avons cette animation attaquante que nous avons ajoutée dans la vidéo précédente. Maintenant, ajoutons cette option ici dans notre énumération, que nous avons également créée il y a longtemps. Ici, dans les énumérations, dans le mouvement States. Cliquez sur Ajouter une énumération et ajoutons l'attaque. Maintenant, pour cette balise, vous pouvez la faire glisser vers le haut si vous le souhaitez. Je vais juste le laisser tomber ici. Et maintenant, nous pouvons voir que l'oxygène est disponible. Si vous ne pouvez pas le voir, n' oubliez pas de cliquer sur cette flèche et elle apparaîtra. Maintenant, copions ce flip book, et laissez-moi le connecter à l'attaque. Et encore une fois, rappelez-vous que vous ne pouvez pas simplement entrer ici et sélectionner la première étape des animations de stab car comme nous voulons rendre dynamique pour tous les personnages, ils ont leur coutume animations. Nous devons le trouver ici à partir de la structure que nous avons ajoutée. Donc, en cliquant sur la structure, vous pouvez voir, vous ne voyez aucune épingle. Et cela se produit lorsque vous cliquez sur Masquer les épingles non connectées. Mais vous pouvez cliquer sur la coche ici. Donc, l'animation de l'attaque. Et maintenant je peux cliquer sur cette flèche et vous pouvez la voir apparaître. Maintenant, je peux faire glisser cette animation d' attaque et me connecter à celle-ci ici. Bon, donc c'est corrigé. Compilons et économisons maintenant. Ce que nous pouvons faire maintenant, c'est revenir au graphique des événements. Et ici, nous voulons jouer ou attaquer l'animation parce que rappelez-vous, vous pouvez simplement dire les mouvements définis États. C'est ce que nous avons utilisé jusqu'ici. Et ici, vous devez faire attention car maintenant vous pouvez voir que nous avons quelque chose appelé l'état des mouvements définis, ainsi que la base ennemie. C'est ce que l'ennemi, c'est pour le joueur. Faites donc attention à ce que vous sélectionnez. Celui-ci, nous voulons utiliser celui du joueur. Il souhaite jouer l'animation d' attaque chaque fois que le joueur attaque. Et maintenant, avant de faire quoi que ce soit ici, souvenez-vous du bon mouvement. Nous ne voulons pas aller à droite et gauche lorsque le joueur attaque. Donc je vais prendre mon a attaquant Boolean ici et dire dingue. Ce que je vais dire ici est si le joueur ne grimpe pas. Faisons donc un booléen AND et le joueur n'attaque pas. Donc, si le joueur ne grimpe pas et que les joueurs n'attaquent pas, vous pouvez aller de l'avant et vous déplacer à droite et à gauche. Mais si le joueur attaque, nous ne voulons pas aller à droite et à gauche. Laissez-moi simplement glisser ça sur le côté pour que j'ai un peu plus d'espace pour travailler comme ça ici. D'accord. Compilons et économisons maintenant. Et maintenant, vous pouvez voir qu'il y a une petite erreur et je ne vais pas vous en parler pour le moment. Je vais vous expliquer un peu. Cliquons donc sur Jouer maintenant. N'oubliez pas que, avant de cliquer sur Play, n'oubliez pas de le configurer en tant que serveurs d'écoute. Alors ici, les pièces ont été écoutées. Cliquons sur Play. Je vais attaquer. Vous pouvez voir que ça marche. Très bien, c'est très bien. C'est une attaque. Nous n'avons pas fait de fausse attaque, elle va donc attaquer pour toujours. C'est donc ce que peut maintenant le serveur sur le client ? Encore une fois, je vais cliquer sur le contrôle. Mais vous pouvez voir ne pas travailler sexuellement. Je ne vois pas mon animation. Rappelez-vous, c'est un changement visuel et il doit passer par une notification de représentant. moment, vous exécutez cet événement via le serveur. Le client n'a donc aucune idée de ce que vous faites car dès que vous accédez au serveur, le client ne peut pas voir toutes ces informations à moins qu'elles ne soient répliquées sur celui-ci. Ces informations peuvent être consultées par le client car vous êtes en train de répliquer. Mais celle-ci ne fait que passer par une fonction normale. Et cela ne va pas vraiment au client et vous l' exécutez via le serveur, de sorte que le client ne peut pas voir tout cela que vous écrivez ici à moins qu'il ne soit répliqué. Donc, ce que je vais faire, c'est changer celui-ci au lieu de répliquer dans une notification de représentant parce qu'il s'agit d'un changement visuel. Passons donc à Eric Notify à la place. Nous pouvons donc informer le client de celui-ci. Ici et c'est l'attaque. Ce que je vais dire, c'est reprendre ce booléen, disent les marques. Donc, si vous attaquez, je veux jouer cette animation d'attaque d'état de mouvement. Revenons en arrière et veillons à ce que tout soit correct. Donc c'est oui, alors essayons maintenant. Cliquez sur Play. Maintenant, en tant que serveur de nouveau, cliquez sur contrôle. Cela devrait fonctionner. Maintenant, si vous allez chez le client, je clique sur le contrôle. Maintenant, vous pouvez voir que c'est aussi une attaque. Le serveur peut également voir que le client est en train d'attaquer. N'oubliez pas que c'est très important en mode multijoueur. Vous devez passer par un représentant avertir s'il s'agit d'un changement visuel. Et si vous le jouez directement sur le serveur, le client, le client ne peut pas voir toutes les choses que vous faites ici à moins que vous ne répliquiez réellement sur les clients. 68. Pour chaque boucle: Le fait est maintenant que nous voulons infliger dégâts à tous les ennemis que nous avons touchés. Et pour ce faire, nous allons utiliser ce qu'on appelle une boucle pour chaque boucle. Ce que nous n'avons pas encore utilisé de boucles, et je ne crois pas que je vous l'ai déjà expliqué. s'agit donc que d'une courte vidéo expliquant ce que sont les boucles. Commençons donc par ici. Ici, nous l'avons dit avant que nous allions attaquer et qu'il va au serveur. Maintenant, toute la logique va se trouver à l'intérieur du serveur car nous voulons nous assurer que le client ne triche pas. Faisons ça à l'intérieur d'ici. Mais nous allons le faire, c'est que nous allons utiliser une fonction appelée obtenir des acteurs qui se chevauchent. Nous allons donc frapper quelque chose et nous allons avoir tous les acteurs qui se chevauchent, donc tous les acteurs que nous frappons. Et pour celle-ci, nous allons faire une boucle pour chaque boucle. C'est celui que nous allons utiliser. Et connectons celui-là. Quels acteurs vont donc se chevaucher ? Nous allons jeter un coup d'œil aux ennemis parce que ce sont ceux que nous voulons attaquer. Alors, obtenez tous les acteurs qui se chevauchent, récupérez tous les ennemis qui se chevauchent. Et pour chacun de ces ennemis, il va maintenant prendre chaque ennemi. Disons donc, dans mon niveau ici, que cinq ennemis s' empilaient l'un sur l' autre comme celui-ci. Et j'ai cliqué sur mon bouton d' attaque et j'ai frappé tous ces cinq. Alors, que va-t-il faire maintenant ? Le chevauchement est de cinq. Vous pouvez donc voir les cinq ennemis. Et maintenant, pour chaque ennemi, que voulez-vous faire ? Et ce que nous voulons faire, est infliger des dégâts à chaque ennemi. C'est ce qu'est le corps de la boucle. Maintenant, vous allez faire une action pour chaque ennemi que vous avez touché. Ce que nous voulons faire, c' est simplement infliger des dégâts. Maintenant, je veux m' assurer que ce code n' est pas exécuté chaque fois que je ne frappe rien. Si vous ne touchez aucun ennemi, nous ne voulons pas vraiment exécuter ce code. Nous allons donc dire que c'est, nous allons prendre celui-ci et dire la longueur. Donc, en vérifiant la longueur. Et je vais prendre ça et dire non égal. Nous pouvons donc le faire en écrivant non égal ou en disant un point d' exclamation égal. C'est génial en mathématiques, ce qui signifie pas égal. Si tel est le cas, la longueur des acteurs qui se chevauchent n' est pas égale à 0, ce qui signifie que j'ai effectivement frappé quelque chose. Vous pouvez ensuite exécuter ce code. Cependant, si la longueur est égale à 0, alors ne faites rien car nous ne voulons vraiment pas exécuter ce code si nous n'avons rien touché. C'est très simple pour chaque boucle, il va jeter un coup d'œil à tous les acteurs qui se chevauchent. Nous avons peut-être frappé trois ennemis. Et pour chacun de ces trois ennemis, nous voulons infliger des dégâts. Et nous le ferons dans la prochaine leçon. 69. Joueur qui applique des dommages: Reprenons maintenant le plan du joueur et voyons comment le joueur peut infliger des dégâts. C'est ce que nous avons fait dans la dernière vidéo, à l'intérieur de la base des joueurs . Donc, je fais l'attaque ici. Et au fait, si vous ne l' avez pas vu auparavant, vous pouvez voir avec quoi nous avons travaillé jusqu'à présent. Les variables, elles sont comme circulaires ici dans l'épingle. Mais celui-ci est un carré et il y a beaucoup de petits carrés à l'intérieur. Et c'est ce qu'on appelle un tableau. Et vous pouvez le voir ici lorsque vous créez une nouvelle variable. Par exemple, je viens d' appeler tout ça au hasard. Vous pouvez voir que lorsque vous cliquez sur le type ici, le conteneur de variables ici, nous pouvons en fait changer le type d'un seul à un tableau. Quelle est donc la différence entre celui-ci et celui-ci ? Donc, jusqu'à présent, ce que nous avons fait, disons, par exemple, des joueurs connectés. Par exemple, prenons les joueurs connectés et modifions ici la base de joueurs bp. Disons donc que ce que nous voulions faire avec celui-ci est de les stocker tous dans une variable. Vous ne pouvez donc pas simplement prendre ça ici et le mettre ici. Comme lorsqu'un joueur se connecte, vous définissez cette variable. Cette variable ne peut contenir qu'une seule information. Par exemple, cette variable est si le joueur attaque ou non. Et permettez-moi de voir si nous avons d'autres variables ici. Cette variable contient actuellement l'état du mouvement. Ainsi, lorsque vous le réglez pour qu'il tombe, il fera chuter cet état de mouvement. Vous ne pouvez donc pas avoir plusieurs informations en même temps l'intérieur de ces variables. Toutefois, vous pouvez le faire lorsque vous le transformez en tableau. Ainsi, afin de stocker les joueurs connectés, tous les joueurs se sont connectés dans une seule variable. Donc, pas seulement un joueur, il faut le transformer en tableau. Et si vous cliquez sur Modifier le type de variable, vous pouvez voir qu'elles deviennent comme ce carré. Et ce que c'est, c'est maintenant le tableau que vous pouvez, vous pouvez l'imaginer comme une grande boîte. Et je vous l'ai déjà dit, vous pouvez imaginer cette variable normale comme une boîte contenant des informations. Celui-ci, vous pouvez l'imaginer comme une grande boîte contenant de petites boîtes d'information. Je peux donc maintenant stocker tous les joueurs ici, toutes les variables. Et ce que je peux faire ici, c'est que je peux prendre ça et dire ça. Et je peux vraiment obtenir l'un des joueurs et en faire quelque chose. Un tableau n'est donc qu'une grande boîte contenant, par exemple, tous les joueurs connectés. Peut-être que je contiens tous les pons, alors que s'il s'agit simplement d'une variable circulaire, donc une seule variable normale, elle peut contenir, ne contient qu'une seule information. Mais si vous possédez un tableau, il peut contenir plusieurs informations. Par exemple, tous les joueurs connectés au serveur. Ici, les acteurs qui se chevauchent, il contient tous les acteurs qui se sont chevauchés. Et disons que j' y suis attaché. Et ce sont cinq ennemis. Maintenant, avec ces cinq ennemis, je peux maintenant les décomposer ici dans ma boucle. Maintenant, j'ai tous les ennemis ici. Et maintenant, ce que nous voulons faire de notre boucle, c'est que nous voulons infliger des dégâts à chaque ennemi que j'ai touché. Donc, si la longueur n'est pas égale à 0, ce qui signifie que nous avons touché quelqu'un, nous voulons prendre soin et dire Appliquer des dégâts. C'est ainsi que vous infligez des dégâts à quelque chose. Utilisez cette fonction ici, appliquez des dégâts. Nous devons maintenant spécifier à quoi vous souhaitez appliquer des dommages. Alors, qui est l'acteur endommagé ? C'est l'ennemi, et l'ennemi est ici. N'oubliez pas que vous avez pris tous les acteurs qui se chevauchent qui sont la base ennemie, donc les ennemis. Et pour chaque ennemi, vous voulez lui infliger des dégâts. Alors, quels sont les dégâts que vous voulez appliquer ? Et nous devons en fait préciser les dommages causés par le personnage. Revenons donc aux informations du joueur, à notre structure ici, informations du joueur, et ajoutons une nouvelle variable appelée dégâts de base. Peut-être que plus tard, nous pourrons améliorer ces dégâts. Celui-ci est donc appelé dégâts de base, et nous pouvons le déplacer au sommet ici. Cela n'a pas vraiment d' importance, mais j' aime simplement structurer les choses de cette façon. Donc, pour les dégâts de base, revenons à la base de joueurs Compile and Save. Dans les valeurs par défaut de la classe En fait, vous pouvez pas dans la classe par défaut, vous pouvez simplement cliquer dessus ici. Si nous le trouvons ici dans les infos du joueur des propriétés du joueur, voici la structure et cliquez ici. Par défaut, je veux juste que les dégâts de base soient peut-être cinq. Donc, vous faites cinq dégâts chaque fois que vous frappez quelque chose. Maintenant que nous avons cet ensemble et prenons celui-ci ici et cassons le tout. Et nous pouvons maintenant utiliser ces dégâts de base et le brancher ici. Maintenant, plus tard, si vous souhaitez effectuer des mises à niveau pour un jeu, et nous le ferons probablement pour notre jeu. Et pas vraiment dans le cours de base, j' ajouterai probablement des sections bonus pour développer de plus en plus sur ce jeu jusqu'à ce qu'il devienne énorme. Mais je l'ai peut-être déjà enregistré. Jetez donc un coup d'œil à ma section bonus au moment où vous regardez cette vidéo. Nous appliquons donc les dégâts de base. Cependant, plus tard, si nous voulons ajouter des mises à niveau et plus tard, nous voulons augmenter ces dégâts. Vous pouvez simplement créer une nouvelle variable. Appelez-le endommagé, multiplicateur et compilez et enregistrez comme valeur par défaut. Passons maintenant à un flotteur, et ne le changeons pas en ArrayList, il suffit de le conserver dans une seule variable. Allons le faire sortir. Et par défaut, n'oubliez pas de le définir sur un. Le multiplicateur endommagé n'est donc qu'un, ce qui équivaut aux dégâts de base. Maintenant, nous allons dire, c'est multiplié par le multiplicateur ? Et puis on le connecte ici. Maintenant, plus tard, si nous effectuons des mises à niveau, nous pouvons simplement augmenter ce multiplicateur, par exemple deux. Il va donc dire que les dégâts de base sont deux fois, ce qui inflige ensuite plus de dégâts. Mais pour l'instant, faisons-en un ici. Je vais déplacer ça un peu de poids pour rester plus organisé. Maintenant, l'instigateur de l'événement, si vous tenez la souris au-dessus, il indique le contrôleur responsable de ces dommages. Et c'est le joueur. Nous sommes donc à l'intérieur d'un joueur et pour obtenir la manette du joueur, vous pouvez simplement dire « Obtenir la manette ». Et get controller est une fonction qui dit retours contrôleur pour cet acteur. Donc, la manette du joueur, vous pouvez l'obtenir de cette façon. Pour le type de dommage ici, vous pouvez simplement le changer en type de dommage. Tout cela, comme les dégâts plus proches dont nous n'avons pas vraiment besoin en ce moment. Très bien, c'est ainsi que vous appliquez des dégâts. Et si nous sauvegardons tout ici, maintenant dans la base ennemie, ce qui va se passer, c'est que si je vais vers l'ennemi maintenant, ici dans la base ennemie, nous n'avons pas vraiment fait grand-chose à l'intérieur d'ici. Mais ici, vous pouvez dire événement, tout dommage, et c'est un événement que nous n'avons pas encore utilisé. Tous les dégâts subiront tout simplement tous les dégâts qui se sont produits à ce moment-là et nous pouvons en faire quelque chose, par exemple, nous pouvons soustraire de la santé de cet ennemi. Avant de terminer cela, permettez-moi de faire quelque chose avec les collisions car c'est si je vais à la fenêtre ici, laissez-moi aller vers l' un des ennemis. Il en est de même pour l'escargot. Ouvrez l'éditeur Blueprint. Je pense que cette boîte de frappe est beaucoup trop grande et lorsque le joueur saute par-dessus l'ennemi, le joueur sera touché lorsque vous entrez dans ce chevauchement. Je veux qu'ils soient touchés uniquement lorsque vous êtes très près de cet escargot. Je pense donc que celui-ci est très énorme. Ce que nous pouvons faire ici, c'est simplement ajouter une autre collision responsable d'endommager le joueur. Et passons à Ajouter ici et cherchons une collision. Ce n'est pas vraiment une lésion sphérique. Nous allons choisir celui-là. Je pense que c'est mieux dans ce cas. Et changeons le nom de celui-ci en collision. Et je veux que vous y arriviez réellement, ajoutons-le pas ici, je suis dans l'escargot, c'est mon erreur. Revenons à la base de joueurs et ajoutons ça ici. Donc, collision, sphère de collision et appelons ça la collision parce que nous voulons sur tous les ennemis, pas seulement sur l'escargot. Revenons maintenant à l'escargot et maintenant vous pouvez le rendre plus petit pour s'adapter à cet escargot. Escargot, on peut simplement réduire ce rayon de sphère. Vous pouvez également le faire glisser vers le bas. Et peut-être que nous allons en arriver à 20 ans. Alors je vois que c'est 20. Et si vous pouvez également le voir depuis la bonne vue. N'oubliez pas que nous avons parlé des vues orthographiques dans l'introduction, de la bonne vue. Et vous pouvez passer du mode filaire au mode oblique et vous pouvez voir l'escargot. Il peut donc également l'ajuster ici sur ce point de vue, c'est parfois beaucoup mieux. Mais 20 je pense que c'est une bonne boîte à succès. Revenons à la perspective. Maintenant, ce que nous voulons faire, c'est simplement prendre les collisions pour toutes ces personnes. Nous allons donc compiler et sauvegarder. Revenons à la base ennemie. Ici, dans la capsule, je veux descendre et cliquer sur ce préréglage de collision pour vérifier si toutes les collisions avec lesquelles nous travaillons sont correctes. Je pense donc que celui-ci va bien. Nous n'avons pas vraiment à faire quoi que ce soit ici. Cliquez donc sur la collision maintenant et cliquez sur ce préréglage de collision. Ainsi, comme avant, rappelez-vous que dans une leçon précédente, nous avons eu ce problème avec les escargots qui sortaient, comme s'ils marchaient près de la rampe. Et c'était en fait dû au chevauchement statique du monde ici et je ne veux pas qu'ils se débrouillent. Je vais tout d'abord, vous pouvez caractériser le pas en haut. Non, vous ne pouvez pas. Et faisons de la coutume ici. Et ensuite, ignorons le monde statique. Donc, le motif ne va pas ou les escargots ne vont pas s'embêter à l'intérieur. Cliquez sur le sprite pour vous assurer qu' il ne génère aucun effet de chevauchement. Et je crois que c'est fait ici. Revenons donc à la base de joueurs. Maintenant, pour la base de joueurs, nous allons ajouter une collision où vous pourrez la détecter, l'attaque. Faisons donc une nouvelle collision ici, et je vais l'attacher au sprite pour que vous puissiez voir pourquoi je l'attache. Donc, d'abord, je vais en ajouter un ici. Collision, disons la boîte de collision. Et je vais passer à la bonne vue, en mode Lead. Donc maintenant, je peux voir où je l'ajoute pas dans la base de joueurs. Faisons-les dans l'espace pleural car tous les joueurs sont identiques. Il n'aurait donc pas de sens de le faire dans Luke puis Serena. Faisons donc la taille à l'intérieur d'ici. La raison pour laquelle nous avons fait la taille à l'intérieur de l' escargot est que tous les ennemis sont différents. Mais pour les joueurs, ils sont tous les mêmes. Faisons donc la taille ici dans la base de joueurs. Et ce que je veux faire ici, faisons d'abord le x. Et je pense à quelque chose comme 20 ans. Et pour le Y, je ne peux pas le voir ici. Peut-être que 20 ou 25 ans, ça n'a pas vraiment d'importance. Faisons juste 20 ans. Et pour le Z ici, combien de haut en bas ? Je pense que 30 est un bon chiffre. Essayons donc 30. Et nous allons le rapprocher un peu du personnage. Que se passe-t-il si les ennemis sont à l'intérieur de cette collision ? Vous êtes en mesure de faire des dégâts. Maintenant, si vous, avant de le faire, passons à la collision et vérifions si tout est correct. D'accord. Donc, tout est correct , sauf une chose. Ici encore, je peux jouer ou marcher dessus . Non, vous ne pouvez pas. Il générera des événements de chevauchement. Et maintenant, permettez-moi de définir cela sur personnalisé car je dois ajouter quelque chose ici. Maintenant, vous pouvez voir avant et la base ennemie. Maintenant, si vous cliquez sur cette collision que nous avons effectuée, vous pouvez voir que le type d'objet est dynamique du monde. Maintenant, le problème est que si vous avez cette dynamique mondiale qu'il se chevauche en ce moment pour cette boîte de collision, comme si l'escargot marchait près vous et chevauchait ensuite cette boîte, cet escargot endommagera votre personnage et cela n'a pas vraiment de sens. Pourquoi mon, mon, je veux que l'ennemi entre en moi ici dans cette capsule avant qu'il ne puisse causer des dégâts. Pas vraiment quand il chevauche ma portée d'attaque, cela n'aurait aucun sens. Vous pouvez donc voir ici la fin d'une base. Il s'agit d'un type d'objet de dynamique mondiale. Je vais donc voir le joueur ici pour cette collision attaquante, et je vais le régler pour ignorer la dynamique mondiale. Il ne va donc pas vraiment entrer en collision avec moi ici. Je ne veux qu'il soit endommagé quand il bloque ma capsule. Et vous pouvez voir que ma capsule a la dynamique mondiale de deux blocs, donc je vais être frappé par cet ennemi. Maintenant, en cliquant ici, changeons le nom de celui-ci. Appelons ça une collision avec des étiquettes. Compilons et sauvegardons et laissez-moi cliquer sur Play et je peux vous montrer quelque chose cool pour que nous puissions apprendre de cela également. Nous pouvons maintenant voir si vous voulez voir quelque chose. Si vous le souhaitez, si vous voulez voir la collision parce que vous êtes en train de déboguer, vous pouvez cliquer sur cette collision et vous pouvez supprimer celle-ci appelée Jeu caché. Jeu caché, supprimez cela, cliquez sur Play. Et maintenant, vous pouvez voir cette boîte de collision ici devant vous et leur jeu. Et vous pouvez voir quand je tourne de ce côté, les collisions derrière moi. Nous avons donc besoin de la collision pour me suivre de chaque côté. C'est pourquoi c'est important. Si vous le souhaitez, l'inclure ici dans le sprite. Il est donc attaché au sprite. C'est donc un enfant. Et vous pouvez cliquer sur Lecture et il va tourner avec cette lumière. Il peut donc maintenant voir qu'il suit correctement. C'est très cool d'apprendre de ça. Je vais laisser cela ne pas être caché dans les jeux pour que nous puissions vraiment voir ce qui se passe. Avec ça. Je crois que je n'en ai plus. Permettez-moi donc de vérifier cette capsule ici pour que le joueur soit sûr que cette chose est correcte. Donc maintenant, vous pouvez voir que la capsule est réglée pour ignorer est l' os qui est l'ennemi. En fait, je vais créer un chevauchement parce que nous voulons être endommagés par le bras. Il n'est donc pas logique d'ignorer l'os. C'est exact maintenant et pour les sprites, cette partie ne générera aucun événement de chevauchement comme celui-ci. Disons donc où tout est, je crois que tout est correct. Maintenant, dans la base de joueurs, nous appliquons des dégâts à chaque ennemi que nous frappons. Le problème en ce moment, que nous allons résoudre dans la prochaine leçon, c'est que si j'attaque, il va attaquer pour toujours. Passons donc dans la prochaine leçon et résolvons ça. 70. Arrêter l'animation d'attaque: Donc, ici, à ce code, nous avons défini l'attaque pour être vraie. Et si l'attaque est vraie ici dans la fonction de déballage, elle va régler ce mouvement d' attaque. Nous voulons maintenant faire quelque chose lorsque l'attaque est fausse. Et ce que nous voulons que vous fassiez, c'est nous voudrions copier le collage. Maintenant, vous pouvez le faire, il suffit de le mettre au ralenti pour que nous n' attaquions plus. Et nous devons à un moment donné dire que c'est faux, car jusqu'à présent, nous venons de le définir pour être vrai ici. Et c'est maintenant vrai, mais nous n'avons indiqué nulle part dans notre code quand il sera faux. Faisons donc vraiment ça. Disons donc avant de faire quoi que ce soit avec les ennemis. Alors disons oui, si je suis ici, si je me chevauche, si ma longueur est 0, si je ne touche aucun ennemi, je veux juste arrêter d'attaquer parce que je n'ai touché personne. Je vais donc prendre ça et mettre ça faux. Cependant, si vous le faites simplement, il va le faire en même temps que vous attaquez. Vous pouvez donc voir que je vais cliquer sur Attack et en même temps que j'attaque, ça va arrêter mon animation. Donc, au lieu de faire ça instantanément et de me laisser rejouer, en fait, je n'ai pas besoin de frapper personne. Donc, en cliquant ici, vous pouvez voir que je clique sur Queue, mais rien ne se passe car je passe instantanément de la valeur true à false. faut attendre un peu avant de le définir sur false car il faut attendre l'animation attaquante soit diffusée. Et vous pouvez le faire de manière très intelligente. Vous pouvez prendre le sprite ici et dire flip book. Maintenant, je peux obtenir la longueur de ce flip book et il est dit obtenir la longueur du flip book en quelques secondes. Vous pouvez savoir combien de temps ce flip book est joué. Vous pouvez vraiment retarder. N'oubliez pas que nous utilisons ce nœud de retard. Relions donc le délai à cela. Donc retardé le code pendant le temps que cette animation va prendre, en passant par là. Et une fois que c'est terminé, passons en revue et réglons la valeur False. Maintenant, si je clique sur jouer et que vous allez à ce personnage et que vous ne me permettez pas si quelqu'un ici. Donc, si je frappe maintenant, vous pouvez voir que ça marche. C'est donc exact. Maintenant, je peux frapper et ça arrête mon animation après avoir joué sexuellement. Vous pouvez donc rendre cette animation lente et plus rapide en allant vers les ressources deux personnages à Luke, par exemple. Si vous augmentez cette animation poignardée, bien sûr, elle arrêtera cette animation beaucoup plus rapidement. Il est donc maintenant contrôlé par les images par seconde. Maintenant que nous avons fait l' attaque, rappelez-vous ici, quand vous avez fini d' attaquer les ennemis, parce que maintenant si je joue et que je frappe des ennemis, vous pouvez voir qu'il joue pour toujours parce que je n'ai pas précisé quand je m'arrêterai si je frappe réellement des ennemis, parce que celui-ci est juste au moment où vous ne touchez aucun ennemi. Quand je frappe des ennemis, encore une fois, je vais faire de même. Je vais donc simplement faire glisser ça ici une fois cette boucle terminée. Donc, lorsque vous aurez infligé des dégâts à tous les ennemis, je vais arrêter mon attaque ici. Et cela se produira très, très vite. On dirait donc que vous n'avez rien touché. Parce que comme le code Blueprint fonctionne si rapidement, c'est fou. Donc maintenant, si nous n'entendons rien ou si vous terminez votre attaque, vous allez arrêter d'attaquer. Voyons maintenant, si je frappe quelqu'un, vous pouvez voir qu'elle arrête maintenant l'animation après que j'ai touché les ennemis. Ou même si je n'entends personne, ça va s'arrêter. 71. Les dégâts qui ont été subis par les ennemis: Très bien, maintenant que nous avons codé une grande partie de l'animation technologique et que nous appliquons maintenant des dégâts. Allons en fait vers l' ennemi ici, la base ennemie. Ici, nous voulons appeler celui-ci, cet événement a appelé n'importe quel dommage. Et nous voulons infliger des dégâts à l'ennemi. Donc, ce que nous voulons faire, c'est ici que nous voulons d'abord aller à la structure et ajouter de la santé à l'ennemi. Je crois que nous ne l'avons pas encore fait. Passons donc aux plans et aux structures et dans les informations sur les animaux. Et ici, ajoutons une nouvelle variable, appelons cela santé. Et pour celui-là, allons cliquer sur float. Et pour la santé, je vais juste faire glisser celle-ci sur le dessus. Bon, donc gardons ça et revenons à la base ennemie. Maintenant, compilez et économisez. Maintenant, pour cette structure, vous pouvez la faire glisser vers l'extérieur et la briser. Et maintenant, vous pouvez voir que nous avons cette variable de santé et, par défaut, la santé de l'escargot, je ne sais pas, nous pouvons la mettre à 25 ou 15. Faisons ça jusqu'à 15 ans. En fait, les dégâts de notre joueur sont de cinq en ce moment, donc trois coups vont tuer l'escargot. Passons donc aux valeurs par défaut de la classe et ici et aux informations sur les animaux. Donc, pour cet escargot spécifiquement, il a 15 points de santé. Et peut-être pour le cochon. Si nous descendons vers le cochon, cochon ici, ce cochon, nous allons mettre la santé des porcs peut-être 230. C'est donc le double de la force de l'ennemi ou de l'escargot. Et aussi pour celui-là, je change un peu la collision. Pour celui-là, comme nous l'avons fait avec l'escargot. Peut-être le diminuer comme 25. Nous pouvons le faire plus tard. Comme si nous pouvions vérifier si c' est trop grand et trop petit. Revenons maintenant à la base ennemie. Maintenant, la santé est de 30 ans s' il s' agit d'un cochon ou de 15 ans s'il s'agit d'un escargot. Mais maintenant, il va le faire dynamiquement. Ainsi, les dégâts que nous avons appliqués ici auparavant et la base du joueur, les dégâts causés aux dégâts de base que nous avons appliqués sont égaux aux dégâts qui sortent d'ici, et le joueur inflige cinq points de dégâts. Donc ce que nous pouvons voir, ce que nous pouvons dire c'est cette santé qui est de 15 pour l'escargot en ce moment, soustrayez cela, comme soustraire les dégâts, qui sont cinq. Donc maintenant, la santé est de dix, car 15 moins cinq, c'est dix. Maintenant, c'est la santé mise à jour. Il s'agit des dix points de santé qui restent de l'escargot. Et maintenant, je vais vous apprendre une nouvelle chose, une nouvelle chose cool que peu de gens savent au début, sont nombreux à faire une erreur même s'il y a des plans avancés, c'est comment que vous définissez, comme la façon dont vous définissez dynamiquement des variables à l'intérieur de la structure. Parce qu'en ce moment, vous avez toutes ces variables et c'est cool. Vous les avez mis ici dans votre structure. Mais comment modifier réellement la valeur ? Alors maintenant, laissez-moi les enlever. Maintenant, la santé est maintenant de 15. Comment le transformer en dix dynamiquement ici grâce au gameplay ? Pour ce faire, faites-le glisser depuis cette structure. Ensuite, vous écrivez des jeux. Et ici, en bas, vous dites définir les membres dans les informations sur les animaux dans la structure. Alors maintenant, il faut aimer quoi, quel membre voulez-vous définir ? Et à droite, si vous cliquez ici, encore une fois, vous pouvez voir toutes les épingles et je veux définir la santé, c'est ce qui m' intéresse. Je veux donc mettre à jour cette santé dans cette structure cette nouvelle santé qui est maintenant dix ans après l' application des dégâts. Je vais donc le relier ici. Et maintenant, vous devez redéfinir cette variable car vous pouvez voir qu' il s'agit d' un carré pivoté, ce qui signifie qu'il ne s'agit que d'une variable temporaire. Vous devez le régler à nouveau, et ce n'est pas comme l'épingle circulaire. Cela signifie donc que je dois prendre mes informations sur les animaux et redéfinir ces informations sur les animaux. Maintenant, toutes ces autres informations ici, l'animation inactive bouge, frappe et mort. Il va le faire comme ça. La seule chose qui va changer, c'est la santé. Et comme cela fonctionne sur le serveur, je veux en fait répliquer cela pour m'assurer que mon client peut également voir cette modification car cela peut être endommagé ici. Il indique uniquement l'autorité, cet événement ne se déclenche que sur le serveur. N'oubliez donc pas de répliquer ces informations au client. Et c'est en fait tout ce que ça ressemble. Nous n'avons pas vraiment besoin d'en faire plus ici pour le structurer un peu plus. Peut-être que je peux juste les traîner un peu et les mettre ici en fait. Essayez donc d'être aussi structuré que possible. Cliquez sur cette épingle, peut-être la structurer comme ça, et je vais tout rapprocher, juste comme ça. Cliquez sur q. Ok, donc maintenant nous avons ceci, et si vous voulez voir si cela fonctionne ou non, en fait, nous devons le tester également pour voir si cela fonctionne. Je peux maintenant imprimer ici. Une chaîne d'impression. Je peux imprimer la quantité de santé. Vous pouvez donc faire à partir d'ici, sorte que vous puissiez le faire glisser et l'imprimer. Vous pouvez également voir si votre structure est réellement mise à jour. Nous pouvons donc encore briser cela. Et maintenant, nous pouvons imprimer cette nouvelle santé que vous avez définie ici. Nous allons donc compiler et économiser. Donc maintenant, chaque fois qu'il va être touché, il vous indiquera les dégâts ou les plus sains. Par exemple, je vais à cet escargot, je vais cliquer sur les hanches. Et vous pouvez voir ici qu' il reste dix points de santé. Et si je ne sais pas si c'est le même escargot, il reste maintenant cinq points de santé. Maintenant, si je frappe un autre ennemi, il y en a dix. Donc c'est correct maintenant, il reste dix points de santé si je ne l'ai pas encore entendu et si je le frappe à nouveau, il en a cinq. Si je le frappe à nouveau, il a 0. Donc maintenant, il fonctionne correctement. Le problème, c'est que si je le frappe, vous dites, vous verrez qu'il y a moins cinq, moins dix. Donc ça continue, ça continue dans le moins. Et nous devons régler cela. Donc, ce que vous devez faire ici c'est que lorsque vous désactivez ici la soustraction, vous devez utiliser quelque chose appelé pince. Pince. Et nous allons sélectionner celui-ci appelé flotteur, car nous travaillons avec des flotteurs. Nous allons donc fixer la valeur afin qu'elle ne puisse jamais passer en dessous de 0. Qu'est-ce que c'est, quelle est la valeur ? La valeur est celle que nous voulons fixer. OK ? Quel est le minimum ? Nous ne voulons pas passer en dessous de 0. Le minimum est donc 0. Et le maximum est juste le montant que cet ennemi a en santé. Je vais juste faire glisser ça et le régler au maximum. Donc, quoi que nous ayons dit depuis le début, nous allons mettre cette santé ici. Donc, au lieu d'aller directement ici, il va passer par un client, s'assurer qu'il n'est pas en dessous de 0. Ensuite, nous allons appliquer ou modifier cet état de santé ici. Bon, donc quelque chose comme ça. Et compilons avec moi, double-cliquez sur cette épingle pour la rendre un peu plus organisée, quelque chose comme ça. OK, Compilez et enregistrez, et maintenant cliquons sur Play et testez-le. Donc maintenant si je frappe quelqu'un, donc si je frappe ça et que je frappe celui-ci ici, 10500, ça peut voir maintenant qu' il ne peut pas aller en dessous de 0. Je sais qu'on peut toujours faire mourir cet escargot chaque fois que je frappe 0. Laissez-moi le tester avec ces cochons pour que nous puissions en voir 25. Et maintenant, vous pouvez voir qu'il imprime beaucoup de chiffres et c'est parce que je frappe plusieurs ennemis. Cela fonctionne maintenant. En 2015, cet autre en a 20. Vous pouvez donc voir que je frappe tous les ennemis et que ça marche lorsque je chevauche plusieurs ennemis. Encore une fois peut aller en dessous de 0. Cela fonctionne donc parfaitement maintenant. Juste pour vérifier si la base du joueur doit également être serrée. Nous n'avons pas vraiment besoin de serrer quoi que ce soit ici. La seule chose dont nous avons besoin pour grimper sur la santé des entreprises, et nous devons probablement le faire aussi pour que le joueur de l' ennemi endommage le joueur, ce qui l'a fait plus tard. Maintenant, cela fonctionne. Je vais supprimer ce code ici. Et c'est essentiellement le ****. Vous pouvez donc voir que ce n'est pas vraiment trop complexe. Nous prenons simplement la santé, en soustrayons les dégâts, puis nous la mettons à l'intérieur de cette structure. 72. Animation de hit d'ennemis: Il est maintenant temps de faire une animation de frappe ennemie. Donc, jusqu'à présent, nous ne faisons que frapper les ennemis et ils ne jouent pas d'animation. Nous devons donc le faire maintenant. Maintenant, pour les animations, nous avons créé celle-ci beaucoup plus tôt parce que nous avons créé la tâche, vous trouvez en fait un emplacement aléatoire. Et ici, nous utilisons celui-ci où nous avons réglé l' état du mouvement en mouvement. Donc, celui-ci ici et la base ennemie, nous pouvons réellement le changer parce que nous n'avons pas vraiment maintenant le mouvement et le ralenti. Nous avons également l'effet de frappe. Et convertissons tout simplement comme le joueur, le joueur que nous avons celui-ci, l'état des mouvements non mûrs. En fait, nous allons aussi le transformer en état de mouvement. Je pense que c'est plus comme si cela nous servira beaucoup mieux qu'un booléen. Donc, de la façon dont nous refaisons cela, allons simplement utiliser ici et l'énumération. Nous allons simplement utiliser celui-ci. Nous n'avons pas vraiment besoin d'en faire un nouveau. Donc à l'intérieur d'ici, parce que le joueur aura également une animation à succès, en fait, nous n'allons pas l' utiliser pour le joueur ici. Nous allons simplement faire un effet, mais vous pouvez simplement soit faire une nouvelle énumération pour l'ennemi. En fait, je vais utiliser celui-ci parce que nous utilisons principalement la même chose. Je vais ajouter ces résultats. Et je vais aussi ajouter la mort, mais nous n'allons pas coder cela pour le moment, mais je ne fais que l'ajouter pour l'instant. Et ce que nous voulons faire maintenant, revenons maintenant à la base ennemie. Donc, dans l'ennemi, la base ennemie, sauvegardons tout et ajoutons cet état de mouvement ici. Donc, appelez ça l'état du mouvement. Modifions-le pour manger ou énumérer, appelé état de mouvement E sélectionné ici. Et maintenant, nous allons le faire sortir. Et c'est ce que nous voulons mettre ici au lieu de bouger. Et maintenant, nous avons besoin d' un booléen, supprimons-le. Nous avons besoin d'une énumération appelée « état du mouvement ». Donc, la même chose. Et changeons le nom en état de mouvement. Relions-le ici. Je ne l'ai pas frappé comme ça. Et maintenant encore une fois, rappelez-vous qu'il s' agit d'une notification par un représentant, donc nous devons en faire une notification de représentant. Et ici, déconnectons cela en maintenant la touche Alt enfoncée et en cliquant sur. Maintenant, celui-ci provient de l'interface Blueprint, nous devons donc modifier le booléen ici. Nous pouvons simplement cliquer dessus et le supprimer. Passons donc à l'interface Blueprint ici, et c'est pour l'ennemi. Et ici, définir l'état des mouvements, je vais le supprimer ici et en faire un nouveau appelé Sélection l'état des mouvements d'énumération et l' appeler États du mouvement. Encore une fois, ça va se débrouiller pour une raison quelconque. C'est parfois un peu agaçant que cela se dérange. Parfois, vous pouvez fermer le moteur et les écrous. Et en fait, parfois, vous pouvez simplement supprimer cela ici. Je vais juste le supprimer. Oui. Maintenant, cliquez sur Ajouter. Voyons si cela fonctionne maintenant. Cela fonctionne maintenant, je ne sais pas pourquoi il fait cela. Parfois, disons définir le mouvement, les dates, Compiler et Enregistrer. Revenons à la base de joueurs, pas à la base des joueurs, la base ennemie ici. Donc, au lieu d'un ici, le mouvement, compilons et économisons pour nous assurer que tout est correct. Relions-le maintenant. Ok, donc les données des mouvements sont correctes. Maintenant, nous traversons cela, il passe par le serveur, et maintenant il va appeler cette fonction OnReceive. Prenons donc cet état en mouvement et disons que Switch a autorité. Tout comme ce que nous avons fait jusqu'ici, qui a de l'autorité. Donc, si c'est le cas, laissez-les tomber pour que nous n'ayons pas vraiment tous ces éléments. Le fait est que nous n' avons que le ralenti. Prenons cette brillante ici et disons Set flip book. Maintenant, nous n'avons que l'idole et laissez-moi copier ça quelques fois. Ici. Nous n'avons que trois choses. Nous avons le ralenti, nous l'avons fait, ils courent, tellement bougent. Et nous avons l'effet de frappe. Nous en connaîtrons la profondeur plus tard. Donc, pour la course, je vais juste utiliser la course à droite. Donc, utilisez la course à gauche ou à droite, ça n'a pas d'importance. Je vais utiliser la course ici. Pour la tête. Je vais utiliser celui-ci. Définissons donc ces animations. Prenons nos informations sur les animaux, dissons-les ici. Donc, casse. Et prenons-le ici. Maintenant, pour le ralenti, je vais le brancher ici. Et pour le déménagement, je vais le brancher ici. Et pour l'animation des succès, branchés ici pour la mort, nous attendrons avec ça aussi. Plus tard, cliquez dessus, masquez les épingles non connectées, faites-le glisser vers l'arrière et compilez et enregistrez. Et maintenant, nous avons tout, c'est exact. Maintenant, assurez-vous que si vous avez oublié de le faire, assurez-vous d'aller dans chaque ennemi et assurez-vous que dans les valeurs par défaut de la classe, vous avez défini toutes ces animations ici, sinon cela ne fonctionnera pas. D'accord ? Revenons maintenant à la base. Et ici, au lieu de bouger, en fait, allons ouvrir votre, nous devons en fait changer quelque chose ici. Alors, dans la base ennemie, allez vers votre ennemi maintenant. Et à l'intérieur d'ici. Et des tâches aléatoires définies. N'oubliez pas que vous définissez cet état de mouvement sur bouger et non bouger. Mais pour le moment, ce n'est plus booléen. C'est l'état du mouvement. Je vais donc garder le contrôle et cliquer ici pour supprimer cela. Et celui-là, on va changer en r1, non ? N'oubliez pas d'avoir entendu la base ennemie. C'est le bon déroulement que nous utilisons pour le mouvement dans l'arbre comportemental dans cette tâche que nous allons déplacer ici. Rappelez-vous que dans l'arborescence comportementale avait également celui-ci où nous avons défini le booléen de mouvement sur faux. Donc ici, au lieu d'être faux, vous pouvez le régler sur inactif et vous pouvez voir qu'il est déjà réparé lui-même. Revenons donc à l'arbre comportemental. Maintenant, je vais renommer cela au lieu de définir le mouvement booléen. Permettez-moi de le renommer, revenir à mes tâches et renommer pour définir l'état des mouvements, car ce n'est plus vraiment un booléen. C'est agréable de rester organisé comme ça. Maintenant, tout est correct. Revenons maintenant à la base ennemie. Nous avons donc tout transformé en état de mouvement. Ici, je veux jouer l'animation Hit dès que je reçois des dégâts en tant qu'ennemi. Je vais donc traîner ce petit peu comme ça. Je vais dire que les états de mouvement sont définis. Je vais appeler ça de l'ennemi. N'oubliez pas que ce n'est pas du joueur, mais de l'ennemi. Alors, sélectionnez-le ici connectez-le et connectez-le ici. Et je vais jouer mon effet de frappe comme ça. D'accord ? Donc, cliquez sur Play juste pour le tester et cliquer sur mon joueur. Et je crois que je ne peux pas le tester maintenant. Donc, si je clique sur Hit, vous pouvez voir qu'il frappe et c'est comme un bug. Mais parfois, cela arrête l'animation car elle se trouve toujours à l'intérieur de votre arbre comportemental. Mais vous pouvez voir que ça marche. Nous allons donc le tester pour le joueur, pour le client. Ici, pour le client, vous pouvez voir le changement que le joueur a apporté au serveur. Donc, pour le client, cela fonctionne également. Si je regarde le serveur, je peux voir ce changement à partir de la Kline. Laissez-moi juste m'assurer que je n'ai pas de bugs, changez-le pour jouer en tant que client. sont donc tous deux clients. C'est un Klein, c'est un client. Et laissez-moi choisir ce joueur, Omega plus petit. C'est toujours bien si vous avez deux écrans car vous pouvez placer un client sur un écran et l'autre ici. Parce que je n'aime pas vraiment je ne puisse pas faire ça ici pour ce cours. Je dois tout avoir sur un seul écran. Donc, en cliquant sur celui-ci, je frappe, vous pouvez voir les modifications qui s'appliquent , les deux clients peuvent voir le changement. D'accord. C'est donc exact. Tout fonctionne. Nous n'avons pas de boîte. Laissez-moi le tester pour le cochon ici. Et vous pouvez voir que le cochon travaille également pour le cochon. Le problème, c'est qu'ils se déplacent en ce moment. Faisons donc cela très, très rapidement et nous pouvons en fait faire une solution rapide. Alors ici, lorsque vous attaquez et lorsque vous êtes touché, prenons ce composant de mouvement et disons Définir le mode mouvement, comme ce que nous avons fait avec notre échelle. Définissez donc le mode de mouvement. N'oubliez pas que pour notre lettre, nous l'avons mis en vol. Mais pour celui-là, n'allons rien faire parce que nous ne voulons pas vraiment bouger. Compilons et économisons. Et ici, en tant que client, laissez-moi aller voir les cochons. Il est beaucoup plus facile de voir ici frapper cet ennemi. Et vous pouvez voir maintenant que quand je l'ai frappé, il ne bouge plus. D'accord. Joli. Et la raison pour laquelle il se déplace tout d'un coup, c'est parce qu' il fonctionne toujours dans notre arbre comportemental. Et pour l'instant, le mode de mouvement n'est pas réglé, donc il est bloqué ici. Cela fonctionne donc correctement et nous devons faire plus de code pour le rendre plus fluide. Maintenant que l' animation fonctionne, nous allons plus près. La prochaine chose est que nous voulons arrêter l'arbre comportemental chaque fois que l'ennemi se dirige parce que nous ne voulons pas nous promener. 73. Arrêter l'arbre de comportement: Ok, donc pour empêcher l'arbre comportemental de jouer. Donc, rappelez-vous que c' est l'arbre comportemental. Il joue toujours toutes les animations chaque fois que vous êtes touché. Mais nous voulons arrêter cette animation. La raison pour laquelle je fais cela est qu'après avoir touché l'ennemi dans Maple Story, l'ennemi va vous poursuivre tout le temps. Alors quand je clique ici sur le jeu et que je frappe cet escargot ici, cet escargot va me poursuivre. Cela ne va pas aller de cette façon et ça ne va pas aller de cette façon. En fait, il va chercher le joueur et il va me trouver et me poursuivre. C'est ce que nous essayons de faire. Avant cela, arrêtons l'arborescence comportementale ne plus vouloir l'exécuter chaque fois que les ennemis touchent. Ici. Avant cela, prenons le sprite et nous voulons arrêter la logique chaque fois que cette animation Hit est terminée. Encore une fois, comme avant avec l'animation d'attaque, pour l'animation Hit, on peut prendre le sprite et dire flip book. On peut prendre la longueur. Alors, combien de temps ce flip book est joué ? Nous pouvons faire un nœud de retard. Retardez-le aussi longtemps que cette animation Hit soit. Et après cela, je vais prendre cette composante de mouvement et je vais dire arrêter le mouvement immédiatement. Alors arrêtez tout ce que vous faites comme ça. Ensuite, vous voulez arrêter l'arbre comportemental. En ce moment, celui-ci ne fait qu' arrêter le mouvement de l'ennemi, mais vous voulez également arrêter complètement l'arbre comportemental. Et cela se fait en obtenant le contrôleur de l'ennemi. Alors rappelez-vous en mode multijoueur que vous pouvez simplement dire obtenir la manette, car en ce moment nous sommes à l'intérieur de l'ennemi. Nous avons donc le contrôleur de cet ennemi. Nous avons frappé. Et puis nous allons dire qu'il obtient NME réf. Rappelez-vous que nous avons fait obtenir l'ennemi il y a quelque temps. Si vous ne vous en souvenez pas, essayez d'entrer dans l'interface et de jeter un coup d'œil à cette base ennemie. C'est l'ennemi de la réf que vous avez faite, dont vous entendez également faire référence. Vous pouvez donc référencer l'ennemi ici. Avec cette manette que vous avez. Maintenant, vous pouvez faire glisser à partir de cela et vous voulez obtenir, maintenant vous avez, vous avez le contrôleur, ce que vous voulez spécifier, juste comme avant de dire obtenir l'ennemi ref. Eh bien, ce contrôleur, vous parlez spécifiquement de ce contrôleur IA. Nous devons donc préciser que nous parlons spécifiquement de ce contrôleur IA. Donc, pour ce faire, rappelez-vous que je pourrais simplement dire casting aussi, parce que le casting vous faites référence à un plan comme celui-ci. Mais pour le contrôleur IA, c'est un gros plan bleu, tout comme la base des joueurs et ainsi de suite. Je vais donc créer sa propre interface. Cliquez ici avec le bouton droit. Et dans les Blueprints, n'oubliez pas ici que vous pouvez créer une interface Blueprint. Appelons celui-là. Appelons ça un contrôleur IA. Donc, au lieu du contrôleur de joueur, il y a maintenant un contrôleur IA. Et ici, disons obtenir un contrôleur ou appelons ça obtenir de l'IA. Prologue réf. Pour celui-ci, faisons une sortie, et la sortie est un ennemi AIC. C'est ce que nous appelons au contrôleur API. Appelons ça un contrôleur IA. Et maintenant, nous avons cette variable. N'oubliez pas d'entrer dans l' ennemi ici et dans le contrôleur IA. Et n'oubliez pas d'aller dans les paramètres de classe et d'ajouter cette interface Blueprint du contrôleur IA. Ici, Compile Save. Vous pouvez maintenant voir la fonction. Et ici, nous allons faire l'auto-référence. Donc, tout comme ce que nous avons fait jusqu'ici, rien de nouveau. Maintenant que nous l'avons ajouté. Nous pouvons maintenant faire une référence à ce contrôleur IA sans coûts. Donc, si je vais à la base ennemie, je peux maintenant dire obtenir aae, contrôler notre référence. Ok, maintenant, en tant que contrôleur d'air référence pour arrêter un arbre comportemental, la seule chose que vous devez faire est de prendre de cela et de prendre la composante cérébrale de cette IA. Donc, obtenir la composante cérébrale et dire : Arrêtez la logique. Maintenant, il va arrêter l'arbre comportemental. Quelle est la raison ? Je vais juste dire des coups pour la tête de l'ennemi. Ce n'est pas vraiment important pour nous ici. Donc, la tête de l'ennemi et elle va arrêter ce contrôleur IA. Ok, alors quand je clique sur Jouer maintenant et que je vais voir le joueur et j'ai touché cet ennemi. Il va frapper cet ennemi et vous pouvez voir qu'il s'arrête complètement. Il ne bougera jamais parce que j' ai arrêté l'arbre comportemental. Maintenant, vous pouvez le faire bouger après, après qu'on l'ait touché. Ce n'est donc pas complètement statique. Vous pouvez simplement copier ce mode de mouvement. Je vais retourner ici et le coller. Maintenant, il va passer de zéro à marcher. Maintenant, nous allons marcher à nouveau après que vous ayez été touché. Et rappelez-vous que nous avons fixé ce délai. Donc, quelle que soit la durée de votre animation pour l'animation d'en-tête, vous allez la retarder. Rappelez-vous, une erreur facile que je peux imaginer est ici et les ennemis des atouts. Par exemple, pour l'effet de frappe d'escargot. Rappelez-vous encore une fois, j'ai dit qu'il était très important de changer les cadres par seconde pour cet effet de chaleur, même s'il s'agit d'une seule image. Parce que si vous allez le régler sur 15, comme par défaut, ce délai sera très, très petit, donc nous n'allons même pas remarquer cette animation ici. Donc, l'envoyer à un, ce qui signifie 1 seconde. C'est donc une image par seconde. Et il va attendre 1 seconde, puis il va jouer ça. Ok, donc, on peut jouer maintenant. Maintenant, chaque fois que vous allez le toucher, il va lire l'animation de la tête , puis elle passe en mode marche. Mais pour le moment, c'est en mode marche, mais nous n'avons pas vraiment précisé qu'il devrait fonctionner à nouveau. Faisons donc cela avant de terminer cette vidéo. Et rappelez-vous, nous pouvons simplement utiliser la charge de mouvement définie ou non les états du motif. Et ici, dans la base ennemie, l'état des mouvements. Et nous allons le faire fonctionner correctement, parce que nous voulons recourir. Ok, donc ça devrait être le cas pour cette vidéo. Alors, jouons et voyons si ça marche. Maintenant, j'ai l'ennemi et il va aller dans la charge de marche. Maintenant, il va rester bloqué maintenant parce que nous ne lui avons pas dit où aller. Et c'est quelque chose sur lequel nous allons travailler dans la prochaine leçon, où nous disons à l' ennemi que vous allez réellement chasser la couche. 74. Chasser le joueur: Nous voulons donc que l'ennemi poursuive le joueur. Ainsi, lorsque l'ennemi est touché par le joueur, il va poursuivre le joueur qui l'a frappé. Alors, tout d'abord, gardons tout. Permettez-moi de fermer tout ça parce que ça devient un peu trop. Commençons par le début ici. Ici, dans l'ennemi, je veux que vous ouvriez ce contrôleur ennemi. Et ici dans les composants, cliquez ici et écrivez la détection. Vous pouvez donc voir que nous avons quelque chose qui est appelé à la détection. Cela va donc sentir notre joueur. On dirait que ça ressemble à un Skynet. C'est un peu flippant maintenant. Nous avons donc la détection des pons et ça va ressentir les points. Donc, le joueur, et la seule chose que je vais changer ici, vous pouvez voir ce qu'il peut faire. Par exemple, il peut entendre des bruits. Donc, si vous faites comme un jeu qui se faufile comme Metal Gear Solid, vous pouvez avoir cette sensation chaude du soleil, envoyer des bruits lorsque vous frappez au mur et ainsi de suite. Des trucs tellement cool. Mais la seule chose que nous allons changer ici dans l'angle de vision périphérique, je vais le mettre sur 180 pour qu'il puisse paraître 360. Compilons et économisons. C'est la seule chose que nous devions faire . Maintenant, fermons ça. Ouvrons la base ennemie. Donc ici, dans la base ennemie , quand l'ennemi est endommagé. Tout cela a été fait dans les leçons précédentes. Donc maintenant, le point se déplace à nouveau. Ce que nous voulons faire maintenant, c'est de poursuivre le joueur. Ainsi, lorsque vous commencez à bouger, vous voulez poursuivre le joueur. La chose que nous allons utiliser s'appelle AI Move vers celui-ci. Ai a déménagé. Il va donc passer au joueur. Maintenant, il va vous dire ici le point, qui bouge. C'est juste soi, c'est l'ennemi. Je vais donc m'en sortir et me dire moi même. C'est l'étang. D'accord, à quoi s'agit-il ? Il va passer au joueur. Mais nous n'avons pas vraiment de référence pour le joueur ici. Ici, vous pouvez voir instigué par, et c'est ce que je faisais les dégâts, et c'est le contrôleur. Il s'agit donc en fait de la manette du joueur. Nous pouvons l'utiliser en voiture à partir d'ici. Et cliquez dessus avec le bouton droit de la souris et dites promouvoir une variable. Je vais l'appeler manette de joueur, connectée ici. Et n'oubliez pas de répliquer ces informations pour que le client puisse également les voir. Nous avons donc maintenant la ligne de contrôle de la plaque. Nous pouvons maintenant récupérer l' étang de là. Donc, prendre la manette du joueur, rester, être contrôlé. C'est ce que vous pouvez faire en mode multijoueur. Vous avez donc la manette et vous pouvez le contrôler à partir de cette manette. Maintenant, nous avons le joueur, et maintenant vous pouvez voir obtenir l'emplacement de l'acteur. Nous avons donc maintenant l'emplacement du joueur et il va courir vers cette destination. Il va donc se diriger vers l'emplacement du joueur. Ok, qui pourchasse-t-il ? Qui est la cible ? La cible est le joueur. Il s'agit donc simplement de celui-ci. C'est le pion du joueur. Donc, nous allons juste le relier ici. Et quel est le rayon acceptable ? Quand il atteint ce rayon, il va s'arrêter parce que vous avez réussi à courir après le joueur. Je vais juste le baisser un peu, peut-être deux unités. Donc, juste un peu plus bas qu'avant. Bon, je vais déplacer ça ici. Et juste pour organiser un peu plus les choses, peut-être que celle-ci est ici et double-cliquez dessus pour qu'elle soit plus visible, quelque chose comme ça. Ok, donc très, très, très, très facile à comprendre. Donc ça va, donc cet étang se dirige vers la destination des joueurs, l'emplacement. Et c'est à la poursuite de ce joueur ici. Bon, donc je vais réussir, il faut faire quelque chose. Que devrait-il se passer chaque fois que vous atteignez le joueur ? Et c'est quelque chose que nous allons améliorer plus tard. Donc, pas vraiment en ce moment. Essayons donc de le tester. Voyons donc ici, Let's Play. Et maintenant, nous pouvons voir si je frappe, par exemple, cet ennemi et je peux courir. Vous pouvez voir maintenant qu'il m'a vraiment atteint. Et si je le refais, permettez-moi d'éliminer beaucoup de ces ennemis parce que maintenant que nous travaillons avec l' ennemi, vous le verrez. Whoops, je supprime tout ça. Vous verrez bien plus clairement ce que je travaille réellement avec un seul ennemi. Je vais donc supprimer tous ces ennemis et je vais les ajouter plus tard. Alors peut-être que j'ai juste besoin d' une personne ici juste pour tester ça, tous les deux. Et je peux cliquer sur Play. Maintenant, essayons ça. Par exemple, sur ce gros, je vais le frapper maintenant. Et il va me poursuivre pour toujours jusqu'à ce qu'il me parvienne. Des trucs très cool. Maintenant, il va se déplacer vers moi et quand il se déplacera vers moi restera immobile à me blesser. Maintenant, il ne fait rien d'autre parce que nous ne lui avons pas dit ce qu'il devrait faire quand il me parvient. Maintenant, je pourrais peut-être simplement traîner de là et continuer boucler pour toujours et peut-être que ça va me donner une erreur. Essayons de jouer ici. Si infructueux, ça peut continuer à me goûter. Donc si je frappe cet escargot ici et qu'il me poursuit et ça me frappe. Et si je m'en vais maintenant, vous pouvez voir que ça me poursuit pour toujours. Maintenant, c'est mon animal de compagnie. Ce n'est pas mon ennemi. J'ai un escargot comme animal de compagnie. Je peux avoir le cochon comme je l'ai eu. Ça va, ils vont me suivre pour toujours maintenant. D'accord ? Comme vous pouvez l'imaginer, vous pouvez également créer un système pour animaux où vous suivez simplement le joueur. Vous pouvez donc voir tous ces outils utiles pour connaître ces outils afin que nous puissions les utiliser comme vous le souhaitez. D'accord, des trucs plutôt cool. Je vais supprimer ça. Maintenant, ce que je veux faire ici, je veux le faire dans la prochaine leçon où nous améliorons la façon dont l'ennemi marche autour de lui lorsqu'il atteint le joueur. 75. Améliorer l'ennemi de la chasse au joueur: Très bien, je veux donc améliorer un peu ce code. Donc, chaque fois qu'il se déplace vers le joueur, je ne veux pas continuer à aller vers ce joueur et continuer à poursuivre le joueur. Je veux que le mouvement soit un peu aléatoire, même si ce n'est pas le cas. Ce que je veux que vous fassiez ici sur le succès, je veux utiliser un outil appelé Move Tool. Et choisissons celui-ci appelé se déplace vers le lieu ou l'acteur. Ok, donc maintenant il se déplace vers le joueur, et chaque fois qu'il atteint le joueur, il exécutera cette fonction appelée Move to Location ou Actor. Et je vais utiliser celle-ci, la dislocation ici. Décomposons donc cet endroit. Pause minute, créons un vecteur. Et cela nous permet de voir les X, Y et Z. Et maintenant, ici, dans le contrôleur, il a besoin contrôleurs IA, comme vous pouvez le voir lorsque vous placez votre souris au-dessus. Nous ne pouvons donc pas dire obtenir le contrôleur et l'ajouter ici. Il ne va pas l'accepter. Il a spécifiquement besoin du contrôleur IA. Je vais dire contrôleur IA. Et vous pouvez voir que nous avons celui-ci appelé Get AI Controller. Et qui est l'acteur contrôlé ? N'oubliez pas que nous sommes à l'intérieur de la base ennemie pour que nous puissions simplement dire soi-même comme ça. Alors, quel est le lieu ici ? Qui est-ce que je déménage aussi ? Maintenant, pour ce qui est de l'objectif, nous n'avons pas vraiment besoin de brancher quoi que ce soit parce qu'il s'agit de déplacer vers le lieu ou l'acteur. Et je vais juste utiliser l'emplacement. Quel est l'endroit où nous déménageons ? Mais je veux le faire ici, je peux vraiment vous montrer. Donc, si le joueur est ici, permettez-moi de prendre la Tsarina par exemple, afin que nous puissions mieux la visualiser . Serena est donc ici. Donc, lorsque l'ennemi atteint le joueur, je veux que l'ennemi se déplace 100 ou quelque chose du genre dans cette direction. Et puis l'ennemi retournera vers ce joueur. Et lorsque vous atteindrez à nouveau ce joueur, je veux aller 100 dans cette direction. Il continue donc de bouger comme ça. Parce qu'en ce moment, il se déplace simplement vers le joueur et il est resté comme ça. Mais je veux qu'il bouge tout le temps autour du joueur comme ça ici, donc il continue de poursuivre le joueur, mais il a un peu plus de mouvement que être coincé ici sur le joueur. Donc, si nous retournons à la base ennemie ici, alors ce que je vais vérifier quand je dois vérifier en premier, si c'est comme si cet ennemi vient de ce côté, vous devez passer de ce côté. Cependant, si l'ennemi vient de ce côté, vous devez vous déplacer de ce côté. Je dois donc vérifier de quel côté vient l' ennemi. Je dois donc prendre le joueur en premier. Je dois savoir où se trouve le joueur. Nous pouvons le faire ici. Reprends ça. En fait, je vais copier ce code ici. Nous obtenons donc le contrôle du joueur sur l'obtention des points de contrôle. Donc, le joueur, et nous obtenons l'emplacement du joueur. Je vais casser cela parce que la seule chose qui m' intéresse, c'est ce pivot rouge, qui signifie l'axe X. Je ne m'intéresse donc qu' à l'axe X. Je me fiche du Z ou du Y ici. Revenons ici. Je ne m'intéresse qu' à l'axe X. Maintenant, j'ai la position du joueur. J'ai également besoin de l'emplacement de l' ennemi. Et je peux simplement dire trouver emplacement de l' acteur parce que nous sommes déjà à l'intérieur de l'ennemi, donc la cible elle-même. Et laissez-moi aussi briser ça. Cassez ce vecteur pour que je puisse voir les X, Y et Z. Je vais donc demander c' est X, donc c'est les joueurs, x. Est-ce moins que l' emplacement de cet ennemi ? Et qu'est-ce que cela signifie, c'est l'ennemi, l'ennemi qui se tient ici ? Il va demander, souvenez-vous, ici, si vous regardez le x, si je vais dans cette direction, il sera autour de 0. Donc, ça va se trouver dans les inconvénients ici. Si je vais dans cette direction, vous pouvez voir que ça va baisser. Donc je suis, je vous demande en ce moment, c'est l'emplacement du joueur, l'emplacement x ? Est-ce moins que les ennemis ? Et maintenant c'est le cas, parce que maintenant le joueur debout ici, l'ennemi debout ici, ce X, vous pouvez voir le x ici car le joueur est inférieur à celui de l'ennemi. Cela signifie que l'ennemi vient réellement de cette direction, si c'est vrai. Que devrait-il se passer si l'atome vient de cette direction ? Et c'est quelque chose que nous devons préciser ici en ce moment. Nous pouvons donc créer une succursale ici. Et nous allons un peu plus loin ici. Nous pouvons donc créer une branche et voir si c'est vrai. Nous voulons, comme, si c'est vrai, nous voulons aussi déplacer cet ennemi. Comme moins cinq cents, cinq cents moins 100 unités. Parce que rappelez-vous quand vous atteignez le joueur et si nous disons déplacer l'emplacement, vous êtes moins 100, ce qui signifie que vous allez à moins 100 dans le X, ce qui signifie que le personnage va réellement le faire, ou le joueur de l'ennemi se déplace 100 à cet endroit parce que vous ne manquez pas ici. C'est donc ce que nous essayons de faire. Donc, nous disons ici nous disons que c'est vrai, puis prenez les ennemis x emplacement et soustrayez 100 de cela. Et maintenant, c'est le nouvel emplacement x. Y et Z, ils ne nous intéressent pas vraiment, alors nous allons simplement les brancher tels qu'ils sont. Donc maintenant, ce que nous disons, c' est que les joueurs sont, maintenant, l'emplacement x du joueur ? Est-ce moins que les ennemis ? est-à-dire l'ennemi debout ici et le joueur qui se tient ici. Si oui, c'est vrai, allez-y et déplacez cet ennemi moins le x actuellement, qui est ici, moins 100 unités. Il s'agit de notre nouvel emplacement d'objectif, ce qui signifie que vos nouveaux objectifs sont situés ici. L'ennemi va donc se déplacer d'ici à ici. OK ? C'est très, très facile à faire ici. Et l'autre chose, c'est que si c'est faux, nous devons prendre ceci et dire, alors vous allez déplacer 100 unités plus 100 unités. Parce que rappelez-vous, si c'est faux, cela signifie que l'ennemi se tient ici. Cela signifie que lorsque vous atteignez le joueur, vous voulez que votre nouvel objectif soit plus 100 et x parce que vous voulez le déplacer de cette façon. Plus 100 font 800 et quelque chose ici, d'accord ? Donc, si vous vous tenez dans l'autre sens, vous voulez plus 100. C'est donc votre nouvel objectif ici. Donc, si je les fais glisser ici, donc le x, le y et le z, nous ne nous soucions pas vraiment. Ce n'est que le x que nous ajustons. Et ce sera notre nouvel objectif. Mais au lieu de copier ce code, maintenant, si vous vous voyez faire cela, comme vous pouvez le voir, il suffit copier le code de collage et ils se ressemblent 100% à l' exception d'une seule valeur. Vous pouvez en fait améliorer un peu votre code. Vous pouvez effectuer une opération appelée « Select load ». Donc, ce que vous pouvez faire ici, c'est au lieu de faire cette branche et de faire comme ça, vous pouvez voir qu'il s'agit du même code et que c' en fait une mauvaise pratique de codage parce que vous copiez simplement du code, ce qui est presque le même. Il peut donc le faire un peu mieux. Donc, au lieu d'ici, vous pouvez le faire, laissez-moi déconnecter ça. Et ici, maintenant, nous ajoutons ou soustrayons 100 de cela. Nous pouvons en tirer parti et dire sélectionner et utiliser celui-ci appelé Select Load. Et maintenant ce booléen, connectons-le ici à la place. Donc maintenant, il va dire que c'est l'emplacement du joueur, cet emplacement x moins que celui de l'ennemi. Si c'est vrai, encore une fois, si c'est vrai, nous devons soustraire. Donc, au lieu de simplement les faire, nous pouvons simplement dire moins, je vais dire un moins 125. Je pense que j'ai testé avec ce numéro. Je pense que c'est le meilleur. Et si ce n'est pas vrai, ce qui signifie que l'ennemi est ici, nous voulons en ajouter 125. Vous pouvez donc voir ici que nous n'avons pas vraiment besoin de faire tout ce copier-coller. Maintenant, il va le faire automatiquement pour nous, donc nous n'avons pas besoin de copier, coller le même code. Il va sélectionner, Jetez un coup d'œil à ceci si c'est vrai ou faux. Et il va faire ce numéro, comme si c'était moins ou plus ce nombre. Et nous ne pouvons pas vraiment ajouter, comme si nous ne pouvions pas simplement le connecter directement ici parce qu'il va le régler sur ces chiffres. Ce que nous devons faire, c'est prendre cette valeur x et nous devons ajouter ce nombre en plus de celle-ci. Nous devons donc ajouter ce numéro ici. Par exemple, supposons que le x est actuellement 600 pour l'ennemi. Ensuite, si c'est vrai ici, ça va dire 600 plus moins, ce qui signifie seulement moins 600 moins 125. Et il va définir cela comme le nouvel emplacement x. Si l'ennemi ici, si cela devient faux, c'était vrai et c'était faux. Il est écrit 600 plus 127, puis il va se déplacer à cet endroit. est bien mieux de le faire que de copier du code. Donc, lorsque vous vous voyez copier-coller du code, il y a probablement une meilleure façon de le faire. Encore une fois, vous êtes les bienvenus pour aller à ma Discorde. Je suis prêt à vous aider avec toutes ces choses. C'est bien d'avoir toutes ces bonnes pratiques pour le codage. Donc ça ne vous plaît pas, il est donc bon de rester propre comme ça. Très bien, nous pouvons donc réellement supprimer cette branche. Nous n'en avons plus vraiment besoin. Alors, essayons de le tester. Donc maintenant, nous devons faire quelque chose parce que lorsque vous déménagez à cet endroit, nous devons répéter le mouvement ici et bouger terminé. Faites glisser ce stylo et répétons cela. J'ai déménagé ici. Je vais double-cliquer sur cette épingle réacheminer les nœuds. En fait, faites-le paraître un peu plus propre, donc il n'est pas confus ressembler à quelque chose comme ça. Compilons et sauvegardons maintenant, jouons et voyons ce qui se passe si nous avons oublié quelque chose. Encore une fois, j'y vais ici. Et permettez-moi de supprimer ce joueur, le joueur ici, rejouer. Donc, comme Luke va frapper ce clou. Il va se déplacer vers moi. Quand il m'atteindra, il va se déplacer 125 à cet endroit quand il m' arrivera à nouveau, 125. Vous pouvez voir que c'est le mouvement que nous avons ajouté et c'est phi, faites-le glisser à nouveau ici. Donc, quand il me parviendra, il va se déplacer soit moins 125 vers les balises de localisation X actuelles sont plus 125. Il va se déplacer à cet endroit lorsque le film sera terminé, il va répéter ce mouvement, ce qui signifie quand il est debout, par exemple, si je retourne au jeu, quand debout ici, il va ensuite me poursuivre à nouveau. Et quand il me parviendra à nouveau, il va répéter ce code. Il se passe donc tout le temps dans ce mouvement circulaire. Et je pense que c'est un peu plus fluide de faire ce mouvement comme celui-ci parce que maintenant, quand je m'éloigne, encore une fois, il va me poursuivre. Donc, tout fonctionne correctement. Poursuivez-moi maintenant quand il m'atteindra, il va aller 125 dans cette direction. 125 dans cette direction. 125 vers cette direction continue et va me poursuivre à nouveau si je m'en vais. mouvement très cool et on peut essayer ça avec le cochon ici. Vous pouvez voir ce cochon bouger comme l'animation d'attaque de cochon. En fait, ça fonctionne très bien. OK. Il va donc me poursuivre maintenant. Et ils continuent de me faire face et maintenant ils vont 125 dans cette direction. Et il y a comme s'il y avait un petit bug avec celui-ci, il se peut que nous ayons besoin de réparer la collision de rampe ici. C'est probablement une collision avec la statique ici. Donc, ce que vous pouvez faire ici dans la base, vous pouvez cliquer sur la collision, pouvez simplement ignorer tout sauf le Po1 et le client étant des joueurs. Il suffit donc de les déplacer du chevauchement parce que nous n'avons pas vraiment besoin de chevaucher quoi que ce soit ici pour cette collision. Et pour cette capsule. Nous ne pouvons pas vraiment le faire car maintenant, ils vont tomber du sol. Probablement. Vous pouvez voir qu'il n'y a pas d'ennemis parce qu'ils tombent à travers le sol. Il faut donc l' avoir dans la capsule. Donc, en cliquant sur la pièce maintenant, voyons que c'est l' escargot, le cochon ici. Bon, et déplacons cet endroit. Oups, je ne l'ai pas frappé. Ok, je pense que ça marche maintenant, donc maintenant ils ne s' embêtent pas ici sur la rampe. Très cool. Nous avons maintenant un mouvement d'IA très simple et très simple. Et il a l'air très cool, a l'air aléatoire aussi, même s'il s'agit d'un code très, très simple. Il semble donc aléatoire, même s'il n'est pas lié au hasard. Des trucs très cool que nous avons faits ici. Et oui, c'était tout pour cette vidéo. J'espère que vous vous êtes amusé. Je me suis amusé à créer ça et passons au suivant. 76. Appliquer des dommages dans l'ennemi: Ok, donc maintenant nous sommes prêts à faire subir les dégâts à l'ennemi, car jusqu'à présent, il n'y a que le joueur qui inflige ces dégâts ici. Donc, seul le joueur fait les dégâts. Nous avons également besoin que l'ennemi inflige des dégâts au joueur. Et pour faire ces dégâts, nous ne voulons pas vraiment le coder ici sur dégâts, car nous voulons que l'ennemi applique les dégâts même s'ils ne sont touchés par personne. Donc, si le joueur entre dans l'ennemi, même si le joueur ne l' a pas touché, peut quand même infliger des dégâts. Nous allons donc simplement créer un événement distinct ici appelé Start Applied Damage. Et nous voudrons le faire tout de suite chaque fois qu'ils apparaîtront dans le niveau. Bon, revenons aux interfaces et dans la base ennemie, laissez-moi créer une nouvelle fonction qui va tout démarrer. Et appelons que ça commence les dégâts appliqués. Et faisons simplement un booléen où nous disons les dégâts appliqués et cela peut être vrai ou faux. Oui, c'est tout pour l'instant. Compilons, sauvegardons et revenons à la base ennemie. Et ce que nous pouvons dire ici, c'est que nous pouvons cliquer avec le bouton droit de la souris et dire commencer, appliquer des dégâts, et nous pouvons appeler cet événement ici. Maintenant, celui-ci va encore passer par le serveur s' assurer que ce n'est pas le client qui ne triche pas. Ainsi, le serveur commence à appliquer des dommages. Habituellement, je les appelle simplement le même nom que les événements normaux et je cours sur le serveur. Fiable. Et maintenant ce booléen ici, nous devons l'ajouter évidemment à nouveau, être appliqué des dégâts. Maintenant, nous pouvons dire, nous pouvons écrire une branche ici et dire si c' est vrai ou faux. Et avec cela, nous voulons faire quelque chose. Nous voulons donc commencer à appliquer les dégâts chaque fois que c'est vrai et que c'est faux, nous ne voulons plus appliquer de dégâts. Et quand le définissons-nous sur vrai ou faux ? Alors laissez-moi simplement exécuter cette fonction serveur ici d'abord, démarrez des dommages légers ici et connecté. Alors, quand voulons-nous appliquer les dégâts ? Nous voulons appliquer les dégâts chaque fois que le joueur entre en collision avec l'ennemi. Donc, lorsque le joueur, si je retourne vers l'ennemi, si je retourne à un escargot, lorsque l'ennemi collision avec cette petite boîte de collision ici, nous voulons commencer à infliger des dégâts au joueur. Avant cela, nous ne voulons pas vraiment appliquer de dommages. N'oubliez pas que nous optimisons notre code, sorte que nous ne voulons pas appliquer les dégâts 24 heures sur sept, je ne veux appliquer des dégâts que lorsque le joueur interagit avec l'ennemi. Je vais à la base ennemie ici et je vais à la fenêtre d'affichage, en cliquant sur cette collision, descendant en bas puis en cliquant sur n composant commence à se chevaucher. Donc, au début d'un laboratoire, ce que nous avons fait comme auparavant, nous voulons l'exécuter via switch a l'autorité de nous assurer que c' est le serveur qui exécute cet événement. Et encore une fois, je veux en faire un nouveau, cette fois, que nous puissions le faire en même temps. Je vais vérifier si ce qui se chevauche, c'est le joueur. Encore une fois, l'acteur a marqué calque. Nous savons, nous savons que le joueur a le joueur technologique et nous pouvons faire un brunch maintenant. Je ne pense pas l'avoir encore expliqué, mais vous pouvez aussi créer une branche si vous tenez simplement, maintenez B sur votre clavier et cliquez sur, vous pouvez également créer des branches. raccourci tellement cool que vous pouvez faire. Donc, si le tag est un joueur ici pour cet acteur, nous allons infliger des dégâts et nous sommes simplement intéressés à organiser cet événement ici. Il commence donc à causer des dégâts ici dans la base ennemie. Et nous allons mettre cela en place. Maintenant, lorsque nous terminons le chevauchement, où vous voulez simplement copier tout ce code et nous voulons cesser d'appliquer les dégâts. C'est ainsi que vous l'optimisez. Maintenant, pour les dégâts appliqués, ce que je veux faire, c'est que je veux appliquer continuellement des dégâts. Je vais vous montrer pourquoi je vous montre pas pourquoi je peux l' expliquer très rapidement. Donc, si le joueur est en train de prendre le joueur, pas l'escargot. Donc, si le joueur se tient à l'intérieur de cet ennemi ici, sous le joueur, je me promène dans l'ennemi. Je suis touché. Je perds ma santé. Mais si je reste en sécurité à l'intérieur de cette sphère et que je ne finis jamais à me chevaucher. Même si je reste debout pendant dix secondes, je ne vais pas infliger de dégâts car à la fin et commencer à se chevaucher, vous allez infliger des dégâts. Mais n'oubliez pas que cet événement n'est exécuté qu'une seule fois, car il n' est exécuté que lorsque vous commencez à se chevaucher. Et cela va être exécuté une fois parce que cela le fera, cet événement sera organisé une fois. Et c'est à ce moment que vous commencez à chevaucher l'ennemi. Mais nous voulons ajouter continuellement des dégâts à ce joueur si vous ne vous éloignez pas de cet ennemi. Comme si cela vous infligeait des dégâts toutes les deux secondes si vous restez immobile à l'intérieur de cet ennemi. Nous voulons vérifier tout le temps si le joueur est réellement debout ici et que nous voulons infliger des dégâts. Donc, nous sommes déjà en train de vérifier si le joueur est dans cette boîte ici parce que nous commençons à infliger des dégâts chaque fois que le joueur est à l'intérieur de cette collision et que nous Arrêtez d'appliquer des dégâts ici. Rappelez-vous, encore une fois, peut-être que vous l'avez déjà deviné lorsque vous voulez appliquer des dégâts en continu, donc le mot continuellement, vous devez utiliser un minuteur. Donc, comme ce que nous avons fait avant. Réglez donc la minuterie par événement ici. Nous allons conduire d'ici et en faire des événements personnalisés. Appelons ça des dégâts appliqués. Nous avons ces événements personnalisés et nous voulons infliger des dégâts. Les dégâts que nous voulons appliquer. Faisons du bouclage et je vais vérifier toutes les 0,12 heures. Cela signifie donc que vous infligez des dégâts dix fois par seconde. Et cela aura du sens plus tard, comme si nous allions réduire cela. Mais ce que nous voulons faire, allons le déplacer ici. que nous voulons faire, c'est de voir des acteurs qui se chevauchent. Nous sommes donc intéressés à obtenir toute la base de joueurs. Donc, en obtenant tous les joueurs qui se chevauchent, nous voulons leur infliger des dégâts à tous. Et sortons de ça et disons pour chacun. Cette méthode, si nous l'avons déjà fait du joueur aux ennemis, elle est maintenant dans la direction opposée. Maintenant, ce sont les ennemis qui infligent des dégâts aux joueurs. Assurez-vous simplement que la base de joueurs sélectionnée ici et non pas une base ennemie ou autre chose. Alors, pour chacun de ces joueurs, que voulons-nous faire ? Maintenant ? Vous pouvez également vérifier la longueur si elle est égale à 0, mais cela n'a pas vraiment sens, car vous vérifiez déjà de sens, car vous vérifiez déjà si les joueurs se tiennent ici ou non. Donc, pour chacun de ces joueurs qui se trouvent à l'intérieur de la boîte de collision. Encore une fois, nous voulons en sortir et dire Appliquer des dégâts. Maintenant, à qui dois-je infliger des dommages ? L'acteur endommagé ? C'est le joueur. C' est juste ce type ici. Et nous devons préciser combien de dégâts chaque mélange ennemi est endommagé. Nous devons donc revenir à la structure de l'information sur les animaux. Et ici, nous devons ajouter une nouvelle variable appelée « dégâts ». Permettez-moi de le faire glisser au-dessus d'ici, dessous de la santé, et laissez-moi le changer en flotteur. Sauvez ici et la base ennemie maintenant, nous pouvons compiler et sauvegarder. Maintenant, nous pouvons aller vers les ennemis. Donc, chez le cochon ici, on peut infliger un seul dommage. Cliquons donc sur les valeurs par défaut de la classe, allez à l'information sur les animaux. Et donc ces dégâts, par exemple, les cochons font 15 dégâts. Ou peut-être, disons peut-être 20 dégâts pour les cochons et ici pour les escargots. Si nous revenons à la classe pour les escargots, peut-être qu'ils le font, disons qu'ils font dix dégâts. Compilons et économisons. Bon, donc maintenant ils font dix dégâts, le cochon fait 20 dégâts, donc deux fois plus de dégâts. Et ici, ce que nous pouvons faire, c'est prendre les informations sur les animaux , les briser et prendre les dégâts ajoutés ici. Et maintenant, c'est dynamique. Donc, quel que soit l'ennemi, ils vont faire leurs dégâts. Alors, quel est le contrôleur responsable de ces dommages ? Nous sommes donc à l'intérieur de la base ennemie, donc nous avons juste besoin du contrôleur de cet ennemi. Encore une fois, vous pouvez faire glisser et dire obtenir le contrôleur. Et c'est tout pour la liste des types de dégâts change en type de dommage ici. Et c'est tout ce dont nous avons besoin ici. Maintenant, nous appliquons des dégâts à ce joueur. Maintenant, plus tard, nous allons ajouter un mode dieu afin que le joueur ne soit pas endommagé dix fois par seconde, car c'est essentiellement ce qui se passe actuellement. Le joueur est endommagé dix fois par seconde. Mais nous allons ajouter le mode Dieu plus tard. Il y a donc une période pendant laquelle le joueur ne sera pas endommagé. Mais pour l'instant, c'est tout ce que nous avions à faire. Passons à la leçon suivante. 77. Les joueurs qui reçoivent des dégâts: Très bien, nous devons maintenant coder le joueur qui reçoit les dégâts de l'ennemi. Revenons maintenant à la base de joueurs et passons au graphique des événements. Je vais faire glisser le graphique des événements ici et cliquer avec le bouton droit de la souris et dire fermer les onglets à droite. Nous n'avons donc que cela ouvert maintenant. Maintenant, nous n'avons que l'attaque, et maintenant nous devons faire des dégâts à l'intérieur d'ici. Cliquons avec le bouton droit de la souris et infligeons des dégâts. Nous avons maintenant cet événement. Donc, comme dans l'ennemi Ici, dans tous les dégâts, nous devons soustraire la santé du joueur. Et je ne suis pas sûr que nous ayons fait ça. Je ne m'en souviens pas. Passons donc à la structure et au lieu des informations sur les joueurs, et nous ne l'avons pas fait. Ainsi, dans les informations du joueur, vous devez ajouter une nouvelle variable appelée Health. Celui-là que vous pouvez prendre, vous pouvez en faire un flotteur, le déplacer vers le haut. Je vais le déplacer au sommet. En fait, enregistrez ici et la base de joueurs que vous devez compiler et enregistrer par défaut pour les joueurs. Je vais juste cliquer ici, ils ont tous la même santé. Je vais donc juste mettre une valeur par défaut pour tous. Par exemple, pour la santé, faisons quelque chose comme 70. Je ne sais pas, c'est juste un nombre aléatoire. Donc, juste 70 ans. Compilons et économisons maintenant. Et pour les informations fractionnées, nous pouvons maintenant la prendre et la casser à nouveau. Et ce que nous voulons faire, je vais tout cacher et montrer la santé. C'est la seule chose qui m' intéresse en ce moment. Je vais donc prendre la santé du joueur, soustraire, soustraire, soustraire, soustraire les dégâts. Par exemple, cet escargot va faire dix dégâts. Il va donc dire ici, peu importe ce que nous avons prévu. Donc, 17 moins dix vont avoir 60 ans ici. Il s'agit donc de la nouvelle santé, comme avant, nous devons définir la santé ici. Par conséquent, en faisant glisser depuis cette structure, nous devons écrire ensemble, sélectionner les membres de l'ensemble. Ce que nous voulons mettre à jour à l'intérieur de cette structure, nous devons mettre à jour les variables de santé. Je vais le sélectionner ici à droite, le mettre ici. Il s'agit donc de la nouvelle valeur. Et comme avant, avant de refaire ça, fixons cette valeur pour qu' elle ne passe jamais en dessous de 0. Cliquons avec le bouton droit de la souris et disons monter et sélectionner celui-ci appelé charges de serrage. La valeur minimale est donc 0. En fait, permettez-moi de me connecter à la valeur ici. La valeur minimale est 0. Et la valeur maximale. Maintenant, vous ne pouvez pas simplement entrer ici et connecter ça parce qu'en ce moment, ça va vraiment le faire. Donc, ce que vous pouvez faire pour ce maximum, encore une fois, vous pouvez faire glisser de cette santé et vous connecter ici. C'est donc la santé maximale. Ensuite, vous pouvez le connecter à l'intérieur d' ici et simplement les connecter. Je vais faire glisser ça vers le bas , me laisser avancer un peu et faire glisser ça vers le bas comme ça. Il va donc limiter la valeur et faire de votre mieux pour la rendre aussi propre que possible. Parfois, c'est un peu difficile en fait, et quelque chose comme ça. D'accord ? Donc, quelque chose comme ça. Nous fixons la valeur maintenant, assurant qu'elle ne descend pas en dessous de 0. Et encore une fois, vous devez définir ici dans la structure extérieure, vous devez redéfinir cette structure d'informations du lecteur et la répliquer. Ainsi, le client peut également le voir simplement pour s'assurer que les informations ne sont pas bogues. Et maintenant, le joueur reçoit ces dégâts. Encore une fois, vous pouvez l' imprimer à l'écran car nous n' avons pas d'interface utilisateur pour le moment, nous le ferons plus tard. Mais vous pouvez briser cette structure et ajouter la santé ici pour que nous puissions afficher cette nouvelle santé. Vous pouvez l'imprimer à l'écran et voir s'il fonctionne. Je vais donc jouer ce joueur, je vais entrer dans l'ennemi. Vous pouvez voir que ça m'abîme et ça va me blesser dix fois par seconde. N'oubliez pas que nous avons cette minuterie sur l'ennemi indiquant que vous infligez des dégâts de 0,1 seconde. Donc dix fois par seconde. Vous pouvez voir qu'il ne va jamais en dessous de 0, donc c'est exact. Il s'arrête toujours chaque fois que je n'entre plus en collision. Mais vous pouvez voir que nous avons peut-être un petit problème ici parce que quand il entre en collision avec ma collision d'attaque, ça m'inflige des dégâts. Et je ne veux pas faire ça. Je veux seulement infliger des dégâts à mon personnage, donc nous devons remédier à cela. Ok, donc j'ai joué avec les collisions et juste pour vous faire gagner un peu de temps. Ici, dans la base des joueurs, dans la capsule, j'ai essayé de faire vos collisions comme les miennes. Donc, juste pour l'expliquer un peu afin que nous puissions le comprendre également. générons donc des événements de chevauchement. Ici. La seule chose que cette capsule est quatre, donc c'est la capsule du joueur. Nous voulons simplement infliger des dégâts au joueur. Et rappelez-vous que lorsque vous allez vers l'ennemi et que vous cliquez sur cette boîte de collision, c'est la boîte qui doit nous infliger des dégâts. Vous pouvez également voir cette case si vous cliquez dessus et que vous cliquez sur Masquer dans le jeu et que vous la supprimez pour pouvoir la voir dans le jeu. Donc, si vous cliquez sur Jouer maintenant, vous pouvez voir cette boîte autour de l'ennemi et c'est la boîte qui va nous infliger des dégâts. Donc cette boîte ici, rappelez-vous, cette boîte, si vous allez à la collision, c'est une dynamique mondiale. C'est donc la chose la plus importante avec laquelle nous devons nous chevaucher. Ce n'est pas ****, donc la capsule est ****. Mais celui-ci est une dynamique mondiale. Donc, en allant à une base de joueurs, nous devons bloquer le monde. Dynamique. Blocage, ce qui signifie que je veux aimer interagir avec elle. Cela ne veut pas dire, cela ne veut pas dire que nous ignorons cela, ignorer cela sur un bloc si je veux réellement créer un événement à partir de cela. Nous allons donc bloquer la dynamique mondiale, ce qui signifie que nous allons interagir avec elle, ainsi que le monde statique, car la statique est, est-ce ces tuiles sont au sol et si vous supprimez cela, vous allez tomber à travers le sol. Tout ce que nous pouvons vraiment ignorer, si distractible, donc nous n'avons pas de véhicules, corps physiques, d'autres poèmes. Nous n'avons pas vraiment besoin d'interagir avec d'autres pons ici pour le moment. Je crois que c'est dingue. Parce que les dégâts proviennent réellement de cette dynamique mondiale. Pas vraiment la capsule des ennemis. C'était la capsule des ennemis alors, exact, il ne faut pas ignorer l'étang. Mais à l'heure actuelle, elle vient de cette collision, qui est une dynamique mondiale. C'est pourquoi j' ignore tout et je ne garde que ces deux-là. Maintenant, pour cela, nous ne générons aucun événement de chevauchement. Allons donc sauter celui-ci. Pour l'attaque. C'est une dynamique mondiale et nous ignorons tout, car la seule chose que nous utilisons cette boîte d'attaque est de faire des dégâts à l'ennemi. Et nous voulons faire des dégâts chaque fois que cette boîte interagit avec cette petite collision. Et rappelez-vous encore une fois que c'est une dynamique mondiale. Nous voulons donc interagir comme lorsque nous chevauchons la dynamique mondiale, nous voulons appliquer des dégâts, qui est l'ennemi ici. L'ennemi est une collision. C'est donc logique. Allons voir l'ennemi maintenant. Donc, la capsule des ennemis, nous bloquons tout, mais nous chevauchons les pons et le client étant des couches. Et passons à la collision. Ici. Tout est dynamique. En fait, nous ignorons tout sauf ****. Parce que la façon dont l'ennemi **** inflige les dégâts consiste à entrer dans le joueur. Et en fait, il ne va pas entrer dans cette boîte d'attaque ici. Il entre dans notre capsule et notre capsule est là. Et c'est pourquoi j'ai besoin ici, dans l'ennemi, de chevaucher la réponse à la collision sur pion. Il est donc très important de jeter un coup d'œil à toutes les collisions. De quel type d'objet s'agit-il ? Si c'était un pion, je devais aller ici et me chevaucher avec un pion. Et si c'était le cas, disons que c'était un joueur de choline et que je voulais faire des dégâts, alors j'ai dû aller de l'avant et me chevaucher avec un joueur d'escalade. J'ai essayé de jeter un coup d'oeil là-dessus, j'ai essayé de jouer et voir comment ça marche. Donc, nous allons tout sauver. Maintenant. Cliquons sur Play. Jouons à ce joueur. Si vous interagissez avec ma boîte ici, je ne subis aucun dommage. C'est bon pour vous. Interagissez avec moi. Je subis des dégâts parce qu'il interagit avec ma capsule ici. Et ici. Si, maintenant, vous pouvez voir si je ne reviens qu'à mon attaque, à mon attaque, à une collision, elle n'inflige pas de dégâts à moins qu'elle ne me rentre réellement. Cela fonctionne donc comme prévu. Maintenant, ce code pour le joueur recevant les dégâts fonctionne également. Supprimons donc cela pour l'instant. Maintenant que nous l'avons fait, nous ne voulons pas vraiment infliger des dégâts tout le temps. Créons donc une sorte de mode dieu dans la prochaine leçon. 78. Mode Dieu du joueur: Bon, alors ajoutons un mode dieu pour le joueur. Allons maintenant dans la base de joueurs. Faisons une nouvelle variable appelée mode Dieu. Soyez donc en mode Dieu, et c'est juste un booléen que nous pouvons utiliser ici. Nous avons ce mode booléen appelé Dieu, et nous voulons définir ce mode Dieu chaque fois que nous gagnons des dégâts ici. Donc, juste avant de calculer tout cela, je voulais juste prendre mon mode Dieu variable et je veux le définir sur vrai, car maintenant nous sommes en mode Dieu. Nous ne voulons pas être endommagés comme ça. Et n'oubliez pas de reproduire cela sur le client. Vous pouvez donc voir que vous êtes dans l'état du mode dieu. Donc, pour le mode dieu ici, nous devons le définir sur vrai, mais nous devons le définir sur faux à un moment donné. Et il faut prévoir une sorte de durée. Nous allons donc créer une nouvelle variable appelée temps en mode garde. Et changeons ça par un flotteur. Compilons et économisons. Pour le guide, heure de la Chine. Je vais le régler sur 1,5 seconde pour que l'ennemi ne puisse pas m'endommager pendant les 1,5 secondes suivantes. Je vais prendre ça et dire un retard comme ça. Et je vais juste fixer un délai après avoir calculé mon état de santé. Et puis, ici, je vais définir mon mode Dieu pour qu'il soit faux. Ok, donc maintenant nous sommes assis à vrai quand nous subissons des dégâts et après 1,5 seconde, nous le réglons sur faux. Bon, donc, revenons à l'ennemi maintenant. Et ici, vous devez vraiment le vérifier en tant que booléen. Parce que maintenant, nous n'appliquons des dégâts dix fois par seconde. Mais au lieu de cela, vous allez ici. Vous faites un, obtenez des acteurs qui se chevauchent et vous gagnez tous les joueurs. Maintenant, pour chacun de ces joueurs, vous devez vérifier si le joueur est en mode Dieu. Donc, en prenant ceci et en disant, tout d'abord, il est évident que vous devez spécifier communiquer avec ce joueur, la base de joueurs. Nous devons donc dire Get layer REF, celui que nous fabriquons il y a longtemps. Connectons-le car laissez-moi déconnecter ça pour l'instant afin que nous puissions voir ce que nous faisons. Donc maintenant, nous prenons cela et disons le mode Dieu. Nous obtenons donc cette variable de mode Dieu. Et ce n'est que lorsque le mode dieu n'est pas vrai que nous pouvons faire des dégâts. On peut donc dire « dingue », booléen. Donc, si le mode Dieu est faux, si nous ne sommes pas en mode Dieu, créons une branche. Si nous ne sommes pas en mode Dieu, nous pouvons aller de l'avant et infliger des dégâts comme celui-ci. Cependant, si nous sommes en mode Dieu, n'appliquez pas de dégâts, ne faites rien. C'est donc tout le code du mode Dieu. Encore une fois, très puissant pour utiliser des booléens comme celui-ci. Et oui, donc maintenant, il faut relier ça à nouveau. Qui est l'acteur endommagé ? Vous pouvez simplement le faire glisser ici depuis ce lecteur. Vous n'êtes pas obligé de le faire à partir d'ici maintenant. Vous pouvez simplement le faire à partir d'ici. C'est un peu plus propre maintenant. Essayons maintenant de le tester et de le voir. Et je crois que nous avons supprimé notre chaîne d'impression. Laissez-moi, en fait, nous pouvons simplement imprimer une ficelle ici. Alors imprimez la ficelle et imprimez-la ici. En fait. On va d'abord le casser. Prenons la santé et imprimons ça. Donc, juste avant le retard, je vais juste imprimer. Et puis je vais prendre ce retard, revenir à cette chaîne d'impression, revenir à ce retard ici. Je vais donc imprimer cette valeur avant de retarder. Voyons ce qu'il fait. Cliquons donc sur Play. Je rentre dans l'ennemi, j'ai 60 points de dégâts. Et seulement après 1,5 seconde après le mode jardin, je suis de nouveau attaqué. Ce code fonctionne maintenant. Génial. Supprimons cela et reconnectons-le. Ok, donc maintenant nous avons ajouté la fonctionnalité God Mode au jeu. 79. Appuyez sur les effets de joueur: Nous devons donc maintenant ajouter un effet clignotant lorsque le joueur est touché. Par conséquent, ici, dans la base de joueurs nous sommes de nouveau à l'intérieur d'ici, nous devons faire une sorte d' effet endommagé pour l'effet clignotant. Allons donc ici et créons de nouveaux événements. Nous devons maintenant entrer dans notre interface Blueprint, mais je ne suis pas sûr des variables avec lesquelles je dois travailler pour le moment. allons donc simplement en faire une variable personnalisée ou des événements personnalisés et nous pourrons simplement le transformer en interface Blueprint plus tard. Je vais appeler ça des effets visuels endommagés, ce qui signifie des effets visuels. Et je suis comme pour cette vidéo, nous allons juste faire clignoter le joueur lorsque vous subissez des dégâts de la part de l'ennemi. Et évidemment encore une fois, nous devons exécuter via le serveur pour nous assurer que le client fait ce qu'il est autorisé à faire. Je vais l'exécuter sur le serveur fiable et je vais appeler le serveur ici appelé VFX endommagé. Ok, et ici, maintenant, cet effet de dommage, jusqu'à présent, nous avons utilisé les variables Rep Notify. Mais je vais m'en souvenir ici pour le saut. Donc, si je monte pour le saut, on a utilisé une multidiffusion. Et si vous ne vous en souvenez pas, c'est il y a longtemps que nous l'avons utilisé. Une multidiffusion fait la même chose qu'un représentant notifie. Donc, montrer toutes ces informations au client. Mais la multidiffusion ne coûtera cette information qu'aux joueurs déjà connectés ou aux joueurs proches de vous. C'est donc un joueur qui se tient très loin de vous ne verra pas ce que fait la multidiffusion. Cela peut être utilisé pour un effet de dommage, car vous clignez des yeux pendant deux secondes ou n' importe où, combien de temps cela dure. Et puis cet effet clignotant va disparaître. Cela n'a donc pas vraiment d'importance pour les joueurs qui se trouvent à dix kilomètres de vous ou ceux qui ne sont pas encore connectés. Il est normal qu'ils ne voient pas ce changement car c'est juste un effet clignotant et vous reviendrez à la normale. Faisons donc un événement personnalisé appelé VFX de dégâts de multidiffusion. Et lançons ça sur le serveur. Fiable, réel, pas sur le serveur. Allons-le en multidiffusion. Fiable. Et la multidiffusion nous allons l'exécuter via le serveur. Encore une fois, n'oubliez pas qu'une multidiffusion, vous ne pouvez l'exécuter nulle part ailleurs que depuis le serveur. Appelons ça ici les effets V endommagés par MC. Vous ne pouvez pas, vous ne pouvez pas appeler celui-ci ici. Cela ne fonctionne pas car il ne s' agit pas du serveur. Il s'agit à la fois du serveur et du client. Donc, en descendant ici, en mettant cette multidiffusion ici à travers le serveur. Maintenant, la multidiffusion va faire cela, cet effet clignotant. Donc, pour l' effet clignotant, très simple. Commençons à travailler avec elle. Prenons ce sprite. Et quand il veut le faire, c'est ici sur le sprite, on veut changer cette couleur. Si vous cliquez sur la couleur du sprite, vous souhaitez modifier cet alpha, qui rend votre personnage transparent. Si j'annule ici, si je clique sur l'un de mes personnages. Donc, si je clique sur Tsarina et que je vais aux fenêtres, ici, je clique sur elle, et je clique sur la couleur du sprite. Et puis je baisse le volume. Vous pouvez voir ici que le joueur reçoit pas le volume, l'Alpha, désolé, mon mauvais. L'alphabet ici, vous pouvez voir que le joueur devient invisible. Le problème, c'est que le joueur passe de complètement visible à complètement invisible. n'y a donc pas d'entre-deux et nous en avons besoin. Et ce qui en est à l' origine, c'est cause de ce matériau masqué, non éclairé, un matériau de sprite. Nous devons en fait changer cela. Essayons donc de le changer ici aussi. Je peux donc vous montrer quand vous cliquez dessus, vous ne pouvez rien voir. Et c'est parce que vous devez cliquer ici sur ces paramètres. Ensuite, vous devez cliquer sur Afficher le contenu du développeur, afficher le contenu du moteur et afficher le contenu de connexion. Par conséquent, en cliquant sur Afficher les trois, vous pouvez voir ces dossiers apparaître. Nous n'avons pas vraiment besoin de les utiliser. Mais maintenant, si vous allez à Serena et coloriez ici, vous pouvez voir maintenant que vous pouvez voir beaucoup plus de matériaux si vous avez raison, non éclairé. Parce que nous travaillons avec Pixel Lot, donc nous ne sommes intéressés que par le non-éclairage. Utilisez celui-ci appelé translucidité, ou matériau de sprite non éclairé translucide au lieu de masques. J'ai choisi celui-là. Vous pouvez voir maintenant que lorsque je clique sur cette couleur vive et que je retire mon alpha vers le bas, il y aura une valeur intermédiaire, donc elle ne deviendra pas directement invisible à visible. Il y a en fait un niveau intermédiaire ici, et nous pouvons faire monter et descendre cet effet clignotant comme celui-ci, le joueur est endommagé. Bon, remettons-le à un et laissez-moi cliquer sur cette flèche pour revenir à la valeur par défaut. Je veux juste revenir à mon masque car il s' agit du masque par défaut. Nous allons modifier cela par le code. Je retourne donc voir mon joueur ici. Nous devons donc d'abord changer le matériau. Donc, allez ici, voir le matériel de jeu, le sélectionner ici. Maintenant. Spécifiez de quel matériau s'agit-il. Maintenant, nous ne voulons pas, encore une fois, le changer directement par ici. N'oubliez pas que nous sommes dans la multidiffusion et j'aime ou non que je doive prendre toutes mes variables à l'événement très basique ici. Donc, ce matériau, vous pouvez le faire glisser et le mettre ici. Vous pouvez continuer à l'ajouter à vos événements. Et c'est le principal événement qui va l'organiser, qui est ici. Parce que chaque fois que vous subissez des dégâts ici, nous appellerons nos dégâts les effets. Et vous allez le diriger ici. Et c'est ici que vous sélectionnez le matériau. Et nous voulons choisir celui qui s'appelle la translucence. Et descendez en bas, matériau de sprite non éclairé translucide. Assurez-vous que celui qui n'est pas éclairé. Ok, donc maintenant nous avons changé notre matériel, d'accord, et maintenant ? Nous voulons maintenant changer l'Alpha, mais nous voulons créer un effet clignotant. Et cela se fait à l'aide d'un minuteur. Nous pouvons utiliser une minuterie à nouveau pour ce faire. Donc, réglez la minuterie par événements. Fais-en un ici. Et il va faire une boucle quelques fois. Et combien de temps, combien de temps va-t-il faire une boucle ? Et j'ai trouvé un bon moyen de le faire pour que nous puissions prendre le mode dieu ici. Rappelez-vous que le mode Dieu est de 1,52. Donc, si vous mettez ici, cela ne fera que cet effet clignotant toutes les 1,5 secondes. Et je pense que c'est que j'ai besoin de le rendre beaucoup plus rapide. Je dois donc diviser ce numéro. J'ai trouvé le chemin, comme si le meilleur numéro était 16. Il va donc faire ça comme diviser cela par 16, ce qui signifie 1,5 divisé par 16, et c'est 0,09. C'est donc comme écrire 0,09 ici. C'est presque comme écrire 0,1, ce qui signifie dix fois par seconde. Bon, donc ça va beaucoup cligner des yeux ici, tu puisses le faire de cette façon. Ainsi, chaque fois que vous changez votre minuteur en mode Dieu, cela changera en conséquence. Nous pouvons donc le faire ici. C'est donc un peu dynamique maintenant. Je vais donc placer mon matériel ici à la place. Donc, au lieu de le faire ici, je vais faire glisser ce matériel de jeu. Je me sens déconnecté d'ici. Je vais laisser ça être connecté ici comme ça et je dois faire un événement. Alors faites glisser vers le bas d' ici et dites « dégâts ». Faisons d' abord un événement personnalisé, les dégâts affectent la boucle. Et maintenant, nous pouvons connecter notre matériel. Nous voulons donc d'abord que notre matériel soit translucide. Ensuite, nous voulons prendre ce brillant et définir la couleur, la couleur réglée sur la couleur Sprite, s'appelle-t-elle ici ? Et maintenant, nous voulons également définir cette couleur vive. Maintenant, nous ne pouvons pas vraiment le changer ici, rappelez-vous que vous devez le faire passer. Alors faites glisser à partir d'ici, mettez-le à l'intérieur de cet événement. Et maintenant, au lieu de dire une nouvelle couleur, je vais juste dire couleur. Et encore une fois, faites-les glisser à travers ces événements jusqu'à ce qu' ils arrivent ici où vous pouvez le modifier. Bon, donc pour la couleur, je vais juste cliquer ici. Et je vais changer l'Alpha. C'est ce qui m' intéresse à 0,5. C'est donc la moitié de la transparence. Donc, notre personnage de joueur sera à moitié transparent. Ok, donc on change la couleur et la matière. Maintenant, le joueur est à moitié transparent et nous voulons le retarder. Je vais donc mettre un nœud de retard et je veux supprimer. Permettez-moi de reprendre cette minuterie en mode Dieu. Je voulais le retarder, disons encore une fois divisé par 16 ici. Et en fait, je veux le diviser par 16. Ils ne peuvent pas être les mêmes. Je veux diviser cela par huit. C'est comme écrire ici. Par exemple, vous souhaitez l' exécuter toutes les secondes et le retarder de 0,5 seconde. Et ensuite, vous voulez copier, collez ce code car vous êtes maintenant transparent. Mais je veux revenir à mon mode normal car rappelez-vous que nous faisons un effet clignotant. Donc, je passe à mon mode transparent , puis je reviens à la normale. Et je veux juste la moitié du temps de ce qu'il y a là-haut. Alors, changeons ça par huit. Il va donc dire 1,5 an divisé par huit. Et ici, pour le retard, je vais aller beaucoup plus vite. Donc divisé par 16. Vous pouvez donc essayer votre chemin et voir ce qui fonctionne pour vous si vous voulez qu'il clignote plus rapidement. De toute évidence, il faut augmenter ces chiffres. Si vous souhaitez cligner des yeux plus lentement, vous devez réduire ces chiffres. Nous allons donc le retarder de 16 ici, ou le temps de Dieu Mode divisé par 16. Ensuite, nous allons mettre les matériaux en fonction de ce qu'ils étaient avant. Je vais juste copier ça et maintenant nous pouvons juste définir le matériel ici. Nous n'avons pas à passer par toutes ces choses, je ne crois pas. Essayons donc simplement ça. Donc, si vous écrivez simplement non éclairé, vous avez comme celui-ci appelé masqué sur Let's bright material. Il s'agit de la valeur par défaut. Et la nouvelle couleur. Ici, dans le rouge, il y un, un vert, un bleu. Cela signifie qu'il s'agit d'une couleur blanche et que l'alpha est également un. Donc, tout le monde, ici, n'est qu'un. Laissez-moi compiler et économiser. Alors maintenant, vérifions si nous avons tout et que nous n'obtenons rien. Essayons donc. Essayons de jouer au jeu. Et si je rentre dans l'ennemi, vous pouvez voir que j'ai réellement cet effet clignotant. Il y a une petite erreur. En fait, je vais devenir sombre. Je ne vais pas comme mes propres couleurs, alors je vais cliquer ici. Et c'est parce que ce n'est pas blanc ici. Donc 111, maintenant c'est blanc parce que s'il n'est pas blanc, sexuellement sombre ici et s'il fait sombre, votre personnage deviendra sombre et vous ne pourrez pas voir vos pixels. Donc, 1.5110 et Alpha. Essayons à nouveau. Et vous pouvez voir maintenant que vous pouvez voir les pixels lorsque vous clignez des yeux, comme cela. Bon, donc maintenant c'est vrai. Et à un moment donné, nous voulons vraiment arrêter cet effet clignotant. Donc, ce que nous voulons faire est ici, nous voulons l'arrêter une fois le temps du mode Dieu terminé. Donc, après cette 1,5 seconde, nous ne sommes plus en mode instinct et nous voulons l'arrêter. Faisons donc un nouveau minuteur pour cela et disons définir une minuterie par événements. Et pour celui-là, je vais juste faire glisser de cet événement, créer un événement personnalisé. Appelons ça d'arrêter les dégâts, les effets. Et celle-ci est très simple. Ça va juste aimer après 1,5 seconde. Alors connectez le dieu plus de temps à cette minuterie. Donc, après ce mode Dieu, temps est terminé, nous allons prendre cette poignée. Laissez-moi donc cliquer ici avec le bouton droit de la souris, promouvoir cela en variable. Et appelons cela endommager la poignée des effets. Et connectons ceux comme ça. Nous avons donc maintenant une variable à partir de cela. Maintenant, une fois que le temps du mode Dieu sera terminé, nous allons prendre cette minuterie, qui est celle-ci ici. Nous allons le prendre et dire clair et invalider l' heure ou par Haendel, qui signifie supprimer ce talon, cette minuterie. Donc, une fois le mode dieu terminé, nous allons arrêter ce code ici. Et de toute évidence, nous ne voulons pas boucler ça. Cela ne va courir qu'une seule fois. Bon, alors compilons et économisons. Essayons donc. Cliquons sur Play et laissez-moi tomber sur l'ennemi. Je vais cligner des yeux. Et après la fin du temps de la marraine, je ne clignote plus. Et si je rentre dans l'ennemi, ça va cligner des yeux. J'y retourne encore une fois. Laissez-moi en fait, c'est le client. Permettez-moi de revenir à la pièce en tant que serveur écouté. Je veux le jouer en tant que serveur et client. Je vais le minimiser juste pour m'assurer que je n'ai rien acheté. C'est toujours agréable de tester les choses en mode multijoueur. En tant que joueur maintenant, en tant que client, je clignote et ça fonctionne comme serveur. Je clignote des yeux en travaillant sur les deux. Ok, donc ça marche bien. Et encore une fois, vous pouvez passer au client, assurer que tout fonctionne. Je ne fais que jeter un coup d' œil aux deux ici. Donc, Serena et Luke, si je m'y rends dessus, je clignote des yeux. Ok, ça marche donc. Génial. Maintenant, le code fonctionne. Vous pouvez toujours essayer de l' organiser un peu, alors je vous conseillerais de le faire. Permettez-moi de les rapprocher ensemble. Mais celui-là, nous pouvons le faire glisser ici, donc ce n'est pas trop déroutant. Et avec ce sprite, vite ici, peut se soucier de rerouter le nœud aussi bien qu'ici. Vous pouvez créer un nœud de réacheminement comme celui-ci. Et pour celle-ci, vous pouvez également faire une note réécrite. Quelque chose comme ça ici. Il semble donc un peu plus organisé. Celui-là, je peux juste descendre ici. Et ce sprite, vous pouvez également faire une note de reroute. C'est donc toujours agréable de rester organisé. Je ne peux pas le dire assez parce qu'à un moment donné votre projet sera très vaste et cela sera très difficile à lire. Donc, quelque chose comme ça. Maintenant, tout cela est terminé. Bon, donc maintenant c'est l'effet de dégâts. Et maintenant, pour cet effet de dégâts, vous pouvez maintenant, pour les effets de dégâts V, vous pouvez le transformer en un événement d'interface Blueprint. Mais attendons cela dans la prochaine leçon, car nous allons ajouter une impulsion. Passons donc à la prochaine leçon. 80. Appuyez sur Impulse de joueur: Très bien, donc en dernier lieu pour les dégâts ici, je pense que nous devons ajouter une impulsion aux dégâts. Donc, lorsque le joueur frappe l'ennemi, lorsque je rentre dans l'ennemi, au lieu de clignoter seulement, je veux aussi pousser mon personnage, ce qui donne cette impulsion. Alors, faisons-le. La façon dont vous le faites est de prendre le mouvement du personnage et de dire impulsion fixe et non pas définir d'impulsion. Permettez-moi de chercher, je pense que ça s'appelle ajouter une impulsion ici, ajouter de l'impulsion. Et vous voulez ajouter cette impulsion ici. Permettez-moi donc de faire glisser ça et d'ajouter l'impulsion ici. Juste comme ça. Maintenant, pour cette annonce, pour cette impulsion encore une fois, nous devons la faire passer à travers ces événements ici, comme avant. Et maintenant, vous pouvez définir l'impulsion. Vous devez maintenant vous rappeler de vérifier ce changement de vitesse ici. Et compilons et économisons. Et maintenant, nous avons ajouté un peu d'impulsion, mais cette impulsion, vous pouvez l'essayer. Par exemple, j'écris 500 en z et vous pouvez voir ce qui se passe. Vous pouvez essayer de cliquer sur Play, toujours agréable de le tester. Alors, quoi que vous fassiez, essayez-le. Vous pouvez voir maintenant que lorsque j'ai touché l'ennemi, je suis poussé vers le haut dans le Z de 500. Comme ça, j'ajoute de l'impulsion. D'accord ? Maintenant, nous pouvons faire quelque chose de amusant ici pour l'impulsion. Maintenant, je vais utiliser la même méthode que celle que j'ai utilisée auparavant. Alors, permettez-moi de voir où j'ai réellement utilisé cette méthode. C'est peut-être la base ennemie ici. Par ici. En fait, nous avons vérifié où se trouve l'ennemi par rapport au joueur. Et nous sommes en train de déplacer cet ennemi. Je veux vraiment faire la même chose. Donc, pour le joueur, comme si vous venez de cette façon, je veux repousser mon joueur vers l'arrière. Si je viens de cette façon, je veux pousser mon joueur vers l' arrière de cette façon. Donc, selon le côté de l'ennemi que vous frappez l'ennemi ou l'ennemi qui vous frappe. Vous voulez être poussé vers l' arrière de ce côté. Ainsi, tout comme la base de l'ONU, nous allons utiliser cette même méthode. Je vais donc retourner à ma base de joueurs ici. Et la façon dont nous pouvons le faire, c' est que je vais en fait baisser un peu ça, donc j'ai plus d'espace ici. Je vais maintenant connaître l'emplacement du joueur. Alors, obtenez un emplacement réel. N'oubliez pas que nous sommes à l'intérieur du joueur en ce moment. Obtenez donc un emplacement réel avec une auto-référence et les cibles. Je vais le casser parce que nous ne sommes intéressés que par la valeur x, car la valeur x est ici. ne nous intéressait qu'à cela. Maintenant, j'ai besoin de l'emplacement pour mon ennemi et nous pouvons l'obtenir à partir d'ici. Nous ne l'avons donc pas encore fait. que nous puissions le faire à partir d' ici, n'oubliez pas que nous recevons des dégâts de la part de l'ennemi afin que nous puissions obtenir le contrôleur de l'ennemi. Je peux donc cliquer avec le bouton droit ici, promouvoir cela en contrôleur ou variable et l'appeler contrôleur ennemi. Relions-le maintenant. Et je peux cliquer ici et le reproduire simplement pour m' assurer que les clients peuvent voir la valeur de cette variable. Et maintenant, nous avons le contrôleur ennemi. Nous pouvons donc prendre ce contrôleur et C est contrôlé ****. Nous avons donc maintenant le pion de l'ennemi. Et on peut dire trouver l'emplacement de l' acteur. Nous avons donc maintenant la localisation de l'ennemi. Et je veux le casser à nouveau car je ne m' intéresse qu'à l'axe X. Maintenant, je vais me demander ici, est-ce que c'est pour le joueur ? Est-ce moins que ce que c'est pour l'ennemi ? Eh bien, cela signifie encore une fois, si mes ennemis se tiennent ici, et si mon joueur est ici, je demande simplement aux joueurs une valeur x inférieure à celle des ennemis. Et dans ce cas, c'est faux parce que mon personnage, si je peux vraiment le frapper et ne pas frapper le, maintenant je ne peux pas le frapper ici. Laissez-moi le trouver ici. Serena. Comme ça. Maintenant, car le joueur va être faux en ce moment parce que les ennemis x sont en fait plus bas que mon joueur. Ici, dans le joueur, nous demandons maintenant, mon joueur est-il plus bas que mon ennemi ? Qu'est-ce qui est faux ? Revenons ici de l'impulsion avant de faire quoi que ce soit, partons d'ici et disons faire du vecteur. Comme avant. Au lieu de copier notre code, si nous revenons au peigne de base ennemi face à notre code, nous pouvons simplement utiliser ce flotteur sélectionné. Alors faites glisser à partir d'ici et dites Sélectionner les charges. Maintenant, ce que vous pouvez faire est ici et l' interface que vous voyez ici, nous avons fait le plus ici parce que nous voulions l'emplacement et ce que nous avions déménagé. Dans ce cas, vous appliquez simplement une force comme si vous appliquiez simplement une impulsion, par exemple 500. Nous ne nous soucions donc vraiment pas des valeurs pour les x, y et z. Nous voulons simplement qu'elles soient statiques. Donc, pour le Z, ajoutons quelque chose comme 300. Nous avons donc gagné une impulsion de 300 à la hausse. Pour le x, nous n'allons pas vraiment prendre ça et dire plus ça et ainsi de suite. Parce que celle-ci n'est que l'impulsion esthétique, par exemple, quelque chose comme 300. C'est, par exemple, 300 ou moins 300 selon la direction d'où je viens. Maintenant, nous devons déterminer, je vais le relier ici. Nous devons déterminer dans quelle direction il s'agit de quelle direction. Disons donc ici que je suis ici. Voyons voir, restons ici en tant que joueur. Je demande maintenant si ma valeur x est-elle inférieure à celle des ennemis ? Je vais jeter un coup d' œil sur ce joueur. Vous pouvez voir qu'il est 615. Cliquez sur cet ennemi est 710. Donc maintenant, oui, mon x pour le joueur est inférieur à celui des ennemis. Ce sera donc vrai dans ce cas quand vous entrerez . C'est donc vrai maintenant. Donc, je marche ici jusqu'à l'ennemi. Je veux vraiment être repoussé vers l'arrière. Et maintenant, mon recul n'est que de moins 300 parce que je vois que pousser le joueur arrière va dans le moins. Il va baisser ce nombre. Je vais donc écrire moins 300. Et évidemment, si vous êtes de l'autre côté, ça va devenir faux, ce qui signifie que je dois maintenant le faire ici. faux sens ici. Maintenant, vous allez vers l'ennemi. Vous allez vous éloigner et repousser le joueur loin. Ce côté ici va dire plus 300, ce qui signifie que vous allez être repoussé par ici. Cela n'a donc pas de sens ici. Disons un, 100. Et maintenant, il va s'appliquer moins 300 ou 300 dans l'impulsion. D'accord ? Alors, organisons ça un peu mieux, comme ça. Bon, donc maintenant nous avons appliqué ce code et je crois que nous ne manquons rien maintenant. Cliquons donc sur Play et voyons ce qui se passe. Maintenant, je suis le joueur. Je marche vers l'ennemi. Je vais être poussé de ce côté. C'est exact. Maintenant, je vais passer de cet autre côté ici. C'est exact. Je vais être poussé de ce côté. Si je vais de ce côté, de ce côté, je vais être poussé de ce côté ici. Maintenant, je suis poussé dans la bonne direction maintenant. D'accord ? Donc maintenant, nous pouvons faire, parfois vous pouvez faire des choses drôles comme vous pouvez le voir ici. Vous pouvez ajouter une impulsion. L'ennemi vous repousse pendant que vous sautez. Nous avons donc beaucoup de force. Si vous le souhaitez, vous pouvez peut-être abaisser la force de valeur z à 150, voyons à quoi cela ressemble. C'est peut-être trop dans le Z. Je peux faire quelque chose comme ça. Ou vous pouvez juste, je pense que c'était drôle. Peut-être que c'est quelque chose comme 250 au lieu de 300 ou réparer quelque chose comme ça. On le voit parfois comme si vous avez déjà de la vélocité, vous pouvez être repoussé. Si vous le souhaitez, vous pouvez définir votre propre vélocité sur 0 avant d'être endommagé. Cela résoudra le problème, mais je pense que c'est bien ici. Maintenant, vous pouvez voir ici ceci, ce cochon ici. Si je le frappe et que je vais ici, il y a parfois des bogues ici sur la rampe. Et c'est parce que tout comme essayer de regarder la vidéo précédente où nous avons réparé l'escargot pour qu' il n'aboie pas ici. Nous ne l'avons pas vraiment fait pour le cochon parce que le cochon est, vous pouvez voir que c'est de l'argent maintenant. Et nous ne l'avons pas vraiment réparé pour le cochon, seulement pour l'escargot parce que le cochon est en train de courir ici. Mais vous pouvez juste, comme avant quand nous l'avons réparé dans la vidéo précédente, je crois en la première partie, être l'ennemi. Lorsque nous avons fait l'ennemi, vous pouvez simplement augmenter la sphère, sphère de collision, puis abattre l'ennemi. Et cela résoudra le problème. Ok, donc maintenant, nous avons cet effet de poussée. Je clignote chaque fois que nous sommes endommagés. Nous sommes donc prêts, comme nous avons tous les effets de dégâts effectués. Laissez-moi juste organiser ça ici. Laissez-moi tirer ça ici. Maintenant que tout cela est terminé, nous pouvons commencer à travailler sur la mort des joueurs. Et après cela, je crois que nous pouvons faire l'interface utilisateur. Permettez-moi donc de le rapprocher, assurez-vous que la base ennemie est également organisée. Et je crois que tout va bien. Si vous le souhaitez, vous pouvez tout commenter. Et encore une fois, vous pouvez organiser toutes ces choses ici au sein de catégories. Et je pense que tout va bien. On peut faire baisser ça comme ça, le rendre un peu meilleur. Je ne sais pas, quelque chose comme ça. Et oui, c'était tout pour cette vidéo. Et gardons tout et passons à la suivante. 81. Mort des joueurs: Travaillons maintenant sur la mort des joueurs. Donc, jusqu'à présent, nous avons fait l'effet de chaleur et lorsque nous entrons dans l'ennemi, nous sommes frappés et nous perdons la santé. Mais nous n'avons pas travaillé sur la mort jusqu'à présent. C'est donc ce que nous avons jusqu'ici. Quittons maintenant le jeu et commençons par les morts. Nous avons donc beaucoup de choses à faire ici. Allons donc d'abord à la base des joueurs. Et à l'intérieur d'ici, nous voulons créer un nouvel événement personnalisé. Et c'est les effets de dégâts V. En fait, je vais le commenter pour que nous ne soyons pas confus ici. Et je vais juste appeler ça endommager les effets. Ensuite, nous avons les dégâts ici. C'est ici que nous voulons coder. L'essentiel. Permettez-moi donc de baisser cet effet de dégâts. Et c'est l'attaque. Je vais également commenter cela. Je le fais tomber dans ce sac. D'accord. Donc ici pour cela, tous les dégâts. Laissez-moi jeter un coup d'œil ici. Nous sommes donc calculer la santé et de définir la nouvelle santé. Et ce que nous voulons faire ici, nous voulons vérifier si l' état de santé est égal à 0 car nous voulons appeler l'événement du décès chaque fois qu'il est 0. Nous allons d'abord faire l'événement de la mort. En quoi devrait-il consister ? Laissez-moi déplacer ça ici. Faisons un nouvel événement appelé et nous pouvons simplement en faire une coutume. En fait, il ne contiendra qu'un booléen, donc nous le savons déjà. Allons donc à la base du lecteur d'interface ici. Et appelons juste ça la mort. Et nous pouvons ajouter une entrée d' un booléen appelé B est mort. Le joueur est donc mort. Et ici, nous pouvons appeler cet événement appelé mort ou mort, non pas mort. Et ici, ce que nous pouvons faire, c'est que nous pouvons appeler des événements personnalisés appelés en fait ce que j'ai découvert. Des trucs très cool. Si vous cliquez avec le bouton droit de la souris, au lieu d'écrire des points personnalisés, vous pouvez écrire des points T et, sur les points T de droite, vous obtenez automatiquement ces événements personnalisés. Donc un raccourci très, très rapide ici pour créer les événements personnalisés et en faire partie des morts du serveur. Donc, en passant par le serveur, faites-le fonctionner sur le serveur fiable. Et lançons celui à partir du serveur ici. Ensuite, nous devons faire en sorte que le booléen b soit mort. Et passons par ici. Maintenant, ce que nous pouvons faire ici, nous pouvons cliquer avec le bouton droit de la souris et la promouvoir vers une variable. Et on peut appeler ça l'être. Est-ce bien, donc celui-là, ce que je veux faire, donc quand nous sommes frappés par l' ennemi et que nous avons 0 santé, nous voulons définir notre animation de mort. Et au fait, j' ai changé jusqu' à présent dans la vidéo. Je vous ai déjà dit que nous devions extraire notre animation de mort. Mais j'ai réalisé qu'il valait mieux faire cette animation de mort une seule image. Donc, si vous regardez ça, vous n' avez probablement qu'une seule image. Laissez-moi supprimer tout cela ici. Et permettez-moi d'importer ici seulement cette animation de mort cérébrale cette animation de mort cérébrale que vous avez dans vos supports de cours. Et permettez-moi d'appliquer la texture de papier 2D et de créer un sprite, appelez-le S death, et de faire un livre rapide à partir de ce que l' on appelle la mort ou la mort. Appelons simplement ça la mort au lieu de la dette. Et les images par seconde ne seront qu'une. Je ne pense pas que ce soit important pour celui-ci. Allons le fermer maintenant, nous avons cela. Je vais aller vite ici vers Luke et Serena et le joueur de Blueprints. Je vais les ajouter ici et l'animation de la mort, juste pour m' assurer que vous les avez ajoutés ici lorsque vous ouvrez la classe d'éditeur de Blueprint complète par défaut. Et juste ce que nous avons fait jusqu'ici. Donc, ici, dans les infos du joueur. Et je vais ajouter à nouveau mon animation de mort ici pour Serena. Ok, donc nous avons ajouté ceci maintenant, compilez et enregistrez tout. Nous voulons donc jouer ce flip book ici chaque fois que nous sommes morts. Revenons donc à la base des joueurs, maintenant, chaque fois que c'est le cas, donc encore une fois, nous faisons un changement visuel, en établissant un flip book. Nous devons donc passer par une notification de représentant, puisque c'est le serveur et ce rock notifie, la seule chose qu'il va faire. Prenons d'abord que c'est mort et assurez-vous que c'est vrai. Donc, lorsque c'est vrai, lorsque vous êtes mort, nous voulons appeler à mort l'état des mouvements définis ou le joueur que le mouvement déclare. Ok, pour que nous appelons la mort et juste pour nous assurer que nous avons ce set. Donc, en allant dans les états des mouvements de troubles et ici que nous n'avons pas dit ça jusqu'à présent, je vais copier ce flip book. Et connectons la mort ici. Et si vous n'avez pas encore modifié, modifiez-le, rappelez-vous ici dans le, s'agit d'un état de mouvements d'énumération, et c'est celui que nous avons fait plus tôt. Donc, si vous souhaitez modifier, si vous n'avez pas encore modifié, vous pouvez passer à l'état du mouvement des énumérations, et vous pouvez ajouter la mort ici, et elle apparaîtra dans la liste ici. Très bien, donc pour l'animation, cliquons ici et nous avons une animation de mort pour la, pour la structure. Et cliquons dessus pour qu'il apparaisse. Et nous pouvons le faire glisser et ajouter. S'il n'apparaît pas, n' oubliez pas que vous avez également une flèche ici. Vous pouvez cliquer vers le haut et vers le bas. Parfois, ils se cachent. Si vous n'en avez pas besoin, vous pouvez cliquer sur Masquer les épingles non connectées et vous les masquerez un peu plus propres. Vous pouvez rendre cela un peu plus propre. C'est un peu désordonné en ce moment, quelque chose comme ça. Ok, les composés ont été enregistrés maintenant, nous avons ajouté ça. Revenons au graphique des événements. Ainsi, chaque fois que le joueur est mort, donc chaque fois que c'est vrai, il va jouer notre animation de mort juste pour s'assurer que le joueur ne peut pas bouger. Je vais prendre le composant Mouvement des personnages et dire arrêter le mouvement immédiatement. Je voulais juste m'assurer que le personnage ne bouge pas, juste comme ça. Maintenant que c'est connecté, veillons également à ce que le joueur ne puisse pas bouger quand il est mort. Donc, en allant au graphique des événements, je vais d'abord à mon, celui-ci se déplace à droite et à gauche, prendre ça est mort. Et encore une fois, comme avant d' écrire un objet NON booléen. Et à partir de là, il suffit de cliquer sur cette épingle Ajouter, puis vous pouvez en ajouter d'autres. Maintenant, vous pouvez réellement connecter cela aussi. Ainsi, chaque fois que le joueur, si le joueur grimpe, vous ne pouvez pas se déplacer vers la gauche et la droite. Lorsque le joueur attaque, il est évident que vous ne pouvez pas bouger vers la gauche et la droite. De plus, lorsque vous êtes mort, vous ne pouvez pas bouger vers la gauche et la droite, c'est que nous devons l'ajouter à des choses que nous ne voulons pas que le joueur utilise. Par exemple, ici aussi bien s'agglutiner de haut en bas. Et on peut dire ici et booléen ici. Et nous pouvons ajouter ces attaques et les relier ici à la place. Nous devons donc structurer cela un peu. Maintenant, c'est un peu désordonné, mais c'est bon. Nous pouvons toujours le nettoyer bientôt. Laissez-moi copier le collage. C'est aussi mort, et nous pouvons l'éditer pour le saut. Donc, ici pour le saut, vous ne pouvez pas sauter si vous êtes mort. Et la dernière chose, c' est l'attaque. L'attaque est donc en bas. Vous ne pouvez pas attaquer si vous êtes mort. D'accord ? Juste comme ça. Juste pour nous assurer que nous n'avons pas de bugs. Nous vérifions donc avec les Booléens comme ça. Ok, donc maintenant vous ne pouvez pas attaquer, d'accord, donc nous avons ça mort et que devrait-il se passer chaque fois que vous êtes mort ? Nous allons le faire plus tard. Alors, quand voulons-nous appeler cet événement ici ? Nous voulons l'appeler chaque fois que la santé est nulle. Donc, les dégâts ici, le joueur est endommagé. Et nous sommes en train de recalculer la santé ici. Nous avons donc maintenant la santé actualisée ici. Prenons ça et disons « pause ». Et maintenant, nous avons cette santé. Et je peux dire égal, c'est égal à 0. Que devrait-il se passer ? Je vais afficher les autres épingles. Alors, que devrait-on se passer chaque fois que leur santé est nulle, nous pouvons créer une branche ici. Donc, lorsque la santé est nulle, nous voulons appeler notre événement de mort. Donc écrire la mort, appeler cet événement ici et le rendre vrai. Bon, donc maintenant c'est vrai. Chaque fois que c'est faux, nous voulons faire autre chose, ce qui signifie que nous ne sommes pas morts, nous sommes juste frappés. Je vais donc supprimer ça d' ici parce que nous devons probablement l'ajouter ici. Nous ne voulons pas donner, nous ne voulons pas supprimer le mode Dieu et avoir ce retard avant vérifier si le joueur est mort ou non. Parce que rappelez-vous, si vous faites cela, c'est comme ça, alors vous allez retarder le code. Donc, vous calculez l'état de santé, vous allez retarder le code. Et si vous êtes mort, vous allez mourir après ce retard, ce qui n'a aucun sens parce que vous êtes déjà mort, mais il y a des retards dans votre mort et cela n'a aucun sens. Alors regardons, cliquez sur Control X pour le couper et le coller ici. On ne fait que calculer la santé comme ça. Et maintenant, ici, nous pouvons faire ce code ici. Si votre santé n'est pas égale à 0, nous allons le retarder ici et supprimer le mode dieu. Ou si vous êtes déjà mort. Donc, si la santé est nulle, nous allons directement à l'événement de la mort. Et nous voulons toujours que le mode Dieu soit vrai ici. Parce que lorsque vous êtes mort, nous ne voulons pas que l'ennemi vous frappe. Je continue donc de garder le mode dieu activé. Bon, donc voyons ici. La profondeur va donc se rapporter. Jouons au jeu et voyons ce qui se passe. Laissez-moi donc cliquer sur Play. Et maintenant, nous pouvons placer ce personnage, vous êtes endommagé. En fait, laissez-moi réduire la santé de mon personnage pour que je puisse tester cela et je n'ai pas à me faire frapper beaucoup de fois. Alors, permettez-moi de vérifier à quoi j'ai causé les dégâts. N'oubliez pas que dans l'ennemi, pour l'escargot et le cochon, vous avez ajouté des dégâts. Et laissez-moi vérifier quels étaient les dégâts. Les dégâts causés à l'escargot ici dans les informations sur les animaux. Les dégâts étaient de dix et 20, je crois, pour le cochon. Laissez-moi juste mettre ma santé pour le joueur. Ici, dans les infos du joueur. Laissez-moi juste le mettre à 20. J'en ai donc un coup par le cochon, mais j'ai deux coups par l'escargot. Donc, cliquez sur Play pour que je puisse le tester rapidement. Maintenant, nous pouvons voir. Je suis mort. Et en fait, mon tombeau ici clignote quand je suis mort. Je n'aime pas ça, alors il clignote ici. Et je n' aime pas vraiment ça. Nous devons donc restructurer ce qui a tué un peu. Parce que lorsque nous sommes endommagés ici dans le, tous les dégâts, c'est la base ennemie. Ici, dans la base de joueurs. Nous avons une impulsion et nous obtenons cet effet clignotant. Je veux vraiment le faire chaque fois que je ne suis pas mort. Parce que quand je suis mort, je ne veux pas cligner des yeux. Je ne veux pas que mon tombeau clignote. Nous devons donc le séparer parce que j'ai vraiment aimé l'impulsion ici. J'aime bien l'impulsion, mais je n'aime pas cligner des yeux. Nous devons donc le séparer. Séparons donc cet effet. Donc, dans les effets de dégâts, je vais faire un événement personnalisé, et celui-ci va être une impulsion. Donc, en fait, je vais les transformer en interfaces Blueprint. Je vais donc aller à l' interface et à la base de joueurs ici. Faisons maintenant une impulsion de dégâts. Et l'autre que nous avions. Revenons donc en arrière. L'autre est endommagé par les effets et prend la couleur et le matériau en entrée. Permettez-moi donc d'en faire un nouveau qui s'appelle « Dommage les effets ». Ok, donc l'impulsion prend un vecteur. Donc, ici, Vector, et je vais juste appeler ça l'impulsion. Et l'autre, les dégâts causés par les effets prennent une couleur. Et vous pouvez voir ici, si vous cliquez sur la couleur, vous pouvez voir de quel type de variable il s'agit. Le matériau est une interface matérielle et celle-ci est une couleur linéaire. Vous pouvez donc revenir à l'interface et choisir ici le matériel. Et c'était ce qu'on appelait le matériel. Je ne pense pas qu'il y ait quelque chose appelé interface matérielle. Il s'agissait en fait d'une interface matérielle, donc nous devons sélectionner celle-ci sélectionnée ici. Et l'autre était une couleur linéaire ici, et celle-ci est une couleur linéaire. Ok, il suffit d'appeler ça une seule couleur. Et maintenant, ça va être, encore une fois, je vais supprimer ça, Compiler et enregistrer, je vais à nouveau cocher, et je dois peut-être le supprimer. Appelons donc simplement la couleur du calque à la place. Et celui-là, du matériel de joueur. Bon, alors compilez et économisez. Et maintenant, revenons en arrière et appelons ça ici. Appelez ça des dégâts, les effets ici. Et le matériel entre ici, l'alerte linéaire passe ici et l'impulsion a été séparée. Je vais donc cliquer sur le serveur et les supprimer impulsions, ça va le supprimer d'ici. Et cette multidiffusion, je vais aussi supprimer l'impulsion parce que nous n'en voulons pas ici. Je vais retirer cette impulsion d'ici et la coller ici. À la place. Je vais faire un nouvel événement dont je me souviens que nous venons de faire impulser les dégâts. Je vais donc appeler cet événement d'impulsion de dégâts. Encore une fois, lancez-le sur le serveur en tant qu'impulsion de dégâts Harvey. Et celui-ci aura ici ce vecteur. Je vais juste le brancher comme ça et connecter ici appelé le serveur-1. Et lançons tout d'abord le serveur ici. Et appelons les dégâts du serveur dans les sondages. Bon, donc maintenant ils sont connectés. Maintenant, nous les avons séparés. Et laissez-moi reconnecter cette multidiffusion avant d'oublier celle-ci, en fait, celle-ci, je fais mal ici. Nous devons ajouter une multidiffusion. Encore une fois, lors d'une multidiffusion, endommager l'impulsion. Et encore une fois, nous avons besoin d'un vecteur ici. Et nous allons l'exécuter à travers une multidiffusion et fiable. Et nous devons exécuter la multidiffusion ici via ce serveur. Donc, celui-là. Bon, donc maintenant, nous avons cette modification. Je vais faire un peu plus d'espace. Nous avons donc de la place pour cet événement. Juste comme ça. Et maintenant, voyons s'il nous manque quelque chose. Et je pense que c'est beau jusqu'à présent nous pouvons nous rapprocher un peu, cela n'a pas de sens de l' avoir aussi loin. Comme ça. Très bien, maintenant nous avons séparé l'impulsion endommagée. Donc, ce que nous pouvons faire ici, maintenant, cela va vous donner une erreur parce que nous n'avons pas vraiment d'impulsion ici. Allons donc y jeter un coup d'œil. Nous avons donc endommagé l'impulsion, impulsion, les effets, d'accord ? Celle-ci donne une erreur. Supprimons-le. Je ne sais pas pourquoi il ne supprime pas l'impulsion. Cherchons donc les dégâts. Impulsion. Je veux que mon impulsion soit ici. Pour mon élan, je veux qu'il soit ici. C'est donc exact. Il suffit de le brancher. Mais je veux que ma couleur ne soit pas là, mais je veux jouer ma couleur chaque fois que je ne suis pas mort. Je ne veux donc pas l'effet clignotant. Je ne veux pas jouer mon effet clignotant ici quand je suis mort. Jouons donc l' effet clignotant ici à la place. Et c'était ici que l'on appelait les effets UV de dommages. Et pour les dommages causés par les effets à nouveau, vous devez sélectionner un matériau, soit les supprimer ici. Encore une fois, cliquez sur Paramètres, affichez le contenu du développeur, affichez le contenu du moteur et affichez le contenu du plug-in. Et maintenant, vous pouvez sélectionner le matériau et il s'appelait Sharon, sluice et C sont translucides et descendent et le trouvent ici du matériel sprite translucide et non éclairé et changez la couleur du joueur en 1.5110 dans l'alpha. Vite, d'accord, donc maintenant nous l' avons comme avant. Et si je descends et que je jette un coup d'œil ici, le matériel est réglé selon ce que nous avons dit et ensuite nous allons le remettre à la mosquée non éclairée, ce qui était notre couleur normale. Ok, donc ça a l'air bien. Maintenant, essayons et voyons si c'est bon maintenant. Alors, jouons. Maintenant, on va se faire frapper. C'est bien. Je n'aime pas les effets clignotants, donc c'est bien maintenant. Et je vais l'essayer en tant que serveur. Donc Platon comme serveur d'écoute. Et juste pour m'en assurer. Bon, donc maintenant nous sommes un tube et ça a l'air génial. C'est donc tout ce que nous avons dû faire pour la mort du joueur. Et le prochain, nous allons créer le menu I, afin que nous puissions avoir une interface utilisateur et mettre à jour notre état de santé. 82. Créer l'interface utilisateur principale: Concevons maintenant l'interface utilisateur principale du jeu. Donc, jusqu'à présent, nous n' avons pas d'interface utilisateur dans le jeu. Allons donc à l'interface utilisateur. Et ici, cliquez avec le bouton droit de la souris et accédons à l'interface utilisateur et créons un Blueprint de Widget. Et sélectionnez celui-ci, widget, widget utilisateur. Et appelons ce que WB a fait. C'est donc l'interface utilisateur principale. Double-cliquez dessus ici. abord, encore une fois, nous devons rechercher Canvas et nous devons ajouter un Canvas avant de faire quoi que ce soit à l'intérieur d'ici . Ce que je veux créer maintenant c'est que je veux créer notre barre de santé ici. Le principal résultat que nous recherchons est donc de le faire ici. Il est donc toujours agréable de visualiser et de savoir ce que vous faites avant de le faire. Donc, lorsque je regarde cela, nous avons une superposition parce que nous avons des barres de santé au-dessus d'un arrière-plan. Cela signifie que nous avons une superposition, puis nous avons deux barres. Donc, la barre de santé et la barre d'expérience l'une sur l'autre. Et je peux me dire que c'est une boîte verticale. N'oubliez pas que nous utilisons la boîte verticale car elles sont alignées verticalement. Et oui, essayons deux. Essayons de commencer ici. Nous avons donc d'abord besoin d'une superposition car nous avons besoin d'un arrière-plan avec une barre de santé au-dessus. Donc, quand vous l'avez ajouté, laissez-moi juste, vous pouvez redessiner le point d'ancrage ici. N'oubliez pas de le faire. Donc, sur la superposition, placez le point d'ancrage vers le bas ici, car c'est là que nous le voulons. Et laissez-moi juste le faire glisser vers le bas pour l' instant, quelque part ici. Nous voulons donc d'abord ajouter l'arrière-plan et l' arrière-plan n'est qu'une image. Recherchez donc un éditeur d'images au-dessus de la superposition. Cliquez sur cette image et changeons cette image pour que vous puissiez voir que j'ai beaucoup de choses bizarres et c'est parce que nous avons activé toutes celles de la leçon précédente. Masquez donc le contenu du plug-in show, masquez le contenu de show engine et masquez le contenu show developer. Revenons ici et cliquons sur ces images pour que nous puissions voir les nôtres uniquement. Et sélectionnons le bouton appelé Black Square plat. Celui-là. Vous pouvez remplir le tout ici, donc une ligne horizontalement et verticalement. Donc, ça remplit tout ça. Je vais le dupliquer. Contrôlez D pour dupliquer, ou nous pouvons cliquer avec le bouton droit de la souris et cliquer sur Dupliquer et sélectionner cette image. Maintenant, je veux changer celui-ci par les plats carrés bleus de bouton. Et je veux faire le Y à cinq, en fait seulement cinq, on ne voit rien changer. Et c'est parce que nous avons sélectionné cet alignement vertical. Je vais sélectionner cet alignement supérieur. Je ne fais que décorer mon arrière-plan. Je peux supprimer toutes les lignes pointillées en cliquant ici. Je suis juste en train de décorer un peu. Je vais cliquer sur Control D sur l'image ici. Et je vais l' aligner en bas. Maintenant, j'ai ce design génial. Et ce que nous voulons faire maintenant, c'est avoir de la chance. Si je jette un coup d'œil à ça avant. Nous avons maintenant besoin d'une boîte verticale où nous avons ces deux barres de progression l'une sur l'autre. Laissez-moi donc chercher une boîte verticale, ajoutez-la à la superposition ici. Maintenant, cherchons la barre de progression. Donc, la barre de progression ici, vous pouvez la faire glisser dans la zone verticale. Et ce que vous pouvez faire maintenant, c'est que vous pouvez, maintenant vous pouvez voir, on ne voit pas grand-chose parce qu'il faut l'ajouter réellement. Donc, dans le style la barre de progression et je pense pour la boîte verticale, laissez-moi l'aligner d'abord ici au centre, c' est les bogues verticaux En cliquant sur la barre de progression. Je vais changer l'image d'arrière-plan. Permettez-moi de le changer en carré noir, plat foncé, donc il est un peu plus sombre que cette couleur ici. Ce que je veux faire, c'est que je veux aligner ma boîte verticale ici tout le long horizontalement. Ma barre de progression s' aligne donc tout le long. Et ce que je veux que vous fassiez maintenant, c'est aller ici à droite et à gauche. Alors, ici à droite. Je le pousse par la droite, je le pousse. Il n'est donc pas ici sur les bords. Je vais le rembourser avec peut-être 203030, et à gauche 30 aussi. Et nous pouvons essayer d'ajouter Revenons ici pour la barre de progression. Passons à l'image de la facture et à l'image du chapiteau. Et ajoutons un rouge pour la santé. Donc cette touche rouge 14 aussi, une touche rouge. Maintenant, vous pouvez voir que c'est beaucoup plus grand. Et si vous augmentez ce pourcentage, vous pouvez voir ici que ce pourcentage est comble, mais il n'est pas vraiment lu comme ce que nous avons choisi de le faire. Et c'est parce que vous devez descendre la barre de progression et la couleur de remplissage et opacité pour une raison quelconque, je ne sais pas pourquoi il est bleu. Vous pouvez donc y arriver. Ici, si vous écrivez simplement 111 ou que vous pouvez simplement augmenter et diminuer ces curseurs, rendez-le blanc ici. Et s'il est blanc, vous pouvez voir la vraie couleur de votre bouton ou la couleur de la barre de progression apparaîtra. Il s'agit donc de la barre de progression. Très cool. Et en ce moment, il s'aligne sur le lot ici. Donc, la boîte verticale, nous sommes en train d'aligner ici. Et pour la barre de progression, je pense que c'est bon pour l'instant. Nous pouvons toujours modifier la taille si elle est trop grande ultérieurement. Donc, jusqu'à présent, ça a l'air bien. Cependant, nous avons réellement besoin d'une superposition car rappelez-vous que nous avons le texte en haut de la barre ici, donc nous avons besoin d'un texte ici, donc il fallait d'abord une superposition. Faites donc glisser une superposition à l'intérieur de cette boîte verticale et placons cette barre de progression dans la superposition. Nous pouvons donc également ajouter du texte dessus ici et la superposition. Nous avons donc une barre de progression et un texte par-dessus. Sur le texte, je vais l' aligner au milieu. Et appelons-le à 100 %. Par exemple, c'est la santé. Je vais changer le texte en, essayons semi-gras. Semi audacieux, en fait audacieux, peut-être Source Sans Pro Bold. Et je pense que nous allons en fait aller avec le noir. noir. Et celui-ci de la taille, je vais le ramener à 14. Très petit texte ici. Je vais lui donner un aperçu. Donc ici, dans les paramètres de contour, je vais le mettre à un. Il a donc un aperçu. Si vous le souhaitez, vous pouvez également ajouter des ombres. Donc, d'abord ici, dans la couleur de l'ombre, il faut aller à l'Alpha. Et si vous en écrivez un, les ombres apparaissent complètement. Et si vous écrivez 0, laissez-moi augmenter votre 0,35. Cela signifie trente-cinq pour cent d'ombre. Et je vais déplacer l'ombre décalée deux à deux pour qu'elle soit un peu plus loin. Vous pouvez voir si vous en ajoutez plus, cela va s'éloigner un peu plus du texte. Le 22 est donc bon pour moi. Ok, donc ce que vous pouvez faire maintenant, vous pouvez toujours diminuer la taille en diminuant ce y ici. Je pense qu'il est trop grand. Donc, en diminuant le Y, donc quelque chose comme ça, peut-être 42. Oui, je pense que c'est bon pour vous aussi. Je vais aussi copier ça ici. Et maintenant, ça a l'air bien. C'est donc notre barre de santé. Maintenant, ce que nous pouvons faire, c'est compiler et sauvegarder, et nous pouvons le dupliquer. Nous pouvons donc cliquer sur la superposition. Nous pouvons cliquer sur Contrôler D. Maintenant, nous le dupliquons. Et permettez-moi d'ajouter une entretoise entre ces deux entretoises entre les superpositions. Et cette entretoise est peut-être dix et le Y , donc il y a un peu d' espace entre eux. Peut-être 1515, c'est bien. C'est donc le bar expérimenté. Alors, au lieu du rouge, passons au jaune ou au vert. C'est généralement la norme en matière d'expérience. Et nous allons le changer ici sous le Health Bar, c'était 42. Laissez-moi donc le copier et le coller ici pour 24242, comme ça. Et pour le bar expérimenté. Et peut-être que cela va dire quelque chose comme 23 expérience que vous avez sur 150, ce qui est nécessaire pour monter au niveau. Donc, quelque chose comme ça. Maintenant, nous avons ce que j'ai dit. Et encore une fois, n'oubliez pas de cliquer sur la superposition, changer votre ancre par ici. Et vous pouvez essayer d'ajuster cette position sur les x et y. Je vais activer les lignes pointillées que je puisse réellement voir où elles sont placées. Je ne sais pas, quelque chose comme ça n'a pas vraiment d'importance pour l'instant. Compilons et économisons pour répondre. Nous voulons faire quelque chose comme ça quand il dit que vous avez été tué, puis il indique ce que vous avez été tué. Ensuite, vous appuyez sur OK pour répondre. Encore une fois, nous avons besoin d'une superposition pour y placer du texte. Et nous avons besoin d'un bouton avec une superposition car nous avons un bouton et un texte au-dessus. Revenons ici et ajoutons d'abord une superposition. À la recherche de superposition, je vais minimiser cela ici. Je vais l'ajouter à la toile. Cette superposition va être placée au milieu ici, au milieu, ici en haut. Et je vais écrire 0 et la position. Et vous pouvez voir qu'il n'aligne pas au milieu ce qu' il aligne ici à ce coin. Vous pouvez donc ajuster cet alignement ici, je peux voir qu'il est 0,5 si vous voulez l'aligner parfaitement au milieu. Et peut-être pour la position Y, je peux dire 100, donc c'est ici. Maintenant, ce que vous pouvez faire ici dans la superposition, vous pouvez encore ajouter une image sur la superposition. Vous pouvez le remplir horizontalement et verticalement et ajouter ce carré noir plat. Et encore une fois, vous pouvez cliquer sur Control D pour le copier ici. Ensuite, vous pouvez le changer pour celui-ci et l'aligner verticalement. Vous pouvez l'aligner sur le dessus. Et je vais changer la taille à cinq. Ici. Encore une fois, nous réalisons cette conception. Cliquez sur Control D et alignez-le sur le bas maintenant. Nous avons donc de nouveau celui-là. Et je vais supprimer ces lignes pointillées. Ce que vous pouvez faire maintenant, c'est que vous pouvez ajouter du texte au-dessus de celui-ci, et il se trouve à l'intérieur d'une zone verticale. Donc, ajoutez une boîte verticale à la superposition. Et maintenant, nous pouvons ajouter deux textes. Donc, ce texte. Et le second, le premier va dire, que vous avez été tué par. Ensuite, ça va dire par quoi, par exemple l'escargot. Et l'autre va dire, appuyez sur OK pour répondre comme ça. Le premier texte ici, je vais changer la police en caractères semi-gras ici. Et la taille va être de 12. Et puis je vais l'aligner ici au milieu, sur la même chose avec celle-ci, je vais l' aligner sur le milieu. Et pour ce second, je vais changer la police en gras. Je vais changer la taille à 18. Le premier, je veux aussi ajouter une ombre. Je vais donc ici et pour l'ombre maintenant, si vous voulez faire la même chose pour les deux, vous pouvez en sélectionner un, maintenir la touche Contrôle, sélectionner la suivante, et vous pouvez simplement faire la même modification pour les deux. Ici, dans la couleur de l'ombre et l'Alpha 0.35. Et pour le décalage de l'ombre, je vais dire à deux. C'est donc un peu plus ce que vous pouvez voir, il y a maintenant un effet d'ombre subtil dans les deux textes. Maintenant, je vois qu'ils ne sont pas vraiment au milieu, même si vous les alignez au milieu ici. Et c'est parce que, rappelez-vous qu'ils sont à l'intérieur d'une boîte verticale. La boîte verticale doit donc être au milieu également. En cliquant ici et en plaçant cette boîte verticale au milieu, vous résoudrez le problème. Nous pouvons maintenant agrandir cet espace pour ne pas avoir cet espace condensé dans le contexte. Essayez donc de le redimensionner comme vous le souhaitez. C'est à vous de choisir. Cela n'a pas vraiment d'importance. Quelque chose comme ça. Ça a peut-être l'air bien. Et laissez-moi simplement le redimensionner comme ça. Et maintenant, vous pouvez ajouter une entretoise entre ces deux-là. Je pense qu'ils sont trop proches. Permettez-moi donc d'ajouter une entretoise entre ces deux textes. Et l'entretoise peut être fabriquée ou quelque chose comme cinq. Il y a donc un peu d' espace entre eux. Maintenant, ce dont nous avons besoin, en fait, nous avons besoin de ce bouton ici. Vous pouvez voir que nous avons besoin de ce bouton OK. Ce bouton OK est en fait dans un, nous devons ajouter une boîte verticale car nous avons cette année et verticalement nous avons un bouton. Nous devions donc placer l'ensemble de la superposition dans une boîte verticale. Donc, la boîte verticale le pose ici et vous pouvez faire glisser cette superposition dedans. Assurez-vous simplement que cette boîte verticale ne l'a pas placée dans cette superposition. Cette erreur peut se produire. Il suffit de minimiser cela et de s'assurer que vous les avez là où ils devraient être. Glissons maintenant cette boîte verticale. Nous avons maintenant une boîte verticale. Nous pourrons faire les ancres plus tard. Ajoutons ici dans la boîte verticale, nous avons cette superposition. Ajoutons une autre superposition avec le bouton et le texte. Cherchons donc le bouton ici, et cherchons du texte. Ici. Nous avons le bouton et le texte du bouton. Ajoutons un bouton bleu, donc celui-ci appelé Blue Square Flat. Et encore une fois, vous pouvez cliquer avec le bouton droit de la souris enfoncée pendant que vous cliquez avec le bouton droit sur Copier et maintenez la touche Maj enfoncée pendant que vous cliquez Ou vous pouvez simplement cliquer avec le bouton droit de la souris et cliquer sur Copier et vous pouvez également voir la liaison ici. Je vais être Paste. Je vais faire la même chose ici. Changez plutôt cette boîte arrondie en boîte. droite, maintenez la touche Maj enfoncée, cliquez avec le bouton droit sur CoBie , maintenez la touche Maj enfoncée, Et pour cette marge, 0,5. Et j'écris 0,5 pour qu'il puisse être correctement mosaïque. Je vais donc cliquer dessus avec le bouton droit de la souris ici, copier coller cette marge. Et pour cette couleur de teinte, pour la couleur normale, je vais la déplacer jusqu'au blanc pour qu'il n'y ait pas de teinte. Et pour le Harvard, je vais juste le mettre un peu ici. Et pour le sein, je vais juste mettre un peu plus sombre que celui plané. C'est déprimé. Maintenant, je pense que c'est bien. Ok, donc nous avons ceci et pour l'illumination, donc pour le bouton, en fait cette superposition, toute la superposition, c'est, il est aligné correctement maintenant. Alors, allez sur ce bouton, alignez-le ici, remplissez-le horizontalement. Et quels types de pastilles verticalement, c'est bon. Pour ce texte, nous allons l'aligner au milieu. Va modifier cette police en gras et changer la taille à 14. Et je vais ajouter une ombre à nouveau, 0,35 et mettre l' ombre après 222. Nous avons donc la même cohérence, le même design, et nous pouvons simplement écrire correctement ici. Il doit donc y avoir un espace entre le bouton. Faisons donc une entretoise. Ajoutons une entretoise entre ces deux superpositions. On peut peut-être en faire 20 ou 15. Je pense que 15, c'est bien. Maintenant, vous pouvez voir que le bouton est grand et c'est parce que vous devez cliquer sur la case verticale. Maintenant, rappelez-vous que vous avez réussi à remplir. Donc, ici, vous l'avez fait sentir aussi. Vous voyez ici que nous l'avons fait sentir horizontalement et verticalement, ce qui signifie que si nous cliquons sur la boîte verticale et que nous la redimensionnons, elle devrait être redimensionnée. Mais ce n'est pas vraiment le cas en ce moment. Et c'est parce que nous devons cliquer sur remplir ici. En ce moment, il est réglé sur Auto. Nous devons en fait le régler pour le remplir, donc il va remplir tout l'espace. J'aimerais faire ma dynamique d'interface utilisateur comme ça pour que je puisse simplement, au lieu de faire le redimensionnement ici sur les images, j'aime simplement la remplir pour pouvoir cliquer sur l'élément parent du parent et je peux simplement le redimensionner comme je le veux, et ce sera beaucoup plus facile pour vous. D'accord ? En fait, c'est aussi bien, comme avancé, car plus tard, lorsque vous avez le multijoueur et les noms, etc., ils peuvent être plus longs que votre interface utilisateur. Cela va donc s'étirer automatiquement, quelle que soit la durée du nom, et ainsi de suite. Il s'agit donc d'une très, très bonne pratique. Alors, laissez-moi juste quelque chose comme ça. Et je pense que oui, je pense qu'il y a du bien. Donc, maintenant, une ligne est correctement Cliquez sur la zone verticale. Vous pouvez voir que l' ancre est ici. Cliquez sur l'ancre, en le plaçant au milieu supérieur et en écrivant 00 en position. Encore une fois, je vais aligner ici 0,5 et écrire 100 et le y. Donc ça le pousse ici. Voilà donc à quoi ça ressemble jusqu'à présent. Compilons et économisons. Nous avons donc créé l'interface utilisateur et je pense que c'est bon. Sauvegardons tout, compilons et nous pouvons ajouter d'autres choses si nous avons besoin de plus de choses. Mais pour l'instant, je pense que c'est bien. Passons à la vidéo suivante. 83. Ajouter l'interface utilisateur principale au port de vue: Ajoutons maintenant l'interface utilisateur à la manette du lecteur. Et n'oubliez pas que l'interface utilisateur est côté client, et nous le faisons dans le contrôleur. Donc, à l'intérieur de la manette du lecteur, nous faisons toute l'interface utilisateur. Et c'est côté client, ce qui signifie que c'est seulement vous en tant que joueur. Vous ne verrez que votre propre interface utilisateur. Un autre joueur reçoit ses propres yeux. Ce n'est donc pas comme si vous ne partagiez pas que vous étiez, vous ne regardiez que le vôtre. C'est ce que cela signifie côté client , comme s'exécuter sur un client propriétaire, il ne fonctionne que sur votre PC, sur votre écran. Et cela n'a pas de sens de partager. Une interface utilisateur n'a pas vraiment de sens. Vous ne pouvez voir que votre propre santé. Et si vous voulez que les autres voient sa santé, vous pouvez toujours partager cette information si nécessaire. Donc maintenant, ici et la manette du joueur, ce que nous avons fait auparavant, c'est que nous avons initialisé le widget, ce qui signifie ici dans la sélection des personnages. Ainsi, chaque fois que nous cliquons sur Play, la sélection des personnages apparaît. Je veux le faire maintenant aussi. Ce n'est pas comme si nous ne voulons pas ajouter le menu I à la fenêtre d'affichage directement le menu I à la fenêtre d'affichage car nous avons l'écran de sélection des personnages. Mais ce que nous voulons faire, c'est ajouter l'interface utilisateur principale après l'écran de sélection des personnages. Mais nous voulons également initialiser le widget. Prenons d'abord celui-ci, créons des widgets. Et encore une fois, nous le faisons dans le client exécutant le client propriétaire. Ici, sélectionnons le menu que je viens de faire comme enregistrement composé. Et cliquons avec le bouton droit de la souris sur une variable, appelons-le WB made. C'est tout ce que nous avions à faire ici. Nous ne voulons pas l'ajouter à la fenêtre d'affichage, car si vous le faites, elle ajoutera également l'interface utilisateur principale à la fenêtre d'affichage. Vous pouvez voir qu'il a ajouté l'interface utilisateur principale. Nous ne voulons pas vraiment le faire. Enlevons donc ça. Et si vous ne l'ajoutez pas à la fenêtre d'affichage, vous pouvez voir que vous la modifiez en tant que variable, mais vous n'avez pas dit au moteur que vous le souhaitez réellement sur la fenêtre d'affichage. Et nous ne voulons pas qu'il soit sous le port de vue pour le moment. Mais nous voulons le faire lorsque vous cliquez sur ou sélectionnez l'un des personnages, cela ajoutera l'interface utilisateur principale à la fenêtre d'affichage. Ce que nous pouvons faire, c'est que nous pouvons fermer cela. N'oubliez pas que dans l' écran de sélection des personnages dans le graphique, nous avons conçu ces deux événements lorsque vous cliquez sur l'un des personnages. Alors, faisons-le ici. Nous avons déjà la manette du joueur. Nous pouvons donc appeler ce WB principal que nous venons de créer. Et ici, vous pouvez rechercher x et notre recherche sur laquelle vous pouvez écrire dès maintenant, nous supprimons l'écran de sélection lorsque nous sélectionnons le personnage, mais nous voulons également l'ajouter à la fenêtre d'affichage. Nous voulons donc ajouter notre personnage, notre interface principale. Je vais copier ça en bas. Maintenant, si nous sélectionnons Luke ou Serena, nous allons l'ajouter aux fenêtres d'affichage. Je vais juste faire ces flips, rendre ça un peu meilleur. chose comme ça. Bon, donc maintenant, nous allons l'ajouter. Donc, chaque fois que je clique sur Play, je sélectionne la boucle par exemple. Vous pouvez voir que j'ai maintenant mon interface utilisateur à l'écran. Encore une fois, je ne veux pas vraiment que cela soit disponible à chaque fois que je viens naître parce que c'est le message de mort ou de réponse. Ce que nous pouvons faire, c'est passer à l'interface utilisateur principale. Nous pouvons le sélectionner ici, sélectionner celui parent, la case verticale. Vous pouvez voir que c'est ça. Et ce que nous voulons faire de celui-ci, c'est ici, ici et la visibilité. Passons à la visibilité cachée. Nous ne voulons pas le voir tout de suite. Nous allons donc le cacher ainsi que cette barre de progression. Donc, la santé est à 100% pour commencer. J'augmente donc le pourcentage par défaut à 100. Et ils ont expérimenté qu' un est en bas, comme 0 expérience quand vous commencez. Quant au chiffre, c'est 100 pour cent pour commencer, et pour celui-ci, il est égal à 0 sur quelque chose. Je ne sais pas encore, alors n'ajoutons rien ici. Maintenant, lorsque vous cliquez sur Play, vous pouvez maintenant voir que c'est correct. Maintenant, il n'affiche pas ce message ici. Et nous pouvons voir notre santé et notre expérience ici. Je vais le redimensionner un peu. Je pense que c'est trop grand. Quelque chose comme ça. Mon TOC se déclenche. Je n'ai pas vraiment de TOC, mais j'ai peut-être quelque chose comme ça. Je pense que c'est beaucoup mieux. J'ai l'air bien. On peut déplacer ça un peu ici dans le Y. quelque chose comme ça. Ok, ça a l'air parfait. Nous avons maintenant la santé et l'expérience semble intéressante. Et ensuite, nous avons la mort. Quoi qu'il en soit, je veux qu'il apparaisse chaque fois que nous mourrons. Et nous le ferons lorsque nous travaillerons avec le joueur répondra. C'est donc ce que nous avons jusqu'ici. Et la prochaine chose que nous pouvons faire est de mettre à jour cette barre de santé. C'est très facile car nous avions déjà cette logique. Passons donc à la vidéo suivante. 84. Mettre à jour la barre de santé: Donc, pour mettre à jour la barre de santé, revenons à l'interface utilisateur et passons à l'interface utilisateur principale. Il s'agit de la barre de santé que nous allons mettre à jour ici pour que la barre de progression facilite la tâche. Donc, ici dans le graphique à coder, vous pouvez voir tous ces noms avec des détritus. Il suffit donc de changer le nom de cette barre de progression en Prague. J'appelle généralement cela une barre de progression. Et puis la santé. Nous savons donc que c'est la barre de progrès pour la santé. Et celui-là, je vais changer le nom en TXT pour texte et celui de santé. Passons à l'expérience de Prague. Nous utiliserons cela plus tard, pas pour l'instant. Et celui-ci s'appelle TXT Experience, Compiler et Enregistrer pour ce bouton ici. Changeons également le nom pendant que nous sommes en train de modifier le bouton. Et juste, ok, celui-ci ici, nous voulons aussi changer plus tard parce que nous allons changer de nom. Je vais l'appeler TXT. Tué par, appelons ça tué par des composés. Économisez. Vous pouvez maintenant voir ici pour ce texte que nous voulons également le définir, mais si vous cliquez sur cette barre de progression, par exemple, et que vous accédez au graphique, vous pouvez voir que la barre de progression est une variable ici. Mais nous voulons également modifier ce texte ici. Mais si vous cliquez sur le graphique, il n'y a pas de texte. Et c'est parce que les textes par défaut ne sont pas variables et que vous devez prendre celle-ci ici appelée variable S, puis elle apparaîtra ici dans le graphique. Cependant, il y a beaucoup d'images. Les images sont par défaut des variables, mais vous devez parfois nettoyer votre projet pour que vous deviez cliquer sur cette image, par exemple, et la supprimer en tant que variable car vous n'en avez pas vraiment besoin pour modifier cela dans le jeu. Aussi pour l'arrière-plan ici, je peux le supprimer si vous le souhaitez, je peux aussi le nettoyer. Supprimez donc cet arrière-plan est une variable. Il suffit de retirer tous ceux ici. Cette compilation et sauvegarde. Et vous pouvez voir que votre projet est beaucoup plus propre si vous n'avez que les variables avec lesquelles vous allez travailler. Permettez-moi donc de supprimer ces événements par défaut et d'en faire un appelé, créons un événement personnalisé, et appelons-le mettre à jour la santé. Donc, ce que je fais habituellement pour l'interface utilisateur, je ne crée jamais d'interfaces Blueprint. Je veux dire, vous pouvez, vous pouvez simplement entrer et en créer un pour cela. Mais cela n'a pas vraiment de sens parce que vous n'avez généralement pas beaucoup d'événements. Et vous devrez faire beaucoup d'interfaces. Comme si vous deviez en créer une pour chaque interface utilisateur. Et je ne veux pas le faire, donc je crée généralement des événements personnalisés pour eux. Donc, ici pour la santé de la mise à jour, ce que nous voulons faire, nous voulons prendre la barre de progression pour la santé et dire un pourcentage défini. C'est ce que nous voulons mettre à jour. Et vous pouvez voir comment ça s'appelle. Si vous cliquez sur la barre de progression et que vous descendez ici, vous pouvez voir qu'elle s'appelle pourcentage. Donc, si vous faites une recherche, recherchez un pourcentage, si vous ne savez pas comment il s'appelle, vous verrez celui-ci ici. Nous voulons donc définir le pourcentage, mais nous voulons également mettre à jour ce texte appelé health, également appelé SetText. Nous voulons donc également définir ce texte. Donc, pour ce pourcentage, je vais juste le faire passer à travers cet événement et nous pourrons l'appeler à nouveau un autre endroit. Permettez-moi d'appeler cela un pourcentage au lieu d' en personne pour ces textes, sera juste un pourcentage de ce qui traverse cela. Et vous verrez ce que je veux dire plus tard. Mais pour l'instant, nous allons simplement traîner d'ici et dire présent. Et pour le flotteur, vous avez quelque chose appelé en pourcentage. Il va donc convertir cela en pourcentage pour le texte. Et ensuite, on peut le brancher ici. Il va donc s'afficher sous forme de pourcentage ici. Maintenant, nous pouvons toujours essayer de tester et de voir si cela fonctionne correctement. Maintenant que nous avons cette vente composée, oubliez pas que nous gérons l'interface utilisateur à l'intérieur de la manette du lecteur. Laissez-moi donc revenir à la manette du lecteur Blueprints. Et à l'intérieur d'ici. Donc, en fin de compte, nous voulons l' appeler ici à partir de la base de joueurs, car la base nous vérifions comme si nous calculons la santé ici. Et nous voulons en fait afficher cela, comme mettre à jour l'interface utilisateur à partir d'ici. Il va passer de la base des joueurs à la manette du joueur et à celle-ci à la fin. Créons donc celui à la manette du joueur maintenant. ce moment, au niveau de la manette du lecteur, nous initialisons des widgets. Nous avons ce personnage et le joueur est en train de frayer. Maintenant, en bas, nous allons en faire un autre. Et appelons-le ça. Créons-en un personnalisé et nous pouvons en faire une interface Blueprint. Et un peu, je voulais juste voir ce que nous pouvons faire ici. Alors faites-le dans votre client aveuglé, mise à jour, mise à jour, barre de santé, et laissez-nous appeler cet événement. Donc, en prenant ici dans le WB principal, rappelez-vous que l'événement ici se trouve à l'intérieur de l'interface utilisateur principale. Nous avons donc déjà une variable dans notre manette de joueur. On vient de l'inventer ici. Nous venons de créer cette variable. Nous pouvons donc maintenant utiliser cette variable et nous pouvons appeler cet événement appelé « update health ». Appelons ça dire que c'est la santé. Et maintenant, vous pouvez le trouver ici. Ensuite, nous voulons simplement y prendre ce pourcentage. Et c'est ce dont nous avons besoin. Par exemple, transformons celui-ci en un client propriétaire en cours d'exécution et fiable. Maintenant, ce que nous devons faire c'est que nous voulons cet événement personnalisé ici. Faisons de cela une interface Blueprint. Revenons aux interfaces, à la manette du lecteur. Et ici, comment avons-nous appelé ça ? Mettre à jour la barre de santé. Et appelons-le ici, met à jour la barre de santé. Ajoutons un flotteur ici et appelons-le pourcentage. Je crois que ça s'appelait présent et appelons-le ici maintenant, disons Mettre à jour la barre de santé. Et nous pouvons appeler ces événements d'interface. Et maintenant, ce que nous pouvons faire, c'est appeler ce client côté un, mettre à jour la barre de santé. Et passons à travers ça. Donc maintenant, nous devons appeler celui-ci via la base de joueurs. Donc, appelons-le ici. Donc, pour mettre à jour l'état de santé, revenons maintenant avec la base de joueurs est ici. Nous soustrayons donc et nous sommes en train de calculer. Nous devons le faire ici. Nous devons donc nous éloigner un peu plus loin. Et maintenant, nous avons besoin de la manette du joueur. Et laissez-moi voir ce que nous avons fait ici. Nous avions le contrôleur ennemi. Nous n'avons pas la manette du joueur, donc nous pouvons en faire référence, disons obtenir la manette, car nous sommes déjà à l'intérieur du joueur afin que nous puissions obtenir la manette comme ceci, puis disons obtenir le contrôle de couche notre référence parce que nous voulons utiliser cette manette de lecteur ici. Où est-il ? Celui-là ? Plus précisément, nous faisons référence à ce PC Maple Story. Et à partir de là, nous allons appeler cette mise à jour de santé Health Bar, je crois qu'elle a été appelée et c'est un message. Souvenez-vous du message ici car c'est une fonction Blueprint Interface que nous avons créée ici. C'est donc un message lorsque vous cliquez dessus, Compiler et Enregistrer. Donc maintenant, nous devons brancher quelque chose à l'intérieur de ce pourcentage et pour celui-ci, donc pour le présent, rappelez-vous, vous ne pouvez pas simplement me laisser briser ça ici. En fait, nous n'avons pas à le faire tout le temps. Nous pouvons simplement utiliser celui-ci. Permettez-moi de déconnecter ça pour l'instant. Maintenant, en utilisant cette santé, nous ne pouvons pas simplement le brancher en pourcentage. Parce que pour l'interface utilisateur, si vous regardez la barre de progression, pour l'interface utilisateur, votre barre de progression va réellement partir, voyons ici. Il passe de un à 0, donc il ne va pas à 100%, il va à 0 à un. Donc, si vous avez un pourcentage divisé par 100 pour atteindre ce nombre. Sinon, si vous branchez à 100%, ce sera toujours 100 comme ça, car le nombre maximum est en fait un et le minimum est 0. Donc, 0 contre un. N'oubliez pas de 0 à 100. Revenons donc à la base de joueurs. Et donc ce que je dois faire, créons un nouvel événement appelé santé maximale parce que nous devons prendre un pourcentage et pour faire un pourcentage, nous devons savoir ce que c'était avant. Faisons une variable de santé maximale. Et au lieu de le faire ici, vous pouvez simplement le faire dans les infos du joueur. Passons donc aux structures en tant qu'info joueur et créons simplement une nouvelle variable de santé. Appelons ça la santé maximale. Et disons que parfois, comme dans les RPG, vous pouvez améliorer cette santé maximale. Et cette santé est comme si nous utilisions simplement cette santé pour la modifier tout le temps. Mais cela fait que la santé restera toujours au maximum et vous pourrez la mettre à niveau avec des mises à niveau ultérieurement. Nous avons donc la santé maximale et passons en fait à l'enregistrement composé de base du joueur. Et dans la base de joueurs, vous devez définir ce qu'est cette santé maximale. suffit donc de le régler à 20. La santé maximale est de 20. Allons-y maintenant. Laissez-moi tout compiler. Revenons à la base de joueurs. Nous avons donc maintenant la santé maximale en pourcentage. Vous devez prendre cette santé restante et la diviser, diviser par la santé maximale. Vous obtiendrez maintenant le nombre de pourcentages auquel vous pouvez brancher ici. Et maintenant que vous avez cette mise à jour en pourcentage, cela va passer par la manette du lecteur. Donc vous appelez cela à partir du contrôle de la plaque de leur santé va aller au contrôleur du joueur, va passer par les clients. Parce que rappelez-vous, l'interface utilisateur est côté client, donc elle va passer par le client et elle va mettre à jour l'état de santé qui est ici. Et il utilise également ce numéro que vous avez. Par exemple, lorsque vous êtes au nombre de santé maximum sera ici à 1 et la barre de progression ici 1 lorsque vous faites juste en pourcentage, je crois qu'elle le multiplie par 100. Il le met donc ici dans le texte. Mais nous devons en fait le tester et voir s'il fonctionne correctement. Maintenant, en pourcentage. Et maintenant, vous pouvez les relier et demander si c' est la santé ici ? Est-il égal à 0 ? Disons donc encore une fois égal à 0. Nous pouvons simplement supprimer ici et connecter cela à la place. Vous pouvez simplement continuer ce que vous avez fait avant. Maintenant, vous allez mettre à jour la barre de progression, tout sauvegarder. Et avant de continuer, je crois que c'était tout. Essayons de voir si ça marche. Il est donc à 100 ans et celui-ci va me frapper. Donc, en fait, nous pouvons voir que nous avons une erreur ici. Mais essayons de résoudre ce problème plus tard. Voyons donc de quoi cela a été causé. Celui-là. Vous pouvez voir qu'il me frappe et il me reste 50 parce qu'il me frappe 50. Et quand j'ai 0, je suis cette tombe et rien ne se passe. Cela fonctionne donc parfaitement. Et si j'augmente ma santé, disons que nous allons aux infos du joueur et que nous augmentons le maximum de collines pour dire 50. Et nous commençons également par 50. Alors, jouons maintenant. Et maintenant, vous pouvez voir qu'il fonctionne parfaitement. Et si je vais ici, ça va me blesser beaucoup plus. Et puis il va me tuer. Maintenant, cela fonctionne parfaitement. La barre de pourcentage est correcte et le pourcentage ici, le texte ici est également correct. Pour ce bogue sous lettre, je dois résoudre ce problème. Donc, quand vous sautez, y a une raison pour laquelle il ne s'empare pas. Je vois qu'il est coincé ici. Et laissez-moi juste essayer de sauter sur l'échelle avec ce cochon ici. Donc, ça marche si je ne bouge pas, mais ça se débrouille. Si je saute de côté, ce qui est très bizarre, peut-être que cela a quelque chose à voir avec les collisions que nous avons ajoutées. Alors laissez-moi, laissez-moi voir ici. Alors, quand nous sommes au fond ici, laissez-moi aller à la choline de haut en bas. Nous faisons donc de l' escalade et nous avons cette fonction de déballage appelée IsClient being. Combien il ne fait qu'imprimer une chaîne ici pour voir si c'est, comme si nous manquons à travers les collisions que nous avons. Maintenant, il va dire bonjour. Oui, on peut voir que ça dit beaucoup de fois. En fait, ce n'est pas quatre fois si je fais ça pendant dix secondes. Je peux donc expliquer. Vous pouvez voir ici, nous allons sauter dessus. Il s'agit en fait d'un mot deux fois, l' une du serveur et l' autre du client. Et nous en avons évidemment un autre sur le serveur. Donc, c'est en fait trois fois ici. Nous avons plusieurs collisions, comme si ce n'était pas censé le faire trois fois. Ce code ne doit donc être exécuté qu'une seule fois. Il y a donc quelque chose avec les collisions que nous devons ajuster, qui cause ce problème parce que nous n'avons besoin d'entrer en collision qu'une seule fois. Laissez-moi donc cliquer sur cette capsule pour le joueur et jeter un coup d'œil. Et nous ignorons tout sauf le dynamique et le statique. Laissez-moi prendre cette collision d' attaque. Peut-être disait-il que la collision d'attaque, nous ignorons tout sauf la dynamique mondiale. Et laissez-moi jeter un coup d'œil à l'échelle. Laissez-moi donc revenir aux plans pour que la ligne soit aveugle, en regardant la boîte de collision pour celle-ci , voici tout qui se chevauche. Et ce composant de rendu est défini sur aucune collision. Il n'y a donc pas de collision. Donc le joueur, juste pour s'assurer que le sprite n'a pas non plus de collision. En fait, il y a une collision , mais pas d'événements de chevauchement. Laissez-moi essayer cette boîte de collision. Laissez-moi passer au costume et faire comme si nous pouvions ignorer la dynamique mondiale et essayons de cliquer sur Play et de voir ce qui se passe. Maintenant, vous pouvez voir que ça fonctionne réellement. Essayons donc cela quelques fois juste pour nous assurer que cela ne bloque pas tout à coup. Laissez-moi jouer en tant que client. Alors, permettez-moi de remonter le client ici et de m'assurer qu' il fonctionne également. Cela fonctionne. Il est en train d'ajuster notre emplacement. D'accord. Donc, tout fonctionne. Et le problème, c'est que nous avons eu deux collisions . Donc, pour la collision, c'est celle qui était en collision avec elle. Parce que rappelez-vous que la collision d'attaque est une dynamique mondiale et que la collision d'échelle doit se chevaucher avec la dynamique mondiale. Nous devons donc ignorer la dynamique mondiale, ce qui signifie que nous devons ignorer cette collision d'attaque. Et ça ne gâchera plus ça. C'était donc la solution ici, une solution très simple. Il suffit donc de le régler sur le client et de le supprimer. Ignorez donc cette dynamique bien dynamique et cela résoudra le problème. Par conséquent, nous avons résolu ce problème et nous avons également mis à jour l'interface utilisateur de la barre de santé. Passons au prochain et mettons à jour l'impôt sur le décès. 85. Mettre à jour le texte de mort: Revenons maintenant à l'interface utilisateur et passons à la principale. Ici, nous voulons mettre à jour ce texte. Il est dit que vous avez été tué par et il est écrit escargot. Nous devons donc mettre à jour ce texte ici. Cliquez à nouveau sur ce texte, n'oubliez pas de le définir sur des variables afin que nous puissions le modifier et accéder au graphique ici. Et je vais appeler celui-ci, créer un événement personnalisé et l'appeler afficher le message de mort. Et nous pouvons également regarder comme si nous pouvions afficher le message et nous pouvons également mettre à jour ces textes. Donc, en prenant ce texte, nous devons d' abord afficher ce message. N'oubliez pas qu'il est masqué par défaut. Prenons ce que nous voulons faire. Je pense que nous devons également en faire une variable. Nous voulons que cette boîte verticale soit affichée. N'oubliez pas que nous l'avons caché. Nous devons donc changer le nom de celui-ci. Donc VB pour boîte verticale et laissez-moi l'appeler répondre. Message de réponse ou de décès. Appelons ça le message de mort. Et mettons-le dans une variable pour que je puisse la voir dans le code. Donc, en allant ici et en prenant ceci, maintenant ce que nous pouvons dire, c'est définir la visibilité. Et maintenant, ce que nous pouvons faire, c'est le rendre visible. Et connectons-le. Maintenant, c'est visible. Et la prochaine chose que nous voulons faire est d'afficher ce texte ici. SetText a donc changé le texte comme ce que nous avons fait ici avec celui-ci. Cependant, avec celui-ci, je vais maintenant vous apprendre une nouvelle chose. Vous avez donc quelque chose de dynamique. Il va donc dire que vous avez été tué par des escargots. Je vais donc simplement copier, coller ce texte et le placer ici. Puis j'y allais, vous avez été tué. Vous avez été tué par un escargot. Cependant, cet escargot, parfois c'est un cochon, parfois c'est un nouvel ennemi que vous avez ajouté à votre jeu, donc ce n'est pas forcément un escargot. Ainsi, lorsque vous avez des textes dynamiques comme celui-ci qui doivent changer pendant le jeu, vous devez faire glisser ici et utiliser quelque chose appelé formater le texte. Utilisez-le plutôt. Si vous avez du texte dynamique qui n'est pas statique tout le temps, je vais coller mon texte à nouveau ici. La chose que vous voulez être dynamique. Ce texte est donc statique. Tout cela, la seule chose que je veux changer, c'est cet escargot ici. Parfois, c'est un cochon ou parfois c'est un autre ennemi que vous avez ajouté. Pour ce faire, vous devez écrire ces parenthèses bouclées. Ces deux parenthèses bouclées. Et au milieu, vous pouvez simplement écrire ce que vous voulez. Appuyez sur Entrée, et vous pouvez voir que vous disposez ici d'une variable que vous pouvez y brancher. Maintenant. Vous pouvez écrire ce que vous voulez à l'intérieur d'ici. Par exemple, ce que nous essayons de faire est de définir le nom de l'ennemi. Je vais juste appeler ça n'importe quel nom. Vous pouvez voir qu'il change en conséquence. Vous pouvez donc écrire n'importe quoi à l'intérieur d'une parenthèse bouclée. C'est le texte dynamique que nous devons modifier. Ce texte va être le nom de l'ennemi et nous n'avons pas vraiment spécifié de nom d' ennemi auparavant. Revenons donc à la structure. Rappelez-vous que nous avons cet animal, des informations sur les animaux, très utiles. Nous pouvons avoir des informations sur les animaux. Alors permettez-moi d'appeler celle-ci, pas d'escargot, laissez-moi appeler ça son nom. Nous avons donc le nom de l' ennemi ici. Et laissez-moi changer cela en ficelle. Les composés économisent et laissez-moi le mettre ici en haut. Maintenant, lorsque vous refaites cela, rappelez-vous que vous pouvez aller à l'ennemi, à base ennemie, à Compiler et à sauver. Maintenant, vous pouvez le voir chez tous les ennemis. Donc, aller à l'escargot, par exemple, dans la classe par défaut. Nous avons maintenant cette variable de chaîne de nom ici. Et tu peux juste appeler ça un escargot. Et allons voir le cochon ici et lui donner le nom. Appelons ça un choix. Vous pouvez même lui donner un nom comme vous pouvez l' appeler vainqueur ou ce que vous voulez faire. Mais rappelez-vous, c' est pour tous les cochons. Ils vont donc tous s'appeler Victor. Appelons ça un cochon. Et faisons-le. Bon, maintenant nous avons le nom ici et c'est une chaîne. Alors cliquons ici et disons chaîne. Et appelons ce nom d'ennemi, tangent dans une corde. Et maintenant, nous pouvons le relier ici. Et vous pouvez voir maintenant que vous pouvez piloter une variable dans ce format de texte. Maintenant que nous avons ceci, souvenez-vous que c'est l'interface utilisateur, donc nous devons aller à la manette du lecteur et ensuite l'appeler ici. Mais pour rendre votre code un peu meilleur, vous pouvez y aller, revenons au principal ici. Comme cet affichage, le message de mort apparaîtra chaque fois que votre état de santé est égal à 0. N'oubliez pas que vous êtes déjà en train de vérifier l'état de santé ici dans la mise à jour. Vous pouvez donc simplement vous simplifier la tâche au lieu de simplement faire un autre événement ici et la manette du joueur qui dit des mises à jour, un message de mort ou quelque chose comme ça. Vous avez déjà vérifié la santé. Donc, vous savez déjà à l'intérieur d'ici, chaque fois qu'il est 0 et chaque fois qu' il est 0, il va afficher ce message de mort. C'est ce dont vous avez besoin. Donc ici, dans le pourcentage, nous pouvons simplement dire égal à 0. Et nous pouvons créer une branche après ça. Et si c'est 0, vous allez appeler celui-ci appelé Afficher le message de mort. Nous pouvons donc simplement dire afficher ce message. Et maintenant, vous l'avez. Cependant, vous devez reconduire cela à travers tous ces événements. Je vais donc faire glisser ce nom d'ennemi voyage ici. Maintenant, il va aux pilotes de manette du joueur par ici, celui du client. Et ici, vous devez passer par celui-ci, mais vous ne pouvez pas le faire car il s'agit d'une fonction d'interface Blueprint appelée Update Health Bar. Je vais revenir au contrôleur d'interface appelé Update Health Bar. Et ajoutons ici une chaîne appelée nom de l'ennemi, Compiler et sauver l'ennemi ou la manette du joueur. Nous pouvons maintenant les connecter. Et rappelez-vous maintenant que c'est fini dans la base de joueurs. Revenons donc au joueur, à la base des joueurs. Maintenant, vous pouvez le voir dans la base de joueurs. Revenons au code. Et vous pouvez le voir ici maintenant lorsque nous mettons à jour l'état de santé. Donc, en fait, je vais devoir lui donner le nom. Alors, en cliquant ici, rappelez-vous que nous l'avons ajouté. Donc, celui-ci est en fait l'information du joueur. Nous l'avons ajouté aux informations ennemies ou aux informations sur les animaux. Donc, pour l'information sur les animaux, il faut l'appeler ici. Faisons donc ça dans le joueur. Comment appelons-nous cela ? N'oubliez pas qu'il est stocké dans la base ennemie, les plans de base. Est-ce que nous avons quelque chose que nous pouvons faire pour appeler le plan de base ennemi car ce joueur connecté est en fait un ancien que je dois supprimer. Alors avons-nous quelque chose à partir duquel nous pouvons appeler l'ennemi **** ? Et oui, nous l'avons fait, rappelez-vous que nous avons le contrôleur ennemi. C'est celui que nous avons défini ici. Chaque fois que nous recevons, comme lorsque nous recevons des dégâts, c'est de la part de l'ennemi. Nous avons donc déjà le contrôleur de l'ennemi et nous pouvons voir qu'il est contrôlé, et c'est ainsi que nous obtenons la base ennemie. Parce que maintenant on peut dire qu'il obtient une référence ennemie comme celle-ci. Et à partir de là, on peut dire des informations sur les animaux. Maintenant, nous pouvons l'obtenir ici. Et maintenant, nous pouvons le briser et nous pouvons obtenir le nom aussi simple que cela. Donc, cliquez sur ce nom ici, comme ça. Nous devons donc inclure cela dans notre code. Pour que nous puissions le voir ici, nous pouvons l'inclure ici. Laissez-moi déplacer tout ça comme ça. Laissez-moi juste inclure ici, on peut juste le nettoyer un peu. C'est un peu foiré en ce moment. Et nous pouvons brancher le nom à l'intérieur d'ici. Alors maintenant, qu'est-ce qui fonctionne correctement ? J'espère que nous pourrons bien sûr tester cela avant d'y croire. Alors maintenant, j'essaie juste de mieux les organiser. chose comme ça. Vous pouvez également rapprocher ceux qui se rapprochent de cette façon. Et double-cliquez ici pour créer un nœud de chemin de fer, rendre un peu meilleur. Comme ça ici. Et vous pouvez même, pour celui-ci, vous pouvez même double-cliquer ici et le faire à la place. Donc quelque chose comme ça, c' est un peu plus propre. Oui, ça a l'air bien. Nous pouvons donc maintenant compiler et économiser. Maintenant, nous définissons le nom. Il va passer par la manette du joueur. Ici. Il va passer, il va passer par l'événement aveugle, va passer par l'état de mise à jour, qui va ensuite passer par ici. Tout le chemin jusqu'à cette fin va passer par ici et définir ce nom d'ennemi. Et cela va être dynamique car vous avez déjà défini dans l'escargot quel est le nom de l'escargot et dans le cochon, quel est le nom du cochon. Maintenant, ça devrait fonctionner. Cependant, nous ne pouvons pas tester cela pour le moment. En fait, l'économie que nous avons déjà configurée pour afficher n'est que la réponse que nous n'avons pas encore définie. Laissez-moi juste frapper le payeur pour que je puisse mourir plus vite. Maintenant, vous pouvez voir que vous avez été tué par Cochon. Appuyez sur OK pour répondre. Et puis vous pouvez cliquer sur OK, nous avons un petit bug. Vous pouvez voir que le bouton ne peut pas être appuyé sur le dessus, OK, texte et n'est pressé qu'ici. Donc, résolvons ça. Et je veux que cela soit un peu plus grand. C'est un peu trop petit. Revenons donc au menu. Je vais voir le designer. voulez l'agrandir un peu, afin que vous puissiez cliquer sur l'image, celle-ci, agrandir la taille et agrandir la boîte verticale pour agrandir le bouton. Quelque chose comme ça. Maintenant, ce que nous pouvons faire c'est pour cela, d'accord, ici, rappelez-vous le truc comme lorsque des bugs sortent et que cela bloque votre bouton ici et qu' il n'y a pas de jeu de blocs. Vous devez descendre ici à la visibilité de ce texte et le définir sur aucun seul coup testable. Cela signifie que vous ne pouvez pas frapper ça avec votre souris. Votre souris va donc ignorer cela. Et de cette façon, vous pouvez simplement vous concentrer sur le bouton. N'oubliez donc pas de le faire avec des éléments bloquants ou des boutons. Par exemple, si vous créez une boutique en jeu ou quelque chose et que vous avez des icônes, vous devez le faire pour les icônes. Maintenant, vous pouvez voir que je peux cliquer sur le bouton même si je suis sur le texte. Je vais juste dire le nom ici. Donc maintenant, tout fonctionne correctement. La prochaine chose que nous voulons faire, c'est quand vous cliquez dessus, accord, nous allons répondre au jeu. 86. Respawn du joueur: Nous allons maintenant travailler sur la réponse pour le joueur. Revenons donc aux plans et au joueur, base de joueurs. Donc, à l'intérieur d'ici, nous avons codé tout cela, dégâts jusqu'à présent. Et nous avons mis les joueurs à mort partout où le joueur meurt, mais nous n'avons jamais précisé quand vous ne serez plus mort. Et nous voulons être morts chaque fois que vous cliquez simplement sur le bouton OK dans l'interface utilisateur principale. Alors, faisons-le d'abord. Passons d'abord à l'interface utilisateur principale ici. Et à l'intérieur d'ici lorsque vous cliquez sur ce bouton, alors cliquez sur le bouton ici et descendez vers le bouton. Ensuite, vous pouvez voir tous ces événements si décliqués lorsque vous cliquez sur le bouton, cliquez sur ce plus pour créer cet événement. Donc, chaque fois que vous cliquez sur ce bouton OK, que devrait-il se passer ? Je voulais juste que ma mort soit fausse. Maintenant, comme pratique, maintenant que nous sommes jusqu'à présent dans ce cours, essayez de le faire vous-même. Essayez de définir un, j'ai essayé de communiquer avec ce Blueprint et essayez de le définir sur faux vous-même. Si vous le souhaitez, si vous échouez ici, vous pouvez toujours suivre avec moi. Et maintenant, faisons-le ensemble. Vous pouvez suspendre la vidéo si vous souhaitez le faire vous-même. Ce que nous voulons faire maintenant, c'est que nous voulons communiquer avec la base de joueurs. Nous voulons obtenir les, les pons d'une manière ou d'une autre. Dans l'interface utilisateur, rappelez-vous que c' est côté client, donc chaque point, chaque joueur connecté possède cette interface utilisateur. Je peux donc simplement cliquer avec le bouton droit de la souris et dire : Get Owning layer pawn. Donc, Get Owning Player, obtient la manette du joueur, obtenez le pion du joueur propriétaire obtient le contrôle sur gages sur****. Frappez la plateforme propriétaire. Et vous pouvez voir qu'il est indiqué que le pion du joueur est associé à cette interface utilisateur. Et à partir de là, nous pouvons simplement dire Get Player Reference. Et ce que nous pouvons faire maintenant, c'est que nous pouvons appeler cette mort ici parce que cela est fait à l'intérieur de la base de joueurs bp. Nous pouvons donc simplement appeler cela les événements de la mort. Et c'est un message car il s'agit d'une fonction Blueprint Interface. Et nous pouvons juste le définir sur faux. Et n'oubliez pas que nous devons configurer ce message de mort pour qu' il soit masqué à nouveau parce que d'autres choses vont être affichées à l'écran. Définissez donc la visibilité sur cachée, comme ceci. Oups, comme ça. Bon, maintenant c'est corrigé. Bon, maintenant, nous avons dit que la mort était fausse. Revenons donc à la base de joueurs. Je ne suis pas sûr de ce que nous avons fait ici. Oui, nous aimons seulement Nous n'avons pas fait grand-chose. Nous avons seulement défini cela comme faux et vrai. Est-ce que c'est vrai, comme quand on est mort, ça va montrer ça pour te retourner un livre. Alors, ce que nous voulons faire ici, laissez-moi juste créer une branche. Alors, que doit-il faire quand vous ne l'êtes plus ? Donc, lorsque vous répondez. Donc, tout d'abord, je veux ramener ma santé à 100 parce qu'en ce moment, c'est 0. Je vais donc emmener ici dans les Propriétés, ma structure. Une fois encore. Je veux mettre mon sac de santé, alors placez les membres ici et sélectionnez-le, sélectionnez la santé. Maintenant, nous voulons mettre en place la santé. quoi voulez-vous le configurer ? Vous voulez le régler sur la santé maximale. Je vais donc le casser maintenant. N'oubliez pas que nous avons créé une variable de santé maximale. Donc maintenant, nous voulons simplement établir un lien qui rend la santé à l'intérieur d'ici. Laissez-moi juste cacher ces autres épingles. Ok, donc maintenant nous mettons la santé au maximum et nous sommes de nouveau en pleine santé. Alors connectons-le. Nous allons donc le relier au faux car si vous n'êtes plus mort, c'est ce que signifient les plis. Ici. Nous devons nous rappeler que nous devons remettre les informations du joueur ici comme ceci. Nous connaissons donc maintenant le plein revers sanitaire. La prochaine chose que nous devons faire, nous devons mettre à jour l'interface utilisateur car même si nous définissons cette variable, rappelez-vous, comme avant devoir mettre à jour la barre de progression. Cela montre donc que vous êtes à 100 ans de santé. Encore une fois, ce que nous pouvons faire pour cela, nous pouvons le copier, le coller ici. Alors, obtenez la manette, récupérez la manette du joueur. Donc ces deux-là ou moi, je peux juste l'écrire si vous le voulez. Nous avons donc la manette du joueur ici. Et ce que vous pouvez faire ici, c'est ce que la manette du lecteur, encore une fois, vous pouvez appeler la barre de santé des mises à jour. Voici le message. Je crois que c'était le message ici. Oui, c'était exact. Et est-ce que j'ai vraiment appelé ça comme un message ? Oui, je l'ai fait ici. Je veux juste voir si j'ai fait une erreur ici. Maintenant, c'est correct. Et pour le pourcentage, encore une fois, vous pouvez prendre la santé divisée par la santé maximale. Encore une fois, comme avant, prenez ceci, brisez-le et prenez cette santé et divisez-le par la santé maximale, comme avant. Donc, le même code ici. Ensuite, vous pouvez le connecter au pourcentage. Quant aux éliminés, nous n'en avons pas vraiment besoin. Comme si vous n'allez pas afficher cette interface utilisateur lorsque vous êtes en vie et que vous n'êtes pas mort. Donc, peu importe ce qu'il dit parce qu'il est caché de toute façon. Je ne vais donc pas vraiment le faire ici. Bon, donc maintenant nous avons mis à jour l'interface utilisateur. Quelle est la prochaine étape ? La prochaine chose, c'est que vous devez répondre. Alors où allez-vous, où répondez-vous ? Et rappelez-vous, comme il y a quelque temps, nous avons créé celui-ci, je pense qu'au début du cours, nous avons défini l' emplacement de l'apparition du joueur et nous l'avons réglé le départ du joueur. Utilisons donc ce jeu de lieux d'apparition de joueurs. Nous allons donc y frayer. Je descends, c'est ici. Définissons l' emplacement d'apparition du joueur comme celui-ci. Et la raison, comme si vous êtes confus, entendez parfois le joueur de set apparaître. Laissez-moi vous montrer. Ici, vous auriez pu sélectionner un message et aucun message. Et il s'agit d'une fonction Blueprint Interface. Et peut-être vous demandez-vous pourquoi n'avez-vous pas sélectionné ce message ici ? Pourquoi avez-vous choisi celui-ci ? Il n'y a pas comme si vous étiez comme si c'était le plan dans lequel nous le codons. Et si la fonction Blueprint Interface, si elle est réellement faite à l'intérieur de la base du lecteur. Donc, si je vais à cela, interfaces et à la base de joueurs ici, vous pouvez voir que nous sommes déjà arrivés à l'intérieur de l' emplacement d'apparition du joueur. Lorsque vous l'appelez à l'intérieur du Blueprint dans lequel vous l'avez créé, vous n'avez pas vraiment besoin de sélectionner un message. Le message est uniquement destiné à la communication. Et vous auriez sélectionné un message si vous l' appeliez depuis la manette du lecteur depuis un autre endroit, vous auriez sélectionné le message. Mais si vous l'appelez en soi, je vais simplement sélectionner celle-ci sans le message. Ok, donc maintenant tu engendres le joueur. Et rappelez-vous que nous avons toujours le mode dieu. Nous n'avons jamais supprimé le mode dieu ici. Le mode dieu n'est supprimé lorsque vous n'êtes pas en train de mourir, mais lorsque vous êtes mort. Ne définissez jamais ce paramètre sur faux. Alors laissez-moi copier ce code ici que le délai, maintenant après le retard ici. Donc la raison pour laquelle je donne au joueur un retard, donc nous répondons et vous avez réellement le mode Dieu pendant que vous répondez parce que je ne veux pas recevoir dégâts immédiatement lorsque je réponds. Je donne donc au joueur une chance de répondre sans subir de dégâts. Et je crois que c'était tout. Je ne sais pas si j'ai oublié quelque chose. Laissez-moi simplement cliquer sur Play. Voyons ce qui se passe. Alors, quand nous sommes en train de mourir, laissez-moi aller voir le cochon. Nous mourrons plus vite ici. Nous sommes morts et nous disons que vous avez été tué par la presse Pig. D'accord. Quand j'appuie sur OK, vous pouvez voir que je réponds. Et laissez-moi juste mourir à nouveau pour voir si c'est bloqué ou non. Il fonctionne correctement. Encore une fois, vous pouvez voir que ces derniers sont en butte. Vous pouvez à nouveau essayer de redimensionner et de réduire l'échelle, mettre à niveau les boîtes de collision. Ce sont ceux qui les font parfois boguer dans les rampes. Maintenant, quand je clique sur OK, vous pouvez voir que je peux répondre. Je veux vraiment que mon joueur clignote lorsque je réponds parce que je veux savoir que je suis en mode Dieu lorsque je réponds. Permettez-moi donc de prendre cet effet clignotant, que nous avons créé ici, et nous l'avons ajouté ici, en fait des dégâts par effets. Laissez-moi en copier une copie ici et laissez-moi la coller juste après, juste avant. En fait, juste après avoir répondu, je peux le faire ici. Donc, quand je réponds, je joue cet effet. Et puis je retire ce mode Dieu après cet effet. Laissez-moi cliquer sur Play. Et quand je meurs, je clique sur OK. Vous pouvez voir que j'ai cet effet de mode Dieu. Et puis je réponds, je pense que c'est un petit effet. Je vais vraiment cacher ces boîtes de collision. Encore une fois, nous n'en avons plus vraiment besoin , je ne pense pas. Laissez-moi donc cliquer sur cette collision d'attaque et la cacher dans le jeu. Et allez dans la base ennemie ici et cliquez sur cette collision et cachez-la également dans le jeu, compilez et sauvegardez tout. Maintenant que tout fonctionne, vous pouvez essayer de tester le jeu et voir si tout fonctionne comme il se doit. Nous pouvons toujours prendre ce client. Donc, avant de finir, j'ai vraiment envie d' écrire avec les deux. Ici, voyez si le client et le serveur peuvent voir ce qui se passe. Vous pouvez donc voir que le serveur peut réellement voir le client mort. Et en tant que serveur maintenant, il est un peu difficile de les avoir tous les deux sur un seul écran. Donc maintenant, les deux sont morts. Et si je clique sur OK lorsque le client répond, accord, et si je clique sur OK, c'est le serveur, je réponds également et je clignote correctement. Quand j'attaque, ça marche quand je vérifie ici, ça marche quand j'ai réveillé l'échelle. Il fonctionne pour les deux. D'accord. Laissez-moi l'essayer en tant que client maintenant. Jouez en tant que client pour vous assurer que tout fonctionne avant de passer à la sélection de Tsarina ici sur ce client. Et sur le deuxième client, je vais sélectionner Luke. Et laissez-moi entrer dans cet ennemi. Ici. Je suis mort. Je vais marcher ici. Je l'ai aussi fait. D'accord. Il semble donc que tout fonctionne maintenant. Et remonter. La lettre fonctionne également. Bon, donc pas de livres pour le moment, donc c'est cool. Tout fonctionne comme il se doit. Nous sommes donc prêts à aller de l'avant et travaillons actuellement sur l'ennemi afin de pouvoir tuer l'ennemi. 87. Corriger les insectes existants: Nous continuons, nous avons quelques livres que nous devons réparer. Et je les ai tous écrits ici. Alors que je teste le jeu et que j'ai trouvé les sept dollars et je pense que nous devrions les réparer avant de continuer. Le premier est donc un insecte mortel lors d'une attaque. Donc, si je vais ici et que je joue au jeu, et que je suis entré dans les ennemis, alors laissez-moi perdre ma santé ici. Maintenant, si j'attaque juste avant de mourir, vous pouvez voir que je fraie comme ça. Et c'est censé être un tombeau. Et si vous le souhaitez, vous pouvez essayer de résoudre ce problème vous-même. Essayez de penser où cela pourrait être ? Comme ? Que se passe-t-il avant ? Parce que lorsque nous attaquons et lorsque nous mourrons en même temps, nous revenons à cet état d'inactivité. Alors essayez de penser, si vous voulez vous-même où ce bogue pourrait se produire. Vous pouvez également utiliser un nœud de chaîne d'impression pour essayer de déboguer votre code. Toujours agréable d'utiliser un nœud de chaîne d'impression. Cliquons sur OK, et laissons ça. Donc, pour corriger ce bogue maintenant, passons au code d' attaque car il se produit essentiellement lorsque nous attaquons. Nous faisons donc que l'attaque est vraie lorsque nous attaquons. Et après un certain temps, nous mourons entre les deux ici, alors nous attaquons et nous mourrons. Et rappelez-vous que nous avons ceci ici. C'est l'attaque qui est terminée. Nous retardons le code avec cette animation et après le code, nous le définissons sur false. Donc, quand l'attaque est définie sur false, cela met notre personnage dans l'état inactif, donc cela se produit ici. La seule façon dont nous avons vérifié la profondeur est ici, de sorte que nous ne pouvons pas attaquer pendant la mort. Mais que se passe-t-il si nous avons déjà attaqué ? Et si nous sommes déjà là et que nous sommes morts ? Ce n'est pas en cours de vérification pour le moment. Nous finissons donc ici et nous finissons par être en état d'inactivité. Nous pouvons donc essayer de prendre cette année est morte, ce booléen et essayer de vérifier ici aussi. Vous pouvez soit vérifier ici, soit consulter ici. L'attaque doit donc être fausse. Alors, faisons-le ici. Je pense que c'est le meilleur moyen. Voici donc une attaque. S'il est défini sur false, vous vérifierez notre utilisation. Vous êtes mort ? En fait, notons cela parce que c'est mieux à lire, je crois, par moi-même. Donc, si vous n'êtes pas mort, encore une fois, vous pouvez aller de l'avant et idoler. Cependant, maintenant, si vous êtes mort, copions ceci et mettons en état de mort. Tout comme ça et cela devrait résoudre le problème. Donc, si nous jouons maintenant et que je perds la santé, j'attaque en attendant. Je ne suis pas mort. Je le prends en attendant. Vous pouvez voir maintenant qu'il a résolu le problème. Et si je clique sur OK, je répondrai. C'est donc le premier livre que nous avons corrigé ici. C'est donc corrigé. La prochaine est que les animaux sont coincés sur la rampe. Et si je ne fais que copier, collez quelques animaux et que nous l'avons déjà vu auparavant là-dedans. D'autres leçons et je veux juste résoudre ce problème. Donc, si je ne fais que copier, collez beaucoup d'ennemis, et j'espère que cela sera très rapidement. Maintenant, nous pouvons voir ici que ce cochon est coincé sur la rampe. Le cochon est en train de tomber dans la pièce. Et l'escargot le fait parfois. Donc, l'escargot, vous pouvez voir l'escargot supprimer ici. Ils sont donc parfois pompés. Laissez-moi régler ça avant de continuer, je suis juste un peu agacé par ce bug. Allons donc voir les ennemis. Et le fait est que nous avons trouvé une solution avant, donc nous avons juste besoin de faire la même chose. Et la solution était que si je me contente d'aller à l'escargot, par exemple, nous pouvons commencer par celui-ci. La collision ici est en fait cette capsule. Voici ce qui est en train de le faire. Donc, si nous augmentons la taille de cette capsule, cela évitera le bug. J'ai donc trouvé que 35 sur 35 de longueur, en augmentant cette capsule à 35 au minimum, résoudra le problème. Et rappelez-vous que vous devez traîner l'escargot. escargot va flotter comme ça. Donc, traîner l'escargot, peut-être quelque chose comme ça. C'est peut-être trop bas. Peut-être que c'est un peu trop bas. Je pense. Moins, moins 25 peut-être. Bon, donc quelque chose comme ça. Maintenant, l'escargot est ici et vous remarquerez que le vieux escargot ne se dérange plus si vous le laissez courir pendant un certain temps maintenant. Et faisons la même chose avec les cochons. Je vais voir le cochon ici. Et je vais cliquer sur la capsule ici et augmenter la taille à 35 par 35. Enlevez aussi un peu plus ce cochon. Et laissez-moi essayer de voir à quoi cela ressemble. Il court sur le sol. Ça a l'air bien. Et maintenant, si on le laisse jouer pendant un certain temps, ça ne va plus s'embêter. Donc, si les cochons vont partir. Donc, cette rampe, vous pouvez voir qu'elles fonctionnent bien. Cela devrait donc être corrigé maintenant, c'est le corrigé pour cela. Donc, augmentez la capsule , puis traînez ce cochon. dirait donc qu'ils courent toujours au sol. Cela corrige donc le deuxième problème que nous avons ici. La troisième est que les ennemis ne détectent pas la collision d'attaque. Nous avons déjà eu quelques problèmes avec cela, mais je ne l'ai pas regardé très sérieusement jusqu'à présent. Ils peuvent voir si j' attaque par la technologie ici, vous pouvez voir qu'il n'y a pas de détection de mon attaque. Et ils ne détectent mon attaque que si je m'approche très près. Donc, si je suis à l'intérieur de l'ennemi, ils me détectent. Mais si je suis un peu loin de l'ennemi, ils ne seront pas attaqués. Bon, il faut donc régler ça. J'ai donc fait de mon mieux pour utiliser cette collision, collision d'attaque SR. Mais comme cette collision ici contient le code où nous revenons à l'interface, laissez-moi fermer l' escargot et le cochon. Et si je vais en collision ici, rappelez-vous que nous avons créé ce code là où nous appliquons des dégâts. Par conséquent, cette collision infligera toujours des dégâts. Donc, comme le faire de la meilleure façon, nous obligerons à en faire un autre appelé la boîte de tête où nous avons frappé l'ennemi. Il suffit donc de créer une nouvelle collision. Et créons une région sphérique avec celle-ci, appelons-la « hit box ». Nous allons donc l' utiliser comme une boîte à succès. Je vais juste le faire sortir de cette collision ici jusqu'à cette capsule. La première chose est donc d'aller ici dans la capsule. Nous allons donc vérifier nos collisions pour être sûrs maintenant que nous avons cette boîte à succès. Donc, les collisions pour cette capsule, la seule chose que nous voulons avec cette capsule, et vous pouvez voir ici la raison pour laquelle je suis, je crée cette boîte à succès et je n'utilise pas cette capsule parce que rappelez-vous cette capsule, nous avons en fait augmenté la taille ici. C'est la taille de la capsule et je pense que la boîte de frappe est beaucoup trop grande, comme si nous pouvions utiliser cette capsule pour frapper l'ennemi. Mais je pense que cet argent est beaucoup trop gros et je n'aime pas ça. Vous pouvez donc voir si je clique dessus et que je clique sur caché dans le jeu, si je le retire, vous pouvez voir la taille de cette boîte de frappe. Et je pense que c' est beaucoup trop gros, comme une tête pour un escargot. Donc je ne vais pas utiliser cette boîte de frappe et on peut diminuer la taille sinon il y aura coincé à l'intérieur de la rampe. Laissez-moi le cacher à nouveau ici dans la capsule d'interface. En fait, c'était à l'intérieur de l'escargot ici, de la capsule, et je vais le cacher à nouveau dans le jeu. Bon, bienvenue dans la base ennemie. Donc, ce que nous voulons faire cette capsule, ignorons tout d'abord. Ce que vous ne voulez pas ignorer, c'est le monde statique et la dynamique mondiale. Et c'est juste pour ne pas faire tomber le point à travers le sol parce que le sol, ces collisions d'enfants terrestres ici, sont statiques du monde. Et si vous l'enlevez simplement, vous tomberez au sol. Et comme je n'utilise que ça pour la collision de cette capsule ici, je vais supprimer, générer des événements de chevauchement. Je ne l'utilise pas pour des événements de chevauchement, donc je l'utilise simplement pour bloquer ces puits statiques et dynamiques afin qu'ils ne tombent pas dans le sol. Donc, essentiellement, nous n'utilisons pas vraiment cette capsule pour des événements de chevauchement. Revenons aux Heat Bucks. Donc, cette boîte de tête que je vais cliquer sur Non, personnage peut-il monter ? Je vais cliquer sur Non. Et je suis en train de payer ça. Oups, pas de collision. Je vais cliquer sur Control Z et personnaliser ici. Et je vais tout ignorer , sauf la dynamique mondiale. Et rappelez-vous ici dans le joueur, alors ils attaquent la coalition que nous avons. Si vous descendez et que vous regardez le type d'objet, cela vaut la peine d'être dynamique. Et c'est pourquoi je suis, je me chevauche avec dynamique parce que je veux chevaucher ma collision d' attaque. Ceci est réglé sur une dynamique mondiale. D'accord ? C'est donc ce que je chevauche les listes. Alors maintenant c'est correct et laissez-moi passer au sprite, assurez-vous qu'il ne génère aucun événement de chevauchement. Et je vais à la collision ici. C'est donc ce qui nuit à notre étang, qui est notre joueur. Et je vais vraiment changer cela au lieu de la dynamique mondiale. Je vais changer cela par un **** parce que nous n'utilisons pas cette puissante capsule ici. Je peux donc tout aussi bien changer cela jusqu'à un certain point. Il s'agit donc essentiellement de notre collision Po1 ici. Bon, alors, rappelons-le. N'oublions pas que nous l'avons mis en gage ici. Alors, permettez-moi d'aller maintenant à la base de joueurs. Et ici, sur le composant capsule, assurez-vous d' ignorer à nouveau tout. La seule chose est la statique mondiale et la dynamique mondiale avec laquelle vous vous superposez. Et rappelez-vous, nous venons de changer celle-ci, cette collision qui va nous nuire à ****. Nous avons donc besoin de le chevaucher ailleurs, il n'y aura aucun dommage. Ainsi, nous sommes en train de le chevaucher. Et pour le sprite, il ne générera aucun événement de chevauchement. Et pour cette collision d'attaque, elle va simplement se chevaucher avec la dynamique mondiale. Et revenons en arrière et voyons si c'est exact. Il se chevauche donc avec la dynamique mondiale. Et c'est notre boîte à succès et notre boîte de tête est réglée sur la dynamique mondiale. C'est donc exact. Il y a maintenant des chevauchements les uns autres parce que c'est cette dynamique, c'est quelle dynamique. Et ils se chevauchent tous les deux avec la dynamique mondiale, ce qui signifie qu'ils se chevauchent les uns avec les autres. Cette collision devrait donc être totalement correcte maintenant. Alors cliquons maintenant sur Play avant de le faire, vous pouvez cliquer sur cette collision d' attaque. Et vous pouvez supprimer les jeux cachés pour que vous puissiez le voir. Et il peut aussi aller à l'ennemi, cliquer sur la boîte de tête. Et vous pouvez essayer de supprimer un jeu caché. Et passons aussi au cochon et réglons cette boîte cachée. Et pour cette boîte de tête, je vais juste faire peut-être la même chose que cette taille de collision ici, donc 25. Encore une fois, vous pouvez maintenir la touche Maj enfoncée et cliquer avec le bouton droit de la souris pour le copier et le coller ici. Et ensuite, je vais placer le même endroit ici. donc avec le bouton droit. Vous pouvez le copier ici, le coller ici, et maintenant la collision est là. C'est donc la boîte de tête. Faisons la même chose pour l'escargot. Alors laissez-moi aller à la fenêtre d'affichage, cliquez sur la boîte de tête en fait la collision copiez ceci, collez-le sur la boîte de tête. Copiez ceci ici, c'est l'emplacement, et collez-le sur la boîte de tête. Cliquez sur Jouer maintenant. Et maintenant, vous pouvez voir que ce sont les boîtes de tête maintenant qui sont bien meilleures qu'avant. Maintenant, vous pouvez voir que je suis endommagé comme ça. Bon, donc c'est bien. Laissez-moi réessayer. Vous pouvez voir que je suis vraiment endommagé ici. Comme si je suis sur cette collision, c'est en fait un autre bug, alors ne soyez pas piégé ici. Alors laissez-moi juste, vous pouvez voir ici, je ne suis pas endommagé en ce moment. Si je me tiens à l'intérieur de ma boîte d' attaque comme ça, vous pouvez voir qu'il fonctionne donc qu'il n'entre pas en collision. Cependant, il y a un petit, il y a un autre bug. Et si j'attaque maintenant, vous pouvez voir que je frappe mes ennemis. Bon, donc ça fonctionne complètement maintenant. Il y a un autre bug maintenant. Vous pouvez voir si je suis endommagé. Maintenant, je suis en fait endommagé par ma religion d'attaque, ce qui n'est pas censé se produire. Cela, pour une raison quelconque, cela n'arrive que lorsque je suis endommagé. Vous pouvez voir. Mais si je viens de réinitialiser le jeu, c'est notre prochain bloc. Donc, si je viens de réinitialiser le jeu et que je viens de me déplacer ici, vous pouvez voir que je ne suis pas endommagé. Je dois retirer certains ennemis. En fait, j'en ai beaucoup trop. Permettez-moi de supprimer beaucoup d'entre eux maintenant. C'est un peu, c'est un peu difficile à montrer avec tous ces centimètres. Alors, laissez-moi juste mettre un escargot ici à la place. Quelque chose comme ça. Et laissez-moi cliquer sur Play now. Donc maintenant, si je suis sur un escargot, vous pouvez voir que je ne suis pas endommagé sur ma boîte de collision d'attaque. Cependant, chaque fois que nous sommes endommagés, nous sommes tout à coup endommagés. Une autre attaque, une boîte de collision. Il y a un petit insecte. Tout à coup, des changements. Et c'est en fait notre prochain. Ici, la boîte de portée de l'attaque ennemie. Tout d'un coup, il nous attaque dans notre collision d'attaque. J'ai donc passé une demi-heure à essayer de voir ce que cela pourrait être. Et je pensais que c' était peut-être les boîtes de collision. Et ce n'était pas vrai comme les boîtes de collision, elles sont correctes. Il n'a pas de sens qu'il s'agisse d'un bug là-bas. Et en fait, c'est une petite erreur stupide de mon côté. Peut-être que vous vous en souvenez déjà pendant que vous faites les vidéos. Je l'ai peut-être oublié, mais vous pouvez essayer de le réparer vous-même si vous le voulez. Mais tout d'un coup, comme quand nous sommes attaqués, nous sommes tout à coup juste recevoir au sexe sur notre boîte de collision. Et la raison en est que si vous allez vers l'ennemi, accédez au graphique des événements. N'oubliez pas que nous avons fait ces événements de collision. Ainsi, lorsque notre joueur entre en collision avec l'ennemi, nous infligeons des dégâts. Cela se passe donc correctement maintenant, comme depuis le début. Donc, chaque fois que nous entrons dans l'ennemi, et cela ne signifie pas pour notre boîte de collision, mais nous n'entrerons pas dans l' ennemi avec notre capsule. Tout d'un coup, nous infligeons des dégâts à celui-ci également. C'est parce que nous n'avons jamais dit quand arrêter d'appliquer des dégâts parce que nous avons ce chevauchement final. Mais cela ne donne pas vraiment l' impression que c'est correct. Mais ici, rappelez-vous que nous avons commencé à appliquer des dommages. C'est ce qu'il est en cours d'exécution. C'est donc vrai. Et si c'est vrai, cela va causer des dégâts. Mais lorsque nous la définissons sur false, nous n'avons jamais précisé ce qu'il nous n'avons jamais précisé ce qu' faire ici lorsqu' il est défini sur false, de sorte qu'il continue d' infliger des dégâts tout le temps. En fait, nous devons lui dire d'arrêter d'infliger des dégâts. Laissez-moi le faire. Et c'est juste une petite erreur de ma part. Je pense que je parlais juste dans cette vidéo et je ne l'ai pas remarqué. Permettez-moi de promouvoir cela à une variable, cette minuterie promue et l'appelle appliquer des dégâts, manipuler. Ok, donc prenons cette poignée et disons effacer et invalider le minuteur Par poignée. Maintenant, il va arrêter cette minuterie chaque fois que nous définissons cette valeur sur false. Ainsi, chaque fois que nous quitterons le composant, les composants de collision vont le régler false et ils ne causeront plus de dégâts. Nous devons donc entrer en collision avec elle pour infliger les dégâts. Essayons donc de cliquer sur Jouer maintenant. Et maintenant. Cela fonctionne correctement comme avant. Mais si je suis endommagé et que je me tiens devant elle, vous pouvez voir que ça fonctionne toujours. Et c'est parce qu' il doit entrer à nouveau dans ma capsule avant qu'elle ne puisse causer des dégâts. Ok, donc ça fonctionne maintenant comme il est censé le faire. C'était le prochain bug ici. C'est corrigé. La prochaine est que le joueur ne peut pas être endommagé sur la corde. Donc, si je suis debout sur l'icône de corde a été endommagée, et c'est un bug très facile à corriger. Donc, si vous allez simplement à la base ennemie et que vous allez à la collision ici, comme si l'ennemi entre en collision avec le ****, mais vous voulez également entrer en collision avec le client en tant que joueur. N'oubliez pas que nous l'avons fait sur mesure. Donc, c'est juste corrigé. C'était donc une solution très rapide. Ok, l'autre chose, c'est que maintenant, permettez-moi d'ajouter d'autres ennemis autour des coups pour que nous puissions voir l'argent beaucoup plus rapidement. Laissez-moi donc cliquer sur Play. Ok, donc si je suis là, vous pouvez voir quel est le problème. Je suis endommagé comme ça. Mais je veux vraiment pousser mon joueur de corde ici. Donc, si je vais sur ma couche, base de couche et que nous avons des dégâts, donc nous recevons des dégâts, mais je veux que mon joueur cesse d'être sur la corde. Donc ce que je vais faire ici en escalade, je vais prendre celle-ci, c'est de l'escalade. Rappelez-vous que nous avons inventé ici dans notre code d'escalade, nous avons fait que celui qui s' appelle la choline quand vous grimpez. Donc, si je peux le trouver réellement. Maintenant, celui-là, nous sommes arrivés ici. va de même ici, de l'escalade. Nous avons fait cet ensemble qui grimpe. Alors, utilisons-le ici. Il suffit donc de demander le code, si vous subissez des dommages. Est-ce que vous grimpez déjà si vous l'êtes, nous voulons faire autre chose. Si ce n'est pas le cas, allons-y et faisons tout ce que nous avons fait avant. Donc, si vous êtes déjà en train d'escalader, laissez-moi prendre cette escalade et le mettre à faux parce que je ne veux plus grimper. Et puis revenons en arrière et faisons n'importe quoi pour essayer de voir ce que cela fait. Alors, laissez-moi aller sur ce stand de corde ici. Et vous pouvez voir maintenant qu'il fonctionne correctement. Il y a maintenant un petit bug que nous aimons quand nous nous déplaçons, c'est comme mettre nos flip books en pause pour que les animations ne soient pas jouées. Et rappelez-vous, en tant que client, si vous revenez à votre code, vous aviez quelque chose ici. Nous avons utilisé ce qu'on appelle pause, escalade, flip book. Et nous utilisons cette pause chaque fois que nous ne bougeons pas sur la corde, nous posons le flip book afin qu'il n'ait pas l' air de grimper pendant que vous êtes immobile. Nous devons donc le faire également. Alors, laissez-moi descendre ici et continuer ici. Au lieu de simplement faire ça, on peut remonter. Excellent à celle-ci. Il peut grimper ici. Prenons celui-là aussi. Donc, l'ensemble peut grimper pour être faux. L'ensemble grimpe pour être faux et réglé. Voyons la pause ici. Pause, escalade, flip book pour être faux. Ainsi, la canette grimpe et flip book de pause est réglé sur faux. Laissez-moi simplement déplacer le code, quelque chose comme ça. Donc, nous faisons cela, nous venons de retirer le mécanicien d'escalade. Et nous sommes, je pense que nous sommes prêts à y aller maintenant. Essayons donc de baisser la corde. Et vous pouvez voir que ça fonctionne correctement maintenant et je peux encore sauter sur la corde. Et si je fais ça, restez là et soyez endommagé. Si cet escargot me frappe. Donc, quand je suis endommagé ici, vous pouvez voir que ça fonctionne toujours. Bon, donc ce bug est corrigé maintenant, la mort et les dégâts. Et il y a encore un petit livre, comme si vous étiez debout sur la corde. Vous pouvez voir, je ressemble à ça. Si je meurs vraiment sur la corde. Et cela se produit essentiellement parce que si nous revenons ici et passons à IsClient étant en fait la fonction de déballage grimpe si je peux le trouver ici. Donc, quand il grimpe, c'est faux. Il va le régler ici. Laisse-moi juste me cacher. Cette année. Il va mettre notre carnet de saut à sauter ici. Mais nous ne voulons pas faire cela. Nous voulons jouer la mort. Essayons de prendre ça. Boolean est mort ici. Voyons si vous êtes déjà mort ici, en fait je ne vais pas dire ça parce que c'est mieux à lire. Nous allons donc les relier pour l'instant. Et maintenant, nous disons, est-ce que vous grimpez ? Oui, je le suis. N'êtes-vous pas tout à fait ainsi si vous êtes frappé par un ennemi et que vous tombez de la corde , ce sera faux. Vous ne grimpez plus. Ok, on ne joue plus à Bing. Alors, vous allez vérifier, êtes-vous mort ? Si vous n'êtes pas mort, d'accord. Allons de l'avant et faisons simplement la même chose qu' avant, là où vous tombez. Cependant, si vous êtes mort. Laissez-moi juste traîner ça ici. Si c'est vous, laissez-moi juste frapper ça. Si vous l'êtes maintenant, prenons ceci ici, le mode de mouvement défini. Et je vais le mettre en marche au lieu de tomber à nouveau en collision, nous devons revenir à cette collision sur gons parce qu'avant d'être le joueur d'escalade, nous devons retourner au pion canal de collision ici. Et au lieu de régler le flip book pour sauter l'animation, nous pouvons simplement dire mode mouvement. Et que les modes de mouvement définissent les états des mouvements pour le joueur ici dans la base de joueurs int, définissent le mode de mouvement comme mort. Donc maintenant, nous sommes morts parce que ça va être faux, qui signifie que si vous n'êtes pas mort, d' accord, vous allez faire la même chose. Cependant, si vous allez le faire ici où vous réglez le mode Marche ou le mode mouvement sur Marche, puis vous allez le mettre à mort ici. Alors, jouons ce code. Permettez-moi de créer un peu plus d'ennemis juste pour que nous puissions le tester plus rapidement. Et maintenant, nous allons être un peu endommagés ici. Et maintenant, sur la corde, on voit que je suis vraiment un tombeau. Maintenant, cela fonctionne correctement et si je clique sur OK, et que je peux me promener, je peux faire la même chose qu'avant. Je suis poussé de l' échelle. Si je suis debout dessus. Je veux dire, vous pouvez simplement faire en sorte que votre jeu ne soit pas poussé vers le haut de la lettre. C'est à vous de choisir. Vous pouvez également recevoir des dommages sous lettre. Eh bien, je pense que c'est beaucoup mieux si vous la repoussez de la lettre et vous recevez ce tombeau chaque fois que vous mourrez. Cela fonctionne donc correctement maintenant. C'était donc le sixième. Et le septième est Répond Ok, le bouton est focalisable. Ce que je veux dire par là, c'est si je clique ici, puis je meurs. Et c'est quelque chose dans l'interface utilisateur. Alors volez, teignez et cliquez sur l'espace sur mon clavier ou sur Entrée. Vous pouvez voir que je clique sur le bouton. Donc, si je clique sur l'espace et si vous ne voulez pas le faire, je ne veux pas le faire pour ce jeu. Vous pouvez donc accéder à l'interface utilisateur, aller dans le menu principal. Maintenant, dans ce menu principal, le menu I. Et ici pour ce bouton, si vous cliquez dessus, il y a quelque chose appelé est focalisable et dit parfois que le bouton ne doit être cliqué que sur la souris et jamais clavier focalisable. Et c'est ce qui se passe. Donc, si je clique dessus avec ma souris, puis plus tard, nous pouvons simplement cliquer avec le clavier comme de l'espace pour cliquer. D'accord. Vous pouvez le conserver si vous le souhaitez, mais je vais le supprimer, ce qui signifie que je ne peux cliquer dessus qu'avec ma souris. Je ne peux pas cliquer sur Entrée sur mon clavier ou sur un espace. Et parfois, c'est ennuyeux, comme si vous avez un système d'inventaire, vous suffit de cliquer sur les onglets avec votre souris et non avec votre inter et votre espace. Peut-être essayez-vous de sauter dans le jeu. Et vous ne pouvez pas sauter parce que c'est concentré et qu'il clique, d'accord, au lieu de sauter et ainsi de suite. Ça va donc faire un peu de gâchis. Mais dans ce cas, il est normal de l'avoir aussi focalisé lorsque vous êtes mort. Il peut donc simplement cliquer sur l'espace pour répondre. Mais je pense que je vais juste l'enlever. Et je ne fais que vous enseigner cette interaction ici pour que nous puissions supprimer cela est focalisable et compilons et sauvegardons, et c'était tout. Donc, si nous cliquons simplement, jouons aussi en tant que serveur écouté. Nous ne l'avons pas fait simplement pour nous assurer que je suis sur la lettre de l'échelle et je le fais. Cela a l'air correct. Et si je prends juste le client et voyons ce qui se passe. Permettez-moi de minimiser un peu cela pour qu'il y ait de la place. Ok, donc maintenant nous sommes le client et le client est également repoussé. Le serveur peut le voir. Bon, donc ça fonctionne correctement. Et laissez-moi voir si je meurs ici. Et je le sais. Ok, donc ça fonctionne correctement. Maintenant, cliquons sur OK, et fermons ça. Tous les bogues sont donc corrigés et vous pouvez voir cela ne prend pas trop de temps pour corriger ces bogues, mais c'est toujours agréable d' essayer votre jeu. Si vous voulez déboguer, utilisez le nœud de chaîne d'impression, essayez de voir s'il s'agit de votre collision, essayez de vérifier avec Booléens. Par exemple, si les joueurs que nous ne voulons pas faire une certaine action. Il y a donc certaines choses que vous pouvez vérifier. Et maintenant, je peux fermer ça. Nous avons corrigé tous les bugs. Sauvons tout et passons à la leçon suivante. 88. Supprimer la poursuite des joueurs lors de la mort: Maintenant, faisons cesser à l' ennemi de poursuivre le joueur chaque fois que c'est le joueur. Passons donc à notre dossier Blueprints, à l' ennemi et à l'intérieur de la base ennemie. Ainsi, à l'intérieur d'ici, nous avons cette logique où les ennemis poursuivent le joueur, mais l'ennemi poursuit toujours le joueur chaque fois que les ennemis qui sont les joueurs que nous devons faire en sorte que l'ennemi cesse de goûter la poursuite du joueur chaque fois que les joueurs le font. Alors, faisons-le ici. Nous avons cette logique de voir l'IA passer à, alors nous passons au personnage et à ce que l'ennemi atteint le joueur ici en cas de succès. Au lieu de simplement passer directement, essayons de vérifier si le joueur est mort ou non, car nous l'avons déjà. Ce sera donc facile. Permettez-moi de déplacer tout cela de côté pour que nous puissions écrire du code ici. Ce que je veux faire, c'est juste vérifier si c'est le joueur, rappelez-vous que nous avons déjà cette manette. Et on peut dire que c'est un pion contrôlé. Ici, nous avons besoin d'une référence à la base de joueurs. Donc dire obtient la référence du joueur. Donc, tout comme ce que nous avons fait auparavant. Et connectons-le ici. Et ici, je veux utiliser celui s'appelle, c'est que nous l'avons fait. Alors prends ce booléen. Et écrivons un autre booléen juste pour que ce soit mieux pour la lisibilité. Et prenons ça et disons branche. Alors maintenant, nous demandons si le joueur n'est pas mort, alors allez-y et faites ce que vous avez fait auparavant. Je vais donc dans ce nouvel endroit. Toutefois, si le joueur est mort, nous voulons faire autre chose. Maintenant, permettez-moi de faire glisser ce code un peu plus près. Maintenant que nous avons ce code ici. Peut-être quelque chose comme ça. Ok, laissez-moi me rapprocher maintenant. Bon, donc nous avons ce code ici. Et maintenant, nous pouvons dire si le joueur est mort, donc pas mort est faux, ce qui signifie que le joueur est mort. Nous voulons simplement nous souvenir avant cela avec la logique du talon, alors nous avons arrêté leur arbre comportemental. Maintenant, nous pouvons simplement faire le contraire. Nous pouvons donc commencer par la logique. Il peut donc simplement copier coller ceci si vous voulez simplement le copier-coller ici. Et connectons-le. Nous voulons donc commencer la logique. Une fois encore. Nous voulons commencer l'arbre comportemental. Et maintenant, il va repartir en boucle. Essayons donc de cliquer sur Play et de voir si cela fonctionne. Jouons ici en tant que serveur. Je vais donc frapper quelque chose ici. Je vais me faire frapper. Donc, en ce moment, ils me poursuivent. Et en fait, je vais lire tous ces deux-là . Maintenant, je meurs. Et voyons s'ils partent. Vous pouvez voir qu'ils ne poursuivent pas vraiment beaucoup d'autres. Tous ceux que j'ai touchés se sont déroulés à leur propre chemin. Donc, il fonctionne correctement maintenant. Nous avons donc cessé de courir après le joueur. Chaque fois que, les joueurs qui n'ont pas réussi, nous vérifions si le joueur est mort ou non. Et si le joueur n'est pas mort, nous allons faire une boucle cet événement que nous avons fait auparavant. Cependant, si les joueurs que nous allons simplement exécuter à nouveau l'arbre comportemental, ce qui est ici, ce qui signifie que nous allons courir pour trouver emplacement aléatoire et ce que nous avons fait auparavant, avant de toucher l'ennemi . 89. Mort et réveil d'ennemis: Alors, ici, à l'intérieur de la base intime, travaillons maintenant à la mort ennemie. Nous avons donc terminé la mort du joueur, mais maintenant nous avons besoin de la mort ennemie. Alors, tout comme le joueur, allons-y et créons un nouvel événement ici. Et faisons simplement cela à l'intérieur de l' interface Blueprint. Allons donc aux interfaces de la base ennemie, et ajoutons une nouvelle fonction appelée mort. Et encore une fois, nous avons besoin d'un booléen comme avant, et appelons que B est mort. Et c'est encore en train de s'éteindre. Je vais le supprimer. Je ne sais pas pourquoi cela arrive si souvent en ce moment. Disons que B est mort. Et appelons ça la mort. Tout comme le joueur. Revenons maintenant à l'interface. Et ici, cliquons avec le bouton droit de la souris et disons la mort et appelons cet événement. Ensuite, nous avons besoin d'un événement personnalisé à nouveau, il passe par les serveurs et veillez à ce que le client ne triche pas. Et laissez-nous l'exécuter sur le serveur et fiable. Et maintenant, nous pouvons exécuter le serveur un ici, donc la mort du serveur. Et ajoutons un booléen ici pour que nous puissions les connecter. Appelez-le, D est mort, comme ça. Et maintenant, nous pouvons faire quelque chose ici. Permettez-moi donc de faire passer cela à une variable. B est mort. Et je peux déjà penser que nous devons changer cela par une notification d' épave parce que nous devons jouer l' animation de mort pour le, pour l'ennemi et le représentant notifient. N'oubliez pas que nous allons informer tous les clients du changement visuel. Ainsi, tous les clients peuvent voir l'animation de l' ennemi lorsqu'il est en train de mourir. C'est donc ce dont nous avons besoin en ce moment. Donc, ici, nous allons maintenant ajouter avant de faire quoi que ce soit ici, montons ici et voyons quand l'ennemi fait des dés. Et je vais cacher les épingles non connectées ici pour les rendre plus propres. Donc, ici, nous calculons la santé et nous le fixons ici, donc c'est ici. Nous retardons l'animation, nous arrêtons le mouvement. Ensuite, nous arrêtons la logique. Et faisons-le ici. Je veux donc le faire juste après ce retard. Donc, lorsque nous frappons l'ennemi, il va être retardé. Il va finir de jouer cette animation Hit avant qu'elle ne meurt. À moins que vous n'ayez une copie, comme copiez ceci et reconnectez ça ici et laissez-moi le placer ici après que cette logique principale n'a pas vraiment de sens. Cela ne fait pas de différence. Je veux dire, ça ne fait pas de différence. Mais je pense qu'il est plus propre d'arrêter le mouvement, arrêter toute logique tout de suite avant ce retard. Parfois, comme si cela n'avait pas de sens d'organiser vos notes pour qu'elles arrivent dans le bon ordre. Et maintenant, ça va retarder cette animation et juste avant de commencer à marcher, mais parce que je suis peut-être mort, donc je ne veux pas commencer à travailler tout de suite. Voici donc une bonne position pour vérifier si l'ennemi est mort ou non. Avant de commencer à marcher, vérifiez si l'ennemi est mort ou non, car il n'est pas logique de commencer à marcher si vous êtes mort. Permettez-moi donc de sélectionner tout cela et de le déplacer sur le côté afin avoir de la place avec laquelle travailler. Maintenant, prenons les informations sur les animaux. Ou bien on peut juste le prendre à partir d'ici et dire « pause ». Ensuite, nous pourrons prendre la santé et dire égaux. Et faites-le glisser jusqu' ici et masquons les épingles non connectées. Je peux simplement double-cliquer pour faire un nœud de réacheminement et le rendre beaucoup plus propre. Ok, donc maintenant nous pouvons dire ici, donc si la santé est égale à 0, nous voulons jouer les événements de la mort. Si ce n'est pas 0, allons-y et faisons tout ce que nous avons fait avant. Donc ici, chaque fois que c'est 0 et que les joueurs sont morts, jouons à l'événement de la mort ici. Et la base ennemie est morte, c'est vrai. Et nous devons également prendre la boîte de tête et la collision et désactiver ces collisions juste pour nous assurer que nous ne pouvons pas toucher un ennemi mort. Donc, en prenant cela et en disant chevauchement, et vous pouvez réaliser que vous êtes ici, nous avons quelque chose qu'on appelle des événements de chevauchement dégénérés. Et ce que nous essayons de faire c'est que si vous cliquez sur cette case, et si vous allez ici, nous essayons simplement de désactiver celui-ci, générer des événements de chevauchement parce que si elle a été désactivée celle-ci, nous ne pouvons pas générer d'événements de chevauchement et nous ne pouvons donc plus frapper l'ennemi. Définissons donc ça sur faux. Laissez-moi simplement copier, collez celui-ci plus et connectez-le. Nous avons donc la boîte de tête et la collision réglée sur false pour que nous ne puissions pas les frapper. Et après cela, nous devons avoir un temps de réponse ou un retard avant de reproduire l'ennemi. Permettez-moi donc de créer une nouvelle variable ici appelée minuteur de réponse. Et allons-y pour flotter. Et prenons cette minuterie de réponse et disons « retard ». Nous allons maintenant retarder cette minuterie de réponse. Et pour l'instant, il suffit de le régler sur cinq secondes. Nous allons donc compiler et sauvegarder. Et par défaut, écrivons cinq secondes comme ça. Au bout de cinq secondes, l'ennemi va réagir. Si vous le voulez. Vous pouvez également l'ajouter à la structure. Donc, tous les ennemis. Disposera de son propre minuteur de réponse. Vous pouvez également le faire. Je vais juste le mettre ici, ce pas trop important pour le moment. Donc, seulement cinq secondes pour tous les ennemis. Toutefois, si vous souhaitez le rendre plus dynamique, vous pouvez l'ajouter ici à la structure. Et pour chaque ennemi, vous pouvez disposer d'un minuteur de réponse distinct. Maintenant, ce que nous allons retarder le code avec n'importe quelle quantité de secondes je vais déplacer ça ici, en fait comme ça. Ok, donc après l'avoir retardé de quelques secondes ici, nous devons remettre l'état de santé à 100 ou quoi qu' il en soit auparavant. Parce qu'en ce moment, c'est toujours 0. Nous devons vraiment définir quelle est la santé maximale de l'ennemi. Je dois donc revenir à la structure, aux informations sur les animaux. Et tout comme ce que nous avons fait pour le joueur, ajoutons une nouvelle variable appelée santé maximale. Et ajoutons-le ici en dessous cette santé et change en flotteur. Cette santé est quelque chose que nous changeons tout le temps pendant le jeu, mais celle-ci va rester statique. Donc, nous allons tout sauver. Laissez-moi aller à n'importe quelle base Compile and Save. Et laissez-moi retourner vers les ennemis. Donc, d'abord, le cochon ici. Pour le cochon, je vais définir ici les valeurs par défaut de la classe d' informations sur les animaux. Réglons la santé maximale à quelque chose comme 30. Donc, ça commence comme celui-ci. Et revenons à l'escargot ici. Et pour l'escargot, commençons par 15 comme santé maximale, tout comme celui-ci. Compilons et économisons. Et maintenant, revenons à la base ennemie. Et ici, nous pouvons reprendre les informations sur les animaux. On peut dire des décors. N'oubliez pas que nous définissons la variable, c'est pourquoi nous définissons cette valeur de santé. Avec quoi le réinitialise-t-il ? Nous sommes en train de le régler avec le maximum en meilleure santé. Faites-le glisser ici et sauvegardons la pause. Prenons la santé maximale et le branchons dans santé et masquons les broches non connectées. Ce que nous faisons essentiellement, c'est que nous prenons la valeur santé maximale que nous avons écrite ici en cochon, escargot. Et nous ne faisons que remettre cette valeur santé à la santé maximale, car maintenant l'ennemi a réagi et nous voulons simplement qu'il ait cette valeur de santé Max. D'accord ? Quelque chose comme ça ici. Et après avoir défini la santé, n' oublions pas de prendre cette information sur l'animal et de la mettre ici à la structure comme celle-ci. Ensuite, nous voulons préciser où nous voulons frayer l'ennemi. Alors, faisons-le en fait ici. Faisons ici une nouvelle variable appelée répondre. Et nous allons le faire via l'interface Blueprint. Allons donc ici et créons une nouvelle fonction appelée réponse. Compilons et économisons. Revenons à la base ennemie. Appelez-le ici, répondez. Faisons passer par serveur répondre comme bien sûr, appelant son serveur comme celui-ci, puis en l'exécutant via le serveur et fiable. Et lançons la réponse ici. Ce que nous voulons faire avec la réponse, rappelez-vous ici dans notre arborescence comportementale dans un emplacement aléatoire défini, nous voulons simplement faire la même chose. Nous voulons donc simplement trouver un emplacement aléatoire. Donc, il peut réellement, même copier coller en fait, écrivons simplement à nouveau juste pour la pratique. Alors prenons un acteur de classe, un acteur de classe. Nous voulons simplement obtenir notre navigation Bound Mesh, nav, nav mesh, volume de rebond, celui-ci ici. Nous voulons maintenant obtenir les limites des acteurs afin voir la taille du maillage de navigation. Et à partir de là, brisons larmes parce que nous ne nous intéressons qu'à l'axe X. N'oubliez pas que nous sommes en train de créer un jeu 2D, donc nous ne nous intéressons qu'à la taille de l'axe X. Je ne me soucie pas du Z ou du Y , donc nous ne le ferons pas. Nous voulons simplement utiliser cette valeur x ici. Ce que nous voulons faire ici, nous voulons dire obtenir un point d' accès aléatoire dans le rayon. C'est ce que nous voulons utiliser. N'oubliez pas qu'il y en a d'autres, alors obtenez un point aléatoire dans un rayon navigable. Cependant, je veux utiliser celui-ci dans un rayon accessible, car si les ennemis ici, l'ennemi est ici. Le fait est que si vous l'avez défini sur point accessible ici dans le rayon, il apparaîtra. Il va continuer à frayer ici sur la plateforme, donc ça n'aime pas ça au hasard. Si vous avez des ennemis ici, ils ne apparaissent pas au hasard ici. Je veux donc les garder ici. Et c'est pourquoi j' utilise accessible ici. Ok, donc plus loin rayon, connectons simplement ce x car maintenant nous avons les limites de ce maillage de navigation ici, et c'est notre rayon. Et l'origine est juste là où l'acteur est mort. Voyons donc l'emplacement de l'acteur. L'ennemi ici, trouve l'emplacement de l'ennemi, c'est l'origine à partir de laquelle vous allez chercher. Essentiellement, créons une nouvelle variable. La chose que nous voulons faire ici est de créer une colonne vectorielle appelée emplacement d' apparition. Et ce vecteur que nous allons définir pour notifier un représentant parce que nous essayons d' effectuer un changement visuel. Nous essayons de frayer l'ennemi. Et à l'intérieur de cette côte, avertissez l'emplacement du frai. On va juste dire l'emplacement de l'acteur. C'est ce que nous essayons de faire. Essayer de définir l'emplacement des acteurs sur un point aléatoire dans le maillage de navigation. Nous essayons donc de le faire apparaître ici. L'emplacement de l'actrice et la définition de l'emplacement réel sont un changement visuel car vous modifiez l'emplacement de l'actrice. Et c'est pourquoi nous l'avons mis à l'intérieur d'une nervure. Revenons maintenant au graphique des événements. Et au lieu d'ici, c'est ce que nous essayons de définir. Nous essayons de définir cette variable à l'emplacement aléatoire. Mais encore une fois, rappelez-vous, je ne suis intéressé que par la valeur x. Permettez-moi de faire glisser ça ici. J'ai donc plus d'espace. Nous essayons seulement de le faire, comme si nous ne nous intéressons qu' à la valeur x ici. Donc, brisez-le ici et laissez-moi créer le vecteur ici. Je sépare donc les valeurs pour pouvoir les modifier et ne pas les brancher directement ici. Pour le x, je m'intéresse à dx, donc je me contente de brancher l'accent parce que c'est ce que nous voulons. Et pour le Y, je veux garder les acteurs donc le lieu réel. Je vais le casser. Et je suis juste intéressé à garder les acteurs, comme l' emplacement des ennemis, à rester constants. Je ne veux pas le changer ici. Et pour ce qui est de l'emplacement z, nous pouvons encore l'utiliser, mais nous pouvons utiliser cet emplacement de l' os z. Et ce que je veux faire, je vais juste dire plus, et essayons de dire plus 20. Et permettez-moi d'expliquer pourquoi je fais cela. Pour l'emplacement z. Rappelez-vous que le z est ici, c'est l'emplacement z. Je dis juste 20 parce qu' il y a parfois une chance que les ennemis se lient ici et qu'ils soient coincés dans le sol. Je dis juste plus 20 à chaque fois que vous trouvez un nouvel emplacement. Il va donc dire que plus un t n va pousser cet ennemi ici. Et il va engendrer l'ennemi ici. Et puis il va laisser tomber l'ennemi ici. Parce que rappelez-vous que les ennemis ont la gravité, ils ne vont pas rester ici. Parfois. J'essaie juste d'éviter le problème où ils apparaissent à l'intérieur de notre maillage de collision. Et je dis plus 20. Celui-là, ici. Et ils sont comme, je ne pense pas que vous le remarquerez. Comme si nous les remarquions quand ils apparaissent ici parce qu' ils ont une gravité et qu'il tombera ici. Et si vous remarquez, réduisez simplement ce nombre à quelque chose de plus bas. Si vous faites quelque chose de très haut, vous remarquerez qu'il tombera du ciel. Donc je pense que 20, ça ne sera pas perceptible. Juste comme ça. Et maintenant, connectons-le d'ici jusqu'à ici. Laissez-moi pousser ça un peu vers le bas. Maintenant, nous définissons l'emplacement aléatoire, et utilisons-le ici. Donc, après avoir fixé les hanches à 100, nous voulons appeler la réponse, c'est que nous allons y répondre. Il va trouver un emplacement aléatoire pour l'ennemi et il va y répondre. Puis, rappelez-vous que nous avons arrêté comme quand vous êtes mort, vous avez arrêté la logique ici. Nous devons donc recommencer leur arbre comportemental. Donc je peux encore une fois copier, coller ça ici et me connecter et dire démarrer la logique. Maintenant, nous recommençons avec la logique, vous exécutez l'arborescence comportementale. N'oubliez pas d'activer à nouveau les collisions ici, afin qu'elles ne soient pas désactivées. Une fois encore. Relions-les comme ça. Alors, maintenant, que va-t-il se passer ? Nous allons en fait tirer l' intégralité du Not encore. Allons à la mort ici parce que nous n'avons rien fait. Et la seule chose pour l'instant, c'est aller à cette fonction de déballage pour les morts. Et ce que nous voulons faire, c'est de prendre cela et de vérifier si les joueurs ne le sont pas. Donc, si le joueur est mort, nous voulons simplement jouer l'animation de la mort. Prenons donc cela et nous avons ce qu'on appelle les états de mouvement définis. En fait réglé. Voyons voir, Vous avez dit que les mouvements déclarent. Celui-ci pour l'ennemi. mouvements affirment, et choisissons la mort juste pour vérifier si nous y sommes réellement arrivés. Donc, en allant à l'immûr pour les États du mouvement, nous ne l'avons pas vraiment accroché. Il est donc très important de vérifier si votre code est réellement connecté. Nous allons donc copier ce flip book. Connectons les sprites à la cible. Relions cette mort ici. Et maintenant pour l'animation de la mort, prenons cette structure et prenons cette épingle ici appelée animation de la mort. Nous l'avons fait il y a quelque temps et nous avons laissé le connecter. Maintenant, en bas, laissez-moi cacher des épingles non connectées comme ça. Maintenant, il est connecté. Et laissez-moi vérifier ici la présence du cochon, si nous avons défini l'animation de la mort, donc nous avons ici et l' animation de la mort pour cet escargot. Nous allons le vérifier dans les valeurs par défaut de la classe. Et nous avons dit ici l'animation de la mort. Je vais maintenant vérifier la vitesse de l'animation. Je vais donc voir les ennemis. Et celui-là va prendre du temps. En fait, je vais choisir trois images par seconde. Donc, 1 seconde, nous allons jouer toute cette animation. Et pour ce qui est de l'escargot, voyons ça ici. Donc, huit images par seconde. Oui, je pense que c'est très bien. Nous pouvons toujours le changer si nécessaire. Revenons à la base intime et passons à la fonction de déballage pour les morts. Nous allons donc jouer l'animation de la mort et c'est à peu près tout pour l'instant. Cliquons donc sur Play et espérons que tout fonctionne. Je vais le frapper maintenant. Et en fait, laissez-moi vérifier mes dégâts parce que je ne veux pas le faire éternellement. Allons donc voir où nous en sommes arrivés. Nous l'avons fait au lieu des plans et du joueur, de la base des joueurs. Et puis passons à l'information de ce joueur ici. Et pour les dégâts de base. La santé de l'escargot est donc de 15. En fait, je vais en mettre dix comme dégâts de base. J'ai donc frappé l'escargot deux fois et il va mourir. Donc, frapper l'escargot, les autres escargots et tous ces escargots. Et vous pouvez voir qu'il est en train de mourir maintenant. Nous avons juste besoin de mettre en pause cette animation pour qu'elle ne se joue pas éternellement. Et vous pouvez voir qu'il se produit ici. Ok, donc je ne pense pas que nous ayons besoin de mettre en pause cette animation de mort. Vous pouvez le faire si vous le souhaitez, comme ce que nous publions avec l'animation de corde pour le joueur. Mais je crois que nous allons faire une animation qui s'estompe et que le fondu va la faire disparaître. Donc, peu importe si l' animation des ennemis ici est postée ou non. Mais vous pouvez voir ici qu'ils fraient, je le sais dans le sol, donc nous devons y remédier. Ou c'est parce que le mode marche doit être réglé. Donc, en fait, en ce moment, je pense que c'est très bien. Travaillons sur la décoloration. Parce qu'avec la décoloration, nous pouvons utiliser cela pour définir le mode Marche et les noix à l'intérieur de l'animation de la mort parce que vous pouvez voir qu'elle fonctionne, mais c'est parce que vous pouvez voir ici, Si je retourne à la base ennemie et à l'intérieur d'ici, passons au graphique des événements. Et rappelez-vous que nous avons dit le mode des mouvements à aucun, et nous ne l'avons plus jamais réglé pour marcher. C'est pourquoi ils sont coincés comme s' ils n'étaient pas vraiment coincés dans le sol. Je crois que c'est parce que nous n'aimons pas avoir dit cela à la marche. Et vous pouvez le faire dès maintenant à l'intérieur de l'animation de la mort ou de l'événement de la mort ici. Mais je pense que nous allons avoir un effet de décoloration. Et avec cela, nous allons définir le mode Marche. Passons donc à la suivante. 90. Fade du respect d'ennemi: Très bien, donc ici dans la base, faisons maintenant un effet de décoloration lorsque l'ennemi fait des dés. Permettez-moi de voir si nous pouvons mieux structurer cela. Maintenant que nous avons l' animation de la mort ici, nous avons l'animation qui répond à l'apparition. Vous pouvez simplement essayer de faire l'animation de fondu ici. Je vais revenir à mon interface Blueprint et créer une nouvelle fonction appelée, appelons ça l'acteur fondu. Et faisons un booléen et appelons simplement le fondu. Donc, juste pour voir s'il doit s'estomper ou non. Revenons ici et faisons défiler cet événement appelé atrophié. Et créons des événements de serveur. Ainsi, des événements personnalisés passant par le serveur appelés atrophiés. Et lançons-le à travers un serveur fiable. Et lançons l'événement serveur ici, acteur fade, et créons un nouveau booléen. Donc, toutes les mêmes choses que nous avons faites jusqu'ici. Maintenant, connectons-le. Bon, maintenant, cet acteur s'estompe. Promouvons cela en une variable. Et je ne sais pas si nous devons en faire une notification de représentant pour l'instant. Laissons-nous simplement comme ça pour l'instant. Ce que nous essayons de faire, c'est que nous essayons de nourrir l'ennemi lorsqu'il meurt. Donc, ici et la mort de l'ennemi, je suis juste en train de le faire disparaître ici avant que, en fait, après avoir mis ça sur faux, nous pouvons juste nourrir l'ennemi avant le minuteur de réponse. Laissez-moi donc ne pas enlever, mais déplacez ça ici et appelez l'événement acteur fade ici. Alors l'acteur s'estompe. Et mettons-le à vrai. Alors, que devrait-il se passer quand le fondu est vrai ? Qu'est-ce qui est vrai ? Ce que je dois faire, c'est appeler une ligne TEM. N'oubliez pas que nous avions déjà fait une chronologie. Refaisons-le maintenant. Donc, cliquez ici, et appelons cela un acteur de premier plan. Et jouons ça dès le départ. Ce que nous devons faire ici, le but de cette chronologie est d' estomper la couleur de l'ennemi. Et n'oubliez pas de faire l'effet de décoloration, vous devez aller vers cet ennemi. Et encore une fois, réglez ce matériau sur un matériau translucide et non éclairé car vous ne pouvez pas fondre cette couleur directement comme si elle disparaît soudainement. Vous ne pouvez pas aimer qu'il n'y ait pas d'étape intermédiaire. Il apparaît et disparaît comme ça. Nous devons donc le régler à nouveau sur translucide, tout comme le joueur que nous avons fait avec l'effet clignotant. Allons donc à la base ennemie ici. Et en fait, faisons-le ici, c'est mort. Faisons ça avant de s'estomper. Donc, quand le joueur est mort, Allons-y est mort. Et ici, nous pouvons prendre ce brillant et dire Set material. Et fixons ce qu' on appelle un matériau de sprite translucide, translucide et non éclairé. Alors maintenant, nous sommes assis et nous allons le régler. N'oubliez pas de le remettre ici chaque fois que le joueur ne l' est plus. Donc, pour le matériel de sprite masqué et masqué non éclairé. Ok, donc maintenant nous avons dit le matériel à cela et nous pouvons nourrir le joueur ou faire disparaître l'ennemi. Revenons à la chronologie ici. Bon, nous essayons donc de définir des couleurs linéaires. Permettez-moi donc de créer une nouvelle variable et de l'appeler la couleur de fondu de l'acteur. Et transformons ici la nouvelle variable en couleur linéaire. Et prenons-le et mettons-le. C'est donc ce que nous essayons de définir. Je suis en train de devenir une épave. Notifiez. Parce que rappelez-vous qu'il s' agit d'un changement visuel. Nous changeons l'alpha du joueur, alpha du joueur, ce qui signifie que nous le rendons opaque. Donc, je vais ici et je le mets à un phi de la rétine. Et ce que nous essayons de faire ici dans la fonction de déballage c'est que nous essayons de prendre ce sprite et de dire des sets. Je crois qu'elle s' appelait pour la première fois la couleur Sprite. Oui, c'est une couleur vive. C'est ce que nous essayons de mettre ici. Et prenons cet acteur fausse couleur et connectés. Nous allons donc définir la couleur et nous allons la définir au fil du temps car nous la mettons à jour constamment dans cette chronologie. Et ce que nous essayons de faire, c'est d'utiliser une note de boucle. Il a donc essayé d'utiliser un nœud de boucle. Et en cherchant la boucle, vous pouvez trouver celle-ci comme nous pouvons utiliser celle-ci, mais je crois que c'est une meilleure idée, comme si vous pouvez casser cela. Vous pouvez voir, prendre ceci et vous avez raison, faites, faites des couleurs linéaires. De cette façon. Vous pouvez changer l'alpha ici à travers un flotteur. Et il peut simplement utiliser un nœud de boucle car il s'agit d'un flotteur. Cependant, c'est une meilleure façon de le faire. Il existe en fait une boucle pour une couleur linéaire spécifiquement. Il peut donc l'utiliser à la place. Et vous pouvez passer en boucle les couleurs linéaires. Au lieu de le faire ici, laissez-moi supprimer cela. Et ici, pour la boucle, vous pouvez simplement la connecter comme ceci. Et pour la première couleur, nous commençons par être seulement nous-mêmes. Donc ici 1111, tous sont réglés sur un. Cela ne fera que les pixels comme si nous avons notre personnage sans aucune couleur. Et le second. Je voulais juste refaire 1111, mais pour l'Alpha, donc l'opacité que nous voulons définir sur 0, en fait 0, donc elle va disparaître. Il va passer de 0 à un. Comme celui-ci a 0 , puis il va en faire un. Il va donc passer de 0 à un. Et nous voulons le faire sans problème. Donc, au lieu d'en écrire un ici, si nous le faisons sans rien d'autre , cela va disparaître quand nous commencerons le jeu. Mais nous voulons y aller, passer de 0 à un sans heurts. C'est pourquoi nous utilisons une chronologie. En double-cliquant sur la chronologie, je vais créer une nouvelle piste flottante ici. Appelons ça le fondu alpha. Ici, cliquez avec le bouton droit de la souris et créons deux. En fait, laissez-moi faire trois points ici et vous verrez pourquoi. Donc, à l'époque 0, je veux que la valeur soit 0. Faisons en fait la longueur de cette seconde. Donc, à l'époque, le dernier point ici, donc le premier est 00, le dernier point à l'époque, je veux qu'il en soit un. Et celui-ci à l'époque de 0,75, je veux qu'il soit encore 0. Je ne veux donc pas effacer l'ennemi tout de suite. Je veux le faire disparaître environ 0,75 seconde. Il va donc lire un peu l' animation, puis l'animation va s' estomper. C'est ainsi que vous pouvez le faire également. Vous n'avez donc pas à le faire comme ça là où il s' estompe au fil du temps. Je vais juste être infidèle comme ça jusqu'à ce qu'il commence à s'estomper rapidement ici à la fin de l'animation. Allons donc ici et connectons l'alpha maintenant. Et maintenant, nous avons cette chronologie fluide qui va effacer notre animation. Et maintenant, ce que nous pouvons faire, c'est que nous pouvons passer ici à notre code après la mort. En fait, en fait, nous sommes déjà arrivés ici. Alors l'acteur s'estompe, laissez-moi essayer de le jouer et de voir ce qui se passe. Si je joue maintenant. Et je tue quelques ennemis. Vous pouvez voir qu'ils s'estompent et ça n'a pas vraiment d'importance. Comme notre animation est toujours en boucle comme avant, mais nous ne la voyons pas vraiment parce que nous nous adaptons à l'ennemi. Donc, si j'essaie de tuer celle-ci maintenant, vous pouvez voir qu'elle joue l'animation puis elle s'estompe après cela. Qu'est-ce qui est plutôt cool. Et laissez-moi en fait, avant de faire quoi que ce soit d'autre, laissez-moi enlever mes collisions ici. Je ne veux plus les voir. Donc, en allant au cochon, je crois que nous avons cliqué sur l'un d'eux pour que la boîte de tête soit cachée dans le jeu. En fait, je crois que c'est fait par l'intermédiaire de la base ennemie. Donc ici caché dans le jeu. Je voulais juste frapper mes boîtes de tête comme ça et vendons. Alors frappez ou masquez la collision d'attaque des joueurs cachée dans le jeu. Ok, donc maintenant nous avons cette animation qui s'estompe, mais rappelez-vous que nous en avons deux défavorisés à un moment donné. Je vais me défaire tout de suite quand je trouverai mon point de frai. Alors, juste avant de commencer la logique, commençons le processus de développement. Alors l'acteur s'estompe, je vais appeler le même événement. Et au lieu de faire cocher ça comme avant, avons maintenant non coché. Et cela signifie qu'il va se dérouler. La façon dont nous faisons cela est ici. Quelle est la chronologie ? La chronologie est ici. Au lieu de jouer dès le début, créons une branche ici. Prenons donc ça et créons une branche et connectons. Donc, si c'est vrai, si nous sommes en train de s'estomper, cela va jouer dès le début comme nous l'avons fait auparavant. Cependant, si vous ne vous décolorez plus, cela va devenir faux. Je veux vraiment jouer à l'envers de la fin. Et ça va passer de cet invisible à visible. Il va donc s'estomper dans mon personnage. C'est essentiellement le cas si vous définissez sur Non coché et que vous l'ajoutez ici, celle non cochée, qui est la fausse à inverser à partir de la fin. N'oubliez pas que je veux le faire ici. Donc, le mode marche, rappelez-vous que nous n'avons pas défini le mode de mouvement. Donc, si je retourne ici dans les dégâts, nous réglons le mode de mouvement sur aucun. Je vais copier ça. Je vais aller ici, coller ça. Et au lieu de ne rien régler, je vais en fait le remettre à pied. Sinon, il va rester coincé et ne jamais bouger. Maintenant, nous avons le mode de fonctionnement, donc j'essaie de voir ce qui nous manque. Donc, en fait, il y a quelque chose qui nous manque. La chose qui nous manque, c'est que nous n'avons jamais précisé quand le personnage n' est plus mort. Nous avons donc décidé que c'est vrai. Et rappelez-vous que nous devons le mettre en faux parce qu'il est là, il est mort. Nous avons défini ici par défaut, nous remettons le matériau au masque. Nous devons donc le faire, et je pense que je vais le faire. Donc, au lieu de le faire ici, donc vous ne pouvez pas, vous ne pouvez pas simplement aller ici et dire ceci. Parce que rappelez-vous que vous l'êtes, vous jouez un fondu d'acteur, ce qui est une chronologie. Et vous allez en fait régler, comme si vous installez ça ici, la mort, vous allez finir. Ce matériau est masqué non éclairé, qui ne donne pas à cette chronologie une chance de changer la couleur d'invisible à visible. Parce que n'oubliez pas que lorsque vous avez le matériau par défaut pour masquer les fentes, vous ne pouvez pas avoir cette transition en douceur avec la décoloration de l'ennemi. Donc, si vous faites ça ici, il va le faire instantanément juste après que l'acteur se soit estompé. Et cela va changer le matériau pour masquer non éclairé, ce qui ne donne pas assez de temps à la chronologie assez de temps à pour le faire ici à cette transition de, du fondu en effet. Nous allons donc le faire ici dans la chronologie. Ainsi, lorsque la chronologie finit par s'estomper, nous pouvons alors définir ce décès sur faux. Et nous ne voulons pas le faire tout le temps car rappelez-vous, même si le terrain est réglé vrai et que vous le jouez ici, il va jouer ça à faux parce que nous n'avons pas vraiment besoin de faites cela chaque fois que vous êtes en train de s'estomper, ce qui a été fait ici, nous ne voulons pas le définir sur faux, comme la mort parce que nous avons également un minuteur de réponse et leurs besoins doivent passer un certain temps. Je vais faire un booléen ici. Celui-ci, encore une fois, le flux. Et faisons simplement un booléen. En fait, c'est une sorte de flux qui n' est pas vraiment explicatif. Permettez-moi plutôt de le remplacer après le fondu. Permettez-moi de configurer celui-ci pour le répliquer car rappelez-vous qu'il est en cours d'exécution sur le serveur, donc le client doit être au courant de cela. Et laissez-moi prendre ce fondu d'acteur, fixer une branche et laissez-nous le relier ici. Donc, lorsque l'ennemi s'estompe, nous ne ferons rien. Mais quand l'ennemi ne s'estompe plus, ce qui signifie que vous êtes ici. Ensuite, nous allons exécuter ce code, exécuter cette chronologie et la chronologie se termine. Nous allons dire, oui, que l'acteur ne s'estompe pas. Il a été défini sur Faux. Ensuite, nous allons également définir cela sur faux. Nous pouvons donc maintenant le faire de cette façon plutôt que là-haut. Très bien, alors compilons et économisons maintenant, et j'espère que nous avons tout réparé. Et cliquons sur le jeu et laissez-nous tuer quelques ennemis. Nous avons donc beaucoup d'ennemis qui meurent. Et voyons s'ils réagissent correctement. Alors maintenant, celui-ci répond à celui-ci, répondez. Ceux-ci répondent. Ok, on dirait que tout fonctionne correctement. Et si je viens de les frapper une fois, ils vont le faire et vous pouvez voir qu'il y a une petite erreur. Je crois que celui-ci n'a pas aimé qu'il n'y ait pas d'événements de chevauchement générés avec celui-ci. Donc, le problème ici avec le problème qui se chevauche c'est que j'ai oublié de les remettre à vrai. Nous les avons donc mis à faux ici, mais à la fin, j'ai oublié de les mettre à vrai. Nous devons donc générer des événements de chevauchement. Nous allons donc compiler et économiser. Revenons au jeu. Et essayons encore. Alors, nous allons les frapper maintenant. Ils vont mourir. De toute évidence, nous avons besoin de quelques effets sonores très bientôt. Et vous pouvez voir qu'ils réagissent correctement. 91. Placement du niveau ennemi: Cette leçon est un peu différente. Nous ne le faisons pas, nous n' allons rien coder. Et maintenant, nous allons juste placer les ennemis autour du niveau. Et vous pouvez le faire avec le code. Vous pouvez donc simplement créer un événement de frai et créer automatiquement tous les ennemis lorsque vous avez rejoint le jeu et le paramétrer sur des emplacements aléatoires. Mais je crois que si vous pouvez faire quelque chose sans code, alors je vous suggère de le faire sans code car rappelez-vous, en codant, vous allez utiliser un peu de mémoire du jeu. Et pourquoi allez-vous le faire alors que vous pouvez simplement venir ici et les placer gratuitement. C'est très optimisé. Vous n'avez pas besoin d'écrire du code. Ainsi, chaque fois que vous pouvez éviter d' écrire tout ce code, essayez d'éviter les boucles. Essayez d'éviter d'écrire ce code. Donc, si nous pouvions, par exemple, éviter d'écrire ce code, je ne l'aurais jamais écrit. Mais comme nous aimons déjà, puisque nous devons écrire ceci, pour le faire fonctionner, nous devons l'écrire. Mais pour les événements de frai, comme au lieu de créer un code de frai pour les ennemis, si vous pouvez simplement venir ici comme si cela correspond à votre jeu. Bien sûr, certains jeux ont besoin d'un code d' apparition pour que cela fonctionne. Mais dans ce cas, nous avons remplacé les ennemis. Puisque nous avons placé les ennemis, nous pouvons simplement les prendre et les placer partout où nous le voulons. Et c'est tout. Nous n'avons donc pas vraiment besoin de coder quoi que ce soit ici pour la base ennemie. Donc, si je reviens en arrière, la chose que nous avons faite avec la base ennemie ici pour la réponse, c'est que nous cachons simplement l'ennemi et que nous nous cachons ensuite pour aider l'ennemi. Une fois encore. Nous n'allons pas vraiment retirer définitivement l'ennemi du jeu. Cependant, rappelez-vous, dans votre jeu, si vous faites quelque chose de personnalisé et que vous ne suivez pas complètement ce cours, si vous voulez détruire l'acteur, comme le retirer complètement du niveau. Parce que si vous le nourrissez comme ça, si vous l'estompez, vous êtes fou. Comme si l'acteur était toujours là. Si je vais juste ici voir l'ennemi et que la boîte de tête ne soit pas cachée dans le jeu. Et vous pouvez voir que si je joue au jeu maintenant, j'ai frappé cet ennemi ici et un dé. Vous pouvez voir que la boîte de collision est toujours entendue que l'ennemi est toujours là. C'est juste sur délavé. C'est donc normal dans cette situation car nous avons un certain nombre d'ennemis. Par exemple, je n'ai besoin que de quatre escargots et de mon niveau. Donc je l'estompe et j' y réponds ailleurs. Cependant, si vous voulez juste le détruire complètement du niveau et ne jamais avoir ce****. Parce que si un étang est encore apparu, il exécutera toujours ce code Blueprint et il ne sera pas optimisé si vous continuez à frayer des ennemis et que vous ne les supprimez jamais du niveau. Donc, si vous voulez le supprimer complètement, vous pouvez utiliser celui-ci en disant Destroy Actor. Détruire les acteurs va le supprimer complètement du jeu et il peut essayer de voir ce qu'il fait. Donc, si je tue ça ici et qu'il va s'estomper quelque part, laissez-moi en tuer un peu plus et tuer celui-là aussi. Vous pouvez donc voir maintenant qu'ils sont comme s'ils répondaient ailleurs et qu'après le code de réponse, ils sont détruits. Maintenant, ils sont complètement retirés du jeu. Ceci est optimisé car vous n'exécutez pas tout ce code pour cet ennemi dans le jeu. Cependant, pour ce jeu, je n'ai que quatre ennemis tout le temps. Et je me contente de l'estomper et d' y répondre ailleurs. Je garde donc ces quatre ennemis. Je n'ai jamais engendré cinq ennemis ou six ou sept ennemis. Donc, si vous faites cela, n'oubliez pas de détruire l'acteur. Si ce n'est pas le cas, si vous faites simplement cela, vous pouvez simplement y répondre ailleurs et au niveau. Nous pouvons donc maintenant éviter d' écrire du code pour la réponse ici, de sorte que nous puissions simplement les remplacer. Donc, ce que je vais commencer à faire ici c'est juste de mettre ça en même temps. Et parfois, on voit des ennemis se briser les uns les autres. Et c'est parce qu'ils l'ont tous, ils en ont tous un dans le Y donc parfois ils vont juste l'un dans l'autre. Ils se clipsent comme ça. Vous pouvez voir qu'il y a des écrêts. Et c'est parce qu'ils ont la même valeur Y. Donc ce que vous pouvez faire ici manuellement, cela prendra un certain temps, mais vous pouvez simplement écrire, par exemple, un pour celui-ci , le second, je vais écrire 1.1. Et pour la troisième, je vais écrire 1.2. n'y aura donc jamais de coupure les uns les autres. Vous pouvez voir maintenant qu'ils sont devant les autres. Ils ne vont jamais se couper. Et vous pouvez simplement le faire. Maintenez la touche Alt enfoncée et faites glisser pour copier, et celle-ci est 1.3. Et faites glisser à nouveau 1 pour cette 1.51. Donc quelque chose comme ça, et vous pouvez le placer ici, faire glisser à nouveau, 1.6. Je vais juste avoir ces ennemis. Et ici, pour les cochons, je vais ajouter des cochons ici. Donc 0 et y. Pour le y, je vais recommencer par un car le joueur n' est pas le joueur. Ces tuiles sont à 0, donc je ne veux pas qu'elles soient derrière les tuiles. C'est pourquoi j'en ai commencé un. Et faites-le glisser à nouveau et disons 1.1. Et parfois, comme si le 1.1 ne suffit pas, on peut simplement dire 1.1.15 ou quelque chose comme ça. Donc 1.2 pour cela, 1.31, pour celui-ci, nous pouvons toujours vérifier s'ils sont coupés, nous pouvons augmenter cette taille entre eux. Et pour le joueur, le joueur commence à deux, sorte que le joueur est toujours devant les ennemis. Cliquons sur Play. Et regardons ça et essayons de voir s' il y a des écrêts. Permettez-moi d'aller à la base ennemie et de désactiver cette collision ou frapper le jeu caché ici. Je peux donc les voir plus clairement. Vous pouvez donc maintenant les jeter un coup d'œil et voir s'ils se coupent un jour, traverser l'un l'autre. Et parfois, lorsqu'ils se coupent, vous pouvez simplement augmenter ces nombres de séparation. Vous pouvez simplement augmenter la valeur y. Je pense que ça va bien, bien. Encore une fois, vous pouvez augmenter la séparation et le y si vous le souhaitez. Mais c'est un moyen plus optimisé de le faire. Si vous pouvez vous en sortir avec quelque chose en ne programmant pas, vous pouvez le faire et il sera plus optimisé. Mais parfois, il faut écrire du code et on ne peut pas vraiment l'éviter. Maintenant que nous avons placé tous les ennemis dans le niveau, sauvegardons tout et passons à la leçon suivante. 92. SFX sur la taille, la mort et le réveil: Nous sommes arrivés à la fin et c'est presque l'heure du système de nivellement. Et avant de faire cela, ajoutons des effets sonores et faisons quelque chose d' intéressant ici. Je pense que c'est beaucoup mieux si vous ajoutez des effets sonores. Passons à l'audio. Et je les ai inclus pour vous dans le matériel de cours et nous en avons ici. Nous n'utilisons que le saut jusqu'ici. Il suffit donc de les sélectionner tous maintenant, sauf pour le saut. Et laissez-moi les faire glisser dans mon dossier audio ici. Et ensuite, nous avons tous ces éléments. Cliquez sur fichier et enregistrez tout. Maintenant, ce que vous pouvez faire, c'est que vous pouvez monter ce niveau avec le bouton droit de la souris et créer une boule de repère sonore. C'est le niveau sonore qui monte. Et nous allons l' utiliser plus tard. Vous pouvez cliquer sur Play pour entendre ce que ça ressemble. Juste quelques histoires, des effets sonores. Et pour cette attaque, vous pouvez cliquer avec le bouton droit de la souris et créer un Q, appeler attaque et faire la même chose avec les coups d'attaque, l' appeler attaque, coups. Cliquez avec le bouton droit de la souris pour le mort et créez un signal sonore et appelez-le file d'attente sonore, profondeur. Le saut que nous avons déjà fait. Donc, et le niveau augmente. Nous l'avons fait pour choisir la mort, signal sonore, choisir la mort. Et faisons-le aussi pour la mort de l'escargot. Un signal sonore de la dette d'escargot. Et nous avons une réponse, celle-ci répond, son signal, répond. Et voyons s'il nous manque quelque chose. Nous avons donc le texte Death maintenant, nous avons tout maintenant. Vous pouvez donc aussi le faire pour la musique. Nous avons une musique appelée musique sonore, juste appelée Tennessee, je vais appeler ça la genèse. C'est la musique. D'accord ? Et je ne vais pas le brancher maintenant parce que je pense que ça va être ennuyeux quand on débogue le jeu et que nous continuons à jouer de la musique. Je vais donc garder celle-ci à l'écart pour l'instant. Le premier que nous pouvons faire, c'est quand nous attaquons avec le joueur. Allons donc voir le joueur et aller à la base des joueurs. Et donc, pour l'attaque, nous le faisons ici. Nous avons donc l'attaque. Nous parcourons le serveur et nous nous souvenons des effets sonores. Ils doivent passer soit par le client. Donc, si vous souhaitez que les effets sonores ne soient entendus que par vous, vous souhaitez appeler un événement personnalisé et l' exécuter via le client. Toutefois, si vous voulez que l'effet sonore soit entendu par tous ceux qui vous entourent, vous devez le faire. En fait, j'ai oublié d'utiliser mon raccourci ici pour cet événement personnalisé. Raccourci très rapide. Si vous voulez que l'effet sonore soit entendu par tout le monde, vous devez l'exécuter en multidiffusion. Multicast si tout le monde doit l'entendre, ligné, seulement si vous devez l'entendre. Je pense que tous les clients devraient entendre ces sons, alors permettez-moi de le faire. Permettez-moi donc de créer des événements personnalisés et de l'appeler attaque MC. Et pour celui-là, nous allons dire jouer du son sur place. Nous allons donc jouer le son à l'endroit où le joueur attaque. Et je vais simplement faire glisser ces variables dans les événements et l'appeler des effets d'attaque S car les sons, effets sonores et l' emplacement sont corrects. Et maintenant, nous allons y jouer. N'oubliez pas que la multidiffusion ne peut être exécutée que via le serveur. Pour l'attaque, nous avons deux sons différents. Nous en avons 14. Voyons ici l'attaque. Et nous en avons un pour le kit d'attaque. Donc, chaque fois que vous touchez quelque chose , faisons-le ici. Nous cherchons donc à frapper des ennemis. Et si c'est le cas, nous allons jouer le succès. Donc, par ici, permettez-moi d'appeler MC Attack. Et laissez-nous pousser ce code un peu comme ça, et vous pourrez toujours le rapprocher plus tard. Il y a eu ces effets sonores et il va jouer cet effet de succès. Ce que vous pouvez faire pour améliorer réellement la cohérence de ce jeu, nous pouvons aller à la structure et aux informations du joueur, ajouter des variables pour les effets d'attaque et choisir le signal sonore. Pour le prochain, vous pouvez simplement faire un coup de technologie avec des effets S. Nous devons donc attaquer, attaquer des sons. Et faisons ici dans la base de joueurs, au lieu de le faire séparément à l'intérieur de Luke et Serena, faisons-le ici dans la base de joueurs parce que je n'ai qu'un seul son pour tous les joueurs. Permettez-moi donc d'aller aux infos du joueur. Il suffit de les placer ici plutôt que dans chaque personnage. Maintenant, je cherche juste un coup de technologie et d'attaque. Donc, tous les personnages auront le même effet sonore. Revenons donc à la base de joueurs. Et ici, nous pouvons maintenant prendre les informations de nos joueurs. Super enfants, et laissez-nous simplement cacher épingles non connectées et montrer mon attaque. En fait, c'est un succès technologique pour celui-ci. Et connecté ici. Alors, quel est le lieu ? L'emplacement n'est que celui de ce joueur. Nous obtenons donc un emplacement réel et connectés. Et chaque fois que, en fait, au lieu de le faire, je crois que nous allons avoir un bug parce que cela fonctionne sur le serveur et que le client ne pourra jamais entendre cela. Donc, le serveur quand je frappe quelque chose, je vais l'entendre , mais je crois qu'en tant que client, je n'entendrai rien. Essayons. En fait, cela ne fonctionne pas, donc nous pouvons réellement le faire. Mais si vous le voulez, vous pouvez aussi parfois penser que c'est beaucoup plus propre simplement sauvegarder cela et de le faire passer ici à la place. Mais gardons ça comme ça pour l'instant. Controle Z. Je vais juste le garder comme ça. Laissez-moi le copier coller ici. Si ça marche, pourquoi pas ? Faites-le glisser ici et connectons-le. Et pour celle-ci, en fait, qu'est-ce que j'essaie de faire pour cette attaque ? Nous devons vraiment traverser le retard ici, comme ça. Ok, donc ici, nous allons jouer l'effet sonore là où nous ne touchons rien. Et ici, prenons cette copie collée ici. Et au lieu de cela, nous pouvons montrer l'attaque, les effets des attaques et obtenir nouveau l'emplacement des acteurs ici, comme cela. Alors maintenant ce que nous pouvons jouer et laissez-moi simplement nous jouer aux clients, juste pour être sûr. Nous jouer aux clients. Maintenant, nous frappons. Vous pouvez voir. Et si je ne frappe pas oui, ça a l'air bien. D'accord. La prochaine chose est que nous voulons l'escargot et la profondeur du cochon. Allons donc voir l'ennemi et voyons où nous jouons ça. Donc, nous avons eu cela endommagé sur le serveur. Il va ensuite jouer cet événement de la mort ici, et ajoutons-le à cela. La mort va donc passer par le serveur et à partir du serveur, nous voulons lancer une multidiffusion. Permettez-moi de rassembler ces deux-là, mais ceci et ici, je vais créer un événement personnalisé appelé MC death et l' exécuter en multidiffusion. Ici. Encore une fois, jouez le son, emplacement M et appelez simplement la mort ennemie, ou simplement la mort ou pas effets immédiats. Donc, des choses comme ça. L'emplacement. Et maintenant, pour celui-ci, nous pouvons appeler la mort multidiffusion. Et pour cette mort multidiffusion, laissez-moi maintenant traîner toutes ces choses, avoir toujours le problème de l' espace ici. Pour celui-ci, pour la mort ennemie, faisons la même chose. Pour la structure, nous pouvons donc ajouter une nouvelle variable appelée S Effects. Et nous allons en faire un signal sonore. Économisez ici. Et laissez-moi aller, maintenant laissez-moi d'abord aller à la base ennemie, compiler et sauver, puis aller vers l'ennemi, vers le cochon. Ensuite, nous devons passer aux valeurs par défaut de la classe à la charge d'animal et ensuite vous devez sélectionner l'effet sonore sourd. Permettez-moi de chercher un cochon et de sélectionner celui-ci. Choisissez ça, compilez. Allons voir un escargot. Et l'escargot que nous allons utiliser cet escargot, la mort. Laissez-moi retourner à la base ennemie. Maintenant, ce que nous pouvons faire, c'est faire glisser ces informations sur les animaux, casser les enfants, cacher des épingles non connectées et je peux utiliser celle-ci, la mort comme effets connectés. Et où se trouve l'emplacement ? N'oubliez pas que nous sommes à l'intérieur de n'importe quelle base, donc nous pouvons simplement dire obtenir l'emplacement de l'acteur parce que c'est là où se trouve cet ennemi, comme celui-ci. Ok, alors laissez-nous enregistrer les composés lorsque nous cliquons sur Play et voyons si cela fonctionne. S'il meurt. Oui, je joue le son. Donc, celui-ci a joué plusieurs fois. C'est drôle. C'est parce que nous devons le faire ici comme un seul, l'ennemi est en fait mort. C'était drôle. Il jouait plusieurs fois. Nous pouvons donc prendre cela et dire branche. Et ce n'est que lorsque l'ennemi meurt que nous voulons jouer le son, pas quand il répond. Cliquons donc sur Play et réessayez, juste pour être sûr que cela fonctionne. Et en fait, il y a un petit bug pendant que je teste ça. Vous pouvez voir que ça fonctionne vraiment mon personnage ici. Nous devons remédier à cela. Laissez-moi d'abord essayer le son avant de réparer quoi que ce soit. Alors, laissez-moi rester ici et jouer. Ils ont un peu plus de santé, donc je dois réessayer. Ok, ça fonctionne aussi. Génial. Le son fonctionne donc. Nous devons résoudre ce problème de lettre dans un peu. La prochaine chose que nous voulons faire est jouer le son de la mort des joueurs. Donc, aller à la base des joueurs, aller à la, tous les dégâts, et quand le joueur meurt, donc ici dans la mort, quand c'est vrai. Revenons donc à la mort ici. Je me suis mis à vrai, nous voulons jouer la multidiffusion. Nous allons donc tirer ça ici pour faire de plus d'espace appeler un événement personnalisé mort multidiffusion. Passons à travers la multidiffusion fiable, puis jouons le son sur place. Nous refaisons donc la même chose. C'est bon pour l'entraînement de le faire encore et encore. Et tout d'un coup, vous vous verrez vous-même et expert dans ce domaine. Faisons donc la mort comme effets. Et pour celui-là encore, nous devons aller à la structure au joueur un nouveau son appelé effet sonore de mort. Économisez. Et tous les joueurs ont les mêmes effets sonores. Je vais juste cliquer sur ceci et sur le joueur, les infos du joueur. Et changez ça ici jusqu'à mort. Et celui-là. D'accord, donc, en allant à celui-ci, la profondeur est réglée. Maintenant, laissez-moi simplement cacher des épingles non connectées. Et ici, appelons-les la mort multidiffusion. Maintenant, nous l'appelons ici et nous mettons cet effet de texte. Prenons maintenant les infos du joueur et laissez-moi gagner plus d'espace. Ici, nous pouvons voir des épingles de rupture et Haydn connectées et nous pouvons simplement utiliser la mort comme effets ici. Et celui-là, on peut dire trouver l'emplacement de l'acteur. Et laissez-moi le traîner vers le haut. Il y a plus d'espace de travail avec lequel travailler. Et faites glisser tout ça vers le bas. Juste comme ça. Maintenant, nous jouons l'effet sonore. Permettez-moi de mourir et de le tester. Donc, si je rencontre ces photos ici, vous pouvez voir que vous avez cet effet sonore. Et maintenant, nous avons besoin d'une réponse aux effets sonores. Alors, laissez-moi monter ici et jeter un coup d'œil au code. Peut-être que vous avez juste besoin de le mettre dans la mort fausse. Jetons un coup d'œil au code. Donc, quand nous sommes en train de mourir ou de ne pas mourir. Ce n'est donc plus ça maintenant. Et rejouons cela, et voyons où nous avons réellement fait que la mort est fausse. Je ne me souviens pas où nous l'avons fait. Essayons donc d' aimer ce que vous pouvez faire maintenant pour trouver quelque chose. Il s'agit d'un bon exemple pédagogique. Si j'aime bien maintenant, ne me souviens pas où j'ai fait le faux. Je peux cliquer avec le bouton droit de la souris et dire trouver des références. Et puis je peux juste comme ça, c'est juste trouver des références à l'intérieur de ce plan, qui me semble très bien parce que je pense qu' il est utilisé à l'intérieur d'ici. Mais si vous le souhaitez, vous pouvez cliquer dessus. Trouvez-le dans tous les plans. Cela va réellement trouver cette fonction utilisée dans tous vos Blueprints. Donc il peut réellement le faire pour trouver où il a réellement utilisé l'événement de la mort à nouveau. ai donc trouvé dans le Widget Blueprint dans notre interface utilisateur principale. Donc, double-cliquer dessus ici vous amènerait au menu I. Et c'est là que nous l' avons fait, là où nous avons cliqué, OK, et il a dit que la mort était fausse. Maintenant, faisons-le ici, puis dans la mort. Revenons donc à la base de joueurs. Et quand la dette est fausse, jouons la mort multidiffusion là où c'est comme si elle avait les effets sonores de réponse. Donc, ce que nous pouvons faire ici, c'est juste au lieu d'en faire une nouvelle réponse appelée multidiffusion, nous pouvons simplement utiliser celle de la mort. Je vais donc m' en débarrasser un peu. Ce que nous pouvons faire ici s' appelle la mort multidiffusion. Et maintenant, ce que nous pouvons faire, c'est revenir aux informations du joueur, créer une nouvelle variable appelée effets sonores de réponse. Et c'est un signal sonore qui va vers la base ennemie. Maintenant, cliquez sur les informations du lecteur, définissez l'effet sonore pour répondre, compiler et enregistrer. Maintenant, passons à la, passons ici, prenons ces informations de joueur, cassons l'épingle non connectée. Je vais donc utiliser la réponse. Et puis on peut simplement le relier ici et retrouver l'emplacement de l'acteur à nouveau. Et maintenant, nous allons jouer l'effet sonore de réponse. Permettez-moi donc de l'essayer, et je crois que cela fonctionnera. Il joue donc ce Santa Fe. Et si on clique sur OK. Et vous pouvez voir que j' ai cette réponse et cet effet. D'accord, génial. Donc, travailler sur le client et cela fonctionnera probablement aussi sur le serveur parce que cela est exécuté via le serveur. Il s'agissait donc de tous les effets sonores. Si vous le souhaitez, vous pouvez également y ajouter de la musique ici. Celui-là. Vous pouvez simplement jouer celui-ci et celui-ci va probablement jouer côté client. Je ne pense pas que vous devriez jouer cela via une multidiffusion car les joueurs entendent naturellement les sons ensemble comme s'ils ne partageaient pas la même bande son à la même seconde. Il suffit de jouer ça auprès des clients et d'essayer de s'entraîner. Essayez peut-être d' y aller et de le faire vous-même. Mais je vais le faire probablement à la fin de ce cours parce que c'est un peu ennuyeux de jouer la musique tout le temps pendant que je suis, pendant que je parle. Cliquons donc sur Fichier et Enregistrer tout. Passons à la leçon suivante. 93. Corriger l'erreur de mort des échelles: Maintenant, corrigeons ce bug d' échelle que nous avons vu dans la vidéo précédente. Donc, ici en haut. Donc, quand je serai endommagé ici, je resterai coincé à l'intérieur, réessayons. Je vais rester coincé ici à l'intérieur de cette boîte de collision. Et c'est parce que, permettez-moi donc de fermer ce jeu et de retourner à la base des joueurs et des joueurs. Et la raison en est ici chez nos êtres clients. Donc, quand nous nous sommes mis, c'est grimper à faux, et c'est que ce n'est pas vrai. Vous pouvez voir ici que nous modifions le type de collision par ****. Et rappelez-vous plus tôt que nous avons créé ce joueur d'escalade afin de contourner ces boîtes de collision ici. Et quand nous le modifions en type de collision par ****, nous sommes en fait coincés dans ces boîtes de collision. C'est donc ce que nous essayons de faire. Nous devons donc faire une petite ou une petite reprogrammation ici. Alors, en cliquant sur celui-ci, laissez-moi cacher cette épingle. Bon, donc pour commencer par ça, revenons en arrière. J'ai trouvé que la meilleure solution pour ce faire est d'accéder aux cartes de tuiles et à l'intérieur des cartes de tuiles ici. Nous avons donc quelque chose appelé «  perspicacité » dirigé à l'échelle nationale, minimiser cela et aller à la base de l' escalade et de l'escalade. Donc, dans le client en cours de fabrication, nous avons fabriqué quelque chose appelé boîte de collision supérieure. Et ici, nous avons mis en place si vous pouvez monter ou non. Et vous pouvez voir cette boîte ici. Je ne sais pas si vous pouvez voir visuellement comme si c'était les bugs en fait. Celui au-dessus de la lettre. C'est celui que nous avons ajouté, ce qui fait que vous ne pouvez pas monter. Nous pouvons donc étendre le bouton Haut. Lorsque vous êtes sur l' échelle, si vous vous en souvenez, vous pouvez essayer de regarder la vidéo des lettres si vous ne vous en souvenez pas, mais c'est une vidéo que nous avons ajoutée. Et au lieu de l'ajouter ici, permettez-moi de faire autre chose. Donc, dans la carte de tuiles que nous avons ajoutée, donc cet acteur qui va à la fenêtre d'affichage, faisons en fait une boîte de collision autour de cette plate-forme est que nous définissons cette plate-forme. Pour ce faire, cliquons ici et ajoutons et recherchons collision à une collision de boîte et appelons cela le refus, la montée. Nous refusons donc au joueur d' appuyer sur le bouton Haut, sorte qu'il spam l' échelle là-haut. Et ce qu'il y a de bon à faire ici. Donc, même si nous ajoutons dix lettres ou dix cordes, cela fonctionnera tous parce que c'est une boîte qui couvre tout ici. La meilleure façon de mettre cela ici est maintenant d' aller en perspective et de cliquer sur la vue de droite, puis de passer en mode Éclairage ici. Et vous serez en mesure de le voir beaucoup mieux. Et laissez-moi juste zoomer un peu plus loin. Ok, donc cette boîte de collision ici, la meilleure façon de le faire est de couvrir cette plate-forme pour que vous puissiez essayer d'aller avec le X ici, non ? Cent, deux cent, trois cent quatre-vingts. Et vous pouvez simplement essayer de couvrir cette zone. Donc peut-être 375, juste un peu plus petit, quelque chose comme ça, ou 73 AT juste pour s'assurer qu'il couvre réellement la zone ici aussi. Et pour la boîte de collision Y et Z, c'est peut-être 35. Je pense qu'il en couvre déjà beaucoup. Et essayez de couvrir juste au-dessus de l'herbe. Vous n'avez pas à devenir fou avec ça. Je vais donc supprimer le claquage. Et tout comme la ligne supérieure est juste au-dessus ces boîtes de collision ici, sur l'herbe. Ok, donc je pense que ça couvre bien ça. Compilons et sauvegardons, et passons à cela et cliquons dessus sur le composant commence à se chevaucher. Cliquez ici et dites que l' acteur a marqué. Et encore une fois, disons que c'est le joueur. À l'intérieur d'ici. Nous devons à nouveau le faire passer par une autorité. Switch a donc autorité, en s'assurant que c'est le serveur qui l'exécute. Faisons une branche. Alors maintenant, nous demandons si c' est le joueur ? Si c'est le cas, prenons cela et disons que c'est la référence du joueur. Et nous voulons juste appeler ça encore une fois. On peut grimper. Celui-ci, n'oubliez pas de choisir un message. Peut monter, donc ne peut pas grimper, mais peut grimper le message. Et chaque fois que vous entrez en collision, n'oubliez pas que ce que vous entrez en collision avec cette boîte, nous venons d'ajouter ici. Vous n'êtes pas en mesure d' appuyer sur le bouton Up, j'aime grimper, car sinon vous pouvez passer la corde. Donc, le prendre et le mettre au point négatif. C'est donc exact. La prochaine chose est de cliquer ici et de cliquer sur Terminer le chevauchement. Et il suffit de copier ce code et de les connecter ici. Donc, d'autres acteurs ici, d'autres acteurs ici aussi. Et disons que c'est vrai. Maintenant, vous pouvez monter lorsque vous n'êtes pas à l'intérieur de cette boîte. Bon, donc maintenant nous avons le code ici. Passons donc à la base aveugle. Et au lieu d'escalader la base, supprimons maintenant le code ici parce que nous n'en avons pas besoin. Permettez-moi de supprimer complètement cette boîte. Enlevez-le. Je vais vous donner des erreurs et supprimer tout cela aussi. Nous avons donc déplacé le code ici à la place. C'est ce qui va le régler à la place. La prochaine chose que nous pouvons faire est d' aller à la base des joueurs et d'examiner le code du client. Donc, le client étant code était ici. Et à l'intérieur du code d'escalade, nous avions celui-ci appelé set. L'ensemble peut grimper. C'est celui que nous venons d'emménager ici. Alors, ce que je veux faire, laisse-moi revenir en arrière. Où est-il ici ? Ce que je veux faire ici, c'est maintenant demander comme faire une branche ici et écrire un NON booléen. Donc, si vous ne pouvez pas vous aligner, ce qui signifie que vous êtes en collision avec cette boîte que nous venons d'ajouter. Donc, si vous entrez en collision avec elle et que vous demandez si vous grimpez. On va donc grimper. Et c'est ici que l'on grimpe. Et écrivez un booléen AND. Permettez-moi de le faire pour que je puisse vous expliquer beaucoup mieux. Donc, connectez ça ici. Donc, ce que je veux faire ici. Donc, si vous ne pouvez pas grimper Bob, ce qui signifie que vous êtes en collision avec cette boîte ici. Si je le déplace simplement pour qu'il puisse les avoir tous ensemble. Donc, si vous êtes en collision avec cette boîte, cela signifie que c'est faux, comme si vous ne pouvez pas grimper, qui rend cela vrai ici. Donc, si vous ne pouvez pas monter et les êtres de vos clients, vous êtes toujours sur l'échelle. Vous êtes donc sous lettre, mais vous vous recoupez également cela, ce qui signifie que vous êtes ici. Ensuite, nous voulons nous souvenir à nouveau avant de le définir ici dans l'IsClient étant aussi pour le joueur aggloméré. C'est ce que nous voulons. Parce que lorsque vous grimpez et que vous commencez à chevaucher cette boîte, vous souhaitez désactiver les boîtes de collision ici pour pouvoir monter. C'est ce que nous essayons de faire. Permettez-moi donc de revenir au graphique des événements. Laissez-moi d'abord fermer cela et pour vous faciliter la tâche, créons en fait une énumération. Alors ici, cliquons avec le bouton droit de la souris sur l'énumération des Blueprints, et appelons cela un état de collision. Donc pour quoi je vais utiliser cette énumération appelée État de collision. Je vais juste faire une liste de deux objets, même collision et la même collision. Énumération très, très simple, très simple ici. Donc, pour écouter, rappelez-vous, et l'énumération n' est qu'une liste de tous les éléments que vous voulez. Pour ce bien, nous voulons juste que la collision soit activée et désactivée. C'est juste la liste. Fermons le jeu et revenons à la base de joueurs ici. Maintenant, rappelez-vous, nous ne pouvons pas simplement prendre cette capsule. Oups, nous pouvons simplement prendre cette capsule et dire Définir le type d'objet de collision, puis le définir sur un joueur d'escalade par exemple. Nous ne pouvons pas le faire car rappelez-vous que nous l' exécutons via le serveur afin que le client ait un bogue. Donc, si vous cliquez sur Jouer maintenant et essayez de voir si cela fonctionne. Donc, en jouant en tant que client, je peux monter. Vous pouvez voir que je peux grimper ici, mais ça va embêter notre personnage. Et au lieu de le faire de cette façon, vous devez l'exécuter par le biais d'une notification de représentant juste pour informer les clients de ces changements. Prenons donc, sauvegardons tout abord et maintenant nous pouvons utiliser notre énumération. Faisons une nouvelle variable. Appelons ça un état de collision. Vous pouvez également l'appeler autre chose si vous le souhaitez. Mais je vais juste appeler ça Collision State. Et je change le type de variable en état de collision E, peu importe ce que nous appelons ici dans l'énumération. Donc, l'état de collision E, c'est ce que nous avons appelé ici. Alors maintenant, comptons sauver. Et je vais transformer cette réplication en une fonction de notification de représentant, puis de déballage. Je vais prendre cet état de collision et dire activer l'énumération. Nous l'avons donc fait plusieurs fois maintenant. Lorsque la collision est activée, je veux que vous preniez ma capsule et que vous définissiez type d'objet de collision comme étang parce que nous voulons entrer en collision avec tout ce genre de choses. Lorsque mes collisions de je vais copier collez ceci et le réglez pour grimper en tant que joueur. Il va donc mettre la collision de la plate-forme, en fait toutes les collisions du sol. Énumération très simple, il suffit d'activer et d' éteindre la collision. Maintenant, nous pouvons utiliser cela très utile. Nous pouvons donc prendre cet état de collision et le définir ici aussi. Alors maintenant, pensons que je pensais que nous le faisions quand nous ne pouvons pas monter, ce qui signifie que nous entrons en collision avec cette boîte ici. Et nous sommes en train de grimper. Cela signifie que nous voulons désactiver la collision parce que nous sommes grimper et que nous voulons contourner cette plate-forme. Cependant, si nous ne frappons pas cette boîte ici ou si nous ne sommes pas en train de grimper, alors nous voulons activer la collision car peut-être si nous ne sommes pas en train de grimper, même si nous touchons cette boîte, si nous ne grimpons pas, peut-être que nous sommes debout au-dessus d'ici et que nous ne voulons pas arrêter la collision, sinon nous tomberons à travers le sol. Nous voulons donc activer la collision si nous ne grimpons pas ou si nous ne touchons pas. Cette boîte ici, ça veut dire que nous sommes ici et que nous voulons vraiment que notre terrain soit sur le terrain. C'est donc exact. Maintenant, une autre chose, c'est que vous pouvez essayer d' y jouer et de voir ce qui se passe. Alors, je le joue ici. Je peux monter ici. Et si je suis touché, vous pouvez voir que je suis toujours coincé. Et le problème est ici dans la fonction de déballage colombien. Rappelez-vous que nous avions tous ces éléments. Je vais en fait tous les supprimer. Et je vais reconnecter les broches comme avant. Parce que nous n'en avons plus vraiment besoin. Et vous pouvez simplement les rapprocher. Bon, alors compilons et économisons, et essayons de jouer maintenant. Voyez si cela fonctionne. Maintenant, je peux voir, je peux grimper et je joue en tant que client en ce moment. Je peux donc le faire. L'autre bug en ce moment, c'est que je ne peux pas descendre. J'essaie de descendre, mais je ne peux pas. Mais vous pouvez voir que la mort a fonctionné. Tout fonctionne. Le problème en ce moment, c'est comme si ça fonctionnait en ce moment. Et si je saute au sol, je peux encore marcher. Si je saute ici, je peux encore marcher. Le problème, c'est que je ne peux pas descendre. Nous devons donc régler ce problème. Nous devons donc accéder au graphique des événements. Et le problème est là. Ainsi, la montée peut être vraie lorsque vous pouvez grimper et que vous essayez de descendre. C'est ce que, rappelez-vous, nous avons fait cette minuterie où nous vérifions si le joueur essaie de descendre. Et oui, quand vous descendez, mais nous n'avons pas vraiment désactivé la collision. Laissez-moi copier ça ici. Donc, ici, dans le minuteur. Donc, lorsque vous commencez réellement à grimper, le serrage est réglé sur vrai. Je veux désactiver ma collision. Et là quand on annule l'être IsClient. Donc, quand vous aurez fini d'escalader, je peux réactiver ça. Donc, je l'installe ici aussi. Donc maintenant, tous les problèmes devraient être résolus si nous l' avons fait correctement. Essayons à nouveau. Je peux grimper, je peux marcher, je peux aussi descendre. Tout fonctionne et si je meurs ici, je vais être poussé. Cela fonctionne également. Et si je meurs, cela fonctionne aussi. Je pense donc que c'est un moyen plus facile gérer la collision et essayons de se faire assommer ici. Cela fonctionne également. Je peux me serrer et je peux aussi mourir ici. Oui, ça fonctionne aussi. Ok, donc c'est un moyen facile de le faire, il suffit de faire une énumération avec la collision allumée et éteinte, puis de la mettre sur une notification de représentant. Ainsi, dans la fonction de notification, vous n'avez qu'à activer et à désactiver la collision en fonction de ce que vous définissez ici. Et rappelez-vous les variables on ou le représentant notifient. Vous pouvez uniquement définir des notifications via un serveur. Les événements peuvent indiquer que c'est suffisant. Parce que rappelez-vous, vous ne pouvez pas simplement entrer ici et passer à travers celui-ci. Vous devez être sur le serveur avant de pouvoir définir des fonctions non lues. Très, très important et c'est ce que nous faisons pour toujours vérifier si c'est le serveur que vous utilisez et si c' est le cas, c'est exact. Oui. C'était tout pour ce corrigé. Et passons à la suivante. 94. Ajouter de l'expérience aux structures: Créons maintenant notre système de nivellement. Donc tout d'abord, ce dont nous avons besoin pour le nivellement est ici dans la structure et l'information sur l' ennemi ou l'information sur les animaux, nous devons donner de l' expérience aux ennemis , car évidemment, chaque ennemi va en donner . une sorte d'expérience et il y aura des différences les unes des autres. Donc, l'expérience d'écriture ici dans la structure et la changer en entier. Comme vous le pouvez, vous pouvez le mettre dans un flotteur. Mais l'expérience, je veux, vous n'avez pas vraiment de virgule, donc vous n'avez pas de décimale. Nous n'avons donc pas vraiment besoin d'un flotteur. Ce sont donc des chiffres entiers. Et j'aimerais que vous ayez un jeu avec quelque chose qui donne, par exemple, 20.5 expérimenté que vous n' auriez à le régler sur un flotteur. Sinon, je vais juste avec un entier parce que ne sont que des nombres entiers que je fais. Et pour l'expérience, je vais le mettre juste en dessous des dégâts. Celui-ci va donc préciser combien d'expérience chaque animal va donner. Alors, allons maintenant voir l'ennemi ici et ensuite nous basons. N'oublions pas de compiler et de sauvegarder comme avant. Et allons voir le cochon et ouvrons l'éditeur de Blueprint complet. Et à l'intérieur d'ici pour l' expérience du cochon, par exemple, obtenons, disons 20 expériences chaque fois que nous tuons un cochon. Pour l'escargot, chaque fois qu'on tue un escargot, on obtient, par exemple, dix composés expérimentés. Économisez. Whoops. Ok, donc c'est fait pour l'animal, la structure des animaux. Allons maintenant au joueur. Le joueur aura besoin de deux variables. Nous avons donc d'abord besoin d'un niveau. Quel est donc votre niveau actuellement ? Et mettons cela dans un entier. Ce sont des chiffres entiers. Et faisons également de l'expérience. Combien d'expérience avez-vous en ce moment ? Et il s'agit également d'un entier. Mettons-les. Je les mettrai juste en dessous des dégâts de base ici. Bon, donc, gardons ça. Et la dernière chose. Alors maintenant, permettez-moi d'abord d'aller à la base des joueurs et des joueurs et à Compiler et enregistrer. Et ici, dans les propriétés et la structure d'informations du joueur, le niveau par défaut, vous allez commencer par un. N'oubliez pas que vous ne commencez pas par le niveau 0, vous commencez par le premier niveau. Alors n'oubliez pas d'écrire cela ici comme une expérience étrangère. Nous allons le mettre à jour plus tard, alors ne vous inquiétez pas. Allons le fermer. La dernière chose que vous devez donc définir la quantité d'expérience dont vous avez besoin par niveau. Vous avez donc un peu comme si vous avez besoin d'une liste de l'expérience nécessaire pour quel niveau. Nous en avons donc besoin pour créer une nouvelle structure. Cliquons avec le bouton droit de la souris et passons aux Blueprints et créons une nouvelle structure. Et celui-là, je vais appeler ça des informations de niveau. Il contient donc des informations sur l'expérience dont nous avons besoin pour chaque niveau. Il n'a donc besoin que de deux variables. Nous avons besoin du niveau. Et il va s' agir d'un entier. Et celle-ci s'appelle « expérience ». Combien d' expérience faut-il donc ? Et ce sera également un entier. Donc, pour deux choses très élémentaires, quel est le niveau ? Et au lieu d'avoir de l'expérience, nous pouvons simplement appeler cela l'expérience requise. Il s'agit donc d'un niveau plus explicatif et d'expérience requis pour augmenter le niveau. Allons le fermer. pour travailler avec cette structure, nous devons en fait travailler avec des tables de données. tables. Nous allons travailler avec eux lors de la prochaine leçon. Passons donc à autre chose. 95. Introduction aux tableaux de données: Maintenant que nous avons cette structure d'informations de niveau, commençons à travailler avec des tables de données et elles sont si utiles, vous verrez qu'elles sont agréables à utiliser et qu'elles sont également très faciles, pas vraiment complexes concept. Allons dans le dossier, créons un nouveau dossier, appelons des tables de données et avons toutes nos tables de données ici. En ce moment, nous allons juste en avoir un, mais j'ai aimé être structuré. Et maintenant, vous pouvez cliquer avec le bouton droit de la souris ici et divers. Et ici, vous pouvez sélectionner la table de données, celle-ci. Maintenant, il vous demande quelle structure dois-je créer une table de données ? Ensuite, vous devez spécifier la structure. Et la seule est cette information de niveau sur laquelle nous avons cliqué. Ok, et appelons ça «  d t » pour les tables de données. Et je vais aussi appeler ça des informations de niveau. Et double-cliquez dessus. Et ici, nous sommes à l'intérieur d'une DataTable. Vous avez maintenant besoin d'une nouvelle valeur, vous devez donc cliquer sur Ajouter ici. Maintenant, pour ajouter de la valeur. Cette valeur vous donne une ligne, puis vous pouvez voir les variables que vous avez créées à l'intérieur de la structure d' informations de niveau. Ainsi, chaque fois que vous ajoutez une nouvelle variable dans votre structure, elle sera ici dans cette table de données. En quoi consiste cette table de données, vous pouvez simplement l'imaginer comme un document Excel Excel où vous disposez, par exemple, du niveau et de l'expérience requis. Ensuite, il suffit de créer plus de lignes et de les définir. Pour la première, au lieu d'une nouvelle ligne, je vais simplement la renommer en une seule. Donc, en cliquant sur F2 pour renommer et en cliquant sur un, nous pouvons également cliquer avec le bouton droit de la souris et cliquer sur Renommer. C'est à vous de choisir. Nous commençons donc par le premier niveau, évidemment pas 0. Vous devez donc écrire ici combien d'expérience est nécessaire pour atteindre un niveau de deux. Donc, 50 expériences pour un niveau maximum de deux. Et puis permettez-moi d'ajouter une nouvelle valeur et que la ligne que je vais appeler deux. Et c'est très important. Nous allons en fait les utiliser, alors assurez-vous de les appeler 1234 et ainsi de suite. Donc pour celui-ci, au niveau deux, vous avez besoin de 75 personnes expérimentées dans le Love Lab. Et celui-là, je vais appeler trois. Au niveau 3, vous avez besoin de 100 pour monter au niveau supérieur, et nous allons en faire cinq. Donc à quatre ans, vous avez besoin 125 et cela convient pour vous avez besoin de cent, cent vingt-cinq. Et au niveau 5 et au niveau 5, il faut 150 pour monter au niveau. Nous pouvons donc simplement définir quantité d'expérience dont vous avez besoin pour augmenter votre niveau. Et évidemment, c'est là que le design de jeux intervient. Vous devez équilibrer tous ces chiffres. Maintenant, fermons ça et c'était pour les tables de données. Vous pouvez donc tout sauvegarder. Et passons à la prochaine leçon. 96. Tableaux de données via Google Sheets: Ce qui est génial avec les tables de données, vous n'avez pas vraiment à le faire manuellement tout le temps, comme créer toutes ces lignes. Parfois, vous avez, par exemple, si, disons que vous avez des objets dans un conte amusant, le jeu que j'ai sorti sur Steam. Donc, dans Farm Tail, j'ai comme tous les articles que vous pouvez acheter dans la boutique, je les ai en fait dans une table de données. Et cela prendra tellement de temps, car si vous avez dix ou 20 variables pour chaque élément, cela prendra une éternité. Et c'est pourquoi l'utilisation de Google Sheets est en fait beaucoup plus rapide et je le recommande. Donc ici dans Google, comme si vous créez un compte et que vous allez ici et allez sur le lecteur. Donc, ici, à sec, vous pouvez simplement cliquer avec le bouton droit de la souris et créer un nouveau Google Sheets. Et à l'intérieur de cette feuille Google, je peux maintenant jeter un coup d'œil à ma table de données. Donc, si vous minimisez simplement, si vous ne vous souvenez pas de la structure, suffit de revenir à la structure, il suffit de revenir à la structure, d'y jeter un coup d'œil, puis d' écrire les noms ici. Par exemple, si je retourne dans ma feuille Google, vous devez écrire le nom exact du héros, également avec les majuscules. Par exemple, je peux dire que je commence généralement par le numéro de ligne et juste ici. Essayons juste ça. Donc ce numéro ici, et je vais juste changer de style ici juste pour le rendre beaucoup plus beau, juste pour mon bien. Et ici, ça va être audacieux. D'accord ? Ici, nous avons donc le premier niveau de variable variable disant. Et la prochaine, c'est dire que l'expérience est nécessaire. Je vais agrandir ça. Donc, quelque chose comme ça. Cela pourrait être ma feuille Google Sheet. Maintenant, c'est ma table de données. Donc, au rang numéro un. Nous avons donc le premier niveau et cela n'a pas vraiment d'importance. Je les fais juste comme numéros de rangées. Donc, au niveau 23, et vous pouvez voir c'est beaucoup plus rapide car je peux simplement glisser comme ça. Donc, maintenant, il y a tout ça. Et si vous débutez dans Google Sheets, vous pouvez regarder un tutoriel sur YouTube. Cela prendra deux minutes. Donc, en sélectionnant ces numéros, par exemple, je peux faire glisser vers le bas et les afficher automatiquement. Et l'expérience requise, je peux simplement dire, par exemple, que nous commençons par 50 et ensuite je peux dire 75. Et je pense qu'il peut le faire automatiquement. Laissez-moi essayer. Il peut également le faire automatiquement. voit que vous en ajoutez 25 en plus et cela se fait automatiquement. Vous pouvez voir que c' est beaucoup plus rapide que d'entrer et d'entrer tous les numéros ici. Cela le fait automatiquement pour moi. Et vous pouvez même créer des formules dans Excel pour équilibrer votre jeu , de sorte que vous n'ayez pas à saisir chaque numéro manuellement. Mais évidemment, nous devons tester le jeu pour s'assurer qu'il fonctionne. Disons que cette feuille Google était bonne et bonne. Et maintenant, ce que je vais faire, c'est cliquer sur Fichier, aller télécharger et télécharger en tant que CSV, CSV très important. Mais maintenant, il va être téléchargé. Il s'agit de mon fichier téléchargé, je peux maintenant le renommer. Et ce que vous devez renommer, c' est le même nom que les tables de données. Donc, si je vais ici, ça s'appelle les informations de niveau DT. Assurez-vous donc d' avoir exactement le même nom, informations de niveau DT avec les majuscules. Je vais le faire glisser et le déposer ici sur cette table de données. Et en fait, je pense que j'en ai besoin, en fait je n'en ai pas besoin, mais si vous ne l'aviez pas, donc vous pouvez voir si vous double-cliquez dessus, vous pouvez voir que vous obtenez toutes ces entrées. Très, très sympa. Il l'a fait automatiquement et il peut maintenant utiliser ces informations. Et je vois que c'est beaucoup plus rapide à faire. Maintenant, ce que j'ai dit précédemment, nous pouvons également le supprimer. Donc, si vous n'avez rien, si vous n'avez pas encore réussi et que vous avez la structure, laissez-moi tout sauvegarder d'abord. Donc, en allant à ces tables de données, vous pouvez simplement la faire glisser ici. Ensuite, il vous demandera si vous importez cette table de données, type de ligne de table de données. Ensuite, vous devez sélectionner les informations de niveau ici, celle. Et je vais juste dire ignorer les champs supplémentaires. Parfois, j'ai des champs supplémentaires pour calculer ma formule. Il devrait donc simplement ignorer les champs supplémentaires. Et les champs supplémentaires sont comme s'ils regardent simplement vos variables ici. Si vous avez quelque chose, par exemple si vous avez une autre variable qui n'existe pas dans votre structure, cela sera ignoré. C'est donc ce que cela signifie. Et ignorez les champs manquants. En fait, je ne le veux pas, parce que s'il nous manque quelque chose ? Et le champ Importer la clé n' est que nos chiffres ici. Laissez-moi essayer de le faire. Notre numéro est donc ma clé de saisie, et vous verrez à quoi cette clé est utilisée plus tard. Donc, en faisant cela, et essayons de le faire. Peut-être qu'il ne peut pas, peut-être qu'il peut parfois s'en sortir. Nous allons donc postuler et double-cliquer. Maintenant, nous pouvons voir que cela fonctionne. Vous pouvez donc maintenant voir toutes ces entrées. Et ça a l'air génial. Maintenant, nous allons tout sauver. Et je recommande d'utiliser Google Sheets chaque fois que vous créez un jeu et que vous faites un projet, c'est beaucoup plus rapide à utiliser. Vous pouvez probablement optimiser ces chiffres. Peut-être que vous n'avez pas vraiment besoin de ce nom de ligne et que vous pouvez aimer le champ de clé d'entrée. Vous pouvez simplement écrire ce niveau ici. Et vous pouvez le faire simplement pour minimiser toutes ces lignes ici. Mais maintenant, cela fonctionne. Passons à la suivante. 97. Créer une bibliothèque de fonctions: Très bien, donc la prochaine chose que nous devons faire pour utiliser cette table de données dans notre code, nous devons passer par une bibliothèque. Et c'est quelque chose que nous n'avons pas appris auparavant, mais c'est très facile. Ne vous inquiétez pas. Cliquez avec le bouton droit de la souris maintenant. Et créons un nouveau dossier et je vais l'appeler bibliothèques. C'est la dernière nouvelle chose que nous apprendrons ici. Allons donc à l'intérieur d' ici et cliquez avec le bouton droit de la souris. Et ici, dans l'onglet Blueprints, vous avez quelque chose appelé bibliothèque de fonctions. Jusqu'à présent, nous avons appris les classes de Blueprint. Nous avons appris les structures, nous avons appris les énumérations. Nous avons pris connaissance des interfaces Blueprint et nous allons maintenant créer une bibliothèque de fonctions Blueprint. Vous pouvez donc voir que nous avons traversé tous ces problèmes. Et celle-ci est également une bibliothèque de macros de bibliothèque. Tellement semblable. Mais nous allons simplement nous inquiéter de la bibliothèque de fonctions pour l'instant. Nous allons donc cliquer dessus. Et je vais juste appeler ça la bibliothèque de fonctions, comme ça. Laissez-moi entrer ici et dire maintenant que la fonction que nous voulons créer s'appelle obtenir des informations de niveau. Nous essayons donc d'obtenir ces informations de niveau à partir de cette table de données que nous essayons d'extraire. C'est donc ce que nous faisons dans la bibliothèque de fonctions. Nous essayons d'extraire des informations de cette table de données et nous pouvons les utiliser dans notre code. Alors ici, obtenez des informations sur les niveaux. Je vais devenir pur. Et rappelez-vous que lorsque nous fabriquons quelque chose de trop pur, c'est comme en faire une fonction verte. Donc, si je vais à la base de joueurs juste pour que vous puissiez voir un exemple, et si je regarde autour de moi, par exemple, cela prend le contrôle. La rotation est une fonction pure et celle-ci, la fonction bleue, n'est pas sécurisée. Donc, la fonction pure, vous n'avez pas ces épingles d'exécution parce que vous n'en avez pas vraiment besoin ici. N'oubliez pas que chaque fois que vous avez juste besoin d'informations, vous n'avez pas vraiment besoin de stylos d'exécution. Les épingles d'exécution servent uniquement à des informations de réglage. Par exemple, vous définissez l'entrée du mouvement, vous définissez la valeur x est la valeur z dans ce cas. Mais là, vous obtenez juste une rotation du contrôle. Obtenir un vecteur, c'est juste obtenir des informations. Vous n'avez pas vraiment besoin de définir de nouvelles informations. Ici, je reçois des informations au niveau de la porte. Je vais le mettre à l'état pur. Et l'entrée va extraire de toutes les entrées clés que vous avez mises ici. L'entrée clé n' est donc qu'un chiffre. Je vais donc faire de nouvelles entrées et ce sera un entier. Et je vais appeler ça un niveau. Il essaie donc de voir. La chose que je vais faire ici, c'est dans la base de joueurs, elle va jeter un coup d'œil aux informations du joueur, regarder à quel niveau vous êtes. Et à partir de ce niveau, comme si on peut voir le numéro un. À partir de ce niveau, il vous indiquera quelle expérience est nécessaire pour atteindre le niveau deux. C'est donc ce que nous essayons de faire. Ce niveau et ce que nous devons utiliser s'appellent Obtenir une table de données. Obtenir une ligne de table de données. Nous essayons de sortir une ligne spécifique de ce niveau. Donc, si nous sommes au niveau quatre, il va passer à quatre. Ensuite, il va obtenir cette ligne de table et utiliser cette information 125 dans l'expérience requise. Essayons donc de le faire. On ne peut pas simplement le brancher comme ça, mais on peut dire deux cordes. Nous le convertissons d'abord en chaîne, puis il peut le faire. Il faut donc d'abord la convertir chaîne, puis la convertir en nom. Et puis en entrant ici, connectons-le. Et la table de données que nous voulons extraire, nous n'en avons qu'une seule. Alors, sélectionnez-le ici. Et puis partons d' ici et disons retour. Et nous ajoutons un nœud de retour. Et voilà l'information maintenant, c'est la table. Maintenant, il sait que si on est au niveau quatre, on voit ici dans l'information que nous sommes au niveau quatre. Et nous avons besoin de cette expérience pour progresser. Ici. Appelons simplement le jeu d'informations de niveau d'informations de niveau supérieur. D'accord ? Et ce qui est génial avec les bibliothèques que vous pouvez réellement, ce sont des fonctions globales. Vous pouvez les appeler n'importe où. Si je vais dans ma base de joueurs maintenant et que je dis encore des informations de niveau, vous pouvez le voir. Il provient de la bibliothèque de fonctions, donc c'est une fonction globale que vous pouvez utiliser n'importe où. Et vous pourriez vous demander pourquoi ne pas coder tout ou beaucoup de choses à l'intérieur d'ici ? C'est vraiment coûteux de le faire. J'ai beaucoup lu à ce sujet. Et certaines personnes ont en fait un retard dans leurs jeux. Si vous avez cette bibliothèque de fonctions est très lourde. Leur jeu est à la traîne. On dirait donc que c'est très, très lourd à utiliser si vous en avez trop, mais dans des cas comme celui-ci où nous devons réellement l'utiliser. Et parfois, comme pour quoi vous devez utiliser cela, c'est que vous devez juste penser, y a-t-il une fonction que je dois utiliser dans 50 Blueprints sont dans cinq plans tout le temps, alors vous devriez probablement y aller et y arriver, par exemple, obtenir les informations de niveau, nous pouvons l'utiliser dans obtenir les informations de niveau, nous pouvons l' notre manette de joueur, dans notre interface utilisateur, dans notre manette de joueur ou non comme contrôler la base des joueurs et la base ennemie, etc. sur. Nous pouvons donc l'utiliser dans nombreux endroits et c'est probablement une bonne idée de le faire ici au lieu d'un plan spécifique. Ok, donc vous pouvez voir ici je peux juste dire des informations au niveau de la porte, et maintenant nous devons brancher quelque chose ici pour que nous puissions brancher ces informations de lecteur , par exemple, je peux juste vous montrer très rapidement. Par exemple, nous pouvons prendre le niveau actuel des joueurs et nous pouvons le brancher ici. Et maintenant, par exemple, si le joueur est au niveau trois, il va extraire cette ligne numéro trois, et il sait que vous en avez besoin. Maintenant, vous pouvez le prendre à partir d'ici et le briser et il connaît votre niveau trois. Et il faut ici, faut 100 personnes expérimentées pour monter au niveau. C'est une méthode très, très cool pour le faire. Nous l'avons donc fait, si je l' explique très rapidement. Vous avez donc créé ici une structure appelée informations de niveau et vous avez créé ces variables. Et après cela, nous venons d'entrer dans Google Sheets et de l'avoir fait ici. Vous pouvez maintenant faire glisser ces informations et les déposer dans cette table de données. Je vais juste ici dans le navigateur de contenu. Ensuite, vous devez sélectionner la structure pour laquelle ces tables de données. Et c'est ce que nous avons fait. Il suffit donc de créer cela pour nous. Ensuite, vous allez dans la bibliothèque de fonctions et créez celle-ci, obtenez une ligne de table de données. Ensuite, vous sélectionnez quelle table de données et quel est le nom de la ligne ? Leurs propres noms ne sont que des chiffres ici. Par exemple, si vous modifiez le nom de la ligne en bonjour, il ne saura pas comme si vous étiez un niveau 1, il ne saura pas ce que est parce que votre nom de ligne est bonjour. Ce n'est pas un chiffre, mais nous l'avons en chiffres. Et il va savoir que, par exemple, si votre niveau trois, il va diffuser et cette information, nous pouvons en fait l'appeler ici et les utiliser n'importe où. Sauvons donc tout et passons à la suivante. 98. Ajouter de l'expérience de la mort ennemie: Bonjour et bienvenue. Nous allons maintenant ajouter de l' expérience lorsque l'animal meurt. Et je suis ici dans la base de joueurs. Nous devons d'abord créer un événement appelé « expérience publicitaire » car nous voulons ajouter de l'expérience au joueur. Nous voulons donc nettoyer cela un peu plus tard, mais ajoutons-le ici là où il y a de la place. Allons de l'avant et créons un événement personnalisé. Et nous allons le faire via la fonction Blueprint Interface. Passons donc aux interfaces, à la base des joueurs, et créons une nouvelle fonction appelée ajouter de l'expérience. Et ici, l'entrée est juste, juste l'entier parce que c'est juste l'expérience. Et appelons ça expérimenté à ajouter. Compilons et sauvegardons, revenons à la base de joueurs et sauvegardons tout ici. Cliquez maintenant avec le bouton droit de la souris et appelons l'expérience publicitaire. Et celui-ci, encore une fois, faisons-en un qui passe par le serveur appelé expérience publicitaire pour s' assurer que le client ne triche pas. Mettons-le à travers le serveur en étant fiable. Et appelons-le ici, expérience Server AD. Encore une fois, nous avons besoin d'un entier appelé expérience pour ajouter. Et connectons-les ici. Bon, donc nous avons cet événement ici et nous n'avons rien à voir là-dedans pour le moment. Mais le fait est que lorsque vous tuez un ennemi, vous devez mettre en valeur l'expérience que vous devez ajouter aux ennemis qualifiés ou tués. Allons donc à l'ennemi maintenant. Donc, à l'intérieur de la base ennemie et ennemie, à l'intérieur d'ici, voyons où nous tuons l'ennemi. Nous tuons donc l'ennemi. Il s'agit de tous les dégâts. Et donc ici, nous vérifions si la santé est nulle. Et si c'est le cas, nous allons aller l'avant et le mettre à mort. Donc, avant de le faire, c' est ici que nous tuons l'ennemi. Nous sommes sûrs que le nom est mort. Donc, ici, je vais appeler mon annonce pour vivre l'événement ici et la base de joueurs. Donc, pour obtenir le joueur, nous avons déjà une manette de joueur. On peut dire que c'est un pion contrôlé. Ensuite, nous pouvons dire Obtenir une référence de couche parce que nous essayons de référencer la base de joueurs. Et laissez-nous le relier. Oups, laissez-nous le relier. Juste comme ça. Je peux juste le tirer ici à la place. Ok, donc nous avons cela maintenant et maintenant, nous pouvons nous en sortir et dire ajouter de l'expérience. Et c'est un message car il provient d' une fonction Blueprint Interface. Et combien d'expérience souhaitez-vous ajouter ? Rappelez-vous que nous avons fabriqué dans la structure animale, nous l'avons déjà fait, afin que nous puissions la briser ici. Nous allons tout cacher pour l'instant, et cliquons sur cette expérience car nous avons déjà défini quantité d'expérience de chaque cadeau animal. Maintenant, nous voulons simplement donner cette expérience que l'ennemi va donner sur un dé. Donc, il suffit de le déplacer ici. Ensuite, nous allons continuer avec notre code. Je vais le déplacer un peu plus haut, comme ça. Ok, donc maintenant nous ajoutons de l' expérience lorsque l'ennemi est tué et que l' expérience va passer à la base de joueurs ici. Et ça va passer par ici. Maintenant que nous l' avons créé, nous sommes prêts à mettre à jour l' expérience du joueur. 99. Mettre à jour l'expérience: Bon, donc allons maintenant mettre à jour l'expérience du joueur. Nous avons donc maintenant l'expérience, quantité que l'ennemi donne, et il va passer par ces événements d'expérience publicitaire. Maintenant, sur le serveur, nous sommes maintenant prêts à mettre à jour ces informations de lecteur. Prenons donc les infos de ce joueur et décomposons les choses. Maintenant, cachons tout et prenons cette expérience que nous avons faite. Voici donc l'expérience du joueur en ce moment. Et évidemment, vous commencez par 0. Prenons donc cette expérience que vous avez acquise et disons plus et ajoutez-la à l'expérience actuelle que vous avez acquise. Donc si vous avez 0 et que le cochon vous donne 20, vous en aurez maintenant 20 car vous les avez ajoutés ensemble et c' est la nouvelle valeur. Définissons-le ici sur la nouvelle valeur pour qu'elle soit mise à jour. Prenons donc cette information. Disons qu'on fixe des membres, et qu'on le connecte ici. Maintenant, ce que nous pouvons faire avec cela, c'est de le faire glisser vers le bas comme ça et de le reprendre. Et maintenant, que voulez-vous définir ? Nous voulons définir l'expérience, et c'est l'expérience à laquelle nous voulons la définir. Il s'agit du numéro mis à jour. Et n'oubliez pas de prendre ces informations sur le joueur et de les définir ici. Vous avez donc maintenant mis à jour l'expérience acquise par votre joueur dans la structure. C'est donc aussi simple que cela. Vous disposez maintenant de l'expérience actualisée, comme la quantité d'expérience que vous possédez. Et évidemment, il ne sera pas mis à jour dans l'interface utilisateur car nous n'avons pas encore créé d'interface utilisateur. Mais vous pouvez réimprimer une chaîne et voir si c'est correct. Vous pouvez donc rompre à nouveau cela et tout cacher, profiter de l'expérience et toujours l'imprimer à l'écran pour voir la nouvelle valeur afin de pouvoir cliquer sur Lecture. Et ici, je peux frapper des ennemis. Le serveur va en dire dix maintenant. Et si je tue le deuxième, ça va dire 20 car chaque escargot donne dix expériences. Si 3040 parce que ça vient de tuer aussi. Vous pouvez donc voir que cela fonctionne parfaitement maintenant. Maintenant que les expériences de l'incorrecte, nous allons voir comment mettre à jour le niveau également. 100. Mettre à jour le niveau: Nous sommes maintenant prêts à mettre à jour le niveau du joueur. J'espère que vous êtes tout à fait éveillé pour cette leçon. Il y a des calculs que nous devons faire, pas vraiment trop complexes, mais nous devons simplement être complètement éveillés et savoir ce que nous faisons. Maintenant que nous avons mis à jour la quantité d' expérience du joueur, nous sommes maintenant prêts à vérifier si le joueur a dépassé expérience nécessaire pour monter en niveau. Alors rappelez-vous que nous avons fait que celui-ci a appelé obtenir des informations de niveau précédemment. À partir de là, nous pouvons rompre cela et nous pouvons essayer voir si le joueur possède l'expérience requise. Et nous devons préciser quel niveau est actuellement le joueur. Et nous pouvons le faire en cliquant ici, et faisons ce niveau ici. Nous commençons donc par le premier niveau par défaut et laissez-moi simplement le faire glisser ici et le faire ici. Donc, en essayant de voir comme ici, nous en écrivons un parce que le joueur est de niveau 1 et il va parcourir cette table de données et il sait que nous avons besoin de 50 expériences. Cela va donc dire 50 ici dans l'expérience requise. Donc, ce que nous allons faire, c'est que nous allons prendre cela, et en fait, prenons cette expérience en premier. Prenons cela ici et disons, est-ce plus grand ou égal ? Est-ce supérieur ou égal à l'expérience requise ? Et nous allons créer une branche ici. Et connectons-le. Donc, par exemple, je tue quelqu'un et disons que j'ai 200 expériences et qu'ils ne sont peut-être que 150. Donc je demande simplement, c'est 200 plus grand ou égal que ce qui est requis avec cela, soit deux cent cinquante. C'est-à-dire que nous devons augmenter le niveau du joueur. Si ce n'est pas le cas, nous ne faisons rien. Nous mettons peut-être juste à jour l'interface utilisateur ou tout ce que nous essayons de faire. Je vais cacher ça ici. C'est donc ce que nous allons faire. Donc, si c'est vrai, nous allons niveler le joueur. C'est faux. Nous ne faisons rien sauf peut-être la mise à jour de l'interface utilisateur, ce que nous ferons plus tard. Ok, donc pour avoir nivelé le joueur, disons que c'est vrai. Vous avez plus d'expérience que l'expérience requise. Alors vous devez, prenons ces informations sur le joueur. Et prenons d'abord cette expérience. Disons donc que nous en avons 200. Nous allons le soustraire. Soustrayez-le de l' expérience requise. Disons donc que vous en avez soustrait 200 par 150, ce qui est peut-être nécessaire. Cela vous donne donc 50 personnes expérimentées à gauche. Nous devons donc d'abord soustraire cette expérience, puis aimer, aimer le joueur. Essayons donc de faire quelques notes de réacheminement pour le rendre un peu meilleur. Et en fait, au lieu de faire ça à partir d'ici, juste pour le rendre plus propre, je n'aime pas l'apparence de ça. Nous pouvons simplement pousser ce peu plus loin et briser cela et dire l'expérience, car elle est maintenant mise à jour. Vivez donc l' expérience à partir d'ici. Et maintenant, nous pouvons dire cette chose ici. Cette expérience a été soustraite de l'expérience nécessaire. Et nous pouvons l'emmener ici et le placer comme ici. Et au lieu de ce niveau à partir d'ici, nous pouvons simplement cacher cela à nouveau, juste pour le rendre meilleur. Nous pouvons simplement le prendre d'ici juste pour qu'ils ne soient pas trop éloignés l'un de l'autre. Et laissez-moi juste le brancher. Ok, donc quelque chose comme ça, je vais faire glisser ça juste pour que ça paraisse un peu mieux. Faites glisser cela peut être vers le bas pour qu'ils ne se heurtent pas les uns avec les autres. Ok, quelque chose comme ça ici. Nous demandons donc si cette expérience que nous vivons actuellement est-elle plus grande ou égale à l'expérience requise ? Si c'est vrai, nous prenons l'expérience et nous soustrayons de l'expérience requise. Donc peut-être 200 moins 1 cinquième. Il nous reste 50 personnes expérimentées, par exemple. Et maintenant, nous devons définir la nouvelle expérience. Nous allons donc reprendre les informations du séparateur et dire les membres de l'ensemble et nous voulons définir l' expérience sur ce chiffre 50, peut-être que c'est ce qu'est le nombre. Ensuite, nous devons augmenter le niveau du joueur car le joueur a dépassé le montant requis. Donc, double-cliquez ici et faisons une note de reroute pour que cela soit encore meilleur. Quelque chose comme ça. Ok, et ici, nous avons mis à jour la nouvelle expérience et définissons la structure en premier. Maintenant que nous avons établi la structure, nous pouvons la décomposer ici et nous pouvons tout cacher. Et nous pourrions prendre le niveau et dire plus, plus, plus, plus, plus, plus. Vous pouvez le voir. Ajoutez-en un à la valeur spécifiée, puis définissez-la comme ceci. Cela signifie que c'est la même chose que cela. Alors, sortez ça ici et dites plus et écrivez un, puis prenez cela et définissez cette valeur comme ceci. C'est la même chose. Donc, il suffit de dire plus-plus pour l'éditer et le définir. Ensuite, nous devons évidemment mettre à jour notre structure avec ce numéro. Nous avons maintenant un nouveau niveau. Encore une fois, vous pouvez faire glisser à partir de là et dire membre de jeu. Et maintenant, nous voulons définir le niveau deux et un nouveau numéro ici, exactement comme ça. D'accord, et rappelez-vous encore une fois de définir cette structure comme ça. Maintenant que nous avons mis à jour l'expérience, vous avez mis à jour le niveau. Et ce que je veux faire maintenant, rappelez-vous que vous pouvez tuer de nombreux ennemis et peut-être que vous avez dépassé l'expérience requise pour les niveaux deux et trois. Supposons donc que vous ayez tué un ennemi qui vous a donné tellement d'expérience que vous avez atteint un niveau secondaire de niveau deux au lieu d'un seul. Nous devons donc vérifier à nouveau comme si c'est correct, comme si vous avez soustrait cette expérience, mais vous devez vérifier à nouveau, est-ce que mais vous devez vérifier à nouveau, cette nouvelle expérience que vous avez dans votre poche, encore une fois, plus élevée que ce que vous avez requis pour le niveau suivant. Parce que nous devrions peut-être ajouter deux niveaux à la fois au lieu d'un si vous avez satisfait à cette exigence. Nous allons donc faire glisser à partir de cela, et en fait, je vais faire glisser à nouveau vers cette branche et double-cliquer pour faire des notes de réacheminement juste comme c'est le cas. air mieux ici. chose comme ça. Je vais tout traîner comme ça. Ok, donc ce que nous faisons ici, c'est que nous vérifions à nouveau, c'est l' expérience que vous avez en ce moment avec cette expérience mise à jour. Comme même si cela va prendre de l'expérience et de l'expérience, n'oubliez pas que nous avons mis à jour notre expérience. Donc, cette expérience sera maintenant mise à jour. Est-ce que c'est encore plus élevé que ce qui est requis pour le niveau suivant ? Il continue donc de vérifier si c'est nécessaire, comme si nous avons une expérience plus expérimentée que l'expérience requise , sinon, cela va devenir faux et ne rien faire. Cela n'ajoutera donc rien à notre niveau. C'est donc fondamentalement ça. C'est le code. Nous avons donc ce que nous sommes, nous ajoutons l'expérience lorsque nous tuons un ennemi. Ensuite, nous vérifions si nous sommes à l'expérience requise pour que ce niveau augmente. Et il va prendre ces informations de la table de données à cause cette fonction d'information de niveau que nous avons faite, Function Library. Ensuite, il va mettre à jour notre nouvelle expérience parce que nous soustrayons cette expérience des besoins parce que nous sommes en train de progresser. Nous n'avons donc pas vraiment besoin de toute cette expérience. Et avec cette nouvelle expérience, sommes-nous de nouveau confrontés l'expérience requise pour le niveau suivant ? Si ce n'est pas le cas, nous allons peut-être mettre à jour l'interface utilisateur ou partout où nous allons le faire ici. Maintenant que nous avons fini avec ce code, allons en fait créer le nivellement ou le niveau d'interface utilisateur. 101. Créer l'interface utilisateur de niveau: Pour créer cette belle URL, revenons à notre dossier d' interface utilisateur à l'intérieur du principal Widget Blueprint qui a été créé. Et ajoutons simplement le niveau ici maintenant. C'est à vous de choisir l'endroit où vous l'ajoutez. Et c'est juste un cours comme vous pouvez simplement faire le design que vous voulez. Mais ici, ajoutons simplement un niveau affiché. Prenons donc, je veux l'ajouter juste à côté de cette interface utilisateur. Je dois donc ajouter une boîte horizontale horizontale pour qu'elles soient alignées horizontalement. Je vais donc dans une boîte horizontale. Et puis je vais mettre cette superposition dans une boîte horizontale. Et je vais mettre une autre superposition dans une boîte horizontale. C'est là que je veux concevoir mon niveau EY, simplement faire glisser cette boîte horizontale et elle ressemble à ceci parce qu' elle ne se remplit pas. Je vais donc cliquer sur cette superposition et cliquer sur remplir ici, donc ça remplit le tout. Et avec celui-ci, il s'agit l'affichage de nivellement et de nivellement. Et ici, je veux une image comme arrière-plan, comme celle-ci. Je vais avec le même design. Ayant cette image sur un carré noir à plat et remplissant tout cet espace, je vais y placer un espace entre ces deux superpositions. Assurez-vous simplement que lorsque vous les minimisez, l'entretoise se trouve à l'extérieur des superpositions. Ici, entre les deux. Et c'est un espacement dans la direction X, donc peut-être quelque chose comme dix. D'accord ? Et là, laissez-moi dupliquer cette image et laissez-moi sélectionner la bleue maintenant bleue à plat. Et encore une fois, il suffit de cliquer sur cet alignement en haut et de faire la taille à cinq. Dupliquez cela, faites l' alignement vers le bas. Nous avons donc le même design qu'avant. Et maintenant, je veux ajouter du texte. Et le texte que je veux d'abord ajouter une zone verticale parce que je veux écrire. Et le premier va dire niveau. Donc, ici, il va dire niveau. Et le second sur ma boîte verticale, ce niveau sera affiché. premier niveau est donc le début. Et je veux mettre ça au milieu et le mettre au milieu. Et toute la boîte verticale que je veux mettre au milieu aussi. Vous pouvez maintenant sélectionner les deux textes afin que nous puissions les ajouter ensemble. Et pour la famille de polices, je vais sélectionner Bold. Pour la taille. Je vais juste laisser ça 24 ans. Et celui-là pour l'ombre, je vais définir le décalage d'ombre 22 et changer l'alpha à 0,35. Nous avons une sorte d'affichage de base, et vous pouvez voir que c'est très petit et étroit. Il est repoussé de tout ça. Vous pouvez donc cliquer sur cette deuxième superposition, cliquer sur le remplissage pour le remplir. Et si vous ne voulez pas le remplir autant la même taille que celle-ci ici. Vous pouvez simplement modifier ce numéro de remplissage maintenant, il est 1. Vous pouvez écrire 0,5 et le rendre plus petit. Je pense que j'y vais avec 0,4 et je vais ma boîte horizontale agrandir ma boîte horizontale parce que je pense que c'est beaucoup trop petit. Quelque chose, quelque chose comme ça. Et ce que nous pouvons faire maintenant, il suffit de s'assurer que le point d'ancrage est correct. Donc, en cliquant sur l'ancre, en le posant ici à la place. Ensuite, écrire des zéros 0 et la position que vous pouvez voir s' aligne sous notre fenêtre. Et ce n'est pas ce que nous voulons. Encore une fois, jouez avec les alignements et c'est pourquoi l'alignement ici. Et c'est juste réglé sur un, et il sera ici. Maintenant, pour le poste, je vais le mettre à 30 dans le x et moins 30 dans y. Moins 30 va vers le haut. Nous avons maintenant notre écran de nivellement. Maintenant, juste pour nous faciliter la tâche dans les variables, je vais cliquer sur ce numéro et l' appeler au niveau suivant. Et pour celle-ci, nous n'avons pas vraiment besoin d'en faire une variable car nous n'en avons pas besoin. Assurez-vous simplement de cliquer sur ce texte ici parce que nous devons le modifier, assurez-vous qu'il est défini sur variable. Mais celui-ci pour ce niveau permet également s'assurer qu'il est variable. Et c'est ce que l'on appelle l' expérience textuelle. Niveau Textes. Cette barre de progression est appelée expérience prog. Et oui, c'est tout à propos de ça. Comme si nous avions tout ce dont nous avons besoin et nous gardons tout. Et dans le prochain, nous allons ajouter des fonctionnalités à cette interface utilisateur. 102. Fonctionnalité d'interface utilisateur de niveau: Je suis donc de retour dans mon interface utilisateur principale et ajoutons maintenant des fonctionnalités à ce système de nivellement d' expérience. La chose que nous devons faire, c'est d' aller au graphique et de coder quelque chose. Donc, ici, je veux cliquer avec le bouton droit de la souris et créer de nouveaux événements personnalisés et appelons cela l'expérience des mises à jour. Et celui-ci va mettre à jour l'expérience et le niveau. Il va donc vivre cette expérience. Et si nous possédons l'expérience requise, nous allons également mettre à jour le niveau. Donc maintenant, je ne sais pas ce que nous devons mettre ici dans les intrants, comme nous devons le comprendre pour l'instant, laissons-le simplement comme ça. Et la première chose que nous devons faire est profiter de cette expérience de barre de progression. Et comme avant, avec le Health Bar, disons un pourcentage fixe. Et cela va finalement fixer le pourcentage de cette barre de progression ici. Il va donc se remplir. Et généralement, comme ici, il commence par 0 par défaut. Nous allons donc fixer le pourcentage par quelque chose. Et ensuite, nous vivons cette expérience. Et nous allons également définir ce texte au-dessus de cette barre de progression. Il s'agit donc de ce texte en haut. Et rappelez-vous que lorsque nous avons des textes dynamiques, juste ce que je vous ai appris auparavant, nous devons utiliser le format du texte. Encore une fois, même méthode, rag out, enregistrez le format du texte. Et nous avons besoin de deux variables. Nous avons besoin de l'expérience que vous possédez et de la quantité d'expérience nécessaire pour progresser. Faisons donc deux variables ici. Faisons des crochets bouclés et écrivons de l'expérience, de l'expérience. C'est donc l'expérience actuelle. Et puis, comme en dehors des crochets bouclés, j'écris une barre oblique. Ensuite, nous fabriquons de nouveaux crochets bouclés et appelons cela l'expérience nécessaire. Et faites comme finir avec des supports bouclés. Nous avons donc deux crochets bouclés. Nous avons celui-ci ici, nous avons une barre oblique et la seconde. Nous avons donc maintenant deux variables que nous pouvons définir en tant que variables dynamiques. Je vois que nous avons besoin, comme dans les infos du joueur, peut-être que nous n'avons besoin que d'une information sur le joueur ici, car au lieu de brancher toutes ces variables ici, nous sommes exactement comme nous pouvons l'utiliser, comme nous peut mettre à jour toutes ces informations à l'aide des informations du lecteur. Je vais donc créer cela en entrée et en écrivant des informations de couche, comme ceci. Et appelons-le les infos du joueur. En fait, faisons-le à partir d'ici. Donc, avec ce que nous avons jusqu'ici, essayons-nous. Prenons les informations de fractionnement et dissocions. Et maintenant, nous pouvons utiliser ce pourcentage ici. N'oubliez pas que c'est l'expérience. Donc, combien d'expérience vous avez actuellement divisée par l'expérience requise dont vous avez besoin. Masquons donc toutes les broches non connectées afin que nous ayons besoin de l'expérience requise. N'oubliez pas que la fonction que nous avons créée dans la bibliothèque est globale. Nous pouvons donc simplement dire obtenir les informations de niveau et vous pouvez y accéder ici. Vous devez spécifier le niveau d'un joueur. Nous avons cela ici dans notre structure comme celle-ci. Et maintenant, vous pouvez rompre ça. Vous avez maintenant l'expérience requise. L'expérience que vous avez divisée par l'expérience requise vous donnera le pourcentage. Et en fait, il y a une petite erreur ici. Comme lorsque vous le faites comme ça, il va en fait afficher 0 car rappelez-vous qu'il s' agit d'un entier, d'un entier et d'un nombre float. Comme si cela allait traiter correctement ces données, mais le nombre sera mal affiché car rappelez-vous que lorsque vous divisez des entiers, cela vous donnera un nombre entier. Cela ne vous donnera pas de pourcentage, comme si vous n'avez pas de décimales ou d'entiers. Donc, si vous dites par exemple, l'expérience que vous avez vécue est divisée par 50. Et ce numéro que vous obtenez est un nombre décimal. ne montrera pas que ce nombre sera égal à 0 car les entiers ne peuvent pas comporter de décimales. La bonne façon de le faire est donc abord de le convertir en flotteur. Donc, disons deux chars. Et faites la même chose pour que celui-ci flotte. Et supprimons cela. Et maintenant, nous allons dire que cette expérience est divisée. Et maintenant, nous opérons plutôt avec un flotteur. Alors assurez-vous d'en faire un flotteur d'abord , sinon vous n'obtiendrez pas ces décimales, mais vous n' aurez que des nombres entiers. Nous avons donc maintenant les décimales. Double-cliquez et créons un nœud de chemin de fer ici. Et maintenant ce chiffre que nous avons actuellement, nous pouvons l'utiliser dans le pourcentage. Nous mettrons à jour correctement la barre de progression. Ok, donc c'est fini maintenant. Et la prochaine chose, cliquons d'abord sur celui-ci et cachons l'épingle juste pour qu'elle soit un peu meilleure. La prochaine étape est que nous devons mettre à jour l'expérience que vous avez et dont ils ont eu besoin. C'est très facile car l'expérience que nous avons n'est que cette expérience. Laissez-moi double-cliquer et faire un nœud de réacheminement ici. Et l'expérience nécessaire n' est que celle-ci. Je peux donc simplement double-cliquer et le mettre ici. Et laissez-moi simplement faire glisser ça vers le bas pour qu'il ne déborde pas le tout avec les lignes ici. chose comme ça. Cela semble un peu plus propre, mieux vaut travailler avec. Bon, donc maintenant nous avons cette série d'informations. Ce que nous devons faire ensuite, c'est mettre à jour l'affichage des niveaux pour les joueurs. Donc, en prenant ce niveau de texte, nous voulons maintenant mettre à jour ce niveau ici. Donc, prendre ce niveau et dire un texte défini. Et maintenant, c'est aussi très facile car nous avons déjà le niveau pour le joueur. Nous pouvons simplement prendre celui-ci ou vous pouvez prendre celui qui dépend de vous et le brancher ici. Et encore une fois, faites un nœud de réacheminement pour qu'il soit beaucoup plus beau. chose comme ça. Nous avons donc maintenant toutes les informations nous mettons à jour, le pourcentage, nous mettons à jour le texte dynamique sur cette barre de progression. Et nous mettons également à jour le texte de mise à niveau ici. Nous pouvons donc maintenant compiler et enregistrer, et maintenant nous pouvons utiliser cette expérience de mise à jour dans notre manette de lecteur pour mettre à jour l' expérience et le niveau du joueur. 103. Finaliser le système de mise à niveau: Bonjour et bienvenue. Finalisons maintenant le système de nivellement. Allons à la manette du joueur. N'oubliez pas que nous effectuons les mises à jour de l'interface utilisateur dans la manette Allons donc à la manette du joueur ici, et maintenant passons ici. Nous avons la barre de santé de mise à jour ici. Faisons un nouveau. Pour celui-là, je vais juste appeler ça l' expérience de mise à jour. Revenons donc d'abord aux interfaces de l' interface Blueprint du contrôleur du lecteur. Et passons ici appelé expérience de mise à jour. Il va se rappeler de prendre les informations du joueur de structure comme variable, car c'est celle que nous avons créée. Et appelons ça des infos sur le joueur. Compilez et économisez. Revenons en arrière et appelons-le ici pour mettre à jour l'expérience. Et maintenant encore une fois, faites-le passer par les clients. N'oubliez pas que ce n'est pas le serveur, mais le client car nous gérons l'interface utilisateur et l' interface utilisateur passe par le client. Donc, des événements personnalisés et passer par le client, en disant l'expérience de mise à jour. Et faisons-le courir à un client propriétaire et fiable. Et ajoutons ici la variable info du joueur. Donc, à la recherche d'informations sur les joueurs. Maintenant, nous pouvons l'écrire ici, la mise à jour Cl, l'expérience. Donc maintenant, il va l' exécuter ici, l' exécuter via le client, et le client va exécuter cette fonction de Blueprints de widget que nous avons créée ici dans WB main, ici appelée expérience de mise à jour. C'est ce que nous allons faire maintenant. Maintenant, vous pouvez faire glisser à partir d'ici. Et en fait, nous devons accéder au Widget Blueprint principal. Et nous nous souvenons déjà de l' avoir comme variable dans notre manette de joueur. Commençons donc par ici et disons l'expérience de mise à jour, et vous le verrez ici. Appelez-le ici, connectez-les, puis connectez-les ici. Maintenant, il va alimenter ces informations ici et mettre à jour tout pour nous. Maintenant, nous n'avons pas précisé où nous allons ajouter cela. Alors mettez à jour l'expérience, revenons à, sauvegardons tout et revenons au joueur, au bassiste, à la base des joueurs. Et n'oubliez pas que nous avons créé cette annonce d'événements ici. Et c'est ce que nous voulons ajouter ici car si vous avez augmenté, nous mettons à jour la nouvelle expérience. Nous mettons à jour le nouveau niveau. Et puis il va vérifier à nouveau. Avez-vous besoin de monter à nouveau de niveau ? Si oui, il va à nouveau mettre à jour l'expérience, mettre à jour le niveau. Ensuite, il va dire non, vous n' avez plus besoin de monter de niveau. Vous ne répondez pas expérience requise pour ce niveau auquel vous vous trouvez. Alors, allez-y et mettez à jour l'interface utilisateur ici. Encore une fois, c'est la fonction dont nous avons besoin ou l'événement dont nous avons besoin pour y accéder à l'intérieur de la manette du lecteur. Nous pouvons maintenant dire Get Controller. Nous sommes à l'intérieur de la base de joueurs. Et voici, disons que la manette du joueur REF a été faite bien plus tôt. Relions-le ici. Maintenant, faites-le glisser à partir de cela et disons l'expérience de mise à jour. C'est ce que nous avons appelé la fonction d'interface. Et c'est un message car il s'agit d'une fonction Blueprint Interface. Il a maintenant besoin de l'information. Je vais donc simplement faire glisser d' ici et y faire glisser les informations de ce joueur. Et maintenant, il va mettre à jour l'expérience. Alors compilons et sauvegardons l'élément en fait, donnons beaucoup plus d'aide au joueur. Je ne veux pas mourir tout le temps. Donc, régler les collines maximales à peut-être 500 et le courant aide à 500. Et jouons maintenant. Bon, donc maintenant je suis le joueur, je frappe ça. Nous pouvons maintenant voir les mises à jour. Mais au départ, on peut dire que c'est 0 sur 100. Ce n'est pas exact. Nous devons donc effectuer une première mise à jour. N'oubliez pas que votre interface utilisateur ne se met à jour que lorsque vous gagnez de l'expérience. Ainsi, lorsque vous êtes en train de générer, vous ne mettez pas à jour votre interface utilisateur. Vous ne le mettez à jour que lorsque vous tuez quelque chose. Alors, faisons-le ici dans le, laissez-moi copier ce code et laissez-moi monter ici et le faire au début. Donc, chaque fois que je commence à jouer au jeu répondant au joueur qui répond à la caméra, nous réglons la vue de la caméra. Je vais le faire ici en fait. Donc, juste après avoir réglé la vue de la caméra, je vais ajouter ceci. Et je vais mettre à jour mon interface utilisateur en tant que mise à jour initiale. Donc, ici, quelque chose comme ça. Bon, et maintenant compilons et économisons. Maintenant, cliquons sur Play. Et vous pouvez le voir lors de la mise à jour initiale et vous avez maintenant ces informations correctes. Maintenant, je peux tuer quelque chose. Il vous donne dix expériences. La barre est également mise à jour. Génial, et voyons si on monte de niveau. Je vais donc en tuer quelques autres. Maintenant, on dirait un jeu. Quand tous les éléments se réunissent. Maintenant, nous pouvons voir que je vais m'assurer que le niveau jusqu'au niveau deux et que mon expérience pétrissée est maintenant de 75. Et si je continue à tuer, ça va maintenant l'augmenter. Donc maintenant, il se met à jour correctement. Et si je monte ici et que je remplis certains d'entre eux ici, accord, maintenant je peux voir que j'en ai 70 sur 75. Voyons donc s'il se calcule correctement. Donc, si je pense que chaque photo donne 20 expériences, donc si je n'en tue qu'une, ça devrait en dire 15 maintenant. Laissez-moi en tuer un. Je ne tombe pas. Il y a 15, donc ça calcule correctement et ça m'a nivelé. C'est donc bien et tout est maintenant correctement mis à jour. La dernière chose que nous devons faire est d'ajouter simplement un effet sonore et un effet visuel lorsque nous montons de niveau. Nous allons donc le rendre un peu plus intéressant. 104. Niveau supérieur de SFX et VFX: Mais la dernière chose ici dans le système de nivellement, allons-y et ajoutons un peu d'effet sonore et visuel pour le nivellement. Revenons à la base de joueurs. Et à l'intérieur d'ici, passons à notre expérience publicitaire, et ajoutons maintenant une multidiffusion. Cliquez avec le bouton droit de la souris. Réalisez un événement personnalisé. Et faisons de la multidiffusion. Et je vais juste appeler ça la même chose. Vous pouvez l'appeler au niveau supérieur ou je vais juste appeler ça une expérience parce que je l' inclue là-haut. Et je vais le transformer en une multidiffusion fiable. Je vais jouer l' emplacement du son comme avant. Et en ajoutant ces variables dans. Je vais appeler ça un effet sonore de niveau supérieur. D'accord ? Et nous voulons également jouer comme un effet visuel lorsque vous montez de niveau, mais l'effet visuel est un flip book. Donc, dans le matériel de cours que j'ai inclus pour vous, ce niveau de texture que vous devez ajouter. Alors, au niveau du personnage, passons ici à nos personnages actifs. Et glissons-nous dans ce niveau de texture. Encore une fois, cliquez dessus avec le bouton droit de la souris et appliquez du papier aux paramètres, puis extrayez ces sprites. Et la grille pour cela est que je crois qu'elle était de 180 sur 180. Et maintenant, cliquez sur Extrait. Et maintenant, je vais tous les renommer. Maintenant que vous les avez devant vous ici, je vais maintenant cliquer dessus, cliquer avec le bouton droit de la souris et créer un flip book. Et je vais appeler ça un niveau B. Bon, maintenant je vais double-cliquer sur ce flip book et régler les images par seconde sur huit. Et vous pouvez voir que ça a l' air bizarre. Et c'est, rappelez-vous, vous pouvez peut-être le comprendre, mais c'est probablement parce qu'il y a ce matériel. Changeons donc le matériau du masque par le matériau translucide. Donc, à la recherche de translucides. Nous l'avons donc utilisé plusieurs fois maintenant. Matériau sprite translucide et non éclairé, vous pouvez voir qu'il semble beaucoup mieux maintenant. Donc, fermons cet effet. Et encore une fois, si vous ne voyez pas ces documents, oubliez pas d'aller dans les paramètres et d'activer le contenu du moteur de contenu du développeur et le contenu du plug-in. Si vous en avez fini avec eux, vous pouvez toujours vous éloigner d'eux comme ça. Vous ne voyez donc pas tous ces dossiers supplémentaires. Il est parfois ennuyeux de voir tous ces dossiers. Je clique donc et je l' ai plus propre comme ça. Je leur montre juste chaque fois que j'en ai besoin. Revenons donc à la base de joueurs et maintenant nous devons jouer cet effet de niveau supérieur. Mais c'est un flip book et on ne peut pas vraiment changer les personnages flip books. Nous devons donc changer. Vous ne pouvez pas changer le flip book des personnages. Nous devons donc ajouter un autre composant ici. Nous allons donc ajouter un nouveau composant. Et appelons-le ou cherchons simplement un flip book. Donc, un flip book en papier. Je vais appeler ça, peut-être que vous augmentez le niveau des effets V. Vous allez juste appeler ça quelque chose comme ça. Je vais l'attacher à mon sprite pour l'instant. Pour ce flip book, passons-le en Trouvons notre niveau ici. C'est l'effet amour, amour, donc nous l'avons ici. Et au début, nous ne voulons pas montrer cela tout le temps. Je vais donc vraiment descendre et invisible. Je vais supprimer ce visible ici, donc il n'est pas visible dans le jeu pour commencer. Donc, ce que je veux faire lorsque je monte au niveau, c'est que je voulais prendre cela et définir la visibilité pour être visible. Je vais relier ça ici. Une fois qu'il est visible. Je vais ensuite le retarder d' un certain temps, puis le mettre à nouveau invisible. Je vais le retarder au moment de ce flip books. Je vais prendre ceci et dire flip book, et nous pouvons choisir celui-ci, longueur et le retard. Et après avoir retardé, quelle que soit la durée de lecture de ce flip book, nous allons le remettre à invisible. Alors prenez cette visibilité ici et connectez-la à celle-ci. Double-cliquez pour effectuer un réacheminement. Maintenant, pour le rendre plus beau, vous pouvez alors définir la visibilité fausse ici. Nous le cachons encore une fois, peu importe. Nous avons terminé une boucle de ce flip book. Et je ne suis pas sûr que cela va réellement jouer dès le début, donc nous le mettons en évidence. Mais que se passe-t-il si ce flip books joue réellement au milieu quand on le mettait sur visible ? Je vais donc retirer ça d'ici. Et nous allons en fait définir le code ici. Nous le mettons donc à visible. Et puis prenons ce flip book et disons Set flip book. Parce que nous voulons simplement le montrer dès le début chaque fois que nous voulons le montrer. Et ensuite, nous devons choisir quel flip-book. Ne le faisons pas ici. Il suffit de le faire glisser dans cet événement. Et au lieu d'appeler un nouveau flip book, nous pouvons l'appeler au niveau des effets. Et laissez-moi faire glisser ça juste pour le rendre plus propre, ouvrant ici à la place, nous avons les effets visuels comme effets et l'emplacement. Et en faisant un nœud de réacheminement, en fait, vous pouvez faire une note de réacheminement à partir de celui-ci pour le rendre meilleur, comme ceci. Et oui, ça a l'air bien maintenant. Nous avons donc cette expérience publicitaire avec des effets et nous devons l'ajouter quelque part et nous devons l'ajouter chaque fois que le joueur monte en niveau. Pour passer à l'expérience publicitaire ici, nous devons trouver où le joueur monte au niveau. Et encore une fois, si vous vous souvenez du code, le joueur monte en niveau. Ici, nous pouvons simplement le modifier ici à la fin de ce code. C'est le nivellement de l'effet. Et prenons cela, prenons cela ici et disons que MC, MC et MC ont une expérience publicitaire comme celle-ci. Et vous pouvez prendre cela ici et faire un autre nœud de reroutage. Ou vous, en fait, je vais le mettre ici à la place. n'y a pas de place ici. Juste comme ça. Bon, donc quelque chose comme ça ici. Et maintenant, nous avons cette expérience publicitaire et nous devons choisir l'effet visuel et l'effet visuel. Vous pouvez simplement l'ajouter à la structure si vous le souhaitez. Revenons donc à la structure. Informations sur les joueurs incontournables ajoutées ici. Appelez-le au niveau supérieur en tant qu'effets. Et au niveau des effets, des effets ou des effets V, je vais en fait le mettre ici. Et c'est simplement parce que je veux que les effets sonores soient ensemble et les effets visuels si vous avez plus à être ensemble. Allons le changer. Ce V a un effet sur un flip book, un flip book en papier. Et l'effet sonore est un signal sonore. Et n'oubliez pas que nous avons déjà ajouté un niveau d'effet sonore. Compilez et enregistrez tout. Et allons voir le joueur ici. Infos sur les joueurs, et définissons l' effet sonore de niveau supérieur pour tous les joueurs car nous n'en avons pas vraiment plus d'un. Alors, ici. Et le niveau des effets V, on peut cliquer ici et dire monter au niveau. Et nous pouvons choisir celui que nous venons de créer. Et maintenant, compilons et économisons. Et on va le choisir ici. Prenons donc, nous pouvons réellement casser ici à partir de ces informations de joueur. Nous l'avons déjà ici. Donc, cassons-le. Et cachons tout et choisissons simplement le niveau de ses effets et le niveau des effets. Branchez-les ici. Ensuite, nous avons le lieu où se trouve le joueur. Alors emmenez-le ici et dites que c'est l' acteur. Juste comme ça. Et je ne crois pas qu'il nous manque quelque chose. Je vais donc cacher ces épingles non connectées et compiler et enregistrer. Ok, donc maintenant nous avons cet effet sonore de nivellement et nous pouvons essayer de cliquer sur Play et de voir ce qui se passe. Donc, en cliquant sur le bouton de lecture, en nous jouant ici. Donc maintenant, j'essaie de monter en niveau pour voir si cela fonctionne réellement. Et j'essaie de monter plus vite ici. Il y a donc quelques bugs avec ces animations. Plus tard, nous allons réparer dans la prochaine leçon, je l'ai trouvé. Je vois que j'ai vraiment augmenté. Et il y a eu un jeu d'effets. Essayons donc à nouveau. Joli. Vous pouvez donc voir que l'effet est en cours de lecture et que l' effet sonore est également joué. Vous pouvez voir que c' est le bogue que je veux résoudre dans la prochaine leçon. Et maintenant, il a l'air, en fait joli. Et si vous voulez que l'effet joue sur le dessus de votre tête, n'oubliez pas que vous pouvez revenir au joueur. Et comme vous venez de l' ajouter en tant qu'effet, vous pouvez simplement aller de l'avant et cliquer sur ce niveau, niveau d'effets visuels. Et rappelez-vous que ce n'est qu'un flip book, vous l'ajoutez pour que vous puissiez simplement glisser ici au-dessus de votre tête, annoncé qu'il va jouer au-dessus de votre tête. Et chaque fois que vous montez au niveau, vous allez jouer ici. Alors, économisez tout. C'était tout pour l'instant. Maintenant, allons de l'avant et corrigeons les derniers bugs que j'ai trouvés pendant que je jouais au jeu. Je jouais pendant environ une demi-heure et j'essayais de trouver des insectes. Et j'en ai trouvé deux. Allons de l'avant et résolvons ça. Et nous avons fini, presque fini avec ce jeu. 105. Corriger les insectes finaux: Bon, donc allons maintenant réparer les deux livres que nous avons actuellement. La première est donc que si vous êtes sur la lettre, vous êtes capable d'attaquer et nous ne voulons pas le faire. Allons donc à la base de joueurs a et. Et ce que j'ai modifié à l'intérieur d'ici. Donc, dans votre logique d'attaque, il vous suffit d' ajouter ce booléen. Donc, en ce moment, c'est que si vous attaquez déjà, nous ne voulons pas attaquer. Si vous êtes déjà mort, vous ne voulez pas attaquer. Celui que vous devez ajouter. Cliquez sur ce plus ici et ajoutez-le. Donc, si vous êtes déjà gravi vous ne voulez pas attaquer non plus. Donc très facile à résoudre, il suffit de vérifier cela. La deuxième chose est parfois les ennemis se lient dans l'animation de la mort. Et c'est parce que nous avons oublié d'ajouter le mode marche. Et revenons à la base ennemie. Je passais donc beaucoup de temps à essayer de restructurer ce code. Il peut donc essayer de le voir ici et de le copier. Donc, en ce qui concerne les dommages à l'ADN, nous avons un contrôleur d'affichage et j'ai d' abord déplacé ce calcul de santé avant toute autre chose. Essayez donc de dissiper et je crois qu'ils étaient d'abord comme devant cela en meilleure santé. Mais, sur le plan structurel, il est tout simplement plus logique de calculer la santé d'abord. Et une fois que vous avez calculé le ****, vous pouvez définir le mode de mouvements sur Aucun. Je crois que c' était le contraire. C'était ici, et c'était ici. Mais je pense qu'il sera juste un peu mieux de les définir en mode de fonctionnement avant de définir l'état caché. L'autre chose est que si pour la logique, j'ai trouvé qu'il était préférable d'utiliser ce contrôleur d'IA au lieu d'obtenir le contrôleur. Et en obtenant le contrôleur IA, j'ai trouvé qu'il était préférable d'utiliser ce contrôleur IA, que nous avons également utilisé ici, et le déplacement à l' emplacement ou à l'acteur. Donc, en utilisant ce contrôleur IA et en prenant la composante cérébrale de cela, puis en arrêtant la logique. Bon, donc nous avons ça ici. Et puis je vais passer au retard. Je crois que nous avons eu un arrêt immédiat. Arrêtez immédiatement la fonction ici. Vous pouvez supprimer cela et nous allons l' ajouter ultérieurement. Voilà donc à quoi ça ressemble maintenant, très simple. Et maintenant, nous le retardons, comme avant. Nous demandons si l' ennemi est mort ou non. Si l'ennemi n'est pas mort, il va marcher et courir, non ? Je crois que nous l'avons déjà fait auparavant. L'IA de déplacement est la même, tout est pareil. Et puis j'ai ajouté quelque chose de nouveau ici. Donc, si l'ennemi est mort, nous sommes comme au lieu de redémarrer la logique. Essayez donc de supprimer cela si vous l'avez maintenant. Donc, si vous avez le contrôleur Obtenir et démarrer la logique ou la logique de redémarrage, vous pouvez supprimer cela. Et au lieu de cela, j'ai fait un nouvel événement ici, j'en ai créé un appelé arbre de comportement de redémarrage. Je pense que c'est bien mieux que de redémarrer la logique. Parce que parfois, lorsque vous redémarrez la logique, vous redémarrez réellement cette logique et non l'arborescence des comportements. Et c'est pourquoi je vais spécifiquement redémarrer l'arbre comportemental. J'ai trouvé cette boîte un peu. Et ce genre de choses fonctionnera parfaitement si nous sommes allés ici. Et rappelez-vous que j'ai déjà parlé, vous pourriez détruire ce qui supprime complètement cet acteur. Et si nous le faisions, nous n'aurions pas ce problème. Ce n'est donc que spécifique à ce projet. Donc, ce n'est que pour ce projet que je fais, ce sera un problème. Mais si vous détruisez réellement l'acteur, cela ne posera pas de problème. Mais ce jour, je bouge deux sera encore exécuté d'une manière ou parce qu'ils arrêtent la logique et démarrent la logique commence simplement cette logique au lieu de l'arborescence comportementale. J'ai donc créé celui-ci appelé arbre de comportement de redémarrage. Et c'est juste une fonction ou des événements qui ont réellement fait à l'intérieur de la fonction d' interface de base ennemie. Donc, si vous allez à l' interface et à la base ennemie, j'ai créé celui-ci appelé arbre de comportement de redémarrage. Et je l'ai appelé ici, dans la base ennemie. Et puis j'ai fait des événements à côté de la ligne. Donc, courir sur le propriétaire du client et fiable, puis l' appeler ici, bien sûr le client. Il court donc ici et ici. J'arrête le mouvement immédiatement. Et puis j'arrête la logique juste pour m'assurer que la logique a été arrêtée. Ensuite, je prends mon contrôleur IA et je vais obtenir une référence à mon contrôleur IA. En fait fait ici. Nous avons fait dans l'interface AI Controller, nous avons fait ce qu'on appelle Good AI controller ref. Je comprends cela pour pouvoir obtenir une référence à mon contrôleur IA. Et à l'intérieur d'ici, au lieu de mon contrôleur IA, permettez-moi de revenir maintenant au contrôleur aérien ennemi. J'ai créé celui-ci. Donc avant que nous ayons cet arbre de comportement d'exécution ici. Et au lieu de faire cela, je crée en fait mon événement personnalisé appelé run AI tree. Et quand je commence à jouer, je ne fais que diriger cet événement ici. Et la raison pour laquelle j'ai fait cet événement, c'est parce que je veux le lancer aussi bien à d'autres moments. Donc non seulement au début de la pièce, mais je veux le lancer ici aussi. Dans ma base ennemie chaque fois que je commence. Redémarrez leur arbre comportemental. Je dirige donc cet arbre IA. Nous avons juste exécuté cet arbre comportemental comme avant. C'est donc ce qui se passe essentiellement lorsque nous redémarrons l'arborescence comportementale. J'ai donc édité ici, j'exécute cet arbre de comportement de redémarrage chaque fois que le joueur est mort. Donc, si l'ennemi nous poursuit et que le joueur meurt, il redémarrera l'arbre comportemental. Ok, donc si l'ennemi fait des dés, nous ajoutons l'expérience comme avant. Nous mettons le bureau pour être vrai. Et ici, comme juste avant de répondre ou quoi que ce soit, nous supprimons les événements de chevauchement générés. Ensuite, on s'estompe le personnage. Après cela, nous avons le retardateur. On est en train de passer un certain temps. Nous remettons la santé à l'ennemi. Ensuite, nous activons la génération d'événements de chevauchement. Ensuite, j'ai ajouté celui-ci, le mouvement de jeu à la marche et à l'écriture avant. C'est pourquoi l'ennemi frayait dans l'animation de la mort. Parce que rappelez-vous ici au début, nous avons réglé ce mode de mouvement sur aucun et l' état du mouvement à frapper. Quand l'ennemi fait des dés. Nous ne l'avons jamais dit. Alors, quand l'ennemi donne les dés et la réponse, il suffit de le remettre à la marche et à la course ici. La réponse ennemie. N'oubliez pas d'aimer, j' ai également déplacé cela. J'ai déplacé la réponse après cela parce que je veux m'assurer que mes événements de chevauchement générés sont définis sur vrai avant de répondre. Puis je réponds, puis j'ai demandé à son sort faussé. Et puis j'ai ajouté celui-ci appelé arbre de comportement de redémarrage. Je crois que la fonction de mort était également là, donc je l'ai supprimée. Et la raison en est que les fonctions de mort sont déjà présentes ici. Alors rappelez-vous que cet acteur s'est estompé. Et quand l'acteur s' estompe, et quand il est mis à faux sens ici, quand il est défini sur faux, et quand l'acteur s' estompe, il va courir cette mort. Il n'est donc pas logique d' avoir cette mort ici. Donc, supprimez cela à partir d'ici, et j'ai juste ajouté ce comportement de redémarrage pour lire juste pour être sûr que cela fonctionne. Et ici, je crois aussi que nous avions les droits de course sont le mode marche en fait la charge de travail. Vous pouvez supprimer cela à partir d'ici, car maintenant nous l'avons déjà ici. Nous n'avons donc pas vraiment besoin de l'avoir ici. Et c'est à quoi ça ressemble et quand c'est fini. Donc, lorsque la mort est définie sur false, je redémarre également l'arborescence des comportements juste pour être sûr qu' il ne bogue pas. Essayez également de le laisser hors du code et de voir si cela fonctionne. S'il est écrou, pour le reconnecter. C'est à quoi ça ressemble en ce moment. Et si nous jouons au jeu, et essayons. C'est donc beaucoup mieux maintenant avec le code, comme si rien ne butait. J'ai essayé de jouer pendant 15 minutes. Je viens donc de changer la santé de l'ennemi pour pouvoir les tuer un peu plus rapidement. Mais il semble que tout fonctionne maintenant. Ils ne fraient pas et ne se stockent pas. Ils ne fraient pas avec leur animation de mort. Et nous pouvons réfléchir en jouant le jeu comme ça. Tout fonctionne correctement, comme vous pouvez le constater. Tellement génial. Et c'était là les bugs pour ça. Et si les ennemis encore une fois, nos coupures les uns les autres, vous pouvez augmenter cette séparation entre eux comme je vous l'ai déjà dit, je l'ai fait ici aussi parce qu'il y avait des coupures. J'ai donc cliqué sur le premier, j'ai dit le E21, cliqué sur le second sur 1.2, puis le troisième, donc 14 et j'ai cliqué sur le quatrième, répondant à 1.6. Je peux donc l'augmenter encore. Comme si vous les voyez s'éclipser, vous pouvez toujours les augmenter. Mais oui, maintenant tout est réparé et j'espère que nous allons tester l'échelle juste tester l'échelle juste avant de mettre fin à ça. Je ne l'ai pas fait. Donc attaquer la lettre n' est pas impossible non plus, seulement si je tombe de l'échelle. Donc, vous ne pouvez voir que lorsque je suis assommé de la lettre, je suis réellement capable d'attaquer. Donc, debout sur la lettre elle-même, je ne suis pas capable d'attaquer, mais s'ils m'ont assommé et que je tague, je peux les attaquer. Très bien, donc c'était tout pour cette leçon et nous allons tout sauver. Et passons à autre chose. 106. Créer l'interface utilisateur de texte flottant: Bonjour à tous et bienvenue dans cette section. Dans cette section, je pensais créer des plaques nominatives, mais nous allons plutôt créer des textes de combat flottants. Je pense qu'il est plus intéressant à ce stade de créer cela. Et j'inclurai les plaques nominatives dans mes prochaines vidéos supplémentaires. Pour le texte de combat flottant. Il ne s'agit que de quelques textes. Lorsque vous touchez l'ennemi, ce texte apparaîtra et vous indiquera les dégâts que vous avez causés à l'ennemi, car pour le moment le joueur n' a aucune chance de le voir. Il va donc s'envoler et vous dire combien de dégâts vous avez causés. Et si l'ennemi vous frappe, l'ennemi vous montrera combien de dégâts il vous a infligés en tant que joueur. Commençons donc à le faire. Commençons à travailler avec l'interface utilisateur. donc au dossier de l'interface utilisateur, et ici, nous pouvons cliquer avec le bouton droit de la souris et créer un nouveau Blueprint Widget utilisateur. Créons ça ici. Et appelons ça w b et texte flottant. C'est donc le menu que j'utiliserai. Ici. Cette interface utilisateur sera très simple. Recommençons par le panneau Canvas. Commencez toujours par un panneau de canevas lorsque vous créez une interface utilisateur. Et à l'intérieur d'ici, cherchons une superposition en moyenne de la boîte quantile. Et je vais vous montrer ce que je fais ici. Donc, la boîte horizontale et la seule chose dont nous avons besoin, c'est une image dans la zone horizontale et un texte à l'intérieur de la boîte horizontale. Il ne s'agira donc que d'une image et ce sera une icône, évidemment cette image ici. Et puis quelques textes vous montrent combien de dégâts vous avez causés tous les ennemis. Pour une interface utilisateur où vous n'avez pas besoin de tout l'écran. Par exemple, nous n'avons besoin que d'un texte flottant ici. Au lieu de passer à l'écran, vous devez le changer à désirer. souhaitez simplement être cette partie ici pour que vous puissiez voir la toile disparue ou en fait elle n'a pas disparu. Il est toujours là, mais il s'est simplement redimensionné à ce contenu ici. Donc, avec l'image, cliquons sur l'image et importons réellement cela. Encore une fois, dans le matériel de cours que j'ai inclus pour vous dans l'interface utilisateur et les images, ce genre et cette icône de sang. Prenons donc ça, passons aux images de l'interface utilisateur. Et à l'intérieur d'ici, allons importer ces deux-là. s'agit pas d'emplacements de prélèvement, nous n'avons donc pas besoin de cliquer avec le bouton droit de la souris et appliquer les paramètres vapeur 2D. Revenons ici et cliquons sur cette image ici. Recherchez du sang par exemple. Comme ça. Et maintenant, je vois qu'il n'est pas dans la bonne taille. Donc, en cliquant sur cette boîte horizontale pour que je puisse redimensionner des choses comme celle-ci pour qu'elle s'affiche plus correctement. Et en cliquant sur celui-ci au lieu de remplir horizontalement et verticalement, faisons au milieu. Et pour la taille, je fais juste un 44 pixels autour de 44 pixels. C'est donc beaucoup plus petit qu'avant. Et pour le texte, cliquons dessus et montons, par exemple, quelques dégâts. Par exemple, j'ai fait deux 135 dégâts. Cela changera de nouveau dynamiquement en fonction de vos dégâts. Changeons la police en noir. Et j'aime utiliser ces polices très lourdes car lorsque vous êtes dans l'aire de jeu, je veux que le texte soit très visible. Donc, en choisissant cela et en l' alignant sur le milieu. Et ici aussi pour la justification, alignant, en l' alignant sur le milieu. En fait, nous allons l'aligner vers la gauche car il devrait se trouver sur la partie gauche de cette image. Donc, plus ce texte sera long, ce sera ainsi. C'est donc vrai. Laissons-le ici à gauche pour la justification. Et ici pour cette taille, essayons quelque chose comme 30. Donc un peu plus grand. Et en fait, avant de faire quoi que ce soit, ajoutons une entretoise entre ces deux-là. Cherchons donc une entretoise entre l' image et le texte. Et réglons l'entretoise sur dix, quelque chose comme ça. Et pour celui-ci, ajoutons un aperçu. Donc, dans la taille du contour, je vais en mettre un. Nous avons donc un petit aperçu. Vous pouvez voir ici cette couleur noire. Au lieu d'être complètement noir , il suffit de le rendre un peu plus gris. Donc, juste un léger effet. Vous pouvez voir la différence. C'est l'ancien, c'est le nouveau. Donc, une très légère différence, pas très lourde. Pour l'ombre. Je vais vraiment appliquer des ombres. Eh bien, appliquons peut-être 0,5. Et si c'est trop, nous pouvons toujours le réduire. Par conséquent, 0,5 et il appliquera des ombres afin que nous puissions le voir plus clairement dans l'environnement. qui concerne la couleur, nous pouvons réellement modifier dynamiquement, donc nous n'avons pas vraiment besoin de changer la couleur ici. Et maintenant, nous devons aligner correctement le point de pivot. Donc, au lieu d'être aligné ici pour la boîte horizontale, montons en haut et ancrez-les au milieu. Et faisons l' alignement 0,5 à 0,5 et faisons la position 0 est 0. Juste comme ça. Maintenant, il est entièrement aligné au milieu. Et peut-être que si vous ne comprenez pas ce qu' était cet alignement, par exemple, si vous le revenez à 0, vous pouvez toujours le voir dans ce coin supérieur gauche. Donc, 0,5, on peut voir qu'il s'aligne au milieu sur le x. Et ici, il s'aligne au milieu sur le y. Vous pouvez donc voir qu'il s'aligne au milieu. Si vous écrivez 0,5 à 0,5, si vous en écrivez un, vous pouvez voir qu'il s'aligne de cette façon, 0 ou des lignes de cette façon. Donc, 0,5 est au milieu. Et vous pouvez voir que nous avons encore de l'espace aléatoire ici. Et c'est parce que si vous cliquez sur la zone horizontale, vous pouvez voir que la taille n'est pas comme le texte ici. Vous pouvez donc simplement cliquer sur cette taille au contenu, et il sera automatiquement dimensionné selon ce que vous avez ici. Donc, si vos dégâts sont beaucoup plus élevés, vous pouvez voir que la boîte horizontale va automatiquement être dimensionnée à ce nombre. C'est donc une astuce très cool pour dimensionner le contenu. Maintenant, nous avons ces textes de combat et il est prêt à cliquer sur la case horizontale, vous pouvez voir qu'elle est alignée au milieu et elle semble parfaitement correcte maintenant. 107. Ajouter l'animation d'interface utilisateur: Ajoutons maintenant une animation de l'interface utilisateur pour la rendre un peu plus intéressante. Nous n'avons donc pas travaillé avec l'animation auparavant. Et si vous n'avez pas cette application, elle se cache parfois comme ça ici. Vous avez donc un onglet Animation ou nous pouvons le trouver ici dans la fenêtre. Animations. Vous pouvez également le trouver ici s'il est fermé. Mais ici, vous pouvez simplement cliquer et faire glisser et vous pouvez voir cet onglet d'animation apparaît. Nous voulons donc créer une animation pour cette année, et je veux tout déplacer, à la fois l'icône et le texte. Je vais donc cliquer sur cette boîte horizontale et en changer le nom pour l'instant. Appelons ça HB pour boîte horizontale. Et nous allons le changer en texte flottant pour qu'ils le soient. Maintenant, nous avons ceci. Ici, dans l'animation, vous pouvez cliquer sur ce bouton pour ajouter une animation. Et appelons ça le chargement de l'animation de texte. Vous pouvez maintenant cliquer sur cette animation, puis cliquer sur Ajouter une piste. Ensuite, vous devez sélectionner à quoi souhaitez-vous ajouter une animation ? Et je veux aimer que vous deviez sélectionner la chose à laquelle vous devez ajouter l'animation. Par exemple, je sélectionne cette case horizontale et je clique ici. Et maintenant, je peux cliquer sur cette boîte horizontale pour faire une animation. Ce que nous voulons faire, c'est abord que nous voulons simplement le déplacer. Donc, quand je frappe un ennemi, ça va partir d'ici. Donc, au fil du temps, par exemple, plus d'une seconde, le texte va s'envoler. C'est donc la principale chose que nous voulons faire en ce moment. Ici, dans la zone horizontale, je peux cliquer sur ce glissement Ajouter. Et je veux changer la transformation. Transformer. Vous pouvez modifier la traduction, ce qui signifie tout ce que nous voulons faire maintenant. Changez donc la position du texte, c'est-à-dire la traduction. Et vous pouvez modifier la rotation, l'échelle et cette année. Commençons donc par la traduction. Cliquons ici. Donc, pour la traduction, je veux passer de 0. Et c'est en fait l'inverse. C'est vers le haut, c'est comme ça. C'est le moins. Je veux passer de 0 maintenant. Je pense qu'après 1,5 seconde. Je veux donc faire toute mon animation 1,5 seconde. Donc après 1,5 seconde, je vais moins 150 dans le y. Vous pouvez donc voir vos points créés. Vous allez donc d'ici à ici, vous pouvez voir à quel point il est facile de créer des animations d'interface utilisateur. Nous l'avons fait comme si vous le faisiez vous-même, vous pouvez le faire en 15 secondes. Très facile, passer de 0 à moins 150. Ok, ça a l'air intéressant, mais je voulais en faire un peu plus pour la rotation en ce moment. C'est très bien. Ça commence par 0, mais après un 2,5, donc 0,5, je veux en faire cinq dans la rotation. Et puis, après 1 seconde, je veux passer à 0, encore une fois. En cliquant sur 0 ici, vous pouvez voir qu'il ajoute un nouveau point. Et si jamais vous devez déplacer ces points, vous pouvez toujours cliquer sur le point et le faire glisser vers un autre endroit. Si vous voulez qu'il soit plus long ou plus petit, vous pouvez toujours le faire. Donc, juste comme ça, vous pouvez voir si je viens de supprimer ceci, si je clique ailleurs aussi. Maintenant, vous pouvez voir qu'il monte, il tourne cinq degrés de cette façon, puis il tourne en arrière. Si vous voulez qu'il devienne plus grand, vous pouvez toujours en écrire dix si vous le souhaitez. Vous pouvez voir maintenant que ça s'avère beaucoup plus. Mais je voulais juste le garder en dossier pour l'instant et nous pouvons toujours le modifier s'il s'agit d'un changement trop petit. Je pense donc que ce sera plus intéressant, comme si le texte entre dans notre première phase, il apparaît. Donc, après 0,3 seconde cliqué sur la balance, je veux en faire une taille. Cela commence donc par un ici, puis il semble avoir une taille de deux. Et puis, après 0,6, je veux qu'il revienne à un autre ici. Donc, quand il apparaît, c'est le cas. Cela vient dans notre visage, remonte et remonte. Ok, donc ça a l' air intéressant. Mais comme dernier effet, je pense que ce sera aussi plus intéressant si elle disparaît au fil du temps. Ici à 1 seconde, je vais maintenant c'est une autre transformation parce qu'il n'a pas vraiment de fonction de visibilité ici. Cliquez donc sur la piste ici. Et même si je l'ai ici en 1 seconde, ce n'est pas vraiment important. Vous pouvez toujours le modifier si vous ne l'avez pas fait et que vous devez le modifier en 1 seconde. Encore une fois, il vous suffit de cliquer sur ces points et de les faire glisser. Alors, après une déchirure sur 1 seconde, je vais cliquer sur la piste. Et puis celui appelé opacité du rendu. Pour celui-là, je vais commencer par un. C'est donc exact. Ensuite, en passant à 1.5, je vais écrire 0, donc ça va disparaître. Nous pouvons maintenant voir l'animation. Nous allons partir de là. Et puis il va monter, puis il va disparaître lentement, comme ça. animation très fluide. Et vous pouvez toujours cliquer ici pour y jouer. C'est à quoi ça ressemblera. animation tellement intéressante que vous pouvez faire. Et vous pouvez faire ce que vous voulez. Vous pouvez cliquer sur cette piste et voir ce que vous pouvez également faire pour cette transformation, vous disposez également d'une animation de cisaillement et essayez de penser à animation que vous essayez de faire. Et je pense que c'est une animation simple et cool avec laquelle nous allons travailler. C'était donc tout pour cette animation et nous pouvons compiler et enregistrer, tout sauvegarder. Et passons à la suivante. 108. Fonctionnalité d'interface utilisateur de texte flottant: Maintenant que nous avons fini avec l'interface utilisateur et l'animation, commençons par la fonctionnalité à l'intérieur d'ici et le Blueprint Widget. Passons maintenant au graphique et supprimons ces événements par défaut. Maintenant, au lieu d' ici, je vais cliquer avec le bouton droit de la souris et créer un nouvel événement personnalisé. Appelons ça « mise à jour ». Chargement du texte. Texte flottant actualisé. Très, très simple. Il va mettre à jour notre texte. Donc, en cliquant sur ce texte, changeons d'abord le nom. Passons au texte de chargement TXT. Et cliquons ici est variable, sinon il n' apparaîtra pas ici. Et prenons ce texte maintenant et disons ce texte comme celui-ci. Et maintenant, nous pouvons prendre ce texte ici et le faire glisser dans cette fonction ou ces événements, car cet événement nous appellerons ailleurs pour mettre à jour le texte. Donc, au lieu d'ici, je vais juste appeler ça du texte flottant. Nous pouvons également modifier la couleur du texte. Ainsi, lorsque l'ennemi nous frappe, nous pouvons avoir une couleur rouge. Lorsque nous frappons l'ennemi, nous pouvons avoir une couleur bleue. Nous pouvons donc également modifier la couleur. Donc, en reprenant ce texte, nous pouvons, si vous voulez simplement, comme si vous ne savez pas comment la fonction s'appelle et que vous savez ce que vous voulez faire. Vous souhaitez modifier la couleur simplement pour ajouter de la couleur et voir ce qui se passe ? Et c'est ainsi que vous trouvez le meilleur moyen. Vous pouvez donc voir ici que nous avons quelque chose appelé SetColor et opacité. Donc, en choisissant ça ici. Et maintenant, dans la couleur et l'opacité, vous pouvez faire glisser à partir de cela et créer une couleur d'ardoise. Et maintenant, vous pouvez voir que vous pouvez changer la couleur du texte et vous pouvez également le modifier en fonction d'une couleur spécifiée au premier plan. Il s'agit de la valeur par défaut. Vous n'êtes pas obligé de toucher ça. Vous pouvez réellement modifier la couleur ici. Donc, avec cela, nous pouvons simplement reprendre la couleur spécifiée, brancher dans notre événement. Nous allons le changer ailleurs. Et appelons simplement cela la couleur flottante du texte. Et la dernière chose que nous voulons faire c'est que nous voulons également modifier cette icône. C'est donc du sang lorsque nous sommes touchés et c'est cette icône de tri lorsque nous frappons l'ennemi. Nous voulons également modifier cette situation de façon dynamique. Changeons donc d'abord le nom de celui-ci et appelons l'image, chargeons du texte et peut-être icône flottante de texte. Compilons et sauvegardons, et passons au graphique. Et au lieu d'ici, faites-le glisser et disons que celui-ci s' appelle Set brush. Si vous cherchez simplement ledit pinceau à partir de la texture, et c'est une texture et c'est pourquoi nous disons Définir le pinceau à partir de la texture. Alors branchez-le et vous pouvez voir que vous trouverez toutes vos textures ici. Mais nous voulons changer dynamiquement. Nous allons donc faire glisser cette texture et le faire ici. Et appelons cela une icône de texte flottant. Et permettez-moi d'organiser un peu mieux les choses ici pour que vous puissiez double-cliquer. En fait, vous pouvez aussi simplement faire glisser celui-ci vers le haut ici. Je pense que c'est mieux. Et faites-le glisser ici. Appuyez sur le repère pour tout aligner. Et je pense que ça a l'air bien. C'est donc ce que nous avons jusqu'ici. C'est la fonctionnalité. Et n'oubliez pas que nous voulons jouer notre animation. Ainsi, ici, dans l' Event Construct, vous pouvez écrire la construction d'événements et cela risque de commencer à jouer. N'oubliez pas que nous utilisons Begin Play et nos autres plans. Cependant, il s'appelle Event Construct lorsque vous avez affaire à l'interface utilisateur, c'est la même chose. C'est comme lorsque vous jouez au jeu et que vous construisez l'interface utilisateur. Ici, ce que nous voulons faire, c'est que vous pouvez voir notre animation, nos animations de textes flottants. C'est ce que nous avons créé. Obtenez cette variable ici. Et la chose la plus simple que nous puissions simplement faire glisser ceci et dire Play Animation. Maintenant, nous allons jouer l'animation. Nous n'avons pas vraiment besoin d'en faire plus. C'était donc ça. Essayons ça un peu plus bas. Nous avons donc maintenant les fonctionnalités de cette interface utilisateur ici. Maintenant, avec cette fonctionnalité, nous pouvons appeler cela ailleurs et mettre à jour l'interface utilisateur. 109. Créer l'acteur de texte flottant: Bon, il faut donc créer un acteur de texte flottant maintenant. Donc, lorsque vous endommagez et que l'ennemi ou l'ennemi vous endommage et que vous voulez créer cette interface utilisateur ici. Si vous voulez le frayer dans le monde, n'oubliez pas que vous avez besoin de quelque chose pour le faire apparaître. Vous ne pouvez pas simplement envoyer du texte ici sans rien. Nous avons donc vraiment besoin d'un acteur et nous devons l' engendrer chaque fois que l'ennemi est touché. Ensuite, nous supprimons cet acteur chaque fois que le texte est terminé. Donc, en allant aux Blueprints et à l'intérieur d'ici, nous pouvons cliquer avec le bouton droit de la souris et cliquer sur la classe Blueprint. Ensuite, nous pouvons simplement créer un acte simple ou pas un acte papier. Nous voulons en créer une normale ici. J'ai essayé avec le papier et ça n'a pas fonctionné. Nous devons donc utiliser un modèle normal. Et ce faisant, appelons ça du texte flottant PP. Et cliquons dessus ici. Et ce que nous voulons faire ici, nous ne voulons rien ajouter à la fenêtre d'affichage, mais ici dans les composants, cliquons ici et recherchons des widgets. Et vous pouvez voir que vous avez quelque chose appelé widget ici. Et il s'agit d'un widget 3D. Ce n'est donc pas comme l'interface utilisateur ici que nous l'avons fait. Lorsque vous ajoutez un composant ici, vous pouvez également le voir dans la fenêtre d'affichage. C'est un Widget 3D et c'est ainsi que vous faites des choses comme vous montrer je dans le monde. J'ai donc parlé de plaque signalétique plus tôt. Nous allons les faire dans les leçons supplémentaires, mais faire les plaques nominatives, ce sera la même chose. Faire ces widgets 3D parce que nous voulons les afficher dans le monde et peut-être devraient-ils suivre le personnage. Nous avons donc créé un widget ici. Et vous pouvez voir à droite dans le widget, dans le panneau Détails, vous pouvez modifier certains paramètres. Tout d'abord, vous devez choisir la classe de widgets. En regardant ici, vous devez sélectionner celui que vous venez de créer. Ainsi, le texte flottant du Blueprint Widget. Et je peux le voir apparaître ici, la fenêtre d'affichage. Nous allons donc compiler et économiser. Et au lieu de faire le monde, donc si vous choisissez le monde spatial, cela apparaîtra comme ça dans le monde. Comme un personnage peut réellement tourner autour de ce texte et le voir en 3D. Cependant, je veux juste qu'il soit projeté. Et ce que signifie l'écran, c'est juste qu'il sera toujours face à nous à l'écran. Je ne veux pas qu'il ressemble à du texte 3D. L'écran sera le bon. Et je vais dire dessiner une taille désirée. Cependant, nous l'avons fait dans notre Blueprint Widget, et c'était tout pour celui-ci. C'était donc facile. Passons donc au graphique des événements et ajoutons les fonctionnalités de celui-ci. Supprimons donc ces valeurs par défaut. Et pour celui-ci, je vais cliquer avec le bouton droit de la souris et créer votre événement personnalisé. Je ne veux pas créer une fonction Blueprint Interface uniquement pour ces textes flottants parce que je ne pense pas avoir besoin de plus de choses ici. Faisons donc de celui-ci un événement personnalisé ici, et appelons-le afficher du texte flottant. Et pour celui-là, je vais prendre ce widget. Nous allons en fait le renommer. Renommez-le en widgets de texte flottant. Je vais donc l'emmener ici. Et puis nous devons dire Get User, objet widget. Et maintenant, nous devons le faire passer à tout ce que vous avez choisi ici. Donc, le texte flottant WB, un coût pour WB charger du texte, puis le connecter ici. Et maintenant, nous avons accès à ce Blueprint Widget, vous puissiez appeler n'importe quoi d'ici. Et rappelez-vous ce que nous voulons appeler à partir de ce Widget Blueprint, permettez-moi de l'agrandir ici. Ce que nous voulons appeler, c'est cette mise à jour du texte flottant. Ici, nous pouvons rechercher mises à jour chargeant des textes et vous pouvez appeler cette fonction à partir de celle-ci. Et assurez-vous simplement que la cible est ce texte flottant WP. Et c'est tout ce que vous devez mettre à jour. Et maintenant, je vais le faire glisser à nouveau ici dans cet événement parce que nous l' appellerons ailleurs. Juste comme ça. Et celui-ci, en fait, je vais l' exécuter en multidiffusion. Alors, souvenez-vous de ce que j'ai dit auparavant. Une multidiffusion ne peut être exécutée que via un événement serveur. Vous pouvez donc imaginer que vous aurez un événement serveur quelque part. Nous allons donc créer un événement serveur plus tard. Il s'agit donc maintenant de la multidiffusion et elle affichera cette information à tous les joueurs. Et la raison pour laquelle j'appelle cela dans la multidiffusion et non dans un représentant notifie. Encore une fois, ce texte de combat apparaîtra et disparaîtra. Et pour les joueurs qui ne se sont pas encore connectés ou qui ne se sont pas encore éloignés, ces informations ne seront pas pertinentes car elles disparaîtront après 1,5 seconde. Il n'est donc pas logique d' avertir un représentant car rappelez-vous qu' Eric notifie également tous les clients lorsqu'ils se connectent dix minutes plus tard. Donc, si vous le faites dans un représentant, avertissez dix minutes plus tard lorsqu'il se connecte, il verra tout ce texte de combat de spamming qui apparaîtra et disparaîtra après 1,5 seconde, même s'il s'agit C'est arrivé il y a dix minutes. Nous ne voulons donc pas cela. Nous avons vu qu'une multidiffusion ne le montrera qu'ici et tombait maintenant pour les autres joueurs connectés qui sont proches de vous. Donc, en jouant cette multidiffusion, il affichera ces textes flottants. Et rappelez-vous que c'est un acteur. Un acteur lorsque vous le faites apparaître dans le monde, vous devez le supprimer à un moment donné car même si vous jouez ce texte ici et que cette animation disparaît comme ceci. Rappelez-vous que vous avez engendré un acteur et cet acte, ce point acteur ne disparaîtra pas tout seul. Nous devons donc détruire cet acteur à un moment donné. Je vais donc prendre ça ici et prendre mon animation flottante. Je vais donc appeler ça ici. Vous avez quelque chose qui s'appelle get and time car je veux supprimer cet acteur après que cette animation ait été jouée. Je peux donc avoir cette fois-ci. Donc, 1,5 seconde. Je peux vraiment l'obtenir comme ça, prendre l'animation, obtenir l' enzyme qui est de 1,5 seconde. Et je peux maintenant mettre un retard et me connecter ici. Maintenant, avec ça, je peux détruire l'acteur. Ce que cela fait, c'est que je vais mettre à jour mon texte et je lui dis d'attendre aussi longtemps que cette animation soit. Donc, si à un moment donné, vous voulez changer cette animation à cinq secondes, est très cool car maintenant elle passe automatiquement à cinq secondes, car elle n'a l'heure de fin. de votre animation. Et nous le retardons. Et puis nous détruisons cet acteur ici parce que nous n'en avons plus besoin. C'était donc tout pour cet acteur de texte flottant. Et maintenant, passons à autre chose et faisons la logique des textes flottants plus large. 110. Logique de texte flottant: Travaillons maintenant sur la logique de téléchargement de texte plus large. Ce que nous voulons faire, c'est afficher nouveau un texte flottant lorsque l'ennemi, l'ennemi vous frappe et lorsque vous touchez l'ennemi. Donc, selon qui frappe, qui a, par exemple, frappé l'ennemi, je veux que le texte soit au-dessus de l'ennemi. Cependant, si l'ennemi vous frappe, je veux que le texte soit au-dessus de vous. Nous devons donc le faire pour la base de joueurs ici. Et nous devons également le faire pour la base ennemie. Et rappelez-vous que nous avons créé un parent pour les deux. Rappelez-vous donc que la base des personnages est apparente à la fois pour la base des joueurs et pour la base ennemie. C'est ce que nous avons fait au début de ce cours. allons donc coder cela à l'intérieur de la base des personnages , car nous pouvons l'utiliser à la fois dans la base ennemie et dans la base des joueurs. Et maintenant, vous pouvez voir à quel point il est utile de créer un parent pour tous ces éléments. Donc, à un moment ultérieur, si vous voulez faire tomber des objets aux ennemis, et je pense aussi que nous le ferons dans les leçons supplémentaires. Jetez un coup d'œil à mon cours. J'ai peut-être déjà fait beaucoup de leçons supplémentaires au moment où vous regardez ce cours. Mais pour les éléments, encore une fois, nous voulons créer, cliquer avec le bouton droit de la souris et créer un acteur. Ensuite, nous voulons créer une base d'articles. Et à partir de l'élément, nous voulons créer, par exemple, une base d'objets de quête. Et à partir d'éléments Quest, je veux créer des objets de quête. Très, très bonne pratique pour créer un plan de base, car plus tard , vous pourrez les utiliser à votre avantage. Passons donc à la base de caractères et faisons le texte flottant. Nous allons donc ouvrir l'éditeur de Blueprint complet. Je vais supprimer tous ces événements par défaut. Et ici, commençons à créer notre événement personnalisé de texte de police d'affichage. Donc, l'appeler affiche du texte flottant. Et nous pouvons le créer dans une fonction Blueprint Interface. Mais pour le moment, je ne sais pas quelles variables nous avons besoin. Commençons donc simplement à faire un client. Vous pouvez toujours l'éteindre. Et passons ici, créons de nouveaux événements personnalisés et exécutons le serveur. Parce que dans le texte flottant, rappelez-vous que vous avez fait une multidiffusion. Nous devons donc l'exécuter via le serveur et nous devons le faire ici. Donc, l'exécuter sur le serveur ici. Et permettez-moi de lui donner un nom. serveur affiche donc le texte en cours de chargement. Pour celui-là, nous allons l'appeler de nouveau ici. Nous sommes donc habitués à cela maintenant et je ne l'ai pas appelé correctement. Donc, affichez, et réessayez, serveur affiche du texte flottant. Ok, donc voici ce que je veux faire en tant que variable veut vraiment les acteurs. Donc, si c'est l'ennemi ou le joueur, car rappelez-vous qu'il s' agit d'une base de personnages. Je n'ai donc aucune idée pour le moment si c'est le joueur ou l' ennemi qui est endommagé. Permettez-moi donc de rechercher un acteur dans la variable ici. Choisissez cet acteur. Et changeons le nom en acteur endommagé. Il faut donc savoir qui est endommagé, le joueur ou est-ce l'ennemi ? Nous pouvons maintenant cliquer avec le bouton droit de la souris sur ce dommage et le promouvoir en une variable. Et appelons juste ça un acteur endommagé. Nous pouvons maintenant configurer la réplication pour la répliquer. Le client peut donc également voir cette valeur. Et nous devons évidemment faire entrer cela dans cet événement, car celui-ci sera appelé ailleurs à un moment donné. Maintenant, nous avons celui-ci et je veux faire apparaître mon acteur de textes flottants à l'endroit où l' acteur a été endommagé. Prenons donc ce mal à l'acteur. Et en fait, ce que nous voulons faire, créons-le simplement pour que vous puissiez le voir. Je pense que ce sera déroutant si je commence ici. La chose que nous voulons faire, c'est que cet acteur a engendré le texte flottant BP. Textes flottants. Nous essayons donc d'engendrer ce texte flottant. Et ici, vous devez sélectionner, essayer de régler l'emplacement, mais toujours apparaître juste pour assurer qu'il fraie toujours. Et pour cette transformation de frawn, nous devons conduire d'ici et dire faire la transformation. Maintenant, nous sommes en train de le rompre pour voir à la fois l'emplacement, la rotation et l'échelle. Et c'est ce que vous essayez de faire. Nous essayons maintenant de faire apparaître ce texte flottant au-dessus de l'acteur endommagé. Nous essayons donc de prendre cet acteur endommagé et de dire que les acteurs se trouvent. Parce que rappelez-vous que c'est un acteur. Donc, en obtenant la localisation des acteurs, on peut simplement le brancher comme ça. Cependant, je veux le faire apparaître un peu au-dessus de l'acteur. Je ne veux pas le faire apparaître au milieu de l'acteur. Je vais donc dire casser et casser ce vecteur. Je peux donc voir les X, Y et Z. Je fais la même chose ici. Je prends ça et je dis faire du vecteur. Et maintenant, le x est le même, le y est le même. C'est seulement le z. Donc, ici, si vous voulez que le texte soit un peu vers le haut, c'est l'axe Z. Donc je prends cet axe Z et je dis plus peut-être 30 ou quelque chose comme ça. Vous devez tester cela et ensuite vous le brancherez comme ça. Donc, le x est le même, le y est le même. Et je suis juste en train d'ajuster la valeur z pour qu'elle soit un peu au-dessus de l'acteur. Faites-le glisser vers le haut et organisons un peu mieux. Donc maintenant, répondez à ce texte flottant à cet emplacement, donc la rotation est la même, donc zéros est 0 et l'échelle est la même ici, nous n'avons pas besoin de toucher cela. Maintenant, ici, nous pouvons promouvoir cela en variable et nous pouvons l' appeler du texte flottant. Maintenant, c'est l'acteur que nous engendrons chaque fois que nous frappons l'ennemi. Bon, donc de la part de cet acteur, rappelez-vous que vous avez fait cette multidiffusion et maintenant vous avez une référence à cet acteur. Vous pouvez faire glisser à partir d'ici et dire afficher du texte flottant, afficher du texte en cours de chargement. Et ce n'est pas de la base des personnages, c'est juste une fonction ici. Et assurez-vous que la cible est des textes flottants BP pour vous assurer qu'ils viennent d'ici. Vous pouvez maintenant mettre à jour ce texte. Très cool. Vous pouvez appeler cet événement, il passe par ici, puis vous pouvez mettre à jour ces textes flottants. Cependant, rappelez-vous, je vous ai déjà dit que nous allons changer les couleurs. Par exemple, si le joueur nous frappe ou si le joueur frappe l'ennemi, l'ennemi, ou s'il affiche une couleur bleue ici. Cependant, si l'ennemi nous frappe, il affichera une couleur rouge. Nous ne pouvons donc pas le faire complètement comme ça parce que nous ne savons pas si cet acteur endommagé est un joueur ou non. Donc, ce que vous pouvez faire, vous pouvez soit prendre cet acteur endommagé et dire que l'acteur a marqué Player ou que l' acteur a marqué l'ennemi. Parce que nous tous, nous savons déjà ce qu'est l'acteur. Nous l'avons déjà utilisé avant. Cependant, je pense que plus tard, s'il s'agissait d'un vrai jeu, un autre parcours peut être que vous avez des tonnes de cartes, tonnes de personnages de dégâts, et vous avez besoin de plus de variables que de simples joueurs et ennemi. Vous pouvez créer ici une énumération qui sera beaucoup meilleure, beaucoup plus dynamique, puis beaucoup plus facile pour vous. Nous allons donc le faire dans la prochaine leçon. 111. Enumération de texte flottant: Donc, pour cette énumération, cliquons avec le bouton droit de la souris et créons une énumération de Blueprint. Appelons cela un type de texte flottant. À l'intérieur de cette énumération de type de texte flottant, ajoutons deux choses. Ajoutons ici, appelons ça des dégâts de couche. Et appelons ça ici, les dégâts de l'ennemi. Il peut donc s'agir de dégâts de couche ou de dégâts ennemis. Nous pouvons maintenant prendre cette énumération et revenir à la base de joueurs ou aux personnages ici. Et maintenant, permettez-moi de supprimer ces textes flottants pour l'instant. Donc, avant d'appeler cela maintenant ajoutons-le à cet événement. Ajoutons cette énumération. Et il s'appelait le type de texte flottant E sélectionné ici. Et encore une fois, appelez-le de type texte flottant Pour cette énumération, glissons-nous et disons changer. Rappelez-vous que nous l'avons déjà utilisé plusieurs fois. Maintenant, activez l'énumération afin que nous puissions vérifier s'il s' agit de dégâts ennemis ou de dégâts du joueur qui ont été appliqués. Donc, s'il s'agit de dégâts du joueur, rappelez-vous qu'il apparaîtra au-dessus de l'ennemi parce que le joueur a endommagé, vous avez endommagé l'ennemi. Les dégâts apparaîtront au-dessus de l'ennemi. Je vais donc prendre cet acteur endommagé et on peut dire obtenir une référence ennemie parce que nous voulons obtenir cet acteur maintenant. Nous voulons le faire apparaître au-dessus de l'ennemi. Maintenant. Vous pouvez le faire comme ça. Et pour les dégâts de l'ennemi, vous pouvez essayer de penser à ce que nous pouvons faire et vous l'avez peut-être déjà deviné. Prenons cet acteur endommagé. Et maintenant, disons «  Obtenir la référence du joueur parce que nous voulons l' engendrer à l'endroit où se trouve le joueur. Donc, si l'ennemi endommage le joueur, nous voulons engendrer les dégâts au-dessus du joueur. La référence des joueurs. Et à partir de là, nous pouvons maintenant prendre ce texte flottant et nous pouvons faire glisser et répéter, afficher du texte en cours de chargement et nous pouvons appeler cette fonction. Nous pouvons maintenant l'ajouter ici. Copions-le coller ici. Et vous pouvez le faire glisser à nouveau vers les cibles. Et faites-le glisser un peu vers le bas pour que nous ayons plus d'espace pour travailler . Juste comme ça. Et si vous le souhaitez, vous pouvez double-cliquer pour faire, réacheminer le nœud et le rendre un peu plus maigre. Quelque chose comme ça. Bon, nous pouvons maintenant mettre à jour ce texte selon qu'il s' agit d'un joueur ou non. Laissez-moi traîner ça pour que je puisse réellement voir ce qui se passe. Et maintenant, nous pouvons faire glisser cela et toute la logique qui va mettre à jour ces deux-là se situera entre les deux. Tout d'abord, pour le texte flottant, il s'agira de la quantité de dégâts. Il s'agit donc des dégâts causés par le joueur. Nous devons lui montrer les dégâts causés par le joueur. Alors maintenant, dans l'ennemi, rappelez-vous que nous avons déjà ceci, tous les dégâts. Allons donc à l' ennemi, à la base ennemie. Et à l'intérieur de la base ennemie, nous avons déjà cet événement de dégâts. Donc, à partir de cet événement de dégâts, nous savons déjà combien de dégâts le joueur a causés. Cliquons avec le bouton droit de la souris sur celui-ci et promu en variable afin que nous puissions l'utiliser. Et appelons simplement les montants de dégâts du joueur. Laissez-nous nous connecter et n'oubliez pas de le reproduire. Le client peut donc également voir cette valeur. Nous devons faire la même chose plus tard. Faisons donc la même chose pour le joueur ici. Donc, pour le joueur, lorsque l' ennemi endommage le joueur, nous devons également faire ici clic droit promu à une variable, et appelons cela des montants de dégâts ennemis. Ok, donc nous faisons la promotion ceux qui sont variables parce que nous voulons réellement les utiliser. Donc, reproduisez celui-ci aussi. N'oubliez pas de le faire. Revenons maintenant à la base de joueurs. Alors, combien le joueur a-t-il endommagé cet ennemi ? Ensuite, nous pourrons prendre cela à l'ennemi et dire que les dégâts des joueurs sont considérables. Et maintenant, nous pouvons simplement le connecter ici et il va convertir votre flotteur en texte. Nous pouvons faire la même chose ici. On peut dire que l'ennemi leur inflige des dégâts. Et on peut encore le brancher. Et il affichera maintenant dégâts que l'ennemi a infligés au joueur. Maintenant, en ce qui concerne la couleur des textes flottants, vous pouvez cliquer ici. Je vais donc le rendre bleu quand le joueur frappe l'ennemi. Il s'agit donc des dégâts de Blair et ils seront affichés en bleu. Donc, glissez ça là-haut et choisissez juste quelque chose de aléatoire. Et pour la saturation, je vais en fait écrire 0,5. Je ne veux pas qu'il soit trop bleu. Cliquez donc sur OK. Et pour celui-ci, vous pouvez essayer de faire de même. Donc, juste pour choisir une couleur rouge, peut-être plus rosé comme ça. Ensuite, définissez la saturation 0,5 comme ça et cliquez sur OK. Maintenant, pour l'icône flottante, donc lorsque le joueur endommage l'ennemi, je veux montrer l'épée ici. Donc, à la recherche de douleurs, vous pouvez choisir cela pour les ennemis. Donc, lorsque l'ennemi endommage le joueur, je veux rechercher cette icône de lot. Maintenant que nous l'avons fait, il est dynamique ici. Très bien, maintenant nous en avons fini avec cette logique ici. C'était le plus difficile en fait. Nous avons donc maintenant cette logique complète. Nous devons donc appeler cet événement quelque part. Et nous allons en fait faire une fonction de bibliothèque de textes flottants car cela sera plus facile à appeler. N'oubliez pas que nous avons déjà fait quelque chose à l'intérieur de cette bibliothèque et nous devons appeler cet événement. Et il va passer par le serveur. Il va falloir cet acteur endommagé. Cette fois, c'est l'acteur que nous allons brancher plus tard. Et il faudra cet acteur, prendre le lieu, engendrer l'acteur flottant au-dessus l'ennemi ou du joueur selon qui a été endommagé. Et ensuite, s'il s'agit d'une image floue, nous devons le définir également plus tard. S'il s'agit de dégâts du joueur, il va prendre l'ennemi et afficher le montant des dégâts du joueur. Et affichez également ce texte flottant via la multidiffusion. Et si les dégâts sont des dégâts ennemis, il va prendre la couche TSP car c' est l'acteur endommagé, ce sont les ennemis qui endommagent le joueur. Et il va prendre ce montant de dégâts ennemis et il va le jeter dans cette multidiffusion. multidiffusion va fonctionner ici. Il va prendre ce Blueprint Widget et il va être mis à jour. Revenons donc à nos plans de widgets. Il va passer cet événement ici, mettre à jour le texte, sa couleur, ainsi que l'icône du texte. Et après avoir mis à jour ces éléments, il va attendre que cette animation soit terminée. Et puis ça va détruire cet acteur parce que nous ne voulons pas continuer à le frayer donc le jeu sera à un moment donné un décalage parce que vous ne supprimez pas vos acteurs. Maintenant, tout cela est terminé. Passons à autre chose et continuons et finissons. Voici donc l'événement que nous voulons appeler cela. 112. Fonction de bibliothèque de texte flottant: Très bien, nous en avons presque fini avec les textes flottants. Allons maintenant dans les bibliothèques. Nous en avons déjà fait un et nous allons à la bibliothèque de fonctions. Et à l'intérieur d'ici, ajoutons une nouvelle fonction, et appelons-le maintenant afficher du texte flottant. Et la raison pour laquelle je le crée à l'intérieur d' ici, c' est parce que ce texte flottant, peut-être que nous en avons besoin chez beaucoup, beaucoup d'acteurs et je ne veux pas faire dans chaque acteur. Encore une fois, une bonne chose d' utiliser une bibliothèque est quand on veut appeler une fonction dans de nombreux acteurs, acteurs de Blueprint. Affichez donc des textes flottants. Je peux imaginer que même si je n'ai pas créé mon argent, je peux imaginer que je vais l'utiliser chez beaucoup d' acteurs et c'est pourquoi je le lis à l'intérieur d'ici. Le texte flottant, encore une fois, il a besoin de l'entrée d'un acteur car nous avons besoin de l' acteur endommagé que nous avons créé auparavant. Et nous avons besoin du type de texte flottant. Et c'est là l'énumération. Commençons par sélectionner la variable d'acteur. Ensuite, sélectionnons les textes flottants. Celui-ci est le type de texte flottant d'énumération. Maintenant, de cet acteur endommagé, nous devons appeler l'événement depuis le joueur ou le personnage, base de personnages. Nous devons appeler ça. Permettez-moi de le transformer en fonction Blueprint Interface. Passons donc aux interfaces et nous n'en avons pas pour le moment. Nous allons donc cliquer avec le bouton droit et Blueprint Interface. Appelons maintenant ça la base de personnages. Et à l'intérieur d'ici, disons que nous devons avoir cette référence de personnage. Et celui-ci va avoir une sortie de base de caractères sélectionnée ici. Et appelons-le personnage, Compile and Save. Revenons maintenant à la base de personnages, accédons aux paramètres de classe et ajoutons votre interface Blueprint à l'intérieur d'ici, base de caractères, Compiler et Enregistrer. N'oubliez pas de compiler ici aussi, sinon cela n'apparaîtra pas pour vous. Donc, cliquez dessus ici. Et pour celui-là, nous allons simplement nous dire soi-même. Nous l'avons donc fait plusieurs fois maintenant. Ainsi, nous pouvons maintenant obtenir une référence. Donc, dans la bibliothèque, nous pouvons faire glisser ceci et ensuite nous référer au lieu de lancer, nous pouvons maintenant dire obtenir une référence de personnage. Et à partir de là, nous pouvons appeler cet événement. Revenons ici, affichons du texte flottant. En fait, nous avons également besoin de celui-ci à l'intérieur, et je vais le supprimer. En fait, nous pouvons le faire maintenant à l'intérieur de cette interface Blueprint, je vais le supprimer et l' appeler afficher le chargement du texte. Ainsi, les composés sauvent ici et ici, nous pouvons rechercher des recherches. Nous pouvons en créer un nouveau appelé Display, texte flottant. Et en fait, avant que je ne le finisse, il se dégage parfois. Laissez-moi d'abord créer mes entrées ici. Acteur ou acteur endommagé, acteur plutôt endommagé. Et le second était de type texte flottant. Et trouvons l'énumération. Et puis trouvez l'acteur endommagé, qui n'est qu'un acteur. Juste comme ça, là-haut. Il suffit de lire du texte flottant, comme ceci, Compiler et enregistrer. Désormais, dans la base de caractères, vous pouvez cliquer avec le bouton droit de la souris et dire afficher du texte flottant, et vous pouvez le sélectionner ici. Et maintenant, il s'agit d'une fonction Blueprint Interface. Vous pouvez les connecter. Maintenant, dans la bibliothèque, vous pouvez maintenant appeler cet affichage des textes flottants. D'accord ? Très bien, Bon d'ici et dites afficher du texte flottant. Et c'est un message car il s'agit d'un événement Blueprint Interface ici. acteur tellement abîmé, c' est juste celui-ci. Je vais donc cliquer ici et créer un nœud de réacheminement. En fait, je ne fais pas de reroute. Remarquez que c'est un peu bizarre. Donc, je fais juste ça. Et pour le texte flottant, je vais juste le faire. C'est simplement ce qu'il va faire. La dernière chose, c'est que nous pouvons maintenant utiliser cette fonction, nous avons fini. Nous pouvons utiliser cette fonction de bibliothèque pour l'appeler ailleurs. Allons maintenant à l'ennemi. L'ennemi. Ici. Lorsque l'ennemi est endommagé, nous voulons faire apparaître l' acteur au-dessus des ennemis. Donc ici, chaque fois que les ennemis sont endommagés, vous pouvez maintenant dire que vous pouvez cliquer avec le bouton droit de la souris et dire ce que vous l'appelez à l'intérieur de la bibliothèque. Donc, aller à la bibliothèque et vous l'avez appelé afficher du texte flottant. Vous pouvez donc cliquer ici avec le bouton droit de la souris et dire afficher du texte flottant. Et vous pouvez le voir ici à partir de la bibliothèque de fonctions qui affiche du texte flottant. Maintenant, vous devez le connecter ici et vous devez spécifier quel est l'acteur endommagé. C'est soi, c'est l'ennemi. Et qu'est-ce que le texte flottant ? C'est le cas, c'est en fait des dégâts causés par les joueurs. C'est donc exact en ce moment. Copions ceci ici. Revenons maintenant à la base de joueurs. Et pour le joueur, si le joueur est endommagé ici, collons-le. Et qui est l'acteur endommagé ? C'est le joueur lui-même. Quel est le type de Dégâts, c'est un dommage NME. Donc maintenant, il va vraiment jouer et je vais le montrer pour vous. Cliquons donc sur Play for now et voyons ce qui se passe. Je vais donc jouer en tant que serveur ici, en tant que serveur d'écoute. En tant que serveur. Maintenant, vous pouvez voir quand je suis endommagé s'affiche lorsque je frappe l'ennemi. Cela va montrer ces dégâts ici. Très cool. Cependant, si je joue en tant que client et que je suis frappé ici, vous pouvez voir que rien ne s' affiche et c'est ce dont nous parlerons dans la prochaine leçon. Donc, pour ce client, je ne vais pas m'en inquiéter pour l'instant. Mais pour ce joueur ici, vous pouvez voir les dommages du client affichés sur le serveur. Mais si vous allez chez le client, il ne montre rien sur le serveur. Vous pouvez voir qu'il s' affiche désormais correctement. Et permettez-moi de vous montrer ce qui se passe en ce moment. Alors, Wendy, nous sommes maintenant à l'intérieur des joueurs. Donc, lorsque le lecteur est endommagé, nous appelons cette fonction ici depuis la bibliothèque. Nous spécifions donc qui est l'acteur endommagé, c'est le joueur lui-même. Et ce sont les dégâts de l'ennemi qui se produisent. Maintenant, il va aller dans la bibliothèque de fonctions, et il va passer en revue et appeler cet affichage des textes circulant à partir de la base de caractères. Base de personnages. Maintenant, en appelant cet événement ici, passant par le serveur, le serveur va définir cette variable et nous essayons de trouver l'emplacement des acteurs endommagés, répondant à ce texte dans l'emplacement de l'actrice. Et lorsque vous répondez au texte, nous vérifions s'il y a des dégâts clairs ou s'agit-il de dégâts ennemis ? S'il s'agit de dommages au plaisir ? Nous allons le faire ici. Appelez cette multidiffusion à partir du texte flottant BP. Et nous le définissons en fonction l'ennemi ou des dégâts causés par le joueur, des couleurs et des icônes. Cet événement provient donc du texte flottant BP, qui se trouve ici. Maintenant, il va continuer avec cette multidiffusion. transmettre à tous les joueurs c'est prendre ce plan de widget. Ensuite, il va passer en revue et mettre à jour le texte flottant dans ce widget, qui se trouve ici. Et maintenant en affichant ce widget, il va être défini pour cet événement ici. Il va définir le texte et la couleur du texte et définir le pinceau. Et après cela, il va attendre cette animation que nous avons faite ici. Il va donc attendre que cette animation soit terminée avant qu'elle ne détruise l'acteur. Parce que si vous faites cela auparavant, il ne montrera jamais les textes car il le détruira rapidement. C'est donc ce qui se passe. Vous pouvez voir que c'est beaucoup d'étapes, mais une fois que vous êtes vraiment doué, c' est très facile à faire. Donc, en passant par la bibliothèque de fonctions, passant par la base de caractères, en passant par le serveur, en exécutant la multidiffusion ici. Et après la multidiffusion, vous mettez à jour ce texte ici. Ok, donc on a fini avec le texte de combat. Et la raison pour laquelle le client ne reçoit pas tout cela est très facile et il faudra probablement une minute pour expliquer. Faisons donc cela au cours de la prochaine leçon. 113. Réplication d'acteur: D'accord, alors pourquoi est-ce que c'est ? Le client ne peut pas voir ces dégâts ici. Donc, quand je suis endommagé, je peux le voir comme étant le serveur et j'endommage l'ennemi. Je peux aussi le voir, cependant, si je suis le client, donc si j' ouvre réellement le client ici, donc en tant que client, je ne peux pas voir ce dommage ici. Pourquoi est-ce que c'est ? Et c'est à cause de la réplication de l'acteur. Jusqu'à présent, nous avons répliqué ces variables et nous avons répliqué des événements, mais nous n'avons pas répliqué les acteurs de Blueprint. Passons donc au texte flottant ici, le texte flottant Vp. Permettez-moi de cliquer sur les valeurs par défaut de la classe pour cet acteur de textes flottants. Et vous pouvez cliquer sur celui-ci appelé répliques. C'est ce qui vous manque. Donc, en cliquant ici et en allant dans les textes flottants, le widget Pendant en bas. Et vous devez cliquer sur celui-ci appelé répliques de composants. N'oubliez pas que nous sommes en mode multijoueur. Cliquez donc sur Play. Maintenant, en cliquant sur Jouer en tant que client, vous pouvez désormais voir que le client peut le voir également. Et c'était le seul changement qui a été erroné. Donc, juste ces deux coches. Et peut-être qu'en ce moment vous demandez pourquoi n'avons-nous pas fait cela auparavant ? Pourquoi ? Pourquoi devons-nous le faire maintenant ? Pourquoi tout cela a-t-il fonctionné ? Sans que nous ne cliquions ici ? Et c'est parce que le personnage avec lequel nous avons travaillé est répliqué par défaut dans Unreal Engine cinq. Donc, en cliquant sur ce lecteur, vous pouvez voir qu'ils sont en fait basés sur le personnage. Donc, en cliquant sur la base de caractères, vous pouvez voir ici dans la classe par défaut de la base de caractères, cette réplication est déjà vérifiée pour vous. Par conséquent, les caractères à l'intérieur d' Unreal Engine sont répliqués par défaut. Et c'est pourquoi vous n' aviez pas eu besoin de le faire. Si vous le supprimez, vous verrez beaucoup de bugs dans votre jeu. Mais cela est vérifié par défaut. Et les acteurs ne sont pas répliqués par défaut. Donc, si vous créez une application après cela, tout le monde devrait voir que vous devez vraiment vous souvenir de la répliquer. Par exemple, si vous créez des armes. Par exemple, dans un jeu 3D ou dans un jeu 2D, si vous, si vos ennemis lâchent des armes ou le joueur enroule des armes à l'autre joueur, cet acteur d'armes doit être répliqué autrement le client je ne peux pas voir cette arme lâchée. Ainsi, après la réplication, comme lorsque nous la répliquons, toutes ces variables que nous avons faites dans les autres Blueprints, n' oubliez pas de répliquer également l'acteur. Si vous avez besoin d'un tout, les joueurs le voient. 114. Nettoyer le projet: Maintenant que nous avons fini le jeu, allons maintenant nettoyer le projet. Alors n'oubliez pas de consulter ma section de leçons supplémentaires. Je continuerai à mettre à jour ce cours. Par exemple, j' ajouterai une plaque signalétique pour déposer les objets que vous pouvez perdre, par exemple des potions de santé, des barres de santé au-dessus de ces par exemple des potions de santé, des ennemis. Nous ajouterons également des statistiques afin que nous puissions obtenir plus de force ou plus de santé et de mises à jour et peut-être rechercher le système demandeur. y a beaucoup plus de choses, peut-être même plus de 200 vidéos que nous pouvons faire si nous n'avons pas commencé à partir d'ici. Mais cela devrait vous donner une bonne base pour créer un jeu de plateforme 2D multijoueur. Nous avons donc appris comment créer tout cela, comme l'importation des ressources et application de papier à ces paramètres. Créer des flip books, des sprites, acteurs et les importer au niveau de la création de cartes tuiles. Et nous avons inclus un système de lettres et un système d' attaque et beaucoup de choses que nous pouvions lire dans ce cours. Et lors de la séance de cours supplémentaires, j'ajouterai d'autres choses. Encore une fois, comme les barres de santé, le système de statistiques RPG, peut-être un système de quêtes. y a donc beaucoup de choses que nous pouvons encore ajouter à ce projet. Mais maintenant, avant de terminer, permettez-moi d'aller de l'avant et de nettoyer le projet parce que je n'aime pas simplement le laisser comme ça. Allons donc à la base de joueurs, par exemple, nous pouvons commencer par la base de joueurs sont en fait, commençons par ici. Donc, pour les actifs, nous n'avons pas vraiment besoin de tout nettoyer. Tout est déjà nettoyé. Et passons à l'audio qui est bon aussi. Passons maintenant aux Blueprints, c' est là que le nettoyage est principalement des publicités. Commençons donc par cette caméra BP. Et pour celui-là, nous n'avons vraiment rien. Alors, fermons ça. Et la base de personnages, nous n'avons pas grand-chose ici non plus. Il suffit de vérifier ici. Si, si tout est réglé et que vous aimez comment vous avez fait les choses ou que vous devez ajouter, réécrivez des nœuds. Par exemple, j' aime simplement être des structures. Parfois, je prends juste ces nœuds de réacheminement et je les déplace. N'oubliez pas de sélectionner tout et de cliquer sur C pour ajouter des commentaires. Et vous pouvez appeler cela des textes flottants , par exemple, simplement, vous pouvez le faire beaucoup mieux que moi. Je le fais juste rapidement pour ce cours, donc ça ne prend pas éternellement. Mais essayez d'écrire ici un long texte expliquant ce que vous avez fait. Parce que si vous revenez à ce projet six mois plus tard, vous ne pourrez pas vous souvenir de ce que c'est. Essayer d'écrire, peut-être des textes flottants pour l'acteur endommagé et bla, bla, bla, peu importe. Vous pouvez voir que vous avez beaucoup d'espace ici. Si vous le souhaitez, vous pouvez modifier à nouveau la couleur des commentaires. Vous pouvez modifier la taille de ce texte afin de l' agrandir si vous souhaitez compiler et enregistrer. Et maintenant, vous pouvez accéder au texte flottant. Ici. Je pense que tout va bien. Et je vais juste laisser ça se passer comme cette année. Ils vont se faire faucher la région font vraiment beaucoup ici. Et dans la manette du lecteur vous pouvez nettoyer un peu cela parce que nous n'avions pas ou nous n'avons rien commenté. Par exemple, ici, nous pouvons sélectionner ceci et dire initialiser des widgets. Habituellement, je fais aussi ici et je dis commencer à jouer parce que je sais où est mon premier jeu. Si j'ai beaucoup de code, Xia Lai, initialisation des widgets. Bon, donc maintenant, on les a baissés. Maintenant. Prenons ça. Maintenant, nous sélectionnons le personnage ici, et ceux-ci sont ensemble. Prenons donc tout cela et je vais appeler une sélection et créer le personnage en couches. Juste comme ça. Et nous pouvons y aller, c'est la mise à jour de la barre de santé et de l'expérience. Et laissez-moi simplement choisir cela et dire mettre à jour les barres de santé et expérimentées. Si vous le souhaitez, cela a l'air bien, mais si vous le souhaitez, vous pouvez parfois toujours faire glisser ceci et mettre ici sur le côté. Nous l'avons donc plus compact ensemble, mais je ne pense pas que cela corresponde. En sélectionnant un frai, j'aimerais juste mettre des choses qui s' assemblent ici sur les côtés. Je vais juste le faire glisser ici encore une fois. Maintenant, si vous le souhaitez à nouveau, vous pouvez cliquer sur les variables et leur donner une catégorie si je peux la trouver ici. Ainsi, vous pouvez appeler le widget, par exemple Widget, Blueprint ou quelque chose du genre. Donc, juste une catégorie et faire la même chose ici, Widget Blueprint et ils vont être à leur place ici. Essayez donc de le faire avec tous vos projets. Par exemple, le plus gros est probablement la base de joueurs. Je vais nettoyer tout ça par moi-même. Je ne vais donc pas vraiment ajouter quoi que ce soit. Je vais juste traîner des choses. Par exemple, en cliquant ici, en cliquant sur Masquer les épingles non connectées, puis en regardant ici et peut-être que je ne suis pas satisfait de cela, je vais le faire glisser vers le bas. Essayez donc de nettoyer votre projet au mieux que vous le pouvez. Essayez de tout commenter et de les rassembler là où ils correspondent. Parce qu'en ce moment, vous pouvez voir que c'est un peu désordonné. Il faut donc tout commenter. Et dans la prochaine leçon, je vais vous montrer des ressources très utiles que j' utilise pour mon propre projet personnel. 115. Ressources utiles: Dans cette leçon, je vais en fait vous montrer quelques-unes des ressources utiles que j'utilise pour mes projets personnels. Je viens de créer ça pour m'amuser. J'ai créé ce projet ici. Vous pouvez également piller des articles et disposer d'un système d'inventaire. Donc beaucoup de choses que vous pouvez faire, vous avez un système de nivellement comme nous l'avons fait. Et vous avez des pièces de monnaie et vous pouvez aller au magasin ici. Et à l'intérieur du pointu, on peut acheter des trucs. Donc pour ce projet, vous pouvez voir pour ce code, encore une fois, j'utilise les mêmes méthodes. Donc, en allant au joueur, la base de joueurs, je vais vous montrer ma base de joueurs. C'est donc la base des joueurs jusqu'à présent pour ce jeu. Et je vais juste vous montrer des ressources qui vous aideront pendant que vous codez. Nous pouvons donc voir que les lignes sont comme ça. En fait, j'ai beaucoup mieux aimé ces lignes que dans notre projet où nous avons ces lignes sinueuses. En fait, j'aime utiliser ce plug-in où les lignes deviennent robotiques ou où qu'on l'appelle, comme ça. Vous pouvez le trouver sur le marché. Ainsi, en allant sur le marché et à l'intérieur d'ici, vous pouvez rechercher des notes électroniques. Je crois que c'est ce qu'on appelle les notes électroniques. Et voyons si nous pouvons le trouver ici. Je viens peut-être de chercher des notes électroniques. Et c'est en fait la seule. Donc, en cliquant sur ces notes électroniques, c'est en fait celle que j'utilise et vous pouvez voir beaucoup d'élèves en utilisant réellement deux. C'est le seul et vous pouvez voir que vous pouvez choisir différents styles pour vos plans. Vous avez donc des styles différents. Vous pouvez en fait avoir des notes plus sombres si vous le souhaitez. Mais c'est celui que j'utilise et ça rend mes lignes ici électroniques. Et je pense que c'est beaucoup plus facile à trier. Je pense donc que cela rendra tout un peu plus beau à regarder, plus facile à regarder en fait. Et vous pouvez voir ici que je n'ai même pas besoin créer des nœuds de reroutage. Cela le fera automatiquement pour moi dans notre projet, mais pour les lignes courbes normales, je devrai créer des notes de réacheminement pour cela. Mais je n'ai pas vraiment besoin de créer des notes de reroutage pour cela parce que vous pouvez voir quand je fais glisser, cela le fait automatiquement pour moi. actifs très sympas que vous pouvez utiliser sur le marché. Des trucs très cool qu'ils ont fait. Je m'en sers donc. La deuxième chose est celle que j'utilise est celle qui s'appelle, Voyons voir, ou c'est des commentaires de taille automatique. Donc, ces commentaires de taille automatique sont très sympas à utiliser également. Il permet de dimensionner automatiquement les commentaires en fonction des notes que vous avez. Vous pouvez voir ici, j' ai ces nœuds ici, et si je fais glisser quelque chose, vous pouvez voir toutes les tailles. Mon commentaire dépend de l' endroit où je fais glisser ça. Et si je fais quelque chose, par exemple, je peux imprimer une chaîne ici. Vous pouvez voir qu'il l' inclut automatiquement à l'intérieur du commentaire. Des trucs très cool. Et c'est aussi comme si vous pouvez personnaliser les commentaires. Donc, si j'écris quelque chose ici, écrivons quelques chaînes d' impression à l'intérieur de ce projet. Et quand je clique sur voir, je l'ai personnalisé. Quand je clique et que je vois, on voit qu'il y a beaucoup plus d'espace en haut , en bas et sur les côtés. En fait, je l'ai fait manuellement. Et le commentaire est écrit au milieu. Et je personnalise la taille automatiquement à 28, comme ceci. Vous pouvez donc voir très cool. Et également pour la couleur commune, vous pouvez choisir automatiquement quelles couleurs. Par exemple, pour ce projet, j' utilise le bleu s'il est côté client, j'utilise le rouge s'il fonctionne sur le serveur et paie s'il exécute la fois le serveur et les clients, pour exemple, une multidiffusion. Vous pouvez donc voir ici, par exemple, un cours d'exécution via le client, en exécution sur le serveur. Il sera rouge et rejettera à travers le client, il sera ici à travers le bleu. Donc tous les commentaires des côtés, très sympas à utiliser pour votre projet, juste pour le rendre plus organisé. Et oui, je n' en utilise pas beaucoup plus. D'habitude, je n'utilise que ces deux-là. Vous pouvez également utiliser l' arrangeur de notes automatique. Je pense que c'était un peu comme si ça ne me plaisait pas, donc en fait je ne l'utilise pas. Mais beaucoup de gens, je pense, l' utilisent aussi, en fait pas beaucoup, en fait quelques uns. Mais je pense que c'est arrangé mes notes et mes noix comme je le voulais, en fait, je n'utilise pas ça. Et la dernière chose, même s'il s'agit d'un parcours 2D, la dernière chose que je veux vous montrer ici, le ciel ultra dynamique. Donc, si vous envisagez de créer un jeu 3D, celui-ci est un sauvetage et vous pouvez voir que beaucoup de gens l'utilisent réellement et cela créera des gars dynamiques pour votre projet. Encore une fois, vous pouvez vérifier ma page, mes cours, je fais aussi des projets 3D, des cours 3D et les plans que vous utilisez ici en 2D. La bonne chose à propos de la création jeux 2D dans Unreal Engine est que vous êtes désormais beaucoup mieux à utiliser des Blueprints qu'auparavant. Donc maintenant, ces méthodes que vous avez appris ici dans un jeu 2D, vous pouvez également les utiliser à l'intérieur d'un jeu 3D. Donc, même si tous ces plans sont maintenant réalisés à l'intérieur d'un jeu 2D, ce n'est pas vraiment différent dans un jeu 3D. Maintenant que vous avez pratiqué ce cours 2D, vous pouvez également utiliser ce que vous avez appris dans nos cours 3D. C'est donc la bonne chose à propos l'utilisation d'Unreal Engine et de Blueprints. Tout le code va naturellement être gaspillé si vous souhaitez soudainement passer à des jeux 3D, car une chronologie est une chronologie et elle est utilisée pour la même chose en 3D, ainsi que pour les événements personnalisés et obtenir l'emplacement de l' actrice. Nous devons également le faire en 3D. Tout cela est donc identique dans un jeu 3D. 116. Mises à jour du cours: Nous avons maintenant terminé le cours. J'espère que vous vous êtes beaucoup amusé. Je me suis beaucoup amusé à créer celle-ci. Encore une fois, si vous souhaitez prolonger ce cours vous-même, si vous souhaitez ajouter d'autres ennemis, vous pouvez accéder à ce site Web. C'est de là que je l'ai obtenu. Maple s'est tenu et vous pouvez simplement créer d'autres monstres ici. Vous pouvez créer des créations, créer des chemins, personnages et créer plus de monstres. Vous pouvez donc voir que nous avons ajouté ces animaux et maintenant nous l'avons fait de manière si dynamique que vous pouvez simplement aller vers l'ennemi et cliquer avec le bouton droit de la souris et créer un nouvel ennemi. Et il sera ajouté automatiquement. N'oubliez pas de cliquer sur l'ennemi et aussi sur l'intervalle animal ici, toutes les animations, la santé le nom et l' expérience, etc. Et n'oubliez pas non plus, bien sûr, d' ajouter une traînée et d'ajouter l' ennemi à ce niveau. Donc, même si nous avons terminé ce cours, je vais faire des mises à jour futures pour ce cours. J'ajouterai beaucoup d'autres choses, beaucoup de choses RPG. Par exemple, nous ajouterons la barre de santé qui indique ce système, peut-être aussi un système de compétences. Nous allons ajouter un système de quête. y a donc beaucoup d'autres systèmes que nous pouvons encore ajouter à ce jeu. Je vais donc continuer à mettre à jour ce cours. Et si vous voulez vous souvenir, vous pouvez aller sur ma page ici et jeter un coup d'œil à mes autres cours. J'essaie d'en libérer un tous les mois ou tous les mois et demi. Jetez un coup d'œil à mes autres cours. Et rappelez-vous que vous pouvez toujours aller à mon Discord et m' écrire si vous souhaitez un cours que vous voulez voir, ou si vous avez besoin d'aide pour un cours que vous voulez voir, ou si vous avez besoin d'aide ce cours ou tout autre cours, vous pouvez aller à mon Discours et nous pouvons discuter ou vous pouvez écrire avec toutes les autres personnes qui suivent ce cours. Vous pouvez écrire avec eux sur les serveurs Discord. donc une très belle communauté que nous avons à l'intérieur. Rappelez-vous également que j' ai une chaîne YouTube, donc vous pouvez également accéder à ma chaîne YouTube si vous souhaitez regarder trois vidéos sur ce sujet. Je suis donc très actif. Ils ajoutent fréquemment des vidéos, alors allez également sur mon YouTube et voyez s' il y a quelque chose qui va vous intéresser. Cela dit, merci pour tout. Merci de m'avoir soutenu et j'espère que vous vous êtes beaucoup amusé et je vous verrai dans le prochain cours.