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.