Unreal Engine 5 UE5 Créer un jeu ARPG de style Diablo du début à la fin | 3D Tudor | Skillshare

Vitesse de lecture


1.0x


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

Unreal Engine 5 UE5 Créer un jeu ARPG de style Diablo du début à la fin

teacher avatar 3D Tudor, Bestselling Blender Author & 3D Educator

Regardez ce cours et des milliers d'autres

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

Regardez ce cours et des milliers d'autres

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

Leçons de ce cours

    • 1.

      Atelier de création de jeux : création d'ARPG procédural dans UE5

      3:33

    • 2.

      Les bases du jeu

      18:24

    • 3.

      Créer le menu principal

      13:02

    • 4.

      Ajouter le menu principal à la fenêtre et aux fonctionnalités de quitter

      10:30

    • 5.

      Mécanique de l'écran de chargement et apparition de labyrinthe

      12:19

    • 6.

      Créer un écran de chargement

      16:44

    • 7.

      Ajouter l'écran de chargement au mode jeu

      11:04

    • 8.

      Créer l'algorithme de labyrinthe

      13:30

    • 9.

      Créer la première tuile

      14:51

    • 10.

      Système de direction personnalisé

      11:47

    • 11.

      Trouver des tuiles adjacentes

      13:45

    • 12.

      Cartographie des coordonnées et apparition des tuiles

      14:14

    • 13.

      Visualiser le labyrinthe avec des flèches

      15:27

    • 14.

      Ajouter des murs comme un château

      14:58

    • 15.

      Communication avec des modèles d'interface

      15:47

    • 16.

      Trouver les sorties disponibles

      10:26

    • 17.

      Algorithme pour la forme de labyrinthe de base

      22:03

    • 18.

      Leçon 3D 17 La création de tuiles

      11:20

    • 19.

      Système de retour personnalisé

      15:33

    • 20.

      Finaliser les règles de retour en arrière

      14:08

    • 21.

      Générer des carreaux de conseils après la publication

      20:34

    • 22.

      Correction de bugs et plans de décoration

      16:03

    • 23.

      Placer les murs en fonction de chemins bloqués

      15:01

    • 24.

      Motifs de couloir par défaut

      12:34

    • 25.

      Plan de bâtiment de salle et d'ascenseur

      15:36

    • 26.

      Plan de clé de poitrine

      16:30

    • 27.

      Algorithme de créateur de pièce

      16:10

    • 28.

      Trouver des salles 2x2 possibles

      13:49

    • 29.

      Fonction de périmètre de la pièce

      13:23

    • 30.

      Liste des salles et débogage

      15:56

    • 31.

      Créer la structure de la pièce

      14:18

    • 32.

      Fonction de la pièce et fixation murale

      14:32

    • 33.

      Finaliser les fonctions de la pièce

      16:24

    • 34.

      Randomiser les murs internes

      12:42

    • 35.

      Ajouter des murs de pièce

      18:55

    • 36.

      Portes de pièce et segmentation du labyrinthe

      18:44

    • 37.

      Segmenter les zones de donjon

      12:48

    • 38.

      Finaliser la mécanique de segmentation

      13:46

    • 39.

      Catégoriser les zones par taille

      12:00

    • 40.

      Remplacement du sol par catégorie

      15:46

    • 41.

      Catégories de pièces cachées

      17:19

    • 42.

      Fonction d'échange de mur à porte

      21:07

    • 43.

      Placement de porte et de sigil

      13:42

    • 44.

      Fonctions de zone de porte unique

      21:28

    • 45.

      Relier les murs de donjon

      13:53

    • 46.

      Décorations murales

      16:57

    • 47.

      Ajustements des flèches directionnelles

      11:30

    • 48.

      Masquer les flèches de débogage et créer des torches

      15:21

    • 49.

      Lumières de la torche de reproduction

      14:16

    • 50.

      Effet de scintillement de la torche

      16:29

    • 51.

      Système d'éclairage de couloir

      16:20

    • 52.

      Mécanique des pièges et système de dommages

      13:42

    • 53.

      Animation de pièges et effets spéciaux

      12:27

    • 54.

      Fonction de progéniture accessoire

      15:22

    • 55.

      Plan de décoration de pièce

      13:04

    • 56.

      Bases de la spawner de pièce

      15:01

    • 57.

      Achèvement de la décoration d'accessoires de pièce

      14:00

    • 58.

      Ajouter des éléments de physique aux salles

      11:55

    • 59.

      Importer le plan d'action de Revenant et de Hellgate Tower

      15:02

    • 60.

      Leçon 3D 59 Visuels de la tour du Hellgate et intégration du labyrinthe

      13:42

    • 61.

      Éléments essentiels et tableaux de données

      16:04

    • 62.

      Comportement de l'élément et widget de survol

      14:16

    • 63.

      Animer le plan de poitrine

      15:12

    • 64.

      Mécanique de la poitrine et système de chute d'objet

      13:42

    • 65.

      Coffres de pièces cachées

      15:00

    • 66.

      Animation de baisse d'objet près de la poitrine

      20:00

    • 67.

      Terminer l'animation d'éléments avec des lignes de temps

      12:45

    • 68.

      Afficher les widgets d'article et d'inventaire

      15:21

    • 69.

      Ramasser des articles et les ajouter à l'inventaire

      11:39

    • 70.

      Compteur de pièces et widget de collecte

      13:41

    • 71.

      Fixer la fonctionnalité du compteur de pièces

      12:19

    • 72.

      Visuels d'inventaire dans le gameplay

      13:13

    • 73.

      Mettre à jour les visuels d'inventaire

      14:25

    • 74.

      Faire apparaître le zoom du joueur en cinématique

      20:23

    • 75.

      Correction de collision et détection des tuiles de joueur

      12:30

    • 76.

      Mécanique des plafonds de la pièce

      17:47

    • 77.

      Mécanique du plafond pour montrer et masquer

      12:06

    • 78.

      Plan de visuels pour l'ascenseur

      13:16

    • 79.

      Mécanique de labyrinthe de Spawn Next

      15:19

    • 80.

      Génération de labyrinthe à partir de la première tuile

      14:49

    • 81.

      Animation pour ascenseur et effets sonores

      12:16

    • 82.

      Cinématique de la caméra pour ascenseur

      14:28

    • 83.

      Correction des problèmes de mélange de la vue de la caméra

      16:39

    • 84.

      Animation de l'ascenseur et saisie d'inventaire

      13:46

    • 85.

      Système de minimap

      11:31

    • 86.

      Touches minimales finales et infobulle d'inventaire

      19:39

    • 87.

      Système de santé des joueurs et widget

      19:54

    • 88.

      Potion de santé utilisabilité de l'article d'inventaire

      17:08

    • 89.

      Barre de temps de jeu et potion temporelle

      13:00

    • 90.

      Effets de potion et de potion de vitesse

      12:44

    • 91.

      Potion de rage et effets de particle

      15:37

    • 92.

      Musique de combat et mode de combat Hellgate

      16:43

    • 93.

      Système de santé Hellgate et mort

      11:11

    • 94.

      Animation de balle Hellgate et système de ciblage

      14:59

    • 95.

      Tir de balle Hellgate et SFX léger

      15:13

    • 96.

      Widgets de souris personnalisés et maille revenante

      13:11

    • 97.

      Animation d'attaque au corps à corps et à corps

      15:54

    • 98.

      Collisions et effets du plan d'attaque au mêlée

      23:48

    • 99.

      Visée statique et mécanique de tir

      14:09

    • 100.

      Plan de balle de joueur et visuels

      10:38

    • 101.

      Prise de vue au joueur et effets visuels

      13:29

    • 102.

      Animation de la mort des joueurs et mécanique

      11:59

    • 103.

      Système de détection de souris

      18:14

    • 104.

      Interaction avancée avec la souris pour les éléments

      15:56

    • 105.

      Système d'interaction avec la souris et entrées

      14:03

    • 106.

      Système d'interaction de portée minimale

      14:14

    • 107.

      Finir le tir statique et viser

      20:20

    • 108.

      Mécanique des ennemis sous le curseur

      17:32

    • 109.

      Pochoir post process et corrections de détection d'ennemis

      20:18

    • 110.

      Corrections de widget de propagation de l'article et de la poitrine

      16:21

    • 111.

      Corrections du widget d'article et code d'ascenseur

      8:10

    • 112.

      Ajustements du widget d'élément et fonctionnalité de l'ascenseur

      17:56

    • 113.

      Import de personnages Morigesh et système de santé IA

      12:45

    • 114.

      Retargeter les animations revenantes vers Morigesh

      15:44

    • 115.

      Vérification de la portée IA et protections Hellgate

      17:54

    • 116.

      Tir de balle par IA et mécanique du Knockback

      17:28

    • 117.

      Mécanique du Knockback et de l'assommage

      17:08

    • 118.

      Variables du tableau noir et arrangement de l'arbre de comportement

      7:41

    • 119.

      Paramétrer les variables de tableau noir et les arbres de comportement de l'IA

      13:45

    • 120.

      Comportement de la patrouille IA et mode panique

      12:47

    • 121.

      Mode attaque IA et vérifications de la ligne de visée

      12:13

    • 122.

      Optimisation du volume de navigation par IA et de la trajectoire

      11:14

    • 123.

      Volume de navigation et optimisation

      10:30

    • 124.

      Comportement de finition de la prise de vue et débogage

      14:19

    • 125.

      Correction de bugs finaux et polissage du gameplay

      10:17

    • 126.

      Correction de bugs de gameplay majeurs

      17:13

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

Généré par la communauté

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

446

apprenants

2

projets

À propos de ce cours


Libérez votre potentiel créatif avec l'atelier de création de jeux : création ARPG procédurale dans le donjon UE5 

![
Cliquez ici pour le pack de ressources]

Vous avez toujours voulu créer votre aventure de donjon comme Diablo ?

Imaginez créer vos propres raids épiques, avec des donjons générés de manière procédurale, des ennemis implacables et un butin épique, le tout grâce à Unreal Engine 5.

Dans l'atelier de création de jeux : création d'ARPG procédural pour le donjon UE5, nous donnons vie à votre jeu de rêve !

Avec moi, Markos et 3D Tudor, vous plongerez dans Unreal Engine 5 pour créer un ARPG entièrement fonctionnel à partir de zéro. Que vous rêviez de créer des mondes fantastiques épiques ou des aventures d'action rapides, ce cours Skillshare vous guidera étape par étape dans la maîtrise de la conception procédurale de donjon, de l'IA personnalisée et de la mécanique de combat dynamique. Transformons vos idées de jeux en réalité !

Ce que vous allez apprendre :

  • Maîtriser Unreal Engine 5 pour ARPG Design : créer votre ARPG à partir de zéro, y compris les donjons procéduraux, l'IA ennemie et les mécaniques de combat personnalisées.

  • Génération de donjon dynamique avec des algorithmes de backtrack : apprenez à générer des mises en page uniques avec des textures fraîches et des pièges à chaque lecture.

  • Créer une IA immersive pour les ennemis : créer des ennemis stimulants qui patrouillent, attaquent et s'adaptent aux mouvements de votre joueur.

  • Systèmes de butin et coffres interactifs : ajoutez des pickups d'objets et des mécaniques de trésor pour engager les joueurs et améliorer l'expérience de jeu.

  • Niveaux de donjon sans fin : créez une mécanique d'ascenseur qui génère des niveaux sans fin, créant une exploration transparente des donjons.

  • Paquet de ressources personnalisable : utilisez des ressources prédéfinies telles que les matériaux, les effets de particle, les textures et les maillages pour rationaliser le développement et mettre l'accent sur la créativité.

À quoi s'attendre :

Imaginez des donjons qui génèrent des mises en page uniques à chaque fois, remplis d'éclairage atmosphérique, de coffres interactifs et de pièges stratégiques. Imaginez des ennemis féroces qui réagissent aux actions de votre joueur, et des coffres au trésor éparpillés dans le monde entier.

Ce cours Skillshare vous guidera tout au long de la création de ces éléments essentiels, en vous assurant de développer les compétences nécessaires pour créer votre propre aventure ARPG.

Dans l'atelier de création de jeux : création d'ARPG procédurale dans le donjon UE5, vous apprendrez à :

  • Créer un générateur de donjon procédural en utilisant un algorithme de backtrack personnalisé. Vous serez guidé dans la création du système de labyrinthe et la génération de tuiles de manière dynamique, ce qui vous assurera un gameplay toujours frais.

  • Créez des salles et des environnements dynamiques, en ajoutant des accessoires, des textures et des matériaux pour apporter de la variété à votre donjon.

  • Mettre en œuvre une mécanique d'ascenseur pour des niveaux infinis, en ajoutant de la progression et des défis au fur et à mesure que les joueurs explorent davantage.

  • Créez une IA ennemie personnalisée qui patrouille, attaque et s'adapte aux actions des joueurs, en créant des affrontements tactiques et attrayants.

  • Intégrez la physique, l'éclairage et les effets sonores pour créer des atmosphères immersives, améliorant ainsi l'expérience du joueur.

Répartition du cours :

Cet atelier commence par les bases : mettre en place un mode de jeu descendant et créer un menu principal entièrement fonctionnel. Vous vous plongerez dans les plans d'Unreal Engine, où nous mettrons en œuvre des algorithmes de génération procédurale, en créant dynamiquement des donjons sans fin équipés d'IA ennemie et d'accessoires environnementaux.

Tout au long du cours, vous vous plongerez dans les bases suivantes :

  • Génération de donjon procédural : utiliser des algorithmes personnalisés pour créer des murs, des sols et des pièces pour des donjons uniques.
  • Mécanique des combats par les joueurs : créer des attaques au mêlée et à distance, ainsi que des effets de rétrogradation pour améliorer le gameplay.
  • Comportement de l'IA : créer des ennemis qui patrouillent, attaquent et se repositionnent tactiquement.
  • Éléments interactifs : créez des éléments attrayants tels que des coffres, des pièges et des ascenseurs pour approfondir le défi de votre jeu.
  • Systèmes d'interface utilisateur avancés : implémenter une minimap 3D, des barres de santé, des animations d'inventaire et de ramassage d'articles pour une expérience utilisateur complète.

Votre pack de ressources :

Pour vous aider à rationaliser votre travail, ce cours comprend un vaste pack de ressources avec :

  • 21 textures UI pour des éléments HUD personnalisés.
  • 133 cartes de texture pour créer des matériaux stylisés, ainsi que 53 instances de matériaux prédéfinies.
  • 2 effets de particle prédéfinis pour les explosions et les incendies.
  • 17 effets audio pour la conception sonore environnementale.
  • 63 mailles dans 5 styles de donjon prédéfinis (pierre, pavé moussu, bois, brique et thème de la chambre noire) avec des accessoires et des torches.
  • Un effet de post-traitement de mise en évidence pour assurer la visibilité des joueurs dans des environnements complexes.

Plan du cours

Dans ce cours, nous donnons le coup d'envoi en mettant en place le mode de jeu de base et la mise en page dans Unreal Engine 5, un peu comme jeter les bases de tout. Après cela, nous nous lancerons dans la création d'un menu principal très propre et facile à utiliser. C'est l'une de ces choses qui font une grande différence, vous savez ?

Une fois que c'est réglé, nous nous plongons dans le truc amusant : la génération de labyrinthe procédural. C'est là que vous commencerez à créer des donjons dynamiques, et ça devient plutôt cool. Au fur et à mesure que nous avancerons, nous définirons des règles personnalisées pour la génération de salle, afin que vous ne fassiez pas que vous coller. Vous maîtriserez des choses comme les tuiles et les points de sortie, en vous assurant que l'expérience du joueur est fluide.

Nous allons également travailler sur un algorithme de backtrack personnalisé qui nous assurera que chaque fois que quelqu'un joue à votre jeu, il semble frais. Aucune course ne sera jamais la même ! Ensuite, nous allons vraiment entrer dans le vif du sujet avec l'IA ennemie et les systèmes de combat. C'est là que votre jeu commence à prendre de la profondeur, en stimulant les joueurs et en gardant les choses intéressantes.

Pour résumer, nous nous intéresserons à la mise en place d'un système d'inventaire pour que les joueurs puissent collecter des objets et interagir avec eux en douceur. Il rassemble vraiment tout et rend le jeu plus interactif et poli.

Réflexions finales

À la fin de l'atelier de création de jeux : création d'ARPG de donjon procédural UE5, vous aurez créé un système de donjon procédural entièrement fonctionnel avec des environnements dynamiques, une IA ennemie avancée et un système de butin, le tout dans Unreal Engine 5. Que vous commenciez votre premier jeu ou que vous cherchiez à affiner vos compétences, ce cours vous fournira les outils et les compétences nécessaires pour créer un ARPG de donjon captivant.

Ne restez pas sur les scripts et rendez-vous dans le cours !

Markos

Rencontrez votre enseignant·e

Teacher Profile Image

3D Tudor

Bestselling Blender Author & 3D Educator

Top Teacher
Level: All Levels

Notes attribuées au cours

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

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

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

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

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

Transcription

1. Atelier de création de jeux : création d'ARPG procédural dans UE5: Avez-vous déjà rêvé de créer votre propre donjon, comme le légendaire Diablo, comme le légendaire Diablo, avec des ennemis implacables et un épiclude, en utilisant le pouvoir Eh bien, vous pouvez maintenant participer à l'atelier de conception de jeux, à la réalisation de cinq, à la création d'un donjon procédural et à un jeu d'action. Car le jeu de vos rêves peut devenir réalité. Dans ce cours, vous apprendrez à concevoir un GPL d'action entièrement fonctionnel l'aide de plans avancés tels que la génération dynamique de tangentes, l'IA personnalisée, coffres interactifs et les systèmes d'inventaire Vous avez tout ce dont vous avez besoin pour mettre en lumière votre vision. Bonjour, je suis Marcos, et j' ai fait équipe avec Dudo pour proposer ce Notre objectif est de créer un système qui génère des niveaux de manière dynamique , avec des murs, des accessoires et un éclairage personnalisés, tout en ajoutant des fonctionnalités de jeu pour donner vie à votre jeu Nous développerons un générateur de niveaux qui utilise un algorithme de retour en arrière personnalisé pour créer la structure du dangon Cela jettera les bases de nos niveaux procéduraux, en veillant à ce que sa jouabilité soit fraîche et unique Ensuite, nous allons construire des salles et diviser le niveau en différentes catégories. Cela nous permettra d' appliquer différentes textures, matériaux et accessoires afin améliorer la variété visuelle du dangon Nous ajouterons des accessoires lumineux qui apparaîtront automatiquement dans le donjon pour ajouter de l' ambiance au niveau au fur et à mesure qu' il est L'une des fonctionnalités les plus intéressantes que nous aborderons est la mécanique de l' ascenseur, qui permet d'atteindre des niveaux infinis au fur et à mesure que les joueurs avancent. L'ascenseur fera apparaître un nouveau générateur pour créer le niveau suivant, garantissant une exploration infinie Nous ajouterons également des brouillons, des coffres et un coffre de quête pour débloquer l'ascenseur et passer à l'étage suivant Pour rendre l'environnement plus vivant, nous introduirons des éléments physiques ou des interactions dynamiques avec des accessoires et des objets dans le monde du jeu En ce qui concerne la conception de l'interface utilisateur, nous allons implémenter un minimum à trois D pour aider les joueurs à naviguer dans le donjon De plus, nous allons créer un système d'interface utilisateur de base pour afficher la santé, système d'inventaire et divers éléments tels que l'augmentation de la vitesse, santé et les potions, tout sous forme de malas via des tableaux de données Pour le combat, nous allons créer un personnage doté de deux capacités principales une attaque de mai qui renverse les ennemis et les objets, et une attaque pour infliger des barrages à distance. Nous allons également implémenter un système d'intelligence artificielle dans lequel ennemis patrouilleront, tireront sur le joueur lorsqu'ils sont à portée et se repositionneront pour conserver un avantage tactique Cela augmente encore la difficulté. Nous allons concevoir un bâtiment ennemi qui tirera sur le joueur. Les ennemis IA garderont cette structure, et lorsqu'elle sera détruite, l' IA paniquera ou attaquera agressivement le joueur, ajoutant ainsi un élément stratégique au donjon Dans ce cours, vous aurez accès à un pack de ressources complet qui améliorera votre conception de jeu Il inclut 21 textures d'interface utilisateur personnalisées, 133 cartes de tracture pour la texturation des actifs afin de créer 53 matériaux et instances de matériaux Le pack contient 63 % de dégâts de tuiles répartis dans cinq styles de donjons préceptes : pierre, pavés moussus, bois, brique et une chambre à thème plus sombre, vous aidant à les intégrer parfaitement à répartis dans cinq styles de donjons préceptes : pierre, pavés moussus, bois, brique et une chambre à thème plus sombre, vous aidant à les intégrer parfaitement à votre projet. Ces codes vous guideront étape par étape dans la création d'un système de donjon entièrement fonctionnel à l'aide du moteur 5 Plongeons-nous dans le vif du sujet et commençons à créer notre propre monde généré de manière procédurale 2. Les bases du jeu: Bonjour et bienvenue sur Game Design Workshop et Real Engine, cinq cours de création de RPG d'action procéduraux dans les donjons Expliquons en quoi consiste tout ce cours. Pour ce faire, je vais démontrer, tout d' abord, mes formidables compétences en dessin en peinture, et nous allons le faire souvent pendant le cours. Maintenant, ce que nous allons créer est essentiellement un menu principal. Cela va générer un labyrinthe. Mais pour ce qui est de la façon dont cela va fonctionner, nous allons en discuter un peu plus en détail. Mais pour l'instant, cela va créer des chemins semblables à des serpents qui, à un moment ou à un autre, s'achèveront. Ils ne seront pas en mesure d'en créer plus, alors ils essaieront de choisir une autre voie et créer un autre chemin de serpent qui finira par suivre, puis de plus en plus. Nous allons le faire à partir d'un point de départ, et nous allons aller dans n'importe quelle direction sur une grille fictive. Si cela a du sens. Ensuite, nous allons créer notre propre personnage, qui sera attaqué dans un centre commercial. Faisons un coup de poing ici. Mon attaque ML et une fusillade. Bien entendu, le coarceur que nous pourrons déplacer dans toutes les directions, cela est donné De plus, nous allons avoir un petit inventaire , par exemple, si c'est notre écran, un inventaire va apparaître ici, notre personnage pourra récupérer des objets en cliquant dessus ou ouvrir des en cliquant dessus ou ouvrir coffres où des objets seront déposés. Oui, c'est un jeu d'échecs génial. Comme je vous l'ai dit, d'excellentes compétences en dessin. Oui. Enfin, ce que nous allons faire, c'est créer un personnage IA. Mettons deux cornes sur ce personnage qui aura une attaque à distance Ce ne sera pas un pistolet, ce sera un peu comme un poignard. Et nous allons également consacrer cela à la création du labyrinthe, en gros Nous allons créer quelque chose comme une tour qui vous tire dessus lorsque vous êtes à portée, quelque chose comme ça. Et en gros, ce serait le cas. L'IA gardera la tour et sera en patrouille. Lorsque la tour est détruite, elle fait le tour du labyrinthe en mode panique. Et lorsque vous êtes à portée de l'IA, elle vous tire dessus, et quand vous n'êtes pas dans le champ de tir, elles sont agro Ils essaieront de trouver un endroit où tirer. En gros, une IA très simple. Nous allons utiliser des arbres de navigation et d'intelligence artificielle pour les démontrer. Mais pour être honnête, cette ampleur de l'IA et la façon dont nous l'avons réalisée seront procédurales, car je n'ai pas ajouté notre labyrinthe Le labyrinthe lorsque nous atteignons la fin, disons que c'est la fin Nous allons monter avec un ascenseur et créer un autre labyrinthe. Ni plus petit, ni plus grand que le précédent. Une taille plus petite n'aurait aucun sens. Mais oui, ça le serait. Nous allons créer un autre labyrinthe. Et comme c'est infini, et comme nous le faisons, nous allons utiliser un volume de navigation qui va engloutir nos labyrinthes, ce qui ne le rend pas illimité, car il car Mais nous allons l'utiliser pour démontrer le modèle de navigation que l'IA pense que ce ne serait pas optimal. Ce serait pour notre jeu. Cela créera un cadre, mais c'est bon. Je pense que c'est un bon point de départ pour les explications. Y a-t-il une œuvre d'art, une forme d'art, comme vous pouvez le voir. Nous allons passer à la suivante. Au revoir. Commençons par créer un nouveau niveau pour Hostile Game, car ce niveau est rempli de nos ressources de prévisualisation. Maintenant, si vous êtes nouveau, quelques explications, nous pouvons trouver les actifs que nous avons peuplés le monde entier ici dans la boîte de présentation Si je sélectionne un actif dans le monde, cela me redirigera vers cet actif dans le plan. Dans le plan, nous pouvons voir ce que avons placé à l' intérieur de notre monde. Allons créer un nouveau niveau. Passons aux cartes des dossiers, cliquez avec le bouton droit de la souris et sélectionnons le niveau. Cela créera pour nous un nouvel environnement qui sera vide. Je vais l'appeler Game Level. Je vais appuyer sur Entrée. Maintenant, vous pouvez voir qu'il y a un petit astérisque à côté de son icône Cet astérisque signifie que cet actif n'est pas enregistré. Nous pouvons également le voir si je change de dossier, par exemple si j'ai oublié que je n'ai pas enregistré cet actif. Nous pouvons voir ici qu' il est indiqué qu'il s'agit d'un actif non sauvegardé. Nous corrigeons ce problème, appuyons sur cette icône, et le menu du contenu sécurisé apparaîtra et je vais enregistrer la ressource. raccourci rapide serait le contrôle enregistré, et c'est le raccourci pour tout enregistrer. Comme nous pouvons le voir dans le dossier, Dave all. Retournez au navigateur de contenu, revenez aux cartes, et ouvrons notre niveau. Maintenant, nous pouvons voir que ce niveau est vide dans le plan. Il n'y a rien dedans. Je voulais apporter quelque chose, mais je ne vais pas utiliser nos numéros pour le moment. Je vais juste cliquer sur ce bouton ici et appuyer sur Ajoutons l'éclairage directionnel, afin que nous puissions faire les choses. Nous ne pouvons rien voir parce qu' il n'y a rien à voir. Je vais également ajouter une forme et sélectionner un tube. Maintenant, nous pouvons voir qu'il y a l'éclairage et le tube. Nous pouvons également le voir dans notre fenêtre d'affichage. Mixez l'appareil photo. Et pour ceux qui ne connaissent pas Unreal Engine, je l'ai fait en appuyant sur le bouton droit de la souris et en me déplaçant avec WA et D, maintenant le clic droit enfoncé U et A déplacent la caméra de haut en bas, et la souris tourne comme dans un jeu. Les battes sont plus techniques. Comme on peut le voir lorsque j'ai sélectionné le cube ou l'éclairage, la lumière directionnelle. Nous pouvons voir que les détails du panneau ont changé ici. Voici les détails de tout ce que nous avons sélectionné. À côté, il y a un autre onglet appelé Paramètres du monde. Si vous n'avez pas cet onglet, vous pouvez le trouver dans les paramètres de Windows WD. Il peut apparaître n'importe où, mais vous pouvez l'ancrer dans la fenêtre d'affichage où vous le souhaitez Dans les paramètres Word, nous pouvons trouver de nombreuses informations sur les règles spécifiques de notre niveau. Certaines règles spécifiques le définissent dans les réglages muraux. Nous ne nous occuperons pas de tout pour le moment, mais nous allons vérifier les règles d'ambiance du jeu, qui sont, disons, informations les plus importantes Lorsque nous appuyons sur Play, c'est l'une des premières choses qui est chargée selon le comportement prédéterminé. Et qu'est-ce que je veux dire par comportement prédéterminé ? Si nous appuyons sur Play, vous pouvez voir que le plan est rempli de bien d'autres éléments Ce sont des éléments nécessaires pour exécuter le jeu. heure actuelle, nous avons le cube et l'éclairage, et par défaut, nous pouvons contrôler avec la souris, nous pouvons nous déplacer et survoler Pour modifier tout ce comportement, nous devons modifier les paramètres. Il existe différentes manières de modifier ce comportement, et pour nous, nous allons exploiter la manière de le modifier via le mode jeu Maintenant, pour y parvenir, nous allons utiliser un modèle et une grande partie de notre programmation. Nous allons donc retourner dans le tiroir de contenu et sélectionner Ajouter et ajouter une fonctionnalité ou un pack de contenu. C'est une façon d'ajouter à vos projets ces packs de contenu, les modèles proposés par Areal, si vous ne l'avez pas fait lors de la création du projet Vous pouvez ajouter le Blueprint, le Seplus plus ou le pack de contenu de démarrage Nous allons accéder à Blueprint et sélectionner le haut vers le bas. Je vais lancer un autre projet. Ce sera instantané pour moi. Ce n'est peut-être pas pour toi. J'ai rechargé ces informations car je les ai déjà téléchargées dans d'autres projets Maintenant, une fois le téléchargement terminé, le navigateur de contenu s'ouvre dans une nouvelle fenêtre et nous pouvons fermer la fenêtre précédente. Je vais le faire en plein écran. Et voyons les nouveautés ajoutées. Il a ajouté le dossier des personnages, qui contient les pièces d'argent pour les animations. Je pense que c'est un Many et un Qin, outils de prototypage de certains niveaux et un dossier de curseur pour le clic du haut vers le bas Le dossier du haut vers le bas lui-même, qui contient une carte nécessitant tout cela pour fonctionner. Et dans le dossier des plans, nous pouvons voir les trois classes que nous allons en fait beaucoup utiliser J'utilise beaucoup les classes de mots, et pour ceux qui débutent dans la programmation, cela peut être source de confusion. Pour l'instant, vous pouvez également considérer les cours comme des modèles de programmes, comme To be more specific plates for create objets in our world, and everything in our world is a object. Par exemple, nous avons trois classes de plans spécifiques ici Nous avons la classe de personnage, la classe de manette et la classe de jeu. Chacun d'eux est reprogrammé avec un comportement spécifique, ce qui en fait une classe. Et dans notre cas actuel, nous utilisons l'ancienne classe du jeu, qui est responsable. Je vais fermer cette fenêtre qui est responsable , comme on peut le voir dans les paramètres du monde, l'étang de classe, du contrôleur, du hud, de bien d'autres choses Maintenant, nous allons passer à gamed override et sélectionner le jeu du haut vers le bas. Comme vous pouvez le constater, les informations présentées ici se rapprochent déjà de ce que nous voulions. Si j'appuie sur Play, nous pouvons voir le personnage du haut vers le bas tomber à l'infini Si je supprime la classe de pion par défaut utilise aucune et que j'appuie sur Play, le personnage disparaît et la caméra reste là où nous l'avions initialement placée Cela signifie que, compte tenu du comportement prédéterminé du mode de jeu, lorsque nous avons un pion de classe par défaut, il apparaît toujours au début du jeu lorsque nous appuyons sur Play Plus d'informations sur le mode de jeu sont qu'il fonctionne par niveau. Cela signifie qu'il est contenu à l'intérieur. Il contient des règles pour ce niveau, mais nous pouvons l'utiliser dans de nombreux niveaux car nous souhaiterons peut-être avoir les mêmes règles ou plusieurs niveaux. Nous pouvons avoir autant de modes de jeu que nous le souhaitons dans notre jeu, et nous pouvons toujours les remplacer ici. J'utilise le mot override parce que nous pouvons définir un mode gay par défaut, c'était le cas dans les paramètres du projet lorsque nous avons défini le mode gay Nous pouvons constater que nous pouvons en mettre une par défaut que toutes nos cartes utiliseront. Oh, Mode est une classe un peu compliquée. Il est également responsable du mode multijoueur, et je peux contenir de nombreuses règles spéciales. La capacité qu'il a de redémarrer à chaque niveau. Permettez-moi de vous donner un exemple de peinture, pour la rendre plus douloureuse visuellement. Oh. Si c'est notre niveau, lorsque nous le chargeons, nous commençons par le mode jeu. Pourquoi je dis que nous commençons par le mode jeu ? Parce que le mode de jeu s'exécute avant l'ouverture du niveau. Comment pouvons-nous le voir clairement ? Le niveau lui-même possède un autre plan spécifique autonome, appelé plan de niveau Nous pouvons le démontrer en allant au projet, en suivant ce vent ici, et en élaborant un plan de niveau ouvert Maintenant, pour ceux qui sont nouveaux, il s'agit du graphique des événements qui fait partie du plan Nous expliquerons plus de choses un peu plus tard. Ce que je vais faire, c'est commencer à jouer. Ils nivellent le plan. Cela signifie qu'au début du niveau, il faut l' imprimer et l'encoder sur la console contenant ces lettres. Je vais copier cette chaîne. Je vais accéder au navigateur de contenu. Passez au mode Plan inférieur, mode. S'il s'ouvre ainsi, cela se produit généralement parce qu' il ne contient aucun code Il nous montre donc les variables par défaut du plan Le tube par défaut. Je vais compiler, ouvrir le plan complet Je vais cliquer avec le bouton droit sur le graphique des événements et taper le texte suivant. Je vais coller. Tirages. Je vais corriger ce moule A Gain. Plan directeur. Compilez, et je vais appuyer sur Play. Comme vous pouvez le voir, il a d' abord imprimé un mode de jeu et au-dessus, le plan de niveau Cela signifie que l'ordre dans lequel cela s'exécute est d'abord le mode de jeu, qui contient toutes les informations. Nous avons parlé de la manette du joueur, du téléphone du joueur, de tout le reste, puis il a exécuté un plan de niveau contenu Certaines personnes pourraient se demander pourquoi nous utilisons ceci et pourquoi ne l' utilisons-nous pas ? Dans le codage, il y a quelque chose qui fait référence. Cela signifie que je veux faire quelque chose, ou quelque chose d'autre pour faire quelque chose pour moi. En général, si je veux communiquer quelque chose avec quelque chose d'autre, comme le jeu, je communique avec un plan de niveau. J'ai besoin d'une référence. Il y a une référence. Il me faut donc une référence pour toi. L'un des principes, l'un des principes, en fait, mais l'une des façons dont nous pensons lorsque nous programmons quelque chose concerne les références. Comment puis-je obtenir une référence à ceci et comment puis-je obtenir une référence à cela ? Il existe de nombreuses règles. Je ne vais pas entrer dans les détails, mais c'est l'une des façons dont nous choisissons ce que nous voulons utiliser. Il y a des décisions et des règles beaucoup plus complexes qui doivent être prises en compte. Mais, par exemple, une chose importante est la référence pour un débutant, c'est une chose à laquelle il doit s'habituer. Oh, pourquoi utilisons-nous également le mode jeu et comment allons-nous l'utiliser ? Allons-nous démontrer la capacité du mode jeu à redémarrer tout seul. Cela signifie que lorsque nous chargeons le niveau, nous voulons déclencher des événements spécifiques qui se produisent. Et lorsque nous rechargeons le niveau, oubliez-les et rechargez-les depuis le début. Dans un exemple plus précis, nous allons utiliser le mode jeu pour créer le menu principal. Créons une nouvelle diapositive. Ce que nous allons créer, c'est un programme qui dit : «  Fais-moi accéder au menu principal, le joueur appuie sur, ou démarre, puis démarre le jeu, continue avec ce que nous avons fait ou quitte le jeu ». Mais une fois le jeu terminé, nous voulons le recharger Ce que nous allons faire, c'est ouvrir à nouveau le niveau d'ici. Ainsi, lorsque nous ouvrons à nouveau l'étiquette, nous voulons afficher à nouveau le menu principal. Mais nous allons utiliser le mode jeu pour héberger cela. Je pense que c'est suffisant pour la théorie. Pour celui-ci, je vous verrai dans le prochain avec plus d'action. Au revoir. 3. Créer le menu principal: Bonjour et bienvenue dans l'atelier de conception de jeux et le moteur Engine Five création de PZ d'action procédurale sur Dans la leçon précédente, nous avons commencé par créer notre carte dans le dossier maps. Ensuite, nous avons continué à ajouter le modèle pour les personnages du haut vers le bas, et nous avons modifié le mode de jeu dans nos paramètres muraux. Nous avons également ajouté un cube et une lumière directionnelle, et nous avons démontré la capacité, non pas la capacité, mais l'ordre des opérations selon lequel le mode de jeu s'exécute en premier, puis le niveau de jeu démarre lorsque nous commençons notre niveau. Maintenant, je vais supprimer ces chaînes, et aussi, je vais supprimer le cube et le feu de direction, et je vais tout enregistrer. Dans cette leçon, nous allons créer le menu principal du widget correspondant à notre jeu en utilisant un plan de widget Maintenant, je vais aller dans Contenu, cliquer avec le bouton droit de la souris, créer un nouveau dossier et le nommer U. Dans ce dossier, je vais cliquer avec le bouton droit de la Interface utilisateur et sélectionnez le plan du widget. Maintenant, qu'est-ce qu'un plan de widget ? Un plan de widget est un moyen que Real nous propose de créer des interfaces utilisateur Je vais sélectionner le widget utilisateur de classe commun. Il existe de nombreux autres cours pour des choses très spécifiques à faire. Nous avons besoin d'un widget utilisateur. Je vais appeler ce groupe de travail. Menu principal. Et je vais l'ouvrir. Avant de commencer à programmer le widget et le menu principal. Parlons un peu des widgets pour ceux qui sont nouveaux. Tout d'abord, nous pouvons remarquer que ce graphique est légèrement différent de ceux que nous avons vus sur le du mode jeu ou sur le plan des niveaux de jeu La raison en est que nous sommes sur l' onglet concepteur du widget. Il existe également une boîte graphique qui semble plus familière aux autres graphiques. La raison en est que dans la boîte graphique, nous programmons le widget, tandis que dans la boîte de conception, nous nous occupons de la partie visuelle du widget. Le widget apparaît à l'écran. Pour ce faire, nous utilisons des éléments de notre palette et nous leur donnons l'apparence que nous voulons leur donner. Oh. Encore une chose, lorsque nous ajoutons quelque chose sur le côté visuel du widget, nous pouvons le voir ici dans la hiérarchie. Commençons maintenant par ajouter un canevas. Je vais le déposer ici en dragon, ou je pourrais simplement le faire glisser et le déposer ici et ce sera pareil. Description de ce que fait le Cvass. Vous pouvez le trouver en le survolant et en le voyant dans la description d'Opta Mais en gros, c'est un élément qui indique où se trouvent nos widgets dans l'espace de notre écran. Vous pouvez avoir une cavasse plus petite que votre écran. Vous pouvez avoir des toiles à l'intérieur des cavasses, il n'est pas recommandé d'en avoir trop. Oh, démontrons-le. Nous allons apporter un bouton ici. Placez-le à l'intérieur de la toile. Je peux lui dire où je veux qu'il soit sur la toile ou quelle taille. Et selon que Canvas est en fait un canevas en plein écran ou partiellement, par exemple, nous pouvons avoir un canevas dans un petit widget dans un coin ou quelque chose comme par exemple, nous pouvons avoir un canevas dans un petit widget dans un coin ou quelque chose Il lui indique où se baser sur cette convas. Maintenant, si j'avais un deuxième bogue de boutons, cela compliquerait Supposons, par exemple, que je veuille ce bouton exactement en dessous de ce bouton, et qu'il soit difficile de voir ces choses Mais il existe d'autres outils, comme par exemple une boîte verticale ou une boîte horizontale le moment, nous allons avoir besoin d'une boîte verticale. Et à l'intérieur de cette boîte verticale, j'ai supprimé les autres boutons. J'en ai peut-être besoin. Je vais à nouveau apporter une boîte verticale et tout faire. Maintenant, je peux faire glisser ces ptons dans cette boîte verticale. Et comment ces boutons sont alignés verticalement dans cette boîte. Maintenant, la taille est déterminée par la boîte. Il existe de nombreuses façons de modifier la taille et tout le reste. Nous devons passer par une expérience d' interface utilisateur complète en ce moment. Ce que nous allons faire, c'est placer la boîte où nous le voulons et la dimensionner comme nous le voulons. Pour ce faire, je garderai la même place dans n'importe quelle résolution parce que c'est le e ici. Nous pouvons toujours le compenser en fonction de cette ancre. Qu'est-ce qu'une ancre ? Il indique au widget où il doit être placé en fonction de cette ancre, mais en fonction de ce point. Donc, si je change de résolution maintenant, elle essaie de conserver cette place, mais lorsque je passe à des résolutions peu orthodoxes, elle la perd en quelque sorte Cela peut être réparé en plaçant l'ancre autour, et il essaiera également de la garder. Encore une fois, il n'est pas facile d'observer toutes ces choses, mais il existe d'autres moyens de le faire Par exemple, si je sélectionne la case verticale et que je passe au panneau détaillé. Lorsque je sélectionne tout, encore une fois, nous avons un panneau détaillé, comme nous l'avions fait pour le plan, le plan de sortie du jeu, comme nous l'avons fait pour le niveau, lorsque nous sélectionnons quelque chose, et nous passons à chaque Oh, lorsque je sélectionne le panneau de détails de la boîte verticale, je peux voir qu'il y a une ancre. Commençons par l'option d'ancrage. Oh. Vous pouvez voir qu'il existe des positions d'ancrage prédéfinies. Ce que nous allons choisir, c'est celui du milieu. Nous voulons l'ancrer au milieu de l'écran. Mais comme vous l'avez vu, cela n'a pas déplacé notre widget au milieu de l'écran. Essayez de dire où il se trouvait. La raison en est qu'elle est compensée par ces valeurs ici, position x et la position y. Si je choisis cette valeur par défaut, nous allons revenir à son point de pivot d'origine. Maintenant, qu'est-ce qu'un point pivot ? Cela signifie que cette case n'est pas au centre, par exemple , mais que le point sur lequel nous manipulons sa taille commence dans ce coin Maintenant, si je définis une taille spécifique, comme 500 par 300, peut-être 300 ou 200. Eh bien, nous voulons des boutons longs par exemple. On peut dire que le décalage de position x serait inférieur à 50. Et la position y serait -100. Il est maintenant positionné au milieu parce que nous le compensons en fonction de ces valeurs. Mais que se passerait-il si je voulais modifier la taille de mon widget ? Maintenant, ce n'est plus le cas, je dois refaire des maths. Ne plus refaire toutes ces actions. On pourrait dire que la position n'est pas décalée, tout d'abord, recommandez l'alignement, qui est une valeur de 0-1, il peut en fait passer à négatif et au-dessus L'alignement est de 0,5 et 0,5. Et cela place le widget en son centre. Alignez mon widget sur un pourcentage sur une valeur de 0 à 1 par rapport à ses axes x et y. Si je change la taille, vous verrez qu'elle reste toujours au milieu. Revenons à 100100200. Oh, compilez et enregistrez. Maintenant, nous avons notre widget au milieu de notre écran. Mais nos boutons ne sont pas vraiment beaux tels qu'ils sont. L'un en dessous de l'autre, même dans un menu minimal, cela ne devrait pas se produire. Ce que nous allons faire, c' est sélectionner les deux boutons, perdre l'option. Et dans l'alignement vertical, nous allons choisir l'option, entrer l'alignement, entrer l' alignement vertical. Maintenant, vous pouvez voir que nos boutons ont une bien meilleure apparence. Une solution intéressante serait que lorsque nous sélectionnons les deux boutons, nous maintenons ces paramètres communs, comme ils ont tous les deux ces paramètres, il en va de même pour les deux. Si je sélectionne avec le contrôle sélectionné sur une case verticale, vous pouvez voir ces paramètres disparaître car le réglage de l'usure doit être basé sur quelque chose. Comme vous pouvez le voir, la fente verticale se trouve au-dessus d'ici, et lorsque je sélectionne la case verticale, la fente du panneau Cvas se trouve ici Il s'agit donc de définir la position à l'intérieur du Cvass où ici, nous définissons la position à l'intérieur de la boîte verticale, la position d'alignement ou autre. Maintenant, il existe de nombreuses autres façons de le faire. Nous aurions pu mettre des entretoises entre ces boutons. C'en est une autre. Démontrons cela en fait. Disons que les deux boutons sont des boutons de commande et sélectionnons les deux verticalement. Maintenant, deux gros boutons. Je les veux plus petits, donc je pourrais utiliser des bases. Mets-le ici entre les deux boutons, je vais en mettre un autre au-dessus de l'autre bouton. Nous allons placer l'un en dessous de l'autre bouton. Maintenant, si vous avez remarqué une autre véritable pointe de traction que nous pouvons voir, lorsque je place le bouton ici, elle place cette ligne, cette ligne bleue ici avec un petit R dans le coin qui pointe vers le haut. Cela signifie l'ajouter à la hiérarchie ci-dessus. Par exemple, la hiérarchie ci-dessus se trouve actuellement dans la boîte verticale. Si j'essaie de l'ajouter ici et qu'il place une flèche en dessous, il l'ajoute à la hiérarchie ci-dessous, au-dessus de l'espaceur Mais si j'ai la flèche vers le haut, cela l'ajouterait à la hiérarchie ci-dessus, le panneau Canvas. Essayons ça. Nous allons le mettre ici, le publier. Comme vous pouvez le constater, il a été ajouté dans la hiérarchie du Canvas. Si je mesure ici, il le placera dans la case verticale par défaut à la fin Je vais sélectionner les entretoises, et je vais sélectionner. Comme vous pouvez le constater, cela a décollé les bases, et maintenant les boutons sont également un peu plus beaux que lorsqu'ils sont placés les uns au-dessus des autres. Avec ce réglage, nous pouvons avoir tout à ressentir, et cela fonctionne de la même manière. Nous n'avons pas à nous soucier des alignements verticaux ou autres. Maintenant, ces boutons devraient contenir du texte Lorsque nous ajoutons des éléments dans la case verticale, nous avons ajouté 12, trois, quatre ou cinq éléments. Mais lorsque j'ajoute quelque chose à un bouton, passons au bouton. Donc, si j'ajoute quelque chose sur le bouton, comme un texte, et que je vais ajouter, disons que je veux deux textes. Je ne peux pas le faire parce que les boutons n'ont qu'un seul enfant. Cela signifie qu'ils ne peuvent avoir qu'une seule chose à l'intérieur. Mais il existe un moyen de contourner ce problème. Vous pouvez avoir une chose qui contient beaucoup de choses. Par exemple, vous pouvez avoir un bouton contenant une boîte verticale. Comme on peut le voir, la boîte verticale peut contenir beaucoup de choses. C'est ce qu'on appelle des enfants, et combien d'enfants peut avoir un élément ? Eh bien, je vais copier ce bloc de texte, et je vais le coller dans l'autre bouton. Et je vais passer au premier bloc de texte, modifier le texte dans ses détails. Nomme-le. Et allez également sur l'autre bouton, et comme bloc de texte deux. Je pense que c'est suffisant pour cette leçon. Je te verrai le prochain. Au revoir. 4. Ajouter le menu principal à la fenêtre et aux fonctionnalités de quitter: Bonjour et bienvenue sur Game Design Workshop, je suis un vrai cours de création d'ARPG d' action Lensing Five Procedural Dungeon ARPG d' action Dans le précédent, nous avons terminé avec les visuels du menu principal. Dans celui-ci, commençons à programmer certaines choses pour que nous puissions voir ce menu principal dans notre jeu. Maintenant, nous allons passer en mode jeu. Si vous ne le trouvez pas, il dans la zone de contenu de l'interface utilisateur des dossiers, et non, désolé, dans le dossier de haut en bas, les plans pliés, et le mode jeu est ici Des plans du haut vers le bas, Gamede. Non, dans notre mode de jeu, nous allons faire glisser un câble. Maintenant, expliquons quelques points à propos de ce câble ici. Nous l'avons déjà fait avec Print string, mais nous n'en avons rien dit. Donc, voici la ligne d'exécution des plans En bref, cela signifie que cette exécution contrôle le flux de la logique. Lorsqu'un événement se déclenche, il suit cette ligne d'exécution pour déclencher les actions qui seront effectuées dans un certain ordre. En gros, il dicte l' ordre dans lequel les choses doivent se passer. Alors, démontrons cela. Si je mets une empreinte. Et pour la chaîne, je vais en mettre une, puis les mettre, je vais les copier-coller. Mettez une chaîne d'impression deux. Je passe à la carte générale, même niveau. Ils ont sélectionné et jouent. Oh, je peux en voir un, deux, il a d'abord imprimé un, puis deux. Maintenant, il y a des moments particuliers cela ne se produit pas exactement lorsque nous jouons avec des retards, lorsque nous déclenchons d'autres événements qui entraînent des retards, ou lorsqu'il y a plusieurs raisons pour lesquelles cela ne se produit pas dans l'ordre, mais elles sont également toutes très spécifiques. Démontrons-le à l' aide d'un exemple. Si j'organise un événement personnalisé. Cela signifie qu'un événement qui m'est propre, comme Begin Play, est un événement prescrit. Ça fait mal quand le plan est lancé. Lorsque j'utilise un événement personnalisé, il s'agit d'un événement que j'ai créé Je dois donc l'appeler. Appelons cet événement personnalisé un test. Eh bien, je vais mettre une chaîne d'impression de deux ici. Je vais le remplacer par trois en fait. Je vais appeler mon événement personnalisé ici. Maintenant, si je connecte les deux, jouons, tout ira bien, un, deux, trois. Mais si je mets un délai ici, disons de 2 secondes ou 0,2 seconde, je peux en voir un, trois, deux. Cela s'est déclenché ici, mais comme il y a un retard, il attendra le montant, mais cela continuera. Le fait d'avoir un retard ne l'arrêtera pas. Mais maintenant, nous allons entrer une limite de quatre boucles. Si j'ai une boucle à quatre ici, qu'est-ce qu'une boucle à quatre ? Allons-y. Oh, c'est un nœud de programmation qui commence par un index et se termine par un autre index, et il le fait jusqu'à ce qu'il passe en revue tous les index. Pour le corps de la boucle, je vais connecter ici, et en fait, je vais le faire à partir de deux, disons que cela ferait cinq. Et allez appuyer sur Play. Voir un, deux, trois, 45. Pour ce nœud, par exemple, il a attendu de terminer ce nœud, puis il est passé à l'autre ligne. Quoi qu'il en soit, grâce à la pratique et à l' exploration du moteur et de la programmation, les gens apprendront à mieux comprendre ces choses. Maintenant, supprimons tout cela car nous n' en aurons pas besoin. Nous n'aurons pas besoin d'un événement test. Et commençons par intégrer notre widget dans notre fenêtre d'affichage. ce que je vais faire. En fait, nous avons besoin d'un événement personnalisé, donc d'un événement, et nous allons l'appeler afficher le menu principal. Lorsque nous démarrons le jeu, nous voulons afficher le menu. Maintenant, lorsque nous double-cliquons dessus, cela nous mènera à l'événement que nous avons créé. Ou si nous avions une fonction ici, nous parlerons des fonctions plus tard, cela nous ouvrirait la fonction. Maintenant, afficher le menu principal, nous allons créer Parce que pour faire connaître notre widget au monde, nous devons le créer d'une manière ou d'une autre. Nous devons l'avoir en tant qu'entité, et la classe que nous allons choisir pour le widget sera le menu principal du WG Maintenant, en tant que joueur propriétaire, nous allons utiliser la manette du joueur. Et ce que signifie ce joueur propriétaire. En gros, si nous avions un co-jeu local, peut-être, et qu'il y a aussi certaines utilisations en multijoueur vous pouvez montrer des widgets aux autres joueurs et d'autres choses, peut-être. Il indique au moteur à qui appartient ce widget. Nous avons donc créé le widget. Maintenant, si je presse de l'argile, rien ne se passera. Nous ne voyons pas le widget. La raison en est que lorsque nous créons le widget, nous en avons simplement fait une variante, créé une petite cellule contenant les informations de ce widget Nous n'avons pas dit au moteur de faire quelque chose avec ces données. La valeur de retour est donc le widget que nous avons créé. Si nous survolons les pins d'un nœud, nous pouvons voir plus de détails à leur sujet. Donc, si vous voulez faire référence à un objet du menu principal, nous avons créé un widget de menu principal, qui est un objet. Comme nous l'avons déjà dit, tout est objet. Et nous y avons une référence. Ce que nous allons faire, c'est promouvoir cette variable et l'appeler menu principal W G. Maintenant, nous avons nos données, nous avons notre widget, nous les avons stockées dans cette variable, et nous voulons dire à ces données qu'elles se produiront. Je vais l'importer à partir des variables d'ici parce que lorsque nous créons une variable, elle est stockée ici. Je vais apporter cette variable et dire ajouter à la fenêtre d'affichage. Il s'agit de la commande permettant d'ajouter un widget dans votre fenêtre d'affichage. Eh bien, je vais le connecter ici. Maintenant, je vais appuyer sur A, et ça crée un widget. J'appuie sur les boutons. Rien ne se passe encore. Mais nous allons le programmer dès maintenant. Et la première chose que nous allons programmer , c'est le bouton « quid ». Passons donc à notre mode de jeu de haut en bas, menu principal du Widget, et passons au bouton Quid. Maintenant, si nous choisissons ce bouton, nous voulons faire quelque chose avec ce bouton. Nous devons donc déterminer son comportement. Pour ce faire, il faut cliquer sur le bouton est variable sur les détails. Je vais cliquer dessus ici et nommer ce bouton également Quitter. T. Maintenant, je vais aller plus loin dans les détails, et cette liste d' événements est apparue. Si je déclique la variable, elle disparaît. Si je clique sur la variable, elle apparaît. Cela ne signifie pas que je ne peux pas utiliser le bouton d'une autre manière. Il existe d'autres moyens de l' utiliser sans être une variable. Mais c'est ainsi que nous allons procéder maintenant, et c'est la méthode la plus courante. Nous allons choisir l'événement en un clic. Ou pressé. La différence entre les deux est que lorsque nous cliquons, nous devons cliquer sur le bouton et lorsque nous relâchons et que nous sommes toujours sur le bouton, il accepte cette action. Eh bien, pressée, au moment où nous cliquons, cela se produit. Non. Sur le bouton cliqué et. Nous allons simplement faire glisser une table et dire : Q. Nous n'allons pas spécifier de joueur. Nous n'allons pas spécifier les préférences de fermeture, nous allons simplement laisser les choses fermées, et nous n'allons pas ignorer les restrictions liées aux plateformes, car elles ne concernent aucune plateforme en particulier. Oh, nous allons compiler et enregistrer, puis passer à notre niveau de jeu et appuyer sur Play. Maintenant, si je clique sur Quitter, relâcher ne fonctionne pas, mais si je clique et que je le relâche pendant que je suis sur Quitter, c'est le jeu. Je pense que c'est un bon point de départ pour cette leçon. Nous vous verrons le prochain. Au revoir. 5. Mécanique de l'écran de chargement et apparition de labyrinthe: Bonjour et bienvenue dans le cours de création de Game Design Workshop Real sin Game Design Workshop Real sin five Procedural Dungeon Action A Psy. Auparavant, nous avions créé notre chaîne d'événements dès le début du jeu pour afficher notre menu principal, et nous avions créé un événement personnalisé qui créait le widget, stockait dans une variable et l'ajoutait à la fenêtre d'affichage Nous avons également programmé la fonctionnalité du bouton rapide en utilisant l'événement de conflit, et nous avons utilisé le nœud de jeu Qi. Maintenant, nous allons continuer avec fonctionnalité de démarrage du jeu. Mais avant de passer à la programmation du bouton de démarrage, expliquons un peu notre système. Nous allons donc avoir un générateur de labyrinthe. Cela va permettre de construire le niveau, comme bon lui semble. Nous allons créer des règles. Nous aurons quelques règles dans le générateur, sur la façon dont il fonctionnera lors de la création d'un niveau. Mais ce niveau a un début et une fin. Et cette fin engendrera un autre générateur. Il passera d'un générateur de masse à un autre, et il aura certaines règles et augmentera, etc. Ainsi, lorsque nous commençons une partie, lorsque nous appuyons sur Disons que nous avons le mode jeu, et à partir du mode jeu, nous faisons apparaître le menu principal Le menu principal peut pivoter ou démarrer. C'est ici que nous allons créer le générateur de labyrinthe Maintenant, pour ce générateur de labyrinthes, nous avons besoin d'une option qui soit la première, ou quelqu'un au milieu ou à la fin, c'est à ce moment-là que le joueur perd Il existe donc différentes manières de procéder. La façon dont nous allons procéder est d'exposer une variable. Cela expose une variable qui va entrer en ligne de compte. En gros, ce sera un lingot qui indiquera au labyrinthe si vous êtes le premier ou non, ce qui est une façon très simple de procéder Puisque nous allons donner naissance à cet acteur, et à tous les acteurs, nous allons le faire naître. Maintenant, ce que cette variable va faire pour nous pendant la première partie de notre programme. Cela se différenciera du labyrinthe selon lequel si vous êtes le premier, progressez dans le chargement Cela charge l'écran de chargement Nous aurons donc une barre pour le chargement remplissage pendant que le générateur construit le labyrinthe et qu'il sera prêt à fonctionner Non. Commençons. Commençons par créer notre modèle de générateur de labyrinthe. Nous allons passer au contenu. Nous allons aller dans le dossier de contenu, cliquer avec le bouton droit de la souris et créer un nouveau dossier. Je vais l'appeler blueprints. Maintenant, nous commençons à avoir beaucoup de dossiers, et en gros, nous pouvons simplement cliquer avec le bouton droit sur les plans et définir la couleur Je vais le mettre en bleu. Accédez à l'interface utilisateur du dossier, cliquez avec le bouton droit de la souris et définissez la couleur. Je vais le dire en bleu clair. Et vous aurez besoin de n'importe quel autre dossier rapidement. Peut-être un dossier du haut vers le bas. Je vais le mettre au vert. Et maintenant, je peux rapidement parcourir chaque dossier plié en fonction de ses couleurs Maintenant, dans les plans du dossier, nous allons cliquer avec le bouton droit de la souris et créer une nouvelle classe de plans. Maintenant, quand je fais cela, le menu apparaît qui m'indique voulez-vous créer une classe de modèles ou quelque chose à partir d'un modèle réellement proposé ? Si nous le pouvons, il y a un tas de classes qui peuvent être créées. Ce que nous voulons en ce moment, c'est un cours d'acteur. En gros, un acteur est un objet qui peut être placé ou créé dans le monde En gros, tout est un objet qui peut être placé, mais tout a des règles supplémentaires. L'acteur est le plus vide. Par exemple, le plan du personnage du haut vers le bas comporte, par exemple, une sphère de collision, et non une capsule de collision, je suis désolée, et un maillage statique et une direction étroite à un point Il possède une composante de mouvement, qui est propre à la classe de personnage. Quoi qu'il en soit, j'explique peut-être beaucoup de choses en ce moment. Nous allons donc créer un acteur. Et nous allons appeler cet acteur PP Mazen, tout enregistrer et ouvrir le générateur de labyrinthes Je vais le mettre ici. Maintenant, la première chose que nous allons faire est de créer une variable. Nous allons aller dans Variables et appuyer sur le symbole plus ici. Et cela en a déjà fait un lingot, car nous voulions savoir si le labyrinthe est la première pièce ou s'il continue à se Je vais lui donner le nom de Tu. Je vais l'appeler continuer. Ce n'est peut-être pas le meilleur nom, mais nous allons faire le travail dès maintenant. Maintenant, je vais retourner au menu principal et je vais aller sur le bouton de démarrage, qui est variable, nommez-le en bouton artistique. Et je vais appuyer sur le clic parce que nous l'avons fait sur le clic sur le clic Nous devrions le faire sur le bouton artistique. Également en cliquant. Maintenant, comment puis-je faire connaître cet acteur au monde ? Nous utilisons un nœud appelé stone actor de class. La classe que nous allons sélectionner pour être le générateur de labyrinthes Genre de labyrinthe BP. Maintenant, il y a une autre option ici. C'est ce qu'on appelle transformer. Ce qu'est la transformation, pour ceux qui sont nouveaux c'est un groupe d'informations, c'est une structure d'informations. Nous allons parler un peu plus de structure, mais il ne s'agit pas d'une variable structurée Il s'agit d'une variable unique qui contient trois vecteurs. Et si je clique dessus avec le bouton droit de la souris et que je le divise, nous pouvons voir qu'il contient l'emplacement de la transformation du son, la rotation de la transformation du spon et l'échelle de la transformation du spon, qui est de trois unités vectorielles L'un d'eux est un rotateur. Les deux autres ne sont que des vecteurs normaux. Cela signifie que nous voulons créer cet acteur, mais où voulons-nous le faire apparaître avec quelle rotation et à quelle échelle Pour l'instant, pas pour l'instant. En fait, nous allons le faire apparaître à l'endroit zéro, zéro, zéro du monde, zéro, x, zéro, y et zéro, avec la rotation normale et l'échelle par défaut Avant de dire que nous allions spécifier cela à ce générateur de labyrinthe, qu'il s'agisse d'un continu ou non Il existe de nombreuses façons de le faire. Je vais vous montrer rapidement deux méthodes. Nous allons passer à ce spawn et à partir de là, à partir de la valeur de retour, nous obtiendrons la référence réelle à ce que nous songeons à l'acteur que nous Je peux le faire à partir de là, ce que je peux faire, c'est continuer, comme vous pouvez le voir, la cible est l'acteur que nous venons de mettre continuer, comme vous pouvez le voir, en gage. Et la valeur, nous pouvons la définir sur oui ou non. Une autre façon de le faire, je vais le supprimer en accédant au générateur de labyrinthe et à la variable continue, c' est-à-dire qu'il s'agit d'une modification d'instance et qu'elle est exposée sur span Cela signifie que si je compile maintenant et que je sauvegarde, reviens au menu principal et je le sélectionne à nouveau car il ne se met pas à jour automatiquement Parfois c'est le cas. Je vais resélectionner ce générateur de labyrinthe. Maintenant, j'ai cette option ici. Je ne vais pas cocher cette case, oui, je vais la laisser non, et quand cette cuillère s'allumera, par défaut, elle sera désactivée Maintenant, pour nous, c'est désactivé par défaut et nous voulons le désactiver. Lorsque nous allons creuser le labyrinthe pour continuer, c'est là que nous allons nous lancer Donc, pour prouver que c'est nous qui l'avons créé, nous allons utiliser le générateur de labyrinthes Nous allons passer à son graphique des événements, et sur Begin Clay, nous allons apporter de la ficelle, et ils se lancent dans un labyrinthe Maintenant, avant de vivre ici, nous devrions faire une dernière chose. Nous sommes en train de gâcher le générateur de labyrinthe. Mais la prochaine chose que nous devrions faire est supprimer notre partie visuelle du widget. De notre point de vue. Et pour ce faire, nous allons retirer une pièce. Il s'agit du nœud utilisé pour cela. Et comme cible, nous allons avoir le soi. La cible dans les nœuds signifie généralement qui le fait. Si nous passons en mode jeu et à droite, retirez-les de la pièce. Nous allons voir que cela dépend du contexte, cela n'existe pas. Mais si je le supprime, nous le trouverons. Comme vous pouvez le voir, il appartient à la catégorie widget. Cela signifie donc qu'il fait quelque chose pour un widget. Je vais cliquer dessus. Et si je le connecte ici, rien ne se passera car le mode jeu n'est pas un widget, je vais juste déclencher une erreur ou rien. Mais si je connecte le menu principal du widget, que nous avons enregistré dans notre référence ici pour le supprimer de Parent, il saura que ce menu principal du widget, disons que nous en avons créé cinq, et que nous n'en avons enregistré qu'un. Celui-ci que nous avons enregistré en tant que variable sera supprimé du parent. Maintenant, je vais le supprimer et nous allons le laisser et le supprimer du parent. La cible elle-même. Nous sommes sur le widget, sur pile et sur sauvegarde, et jouons. Si vous pouvez appuyer sur Play, Maze Gen en a un et le widget est supprimé. Je pense que c'est un bon point d' arrêt pour celui-ci. Je te verrai le prochain. Au revoir. 6. Créer un écran de chargement: Bonjour et bienvenue dans l'atelier de conception de jeux organisé dans le cadre du cours de création de RPG d'action Procedural Dungeon Engine Five création de RPG d'action Dans la leçon précédente, nous avons ajouté que nous avions effectivement créé le générateur Blueprint Maze, et que nous l'avions créé via le bouton Démarrer de notre menu principal Nous avons également ajouté une variable dans le générateur de labyrinthe que nous avons exposée pour pouvoir définir lorsque nous faisons apparaître le labyrinthe. Cette variable était la variable continue, Cette variable était la variable continue, qui nous permettra de savoir s'il s'agit de la première pièce ou s' il s'agit d'une pièce qui continue Dans cette leçon, nous allons continuer à créer les premières étapes de la logique, qui consiste à afficher ou non l'écran de chargement. Je vais supprimer cet écran d'impression ici, sonner, et appuyer sur B et cliquer, sinon je pourrais cliquer avec le bouton droit de la souris et taper branche, et je vais apporter une branche. Maintenant, qu'est-ce qu'une succursale ? En gros, une branche est une déclaration I. C'est vrai ou faux selon une condition que nous avons appliquée. Et la condition ici serait la suivante. Donc, en gros, est-ce que c'est la suite du labyrinthe d'avant, ou est-ce la première pièce ? Maintenant, alors que nous avons créé le menu principal du mode jeu. Nous devons créer un autre widget pour faire l'écran de chargement, ce qui nous amène à créer un nouveau widget. Nous allons donc accéder au dossier de l'interface utilisateur. Je vais cliquer avec le bouton droit de la souris et accéder à Interface utilisateur, Widget Blueprints, et je vais sélectionner à nouveau le widget utilisateur Je vais appeler ce WG loading loading. Et je vais l'ouvrir. Je vais l'apporter ici, et je vais tout sauver. Maintenant, nous allons à nouveau utiliser un cavas. Et ce n'est pas un problème car dans tous les cas, le menu principal a été supprimé d'un parent lorsque nous démarrons. Avoir une autre convas n'est donc pas un problème. Ce n'est pas qu'avoir deux convases, trois ou quatre serait un gros problème Maintenant, je vais sélectionner une image, l' ajouter comme arrière-plan, et je vais l' ancrer en plein écran. Je vais annuler les compensations. Comme vous pouvez le constater, il remplit tout l'écran. Je vais passer aux paramètres du pinceau, un nouveau paramètre que nous explorons, qui correspond essentiellement apparence d'une chose. Nous apportons un bouton. En fait, démontrons. Où jouer, on peut voir que lorsque je passe le curseur, ce bouton change de couleur Je passe donc à notre menu principal et je passe au designer. Appuyez sur les boutons. Nous pouvons voir ci-dessous le slot et les paramètres d'alignement. Nous pouvons voir qu'il existe un style d'apparence, qui comporte de nombreux paramètres pour définir le style du bouton, son apparence. Maintenant, revenons au chargement, et passons à notre paramètre d' apparence. Dans ces paramètres, nous avons donc cette couleur de pinceau. Nous pouvons sélectionner l'image que nous voulons, mais pour l'instant, nous allons simplement utiliser la fonctionnalité de teinte. Iblez-le et mettez-le en noir. Et nous avons un fond noir pour notre écran de chargement. L'élément suivant dont nous avons besoin s'appelle un baril de progrès. Il s'agit d'un autre élément unique comme les boutons. Lorsque nous les pressons, ils font quelque chose. Il s'agit d'une barre qui se remplit en fonction d'un pourcentage. Je veux dire un peu avant de l'avoir. Faisons en sorte qu'il y ait un style. Il y a aussi les paramètres que nous connaissons, les paramètres que nous plaçons dans la position, l'ancrage, l'alignement et le style, qui comporte également de nombreux paramètres Il y a également en dessous un autre paramètre appelé progression, qui est propre à la barre de progression. Si j'augmente le pourcentage, vous pouvez voir qu'il remplit cette barre. C'est Progress Martin. Ouais. Et il a certaines capacités à remplir en fonction certaines directives et de nombreuses autres options. Maintenant, pour nous, nous allons peut-être simplement changer le fond de remplissage et l'image. Donc, ce que nous allons sélectionner, c'est l' opacité de la barre T. C'est ce que nous voulons pour notre image de fond. Et c'est également ce que nous voulons pour notre image de terrain. Opacité du B et de la barre. Oh, un peu. Nous ne voulons pas que la partie consacrée au progrès se trouve là-haut. Nous voulons que la partie consacrée au progrès se situe au milieu. Ne vous fiez pas aux décalages de position. Et pour ce qui est de la taille, on peut vraiment mordre. Mettons l'alignement Y X comme au milieu. C'est un bon point. Y. Ils sont 1 500, peut-être 600, 1 600 ou une taille X, et disons que 50 a l'air bien ou une taille Y. Maintenant, passons à la couleur Remplissons la barre b. Mettons-la dans 1 %. Maintenant, je vais passer à la teinte de l'image d' arrière-plan et sélectionner quelque chose d'un peu plus grisâtre. Plus. C'est très bien. Peut-être mettre un point Alpha, pour faire une interdiction, ce n' est pas le cas, mais c'est aussi le cas si nous augmentons pour diminuer, 2,3, vous pouvez voir bannir. 0,8, et quelque chose va bien. Maintenant, si je change la teinte sur l'image de fond, vous verrez que cela ne change pas vraiment la couleur que je souhaite. Cela est dû au fait que cette option est remplie ici, ici couleur de remplissage et opacité, qui est un paramètre différent pour la couleur de l'image que nous appliquons Nous allons donc changer de couleur ici. Nous allons le mettre en rouge, un peu plus foncé, un peu plus. Ce 2.8. Eh bien, peut-être 0,9 vin, et peut-être donnez-lui un zéro vert un peu plus clair à la lumière orange. OK, je trouve que ça a l'air bien. Et maintenant, nous avons une barre de chargement effrayante ou un plogra carré non traditionnel OK. Maintenant, l'élément suivant dont nous avons besoin est un texte. Je vais apporter une variable de texte, qui est juste une variable dans laquelle nous écrivons du texte. Je vais l'ancrer au centre. Je vais annuler les compensations. Taille, alignons-la sur 0,5. Cinq. Celui-ci, peut-être trois. Trois, c'est bien. Cette longueur, tapons d'abord le texte. Dans le texte des arrivées. Nous avons à nouveau différentes options. Donc, dans ce cas, nous avons du contenu, c' est-à-dire le texte à l'intérieur. En dessous, nous pouvons manipuler notre texte, notre police, notre opacité polaire Nous le ferons dans une seconde. Maintenant, pour le texte, tapons flo en majuscules Dimensionnons-le en fonction de la police Eyes of Font. J'ai cent trente points forts. 35. Ça a l'air d'aller bien. Un coup d'œil, si c'est exactement au milieu, c'est presque au milieu C'est bon, c'est bon. Changeons également le texte. Nous n'avons pas de couleur rougeâtre, le blanc ne convient pas, quoi qu'il en soit. Vous pouvez modifier le pacity ou le boulon de base, le feu tardif, le normal comme vous le souhaitez Pour ce qui nous concerne, pour le moment, c'est très bien. Nous pourrions animer le texte et le faire apparaître et disparaître dans le tube d'animation, créer une animation, mais nous n' allons pas pour créer une animation, mais nous n' allons pas compiler et enregistrer Et maintenant, comment allons-nous utiliser cette barre dans le jeu pour bien augmenter son pourcentage ? Tout d'abord, nous allons l'appeler barre de chargement et la rendre variable parce que nous voulons en faire quelque chose. Et nous voulons faire quelque chose avec n'importe quelle partie de la partie visuelle du widget que nous avons mentionnée ? Nous devons en faire une variable. Si nous voulions modifier le texte, par exemple, nous devions le rendre variable. Nous voulions changer l'image de fond ? Nous avons dû en faire une variable. Oh, barre de chargement, c' est une variable maintenant. Passons au graphique, et apportons-le pour montrer quelque chose. Et quand je m'en tiens à cela, je peux faire quel pourcentage. Et ce pourcentage est une valeur de 0 à 1. En gros, il s'agit d'une variable de flux à définir complètement. Comme on peut le voir, c'est la même valeur qu'ici 0-1. Nous pouvons le mettre à deux, mais cela n'aura aucun effet. Il est inférieur à zéro ou supérieur à zéro. Il s'agit donc d'une variable de zéro à un. Dehors. Et c'est ainsi que nous fixons le pourcentage. Mais quand je crée le widget, par exemple, en mode ga. Je le stocke dans une variable. Si ce widget avait une barre de progression, ce widget possède au cas où ces deux boutons seraient des variables. Sur ce widget, je peux l' appeler ici mode g. Je peux appeler ces deux boutons à partir de là parce que j'en ai une référence. C'est le bouton de démarrage correspondant. Je peux obtenir une référence à ce sujet. Donc, de la même manière que je le ferais lors la création du widget de chargement et de son stockage dans une variable, je pourrais obtenir ma variable de référence et appeler le bouton de démarrage ou la barre de progression. Mais c'est aussi appeler quelque chose encore et encore. Ce que nous allons faire, c'est créer une fonction qui a, passons au graphique. Je vais copier ceci dans la fonction. façon dont j'ai créé la fonction est une fonction ici, appuyez sur le symbole plus, et cela crée une nouvelle fonction. Je vais donc créer une fonction et la coller dedans. Donc, quand je veux faire tout cela, je peux appeler cette fonction depuis le widget lui-même. Je vais vous le démontrer dans une seconde. Maintenant, pour ceux que je connaissais, qu'est-ce qu'une fonction ? En bref, il s'agit d'un ensemble d'instructions qui peuvent être facilement appelées et répétées. lorsque j'utilise souvent un certain ensemble d'instructions, je peux les mettre dans une fonction et ne pas écrire ce jeu d' instructions chaque fois que j'en ai besoin. Il existe de nombreuses règles de fonctionnement. Une règle importante est qu'ils ne peuvent pas facilement impliquer du temps. Vous ne pouvez pas avoir de nœuds de retard ou de nœuds de chronologie dans les ions. Il existe peut-être des choses que l' on appelle des fonctions pures. Il y a des choses dans lesquelles, de toute façon, je m'y intéresse trop. Pour l'instant, considérons les fonctions comme un ensemble d'instructions que nous pouvons appeler quand nous le voulons. Et dans ce cas, l' ensemble d'instructions que nous voulons est de définir le pourcentage de la barre de chargement. Maintenant, lorsque j'appelle une fonction, je peux avoir quelques entrées, comme par exemple, amenons la fonction ici. le moment, il s'agit simplement d'appeler la fonction pour qu'elle fasse ce qu'elle fait. Si je fais glisser ce câble ici, il est écrit « Ajouter une épingle au nœud ». Faisons-le. J'ai créé une variable d'entrée pour cette fonction. Je reviens au graphique. Je peux voir que cette fonction a maintenant cette variable en pourcentage. Je peux le faire d'une autre manière en ajoutant, sélectionner la fonction et en revenir à ses détails sur les entrées ou les sorties, car la fonction peut avoir une sortie. Par exemple, disons qu' il s' agit d'une action, elle renvoie la valeur true. J'aurais une branche qui, si cela se produisait, retournerait vrai, sinon, renverrait faux. Mais je vais faire une correspondance détaillée. Maintenant, c'est l'autre façon d' ajouter des entrées ou des sorties à la fonction. Nous allons l'utiliser beaucoup plus tard, et nous l' expliquerons beaucoup mieux. Mais pour l'instant, nous allons utiliser cette entrée en pourcentage et nommer la fonction en pourcentage. n'y a aucune raison réelle car, comme vous pouvez le constater, cette fonction est la même que celle-ci. De plus, je ne veux pas appeler la barre de chargement à chaque fois. Du point de vue des performances, ce n'est pas vraiment un gros problème. Appel de la barre de chargement à chaque fois depuis la référence. Puisque nous utilisons de toute façon la référence. C'est juste parce que ça me permet d'appeler plus facilement le pourcentage. Je pense que c'est un bon point d' arrêt pour celui-ci. Je te verrai le prochain. Au revoir. 7. Ajouter l'écran de chargement au mode jeu: H. Bonjour, et bienvenue dans l'atelier de conception de jeux et dans le véritable cours de création procédurale d'Engine Five Dungeon Action PS Lors de notre leçon précédente, nous avons créé notre écran de chargement, notre widget de chargement, et nous avons créé la fonction permettant de définir le pourcentage de la barre de chargement. Nous avons également conçu dans les bars et dans tout le reste. Et maintenant, ajoutons-le à notre fenêtre d'affichage. Mettons-le dans notre jeu. Nous allons donc l'héberger à nouveau en mode jeu. Je veux dire par là que nous allons créer un événement. L'émission est en cours de chargement. Et nous allons copier-coller le code ici. Nous allons supprimer cette partie. En fait, pas tout. Nous allons annuler. Au lieu du menu principal, nous allons choisir le widget de chargement. Nous montrons le chargement, nous créons le widget. Nous le stockons dans un chargement variable. Un soulignement ? Je vais le connecter. Il est un peu plus droit et permet charge variable en bois. W G. Nous commençons à avoir des choses automatiques ici, alors commençons à commenter. Pour sélectionner l'événement de début de jeu, appuyez sur C et tapez B Anu. Ensuite, je vais sélectionner les deux en fait. Pour les mettre sur le côté et taper, appuyez sur C et tapez Widgets. Je vais l'agrandir un peu. Et je vais sélectionner le menu principal. Tapez Afficher le menu principal. Et la même chose sur le type de chargement show ping. Et je vais changer la couleur de ce commentaire pour quelque chose comme le bleuté. Et nous avons commencé à avoir des commandes ici. Nous allons maintenant compiler et enregistrer, ce qui amène notre widget dans notre fenêtre d'affichage Maintenant, comment appelle-t-on ça ? Revenons à notre générateur principal jusqu'à notre branche continue. Nous allons le donner pour le moment. Maintenant, si c'est vrai, si ça continue, nous verrons plus tard ce qui se passe. Mais si c'est faux, nous allons sélectionner, nous allons trouver un nœud appelé Get game mode, qui nous donne accès à notre mode de jeu actuel. Le problème ici est qu'il s'agit d'un nœud générique du mode de jeu Get. Cela signifie qu'il renvoie un objet générique basé sur le mode jeu, comme nous pouvons le voir dans la valeur de retour. Donc, lorsque je veux mon mode de jeu spécifique, ce mode de jeu, nous utilisons un nœud appelé casting. Qu'est-ce que le casting signifie ? En gros, il demande à quel que soit l'objet que nous testons , s'il provient d'une classe spécifique. Je vais demander à passer en mode de jeu de haut en bas. Maintenant, je reçois le jeu de, et je demande c'est le jeu d qui s'exécute dans le jeu le jeu de qui est réellement actif en ce moment. Si c'est le cas, nous pouvons tirer un câble du plâtre pur. Si ce n'est pas le cas, ce ne sera pas le plus pur, désolée, du côté de la distribution Ou si ce n'est pas le cas, cela échouera. Maintenant, lorsque je tire un câble à partir de la partie suivante, j'ai aussi une autre variable qui dit S BP top down game d. Cela signifie que nous pouvons directement appeler le mode de jeu de haut en bas que nous utilisons actuellement. Cela signifie que j'ai accès à toutes ces variables que nous avons créées et stockées lors de leur création. Si elles ne sont pas créées, ces variables seront vides. Revenons maintenant au générateur M. Comme vous pouvez le constater, il possède ces épingles d'exécution, et quand j'ai commis l'erreur je l'ai appelé « pure cast ». Je voulais montrer qu'il existe un moyen de ne pas l'exécuter. C'est ce qu'on appelle convertir en pure cast, supprimer les épingles d'exécution pour rendre le nœud plus polyvalent. Le cast échouerait toujours, ce qui entraînerait une entrée non valide en sortie, désolé. Cela signifie que cela crée une variable de réussite. Nous pouvons donc l'avoir, par exemple, dans une branche, s'il y avait une chance que ce ne soit pas notre mode de jeu. 02, par exemple, code d'erreur. Ce plan, et nous aurions pu dire que s'il est faux, alors disons erreur, le jeu est faux, par exemple Mais nous n'allons pas le faire. Nous savons que notre jeu sera celui-ci. Donc, ce que nous allons faire, c'est boire d' ici et promouvoir la variable. Et en fait, cela pourrait être fait avant la succursale. Je vais l'emporter ici. Et lorsque nous sommes passés au statut de variable, le nom utilisé était BP Top Down Game Old. C'est donc très pratique pour nous. Et nous avons cette référence, et nous pouvons simplement la glisser-déposer sur la variable que nous avons créée. Oh, lorsque vous glissez et déposez avec votre souris, vous pouvez obtenir un get ou un set. Un get obtient la variable, un setter est quelque chose lequel nous définissons la variable Il existe un raccourci rapide pour cela. Si je le fais glisser avec le contrôle et que je le relâche, ou si je le fais glisser avec lt et le relâcher, il obtient un getter ou un setter avec lt. Maintenant, rete ça À partir de là, nous allons sélectionner l'écran de chargement. Maintenant, si notre commande continue est fausse, alors nous affichons l'écran de chargement. Si j'appuie sur jouer maintenant, sur Démarrer le jeu, nous pouvons voir notre écran de chargement, le voici. L'écran de chargement a été ajouté avec succès. Maintenant, examinons un peu plus en profondeur le fonctionnement de notre écran de chargement et celui de notre générateur de labyrinthes Oh, je vais ouvrir Paint. Considérons cela comme notre barre de chargement. Et comme nous l'avons dit, nous allons remplir la barre de chargement en fonction du pourcentage de notre génération de labyrinthes Mais si nous considérons cette génération Maze, parlons un peu de la génération M, son fonctionnement La façon dont cela fonctionnera est d' ajouter quelque chose que nous appellerons une vignette. Et il va ajouter des tuiles selon certaines règles, et cela va créer une forme. D'un labyrinthe de n'importe quoi. Maintenant, en ajoutant ces tuiles et créant la façon dont le joueur va se déplacer, par exemple, il va créer des blocs et d'autres objets. Appelons cette phase un. Appelons cette phase un. Ce serait un moyen facile de charger, vous avez ce pourcentage basé sur zéro ou un maximum de bois d'œuvre. Il s'agit d'un x et non d'un t. Le pourcentage de la barre de chargement serait donc de zéro à maximum. Mais après cela, notre labyrinthe servira à autre chose, il créera des murs, il changera de matériaux, il détruira des objets. Cette phase est donc un peu un point d'interrogation : quel sera le pourcentage de cette barre de chargement ? Donc, ce que nous allons faire, c'est créer un faux. Disons que c'est 0,2 %, c'est 20 %, désolé car c'est une valeur de 0 Cela va donc prendre 0,3 %, par exemple. Nous allons définir de faux pourcentages parce que nous ne savons même pas vraiment comment l'ordinateur du joueur va réagir à cela Certaines actions sont basées sur le GPU, autres sur le processeur. Donc oui, nous allons fixer de faux pourcentages. C'est généralement ce que vous voyez barres de chargement s'arrêter, monter jusqu'à un point à grande vitesse, puis s'arrêter puis avancer, car pour les utilisateurs plus avancés, certaines barres de chargement prennent plus de temps pour les boucles. Ainsi, pour les boucles qui gèlent le lit, il peut y larges boucles qui gèlent complètement l'ordinateur. C'est là que c'est généralement le moment où nous ne pouvons même pas mettre de cuve dans certaines barres de chargement. Oui, quoi qu'il en soit, cela dépend des moyens de toujours plus avancés et fluides, de pouvoir contrôler complètement votre ordinateur et d'être très précis avec d'énormes connaissances techniques et une partie de conception dans le jeu. Mais pour nous, nous allons utiliser quelques méthodes de base. Maintenant, je vais terminer, et je pense que c'est un bon point d' arrêt pour le moment, et nous allons démontrer ces actions lors de la prochaine. Supposons, par exemple, que nous ayons une vignette minimale de zéro à une vignette maximale et que nous définissions un pourcentage de cette barre pourcentage de zéro par rapport à la vignette Mx. Nous allons nous arrêter ici. Je te verrai le prochain. Au revoir. 8. Créer l'algorithme de labyrinthe: Bonjour, et bienvenue dans l'atelier de conception de jeux, et dans un véritable cours de création de donjon procédural sur Engine Five A PS Auparavant, nous avions terminé avec la barre de faible valeur en Dan, et nous avions expliqué comment elle allait être remplie. Nous avons utilisé le mode jeu pour le créer. Et c'est ce que nous appelons Pawing our Me d'après notre référence au mode de jeu. Maintenant, dans cette leçon, nous allons continuer avec les calculs nécessaires pour remplir la barre de chargement. Nous allons créer une fonction. Nous allons l'appeler lc calculate tile loading. C'est très bien Nous allons créer cette fonction. Nous allons sélectionner la fonction telle qu'elle s'est ouverte et sélectionner la fonction pure. Comme nous l'avons dit, les fonctions sont comme des modèles de code que nous pouvons répéter souvent. Et de vos fonctions, nous en avons parlé un peu. Ils sont destinés à effectuer des opérations. Cela signifie qu'ils ont besoin d'une sortie et qu'ils n'ont pas de ligne d'exécution. Nous pouvons voir une ligne d'exécution ici, mais si je l'amène sur le graphe des événements en la faisant glisser ici, vous pouvez voir qu'elle n'a pas de ligne d'exécution. Si nous voulons que cela fonctionne, il doit avoir une sortie que nous puissions le connecter à quelque part, et cela nécessite les informations de cette fonction. En règle générale, les fonctions pures ne devraient pas contenir setters, elles ne devraient pas modifier les données Ils ne devraient faire que des opérations. Vous pouvez modifier les données d'une fonction pure. Je peux mettre un paramètre ici, mais cela va en quelque sorte à l'encontre de l'objectif des techniques d' optimisation des options Unreal pour utiliser des fonctions Maintenant, quand j'ai créé une nouvelle sortie, j'ai ajouté un float pour moi parce que je l' ai laissé avec les variables. Pour vous, s'il ne s'agit pas d'un flotteur, vous pouvez choisir le type et passer au flotteur. Il peut s'agir d'un lingot par défaut. Nommons cette sortie : deux paires touchent deux pourcentages. Non Nous avons notre fonction, nous en avons quelques-unes, et nous avons besoin que certaines opérations soient effectuées ici. Pour cela, nous allons tout d'abord avoir besoin de deux variables, dont l'une va être une variable, elle va l'être et l'autre variable va être actuelle. Comme vous pouvez le voir, mes variables sont des nombres entiers car je suis prête à expliquer que je faisais quelque chose, mais qu'elles ont conservé le type. Pour vous, s'il ne s'agit pas d'un entier, encore une fois, vous pouvez cliquer sur le type et passer de Bleion ou autre à un entier Maintenant, introduisons ces deux variables ici. La formule pour trouver, disons, le pourcentage des tuiles actuelles par rapport aux tuiles mâles serait de diviser les tuiles actuelles par le nombre maximum de tuiles et de le multiplier par Ce que nous voulons cependant, c'est calculer les proportions du nombre maximum de tuiles à la tuile actuelle sous forme de pourcentage. Pour ce faire, il suffit d'inverser cette division et de diviser le nombre maximum de tuiles par les tuiles actuelles. Et comme ce sont des nombres entiers, et leur division donnera un flottant, nous allons simplement faire en sorte que cela devienne le moteur, considérez cela comme un flotteur Nous allons donc effectuer deux conversions flottantes. Je vais copier cette conversion et la connecter ici. Maintenant, nous allons le diviser et le multiplier par 100. Maintenant, nous avons la représentation de la proportion maximale de tuiles par rapport aux tuiles actuelles. Mais nous voulons que cela remplisse jusqu'à 40 % de la barre, non pas plus de 40 %. Nous allons donc diviser à nouveau par 40, 40 divisé par ce facteur d' échelle, et c'est redimensionner parce que les tuiles actuelles vont changer, et nous allons relier cela au pourcentage. Qu'est-ce que cela normalise réellement, cela signifie que cela place les choses dans le contexte A selon lequel 40 est le maximum. J'espère que cela est compris. À présent, nous allons continuer à remplir le point de chargement avec ce pourcentage. Et démontrons réellement cela, comment nous allons le faire. Montrez quelques pourcentages Je vais donc traîner à partir d' ici et un chargement de bois. Et voici la variable que nous avons enregistrée dans le mode de jeu de haut en bas. Lorsque je fais glisser le pointeur d'ici, je le fais directement depuis le mode de jeu de haut en bas, car nous avons enregistré ce mode de jeu sous forme de variable. Oh, nous allons définir le pourcentage, qui est la fonction que nous avons créée. Et connecte-le ici. Si je le laisse comme e, il aura un effet supérieur à zéro. Mais disons, par exemple, que notre nombre maximum de tuiles est de 20, et notre tuile actuelle l'est. Cela devrait donc remplir notre barre de chargement à 20 %. Et je pense qu'en effet, 40 % seraient ici, 50 % quelque part ici. Remplissons-le avec 20 sur 20. Oui, maintenant il a construit 40 % du bar, je crois que 50 % se trouvent quelque part ici. Et cela fonctionne correctement. Maintenant, encore une chose que nous devons faire, créer ces deux variables, les styles maximum et les tuiles actuelles. Ce que nous devons faire, c'est les exposer sur Spaw, en fait uniquement les styles maximum, pas les tuiles actuelles, les exposer sur Spaw et les rendre comestibles par instance Donc, lorsque nous accédons à notre menu principal sur le graphique, compilons et enregistrons, je ne l'ai pas audité Mais si je rechoisis le générateur de labyrinthe, nous pouvons maintenant voir que nous avons un maximum de styles ici avec la valeur par défaut de 20 Deux autres explications. Qu'est-ce que cela signifie comme valeur par défaut ? Lorsque nous créons une variable sur le plan de n'importe quel plan Tout d'abord, il faut compiler le plan. Donc, si je vous prie de compiler, nous pouvons voir dans les détails la valeur par défaut que nous pouvons mettre la valeur que nous voulons pour ce plan lorsqu'il n'est défini nulle part ailleurs La valeur que nous avons définie pour une valeur par défaut sera conservée chaque fois que nous le reporterons. Et l'autre point dont je voulais parler était l'instance modifiable. Donc, ce que signifie générer un plan, c'est que, par exemple, si j'apporte ce générateur d'âge ici, j'apporte une instance de cette classe Comme nous en avons parlé, tout est un objet, et les classes sont des moyens de dire aux objets ce qu'ils doivent faire dans un mode de modèle prédéfini. Et quand je les mets au monde, j'en apporte des exemples. Ouais C'est ce que je voulais ajouter parce que nous avons déjà utilisé l'instance modifiable deux fois ou peut-être plus, et il n'y avait aucune explication à ce sujet Maintenant, rétablissons nos valeurs par défaut. Je vais supprimer cette nouvelle variable. Je vais mettre les tuiles actuelles à zéro, et je vais définir le nombre maximum de tuiles. En fait, je vais en laisser 20. Quelle serait notre prochaine étape en ce moment ? Notre prochaine étape serait de reporter la première tuile du labyrinthe Et pour ce faire, nous aurons besoin d'un plan de tuiles. Je vais passer au contenu. Je vais passer aux plans, et je vais créer un nouveau plan de type actor et le nommer fichier de soulignement PP Avant de commencer à faire apparaître des tuiles et tout le reste, parlons un peu de notre génération de labyrinthes Commençons par cette première tuile que nous allons faire apparaître. Qu'est-ce que cela signifie ? Eh bien, la façon dont notre labyrinthe va fonctionner sera cartographier sur la base d'une grille bidimensionnelle, une grille x et une grille y. Et cela sera représenté par des valeurs négatives, positives et nulles. Et notre premier style, nous le considérerons comme une tuile 0.0. Maintenant, lorsque nous voulons ajouter quelque chose, disons, par exemple, que sur le nord, nous allons l' ajouter sur X est la valeur pour et le sud et y est la valeur pour l'est et l'ouest. Mais nous nous en assurerons lorsque nous le ferons dans les directions mondiales. Supposons que pour le nord, nous voulons augmenter un, le x et le y restent les mêmes, ou que pour le sud, nous voulons décax, zéro sur. La même chose pourrait être faite pour y si nous voulions pour la gauche et la droite est et ouest, gros, ce sera 0,1 et zéro point moins un C'est notre coordonnée interne selon laquelle cette pièce appartient au point zéro. Cette pièce appartient à 1.1. Cela correspond à un point moins un, et cetera. Ça peut être 25. N'importe quel nombre, ce sera notre représentation en mappant le contenu stocké dans une variable. Maintenant, en plus de cela, ce dont nous avons besoin pour répondre à un fichier, c'est qu'il a un certain temps. Donc, nous allons prendre cette taille et la multiplier par l'emplacement de la masse, par exemple, si notre première tuile est 600, elle occupe cet espace si notre première tuile est 600, elle occupe cet Lorsque nous ajoutons le second, disons, par exemple, le nord, ce serait 0600 multiplié par un et 600 multiplié par zéro, donc il s'adaptera exactement ici Nos carrés, nos tuiles seront les mêmes parce que 600 multiplié par zéro et zéro est là et cent multiplié par un, nous amène à la position mondiale où x est égal à 100, où ce x est zéro. Oh, je pense que c'est une explication suffisante pour le moment où nous allons de l'avant avec la création du labyrinthe Nous expliquerons plus de choses, mais il s'agit d'une première introduction sur les variables que nous allons créer dans la prochaine leçon pour stocker ces informations. Je t'en demande une autre. Au revoir 9. Créer la première tuile: Bonjour et bienvenue dans Game Design Workshop et procéduraux Real Engine Five création de RPs d'action procéduraux Real Engine Five dans les donjons Ainsi, dans la leçon précédente, nous avons créé la fonction calc tile loading, qui calcule le pourcentage de tuiles actuelles par au maximum à 40 % de la barre et nous en donne un pourcentage Maintenant, nous avons également parlé un peu variables et de la grille bidimensionnelle de notre labyrinthe et de la façon dont nous allons cartographier nos tuiles qui apparaissent dans une grille bidimensionnelle Commençons maintenant à créer des fonctions et des variables que nous allons utiliser pour manipuler ces données créer des règles les concernant et générer la première vignette Donc, la première chose que je vais faire est de créer une fonction appelée propres fichiers. Bien entendu, nous allons avoir besoin de la branche continue, afin de pouvoir différencier s'il s' agit du premier style qui apparaît en fonction de l'ensemble du jeu ou s'il s'agit d'une pièce continue Nous allons l'utiliser parce que nous allons avoir une pièce d'introduction, exemple un ballon représentant la façon dont le joueur est entré dans ce labyrinthe Et lorsque nous continuerons, l'emplacement nous ferons apparaître le ballon sera celui notre ascenseur nous mènera du niveau précédent au niveau suivant Donc, lorsque nous créons la première tuile, il faut tenir compte du fait que labyrinthe ci-dessus, apportons de la peinture Donc, si nous avons notre labyrinthe au premier niveau, disons, le zéro sur l'axe D zéro La prochaine pièce que nous allons faire apparaître, le prochain labyrinthe, c'est un labyrinthe d'agents, quel que soit le nom que vous voulez Mais la prochaine pièce que nous voulons faire apparaître, quel que soit l'endroit où elle apparaît au-dessus et se crée d'elle-même, nous voulons qu'elle corresponde labyrinthe ci-dessous que nous avons surélevé ici, et nous allons monter Donc cette pièce doit être vide. Et pour le premier morceau de maïs, disons que le point de départ est là Nous voulions que ce morceau soit le ballon que nous avons fait venir. Nous venons de. Allons continuer. C'est pourquoi nous avons besoin que cette branche divisée entre deux actions qu'il s'agisse d'un continue ou non dans la première vignette. Maintenant, comme nous l'avons fait dans le menu principal et en utilisant le nœud sponsor, nous allons faire la même chose ici pour sponsoriser depuis une classe, et la classe que nous allons utiliser est la vignette BV Nous allons bientôt diviser la transformation. Emplacement de l'étiquette. J'ai parlé un peu des emplacements dans les explications précédentes, et je voulais ajouter que lorsque nous sommes dans le niveau, il existe un système cartasien de x, y et z. C'est ce que je disais notre premier labyrinthe Z zéro, et le second labyrinthe seront sur Z, disons rouge Dans le monde, nous avons un système ctsan que nous appelons les coordonnées mondiales. Il s'agit d'une petite parenthèse pour ceux qui avaient besoin de ces informations Maintenant, lorsque nous créons le générateur de labyrinthe, nous le faisons apparaître sur 000x0, y C'est le centre de notre mot, disons. Et lorsque nous apparaissons pour la première fois, nous pourrions utiliser le 000, mais cela signifierait que lorsque nous réapparaîtrons dans un labyrinthe, celui-ci réapparaîtra au premier emplacement Donc, ce que nous allons faire ici, nous allons utiliser un nœud appelé get acto location Parce que c'est la cible de ce nœud lui-même, il nous donne comme valeur de retour l'emplacement où le labyrinthe BP est apparu. Maintenant, nous y répondons depuis le menu principal, c'est 000. Lorsque nous répondrons par la suite depuis un autre endroit, probablement depuis l'ascenseur, il indiquera l'emplacement de cette épine pour y ajouter le carreau Quoi qu'il en soit, continuons. De quoi d'autre aurons-nous besoin ? Donc, un peu d'optimisation, pas beaucoup d'optimisation, nous n'allons pas faire beaucoup d' optimisation, mais un tout petit peu. Lorsque nous créerons le prochain labyrinthe, nous devrions être en mesure de supprimer le précédent Il ne se charge donc pas en RAM et en actions. Par exemple, nous aurons une grille de navigation qui sera utilisée à partir de l'IA. Il ne devrait pas calculer toutes ces choses dans la carte précédente. Par exemple, si nous avons des objets, il ne faut pas calculer les objets s'ils entrent en collision, ou les objets physiques ne devraient pas fonctionner Nous avons donc besoin d'une liste pour détruire des objets après notre choix. Et pour cette liste, nous allons créer une variable qui sera du type actor. Nous allons taper actor, accéder aux types d' objets et sélectionner la référence de l'objet. Nous allons maintenant expliquer un peu plus tard les références aux objets souples et les références aux objets. Mais nous n'allons pas trop optimiser. Nous allons utiliser des références d'objets. Mais je m'égare plus tard. Maintenant, nous allons utiliser cet acteur, qui est un objet. Ce que nous voulons appeler cette liste, ce sont des acteurs à détruire. Ce que je veux analyser davantage dans cette situation, c'est que, comme nous l'avons dit, nous attribuons à cette variable quelque chose. Mais cela ne contient qu'une seule information, une seule variable. Mais si je veux une liste de variables. Non, outre le type de variable, nous avons également un type de conteneur, comme indiqué dans l'infobulle Par exemple, pour celui-ci, nous aurons besoin d'un tableau. Qu'est-ce qu'un tableau ? Changeons ce premier type de variable. Nous l'avons apporté. Deuxièmement, qu'est-ce qu'un tableau ? En gros, c'est une liste. C'est une liste des mêmes types de données, une collection d' éléments si vous voulez. Pour le moment, nous avons une liste d'acteurs. Mais si je change le type de variable, ce serait une liste de buions, par exemple, ou une liste d' entiers, une liste de Pour l'instant, nous allons laisser le soin à l'acteur. La référence de l'objet, c'est l'autre écran, c'est ce que je vais taper. Maintenant, si je choisis l'ensemble, comme nous pouvons le voir, il faut une liste. Si j'utilise le g, cela me donne une liste. Alors, comment puis-je ajouter un seul acteur à cette liste, une seule variable. La façon dont nous procédons est d'utiliser un getter et à partir du getter, nous utilisons le nœud. Les tableaux ont de nombreux nœuds uniques pour Nous allons rencontrer certains d'entre eux au cours de ce cours. Je vais le connecter ici. Maintenant, quand cela fonctionne, cela gâche notre premier style de cette liste que nous allons être acteurs à détruire lorsque nous passerons au niveau suivant ? , la deuxième chose dont nous avons besoin est ce que nous appelons le système de coordonnées, le système de notes de coordonnées, les valeurs de coordonnées. Pour cela, nous allons créer une autre variable, que nous allons appeler es. Et nous allons changer cela jusqu'à un certain point. Maintenant, qu'est-ce qu'un point d'intérêt ? Il s'agit essentiellement d'un vecteur à deux D. De plus, je vais passer d' un tableau à une variable unique. Maintenant, si je compile, la valeur par défaut est actuellement zéro, zéro. C'est ce que nous voulons pour la première pièce. La première froideur que nous voulons est 00. Maintenant, nous devons le stocker quelque part. Outre les tableaux, il existe un autre type de variable appelé variable de carte, qui est essentiellement un tableau bidimensionnel avec quelques règles supplémentaires Créons-en un. Je vais créer une nouvelle variable. Je vais l'appeler Gon. Carte de Ngon. Non, en fait, je vais me contenter de moi, Dang Map carte Dang décrirait également mieux le type de variable Je vais donc passer ici aux types de conteneurs, et je vais sélectionner la carte. Vous pouvez le voir sous la forme de deux variables. Voilà donc ce qu'est une carte. C'est comme un tableau bidimensionnel, mais premier type de variable doit être unique. Compilons et démontrons cela. Par exemple, si j' ajoute le point clé, le 8.00, et que j'essaie d' ajouter à nouveau quelque chose Cela ne me le permet pas, alors que si je vais dans le tableau et que je n'en ajoute aucun en tant qu' acteur, je peux l'ajouter à nouveau. Peu importe si nous avons des doublons. Je vais le supprimer, je vais revenir aux appels, et en fait, je vais en parler. Carte. Je vais revenir à p et supprimer également la valeur par défaut que j'ai ajoutée. Maintenant, le premier sera celui des coordonnées. Le premier est celui que nous avons sur cette carte. Le second serait l'acteur de tuiles lui-même. Je pourrais donc avoir les coordonnées ou, en même temps, l'acteur auquel je veux faire référence. Je vais taper une vignette. Je vais déposer le dossier BP. Je vais utiliser une référence d' objet. Je vais changer le type de variable. Il me demande de changer le type de variable parce que je l' ai introduit dans le graphique. Cela signifie qu'il l' a déjà enregistré. Si je ne l'avais pas intégrée au graphique, j'étais juste là pour créer la variable, et je vais changer le type d'objet. Vous pouvez voir que cela ne l'affecte pas. Mais dès que je l' insère dans le graphique, cela l'affecte. Je vais annuler. Je vais apporter ce gin ici. Et en ce qui concerne le tableau, je vais ajouter. Maintenant, cette annonce a une règle spéciale selon laquelle si vous ajoutez quelque chose qui existe déjà, puisque ce doit être la première clé, elle doit être unique. Elle remplacera la clé existante. ne s'agit donc pas d'un mécanisme sûr pour ajouter des éléments, mais comme nous savons qu'il ne fonctionnera qu' une seule fois au début de l'enchère, comme il s'agit de la première tuile, est sûr qu'il ajoutera la bonne pièce Maintenant, je vais connecter les coordonnées actuelles ici, et je vais connecter l'acteur, ainsi que la valeur de retour de l'acteur d' apparition, à cette carte de donjon Dans notre système de donjon, dans notre donjon de labyrinthe, quel que soit le nom que nous lui donnons, système. Nous aurons une règle spéciale. Cette règle stipulera que sur les blocs spéciaux, aucun objet ne se reproduira. Nous avons donc besoin d'une liste des blocs spéciaux, et non d'objets générés. Pour cette liste, nous allons utiliser les coordonnées du donjon lui-même. Je vais donc dupliquer la variable de coordonnées actuelle , copier-coller Et je vais le renommer en chambres spéciales, par exemple, toutes les tuiles spéciales en fait Carrelage spécial. Et je vais aussi en faire une liste, un tableau. Maintenant, j'aurais pu en faire un ensemble les mêmes règles que la carte ou la première clé. Certaines règles sont les mêmes. Cela signifie qu'ils doivent être ajoutés de manière unique. Mais je vais juste utiliser un tableau car ils sont un peu plus faciles à manipuler. Je vais apporter des carreaux spéciaux avec support. Je vais chercher un getter, et je vais ajouter ce tableau, les coordonnées de cette tuile Je pense que c'est un bon point de départ pour le moment. la prochaine légion, nous allons décider et décrire comment nous allons définir le point de sortie. Où est la pièce suivante ? Où est-ce que je vais mettre cette pièce en gage ? Où va apparaître la prochaine pièce ? Nous allons définir l'ordonnance de Nora Southwest. Merci beaucoup Au revoir 10. Système de direction personnalisé: Bonjour et bienvenue sur le moteur Game Design Workshop, cinq appels à moteur Game Design Workshop la création de Procedural Dungeon Action Apes Lors de la précédente, nous avons lancé la chaîne d'événements, la fonction du Span for style. Et nous avons ajouté les acteurs pour détruire le tableau. Nous avons expliqué un peu ce qu'étaient les rayons. Nous avons également créé la variable de carte du donjon, qui est une variable représentant un point int et un acteur. Et nous avons également ajouté les coordonnées à un tableau de tuiles spécial. Mais nous avons dit que les tuiles spéciales seraient des tuiles à ne pas bientôt Nous appliquerons la règle de ne pas faire apparaître d' objets dans notre Par exemple, nous ne voulons pas que la première tuile comporte une tourelle ou un coffre H. Sauvegardons et continuons à créer une autre variable pour la liste. Cette fois, ce sera la liste des variables nord-est est et sud-ouest. Il s'agit d'un type de liste tout à fait unique. Cette liste ici, la liste des MP ou la liste des tableaux ou, comme nous l'avons dit, elles peuvent être modifiées au moment de l'exécution. Cela signifie que je peux ajouter ou supprimer des éléments dans cette liste pendant le jeu. Ce que nous allons créer est une ancienne énumération, peu importe que vous utilisiez des Blueprints ou des Sets Plus, les énumérations ne peuvent pas changer Ça ne l'est jamais. Mais ce serait une formidable réussite. Maintenant. Voyons comment créer cette variable. Cette variable ne peut pas être créée dans la liste ici car celle-ci contient des éléments modifiables Pour notre liste, ce qui sera modifiable sera la valeur Mais la liste elle-même doit être créée ici. Pour créer cela. Nous devons accéder à Content Drawer, accéder à nos plans de dossiers Nous allons créer un autre dossier à l'intérieur. Je vais appeler ça ou Nums for Fold. Armes. Je vais cliquer avec le bouton droit de la souris, accéder aux plans de catégorie, à l'énumération des tuyaux Nous allons l'appeler Oh, allez ajouter quatre variables. Je vais l'ouvrir, et voici ce que nous voyons dans la liste des variables d'énumération, et nous avons ce bouton qui ajoute des énumérateurs d'énumération Si j'essaie de renommer un énumérateur en quatre, nous avons un nouvel énumérateur zéro, un, deux, trois, j'essaie de nommer ce zéro, vous verrez qu' Le nouvel énumérateur zéro est déjà utilisé. Mais cela a encore une fois des noms uniques. Maintenant, je change 01. Par exemple, je vais le garder à zéro. C'est mon erreur. Mettez la majuscule sur R, cela ne fait pas la distinction majuscules et minuscules. Le fait d'avoir le capital R ne change donc pas vraiment. Maintenant, je vais supprimer ces noms. Je dois fournir un nom. Nous allons donc commencer par le premier appel. Et pour le nord, le second appellera E pour l'est, le troisième je l' appellerai sud pour S pour le sud, et le quatrième je l'appellerai W ou ouest. Nous avons le nord-est sud-ouest. Voici donc notre liste prédéterminée. Avant de passer à ceux qui veulent une définition, une définition plus précise serait qu'il s'agit d'une programmation de typage de données qui nous permet de définir celle des constantes de nom représentant des valeurs spécifiques. Par exemple, notre menu d'options, ou nous pourrions avoir un Timare Hell Eculties normal C'est Use for programming pour rendre notre code un peu plus clair que d' avoir, par exemple, un tas de pollens, un tas de branches, et la désactivation de choses ou de chaînes ou autre. Continuons. Apportons à cette liste notre générateur Blueprinting M, car nous en aurons beaucoup besoin Coy aurait dû l'appeler direction. Direction E. Je vais créer une nouvelle variable. moi qui le nomme. Des érections, juste des indications Maintenant, nous n'allons pas le trouver facilement ici. Je vais donc me dire qu'il y a beaucoup d'actions de type pset. Maintenant, cela nous donne la variable que nous avons créée e directions, qui contient la liste du nord-est, du sud et de l'ouest. Je vais changer un seul type ibru à partir de A, je compile, et je vais vous montrer quelque chose Maintenant, comme vous pouvez le voir, en fait, nous allons l'apporter, nous pouvons le voir dans les détails. Il comporte un menu déroulant avec nos options Nord-Est, Sud-ouest, et l'une d' entre elles est de conserver la valeur choisie Mais même s'il a stocké toutes ces valeurs, l'une de ces valeurs, celle à laquelle il est ajouté. Si je dois définir les instructions ce sera l'une de ces options. En fait, direction, pas un bon nom pour cette variable car nous allons utiliser cette variable pour définir notre point de sortie par rapport à notre acteur généré B pour l'instant, ce que nous devons faire, c'est savoir où apparaîtra notre prochaine pièce. Je vais donc changer le nom en Last exit. Oh, oui. Il s'agit de notre dernière variable de sortie. D'où sommes-nous sortis la dernière fois ? Oh, va compiler, Dave. Et maintenant, faisons une sortie aléatoire. Maintenant, nous allons répéter le système. Ce n'est pas une mauvaise technique, mais c'est aussi la meilleure. Nous allons faire c'est prendre make array. Si je le faisais glisser, je ne pourrais pas obtenir make array car cela dépend du contexte. Je ne l'étais pas. Je tape M array, il fera la même chose. Mais ce que nous avons fait, c'est créer un tableau avec un joker comme variable. Donc, ce que je vais faire, c'est également passer au contexte, obtenir une copie de Ray, par exemple, et le connecter ici. J'ai donc transformé le joker en une sorte de meration. Maintenant que nous avons ce tableau ici, pour supprimer le get or up. Je vais revenir en arrière à partir de maintenant et connecter ceci ici, le supprimer ici. Je vais ajouter nos épingles et me rendre dans l'ouest. Mais ce sont de petites astuces pour ne pas avoir à créer un tableau avec toutes les directions et à en obtenir un au hasard, le tableau que j'ai créé. Je suis juste en train de créer un tableau temporaire qui sera collecté. Maintenant, cette collection Carbach est également importante. Il y a de nombreuses explications. Nous n'allons pas entrer dans le vif du sujet. Oh, j'ai créé un tableau dans lequel il ne sera pas conservé dans une variable et consommera de la mémoire, par exemple, ce qui serait une négligence car un simple rayon de valeurs d'énumération R ne vaut Quoi qu'il en soit, je voulais juste montrer comment nous pouvons manipuler les nœuds et passer du caractère générique à notre propre variable Maintenant, cela se fait de manière aléatoire à partir de cet élément dom et le promeut au rang de variable. Il l'appelle jusqu'à notre dernière sortie. Donc, quand cela fonctionnera, nous avons décidé que notre dernière sortie serait celle-ci. Nous pouvons réellement le démontrer avec une chaîne d'impression, je connecte cette valeur ici. Cela ne nous montrera en fait rien. Cela ne nous montre rien car nous n'avons pas connecté la première tuile. Je vais le connecter ici. Compiler. Je vais faire une pré-séance. Comme nous pouvons le voir, si j'appuie à nouveau sur play et sur start, non, appuyez et démarrez. Encore une fois vers l'ouest. R : C'est Rundo Une des raisons pour lesquelles vous allez juste à l'ouest et au sud. OK. Nous avons un Nord. Oui, ça marche. Ça se fait au hasard, trois fois. Je pense que c'est un bon point d'arrêt pour celui-ci. Nous allons passer à la suivante en définissant le point de sortie, non le point de sortie, le point d'introduction, qui figurera également dans certaines règles. C'est tout pour celui-ci. Au revoir. 11. Trouver des tuiles adjacentes: Bonjour et bienvenue dans le cours de création de Real Engine de Game Design Workshop 5 RPG d' action Procedural Dungeon Sur le précédent, nous avons créé la dernière sortie IO Blue, et nous avons créé l' énumération que nous avons faite Et j'ai expliqué certaines choses à propos des énumérations. Nous prouvons également que nous obtenons un point au hasard grâce à la triche Mar A ici, et pour le moment nous n'en avons pas besoin, et continuons avec la sortie opposée Maintenant, nous pouvons nous faciliter la tâche et ne pas avoir une sortie opposée aléatoire et vérifier simplement que ces deux variables ne sont jamais identiques. Autre chèque : non. Ce que nous pouvons faire, c'est simplement obtenir le contraire de ce qu'est notre sortie. Par exemple, de la peinture. Si c'est notre boîte et que nous sortons par le haut, l'intro doit être par Si nous sortons par l'est, l' intro devrait être par l'ouest Je pense que c'est une règle simple, nous facilite un peu les choses en ce moment. Nous allons créer plus tard quelques vérifications, afin qu'une variable ne soit jamais fournie avec une autre variable. Mais pour l'instant, poursuivons ce que nous sommes en train de créer. Maintenant, pour le faire. Nous avons besoin d'un moyen de trouver les voisines, les cellules adjacentes, comme vous voulez l'appeler Qu'y a-t-il autour de nos premières coordonnées, comme nos coordonnées sont zéro, zéro, zéro, x, zéro, y. Quels seraient les voisins sur une croix ? Parce que nous construisons avec une croix. C'est aussi une information sur notre donjon, façon dont il fait le créateur du donjon sur la façon dont il fait le créateur du donjon . Allons peindre à nouveau. Maintenant, comme vous pouvez le voir, j'ai mis des flèches sur le nord-est sud-ouest. Nous n'avons pas de flèches au nord-ouest ou au nord-est, sinon cela nécessiterait un type de bâtiment différent. Mais pour nous maintenant, nous allons suivre l'essentiel, c'est-à-dire n'avoir que le nord-est sud-ouest, et continuer avec cette logique. Maintenant, pour obtenir les voisins de ces coordonnées actuelles. Nous allons avoir besoin d' une autre fonction. Ce sera à nouveau une fonction pure parce que c'est un calcul mathématique. Nous allons créer une nouvelle fonction. Nous allons l'appeler Wind Cross sur cette base. Il s'agit de l'orthographe de adjacent. Envoyé. Quoi qu'il en soit, peu importe. Si vous continuez à faire une faute d'orthographe, s'il s'agit d'une faute d' orthographe constante, cela n'a pas vraiment d'importance, car vous pouvez trouver votre fonction. Mais l'orthographe est assez importante. Passons maintenant à cette fonction. En fait, c'est ouvert. Maintenant, ce dont nous allons avoir besoin, c'est d'une entrée. Nous allons avoir besoin d'une saisie de coordonnées. Je vais passer aux entrées, et je vais sélectionner un point d'entrée. Et je vais l'appeler DS. Comme je l'ai dit, ds, le point d'entrée est deux vecteurs d. Cela signifie qu'il a un x et un y. Il n'a pas de z. Donc, comme je pourrais e avec la transformation. Je peux donc le faire avec des cordons, mais je ne veux pas utiliser le split parce que si j'utilise le split, ça ressemble à ça, et je n' aurai qu'à le faire glisser d' ici à partir d'ici. Ça va être un gâchis de toute façon. Je vais donc recombiner les deux. Ce que je vais faire, c'est faire glisser ici et taper break in break in point Maintenant, c'est un peu plus clair, ce qui ne le sera pas au final. Parce que ce que nous devons faire c'est en ajouter un manuellement sur les coordonnées du haut ou en soustraire un Et faites de même pour y. Nous obtenons donc nos coordonnées nord-sud-est ouest. Parce que nous allons définir que notre nord est le sinus positif de x. sud est notre signe moins moins négatif sur le mot direction x, et eat est le sens positif sur, et nous est le sens négatif sur y. Oh. Maintenant, j'ai attiré et ajouté les valeurs manuellement. Mais je dois faire valoir mes points. Ce que je vais faire, c'est comme j'ai créé le Make a Ray. Je peux vraiment faire valoir un point. Je peux avoir ce nœud ici qui en crée un autre. La plupart des choses peuvent être créées temporairement de cette façon. Maintenant j'en ai besoin quatre fois. Maintenant, connectons tout, tout. Allons-y, allons-y. Nous serons obligés de spagetifier un peu. Je vais faire glisser le pointeur du y ici vers le 0x0y, et du y ici vers ce zéro y, et je vais faire de même avec x ici, et ça passe à la et ça passe En résumé, cela signifie que nous créons un point final variable entre la position actuelle plus un et x ou plus moins deux x plus un y et plus moins un y. Nous avons une position croisée pour trouver nos voisins à partir de notre point actuel. Maintenant, je vais créer un rayon comme avant, et je vais ajouter des épingles. allons connecter ceci ici et ici, cliquer sur la croix à vin adjacente et créer une sortie, qui sera un tableau, et l'appeler j. Enfin, et l'appeler Nous allons connecter ceci ici et ici, cliquer sur la croix à vin adjacente et créer une sortie, qui sera un tableau, et l'appeler j. Enfin, nous devons nous connecter au nœud de retour, le tableau que nous venons de créer à adjacent. j. Enfin, nous devons nous connecter au nœud de retour, le tableau que nous venons de créer à adjacent. Maintenant, avant de continuer, montrons ce que nous avons créé. Passons donc à la fonction sur le premier style, et mettons à nouveau un rt br. Ramenons cette fonction ici. Je ne l'ai pas sélectionnée pour être pure, je vais simplement la sélectionner maintenant, en sélectionnant la fonction où qu'elle se trouve. Sur le talon détaillé, vous pouvez voir cette option pure. Je vais sélectionner ceci. Pour les coordonnées, je peux utiliser les lits actuels dès maintenant. Et ce que nous pouvons constater instantanément, c'est que nous ne pouvons pas connecter cette variable à celle-ci car celle-ci est une boîte. Il a le symbole d'une boîte, qui est notre symbole matriciel, où celui-ci n'a qu'un symbole d'épingle, ce point arrondi ici. Oh, comment pouvons-nous tout afficher, toutes les listes d'éléments de ce tableau. Ce que nous pouvons utiliser, c'est ce qu'on appelle une boucle for pour chacun. Maintenant, il y a aussi une boucle avant. Apportons-le. Il n'y a pas un seul exemple. Alors, quelle est la différence entre les deux ? Tout d'abord, expliquons ce qu'ils font. Ce qu'ils font est basé sur un index que nous définissons nous-mêmes ou que nous obtenons à partir d'un tableau. C'est une action que nous pouvons programmer , appelée body loop. Et une fois terminé, il câble la broche terminée. Maintenant, comme vous pouvez le voir, ceux-ci ont également des épingles différentes de ce côté. Celui-ci nous donne juste un indice, par exemple, si je mets l'indice 55-55 Cela signifie qu'il sera indexé Le premier indice que nous donnons lorsqu'il déclenche la boucle corporelle serait 55. Et la raison pour laquelle nous savons que c'est 55, parce que si nous couvrons, cela indique qu'il exécute une boucle corporelle pour chaque index, de l'index de départ à l'index de fin, inclus C'est le mot clé, inclusif. Cela signifie qu'il fonctionnera en 55, et qu'il en fonctionnera également en 65. Maintenant, celui-ci nous donne un élément de tableau. Ainsi, lorsque nous utilisons pour chaque boucle d'un tableau, nous obtenons également l'élément correspondant à l'index. Non, connectons-le avant la chaîne d'impression. Et maintenant, nous voulons pointer cet élément A. Je vais le connecter ici. Je vais supprimer cette boucle. Et nos coordonnées sont actuellement zéro et zéro, zéro sur y et zéro x. Cela devrait donc nous donner un plus un sur x, un moins un sur x, un plus un sur y et un moins un sur y tout en gardant le contraire correspondant à zéro. Je vais compiler. Je suis sur le point d'exagérer. Je suis désolée. Passez au niveau M. Accédez à tout enregistrer et appuyez sur Play. Maintenant, c'est un jeu de style, on peut voir les coordonnées ici. Si c'est trop rapide, nous pouvons ouvrir des options supplémentaires sur la chaîne d'impression, qui a toute la durée, d' autres éléments ou une avance. Nous, enfilons ça. Si, par exemple, je le fais maintenant, cela restera plus longtemps. Maintenant, si nous le testons avec différentes valeurs, appelons le générateur ma, au lieu des poulains actuels, je vais le diviser Sélectionnez, disons que nous partons de un et d'un. Je devrais mettre à jour correctement , comme c'est le cas pour les valeurs. Une dernière chose avant de terminer cette leçon. Je pense que nous devrions mettre une croix d'explication à côté de l'ordre d'où ils viennent. Comme nous l'avons dit, le nord est plus sur x, sud est moins sur x et l'ouest moins sur y, et plus est est. Je vais aller à la réception. Je peux en fait le mettre sous forme d'infobulle, mais je le préfère sur le nom Je l'ai ici. Renommez-le avec F deux dans l'espace et nord nord-est ouest Je peux l'avoir et m'expliquer dans quel ordre ils vont arriver. Maintenant, je pense que c'est suffisant pour celui-ci. Je te verrai le prochain. Au revoir. 12. Cartographie des coordonnées et apparition des tuiles: Bonjour et bienvenue à l'atelier de conception de jeux et au cours de création RBC de Real Engine Five Procedural Dangon Action Auparavant, nous avions créé notre fonction nord-sud-est ouest adjacente à une croix fine. Et recombinons cela en fait. Nous avons une entrée d' un point int, et nous exportons, nous avons en sortie un tableau de points t. Maintenant, nous démontrons qu'il est possible, avec une boucle avant d'ajouter n'importe quelle coordonnée qui nous donne les voisins, les voisins croisés Alors maintenant, connectons cela ici et laissons cela aussi. Maintenant, ce que nous voulons, c'est obtenir le contraire de la dernière sortie. Pour ce faire, nous allons utiliser cette liste ici. Je vais m'en procurer une copie. Maintenant, la différence entre une copie et une référence est que lorsque je reçois une copie, je reçois essentiellement une copie de l'élément réel. À partir de la référence, je peux réellement manipuler la source, l'entité réelle du tableau. Nous avons donc besoin d'une copie. Maintenant, nous allons utiliser un nouveau nœud. Nous allons utiliser un nœud sélectionné. Laissez-moi vous le démontrer. Nous allons taper select. Comme vous pouvez le voir, nous avons ce nœud ici, qui nous donne quelques options l'index d'un joker et une valeur de retour. Maintenant, sur la base de ce joker d' index, ancien joker car il peut prendre de nombreux types Nous allons en fait utiliser le matin dont nous disposons. Par exemple, je vais connecter la dernière sortie ici. Je me suis converti automatiquement. Maintenant, cette valeur de retour est un entier car nous avons demandé une sélection à partir d'un entier. Si je devais simplement demander Select, vous pouvez voir que tout est une carte Y. Nous pouvons donc utiliser ce nœud dans de nombreux cas différents. Non, nous faisons un premier point nord, zéro parce que les tableaux sont numérotés par zéro, passant à un, deux, trois, etc. Oh, le nord c'est zéro, l'est serait deux , le sud un et l'ouest trois. Mais en fonction de l'indice entrant, il vient vers le sud, il en choisit deux, quand c'est un nord, il choisit le correspondant. Mais le problème, c' est que si le Nord arrive, nous sélectionnons le Nord. Si l'Est vient, alors nous sélectionnons l'Est. Ce que nous voulons, c'est inverser ces chiffres. Mais quand il vient vers le nord, nous voulons le sud, mais nous allons en choisir un ici. Quand c'est au sud, nous voulons le nord, donc nous allons choisir zéro ici. Quand c'est à l'est, nous voulons l'ouest, et là où c'est à l'ouest, nous voulons l'est. Maintenant, nous pouvons inverser cela essentiellement en fonction des revenus, de ce que nous tirons de ce tableau Maintenant, pour enfin atteindre notre objectif sur toutes ces actions, il faudrait dire au programme que cette case devrait avoir ces coordonnées sur notre carte, notre bidimensionnelle devrait être le point de départ. Eh bien, pas le début, mais le bloc d'introduction, par exemple, appelons-le intro Créons un plan pour cela. Passons au dossier Blueprint. Nous allons cliquer avec le bouton droit de la souris. Nous allons sélectionner une classe de plan directeur. Je vais devenir acteur. Appelons-le BP Intro ou Balloon ou autre. Nous allons utiliser un ballon. C'est pourquoi j'ai dit ballon. Non. Puisque nous voulons que l'intra y apparaisse, nous devons dire au labyrinthe de le laisser vide Ces coordonnées. Alors, que vais-je faire si vous optez pour des carreaux spéciaux ? Oups. J'ai déjà fait une erreur. Je suppose que c'est arrivé. Il ne devrait contenir aucun élément. Je vais le supprimer. Les carreaux spéciaux doivent être des éléments nuls. Je suppose que cela s'est produit parce que j'ai créé l'élément à partir d'ici J'ai dupliqué cette variable, elle l'a peut-être conservée ou, par erreur, j'ai peut-être ajouté ou pour un pays Les tuiles spéciales doivent donc être vides. Maintenant, je vais copier ces tuiles spéciales, les coller et les renommer en stt Mais nous allons avoir une autre liste. Encore une fois, nous allons l'apporter ici avec contrôle, sélectionner AD et ajouter cette variable depuis get Maintenant, nous allons utiliser cette liste lorsque nous construisons le labyrinthe, pour créer des règles disant ne rien placer ici parce que nous voudrions peut-être y placer certaines choses nous-mêmes, comme nous allons le faire maintenant Supposons que nous voulions proposer cette vignette d'introduction, placez cet endroit Je vais utiliser à nouveau mon propre acteur parce que c'est ainsi que réagissent les acteurs du monde. Et je vais sélectionner le dans O. C'est un R. Oh, passons à ce plan Ensuite, j'ai sélectionné ces sourcils, ce qui signifie naviguer jusqu'à un ensemble, loupe ici, et cela m' amène au plan, et cela m' amène au plan comme si j'étais dans un autre dossier, c'est ça, prêt pour Maintenant, je vais double-cliquer dessus, ajouter un maillage statique et sélectionner un tube pour le maillage statique sélectionné automatiquement ici. Nous avons un tube. Tuyau SM. OK, laissons ce tube pour le moment. Nous savons donc où se trouve notre intra. Maintenant, trouvez l'emplacement. Comme nous l'avons dit, lorsque je divise cela, recombinez la structure. Ouais. Vous pouvez également diviser les vecteurs eux-mêmes. Mais ce que nous voulions, c'était recombiner pour montrer qu'il s'agissait d'une transformation Maintenant, si je le divise, je peux voir l'emplacement, la rotation. J'ai mes coordonnées locales ou un tableau bidimensionnel. Mais qu'est-ce que cela se traduirait en termes de coordonnées dans le monde ? Comme cela nécessite les coordonnées des mots, il ne peut pas être généré sur la base d'un et deux, moins un et moins deux, où que ce soit dans le monde Mais pour cela, nous allons créer une autre fonction, une autre fonction pure pour pouvoir lui donner des coordonnées, et elle nous donne l'emplacement d'un mot. Oh. Passons à nos fonctions, appuyons à nouveau sur le symbole plus et ajoutons une nouvelle fonction. Appelons ce point l'emplacement. Je pense que c'est suffisant. Comme nous l'avons dit, nous avons besoin d' une autre contribution ici. Ça va mettre l'ordre des points dans ces trous. Et il va avoir la sortie d'un vecteur. Nous avons un espace w de x, y et z. Disons ceci. Ne serait-ce pas génial si je pouvais le connecter ici et que vous puissiez simplement travailler. Mais ce que nous devons faire, c'est y remédier. Vous vous souvenez quand nous avons parlé dans Paint de la taille des poils, exemple de la taille de notre véritable labyrinthe ? Eh bien, nous allons devoir créer cette variable. Je vais appuyer sur notre variable ici, je vais changer son type entier. Je vais l'appeler file is. Parce que je connais la taille des tuiles R, ces 600, je vais en taper 100. Il s'agit de la valeur par défaut, mais nous pouvons la rendre modifiable en instance et l'exposer au moment du spawn Nous pouvons donc changer. Nous avons différentes tuiles Lorsque nous créons le labyrinthe, passons au menu principal, au graphique, Mettons-le à jour. Récupérez-le, et rien ne se passera car je n'ai pas compilé ce plan Et maintenant, nous avons la taille des carreaux. Nous pouvons l'ajuster nous-mêmes si nous avons différents types de tuiles, 400 par 400 ou quel que soit le nombre sur lequel nous mourons. Je vais compiler et enregistrer à nouveau, puis retourner sur notre carte. Maintenant, nous avons une taille de tuile égale à cent, et si nous la multiplions par x, multiplions par y. Nous allons utiliser le vecteur. En fait, parce qu'avec des vecteurs. Maintenant, c'est Les vecteurs sont des flottants. Donc, si j'essaie juste d'en faire un vecteur, cela n'arrivera pas. Maintenant, je peux toujours faire un changement à deux flottants, et cela créera un flottant. Mais aujourd'hui, la réalité nous donne la possibilité d'accéder à cette épingle, cliquer avec le bouton droit de la souris et de la convertir en ce que je veux. Je vais choisir un char. La précision unique n'a pas d'importance pour notre Par conséquent, peut-être une procédure plus importante pour nous car nous multiplions des entiers Et bien, pour être honnête, parce que cela vaut le détour et que nous sommes peut-être en train de créer un labyrinthe Je flotte. La puissance n'a pas d' importance ou n'a pas d'importance. Oh, à partir de là, maintenant je peux créer Tor. Voici ma valeur x, et voici ma valeur y. Et pour la valeur z, je vais juste l'ajouter à la requête tor. Le remplissage est important. Ouais. Donc, comme c'est zéro, cela va ajouter l'axe Z partir de notre position de l'acteur. Et si nous l'ajoutons c'est parce que c' est notre point de départ. Et plus tard, nous allons créer les prochains labyrinthes, comme ci-dessus et même avec un point de départ différent de 002000, disons Cela peut être 500 x 600 X et un Z aléatoire. C'est pourquoi nous devons ajouter l'emplacement de l'acteur ainsi Les prochains labyrinthes qui seront construits tiendront compte du fait que leur emplacement est relatif à l'emplacement de l'acteur par rapport à l'emplacement du labyrinthe, à l'emplacement du constructeur du labyrinthe Oh, je vais mettre ça ici. Nous n'avons pas beaucoup précisé ce plan. Je vais compiler, enregistrer, et je vais y revenir dans le premier style, et je vais apporter de la fine tation, le rendre pur, donc recommencer, et je vais relier ceci ici et cela ici. Maintenant, si je joue, il devrait apparaître. Nous pouvons réellement le voir parce que nous avons l'écran de chargement. Passons donc à l'écran de chargement. Passons au panneau Cavas et définissons la visibilité sur masquée. Compilez et enregistrez. Aucun écran n' est chargé. Mais je suppose que nous ne le voyons pas parce qu'il n' y a pas de lumière Réglons ça. Mettons la lumière à notre niveau. Nous allons passer à la case ci-dessus qui permet d'ajouter rapidement au projet. Nous allons passer aux lumières et ajouter cette lumière directionnelle. Jouons à nouveau. ne vois vraiment aucune boîte car notre appareil photo n'était pas au bon endroit. Oh, je suppose que c'est notre introduction. Donc, quelque part par ici se trouve notre générateur de labyrinthe. Maintenant, je pense que c'est un bon point d' arrêt pour celui-ci. Et lors de la prochaine, nous devrions commencer à concevoir notre carreau afin que nous puissions voir notre premier carreau. Au revoir. 13. Visualiser le labyrinthe avec des flèches: Bonjour et bienvenue sur Game Design Workshop et Real Engine, cinq cours de création de RPG d'action procéduraux dans les donjons Auparavant, nous avions créé la fonction de localisation des tuiles fines, qui s'affine en fonction des coordonnées, et en fonction de la taille de nos tuiles, de l'emplacement de nos coordonnées paires, du mot position. Oh, nous l'avons ajouté à notre code, et nous avons également créé notre bloc d'introduction Cela devrait en fait apparaître un peu plus haut, donc je vais simplement ajouter ici et faire un calcul d'ajout vectoriel Je vais en ajouter 300 au Zaxs. Je vais le connecter ici. Maintenant, il va apparaître un peu plus haut que le reste de notre labyrinthe Maintenant, encore un détail avant de commencer à créer les tuiles, comme nous l'avons dit, nous devons l'ajouter au tableau des acteurs pour détruire. Je vais amener les acteurs à détruire. Je vais juste appuyer sur Ajouter. Et je vais également ajouter cet acteur, qui est le résultat de l'introduction de l'acteur PP Maintenant compilons et sauvegardons. Allons ouvrir notre pile. Maintenant, lorsque nous l' ouvrons pour la première fois, le plan s'ouvre à nouveau comme ceci Il suffit d'ouvrir l'éditeur de plan complet. Encore une fois, au cas où quelqu'un se poserait la question, il s' agit de la boîte par défaut des valeurs par défaut de ce plan . Vous pouvez également la trouver sur les par défaut des classes ici pour les détails Je vais le brancher ici. Et commençons. Ce que nous allons faire d'abord, c'est ajouter des mailles de grenier et des flèches sur notre cuve à composants Donc, pour les voir, allons dans notre fenêtre d'affichage. Et appuyons sur Ajouter un maillage statique. Nous ajoutons un maillage statique. Nommons ce maillage. Quatre. Et il s'agit d'un composant de maillage statique. Il faut donc ajouter une entité de maillage statique à ces propriétés ici, car cela signifie au plan que vous avez un maillage statique Cela ne dit pas au plan quel maillage statique. Mais nous allons passer ici à l'onglet détaillé, passer à propriété du maillage statique et sélectionner notre sol Maintenant, y a-t-il deux étages, le 400 par 400, et le sol ordinaire. C'est un étage de 600 x 600, nous allons donc utiliser celui-ci. Maintenant, comme nous l'avons dit, notre nord est l'axe positif sur x, et notre ouest, notre est , est l'axe positif sur y. Pour rendre les choses un peu plus visuelles pour nous, afin que nous puissions savoir lequel c'est le cas en les regardant simplement sur la carte. Nous allons ajouter quatre flèches. Ajoutez d'abord. Ensuite, je vais copier-coller. 43 fois. Oh, je vais également renommer les flèches nord, flèche sud et flèche ouest. M. Maintenant. Comme ces flèches sont petites, augmentons également leur taille. Je vais tous les sélectionner, les dimensionner et les augmenter d'un facteur deux, en gros. Maintenant, ils sont un peu plus gros. Faisons-les pivoter en conséquence. Je vais appuyer sur le rotateur, sur E , faire pivoter la deuxième flèche, la flèche est, et maintenant faire pivoter la flèche sud Faites pivoter la flèche ouest. Tout cela est très bien. Nous avons quatre flèches qui indiquent la direction, mais nous n'avons aucune information particulière sur ce qui est quoi. Donc, si je vois cela, n'ai pas sélectionné d'outil ou quoi que ce soit d'autre, je ne pourrai pas dire si c'est le nord, c'est l'ouest. Mais ajoutons du texte sur chaque flèche. Texte, texte de flèche, sélection de la flèche. Sélection de la dernière flèche et du dernier texte. Pourquoi est-ce que je les sélectionne ? Parce que lorsque je les sélectionne, il les ajoute automatiquement en tant qu'enfant du composant sélectionné. Si j'avais sélectionné la racine, cela lui aurait ajouté les composants de texte apparentés à la racine Maintenant, ils sont attachés à la flèche. Donc, si je change le sens de la flèche, le texte change également. Maintenant, je vais avancer un peu plus les textes . En fait, comme vous pouvez le voir, les flèches sont affichées avec e de deux, notre texte, il est automatiquement ajouté avec 0,5. Il est donc essentiellement redimensionné si je le place en dehors du parent de la flèche J'ai été parent jusqu'à la racine du plan, pas créer la racine, juste Vous pouvez voir qu'il est revenu à un, un, un, mais le texte reste de la même taille. Nous revenons en arrière et le mettons en relation avec la flèche, qui était vers le nord Je vois qu'elle est revenue à 0,5 0,5 0,5, mais elle a augmenté la taille. Cela est dû au fait que la flèche elle-même est redimensionnée sur deux. C'était comme quatre, ce serait 0,25, par exemple, démontrons cette pièce jointe Encore une fois, j'en ai fait une racine. Dans le sol. C'est pourquoi. Voilà, la flèche ou je vais toucher à nouveau le texte. Vous pouvez voir que c'est 0,5. Maintenant, si je ramène la flèche à deux, le texte restera à 0,25 parce que maintenant je fais de la mise à l'échelle alors que je l' ai étant enfant Le moteur pense donc que je pense à tous ces calculs automatiques qui se produisent en même temps. Je vais m'en débarrasser une fois de plus. En fait, je n'avais pas besoin de devenir parent. vais juste passer à un, un, A. Je vais le faire pivoter un peu. Tournez en sens inverse, donc je vais aussi y aller. Je vais modifier dans les détails le texte du texte en n pour le nord. Ici. Maintenant, nos flèches sont à l' emplacement zéro avec ce zéro. Ce n'est peut-être pas la meilleure option car ils devraient être un peu plus hauts que le sol. En ce moment, ils sont exactement sur le sol. Je vais donc changer de lieu. Je contrôle et j'ai sélectionné chacun d'entre eux. Je vais changer d' emplacement pour net. Ou 100 ou 50, juste un peu plus. 90 k. Maintenant, pour ceux qui sont nouveaux, la façon dont je déménage ici est la même que je déplace le rédacteur en chef. Cela signifie qu'en maintenant le bouton droit de la souris enfoncé et en utilisant AWS T&E, déplacez-vous Oh. Maintenant que nous avons n, ce n'est pas tout à fait centré ici. Déplacez-le. Je le déplace, je ne peux pas le centrer le sujet actuel sur l'espacement des grilles Mais comme c'est dix, si je le mets sur cinq, peut-être que le centre est bien centré. Oui. C'est un centre cinq mieux placé. Mais s'il n'était même pas centré sur cinq, bien sûr, je pourrais le mettre sur un seul Je le mets en marche et pour l'instant, je pourrais juste le désactiver et le snapping serait désactivé. La même chose que nous pouvons faire avec la rotation avec les degrés, et la même chose que nous pouvons faire avec l'échelle contrôlée par ces options ici. Maintenant, mettons plus de texte, nommons en fait ce textrander Je vais passer à l'autre textnder. Je vais régler l'échelle à un. N'oubliez pas de l'avoir verrouillé, sorte qu'il redimensionne tout en un. Si vous l'avez déverrouillé, vous avez un composant d'échelle, et attention, s'il est même redimensionné, je le verrouille, il l' augmentera en conséquence Verrouillez-le à nouveau. Set 1, 11. Encore une fois. Apportons-le ici. Faisons-le pivoter. Ça sait vraiment quoi. Cela devrait être comme ça. Je l'apporte ici. Je vais remplacer le texte West W. E. one. OK. Allons vers l'est. C'était le. Maintenant, vous voyez, parce que je fais une rotation encore plus longue, faites-la pivoter. Et c' est en fait la flèche est. Donc, je vais le réinitialiser, le transformer et le faire pivoter, puis recommencer. Je le réinitialise en cochant la flèche en gras ici lorsque vous déplacez quelque chose et je vous demande si vous souhaitez le réinitialiser à sa propriété par défaut ici avec cette flèche Je vais le dire ainsi. Je vais le faire pivoter de cette façon, cette façon, et nous allons le laisser tomber plus bas. W E de changement pour tirer à nouveau, un peu plus bas. Je pense qu'ils ont l'air bien. Maintenant, sur la flèche ouest, faisons la bonne flèche cette fois. Je vais mettre le texte sur Ws ailleurs. Je vais modifier la rotation. Correctement. Il passe à un, et placez-le un peu plus bas ici. Classer bien, pour le dernier, South, Ramenez-le vers le bas, S pour le texte, et laissez en conséquence. Bien sûr, réglez l'échelle à un, et nous définissons l'emplacement. Nous avons maintenant une direction nord-sud-ouest pour voir où se trouvent nos sorties et entrées possibles Par exemple, si nous allons jouer maintenant, nous pouvons voir l'écran de chargement. Oui. Passons donc à notre écran de chargement, à notre panneau de cavas, et masquons la compilation et la sauvegarde, afin que nous puissions réellement voir ce que nous construisons Si j'appuie sur Play, l'appareil photo ne fonctionne pas correctement. Mais si je l'éjecte, appuyez sur Alt et S, par exemple. Non, par exemple, c'est le raccourci pour s'éjecter. Je peux à nouveau me déplacer librement dans l'éditeur. Nous pouvons voir le nord-est sud-ouest, mais nous ne pouvons pas voir les flèches. La raison en est qu'il existe une option pour les flèches. Nous vous le montrerons plus tard. Il existe donc une option permettant de masquer les flèches dans le jeu. Eh bien, comme vous pouvez le voir, notre sortie se trouve probablement au nord, car notre bloc d'introduction se trouve à l'opposé au sud Comme vous pouvez le constater, ce n'est pas exactement centré, et la raison en est que si nous passons à l'ouverture du bloc d'introduction, nous passons à la fenêtre d'affichage Vous pouvez voir que le centre est en fait ce coin, pas le centre de la place. Voilà pourquoi ça en a l'air. Nous n'en avons pas besoin. C'est pourquoi il n'a pas l'air centré. Mais s'il s'agissait d'un pivot central tubulaire, il aurait été centralisé Maintenant, je pense que c'est suffisant pour celui-ci. En fait, affichons à nouveau les flèches, la variable de jeu cachée, passons à la fenêtre d'affichage, au port Ti, et non au générateur de labyrinthes Sélectionnons toutes les flèches et passons à l'option « Gagner » dans les détails. Je viens d'écrire ici HID, et je vais désactiver cette option si je compile et enregistre. Agir. Nous pouvons maintenant voir les flèches et la sortie vient de l'est, donc notre introduction vient de l'ouest C'est tout pour celui-ci. Je te verrai le prochain. Au revoir. 14. Ajouter des murs comme un château: Bonjour et bienvenue sur Game Design Workshop sous le moteur, cinq appels procéduraux de Dungeon Action Bz Auparavant, nous avions commencé à créer la flèche en forme de mosaïque. Nous avons ajouté des flèches, un étage et du texte pour indiquer la direction des flèches, fonction de nos coordonnées. Oh. La façon dont nous utilisons les coordonnées, en gros. Non, maintenant. Commençons par quelques autres choses pour que ce donjon donne un peu plus l'impression d'avoir un étage Si nous appuyons sur Play, ça a l'air bizarre Plancher au milieu du ciel. Ajoutons donc quelques extras, pour que cela ressemble davantage à un donjon Non, ce que nous allons ajouter, c'est du désordre statique. Plus d'une heure. Quatre. Nous en avons donc quatre. Nous pouvons les nommer deux, mur un. Mur deux. Et quatre. Maintenant, parce que j'avais écrit HID, cela ne faisait que montrer les options contenant HID. Alors lis ça, pour que je puisse tout voir. Et pour le maillage statique tout cela, je vais tout sélectionner. Et comme il s'agit d'un attribut commun, je peux l'ajouter à chacun d'entre eux. Je vais sélectionner à nouveau et cette fois le 400 par 400. Et en fait, je vais également changer le matériau. Je dois le faire en sélectionnant chacune d'entre elles et en utilisant la pâte à brique B. Je ne sais pas comment le prononcer. Mais c'est ce que nous utilisons. Et je vais le sélectionner sur tout. Ce matériau utilisé dans ce sol provient du pack de démarrage original du vrai moteur. Maintenant, déplaçons-les pour créer quelque chose comme des murs. Mais tout d'abord, je vais changer l'échelle pour qu'elle soit réellement de deux. Peut-être un peu plus long en 2.3, en hauteur, et je dois le déverrouiller avant. Merci. Maintenant, je vais copier, copier cette valeur et la coller dans le reste. C'est une autre option qui s'offre à nous. Nous pouvons même copier des ensembles d'options entiers, comme je peux copier la transformation complète de la catégorie de propriétés, par exemple, et si l'autre élément contient la même chose, collez, et cela aurait dû fonctionner. Encore une fois, les propriétés de la pile dans la catégorie et les propriétés basales dans la catégorie. OK. Voilà. Œuvres. Est. Maintenant, ils ont tous les mêmes propriétés. Maintenant, le problème est que, parce que cela est multiplié par deux, c'est 400 par deux, cela crée 800 étages, pas 600 étages, ce qui n'est pas vraiment un problème pour nous en ce moment parce que nous avons besoin de plus d'espace. Nous allons peut-être les placer sur les bords. Peut-être que je me trompe, peut-être que notre taille n'est pas 600, mais 800. J'ai peut-être été mal informé. De la part des trois personnes D à propos des actifs. Mais c'est bon. Nous pouvons simplement changer la taille de nos carreaux à 800. Allons-y. Nous pouvons le faire à la valeur par défaut de la taille des tuiles du générateur Maze, au moins 2800, ou nous aurions également pu le faire ici dans le menu principal heure actuelle, nous devons certainement le faire dans le menu principal, car l'ancienne valeur par défaut aurait surestimée car elle n' aurait pas été mise à jour ici Maintenant, enregistrement du fichier, enregistrement complet. Nos carreaux sont au nombre de 800. Maintenant. Placez-les grossièrement. Là-bas. Ils doivent créer une boîte. Lorsque nous les remplaçons grossièrement, nous les fabriquons à froid. Un peu plus bas, car comme vous pouvez le voir à la même hauteur que le sol, les matériaux peuvent se chevaucher, et nous ne voulons pas que cela se produise. Au fur et à mesure qu'il baisse. Oui, ça a l'air bien. Ça n'a pas vraiment d'importance. Oui, c'est bon. À l'heure actuelle, nous avons quelque chose qui ressemble à des murs. Je l'éjecte à nouveau, d'un côté ou de l'autre. Vous avez quelque chose qui ressemble à des murs. Lorsque nous plaçons les objets au-dessus d'eux, comme les murs et tout le reste, nous devrons peut-être les réajuster en fonction de ce que nous voyons Passons au générateur de labyrinthe et carrelons la tuile BB, ajoutons encore une chose Vous allez ajouter un texte. Un autre rendu de texte. Cela va le placer ici et le faire pivoter, regardez la caméra. Oh, je n'ai pas pu annuler parce que j'ai laissé reposer. Et lorsque vous jouez sur n'importe quel éditeur, les modifications nécessitent également une certaine combinaison pour être enregistrées. Eh bien, en fait. Mais lorsque vous jouez sur un éditeur, ne faites essentiellement pas de modifications. C'est l'une des règles. Tu peux. Comme je l'ai dit, vous pouvez économiser. Si vous avez un niveau auquel vous voulez jouer, éjecter et déplacer quelque chose, vous pouvez et vous pouvez réellement le sauvegarder Il s'agit du bouton k. Permettez-moi de vous le démontrer. Passons au niveau du jeu. Si j'appuie sur Play, je vais m'éjecter tout de suite. Par exemple, je ne veux pas déplacer cela parce que cela provient de notre plan, mais je veux déplacer, par exemple, l'éclairage directionnel n'est pas la lumière directionnelle, disons que c'est une autre table d'acteurs. Je veux le déplacer. Et peut-être le faire pivoter également d'un autre degré. Si j'appuie sur K en le sélectionnant, vous pouvez voir l'état de sécurité de K. Lorsque j'arrête de jouer, il conservera la rotation et emplacement ou l'échelle que je lui ai définis. Rétablissons ce paramètre par défaut, puis revenons à notre plan directeur Maintenant, revenons à notre texte, je vais aimer celui-ci, daté en fait. Et pour le texte, nous allons le sentir depuis un autre endroit et nous allons augmenter la taille Et nous allons le faire avec une taille d'art à partir de 26, je vais la mettre à 30. 40, 50, 50, ça a l'air sympa. Je l'ai placé quelque part ici parce que ça va être une phrase. En fait, je vais y aller ici. Je vais passer au script de construction. Maintenant. Je parle un peu du script de construction. Ce qu'il fait, c'est qu'il crée des choses, qu'il corrige des informations, et qu'il manipule le plan avant de le posséder . Peut-être allons-y. Je vais récupérer ce nouveau texte, dont je n'ai pas donné le nom au numéro de dossier. Je vais l'amener ici avec contrôle, et je vais définir le texte. Je vais d'abord le connecter. Pour le texte, je vais le remplacer par « ring actually text », c' ring actually text », est-à-dire transformer une chaîne en texte. Maintenant, je vais faire un stylo ici, c' est-à-dire de la chaîne ci-dessus à la chaîne ci-dessous. Pour la première chaîne, je vais avoir pile is Or B, je vais en fait créer une tuile variable. Quand je lui ai mis un mot, il n'a pas aimé deux mots parce que nous avons le numéro du texte, le numéro du texte, et nous avons mis un score en t devant. Maintenant, je peux le compiler et le changer en bois. Hé, je vais remplacer cela par la variable numérique T de N à entier. Je vais l'apporter ici, et je vais le connecter à B. Maintenant, où ce numéro ty va être rempli avec des informations qui seront affichées lors de l'apparition Si vous compilez et que cela n'a pas fonctionné la première fois, cela indique que vous ne pouvez pas analyser les chutes de valeur par défaut Je ne vais pas entrer dans le vif du sujet. Vous pouvez recompiler, et c'est corrigé. Oh. Ça va être Cela va être rempli sur instance modifiable et exposé lors des spawns Lorsque nous créons une tuile, par exemple, notre première tuile dans le générateur de labyrinthe, accédez à notre première tuile d'apparition. Réglez deux tuiles. Nous avons maintenant ce numéro de tuile ici, et la première tuile est zéro. Pour compiler et enregistrer, voyons à quoi cela ressemble. Je m'éjecte. Le chiffre est zéro. Maintenant, je n'aime pas qu'on s'éjecte à chaque fois. Je vais juste apporter un appareil photo. Dieu. Je vais le mettre à zéro, zéro, zéro ou un peu plus. Regarde vers le bas. Eh bien, on le met ici et on le fait en biais. Maintenant, si je commence, il n'a rien fait parce que nous ne l'avons pas configuré pour qu'il possède cet appareil photo. Nous allons passer à un plan de niveau dès maintenant, comme la caméra, passer au plan de niveau Cliquez et créez une référence. va me rafraîchir, je vais te mélanger à Blend. Connectez la nouvelle cible, cette caméra, et connectez-la à Bigin play, compile et seven play Et maintenant, nous possédons cet appareil photo. OK. Donc, le nombre de tuiles est zéro, nous avons les flèches, et nous avons en fait des murs, ce mur est un peu en retrait, c'est ce mur. Ce que je laisse se chevaucher, je le mets bien en place, un peu plus bas. OK, jouons. Annonce. Nous avons notre numéro horaire, notre itinéraire et nous avons un point de départ aléatoire à chaque fois Maintenant, ce que nous devons faire, c'est frayer un chemin jusqu'au moment où nous aurons notre sortie, et lorsque nous saurons que nous sommes bloqués depuis l'ouest, ces flèches doivent donc être cachées. Mais c'est quelque chose que nous allons laisser pour la prochaine leçon. Au revoir pour le moment, à la prochaine. 15. Communication avec des modèles d'interface: Bonjour, et bienvenue au Game Design Workshop et au cours de création de RPG d' action Real Engine Five Procedural Dungeon Auparavant, nous avions ajouté quelques murs sur notre carreau, et nous avions également ajouté texte du numéro de tuile que nous avions ajouté au script de construction. Comme nous l'avons dit, cela fonctionne avant que le Blueprint n'apparaisse dans le monde, alors que si je l'avais , par exemple, au début de la partie, il fonctionnerait dès le début de la partie C'était après le frai. Oh, maintenant, continuons à regarder nos flèches en fonction de nos sorties, en fonction nos sorties côté bloqué et de celui qui ne l'est pas Allons-nous également l' utiliser pour savoir quand je construirai la pièce suivante, si la précédente, où se trouve exit, où puis-je où se trouve exit, où puis-je construire, va le faire, nous aurons besoin d'une fonction, mais nous n'aurons besoin d'aucune fonction. Juste au cas où vous voudriez créer plus tard vos propres tuiles, votre propre labyrinthe Nous allons créer et peut-être avons-nous un labyrinthe créé par de nombreuses tuiles S'ils ont les fonctions, en fait, pas s'ils ont les mêmes fonctions, mais s'ils ont un ajout au plan appelé interface de plan, ils peuvent fonctionner de la même manière. Ils peuvent être utilisés à partir du même algorithme Laissez-moi vous expliquer comment mordre la peinture. Disons que nous avons un algorithme qui dit : «   Créons un algorithme en fait ». Si la tuile actuelle est égale à la tuile Mc, p ? Si ce n'est pas égal, alors sur tuile. C'est ce que nous allons créer ultérieurement. Lorsqu'une tuile d'apparition et moi voulons actionner ses flèches, étant donné que lorsque notre mécanisme d'apparition nous donne une référence à l'objet que nous créons, nous pouvons appeler directement une fonction contenue dans ce plan Disons que dans notre plan de tuiles, tuile. Et si j'avais P, je le ferais. Et cette fonction ne l'apprécierait pas. Si j'avais, par exemple, quand je sélectionne une classe, si je mettais une case aléatoire ici pour sélectionner parmi différentes tuiles, des classes aléatoires. n'aimerais pas que je m'en inspire et que j'exécute une fonction spécifique de ce plan Voici donc d'où viennent les interfaces Blueprint. Ils ont un tas de noms de fonctions avec des entrées, sorties, tout ce qu' une fonction peut faire, en fait, elles peuvent être partagées avec certaines classes parmi lesquelles nous les sélectionnons. Ainsi, lorsque j'ai une fonction BI, une fonction d'interface de plan ici, je peux envoyer un message quelle que soit la classe, ce n'est pas un mot, quelle que soit la classe, mais je le crée, tant que la classe contient cette interface de plan, telle qu'héritée dans Je vais vous montrer comment l'ajouter dès maintenant. Donc, en gros, c'est l'une des utilisations des interfaces Blueprint Nous n'allons pas nous concentrer sur ce qui est le plus optimal. Il existe d'autres moyens d'envoyer des informations. Il existe des répartiteurs d'événements, des références directes, il existe de nombreuses façons de le faire Mais qu'est-ce qui est le plus optimal ou non ? Cela dépend de nombreux facteurs. Et en général, ce n'est pas parce que les problèmes ne viennent pas de là. Il s'agit généralement de problèmes de collision. s'agit généralement de problèmes de navigation, du désordre de navigation. Avec l'IA, différents types de problèmes créent des problèmes beaucoup plus graves dans les jeux. Mais vous pouvez toujours utiliser le profileur et vérifier les points faibles de votre jeu. Maintenant, ajoutons cette interface, mais pour l'ajouter, nous devons la créer. Passons donc à notre dossier Blueprints. Cliquez avec le bouton droit de la souris pour créer un nouveau dossier, en fait. C'est ce qu'on appelle ce dossier, BI, Blueprint interfaces. Vous allez entrer dans ce dossier. Vous allez dans Blueprints, cliquez avec le bouton droit de la souris, allez dans Blueprints et sélectionnez l'interface Blueprint Je vais l'appeler BI plt Homes. Et je vais l'ouvrir. Maintenant, quand je l'ouvre, ici, il nous donne déjà une nouvelle fonction à ajouter. La première fonction que nous allons ajouter est une fonction permettant de trouver la prochaine sortie. Parce que pour savoir où nous sommes, nous devons d' abord trouver la prochaine sortie. Donc trouvez Alors nous aurons besoin de deux entrées pour cela. Ils seront du type e. Oh, c'est déjà pour moi parce que c'est la dernière variable que j'ai créée, et nous allons nommer ce revenu. Érection. Et allez dans les sorties et créez une autre variable. sera encore une fois dans la direction e, et ce sera la sortie. Mais cette fonction va faire des choses pour trouver la direction fonction de la direction entrante, où est la sortie ? Parce que nous ne voulons pas que la sortie soit la même que la direction d'entrée. Parce qu'alors nous ferons des allers-retours au ping-pong. Et la fonction suivante serait les flèches, pour définir la visibilité selon que le chemin est bloqué ou non. Maintenant, comme vous pouvez le constater, pour ceux qui sont nouveaux, je ne peux pas placer de code ici. En effet, sur les interfaces de plan, nous les devons au plan réel auquel nous les ajoutons Et la raison en est que nous pourrions vouloir la même fonction avec les mêmes entrées et sorties. Eva fait des calculs différents, des opérations différentes à l'intérieur Ils peuvent fonctionner différemment sur le carreau BV. Ils peuvent également fonctionner différemment sur les tuiles BV, mais les entrées et les sorties seraient les mêmes Quoi qu'il en soit, continuons. Comment ajouter cette interface à notre plan ? Pour ce faire, nous allons passer aux par défaut des classes, je suis désolée, paramètres des clus, et nous allons aller tube des interfaces et les interfaces implémentées Nous allons sélectionner Ajouter et appeler la BI Mase arrive. Maintenant, sous nos fonctions variables et variables, une nouvelle catégorie appelée interfaces a été créée . Si je l'ouvre, je peux clairement voir que je ne l'ai pas compilé. Je vois clairement nos deux fonctions. Les fonctions que vous voyiez auparavant étaient une fonction que j'ai essayée sur le disque, mais elle n'a pas bien fonctionné. Donc oui, ce sont nos deux fonctions en ce moment. Compilez à nouveau et il compilera. Compilez toujours votre plan de classe I. Dave, puis fermez avant faire ce que vous avez ajouté à votre plan Maintenant, la prochaine étape avant de commencer à corriger ces fonctions, pas à les corriger, mais à les créer, serait de créer une variable pour contrôler les informations indiquant si une direction est ouverte ou non. Si une direction y a accès, nous pouvons avancer ou elle est bloquée. Et comme vous pouvez le voir, je jouais déjà avec ça, et c'est une variable cartographique que j'ai créée. Commençons par le début, toujours. Supposons, par exemple, qu'il ne s'agisse pas d'une carte. Supposons que ce soit une variable unique, et qu'elle soit du type directions. Créez une nouvelle variable du type directions, puis sélectionnez la variable cartographique, le conteneur de carte. Et la deuxième partie serait un Bolan. Direction activée/désactivée. C'est ce que nous avons créé ici. Je vais appeler cela des directions variables. Maintenant, je vais avoir besoin d' une autre variable, qui serait encore une fois une carte, et je vais avoir les deux côtés de la variable e. Je vais la nommer ci-contre. Je vais compiler et enregistrer. Et pour ces deux variables, je dois définir des valeurs par défaut. Je vais donc d'abord suivre les indications. Je vais en ajouter un. Je vais dire que c'est l'ouest. Je vais en ajouter un autre, dire que c'est le sud, ajouter un autre, dire que c'est l'est, et je vais en ajouter un autre qui sera au nord. Je vais laisser la partie «   In », la deuxième clé étant « als ». Maintenant, pourquoi n'ai-je pas appuyé sur Toujours ajouter quatre ? Et puis parce que si l'un d'entre eux est nord et que la valeur par défaut est le nord, je ne peux pas en ajouter un autre. Comme vous pouvez le constater, il est indiqué qu'il est impossible d'ajouter une nouvelle clé car elle existe déjà. Maintenant, je vais également le faire dans les directions opposées. Et ce serait au sud, en face au nord. Ce serait à l'est, donc l'opposé est à l'ouest. Ce serait à l'ouest, donc à l'opposé c'est à l'est. Et ce serait le nord, l'opposé étant le sud. Je vais compiler et enregistrer. Utilisons d'abord les instructions. Passons à notre fonction Tal arrows. Maintenant, il a été créé en tant qu' événement là où je le voulais comme fonction. Je vais donc le supprimer. Je vais le supprimer et modérer un peu le système car cela ne me permettra pas de le faire fonctionner facilement. Ce que je vais faire pour le faire, c'est simplement ajouter la pile de paramètres, revenir à notre plan Huit flèches fonctionnelles au total. Ajoutez-y quelque chose. Faisons ça. Ajoutons le This is fine. Ceci, compilez et enregistrez. Retournez ici, je vais supprimer la sortie, compiler et enregistrer. Et maintenant je l'ai comme fonction. Maintenant, pour notre fonction, le total des flèches. Trouvons les directions sur la carte. Et lorsque nous manipulons des informations provenant de la carte, nous ne pouvons pas réellement obtenir un résultat semblable à un tableau Nous devons passer au tableau, l'une des deux clés. Je vais aller me chercher. En fait, ce sont des clés et des valeurs. Ce ne sont pas deux clés. C'est e et les valeurs de Anyway, I'm going to get keys and going to or each loop of the keys. Nous avons déjà expliqué quelques points sur les boucles, maintenant ça va être un jeu d'enfant. Je vais à nouveau obtenir une direction, et je vais trouver une valeur. Il est possible de trouver une valeur à partir d'une clé. Je vais le connecter ici, l'élément du tableau depuis la boucle avant, et je vais trouver la clé à partir des instructions. Et je vais récupérer toutes mes flèches en fait. Un à ou ce dont nous avons besoin, c'est d'une location basée sur les instructions. Je vais donc relier la flèche nord à la flèche nord. Je vais relier la flèche sud au sud, pour relier l'est, l'ouest à l'ouest. À partir de ce tableau, il sélectionne en fonction du rayon, sur la base de cette sélection en fonction des directions. Je vais améliorer la visibilité, et aussi me propager auprès des enfants Et la visibilité qui sera définie sera définie en fonction du résultat de la recherche. Maintenant, il dispose de deux broches optionnelles. L'une d'elles est de savoir s'il a trouvé l'objet parce qu' il arrive ils demandent quelque chose qui ne se trouve pas dans les instructions ci-dessus. Et l'autre est la valeur des données. Je vais relier cela à la visibilité, et je vais le relier ici. Basez-le ici et incomplet. Je vais terminer le set. Notez que nous avons terminé la fonction. Maintenant, je vais compiler et enregistrer. Et testons cela, par exemple. Mettons les flèches Tg ici. Disons de compilation Lorsque j'appuie sur Play, aucune flèche ne doit être affichée car nous les avons de manière invisible. Nous savons que tout est bloqué. Mais si j'appuie, disons que le Nord et le Sud sont ouverts, cela fonctionnera. Oui, ça marche. Oh, je pense que c'est suffisant pour celui-ci. Je te verrai bientôt. Au revoir. 16. Trouver les sorties disponibles: Bonjour et bienvenue sur Game Design Workshop à propos du cours de cinq donjons procéduraux : A Plus. Lors de la leçon précédente, nous avons parlé un peu des interfaces de plan et nous avons également créé quelques variables, la variable de direction, qui contient toutes les informations pour l'ouest, sud-est et le nord, ainsi la visibilité des flèches sous forme booléenne Et nous avons également créé la carte des directions opposées, laquelle nous avons les directions et le contraire. Nous avons également créé la fonction des flèches totales, qui consiste à prendre les directions à parcourir chacune d'elles et à trouver la flèche appropriée pour activer ou désactiver la visibilité. Maintenant, continuons à trouver la sortie. Un peu de vapeur s'est échappée ici. Ça ne fait rien. Continuons donc à trouver notre sortie. Ce que nous devons d'abord faire, c'est promouvoir orientation des revenus vers une variable au cas où nous en aurions besoin plus tard. Nous pouvons en fait l'utiliser librement dans cette fonction, simplement parce que nous avons ces revenus ici. Laissez-moi vous montrer une fonctionnalité cool et réelle Maintenant, laissez-moi vous montrer une fonctionnalité cool et réelle. Si je renomme ce titre, pour être plus clair, Income destinations, mettons un S ici. Pendant que je suis dans la fonction, je peux appeler n'importe quelle entrée qui arrive à cette fonction, simplement en tapant le e, direction du revenu. Il est clair que c'est différent dans une autre catégorie. Ce n'est dans aucune catégorie en fait. Cela signifie que c'est dans cette fonction. Je peux l'appeler variable, tant que je suis dans cette fonction. Si je sors de cette fonction pour concentrer sur le graphique et que je colle cette variable, vous verrez qu'elle n'existe pas. Maintenant, lorsqu'une variable n'existe pas, nous pouvons cliquer avec le bouton droit de la souris et créer une variable pour la créer, et elle conservera les données, le type de données et tout le reste. Maintenant, supprimons-le. Nous n'en aurons pas besoin. Revenons à notre fonction. Oh, connecte-le ici. Nous avons des orientations en matière de revenus. Notre première étape devrait être de mettre à jour notre carte des directions, de faire sorte que cette direction soit réellement une direction mobile. Il est libre de se déplacer par le côté. Ça ne bloque pas. Nous devons donc activer les flèches. Mais ce que nous allons faire, c'est prendre la direction opposée. Nous allons trouver la valeur de la direction des revenus, que je peux simplement faire glisser à partir d' ici, peu importe, puis je vais l'ajouter à la carte. Et pourquoi je vais ajouter, comme nous l'avons expliqué, parce que nous ajoutons une valeur qui existe déjà, cela change simplement la valeur. Il n'en ajoute pas un nouveau. Je vais donc le connecter ici, définir la valeur sur true et connecter l'exstitution. Maintenant, l'étape suivante consiste à déterminer laquelle de ces directions est libre pour créer une sortie. Ce que nous allons faire, c'est dupliquer les directions. Tout celui-ci sort. Je vais compiler, et comme il s'agit d'un doublon, il contient déjà nos valeurs. Maintenant, ce que je vais faire, c'est supprimer les directions des revenus, qui devraient en fait être nommées « direction des revenus ». Ce nombre n'en est qu'un. Ici, je vis comme ça. Maintenant que nous avons retiré une valeur d'ici, la direction des revenus, le reste des valeurs devrait être libre pour continuer notre construction Moi, exemple pour trouver la sortie que nous voulons. Je vais donc chercher les clés. Maintenant, ce ne sont que les réponses possibles, et je vais obtenir un objet aléatoire. Je vais en faire une variable, et je vais l'appeler sortie possible. Cette année, cette année. Maintenant, nous avons une sortie possible. Puisque nous l'avons décidé et trié dans une variable, nous devons le supprimer à nouveau des sorties possibles Je vais le connecter ici. Je vais le connecter ici, et il sera supprimé. Il ne reste donc plus que deux sorties possibles. La prochaine chose que nous devons faire est d'ajouter les directions, par exemple et en disant « ajouter », je veux dire mettre à jour la valeur de notre sortie possible. Et ça, ça deviendra vrai. Donc, pour le moment, compilez et enregistrez, la prochaine étape serait de regarder les flèches. Puisque nous avons mis à jour les valeurs des directions, la fonction que nous avons créée pour Togal arrows va mettre à jour nos flèches Au final, amenons le nœud de sortie, connecté ici, et connectons la sortie possible à la sortie de sortie. Nous pourrions en fait nommer cette sortie, pas possible exit. Compilez et enregistrez. Passons maintenant à la peinture et expliquons ce que ce code va réellement faire. Quelle est la théorie qui le sous-tend ? heure actuelle, nous avons une boîte, notre boîte à tuiles, et nous décidons d'avoir une sortie, disons au hasard, de ce côté, et comme c'est la première case, ce serait notre introduction Bloc d'introduction. Maintenant, nous trouvons une sortie aléatoire sur la première vignette du téléphone. La deuxième pièce que nous allons construire. Mettons-le en jaune, en fait. La deuxième pièce que nous allons construire le sera automatiquement. Nous exécuterons la fonction, bien entendu, pour ce faire. K que cet endroit est son entrée et qu'il décidera au hasard d'un côté pour continuer. Supposons, par exemple, qu'il continue d'augmenter. le prochain article, nous saurons également qu'il y a une autre sortie ici, et disons que cela continue dans cette direction. Maintenant tu vois où je veux en venir. En fait, cela finira par aller ici, et cela ne pourra pas continuer. La façon dont nous le construisons ressemble à un serpent, à un ver. Cela crée une sortie de plus. Ce que nous allons faire, c'est créer un algorithme semblable à un algorithme Buck Track pour ceux qui sont un peu plus avancés. Qu'est-ce qu'un algorithme Buck Track ? Cela signifie qu'en bref , cela place quelque chose, jusqu'à ce que les règles stipulent que vous ne pouvez pas placer quelque chose. Il n'y a plus de placement sur cette base. Il revient donc en arrière et vérifie s'il peut acheter un autre moyen de transport. Maintenant, c'est une explication très approximative. C'est ce que nous allons faire. Mais pour nous, exactement, nous voulons prendre du recul. Par exemple, un algorithme de retour en arrière plus traditionnel partira de là Il a trouvé un endroit où il ne peut pas continuer, alors revenez en arrière. Pouvez-vous trouver un autre endroit pour continuer ? Nous allons en fait choisir un bloc aléatoire pour créer aléatoirement des donjons ramifiant le donjon à Éloignez-vous, nous avançons trop. Je pense que c'est un bon point d' arrêt pour celui-ci. la leçon suivante, nous pouvons commencer par le construire et expliquer quelques points supplémentaires. Au revoir On se voit le prochain. 17. Algorithme pour la forme de labyrinthe de base: Bonjour et bienvenue dans le cadre de l'atelier de conception de jeux organisé dans le cadre du cours de création procédurale de Dungeon Action-RPG Engine Five création procédurale de Dungeon Action-RPG Précédemment, nous avons créé la fonction find exit, qui attribue la direction du revenu à notre variable, effectue des calculs et ajoute et supprime des directions à notre variable de direction. Il met à jour les statistiques, les flèches qui doivent être visibles, et à partir de nos directions possibles, nous supprimons la direction d'où nous venons. Ensuite, nous stockons une direction aléatoire à partir de celles de gauche, et nous la supprimons également et nous changeons les flèches, les directions, les variables pour rendre les flèches visibles. Ensuite, nous totalisons les flèches avec la fonction que nous avons créée auparavant. Maintenant, nous avons également expliqué un peu notre algorithme qui sera un algorithme de retour en arrière Pour ceux qui ont besoin d' une explication plus détaillée sur l'algorithme Thera et ce qu'il est Il s'agit essentiellement d'une technique permettant de résoudre les problèmes progressivement en essayant des solutions partielles , puis en les abandonnant si elles ne conviennent pas Par exemple, il essaiera de créer pour placer une autre tuile S'il ne peut pas en placer une autre, il reviendra à une position précédente, comme nous l'avons dit pour une position précédente aléatoire, comme nous l'avons dit pour une position précédente aléatoire et essaiera de créer d'autres tuiles à partir de là Commençons maintenant à créer un algorithme. Nous allons passer à Even Graph sur le générateur de labyrinthe, pas sur la tuile Nous, sur le générateur de BPM, nous allons passer à VNGraf. Nous allons créer un événement personnalisé. Appelons ce champ d'événement personnalisé. Maintenant, la première question que nous devrions nous poser concerne une branche. Avons-nous terminé, Avons-nous terminé nos tuiles actuelles ont-elles la même valeur que nos tuiles Mac ? Je vais l'apporter ici, et je vais le connecter. La première question est terminée. Si c'est vrai, nous en avons fini avec la construction de la première partie de notre. Sinon, ce qui est le plus intéressant, nous devrions commencer à construire. Maintenant, notre prochaine action sera d' augmenter le nombre de tuiles actuelles d'une unité. Je vais le coller ici, je vais en faire un plus et je vais définir les vignettes actuelles. Si nous l'augmentons d'un, nous pourrions également ajouter un plus, c' est-à-dire une augmentation de, qui augmente d'un Mais c'est également très bien. Pour la partie suivante, vient la partie la plus difficile car il s'agit essentiellement d'une question multiple. Et pour cela, nous avons besoin d'une fonction. Ce que cette fonction va faire. La première étape de notre question sera de trouver non pas la croix adjacente, mais la croix adjacente qui est vide. Créons une autre fonction, que nous appellerons base vide. L'orthographe est peut-être correcte. Qui sait ? Ce que nous allons faire, c'est obtenir nos coordonnées actuelles, et nous allons également obtenir la fonction avec laquelle nous avons créé la croix de recherche adjacente. Et à partir de cette liste que nous avons expliquée, nous obtenons tout ce qui est adjacent à nos coordonnées. Nous allons choisir pour une boucle, pour chaque boucle. R et nous allons faire quelques tests. Le premier test que nous devons faire est de savoir ces coordonnées appartiennent déjà au donjon S'il a déjà sa place, cela signifie qu'il a une tuile, donc nous ne devrions pas y être. Je vais chercher la carte de notre donjon, je vais récupérer nos clés, et je vais demander si les clés contiennent un objet Et l'élément serait l'élément du tableau des voisins adjacents. Oh, c'est notre première question. Mettons une branche. Connectons-le ici. Maintenant, si c'est vrai, nous devrions continuer. Et la question suivante serait cela fait partie des coordonnées d'entrée forcée ? Comme par exemple, le bloc d'introduction ou, pour les niveaux suivants, le bloc ascenseur du précédent Me Oh, voyons si ces coordonnées sont également contenues dans un copier-coller dans la liste à vider de force. Maintenant, lorsque nous avons une succursale et que nous avons deux choses, nous voulons qu' elles soient vraies pour continuer à être vraies. Nous avons la variable. En fait, pas les deux. Pour changer cette phrase en «  si nous avons une branche et que nous voulons vérifier si l'une des conditions est vraie », nous pouvons l'utiliser pour les nœuds. Ou Boulan, ce qui signifie que si c'est vrai, ou si c'est vrai pour cela Cela signifie que si l'une de nos conditions est vraie, la branche partira de vraie. Ce que nous voulons, c'est qu'aucune des conditions ne soit vraie, alors tout part de faux. Maintenant, nous avons besoin d'une autre condition, et la condition serait de savoir quelle taille puis-je construire le labyrinthe ? Par exemple, que signifie le maximum sur x et y, je peux entrer dans la mise en page. Pour cela, nous avons besoin d'une nouvelle variable. Nous allons créer une nouvelle variable à partir de variables plus. Nous allons choisir une variable, lui attribuer le nom M s et changer son type en entier. Il s'agit d'un entier, bien entendu, car il n'y a pas de demi-blocs. n'y a qu'un, deux , trois, quatre, combien de blocs nous voulons. Et en n'ayant qu'une seule variable, nous ne pouvons créer que des labyrinthes non carrés car ils seront générés aléatoirement Mais si le nombre maximum d'allées est proche de la taille du labyrinthe, ce qu'ils peuvent ressentir, alors ce sera du squash Si nous voulions différencier x et y et créer des parallélogrammes, nous aurions besoin de la taille maximale x de la taille maximale y. Maintenant, pour nous, nous avons juste besoin de la taille mac Amenons-le ici. Ce que nous voulons faire, c'est comparer plus ou moins. J'ai dit le contraire. Si c'est plus grand c'est celui-ci, si c'est plus petit c'est celui-ci. Le x et le y, nous devons donc le dupliquer. Connecté ici. Oh, si nous avons nos coordonnées actuelles, qui ne sont pas nos coordonnées actuelles pour le moment, c'est cet élément du tableau, je vais détailler ici parce que c'est un point d'entrée et que je sépare le x et le y. Oh, si mon x est supérieur ou mon y est supérieur à la taille de mai, alors nous sommes hors limites Mais en même temps, nous voulons également utiliser les valeurs négatives, afin que notre labyrinthe se ramifie même derrière l'étoile Si nous commençons ici et que nous commençons simplement à sentir sur les axes positifs de x et y, c'est notre espace de construction. Mais si nous partons ici et là du négatif, puis de notre taille et des triples Ce que nous allons faire, c'est multiplier cela par moins un, afin de pouvoir l'annuler, et nous allons relier les deux C'est un gâchis. Mettons le positif haut et le négatif en bas et connectons cela ici. Ce que nous pouvons faire, c'est créer des notes lues en cliquant sur les câbles eux-mêmes. Cela se connecte ici, donc je vais le connecter ici. Je vais le ramener et le connecter ici. Et faisons-en un autre ici, nous ici. Maintenant, tu sais quoi ? Nous allons juste dupliquer cette variable ici, peut-être connectée ici. Ils sont prêts à voir mon erreur. D'accord, parce que quand c'est si spaghettifié, c'est difficile d'en tirer un sens X va ici et y va ici. Et cela n'est pas nécessaire. D'accord. Maintenant c'est un petit peu mieux. Maintenant, ce que je vais faire, c'est utiliser à nouveau la démarche logique Je vais m'y connecter ici parce que si tout cela est t, alors cela redeviendra vrai. S'ils sont tous faux, cela renverra faux, nous sommes donc dans le labyrinthe Et un petit truc sympa et réel aussi, c'est que je peux les prendre Je peux cliquer avec le bouton droit de la souris , les réduire, fonctionner. Je vais le rendre pur et l'appeler. Apprenez à utiliser les voyelles. Non, je n'ai pas créé la sortie car nous ne l' avions pas connectée. Mettons-le dans une variable. Disons que c'est interdit. Saisie du rebond. Allons à l'intérieur et connectons Act ici. Compilez et enregistrez. Revenons à notre page get empty adjacent et créons une autre épingle dans ce ou là et connectons-la ici. J'ai un peu dépassé ce point. Oui, nous pouvons obtenir plus d'épingles en cliquant sur l' épingle publicitaire comme je l'ai fait ici. J'aurais dû l'exexer. Quoi qu'il en soit, continuons. La logique est la partie la plus importante. Maintenant, disons que tout est faux, que tout est conforme à notre plan, que c'est correct. Et l'un de ceux adjacents est complètement vide. Il n'appartient pas déjà au labyrinthe. Il n'est pas vidé de force et il n'est pas hors limites. Permettez-moi de vérifier très rapidement en dehors des limites, que rien ne va mal. Si la taille de la carte est supérieure au X. Maintenant, c'est le contraire. Si le x est supérieur au labyrinthe, et si le x est plus petit, et ceci Cela signifie que, par exemple, si x vaut moins dix et que la taille est moins cinq, c'est s, et c'est hors limite. Cela est correct. Donc, si elles sont correctes, nous avons les coordonnées, mais nous n'avons pas lesquelles, nord-est, sud-ouest, où sont ces coordonnées ? Nous avons également besoin de ces informations. Donc, ce que nous allons faire, c'est créer une variable temporaire si nous descendons ici dans la liste des variables. Nous pouvons maintenant voir une nouvelle option, les variables locales, qui sont, comme vous pouvez le voir, des variables adjacentes vides appartenant uniquement à cette fonction. Cela signifie que lorsque cette fonction s'exécute, ils obtiennent leurs valeurs par défaut. Il ne stocke aucune information les concernant. Oh, puisqu'il s'agit d'une fonction pure, nous pouvons réellement l'utiliser. Ce que nous allons faire, c'est appeler ça, nous allons d'abord en faire une carte. Et la première clé sera la direction, la ramération. La variable, la deuxième variable serait le point de coordonnées. Oh, je dois l'apporter ici. Nommons-le également. Des cations. Maintenant, nommons-le. R Ce ne sont pas des emplacements disponibles. C'est l'adjacent valide. D'accord. Mais nous avons un adjacent valide. Et ici, nous allons ajouter à cet adjacent valide. Cette valeur provient du tableau. Nous allons le connecter ici. Maintenant, comment savoir si c'est du nord-est, du sud ou de l'ouest ? Ce que nous allons faire, c'est utiliser un nœud sélectionné ici. Et pour les options, nous allons connecter l'index du tableau. En fait, cela n'a pas vraiment bien fonctionné. Parfois, cela ne vous donne pas les options, Zake. Faisons une sélection. Comme ça avec un joker, et si je le connecte, cela ne me donne toujours pas les options. Nous allons donc le réduire un peu, prendre la dernière sortie à partir d'ici et faire une sélection à partir d'ici. Je vais également le connecter ici, puis connecter ici, et le supprimer. Cela n'a pas fonctionné. Essayons encore une fois. Apportons la exit et à partir du tableau d'index, je vais sélectionner Nous allons connecter ceci ici. Y. Voici les valeurs vais d'abord le connecter ici, puis je vais le déconnecter. C'est ainsi que nous introduisons ce sélecteur. Incroyable Nous en tirons des fruits de la gamme. Nous faisons une sélection, nous apportons une variable de nos directions e. Nous l'avons connecté au select, afin qu'il affiche les options au lieu de les avoir sous forme de variables. Il y avait peut-être un moyen plus simple de le faire. Quoi qu'il en soit, comme nous le savons notre indice correspond à cet indice du rayon, car c'est celui que nous voulons utiliser pour le bouclage Nous savons que le premier est que l'indice zéro est le nord. Le premier est le sud, numéro deux est l'est et le numéro trois est l'ouest. Nous pouvons donc le faire de la même manière ici : nord, sud, est, ouest. Maintenant, la prochaine chose dont nous avons besoin est une sortie dans cette fonction Je vais sélectionner ceci et à partir de la fin des quatre boucles. Parce que si nous l'ajoutions ici, chaque fois que le corps de la boucle est lancé, il sera complet. En fait, dans le premier, il serait complet. Je vais le connecter ici, et je vais changer la sortie en une variable cartographique, en fait une variable de direction qui en fera une carte. Et le second serait encore une fois pertinent. Nous pouvons donc connecter notre adjacent valide. Appelons également valides les valeurs. Pourquoi dois-je ajouter les valeurs ici et non ici dans ce nom ? Si vous avez les mêmes noms, peut embrouiller le moteur et il ne vous le permettra généralement pas, mais s'il vous le permet, cela peut embrouiller le moteur lors de l'emballage du jeu sur bien d'autres choses. Donc oui, il est préférable d'avoir des noms différents pour les variables locales, pour les variables qui ne le sont pas dans votre plan pour les notes de retour et tout le Il est préférable de créer des noms de variables avec de nombreuses explications, telles que des valeurs adjacentes valides. Peut-être que cela aurait dû être un labyrinthe valide pour les valeurs adjacentes Plus il y a d'explications sur les noms des variables, mieux c'est. Oh. À l'heure actuelle, nous avons terminé avec cette fonction, point vide adjacent, et nous renvoyons cette liste. Nous avons également créé cette fonction de récupération des os, et je pense que c'est un bon point d'arrêt. Je te verrai le prochain. Au revoir 18. Leçon 3D 17 La création de tuiles: Bonjour et bienvenue dans l'atelier de conception de jeux et procédurale Real Engine Five cours de création procédurale Real Engine Five Dungeon Action BS Lors de la dernière leçon, nous nous sommes arrêtés en créant notre get empty adjacent. En fait, nous sommes passés par nos voisins. Nous avons fondé les Cross Neighbors, et nous avons examiné chacun d'eux tous les quatre. Nous avons vérifié s'ils appartenaient à la carte du donjon, s'ils appartenaient à la zone vide forcée ou s'ils se trouvaient en dehors des limites en créant cette fonction ici. Donc, si elle n' appartenait à aucune de ces variables, nous l'avons ajoutée à une variable appelée valid adjacent, qui est une variable locale dans cette fonction, et nous avons donné cette valeur avec nos notes de retour lorsque la boucle for est terminée. Continuons avec notre labyrinthe. Algorithme de construction. Passons maintenant au graphique pair, et introduisons cette jolie petite fonction que nous avons créée, qui est get empty adjacent. Mais nous ne l'avons pas purifié. Je vais cliquer sur Calculer et maintenant c'est pur. Maintenant, nous avons cette liste. Ce que nous voulons faire avec cette liste, c'est vérifier si la dernière sortie appartient à l'une d'entre elles. Donc, ce que je vais faire, c'est trouver la dernière sortie. Si je ne trouve pas la dernière sortie, alors nous devons faire marche arrière, n'y a aucun moyen de continuer car tous les adjacents vides ne correspondent pas à la sortie que nous voulons Le bloc veut sortir de là, mais le bloc suivant n'est pas réellement valide. Non, nous n'allons pas faire le retour en arrière pour le moment. Ce que nous allons continuer si nous trouvons la dernière sortie. Je vais mettre une branche ici, nous allons la connecter ici. Et depuis que nous avons fondé notre dernière sortie, elle existe. Cela signifie que je peux construire un nouveau bloc. Cela signifie que je peux enfin avoir une nouvelle coordonnée. Je vais apporter les cordons actuels et je vais les connecter pour les connecter ici. Maintenant que nous avons nos nouvelles coordonnées, nous devons trouver l'endroit où nous allons faire apparaître la nouvelle tuile Oh, organisons notre propre cours d'acteur. Et nous allons sélectionner à nouveau la tuile de classe, tuile P, et nous allons diviser la transformation. Maintenant, pour trouver l' emplacement dont nous avions besoin, nous avons créé une fonction appelée no fini location. Je vais le connecter ici. Je vais le connecter ici, et nous pourrons enfin avoir un nouveau bloc. Maintenant, cela répond au nouveau bloc. Notre numéro de vignette ne doit pas être zéro. Notre numéro de carreau doit être celui de nos arns. Parce que pour le moment, nous avons ajouté un et zéro plus un égal à un, il s'agit donc de notre première tuile dont la base de comptage est zéro. La prochaine chose que nous devons faire est d'ajouter ça au foutu. Je vais apporter la carte Dangon, et je vais l' ajouter ici Et je vais apporter les coordonnées actuelles ici et la valeur renvoyée par l'acteur d'apparition à l'acteur du donjon De plus, nous devons appeler d'ici la sortie de recherche. Oui, si Mars trouve une sortie. Nous voulons le message 1 parce que si j' avais sélectionné la sortie. Nous pouvons le sélectionner. Comme vous pouvez le constater, son objectif est différent. Cela n'aurait probablement pas marché parce que cette couleur ici signifie que vous l'appelez sur ce plan, même si j'ai connecté la cible Quoi qu'il en soit, cela devrait être le plan directeur. Le message quand il a ce dossier ici, cela signifie qu'il envoie un message. Maintenant, je vais le supprimer, et je vais le connecter ici. Et pour la direction entrante, nous allons simplement choisir le dernier. Sortir. Y. Et notre valeur de sortie définirait notre dernière sortie Nous devons également ajouter cet acteur à détruire Je vais donc les amener dans Destroyer Je vais faire un ajout au tableau et le connecter ici. Nous allons tout déplacer un peu. Ici, et peut-être rendre les câbles un peu moins pagifiés. Tu as déjà l'air mieux. Maintenant que toutes ces fonctions sont entrées en vigueur, il ne nous reste plus qu'à reconstruire. Si je clique ici, vous pouvez voir, cela me mène au point de départ, et cela continuera jusqu'à ce que cette condition soit satisfaite ou que cela pose un problème ou maintenant. Démontrons ce que nous avons créé. Je vais accéder à la variable Ma taille et sélectionner un chiffre. Disons cinq. Rendons cette instance modifiable et exposons-la sur Spone, afin de pouvoir la définir dans le menu principal dès Mais mettons-le également à jour. Compilons d'abord. Mettons-le également à jour. Et nous avons la taille d'un labyrinthe ici. 20 tuiles au maximum, bien sûr, nous devons également appeler l'événement de construction après notre premier événement de style Nous allons donc appeler ici notre build et notre compilation. Allons-y. Nous allons pré-démarrer, et il y a eu un bug. Pourquoi est-ce qu'il y a eu un bug ? Maintenant ça a marché. Ici, ici. Pourquoi est-ce une impasse ? Have Ops Encore une fois, c'est une impasse. Je viens d'ici, je vais l'enlever. Ici. Il y a quelque chose qui se passe avec les flèches. Passons donc à Let's Go to BP Tile, et passons à nos fonctions d'interface. Je trouverai probablement une sortie. Voyons ce que nous faisons dans la direction à venir. Nous constatons le contraire. Nous ajoutons que c'est le contraire que nous voulons dire. Nous allons le supprimer de la sortie des touches de liste. Nous ajoutons la sortie, et nous actionnons les flèches. direction des revenus passe. Ouais. C'est le problème ici. Vous voyez, nous supprimons l'orientation des revenus. Nous supprimons un moyen de sortir. Ce que nous devrions supprimer, c'est le contraire de la direction des revenus au début. Donc, si nous compilons le jeu maintenant, oui, nous avons deux flèches qui se terminent par une flèche OK, super, et ça le laisse vide. Également. Nous avons quelque chose qui a commencé à créer un labyrinthe, un labyrinthe de vers, nous partons de là Voyons encore quelques fois s'il recule. Et voyons combien de pièces il s'agit. 11. Comment on dit ce maximum. Oh, j'ai atteint la fin. C'est pourquoi. La fin. Deviner. Disons cinq. C'est donc zéro, un, deux, trois ou cinq. C'est la fin. C' est pourquoi ça s'arrête là. C'est bon. Non, je pense que c'est un bon point d'arrêt. Dans la leçon suivante, nous allons appliquer la logique de Bata. Au revoir On se voit le prochain. 19. Système de retour personnalisé: Bonjour et bienvenue au Game Design Workshop et au Real Engine Five Procedural création d'ARP Real Engine Five Procedural Dungeon Action Auparavant, nous avions créé le début de notre algorithme, notre algorithme intégré. Nous avons créé beaucoup de choses, en fait. Nous avons créé la première question qui est que notre algorithme a atteint les tuiles MC. Ensuite, nous avons ajouté une tuile supplémentaire, une autre au comptoir des tuiles. Nous posons quelques questions, par exemple, pour savoir si les coordonnées adjacentes vides qui nous entourent sont valides, et nous avons trouvé l'emplacement de nos nouvelles coordonnées, si elles sont valides, et nous faisons apparaître la tuile Nous avons ajouté à la liste des destructions, nous avons ajouté la liste du donjon, nous avons trouvé une nouvelle sortie et nous continuons à construire Continuons maintenant avec notre boucle Bactra. Oh. Maintenant, nous devons à nouveau poser quelques questions. Ouvrons donc Paint et expliquons cette partie de notre algorithme Lavid plus en détail Maintenant, disons que nous avons notre donjon en cours de création Permettez-moi de copier-coller ceci. À un moment donné, il ne peut pas en créer davantage. Il a essayé de le faire, et il n'y a plus de marge de manœuvre pour appliquer les règles que nous avons établies jusqu'à présent. Alors, que faisons-nous ? Nous allons poser une question très simple. Nous allons choisir 11 blocs aléatoires parmi ceux que nous avons créés et essayer de voir s'il existe une sortie valide. Mais nous allons également poser une autre question : si nous avons visité un pâté de maisons et que nous continuons à construire à partir de ce bloc, bla bla bla a Roa, c'est une construction continue, et on se retrouve à nouveau au bout Nous ne voulons jamais retourner dans ce quartier. Nous allons donc créer une autre liste laquelle nous mettrons les blocs que nous avons visités. Nous allons donc créer une autre liste à partir des blocs que nous visitons, afin de ne plus jamais les visiter. La raison en est que, de mon point de vue, cela crée un meilleur donjon, un donjon plus ramifié qu'il ne le serait sans lui Quoi qu'il en soit, c'est notre règle. Allons le mettre en œuvre. Maintenant, pour cela, nous avons besoin d'une nouvelle fonction. Maintenant, créons une autre fonction, et appelons-la. Essaie de renverser un camion. La première chose dont nous aurons besoin est dupliquer la carte de notre donjon Je vais l'appeler duplicata z. Je pense que c'est bon. Je vais l'apporter ici et je vais également apporter notre carte de donjon Maintenant, sur la carte du donjon, je vais sélectionner les clés Et je vais me renseigner sur la longueur, en fait. Je peux obtenir un élément aléatoire directement du tableau, et je vais promouvoir une variable locale, l'entier, l' index de sortie, pas le point de terminaison. Et je vais donner un nom aléatoire à ce lieu. Je vais le connecter ici. Voyons si cet endroit aléatoire se trouve à l'intérieur de notre site visité, je l'ai réellement ici. Lieux. Je vais vérifier les repas. Et je vais avoir besoin de la clé pour découvrir que je vais avoir besoin que je vais juste obtenir. Il y a une référence, j'ai besoin d'une copie. Je vais trouver cet endroit au hasard. Pourquoi je le fais de cette façon ? Je vais t'expliquer dans une seconde. je le fais de cette façon, c'est parce que je veux expliquer que si je le choisissais, si je l'avais connecté ici, j'aurais obtenu un nouveau résultat aléatoire. Si je le stocke dans une variable, j'obtiens cette variable que j'ai stockée. Mais si je viens de ce nœud ici, alors je vais obtenir un nouveau hasard à chaque fois que quelque chose demande quelque chose au hasard. La même chose se serait produite si j'avais eu un int aléatoire. Si je le demandais deux fois, j'obtiendrais deux numéros différents. Et tous les nœuds aléatoires, comme par exemple une plage aléatoire, fonctionnent comme ceci. Ils donneront une valeur différente tout ce qui leur est connecté. Continuons. Maintenant, si c'est vrai, alors nous voulons terminer cette fonction ici. Nous allons donc avoir un résultat, qui sera du type lean, et nous allons le nommer. Non. Je vais le connecter ici, et je vais placer la sortie. Maintenant, parce que je mets fin à la fonction ici, ne signifie pas que si j'ai des éléments ici, ils ne s'exécuteront pas si cela est faux. Je peux avoir plusieurs nœuds de retour dans une fonction en fonction de l'endroit où je veux que la fonction se termine. Donc. Mais si c'est faux, je vais consulter la liste de Nangon, notre carte des donjons Je vais l'apporter ici. Je vais appuyer sur d. Je vais le connecter ici. En fait, à partir de là, je vais juste le mettre ici De plus, nous devons enrouler, nous pouvons également obtenir l'objet. Et une erreur instantanée. Je ne veux pas la carte du donjon ici. Je veux le lieu visité ici. Je trouve sur la carte de Dangon et j'ajoute à l'emplacement visité Oh. Maintenant, j'ai ajouté à l'emplacement visité, le nouvel emplacement que nous testons pour savoir s' il peut y avoir une sortie. Même si cet endroit n'a pas de sortie, nous voulons tout de même l'ajouter aux lieux visités. Maintenant, comment allons-nous vérifier s'il y a une sortie vers celui-ci ? Nous allons devoir ouvrir nos peignes I Maze, ajouter une nouvelle fonction et nommer cette fonction new exit Je vais compiler et enregistrer les BI coms, les mas coms, et passer à nos pneus Maintenant, cette nouvelle fonction apparaît ici. Cette nouvelle fonction a cependant besoin d'une sortie. Nous allons ajouter une sortie. Ce ne serait pas une issue. Et il a besoin d'une autre sortie de la direction de sortie. Appelons-le. Cela va se faire à partir des instructions de type, des directions d'énumération, et maintenant nous pouvons compiler et enregistrer réellement et revenir en arrière. Il s'agit d'une fonction. Ce n'est plus un événement. Je vais l'ouvrir, et nous allons créer certaines choses ici. Vraiment, tu sais quoi ? Terminons d'abord cette partie. Ensuite, c'est ce que nous allons faire. Je vais donc appeler la nouvelle sortie sous forme message parce que nous envoyons un message. Il s'agit d'une interface de plan. Et si c'est vrai, je ne veux pas de N. Je veux une succursale. Si cela renvoie vrai, cela signifie que nous n'avons pas de sortie, alors nous ne renvoyons aucune sortie. Nous copions et collons le nœud de retour. Maintenant, si c'est faux, nous allons définir la dernière sortie la direction de sortie, et nous allons définir nos coordonnées actuelles À W est l'ordonnance ici. Lisons un peu Spaghetti Pi ici, c'est ici Ici. C'est un petit peu mieux. que je veux faire. OK. T up. C'est toujours bien de les attacher un peu. Non, nous allons le rendre avec des trous. Nous avons trouvé une issue. Nous pouvons continuer à construire. Je pense que nous devrions connecter cela ici. Appelons cette fonction. Sac à dos, qui ne sera pas pur, qui sera une vraie fonction. Et nous allons installer une succursale ici. Et nous devons faire encore quelques choses. Maintenant, si je devais ne placer, disons, aucune issue, alors nous continuerons à construire avec nos nouvelles données. Si je devais exécuter depuis le build, il passerait par cette vérification, ce qui n'a pas vraiment d'importance, mais cela en ajouterait une de plus aux tuiles actuelles, et nous ne voulons pas que cela se produise. Nous allons donc créer un autre événement personnalisé. Et nous allons l'appeler continue build, et nous allons le connecter à la branche que nous prenons ici pour les parties adjacentes vides. Nous allons continuer à construire à partir de faux. Cela signifie que si aucune sortie n'est fausse, nous allons continuer à construire avec nos nouvelles données qui seront transmises ici. Il vérifiera l'ordonnance que nous avons mise en place et fonctionnera en conséquence. Maintenant, que se passe-t-il si aucune sortie n'est vraie alors que nous n'en avons pas d'autre ? Eh bien, nous allons poser une question très simple. Nos lieux visités et la carte des donjons sont-ils de la même longueur pour ce faire ? Je vais demander la longueur, qui nous donne le nombre d'entrées dans cette carte, ce tableau ou cet ensemble ? Et si les deux sont identiques et qu'il n'y a pas de sortie, alors nous ne pouvons plus battre le labyrinthe. R Nous allons cligner des yeux pour le plaisir de l'écoute. Je ne peux pas construire. Pour que notre code ne bogue pas, nous allons définir nos tuiles parentes. Au maximum, styles, et nous allons appeler build. Cela signifie que si le labyrinthe ne peut plus se construire, définissez deux styles maximum pour notre tuile actuelle et quittez cette base qui consiste à construire le donjon Maintenant, si ce n'est pas le cas lorsque la carte du donjon n' est pas à la hauteur des lieux visités, nous devrions simplement recommencer le voyage pour revenir en arrière Et cela ne posera aucun problème car ce ne sera pas infini, car chaque fois que nous faisons marche arrière et que nous sélectionnons un nouveau point, nous l'ajoutons pour visiter ces lieux À un moment donné, ces deux variables seront identiques. En gros, ils ne seront pas les mêmes parce qu'ils seront dans un ordre différent, mais ils contiendront les mêmes informations. Il quittera donc notre bâtiment. Je pense que c'est suffisant pour celui-ci. Nous allons passer à la suivante en saisissant le nouveau code de sortie. Je te verrai alors. Au revoir. 20. Finaliser les règles de retour en arrière: Bonjour et bienvenue dans le cours de création de Game Design Workshop Rail Engine Game Design Workshop Rail Engine Five Procedural Dungeon Action At PS Auparavant, nous avions créé nos règles personnalisées pour le retour en arrière. Nous avons dit que si nous ne parvenions pas à trouver un adjacent, nous essaierions de faire marche arrière. Oh, nous avons les clés du donjon, peu importe ce qui a été créé Nous avons stocké l'index aléatoire de ce tableau obtenu à partir des clés, et nous avons vérifié s' il était visité dans la liste des lieux visités. S'il figure dans la liste des lieux visités, nous en sortons avec des chutes Si ce n'est pas vrai, c'est qu' il n'y a pas de sortie. Nous allons donc l'exécuter à nouveau pour en trouver un autre possible. Maintenant, si ce n'est pas vrai qu'il n'est donc pas contenu dans les lieux visités, alors nous ajoutons cet emplacement aux emplacements visités. Nous essayons de trouver une nouvelle issue. Si nous ne trouvons pas de nouvelle sortie, nous renvoyons la valeur false et nous l'exécutons à nouveau. Et si nous trouvons une nouvelle sortie, nous les stockons dans les variables, nous stockons les coordonnées, et sortons, et nous continuons à construire à partir d'un nouvel événement personnalisé. Maintenant, lorsque nous essayons de trouver une nouvelle sortie, nous vérifions si les lieux visités sont aussi nombreux que ceux figurant dans la liste des donjons Je suis donc désolée, en utilisant la longueur de ces deux cartes, et si elles sont identiques, nous sortons avec un message indiquant que nous ne pouvons plus les construire. Nous avons défini notre nombre maximum de tuiles sur les tuiles actuelles, puis nous relançons le générateur . Cette fois, il redeviendra vrai. Maintenant, nous sommes partis d'ici sans avoir rempli la nouvelle sortie dans la tuile BP. Alors allons-y. Ouvrons notre fonction new exit que nous avons créée dans l'interface Blueprint, et commençons à créer quelques règles La première règle que nous devrions avoir est d'apporter la branche. Découvrons les issues possibles, et déterminons la longueur Cette longueur est-elle égale à zéro ? Par exemple, y a-t-il des issues possibles ? Parce que s'il n'y a pas de sortie possible, peut-être devrions-nous d'abord nous contenter de flèches Juste au cas où certaines flèches seraient fausses. Ensuite, nous allons rentrer sans issue. Maintenant, au cas où ce ne serait pas zéro. C'est là qu'intervient la partie intéressante. Ce qui est intéressant peut être dur. Quoi qu'il en soit, nous allons faire le contraire. Nous allons en sélectionner un rondo. Et nous allons régler la sortie. J'ai amené exit, je l'ai fait à partir des variables, en le maintenant, en l'amenant ici et en le relâchant, ce qui donne un setter Je vais le connecter. Ici. Maintenant, nous faisons la même chose qu'avec find exit, mais avec quelques modifications. Maintenant, nous allons ajouter des directions et ajouter la direction de sortie. Nous allons l'ajouter à t, et nous allons le supprimer à nouveau. Je vais l'apporter à nouveau. Je vais faire glisser un tableau à partir d'ici. Retirez la sortie de toutes les issues possibles. La prochaine fois, nous pouvons choisir qu'il n'y en aura probablement pas , car nous avons configuré ce style pour ne plus jamais être visités dans les lieux que nous visitons. Quoi qu'il en soit, non, nous allons utiliser de vilaines flèches, j'ai mal appelé les flèches Toggle dans les deux Mais oui, c'est bon. Le plus correct serait de le faire avec le nœud jaune. Mais lisons correctement. Parce que lorsque nous avons un nœud jaune, cela signifie « soi ». La cible, c'est soi et en gros, c'est tout. Cela signifie que vous vous ciblez vous-même. Même ici, il a du soi, mais pour une raison ou une autre, c'est mieux. Et c'est une épingle, en fait, je l'ai appelée nœud, de toute façon. Nous parlons de flèches, puis nous avons à nouveau besoin du nœud de retour. Cette fois, nous avons trouvé une issue. Nous décliquons dessus, et nous connectons la sortie à la direction de sortie. Maintenant, nous allons obtenir quelques informations. Maintenant, essayons de l'exécuter. Comme on peut le voir. OK. Voyons vraiment ce qui se passe. Passons à notre graphique des événements, et mettons un délai ici. Mettons un délai de 0,2 seconde. Ouais. C'est très bien Et passons à notre menu principal. Allons l'agrandir. Faisons la taille des piles. D'accord, 200 c' est peut-être un peu gros, mais disons 100. Voyons la taille et cela suffirait, je pense, dix sur 10100 Et si nous comptons les négatifs, verrons dix donc jouez. Je l'éjecte déjà, et nous pouvons essayer de construire notre labyrinthe Construire un donjon, c'est illustré ici avec backtrack, backtrack Lorsque vous n'en trouvez pas une autre, vous voyez quand elle prend cette forme carrée ou parallèle, elle essaie de revenir en arrière. Ça y est. Je pense que cela vient des dernières pièces, c'est 100. Eh bien, d'après ce que je peux en dire, je l'ai dit dans le contraire. Peut-être devrions-nous changer, peut-être devrions-nous mettre ce chiffre de ce côté. OK, allons-y, passons à notre vignette. Ça vient du nord, devrait aller du sud. Faisons-le fonctionner à nouveau. OK. Pourquoi ? Je le change juste. Eh bien, tant pis. Défaisons. Qu'est-ce qui se passe ici ? C'est correct. Je fais demi-tour avec la caméra. C'est ma faute. C'est correct. Il fait marche arrière, il crée Let's Let's try and play test un peu Mettons 1 000. Mettons ça à 50. Disons que c'est 20.1, donc c'est un peu plus rapide Et rejetez et jouez. Eing out. Ouais. Cela crée un niveau, lentement, mais c'est le cas. Cela ne dérangera pas. Nous voulions créer un petit bug. Faisons comme si nous voulions mettre 1 000 pièces, mais dans un labyrinthe de cinq Cela ne conviendra donc pas. Voyons cet exemple. Ici maintenant, il faut dire qu'à un moment donné, il a affiché notre message d'erreur. Je ne peux pas continuer. Il construira une boîte à la légère, pas une boîte parce que nous suivons l'argent Il a imprimé le message. Maze ne peut pas en construire davantage. Comment je l'ai ouvert. J'ai appuyé sur la touche tuile, celle d'à côté. Donc, si je le fais, je peux voir les derniers messages. Comme vous pouvez le constater, je peux également voir ce que j'ai fait en cliquant sur l' arrière-plan, par exemple. Donc, Mace ne peut plus faire autrement. Et nous avons ces petites lacunes ici et là parce que nous revenons en arrière pour ne pas y aller. Certains lieux ont été visités, alors j'ai choisi de ne pas le faire. Maintenant, le problème que nous pouvons voir instantanément , c'est que certains blocs, même s'ils ont accès à d'autres blocs, n'ont pas de flèche. Et c'est à cause de la façon dont les labyrinthes ont été construits. Nous mettons à jour certaines flèches, mais nous ne mettons pas à jour certaines d'entre elles. Permettez-moi de vous donner un exemple à ce sujet. Mettons de la peinture à la poubelle. Supposons, par exemple, que nous construisions un outil de peintre, nous construisions le premier bloc et que nous obtenions cette sortie. Nous construisons maintenant le deuxième bloc, nous l'activons, et nous essayons de sortir d' Nous construisons donc ce bloc. Nous activons cela et essayons de sortir d'ici. Nous activons maintenant ce blocage. Nous activons ici et essayons de sortir d'ici, mais nous ne pouvons pas Donc, en fait, cela devient non, s'il y a une flèche parce qu' il a essayé d'aller ici. Il ne peut pas construire, mais il a trouvé quelque chose, il y a donc accès. Maintenant, essayons de revenir en arrière à partir d'ici. À partir de là, nous faisons marche arrière, donc nous sommes en train de l'activer. On essaie de suivre cette voie. Oups, nous sommes donc en train d'activer cela. Maintenant, nous avons suivi cette voie, et nous sommes en train de l'activer. Et nous voulons suivre cette voie. Eh bien, nous ne pouvons pas. Nous activons donc cela, mais nous ne l' activons pas ici. Ainsi, lorsque cela se produit plusieurs fois, comme nous l'avons vu, dans le grand labyrinthe que nous venons de créer Nous pouvons voir que cela se produira souvent, crée une tendance selon qui crée une tendance selon laquelle certains d'entre eux seront comme ça, et d'autres seront comme ça, et ils n' auront pas le dernier parce que le dernier venait ici et disait qu'ils ne pouvaient pas continuer ou qu' il n'y avait pas de flèche. Il a juste essayé de faire marche arrière. Alors, réglons ce problème. Donc, nos flèches dans le labyrinthe sont en fait correctes. Mais c'est ce que nous ferons dans un second temps. Notre première phase a consisté à créer une valeur en fonction des valeurs que nous avons, car 1005 produira toujours un objet carré si le maximum de tuiles ne convient pas . Disons donc quelque chose de mieux. Mettons ces trois points, et mettons-les 20. Ce que ça crée. J'ai vérifié à nouveau. Oui, quelque chose comme ça devrait être plutôt un premier niveau. Il y a une petite chose, puis nous continuons, nous pouvons augmenter le nombre de départs en termes de taille principale et de tuiles. En fait, on en a trop dit. Je pense que c'est un bon point d'arrêt, et nous allons continuer sur cette lancée lors du prochain. Au revoir 21. Générer des carreaux de reliure: Bonjour et bienvenue sur Game Design Workshop, et sur le véritable moteur 5 du cours de création de RPG d'action Procedural Dungeon création de RPG d'action Procedural Auparavant, nous avions créé la fonction new exit, qui nous permet de trouver une nouvelle sortie si possible lorsque le générateur de labyrinthe a demandé sur l'algorithme Pack track Nous avons également fait la démonstration de notre labyrinthe en cours de jeu. Et nous trouvons un problème avec les flèches directionnelles. Alors allons-y et réglons ce problème. Passons au générateur de mai. Je vais arrêter l'émulation et créer un nouvel événement atomique Et je vais appeler cet événement « décoration », par exemple. Eh bien, les flèches ne sont pas de la décoration, mais ce serait essentiellement notre deuxième phase. Maintenant, nous allons avoir besoin d'une fonction pour corriger toutes les connexions non connectées qui ont du sens. Oui, nommons-le comme ça. Corrigez personne. Je vais mettre entre parenthèses, s, visibilité. OK, donc ce que nous allons faire pour y parvenir , c'est occuper tout le donjon Nous allons récupérer toutes les clés. Et à partir de maintenant, les processus seront un peu plus lents qu'une seule fois. Parce qu'à partir de maintenant, nous allons y aller, nous allons parcourir l'ensemble du donjon et y ajouter quelques règles Ce ne serait pas la meilleure façon de le faire, et les plans ne seraient pas la meilleure façon de le faire Surplus plus serait bien plus efficace pour créer de telles choses. Mais afin de séparer les règles, nous pouvons regarder le donjon plusieurs fois et effectuer des actions spécifiques Maintenant, il y a un autre problème lié au fait d'avoir trop d' actions dans une boucle. Il s'agit de savoir comment calculer les boucles pour chaque boucle ou comment compter les boucles. une limite maximale Unreal détecte une limite maximale s' il s'agit d'une boucle sans fin Si cela dure trop longtemps, c'est peut-être irréel de dire qu'il s'agit d'une boucle sans fin Il ne compte donc pas réellement les index. Cela compte aussi, il compte l'indice bien sûr, mais il compte surtout nombre d'actions qui se produisent dans la boucle. Il y en a aussi dans les paramètres du projet si nous allons trouver une boucle infinie. Nombre maximal d'itérations de boucle. Comme vous pouvez le constater, c'est une question d' itérations qui compte. J'ai peut-être un peu changé, mais si vous rencontrez un problème de boucles infinies, augmentez ce nombre à un plus grand nombre. Oui, je pense que c' est un nombre maximum. Quoi qu'il en soit, ce sont des informations supplémentaires. Je ne pense pas que nous aurons besoin de changer cela. Je pense que c'était un bon numéro, mais laissons-le là. Si vous rencontrez ce problème, il existe également un autre moyen dans plans de tromper le système, en retardant certaines actions Quoi qu'il en soit, continuons. Nous allons donc passer en revue toutes les coordonnées de nos donjons. Et à partir des coordonnées de ce donjon, nous allons vérifier s'il y a des voisins valides. En gros, des voisins valides. En gros, s'ils appartiennent à un donjon, le suivant Et s'ils le font avec les voisins, alors nous allons aider notre blocage en activant la direction de la flèche vers ce côté. Action simple, mais il y a un truc. Nous ne devrions pas faire cela sur la première vignette. Mais pourquoi pas ? Faisons-le dans la première vignette. Également. Donc, ce que je vais faire, c'est obtenir à partir de l'élément L. Si je ne voulais pas que cela se produise dans la première vignette, désolé. Si je ne voulais pas que cela apparaisse dans la première vignette, je l'égaliserais à zéro. Donc, s'il s'agit du premier index, ne faites rien. C'est essentiellement ce que nous voulions montrer. Donc, s'il s'agit du premier index, ne faites rien. Et nous pouvons avoir des règles supplémentaires s'il s'agit du 24e indice, par exemple, ne le faites pas. Mais il existe d'autres moyens de rendre les règles de ce type plus efficaces. Maintenant, si nous vérifions nos fonctions, nous n'avons qu'un emplacement vide adjacent. Ce dont nous avons besoin, c'est le contraire. Créons donc une autre fonction. Disons que c'est get F. D un adjacent. Je pense que nous appelons cette fonction à partir de nos ordonnées. Il a besoin d'une coordonnée parce que nous devons trouver ce qu'il y a dans les environs. Nous allons passer aux entrées. Nous allons sélectionner un point d'entrée comme type de variable. Je vais nommer ces points. Non, que faisons-nous de ces coordonnées ? Eh bien, nous trouvons la croix adjacente. Nous avons cette trouvaille Socent. Nous obtenons donc notre liste de rossocents. Ensuite, nous parcourons cette liste avec un pour chaque look Et nous allons vérifier si cela est contenu. En fait, nous avons besoin du donjon ici, de la variable du donjon, de la carte du donjon Et si nous pouvons vérifier s'il contient ce point final. Si tous les voisins ou certains d'entre eux sont contenus, dans cette liste. Cela signifie qu'ils font partie du donjon. Si ce n'est pas le cas, c'est un endroit vide. Nous avons donc besoin d'une carte pour générer cela. Nous devons enregistrer chaque variable sur une carte car nous avons besoin de l'ordonnance, et nous avons également besoin de la direction que nous connaissons ici, c'est-à-dire le nord-est, le sud, le nord, le sud-est ouest. Notre rayon d'index correspond donc au nord-est, au nord-est, au sud-est ouest. Maintenant, je vais créer une variable locale. Nous allons l' appeler Valid Das. monde, sérieusement. Oui, c'est bon. Ce sera du type E. Et ce sera une carte, et la deuxième clé sera insérée. Nous allons l'apporter ici et sélectionner Ajouter. Nous allons le faire pour obtenir le nœud de sélection, car si je le fais sélectionner ici, les options ne seront pas activées. Ici, cela ne me permet pas d' activer les options ici. Je vais donc prendre la dernière sortie. Je vais faire notre travail à partir de l'index et de la réalité augmentée, je vais aux élections. Je vais connecter la dernière sortie ici. Active les options. Je vais le connecter ici, puis je vais le déconnecter. Ajoutez simplement des options. Je vais connecter l'élément RA et diriger vers le nord-sud-ouest. Maintenant, notre liste est correctement remplie. Lorsque nous avons terminé, nous avons besoin d'un nœud de sortie pour donner nos résultats et les réaliser réellement. Nous allons donc créer une sortie du même type que celle adjacente valide. En fait, je pense que je peux juste le faire. Sortie. Si je fais glisser et déposer quelque chose ici, même si je fais glisser et déposer des cerceaux Si je fais glisser celui-ci, cela créera un nœud valide pour moi. Ça, je n'en ai pas besoin. Une broche de sortie A pour moi. Connectez ceci ici. Compilez et enregistrez. Et revenons à notre solution : aucune connexion n'est synonyme de visibilité. Je vais apporter cette fonction ici, elle sera remplie à côté. Je vais le connecter ici. Et à partir de là, je vais chercher les clés. J'ai un réseau avec le nord-est, le sud et l'ouest que je peux faire en boucle. Ensuite, je vais chercher mon balai à donjon. Je vais trouver l'élément actuel du tableau. De cet acteur, je vais obtenir des actions. Ajoutez l'élément correspondant, connectez-le ici et définissez-le sur true. À la fin, il suffit d'actionner les flèches, ce que nous pouvons faire à la fin ou ici Cela n'a pas vraiment d'importance. C'est la même chose. Mais ce que nous devons faire, c'est actionner les flèches. En guise de message. Parce que, comme nous l'avons dit, il s'agit peut-être d'une autre tuile. C'est possible pour nous. Nous avons maintenant une tuile BP. Ce peut être n'importe quel acteur. Si nous choisissons d'avoir la variable comme acteur, nous ne le ferons pas maintenant car cela gâcherait le labyrinthe et ce sera un message Alors maintenant, expliquons ce que nous avons fait ici à ceux qui ne l'ont pas compris, c'est que puisque nous mettons son champ à côté, et que nous parcourons les instructions, nous constatons que c'est dans cette direction qu'il en va de même. Nous obtenons donc les instructions qui devraient figurer pour la vignette en cours de vérification, et nous les activons. Nous les informons lors de la compilation et de la sauvegarde, et nous verrons si cela a fonctionné. En fait, nous ne l'avons pas encore appelé, sinon il ne fonctionnera pas. Passons à la première construction et appelons nos décorations, notre fonction de décoration, notre événement, notre fonction non fonctionnelle, et toutes nos connexions non connectées. Maintenant, si je joue, c'est si loin. Nous pouvons voir que c'est elle qui a créé ces croix. Eh bien, nous avons des impasses qui n'étaient pas censées être des impasses, mais nous allons régler ce problème là où elles étaient censées être des impasses. C'est ce qu'ils voulaient dire. Comme, par exemple, ici, parce que lorsque nous essayons de placer quelque chose, nous activons la flèche. C'est la raison pour laquelle cela se produit. Cela ne s'est pas produit partout. Donc oui. Mais le premier problème est résolu. Le premier problème est que les objets connectés à quelque chose devraient toujours avoir une flèche. Maintenant, avant de corriger cette partie les flèches pointaient vers nulle part alors qu'il vérifiait s'il pouvait jouer quelque chose. Créons la barre de chargement. Faisons-le progresser et voyons à quoi il ressemble. Nous allons donc passer au chargement. Nous allons sélectionner le Cvas et le rendre à nouveau visible. Compilez et enregistrez, puis passons à notre générateur de labyrinthes et ajoutons notre chargement Nous avons notre pourcentage défini et notre fonction de chargement en vrac, la fonction Nous allons copier-coller ce code ici. Nous allons venir ici, et placons-le ici même. Maintenant, le simple fait de le placer ne fait rien si nous ne le connectons pas. Alors connectons-le. Cela peut se rapprocher un peu plus et commentons certaines choses tout au long de ce pas. Sur le terrain, orthographié le labyrinthe. Nous par fichiers. Des tas. Un énorme commentaire. Ça n'a aucun sens. Vous pouvez ajouter le commentaire que vous voulez. C'est ainsi que cela m'aide. Les commentaires sont personnels. C'est ce que je comprendrais le mieux. Continuons. Mettons Begin Play. Ça suffit. Compilons et sauvegardons, et jouons. Et nous pouvons voir notre chargement mais être remplis deux à 40 % une fois les carreaux cuits. Arrêtons. Revenons au chargement. Configurons réellement ce repaire invisible, compilons et sauvegardons, et continuons à corriger nos impasses. Donc, ce dont nous avons besoin, c'est d'une fonction que nous appellerons peut-être des impasses. Corrigez les fausses sorties. Oui, corrigez les fausses sorties. Créons donc une fonction. Disons que c'est réparer les fausses sorties. Et entrons-y. R, nous allons avoir besoin Tout d'abord, expliquons ce que nous allons faire. En fait, nous allons faire la même chose qu'ici. Alors allons-y. Tout ça. Comme c'est le cas ici. Mais au lieu de cordes, nous utiliserons la carte du donjon Et nous allons récupérer les clés. Clés Nous allons le connecter ici, donc nous allons itérer sur l'ensemble de la carte J'ai copié la fonction Oui, j'ai copié la mauvaise fonction. Supprimez-le, supprimez-le. J'ai copié le champ get adjacent, mais nous voulions corriger les connexions non connectées. Je vais donc copier ceci, pour corriger les sorties rapides Nous allons faire une itération l'ensemble du fumier et au lieu de placer le champ adjacent, nous allons simplement obtenir un champ adjacent vide. Et ici, nous n' avons pas encore de coordonnées. Donc, ce que nous faisons réellement, c'est que nous allons changer cela ici , et nous allons cliquer avec le bouton droit de la souris pour trouver des références, qui nous mèneront à l'endroit où nous l'avons utilisé. C'est ici dans la section de construction, et nous allons connecter aux cordons les cordons actuels, parce que c'est ce dont nous avions besoin ici, mais lorsque nous l'utilisons, sur des sorties fixes, nous en avons besoin comme ça Nous allons le connecter ici. Maintenant, nous avons les clés du adjacent vide et au lieu de t, nous allons le définir sur false. Si je compile play, cela ne fonctionnait pas. Et c'est parce que je ne l'ai pas connecté. Revenons donc à May Gen. Passons à VNgraf pour décorer et Corrigez les fausses sorties. Compilez et sauvegardez, et allons-y. Cela fonctionne un peu sur un, ou je peux voir deux, c'est peut-être plus, mais pas sur tous. Mais c'est un problème que nous aborderons dans le prochain. J'irai te voir alors. Au revoir 22. Correction de bugs et plans de décoration: Bonjour, et bienvenue dans Game Design Workshop et reengine cinq cours de création procédurale de Dungeon actional PS Précédemment, dans la dernière leçon, nous avons créé la fonction de visibilité des flèches fixes non connectées qui prend les clés de tous les donjons, comme toutes nos coordonnées Une fois que le champ adjacent obtient les clés du champ adjacent et en fonction de la direction, nous activons la visibilité des flèches. Maintenant, nous avons également créé la fonction pure get filled adjacent, que nous avons utilisée, qui nous permet d'obtenir les adjacents, vérifier lesquels d'entre eux appartiennent au donjon, et c'est ainsi que notre liste est Et maintenant, la dernière chose que nous avons essayé de faire est de réparer les issues pâles Alors j'ai en quelque sorte compris pourquoi cela n'a pas fonctionné. Si nous voulons obtenir des zones adjacentes vides, seules celles qui se trouvent dans les limites du donjon Donc, ceux qui sont en dehors du donjon ne les comprennent pas vraiment Nous ne pouvons donc pas vérifier s'il y a des impasses si elles sont en difficulté avec cette fonction. Ce que nous allons faire, c'est qu'il existe de nombreuses solutions. Nous pourrions créer un buling ici pour prendre cela en compte et peut-être ne pas le prendre en compte. Nous pourrions créer une nouvelle fonction qui n'a tout simplement pas cette vérification, mais j'aime utiliser ce que nous avons déjà. Dans Fix Falls Exits, nous n'obtiendrons pas la sortie adjacente vide En fait, le terrain sera à nouveau adjacent. Et vu le terrain adjacent, ce que nous allons faire est fondamentalement très différent de ce que nous avons fait. Donc, en fait, nous n'avons pas besoin de supprimer grand-chose. Mais ce dont nous avons besoin, c'est de l'acteur des coordonnées actuelles. Nous allons donc obtenir l'acteur des coordonnées actuelles, et nous allons obtenir ses directions. En gros, sur le carreau dans lequel nous nous trouvons, obtenez les directions, et à partir des instructions, récupérez les clés. Maintenant, nous n'en avons pas besoin ici, mais nous en avons besoin ici. À partir des touches, nous allons vérifier s'il s' agit d'une direction qui se trouve ici. La direction que nous vérifions possède-t-elle un adjacent valide ? Si c'est le cas, tout va bien. Si ce n'est pas le cas, nous l'éteignons. Mais cela pourrait devenir faux. Cela pourrait aller ici. Connectez ceci ici. C'est un petit gâchis. Laisse-moi espérer. Comment pouvons-nous le rendre plus beau ? Nous pourrions transformer certaines choses en variables. Je vais juste le démêler un peu. Ce que nous voyons est un peu plus clair. À partir de chaque tuile, nous obtenons les directions. Nous cherchons l'acteur de ses coordonnées. Nous le trouvons sur la carte des dangers. Nous obtenons les directions de cet acteur, et dans toutes les directions, nous vérifions si chaque direction a un adjacent valide. C'est un peu plus lourd, mais c'est bon. Compilons et enregistrons l'identifiant de connexion des flèches totales, nous devons donc les connecter L'acteur que nous sommes en train de vérifier. La vérification des acteurs se fait en flèches, sauvegarde de la conformité, et vérifions que cette fois cela fonctionne. Ça a l'air de fonctionner. Maintenant, pour une vérification pure et simple, précise, car le problème venait des bords du labyrinthe Mettons 202 000 000 e cent, peu importe. C'est un nombre énorme, donc ça crée une boîte. Nous ne vérifions donc que les bords. Ils ont des flèches, et maintenant ils sont partis. Et maintenant, les flèches nous indiquent plus clairement où nous pouvons marcher et où nous ne pouvons pas marcher. Je pense donc qu'il est temps de commencer à faire en sorte que cela ressemble davantage à un donjon avec des murs, des accessoires, des objectifs et Je vais donc fermer ça. Nous allons ramener ce chiffre à 20. Si ça a l'air bien, je pense que ça a l'air bien. Nous pouvons avoir des pièces, départ et un point d'arrivée. Alors, comment allons-nous procéder ? Il existe de nombreuses façons de faire apparaître d'autres tuiles, il existe des moyens de faire apparaître des pièces à l'intérieur des Nous allons vous montrer quelques moyens. Pour l'instant, ce que nous allons faire c'est accéder à notre tuile P. Fermez ces flèches. Et je vais ajouter un enfant acteur ici. U Est-ce un acteur, ce qui signifie essentiellement que nous pouvons ajouter un autre plan dans ce plan Pour nos besoins, il sera utilisé pour créer un plan contenant toutes les décorations en une seule et nous activerons et désactiverons certaines d'entre elles. À un moment donné, j'ai parlé de références, références concrètes et de références souples. Une brève explication serait qu' agit de gérer les dépendances et l'utilisation de la mémoire. Une référence précise pointe directement vers l'actif ou l'objet, garantissant ainsi qu'il est toujours chargé en mémoire. Il occupera cet espace mémoire, par exemple, passons à notre niveau. Passons à Sis Map. Nous pouvons voir les dépendances dont il a toujours besoin pour fonctionner. Cela nécessite que je n'en ai pas ajouté grand-chose, mais nous pouvons. Cela nécessite la brique soit toujours en mémoire, la végétation soit toujours en mémoire, moteur de script soit en mémoire en fonction des actifs que nous avons utilisés, faisant référence à nos tuiles En gros. Voici le sol, les murs, tout ce qui est référencé par le labyrinthe et conservé dans une variable Si je vais ici, par exemple, et que j'en fais une référence souple au mode de jeu. Cela signifie que si je lance ce générateur de labyrinthe une autre carte qui n'a pas ce mode de jeu Bien sûr, cela produira des erreurs aux endroits où je l'ai utilisé, mais il ne le chargera pas dans la mémoire. Ainsi, toutes les dépendances du mode de jeu ne seront pas chargées dans la mémoire car je n' appelle pas le mode jeu. Si j'avais intégré le DOA au mode jeu, ce que nous avons fait au début, cela l' annulerait car casting l'obligerait à se charger dans la mémoire forcera le plan à charger le mode de jeu de haut en bas dans la mémoire parce que je le lance et qu'il le contient Mais si je n'avais pas ce casting et que c'était une référence souple, cela ne le chargerait pas. En gros, les références souples contiennent une référence à l'actif ou à l'objet sans le charger immédiatement en mémoire avant son appel. Il y a beaucoup d'optimisation à cet égard. Nous ne le ferons pas. Comme on dit, cas de problème, consultez le profileur C'est toujours la règle, créez-la, puis vérifiez les problèmes. Pour nous, je ne pense pas que nous aurons de problème. Maintenant, nous allons avoir besoin de cet enfant acteur. Et il contiendra toutes les références tous les articles dont nous avons besoin pour les conserver au même endroit et montrer comment nous les utilisons. Une meilleure solution serait simplement de posséder, par exemple, tous les accessoires ci-dessus que nous montrerons également dans d'autres actifs spéciaux Passons maintenant à la création de cet acteur enfant. Nous allons passer au contenu. Nous allons passer aux plans, cliquer avec le bouton droit de la souris, sélectionner une classe de plans et sélectionner Et nous allons l'appeler BP Decorations. Appelons-les décorations BP. Je file, je vais tout enregistrer, et ouvrons-le. Maintenant, je vais l'apporter ici, à côté de la tuile. Je vais fermer ceci parce que puisque nous avons un direct, les décorations seront un jeu de carreaux. Nous avons un accès direct les uns aux autres. Maintenant, je vais aller sur BP Tile et sélectionner les décorations, les décorations BP. Allons ajouter des murs. Tout d'abord, je vais ajouter des maillages statiques, tous en fait. Je vais les nommer mur, disons que le mur nord est mur pour le sud, puis tout pour l'est et le mur. W pour West. Et ce que je vais faire, c'est passer au script de construction et intégrer chacune de ces variables ici. Tout en gardant le contrôle, je gagne des points. C'est juste un rappel. Et je vais créer Ray. Stockez-les sous forme d'informations dans un tableau pour une utilisation ultérieure. Je vais promouvoir cette variable, je vais l'appeler walls. Et je vais relier cela au script de construction. Compiler. Maintenant, installons des messages statiques sur les murs. Je vais tous les sélectionner. Et je vais passer à notre liste. Je vais contrôler et zoomer un peu, attendre qu'ils disparaissent. OK. Nous, c'est ça. Combiné 67a9 67. Je pense. Oui, ça en a l'air. Disposons-les, espacons-les. Oh, on peut les espacer. Nous pouvons les voir ici. Si vous avez deux écrans, cela pourrait être un peu plus facile pour vous. Mais je vais avoir ça comme ça . Je vais prendre ça. Ça et je vais les déplacer du bon côté. Disons que c'est le bon côté. Je vais corriger les valeurs par la suite. C'est vraiment le bon côté. C'est le mur nord, donc il ferait environ 90 degrés quelque part ici. Ça suffit pour le placement visuel. Je vais le remettre ici et vérifier ses coordonnées 0390 Arrondissons-le à 400. Serait-ce bien moins e -400. Cochez « Oui ». C'est bon Décorations, et je vais faire pivoter ces salles de ce côté, je crois, et l'emplacement sera le contraire. Je vais copier-coller l'emplacement annulant simplement le contraire. Et je vais aller au mur. Cent 100. Ce serait 100 ou cent -400. Prends l'axe. Quelque chose ne va pas. Cela devrait être le contraire de 400 400 dollars. Maintenant, nous avons des murs. Maintenant. Oh, je compile et je joue. Maintenant, nous avons des arêtes, des murs. Je pense que c'est un bon point d' arrêt pour celui-ci. Dans le prochain, nous allons ouvrir la voie . On se voit le prochain. 23. Placer les murs en fonction de chemins bloqués: Bonjour et bienvenue dans Game Design Workshop, Five de Real Engine création de RPC Procedural Dungeon Action Auparavant, nous avions ajouté la tuile de décorations au-dessus de notre tuile Blupin en tant qu'enfant acteur Nous avons utilisé les décorations de classe BP pour cet enfant acteur, et nous avons d' abord créé les décorations BP. Nous avons ajouté des murs, et nous les avons ajoutés à un tableau dans le script de construction. Maintenant, nous avons également débogué, pour être honnête, la grosse fonction de fausse sortie que nous avons choisie pour utiliser un autre système celui que j'ai décrit au début, qui consiste juste cette fois à obtenir les directions de la vignette actuelle que nous vérifions, partir des directions s'il y a un adjacent valide dans cette direction, et nous avons défini la être faux pour ne pas apparaître dans le visuel des flèches, et nous doublons les flèches. Maintenant, et pour être honnête, nous pouvons réellement déplacer ces deux f, ces deux fonctions ici avant de décorer. Et faisons également progresser la barre de chargement. À notre goût. Disons que cela représente 5 % supplémentaires, nous allons donc passer au point zéro. La vie. Ensuite, nous allons décorer. Comme vous pouvez le constater, à partir de maintenant, nous allons simplement estimer ce qu'est une action et le pourcentage de chargement qu'elle nécessite. Cela dépend de nous. Cela dépend de nos tests. Comme je l'ai dit, il existe des méthodes plus compliquées de le faire et de le calculer en pourcentage, mais cela nécessiterait beaucoup de calculs et beaucoup plus de code. Maintenant, revenons à la réparation de nos décorations, nos murs, pour avoir une disposition de base pour notre labyrinthe Pour ce faire, nous allons utiliser notre générateur de labyrinthe B. Nous allons passer à Even Graph, nous allons passer aux décorations maintenant qu'il est vide, et nous allons créer une autre fonction. Appelons cela la mise en page de base. Appelons cette fonction ici. Entrons dans cette fonction. Et ce que nous allons faire est assez simple. Nous demanderons à chaque acteur d'appeler chaque enfant ductor pour qu'il fasse quelque chose, et ce serait de cacher les murs en fonction des instructions que nous avons données ici Je vais donc renommer ce conduit pour enfants en cors. Et aussi, comme je l'ai dit, maintenant que nous savons que cet acteur sera un enfant de cet acteur, nous pouvons y faire maintenant que nous savons que cet acteur sera un enfant de cet acteur, directement référence, c' est-à-dire qu'au début de la pièce, je vais appeler un est-à-dire qu'au début de la pièce, fork. Oui. Comédien. Ensuite, je vais passer à la tuile BP. Maintenant, cela crée une dépendance. Maintenant, cette décoration doit avoir la tuile BP en tant qu'acteur parent. Si ce n'est pas le cas, cela ne fonctionnera pas. C'est ce que sont essentiellement les dépendances. Oh, je vais en faire une variable. Nous savons que ce n'est pas un échec du casting. Ça va toujours réussir. Et en fait, ce que je vais faire, c'est également créer une dépendance à l'égard de la tuile BP du générateur de labyrinthe Et je vais appeler ce générateur bleu, et je vais être du type générateur. Oh, comment l'avons-nous appelé Gen Mazen BP Maze Gen Object Reference  ? Maintenant, pourquoi cela n'a pas vraiment d'importance. Puisque nous allons faire apparaître une tuile et qu'elle sera générée via le générateur de labyrinthes, alors, de mémoire, lancer ici ne crée pas beaucoup Il effectue un cast, ce qui est une charge importante car il demande la référence de classe dans la classe, mais il sera déjà chargé dans la mémoire. Parce que la tuile apparaît avant que les décorations ne soient générées. Maintenant, créons ce générateur, faisons-en en sorte qu' il soit réellement une instance editi et exposons-le au moment du spawn Nous n'avons donc pas besoin de casting ou quoi que ce soit d'autre. Nous pouvons simplement accéder à notre générateur de labyrinthe, à notre graphe d'événements et à notre tuile d'apparition, qui se trouve ici Nous allons le réinitialiser car il ne se met pas à jour. N'ai-je pas compilé ? Oui, je n'ai pas compilé. Et en fait, il y a un B. Maintenant, quand je l'ai ouvert, il a révélé un propriétaire. Je pourrais m'en servir moi-même , puis ici sur le propriétaire de BP. Propriétaire, alors je pourrais le mettre dans le générateur et le faire comme ça. Mais je préfère la méthode d'exposition lors du spawn. D'ici à quatre, je vais le supprimer moi-même. Et comme vous pouvez le voir maintenant, il a décidé de le mettre à jour. Je vais donc me débrouiller seule sur le générateur. Et maintenant, nous avons une référence directe lorsqu'il s'agit de pattes. n'y a qu'une seule tuile qui n'en a pas, qui serait une cuillère, la première tuile. Cela doit donc également être mis à jour avec une cellule sur la première vignette, puis sur notre boucle construite. Nous devons également mettre à jour son acteur P tile pour avoir le générateur lui-même. Maintenant, revenons à nos décorations, compilons et sauvegardons, créons une autre fonction et appelons cette fonction. Disons cacher les murs. Sans cette pièce supplémentaire. OK. Maintenant, nous allons obtenir notre vignette BP, nous allons obtenir l'itinéraire, et nous allons obtenir les clés des touches, nous allons créer une boucle pour chaque boucle. Ensuite, nous allons poser la simple question. Nous allons trouver la valeur de P. Et demander vous êtes visible ou non ? Maintenant, le problème survient lorsque nous avons notre réseau de murs, et que nous allons tous les parcourir . Et comment savoir quel mur est lequel ? OK, nous avons le nom, nous les avons dans une commande. Mais que faire si je les ai placés dans le mauvais ordre ? W Je dois toujours vérifier l'ordre de chaque tableau, et s'ils correspondent, Non. Il existe un autre moyen très simple. Nous pouvons aller sur chaque mur et y installer un remorqueur, ce que l'on appelle un remorqueur Je vais donc rechercher quelques informations sur remorqueur et appuyer sur l'élément Par exemple, je vais opter pour le mur n, le remorqueur N. Et pour le mur S. Je vais mettre le remorqueur en S pour le mur E. Je vais mettre le tapis et pour le mur W, je vais mettre le remorqueur en W. Pourquoi j'ai choisi ces noms ? Parce qu'ils correspondent à notre tableau de chaînes, essentiellement à notre tableau de chaînes, désolé, et non à notre tableau d'énumération Oh, je vais vérifier si celui-ci est. Ce que je vais faire, c'est transformer cette énumération en chaîne de caractères. Il existe une chaîne, qui nous donne le nom de l' énumérateur pour une valeur de chaîne Et ce que je peux faire, c'est qu' il existe un nœud appelé component at. Je vais le connecter ici. Il le convertira automatiquement en nom. Et sélectionnez si le composant possède le bon remorqueur que nous vérifions, puis définissez sa visibilité En fait, les opérations sont un gain, pas une question de visibilité. Parce que si nous nous occupons de la visibilité, c'est un peu moins optimal. Mais ce que nous avons découvert serait vrai. Ce que nous devons également faire, c'est également définir sa collision. Pour éviter toute collision. Parce que si nous ne le faisions pas, des murs invisibles nous bloqueraient. Que sont les tags ? En gros, il s'agit d'un système permettant d'identifier des objets afin créer un identifiant pour les objets moins lourds, par exemple, en lançant constamment deux, en obtenant tous les acteurs, et en le comparant à un acteur avec un tig ou si le fait de cocher quelque chose de spécifique comporte une étiquette Il peut être ajouté aux composants. Il peut également être ajouté aux valeurs par défaut des acteurs. Vous pouvez voir qu'il existe un tag qui compte pour le tag acteur. La question ne serait donc pas que le composant has tag serait actor has tag par rapport à ce que nous vérifions actuellement pour les composants. Donc, une petite explication de ce que nous avons fait encore une fois, nous obtenons chaque liste de direction des vignettes contenant les deux informations , qu'elles soient activées ou non, nous parcourons la liste en itération Ensuite, nous parcourons chaque mur pour chaque itération de la liste Cette boucle à l'intérieur d'une boucle s'appelle essentiellement une boucle imbriquée Ainsi, pour chaque composant de cette boucle, bouclez quelque chose d'autre, et nous vérifions si le composant du mur possède la balise de l'énumération que nous avons convertie en chaîne Vrai. Correct ici. S'il possède le tag, il existe. Et si la valeur est vraie, parce que si la valeur est vraie, cela signifie qu'il n'y a pas de mur, cela signifie que notre flèche est visible. Cela signifie que notre flèche est visible, que nous éteignons le mur. Maintenant, si nous allons jouer, connectons d' abord cette fonction. Nous sommes vraiment connectés, n'est-ce pas ? Oui, nous l'avons fait. OK. C'est vide. Nous n'avons pas parcouru tous nos donjons, donc donjon, nous allons obtenir les valeurs cette fois, pas les clés Nous allons donc parcourir chaque acteur, pas les coordonnées Nous allons faire une boucle. Ensuite, à partir de quatre boucles, nous allons obtenir des opérations, qui seront les dernières. Ensuite, à partir d'ici, nous allons nous cacher. Maintenant, nous devons lancer. Vous voyez maintenant que nous devons passer à ce que nous appelons les décorations ? PP. Vous pouvez voir, maintenant je ne peux pas lancer deux décorations BP. Je ne le trouve pas car Decorations est un acteur enfantin. Elle renvoie un composant acteur enfant. Nous devons donc trouver un enfant acteur acteur. s'agit donc d'une composante Il s'agit donc d'une composante et d'une composante d'un enfant acteur, qui a coulé deux décorations BP. Comme si c'était la cellule, et c'était ce qu'il y avait dans la cellule. Je vais me convertir en plâtre pur, celui-ci, et je vais cacher des chauves-souris. En gros, c'est ça. Cela semble donc être une fonction simple. C'est lourd parce qu'il contient toutes ces informations, il a besoin de l'acteur, d'un enfant, de l'enfant que nous devons recruter pour obtenir la décoration, et à l'intérieur, nous faisons également beaucoup plus de choses. Donc, quelque chose qui semble optimal ici ne l' est peut-être pas en fin de compte. Compilez et sauvegardez, et jouons. Et maintenant, nous avons une belle région. Je pense que c'est tout pour celui-ci. Je te verrai ensuite. Au revoir. 24. Motifs de couloir par défaut: Bonjour et bienvenue dans Game Design Workshop, Real Engine Five, Procedural Dangon Action BZ Creation Calls Lors de la dernière leçon, nous avons ajouté quelques références du générateur à la tuile et de la tuile à l'enfant acteur, savoir les décorations BP, et nous avons créé la fonction de masquage du mur, qui utilise essentiellement la tuile BP. Il en obtient les instructions et, à partir de la direction dans laquelle il passe entre les touches, trouve quelles touches sont visibles et masque les murs en conséquence Et ferme également la collision. Maintenant, lorsque nous créons le labyrinthe comme celui-ci, nous pouvons immédiatement remarquer qu'il est un peu plat. Il n'y a aucun moyen de tourner à droite ou à gauche. C'est un espace ouvert, que nous pourrions bien sûr décorer avec des pièces et des accessoires, et ça aurait l'air sympa Mais rendons un peu plus complexe les endroits où le joueur peut aller ou non. Pour ce faire, nous allons améliorer un peu notre fonction existante, Let's Stop Play. D'une connexion fixe sans connexion. heure actuelle, ce que nous sommes en train de faire, c'est de prendre chaque bloc et Vous bloquez, êtes-vous lié à un autre bloc ? Et si la réponse est oui, alors nous avons défini cette visibilité flèche pour qu'elle soit visible vers l'autre bloc. Et si nous pouvions demander s' il y a un autre bloc, et si je pointe vers sa direction, que je créerais une flèche ? Par exemple, passons à la peinture. R. Lorsque nos blocs font ce truc ici avec des flèches, ils cherchent la pièce suivante, ils créent le contraire, ils recherchent la pièce suivante, ils créent le contraire, ils recherchent la pièce suivante. Et encore une fois, ils créent le contraire, mais il ne nous reste plus que cela. Mais si nous modifions le code plutôt que lorsque vous avez un bloc, alors ce bloc ouvre simplement cette flèche. Nous connectons donc toutes les flèches des labyrinthes pour essayer de déterminer s'il existe un autre bloc. Par exemple, s'il y avait un bloc ici, puis qu'il continuait ainsi sans jamais essayer de suivre cette voie , disons qu'il venait d'ici, alors nous avons un autre bloc ici. Puis il a essayé de suivre cette voie. Il n'a pas essayé de suivre cette voie, n'y a donc pas de flèche ici. Donc, en gros, nous conservons les modèles de la carte qui ressemblent à des vers de serpent. Donc, pour ce faire , il suffit d' ajouter quelques éléments ici. C'est-à-dire que lorsque nous parcourons les adjacents disponibles, nous indiquons cette direction sur notre bloc d'origine O block que nous sommes en train de tester depuis le Dungeon Mac. Carte. Ensuite, nous devons trouver ce bloc parmi les blocs valides. Je vais reconstituer cette base de valeurs, la valeur que je suis en train de vérifier. À partir de là, je vais utiliser le donjon pour trouver l'acteur approprié. Maintenant, je vais prendre des directions opposées car nous voulons que la flèche opposée apparaisse. Et je vais encore une fois me baser sur les autres éléments. Dans cette direction opposée. Je vais me connecter ici. En fait, au lieu que ce soit toujours vrai, je vais juste le faire de la même manière que dans le bloc de directions. Maintenant, soyons clairs car il y en a trop. Faites-en un original, nous allons nous connecter ici. Peut-être qu'il y en a une plus faible ici aussi. Car ici, nous n'en avons besoin que d' une, nous n'en avons pas besoin de deux Peut-être que nous pouvons utiliser une variable locale, tout ça. Adjacent. Maintenant, ce n'est pas vraiment nécessaire pour les choses ici. Ici. Ici. Je n'ai plus besoin de ligne. Je peux me casser. Ici. Maintenant, c'est un peu mieux. Cela pourrait devenir bien meilleur si nous promouvons cette variable et si nous nous connectons à tout. Mais je pense que c'est lisible. Premièrement, rapprochez-vous un peu. Je pense que c'est beaucoup plus lisible que possible comme cela peut l'être actuellement. Voyons donc si cela a fonctionné. Compiler. Commençons par. Maintenant, nous pouvons voir que certains endroits sont verrouillés. Mais la plupart des lieux le sont. Nous avons vraiment des couloirs, il doit y avoir une erreur, car ils devraient être accessibles. Donne-moi une seconde pour vérifier. Oui, thêta c'est que je n' actionne pas les flèches correctement J'actionne les flèches sur le premier bloc à cocher. Je n'actionne pas les flèches sur le deuxième bloc de vérification. Donc, si vous connectez ceci ici en fait. Ça pourrait être réparé. Vous aurez des tanières. Cette raison est l'action que je suis en train de vérifier. Oh, oui, j'ajoute dans la même direction que celle que je suis en train de vérifier. Je vais donc obtenir l' itinéraire à partir d'ici. Nous voulons que la direction s'ajoute aux directions du bloc opposé. Non pas celui que nous sommes en train de vérifier, mais celui qui répond à ce contrôle. Cet ajout contient donc les directions du champ adjacent à l'acteur. Compilez également et V, ça marche. La seule chose qui ne fonctionne pas, c'est la première tuile. Soyez sur la première vignette, nous n'actionnons pas de flèches. Alors allons-y. Nous allons passer à notre fonction sur la première vignette. Et nous allons faire glisser cette section. Et nous allons récupérer les clés. Et chacun. En fait, nous le pouvons, nous n'avons pas besoin de tous les passer en revue. Nous avons besoin d'une boucle for. Nous pouvons simplement ajouter celui-ci en tant que compilation et enregistrer à nouveau. Et maintenant c'est beaucoup plus viable. Vérifions-le à nouveau. Oui, nous avons un joli labyrinthe et nous pouvons voir qu'il y a des murs qui créent un chemin. Maintenant. La prochaine étape logique serait que lorsque nous aurons notre labyrinthe, nous ayons des hodors, des chemins qui peuvent être bloqués pour la plupart, autres qui ne sont pas verrouillés, la prochaine étape serait d'ajouter des règles aux huit pièces la prochaine étape serait d'ajouter des règles aux huit Cependant, puisque nous voulons que certaines pièces soient une sortie et que certaines pièces soient, par exemple, un coffre contenant la clé de sortie. Il serait plus sage de le mettre en premier dans le labyrinthe. Par exemple, si je crée une pièce ici, cela limite considérablement l' endroit où je peux mettre les clés. C'est ce que j'ai dit, si les clés sont dans cette boîte, tout à coup, la pièce divisera automatiquement ces zones un peu mieux. Donc, si j'ai réparti des blocs qui ne sont pas viables pour les pièces, dois suivre la logique Création de pièces entières. Cependant, ils le sont. Quoi qu'il en soit , cela leur permet de s'espacer davantage. Lorsque vous avez une carte où les endroits marqués d'un x ne doivent pas être placés ici, cela limite considérablement les zones où les pièces peuvent être construites. C'est donc ainsi que nous allons procéder. Et je pense que c'est un bon point d'arrêt pour le moment. Ce que nous allons faire dans le prochain, c'est créer le plan de l'ascenseur et le plan du coffre, puis trouver un moyen de les faire apparaître C'est tout pour le moment. Au revoir Chante toi à la prochaine. 25. Plan de bâtiment et d'ascenseur: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop et Dungeon Real Engine Five Procedural Auparavant, nous avons amélioré notre fonction pour les connexions non connectées Pi pour qu'au lieu de rechercher dans chaque bloc un emplacement de champ valide, rechercher dans chaque bloc un emplacement de champ valide, un emplacement appartenant au labyrinthe, pour vérifier, si ce champ, nous vérifiions réellement l'emplacement des champs, mais nous vérifiions maintenant que si l'emplacement du champ, notre bloc que nous vérifions, comporte une flèche pointant vers lui, nous devrions activez la flèche opposée à cet emplacement. Donc, en gros, apportons de la peinture et, par exemple , de la peinture jaune Neda Ainsi, par exemple, si notre bloc avait une flèche vers ce côté, disons une flèche, vers ce côté, et que le bloc opposé avait une flèche vers ce côté et ce côté, maintenant, notre bloc qui vérifie d'ici à ce bloc. C'est la vérification qui est en cours. Il est écrit : « J'ai une flèche pointée vers toi ». As-tu une flèche pointée vers moi ? Si ce n'est pas le cas, créez une flèche. De plus, s'il n'y a pas de flèche et que celui-ci en a une, il le désactive parce que nous l'avons définie Nous l'avons ajoutée, pas définie, car AD est un setter pour les cartes si la valeur existe Donc, si je n'ai pas de flèche, alors vous n'en avez pas parce que nous obtenons la recherche à partir de nos indications dans le bloc de vérification d'origine. Dans celui-ci, nous avons dit que nous allions continuer à créer des blocs sur l'ensemble de notre labyrinthe que nous ne puissions pas avoir de chambres, comme le bloc ascenseur et le bloc box, le box avec le bloc-clés. Il est donc plus facile de dire dans les règles que lorsque nous voulons, par exemple, que nous voulons que l'ascenseur se trouve dans les derniers pâtés de maisons. Supposons donc que ce soit la dernière case, mettez L ici, dernière case, et nous voulons l'avant-dernière, l'avant-dernière et l'avant-dernière. Supposons que nous voulions que la boîte de l'ascenseur se trouve dans l'une de ces pièces, désolé. Maintenant, si ces pièces sont créées. Si ces tuiles, et non des pièces, sont créées dans une pièce, alors notre ascenseur ne pourrait pas se trouver dans la pièce et notre code tomberait en panne. Il serait donc plus facile pour nous définir des lieux qui, dans l' ensemble du labyrinthe, ne créent pas pièce parce que nous avons des règles à ce sujet et laisser le reste du labyrinthe pour pouvoir créer des pièces chaque fois que cela Maintenant, je pense que nous allons voir ces choses en action plus clairement. Oh, tout d'abord. Créons les plans que nous utiliserons pour l'ascenseur Étagères contenant les plans. Nous allons donc cliquer avec le bouton droit sur notre dossier de plans. Nous allons choisir le plan, et nous allons sélectionner l'acteur. Nous allons donc appeler cet ascenseur BP. Entrons dans l'ascenseur et ajoutons un maillage statique. Et ce sera le cas maintenant, c' est juste pour le spectacle en ce moment, donc nous allons juste mettre quelque chose comme vous le souhaitez. Mettons une table. Disons ça. C'est énorme. Nous voulons quelque chose de plus petit. Ouais. Nous nous en sortirons bien pour le moment. Cela représentera notre ascenseur. Je vais compiler et enregistrer, et créer un autre plan Test AEP. Grand est. OK. Ouvrons-le, et créons un maillage statique. J'ai créé ce maillage statique. Nous avons un coffre, je crois, le premier. Bien. Pour l'instant, compilez et enregistrez. Mais nous en avons certaines représentations lorsque nous établissons les règles dans le labyrinthe où les construire. Maintenant, poursuivons notre décoration. Nous avons créé les carreaux de base. Et puisque nous avons créé les tuiles de base, augmentons également le bit de notre barre de chargement. Je vais donc copier-coller ce pourcentage c défini sans que le c ne se charge réellement. Mais je vais le supprimer par la suite. À partir de maintenant, nous définissons la valeur que nous voulons pour la pré-phrase, et cette fois, ce sera 5,0 0,5 parce que nous sommes partis du 0,45 avec les sorties fixes de non-connexion et les sorties fixes de fs Maintenant, soyez honnêtes, car cela va se passer un peu vite. Nous pouvons mettre de faux retards ici. Mettons un délai de 0,1. Nous donnons donc l'illusion que l'ordinateur pense. Maintenant, nous allons avoir besoin d'une nouvelle fonction, et nous allons appeler cette fonction dans l'ascenseur. Ensuite, nous allons entrer dans cette fonction. Nous y sommes déjà et ce dont nous avons besoin, tout d' abord, c'est de notre carte de donjon variable Maintenant, nous allons en tirer les clés. Et pour créer notre ascenseur, nous allons utiliser le dernier index Quelle est la dernière tuile placée sur le labyrinthe. Maintenant, nous allons obtenir cette copie du dernier index, nous avons donc notre ordonnance, et nous allons promouvoir ces coordonnées au rang de variable que nous appellerons « emplacement de l'ascenseur » au cas où nous en aurions besoin. Maintenant, nous allons acheter nos tuiles spéciales, les tuiles sur lesquelles nous ne voulons pas que l'on construise quoi que ce soit, et nous allons y ajouter cet emplacement d'ascenseur parce que nous ne voulons pas que quoi que ce soit d'autre soit construit sur les tuiles spéciales Maintenant, la prochaine chose à faire est de créer un périmètre autour de l'ascenseur. Rien ne se reproduira donc autour de l'ascenseur. Nous voulons donc réellement ajouter le périmètre de cette tuile aux tuiles spéciales. Et pour cela, nous allons avoir besoin d'une nouvelle fonction. Et cette fois, il sera pur car il ne fera que quelques opérations mathématiques. Ce sera une sorte de copie de nos tuiles croisées. Il obtiendra également les tuiles de visée. Donc toutes les huit directions autour d'une tuile. Nous allons donc créer cette fonction. Créons une fonction. Disons qu'il s'agit d' un périmètre de tuile unique. C'est correct. Je ne l'ai pas fait. Et entrons dans cette fonction. Nous sommes déjà à l'intérieur. Faisons en sorte que ce soit simple dès le début. Et pour la saisie, bien sûr, nous aurons besoin d'un point T vérifier les coordonnées. Le nom est deux ports. Passons maintenant à notre croix à vent adjacente. Nous allons donc le copier. Et revenons à notre fonction. Nous allons coller ceci, le bas, et je vais connecter les cordons ici. Maintenant, nous avons la croix. Ce dont nous avons essentiellement besoin, c'est de plus, ce qui serait une question d' organisation pour le moment. Par exemple, pourrions-nous les placer le nord-est entre le nord-est, le sud-ouest entre le sud et l'ouest, ou garderions-nous les mêmes qu' avant et les ajouterions-nous ci-dessous. Je vais peut-être le faire. Conservez-les comme avant, et dans les nouveaux ci-dessous. OK. Donc je vais avoir besoin de ou plus, et je vais avoir besoin du plus un du x et du plus un du y. Ensuite, je vais avoir besoin du plus un pour le x et du moins un pour le y, puis du plus un ops, prendre plus un du y, et le moins un du x, puis les deux sur le moins un. Ici, maintenant, peu importe ce que nous voulons faire ou ce que nous voulons faire. Mais on peut le découvrir. Pas pour l'instant. Allons-y et continuons. Nous avons donc l'élévateur de spawn. Nous avons ajouté l'emplacement de l'ascenseur, et maintenant nous allons utiliser cette nouvelle fonction f single mais je n'ai pas créé de sortie. Créons donc une sortie. Faisons-en un tableau. Appelons cette tuile périmétrique ps. Et connectons cela ici. Retournons à l'ascenseur. Maintenant, nous allons trouver l'emplacement de notre ascenseur. Nous allons faire une boucle jusqu'à ces ordonnées, qui sont le périmètre de cette tuile Et maintenant, nous allons les ajouter à la vignette spéciale. Je vais copier-coller ce code d'ici. Je vais connecter ceci ici et cela ici. Le seul problème serait que si une tuile du périmètre ne se trouvait pas dans le donjon, elle serait ajoutée à des tuiles spéciales Les tuiles spéciales contiendraient donc des coordonnées qui ne se trouvent pas dans le donjon Nous aurions pu utiliser certaines règles pour dire que s'il n'y a pas de tuiles spéciales dans le donjon, faites quelque chose, mais nous pouvons également les filtrer ici pour ne pas en avoir Je vais chercher la carte du donjon. Je vais l'apporter ici. Je vais demander s'il contient les coordonnées que nous ajoutons et s'il les contient, je vais utiliser une branche pour les ajouter. Dans le cas contraire, ne les ajoutez pas. Je vais compiler et enregistrer. Et pour l'instant, pour voir si cela fonctionne, nous allons créer l'ascenseur Nous allons donc le supprimer par la suite, car nous allons faire apparaître tous nos accessoires à un moment donné Donc, maintenant je vais faire apparaître un acteur à partir de clas pour le débogage, et nous allons voir ce qui se s'il apparaissait dans le dernier, en divisant transformation Je vais trouver l'emplacement de l'ascenseur. Et nous allons également acheter Dungeon Mp. Et sur la carte du donjon, nous allons trouver l'acteur sur l' emplacement de l'ascenseur, sur le carreau Et à partir de là, je vais trouver l'emplacement de l'acteur. Je vais le connecter ici. Et pour le cours, je vais sélectionner. Tor. Et on peut laisser les choses comme ça pour le moment. Nous n'avons pas besoin de le supprimer. Et je vais en faire la promotion auprès d' un rival appelé Elevator OK. C'est très bien. Compilez et enregistrez. Jouons. Et il n'y a pas d'ascenseur parce que je n' appelle pas la réception. Oh, appelons l'ascenseur. Sur notre graphique de ventilation dans le corting. Commençons et jouons. Nous avons notre ascenseur, et il est sur notre dernier carreau. Nous partons donc d'ici, et nous avons notre ascenseur qui nous mènera au prochain donjon Je pense que c'est un bon arrêt pour le moment. Dans le prochain, nous allons nous masser la poitrine. Au revoir. 26. Plan de clé de poitrine: Bonjour et bienvenue sur Game Design Workshop n Real Engine Five Procedural Dungeon Action P Z Creation Calls dernière leçon, nous avons commencé à décorer notre labyrinthe avec notre ascenseur Et dans celui-ci, nous allons continuer avec notre coffre où nous allons déposer la clé de l'ascenseur. Donc, ce que nous avons fait dans l'ascenseur, c'est que nous avons obtenu la carte du donjon Nous avons obtenu les clés sur la carte du donjon, et nous avons obtenu le dernier index, car l'ascenseur apparaîtra dans le dernier emplacement Nous avons donc ajouté ce dernier emplacement à la tuile spéciale, afin que rien d'autre n'y apparaisse, et nous avons créé une fonction permettant de déterminer le périmètre d'une seule tuile en ajoutant les huit coordonnées directionnelles. Ensuite, nous avons ajouté ces coordonnées aux tuiles spéciales et filtré pour savoir si elles se trouvaient dans le donjon ou non, puis nous avons créé l' ascenseur pour le débogage Nous allons maintenant créer une nouvelle fonction pour faire apparaître le coffre Mais nous allons appeler cette fonction p est. Nous ne les créons pas vraiment , alors peut-être que le nom ne devrait pas être spawn elevator Il doit être créé un ascenseur, et cela doit être un ensemble de cordes. Parce que, comme je l'ai dit, nous allons supprimer le code plus tard dans l' ascenseur, celui-ci, et nous allons faire apparaître tous nos accessoires à un autre endroit de l'algorithme Revenons à la création des noyaux pour le coffre. Maintenant, revenons à notre En fait, nous pouvons copier-coller le code à partir d'ici. Nous pouvons obtenir la carte du donjon, les clés, et en fait, nous en avons juste besoin Je vais donc le coller ici. Et ce dont nous avons besoin, encore une fois, c'est d'un dernier index. Et nous allons le diviser en deux. Nous pouvons donc en avoir la moitié. Où se trouve le milieu de notre donjon ? Nous pourrions également faire des styles Mac divisés par deux, et ce serait pareil. Mais c'est aussi un bon moyen. Juste au cas où nous voudrions améliorer le labyrinthe ultérieurement pour y ajouter des tuiles supplémentaires, par exemple, en plus du corps principal Imaginons, par exemple, que nous créons des zones secrètes. Nous créons des éléments supplémentaires en dehors de l' algorithme commun qui a construit le donjon Oh, nous allons en prendre la moitié. Et nous allons le promouvoir en tant que variable locale. Appelons cela l'index des trésors. Et maintenant, pourquoi est-ce que je fais la promotion de ces deux index de trésors ? C'est parce que je veux vérifier à partir de la moitié des tuiles et plus s'il y a un endroit où faire apparaître notre coffre au trésor Parce que nous ne voulons pas que notre coffre au trésor apparaisse sur la première tuile, par exemple sur les deux ou trois premières tuiles Cela peut être basé sur la façon dont notre labyrinthe se ramifie, et ce serait l'une des omissions qui se produisent. Mais nous devrions essayer que cela se produise un peu moins. Nous allons donc vérifier la moitié de ce qui se trouve au-dessus du labyrinthe Et pour ce faire, nous allons utiliser une boucle sauvage. En fait, laissez-moi apporter de la peinture pendant une seconde. Donc ce que nous avons fait, c'est si nous avons le nombre total de tuiles, notre labyrinthe, en fait, dressons la carte de notre donjon Nous avons donc obtenu le dernier index. Ce dernier indice, et nous le divisons par deux. Disons que c'est 20, alors maintenant il y en a dix. Maintenant, nous avons défini ce dix comme point de départ de notre index des trésors. Ça fait dix heures. Nous allons créer une boucle en Y qui vérifie. Si l'indice des trésors est égal à cette moitié, car nous ne l' aurons pas exclusif. Nous voulons donc au-dessus de la moitié du labyrinthe, pas exactement dans le bloc, disons, par exemple, dans l' index qui représente Donc, comme il y a un cas où cela fonctionnera à l'infini, puisque les boucles, les boucles Wi, c'est un peu, cela demande un certain âge Ouais. Mais les boucles Wi sont un peu méchantes, disons qu'elles peuvent geler votre ordinateur jusqu'à ce qu' termine leur tâche parce qu'elles fonctionnent la même manière que nous les exécutons actuellement, elles se trouvent il termine leur tâche parce qu'elles fonctionnent de la même manière que nous les exécutons actuellement, elles se trouvent sur le fil principal, ce peut complètement geler votre ordinateur. Pour éviter cela, nous allons également créer la variable tries. Et nous dirons essayer, par exemple, 30 fois. En fait, ce que nous allons faire, c'est oui, quelque chose comme ça. Styles Mac divisés par deux en gros. Si ce chiffre est supérieur à ce nombre, coupez la boucle en y. Il n'y a trouvé aucun emplacement valide. Nous allons donc définir manuellement une action, qui serait exactement le milieu Donc oui. C'est ce que je voulais dire à propos des boucles Wi, qu'elles sont délicates et qu'elles ne devraient pas vraiment être utilisées pendant l'exécution. Mais pour nous, ce temps d'exécution n'est pas exactement temps d' exécution, car nous nous appuyons sur le chargement. Nous ne le faisons donc pas pendant la durée du jeu, quels FPS sont importants. Loin. Faisons-le. Apportons le Wi Loop. Ce truc dangereux. Et supposons que l'indice de mesure soit égal au dernier indice divisé par deux. Si c'est vrai, cela fera tourner le body loop. Lorsque ce terme tombera, il disparaîtra. Il y a aussi une infobulle qui l' explique un peu mieux que moi. Oh. Depuis, nous n'avons aucune autre condition à ajouter aux chambres spéciales. Ce sera généralement la moitié plus un, car nous l' augmenterons d'un. Mais d'abord, sécurisons nos failles. Nous allons créer une nouvelle variable locale, qui sera à nouveau de type entier. Nommons ce prix. Tout d'abord, augmentons ce chiffre d'une unité. Et posons une question. I R tris est égal au dernier indice divisé par deux, car chaque fois qu'il en ajoute un, il part de zéro. Quand c'est vrai, cela signifie que cela représente la moitié de notre labyrinthe Donc, si c'est vrai, nous allons définir l'indice de trésor 20, et cela sortira de notre boucle. Maintenant, juste en K, eh bien, pour nous, ce sera tous les cas. Lorsque Trice n'est pas égal à 50 % du labyrinthe, nous obtenons notre index de trésors, plus un t, et nous allons obtenir notre carte du donjon, nous allons trouver l'acteur. Nous avons besoin de l'acteur et nous avons besoin des coordonnées Je vais donc chercher les clés ici. Je vais m'en procurer une copie et la relier à une. Ensuite, je trouverai cet acteur. Non, je vais vérifier. En fait, je suis désolée, je n'ai pas besoin que l'acteur vérifie. J'ai juste besoin des coordonnées pour vérifier. S'ils sont contenus dans les tuiles spéciales. Si c'est contenu dans les tuiles spéciales, je ne ferai rien. S'il n'est pas contenu dans les tuiles spéciales, je vais définir notre indice de trésor variable. Un trésor plus un. Eh bien, parce que j'ajoute avant la branche, cela ne signifie pas que je suis en train de configurer. C'est pourquoi je l'ai fait de cette façon pour expliquer cela. Quand j'ajoute quelque chose et que je vérifie les tuiles spéciales, gros, si les coordonnées Donc, lorsque j'ajoute à cet index avant la branche, cela ne veut pas dire que je le définis. J'ajoute juste pour obtenir une valeur, un nombre, et je vérifie en fonction de ce nombre, quelque chose que je veux. Et si ce que je veux n'est pas vrai dans ce cas, alors je place ce chiffre dans l'index des trésors. Quoi qu'il en soit, continuons. Maintenant, cette boucle y est terminée d'une façon ou d'une autre. S'il s'est terminé avec un indice de trésor nul, nous devons le savoir. Je vais vérifier si l'indice des trésors est nul. Si c'est vrai, je vais placer l'indice des trésors sur la moitié du labyrinthe Si ce n'est pas vrai, cela n'a pas vraiment d'importance car cela signifie que cette branche a été exécutée et qu'elle a trouvé une nouvelle valeur. La prochaine chose que je vais faire est de récupérer les coordonnées. Je vais partir d'ici. Je vais l'ajouter aux tuiles spéciales. Je vais promouvoir ce ps. Le get a besoin de l'indice d'âge. Sinon, il obtiendra le premier indice zéro, qui serait le bloc de départ. Je vais également en faire une variable et appeler cet emplacement. Maintenant, pour le débogage, sortons notre opérateur téléphonique BP de l'ascenseur à huit cordes, revenons à la création de Cords est Au lieu de l'ascenseur, je vais choisir le meilleur et le plus grand. Au lieu de l'emplacement de l' ascenseur, je vais juste indiquer l' emplacement de l'ascenseur. vais le supprimer, et je vais le promouvoir de manière si variable. Oui Agir. Pour compiler et enregistrer, jouons d'abord. Et, mais j'ai oublié d' appeler à nouveau cette fonction. Créez le coffre central après avoir créé l'ascenseur du noyau. Maintenant, par miracle, ça ne marche plus. Oh, non, ça l'est. C'est ici. Nous avons la poitrine. C'est dans un coin. Peu importe. C'est sur le numéro 11 depuis 20 m. Et c'est dix plus un. La boucle Y a donc fonctionné correctement. Par exemple, si nous partons de zéro, nous devons aller ici, récupérer la clé, revenir et prendre notre ascenseur. Créons-en un autre. Ici, l'ascenseur est là. Oui, par où commencer ? Nous commençons ici. Nous commençons ici. Nous pouvons le voir. Nous ne savons pas si les clés sont là, nous pourrions passer par ici, nous pourrions y aller. Cela crée des scénarios de jeu valides d'après ce que je peux en dire. Nous commençons ici. On voit instantanément l'ascenseur. Oui, des scénarios valides ici. OK. Je pense que c'est tout pour celui-ci. Je te verrai le prochain. Au revoir. 27. Algorithme de créateur de pièce: Bonjour et bienvenue sur Game Design Workshop, Unreal Engine Five Procedural Dungeon action-RPG Auparavant, nous avions créé la fonction de création de coffres de coordonnées sur le générateur de labyrinthe Nous avons utilisé la carte du donjon. Nous avons le dernier index des clés. Nous l'avons divisé par deux, et nous l'avons stocké dans une variable que nous avons appelée Treasure Index. Maintenant, nous avons créé une boucle while qui vérifie que si l'indice du trésor est égal à la moitié de l'index, ajoutez un à une variable trice qui commence à zéro, et nous vérifierons si cette variable est égale à la moitié de la longueur. Nous avons dit que si cela est vrai, cela signifie que nous ne pouvons pas trouver d'indice de trésor valide Nous mettons donc l'indice des trésors à zéro et quittons la boucle Y, ou bien, s'il n'est pas égal, essayons de trouver une option valide qui ne figure pas dans les cases spéciales. Pour nous, c'est plus un car nous n'avons aucune autre règle d'égalité spéciale pour le moment. Ensuite, lorsque nous quittons la boucle, si c'est zéro, ce qui signifie qu'il a essayé d'en trouver un mais qu'il n'y est pas parvenu, nous avons défini les tuiles du trésor exactement à la moitié de l'index, puis quand c'était faux, nous avons ajouté le nouvel index des trésors qui, lorsqu'il est faux, signifie qu'il a trouvé un nouvel index. Nous avons ajouté cet index à notre ensemble spécial de tuiles, et nous avons ajouté les coordonnées à l'emplacement du coffre. Ensuite, nous sommes apparus pour avoir débogué un coffre. Il est maintenant temps d'ajouter ces soi-disant salles à notre jeu. Nous avons donc plus de variété et des mécanismes plus complexes dans notre labyrinthe Pour ce faire. Passons d' abord à la peinture et expliquons certaines choses nécessaires à notre logique. Si, par exemple, nous avons quatre blocs, oublions les blocs spéciaux. Disons qu'il y a quatre blocs dans notre labyrinthe. La première chose que nous ferons est si nous arrivons depuis cette chambre, par exemple, désolé, pas depuis cette chambre. Commençons par le bas à gauche, car c'est ainsi que nous allons vérifier. Nous allons commencer par la possibilité en bas à gauche. Et nous demanderons à partir de cette vignette de vérifier s'il y en a une ici ou ici. Donc ni le nord ni l'est. Y a-t-il une tuile dessus sur ces coordonnées ? S'il y a une tuile, nous créerons un tableau pour cela, et nous le ferons pour le bouclage En fait, ce n'est pas beaucoup. Points. Nous allons créer une boucle à quatre avec cette ordonnance. Quoi qu'il en soit, dans cette boucle for, nous allons vérifier certaines règles et en fait, nous aurons suffisamment de quatre boucles pour vérifier spécifiquement chaque règle. Nous voulons donc tout exagérer en une seule boucle Ce serait plus confus si nous avons un tas de règles ici, des branches et tout le reste, que les séparer Cette boucle à quatre le fait, cette boucle for fait cela, cette boucle fo le fait, puis en ayant tout en un. Ensuite, lorsque cela sera suffisant, nous l'ajouterons à une nouvelle variable Maintenant, pourquoi je parle d'une nouvelle variable ? Parce que cette fois, nous allons utiliser une structure, une variable appelée structure. Qu'est-ce qu'une structure ? Une explication approximative serait une liste personnalisée de variables de notre choix pour les conserver dans une structure, afin de les conserver dans un format permettant de réunir tous ces types de variables. Par exemple, nous avons un lingot pour asgun, par exemple, Nous avons un entier pour amo. Nous avons un entier pour le mana. Nous avons un char pour la vie. Dans notre cas, il s'agira d'une structure composée de tableaux et supprimez tout cela, d'une structure composée de tableaux qui seront les coordonnées des pièces Ce sera donc un tableau de 0,0, puis ce sera 0,1, sera 11, ce sera 1,0 si y est ici et ici. Quoi qu'il en soit, non, nous allons utiliser cette structure pour avoir toutes les possibilités, car une fois que celle-ci aura exécuté ces trois coordonnées supplémentaires , celle-ci fonctionnera pour les coordonnées suivantes, puis celle-ci fonctionnera pour les coordonnées suivantes, et celle-ci fonctionnera pour les coordonnées suivantes. Et il y en aura un jusqu'à ce que vous ayez l' impression que c'est tout le labyrinthe, et que nous ayons une liste des pièces possibles Maintenant, bien sûr, nos chambres seront deux par deux. Et pour un plus grand nombre de pièces, si nous choisissions ce système, qui n'est pas très optimal pour les grandes pièces, reviendrait à ajouter coordonnées supplémentaires, comme si nous cochions également ce bloc, si nous voulions un deux par trois, ou si nous voulions un trois par trois, nous vérifiions les coordonnées ci-dessous et ci-dessous. Maintenant, faisons-le. Donc, quelque chose de familier, d'abord. Créons une fonction. Nous avons un tas de fonctions. À un moment donné, nous pouvons classer nos fonctions comme suit : par exemple, nous pouvons mettre les fonctions pures dans la catégorie P. Nous avons créé la catégorie ici, pure Maintenant, nous ne disons pas pur, mais pur. Pur. D'accord, nous pouvons donc choisir toutes nos fonctions pures et les ajouter à cette catégorie, par exemple. Faisons-le très rapidement. Nous trouvons donc toutes nos fonctions qui disent «  pure » et nous les ajoutons à la catégorie « pure ». Donc, en gros, nous avons beaucoup de fonctions pures en ce moment. Ce sont nos éléments de base. Disons, et ce sont nos mathématiques. Maintenant, continuons en créant une nouvelle fonction, chantant le symbole plus ici, et en appelant cette fonction trouver éventuellement des pièces deux par deux ». T deux par deux. Maintenant, cette fonction va être un peu lourde puisqu'elle va avoir un multiple next for loop. Nous allons donc récupérer les clés du donjon. Pour chaque coordonnée, nous allons vérifier s' il s'agit d'une chambre valide. Donc, pour ce faire, je vais créer une variable locale, et je vais la rendre du type b. L'identifiant d'une chambre est valide. Juste pour le plaisir, faisons le contraire. Supposons que la chambre valide soit ouverte au début. Donc, la valeur par défaut ici, nous devons compiler pour définir la valeur par défaut. La valeur par défaut de la pièce valide soit t. Maintenant, nous allons l' apporter ici, en fait, avec un setter, et je pourrais simplement la définir ici pour qu'elle soit vraie Je n'ai pas besoin de la valeur par défaut, mais elle pourrait provenir de la valeur par défaut lors de la compilation de la sauvegarde Et maintenant, nous allons créer une nouvelle variable appelée R. Et elle sera du type indiqué. Et le point type, c'est parce que ce sont des coordonnées, et ce sera un ensemble de conteneurs, et nous allons l' amener ici, et nous allons le nettoyer. La raison pour laquelle nous effaçons réellement et définissons la variable ici pour qu'elle soit vraie, c'est parce que nous allons vérifier chaque pièce Je vais renseigner ces informations. Nous voulons que cette partie de la boucle à quatre réinitialise les informations avant de procéder à nos vérifications Parce que lorsque nous ferons nos vérifications, lorsque nous ferons le reste des quatre boucles, parce que voici notre boucle F, aura pas quatre boucles pour chaque boucle, pour les coordonnées voisines de celle-ci, enregistrements du voisin de la pièce. Nous devons créer cette fonction. Ça va redevenir pur. Nous allons donc, comme nous l'avons dit, peindre les coordonnées x suivantes, le x plus un, le x et le y plus un, et le y plus un pour créer une pièce deux par deux. Ensuite, nous allons leur demander de vérifier certaines règles. Créons maintenant cette fonction. Mais avant de le créer, ce dont nous aurons besoin, c'est à nouveau d'une partie des coordonnées fines, des coordonnées fines adjacentes. Passons donc à la solution pure, trouvons la partie adjacente. Je traverse à côté. Et copions. Copions tout et nous supprimons tout ce dont nous n'avons pas besoin. Oh, nouvelle fonction. Appelons-le faire deux par deux s. Faisons-en un pur, et mettons-le dans la catégorie pure. Bien sûr, nous avons besoin d'une sortie qui soit le point final de S. Ray, bien sûr, encore une fois. Maintenant, nous allons avoir besoin d'une entrée, qui serait des cordons, et il n'est pas nécessaire que ce soit une matrice. Il ne s'agit que d'un point de terminaison de coordonnées ipari unique. Et collons ce que nous avons obtenu de l'autre fonction. Maintenant, nous n'aurions pas besoin des points négatifs. Il nous faudrait le plus un. C'est x plus un. C'est y plus un, et c'est x et y plus un. Maintenant, nous avons également besoin des coordonnées des pièces d'origine. Nous allons donc connecter cela ici. Nous allons le supprimer , et nous allons également le connecter ici. Nous avons toutes les coordonnées de la pièce, le plus un sur x, le plus un sur y et le plus un sur chacune d' elles, et le plus un sur chacune d' ainsi que les coordonnées d'origine dans un tableau, que nous produisons sous forme de coordonnées de la pièce. Revenons à notre fonction, trouvons des chambres possibles et introduisons ici cette nouvelle fonction pure, que je n'ai pas ajoutée à la catégorie. Maintenant, je lance la mauvaise fonction. J'ajoute les coordonnées de la pièce deux par deux. Nous y voilà, et nous allons les parcourir. Maintenant, c'est l'heure des règles, règles merveilleuses. Et la première question, bien sûr, devrait être : est-ce qu'ils ont leur place dans le donjon Nous allons donc faire en sorte que notre variable de donjon soit copiée ici. Et je vais vous demander s' il contient ces informations, qui sont les informations de toutes les coordonnées de la pièce. Maintenant, s'il n'en contient pas, nous allons accéder à cette chambre valide fausse car ce n' est pas une chambre valide. Toutes ces coordonnées n'appartiennent pas à une chambre valide, ce qui signifie que nous sommes en train de sortir Si c'est le cas, nous devrions les ajouter à notre nouvelle variable, réseau de pièces variables locales, et connectons-nous. Si ce déclencheur tombe, juste pour des raisons d'optimisation, changeons cela pour chaque boucle en boucle avec pause. Qu'est-ce que cela signifie ? Cela signifie que nous pouvons dépasser ce nombre de personnes quand nous le voulons. Si le déclencheur le met ici, cela signifie qu'il ne parcourra pas toutes les coordonnées. Chaque fois qu'il trouve une coordonnée qui ne se trouve pas dans le donjon, il arrête cette vérification Donc, si nous multiplions cela par 1 000, disons des tuiles, cela aura en fait un avantage sur le nombre de fois que notre fonction s'exécute. Passons maintenant à une question de simulation. Est une chambre valide Si c'est vrai, nous devrions continuer avec le prochain test. Si ce n'est pas vrai, alors nous ne devrions pas invoquer toutes les autres raisons pour lesquelles nous devons garder cette pièce. Je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer aux prochaines règles à la suivante. Au revoir 28. Trouver des salles 2 x 2 possibles: Bonjour et bienvenue sur Game Design Workshop Re engine Five Procedural Dungeon Action ApS Creation Courts Auparavant, nous avions créé nos pièces deux par deux possibles, les premières parties de cette fonction, et nous avions également créé les cordons de pièce deux par deux, qui utilisent essentiellement les cordons que nous avons plus un sur le x plus un sur le y et plus un sur les deux pour créer les deux par deux. Maintenant, nous abandonnons et nous avons vérifié s'ils appartenaient à la carte du donjon Si ce n'est pas le cas, nous quittons notre boucle nested for. Et s'ils le font, nous les ajoutons à la gamme de chambres. Comme nous l'avons dit, nous allons ajouter à une structure tous les ensembles de pièces Continuons avec une autre règle pour le moment. Continuons avec la règle selon laquelle il est contenu dans nos salles spéciales. Oh, nous allons trouver notre gamme de chambres. Parce qu'en ce moment, nous les avions fabriqués deux par deux. heure actuelle, si c'est vrai, nous l'avons stocké dans le tableau des pièces. Nous allons oublier de faire une pause par rapport à la véritable branche de la chambre valide, car si elle est valide, nous continuons, si elle n'est pas valide, nous quittons et nous connectons le réseau de chambres. Nous allons apporter les carreaux spéciaux, spéciaux. Oui, des carreaux spéciaux. Désolée. Nous allons leur demander s'ils contiennent un article, l' un de ceux que nous avons. Nous allons créer une succursale pour y parvenir. S'il est contenu, alors nous allons définir les appels drom valides, et nous allons le casser. Si ce n'est pas contenu, alors tout va bien. Nous n'avons rien à faire. Cette chambre est valide. Ensuite, nous allons demander à nouveau quand cela sera terminé, si c'est valide, car si nous avons freiné, nous voulons sortir et ne pas passer à l'étape suivante Maintenant, l'étape suivante nécessite une étape de plus que de mettre du code. Nécessite la salle ST dont nous avons parlé, la structure des pièces. Passons donc au contenu. Passons au dossier des plans. Faisons un clic léger et créons un nouveau dossier. Et nommons ces dossiers. Entrez dans ce dossier, cliquez à nouveau avec le bouton droit accédez aux plans et sélectionnez la variable de structure Maintenant, nous allons les appeler ST Underscore rooms. Oui, des chambres ST. Pourquoi pas ? C'est bon chambres ST. Nous allons compiler et enregistrer, et nous allons ajouter une variable, qu'elle possède déjà. Ce sera du type à point d'encre. Et maintenant, il va être du type array. Appelons cette pièce des arts. C'est une façon de créer une liste de tableaux, en gros. Nous avons une structure avec la liste du tableau, puis nous créons un tableau avec cette structure. Nous allons donc créer une nouvelle variable dans notre plan, qui sera du type S, rooms, et ce sera un tableau, ce qui l'est déjà Et nous allons l' appeler ST mes y. Maintenant, nous allons avoir besoin d' une variable temporaire d'une structure Si nous ajoutons un index ici, nous pouvons voir que l'index provient de codes de chambre contenant ses propres éléments Donc, pour ajouter ceci ici, je vais le supprimer maintenant, il ne devrait y avoir aucun élément. Pour ajouter cela ici, nous allons créer une nouvelle variante appelée Ros Rom en fait Et quel serait le but ici, ce serait de This is a array. Cela ne devrait pas être un tableau. Il doit s'agir d'une variable unique. Nous sommes perplexes. Pourquoi est-ce que je vois un tableau ici Donc des structures. Il s'agit d'une variable de structure, et elle contient ce tableau. Donc, en gros, ce que nous avons fait, c'est que nous avons un tableau d'une structure avec des tableaux, si cela a du sens Dans cette structure, nous devons placer les membres dans les salles ST. Parce que c'est ainsi que nous modifions les données de nos structures. Nous ne pouvons pas si nous définissons des salles, n'envoyons pas de membres, si nous définissons des chambres au-dessus du nœud. Il y a un ensemble de salles ST, et il y a un ensemble de membres dans la salle ST. Donc, si je définis les pièces ST comme variable, cela signifie que vous modifiez toute la variable. Si je définis des membres, je peux modifier les membres de la structure. Par exemple, si cette structure avait, comme je l'ai décrit précédemment, une variable de santé, une variable de type gun, une variable amo, alors nous pourrions définir les membres de decide ce que nous voulons de ce nœud ici. Par exemple, à l'heure actuelle, nous avons les coordonnées des chambres. Je souhaite définir les coordonnées de la chambre des membres. Nous avons eu une autre valeur. Santé. Par exemple, j'aurais pu sélectionner une épingle sur la valeur de santé et ne pas mettre à jour le reste de la liste. Ce dont nous avons besoin, ce n'est pas d'un passeur régulier, mais de définir des membres C'est un nœud unique pour les structures. Si la chambre est valide, nous allons définir les membres. Nous allons configurer la pièce que nous venons de créer, l'ensemble de pièces, de manière à ce qu'il fasse partie de cette structure de pièce. Ensuite, nous allons obtenir notre gamme de salles ST et y ajouter de la structure. Donc, encore une fois, nous avons une structure qui a des coordonnées internes. Nous stockons ces coordonnées, qui se présentent sous la forme d'un tableau. Nous les stockons dans notre structure, qui comporte un tableau à l'intérieur des coordonnées, puis nous utilisons cette structure pour les stocker dans un tableau de ce type de structure. J'espère que cela a du sens. Maintenant, ce serait essentiellement cela si nous le laissions tel quel, mais cela créerait une liste avec toutes les possibilités. Par exemple, supprimons-le. J'avais une chambre ici, une pièce ici, un carrelage, pas une pièce, un carreau ici, un carreau ici, carrelage ici, du carrelage ici. Faisons une grille. G. Si c'est le cas, nous avons besoin de plus de tuiles. Je vérifie celui-ci, je vérifie Et si je vérifie celui-ci, je vérifie celui-ci. Mais celui-ci se chevauche. Il a donc une possibilité. Nous obtenons les coordonnées de tout ce qui est essentiellement à notre disposition. Nous avons besoin de règles supplémentaires pour clarifier cela. Et puisque nous avons cette merveilleuse structure ici, un ensemble de structures que nous venons de créer, nous pouvons établir une autre règle avant de les ajouter. Nous pouvons demander. Trouvons cette structure, cet ensemble de structures, amenons-la ici, et nous allons recommencer ou chaque boucle avec break. Et nous allons connecter cela. Ceci. En fait, nous allons amener cette succursale ici. Et nous allons demander si certaines de ces coordonnées sont nos coordonnées de vérification, en gros, si elles se trouvent sur l' une de ces coordonnées. Pour ce faire, comme nous pouvons le constater, nous ne pouvons pas simplement vérifier un égal à partir d'ici. se déconnecter car il est du type ST. C'est une structure. Pour vérifier la présence d'une structure, il faut la casser. Comme nous l'avons fait, j'ai fait venir un acteur. Comme nous l'avons fait pour le spa ou la transformation, nous l'avons divisé. C'est pareil, mais en sens inverse. La transformation est une structure. Nous pouvons également le diviser si nous le voulons. Mais comme c'est dans une boucle à quatre, pouvons-nous même le faire dans une boucle à quatre. Nous pouvons le diviser ici et obtenir directement la variable. Mais je voulais juste montrer le nœud de rupture. Recombinons. Si nous avons une structure comportant de nombreux éléments, division sur les quatre boucles ne serait pas aussi bonne visuellement Quoi qu'il en soit, continuons avec les quatre boucles. Connectez ceci ici. Et nous allons nous demander, en fait, si nous avons besoin d'une pause ici pour chaque boucle avec pause. Pause. Connectez ceci ici. En fait, nous avons besoin d'une agence ici pour demander si la chambre est toujours valide. Parce que si ce n'est pas une chambre valide, nous devrions faire une pause. Nous ne vérifions pas quelque chose ici, mais si nous cassons ici, nous cassons ici également. Je vais installer une branche ici et demander si elle est contenue dans la pièce. Je vais me connecter. S'il est contenu, nous sommes en train de percer des trous et nous sommes en train de le casser C'est faux, nous sommes en train de craquer. Il essaie de s'exécuter à nouveau, c'est faux, nous sommes en train de casser et nous avons besoin d'une autre branche valide. Et si c'est faux, nous rompons à nouveau et revenons à la boucle d'origine, qui commence pour les coordonnées suivantes. Maintenant, si nous avons ajouté le ici, c'est parce que ce sont les coordonnées que nous vérifions ici. Et nous sommes en train de vérifier si l'une des chambres contient ces coordonnées. Si c'est le cas, faites une pause, cette chambre n'est pas valide, passez à la suivante. Et maintenant, nous pouvons le connecter ici. Et si tout cela est vrai, si toutes nos vérifications sont vraies, alors nous ajoutons des chambres ST. Je pense que c'était beaucoup d'informations. Nous devrions faire une petite pause ici et passer à la suivante. Au revoir 29. Fonction de périmètre de la pièce: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop Under Dungeon Engine Five Procedural Précédemment, nous avons créé nous avons poursuivi en fait la recherche de pièces possibles deux par deux. Nous avons créé la structure de la gamme de chambres. Et nous avons fait quelques tests. Nous avons vérifié si la pièce est recouverte de carreaux spéciaux, si elle est cassée et nous avons continué à vérifier la pièce suivante. Nous avons également vérifié si notre pièce était contenue dans l'une des pièces que nous avions déjà ajoutées en cassant la structure que nous avions créée par le biais du réseau de salles ST, qui est un ensemble contenant de nombreuses structures ayant un tableau de coordonnées variable. Ensuite, nous avons vérifié s'ils étaient contenus, s'ils contenaient l'un de nos nombreux vestiaires. Si ce n'est pas le cas, nous ajoutons que cela signifie que notre chambre est valide qu'elle n'appartient à aucune autre chambre. Elle n'appartient à aucune tuile spéciale et elle se trouve à l'intérieur de notre donjon Ajoutez les coordonnées à notre système, le tableau des chambres ST. Maintenant, le seul problème. Ce n'est pas un problème. En fait, c'est un choix de design car les pièces peuvent se placer les unes à côté des autres Par exemple, ajoutons-en quelques autres. Consistance jaune , comme mes mauvais dessins. Ils sont cohérents. Consiste mal. Donc, si nous avions une pièce dans ces blocs, une autre pièce pourrait apparaître ici, ce que je n' aimerais pas personnellement , car cela crée deux pièces l'une à côté de l'autre Ils ont peut-être une porte, ils n'en ont peut-être pas, mais ils auront toujours un mur de séparation, je n'aime pas l'idée de ne pas avoir de porte en fait. Nous pourrions créer un code si deux pièces se chevauchent Deux changements peuvent toujours placer une porte d'un côté ou de n'importe quel côté Mais je trouve qu'il est plus amusant d'apprendre à créer un périmètre dans la pièce ou cela sous forme de variable. Ensuite, nous pouvons faire ce que nous voulons pour le périmètre. Par exemple, nous pourrions créer d'autres règles si nous détectons une pièce que nous pouvons traverser trois ou quatre, nous créons un couloir entre elles ou si nous ne le ferons pas. Nous allons nous en tenir à nos chambres deux par deux. Mais je pense qu'il est plus polyvalent connaître les périmètres des pièces deux par deux, trois par trois ou deux par trois ou des pièces que nous avons conçues Maintenant, comment allons-nous procéder ? Nous allons créer une fonction. Ça va être incroyable. Nous allons créer une fonction. Nous allons appeler cette fonction périmètre de la chambre éolienne, définir le périmètre de la pièce. Ce qu'il va faire, c'est trouver le périmètre de la pièce. Il va l'ajouter aux pièces spéciales et aux pièces spéciales d'action situées dans les pièces périmétriques de la pièce. Et nous allons avoir besoin d'une nouvelle variable. Et il va falloir supprimer certains murs. Maintenant, pourquoi ça ? Revenons à la peinture. Lorsque nous aurons une pièce, nous aurons besoin des murs utilisés pour bloquer les murs. Cela signifie donc que lorsque nous avons une pièce, ces murs, s'ils sont en place, le restent. Nous devons donc trouver un moyen de supprimer ces murs et de conserver les murs de la pièce que nous voulons. Allons-y. Nouvelle fonction. Appelons cela un périmètre défini. Parce que c'est elle qui règle tout. Nous, nous allons avoir besoin d'une entrée, qui serait du type tableau, et ce serait notre gamme de chambres. Appelons cette fonction car si nous ne l'appelons pas, il s' agit d'une exécution. Je trouve que c'est possible, deux par deux, au final, où nous ajoutons notre chambre ST, notre gamme de chambres à la salle st, puis nous ajoutons cette pièce ST aux ensembles de pièces ST Maintenant, au final, nous avons défini le périmètre de cette pièce. Parce que c'est la fin. Nous avons dit que la chambre est valide, donc puisqu'elle est valide, son périmètre. Je vais connecter notre réseau de chambres au réseau de chambres ici et revenir à notre réception. Maintenant, nous savons que d'après ce tableau, le dernier est le point d'origine. Donc, si nous faisons deux par deux cordons de pièce, nous pouvons voir que le troisième , le dernier, nous avons configuré correspond aux coordonnées d'origine. C'est donc ici que commence notre chambre. C'est ici que tout commence. À partir de ces coordonnées, si nous obtenons le dernier indice, nous savons que c'est trois. Pour le dernier indice trois, nous aurions pu n'en définir que trois. Mais juste au cas où nous voudrions agrandir les pièces, par exemple, quatre par quatre serait préférable pour obtenir le périmètre de la pièce pour le dernier indice. Puisque nous savons que le dernier indice serait toujours nos coordonnées de vérification d'origine pour la pièce. Parce que les autres coordonnées sont celles que nous vérifions. C'est l'original Oh, qu' allons-nous en faire ? Pourquoi est-ce important ? Parce que je vais le casser maintenant. Comme c'est un deux par deux, je vais juste faire moins un sur x, puis deux derniers sur x. Cela le rend invalide pour les grandes pièces ? faudrait modifier ce montant s'il était supérieur à deux par deux. Maintenant, quel est ce montant ? Si nous revenons à notre peinture, supprimons-la. Oh, encore une fois de magnifiques dessins. Ce sont des chambres. S'il s'agit de 0,0. Si je passe à moins un sur x, c'est la valeur x, c'est la valeur y. Moins un est -1,0, x, c'est y. Si je choisis plus deux, ce sera 01, deux, ce sera 2,0 Je vais faire la même chose pour vous. Donc, je vais mettre cette boîte ici, cette boîte ici, cette boîte ici, cette boîte ici, cette boîte ici, cette boîte ici, cette boîte ici, cette boîte ici. En fait, parce que je le fais sur les deux, je fais venir cette boîte ici, cette boîte ici, cette boîte ici et ici. Ce serait donc moins un moins un, ce serait plus deux plus deux. Comment vais-je m'y prendre pour traverser tout ça ? Faisons de même pour y. Eh bien, jusqu'à présent, nous avons utilisé pour chaque boucle, ce qui nécessitait un tableau. Cette fois, nous allons utiliser une boucle à quatre imbriquées, comme une boucle à quatre, encore une boucle à quatre pour chaque boucle avec rupture, et encore une boucle à quatre avec rupture , une boucle pour deux boucles imbriquées ou une boucle à quatre imbriquées ou une boucle à quatre imbriquées Je vais donc connecter ceci au premier index, à ce dernier index et à cet avant-dernier index. Donc, en partant de moins un x, nous allons vérifier le moins un y. Donc, lorsque nous vérifierons le moins un x, nous allons vérifier le moins un y jusqu'à plus deux y. Ensuite, nous allons passer à l'index suivant. s'agit essentiellement de quatre boucles imbriquées , comme c'était le cas pour le reste des quatre boucles, avec pour chacune quatre boucles du tableau Maintenant, qu'allons-nous vérifier ? Je vais vérifier si nous pouvons apporter notre gamme de chambres. Oh, j'ai cette variable ici. Les chambres sont rayées. Si je tape rooms ray, je vais obtenir une référence à cette variable. Je n'ai donc pas besoin de faire glisser un câble. Nous en avons parlé. Il s' agit des conventions de dénomination et du fait qu'elles ne doivent pas être identiques à celles des variables. Les variables locales, les variables d'entrée et de sortie, doivent toutes être uniques. Oh, je vais vérifier s'il contient ces coordonnées, ce qui signifie que je vais le casser. Je vais ajouter les valeurs x de la première boucle et les valeurs y de la seconde. Et maintenant, j'ai créé un huitième point sur la base ces deux points pour la boucle, nous cassons. Je vais aller à la succursale. Je vais connecter ça ici, je vais le mettre ici. Et si c'est vrai, je vais créer une nouvelle variable locale, Olim, qui sera du type eh point Et ce sera un tableau. Je vais ajouter. Quelle référence, je vais ajouter ces deux valeurs à ce tableau. Compilez et enregistrez. Donc, en gros, nous avons maintenant le périmètre de nos chambres. F ou une boucle avec pause n'étaient pas nécessaires car en fait, nous n'avons pas besoin de faire une pause ici. Nous n'avons aucune raison de le casser. Modifions-le donc en une simple boucle. Ou vous pouvez simplement laisser les choses comme elles sont faciles, peu importe. C'est juste que ça se casse. La façon dont je déplace les nœuds de cette façon est de garder le contrôle, de simplement les faire glisser et de les sélectionner Et si je maintiens la touche Ctrl et que je fais glisser une épingle, cela déplace simplement le câble. Ça a peut-être l'air mieux. Pas moyen de le faire. Si vous êtes un artiste et que vous aimez les tableaux en vers, il existe des moyens de les rendre beaucoup plus beaux. Compilez et enregistrez. Et je pense que c'est un bon point d'arrêt. Nous avons notre périmètre. Nous avons les coordonnées de notre périmètre. Le point suivant, la prochaine chose que nous devons faire c'est huit murs du périmètre vers la pièce. C'est quelque chose que je vais faire la prochaine fois. Au revoir pour le moment. Je vais t'envoyer le prochain. 30. Liste des salles et débogage: Bonjour, et bienvenue dans l'atelier de conception de jeux et dans le cours de création de RPs d'action procéduraux Real Engine Five dans les donjons Précédemment, nous avons parlé de la création du périmètre de la pièce. Nous avons donc créé une fonction. Nous avons obtenu notre gamme de chambres à la fin de la recherche de pièces deux par deux possibles . Quand nous avons décidé que c'était une bonne pièce à créer, nous avons ajouté cette gamme. Et comme nous savons que la dernière option de ce tableau est notre bloc de vérification, nous avons créé des coordonnées pour vérifier l'intégralité de l' ordonnance à partir de celui-ci. Vers la fin, s'il appartient à la pièce, s'il appartient à la pièce, c'est une erreur. Ça devrait être en cas de chute. S'il n' appartient pas à la pièce, nous l'ajoutons au périmètre de la pièce, pas s'il appartient à la pièce. S'il appartient à la pièce, ne l'ajoutez pas. S'il n' appartient pas à la pièce, ajoutez-le car, comme nous l'avons dit, nous vérifions tout ce qui se trouve dans la pièce, toutes les allées voisines, et nous vérifions également les allées intérieures. Donc, les intérieurs, non, ce n'est pas un périmètre, c'est la pièce. Et maintenant, nous allons supprimer les murs du périmètre en direction de la pièce. Parce qu'ils ont peut-être d'autres balles, ils ne sont donc pas dans la pièce, et nous ne voulons pas les supprimer. La première chose à faire est de déterminer le périmètre de notre pièce. Maintenant, nous allons le coller ici, et à partir de là, nous allons le coller pour chaque boucle. À partir de tout cela, nous allons trouver une croix adjacente. Nous voulons savoir ce qu'il y a à côté. Bien entendu, nous allons créer une boucle à partir de chaque érection à partir de tous les voisins adjacents. Nous voulons maintenant savoir lequel de ces voisins adjacents est en fait une pièce. Ce que nous allons faire, c'est que nous pourrions simplement dater ici beaucoup de code, vérifier s'il est contenu dans une pièce et suivre d'autres. Mais nous ne pouvons pas en faire une pure fonction car nous allons l'utiliser un peu plus pour vérifier s'il y a une pièce à côté de nous. Donc, une nouvelle fonction, et elle sera pure cette fois. Je vais créer une fonction. Je vais appeler cette recherche Nous allons l'appeler Find Room Index. Parce que plus tard, nous aurons besoin de savoir s'il s'agit d'une pièce, mais aussi de quelle pièce il s'agit, puisque nous avons une structure de pièces. Une structure contenant les informations de, des tableaux, qui contiennent toutes les coordonnées de chaque pièce Ensuite, nous pouvons dire : c'est la chambre numéro un, voici la chambre numéro deux, numéro trois, numéro quatre , cette rangée contiendra nos chambres, combien elles sont, et elle les a numérotées. Passons maintenant à l'index des salles d'impression. Bien sûr, nous allons avoir besoin de coordonnées d'entrée, et ce sera un point final, mais une variable de type unique. Ensuite, nous allons avoir besoin de la gamme St Rooms. Nous allons faire une boucle avec pause cette fois car il y a de nombreuses coordonnées. Un endroit ici. Et nous allons le casser parce que c'est une information de notre structure. Cela nous donne que chaque élément serait un tableau de coordonnées pour une pièce. Nous allons vérifier si cela correspond à nos coordonnées. Parce que s'il contient nos coordonnées, cela signifie qu'il y a une pièce. Pour l'indiquer, nous allons utiliser une variable locale. Comme il s'agit de quelques fonctions, encore une fois, petit rappel, les variables locales n'affectent pas les fonctions de pipi. Ce sera du type pool, et ce sera une variable unique. Nous allons l'appeler chambre. Les fonctions complètes ne sont pas recommandées. Eh bien, cela contredit l'intérêt d' ajouter des variables de réglage externes Mais s'il s'agit d'une variable interne, d'une fonction locale, elle n'existe qu'ici, cela ne l'affecte pas vraiment. Et nous allons également le promouvoir en tant que variable locale. L'index, qui sera le numéro de chambre. Si nous trouvons une pièce, nous allons faire une pause et maintenant nous avons besoin de résultats. Notre résultat serait donc notre trouvaille. Rom sera du genre, et nous allons nous connecter ici. Et pour le suivant, ce sera Room Index. Maintenant, vous voyez, le nom est bizarre parce que j'ai nommé l'autre. Il sera de type entier. J'ai donné le numéro de l'autre chambre. Je n'ai pas pu nommer ce numéro de chambre car cela gâcherait tout. Je vais donc le connecter ici, le compiler et le sauvegarder. Maintenant, nous avons un bon indice des pièces qui nous indique si nous avons trouvé une pièce et l'indice de celle-ci, et nous pouvons continuer notre périmètre de pièce défini. Nos coordonnées nord-est sud-ouest appartiennent-elles donc à une pièce ? Trouvez l'index des chambres. Ce n'est pas une pure fonction. Faisons-en une fonction pure, et remettons-la dans la catégorie des fonctions pures. Apportons une branche. Et je vais le connecter ici. Maintenant, nous avons trouvé une chambre. Nous devons maintenant nous adresser à notre acteur vérifier que l' acteur responsable de ces coordonnées figure sur ces coordonnées. En fait, le numéro. C'est une tuile pour nous, mais c'est un acteur phare. Quoi qu'il en soit Nous devons donc trouver l'acteur responsable de ces coordonnées. Nous allons donc obtenir notre carte des points, et notre carte serait notre donjon Mais maintenant, nous avons accès à notre tuile. À partir de là, nous allons obtenir nos murs, je crois, mur, comment l' avons-nous nommé. Décorations BP. Nous allons obtenir des décorations, l'enfant acteur en fait, dont nous avons besoin pour trouver un acteur, que nous allons ensuite transformer en décorations P. Convertissons-le en un plâtre pur. Nous pouvons donc aspirer tous ces merveilleux nœuds les uns sur les autres À partir de là, nous allons obtenir les composants par s. Et la classe serait pic mesh component. Composant Tic Mesh. C'est ici. Maintenant, qu'est-ce que cela signifie ? Pour ceux qui sont nouveaux, les composants sont tout ce que nous ajoutons dans le plan Nous obtenons donc tous les composants qui sont de type treillis statique, non pas du carreau BP, mais des décorations BP, qui seraient tous ces murs. Ou maintenant. Plus tard, nous aurons plus de choses. Il obtiendra une liste de tous ces composants. Par exemple, si nous avions un mur et un baril, disons ici, et qu'ils ont les mêmes règles que celles que nous allons créer maintenant, ils disparaîtront tous les deux. Maintenant, nous allons simplement faire disparaître les murs. Et ce que nous allons utiliser, ce sont les balises que nous avons, le système de balises S, W et E. Revenons donc au labyrinthe Obtenez les composants par classe, et nous allons les parcourir en boucle ou en boucle à partir d'eux. Reliez cela à la vérité. C'est vrai. Maintenant, ce que nous allons faire, c'est que le bogue de hachage a un composant Comme nous l'avons fait pour la fonction de masquage des murs, le tig sera déterminé par l'indice de notre tableau Nous pouvons en fait accéder à nos décorations sur des murs en cuir, il suffit de copier-coller. Mais maintenant, nous n' utilisons pas les murs, nous utilisons les composants Get All Components Attic Mesh Components. Je vais retourner dans notre labyrinthe. Je vais suivre le rythme cette année. Je n'ai pas vraiment besoin de tout. Je n'ai pas besoin de celui-ci. Je vais me connecter cette année, me connecter cette année. Nous devons créer une sélection personnalisée. Et nous avons à nouveau le problème. Je vais prendre la dernière sortie. Je vais le laisser partir de l'index. Je vais connecter le dernier ici. Je vais le connecter ici. En fait, ce n'est pas le bon indice. Nous voulons cet indice parce qu'il s'agit l'indice du zéro et de l'humidité. Nous allons le connecter ici. Je vais ajouter deux autres variables, 32 de plus. Je le supprime, et ce sera au nord du sud, à l'est et à l'ouest. Et maintenant je vais le connecter ici. Tey est connecté. Oui, c'est connecté. Mais maintenant, il cache les murs de notre périmètre en direction de notre chambre. Maintenant, juste pour le débogage, montrons ce que nous avons créé Prenons notre gamme de chambres ST, et nous allons ou chaque boucle, connecter à l'ensemble ici ou à l'actuel, pas ici. Obtenez des choses d'ici. Revenons à notre façon de trouver deux par deux deux des pièces possibles deux par deux. Et ici, ajoutons notre gamme de chambres ST. Connectons-le ici. Et nous allons faire une pause. Je vais aller voir chaque groupe. Et nous allons récupérer le donjon. Et nous allons trouver chaque tuile, et nous allons prendre la parole. À partir de là, nous allons définir matériau. Sélectionnons-en un autre. Choisissons cette base en bois, mur de briques sale ou ce que vous voulez. Tu veux juste voir si ça marche. Il construit, mais il n'a pas fait de place. Agrandissons-les un peu pour vérifier. Disons que les modèles M 50 en cinq tailles. Et vérifiez également si j'ai connecté les salles de création. Sur un même graphique, Gate, non, je ne l'ai pas fait. Trouvez donc deux à deux pièces possibles après avoir créé des cordons pour le coffre. Jouez et nous avons des chambres. Nous avons de belles chambres. Maintenant. La prochaine chose dont nous avons besoin est de créer des murs dans ces pièces. Et par exemple, des choses comme celles-ci qui créent une impasse dans cette pièce ne devraient pas se produire. Nous allons donc corriger cela dans la prochaine leçon. Au revoir pour le moment, Señor, le prochain. 31. Créer la structure de la pièce: Bonjour et bienvenue dans le cours de création d' du Game Design Workshop Andal Engine Five, ARP du Game Design Workshop Andal Engine Five, Procedural Dungeon Action Auparavant, nous avions terminé avec notre fonction fine de coordonnateurs de pièces, et nous leur avions également ajouté un périmètre Comme nous pouvons le voir, il y a quelques erreurs à ce sujet. Par exemple, nous pouvons créer des chambres à côté d'autres pièces, et si nous appuyons sur Stop pour accéder à notre boîte de messages, nous constatons une erreur répétée. Revoyons-le donc un peu et corrigeons les erreurs cette fois. Maintenant, dans notre pièce périmétrique définie, la première chose que nous devons changer est que j'ai créé périmètre de cette pièce en entier local, tableau local, variable locale, tableau local de points int. Cela devrait être promu au rang de variable, et appelons-le tous les périmètres de la pièce Je vais le supprimer. Je vais apporter tous les périmètres des pièces ici. Je vais également ajouter à celui-ci. Je vais le casser et ajouter y sur y et x sur x. Je n'ai pas vraiment besoin de faire autre chose car cela gâcherait le code. Mais nous devrions avoir une variable qui possède tous les périmètres Maintenant, la prochaine chose que nous devons faire est de vérifier cette erreur, ce message d'erreur. Il est dit que la succursale ne peut pas accéder à non. L'accès non consiste généralement à essayer d'accéder à quelque chose lequel il n'y a pas de variable. Si vous cliquez sur quelque chose, cela conduira à une macro constante. Mais cela nous indique où regarder. À cette succursale, sur le générateur de base, sur le périmètre défini de la pièce. Encore une fois, la branche mène à la fonction. Mais c'est sur le périmètre de la pièce défini. Passons donc à Maze Gen et Strom Perimeter. En fait, à un moment donné, nous essayons de le trouver sur la carte du donjon Mais lorsque nous sortons du périmètre de la pièce, il est possible que le périmètre ne soit pas à l'intérieur du donjon Il n'y a pas de tuiles. Donc, ce que nous allons faire, c'est demander si la carte du donjon que nous demandons, l'acteur que nous demandons via les coordonnées est valide Et nous allons utiliser le deuxième nœud, qui nous offre en fait une option de branchement Je vais connecter la boucle true to is valid à la boucle xy et la boucle valid to the fore. Si ce n'est pas valide, nous nous en fichons, et cela n'arrivera pas. L'erreur ne se produira pas. Donc, si j'appuie sur Play maintenant, ce n'est pas le cas. Si une presse s'arrête, notre journal des messages doit être clair, apportez-le et il est clairement conçu. Maintenant, le problème suivant est que des pièces sont créées à côté d' autres pièces, comme si le périmètre n'avait rien fait. C'est parce que je n'ai pas encore ajouté le code. Nous allons donc chercher d' éventuelles pièces deux par deux. Et lorsque nous vérifierons la présence de carreaux spéciaux, nous vérifierons également tous les périmètres de la pièce, nous allons faire un contenu ici Nous allons connecter notre ensemble de pièces, et nous allons créer une fin, et non une fin, ou un objectif parce que c'est soit sur les carreaux spéciaux, soit sur les pièces ? ou un objectif parce que c'est soit sur les carreaux spéciaux, soit sur les pièces Nous ne voulons pas que ce soit une chambre valide. Si j'appuie sur compiler. Appuyons sur Play. Les pièces ne doivent pas être créées les unes à côté des autres. Eh bien, peut-être qu'ici, ils ne le pouvaient pas. Essayons encore une fois. Labyrinthe plus solide. Oui, plus solide. Comme nous pouvons le constater, les chambres ne sont pas adjacentes à d'autres pièces. Cela crée cette distance entre eux. Une distance entre les carreaux, le périmètre. Maintenant, une chose que nous devrions également changer serait de ne pas changer le matériel, mais de le supprimer. Mais nous pouvons ajouter toutes les pièces, toutes les coordonnées dans un tableau. Je vais donc créer un nouveau tableau, une nouvelle variable. Je vais appeler ça « all room hoards ». Ce sera du type point de terminaison. Et ce sera un tableau. Et je vais ajouter à cette liste tous les câbles que nous rompons à la fin de trouver peut-être deux pièces par deux. Lorsque nous quittons enfin la boucle de mots principale, nous cassons tous les ensembles de pièces et nous ajoutons toutes les coordonnées que nous trouvons à l'intérieur des tableaux de structures Maintenant, la prochaine chose que nous devons faire est de construire les pièces. Alors, devinez quoi, nous allons à nouveau créer une fonction pour construire les pièces. Donc, à la fin, créons cette fonction. Appelons ça construire des salles. Disons-le à la fin. Parce que lorsque nous testerons, j'oublierai de l'ajouter ici, et entrerons dans cette fonction. Mais avant de passer à la programmation, expliquons ce que doit faire cette fonction. Passons donc à la peinture pour de superbes dessins. Maintenant, la première chose qu'il devrait faire est de soigner les carreaux, comme si nous en avions quatre. Mais en gros, ils doivent remodeler leurs murs pour qu'ils soient sur les bords Et si l'on se fie à leurs flèches, cela n'arrivera pas. Ce dont nous avons besoin, c'est de fixer chaque carreau de la pièce, de savoir quels murs doivent être posés et lesquels doivent être retirés. Non, c'est la première chose, la première chose. Ce ne sera pas la première chose à faire, mais c'est l'une des tâches que notre fonction doit accomplir. Maintenant, la deuxième chose serait de dire quel type de murs . Ensuite, quel type de murs mettons-nous dans notre pièce ? Parce que nous avons un certain nombre de murs, des murs différents. Si nous nous retrouvons dans nos désordres statiques. En fait, si nous passons à la carte d'ensemble, il y en a d'autres, vous changez également la couleur des cartes. Maintenant, les cartes sont rouges, c'est vrai. Donc, si je passe à la vue d'ensemble de la carte, enregistrer la sélection, nous pouvons voir que nous avons une, deux, trois, quatre, cinq tuiles, des ensembles muraux différents. Donc, sur la base de ces murs, nous devrions avoir cinq types de pièces différents. C'est donc également quelque chose dont cette fonction sera responsable. Mais c'est un autre élément que nous avons. Fonction. Enfin, nous allons ajouter un randomiseur. Donc, si nous avons notre chambre, peut-être au hasard, nous pouvons créer un mur ici ou ici. À certains endroits de la pièce, nous pouvons ajouter un mur au hasard ou non. La création de ce mur aléatoire serait donc la troisième chose que fait cette fonction. Maintenant, revenons à notre carte. Passons au niveau du jeu, et passons à notre générateur de labyrinthes intégré à la fonction des chambres à coucher Ce dont nous aurons besoin, c'est du réseau de salles Ray ST, et nous allons faire une boucle pour chaque boucle sur chacune d'entre elles. Et la première chose que nous allons faire est casser la structure pour obtenir les coordonnées de sa pièce. Nous allons également promouvoir l'indice en une variable qui sera contrôlée localement. Promouvez une variable locale, et appelons cela index de salle. Et connecte-le ici. Parce que chaque fois que nous exécutons cela en boucle, nous gérons essentiellement une pièce différente. La première fois qu'il s'exécutera, le premier index de cette structure de tableaux sera la première salle La deuxième fois, ce sera la deuxième salle, et ainsi de suite. Nous pouvons donc avoir une règle, par exemple, disons que puisque nous avons cinq pièces différentes, les cinq premières choisiront toujours une apparence différente. Ou pour le rendre encore plus intéressant. Disons que les deux premiers seront d'une apparence différente, puis que les autres seront du s d' une apparence aléatoire. Cela créera donc l'illusion que certaines pièces sont vraiment spéciales et que d'autres sont plus communes. Créons donc une autre variable locale, que nous appellerons All index. C'est ce qu'on appelle Wall Index. Ce sera à nouveau un entier, et non un tableau, ce sera une variable unique. Et économisez. Réglons cet index mural de la pièce, cet index mural. Voyons donc si ce chiffre est supérieur à deux. Donc zéro, un, deux, en fait, les trois premières pièces seraient différentes. Ensuite, à partir du quatrième et après, il choisirait d'annuler. Ou nous choisirons le numéro un, et ce sera pour les deux premières pièces. Mais faisons-en trois en fait. Donc, je vais sélectionner une branche, je vais la connecter ici. Je vais également le connecter. Donc, s'il est supérieur à deux, cela signifie que c'est supérieur à la quantité souhaitée, et je mettrai l'index mural à une encre aléatoire dans la plage. Ce serait 0-4. Et s'il y en a quatre, c'est parce que nous avons cinq ensembles de pièces différents. 01234 correspond donc à cinq options différentes. Compter à partir de zéro comme un nombre en tant qu'entité, c'est un peu difficile au début, mais on s'y habitue. Maintenant, s'il n'est pas supérieur à deux, alors nous fixons cet index mural Disons de l'index des chambres. Ce sera donc toujours la chambre index un, chambre index deux, la chambre index zéro. R, En comptant à partir de zéro, faut s'y habituer. Maintenant, nous allons lire ici comment connecter ces deux nœuds. Ici. Je pense que c'est un bon point pour cette leçon. Puisque nous devrons faire des choses un peu plus complexes plus tard, elles auront besoin d'un peu plus d'explications. Au revoir pour le moment, je vais t' envoyer le prochain. Au revoir 32. Fonction de la pièce et fixation murale: Bonjour et bienvenue dans le cours de création Procedural Game Design Workshop Rail Engine Dungeon Action Apes de Game Design Workshop Rail Engine Five Auparavant, nous avons corrigé certains problèmes liés des erreurs sur le générateur de labyrinthe Et nous avons également expliqué certaines choses à propos de nos chambres construites. Nous avons commencé la fonction des pièces construites en parcourant toutes les pièces avec un quatre e l, puis nous avons créé une variable pour stocker l'index, une variable locale pour stocker l'index des pièces. Nous avons créé une règle pour changer les types de murs, et maintenant je pense qu'il est temps de continuer. Maintenant, la première chose que nous devons faire, la première chose à faire. L'une des choses que nous devons faire, et que nous allons faire maintenant, est de décider si notre pièce aura un mur aléatoire, et où se trouverait ce mur ? En fait, si c'est le cas, nous en déciderons plus tard, mais au cas où ce serait le cas, décidons où se trouverait ce mur aléatoire. Non, je vais copier-coller cette plage d'entiers aléatoires, et je vais changer la variable trois parce que notre pièce est deux par deux, donc zéro, un, 23 mènent à quatre options. Maintenant, je vais en faire une variable locale, et je vais appeler cela un index mural interne. Et aussi, je vais me débarrasser de la crise des pièces, comme si nos coordonnées de chambre étaient deux par deux, je vais obtenir P, et aussi le promouvoir en tant que variable locale, et l'appeler Pile No Altitude du mur intérieur. Coordonnées. Eh bien, ce sont des coordonnées, mais nous pouvons le dire à partir du type de variable. Et je vais le connecter ici. Pour le mieux, je vais utiliser le set du random. Encore une fois, si je m'étais connecté ici au hasard, ce serait probablement un nombre différent de celui-ci car cela en générerait un nouveau au hasard. Je voulais donc le connecter à partir du set, ou apporter la variable réelle ici et la connecter comme si ce serait pareil dans les deux cas Oh, maintenant. La prochaine chose que nous devrions calculer est de savoir où sont nos murs en fonction de l'indice de notre chambre. Puisque cette ligne nous indique la salle de pause ST, tous nos index de chambres Je vais le faire chauffer ici. Nous le pouvons pour Loop. Pour chacun d'entre eux. Et nous savons que le dernier indice est, je crois, le Nord-Ouest, nous devons vérifier l' endroit où nous avons créé les chambres. Maintenant, voici la méthode de création de coordonnées que vous pouvez trouver deux par deux pour les pièces. Nous sommes en train de créer des accords de pièce deux par deux. Le dernier est donc le vestiaire, puis nous en ajoutons un sur x, un sur y, pas de y. Ce serait donc le local nord. Ce serait la chambre nord, la chambre nord-ouest. Ensuite, nous ajoutons y. Donc, ce serait le nord-est, numéro deux, et le numéro un est : Puisque X reste le même, nous pouvons l'appeler sud-est, et la valeur d'origine est le sud-ouest. Bien sûr, quand je parle du sud-est, du sud-ouest, je parle des murs qui seront actifs dans la pièce. Comme si le premier serait à l'ouest et au sud. Celui ci-dessus serait situé à l'ouest et au nord, et c'est ainsi de suite. Si vous voulez le noter, ce serait le nord et l'est, et ce serait le sud et l'est. En gros, nous devons indiquer deux directions. Nos instructions se trouvent sur la vignette de l' acteur de tuiles, la tuile BP. Quels sont vos points fermés ? Itinéraire avec le W. Bref, revenons aux pièces que nous avons construites. Pour ce faire, puisque nous connaissons l'ordre, nous avons en quelque sorte déterminé l' ordre dans lequel ils sont configurés Nous pouvons en fait atteindre un int et avoir trois résultats différents car il s'agit d'un tableau de quatre longueurs, quatre résultats différents. Désolée. Et supprimons la valeur par défaut. Maintenant, quel est le commutateur ? Nous avons parlé un peu des énumérations C'est le contraire d'une sélection. Vous pouvez activer les chaînes, énumérations et vous donner une sortie différente à exécuter en fonction de la sélection des entrées Maintenant, pour ces coordonnées, nous avons besoin des ensembles de ti. Pour ce faire, nous allons obtenir notre donjon, et nous allons nous battre Maintenant, je voulais dire quelque chose à propos de la pinte et de tout le reste. Ne pensez pas que cette pinte est juste une action qui se produit instantanément. Ce ne sont que des fonctions prêtes pour nous, qui parcourent les variables et vérifient si la variable est égale à la variable que nous voulons. Ce n'est pas qu'un nœud comme celui-ci soit moins lourd qu'une boucle for, par exemple, qui passe par le même nombre de variables. Quoi qu'il en soit, continuons. C'est un petit peu mieux. C'est un petit peu mieux. Maintenant que nous avons trouvé cela, nous avons besoin des directions. Et nous devons l'ajouter à chaque fois parce que nous parlons de deux murs. Et en fait, nous devons le copier-coller. Il y aurait des solutions plus simples pour le faire avec une fonction, mais pour l'instant, ce serait efficace. Maintenant, nous en aurons également besoin pour éteindre tous les autres murs. Nous allons dupliquer. Je dois reconnecter les lignes. Peut-être que je vais essayer d'y aller un peu, lire la note ici, ça va, maman, ça va comme ça. Ça a l'air mieux. Déplace ça, plus bas. W cliquez ici également. W cliquez ici également. Nous créons un tas de nœuds de lecture. Il n'y a donc pas d'octa. C'est ce qui l'a fait. Modes, tâche hideuse pourrais-je dire Disons que les premiers sont ceux qui sont activés. Il existe un moyen de se déplacer, et les seconds seront ceux qui auront des murs. Pour le premier set, il faut toujours l'activer. La deuxième série consiste à allumer les murs. Donc c'est éteint. Maintenant, trouvons les directions. Comme nous l'avons dit, le chiffre zéro est encore une fois très pénible à l'ouest et au nord. L'est et le sud devraient donc être séparés. L'ouest et le nord ? Non, je vois le contraire, n'est-ce pas à l'est, au sud-est et au sud ? Faisons d'abord les premiers, puis les seconds. Maintenant, pour la deuxième tuile, la première dans l'ordre serait le Nord et l'Est. Est-ce que c'est le second ? J'ai encore oublié, je dois vérifier. Le premier est juste plus x, donc c'est le nord-ouest. Le second est non sur x et plus y. Le second est le sud. OK. Le second est celui-ci. Ça fait deux, ça en est un. C'est trois, et c'est zéro. Non, désolée. Je ne donne pas mes propres règles. C'est donc zéro. C'en est une. Ça fait trois, et ça fait deux. Il est donc utile d'avoir toujours une manette externe pour faire des choses simples comme celle-ci. Maintenant, la seconde, nous qui sommes à l'est-sud, donc le nord et l'ouest devraient être fermés, le nord-ouest. Le troisième 1 second tiers dans le numéro d'ordre, le numéro deux serait le Nord et l'Est. Ce sont donc l'ouest et le sud qui figurent sur le premier, le dernier étant le nord et l'ouest. Cela signifie donc le nord et l'est. Ici, nous aurons le sud-ouest numéro trois, le numéro deux, le nord et l'est. Et à l'est. Vérifions que chaque ligne contient tous les. Puisque celui-ci est le nord et l'ouest, c'est le sud et l'est et celui-ci est et le sud, donc c'est le nord et l'ouest. Des doublons, donc ce soit correct. Nous le découvrirons lors des tests. C'est donc la partie de notre fonction qui place sur les carreaux les nouvelles flèches en fonction du fait qu'il s'agit d'une pièce. Tu vas me le dire, oui, mais où mettons-nous la porte ? Eh bien, c'est un autre sujet car lorsque nous fermerons toutes nos salles, nous voudrons pouvoir naviguer dans tout le donjon Nous allons donc le faire par la suite. Maintenant, je pense que c'est suffisant pour cette leçon. Et dans la leçon suivante, essayons d'ajouter notre mur interne. Au revoir On se voit le prochain. 33. Finaliser les fonctions de la pièce: Donc, auparavant, nous avons ajouté quelques éléments à notre fonction de chambre à coucher pièces construites construisent une pièce. Donc, fonction Bilroom. Nous avons ajouté la variable d'indice du mur interne et le carreau de la variable du mur interne, qui est un point d'encre. En gros, nous faisons un entier aléatoire pour l'index, puis nous stockons cet index, les coordonnées de cet index. Ensuite, nous parcourons en boucle et nous définissons manuellement quels murs doivent correspondre à quel côté de l'ensemble chacun de nos ensembles de pièces, qui appartient à la structure des ensembles de pièces, et nous définissons manuellement quels murs doivent de pièces Maintenant, comme nous l'avons dit, la prochaine chose que nous devons faire est d' ajouter ce mur interne ou de ne pas l'ajouter. Toutes les pièces n' ont pas besoin d'un mur intérieur. Pour ce faire, nous allons activer int plus bas. Et T via ce commutateur int. Comme vous pouvez le voir, je l'ai connecté à partir la fin de cette boucle fd. La raison en est que nous sommes toujours dans cette boucle fd. A ceci est imbriqué pour chaque incrément de l'index, essentiellement pour chaque tableau, nous l'avons dans switch on int, et nous allons ajouter trois variables En fait, nous allons en ajouter quatre parce que disons, par exemple, zéro, un, deux, trois, nous conserverons des variables pour placer un mur, et quatre signifierait ne pas placer de mur. Et comment allons-nous nous y prendre ? Nous allons sélectionner int. A, pic A, nous allons dans un pool aléatoire. Certaines pièces auront donc un mur. Les chambres n'en auront donc pas. Mais quand c'est le pic A, nous allons choisir le numéro quatre, par exemple, qui serait de ne pas mettre de mur. Nous allons supprimer cette épingle d'exécution, celle par défaut, car nous n'en voulons pas. Et sur B, en fait, nous avons besoin d'un index aléatoire. Tu ne l'as pas nommé au hasard. Comment l'avons-nous nommé ? Index mural intérieur. Donc, ici, nous avons besoin de l'index de la paroi interne. Génial. Nous avons donc B pour 0123 Mais quelle pièce est laquelle, encore une fois, nous devons faire quelque chose comme ça pour décorer les murs des pièces, car ensuite, passons à la peinture pour montrer qu'il est nécessaire de supprimer. Nous avons donc nos quatre allées qui constituent notre chambre. Et nous savons que pour le moment, il y a un mur tout autour. Ça aurait peut-être dû être un peu plus épais. Ticker Line. Nous pourrions choisir une ligne plus épaisse. Ticket 1. Nous avons donc nos murs autour d'un nouveau style de dessin, des murs avec des boîtes. Oh. Maintenant, si nous étions dans ce pâté de maisons, nous pourrions avoir un mur ici ou ici, il serait toujours disponible dans toute la pièce. Et cela vaut pour chaque bloc. Nous pourrions avoir les deux côtés de chaque carreau, l'un d'entre eux, mais nous pouvons sélectionner un des deux côtés sur chaque allée Oh, comme je l'ai dit, nous allons refaire un système comme celui-ci. Nous allons ajouter les variables manuellement. Mais nous devons déterminer quelle pièce est laquelle. Et sur la base du fait que cela repose sur notre structure. Nous avions en fait ce dessin précédent. Peignons-le à nouveau. J'y vais pour pouvoir m'améliorer. C'est certainement le troisième. C'est zéro. Ça fait deux, ça fait un, et ça fait deux. Je pense que c'est ainsi que nous l'avons fait. Vérifions-le à nouveau. Je vais prendre une seconde pour trouver la fonction. Je vais aller aux réceptions, trouver pour construire des pièces, créer deux par deux. C'est ce que nous voulons parce que c'était une solution pure. Zéro est p un sur x, un est p un sur y, un est est-sud et le second est un. Celui-ci. Donc oui, c'est exact. Génial. Retournons dans nos salles de construction et venons ici pour remplir le terrain. Maintenant, comme nous voulons que l'un des deux murs soit créé, nous allons mettre quatre branches car c'est soit l'un soit l'autre mur. Et à ces conditions, je vais simplement me connecter à toutes les conditions le numéro quatre, nous avons besoin de cette étape car elle ne va pas tout additionner. Mais nous le relierons ensuite à ce qui va suivre, à savoir le placement mural. Oh. Apportons quelques nœuds que nous avons déjà. Nous allons en avoir besoin de deux pour ce qui précède, deux pour ce qui est ci-dessous, de deux autres et de deux autres. C'est devenu gros, mais c'est bon. Il suffit de les espacer pour qu'il y ait un peu plus de bleu clair. Lorsque votre plan devient un peu complexe, il y a trop de choses Fais-leur face, peu importe. Nous avons un espace infini, un défilement infini. Point. Oh, trouvons le donjon dont nous avons besoin, la tuile no sorry dangon, dans le donjon, la tuile dont Nous allons donc obtenir la carte des donjons, et nous allons trouver ce que nous allons trouver ? Ce carreau variable de murs intérieurs que nous avons stocké ici. Puisque nous connaissons le carreau. Nous savons quel est sur les deux par deux, quel emplacement sur les deux par deux. Nous pouvons simplement trouver et obtenir des sections, et maintenant nous devons relier les directions à toutes ces publicités. Un, deux ou ils s'étendent également, ils deviennent une nuisance encore plus importante sur le plan directeur Se connecte à False. Je ne sais pas si l'un d'entre vous a joué avec des éditeurs de musique comme Reason. Cela ressemble beaucoup à un lien avec la raison. Quoi qu'il en soit Base-les. Maintenant. Déterminons de quels murs nous avons besoin. F zéro, nous sommes au sud-ouest. Nous avons en fait besoin des murs intérieurs correspondants. En gros, nous avons cette lampe un peu au-dessus de nous. Mais comme c'est un peu compliqué, je ne l' ai pas fait et Away, faisons-le encore une fois. Nous avons besoin de l'est et nous avons besoin du nord, c'est l'est ou le nord, le sud, désolé. À l'est et au sud pour le premier. Le suivant. La prochaine est ici en bas, donc nous avons besoin du nord et de l'ouest. Nord et ouest. Le suivant est le numéro deux. Deuxièmement, voici la peinture. Deuxièmement, nous avons besoin de l'ouest et du sud. 02 c'est celui-ci West South. Pour le dernier, nous avons besoin du nord et de l'est. Nora, il est déjà là pour nous. Épique. Maintenant, quelle serait la prochaine étape ? Tout d'abord, puisque nous avons tellement changé les informations sur les flèches. Nous avons créé notre propre système de flèches. Totalisons simplement les flèches. Faisons-le simplement. Ce dont nous avons besoin, ce sont des cordons de chambre ST. Nous allons le faire venir de partout dans le w ici et taper chaque boucle. Et nous allons tout connecter à moi. En gros, sur les blocs qui sont des pièces, sur les tuiles, qui sont des pièces, ou les paramètres de nos flèches sont réinitialisés comme nous le voulons Maintenant, nous devons également connecter ces quatre points ici, qui n'ont pas de paroi interne ici, aux quatre boucles de chaque boucle. Donc ça garde tout ça. Maintenant que nous faisons le tour des coordonnées avec les quatre boucles, trouvons l'acteur approprié. En fait, nous pouvons simplement copier parce que c'est ce dont nous avons besoin. Nous récupérons le fumier, la trouvaille, et nous nous connectons en fonction de la découverte. Et à partir de là, nous allons obtenir des décorations. La variable, elle est toujours en bas, et nous allons passer aux décorations. PPG, d'abord le médecin pour enfants. Et à partir de là, nous allons obtenir de la décoration. Désolé, nous allons couper la décoration. Et nous allons faire de la poussière une pure poussière. Encore une fois, c'est plus rapide, plus efficace et ça aide à faire mal aux hochements de tête, pas aux spaghettis Devenez une tour. Maintenant, activons les flèches dans toutes ces décorations. Message Toggle avec les flèches, car il s'agit de notre interface de plan Je vais le connecter ici. En fait, si c'est le cas, j'ai fait le lien avec les décorations cette fois. Je crois que c'est déjà arrivé aux cours. Mais maintenant, je pense que nous pouvons tester et voir ce que nous avons créé avec les flèches. Nous allons voir des flèches créer des pièces, je pense que si tout s'est bien passé. Donc je ne suis pas sûr. C'est peut-être une chambre. Peut-être que nous n' aurions pas dû supprimer le blocage lié au changement rapide d'un générateur Tom Passons au graphique des pairs. Passons rapidement à la recherche des possibilités deux par deux ici. Nous l'avons en copie, la carte trouvée par Dungin Je vais l'utiliser pour fixer le matériau du sol. En fait, pour élire la parole pour nous et aussi pour définir le matériel, apportez-nous un nœud. Choisissons la terre cette fois. Compilez et sauvegardez. Jouons, mangeons de la poussière, éjectons. OK. Nous avons donc quelques salles, mais Teams ne fonctionnait pas vraiment. Pourquoi est-ce le cas ? Découvrons le matériel maintenant, nous étions là. Nous actionnons des flèches les flèches ne sont pas sur C'est pourquoi cela envoie le message, mais les décorations n'ont aucun code à voir avec les flèches. Nous devrions envoyer les flèches directement sur le carreau, pas sur la décoration. Connectez les décorations. La façon dont il est connecté est celle que je l'ai utilisée au cas où vous vous poseriez la question. J'ai utilisé la touche Alt pour cliquer et connecter la ligne que vous avez ciblée. Donc, lors de la compilation et de la sauvegarde, cela devrait fonctionner cette fois car vous mettez à jour le bon plan, et non l'enfant de décoration Oui, nous y voilà, et nous avons également des portes qui ne sont pas acquises. Ils seront publiés plus tard ps. Maintenant, comme vous pouvez le constater, les murs des pièces n'ont pas mis à jour parce que nous n'avons pas mis à jour les murs ici. Mais les flèches sont correctes. C'est ce dont nous avons besoin en ce moment. Nous avons besoin des flèches. Sur la base des flèches de la leçon suivante, nous allons changer les murs, et ce sera finalement un mur avec une pièce avec des murs et sans plafond. Nous allons régler tout ça plus tard. Au revoir pour le moment, à la prochaine. 34. Randomiser les murs internes: Bonjour et bienvenue dans l'atelier de conception de Gang et dans le cours de création de donjons procéduraux Real Engine Five création de donjons Auparavant, nous avions ajouté quelques éléments supplémentaires à nos pièces construites. Nous avons ajouté le mur qui doit être placé au hasard via ce commutateur ici et les variables que nous avons enregistrées auparavant, le carreau du mur intérieur, l'index du mur intérieur. Grâce à ce commutateur, nous avons choisi un entier aléatoire, qui serait placé, ou si nous choisissons le numéro quatre sur cet entier aléatoire, il ne placera rien. Et nous avons également utilisé correctement le fonctionnement total des flèches, après quelques essais pour faire en sorte que les flèches se comportent comme nous le voulions, les flèches à l'intérieur de la pièce Maintenant, continuons en déterminant quels murs doivent être en haut et quels murs ne doivent pas être en haut. Passons aux décorations PP et créons une nouvelle fonction, qui sera en fait un peu similaire à celle-ci. Nous pourrions l'améliorer, mais créons-en un nouveau. Pour des raisons de clarté. Nous allons nommer cette fonction build. Non Laissez les murs de la pièce. Murs de la chambre. Et nous allons avoir besoin d'une entrée parce que nous allons l' appeler depuis le générateur de labyrinthe directement ici Nous avons donc un accès direct pour obtenir l' itinéraire à partir de la vignette. Comme nous y avons un accès direct, nous pouvons l'y alimenter directement. Mais c'est possible, puisque nous avons notre parent ici. Ne faisons passer aucune information. Il est plus efficace de l'obtenir d' ici pour l'obtenir à partir des décorations en PP elles-mêmes, car nous avons une dalle en PP. Oh, nous allons obtenir l'itinéraire. D'après les indications, nous allons récupérer les clés. Comme vous l'avez deviné, nous allons maintenir la touche boucle enfoncée sur cette touche ou sur chaque boucle Ensuite, nous allons également tenir une boucle depuis nos murs. Et nous allons vérifier si le composant possède un stug, qui est l'élément du tableau des directions précédentes Maintenant, s'il y a un remorqueur, nous allons le faire, mais quelque chose dépend de la valeur que nous avons dans les directions Nous allons donc trouver la valeur correspondant à l'élément du tableau, qui est la mère, l'hôte ou la boucle. C'est le navire-mère qui gère le reste. Eh bien, pour être honnête, dans ce cas, c'est le navire-mère qui fait tout cela tant de fois. Mais comme vous pouvez le constater, cela ne prend que quelques secondes. Nous verrons cela dans la barre de chargement. Maintenant, qu'allons-nous faire ? Nous allons définir la visibilité. En fait, je pense que nous les cachons là dedans. Faisons les deux. Je les gagne. Ça n'a pas vraiment d'importance. Nous voulons qu'ils soient visibles, et nous voulons également qu'ils ne soient pas cachés pour gagner de l'argent. Si leur collision est désactivée, nous devons également définir la collision. Tout ça, c'est Dante et gentil, mais qu'en est-on là ? Donc, pour la visibilité. Si c'est le cas, nous voulons que la visibilité soit réduite. Nous avons donc besoin d'un t ici. Pas de taureau. Fais-le O, L. Si c'est encore une fois vrai, nous voulons que ce soit invisible et caché, c'est ici. Et si c'est vrai, ce qui signifie qu'il y a un passage, quand c'est vrai, cela signifie que vous pouvez passer. Nous avons besoin d'une sélection ici. Et nous devons le relier ici, il sera plus facile de le trouver, s'il n'y a pas de collision, si c'est faux, si la physique des quarans permet la collision Compilez et enregistrez, et c'est à peu près tout. Nous allons le tester. L'avons-nous connecté à Non, nous ne l'avons pas fait. Alors je vais lire ceci. Nous n'en avons pas besoin. À partir de là, nous devons savoir comment ils l'ont appelé. murs de cette pièce. Donc des murs, maintenant, nous devrions avoir ces demi-murs que nous avons tout autour des pièces. Prends-le encore une fois. Non, nous ne le savons pas Il y a un problème. Découvrons-le. Qu'est-ce que ça pourrait être ? Vérifions-le avec le générateur de labyrinthe Vérifions-le à partir d'ici. Nous exécutons ceci, nous exécutons une instance qui va ici, et son instance définit ses propres variables. Ensuite, nous allons ajouter un faux mur au mur d'une pièce. Tout cela devrait être faux au fond. Parce que si c'est vrai, nous sommes de passage. Mais utiliser le faux signifie que nous avons le mur. Voyons voir si cela est résolu. Les murs, pas le ok, nous avons un mur ici, nous avons un mur ici. Je ne m'attendais pas à ce que les murs soient réparés. Pourquoi les murs n'apparaissent-ils pas ? Question V. Vérifions-le. Arrête ça. Revenons au générateur de labyrinthe Pour faire une boucle, monter le bouton de décoration jusqu'ici, nous Fixez les murs, les décorations pour chaque boucle sont des composants. Renvoie le nom de l'énumérateur. Ouais. Ce n'est pas exactement ce que nous voulons. Ce que nous voulons, c'est le printemps. Nous voulons ce nœud. Ce nœud revient, imprimons la chaîne pour vous. Ici, connectons les deux, pour que cela soit correct. Et en compilant du jeu Maintenant, il aura des numéros et des noms étranges . Direction E. OK. Directions E, numérateur un, numérateur deux, numérateur Maintenant, s'il conserve un nom très générique, comme vous pouvez le voir. Pour être honnête, je pensais que cela aurait renvoyé le numéro d'octet. Mais oui. C'était donc là le problème. Fermez-le, donc je n'en ai pas besoin. Ici. À partir de l'élément du tableau, nous avons besoin de um pour créer une chaîne, puis cette chaîne, nous la connectons au tug Et il le convertit automatiquement en une variable de texte, une variable de nom. Oh. Jouons encore une fois. Et nous devrions pouvoir voir les chambres. Chambres fermées. Ouais. Ils sont complètement fermés. Et je pense qu'il est temps de mettre de vrais murs dans les pièces. Oh, passons à une décoration et créons une nouvelle fonction. Et nous allons donner un nom à cette fonction. Murs. Entrons-le. Nous y sommes déjà. Mais avant de commencer à programmer cela, nous allons avoir besoin d'un nouveau treillis de grenier ici. C'est parce que c'est une pièce. Lorsque nous échangeons deux murs, nous devons également y installer un plafond, car s'il n'y en a pas, il n'y a que quatre murs Ce n'est pas vraiment une pièce, n'est-ce pas maintenant ? Donc, nous allons appuyer sur Ajouter, nous allons ajouter un maillage statique. Et nous allons donner un nom à ce plafond. C'est comme ça que ça s'écrit. Je ne suis pas sûr. Encore un mot difficile à épeler. Nous allons sélectionner un désordre statique pour cela. Je pense qu'il y a un maillage ctic. Pour le matériau, y a-t-il un mur en pierre ? Par défaut, nous allons passer à sa visibilité. Et réglez-le sur invisible. Et nous pouvons également mettre fin à sa collision. Nous allons donc passer à ses paramètres de collision. Bien entendu, plus tard, lorsque nous développerons le jeu, nous modifierons de nombreux paramètres, types de collisions, types objets et tout ce avec quoi ils interagissent, mais ce sera plus tard. Préréglages de collision, faites-le savoir. Nous ne voulons pas de préréglages de collision. Nous voulons le H. Mettons-le sur les préréglages de collision personnalisés et définissons la collision activée pour qu'il n'y ait pas de collision Mais lorsque nous le rendons visible, nous devrions également laisser la collision activée pour entraîner une collision. Maintenant, je pense que c'est un bon point d' arrêt pour celui-ci. Nous devrions remplir cette fonction lors de la prochaine, afin de pouvoir expliquer comment fonctionnera également notre processus de sélection. Au revoir pour le moment, à la prochaine. 35. Ajouter des murs de pièce: Bonjour et bienvenue sur Game Design Workshop et sur le moteur Procedural Dungeon Action Apes Creation Curse Sur le dernier. Nous avons en fait réussi à terminer les pièces construites. Nous avons encore une chose à faire, et ce sera maintenant. Mais voyons ce que nous avons fait. Nous avons en fait créé la fonction Set Room Walls, qui est une fonction intégrée à la décoration VP, qui prend le carreau parent , en prend les instructions les traverse et, à travers cette boucle, examine le réseau de murs et vérifie lesquels doivent être visibles et avoir la collision allumée. Passons maintenant aux murs d'échange que nous avons créés une fonction mais que nous n'avons pas terminés. Nous avons également ajouté le plafond. Et dans cette fonction, nous allons avoir besoin de deux entrées. Nous allons être du type entier. C'est déjà fait pour moi. Vous allez changer le type ici, et nommez-le. Comment le nommes-tu ? C'est la variable d'ici, pas l'indice mural interne. Parce que, comme nous l'avons dit, nous avons cinq ensembles de murs différents pour les pièces, nous allons donc les examiner. Pas de boucle, mais sélectionnez-en un type. Nous aurons également besoin de la deuxième variable, qui serait l'indice des chambres, mais qui sera utilisée plus tard pour masquer et afficher nos plafonds lorsque notre joueur se déplace dans les pièces. Je vais donc nommer le premier index des chambres et le second un index mural. Et je vais promouvoir l'indice des chambres pour variable. Peu importe s' il fonctionne plusieurs fois. Ce sera toujours le même indice de chambres. Et maintenant, nous devons créer une boucle for pour tous les tableaux de murs. Une boucle car nous allons manipuler le composant de maillage statique pour lui attribuer un élément de maillage statique Non. Bien sûr, nous allons photographier le maillage. Et pour le maillage statique, nous devons choisir. Maintenant, pour vous faciliter la tâche, nous allons revenir à notre carte d'ensemble. Nous avons tout. Et nous avons une, deux, trois, 45 Faisons cinq options. Un, deux, trois, quatre, cinq. Et pour le wild c, nous voulons simplement connecter l'index mural. Nous appelons l'indice W. Puisque nous sommes dans la fonction, nous pouvons le faire. Faisons maintenant glisser les sélecteurs ici. Parce que lorsque nous sélectionnons un type de mur, il existe essentiellement trois ou trois variantes et une variante de porte pour chacune d'elles. Oh, reviens ici. Je vais ajouter une autre épingle ou nous copollons. Ensuite, je vais coller. Un, deux ou cinq. Maintenant, pour le joker ici, nous pouvons sélectionner une plage aléatoire, et ce serait 022 car nous avons trois Je vais le connecter partout. Et je vais le faire aussi. Alors, pourquoi ai-je ouvert la vue d'ensemble ? C'est simple car je vais sélectionner un mur. Je vais le trouver en fait, je vais juste cliquer avec le bouton droit de la souris. Il existe une option Find Rose pour agir. Ça ne m'a pas beaucoup aidé. C'est ici. Je vais accéder à la ressource, glisser-déposer ici. Je vais aller sur le deuxième mur, cliquer avec le bouton droit de la souris, puis ajouter « cs » à « actif ». Je t'aiderais un peu plus. glisser et déposez-le ici, et je vais répéter ce processus pour chacun des actifs. Notez que je ne sélectionne pas les portes. C'est fait exprès. Les portes seront placées ultérieurement par code à des endroits très spécifiques. Murs en bois, Embros comme atout, atout rose. L'autre. C'est incroyable de constater à quel point certaines actions simples peuvent prendre beaucoup de temps. Ne me demandez pas pourquoi je ferme toujours le navigateur de contenu avant de passer aux plans Cela semble être une habitude. Je devrais cliquer directement sur les plans Actif. Voilà l' atout. C'est ici. Ce 12, deux autres sets. Ce 12, permet de parcourir deux ressources, et de faire glisser et déposer. Nous aurions pu stocker toutes ces informations quelque part, de tableaux et simplement les extraire de là ou de tables de données qui seraient très appréciables de les avoir dans une table de données Mais tu sais, tu n'as pas toujours ce que tu veux. Le travail devient un peu plus fastidieux. Actifs, équation, contenu, dans la capture sur le tarmac Vue d'ensemble, atout. Nous avons presque terminé, mais encore deux murs à rôtir Voilà encore un rôti. C'est bon. Non. Avant d'activer les plafonds, voyons s'ils fonctionnent. Mais tout d'abord, passons au générateur Mz. Passons à la fin des pièces construites. Sélectionnons les décorations, et nous allons appeler les murs interchangeables. J'échange des murs, et nous allons avoir besoin de l'index. Et nous allons également avoir besoin d'un index mural. Non pour le moment. Le même nom et la même convention n'avaient pas vraiment d'importance. Indice Rom par rapport à l'index des pièces et à l'indice des murs. La raison en est que tout cela réside dans une classe complète différente dans un plan différent Cela réside donc dans les décorations BP, comme cette résolution réside dans le générateur de labyrinthe BP Ce n'est donc pas un problème. Cela peut parfois être utile d'avoir le même nom, afin que vous sachiez quelle variable correspond à quoi. Où compiler et enregistrer. Revenons à notre niveau de jeu de cartes. Enregistrez tout ce que vous pouvez jouer. Maintenant, nous devrions avoir des murs dans nos chambres. Oui, nous le savons. Nous avons de jolis murs dans nos chambres. Nous avons une pièce en bois, une pièce en pierre, une pièce en pierre moussue. Il y a quelques lacunes ici et là, mais ce n'est que du placement. Si vous voulez prendre le temps régler ce problème, ce serait le cas. Je pense qu'en gros, d'après ce que je vois, les murs doivent être légèrement abaissés et je pense que tout ira bien. Quoi qu'il en soit, activons les plafonds. Ce que nous devons faire, c'est accéder aux décorations de notre vice-président, entrer dans les murs d'échange, passer aux murs. Nous allons avoir notre plafond, et nous allons obtenir une visibilité T. Et nous allons activer les collisions électroniques. Mais cette fois, nous allons avoir une petite astuce. Maman, en fait d'ici. Nous voulons activer la collision complète. Nous allons activer les requêtes et aucune physique, car le plafond n'a pas besoin de physique ou de physique des collisions, mais nous voulons une requête en raison de nos événements de clic. Donc, en ce qui concerne les événements liés aux clics, nous commençons maintenant à entrer dans l'aire de jeu. Nous allons avoir besoin d'un moyen d' activer ou de désactiver nos plafonds lorsque nous entrons ou sortons d'une pièce Et dans ce cas, je ne parle que du moment où nous entrons dans la pièce. J'ai mis de la peinture juste pour ce que je voulais dire. Je ne veux pas dire qu'en entrant ici, je parle du fait que lorsque je suis déjà à l'intérieur et que je marche d'un endroit à un autre, nous allons changer de carrelage. Donc, une commande devrait indiquer que j'ai déplacé une vignette, comanul dire quelque Et le labyrinthe, la pièce elle-même, a besoin d'un moyen de savoir si je déménage la prochaine fois, si je n'emménage pas à l'intérieur, et le code aura besoin d'un moyen de savoir que je suis toujours dans la pièce et que je n'ai pas déménagé à l'extérieur Pour cela, nous allons utiliser une boîte de collision supplémentaire ici. Disons que c'est une boîte de collision. Pourquoi j'ai dit « extra ». Nous ne l'avons pas encore fait, mais nous aurons besoin d'une boîte contenant la tuile elle-même pour indiquer au joueur sur quelle tuile elle se trouve. Nous pouvons donc faire des choses lorsque nous savons sur quelle vignette elles se trouvent. Je vais augmenter cela. Je voulais m'ajuster à peine vers les bords. Je pense que c'est bon. Nous verrons dans le gameplay. Donc, pour ceux qui sont nouveaux, collision forme des formes sous toutes leurs formes. Il existe des boîtes de collision, des captures de collision, des sphères même des formes de collision personnalisées que nous pouvons créer. Mais les formes de collision sont essentiellement utilisées pour déterminer ce qui se passe lorsqu' objet entre en collision avec quelque chose, elles peuvent déclencher la physique, elles peuvent déclencher tout ce qui a trait aux collisions Nous les avons considérés comme des déclencheurs, par exemple, et au fur et à mesure que vous vous habituez à un vrai moteur, vous vous habituez davantage à la façon dont nous les utilisons. Non. Par défaut, car toutes les décorations ne seront pas des pièces. Nous allons définir que ces collisions génèrent des événements qui se chevauchent avec les chutes. Cela ne fait donc rien en gros. Et nous allons aller jusqu'à nos murs. Et lorsque nous activerons les plafonds, nous allons également activer les événements de génération de collisions qui génèrent des événements de chevauchement pour qu'ils soient désormais actifs. Maintenant, avant de passer à autre chose, puisque nous avons fait beaucoup de choses sur le générateur de labyrinthe, passez au graphique pair, nous n'avons pas besoin d'ouvrir toutes ces fonctions Je vais déplacer le graphique pair vers la gauche, et je vais simplement fermer l'onglet vers la droite. Donc, maintenant, tout est à nouveau clair. Voyons ce que nous avons fait. Nous avons commencé par créer le premier style, créer le chargement et tout le Nous avons construit à peu près la forme de notre labyrinthe. Ensuite, nous avons un peu corrigé les flèches. Maintenant, copions-collons ce pourcentage défini. Mais nous devons augmenter un peu le chargement et nous avons commencé à décorer. Nous avons commencé par une disposition de base des briques et des murs tels qu'ils devraient être. Et ce que nous avons fait ici, c'est simplement cacher les murs qui ne sont pas nécessaires. Maintenant, nous avons créé les coordonnées de l'ascenseur. Nous avons créé des coordonnées pour le coffre. Nous avons trouvé les chambres et en avons construit les murs. Augmentons maintenant notre charge. Deuxièmement, la dernière fois, c'était 0,5, disons 5 %. Un bon rapport qualité/prix. Nous avons fait les actions, quatre d'entre elles en fait, deux identiques. Ce serait donc 65 %. Faisons avancer l'écran de chargement, sélectionnez les cavas visibles C'est le labyrinthe. Et tout le reste est vraiment très rapide. Mais même notre générateur de labyrinthe serait rapide. Nous n'avons pas eu ce délai de 0,1. Alors, diminuons. Cela prend trop de temps. Mais mettons un autre zéro devant un. Appuyons sur Play. Il y a des tasses ici, ce que nous voulons. Bien. Cachons ça encore une fois. Maintenant, ce que nous allons faire ensuite n' est pas créer les portes, mais ce que nous allons faire ensuite. Habituellement, après avoir créé les pièces, nous disons « créons les portes ». Mais ce n'est pas encore le bon moment. En fait, mettons le délai avant ici. Nous voyons la tasse un peu mieux. Ce n'est pas le moment de créer les portes, et c'est pourquoi ce n'est pas le moment. Lorsque nous créons un labyrinthe. À l'heure actuelle, nous avons tous ces domaines. C'est du matériel de buggy qui se produit ici. Nous allons voir ce qui se passe dans le prochain. On dirait qu'il y a deux matériaux. Je ne vois pas de bâtiment à deux étages. Examinons le sol, ce qui se passe ici. Nous en avons un en plus. Pourquoi en avons-nous ? Cela ne devrait pas se produire. Qu'est-ce qui se passe ? Le plafond l'a fait ? Oui, je n'ai pas augmenté la hauteur du plafond. Mettons-le. C'est la hauteur de nos murs, une centaine, légèrement inférieure à la hauteur maximale. Oui, c'était le plafond. Je rentre, je ne vois rien. En fait, je n' aurais pas dû rentrer. Je peux juste entrer ici et je peux le régler ainsi que le sol. Maintenant, peut-être que le plafond est un peu bas. Mais c'est bon. C'est bon. Je pense que c'est un bon point d'arrêt pour celui-ci. Je te verrai le prochain. Au revoir. 36. Portes de pièce et segmentation du labyrinthe: Bonjour et bienvenue sur Game Design Workshop et Real Engine Five Procedural Dungeon Action ApS Creation Curse Auparavant, nous avions finalement terminé de placer les murs et de placer quels types de murs et de montrer le plafond des pièces ? À quoi ressemblent les chambres les plus correctes. Et nous avons en fait créé une boîte pour générer des événements de chevauchement lorsque la tuile est une pièce. J'ai commencé à parler des zones segmentées, mais nous avons été interrompus par le plafond qui n' a pas été abaissé, est monté, n'a pas été abaissé Il est resté allumé avant la position. Parlons maintenant zones segmentées dont je parlais Comme vous pouvez le constater, disons, par exemple, que nous avons une chambre ici et qu'elle est uniquement reliée à cette zone. Cette zone est isolée par rapport aux autres zones, alors que cette zone est reliée par trois pièces. Cette zone est reliée par deux pièces. Cette zone relie à nouveau deux pièces. Et cette zone ici n'est qu'une seule zone avec deux blocs, et c'est une zone avec un bloc relié à une pièce. Et si nous avions un moyen de classer ces domaines ? En gros, nous allons faire en sorte que toute zone reliant plus d'une pièce soit considérée comme un couloir. S'il relie deux ou trois pièces, il s'agit d'un couloir. Si une zone est unique et qu'elle est connectée à une pièce, alors c'est une pièce spéciale, pièce cachée, quelque chose comme ça. Et l'autre catégorie que nous pouvons avoir est celle qui comprend deux ou trois allées et qu'elle est connectée à une pièce Nous pouvons le considérer comme un balcon ou un bord ou quelque chose comme ça, qui est également une zone de plus de deux ou trois blocs et reliée à une pièce. Nous pouvons le considérer comme un domaine spécial. Comment allons-nous procéder ? Eh bien, je pense que vous connaissez tous la réponse. Nous allons créer une fonction. Nous allons donc arrêter de jouer. Je vais fermer ces fonctions. Je n'en ai plus besoin. Et nous allons créer cette nouvelle fonction. Appelons cette fonction augmentée. Il s'agit des zones orthographiques. Mais je pense que j'ai correctement orthographié les zones et que j'ai trouvé. Non, je ne l'ai pas fait. J'ai ajouté un symbole de division. Qu'allons-nous faire ici ? Nous devons expliquer. Ce sera à nouveau une fonction importante. Ouvrons Paint en fait. Je vais être un peu plus détendu. Considérons que nous avons notre masse. Cette correction ici a fait toute la différence. Maintenant, dans ce labyrinthe, nous avons quelques pièces Et puis nous avons des murs qui séparent les zones. Faites-les grossir. Je suis ici, ici, partons et peut-être ici ou ici. Il s'agit d'un ect. Maintenant, comme nous l' avons dit, nous allons séparer certaines zones en couloirs. Représentons ce gris. Donc, en gros, il s'agirait d'un couloir. Et ce serait un couloir car il relie deux pièces. Maintenant, la zone orange serait la zone secrète, et la bleue serait un balcon. Et la zone violette serait une zone spéciale car elle ne se connecte qu'à une seule pièce et elle est plus grande que deux ou trois cases. Disons trois. Oh. Comment allons-nous procéder ? heure actuelle, notre labyrinthe, notre donjon, Will a des murs Oh, ce que nous allons faire , c'est utiliser ces murs. Disons que nous allons prendre, par exemple, une zone aléatoire. Nous allons prendre celui-ci. Polar n'est pas le meilleur. Ronde. Nous allons partir d'ici, par exemple, et nous allons passer au tracé linéaire. Qu'est-ce que le tracé linéaire ? Une technique utilisée essentiellement pour détecter des objets le long d'une ligne dans le mot du jeu. Cela implique de projeter une ligne invisible ou visible si nous la déboguons d'un point de départ à une fin et que nous vérifions s'il point de départ à une fin et que nous vérifions s' n'y a pas de collision avec des objets sur le chemin Ce serait une explication approximative. Donc, ce que nous allons faire, c'est tracer une ligne à partir de notre point. Pas un mot, nos voisins croisés. Je pense ou quelque chose de similaire. Donc, ce que nous allons rechercher, c'est lequel des voisins est directement connecté à moi. Ils n'ont aucun mur entre eux, ils n'ont pas de place entre En fait, c'est la seule chose qui nous tient à cœur. Donc, lorsque nous le ferons, nous les ajouterons dans une liste. Mais ce voisin va bien, ce voisin va bien, celui-ci ne l'est pas, celui-ci ne l'est pas parce qu' ici nous heurtons un mur, et ici nous heurtons aussi un mur, qui est le fandangon extérieur Maintenant, avec cette liste, nous allons répéter le processus jouant un peu avec les variables, en les ajoutant et en les retirant des listes pour créer les zones connectées et le nombre de pièces auxquelles elles sont connectées . Parce que celui-ci n'est peut-être pas un espace vide, mais c'est une pièce, nous devons donc nous différencier en conséquence. Non En gros, c'est la théorie qui sous-tend ce que nous allons faire. Nous utiliserons éventuellement deux fois la phrase de ligne, une fois pour une première vérification, une deuxième fois pour une deuxième vérification, mais nous expliquerons tant que nous créerons une phrase longue. Alors, commençons. Laissons apparaître ce gameplay. Et revenons à notre générateur M dans les zones finement segmentées Maintenant, bien sûr, encore une fois, nous allons utiliser les coordonnées du donjon, et nous allons obtenir les clés Cette fois, nous allons les promouvoir dans une variable locale. Nous allons appeler cela des clés de donjon variables. Parce qu'il se peut que nous en ayons besoin en cours de route et que nous traînions des câbles Ce sera un casse-tête car cette fonction sera énorme et inclura d'autres fonctions. Maintenant, à partir de ces touches dngon, nous allons obtenir P. Donc, nous allons commencer par notre premier index, qui serait l'indice zéro, et commencer à vérifier à partir de là Je vais promouvoir cette variable appelée Study, une variable locale. Et connecte-le ici. Oh, ce sera le point de départ des études. Il s'agit de la première utilisation. Il faut bien commencer quelque part. Pourquoi ne pas commencer par le début ? Nous allons vérifier à combien de tuiles il est connecté et comment se connecte-t-il ? Oh. Ce que nous allons faire c'est également créer une variable locale de tableau temporaire. Nous allons l'appeler. Ray, O. Je n'aime pas qu'on m' offre un Cardy Cords Disons que cette étude coordonne un. Oh, je vais apporter ça devrait être un tableau, et ça devrait être un point de repère est très ennuyeux lorsque vous faites la promotion de quelque chose dans une variable locale. Il n'est pas conservé en mémoire car ils ont créé un autre compteur de variables avant lequel nous voulons que vous utilisiez. Cela s'est produit un peu par hasard, je crois. Puisque c'est le cas, nous allons utiliser ce tableau d'étude pour ajouter le point d'étude. Parce que ce serait le premier tableau, nous le sentirions, puis nous allons le tester par rapport à un autre tableau. En gros, nous allons essayer cette matrice dès maintenant, tant que les tracés linéaires, par exemple, ne touchent pas les murs, revenons vraiment un peu à la peinture. La façon dont cela fonctionnera réellement sera de choisir une nouvelle couleur, de choisir le rouge vif. Oui, nous commençons par étudier, et nous allons vérifier les voisins. Ce sera donc l'un d'entre eux. Ce sera l' autre d'entre eux. Ce sera un de plus, et ce sera un de plus. Ces deux-là, celui-ci et celui-ci, vont être ajoutés à la liste parce qu'ils sont corrects. Ensuite, nous allons vérifier, à partir de cette liste, où se connectent celui-ci et celui-ci. Ils se connectent donc essentiellement à ceci, ceci et cela, et nous allons transférer chaque liste l'une vers l'autre et tester encore et encore jusqu'à ce qu'elle ne puisse plus s'ajouter, et que ces deux listes soient égales, et quand elles seront chaque liste l'une vers l'autre et tester encore et encore jusqu'à ce qu'elle ne puisse plus s'ajouter, et que ces deux listes soient égales, égales, nous passerons à la partie suivante. Oh, continuons. Maintenant, nous devons tester les deux premiers voisins. Nous allons étudier, étudier les terres arables. Nous allons trouver un bus adjacent, et nous allons oublier cela. nous avons ajouté une étude avant de le faire, c' est parce que nous voulons inclure l'étude quel que soit notre résultat, car si vous ne l'ajoutez pas, nous allons simplement commencer à chercher des voisins. Nous n'allons pas nous diriger à nouveau vers le premier. Nous l'avons donc ajouté avant de commencer toute cette procédure. Les voisins appartiennent-ils au donjon ? Nous allons donc créer une carte de confinement. Et bien sûr, la carte serait notre donjon. Et c'est parti, et nous allons blanchir et connecter ça ici Passons maintenant à notre tracé linéaire. Tracé en ligne, par canal. Que signifie par chaîne ? Maintenant, nous avons la visibilité de la chaîne et la caméra. Il s'agit d'un canal de collision. Cela signifie que lorsque nous sommes allés aux décorations, par exemple, et que nous avons sélectionné la case, lorsque nous passons aux collisions et que nous ouvrons les préréglages, nous pouvons voir le type d'objet Word Dynamic Ensuite, nous pouvons voir les réponses à ce type d'objet. Ceci n'est que ce type d'objet, mais comment cette collision réagit-elle aux autres types d'objets ? Des types d'objets comme la visibilité, des objets comme une caméra, des types d'objets comme Word Static. Tout dépend des paramètres ici ? J'y reviendrai un peu plus en détail plus tard, lors de la création du jeu, quelles collisions seront très importantes en ce qui concerne les traces et tout le reste. le moment, nous allons simplement utiliser le canal de la caméra, car visibilité sera utilisée depuis notre gameplay. Et comme certaines fonctionnalités seront désactivées en cas de collision par visibilité, nous allons utiliser une caméra qui sera toujours allumée nous allons utiliser , comme si elle interagissait avec ligne de trace qu'elle touche pendant la visibilité, nous fermerons certaines d'entre elles. Maintenant, nous allons continuer. Nous allons aller à notre générateur de labyrinthe. Nous allons choisir la caméra de base, et nous avons besoin d'un point de départ et d'une fin dans ce nœud. Donc, pour commencer, nous allons avoir besoin des coordonnées. Nous devons trouver l' acteur dans le donjon. Nous allons faire le vent, connecter tout cela ici et obtenir une tente pour acteur. À cet emplacement de l' acteur, nous allons ajouter un axe Z, qu'il soit un peu plus éloigné du sol Mettons ça 25. C'est un peu plus haut que le sol, et maintenant il nous faut une extrémité. Dans ce cas, parce que le prochain arc sera différent. Dans ce cas, notre objectif sera notre étude. Parce que nous dessinons à partir des voisins trouvons ainsi les coordonnées d'un voisin. Ce n'est pas notre étude. Nous commençons donc par le voisin terminer notre bloc d'étude. Je vais donc le retrouver, je vais le copier. Connectez ceci, connectez ceci, et je vais faire une action, copier-coller la hauteur, pour connecter cette sphère, puis connecter cette sphère à la fin, et nous avons un tracé linéaire. Maintenant, si j'ai écrit le type de bogue, cette option ici, qui nous montre une ligne, je la rends persistante et j'appelle cette fonction ici. Zones segmentées après le chargement. Passons au chargement, alors oui, jouez, nous devrions voir cette ligne apparaître ici. Maintenant, celui-ci n'a qu' un seul voisin valide, il lance donc une ligne. Il essaie de le lancer depuis le début du voisin jusqu'au début. Et comme on peut le voir ici, c'est là qu'il a trouvé un succès. Cela nous indique que ce bloc a un mur. Donc, dans ce cas, nous ne l'ajouterions pas à la liste. Maintenant, je pense que c' est un bon point d'arrêt pour cette leçon. Nous allons continuer plus tard avec la logique et un peu nos résultats d' échauffement, c'est-à-dire la façon dont nous obtenons les données que nous avons juste, et aussi la valeur de retour, est-à-dire si elle est réellement chauffée ou non. C'est plutôt ce qu'il a chauffé. Plus d'explications sur le suivant. Au revoir pour le moment. 37. Segmenter les zones de donjon: Bonjour, et bienvenue dans l' atelier de conception de jeux et dans le véritable cours de création de donjons procéduraux sur Engine Five Précédemment. Nous avons commencé par notre fonction de segmenter finement les zones, qui divisera notre labyrinthe en fonction de certaines règles, les couloirs reliant essentiellement différents types de zones Comme nous l'avons dit, nous aurons des couloirs, nous aurons des balcons. À l'extérieur, nous aurons différents types de zones. Nous avons donc commencé à le faire en ajoutant notre carte de donjon, obtenant les clés de notre carte de donjon et en les promouvant au rang de variable. À partir de là, nous avons obtenu le premier indice parce que nous avons décidé que c'était un bon point de départ, et nous l'avons ajouté au tableau de coordonnées de l' étude. Nous l'avons également transformée en variable, qui sera la première boucle à partir de laquelle nous allons obtenir les voisins. À propos des voisins, et quand nous les ajouterons, ce sera celui des cordes Study. Et comme nous l'avons dit, nous allons faire une boucle et faire quelques astuces pour vérifier l'ensemble de la zone. Maintenant, la façon dont nous cherchons à savoir si ces carreaux se trouvent dans cette zone sont divisés par pièces par des murs consiste à créer une ligne trans que nous projetons du voisin vers notre tuile d'étude. Et cela nous dira s' il a heurté quelque chose ou non. Comme nous l'avons décrit, lorsque nous avons utilisé le dessin persistant, le type de sac est persistant. Nous pouvons voir notre premier style, mais j'ai besoin de localiser le style zéro. Non je crois que c'est au moment où Zero est devenu une pièce. Possible. Avant le numéro Obstacles. Je suis un peu aveugle. Ce carré zéro est relié à celui-ci et à celui-ci par un tracé linéaire. Je n'avais pas de mur cette fois. Je vais juste le créer très rapidement. Je voulais avoir un mur, et il y en a deux. Nous partons donc du voisin et voici notre ligne deba, qui devient verte lorsqu' elle touche quelque chose Lorsque nous recevons cette petite boîte et qu'elle devient verte, cela signifie qu'elle a chauffé quelque chose et que la boîte est l'indicateur. Maintenant, nous en avons parlé lorsque nous utilisons certaines règles basées sur le résultat de notre chapeau et notre valeur de retour. En gros, nous allons simplement utiliser la valeur de retour, c' est-à-dire si elle a touché quelque chose ou non ? Je vais appuyer sur B, connecter ceci ici et ici, s'il fait chauffer quelque chose, nous ne faisons rien. Nous ne voulons pas que ce soit selon nos coordonnées, celles des coordonnées. Nous allons l'apporter ici. Appuyez et je vais le connecter à false, car si nous n'avons rien trouvé, cela signifie qu'il se trouve dans la même zone, et je vais le connecter à l'élément du tableau. Maintenant, ce que je voudrais dire quelques mots, c'est le résultat de la surchauffe. Si nous le cassons parce qu' il s'agit d'une structure, si nous le survolons, nous pouvons voir la structure du résultat thermique Nous pouvons voir qu'il contient quelques informations. Il contient en fait beaucoup d'informations, pas peu d'informations. En tant qu'acteur thermique, il a l'emplacement de la chaleur, le point d'impact exact de l'impact. Il y a la distance entre notre départ et la manche, le temps qu'il a fallu entre le début de la course et le début de la course, cela a fait chauffer quelque chose. Et du début à la fin, bien sûr, il contient beaucoup d'informations. C'est une très belle structure à utiliser même pour le débogage, exemple si vous avez un système de débogage, vous lancez un tracé linéaire et que vous souhaitez tester des éléments pour quelque chose C'est un très bon point de départ pour créer un système de débogage pour diverses raisons Quoi qu'il en soit, je voulais juste montrer qu'il existe une structure. Il a autant de variables qu'il peut nous donner. Continuons maintenant avec notre algorithme. Comme je l'ai dit, nous allons avoir besoin d'une nouvelle gamme de cordons d' étude afin de pouvoir comparer chacun d' entre eux. Si nous avons enregistré toutes les coordonnées possibles de la zone que nous vérifions. Je vais créer une nouvelle variable. Je vais être du genre à le faire. Soyez ici. Je vais nommer les ds Cette convention de dénomination n' est pas la meilleure, mais c'est le cas pour le moment. Oh, notre prochaine étape consiste à promouvoir nos Study Cords un, deux cordons deux. Je vais le connecter ici. Ce que nous devons faire est similaire. Je vais le copier-coller. Nous sommes là. Et ce dont nous avons besoin en premier, un autre pour Loop. Ce pari, parce que nous voulons passer en revue tous ceux que nous avons trouvés, comme nous l'avons vu ici, nous avons ajouté un cas, nous en avons ajouté deux, ou il peut y avoir des cas où nous ajoutons même quatre sites. Nous voulons passer en revue tous ces endroits, puis, pour chacun d'eux, vérifier s'il y a des voisins. Nous avons besoin de cette boucle à quatre supplémentaires, et cela devient un gâchis. Cela devient. Quoi qu'il en soit Maintenant, nous devons modifier un peu les règles. Bien entendu, nous avons besoin d'un point de départ et fin identiques, comme du voisin à celui de l'étude en cours. Et celle de la présente étude est celle selon laquelle nous obtenons le résultat de ces quatre boucles ici. Je vais faire un petit lien entre ce point. Non. Comme je l'ai dit, nous avons besoin de règles supplémentaires, et la règle supplémentaire serait de savoir si l'étude 1 contient l'un des voisins que nous vérifions ? Parce que s'il contient, nous ne devrions pas l'ajouter à nouveau. Donc, je vais demander à l' étude 1 contient m Ceci ici. R pour l'amener ici. Peut-être que nous allons parler ici. Faites en sorte qu'il soit un peu clair que les lignes sont connectées. Un. Oui, ce sont des spaghettis. C'est toujours un peu de spaghettis. Vous pouvez passer plus de temps à le rendre plus visible, plus clair à l'œil nu. Mais je pense que si nous comprenons la logique de ce que nous faisons, ce sera plus facile. Maintenant, je vais avoir besoin d' une autre condition, pas d'une condition, d'un nœud, qui sera le m. Nous l'avons déjà utilisé, c' est-à-dire si l'un ou l'autre vaut deux. En fait, nous ne voulons pas d'ici. Nous voulons l'être si c'est dans le donjon, continuer. Nous avons besoin d'une deuxième succursale ici, pour faire de la place. La deuxième branche serait donc si elle appartient déjà aux coordonnées, de ne rien faire. Nous voulons prendre le pouls de celui-ci. Je vais prendre le pouls. Je vais déconnecter cette impulsion et la connecter parce que c'est à partir de que nous voulons poser cette question ici. C'est bon. Ces choses ont été mises en page. Quoi qu'il en soit, nous allons conserver les coordonnées de l'étude, car ils évalueront que nous ajoutons quelque chose Et quand tout ce truc sera terminé, nous vérifierons Si la longueur de quatre cordons secs un est égale à deux cordes d'étude. Maintenant, pourquoi faisons-nous cela ? Parce que si c'est ici, nous avons ajouté quelque chose à cette liste, et les deux d'Ady Cords n'étaient pas complets. Nous avons ajouté de nouvelles pièces. Non, allons-y. Ranch et demandez si nos cordes Ady de deux longueurs sont égales à celles de nos cordes d'étude Oh, si ce n'est pas égal, nous allons passer à celui-ci ou deux. Il n'y a rien dedans. Et ce que nous allons faire en fait, c'est la même boucle. Nous allons ajouter le Cords 1, en passant aux Cords 2. Ensuite, nous allons vérifier si nous pouvons ajouter quelque chose à celui des coordonnées. Et si nous ajoutons quelque chose, il continuera encore et encore jusqu'à ce qu'il soit terminé. Je pense que c'est un bon point pour celui-ci. Je te verrai le prochain. Au revoir. 38. Finaliser la mécanique de segmentation: Bonjour et bienvenue dans l'atelier de conception de jeux, Real Engine Five Procedural Danson Action ARPC Creation Curse Lors de la dernière leçon, nous avons poursuivi notre fonction « zones segmentées fines Nous avons créé le Study Cords two Variable, dont nous faisons la promotion de nos Study Cords. Et puis nous en avons un pour tous nos Study Cords. Vous cochez toutes les zones que nous avons ajoutées. Maintenant, nous avons vérifié ces zones passant par le nord-est, le sud-ouest et le sud, tous les voisins, et nous leur avons demandé s' ils appartenaient au donjon ou s'ils figuraient déjà dans la première étude Ensuite, nous avons créé notre système de lignes de traçage vérifier si nous avons heurté un mur ou non. Et si ce n'est pas le cas, nous avons ajouté ces cordons à Study One. Lorsque les quatre boucles, les quatre premières boucles, se terminent, ce qui signifie que toutes les coordonnées de l'étude 1 sont terminées , nous vérifions si les coordonnées de l' étude 2 sont égales à celles de l'étude 1, car avant d'effectuer cette action pour ajouter de nouveaux éléments, car avant d'effectuer cette action pour ajouter de nouveaux éléments, nous avons promu les coordonnées de l'étude aux coordonnées de l'étude deux. Maintenant, si c'était le cas alors que c'était faux, ce n'est pas vrai. C'est ma faute. Nous terminons l'étude 2 et nous la redéfinissons pour qu'elle soit égale à l'étude 1. Ensuite, nous essayons à nouveau d'en ajouter une pour étudier une nouvelle coordonnée, et s'il n'y en a pas de nouvelles à ajouter, nous allons maintenant passer à la partie vraie, c'est-à-dire lorsque l'étude 2 est égale à l'étude 1, ce qui signifie qu'elle n'a plus de coordonnées. La première chose dont nous avons besoin est de créer une autre structure telle que le réseau de salles ST, qui contiendra les coordonnées de nos zones segmentées Mais comme il s'agira du même type de structure, il s'agira simplement d' une structure dotée d' un tableau de coordonnées, d' un réseau de points d'extrémité. Nous pouvons utiliser la même structure. Je peux donc simplement passer devant le réseau de chambres ST et l'appeler ST all areas. Et ce sera du type variable ST rooms, que nous pouvons renommer, nous pouvons renommer, mais laissons les salles ST, qui sont, comme nous l'avons dit, un tableau de coordonnées Je vais l'apporter ici, et je vais appuyer sur Ajouter. Maintenant, je vais le connecter à. Parlons de ce nœud ici. Cela nécessite une structure. Avant de créer une structure, nous avons dit que nous pouvions réellement diviser et ajouter les coordonnées ici. Pour l'instant, c'est ce que nous allons faire. Nous allons simplement le scinder et l'ajouter comme ceci parce que cela fonctionne, mais il est préférable de suivre toutes les étapes qui consistent à créer une structure et à y ajouter des membres si vous débutez dans le domaine des structures. Si vous en avez l'expérience et que vous savez comment fonctionnent les structures, vous pouvez le faire lorsque cela sera nécessaire. Je dis cela parce que structures peuvent créer des problèmes. Par exemple, si je change certaines choses sur la structure, nous devrons nous reconnecter à de nombreux nœuds comme celui-ci Parce que lorsque je l'ai divisé ici, variables ne seront pas toujours mises à jour. je recombine, nous avons la structure, et si j'ajoute quelque chose à la structure, allez dans la variable de la structure et ajoutez-y d'autres variables, et cela peut poser un problème Je vais le partager, et je vais en apporter un pour nos coordonnées d'étude. Et je vais le connecter ici parce que Study cors 1 et Study cors two sont désormais égaux Mais cela créera une liste essentiellement de nos zones segmentées, comme cela a été le cas pour les chambres Maintenant, la prochaine chose que je vais faire est d' effacer Study Coord's 1 Et maintenant, nous devons continuer à vérifier les autres zones. Parce que, comme nous le faisions maintenant, nous sommes partis du bloc d' étude zéro et nous avons vérifié combien de tuiles étaient connectées au bloc d'étude zéro. Tout d'abord, nous avons vérifié s' ils étaient connectés, nous en avons vérifié d'autres. Allons jouer si nous avons un exemple. À S, il a cartographié toute l'étude, une, toutes les coordonnées à partir de points nuls qui ne sont pas connectés et qui ne sont pas bloqués par des pièces, des murs ou des pièces Non, nous devons le faire pour le reste du labyrinthe. Pour ce faire, nous allons en fait rediffuser le tout ici Mais d'abord, nous devons créer un vérificateur. Y a-t-il encore des places pour étudier ? Parce que si tous les lieux sont cartographiés, alors ce truc devrait cesser fonctionner. OK, créons-le. La première chose dont nous avons besoin, ce sont nos clés de donjon, et nous allons parcourir chacune d'elles en boucle En fait, parce que c'est une règle que nous voulons vérifier si nous allons l' exécuter à nouveau ou non. Ce serait et devrait être ou avec une pause. Parce que nous allons suivre la même logique ici. Nous allons utiliser une variable. Je vais le créer en local, il sera de type b, pas un R, il sera unique. Appelons ça « appartient ». S'il a sa place, alors à quoi appartient-il ? Si cela correspond aux règles que nous allons créer. Et chaque vérification que nous faisons appartient aux clés du donjon, alors cela signifie que nous avons terminé Cela signifie que nous avons vérifié toutes les zones. Si cela ne convient pas, si une vérification provenant d'ici ne correspond à aucune de nos règles, cela signifie que nous devons la réexécuter, ou l'élément c A, l'ordonnance en question. Non, je vais connecter ce qui a sa place ici, et je vais le laisser régler sur falls parce que lorsque nous commençons à vérifier toutes les variables, c'est là que nous voulons qu'elle soit désactivée pour chaque variable. Nous allons avoir besoin d'une autre boucle ou de chaque boucle avec pause, pour la connecter ici. Et maintenant, nous avons besoin de la variable qui a créé toutes les zones ST. Parce que nous allons comparer est-ce que cette clé de donjon appartient à l'une des zones ? S'il n'appartient à aucune des zones, comme nous l'avons dit, nous allons le redémarrer. Nous allons analyser la structure, c'est-à-dire les pièces ST, c'est-à-dire les pièces ST, et nous allons demander si de ces tableaux contient directement, nous n' avons pas besoin de faire une boucle pour chacun d'entre eux et d' ignorer qu'il Nous pouvons demander directement que ce tableau contienne la valeur d'origine. La valeur actuelle de l'étude. Peut-être. Oh, je vais installer une branche ici. Je vais mettre ici, et mettre ici, et ensuite, nous allons définir ce qui appartient au vrai. Cela signifie donc que cette valeur que nous sommes en train de vérifier appartient déjà à une zone. Allons-nous faire une pause ? Et continuez avec une question : est-ce que cela appartient ? Parce que peut-être qu'avec cette vérification, nous finirons par tout faux. La chose que nous vérifions n'appartient à aucune zone. Il y a une chance non seulement d' appartenir ou de ne pas appartenir à une région. Cela pourrait être une chambre. Puisque nous vérifions toutes les clés du donjon Et s'il s'agit d'une pièce, elle provoquera toujours des chutes dans toutes les zones. Nous devons donc nous demander s'il appartient à une pièce. Et voici les coordonnées de toutes les pièces que nous avons stockées dans un tableau. Nous n'avons donc pas à y aller, nous n' avons pas à le faire réellement. Si nous avions également toutes les zones dans un tableau, nous pourrions demander s'il contient. Mais je trouve qu'il est plus approprié pour le moment, plus de didacticiel, par exemple, si vous voulez , de l' avoir sous le nom de bake ST et de vous familiariser avec l'utilisation des structures d'un tableau Nous allons lui demander s'il se plaint. Et nous allons mettre une branche, et si c'est faux, ce n'est pas vrai. Bien entendu, nous devons obtenir les coordonnées actuelles. Nous l'avons fait. Et maintenant, la seule chose qui nous importe, c'est que si ce n'est pas vrai, si ce n'est pas vrai, nous allons l'ajouter à la présente étude. Et lorsque nous trouverons un bloc à étudier, nous devrions casser les clés de notre donjon pour trouver l'étude Baisse un peu, en fait. Une erreur, il faut que quelque chose soit vrai. Nous avons besoin que cela appartienne à la vérité. Ensuite, nous n'avons pas non plus besoin de le connecter. Nous avons juste besoin de le faire passer car lorsque nous sortons de la boucle principale, lorsque nous sortons de la boucle des clés de notre donjon, nous devons nous demander si elle est à notre place Nous allons utiliser une succursale, et nous allons accéder à Belong's. S'il a sa place, B s'il n'en a plus sa place, comme je l'ai dit, nous devons tout recommencer. Et comment allons-nous nous y prendre ? Nous allons faire glisser une énorme zibeline de s au début de notre ajout. Ajoutez les deux appels, qu'en fait, je vais déconnecter d'ici, il suffit de le connecter comme ça. Compilez et enregistrez. Maintenant, toute cette boucle fonctionnera jusqu'à ce qu'elle termine toutes les zones. Testons si cela fonctionne, commencez. Et toutes les zones sont actuellement segmentées. Ils ont leurs propres flèches. Et nous avons des catégories. Nous avons presque des catégories. Nous les avons dans une liste. Mais la prochaine chose que nous devons faire est de créer des règles à partir de cette liste pour définir nos domaines. Mais c'est quelque chose. Nous allons partir pour le prochain. Au revoir pour le moment. 39. Catégoriser les zones par taille: Bonjour et bienvenue dans le Game Design Workshop et procédural Real Engine Five création de RPG d'action-RPG procédural Real Engine Five dans les donjons Précédemment, nous avons fini avec la boucle Pine Segment Areas. Nous avons créé la partie dans laquelle nous stockons toutes les zones dans un seul ensemble de salles ST. Et nous avons créé un mécanisme pour vérifier si l'une de nos clés de donjon appartient à l'une des zones que nous venons de créer ou si elle appartient à une pièce Si ce n'est pas le cas, cela signifie que nous avons encore des choses à vérifier et qu'il réexécute l' intégralité de l'algorithme. Maintenant, la nouvelle chose dont nous avons besoin est de catégoriser ces domaines. Et surprise, nous allons avoir besoin d' une nouvelle fonction pour cela. Créons une fonction. Appelons cela des zones de chariots. Appelons-le trouver des zones segmentées. Entrons-le. Maintenant, la première chose dont nous aurons besoin est de passer en revue tous nos domaines. Je vais donc prendre le ST ou les régions, et je vais faire une boucle. Disons que c'est une structure que nous devons briser. Maintenant, facilite-nous les choses. Nous avons une règle simple sur le nombre de blocs, nombre de tuiles de chaque zone. Non, nous pouvons obtenir la longueur de ce tableau, les coordonnées de la pièce dans la zone, et nous pouvons promouvoir la pièce en tant que variable locale que nous allons appeler. Et nous allons le connecter ici. Et à partir de notre longueur, notre longueur entière. Nous allons utiliser quel int car il nous donne combien de tuiles possède cette zone ? Oh, nous allons avoir une règle selon laquelle il ne faut pas zéro vignette. En fait, nous n'avons pas besoin de la vignette zéro. Nous allons en avoir un, deux ou trois. Et enlevons le zéro. En fait, pour supprimer le zéro, qui peut commencer l'index à partir de un. Et nous allons supprimer le ou quand il est supérieur à trois, comment cela s' activera-t-il dans React ? Il exécutera le câble par défaut. Ici, nous allons laisser la valeur par défaut. Si nous voulions des règles plus spéciales, nous aurions pu activer int et spécifier les AC que nous voulons ici. Par exemple, nous ne voudrions pas quatre, nous en aurions besoin de huit, nous voudrions d'autres chiffres spécifiques. Commençons maintenant par nos règles pour les zones à une seule tuile. Donc, nous devons d'abord vérifier si notre cas, qui est un tableau, n'a pas d'importance. Même s'il en est un, nous allons obtenir le premier exemplaire, qui est zéro, qui est qui est zéro, qui est le seul exemplaire dont la longueur est d'un, et nous allons le casser. Comme il s'agit d'un point, c'est une structure de deux entiers, et nous allons vérifier s'ils sont égaux à zéro Ici, nous allons utiliser le terme bola, ce qui signifie que les deux doivent être vrais pour que cela se déclenche. Nous allons mettre une branche, nous allons la connecter, et nous allons connecter la succursale au numéro un. Est-ce que nous prenons de l'espace pour la libido, nous pouvons augmenter la limite de hauteur mais nous pouvons travailler ici Maintenant, quelles sont les possibilités d'avoir un seul bloc ? Qu'est-ce que cela pourrait être ? Donc, cela pourrait être douloureux. Nous n'avons pas besoin de celui-ci. Vous. Écorce. donc, disons que nous avons un bloc ici, une tuile ici, une tuile ici, une tuile ici, une tuile ici, une tuile ici, en fait, fais-le. Je vais créer le Wonder Grid. Non Disons que nous avons une chambre ici. Ensuite, nous avons des murs ici, et nous avons une autre pièce ici Ce style fait peut-être lien entre cette pièce et cette pièce. C'est un couloir. L'autre cas que nous pourrions avoir est que, par exemple, cela ne soit pas connecté à cette pièce. S. Donc, c'est ici. Nous pouvons donc appeler cela une pièce cachée. Disons-le dans une option spéciale à part entière, comme une tuile connectée à une pièce et qui ne se connecte à rien d'autre. Et la troisième option serait la tuile de départ, ne relie rien et ressemble à une pièce cachée, qui ne relie rien et ressemble à une pièce cachée, alors que nous ne voulons pas que ce soit une pièce cachée. C'est une tuile de départ. C'est pourquoi nous cherchons la première vignette ici. Donc, s'il s'agit de la première tuile, nous devrions l'ajouter à une nouvelle catégorie, une nouvelle gamme de structures de pièces ST. Je vais dupliquer toutes les zones. Et je vais emprunter tous ces couloirs en S. Voici les couloirs ST. Je vais supprimer l'un d'entre eux. Des couloirs SD, et je vais les apporter ici. Si c'est vrai, je vais ajouter notre étude. Je vais me séparer, apporter l'étude ici, et sélectionner Connected to True. Maintenant, si nous allons appuyer sur Play, nous pouvons voir qu'il y a des blocs avec des flèches pointant vers les pièces. Mais le premier, pas dans ce cas, parce que ça a continué à partir d'ici, donc 012 en fait six, je suppose, qui est Ouais Continuez sur une ligne droite. Donc, mais parfois, les flèches pointent vers la pièce, ici, nous en avons un parfait exemple. Cette tuile relie les deux côtés. Il a donc les deux flèches. S'il s'agissait d'une pièce cachée, elle n'aurait qu'une seule tuile. Ce serait plutôt celui-ci. Vous avez une flèche pointant vers la pièce, et ce serait une impasse. Ensuite, nous avons ces flèches, nous pouvons décider si nos étuis à tuile unique sont des connecteurs ou une pièce cachée Non Ne t'arrête pas. Un message d'erreur s'affiche. Quel était le message d'erreur ? Ajoutez une saisie de mouvement. Contrôleur de haut en bas. OK, c'est parce que nous n'avons pas corrigé la manette pour le gameplay et tout le reste. Nous réglerons ce problème plus tard. Maintenant, nous avons besoin de cette valeur ici, notre étude de cas, et nous avons besoin des directions de la tuile. Oh, nous allons le trouver dans notre donjon. Carte de Dung. Et maintenant, nous avons l'acteur. Et auprès de l'acteur, nous pouvons obtenir notre itinéraire. Si je comprends les valeurs. Passons au côté des valeurs cette fois. Nous pourrions le faire dans les deux sens. Ce dont nous avons vraiment besoin, ce sont les valeurs car peu importe que ce soit du nord-est, du sud ou de l'ouest. Nous nous soucions du nombre de flèches visibles. On s'en fout de leur orientation. Oh, pour compter le nombre de flèches, je vais utiliser un compteur. Je vais créer une variable locale, je vais l'appeler counter local counter. Et il sera du type entier. Et quand je vais exécuter mes quatre boucles sur les valeurs, je veux qu'elle commence à zéro. Je vais le mettre à zéro avant les quatre boucles. Je vais le faire pour chaque boucle. Et connecte-le ici. Et la simple question est : combien d'entre eux et combien ne le sont pas ? Je vais installer une branche pour me connecter, et je vais régler mon compteur local deux plus un. Non, quand ça sera terminé, je vais demander à une agence. Est-ce que c'est une de mes dernières rencontres. Parce que si ce n'en est pas un, c'est un couloir. Je vais le connecter pour ajouter un couloir. Si c'est le cas, c'est une pièce cachée. Je vais dupliquer les couloirs, la variable et la nommer dans les pièces. Je vais l'apporter ici. Donc, ajoutez. Et je vais ajouter à cette structure un tableau de tableaux. Aucune variable d'étude. Et maintenant, nous avons classé toutes nos pièces à carrelage unique en couloirs ou en pièces cachées. Je pense que c'est un bon point de rupture pour le moment. Tout comme toi dans le prochain. Au revoir 40. Remplacement du sol par catégorie: Bonjour et bienvenue dans l'atelier de conception de jeux et dans les véritables appels à la création de BZ dans Engine Five Dungeon Action Auparavant, nous avions terminé avec notre catégorie de chambres monocarrées. Nous avons utilisé l'étude que nous avons créée au début, qui est le tableau D de coordonnées à l'intérieur de nos zones STO. Dans ce cas, cette étude ne comporte qu'une seule vignette puisque nous vérifions la longueur et que nous passons de l'une à l'autre. Et puisque nous avons cette tuile, nous vérifions si c'est la première tuile. S'il s'agit de la première tuile, nous l'ajoutons à nos coordonnées couloirs, notre réseau de tracés. Et si ce n'est pas le cas, nous vérifions s'il s'agit d'un bloc comportant une ou plusieurs sorties S'il y a plus d'une sortie, il s'agit d'un couloir. S'il n'y a qu'une seule sortie, c'est une pièce cachée. Passons maintenant aux structures à deux et trois longueurs, ce qui signifie que ces zones ne comportent que deux ou trois tuiles. Nous avons dit que nous allions créer une catégorie spéciale pour ces carreaux , que l' on appellera balcons. Et ce n'est pas seulement qu'il y a deux ou trois longueurs parce que, par exemple, jouez, nous aurons peut-être de la chance d' avoir cet exemple. Ch. D'accord. Tu vois celui-ci. Celui-ci se connecte En fait, ce n'est pas le cas. Il ne fait que relier une pièce. Non, il relie deux pièces. Il relie une porte ici et une porte ici, et celle-ci se trouve au bout. Puisqu'il relie deux pièces, il s'agit d'un carreau de trois tailles. Cela ne devrait pas être un couloir. Ça ne devrait pas être un balcon. Ce devrait être un couloir. Ici, nous avons une pièce secrète, et votre balcon serait celui-ci, comme une pièce reliée par deux carreaux et par une porte, et elles ne sont reliées à rien d'autre. Dans notre ensemble de règles pour les deux, nous devons également poser la question. Est-ce qu'il connecte plus d'une pièce ? Dans ce cas, ce compteur local ne suffira pas. Et si nous vérifions si c'est juste le suivant, montrons-le en action. Nous allons donc avoir besoin d'un nouveau comptoir, appelez-le local maintenant. R. Et nous allons commencer par nettoyer cette matrice. Ce n'est pas encore un tableau. Nous devons le sélectionner ici et le placer dans un tableau. S change le type de variable. Connectons-nous à n 3. Pourquoi nous nettoyons Parce que chaque fois que nous cherchons une nouvelle zone SD, nous voulons qu'elle soit réinitialisée. Oh, nous allons obtenir notre étude, et nous allons échouer pour chacune . Maintenant, nous allons trouver une croix adjacente Ce que je voulais dire tout à l'heure, c'est que lorsque nous recherchons du CSS adjacent, il se peut que nous vérifiions la même pièce plus d' une fois, comme deux cordons. Deux carreaux peuvent être placés dans la même pièce. Oh, pour vérifier ça. Ce que nous allons faire, c'est pour chaque boucle à partir des boucles adjacentes. Nous allons donc vérifier les voisins. S'ils appartiennent à une pièce. Non, nous allons le faire, s'il le contient dès maintenant parce que nous ne pouvons pas le faire avec les ports de toutes les pièces. Parce que si je fais un conteneur ici, Ray. Qu'est-ce que je contiens ici ? Je veux savoir dans quelle pièce il se trouve. Oh, j'ai besoin des variables relatives à la chambre un, à la chambre deux et à la chambre trois. Et voici notre ST, toutes les chambres. Les chambres ST sont grises. Nous avons besoin de notre structure parce qu'il s' agit de la première chambre. C'est la chambre deux, c'est la chambre trois. Nous allons donc faire une boucle. À partir de celui-ci. Également. Nous ne sommes pas trop éloignés des chambres. Vous cochez la case adjacente car cela ne nous donne que toutes les quatre boucles, ici quatre fois. Comme pour chaque étude, celle-ci donnera lieu à deux calculs supplémentaires. Je pense que nous allons résoudre ce problème. Nous pouvons maintenant vérifier si ces coordonnées sont contenues dans un ensemble de salles ST. Ou nous allons être confinés. Ils aiment ça ici, peuvent utiliser une branche pour vérifier si c'est vrai ou non. Maintenant, la nouvelle pièce arrive ici. Nous n'ajouterons pas simplement à ce tableau l'index, qui fait référence à quel numéro de chambre il s'agit car l'index 12345 correspond à nos chambres 12345 Ce que nous voulons faire est unique. Cela signifie que si la pièce existe déjà dans ce tableau, elle ne l'ajoutera pas à nouveau. Je vais corriger cela ici. Donc, pour quelques informations supplémentaires, s'il s'agissait d'un set, ce qui est encore une fois le cas, je l' aurais peut-être déjà dit. S'il s'agissait d'un ensemble, il ajouterait uniquement des éléments uniques. C'est la règle des sets. Mais les tableaux sont plus manipulables. Nous n'avons besoin de rien d'autre. Mais quand tout sera terminé, nous demanderons à une succursale. Si notre réseau de compteurs local est plus long, est-il en fait égal à un. Parce que si on demande si c'en est un , on en couvre un autre. Possibilités. Si c' est le cas, c'est un balcon. Il ne se connecte qu'à une seule pièce. S'il est connecté à plusieurs, c'est un corridor. Sur la quatrième branche, nous allons créer des couloirs ST. Nous allons ajouter. Nous allons partager cela et présenter notre étude. Si vous n'avez pas besoin d'une nouvelle variable, dupliquons celle de la pièce cachée. C'est bon La même structure. C'est un ensemble de structures, de chambres ST. Nous allons l'appeler ST Balconies. Ensuite, nous allons ajouter une prochaine étude. Cela définira nos zones que nous appelons balcons en fonction de nos règles. Maintenant, pour le reste des domaines, nous allons faire exactement la même chose. Mais à une différence près, s'ils sont connectés à un balcon, ce ne sont plus des balcons. Ce sont de grands espaces connectés à une seule pièce. Mais nous allons les appeler zones isolées. Je vais juste le copier-coller ci-dessous, pour connecter le code PIN par défaut, qui fonctionne avec tout ce qui est inférieur à un ou supérieur à trois. Et nous allons supprimer ces balcons ST. Nous allons dupliquer une variable de balcons, nommer ST ou des zones connexes. Et nous allons l' apporter ici. Ainsi, les zones reliées à une seule pièce sont des zones isolées lorsqu'elles sont suffisamment grandes. Et ceux qui ne sont pas notre coordinateur. Mais tout ce que nous avons fait pour le moment, ce sont des données. Nous n'avons rien changé visuellement. Si on y va tous et qu'on joue. Nous ne verrons aucune différence, rien ne changera. Mais nous avons stocké les données dont nous avons besoin pour faire bouger les choses. La prochaine fonction dont nous aurons besoin dans le générateur de labyrinthe serait donc de classer les zones, de les indiquer, d'en faire quelque chose Et ce serait à nous d'ajouter nos étages. Nous allons créer une nouvelle fonction. Nous allons l'appeler «   ajouter des étages ». En ajoutant des sols, je veux dire que nous allons changer le matériau qu'ils contiennent car la mèche statique restera la même Commençons par exemple par les pièces cachées. Nous allons prendre nos chambres pour les adolescents. Nous allons à chaque boucle. Pour chaque pièce cachée que nous avons, nous trouverons l' acteur Mac Dungeon Y. Il fallait d'abord résoudre ce problème. Parce que c'est la structure. Il s'agit d'un réseau de fractures, même s'il ne comporte qu'une seule pièce, c'est un tableau d'un indice. Nous allons parcourir cet index en boucle, ou nous pouvons en fait, puisque nous savons qu'il s'agit d'un index, nous pouvons obtenir zéro index, puis nous pouvons trouver notre donjon Dungeon, nous allons prendre le sol national. Nous l'avons nommé. Et du matériel de set. Pour boucle. Essayons de le faire un peu, de le rendre compact. Élément zéro car notre sol ne comporte qu'un seul élément, et c'est celui-ci que nous voulons changer. Ce serait pour le chauffage des pièces. Lequel pourrait être sélectionné. Passons aux mailles de notre grenier. Cherchons-en un qui convient à un. Celui-ci. Avec la lave. Faisons des pièces vides recouvertes de lave. En fait, j'ai besoin de définir le maillage statique. Désolé, ce n'est pas le matériel. Non, je vais définir maillage du grenier car nous avons un maillage statique différent. Il ne s'agit pas simplement d'un matériau. Et je vais le déplacer ici. Maintenant, allons jouer. Ayez une salle de guérison qui ne ment pas. La raison est peut-être, comme toujours, j'ai une annonce pour ajouter un étage ici. Ensuite, compilez et enregistrez à nouveau, et nous avons une idée qui est l'ascenseur. Maintenant, pourquoi est-ce arrivé ? Soyez Les zones catégorisées. Nous n'étions pas là. J'ai demandé la première chambre, mais la pièce d'identité demande si vous renfermiez les zones spéciales. Dans notre ascenseur, le périmètre de nos chambres, le périmètre nos chambres ne sont pas des zones spéciales Mais ce que nous devons faire, c'est ajouter ici ou si c'est la première pièce ou si l'étude contient des zones de veau R A, des carreaux de veau Ce devrait être un couloir. Alors compilons et sauvegardons à nouveau. Pas de pièces cachées. Encore une fois. OK, ici nous en avons deux, il y a un ici qui se connecte à cette pièce, et nous en avons un ici aussi qui se connecte à cette pièce. Oh, je pense que c'est un bon point d'arrêt pour celui-ci. Dans le prochain article, nous allons continuer à baser les sols sur chaque style et sur certains éléments présentant des problèmes, et sur certains éléments présentant des comme celui-ci, et à les résoudre. Parce que nous devrons réparer certaines choses. Par exemple, nous devrons ajouter quelque chose à notre labyrinthe au-dessus de cette partie. Mais je m'égare. Au revoir, à la prochaine. 41. Catégories de pièces cachées: Bonjour et bienvenue sur Game Design Workshop, un véritable cours de création de RPG d'action-RPG basé sur Engine Five Procedural Dungeon création de RPG d'action-RPG basé sur Engine Five Procedural Auparavant, nous en avions fini avec notre générateur, pas notre générateur, mais nos zones classées fonctionnent. Mais nous avons ajouté les règles relatives aux balcons en vérifiant nombre de pièces correspondant à chaque style, et nous avons créé un tableau avec un réseau de compteurs locaux, auquel nous avons ajouté une valeur unique, ce qui signifie que si l'index était déjà ajouté, si, par exemple, numéro un était déjà ajouté, il ne serait pas ajouté à nouveau lorsque nous vérifiions d'autres carreaux. S'il n'était pas relié à plus d'une pièce, ce serait un couloir, et s'il n'était relié qu'à une seule pièce, ce serait un balcon. Nous avons fait de même pour classer les zones isolées et les couloirs pour les pièces de plus de trois carreaux Nous avons également lancé la fonction d'ajout d'étages, et nous avons ajouté le treillis caché du grenier Nous allons maintenant passer aux suivants. Oh, commençons par les balcons. Nous allons à nouveau avoir besoin de chaque creux. Nous allons avoir besoin de nos balcons etc. Et nous devrons annuler le résultat. À partir de ce résultat, nous devons nous tromper, car il ne s'agit que d'une variable, d' une seule coordonnée, donc nous obtenons zéro, mais pour le moment, nous devons passer en revue tout cela Donc, pour chaque boucle, comme celle-ci ici, nous allons trouver dans notre t que nous pouvons réellement copier exactement cela. Maintenant, connectons-nous. Pour l'étage, choisissons si nous n'avions pas de balcons. Nous en avions un sale. Je pense que c'est bon pour les balcons. Voilà, celui-ci combinait A, B, trois, A, da6b. Incroyable. Nous allons faire exactement la même chose pour le prochain, qui serait de créer des zones isolées. Eh bien, pour les zones isolées, nous ne serions pas exactement les mêmes parce que nous ne voulons pas qu'il y ait du beurre. Nous voulons les rendre un peu plus spéciaux. Peut-être qu'à la fin, dans un bus ou quelque chose comme ça. Ce que nous allons faire, c'est faire une sélection ici. Pour l'indice, nous allons faire une plage aléatoire. Il y en a 23 étages ? R. Je pense avec certitude que nous devrions en utiliser davantage ici. Posons juste un plancher. Nous en avons des normaux. Normal et flammes, comme dans les couloirs habituels, mais c'est flamboyant Je parle de couloirs. Réparons les sols des couloirs. Je vais les apporter. Ici. Voici les couloirs. Bien. Nous commençons par le matériau du sol. Nous allons donc sauter cette étape. Nous n'avons pas besoin de faire des couloirs. Il n'y a aucune raison de l'ajouter à nouveau. Mais nous devons nous occuper des chambres. Ports périmétriques. Nous pourrions utiliser toutes les coordonnées en fait, et nous pourrions le faire pour Ce sont des coordonnées. Nous n'avons pas de pause. Nous pouvons le copier-coller directement ici. En direct. Pour les chambres, nous avons un plancher en bois. Celui-ci Y. Donc, BC D a combiné sept ou trois Codes nucléaires. Et je pense que nous en avons fini avec les sols. Nous compilons Ave. Nous pouvons vraiment le faire, nous l'avons créé, c'est trop de la lave. Beaucoup de lave. Tellement. Nous n'avons pas de balcon ici ou ici. Nous avons un balcon ici. OK. Nous devons également fermer la base. Nous allons donc passer à un générateur. Nous allons passer aux catégories, aux zones segmentées finement. Nous allons passer à nos tracés linéaires, puis revenons à nos étages. Fabriquez ceux en lave. Oh, d'accord. C'est pourquoi, parce que je veux dire zéro, M zéro, mais qu'il faut réduire les risques de lave. Ajoutez un étage supplémentaire pour sélectionner à nouveau l'étage. Ici, le score est de 0-3. Les niveaux 1 sont un peu plus rares. Oui, ça a l'air sympa. Que s'est-il passé ici ? Oh, c'est une chambre spéciale. C'est pourquoi et je pense que nos sols le sont. Maintenant que cette partie est terminée avec la catégorisation des zones, catégorisation des zones et l' ajout des étages correspondants, nous devons poursuivre notre lobing Disons que c'en est une autre que je ne connais pas. Mettons 7,72. Juste pour le plaisir. Et nous retardons. Notre barre de progression dans cette partie, 0,1 dans cette partie, s'affiche petit à petit. Déplace un pourcentage de celui-ci. Si nous voulions être un peu plus agréables visuellement, nous aurions pu établir un calendrier pour passer du actuel au pourcentage que nous voulions. Mais ce sont des visuels pour le plaisir des visuels. Continuons donc à créer des portes. Parce que pour le moment, on ne peut pas vraiment passer d'une pièce à l'autre. On ne peut même pas recommencer depuis le début. Ce ne sont que des portes. Nulle part. Comme nous l'avons dit, nous avons besoin d'un code pour cela. Nous devons définir où notre porte doit se trouver dans notre labyrinthe. Première chambre ? Je pensais que c'était un endroit caché qui ne prenait pas la parole, mais ce sont les toilettes. Oh, nous allons utiliser la direction de la flèche pour créer une porte menant à chaque pièce à partir de son segment. Et par exemple, ce segment se connecte à cette pièce de nombreuses fois, mais seulement une fois qu'il devrait y avoir une porte. Ce segment se connecte à deux pièces, il devrait créer des liens avec les deux pièces. Une porte. Cela devrait être créé. Il est également relié à cette pièce. C'est pourquoi ce n'est pas une zone spéciale alors que celle-ci est une zone spéciale. Trop de feu. Mais oui, avoir certaines zones ne serait que du feu, ce serait également une bonne chose. Oh. Allons créer notre fonction pour créer les portes cachées. Les portes cachées de la pièce. Tu vas avoir besoin de fonctionnalité. Appelons-le. Elle part ensuite. La première chose dont nous avons besoin pour celui-ci, ce sont les pièces cachées. Nous allons le récupérer. Je vais parcourir les quatre pouces. Boucle. Nous allons détruire la structure. Nous devons trouver les coordonnées dans notre donjon. Je vais me procurer une copie de zéro parce que c'est une vignette. Pour trouver un donjon. Et à partir de là, nous allons obtenir l'itinéraire. Et depuis les directions, nous allons récupérer les clés. Ceci pour le corps du flux, rendez-le un peu plus compact. Je veux savoir dans quelle direction j'ai une flèche pointant vers un mur. Ce cas serait facile à faire car nous n'avons qu' une seule direction avec un mur, un mur de pièce, et toutes les autres directions sont des débris bloqués, d'autres objets qui ne s'y connectent pas. Nous faisons donc une boucle pour chaque boucle. Nous allons calculer la valeur avec l' indice lorsque c'est vrai. Cela signifie que c'est le seul à avoir une flèche, ce qui signifie que nous avons un passage. Oh, c'est une porte. Nous allons le promouvoir en tant variable locale, appelons cette variable locale direction Et maintenant, nous avons une direction dans laquelle notre centime de chambre fait office de porte. Oh, sur cette tuile, allons-y. Nous voulons que les cinq voisins trouvent l'adjacent et à partir de cet adjacent, nous voulons prendre la direction actuelle depuis notre direction. Nous allons apporter cette variable ici. Vous allez obtenir du RA, sélectionnez celui que je n'ai pas choisi, sélectionnez le joker. Celui-ci, pas celui-ci. Celui-ci est toujours un tyran. Cela est également indiqué dans l'infobulle. Sélectionnez. Pour relier cela, l'indice, et nous avons le zéro nord, est 213. Non, nous pouvons sélectionner directement le voisin de notre immeuble qui est la pièce qui a besoin de la porte. Nous allons donc trouver notre chambre. Utilisez à nouveau cette carte du donjon avec nos coordonnées. À partir de là, nous allons avoir des actions opposées. Nous allons trouver le courant opposé que nous voulons. Nous allons avoir la avoir chambre opposée. Depuis notre chambre, O tile room en ce moment, nous l'avons trouvée avec notre croix adjacente. Depuis notre chambre, prenez la direction opposée et allumez la flèche. Cela signifie donc que notre joueur peut le parcourir dans notre donjon notre joueur peut le parcourir allons le connecter à la fin de ces quatre lob, qui sont les clés de la tuile actuelle, car nous ne voulons pas le connecter à la fin une fois que toutes les tuiles ont été vérifiées Nous voulons le connecter à la vignette en cours de vérification. Jouez à Roots Don't I. Encore une fois, Hidden Room. Nous avons une pièce cachée ici. Si je vais à l'intérieur, c'est censé être une flèche dans ce sens. Je pense que nous avons tous une idée de la raison pour laquelle c'est arrivé. Nous devons utiliser ven graph et après notre chargement, nous devrions ajouter la fonction de zones de portes cachées. Compilons et jouons. De l'art, une pièce cachée, espérons-le. Repartons à zéro. Encore une fois, pas de pièce cachée. Ici, nous en avons une. Encore une fois, cela n'a pas fonctionné. Et la raison est simple. Nous avons ajouté aux directions que cette option est activée que nous n'avons pas actionné les flèches Nous allons donc basculer. Dave, d'une chaufferie en fait. Maintenant, je nous montre qu'ici, ils sont censés être adorés Et fonctionne aussi, les autres sont corrects. Toutes les autres pièces chauffées. Beaucoup. Oui, nous en avons un troisième. Moi aussi, je suis là. Cela signifie que cela fonctionne. Je pense que c'est suffisant pour celui-ci. Je te verrai bientôt. Au revoir. 42. Fonction d'échange de mur à porte: Bonjour et bienvenue sur Game Design Workshop et sur le cours de création de donjon A Psy sur Real Engine Five création de donjon A Psy Ainsi, dans le précédent, nous avons terminé avec notre fonction d' ajout d'étages. Nous avons ajouté les planchers des balcons, dont quatre ont fait tourner les balcons ST en boucle et percé les éléments RA, puis nous avons traversé les éléments LA et ajouté et réglé le maillage statique Ensuite, nous l'avons fait pour les zones isolées, également, exactement le même code, en changeant un entier aléatoire pour qu'il provienne des entier aléatoire pour sols de lave ou d'un sol normal, et nous avons ajouté deux fois le sol normal, qu'il y ait plus de chances d'obtenir un coup. Nous pouvons en fait l' ajouter une fois de plus. Ici. Nous en avons donc trois et deux. Ensuite, nous avons lancé notre fonction de code des zones de portes cachées pour placer les portes dans les zones cachées. Nous avons parcouru notre liste de pièces cachées. Nous avons cassé la structure pour obtenir le tableau. Nous avons obtenu le premier index parce qu' il s'agit d'une pièce à tuile unique, et nous avons trouvé cette tuile dans notre donjon Nous avons obtenu l'itinéraire, et à partir de celui-ci, nous avons déterminé lequel se trouve, ce qui signifie qu'il y a accès. Non, cela signifie que nous avons une porte. Puis, quand nous avons terminé, nous avons corrigé les flèches du bloc opposé, le bloc de pièces, pour activer la flèche vers la pièce cachée. Maintenant, ce que nous devons faire, c'est créer une fonction à l'intérieur de la décoration DP, qui est chargée d'ajouter à nos murs pour remplacer la porte, le mur au mur de la porte. Et nous allons le faire ici parce que dans la décoration BP, nous avons l'indice des pièces, que nous utilisons pour choisir quel type de mur ? En fait, nous avons besoin de l'index mural, de l'index des pièces. Ainsi, dans la fonction d'échange de murs, transformons également l' indice des murs en variable. Encore une fois, pour ceux qui cherchent où nous sommes, nous sommes dans les décorations de vice-président. Nous allons créer une fonction ici, et avant cela, nous voulons utiliser la fonction pour laquelle nous avons déjà échangé murs pour promouvoir la variable d'indice des murs Parce que nous allons nous en servir pour décider quel type de porte murale nous voulons ajouter. Créons maintenant cette fonction. Appelons-le Add door. Maintenant, dans cette fonction, nous devrons également vérifier qu'il s'agit bien de la chambre individuelle que nous créons connectée à notre chambre car il est possible que notre chambre individuelle soit ici, alternée, bien sûr, mais cela peut être comme ça, selon nos règles, est également considérée comme une chambre cachée Mais cette pièce n'aurait pas besoin de porte. Arrêtez-vous ici, revenez à la décoration et ajoutez une sortie murale. Lorsque nous lançons la porte, revenons à notre générateur M, en ajoutant, à partir de la carte Find Dunge, notre tuile de référence Nous allons avoir besoin d' un enfant. Décorations. Oui, c'est le nom. Et parmi les décorations pour enfants, nous allons passer à l'acteur. Et de la part de l'enfant acteur, nous allons créer deux décorations en faire une pure couste Maintenant que nous avons la référence, nous allons nous étendre. Porte. Nous allons le connecter ici. Apportez-le comme ça. Maintenant que nous avons une sortie, nous savons que nous avons cette sortie d'un mur. Nous savons que lorsque cela fonctionnera, nous pourrons ensuite nous poser la question suivante : avons-nous trouvé un mur ou non ? Et si nous ne trouvons pas de mur, nous ajouterons nos coordonnées à toutes les portes. Mais ne le faisons pas maintenant. Nous allons le faire par la suite. Terminons avec notre fonction à. Non Tout d'abord, nous allons avoir besoin du réseau de murs. Parce que nous voulons tous les passer en revue. Nous allons donc y aller pour chacun. Mais comme vous le savez, lorsque nous traversons tous les murs, nous avons besoin d'une direction, car nous avons le système un élément du remorqueur est un élément de traction Et parce que nous devons tirer , nous avons besoin d'une direction. Ajoutons donc à notre porte une entrée d'érections E. Appelons-le érection. Maintenant, n'oubliez pas que cela doit être apporté avec de la ficelle, pas pour mordre, et nous allons l'ajouter ici. Ensuite, nous avons besoin d'une succursale. Revenons à notre générateur PP. Et à partir de notre résultat inverse, nous allons connecter cela ici parce que nous testons dans la direction de notre pile qui contient la pièce cachée. Nous faisons le contraire pour le voisin. Donc, le revenu, et cela nous donne le résultat du I is the room. Retournez aux décorations. C'est donc à cela que nous devons nous demander s'il y a une guerre. Mais ce que nous pouvons faire, c'est le faire glisser ici et le set sera visible. Ou en fait, ce n' est pas à nouveau caché, bonjour dans le jeu mais caché dans le jeu. Nous allons ouvrir une branche lorsque cela sera vrai. Et nous allons sélectionner un « ici » ou «   b » qui n'est pas visible ou s' il est masqué à nouveau. Nous avons besoin de visibilité ici. Pas de b car s'il était visible, il deviendrait vrai, puis il deviendrait vrai. Mais si c'était caché dans le gain, et que c'est vrai, cela signifie que nous ne pouvons pas le voir. Nous avons donc besoin de l'inverse. Mais nous avons ceci. Nous devons créer une variable locale. Appelons ça vraiment un mur. Parce que nous n'avons pas de mur ici, connectons-le ici aussi et définissons-le comme vrai lorsque notre question est vraie. Maintenant, il est bon de savoir que nous pouvons ajouter des balises au moment de l'exécution. Voyons, par exemple, si je traversais tous les murs d'une pièce. Comment savoir quel est le mur de la porte ? Nous pourrions aller au générateur de labyrinthe. Montrons les deux manières, en fait. Nous pourrions aller ici, et c'est ce que nous ferons. Nous allons ajouter à ces coordonnées un nouveau tableau appelé let's duplicate s empty. Il s'agit d'un réseau de points de terminaison. C'est ce que nous voulons. Appelons tout cela à nous. Apportez-le ici et ajoutons les coordonnées. De l'opérateur, désolé Ajouter au tableau. Si c'est faux, si nous n'avons pas de mur, nous ajoutons les coordonnées de notre porte, qui sont le résultat de notre croix adjacente. Dans le même temps, nous pourrions avoir un autre réseau. Appelons cela toutes les érections de portes. Remplaçons le point en directions. Mais par exemple, si je l' apporte également ici et ajoute la direction opposée que nous voulons ici. Non, je les ajoutais comme ça, je pourrais avoir deux ensembles correspondants toutes les portes et leur direction Ou je pourrais aussi avoir une autre variable cartographique avec des points t, et la deuxième valeur serait de huit directions. Mais comme je l'ai dit, nous pouvons le faire avec des remorqueurs. Nous pouvons ajouter run us à des composants, à des acteurs, à tout ce que nous voulons. Donc, ce que je peux aussi faire, c'est faire glisser depuis la boucle for depuis l'élément du tableau, le mur que nous manipulons ici, et ajouter g tugs Ce que nous devons faire est un peu étrange Nous devons obtenir des balises, obtenir des balises de composants, et cela se présente sous la forme d'une variable matricielle Et comme il s'agit d'une variable, nous pouvons réellement, qui est notre référence directe à cette variable, manipuler, l' exprimer et nous pouvons mettre fin à ce problème. Maintenant, si nous faisons une boucle à travers chacune d'elles, chacune des parois, et à la fin, nous allons faire une autre boucle avant. Et demandez la liste des tags. Maintenant, le mur sur lequel nous avons ceci, nous allons réellement l'imprimer. Mais ne le testons pas. C'est une perte de temps. C'est ainsi qu'il est programmé pour fonctionner. La prochaine chose dont nous avons besoin est de définir le maillage statique. Maille Tic. Cela aurait pu être différent. Ce que nous connectons est plus visible. Ouais. Je vois que c'est clair maintenant. Quel maillage statique ajoutons-nous ? Nous allons élire. Pour notre index, nous allons choisir notre index mural. Nous allons ajouter un total de cinq variables. Passons à nos mailles statiques et sélectionnons nos portes en conséquence Maintenant, je dois vérifier quels étaient les deux correspondants. Nous allons aller voir Evan Graph. Nous allons construire des chambres. Et à partir de là, nous allons passer aux murs, qui sont en fait des décorations intérieures. J'aurais pu y rester. Et vérifions-le. Le numéro zéro est donc de ce type. Donc, si nous passons à a, numéro zéro, nous devrions ajouter ce type de mur à la sélection. Je pense que c'est ça. C'est bon. 85a1 9f8d combiné. Incroyable. Maintenant, le suivant . Allons-y. Non Allons arrêter les murs. Le suivant est celui en bois facile à trouver. Celle en bois est ma grande bouche, facile à trouver. OK. Oui, c'est ici. Dans ce b91xb combiné. Je ne suis pas sûr. Cette année. Passons au suivant . La pierre, ce sont les murs. Ça, c'était plus facile à trouver. Zéro combiné E CC 57. Je pense que cela suffit de nommer. Les derniers seraient les murs de briques. Les murs de briques. Je ne sais pas vraiment laquelle, mais je ne pense pas que cela importe. Je vais choisir celui-ci pour le premier. Combiné 025159 bla, bla. Et l'autre serait celui-ci. OK. Maintenant, sur la base de notre système ultérieur sur la façon dont nous allons entrer dans les salons. Nous allons avoir besoin de quelques collisions supplémentaires que nous allons activer via cette fonction. Allons-y. Nous allons devoir aller dans la fenêtre d'affichage et ajouter, en fait, nous pouvons dupliquer la zone de collision. Amenez-le très rapidement ici et réduisez-le. Je pense que c'est bon, de bonne taille. Peut-être un petit peu. Oui, c'est bon. Je pense. Je vais le dupliquer à nouveau. Allez le faire pivoter. Je vais l' emporter partout où une porte est censée se trouver. Peu importe que ce soit précis ou non. Je vais le dupliquer à nouveau, le faire passer. Ensuite, je vais également le dupliquer et le mettre ici. Comme ils sont tous une copie de la boîte, ils ont les mêmes paramètres que ceux que nous avons ajoutés ici. Ils ne génèrent donc pas d'événements de chevauchement. Peut-être un peu plus. Mais c'est bon. Oh, cela signifie qu' à notre porte, nous devrions activer leur lésion. Et nous pouvons en fait faire un pas simple. Nous allons sélectionner ce mur. Nous allons placer cette boîte sur ce mur. Mais nous continuons également à le nommer. Ensuite, nous allons placer cette boîte sur ce mur. Ici, cette boîte contre ce mur, puis cette boîte contre ce mur. Je vais revenir à la fonction, et à partir de notre maillage statique, je vais faire en sorte que les enfants obtiennent les composants pour enfants, non ceux de la boîte deux, comme vous pouvez le voir Cela indiquait de nombreuses options. L'un d'eux était d' apporter une certaine boîte. Parfois, des choses réelles peuvent prédire ce que vous voulez faire. Quoi qu'il en soit, pour ce qui est des enfants , nous allons, nous allons faire chaque boucle. Ensuite, nous allons passer au composant rash. Et générez des événements de chevauchement, c'est vrai. Maintenant, pourquoi j'avais besoin de lancer. La raison pour laquelle j'ai eu besoin de lancer ici, c'est parce que je passe en revue tous les composants de ce produit chez mesh. Et je veux participer aux opérations. Ce n'est pas un composant de maillage statique, c'est un composant de boîte. Désolée d'avoir boxé. Composant du boîtier. Cela n'aurait pas fonctionné s'il s' agissait d'une carte statique. Donc je ne sais pas. C'est la raison pour laquelle je ne sais pas quel type de caractère. Elle peut avoir environ 520 enfants. D'accord, ce n'est pas bien d' avoir autant d'enfants, mais tu ne peux pas le faire. Et ça va être un peu plus lourd. Je ne sais pas de quel type de composants il s'agit. Je suis donc en train de dire vous êtes le composant de la boîte, si vous êtes celui qui génère des événements de chevauchement. Je n'ai pas besoin d'étiqueter ces composants. Je n'ai pas besoin de nommer ces composants. Je sais qu'ils appartiennent aux murs. Je pense que c'est un bon sujet de discussion pour le moment. Je te verrai le prochain. Au revoir. 43. Placement de porte et de sceau: Bonjour et bienvenue à l'atelier de conception de jeux organisé dans le cadre du cours Lensing Five Procedural Dungeon Action RPG Dans la leçon précédente, nous avons terminé avec les fonctions d et door areas en ajoutant la fonction doors que nous appelons des décorations BP. Nous avons également montré un moyen d' ajouter des informations sur les portes d'une manière que nous connaissions, créant un tableau, en ajoutant les variables et en créant un tableau correspondant, également qu'elles sont remplies en même temps. Leurs index correspondent donc les uns aux autres. Nous avons également ajouté cette fonction, la porte que nous avons commencé à remplir pour obtenir la direction à partir de laquelle nous voulions ajouter la porte. Nous avons traversé nos murs. Nous avons trouvé le composant qui porte l'étiquette, le mur qui porte l' étiquette indiquant notre direction, et nous avons demandé si notre mur était visible ou non, au cas où notre pièce cachée serait repérée quelque part Et nous avons continué en élisant En fait, c'est faux. Encore quelques erreurs. Quand c'était vrai, nous voulions leur attribuer la valeur non comme vrai et quand c'était faux, nous voulions ajouter la balise au composant, indiquant que ce composant est une porte. Ainsi, lorsque nous voulons parcourir le réseau de murs, nous pouvons facilement déterminer quelle est la porte. Donc, nous le déconnectons maintenant et le connectons aux chutes et c'est bon. C'est la bonne solution. Ensuite, nous avons ajouté le maillage statique, sélectionné le maillage approprié, et nous avons également ajouté quelques composants de boîte ou nos mécanismes de jeu. Mais lorsque le bouton When the door est activé, nous activons également les événements de chevauchement avec les nouveaux composants de notre boîte. Maintenant, il y a encore une chose que nous devons ajouter, et je vais expliquer pourquoi nous devons ajouter un maillage statique. Montrez où est la porte ? Parce que notre caméra sera prise à un angle de 45 degrés. Si la porte est dans ce mur, nous ne pouvons pas le dire. Nous ne pouvons pas dire : Oh, ici, il y a une porte. Il faut donc que le joueur ait quelque chose lorsqu' on regarde d'en haut, qu'il y ait une porte ici. Pour ce faire, nous allons utiliser des filles. Oh, je vais juste ajouter une nouvelle quête statique. Il a ajouté le mur parce que je l' ai sélectionné ici, mais nous voulons le CGL. Trouvons le C l. Le voici, non ? C'est énorme. Rendons-le un peu plus petit. Je pense 0,3. Peut-être que c'est un peu petit ou qu'un 0,4 semble correct. N'oubliez pas de verrouiller tous les axes qu'ils soient redimensionnés uniformément, et de les amener là où ils se trouveraient Base La hauteur de notre mot est de 400. 93 80, peut-être que c'est bon. En fait, pour les Cgels, je vais également utiliser des remorqueurs Nous pourrions simplement en être parents étant enfants, continuer avec l'autre vague que nous avons montrée, mais habituons-nous aux tiraillements. C'est donc S. Nous en avons collé deux, faites-les pivoter. Je vais annuler la valeur négative. C'est un Nord. Je vais vérifier avec le mur. Y. Je vais faire pivoter à nouveau le copier-coller Je vais le faire pivoter de 90 degrés. B Position ouest B. Je vais juste copier ceci. Collez-le ici. Moi, à mi-chemin , donc deux. Ouais. Je suis désolée. Parce que c'est le milieu. 380 Wu à nouveau. Direction. Le 400 annulé, c'est 400, et il est au bon endroit Ce que nous devons faire pour tous, c'est ou c'est aussi transformer le jeu caché en réalité. Parce que nous voulons les activer quand nous le voulons. Je vais y aller aussi, et vraiment, passons à la construction c. Amenez-les ici, créez un tableau. Et faites la promotion de cette variable, toutes ces filles C. Bien. Maintenant, je peux aller chercher les Cgals et m'occuper de chacun d'eux. Encore une fois, je vais utiliser cette chaîne ce nom de texte ici car le composant tire . Si c'est le cas, nous sommes à sa visibilité Visibilité selon laquelle le jeu caché agit faussement. La visibilité et la dissimulation dans le jeu sont deux choses différentes. Et ils sont opposés. Caché dans le jeu, oui, cela signifie que vous ne pouvez pas voir. Visibilité, oui, cela signifie que vous ne pouvez pas le voir. Quoi qu'il en soit, maintenant, avant de le faire, nous devons poser une question. Est-il possible que nous soyons sur un mur ? Parce que si nous sommes dans un mur et que nous ne devrions pas allumer le CD , il y aura un CD qui s'enverra dans les airs S'il n'y a pas de mur, sortez simplement sans mur. S'il s'agit d'un mur, passez à travers les gels marins et activez le bon. Maintenant, compilons et sauvegardons. Et un crash. Nous avons dû avoir un accident. À notre retour, continuons. Allons tester. La carte. Le niveau. Y a-t-il une pièce secrète ? Oui, il y a une pièce secrète, des résidus, et nous avons notre porte. Oh, il ne reste plus qu'à le faire pour tout le reste. Oh, la prochaine chose que nous devrions ajouter serait les portes à zone unique. Ce que je veux dire par des zones uniques comme les balcons et les zones isolées régies par une règle commune. Ils ne se connectent qu'à une seule pièce. Pas de balcon ici, espace unique ici, isolé, nous avons une autre chambre. C'est une belle carte. Quoi qu'il en soit Ajoutons les portes à zone unique. Quand j'en ai deux différents. Créons d'abord une fonction. Passons au graphique à stylet, masquons les zones des portes et ajoutons une nouvelle fonction. Non, zones à porte unique. Comme nous l'avons dit, nous avons deux ensembles de ces zones. Nous avons les balcons et les zones isolées. Eh bien, je pourrais faire un nombre différent de boucles pour chacune d'elles et m'en remettre comme ça. Mais il existe également une autre option. Comme deux tableaux ont le même type de variable, vous pouvez en fait les ajouter. Cela signifie que vous les fusionnez en un seul, car je ne veux pas gâcher ces deux tableaux Je vais créer une nouvelle variable locale. Je vais en faire un point d'information. sera un tableau, et je vais l'appeler tal array. Je vais l'apporter ici. Je vais prendre un stylo. Et je vais le recoller, le refaire. Donc, ce que je vais faire, c'est que cela ne devrait pas être un point final. Ce devraient être des chambres SD. Aucun point de terminaison ne change le type de variable car ces tableaux sont peu encombrants Non. Laissez-moi déconnecter, laissez-moi compiler et reconnecter la pile, et maintenant elles peuvent être ajoutées Maintenant, le premier non, la première broche est le tableau dans lequel nous allons ajouter des éléments, et le deuxième pin est le tableau que nous ajoutons. Ce tableau devient donc un total de ces deux. Si j'avais connecté les balcons ici et connecté les zones isolées ici, cela aurait perturbé notre variable Maintenant que j'ai ce nombre total de tableaux, je peux les supprimer. Pour chaque boucle, pour chaque pièce, car ce que nous allons faire sera pareil. Nous allons également avoir besoin d'une autre variable. Il sera de type entier et de type tableau. C'est parce qu'il devait s'agir d'un tableau. Mais je veux montrer le code clé, comme programmer quelque chose en fonction de son besoin. Je vais vous montrer dans un instant. Appelons cet ex. Mm. Oh, je l'ai fait. Mais vous avez l'index des chambres ailleurs. Ça ne m'a pas plu. Je vais l'appeler Index. Ça va bien se passer. Compilez et enregistrez. Et en fait, je pense que c'est un bon point d' arrêt pour celui-ci. Je vais vous montrer l'excès de ce code par la suite dans la prochaine leçon Au revoir pour le moment. 44. Fonctions de zone de porte unique: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le cours de création procédurale Real Engine Five de Don Action PS. Auparavant, nous avons créé, nous avons terminé avec notre fonction d'ajout de porte. Nous avons ajouté la partie que nous vérifions lorsque le bouclage de chaque mur est terminé, et nous avons activé notre case. Notre boîte de porte. Nous sommes en train de vérifier laquelle des branchies C possède l'étiquette de composant dont nous voulons connaître la direction, et nous les définissons comme trop visibles Alors que nous installons les deux nouvelles chutes cachées. Maintenant, et nous sommes sortis sans mur ou pas. Nous avons également créé le début de notre générateur principal de nos zones à porte unique, et nous avons expliqué un peu comment les ajouter à un tableau Et maintenant, nous allons continuer sur cette voie. Et comme je l'ai promis, je vais vous expliquer un peu utiliser ce tableau d'entiers J'utilise un tableau d' entiers pour ce faire car l'impact sera minime C'est une bonne occasion d'expliquer certaines choses. Oh, commençons par rompre notre attitude. Nous obtenons donc le tableau de nos coordonnées, puis faisons une boucle vers chacune d'elles. Pour chaque boucle. Maintenant, nous avons une fonction appelée in room index qui, si nous l'ouvrons, nous parcourons toutes les pièces du réseau St, ou les coordonnées des pièces, et nous demandons si les coordonnées que nous saisissons appartiennent à l'une d'entre elles. Cela nous indique si une chambre est trouvée et de quel index de chambre il s'agit. Nous allons fermer cette fonction. Tenez désormais compte des zones à porte unique. Maintenant, avec ça, nous allons organiser un brunch et le connecter ici. Et disons, si nous trouvons une chambre, que ferons-nous ? Si ce n'est pas le cas, nous ne ferons rien. Mais si c'est vrai, faisons l'overkey dans la salle d'index Je vais donc demander si cela est contenu. Contient un objet. Et l'élément serait l'index des chambres. Parce que si nous ajoutons une pièce, si l'une des coordonnées trouve une pièce, nous ne voulons pas ajouter le bloc suivant qui trouve également une pièce, nous avons trouvé un endroit où nous pouvons créer une porte Oh, quand je fais ça, je sais que je veux ma chambre soit unique dans ce domaine. Si j'ajoute à ce tableau, pouvez-vous entendre parler d'unique. Ce serait exagéré car la raison en est que lorsqu' il essaie d'ajouter un élément unique, il passe d'abord en revue l'ensemble des index, puis il décide s'il l'ajoute ou non Maintenant, comme je l'ai mentionné, les ensembles ont également cette fonctionnalité, mais ils ne sont pas aussi lourds que les tableaux en termes d'ajout d'éléments uniques Ils peuvent en fait augmenter les performances en ajoutant une pièce unique. Ils réduiraient les performances de la mémoire car ils disposent d'un système sous-jacent. Le mécanicien a appelé sh tables. C'est quelque chose de plus profond dans la programmation concerne la gestion de la mémoire, qui permet d'obtenir des références rapidement. Quoi qu'il en soit, il est préférable d'ajouter des ensembles uniques. Les tableaux d'index sont meilleurs pour s'ajouter normalement. Donc, ici, je sélectionnerais simplement Ajouter, et ce serait plus rapide. Non pas que cela ait à voir avec notre labyrinthe maintenant, mais je pense que c' est une bonne information Je vais ajouter l'index des chambres au tableau. Et nous avons les portes et toutes les directions. Puisque nous l'avons dit, ces deux documents doivent être remplis en même temps. Nous allons ajouter à cela je vais ajouter les coordonnées de. Je vais également ajouter quelque chose à cela. Maintenant, pour connaître la direction, il ne reste plus qu'à sélectionner. Et nous connaissons notre tableau d'indices grâce à la salle de freinage. Nous devons encore une fois tricher. Je vais donc trouver cette sélection dans une autre fonction que nous avons utilisée, et la copier à partir de là. Je pense que nous l'avons utilisé dans les salles de campagne. Je pense qu'à cause de mon zèle pour le montrer, j'ai oublié une étape Nous allons vérifier le point. Nous avons obtenu tous ses points. Oui, c'est ici. Pour chacun de ses points, nous devrions nous adresser aux voisins. Alors, placez Cross Cross à côté. Pourquoi et croiser les points adjacents, puis nous devons boucler ces points. Je vais le connecter. Et celle-ci est la pièce, comme la croix adjacente, nous vérifions, c'est une pièce, pas le carrelage. Pas les coordonnées de la tuile d'où nous venons, mais la croix adjacente. Parce que nous savons que le carrelage d'où nous venons est un couloir ou un balcon, pas un couloir, une zone isolée ou un balcon. C'est pourquoi nous avons maintenant besoin de la croix adjacente et de la croix adjacente. Dans ce cas, toutes les portes doivent également être adjacentes à une croix, et non aux coordonnées de la pièce. Oh, nous examinons tous les balcons et les zones isolées. Nous obtenons les coordonnées de chaque zone segmentée. Nous vérifions les voisins et lorsque le voisin est une pièce, nous l' ajoutons à la chambre d'index. Nous avons expliqué les choses ici. Maintenant, nous pouvons réellement obtenir la direction car depuis le nord-est au sud-ouest, nous connaissons la direction du mur. Je vais donc faire l' affaire avec un select. Comme vous pouvez le constater, cela ne fonctionne pas. Encore une fois, j'ai des options pour m'éloigner de toutes les directions. Je vais prendre la dernière sortie. Je vais choisir à partir d'ici. Je vais relier la dernière sortie et me diriger vers nord-sud-est ouest, nord-sud-est ouest. Honnêtement, je ne pense pas que nous allons utiliser cette variable du tout, mais pourquoi ne pas l'avoir ? Qui sait comment vous allez penser pour améliorer ce programme ? Maintenant, il ne reste plus qu'à créer les portes. Et pour cela, nous allons avoir besoin de deux variables locales. Ils seront à nouveau le point final et la direction à prendre. Mais ceux ici ont toutes les informations sur toutes les portes. Si nous allons créer les locales, c'est parce que nous allons filtrer uniquement dans cette catégorie, tout ce que nous créons ici. Nous pouvons donc les utiliser. Pour trouver le style approprié et obtenir la bonne direction de la porte et des flèches. Mais nous allons faire défiler la page vers le bas, pour accéder aux variables locales, et nous allons en ajouter deux nouvelles. Appelons la première porte. Il doit s'agir de coordonnées de type point et l'autre d'actions , de direction. Et nous allons les amener ici à la fin. Et ajoutez exactement les mêmes éléments que nous avons ajoutés ici. Ça a l'air sympa, ce paquet qui définit des points, mais c'est bon. Maintenant, nous allons continuer. Où allons-nous appeler la création de nouvelles portes ? Trois options s'offrent à nous. Nous avons la possibilité de créer juste après cette boucle f, nous avons la possibilité de créer ici ou ici. s'agit de la boucle fd qui Il s'agit de la boucle fd qui contient toutes les tuiles, des coordonnées, mais disons toutes les tuiles présentes dans ces deux tableaux, qui sont des tableaux de nombreuses Ils ont des listes de coordonnées. Donc, si nous l'ajoutons à un autre endroit, cela signifie qu'au final, il fonctionnera, il essaiera d' ajouter les tos autant de fois que tous ceux-ci le sont. Nous l'avons ajouté aux coordonnées ici, ce serait encore pire parce qu'il multiplie ce chiffre par le nombre de tuiles qu'il a contractées Ray, en fait, nous avons utilisé un tableau. Donc, le moins de mal que nous puissions faire est de l'ajouter ici, car pour chaque boucle que nous avons créée, tout cela demande beaucoup de calculs. Alors ouvrons nos portes. Voilà, allons-y. Pour chaque boucle. Maintenant, on peut y faire face. Je suis désolée. Nous n'avons pas besoin de fermer la zone adjacente. Nous devons le trouver dans le donjon. Trouvez. Et nous allons obtenir l' itinéraire et nous allons l'ajouter comme vrai, comme ceci. Ce que nous allons ajouter comme vrai sera la direction dans laquelle l'index sera obtenu. Nous allons donc ajouter la direction en obtenant l' index car ces deux tableaux correspondent l'un à l'autre La prochaine chose que nous devons faire, ce sont les flèches pour chiens. OK. OK. Plus bas et aussi à la porte. Comme nous avons besoin d'un enfant, alors obtenez des décorations pour des décorations par rapport à un ravageur et un. Et dans cette direction, nous allons relier ceci ou getter Et c'est ce qui devrait être le cas. Allons jouer. La porte ici. Pas de porte ici. Je suppose Ils connectent ça. C'est toujours pareil, n'est-ce pas ? Dans les portes. Est-ce que c'est le cas ? Dans les zones des portes. C'est ici. Recommencez. Non Porte. Hein ? Découvrons-le. prie. Oh, allons vérifier notre code. Nous commençons donc, nous ajoutons que le faucon est isolé, nous revenons sur les fractures, trouvons une croix adjacente, nous ajoutons à la salle d'index Continuer à ajouter à cela pose un problème car si nous ajoutons la même pièce, oui, si nous sommes la même pièce, la même pièce comporte deux zones isolées. Disons une zone isolée et un balcon, puis il sort, il a trois portes , cela ne s'ajoutera pas, mais nous devons réinitialiser cette salle d'index. Nous allons donc l'entendre avant de sélectionner un nouveau domaine. Maintenant, nous ajoutons à l'exo que cela ne poserait pas de problème, le problème que nous avons rencontré. Vous créez des érections. Ajouter des portes. Ici, nous obtenons les portes, nous obtenons la direction de la porte. Ensuite, nous actionnons les flèches pour qu'elles fonctionnent. Celui-ci devrait avoir une flèche ici. Ce n'est pas le cas. Les flèches sont pas non plus. OK. Vous voyez ce qui s'est passé ici, donc c'est le nord. Ce n'est pas le cas non plus vers le nord. OK. Donc, en gros, c'est ici. Nous n'avons pas fait le contraire parce que lorsque le voisin survole une direction, nous avons besoin de la direction opposée Oui, bien sûr, c'est logique. J'ai économisé. Et cette fois, nous avons des chiens. Une zone isolée. Ouais. Ce n'est pas une région isolée. C'est parce que nous l'avons ici, qui est une boîte spéciale. Donc, entre ceci et cela, il considère qu'il y a un blocage. Il s'agit donc d'une zone isolée, et c'est une zone isolée. Mais nous utilisons également les blocs spéciaux. Je travaille donc en étroite collaboration avec ce que j'ai dit. Nous avons donc des portes partout. Nous avons une porte ici. Nous devrions en avoir un ici. Nous avons des ventes un peu hautes, un peu enfoncées dans le mur. Nous pouvons le fixer rapidement à nos décorations, les abaisser. 340. 30. Ce sont tous les 30. Ce 30 éd. H. Oui. Nous allons regarder d'en haut, donc ce problème. C'est trop. Je vais deviner pour 20. H. Cliquez et sauvegardez. Encore une fois, de peur. Ça a l'air bien. C'est bien comme ça. Mais nous avons des portes, et nous en avions une au milieu des nôtres. Je pense que nous devrions le faire dans le prochain. Je te vois alors. Au revoir pour le moment. 45. Relier les murs de donjon: Bonjour et bienvenue sur Game Design Workshop, qui véritable cours de création d' ARP Procedural Dungeon Action sur le moteur 5 création d' ARP Auparavant, nous en avions fini avec notre fonction de porte unique. Nous corrigeons également certaines erreurs survenues au cours de celui-ci. En fait, nous avons ajouté un indice clair de notre chambre dans la première quatrième boucle avant de commencer les coordonnées de chaque zone segmentée Ensuite, nous avons inversé les directions parce que nous avions des voisins. Ensuite, nous utilisons le réseau de portes que nous créons à l' intérieur pour obtenir la direction et l'ajouter à la tuile spécifique. Nous avons actionné des flèches et nous avons ajouté notre porte. Maintenant, recommençons, mais pour nos couloirs cette fois, qui seront en fait presque exactement les mêmes. Nous allons nous rendre à notre réception, les zones à porte unique, et nous allons les dupliquer et les appeler zones. Ce que nous allons changer, c'est supprimer ces deux éléments. Nous allons supprimer le temple A, et nous allons simplement ajouter nos couloirs a A. La compilation et la sauvegarde. Ajoutons-le également au van gra. Zones de couloir, portes. Compilez et sauvegardez, et jouons. Maintenant, deux portes ici, un instant de course, mais ça marche Maintenant, pourquoi a-t-il ajouté deux portes ici et n'a-t-il pas activé le C ici ? Parce que la différence avec les collidors, c'est que nous n'en voulons qu'un dans chaque couloir Dans chaque segment de couloir, chaque pièce qu'il relie, nous ne voulons qu'une seule porte, alors qu'il en ajoute maintenant autant que possible, car c' est ainsi que nous avons codé cette partie. Comme vous pouvez le voir ici, il y a un bug avec la branchie C, mais nous allons corriger ce problème Arrêtons notre jeu, passons au générateur de mai, franchissons les portes du couloir et examinons les règles. Dehors. Chaque fois que nous courons pour une salle de pause, un couloir différent. Nous ajoutons une porte et une direction. Donc, la première chose qui peut arriver, c'est que la même coordonnée aurait deux directions. Ce que nous allons faire pour résoudre ce problème , c'est nous connecter et ouvrir les portes fois que nous aurons fini de tout ajouter. Nous allons l'ajouter ici, qui sera pour chaque adjacent. Jouez. Cela nous a un peu arrangé les choses. Nous avons une porte ici, nous avons une porte ici, mais nous avons un CDL ici, c'est le problème que nous avons détecté auparavant Je suppose qu'il y a une certaine direction à prendre là-dedans. Il se peut que nous n'ayons pas mis le bon remorqueur. Ou c'était ça ? Ouest ouest est ouest. Donc, ce sed qui était censé être le plus facile n'a pas le bon tag et se bloque. Encore une fois, et maintenant c'est réparé. Et si nous appuyons sur Play, et sur Doors Doors. Penser parce que c'était écrasant n'a rien sauvé. Générateur H, les portes n'ont pas sauvegardé l'ajout ici. Je l'ai ajouté à nouveau. C'est pourquoi nous devons toujours économiser en permanence. Maintenant, nous avons deux chiens, un seul par couloir. C'est son lit. D'accord. Cela semble correct. C ici. C'est ce couloir ici. Nous avons des portes partout. Maintenant, tous nos labyrinthes et pièces sont connectés les uns aux autres et joueur peut naviguer dans tout le labyrinthe et dans toutes les Maintenant que nous en avons fini avec les portes, augmentons notre charge. En haut, et je vais copier ce truc ici, base. Disons 85, c'est beaucoup. Il s'agit également de quatre boucles. C'est encore une fois beaucoup d'actions. Maintenant, quelle serait notre prochaine étape dans la construction de notre donjon ? Eh bien, notre prochaine étape serait de déterminer les murs extérieurs, quels murs sont extérieurs et quels murs sont intérieurs. Donc, par là, je veux dire que ces murs d' ici sont ceux où nous oublions. Et celui-ci et celui-ci sont des murs intérieurs, alors que celui-ci ou celui-ci est un mur extérieur. Nous voulons que les accessoires intérieurs les remplacent par des accessoires, des croix, des tables, des chaises, des poignards, une énorme quantité d'accessoires qui bloqueront essentiellement bloqueront Mais nous pouvons tous, certains d'entre eux, vivre tels qu'ils sont. Ça va être un hasard. Va faire ça. Passons à notre générateur de labyrinthes. Arrêtons le gameplay et créons une nouvelle fonction que nous appellerons murs extérieurs anti-vent, dont nous découvrirons que c'était aussi le cas pour les murs internes, mais oui, c'est un bon nom. Non. Encore une fois, la première chose dont nous aurons besoin, ce sont toutes les coordonnées de nos donjons Et nous allons récupérer les clés. Bien sûr, nous allons partir d'eux. Pour chaque boucle. Et nous allons trouver la croix adjacente à chacune d'elles. Et nous allons payer une boucle pour chaque boucle à partir de la croix adjacente. Maintenant, ce que nous voulons, c'est demander si la croix adjacente fait partie du donjon Nous allons donc contenir, demander qu'elle contienne la carte. La carte sera notre donjon. Et nous allons installer une branche. Commençons donc par la logique selon laquelle lorsque nos voisins ne sont pas à l'intérieur du donjon, c'est un mur extérieur dans cette direction du voisin, c'est un mur extérieur Pour le faire. Nous allons avoir besoin des murs, en gros. Non, je comprends. Désolé, trouvez la bonne pile, c' est-à-dire la tuile que nous examinons. Ce n'est pas le voisin. C'est le carreau que nous examinons. C'est le plus important car le voisin n'est pas valide. Nous allons récupérer les murs. Un tableau pour cela. Murs. Il n'y a pas de tableau pour ça. Je suis désolée. Je voulais dire que nous avions besoin de l'enfant. La décoration porte sur les murs, pas sur le carrelage. Nous avons donc besoin d'un enfant. Nous allons acheter des décorations. Nous allons avoir un enfant. Et nous allons transformer les décorations en fonte pure. Et nous allons avoir des murs, et maintenant nous avons les murs. Mais outre les murs, nous avons également besoin de la direction. Nous avons donc ce S EW, et nous devons l'activer , et nous allons trouver l'interrupteur. Il s'agit de l'interrupteur opposé. On peut faire le contraire ici. Ici. Je connecte ça. Cela devrait être au nord, au sud, à l'est et au sud-ouest. En ce moment, nous ne voulons pas le contraire. Et nous allons passer à travers chaque mur. Nous allons choisir la fausse branche car c'est à ce moment-là qu'elle n'appartient pas au donjon Et nous allons créer un tableau. Non. Pour le promouvoir en variable. Cliquez sur Promouvoir la variable, en exécutant ces murs externes. Débranchez, ceci et apportez les murs extérieurs. Je vais ajouter ce mur. Je vais créer un autre tableau de types directions. Je paye donc dans toutes les directions. Je vais faire ériger un mur intérieur. Et aussi, je vais ajouter ces informations. Juste au cas où nous en aurions besoin. Il se peut que nous voulions manipuler. Nous souhaiterons peut-être modifier le maillage statique de tous les murs. Il se peut que nous souhaitions en modifier certaines. Vous pouvez faire un résultat aléatoire, cela changera certaines d'entre elles pour qu' elles prennent une forme qui produit du va, puis nous vérifierons si ce mur se trouve dans une zone spéciale ou dans une zone isolée, où se trouvent les blocs de lave. Quoi qu'il en soit, je pense que c'est un bon point d'arrêt. C'est ainsi que nous obtenons les murs extérieurs, et nous allons continuer dans le suivant avec un peu plus de code ici et en ajoutant quelques éléments visuels supplémentaires. Au revoir pour le moment. À la prochaine. 46. Décorations murales: Bonjour et bienvenue dans le cours de création de Game Design Workshop, Rail Engine Five, Procedural Dungeon Action Rail Engine Five, Procedural Dungeon Action at PS Auparavant, dans la dernière leçon, nous avions terminé avec les portes de notre couloir. En fait, nous avons copié les portes individuelles, et nous avons juste changé certaines choses. En fait, une chose. Nous faisons fonctionner le réseau de portes pour ajouter des portes ou découvrons chacune des portes adjacentes au lieu de parcourir tous les couloirs une fois que nous avons terminé Nous avons également commencé à définir la fonction des murs extérieurs. Nous avons en fait fondé tous les murs extérieurs et leur orientation et les avons ajoutés à une liste. Et comme nous l'avons dit, nous allons continuer à ajouter quelques éléments visuels supplémentaires à notre labyrinthe Oh, nous allons passer à notre pile. Nous allons aller dans notre fenêtre d'affichage, et essayer de masquer cette énorme lacune ici. Fais-le. Nous allons juste cliquer sur un mur. Nous allons juste ajouter du riz astatique. Maille. En fait, nous n'avions pas besoin de cliquer sur un mur. Nous avons dû cliquer sur la racine. Nous n'en faisons donc pas une racine, il suffit de la toucher. Ces murs ne devraient pas être pertinents par rapport aux autres murs. Ils ne devraient pas être des enfants. Ils devraient être les enfants de la racine. Maintenant, pour ce maillage statique, nous allons aborder la végétation comme la végétation. C'est... c'est de la végétation démoniaque. C'est un peu décalé. Redimensionnons-le. En fait, faites également la rotation. Mettons-le quelque part ici, peut-être un peu en façade. Ce que nous voulons, c'est juste cacher ces lignes ici. Oh, on fait un petit peu, peut-être que Lock est 1.1. C'est un peu plus bas. C'est le fait que c'est plus de cils, plus épais. Je serai plus près de la ligne, donc peut-être même en haut de la ligne. Ouais. Il. Nous allons le copier-coller. Est-ce que je vais changer de rotation ? Un. Encore une fois. La précision dépend de vous quand c'est beau, c'est le visuel minimal, donc nous n'aurons pas beaucoup de temps. Visuels. Hein ? Je pense que c'est suffisant. Maintenant, donnons-leur quelques tags. Donc, ce côté est. Donc ce E, ce côté, nord-sud. Il y a donc un S. Ce côté ouest. W, et c'est ce côté. C'est bon. Passons maintenant à notre générateur Ms et à nos beaux murs extérieurs. Puisque nous avons les éléments externes, nous pouvons simplement utiliser notre tuile ici Nous n'avons pas besoin de faire les décorations car maintenant nous sommes en carrelage. Nous pouvons avoir besoin de le faire pour l' obtenir et réessayer. Sélectionnez ceci. Nous sommes , pas c'était pour. Je ne sais pas à quel âge. Non , oui, West. O. D'accord. Maintenant, choisissez-les tous. Passons au script. Apportons-les, ajoutons-leur quelques valeurs et promouvons une variable. Appelons-les également en D pour les déchets de jauge. Et c'est ainsi que nous conservons la même erreur. Donc voilà, revenons à ma génération et sortons de là. Jusqu'au bout. C'est le cas et nous allons le faire et nous allons le faire pour à la fin. Les murs, je vais mettre le jeu sur faux. Je vais revenir à une vignette, les retrouver toutes et définir une partie cachée. Vrai. Maintenant, si nous jouons, nous ne devrions rien voir car cette fonction n'est pas en cours d'exécution. Donc, tu sais, l'exercice. Maintenant, nous avons notre feuillage, mais nous en avons partout. Donc la raison en est que j'ai juste tout mis en mode masqué, n'est-ce pas ? Ce que nous voulons faire, c'est obtenir la direction vers et depuis cette chaîne. Allons-y. Profitez de cette année, comme nous l'avons fait précédemment sur de nombreux sujets. Je vais installer la succursale ici. Et si c'est vrai, ne montrez que le feuillage. Maintenant c'est correct. Notre macis a du feuillage. C'est bien plus que cela. C'est pourquoi je vais raconter cela. Ça va bien se passer. Nous avons terminé avec ce détail. Le prochain détail que nous devons faire est de remplacer les murs intérieurs par des murs d'un type différent. Oh, pour ce faire, revenons à notre générateur principal. Allons à notre succursale d'armes. Sur notre site, trouvez des murs de sortie. Les murs, en fait notre véritable branche. Non, nos chutes. Cela signifie que cela appartient au donjon, et nous allons poser une autre question S'il appartient au donjon, est-ce aussi une pièce peut-être ? Parce que s'il s'agit d'une pièce, nous ne voulons pas changer le mur. Nous voulons avoir les murs de la pièce. Non, nous allons apporter le Nous allons apporter toutes les pièces, tous les appels téléphoniques, qui est un point final, et nous allons juste voir s'il ne contient pas ceci, pas les voisins, mais cet élément, qui est la clé que nous testons. Donc, c'est la clé d'une pièce. Si c'est une chambre, on ne fait rien. Si ce n'est pas une pièce, nous allons retrouver les murs que nous avons ici. Nous allons à F.-O Walls, qui est une pièce. Nous allons placer le bon mur dans la bonne direction, nous devons donc le copier . Élisez un nœud. Ou ici. C'est le connecter à l'index de la boucle de fourrage qui se connecte à la fine croix adjacente. Et nous allons passer à un Cs u et à ces deux, nous le connectons ici et nous sélectionnons une branche. Maintenant, bien sûr, nous allons définir un maillage statique. Pour le maillage statique, nous allons être ectés à partir d'un entier aléatoire dans la plage. Ce serait de zéro à trois parce que nous avons quelques éléments supplémentaires. L'une d'entre elles serait ce tableau combiné, je pense. C'est trop petit. Ce 1938 A, trois, quatre, utilise celui-ci. Ensuite, 9d57 47a7 combiné. Je suis presque sûr que nous en avons eu d'autres. OK. Ici, nous sommes combinés 0d44 c17 Rappelez à c17. Et nous allons simplement utiliser le mur combiné que nous avons. Il ne s'agira donc que d'un mur. Maintenant, une autre chose que nous faisons ici, mais que nous expliquerons plus tard le moment venu, c'est que lorsque nous jouons, et que notre personnage est derrière quelque chose, nous devrions être en mesure de voir une figure de notre personnage. Et pour ce faire, nous allons jouer un peu avec la valeur stand sll de la profondeur atomique, c'est ce que l'on appelle le rendu personnalisé de la profondeur en gros Nous n'en parlerons donc pas beaucoup pour le moment. Nous en reparlerons le moment venu, mais nous devrions activer les options dès maintenant pour ne pas avoir à revenir. Lorsque nous sommes sur des murs intérieurs, nous voulons essentiellement voir le bas de notre personnage, et certains atouts sont un peu plus grands, donc à travers eux, notre personnage se tait. Si nous le faisons, nous allons me retrouver statique. Nous allons définir une profondeur de rendu personnalisée. Vrai. Nous allons le connecter ici. Et nous voulons également définir la valeur du crayon. Je pense que c'est zéro. Si ce n'est pas le cas, nous allons le vérifier par la suite, le moment venu, nous reviendrons et modifierons cette valeur. Maintenant, si je précompile et que je joue, nous avons nos boîtes. Nous avons nos autres boîtes ici, les murs intérieurs sont devenus un peu plus intéressants. Et notre donjon contient des accessoires. Certains d'entre eux se chevauchent un peu, et j'ai remarqué que cela se produit également avec les coins de certains murs Peut-être devons-nous pousser les murs un peu plus loin. Mais je pense que c'est bien aussi. Ce que nous pourrions faire pour résoudre ce problème, c'est simplement accéder à nos décorations et à l'emplacement, par exemple, ceci sur x, ce serait un quatre ou cinq, peut-être. Oui, celui-ci, quatre ou cinq. Celui-ci. Pourquoi ? J'ai fait celui-ci. À. Peut-être que cela corrige un peu le problème. Zut. Oui, le coin n' est plus visible. Ici, il est équivalent à celui en bois. Bien, c'est bon. Hetils, je pense que si nous jouons avec les valeurs, nous pouvons trouver une valeur meilleure pour Mais pour l'instant, nous allons continuer à construire notre générateur M. Il y a encore beaucoup à faire. Nous allons passer à la suivante . Au revoir alors. Au revoir. 47. Ajustements des flèches directionnelles: Bonjour et bienvenue sur le moteur Game Design Workshop, les cinq cours de création Procedural Dungeon Action Apes Auparavant, nous avions ajouté nos magnifiques visuels de ces plantes ici, autour de nos pâtés Et nous avons terminé le code d'ajout, en les rendant visibles lorsqu' ils se trouvent sur les bords, lorsqu'ils se trouvent dans le périmètre des murs extérieurs, et nous avons en fait changé les accessoires des murs intérieurs, également pour qu'ils soient une variante abdomique des accessoires que Maintenant, dans celui-ci, nous allons faire, et je vais appuyer sur Play pour le montrer. Nous devons corriger les flèches du périmètre. Cela signifie que certaines flèches sont correctes, autres non. Dans ce cas, tout était presque correct. Ici, par exemple, nous avons une flèche qui pointe vers ici, mais nous pouvons réellement y accéder par ici. Et cela ne s'est pas produit beaucoup dans celui-ci, mais c'est un problème. Nous ne devrions pas avoir de flèches pointant vers des endroits où nous ne pouvons pas aller. Nous réglons ce problème. Créons une nouvelle fonction qui parcourra l'ensemble du labyrinthe et testera la présence d'une collision avec le tracé de la ligne Nous savons donc si cela ne peut pas fonctionner. Comme il s'agit de la forme finale de notre DG, la mise en page ne changera plus. Créons donc une nouvelle fonction. Appelons ça des choses. Aros. Et en fait, dans cette fonction, nous allons faire quelque chose de différent. Eh bien, c'est presque différent. La façon dont nous allons manipuler nos variables, pour changer nos flèches de direction. Nous allons créer un réseau de lingots et un tableau de direction, et comme cela correspondra entre eux, un réseau de points également Nous serons en mesure de fixer les directives indépendamment du nombre de personnes ou de nous tromper en cas d'égalité En gros, c'est un peu la même chose que nous faisons toujours d'une manière différente. Il ne s'agit donc pas d'optimisation ou pas pour le moment. Il s'agit de montrer différentes techniques. Oh, nous allons obtenir notre variable de donjon. Nous allons chercher nos clés. Juste des clés. Et nous allons passer en revue chacune d'elles ? Parce que nous allons parcourir tout le donjon, et nous allons trouver des voisins adjacents Et nous allons également suivre chacun d'eux . Comme ça ici. Voici la première question. Ce voisin appartient-il au donjon ? Nous allons vous demander s' il en contenait ? Le donjon Et si ce n'est pas le cas, nous allons créer une variable locale, une variable buling, qui sera un tableau Je vais appeler, disons ces taureaux. Et quand ce n'est pas le cas, nous allons ajouter des chutes, bien sûr, fausses, car il ne contient pas le donjon, donc il n'y a pas d'accès Du faux. Si c'est vrai, nous allons nous baser par canal. Nous allons nous concentrer sur la caméra, pas sur la visibilité. Pour le point de départ, nous allons avoir besoin du voisin. Nous allons donc le trouver dans le donjon. Un lieu. Nous allons en fait ajouter une hauteur Z, S 25. C'est notre point de départ et notre fin est le bloc en cours de vérification. Je vais le connecter ici. Nous l'avons déjà fait, une fois de plus. Je vais juste coller. Connectez-vous ici, et c'est la fin de notre fil. Nous allons ouvrir une succursale. Je veux apporter ça ici. Lisez-le à haute voix. Ici. Cela va provenir des deux branches. S'il touche quelque chose, encore une fois, nous n'y avons pas accès, donc ce b sera fermé. Si nous n'avons pas cliqué sur Je ne l'ai pas fait, passez à l'action. C'est la principale différence, n'est-ce pas ? Non. La prochaine chose dont nous avons besoin, ce sont les coordonnées. Mais nous allons créer un autre tableau. Tous ces points ou ports ou quoi que ce soit d'autre. Ça va être du genre à gagner des points. OK. Ensuite, nous allons y ajouter des branches jusqu'aux murs. Peu importe, car ils en ont tous besoin, même si c'est faux, nous avons besoin des coordonnées pour désactiver cela. Et les coordonnées seraient le bloc dans lequel nous sommes, la tuile que nous vérifions. Enfin, nous avons besoin d'une orientation. Nous allons ajouter un autre tableau. C'est ce que j'appelle. Érection. Nous allons simplement mettre un type d'érection, et nous allons ajouter le besoin de sélectionner Nous allons copier la sélection depuis un autre endroit. Nous l'avons ici. Trouvez un externe. Et nous allons en connecter l' indice pour chaque boucle aux voisins ? Parce que selon les voisins, nous avons notre nord-est sud-ouest. Maintenant, voici les trois variables. C'est une façon différente de procéder cette fois-ci, mais nous avons une liste de bions, une liste de points et une liste de directions Non. Comment allons-nous indiquer à chaque bloc de définir ses directions appropriées ? La façon dont nous l'avons configuré actuellement n' était pas unique, mais nous avions de nombreuses directions dans un seul tableau. Cela signifie que dans chaque bloc, je cours quatre fois la ligne que. Cela signifie que chaque bloc produira quatre fois le même point final, mais cela correspond à quatre directions différentes et à quatre booléens différents Alors, allons-y. Nous le ferons quand nous aurons terminé tout cela, nous allons donc l'appeler dès les quatre premières boucles. Nous allons en appeler quatre autres. Oup. Nous allons connecter nos points de terminaison ici. De cette façon, c'est un peu plus simple. Je pense qu'il s'agit plus d' actions que d'autres moyens. Bref, je vais chercher notre donjon pour obtenir notre tuile Eh bien, trouvez l' acteur sélectionné, l'acteur enregistré, qui est une vignette, et nous allons obtenir l'itinéraire. Et nous allons ajouter Au fait que nous allons l'ajouter, c' est très, très simple. Nous allons obtenir notre variable de bions, et nous allons obtenir notre variable, notre variable de tableau, les bulions et les directions, et nous allons en obtenir une copie Et parce qu'ils correspondent à l'index de nos tableaux, nous déconnectons ici les index Une petite croix de falaise. C'est bon. Ensuite, nous totaliserons les ROs. Ce serait la fonction pour corriger toutes nos directions. Nous l'avons connecté. Maintenant, je ne l' ai pas fait, bien sûr. Corrigez les flèches. Compilez et enregistrez. Jouons et maintenant les flèches sont corrigées. Dans chaque direction que nous sommes censés prendre, il y a une flèche, dans toutes les directions que nous ne pouvons pas prendre. Il n'y a pas de flèche. Génial. Je pense que c' est tout pour celui-ci. Je te verrai le prochain. Au revoir. 48. Masquer les flèches de débogage et créer des torches: Bonjour et bienvenue à l'atelier de conception de jeux et Real Engine création de cinq donjons procéduraux et RPG Auparavant, nous avions terminé avec notre fonction de flèches fixes. Nous avons en fait utilisé une méthode différente cette fois. Nous avons stocké un tas de pulions, un tas de points et de directions, les tableaux correspondants, et dans notre système de traçage de lignes, qu' il y ait un bloc ou non. Et quand nous avons terminé, nous avons cumulé nos points et demandé tous nos acteurs d'apporter les modifications correspondantes. Maintenant, nous en avons en quelque sorte terminé avec la partie information de l'initiation, avec la gestion des données et tout le reste. Une dernière chose pourrait être de masquer toutes les flèches. Passons donc à notre dossier BP. Passons à notre graphique des événements cliquez avec le bouton droit de la souris pour créer un événement de tempête. Nous allons donner un nom à cet événement. Masquez toutes les flèches. À partir de là, nous allons prendre notre flèche nord, nous allons prendre notre flèche est. Nous allons chercher notre flèche ouest et notre flèche. En fait, nous devrions obtenir le numéro du carreau également obtenir le numéro du carreau parce que nous voulons le masquer. Non, nous allons le configurer et nous allons tout y connecter. Et le nouveau secret sera vrai. Maintenant, voyons si nous avons du texte dans la décoration. Ne le crois pas. Nous n'avons rien à cacher ici. Nous allons compiler. Enregistrez et compilez. Enregistrez et compilez toujours. C'est la troisième fois que cela se produit. Et nous sommes de retour, et nous allons compiler, enregistrer et compiler, toujours enregistrer et compiler, car au cas où ça se passerait, nous aurions dû enregistrer Maintenant, ce que nous allons faire, c'est retourner à notre générateur de labyrinthe, créer une nouvelle fonction, celle-ci Allons chercher notre labyrinthe. Cette fois, nous allons obtenir les valeurs parce que les valeurs sont les tuiles, et nous allons passer à la boucle. Pour chaque boucle, nous allons appeler des flèches. Alors maintenant, appelons-le dans le graphique. Flèches. Pas de compilation rétroactive. Jouons. Et il doit cacher les enfants. De plus, propagez aux enfants, cela masquera les rendus de texte qui se trouvent à l'intérieur des flèches Nous avons vu WS et tout est resté, et maintenant nous avons davantage une vue de jeu Appuyons dessus. Il est enfin temps de le voir. Maintenant, nous ne commencerons pas par le soleil parce que nous devrions d'abord éclairer le labyrinthe, parce que si je commence à jouer avec la visibilité du soleil dès maintenant et que je la règle sur un Ensuite, lorsque nous regarderons le labyrinthe, nous ne verrons pas grand-chose C'est bon, mais restons-en un pour le moment, il fait plus sombre comme ça devrait être C'est vrai. Ce que nous allons faire maintenant dans cette leçon, c'est commencer à éclairer notre labyrinthe avec des lumières personnalisées auxquelles nous répondons Nous allons passer aux plans des dossiers. Nous allons cliquer pour créer un nouveau dossier. Appelons ce dossier props. Entrons dans ce dossier. En fait, nous pouvons également déplacer l'ascenseur ici, et nous pouvons déplacer le gros coffre également ici. Et nous pouvons également déplacer l' intro de BP ici. Donc, pour la génération des labyrinthes, en fait, sont les trois tuiles dont nous avons besoin, et les autres sont des accessoires qui font des choses pour nous Nous allons donc à nouveau cliquer avec le bouton droit et sélectionner la classe d'impression. Je vais sélectionner l'acteur. Ce sera le porche de BP. Ça va être une torche. Ouvre-le, je vais l'ancrer ici. Nous allons avoir besoin d'une quête initiale. Nous allons avoir besoin d' un feu ponctuel. Et bien sûr, nous allons avoir besoin d'un système de particules. Pour le système de particules, nous allons utiliser la cascade car nos particules sont en cascade pour le feu. Et c'est tout à partir des composants dont nous avons besoin. Je vais passer à la quête statique. Je vais choisir un porche. Je vais sélectionner le Je peux voir parce que c' est celui-ci est une grande torche, une petite torche. Je vais sélectionner ce tube pour lit en rangée. Tube de lit Row. D'accord ? Maintenant, où est-il ici ? Ce dont nous avons besoin, c' est de relier la particule au maillage statique, donc juste au cas où elle se déplacerait ensemble. Je ne vais pas faire de même avec le feu ponctuel , mais je vais faire de même pour le feu ponctuel également. Et sélectionnons d'abord le système de particules. Utilisons le modèle. Nous voulons le feu P. Elle est un peu grande. Ça fait quatre. Hein ? Changez le stylet de direction. Oui J'ai un axe 92. Ce qui, je pense, est le pitch. Ensuite, je vais passer à Point Light. En fait, je vais laisser les choses comme ça parce que plus tard, nous allons créer du code qui donnera l' impression qu'il scintille, etc. Pour le moment, nous voulons simplement l'ajouter à notre fumier, dans notre donjon Revenons au générateur Mz et créons une fonction Appelons ça des lampes P. Et maintenant, la question se où allons-nous placer ces lumières L'endroit où nous allons les faire apparaître est à côté des portes, par exemple à gauche et à droite ou l'une d'entre elles, ou aucune d'entre elles. Il est possible que certaines portes ne soient pas éclairées. Nous allons donc avoir besoin de la fracture de la pièce. Je vais donc prendre une chambre S. Je vais trouver une chambre. Et à partir de là, je vais m'arrêter. Et à partir de là, je vais faire une pause. À partir de là, je vais faire une boucle. Nous le faisons donc pour chaque coordonnée de pièce. Maintenant, il faut d'abord trouver l'acteur. Pour cela, nous avons besoin de notre donjon. Et de la part de cet acteur, nous avons vraiment besoin de nos décorations. Les acteurs reçoivent en fait des décorations. Et à partir de là, nous allons obtenir et à partir de là, nous allons obtenir des décorations Cust Je vais en faire une pure poussière. Ceci. Maintenant, pour les décorations en F, nous devons vraiment créer des points de scène en T. Passons à notre plan de décoration. Passons à notre fenêtre d'affichage. Je vais fermer les flèches ici, et je vais ajouter une scène qui, comme vous pouvez le lire, est juste un composant doté d'une transformation qui peut être attachée ou associer d'autres composants également. C'est juste un point, en gros, un point que nous pouvons définir. Je vais choisir la scène, et je vais la déplacer ici. Peut-être de gauche à droite. Juste pour celle-ci, je vais simplement la remplacer par une porte, pour la trouver, je vais sélectionner à nouveau la scène, ou presque la bonne. Je vais le placer ici, peut-être ici. Bien. Je vais copier la scène, la dupliquer. Il nous faut une croix, et elle marquera le mur est. Ce serait le mur est A. À gauche. Donc EW L, et ce serait tout à fait correct. Maintenant, changeons cela pour ce qu'il était. Je dois le sélectionner ici, trouver dans le navigateur, laisser derrière le mur et le glisser-déposer ici. C'est bon. Je vais chercher les scènes. Je vais les dupliquer, et je vais les déplacer. Ils sont dans la bonne position. Ils R. Quand nous apparaîtrons, nous serons meilleurs. Je vais donner un nom à ça. R un. Ce sera un W W L. Je vais faire de même pour le nord et l'est. Je vais ajouter. Pour le déplacer vers ici. Et je vais vérifier le décalage sur l'autre, qui était de 140 alors que le suivant était de 145. Ce n'est pas grave s'ils ne sont pas symétriques car certains d'entre eux apparaîtront, d' autres ne le seront pas Je vais sélectionner à nouveau l'original, n'est-ce pas ? C'est ici. Je vais en mettre 140 ici. Je vais le dupliquer en met 45. Et je vais l' appeler le nord. Le remorqueur. C'est le sud. C'est donc le mur sud que ce mur a laissé. Je vais les dupliquer. Et je vais le faire et il ne restera que le mur qui reste, qui est en fait opposé. C'est la bonne. C'est celle de gauche. Cela s'est également produit W. L'autre W L. Peu importe, mais pourquoi pas ? Oh, je vais compiler et enregistrer, et nous allons le laisser ici pour celui-ci. Nous allons faire une pause et passer à la suivante. Au revoir. 49. Lumières de la torche de reproduction: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le véritable cours de création d' ARP d'Engine Five Procedural Dungeon Action Auparavant, nous avions commencé avec notre fonction Lights Maze. Nous avons créé le début de l'algorithme, pièces que nous recherchons et la manière dont nous en tirons les informations. Et nous avons également ajouté quelques points à notre plan de décoration pour y fixer les lumières Dans le même temps, nous avons également caché nos flèches et créé le plan de la torche Maintenant, nous allons continuer. Passons à notre générateur de labyrinthes, et passons à nos lampes de labyrinthe fonctionnelles Peut-être qu'avant cela, recommençons une autre tâche fastidieuse. Ajoutons quelque chose ici parce que je sais que ce n'est pas le meilleur moment, mais ce n'est pas le meilleur moment, mais nous devons le faire. Et cette tâche fastidieuse consiste à ajouter les remorqueurs dans les scènes. Non Voici les scènes du nord. Nous allons donc aller remorquer chaque étiquette. Nous allons ajouter. Comme vous pouvez le voir, je peux sélectionner les deux, et cela va les ajouter aux deux. Je vais sélectionner ceux du sud, je vais ajouter un remorqueur, je vais sélectionner ceux de l'est, ajouter le remorqueur E, et ceux de l'ouest sur le remorqueur élire W. Bien, la tâche studieuse est de revenir aux choses les la tâche studieuse est plus Maintenant, comment savoir où se trouve la porte ? Si vous vous souvenez, si nous obtenons un A pour nos murs, nous partons de chacun d'eux pour faire une boucle. Nous pouvons récupérer les remorqueurs. Et nous pouvons vérifier s' il contient l'article, ce qui distingue réellement les majuscules et minuscules. Alors, lorsque nous avons ajouté ce remorqueur aux portes, comment l'avons-nous ajouté ? Trouvons cette fonction, qui se trouverait dans les décorations intérieures et c'était un D O R majuscule Nous allons donc aller ici, D 00 R majuscule Maintenant, nous n'avons pas besoin de savoir exactement où se trouve la porte, dans quelle direction ou autre. Nous pouvons simplement vérifier quelle porte porte une étiquette. Et à partir de là, parce que nous savons que le premier remorqueur est notre nord-est sud-ouest Nous pouvons obtenir P de zéro, qui est le premier remorqueur. Ensuite, nous avons besoin d'un ensemble de lumières. Revenons donc aux décorations. Encore quelques tâches fastidieuses. Sélectionnons-les tous. L'ordre n'a pas d'importance, puisque nous optons pour des remorqueurs, je pense que c'est tout. Faisons un tableau. Copie. C'est lui. Ops. Et ils sont huit, donc c'est correct parce que quatre faces, deux sur chacune, huit, vont promouvoir ces deux lib. Ts, ou peut-être des fentes d'éclairage de porte, parce que nous pourrions en ajouter d'autres, qui sait ? Nous allons compiler et enregistrer. Revenons à notre générateur de labyrinthes, et à partir de notre décoration, nous allons obtenir des fentes pour lampes de porte Je vais dans chacune d'elles. Si c'est t, s'il contient la porte, nous allons passer au composant ug En fait, un composant du remorqueur a un tracteur, qui sera le tirant zéro de votre porte Je vais à la succursale, le Ward Loop. Et maintenant, parce que nous allons avoir besoin de faire pivoter la lumière parce qu'elle a elle-même une certaine rotation. Nous pourrions utiliser un système élaboré avec des tracés linéaires et/ou des coordonnées en gras. Mais non, ce que nous allons faire c'est que je détermine les valeurs moi-même, et qui correspond à quelle rotation correspond. Parce que nous n'avons que quatre rotations, en gros. Chaque. Donc, ce que nous allons faire, c'est changer en fonction du badge. Et ce n'est que lorsque c'est vrai. Nous allons avoir quatre affaires. Je vais retirer l'épingle d'exécution, et les affaires seront traitées selon nos instructions. Tout cela se ferait au nord, au sud, à l'est et à l'ouest. Enregistrez, sauvegardez et compilez. Maintenant, je vais créer une variable personnalisée, locale, à savoir la lumière, et elle sera du type rotateur Ensuite, je vais définir que chacun d'eux est Southwest. Et les valeurs sont -90 pour le nord, 0,490 pour le sud, zéro pour l'est et 180 pour l'ouest Ensuite, je vais ouvrir une succursale parce que, comme je l'ai dit, certains d'entre eux auront une lumière, d' autres n'en auront pas, et je vais le faire, et je vais organiser un et je vais le faire, cours d'acteur. vais fendre la cuillère je vais relier la pourriture légère À la rotation. Et pour le lieu, nous avons juste besoin du lieu, du mot emplacement de notre scène. Nous allons donc obtenir la localisation et la connecter ici. Et nous devrions sélectionner la classe, la classe serait Torch Une autre chose dont nous avons besoin, c'est quelque chose que nous n'avons pas utilisé depuis longtemps. Nous avons besoin des acteurs pour détruire. Nous allons ajouter à cette liste les lumières, car lorsque nous créons un nouveau labyrinthe, les lumières sont en fait coûteuses en termes de performances Nous allons donc les supprimer. Allons jouer. Voyons ce qu'il en est réellement. Allons ajouter cette fonction à la fin de cette ligne. Des lumières de labyrinthe, et maintenant on peut aller jouer. Et injectez, et nous avons des lumières. Ils sont trop loin. Certains d' entre eux sont trop éloignés, d' autres non. Ça devrait disparaître. 70 ans, ils sont grands aussi. Revenons-en aux décorations. Disons quels sont leurs points. Ça devrait être 370 c'était bien, je pense, 370 ça Pourquoi ? -70. Cela semble interne. Allons-y, faisons-les d'abord un peu plus petits. Passons donc à leur apparition. Nous n'avons pas besoin de les réduire ici. Nous pouvons simplement les rendre plus petits en général. Lorsque le mâle s'allume, lorsque nous le faisons apparaître, nous réduisons l'échelle de 2,5 55. Revoyons à nouveau à quoi ils ressemblent. Ils sont un peu bas et ils sont un peu éloignés. Nous ne pouvons pas voir le parent ici. Nous ne pouvons pas voir le lien de parenté ici. Bien sûr, nous ne pouvons pas, nous allons avoir besoin de nous tourner vers les décorations et, en fait, avec les valeurs indiquées ici. Je vais en mettre 20, l'autre mouillé. Mets tout pour toi. Celui-ci en vaut 20. Lequel était celui du sud, je pense que c'était trop loin. Oui, pour 20. Et celui-ci aussi ceux de 20 ans, nous n'avons pas touché aux faux Y en a-t-il trop dedans. Peut-être devrions-nous tout changer ici à 30. 160 facilement avec faible, donc 81, 25 30 ou 25280, c'est bon Dans l'autre ? Il y en a cinq. C'est la pire des tâches fastidieuses. Il existe de meilleurs moyens de le faire. Mais c'est ce que nous avons choisi pour le moment. Est-ce que nous réparons tout, tout est réparé, et l'eau du sud. Bien. Compilez et enregistrez, et testons à nouveau. Je pense que c'est un bon lot. Même s'ils sont un peu, peut-être 425. Si vous le souhaitez, vous pouvez le changer en 425, il convient peut-être un peu mieux, mais je ne pense pas que cela sera visible. Donc, je pense que c'est tout pour celui-ci. Je vais te voir ensuite. Au revoir 50. Effet de scintillement de la torche: Bonjour et bienvenue dans l'atelier de conception de jeux, et le moteur de cinq C de création d'AP d'action Procedural Dungeon C de création d'AP d'action Procedural Auparavant, nous avions ajouté nos torches à notre labyrinthe. Nous avons créé le code dans Maze Lights pour faire apparaître nos lumières. Nous avons utilisé le tableau de murs pour obtenir la balise du composant, qu'il s'agisse du nord, du sud ou de l'ouest. Nous avons également vérifié si le mur est une porte, car si ce n'est pas une porte, nous montrons une autre lumière. Et nous utilisons des rotations de lumière prédéfinies et, sur la base de l'interdiction d'un bléant, d'un bleion , nous avons fait apparaître notre Ensuite, nous avons ajouté des acteurs pour les détruire. Nous nous efforçons un peu de déterminer où il se trouve et comment il se trouve , je suis désolée, mauvais plan, les décorations, à travers notre plan de décoration, et nous utilisons les points de scène pour définir Maintenant, jouons un peu avec la lumière. Oh. Passons en fait à notre torche BP. Dave, parce que ce n'est pas sauvegardé. En fait, sauvegardez tout. Passons maintenant à notre sujet principal. Maintenant, j'ai en tête certaines valeurs que nous avons testées et leur apparence dans le labyrinthe Je vais m'en servir. L'intensité serait de 258o4. Donc 25 804. Et le rayon d'atténuation serait de deux ou 37437. Maintenant, notre couleur de lumière serait de x linéaire F F 58 47 FF. Maintenant, vous pouvez choisir la lampe que vous voulez, mais pour nous, cela a fonctionné. Et faisons en sorte que le code source utilise 30. Et nous allons désélectionner les ombres projetées. C'est donc un peu plus optimal. Si vous le souhaitez, si votre ordinateur peut le gérer, vous pouvez le laisser activé. Nous n'allons pas optimiser les lumières pour qu'elles soient invisibles lorsque nous sommes trop loin. Nous laissons le moteur faire ce dont il a besoin. Mais ce que nous allons faire, c'est incarner le créateur tremblant. Nous allons commencer à jouer, et nous allons ajouter une chronologie. Avec qui je mange avec les lumières. Qui est Queen with the lights ? Était-ce Barbadi Était-ce un imbo ? Bref, juste une référence à South Park, tant pis. Oh, qu'est-ce qu'une chronologie ? En bref, ce serait un outil permettant de manipuler des variables sur une certaine période de temps. Comment s'y prend-on ? Eh bien, nous double-cliquons sur la chronologie, et nous pouvons voir qu'elle comporte quelques options. Ce que nous allons utiliser, c'est la trace d'un flotteur. Les camions de vecteurs, de pistes d'événements et de pistes en couleur. Mais il nous faut un char. Maintenant, dans ce camion, nous allons déplacer, cliquer et créer des points. Débit. Je pense que c'est assez de points. Notre premier et dernier point donc le temps zéro, devraient être la valeur zéro. Et nous utiliserons la durée actuelle, qui est de cinq, et nous la garderons là, donc dans cinq, la valeur sera à nouveau nulle. Il y a d'autres options ici, mais l'option dont nous avons besoin est l'option en boucle qui signifie que lorsque notre chronologie sera jouée, elle sera jouée encore et encore, peu importe. Non Quelle est cette trajectoire de flux que nous avons créée dans ces points ? Ces points sont donc essentiellement notre lecteur Alpha, ce qui signifie qu'ils nous donneront une valeur de 0 à 1 Nous ne devrions pas dépasser un et deux moins un. Mais ça ne devrait pas être le cas. Changeons ce point. Faisons deux plus bas. Ensuite, nous allons faire le tour et installer les lumières, d'autres endroits, faire en sorte que ça ressemble à eux, comme s'il s'agissait d'une randonnée, même si ce n'est pas le cas, je ne sais pas si ça a l'air bien Nous n'avons pas besoin d'en avoir un et moins un, et nous pouvons en avoir où nous voulons, mais si nous fixons des valeurs élevées, cela augmentera trop la lumière de façon exponentielle, etc. Non, peut-être que c'est bon. Peut-être que ce n'est pas le cas. Ce que nous allons faire, c'est tous les sélectionner cliquer avec le bouton droit de la souris et utiliser la fonction automatique, qui les incurvera un peu. Ce ne sera donc pas instantané. Nous allons le laisser tel quel, et nous allons le vérifier lorsque nous aurons terminé notre codage ici. Nous allons donc obtenir le feu ponctuel, et nous allons régler le feu. Nous allons également régler l'intensité. Et nous allons également régler l' atténuation de l'atténuation définie Ce sont les variables que nous allons modifier dans le calendrier, ce qui est une façon assez complexe de le faire. Mais pour nous, tout ira bien. Il n'y a pas beaucoup de choses dans notre donjon. Oh, c'est le retour de notre nouveau titre. Ce n'est pas nous qui nous sommes assis, il est dedans. Le nom et nommez-le Alpha. C'est notre Alpha lumineux. Nous allons laisser une couleur linéaire, nous allons laisser flotter une autre couleur. Qu'est-ce qu'un b ? A er pisa de la valeur A va à B sur la base d'un Alpha. Lecteur Alpha que nous avons créé. Connecté. Ici, ici. Et maintenant, cliquons sur une couleur, que nous pouvons effectivement copier sur le point lumineux. Je m'approche juste du point lumineux, copie ici et je le colle. Maintenant, pour le second, cliquons dessus et tapons sur le F F O. Avec plus d'orange. Il se peut que nous les changions plus tard s'ils ne semblent pas corrects. Nous verrons. Et pour ce qui est de l'intensité, nous annulons en fait ces 25 000 Pour être honnête, cela m'a semblé beaucoup. Il va donc passer de 5 000. J'ai aussi mis la lumière entre 5000 et 6 mille. Et depuis le plateau à un rayon de 600 à 800 tonnes. Ils remplacent en fait nos paramètres ici. Il faut donc que ce soient les bonnes valeurs. Je vais en mettre 600 ici. Compilons et sauvegardons. Allons jouer, à quoi ils ressemblent. C'est trop de changement. C'est trop de changement. Revenons donc à nos lumières. Cette couleur est trop éloignée. Choisissons-en un près de celui-ci. Peut-être que l' annulation orange est basée ici. Voyons voir, non. Il jaunit un peu trop. C'est aussi un peu trop rapide. Mais c'est bon. Je pense que c'est bon. Si vous le souhaitez, vous pouvez faire le lien avec les valeurs et lui donner une meilleure apparence. Maintenant, dans ce style, nous pouvons également accéder au maillage statique et désactiver la génération d' dans ce style, nous pouvons également accéder au maillage statique et désactiver la événements de chevauchement, car nous n'en aurons pas besoin Éteignez complètement cette collision. Nous n'en voulons pas. Et pour ce qui est des lumières, je pense que c'est tout à cause de ce type de lumière , car nous allons maintenant ajouter d'autres lumières. Laisse-moi te montrer. Nous avons ces magnifiques lumières ici, mais nous devons apparaître dans le labyrinthe des couloirs Tout d'abord, créons un plan pour ajouter ce mese statique. Nous allons passer au contenu. Nous allons passer aux plans, aux accessoires, et nous allons cliquer avec le bouton droit de la souris pour créer un nouvel acteur de type classe Blueprint et l'appeler BP, Corridor BP, Je vais l'ouvrir, et je vais ajouter un maillage statique, qui sera l'éclairage du couloir. Trouvons le maillage. Nous étions juste là. Je vais m'en servir, et nous aurons notre lumière. Maintenant, pour le rendre plus joli, ajoutons quelques éléments Ajoutons d'autres cendres statiques, qui ne seront pas une lanterne. Appelons ça. Bouclier. Et ajoutons-en plus. Sh. Appelons ce type un autre maillage statique. Disons ça ou déparentons cela parce que c'est parentalisé Appelons cela Land Post. Pour le bouclier, je pense que nous l'appelons bouclier. Je vais l'apporter ici. Je vais le choisir, puis je vais l'apporter ici et je vais le changer. 2,5 parce que c'est trop grand, peut-être un peu plus grand. 7,7, c'est cinq. Très bien. Je vais le mettre un peu plus haut. Maintenant, apportons les épées. Nous allons choisir la méthode statique. Ford Sword, retirez-le. Il doit être là. Ici, c'est une arme. Je vais l'ajouter ici. Nous allons également le mettre 2.7. Gale le fait pivoter un peu. Je vais l'apporter ici. Abandonne-le. Si je tiens, je vais chercher la deuxième épée. C'est triste. Je n'ai pas mis l'arme à mailles. Encore une fois, 0,7. Je vais le faire légèrement pivoter. Je ne le veux pas dans le sol. Disons-le de cette façon. Pour l'ajouter ici. Et sur le graphique VM au début du jeu, je vais apporter une référence à chacune d'elles. Et je vais voir. Jeu ou chacun d' eux séparément. Je vais les connecter. Chacun d'eux dans un jeu caché, et je vais en faire un. Maintenant, qu'est-ce qu'une séquence ? Une séquence, c'est une façon d' organiser un peu nos actions. Mais nous devons tenir compte du fait que même s'il est indiqué zéro, puis un, puis deux, cela ne signifie pas qu'il les exécutera. Il les exécutera dans l'ordre, mais il n'attendra pas qu' une seule exécution soit terminée. Dès qu'il lancera le premier, il exécutera le second, puis nous exécuterons le troisième. Il n'attendra pas la fin de l'exécution. Je le répète, parce que si j'ai des calculs ici, par exemple, disons que la troisième ligne en a besoin, alors le calcul ne sera probablement pas terminé lorsque la ligne trois sera terminée. Dans la nouvelle case cachée, je vais sélectionner aléatoirement b. Ainsi, une combinaison aléatoire de ces accessoires sera visible pour chaque lampe combinaison aléatoire de ces accessoires sera visible Je pense que c'est tout pour celui-ci. Lors de la prochaine, nous allons les ajouter sur la carte. Au revoir pour le moment, ils s'en soucient. 51. Système d'éclairage de couloir: Bonjour, et bienvenue dans Game Design Workshop et procédural Real Engine Five création de RPG d'action-RPG procédural Real Engine Five dans les donjons Lors de la leçon précédente, nous avons ajouté notre plan d'éclairage Ridor. Nous l'avons créé. Nous avons ajouté le maillage statique de la lampe, le bouclier, l' épée, etc. Et au début, jouez. Nous avons également créé du code pour rendre certains accessoires visibles, d' autres invisibles. Ça va être aléatoire. Nous avons également ajouté une fonction avec une chronologie, je suis désolée, dans le flambeau BP, au début de la partie, un petit code à utiliser à la lumière de nos torches Donc ça ressemble à un bâillon ou quelque chose comme ça. Maintenant, continuons à ajouter nos éclairages de couloir au labyrinthe Oh. Ce que nous allons faire c' est d'abord éliminer les règles simples, puis nous allons faire quelque chose de plus complexe. Oh, nous allons avoir besoin de couloirs, d'un ensemble de structures. Il s'agit donc de couloirs ST. D'accord, nous allons faire pour chaque boucle à partir de là. Et la première chose dont nous avons besoin est de briser la structure. Nous avons donc nos coordonnées. À partir de nos coordonnées, nous devons savoir si cette longueur est supérieure à un. Parce que s'il s'agit d'une seule tuile, il ne faut pas ajouter de lumière. Ça n'aura pas l'air bien. Maintenant, comme nous ne savons pas combien de tuiles il y a, nous pouvons faire une boucle à quatre, pas une pour chaque boucle, mais une boucle à quatre avec le dernier indice, comme dernier indice des quatre boucles. Donc, autant qu'ils en ont, c'est la dernière fois que vous exécuterez ces quatre boucles. Mais ce serait notre première partie. Nous obtenons les chambres du couloir, les coordonnées de chaque couloir, leur nombre, et nous vérifions s'il y en a plusieurs, et s'il y en a plusieurs, nous faisons une boucle de zéro à la dernière La prochaine chose que nous devrions vérifier, c'est s'il s'agit d'une pièce spéciale actuelle. Nous allons donc demander si nos coordonnées de position actuelles se trouvent à l'intérieur de nos salles spéciales. Maintenant, pour ce faire, nous allons copier les coordonnées que nous voulons. Et la façon dont nous allons procéder est d' utiliser cet index, qui va de zéro au dernier index de ce tableau. Mais cela correspond bien. Non, s'il contient un élément du tableau, qui est la pièce spéciale. Carreaux spéciaux. Ce serait le carreau de l'ascenseur, le carreau de la boîte, le carreau du coffre, et ce serait le cas. Voici les machines à sous. En gros, nous ne voulons pas faire apparaître de lumière Nan. Il est maintenant temps d' adopter une règle un peu plus compliquée. Laisse-moi ouvrir Paint. Ce que nous aurons, disons, c'est un labyrinthe dans notre grille Faisons en sorte que nous fassions apparaître une lumière ici. Ce que nous allons faire, c'est créer une boîte autour de lui. Demandez, y a-t-il de la lumière dans cette boîte ? En fait, avant de le faire apparaître, nous demanderons s'il y a de la lumière dans cette boîte. Parce que s'il y a de la lumière dans cette boîte et que nous sommes là, nous ne devrions pas apparaître correctement. Cela nous aidera donc à mieux espacer la façon dont nos lumières vont apparaître dans notre labyrinthe Alors, faisons-le. Voyons comment nous allons procéder. Nous allons utiliser quelque chose qui s'appelle multi-baseline, multi-box pour notre exemple. Appelons à propos de la première différence. Pas le multipoint, mais celui situé entre le tracé et le carton. La boîte est comme la boîte de collision. Les traces peuvent être effectuées dans des sphères, des boîtes, des lignes. Et même nous pouvons créer des formes personnalisées avec un peu d'effort. Mais pour l'instant, nous allons utiliser une boîte. Et qu'est-ce que le multipart ? Cela signifie qu'il peut faire beaucoup de choses et les garder dans une liste. C'est pourquoi nos chaleurs de sortie sont de type array. C'est un conteneur de matrices. Non, par où commencer ? En gros, nous allons juste chercher l'acteur d'ici, donc nous allons le trouver dans le donjon Carte Gin, nous obtenons donc la tuile actuelle que nous testons. Je vais trouver l'emplacement de l'acteur. Ce type de lieu de guerre de type Dan. La raison en est que lorsque nous déterminons la position de l'acteur, c'est toujours dans le monde, parce que l'acteur fait partie du monde, que lorsque nous partons d'un composant, nous voulons un lieu de guerre ou par rapport à l'emplacement de l'acteur, parce qu'un composant appartient à l'acteur et que l'acteur appartient au monde. Une façon Nous allons définir le point de départ ici, et ce sera aussi la fin parce que nous n' allons pas le déplacer. Il suffit de cocher une case, de vérifier ce qu'il y a autour de lui. 00 est la demi-taille, nous allons utiliser les valeurs 800, 801. Votre orientation est bonne. Visibilité, nous allons vérifier la caméra, et c'est à peu près tout pour notre trace multiboîte. Maintenant, à partir de nos résultats thermiques, nous allons passer à chacun. Mais avant de continuer, nous devons créer une variété locale, qui sera du type interdit. Appelons-le. Je vais être de type b. Amenons-le ici et tournons-le avant de commencer la boucle. Maintenant, ce que nous allons faire, c'est décomposer notre résultat thermique, chacun de nos résultats thermiques parce que ce réseau de sel, nous cassons chacun d'eux. Ce que nous allons faire, c'est aller le Heat Actor et demander le cours. Nous allons suivre un cours. Et nous allons vérifier si sa classe est égale à celle de nos lampes de couloir. Branch, corrige ça. Je vais mettre ça ici. Apportez ce petit. Je peux le fermer pour le rendre un peu plus beau. Et maintenant, s'il s'agit d'un couloir, alors nous allons activer la note lumineuse trouvée  : Cela pourrait en fait aller avec une pause, chacune avec une pause parce que c'est une action qui, une fois que nous avons trouvé ce que nous recherchions, devrait être cassée. Non, je vais relier ça à la pause. À partir de la fausse, nous n'avons rien à faire. Et quand ce sera terminé, nous prendrons le bus. En fait, nous avons besoin d'une succursale ici. Sinon, cela ne sert à rien si nous n'utilisons pas de branche. Nous allons apporter la lumière mais nous l'avons trouvée. Si c'est vrai, nous allons d'abord vérifier, choisir la lumière. Lampe M, lampe pad. Ensuite, nous allons ajouter des lumières, cela ne fonctionne pas comme ça, mais nous devons demander aux acteurs de les détruire et de les ajouter. Rien de ce que nous produisons ne doit rester sur la carte. Maintenant, pour la transformation, nous allons le scinder et relier l' emplacement de notre acteur. Maintenant, nous avons ajouté les lumières. Regardons-les dans notre jeu. Ils n'existent pas ou quelque chose ne s'est pas bien passé. Vérifions-le. Passons à notre fonction. Les couloirs. Ils sont supérieurs à un, oui, ou à une boucle plus un indice, et s'ils appartiennent à des carreaux spéciaux, s'ils n'appartiennent pas à des carreaux spéciaux, toujours aux petites choses. Maintenant, j'ai vu des lumières minuscules. E réglons ça. Appuyons sur Stop. Passons à l'éclairage de notre couloir, et augmentons cette hauteur à deux. Je vais à nouveau déplacer le bouclier. Peut-être que c'était le bon ou le genre aussi. Je vais mettre ça ici. L'autre sorte. Mets-le ici, gardez-en un. Nous allons compiler et enregistrer. Je vais jouer. Ces lumières ont l'air. l'air bien. Nous devons déplacer un peu d' épées, mais c'est bon. Celui-ci a deux épées. Celui-ci a un bouclier, en quelque sorte. Trous. Pourquoi y a-t-il deux trous tous Tiens du gazon deux. B c'est aléatoire et cela peut arriver. Peut-être que nous pouvons ajouter une branche au second type. Connectez cette balle aléatoire ici, afin de rendre la deuxième sorte un peu plus rare. Compilez et enregistrez, abaissez également un peu les semelles. C'est trop haut. Bien. je pense que c' est bien parce que je l'ai vu un peu rond. Je vais en parler un peu. Inclinez-le un peu plus. Nous voulons une baisse. Je pense que le sol, plus bas, peut être bien, peut-être pas. Ne voyez pas, nous ne savons pas. Les lumières. Donc ça a l'air bien. Je veux dire, nous allons être pi avec vue, donc presque très bien. Oui, je pense qu'ils vont bien. Mais la seule chose qui manque, c'est la lumière. Ajoutons donc la lumière. Passons au plan. Passons au lampadaire car ce seront les enfants du lampadaire, et je vais appuyer sur Ajouter Nous allons sélectionner la lumière ponctuelle. s'agit d'une énorme lampe ponctuelle, apportons-la ici sur la lampe, modifions les réglages lumens et réutilisons le gaz 500 Et la couleur devrait être celle du 97 A. Ça a l'air bien. Maintenant, la radio d'atténuation devrait l'être. 800 et le rayon source 50 et le rayon souple 50. Et nous allons laisser entrer les ombres projetées parce que je pense que c'est bon. Maintenant, je vais dupliquer cette lumière et la déplacer ici des deux lumières allumées. Je vais compiler et enregistrer et voyons voir. Moi. Nous avons un peu d'éclairage dans notre labyrinthe, commence à prendre de plus en plus de vie, ressemble plus à un niveau de jeu C'est vrai. Je pense que c' est tout pour celui-ci. Je te verrai le prochain. Au revoir. 52. Mécanique du piège et système de dommages: Bonjour et bienvenue dans Game Design Workshop Real Engine Five création RBC de Game Design Workshop Real Engine Five Procedural Tangent Action Auparavant, nous avions ajouté quelques lumières sur Armas. En fait, nous avons ajouté toutes les lampes Mae. Euh, ils sont un peu carrés parce qu'ils projettent des ombres. Mais je préfère laisser les choses comme ça plutôt que de ne pas leur projeter des ombres ou de ne pas leur placer un tas de volées. Nous pourrions y remédier en plaçant un point lumineux de chaque côté, ou d'une autre manière. Mais pour l'instant, nous allons laisser les choses comme ça parce que nous allons ajouter quelques éléments supplémentaires. Nous allons ajouter un peu de brouillard. Nous allons ajouter des effets de post-traitement. Donc, après tout cela, nous pouvons vérifier comment réparer les lumières. Maintenant, nous allons utiliser notre générateur de labyrinthe et il est temps de commencer à apporter de la peau pour accessoires. Nous allons donc créer une fonction. Appelons le propriétaire de cet accessoire. Passons au graphique principal et appelons-le. I. Maintenant, souvenez-vous quand j'ai dit que lorsque nous construirons l'ascenseur, nous ne le remettrons pas là Allons dans notre ascenseur, pour être là. Arrêtons ça à partir d'ici. Passons à notre posponer et collons-le. Nous devons également faire de même pour notre poitrine. Viens ici. Je vais récupérer ces nœuds, nous allons les couper, contrôler C et les coller avec le contrôle V. Maintenant. Créons un accessoire que nous ferons apparaître sur la plupart des tuiles du donjon Nous allons apparaître dans les couloirs, et ce sera un piège Donc, lorsque le joueur marchera dessus, nous serons endommagés. Nous allons passer à notre contenu. Nous allons accéder à notre dossier de plans et à notre dossier d'accessoires, cliquer avec le bouton droit de la souris et créer un nouveau dossier qui s'appellera BP p. Maintenant ouvrons-le. Pour ça, ici. Et avant de continuer avec notre piège. C'est la première fois que nous devons réellement toucher un peu notre personnage. Nous allons donc passer au contenu. Nous allons aller de haut en bas, nous allons accéder à des plans et ouvrir notre personnage PP de haut en bas Et nous avons juste besoin de faire quelque chose de très simple. La même chose que nous avons faite avec les tireurs sur les murs, nous devons faire pour la partie capsule du joueur Nous allons donc sélectionner le composant de la capsule, examiner ses détails et passer aux remorqueurs. Et ajoutez le tag ou le joueur. Et pourquoi faisons-nous cela ? La raison en est que, par exemple , disons que pour notre joueur, nous allons avoir une attaque moi, moi, moi. Je pense que c'est une bonne prononciation. Nous allons donc me lancer dans une attaque. Et cette attaque de moi provoquerait une collision. Enfin, nous voulons vérifier ce qu'il y a dans notre attaque contre moi. Nous ne le ferons pas, ce sera une attaque magique contre moi. Ce ne sera pas une épée dont on pourrait se servir. Mais même s'il s'agissait d'une épée et que nous pouvions nous en servir. Et si l'épée touchait le sol ? Est-ce que cela déclencherait un piège ? Non, nous ne voulons pas que cela se produise. Nous voulons donc être en mesure de nous demander la véritable capsule du joueur a été en contact avec cette collision. Donc on le fait par le biais du remorqueur ? Nous pourrions vérifier le casting auprès du joueur et obtenir la capsule, puis comparer l'autre composant à la capsule ? Démontrons cela. Allons à notre piège. Quel est le plan directeur ? C'est ici. Au final, ça devrait être là. Non Pour chaque piège, il va nous falloir une collision. Et je vais utiliser une collision de boîtes. Car, laissons les choses comme ça. Le visuel changera en fonction de nos mesures Passons à la collision des cases et choisissons le début du chevauchement. Non Nous n'allons pas tout passer en revue, mais nous allons passer en revue les deux épingles que nous utiliserons, l'autre acteur et l'autre composant. L'autre acteur fait référence à l'acteur qui a commencé à se superposer à la boîte. Cela signifie, comme je l'ai expliqué, que cela inclurait l' attaque de mai si elle était incluse dans notre joueur. Si je suis apparu, mettons-le ici, voir collision. Disons que je l'ai ici pour vérifier s'il y a de nombreuses attaques. Maintenant, si pour une raison ou une autre, par exemple, c'était un déclencheur, cela déclencherait le piège si je demandais si l'autre acteur est le personnage du haut vers le bas avec un casting, par exemple. Mais ce que nous avons fait en ajoutant cette balise ici, le P est celui provenant de ce nœud, d'un autre composant, qui signifie quel composant de l'acteur qui se chevauche avec moi se chevauchait Si c'est la sphère, elle aurait cette étiquette P. Si c'était la capsule de collision, désolé, pas la sphère, ce serait l'étiquette P. Elle aurait l'étiquette P. Nous pouvons demander un ug S'il porte le tag P, nous pouvons faire ce que nous voulons. Maintenant, ce que nous voulons pour le personnage, obtenir l'autre nœud acteur. Mais dans notre cas, expliquons un peu comment notre piège va fonctionner. Laisse-moi apporter de la douleur. C'est l'heure des superbes dessins. Nous devrions mettre des chansons thématiques ici ou quelque chose comme ça. Quoi qu'il en soit, nous avons notre destin de piège quelque part dans le couloir, et nous avons notre joueur qui se déplace Lorsqu'il marche sur le piège, nous voulons l'activer. Donc, les marches du piège. Appelons cela un doublon d'abord. Haine. Hein ? Oh, lorsque le joueur marche dessus, appelons cela la phase 1. Ceci est alors activé. Maintenant, dans la deuxième phase, nous allons appliquer les dégâts, qui seront activés, qui seront activés, mais attaqués ou peut-être devraient-ils être plus importants puis activés. Ça n'a pas d'importance. Cela dit attaque, d'ailleurs. Je ne reconnais pas le mot en le regardant, mais il dit « attaque ». Nous devrions donc demander si le joueur est toujours dans le piège ou s'il ne l'est pas. S'il entre toujours en collision. Donc, s'il entre en collision, nous allons infliger des dégâts au joueur S'il n'entre pas en collision, nous n' endommagerons pas le joueur Donc, si je devais le faire, revenons à notre événement de chevauchement de collisions. Si je devais m'arrêter alors qu'il s'agissait d'une attaque, alors si je connectais l'autre acteur, j'aurais une référence directe à l'autre acteur. Cela signifierait donc attaquer quel que soit l'autre acteur . J'ai donc besoin d'un chèque. L'acteur est-il vraiment dans mon rôle ou non ? Il existe de nombreuses façons de le faire. Nous pourrions en fait dire « à la fin du chevauchement », et conserver une référence à cela et à quel moment nous mettons fin au chevauchement, effacer cette référence et continuer Mais je voudrais montrer un autre nœud. Si je reçois la boîte, demande à l'acteur qui se chevauche. Je pourrais filtrer la classe pour qu'elle soit de haut en bas. Acteur, je pourrais obtenir une référence directe, comme je pourrais obtenir le premier exemplaire et demander, disons, par exemple, d'infliger des dégâts. J'infligerais du tort à cet acteur. Mais nous allons également utiliser le personnage du haut vers le bas pour l'IA. En fait, dans ce cas, nous allons utiliser un copier-coller. Nous n'allons pas utiliser un enfant, mais s'il s'agissait d'un enfant, il est possible que cela déclenche à nouveau cet acteur. Il faudrait donc faire une boucle ou faire une boucle. Si, par exemple, il s'agissait d'un jeu multijoueur et que nous voulions que le camion n'endommage que le joueur d'origine. Il faudrait faire une boucle avant et vérifier s'il s' agit bien de notre acteur. Oh, nous allons obtenir un signe égal. Nous devons d' abord lancer car cela renvoie une référence à un objet acteur. Même si nous filtrons les classes par le biais de notre personnage du haut vers le bas, cela renvoie toujours un a, un acteur général. Oh, il faudrait lancer personnage du joueur vers le bas. Et puis nous le pouvons si c'est égal à celui de notre joueur , par exemple. Ensuite, nous devons également lancer à partir d'ici. Cela pourrait être un pur casting. Les deux peuvent en fait être un pur casting. Il n'y a aucune raison pour qu'ils ne soient pas dans la succursale. Nous pourrions également avoir un remorqueur ou autre chose, comme nous pourrions avoir une variable ici, un harcèlement que nous pourrions détecter et vérifier si le harcèlement est vrai Nous pourrions envoyer un remorqueur jusqu'à l'étang lui-même. Il existe de nombreuses façons de le faire. C'est aussi l'un d'entre eux , car il comporte deux boîtiers, mais c'est possible et cela n' affectera pas vraiment notre gameplay car ce n'est pas si compliqué que ça. Maintenant, ce que nous devons faire ou terminer c'est de connecter cet élément du tableau ou de l' obtenir auprès du cast. Cela n'a pas vraiment d' importance d'infliger des dégâts. Et ce que sont les dégâts infligés, c'est simplement un message que vrai envoie à n'importe quel objet. C'est un système qu' Epics nous a fourni. Maintenant, les dégâts de base devraient être égaux à un. Et je pense que nous avons expliqué beaucoup de choses dans cette leçon, et nous devrions relier tout cela et tout aborder dans la leçon suivante. Au revoir pour le moment. À la prochaine. 53. Animation de pièges et SFX: Bonjour et bienvenue sur Game Design Workshop et Real Engine, cinq cours de création de RPG d'action procéduraux dans les donjons Auparavant, nous avions commencé à créer notre piège. Allons vers un piège. Et nous avons ajouté une collision de boîtes, et nous avons également ajouté que nous avons appelé à partir de la collision de boîtes qui commence un événement de chevauchement. Nous faisons don du superposition. Et nous avons demandé si le composant qui touche le piège était le tag P. Maintenant, nous avons dit quelques points à propos du chevauchement et de la manière dont nous pouvons obtenir une référence au personnage, faire en sorte que les acteurs se chevauchent C'était le nœud important sur lequel nous pouvions obtenir à tout moment les acteurs qui se chevauchaient Ensuite, nous avons fait un test intensif pour vérifier si c'était bien notre personnage. Et si c'est notre personnage, nous avons infligé des dégâts avec un nœud prédéterminé auquel Anil doit appliquer un mécanisme capable d'infliger des dégâts Bien sûr, nous pouvons créer nos propres mécanismes, mais pourquoi ne pas nous en occuper. Profitez-en. Je ne m'en occuperai peut-être pas. Profitez-en. Oh, maintenant, si notre piège s'est activé, voyons le déclencheur cette fois. Nous ne voudrions pas l'activer à nouveau pour infliger des dégâts instantanés au joueur encore et encore. Créons donc une variable bul. Disons que c'est déclenché. Apportons-le ici. Je pourrais utiliser une branche bk par la suite si p est déclenché, mais rendons les choses un peu plus faciles et mettons fin à bion ici. S'il est déclenché, s'il contient le composant P. Si le composant qui nous touche possède le tirailleur P et qu'il n'est pas déclenché, nous avons donc besoin d'un ici Non, fais autre chose, ne fais rien. Non La première chose à faire est de dire que le piège a été déclenché. Mais maintenant, nous pouvons commencer un compte à rebours pour savoir quand il attaquera , lorsque le piège relâchera la gâchette et attaquera, en gros. Ce sera un piège à pointes, donc il va pousser une pointe vers le haut. Mettons un son d'avertissement. Nous allons émettre un son pour que le joueur sache que le piège a été déclenché. Maintenant, le son serait : allons-y. C'est ici. Je n'ai pas vérifié ça. Comme c'est fort, avertissent les utilisateurs de casques Cela semble être la plus grosse partie, sur un p ici. Il s'agit d'un son, ce n'est pas exactement un son Il s'agit en fait d'une classe qui vous permet de faire quelques manipulations sur le son. Maintenant, une fois le son joué, immédiatement après le moment où il commence à jouer, je n'attends pas la fin du son. Nous allons faire un report. Jusqu'à ce que nous déclenchions notre piège. Mettons zéro point y. Soyons généreux envers notre joueur. Ensuite, nous devrons créer un événement personnalisé. Disons que c'est un déclencheur déclenché tiré du bleion, ou attaque A, c'est bien. Après cela, nous attaquerons. B s'il ne s'agissait pas d'un piège à pontons et qu'il sortait, cela pourrait être un piège à flèches, par exemple, Attack is fine. Ils attaquent tous les deux. Nous n'allons pas nous sentir attaqués pour le moment. Nous poursuivrons cette logique pour en finir avec elle. Disons-le plus loin. Et après l'attaque, jouons le son de l'attaque ou avant l'attaque, ce sera plus logique, ou en même temps. Nous pourrions donc mettre une séquence et dire « d' abord jouer le son, puis attaquer ». Et après l'attaque, nous allons connecter notre plop ici pour trouver l' acteur qui se chevauche et infliger les dégâts Et vous savez quoi, réinitialisons également notre piège et créons un autre événement personnalisé Appelons cela un retour en arrière. Donc, une fois que nous avons infligé des dégâts au joueur, ou si aucun joueur n'a infligé de dégâts à personne, nous allons retarder. Disons 5 secondes. Et au bout de 5 secondes, nous allons réactiver le piège. Je vais donc appeler à l'envers. Pourquoi j'appelle le retour en arrière. Parce que pour l'attaque, nous allons utiliser une chronologie pour lancer une animation. Et sur la base de ce calendrier, nous allons inverser la tendance et réinitialiser le piège Mais avant de commencer avec notre code chronologique, nous avons besoin de quelque chose à animer car la chronologie sera utilisée pour animer le piège, et c'est là que nous infligerons des dégâts L'animation serait une activité distincte. Nous allons donc accéder à notre fenêtre d'affichage, et nous allons passer aux mesures statiques Dupliquez ceci. Tout ce corps. Appelons ça. Crampons. Découvrons nos maillages s, qui devraient être les maillages de dossiers Je me demande vraiment quel serait ce nom. Le tube de réflexion Find Spike. Corps du piège, va chercher le tube du piège. Et pour les pointes, allez dans le tube piège 7. Hein ? Comme vous pouvez le constater, leur point de pivot est correct dès le début, comme notre position par défaut de l'acteur se situe au milieu des pointes, exactement là vers le haut Ils vont donc sortir un peu du sol parce que nous allons les faire apparaître sur le Cela signifie que le sol sera à cet endroit. Et les pointes apparaissent un peu, ce qui est génial Maintenant, ce que nous allons faire, c'est obtenir nos points lors de l'événement de début de partie Nous allons obtenir la relativation, c' est-à-dire obtenir l'emplacement avec le système de coordonnées de ce plan Non par rapport au monde, par rapport à ce plan Mais lorsque nous les déplaçons relativement ou que nous les localisons relativement, nous parlons de cette entité ici, ce plan, de tous les x, Y et Z de ce plan, et des distances basées sur le centre de ce plan, cet Maintenant, revenons en arrière. Promouvons cette variable. Il l'a parfaitement nommé pour nous. Nous aurions pu spécifier des pics, mais c'est bon. Maintenant, ajoutons une chronologie. Vous devrez lui donner un nom, et nous allons nous reconnecter au jeu dès le début et revenir à versferment À la fin , nous allons changer en fonction de la direction que prend la chronologie. Au fur et à que nous nous dirigeons vers le sud-ouest, il s'agit à nouveau d'un changement basé sur l'énumération Il s'agit d'une énumération à deux valeurs allant de l'avant à l'arrière, et nous n'allons pas relier la date, mais la fin ici. Et quand c'est fait en arrière et que c'est terminé, nous allons déclencher Nous allons désactiver le déclencheur. Cela signifie donc que notre camion peut être réactivé. N'oubliez pas que l'inversion s'exécute 5 secondes après avoir essayé d'endommager ce qui se trouvait dessus Maintenant, nous jouons à la chronologie, nous allons entrer dans la chronologie, nous allons ajouter un camion, nous allons ajouter un camion flow. Et mettons deux points. Le premier serait à une valeur zéro, et le second à 0,2 et à une valeur un. En cliquant sur ces deux, zoomez pour vous sentir à horizontale et à la verticale afin de rendre notre ligne visible. Et cette fois, comme vous pouvez le constater, j'ai choisi une valeur bien inférieure à notre durée de cinq secondes. Maintenant, je pourrais changer cette version 2.2, mais je peux simplement utiliser la dernière image-clé, ce qui signifie qu'elle utilisera le dernier point que j'ai daté Si j'avais plus de camions, cela prendrait le dernier point de la plus longue période. Maintenant, revenons à la NRA. Et ici, nous allons devoir ajouter un code très simple pour obtenir nos pics et cette action relative. Nous allons simplement tirer des leçons de la valeur A à B dans un nouvel emplacement. Vecteurs, et le A serait notre position relative, celle d'origine. Le B serait que nous pouvons réellement le coder en dur. Sélectionnons les pointes, et à partir du relatif qui est zéro, zéro, zéro, en gros Nous voulons aller 20 à 30, 30, ce serait huit. 30 ici. Nous allons connecter Alpha à notre nouveau camion. Maintenant, la prochaine chose que nous devons faire est de posséder les pièges. Ils vont bien, ils travaillent. Nous n'avons pas encore de personnage, mais nos pièges pourraient nous endommager. Mais je pense que c'est quelque chose que nous allons vivre pour la prochaine fois. À toi, au revoir. 54. Fonction de progéniture: Bonjour et bienvenue sur Game Design Workshop Real Engine Five Procedural Dungeon Action PZ Creation Calls Auparavant, nous avions terminé notre épreuve de départ par tour de piste. Nous avons vérifié si le piège était déclenché, et si c'est notre personnage, nous avons dit que le piège devait être déclenché s'il n'était pas déclenché , nous avons émis un son, nous avons attendu, nous avons joué un autre son et nous avons joué l' animation de l'attaque. Et nous avons fait des prévisions pour vérifier si le joueur était toujours dans le piège Nous avons utilisé une chronologie pour animer les pointes des composants, qui sont des mathématiques statiques que nous avons ajoutées et les mathématiques statiques de la base du piège Et nous utilisons la position relative définie pour déplacer les pointes par le biais de l' alerte et de notre chronologie Nous avons également utilisé un interrupteur qui, lorsque la chronologie est en marche arrière, fonctionne à l'envers lors de l'événement de retour, cela devrait empêcher qu'il Maintenant, retournons dans notre labyrinthe et découpons notre piège. Tout d'abord. Nous allons avoir besoin des coordonnées de notre donjon. Et en fait, nous allons également avoir besoin des clés. Je vais vraiment obtenir les valeurs. Moi aussi. Je vais passer aux clés et aux valeurs, et je vais les promouvoir en deux variables, les variables locales. Je vais appeler ce donjon. Celui-ci, promouvez-le également au rang de donjon. Avant de continuer, parlons un peu de la façon dont notre robinet va fonctionner. Notre piège à épis-éponge, il nous faut juste le piège La première étape serait de parcourir les coordonnées de notre donjon Nous allons donc parcourir notre donjon. Bleu cette fois. Je ne sais pas pourquoi. Nous allons donc passer en revue les coordonnées de notre donjon. Et nous allons créer des règles pour vérifier s'il appartient aux vignettes que nous voulons. En gros, ce que nous voulons vérifier, c'est s'il s'agit d'une chambre ou d'une chambre spéciale. Alors ne progressez pas. Ne créez pas le piège. Ici. Ne créez pas le piège Alors, qu' allons-nous faire ? Appelons cela encore une fois phase un. C'est génial de dessiner. Quoi qu'il en soit, nous allons créer une fonction qui amènera l'une de nos tuiles aux coordonnées, nous avons les coordonnées, et nous savons que si nous avons les coordonnées, nous pouvons obtenir notre tuile. Mais nous allons chercher notre tuile. Et pour ce carreau, nous allons obtenir l' emplacement du sol. À partir de cet endroit, nous allons créer une boîte. Parce que si notre tuile est celle-ci, il y a une distance sur laquelle nous ne voulons pas qu' une piste apparaisse, car disons que si elle apparaît ici, alors le camion pourrait être comme Et nous ne voulons pas que cela se produise. Cette mesure devrait donc en tenir compte. Cette boîte que nous allons créer en utilisant nous verrons quand nous la créerons. C'est donc l'une des raisons. Il y a de nombreuses raisons, mais le seul problème avec ce système à l'heure actuelle est que si nous créons un piège et qu'il entre en collision avec un autre piège, nous le considérerons comme valide Disons que c'est un plus gros piège. C'est ce que nous pouvons. C'est une fonctionnalité. C'est une fonctionnalité. Cela crée de plus grands pièges. Donc, oui, le seul problème , c'est que cela peut être créé. Il existe des moyens de le contrer, vérifiant que si, lorsque le piège apparaît, est-ce que j'entre en collision avec un autre Si je heurte un autre piège, alors détruis-moi. Ensuite, nous pouvons accéder à ce générateur de pièges et dire moins un aux pièges que vous avez créés Bien entendu, cela nécessite également quelque chose que je n'ai pas expliqué. Nous aurons un système qui va de zéro aux pièges MC générés Et pour cette partie, les pièges MC que nous allons créer, nous allons utiliser une nouvelle variable Nous allons utiliser une variable appelée niveau du générateur, qui indiquera le nombre de donjons créés d'affilée Donc, s'il en est un, par exemple, nous pourrions créer un maximum de deux pièges Si c'est deux, nous pouvons faire apparaître deux plus un, soit un maximum de trois pièges ou pour le moment plus trois, soit cinq Ouais. Quoi qu'il en soit, c'est essentiellement ce que nous allons faire. nous qui y sommes. Nous allons créer ce système pour pouvoir l' utiliser avec différents éléments, pas seulement avec les pièges. Peut-être que nous voulons créer le total, mais peut-être que nous voulons l'augmenter en ajoutant des pièces en forme de verrou, par exemple, ou une pochette ou quelque chose qui apparaîtra au hasard, et qui pourrait également apparaître dans un piège Nous allons donc utiliser ce système, nous allons utiliser cette fonction pour créer un système capable de générer tout ce que nous voulons en fonction notre niveau de générateur de génération et de certaines règles que nous allons créer Maintenant, allons-y. Baisse ça. Et comme nous l'avons dit, l'étape de presse est de créer des règles pour nos raps, spécifiquement lorsque nous voulons qu'ils les fassent apparaître, car les règles relatives au moment où nous créons l'objet sont différentes de celles de la fonction, mais expliquez simplement la fonction que nous allons créer à cet endroit. Parce que si nous faisons apparaître, par exemple, des pièces, il se peut que nous ayons besoin de règles différentes de celles applicables aux endroits où nous créons les pièges Donc, la première partie est pour le nous, quand nous avons le nous, la deuxième partie est savoir combien et localement où nous allons les générer. Encore une fois, nous allons avoir besoin de quatre boucles pour chaque boucle. Nous allons récupérer les clés de notre donjon, et nous allons demander si ces clés sont contenues Avec un tableau, allez le dupliquer ici. Le premier serait les coordonnées de la chambre. Coordonnées d'une chambre. Nous ne voulons pas le voir dans n'importe quelle pièce. Nous voulons simplement qu'il soit à l'extérieur, dans les couloirs, les balcons, les zones spéciales et non les zones spéciales. Désolée. Le second serait celui des zones spéciales. Donc nous n'en voulons pas ou si nous ne les voulons pas dans chacun d'eux, nous avons besoin d'un. Nous allons ouvrir une succursale, connecter cette année, nous connecter cette année, créer ça ici, et c'est bâclé mais prêt Notre règle est de ne pas apparaître dans des tuiles spéciales ou dans les coordonnées des pièces Maintenant, nous allons avoir besoin de notre tuile comme nous l'avons dit, et pour obtenir notre tuile, ces deux tableaux correspondent l'un à l'autre Si j'obtiens juste nos valeurs et obtiens p et que j'utilise l'indice de ces quatre boucles. Je vais obtenir un index valide, l'index correspondant du point final à l'acteur. Maintenant, créons notre fonction, et appelons-la téléphone. Aux accessoires. Vous savez, des accessoires interactifs, des accessoires personnalisés, quelque chose comme ça Ce dont nous aurons besoin pour la saisie, c'est une variable appelée Max Max props. Il sera du type entier, et nous aurons besoin d' une variable de cible, qui serait la tuile, qui sera la tuile PPP C'est l'acteur que nous allons utiliser pour obtenir tout cet acteur du t parce que nous l' obtenons de l'extérieur. Si j'utilise la flèche. Vous pouvez voir que c'est une fonctionnalité intéressante. Si je passe d'une fonction à une autre, et que je veux juste revenir en arrière sans me rappeler où je suis. Je peux utiliser cette flèche ici, et elle m'amène à la sélection précédente, au point précédent que je suis. Oh, ce que je voulais dire, c'est que nous allons obtenir cette cible, cette valeur à partir d'ici. Et connectez-le ici. Enfin, pour pouvoir générer quoi que ce soit, nous allons avoir besoin d'une nouvelle entrée Et cette fois, ce sera du type acteur. Mais ce ne sera pas une référence, ce sera du type de référence de classe, ce qui signifie que je peux dire quel type d'acteur de classe je veux. Je vais vous le démontrer. Nous allons nous en servir pour créer quelque chose. Donc, lorsque nous créons, à partir de la classe, je peux réellement saisir une classe ici, mais nous allons définir exactement le type de classe que je veux Maintenant, avant de répondre à l'acteur, bien sûr, nous avons besoin de quelques éléments supplémentaires. Ce que nous allons faire, c'est créer une variable locale ici. Je vais appeler cela un compteur et un entier. La raison en est qu' avec ces accessoires Mx, nous pouvons utiliser le compteur et les accessoires Max pour créer une boucle personnalisée Donc, si le compteur est égal à nos x accessoires, alors nous nous arrêterons Si ce n'est pas égal, nous allons nous étendre. Maintenant, la prochaine chose dont nous avons besoin est de savoir où allons-nous faire de la petite taille ? Nous avons besoin d'un emplacement. Ici, nous allons obtenir la position de notre acteur, qui est notre position de marée. Maintenant, nous devons créer notre boîte. Ce que nous allons utiliser est une fonction pure appelée point d dans la boîte de délimitation. Cela signifie qu'à un moment donné dans cette case, les coordonnées la demi-taille sont la moitié de la boîte. Ici, nous allons utiliser 300300, O Z, nous allons le laisser tel quel Je vais faire le lien. Pour être honnête, je vais ajouter un peu de hauteur. Par mesure de sécurité, nos pièges sont un peu plus visibles. Je vais ajouter un vecteur, je vais ajouter un cinq ici. Cela crée une boîte de taille 600 essentiellement parce que notre demi-taille est de 300, mais cela ne tient pas compte de ce dont nous avons parlé. Peut-être allons-le un peu plus petit. Faisons en sorte qu'il soit adapté. Je pense que notre piège mesure 100 mètres de long. Je ne sais même pas comment nous vérifierons ces informations sur M3D. Je ne peux pas le mettre au monde et raconter des cases ici parce que box, je pense que c'est bien en ce moment, c'est réglé sur cinq, alors je l'ai dit à dix, un, deux, trois, quatre, cinq, six, sept, huit, c'est huit. C'est bon, c'est bon. 250, c'est bien. Et maintenant, nos pièges n'apparaîtront plus sur les bords Il existe une option automatique pour annuler le traitement collégial. Par exemple, si vous frayez toujours, pas plus que les cosans, essayez de simplement colocaliser, mais Nous ne pouvons pas nous en empêcher. Nous essayons d'ajuster l'emplacement, mais nous apparaissons toujours. Et cela créera un petit meilleur espacement. Enfin, nous devons continuer cette fonction, mais je pense que c' est quelque chose que nous allons laisser pour la prochaine fois. La seule chose que nous devons changer pour le moment, c'est juste une pointe d'optimisation. Nous allons aller au piège BP. Nous allons aller dans notre boîte, et nous allons passer aux collisions sur les détails. Nous allons sélectionner une collision personnalisée. Nous allons choisir de tout ignorer sauf le pompon. Cette collision ne se déclenche que lorsqu'un poème se chevauche, entre en collision avec lui et que tout le reste est ignoré Je pense que c'est tout pour celui-ci. Je te verrai le prochain. Au revoir. 55. Plan de décoration de pièce: Bonjour et bienvenue sur Game Design Workshop, véritable cours de création de RPG d' action et de donjon procédural sur Engine Five création de RPG d' action Auparavant, nous avions commencé par notre propre fonction d'accessoires, puis nous avons continué en stockant carte du donjon sous forme de clé et Dans les variables locales. Ensuite, nous avons continué avec les règles pour savoir où créer nos pièges Et nous avons commencé à créer la fonction qui générera des accessoires personnalisés Nous avons utilisé pour les entrées, les accessoires Max, la tuile VP ciblée et la classe que nous voulons générer. Nous avons créé un compteur dans notre fonction, que je vais déconnecter et juste le maximum accessoires parce que je n' aime tout simplement pas voir la ligne, et à partir de là, nous allons déconnecter ce type plus le bas, et là, je vais juste cibler Et si je peux le faire à nouveau, c'est parce qu' il s' agit d'une fonction et que les valeurs d'entrée il s' agit d'une fonction et que les valeurs d'entrée peuvent simplement être appelées variables. Maintenant, après le compteur, quand c'est vrai, nous allons simplement nous arrêter, ne rien faire, pour que la fonction soit terminée. Avant cela, sur le faux, nous allons créer nos acteurs Maintenant, nous allons vérifier si l'acteur est valide. Au cas où, pour une raison ou une autre, ce ne serait pas le cas. Il n'apparaît pas, même si nous essayons de nous ajuster et que nous continuons à entrer en collision Si nous l'avions pour essayer d' ajuster la position, ne téléphonez pas s'il y a toujours une collision, alors nous en aurions besoin Mais si nous l'avons en place pour essayer d'ajuster l'emplacement, mais qu' il apparaît toujours, nous n' en avons pas vraiment besoin Mais au cas où vous voudriez faire des expériences, nous laisserons cela valide ici, car la façon dont les collisions sont gérées ici, elles ont besoin d'un peu de cela dans les plans ce qu'elles entrent en collision et de la façon dont nous voulons le faire Ce que nous allons faire, c'est ajouter notre acteur qui répond, notre piège que nous lançons à la liste des acteurs à détruire Il va donc falloir trouver la liste. Voilà, et ajoutons l'acteur à la cuillère. S'il est valide. Si ce n'est pas valide, nous en avons terminé. Ce que nous faisons ensuite, c'est promouvoir l' ajout à notre comptoir plus un. Et nous devons également régler le compteur. N'oubliez pas que le contrôle est pour le réglage. Juste au cas où nous voudrions mettre la cuillère dans une cuillère en cas de collision, nous voulons expérimenter cela plus tard Nous allons simplement ajouter une nouvelle variable, que nous appellerons y et trice. Et nous allons également augmenter ce montant plus un. Obtenez-le également. Depuis chaque ajout, l'ordre n'a pas vraiment d'importance. Maintenant, nous allons nous connecter depuis ce n'est pas valide ici. Ajoutons aux règles initiales ou b. Et nous allons obtenir trie plus. Il y a le maximum ici, ici. En fait, pas en plus, mon erreur est supérieure à Mx props multiplié par deux Il balaie deux fois, en gros. Il essaie d'ajouter deux fois les accessoires Mx au cas où les accessoires n'apparaîtraient pas Parce que notre premier compteur compte le nombre d'entre eux générés Notre deuxième compteur X sur la façon dont quelque chose est apparu Parce qu'après un certain temps, disons, par exemple, au labyrinthe ou au niveau 25, ce chiffre peut être dû à un système qu'il n' apparaît pas lorsqu'il entre Cela peut générer cinq pièges en un point, par exemple, ou il ne pourrait pas réellement se propager S'il n' entre pas en collision, il ne pourrait pas apparaître après un Il pourrait y avoir tellement de pièges qu'il ne serait pas possible d'en créer d'autres Cela deviendrait donc infini, puis cela bloquerait notre chargement. Cela s'arrêtera là et ne continuera jamais. En gros, écrasez notre jeu. Ensuite, nous allons connecter ici, au début de la branche, début de la branche, et il terminera notre boucle avec un sécurité égal au double du nombre de nos accessoires Mx Maintenant, appelons-le Spooner dans nos accessoires. Nous allons apporter aux fils des accessoires constants. Nous allons le connecter à des poteaux. Pensez oui, car s' il s'agit d'un problème de coordination ou d'une tuile spéciale, nous ne voulons pas qu'il se passe quelque chose. Nous voulons quand ce n'est pas le cas. Maintenant, je vais relier les valeurs du donjon à la cible, savoir nos piles, les tableaux correspondants Pour le cours, je vais sélectionner le piège. Troupe P. Faisons les accessoires Max. Nous allons maintenant créer une nouvelle variable. Nous allons l'appeler niveau anator. Avons-nous un niveau de générateur ? Tuiles, taille maximale du labyrinthe, nombre de tuiles. Non, nous ne le savons pas. Nous devrions donc avoir un niveau de générateur, et apportons-le ici. Maintenant quoi, faisons-en une instance et une exposition au moment de l'apparition, afin de pouvoir le faire progresser lorsque nous apparaîtrons dans le labyrinthe Permettez-moi donc de vous rappeler encore une fois que nous devons revenir au menu principal, accéder à notre graphique. Compilez et enregistrez le ma save et compilez d'abord le labyrinthe, puis allez dans le menu principal, et juste ça Labyrinthe. Nous avons maintenant le niveau du générateur. Commençons par le premier niveau. Retournons dans notre labyrinthe. Avec ce niveau de générateur, nous allons l'ajouter, disons plus un. Simplifiez les choses, le premier niveau comporte deux pièges, le deuxième en a trois, et ça continue. Démontrons ce que nous avons créé. Commençons. Et montons à la vitesse supérieure. Nous y voilà. Un piège ici, un piège ici, le mélange est parfait. Vu d'en haut, nous ne saurions dire grand-chose, mais nous les cacherons avec un peu de brouillard et un peu d'éclairage supplémentaire. tout cas, continuons à fabriquer des accessoires pour nos chambres car en ce moment, éclairées, elles sont un peu vides. Montrons-le réellement. Passons à nos décorations, sélectionnons notre plafond et définissons la visibilité. Pour être un jeu de visibilité, désolé, caché. Je pense que cela ne le cachera pas. O. Nous avons parlé d'un jeu de visibilité cachée, afin que nous puissions maintenant voir ce qui se passe dans nos chambres. Maintenant, si nous n'avions pas cette lampe de salle, les pièces seraient vraiment sombres. Outre les accessoires, nous devons également faire jouer des éclairs dans les chambres Et cette fois, créons une autre méthode. Ne l'ajoutons pas comme nous l'avons fait avec ces accessoires, avec les pièges Créons une autre façon de le faire. Nous avons donc de nombreux exemples de la façon de remplir des blocs essentiellement dans notre labyrinthe Pour cela, nous allons avoir besoin d'un nouveau plan directeur. Passez aux accessoires. Cliquez, créons une nouvelle classe de plan, tapez actor, ce sera BP, room, props Maintenant, allons créer les accessoires de cette pièce. Nous allons aller à notre générateur de labyrinthe. En fait, nous allons arrêter le gameplay. Et depuis l'intégralité de notre boucle du fort. Nous allons simplement copier cette boucle pour chaque boucle. Et pour le tableau, nous allons choisir toutes les coordonnées de la pièce. Pour toutes les coordonnées de nos chambres, nous allons obtenir nos valeurs. En fait, nous allons obtenir notre donjon. Voilà, je vais trouver le bon acteur. Cela nous donnera donc tous les acteurs, tous les acteurs de salle. En gros, toutes les tuiles qui appartiennent aux pièces. À partir de là, je vais devenir propriétaire d'Actor Plus. Je vais partager la transformation. Je vais le récupérer et le connecter à la localisation. Pour le cours, nous allons sélectionner les accessoires de la salle. Pour être honnête, nous avons besoin d' une autre variable. Passons aux accessoires de notre chambre. Je vais l'ouvrir, l'ouvrir, accéder aux variables et créer des directions. Ce serait une carte d'érection. Et le second serait le pulion tel que nous l' avons sur nos carreaux, et nous allons le rendre comestible avec de l'encens, à exposer Revenons au générateur de labyrinthe. Rafraîchissons, cela diminue réellement. Et nous allons obtenir la direction de notre tuile, le tableau de directions et le connecter ici. Maintenant, nous créons des accessoires de pièce sur chaque carreau d'une pièce, et nous connaissons sa direction Nous savons donc où il y a un mur et où il n'y en a pas. Je pense que c'est tout pour celui-ci. Dans la suite, nous pouvons donc expliquer comment ce plan va fonctionner Au revoir pour le moment, à la prochaine. 56. Bases de la spawner: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le cours de création procédurale R sine five Dungeon Action PS Auparavant, nous avions terminé avec nos accessoires sur mesure. Nous avons terminé notre boucle en ajoutant notre acteur aux acteurs à détruire. Nous avons vérifié si l'acteur que nous créons est valide, si c'est le cas, nous augmentons le compteur Si ce n'est pas valide, nous augmentons le nombre d'essais, ce que nous faisons également lorsque nous augmentons le compteur. Nous avons dit que ce serait une variable. Juste au cas où nous voudrions changer cela pour ajuster l'emplacement, mais pas apparaître en cas de collision Nous avons poursuivi la création de notre gamme de chambres A. Nous avons continué à faire pour chaque boucle sur toutes les coordonnées de notre pièce, et nous avons créé le plan nous avons créé pour les accessoires de salle BP Il s'agit d'un plan dans lequel nous avons créé une variable, appelée directions, et nous avons transféré les coordonnées de nos tuiles de notre pièce à l' Maintenant, comment utilisons-nous cet acteur et comment utiliserons-nous ces instructions ? Passons à cet acteur. La première chose que nous ferons, c'est que lorsque l'acteur sera faible, nous trouverons notre orientation et nous passerons en revue nos valeurs Des valeurs, et nous allons les utiliser pour chaque boucle à partir de valeurs. Ensuite, nous allons demander si la valeur est vraie ou non, quand elle l'est. Cela signifie que nous pouvons passer quand ce n'est pas vrai, qu'il y a un mur. Oh, stockons combien nous en avons quand nous n'avons pas de mur, ou combien nous en avons de vides. Disons que cette barre est vide. Nous allons en faire une variable de type unique de type entier. Et quand nous pourrons marcher, nous augmenterons le nombre de fois où nous pourrons marcher, nous l'augmenterons d'une unité. Maintenant, la deuxième chose que nous faisons est de créer une autre variable de NRA cette fois, qui sera une NRA entière Alors nous allons appeler ça, je ne sais pas, Waltz. Et nous allons aller ici, et nous allons y ajouter des index indiquant que nous avons des murs Nous avons donc maintenant deux variables indiquant nombre de places vides. Il y a le nombre d' entrées, de sorties, passages, tout ce que nous pouvons emprunter, et nous avons également une variable qui indique le nombre de murs qui existent sur notre N'oubliez pas que lorsque nous le créons, nous en faisons apparaître un dans chaque tuile Notre chambre a donc quatre carreaux. Cela signifie que nous avons des accessoires de chambre P dans chaque pièce. Chaque pièce est donc équipée de quatre accessoires P, un dans chaque allée La fois précédente, nous apparaissions sur des torches, parce que la première chose que nous allons faire apparaître, c'est notre lumière En fait, nous allons faire deux choses en même temps, mais nous allons le faire avec une séquence, en gros, elles vont se produire simultanément. Oh, lorsque nous avons créé les porches, que nous avons utilisés dans notre fenêtre d'affichage pour notre décoration, dans un plan de déclaration, nous avons utilisé C'est une façon de faire les choses. Une autre façon d'obtenir un emplacement précis consiste à le connaître. Si nous savons que le centre de notre plan est zéro, nous connaissons relativement certains endroits, nous connaissons relativement certains endroits, puisque nous savons que notre tuile mesure 600 x 600 Nous savons qu'à mi-chemin du centre, il y en a 300. Eh bien, créons notre nouveau plan pour Torch. Appelons cette pièce une torche. Instantanément, je peux voir la vieille torche que nous avons utilisée et qui est en maille. Parce que ça aurait dû être la pièce qui m'embrasait. Je vais ouvrir la torche BB et remplacer le maillage par une grosse torche. C'est la bonne torche. J'ai besoin de réparer le quai, de compiler et de sauvegarder, et allons sur le porche de notre chambre. Créé ici. Ouvre-le. Je vais tout enregistrer depuis longtemps. Je vais ajouter. En fait, tu sais quoi, je peux passer au grand flambeau. La torche BP, il suffit de la copier. Ces choses-là. Collez-les. Je vais remplacer la statique par la petite torche et régler la particule au plus bas. Bien. Et maintenant, je peux également copier-coller le comportement depuis le graphe d'événements. Le même effet. Jouez dès le début, cela n'a pas vraiment d'importance puisqu'il s'agit d'une chronologie en boucle Ce serait le cas si nous étions dans d' autres contextes. Quoi qu'il en soit Changeons le tour de la lumière 4 à 5 km. Changeons le rayon de 400 pour compiler et enregistrer. Et maintenant, nous avons notre propre lampe de chambre. Revenons aux accessoires de notre chambre. Et avant de proposer un acteur, nous pouvons réellement faire quelque chose de différent Nous pouvons l'ajouter étant enfant. Je vais ajouter un enfant acteur. Je vais l'appeler Room Torch. Et je vais régler sa classe sur Room Torch. Si je peux comparer en toute sécurité, je peux maintenant voir l'intérieur du plan. Question ou première règle. Ce serait le cas s' il y avait des murs. Je vais chercher mes murs variables. Je vais demander si la longueur est supérieure à zéro. S'il n'est pas supérieur à zéro, je vais détruire ce composant. Nous n'en avons plus besoin. Cette pièce n'a pas de murs. Que serait une pièce sans murs ? Ce serait une pièce qui a une porte essentiellement parce qu' d'une porte et pas de deux autres portes, une ou deux portes. Donc, si vous allez peindre, ce serait une pièce avec une porte ici, et une porte. Par ici. Le reste de la pièce n'aurait donc pas de murs pour cela. Ce sera ouvert et le côté sera ouvert. Il n'y a pratiquement aucun mur pour ajouter une torche. Puisque nos règles sont basées sur le fait que le joueur peut se déplacer de chaque côté. Retour à la programmation. Maintenant, la prochaine chose dont nous avons besoin, ce sont les directions. À partir de là, nous allons récupérer les clés. En fait, ici, nous allons obtenir une direction aléatoire à partir des murs. Aléatoire. Ainsi, si nous nous souvenons bien, nous avons stocké l'index dont nous n'avions pas de mur. Ainsi, même si nous avons deux ou trois murs, nous choisissons un mur aléatoire pour remplacer notre torche. Comme je l'ai dit, nous devons définir l'emplacement relatif de cet Our B, nous définissons l'emplacement fonction des coordonnées du plan Parce que nous savons que la taille de la pièce va être gênante. Maintenant, j'ai précalculé certains emplacements qui selon moi, étaient corrects. Vous pouvez créer le vôtre. Ce que nous allons utiliser, c'est un ensemble. Pour l'index, nous allons obtenir les directions. Nous avons un mur nord, un mur est, un mur sud et un mur ouest. Pour le mur nord, je vais mettre 40, 150, et pour l'est, je vais mettre -340, 50, 250 est la hauteur, et x et y sont les axes x et y. -40 pour le sud et 300 pour x, y et 250 pour z et 300 moins cent 42 50 Laisse-moi continuer ici. Cent 40 50. Maintenant, le placer dans un endroit, c'est comme le déplacer là et là. Nous n'aurons pas toujours la bonne rotation. Encore une fois, nous devons vérifier quelle devrait être la bonne rotation si c'était ici, laquelle devrait être la bonne rotation si c'était ici, et ainsi de suite. Je l'ai déjà fait, nous avons donc les valeurs, et nous allons également obtenir le flambeau de la pièce et le réglage relatif. Cet emplacement relatif. Oh, mon Dieu. Envie de taper et de désobéir. Aucun emplacement, désolé, définissez une rotation relative. Comme vous pouvez le voir, je l'ai obtenu sur la ligne d'exécution. Je peux donc maintenant choisir le porche de la chambre parce qu'il dispose d' un système qui me donne quelques options de réinitialisation qui pourraient me convenir. Et oui, cela me convient parfaitement. Et encore une fois, je vais sélectionner Je vais y aller. Maintenant, puisque nous utilisons deux fois cette variable. Comme j'ai un aléatoire ici, il obtiendra une valeur différente ici et ici. Je dois donc promouvoir cette variable. Ici. Je vais utiliser cette variable dans une direction aléatoire. Et je vais apporter une direction aléatoire ici. Ici, ici. Bien. Maintenant, pour ce qui est des rotations, il nous en faut 90 dans le nord Il nous en faut 180 à l'est, moins neuf. Au sud et zéro à l'ouest. Et ce serait tout. Maintenant, il y aurait de la lumière dans nos chambres. Allons vérifier ça. Et nous avons des lampes dans nos chambres. Si vous voulez des emplacements différents, bien sûr, vous pouvez expérimenter avec les chiffres, je les trouve ou non. Je pense que ça va être pour celui-ci. Nous allons passer à la suivante avec le reste de l' utilité des chambres. Au revoir. 57. Achèvement de la décoration de la pièce par accessoires: Bonjour et bienvenue sur Game Design Workshop Under Engine Five, Procedural Dungeon Action RPG, cours de création Auparavant, nous avions créé notre événement Room Props Begin Play. Nous avons commencé à le remplir. Mais nous avons tiré nos valeurs de nos directives. Nous avons fait des prévisions et nous avons classé par catégories nombre de murs vides et le nombre de murs que nous avons ajoutés, non pas le nombre, mais les index des murs existants dans un tableau Ensuite, nous avons créé notre plan pour la lampe de notre chambre, qui se trouve ici Nous avons copié le comportement, nous avons légèrement modifié les valeurs, et nous avons copié collé également les maillages statiques, les lumières et tout le reste Non Ensuite, nous avons créé une petite fonction ici, mais une fonction, une chaîne d'événements, si vous voulez. Mais nous vérifions le nombre de murs que nous avons. Si nous n'avons pas de murs, nous détruisons la torche de la pièce réservée aux enfants que nous avons ajoutée à notre plan Ensuite, si c'est vrai et que nous avons des murs, alors nous avons les directions, nous avons obtenu la direction aléatoire. Nous avons calé une direction aléatoire et nous avons indiqué que l' emplacement relatif et la rotation de la torche de la pièce étaient fonction de certaines valeurs précalculées Maintenant, faisons de même pour le reste des objets de la pièce. Pour cela, nous allons faire un changement. Sur int. L'index int commencerait par un. Maintenant, épingle par défaut, et nous ajouterons des index jusqu'à quatre. C'est parce que nous allons changer en fonction du vide, et nous ne pouvons rien avoir de vide. Nous pouvons en avoir une vide, qui est une pièce, comme celle-ci, et nous avons l'autre pièce ici et l'autre pièce ici. Peut-être aurions-nous dû supprimer le précédent, l'espace. Donc, la pièce suivante serait ici, et la pièce suivante serait ici, le vide ici. Il y en aurait donc un vide, et commençons par celui-ci. Ce dont nous aurons besoin s' ajoute aux mesures statiques. Appelons-les thatqu A et thatqu B ou A un, mais appelons-les B. Si nous avons un Mt, alors la règle que j'ai ajoutée est que nous n' aurons pas deux mesures statiques Nous en aurons un, en utiliserons deux dans le reste des options. Oh, je vais y aller jusqu'au bout. Ensuite, nous allons obtenir notre réseau statique. A M. Et à partir de là, nous allons sélectionner dans une liste, nous allons élire. Et pour l'indice, nous allons avoir une plage aléatoire. La plage serait comprise entre zéro et cinq. Et ajoutons cinq options. Oh, pour les options. Nous en avons en fait trois, mais nous allons jouer un peu avec leurs chances d'apparaître Je vais donc passer au contenu. Je vais passer à nos meses statiques. Je vais sélectionner cette table. Et il y a encore une table. Et il y a aussi cet onglet. Je ne pense pas qu'il y en ait d'autre. Je pense que ce sont les trois variantes. Et jouons avec les chances. Disons que l'un d'entre eux a plus de chances que les autres. Un de plus en a un de plus. Ce serait tout pour celui-ci. Ensuite, nous devons définir sa rotation relative. que nous allons faire. Action. Ce que nous voulons faire ici, c'est utiliser une masse, itérateur, nous voulons juste changer le ya Un angle de rotation de la table à chaque fois. Nous allons l'utiliser à distance. Je vais utiliser 600 à 360. Maintenant, pourquoi ne changeons-nous pas de lieu ? Parce que lorsque nous aborderons cet article, il sera exactement centré, il sera là. Mais ce que nous faisons, c'est changer la rotation juste pour qu'elle soit aléatoire à chaque fois. Maintenant, que faisons-nous lorsque nous avons deux murs ou que nous avons MT ? Nous allons obtenir notre itinéraire. Nous allons chercher nos clés. Ensuite, nous allons faire une boucle autour de nos murs. Bien entendu, sur la base de notre élément A, nous allons obtenir la bonne direction. Parmi nos murs, nous devons sélectionner l'une de ces deux mesures statiques. Pour ce faire, nous allons passer à l'indice qui serait notre indice RA, parce que nous partons de deux ou d'un mur. Il y en aura donc un ou deux. Je ne l'ai pas connecté lorsque nous exécuterons le troisième, nous laisserons en fait le mesa statique, le deuxième mesgan statique Comme dans un MT, nous n'avons besoin que d'un seul maillage statique. C'est ce que nous faisons lorsqu'il n'y a qu'un seul mur, essentiellement parce que l'autre aurait été une sortie. Je vais le connecter ici. Continuons. Nous avons besoin de ces deux mesures statiques. Au cas où il n'y aurait qu' un seul mur à placer. Cela n'exécutera pas le deuxième index, mais nous n'avons pas besoin d'un est valide ici car il n'y aura probablement aucune erreur. La prochaine chose à faire est d'accepter Attic Me même si c'est A ou B qui seront choisis trois dans cet index. La prochaine chose que nous devrions ajouter est le nœud de sélection. Nous avons maintenant beaucoup de choix. Eh bien, encore une fois, c'est cinq, mais cette fois c'est en fait cinq. Je vais le supprimer. Je vais apporter cette sélection, qui en compte déjà cinq. Je vais le connecter ici. Je vais le faire. Ici, nous avons besoin d'un hasard. Et ici, de zéro à cinq. Un indice aléatoire, et les trois premiers seront ceux que nous avons ajoutés. Les trois premiers sont uniques. Unique. Pour le reste des trois, nous avons besoin de cette combinaison avec les cases. Puis celui-ci avec le casque. Je peux voir ce rouge dessus. C'est pourquoi je sais que c'en est un avec le casque. Il y en a une autre, celle-ci avec les plus grandes boîtes. Il y en a deux plus petits. Celui-ci en a un plus grand. Je n'en suis pas vraiment sûr. Ouvre-le. Il y a maintenant trois boîtes. D'accord. Plan directeur Et maintenant, nous en avons un. La prochaine chose que nous devons faire est de nous rendre à l'endroit correspondant. Encore une fois, nous allons avoir besoin d'une sélection. Sélection multiple. Pour l'indice, cette fois, nous avons besoin de la direction. En fonction de la direction, nous allons changer ces valeurs à 54 nord. A 54 est, mais sur y nième, et moins sur les valeurs x et y correspondantes T serait la rotation relative. R ici. C'est pourri ici. Encore une fois, un sélecteur, tournez-le vers, nous avons juste des indications Nous optons pour le -90 090180. Si nous compilons, allez vérifier le niveau. Et vérifiez si nos accessoires sont apparus. Oui, ils sont apparus. Leurs coins, leurs bords. Maintenant, nous avons des accessoires dans les chambres. Je trouve que ça a l'air sympa. J'ai l'air un peu décalé de tous les côtés. Essayons donc de résoudre ce problème pendant une seconde. Et si on les agrandissait un peu ? 1,2 ? De plus, ils semblent beaucoup mieux en ce moment. Ils se sentent un peu mieux dans cet endroit. Ils présentent un petit écart. Les tables ne fonctionnent pas, mais je trouve que nous ne pourrons pas vraiment jouer. Nous verrons si c'est le cas, nous allons le réparer. Non, que faire avec la quatrième option ? La quatrième option serait celle d'avoir des portes. Nous n'en avons pas un pour le moment. Heureusement, disons que lorsque nous avions deux portes, nous ne pouvions pas installer de machine statique ici Ce que nous allons faire, c'est créer des boîtes, nous allons en faire des boîtes, et nous allons leur activer la physique, afin que le joueur puisse pousser, mais c'est pour la prochaine fois, je vais vous voir ensuite passer 58. Ajouter des éléments de physique aux salles: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le cours de création procédurale Real Engine Five de Dungeon Action RBS Auparavant, nous avions créé du code pour les accessoires de notre chambre. Nous avons ajouté un code basé sur It basé sur le nombre de murs vides Lorsque nous avons un mur vide, deux murs vides ou trois murs vides, ajustez nos maillages statiques, maillage S à autre chose Et si ce n'était pas nécessaire, la seconde où nous l'avons reçu, nous avons détruit deux caisses. Maintenant, nous avons choisi parmi les messages aléatoires sélectionnés, les deux fonctions, le in of events Et dans le premier cas, nous ne définissons une rotation que parce qu'il s'agit d'un seul élément. Et pour le second, nous avons défini un emplacement relatif et rotation parce que nous le voulons sur les bords de la pièce. Maintenant, la prochaine chose que nous devrions ajouter, comme je l'ai dit, ce sont les objets physiques. Pour ce faire, nous allons obtenir notre mesure statique ici. allons faire en sorte qu'un ra ajoute une goutte, puis nous passerons à chaque boucle. Nous allons nous connecter. Ici. Ici. Et nous faisons une boucle à travers nos maillages statiques La moindre chose que nous fassions, c'est que la statique soit l'une des cases J'en ai un peu ici. Nous avons une boîte. Je vais le déposer ici. Et la prochaine chose que nous devrions faire est de lire ici cette lecture ici, puis cet endroit. Maintenant, pour le mot localisation, je vais passer à emplacement de l'acteur puisque notre acteur est en haut de notre vignette, et je vais juste en ajouter un peu sur les axes définis. Genre 20. C'est encore un peu plus haut qu'avant parce que nous avons déjà ajouté de la hauteur de décalage à cet acteur, puis je vais marquer un point au hasard dans la case de sélection Comme nous l'avons fait auparavant, et avec des tailles 40, 40 et 1. Je vais le définir comme lieu. Maintenant, si je donne un peu plus de hauteur, c'est parce que je le souhaite, mais nous allons activer la physique et ils ont la gravité. Ils tomberont et tomberont à un endroit aléatoire à chaque fois, sorte qu'ils n'auront pas l' air d'avoir été placés au même endroit à chaque fois. Maintenant, la prochaine chose que nous devons faire est de créer un personnage. Nous ne voulons pas que notre personnage grimpe dans ces boîtes. Nous voulons juste qu'ils soient bousculés. Ensuite, nous allons ajouter un remorqueur. Nous allons le faire. Non Ce remorqueur à composants, désolé, et nous allons créer un tableau à partir d'ici et placer remorqueur H comme objet physique parce que nous allons avoir besoin ce remorqueur pour les déplacer avec notre Maintenant, la prochaine chose que nous devrions faire, ce serait peut-être la physique. Oh, pas celui-ci. Imite-moi. N'activez pas la physique, imitez-moi. C'est ce que je veux. Maintenant, faisons un peu de place. Puisque nous avons ce mécanicien alors que nous n'avons pas de murs. Lorsque ce plan est propriétaire, lorsqu'il n'a pas de murs, il exécute ce mécanisme crée essentiellement deux boîtes Ce que nous pouvons faire prend un peu de temps et nous avons déjà créé un autre acteur en plus de notre acteur. Cela nous permettra de créer une salle de box supplémentaire. Pour ce faire, nous allons nous rendre dans les salles qui ont deux ou trois espaces vides. Parce que nous ne voulons pas faire ça dans une pièce qui n'a qu'un seul espace vide, il y en aura deux qui claqueront. Mais lorsque nous avons deux manières de sortir de notre tuile ou trois manières de sortir d'une tuile, il serait alors plus acceptable d'avoir des cases supplémentaires Pour ce faire, nous allons donc passer à la fin de ces quatre boucles. Créons un taux de près de 30 % peut-être pas de 30 %, mais nous allons essayer. Nous allons donc faire un changement, ce sera 30 %. Activez int. Et nous allons en fait additionner neuf jusqu' au chiffre neuf, car zéro supprimera l'ancien. En fait, nous n'en avons pas besoin d'autant. C'est ? Parce que c'est plus rapide que de le supprimer. Je vais aller à seulement trois d'entre eux. Il vous en faut neuf. Mais on va juste y aller. Gamme. Nous allons en fait laisser la valeur par défaut pour tout cela. Rateaux d'incendie. Nous avons de zéro à neuf, et nous avons zéro, un, deux. Tout ce qui est supérieur à deux déclenchera la valeur par défaut. Que signifient un, deux et trois P ? Que font-ils ? Ils sont en fait un acteur de la classe. L'acteur serait PP Room Pops. La transformation serait l'emplacement de notre acteur. Deux, un. Si nous partons de notre direction, nous allons rattraper. Nous allons ajouter des valeurs, nord serait fermé, l'est serait fermé, sud serait fermé, ouvert, désolé, pas fermé, ouvert, donc tout serait essentiellement ouvert. Nous utilisons le système que nous avons créé lorsque tout est ouvert, et cela engloberait alors une physique supplémentaire, des carrés, des ts, des créations. Maintenant, le seul problème, c'est que lorsque nous créons cette pièce, Maze Nous allons en fait y ajouter nos acteurs de destruction et la matroïde Nous avons la référence ici, et ajoutons-la aux enchères. Pour ce qui est de détruire, apportez-le ici. Faisons la liste. Maintenant, nous pouvons détruire cette pièce, mais nous n'avons aucune référence sur cette pièce supplémentaire que nous créons. Mais pas de soucis. Nous avons une référence sur cette pièce qui comprend cela et il y a un très bon lien, comme nous les appelons. Il y a des événements que vous pouvez lier : ils continuent à écouter jusqu'à ce que cela arrive, puis , lorsque cela se produit, ils continuent à écouter Ils reçoivent un message lorsque cela se produit. Oh, nous allons faire glisser le pointeur à partir d'ici et dire «   Non, pas d'ici, désolé d' ici, depuis la ligne d'exécution ». Je vais dire «   trouver » et « détruire ». Parce que quand c'est cet acteur qui est détruit, pas cet acteur. Lorsque notre acteur qui est train de naître, cet acteur est détruit. C'est pourquoi je pars d' ici et non de la valeur de retour Nous avons besoin d'un événement. Disons qu'il est détruit. Quand notre acteur sera détruit, nous allons le faire par acteur. Mais de cette façon, nous nous assurons que lorsque notre acteur sera détruit, ce plan sera également détruit Allons-y, jouons. Voyons si nos boîtes sont apparues. En réponse, nous pouvions voir un petit mouvement, donc la physique fonctionne. Maintenant, ce n'est pas une physique parfaite. Nous n'avons pas joué avec les valeurs. C'est un peu comme si nous allions essayer d'entrer dans la pièce, et ça va être le cas, puis on l'a bloquée. Nous allons marcher lentement jusqu'ici. Si nous sommes des hommes, nous les bousculerons. Ouais. Je parle de physique parfaite. Nous ne pouvons pas voir des boîtes s'envoler à l'extérieur de notre labyrinthe, même en les sponsorisant Cela peut arriver à cause de l'amortissement angulaire et de la masse n'est pas vraiment ça , mais je pense qu'ils vont bien Cela n'arrive pas souvent. Et quand ça arrive, c'est drôle. Vous avez vu que celui-ci est vraiment sorti de la pièce. Maintenant, quand nous commencerons à jouer, nous serons sur le toit. Alors au moins ils y resteront. Mais avec de nombreuses attaques et tout le reste, ils risquent de disparaître de la carte. Ils seront toujours détruits lorsque nous changerons de niveau. Oh, je pense que c'est tout pour celui-ci. Je te verrai le prochain. Au revoir 59. Importer le plan d'affaires de Revenant et de Hellgate Tower: Bonjour et bienvenue dans le cours de création d' ARP procéduraux cinquième génération du Game Design Workshop et du Rel d'action dans les donjons Dans le dernier cas, nous avons créé nos boîtes de chambre, les boîtes physiques, et nous les avons créées grâce à notre code Nous avons créé un tableau dans lequel nous formons des boucles avec nos maillages statiques Nous avons défini le maillage statique sur une boîte. Nous avons défini l'emplacement des mots un peu plus haut que celui de l'acteur, de sorte qu'ils disparaissent. Nous avons fait en sorte que le personnage ne puisse pas marcher dessus, et nous lui avons ajouté une touche , le pH, afin de pouvoir l' associer à nos attaques principales Nous avons également défini la physique de simulation sur vraie, afin qu'ils exécutent la physique. Ensuite, nous avons ajouté un petit mécanisme de triche, par exemple en profitant de notre code pour ajouter des cases supplémentaires dans notre pièce cases supplémentaires dans notre pièce afin de rendre le déplacement de notre joueur plus difficile Nous avons en fait utilisé la boucle avant entre les deux murs vides et les trois murs vides de nos tuiles, pour obtenir au final environ 30 % Mettez en gage le même acteur avec des instructions spécifiques. Cela fait toujours tourner les quatre murs vides, et cela fera réapparaître nos boîtes. Chaque pièce a donc la possibilité d'avoir des boîtes supplémentaires, à l' exception de la pièce qui n'a qu'un seul mur vide. Maintenant, détruisez ces acteurs, puisque nous n'avons aucune référence à eux depuis notre labyrinthe, nous utilisons l' événement bind on destroyed, qui fait référence à notre propre acteur que le labyrinthe va Ainsi, lorsque cet acteur sera détruit, il détruira l' acteur qu'il a engendré Maintenant, continuons à construire des accessoires supplémentaires dans notre donjon. Et le nouvel accessoire que nous allons construire sera la porte de l'enfer, la tour, un plan qui attaquera le joueur lorsqu' il se trouve à proximité avec une attaque automatique, et qui sera gardée par Maintenant, pour terminer le code de cette tour, nous aurions besoin de l' IA et de quelques autres éléments. Donc, pour le moment, nous allons simplement créer les visuels correspondants. Nous allons passer à notre contenu. Nous allons passer aux plans. Nous allons créer un autre de ces ennemis. Peut-être que les ennemis devraient être piégés. Mais vous pouvez le faire facilement. Nous pouvons accéder aux accessoires, attraper nos pièges et les déplacer vers les ennemis. Maintenant, lorsque nous déplaçons quelque chose dans le moteur, toujours bon d'aller au contenu, cliquer avec le bouton droit de la souris et de corriger les redirecteurs C'est aussi à ce moment que nous renommons des choses. Cela aide le moteur à gérer les redirecteurs. Maintenant, que sont les redirecteurs ? En gros, des liens et des chemins pour les objets de notre contenu. Encore une fois, une explication approximative. Maintenant, allons dans notre dossier Ennemis, cliquez avec le bouton droit de la souris et sélectionnez les plans, le type d'acteur, et nous allons appeler cela BP gate Maintenant. Ajoutons un maillage statique. Pour le maillage, nous allons sélectionner le plafond. C'est énorme. Nous ne voulons pas qu'il soit si grand. Nous allons le faire passer à une échelle de 0,5, et nous allons le faire pivoter de 90 degrés. Ensuite, nous allons le copier et le coller. Touchez-le contre lui-même et faites pivoter le second de 90 degrés cette fois sur l'axe y. Nous allons maintenant les sélectionner tous les deux. Et pour l'élément, nous allons utiliser le Mm. Mais l'exemple, l'original. Maintenant, nous allons utiliser une particule. Nous allons aller à la racine et à une particule, qui sera encore une fois, en cascade, pas en na gara Pour la particule, nous devrons télécharger notre personnage revenant. Nous allons aller à Epilancer. Nous allons aller dans la baignoire de notre bibliothèque, et nous allons aller dans notre coffre-fort. Dans le coffre, nous allons taper revenant. Au cas où vous n' auriez pas l'actif. Nous allons aller sur Marketplace et rechercher revenant Aragon Revenant ici, et nous allons l' ajouter au projet, ou en fait, pour vous, ou en fait, pour vous, il pourrait être ajouté à la carte parce que tout d'abord, nous devons l'ajouter à la carte pour qu'il apparaisse ensuite dans notre bibliothèque Maintenant, lorsque nous l' avons dans notre bibliothèque, nous appuyons sur Ajouter au projet, nous allons sélectionner le nom de notre projet et nous allons l' ajouter au projet Cela peut prendre un certain temps, je vais donc faire une pause ici et continuer ensuite. Lorsque nous aurons ajouté le personnage du revenant, un nouveau dossier apparaîtra dans notre contenu, qui sera notre parangon revenant À partir de cet emballage, nous devons définir le système de particules, qui sera le rôti Pas assez Tête rôtie rouge. Rouge vif. rouge. Il n'y a pas de rouge et nous devons le créer. Pas de problème. Vérifions celui que nous voulons. Je pense que c'est celui-ci. Et c'est un petit peu petit. Nous avons dû le développer et c'est ce qui a été fait. Nous l'avons tué partout. C'est pourquoi un sur x, 30 sur y, 20 sur cela, et pour l'emplacement moins y. Nous devons apporter quelques modifications à. Ce sera un, mais il doit y avoir quelques changements. Ouvrons la particule. Et nous allons supprimer le spawn, responsable de cette lueur Nous ne voulons pas cette lueur. Ne le supprimez pas. Nous n'avons pas besoin de l'émetteur. Je n'ai besoin que de ces flammes. Moi et j'économise. I. Hein ? Un peu unilatéral, partout. Et OK. Outre la couleur, je pense que nous devons également modifier la vitesse initiale. Nous le rendons donc plus uniforme. Tout d'abord, changeons de couleur. Nous passons à la cuve de couleur initiale, nous ne sélectionnons ni le vert, ni le bleu, mais le rouge, allons-y. Missive, faisons de même ici, faisons-le . C'est plus rougeâtre. Maintenant tu vois la différence, c'est comme ça , le plus flamboyant. Mais dans notre plan, c'est plus filandreux. La raison en est que j'ai changé l'échelle sur 30 à 20. C'est pourquoi j'ai fait la balance, pour qu'elle ressemble davantage à ceci. Je peux le réduire, mais j'aime le chat filandreux. Quoi qu'il en soit, passons ici et modifions la vélocité initiale. Donc ça s'étale un peu plus. Ou distribution. Nous n'avons pas besoin d'un uniforme de flux. Nous avons besoin d'un vecteur. L' uniforme va de à max. C'est une direction. De cette façon, cela ne fait qu'une ligne. Mais ce que nous utilisons, c'est un vecteur. J'ai pu le voir. Vecteur. Je suis sur la radio Start Velocity. Désolé, je veux que ce soit à la vitesse de démarrage. Oui, nous avons ici un vecteur. D'accord, c'est un vecteur, mais il n'en a que sur un seul axe. Nous devons augmenter la capacité ici et là de moins dix moins dix. Nous avons donc des allers-retours depuis notre point de départ, nous en faisons trois, pratiquement tous les côtés. Donc, si nous retournons à notre puits, sans rien faire, je l'ai gardé. Oui, ça marche ? Ajoutons simplement une icône de vélocité. Pour ce faire, nous allons simplement cliquer avec le bouton droit de la souris et accéder à vélocité dans vélocité, nous allons sélectionner vélocité avec. C'est ce qui va le faire. Si on y retourne, j'ai économisé. Il ne l'a même pas demandé. Je pense que je sais ce qui se passe parce que j'ai mis x sur un, nous l'avons mis sur 30, 2015, 15 looks A. Je vais aussi baisser ce chiffre. 15 20 15 15 Oui. C'est un peu trop, je pense, allez le taguer un peu plus bas. 15 c'était trop. Et cinq. Pour ce qui est du faible huit. Non Dix, c'était bien avec dix. Dix, c'était bien. Laissons les choses comme ça. J'ai mis aussi. Hein ? Pas vraiment, qui ne le sait pas. Réduisons sa durée de vie, passons à la durée de vie et passons au maximum à 1-2 0,8. Non Mon 0,5, allons-y 22,5. Oh, c'est encore pire. Je vais trouver de nouveaux paramètres, et nous allons les régler lors du prochain. Au revoir pour le moment. 60. Leçon 3D 59 Visuels de la tour du Hellgate et intégration du labyrinthe: Bonjour, et bienvenue dans le cours de création Procedural Dungeon Action Apres de Game Design Workshop Rail Engine cours de création Procedural Dungeon Action Apres Auparavant, nous avions commencé à créer notre plan Hell Gate. Et nous nous en sommes tenus à la particularité de notre personnage de revenant. J'ai donc joué avec les valeurs, et j'ai trouvé cela acceptable. Ce que j'ai fait, c'est le système de particules, j'ai sélectionné une échelle de dix pour tout, uniforme. Et sur la particule elle-même, j'ai changé la vitesse initiale à un maximum de cinq au minimum à moins cinq de la valeur x. La valeur Y serait à nouveau comprise entre cinq et moins cinq, et la valeur z serait cinq constantes. Maintenant, pour la durée de vie, j'ai ajouté 0,4 dans la distribution minimale et 0,5 dans maximale parce que nous voulons un peu de déséquilibre, mais pas autant qu'avant Et pour le spe, je suis passé de dix à 20 sur le taux de réglage de la cuillère, donc le taux est de Et je pense que j'ai également changé de sphère. Non Je lui ai laissé un huit. Quels sont donc les changements, je pense que vous devriez les avoir déjà. Et très rapidement, échelle de dix sur une cadence de 20, durée de vie de 0,4 et 0,5. Nous laissons la taille initiale telle quelle. Vitesse initiale, nous passons de 00 à 55 du minimum 00 à moins cinq et moins cinq, et sur l'axe z cinq Ensuite, nous avons changé la couleur, du co, au rouge. Et nous avons ajouté le code de vélocité. Maintenant que nous avons notre particule, passons à notre porte, et nous devons ajouter quelques variables et composantes de variables supplémentaires . Nous allons ajouter un, un point lumineux. Nous allons le laisser pour le moment car nous allons manipuler son code, probablement prendre le code du porche. Nous allons ajouter une capsule, et la capsule est juste pour une collision afin que nous puissions vraiment la manger. Nous allons donc l' étendre un peu. Oups, je l'ai sélectionné. Et si nous n'avons pas besoin d'avoir peur, nous pouvons simplement ajuster les valeurs, disons 100 et disons que les radios à capsules le seraient. Ouais. C'est là que nous retrouverons notre acteur. Maintenant, nous allons nous en servir pour frapper notre acteur. Nous passerons à nos mesures statiques, les sélectionnerons à la fois en contrôlant et en cliquant dessus, pour éviter toute collision et ne pas générer d'événements de chevauchement, car cela augmenterait nos performances. Maintenant, la prochaine chose que nous allons ajouter est un composant ici, ici une collision. Nous le laissons tel quel pour le moment, car nous allons l'utiliser pour programmer des attaques et des choses comme ça. Mais la prochaine chose que nous allons ajouter est un composant rotatif. Mouvement de rotation. Qu'est-ce qu'un mouvement rotatif ? Il s'agit d'un composant qui crée une rotation. Il a quelques paramètres prédéfinis, mais nous allons en changer au lieu de 80 Si j'appuie sur Simulations, vous verrez qu'il va tourner comme ça Et la raison en est que cela fait tourner l'ensemble de l'acteur. Maintenant, ce que nous voulons faire, c'est simplement faire pivoter ce maillage du grenier. Nous ne voulons pas faire alterner l'ensemble de l'acteur. Il s'agit d'une grande quantité d' informations supplémentaires qui n'ont pas besoin d'être alternées. Par exemple, la capsule, la lumière, etc. et même la collision de sphères dont nous déciderons si nous engageons le joueur ou non Nous allons donc sélectionner le composant rotatif, accéder au graphique Ben, l' amener ici, au début du jeu, et sélectionner le composant de mise à jour. Ce composant mis à jour. Et nous allons le connecter ici, et pour le composant mis à jour, nous allons utiliser la racine des deux maillages statiques, qui pour nous en ce moment est un maillage statique Je vais le connecter ici. Si je passe aux fenêtres d'affichage et à la stimulation, elle pivote également correctement. Il semble donc que j'ai fait pivoter le maillage statique différemment de celui de mes nœuds Parce que si je l'avais fait pivoter différemment, est-ce que c' était comme ça ? Fais. Oui, d'une manière ou d'une autre, j'ai tout gâché. Il est en train de se mettre à jour, la même rotation, il tourne différemment. Ce sont de vrais moments géniaux. Tout cela s'est produit parce que j'ai modifié les rotations ici Je vais juste tout réinitialiser. Un vrai a un problème lorsque nous sommes parents de quelque chose. Je vais juste le faire pivoter à partir d'ici. Je vais m'occuper de ça, et je vais le faire alterner. Si je simule. Je vais juste en changer 180 ici. Je pense que ça va être réglé. Oui, c'est réparé. Vérifiez les deux valeurs. Cela dépend de la manière dont nous nous sommes connectés et de la rotation de l' enfant par rapport au maillage. Notre système permet de modifier automatiquement les rotations fonction des coordonnées locales en fonction de l'enfant Bref, maintenant que nous avons quelques visuels en cours, allons les faire apparaître dans notre Oh. Nous avons laissé à ce générateur professionnel le soin d'afficher les coordonnées de notre chambre Et après cela, nous allons passer à chacun d'eux. Maintenant, où créons-nous cet héliate ? Nous allons créer une nouvelle variable, temporaire, locale. Nous allons l'appeler DM holes. Ça va être le point. Et il s'agira d'un ensemble de conteneurs. Je vais l'apporter ici, pour le connecter ici. Maintenant, quels seront nos cordons de température ? Ce seront les zones isolées et les balcons. Dans ces endroits, nous devrions avoir des ennemis. Je vais apporter les cordons thermiques et je vais les ajouter puis les ajouter à puis les ajouter Connectez les arceaux du balcon. Cela ne devrait pas être un point, je devrais parler de la structure, des chambres S, des chambres ST, d'un type variable de changement, non ? Parce que nos balcons relient tout cela, nous sommes reconnectés. Parce que nos balcons et nos zones isolées sont essentiellement des listes de coordonnées. Alors connectez-le ici, connectez-le ici, déconnectez-le et reconnectez-le au cas où Et maintenant, nous allons casser la structure et pour chacune des coordonnées. Et nous avons besoin de règles sur la façon dont nous allons créer ces portes Ele Quelles sont les règles pour qu'ils apparaissent ? La règle sera simple. Lorsque nous avons construit notre labyrinthe, cela ne s'est pas produit Nous en avons un ici. Nous avons des boîtes sur lesquelles figure ce symbole. Nous allons donc demander. La boîte contient-elle des symboles parce que nous en avons un qui brille trop, un qui brille trop bas, celui-ci qui s'allume et s'éteint Nous allons donc choisir ces points pour faire apparaître nos portes de l'enfer. Et nous utiliserons la même technique que celle que nous utilisons pour les lumières. Ils n'apparaissent donc pas très près les uns des autres. Maintenant, revenons à notre fonction. Arrêtons de jouer, récupérons notre donjon et remportons notre tuile actuelle Notre carrelage actuel, nous allons prendre la parole. En bas, tout d'abord, nous allons obtenir du matériel. Nous allons obtenir beaucoup de choses à cet étage, alors je vais simplement lire au début. Maintenant, si nous passons à nos étages, pour le contenu, passons à nos étages. Nous pouvons voir que l'élément du CG est l'élément zéro, et il en va de même pour tous les matériaux qui peuvent avoir ce CG comme ce sol en terre battue, élément Puisque nous l' avons conçu ainsi, où se trouve le labyrinthe ici, et considérez toujours l'élément zéro, ce matériau. Oh. Nous allons demander si ce matériau est égal à notre matériau et à nos instances matérielles, ce serait GL qui est le CGL CGL dans un et le g dans deux ou un troisième Mais selon mes informations, il n'est utilisé dans aucune situation par défaut. Tu vas installer une branche. Vous allez utiliser un nœud, et nous allons y ajouter une broche supplémentaire et connecter ces trois points. Même s'il s'agit de l'un ou l'autre, nous le saurons et nous poursuivrons notre chaîne d'événements. Mais je pense que c'est un bon point d' arrêt pour celui-ci. Je te verrai bientôt. Au revoir 61. Éléments essentiels et tableaux de données: Bonjour et bienvenue dans Game Design Workshop et Real Engine Five Procedural cours de création de Real Engine Five Procedural Dungeon Action Apes Auparavant, nous avions terminé le placement de nos portes de l'enfer. Et au début, nous avons également corrigé. Avec un point de rupture. En fait, nous n'avons pas utilisé de point de rupture pour le réparer, mais nous avons démontré le point de rupture. Je vais le supprimer. Reprenez la stimulation, et nous réglons le problème avec le matériel vide et nul. Maintenant, nous avons des portes de l'enfer, nous en avons à peu près s. Il y a une erreur ici. Voyons pourquoi cela se produit. Retournons dans notre labyrinthe. Et nous ne demandons nulle part Oui, nous ne demandons nulle part si les coordonnées sont celles d'une pièce spéciale. Nous allons donc mettre un or ici ou un taureau et aussi ajouter la règle selon laquelle nos coordonnées sont contenues dans les pièces spéciales. Carreaux spéciaux. Maintenant, cela ne devrait plus se produire, car s'il s'agit d'une tuile spéciale ou si elle se trouve à côté d'une porte, nous allons mettre le matériau à zéro, vider, puis il n' apparaîtra pas. Vérifions-le à nouveau. C'est une pièce cachée. C'est pourquoi il n'y a personne, pas de porte. Tout semble donc correct. Et la prochaine chose que nous devrions faire est de commencer à éplucher le reste, comme l'ascenseur, la boîte, et un peu de nos fonctionnalités. Mais pour ce faire. Il me faut encore une chose pour être prêt. Nous devons créer les objets et les objets jetables, car l'ascenseur aura besoin d'un objet, la boîte devra déposer des objets, etc. Commençons donc par accéder à notre dossier de plans, cliquer avec le bouton droit de la souris pour créer un nouveau dossier Appelons ces objets. Entrons dans ce dossier, cliquons avec le bouton droit de la souris et créons un plan plus ou un acteur. Et appelons cet article BP. Maintenant, cet objet du plan BP, ouvrons-le. Ce plan deviendra l'ensemble des objets. Pour ce faire, nous allons utiliser ce que l'on appelle une table de données Pour ceux qui sont nouveaux, une table de données est comme une collection de données en lignes et en colonnes. C'est similaire à une feuille de calcul, en gros. Et c'est pourquoi il faut un format sur les colonnes. Et pour utiliser un format sur les colonnes, nous utilisons une structure. Allons le créer très rapidement. Nous devons d'abord créer une structure, afin de pouvoir définir nos lumes dans notre table de données Nous allons donc utiliser une structure, nous allons l'appeler éléments ST. Entrons-le. Désormais, cette structure contiendra les informations de nos articles. Par exemple, la première chose dont nous avons besoin, c'est que nom de l' objet soit playnam Le nom de l'article est correct. La deuxième chose dont nous aurons besoin, c'est d'un article, lequel est une pomme. OK. Et cet objet, qu' est-ce qu'il a comme représentation visuelle ? Il aura un maillage statique, nous avons donc besoin d'un maillage statique. Le nom de l'élément doit être du type chaîne ou nom, mais une chaîne est préférable si nous avons des éléments avec des tirets ou autre chose Nous avons donc besoin du maillage. Appelons-le maillage, et ce sera du type. Maillage statique. Maillage statique simple, pas un composant de maillage statique, et ce sera une référence d'objet. La prochaine chose dont nous aurons besoin, c'est d'un son d'objet. Par exemple, quel est le son émis par cet objet lorsque je le prends, que je le laisse tomber ou que je l'utilise. Nous pourrions avoir deux sons pour cela, mais nous n'en utiliserons qu'un seul. Nous allons donc avoir le son de l'objet. Et la prochaine chose dont nous avons besoin serait une image d'inventaire. Nous aurions donc I Mach Je vais d'abord créer les noms , puis définir les variables. Ce ne seront pas des messages statiques, bien sûr. Objets : son, image de l'inventeur. Ensuite, nous allons entrer dans une variable pour expliquer si nous pouvons la choisir dans l'inventaire ou non. Disons que c'est pour faire l'inventaire. Dans ce cas, l' avant-dernier serait si l'article l'est. Nous allons donc l'appeler taxi. Je ne crois pas que c'est l' orthographe. Il faudrait peut-être un K. Je ne suis pas sûr. C'est bon. C'est bon. Et si c'est stable, nous avons également besoin d'un montant Oh. Appelons ce montant. Maintenant, le cas où c'est ajouté à l'inventaire. Nous allons avoir des ramassages d'or. L'or ne sera pas inscrit dans un inventaire, mais dans un compteur sur notre écran. Oh, sélectionnons cet onglet Passons au son. Il doit être de und Bound cube car nous utilisons des cubes sonores. Et l'image inventée doit être du type texture. En fait, la texture et le D. La différence entre texture et texture deux D est que la texture est une catégorie générale, qui inclut des plans de tubes, deux détecttures, des cibles de rendu, des textures de volume, beaucoup de choses Où la texture à d est spécifiée pour une image à deux textures que nous utilisons. Oh, je vais enregistrer ça. En fait, je vais fermer le stru. Nous devons définir Staab sur des lingots, et nous devons également définir le montant sur Il s'agit donc de compter un, deux, 34, et Staab est oui ou non Je vais l'enregistrer et le fermer, et revenons à nos articles. Oh, pour le plan de notre article. Non, non, non, ne revenons pas à notre plan d'article. Tu vas l'apporter ici. Nous allons passer à l'arrêt de la course car il n' est pas nécessaire que le jeu soit lancé. Maintenant, la prochaine chose que nous devons créer est une table de données, comme nous l'avons dit, cette collection d'informations sur les lignes et les colonnes. Oh, nous allons aller là où il y a du micellaire. Voilà, millneous, et nous allons choisir la table de données Lorsque nous choisissons une table de données, il faut choisir une structure de lignes. Nous devons donc définir nos lignes. C'est pourquoi nous avons d'abord créé cette structure. Nous allons donc sélectionner nos articles ST. R, je vais nommer les articles DT. Maintenant, ouvrons-le. Comme vous pouvez le constater, il est assez vide pour le moment, mais nous pourrions l'importer depuis source externe si nous avions un document CSV ou autre. Je pense que Json s'applique également. Mais pour nous, nous allons simplement créer quelques objets. Nous allons placer manuellement leurs valeurs et leurs messages. Et qu'est-ce que je veux dire ? Nous allons appuyer dessus ici. Nous allons appuyer dessus environ six fois, nous allons avoir six éléments. Et le premier objet serait, disons, un, et nous allons le nommer or. Maintenant, quel est le nom de la ligne ? Le nom de la ligne est utilisé pour récupérer les informations de chaque ligne de ses colonnes. Nous allons montrer en pratique comment il va être utilisé, mais en remplissant ce tableau de données. Oh, ou un filet, nous avons une pochette, je crois. P, nous avons une pochette. Et pour le son de l'objet, nous avons une pièce. Ici, nous avons une pièce. Image d'inventaire, nous avons notre pochette. Ce ne sera pas un inventaire à deux. Il va être ajouté dans l'interface utilisateur A de notre port d'affichage, donc je ne vais pas appuyer sur les deux inventaires. Et Saka Blue, ce n'est pas nécessaire puisqu'il ne s'agit pas d'un article d' inventaire Et pour le montant, sélectionnons-en un juste en bas. Nous allons créer un code pour modifier cette quantité, mais cela dépendra de l'ennemi, de la poitrine, de la personne qui la laisse tomber. Créons maintenant le deuxième élément. Eh bien, ce sera moi deux. Ce serait notre potion de pot HP. En fait, sans s. Pour la méthamphétamine statique, nous en avons une portion, je crois Tu as plein de potions. En fait, tout est une potion. Non, nous allons faire passer la potion au rouge. Pour le son de l'article, nous avons un son de bouteille. Oui Pour notre image d'inventaire, nous avons une potion rouge Maintenant, cela va être ajouté à l'inventaire, et c'est le cas, et il s'agit d'un matin. Maintenant, notre code va créer une quantité infinie de piles Mais si nous voulions une taxe MC, nous devrions l'avoir comme variable dans notre tableau de structure. Ce serait donc une option dans nos colonnes ici. Maintenant, pour le troisième élément, nous allons le nommer. Trois. Ça va porter le nom de vitesse. Potion. Et pour le match, nous avons une potion bleue Et pour nos articles, nous allons réutiliser les bouteilles. Et pour l'image d'inventaire, nous avons la potion bleue Ce sera un inventaire. Mais disons que la potion de vitesse sera empilable Cela figurera dans un inventaire. À utiliser une seule fois. Disons qu'avec notre potion bleue, nous voulons en prendre deux gorgées pour y mettre fin Je peux donc en mettre deux. Ce serait sa valeur par défaut. Quand je le mets dans l'inventaire, je peux l'utiliser deux fois. Notre quatrième article serait I quatre. Et ce serait une potion qui, lorsque nous la buvons, explose et crée une explosion Disons autour de nous, et cela tue toutes les cibles qui nous entourent. Appelons ça une potion de rage. Réglons son maillage statique sur cette potion brunâtre-brunâtre. Utilisons à nouveau les bouteilles. Et pour l'inventaire en mars, nous avons le rouge foncé Ocean. OK, brun rouge foncé, ça pourrait sembler différent dans le monde. Nous verrons. Nous allons donc l'ajouter à l'inventaire, et il ne servira qu'à une seule utilisation. Maintenant, pour notre cinquième article, ce sera moi cinq. Et appelons ça une potion. Parce que cela augmentera notre temps disponible pour continuer à jouer. Si le temps imparti est écoulé, nous allons mourir. Nous allons utiliser la potion jaune. Nous allons utiliser le flacon. Et pour l'image d'inventaire, nous allons utiliser le jaune océan. Il sera dans notre inventaire. Ce sera sur le montant d'un, et il ne sera pas empilable Oh, pour un dernier élément, nommons-le six. Et il s'appellera E. Il y aura le maillage des touches et le son de l'objet. Oui, les touches seront E. Il y aura le maillage des touches et le son de l'objet. Oui, déposées ici devant nous. La carte d'inventaire devrait également être essentielle. Il est ajouté au montant d'un, et il n'est pas empilable Faisons des économies. Fermons notre tableau de données. Et je pense que c'est tout pour celui-ci. Nous allons passer à la suivante en faisant en sorte que ce plan d'article puisse devenir n'importe quoi Au revoir pour le moment. 62. Comportement de l'élément et widget de survol: Bonjour et bienvenue dans Game Design Workshop, sur Real Engine Five création de RPG d'action et de donjon basé Enfin, nous avons créé le tableau de données et la structure du tableau de données. Nous avons indiqué que les informations sur l'article seraient le nom de l'article, le maillage, le son de l'article, l'image l'inventaire, la question d'inventaire T que nous avons, la question empilable que nous avons et le montant Ensuite, nous avons ajouté que nous avions utilisé cette structure pour créer notre table de données pour les volumes Ensuite, nous avons rempli le tableau de données manuellement avec les valeurs que nous voulions pour les éléments. Et nous avons créé l'élément du plan. Passons maintenant à l'élément du plan. Pour cette partie du didacticiel, nous allons renseigner les composants et le fluage de construction Ainsi, lorsque nous proposerons notre article, il aura les propriétés souhaitées Oh, expliquons un peu comment fonctionneront nos articles. Je vais ouvrir Paint. Disons que c' est notre acteur ici. Voici le plan de notre article. Tout d'abord, il aura le maillage que nous allons lui représenter. Donc, s'il s'agissait d'une pomme, d'une pomme verte, elle utiliserait le maillage de la pomme. Maintenant, comme nous voulons que nos articles soient un peu plus visibles, nous allons également ajouter une source lumineuse ponctuelle, en bleu. Il s'agit d'une source de lumière. Eh bien, corrigeons. Je l'ai corrigé. Pas de commentaires Voici la lampe, voici la source de lumière. Mais la particularité cette source de lumière, c'est qu' n'éclaire que ce maillage et cela n'affectera pas le reste du monde. La troisième chose dont nous aurons besoin est montrer le nom de l'objet au joueur. Nous allons donc créer un widget auquel nous ajouterons deux éléments dont nous aurons le nom. Enfin, nous aurons une collision autour de l'objet afin savoir si notre joueur se trouve à l'extérieur de la collision ou s'il est à l'intérieur de la collision, afin de pouvoir choisir l'objet à portée entre le joueur et l'objet. Donc, si le joueur est impliqué dans cette collision, il pourra la sélectionner. S'il ne l'est pas, il ne pourra pas le choisir. Non, allons-y. Nous allons avoir besoin de Mesh. Appelons cet objet un maillage. Tu vas avoir besoin d' une collision avec une bière. Autour de notre article. Passons à notre tableau d'affichage, afin que nous puissions voir un peu mieux Tu vas avoir besoin d'une lampe ponctuelle. Et nous allons avoir besoin d'un widget. Un widget, nous le ferons un peu plus tard. Nous allons visiter Hide Debt. Et pour le maillage du grenier, nous devons le sélectionner. Nous allons passer aux détails , à la collision, et nous allons sélectionner un ton Nous allons tout ignorer sauf la visibilité, Ama. En fait, nous ne nous chevauchons pas, nous allons bloquer. La prochaine chose à faire est de ne pas le laisser projeter de l'ombre, car cela va coûter très cher. Nous allons aller projeter des ombres. Nous allons l'éteindre. C'est le moment de passer à Lightning Channel. Nous allons sélectionner les canaux, qui sont les canaux d'éclairage, lesquels de ces canaux éclairent cet élément, et nous allons sélectionner le canal à activer. Allons-nous atteindre notre point de mire ? Ensuite, nous avons des chaînes ici. Sélectionnons les deux canaux deux, et sélectionnons le canal zéro. Tout dans le monde est donc affecté par le canal zéro. Mais cette lumière n' émettra pas dans ce canal. Il émettra vers le canal deux, dont notre maillage est conçu pour capter la lumière. Fermez ça, fermez, changez le monde en gros et revenez à notre point de vue. Je vais sélectionner certains paramètres pour lesquels nous avons prédéterminés 1280, knes, rayon d'atténuation sept, et le reste restera comme Enfin, sélectionnons la sphère et fixons son rayon de lance à 300 Mais ce sera le rayon dans lequel nous pourrons récupérer l'objet. Et c'est un code assez simple. Donc, ce que nous allons faire, c'est remplir rapidement ce code. Au début de l'événement de chevauchement, nous allons créer une variable, une variable de Boulan, appels capables de sélectionner ou de capter une plage ou autre, capables de sélectionner Je vais le régler sur J'ai choisi end overlap. Je voulais choisir Begin Overlap. Mais j'ai aussi besoin que les extrémités se chevauchent, donc je vais apporter les deux. Ce sera vrai au début du chevauchement. S'il s'agit de notre autre composant, il possède le remorqueur E, qui est notre capsule de joueur, et s'il porte le tag P, l'objet à récupérer Et nous allons faire la même chose en ce qui concerne le chevauchement final. À la hâte de COVID et configurez la capacité de décoller. Et comme nous voulons que cette sphère ne fasse rien d'autre avec quoi que ce soit d'autre, nous pouvons modifier ses paramètres de collision personnaliser pour tout ignorer sauf le p, qu'elle chevauchera Parce que lorsque nous laissons tout sur l'ordinateur, celui-ci calcule en permanence si la visibilité augmente, si la ligne de traçage d'une caméra se réchauffe, si les ennemis auxiliaires doivent être Nous allons donc vérifier les Mais notre physique va de soi. Si nous avions décrit les véhicules, cela reviendrait à calculer toutes ces choses en permanence, même si la réponse est non. Comme il n'y a pas de collision physique ou quoi que ce soit d'autre, nous n'avons que de la physique quérienne Mais c'est par défaut. Non La prochaine chose dont nous avons besoin est le widget. Créons donc rapidement ce widget. Accédez à notre dossier y et sélectionnons un clic droit sur l' interface utilisateur, le plan du widget Appelons cet article W G. R. En fait, le widget Item. Ce mot. Mot de l'article. Ce widget ne sera pas nécessaire pour beaucoup de choses. Alors remplissons-le très rapidement. Ouvrons-le. est juste que cela provient du widget qui n'a pas besoin de convas C'est parce que nous sommes quelqu'un dans le monde et que nous pouvons le laisser mourir selon notre plan, par d'autres endroits, puis par les convas Mais il va nous falloir un bouton. Et pour le bouton, il nous faut un xt. Et ce que nous allons faire, c'est tricher un peu Nous allons sélectionner le style du bouton , sa teinte et sélectionner le zéro alpha en mode normal, afin de ne voir que le nom de l'élément. Et lorsque nous survolons, nous allons simplement laisser la teinte être à 0,1 C'est un peu visible. On voit quelque chose derrière ce nom. Supposons que lorsque nous appuyons dessus, il revient à zéro. Alpha. Nous avons donc une boucle entre ces trois points, comme je les ai survolés. C'est ce que je pouvais voir. Je l'ai survolé, puis quand j'ai cliqué dessus, je suis revenu à ce qu'il était lorsque j'ai Donc ça va. maintenant à la façon dont le monde le souhaite réellement car nous voulons que ce widget soit affiché au-dessus d'un message statique, au-dessus de toute autre chose, en gros, de celui-ci lui-même. Nous allons réellement le montrer à l'écran. Nous ne le verrons pas réellement apparaître dans le monde. Et pour ce faire, nous allons accéder à notre widget sur notre article. Et que dit Top, où il doit être, dans quel espace doit-il être placé dans le monde ou à l'écran ? Non, nous allons choisir l'écran. Et j'ai des tailles de lignes prédéterminées, qui seraient de 240. Pour l'échelle, je vais juste choisir deux en tout. Il doit également être assis un peu plus haut. Disons le 112, c'est bon. Mais nous n'en voyons pas encore les résultats. Nous pourrons les voir lorsque nous déposerons les articles. Oh. Continuons avec les informations de remplissage automatique de l'écran de construction. C'est la première fois que nous allons utiliser notre tableau de données. Nous allons obtenir des données. Et à partir de la ligne du tableau de données, nous allons sélectionner pour tableau de données nos éléments DT, ce qui nous donne une liste, que nous n' utiliserons pas en fait, et nous allons promouvoir le nom brut en variable. Tout le nom brut, le nom brut est un bon nom. Maintenant, si je compile, vous pouvez voir qu'il a conservé sa valeur d'origine de I one. Mais nous voudrons changer cela en externe, nous allons donc le rendre modifiable en instance et l'exposer au moment du spawn Mais lorsque nous répondons à l'objet, nous pouvons à nouveau changer le nom de cet objet à partir de là lorsque nous le créons Ainsi, chacun des acteurs qui génèrent l'objet peut avoir une idée personnalisée de ce qu'il va générer. Je vais maintenant promouvoir la sortie d'objets de la liste biblique. Données. Cet article connaît ses propres données. Et nous allons obtenir les éléments et le maillage statique, qui sont des informations dont nous avons besoin à partir de nos données. Donc, je vais casser la structure. Et obtenez les informations de maillage connectées ici. Je vais le connecter ici. Maintenant, comme vous pouvez le voir, si je vais dans la fenêtre d'affichage et que je compile. La petite pochette est apparue ici. Parce que le nom de notre ligne par défaut est I one. Si je sélectionne I deux, la potion rouge apparaît. Si je sélectionne I trois, le bleu apparaît. Vérifions-les tous 56. Hé, écoute, d'accord. Je pense que c'est un bon point de rupture pour le moment. Nous allons passer à la suivante. Au revoir 63. Animer le plan de poitrine: Bonjour, et bienvenue dans Game Design Workshop, Real Engine Five Procedural Dungeon Action création ARB Z Auparavant, nous avions terminé avec notre article. Nous avons terminé le code pour le tri des données des articles dans notre tableau de données. Nous avons utilisé une variable a pour obtenir leur propre nom, qui est également exposée lors du spawn, afin que nous puissions la définir lorsque nous créons l'objet À partir de ces données, nous avons utilisé les données du maillage pour définir le composant de maillage statique de notre plan Nous avons également ajouté le widget, et nous l'avons créé, qui sont des éléments que nous utiliserons pour afficher dans le monde entier Nous avons dit qu'ils apparaîtront essentiellement à l'écran, donc nous n'avons pas à ajouter de parties supplémentaires. Il apparaît au-dessus de tout maillage statique. Il existe d'autres moyens de le faire, mais cela nécessiterait de passer par des matériaux un peu plus compliqués. Nous allons entrer dans ce domaine pour que notre joueur soit visible à travers les murs, mais nous voulons le faire sur les widgets dès maintenant. Oh, puisque nous en sommes aux objets, je pense que c'est le bon moment pour montrer comment nous allons les créer. Et je pense qu'il est temps de terminer le coffre, le plan de la poitrine pour le démontrer Nous allons accéder à nos accessoires, l'intérieur des plans de dossiers, et nous allons ouvrir notre Maintenant, si vous vous souvenez, si nous accédons à notre fenêtre d'affichage, nous avons ajouté notre filet statique pour la poitrine. Mais nous avons également besoin d'une couverture, je crois que c'est ce que l'on appelle, la partie supérieure, dans tous les cas, que nous animerons lorsque nous ouvrirons le coffre Je vais ajouter un autre maillage statique. Et pour sa propriété de maille statique, je vais sélectionner le haut de poitrine. Et je vais le placer juste au-dessus de la poitrine. Comme vous pouvez le constater, le pot à pois se trouve déjà au bord de la face arrière. Mais cela nous aide lorsque nous voulons le faire pivoter par sauts. Je m'appelle Flip. Cela nous aide lorsque nous voulons le faire pivoter. Et je dois changer cela pour améliorer les siestes en cinq points Oui, je pense que c'est bon. Là-bas. Je vais compiler et enregistrer. Maintenant, comme nous en avons besoin pour l'objet, une collision avec l'objet correspond au plaar dans la portée de rage, même que nous en avons besoin pour le coffre Donc, je vais copier cette sphère à partir de l'objet du plan, et je vais la coller sur le gros coffre Je vais laisser les choses aussi simples que car c'est la même distance que nous voulons utiliser. Et la partie suivante que je vais copier à partir d'ici est en fait le widget, car ce sera le même widget, je vais le coller ici. Et aussi, je vais avoir besoin du code des collisions de la sphère. Je vais le copier, et je vais l'apporter ici. Maintenant, ces deux variables cette variable n'existe pas réellement dans notre plan Donc, ce que je vais faire, c'est cliquer dessus avec le bouton droit de la souris et dire «  créer une variable », capable choisir comment elle pourrait s'ouvrir. Donc, pour changer cela. Et cette partie est active lorsque nous pouvons interagir avec elle. Et maintenant, en disant « interagir », nous ouvrons un nouveau chapitre. C'est ainsi que nous allons interagir avec nos objets. Notre jeu est un jeu de clics de souris, ou c'est comme un Daloclon Cela signifie donc que lorsque nous cliquons, nous voulons interagir avec ce qui se trouve sous notre souris. Puisque nous sommes dans une vue isométrique et inclinée, cela ne sera pas très simple à faire Nous allons devoir faire quelques calculs mathématiques, quelques mathématiques pour obtenir le point que nous voulons Mais après tous ces calculs, ce qui compte, c'est que nous envoyons un événement interagir avec cet accessoire, la boîte ou l'objet Et pour ce faire, nous allons utiliser l'interface Blueprint, une interface Blueprint que nous allons concevoir pour les articles Puisque nos objets seront des acteurs de différents types, c'est une bonne façon, une façon optimale de le faire. Il existe d'autres moyens de le faire, mais dans ces types de scénarios, les interfaces de plan sont couramment utilisées et constituent une meilleure technique Passons à notre navigateur de contenu. Passons à nos plans. Passons à notre dossier BI. Faisons un clic droit et créons une interface de plan op. Nous y voilà. Appelons-le Bi item C. Ouvrons-le. Créons un événement appelé Inter. Maintenant que nous avons cette interface, ajoutons-la à nos plans, au Big Chest et à l'objet BP Pour ce faire, commençons par l'élément BP. Passons aux paramètres du club. Passons à nos interfaces implémentées, appuyons sur Ajouter, puis sélectionnons J'interagis. Désolé, si l'article arrive. Maintenant, je vais compiler et enregistrer, et je vais faire le même gros coffre. J'ai fait exactement le même type en interagissant sur l'article livré. Compilons et sauvegardons. Maintenant, sous nos fonctions, nous avons nos interfaces. Je vais ouvrir et double-cliquer sur l'interaction pour créer un événement. Donc, lorsque nous envoyons le message pour interagir, la première question est de savoir si le joueur est à portée ? Je vais mettre une branche, et je vais sélectionner A pour ouvrir une branche connectée à la branche. Maintenant, si nous sommes à portée, nous devons savoir si nous avons déjà interagi, car étant donné que l'animation nous allons jouer ouvre le coffre, nous ne voulons pas réinitialiser cette animation Nous créons un autre taureau, un copier-coller pour l'ouvrir et le nommer en interaction. Je vais l'apporter ici. Je vais sélectionner un t. Et je vais sélectionner ici un et une note. Cela signifie que nous devons être capables d'ouvrir et de ne pas interagir. Donc, si cela est vrai, cela renverra false et false. C'est faux, puis cela redeviendra faux. Ils doivent tous les deux être vrais. La prochaine chose que je vais faire est de configurer l'interaction. Maintenant, quand notre poitrine s'ouvre, nous devrions émettre un son. Je vais jouer du son. Et nous avons un bruit de poitrine. Et la prochaine chose que nous devons faire est d'utiliser le widget. Je vais donc faire en sorte qu'il joue ensuite sur le widget pour le faire. En fait, nous pouvons également détruire ce composant car il n'est plus nécessaire. Après l'avoir assise de manière invisible. Et maintenant, nous devons animer notre poitrine. Je vais donc apporter une chronologie. Je vais le connecter pour jouer depuis le début et accéder à cette chronologie. Je vais créer un flow truck. Je vais ajouter deux points à la variable. Le premier sera zéro et zéro. La seconde prendrait, disons, une seconde. Beaucoup, disons p 7 secondes, et la valeur serait égale à un. Faites-le zoomer. Utilisons la dernière pluie sinon elle ne le sera pas pendant les 5 secondes complètes. Passons à la mise à jour. Oh. Nous allons apporter notre filet, qui se trouve en haut de la boîte. Et nous allons définir la rotation relative. Maintenant, nous n'avons pas besoin de stocker des variables ou quoi que ce soit d'autre. Nous l'avons codé en dur. Pour alerter Theat ou l'Alpha, nous allons utiliser le camion Nous allons utiliser le chemin le plus court. Examinons notre poitrine. le moment, disons 91 x. Nous voulons passer à -20. Moins t. Je veux partir de 90. Jusqu'à 20 ans. Maintenant, certaines choses que nous devons faire sont également d'accéder à notre maillage aatique du corps des racines, et nous allons passer à sa collision et le modifier Nous allons sélectionner la réinitialisation personnalisée. Je vais tout régler sur Ignorer, sauf la visibilité, la caméra et l'étang, parce que nous voulons que le coffre nous bloque le chemin. Nous ne devrions pas pouvoir le traverser. Oh, je vais laisser le haut de la couverture sur « Pas de collision ». En fait, si nous ne le laissons pas entrer en collision, il est possible que nous ne puissions pas cliquer dessus. Mais on voit. Je n'aimerais pas que le joueur soit bloqué par le coffre ouvert. Mais nous verrons comment cela fonctionnera. Maintenant, la question se pose que se passe-t-il lorsque j'ouvre le coffre ? Ce qui se passe, c'est que nous allons faire apparaître les objets. Nous pouvons toujours définir un nombre préfixé d'articles pour qu' il soit toujours téléphoné comme celui-ci Mais si nous avons les informations de notre labyrinthe, nous pouvons obtenir le niveau de notre labyrinthe et l'ajuster en conséquence Je vais donc créer une nouvelle variable. Je vais l'appeler Maze. Je vais le fabriquer du type générateur de labyrinthe. Son générateur. Oh. OK. Voici une référence d'objet, un générateur de base, et je vais l'exposer sur Sone et l'édition d'instance En fait, première modification en instance car si elle n'est pas modifiable par instance, cela créera une erreur, si je décoche ce bouton pour compiler, cela créera une erreur, par exemple si je décoche ce bouton pour compiler, le message exposera sur son mais pas instancier Il doit être modifiable par instance. Encore une fois, lorsque nous introduisons un plan sur la carte, il s'agit d'une instance du plan Donc, si nous voulons que la valeur ait des nombres différents sur chaque instance, elle doit être modifiable par instance Revenons maintenant à notre générateur de labyrinthes. Trouvons où nous faisons apparaître le coffre, qui, je pense, fonctionne avec des accessoires Le début à Big Chest. Je vais l'actualiser . Pas de compilation. Dave. Je vais me rafraîchir à nouveau. Et nous l'avons ici. Donc, pour le générateur Mz, nous allons utiliser la santé Nous avons maintenant une référence à notre générateur Moi dans notre poitrine. Je pense que c'est un bon point d' arrêt pour celui-ci. Je te verrai bientôt. Au revoir Oh. 64. Mécanique de la poitrine et système de chute d'objet: Bonjour et bienvenue dans le cours de création de RPG d' action-RPG basé sur Real Engine Five Procedural Dungeon Workshop Real Engine Five Procedural Dungeon action-RPG Auparavant, nous avions lancé notre chaîne d'événements pour nos interactions. Nous avons créé une interface de plan que nous avons appelée item coms Et dans cette interface, nous avons créé une fonction appelée interact. Nous avons intégré cette interface à notre grand coffre et à nos plans d'objets, et nous avons lancé la chaîne d'événements, le grand coffre Après l'interaction avec l'événement, nous avons donc demandé si nous étions à portée et si nous n' interagissions pas pour le moment. Et si la condition s'appliquait, nous avons continué à régler l' interaction sur true , à émettre un son, masquer le widget et à le détruire. Ensuite, nous avons créé une chronologie pour animer notre meilleur arrêt Nous avons également créé une variable appelée Maze generator, qui stocke la référence à notre générateur, celui qui a semé le coffre Maintenant, commençons l'événement de jeu et créons une variable que nous appellerons ce nombre maximum d'objets Réglons-le au début de la partie de manière à ce qu'il soit d'une portée aléatoire. Aléatoire dans la portée. Commençons par le fait que c'est un grand geste. Il devrait supprimer au moins trois objets. Quand il y a de la place, et le maximum devrait être niveau d'un générateur de labyrinthe Le niveau du générateur de notre générateur de labyrinthe devrait être le niveau de notre générateur plus trois Donc, la première fois, il laisserait tomber 3 à 4 objets. Parce que notre générateur principal ne part pas de zéro, il part de un Si nous allons dans le menu principal, nous pouvons voir qu'en cliquant sur le bouton Démarrer, nous faisons apparaître le premier générateur, nous avons le niveau du générateur à un C'est enfin l'heure. Accédez à notre chronologie, l'événement terminé et à notre premier article. Nous allons utiliser l'acteur spawn de la classe. Nous allons diviser la transformation, et nous allons obtenir un lieu d'appel. À utiliser comme point de départ pour la localisation. Cela signifie que notre objet apparaîtra réellement dans notre coffre, comme dans le zéro, le zéro, les coordonnées locales de ce plan, qui indiqueraient que nous sommes ici Mais ce n'est pas un problème, car nous allons créer un mécanisme dans nos objets pour trouver une place à côté de notre poitrine. Mais ce code figurera sur nos articles. Non Nous répondons au premier point. Il va afficher l'objet de classe P. Et nous avons le nom de notre ligne, I six, qui est en fait notre clé, n'est-ce pas ? Parce que I six est la valeur par défaut et c'est la clé. Et c'est le seul endroit où nous allons générer la clé, nous allons la garder à six, et nous allons l'ajouter à notre liste de cibles à détruire Pour ce faire, nous allons obtenir la référence de notre générateur Ma. Nous allons faire en sorte que les acteurs en détruisent, et nous allons ajouter à ce tableau la valeur de retour de l'acteur généré Pour le reste, je vais juste copier le téléphone ou l'article BP. Je vais connecter l'emplacement de l'acteur, et nous allons créer une boucle personnalisée. Ou nous pouvons même le mettre dans un for loop act to tom ou loop. Et tu as vu ce qui s'est passé ? Quand j'ai connecté ces deux-là comme ça, mais je voulais un nœud derrière ces deux-là. Donc, je fais simplement glisser le pointeur d'ici, je fais ou je boucle un nœud, et il se connecte automatiquement à ce que je voulais faire. Mais il est toujours bon de vérifier si les connexions sont correctes. Maintenant, pour le dernier index, nous allons utiliser le nombre maximum d'éléments. Pour le premier index, nous allons utiliser le numéro un car nous avons déjà généré un objet Donc, si nous voulons générer trois objets, cela devrait commencer par un Parce que s'il partait de zéro, nous créerions un objet supplémentaire Maintenant, pour chaque objet généré, nous devons à nouveau ajouter des acteurs pour détruire une base de copie, ce nœud d'ajout est ici Nous allons ajouter cette valeur ici et la proposer acteurs pour qu'ils la détruisent. Dans l'autre sens. Et la raison pour laquelle je dois faire le contraire, c' est que lorsque je me connecte, s' agit d'un nœud joker. Donc, peu importe à quoi je me connecte, la première chose que je vais connecter, c'est obtenir le type de données de cette chose. Ici, nous renvoyons un objet de type VP, alors que notre liste d'acteurs à détruire sont des acteurs. Un acteur se trouve au-dessus dans la hiérarchie de l'élément VP. Je ne peux donc pas ajouter une hiérarchie ci-dessus à quelque chose dans les parties inférieures. Lorsque je l'ai connecté, cela est devenu un objet VP où l' objet objet ne peut pas être un acteur, mais l'acteur peut être un objet objet. Je vais donc le déconnecter, le connecter ici, puis le connecter. Tous les acteurs que nous créons sont ajoutés aux acteurs pour les détruire Maintenant, quels objets puis-je trouver à partir de l'identifiant brut, du nom, je vais sélectionner et pour le joker, pour les objets, un joker aléatoire dans une plage aléatoire Ça va être 0-4, trois à quatre pour 01234. Et commençons par l'or que j'ai gagné. Sais-tu quoi ? Puisque nous savons que notre tableau commence par I, je peux utiliser un Si je le tape correctement, sonne. Que signifie une ficelle pour stylo ? Cela signifie que nous sommes une chaîne en attente de A à chaîne B. Si je le place ici, et que je connecte l'entier anum ici, et que j'ai un chiffre, et je peux le connecter directement ici au lieu d'avoir l'impression que tous ces éléments élisent une liste Et ce seraient nos objets volés lorsque nous cliquons sur notre poitrine Nous allons vérifier tout cela plus tard, et nous allons déboguer tout ce qui est nécessaire. Mais pour l'instant, nous allons le laisser tel quel. La seule partie qui manque pour le moment est le nom du coffre sur le widget. Parce que nous avons un widget ici. Lorsqu'il apparaît, nous devons être un nom, et la classe du widget ne l'est pas. Je suis sur le sujet. Oui, c'est pareil. Je n'ai pas sélectionné la classe de widget sur ces deux widgets. Tu vas le faire maintenant. Nous allons l'appeler W G. Item world. Il s'agit d'un widget. Pi Économisez sur pile, et voici le même monde. Dave et compilez. Oh, mon Dieu. Il s'agit d'un mouvement par défaut, car il se trouve ici et ici. Et s'en va automatiquement. Quoi qu'il en soit, passons au widget et créons une fonction. Dans l'événement graphique, bien sûr, le graphe d'événements du concepteur. Appelons cette fonction. C'est maintenant, c'est encore une fois un peu redondant. En fait, je vais d'abord aller chez le designer. Je vais sélectionner le texte car il ne s'agit pas d'une variable. Ce devrait être une variable, donc je suis capable de piloter. Donnons-lui également le nom du texte en tant qu'élément. Et je pourrais être sur notre plan et simplement le récupérer depuis le widget, cette partie et simplement faire glisser ce texte Également ici prêt. Eh bien, comme vous pouvez le voir, c'est refait, en gros, c'est la même fonction. Mais je n'ai pas besoin de faire glisser l'élément t depuis le widget de cette façon. Non, ça va un peu arranger les choses. Maintenant, nous allons placer le texte sur notre poitrine. Nous devons apporter notre widget. Et comme nous l'avons fait avec le composant enfant dont nous avons besoin pour comprendre ce qu'il y a à l'intérieur du composant enfant, qu'est-ce que l'acteur ? Qu'est-ce que l'enfant acteur de la composante enfant ? Nous devons faire la même chose pour le widget. Il s'agit de composants, d'un composant widget, un composant acteur enfant, d'un composant de maillage statique Même dans ce cas, nous devions ajouter quel type de maillage statique. Ce sont des cellules qui contiennent les informations, mais elles ne savent pas ce qu'elles contiennent. Il faut leur demander. Pour le demander, nous allons acheter un widget. Ensuite, nous devons voir si le widget que nous avons obtenu correspond notre univers d'objets WG it, quelque chose comme ça Je vais donc passer au monde des objets de WG. Nous savons que c'est tout ce que nous allons réussir. Je vais le convertir en fonte pure. Même si ce n'est pas le cas, nous avons du succès, mais nous aurions besoin d' implémenter du code. Mais à partir de là, je n'enverrai qu'un texto. Maintenant, c'est ici comme ça, plus facilement. Moins de nœuds. Plus vous avez de notes, plus la tour peut devenir une véritable tour de défense après un point. Donc, pour le texte, nous allons parler de la poitrine, et c'est tout. Compilez et enregistrez. Et du point de vue de la programmation, notre poitrine est prête. Nous ne pourrons pas jouer avec le moment. Nous ne pourrons pas le voir. C'est dommage, mais nous le ferons lorsque notre personnage sera activé, et nous pourrons étiqueter tout cela au cas où cela ne fonctionnerait pas Au revoir pour le moment, chante-toi le prochain. 65. Coffres de pièces cachées: Bonjour et bienvenue sur Game Design Workshop et sur Real Engine Five Procedural Dungeon Action PZ . Lors de la leçon précédente, nous avons fini de créer notre grand coffre VP. Nous commençons par stocker une variable du nombre d'éléments que nous reportons, et nous trouvons une valeur aléatoire comprise entre trois et Mx, qui est le niveau du générateur plus trois. Ensuite, nous ajoutons du texte à notre widget. Enfin, nous avons ajouté la fonctionnalité spawn actor à la fin de notre chronologie Nous avons ajouté le premier élément comme clé que nous voulons toujours supprimer, puis nous avons ajouté cet acteur au tableau à détruire. Ensuite, nous avons créé une boucle à quatre éléments avec le nombre maximum d' éléments comme dernier index, et le premier index un, tels qu'ils sont tels que nous avons généré la première clé, le premier élément, puis nous avons continué en faisant apparaître le reste des éléments et en les ajoutant à la liste des acteurs à détruire Nous avons créé un pendend composé de I plus un entier aléatoire de 0 à 4 pour obtenir un élément aléatoire par le biais d'un nom brut, car notre table de données est nommée I et un nombre, et cette partie comporte une petite erreur Nous partons de zéro lorsque nous voulons commencer par un et terminer par le point cinq. Encore une fois, nous avons une fourchette de quatre parce que notre tableau de données renvoie aux éléments de notre tableau de données. Nous commençons par I un, deux, I six, mais nous voulons faire apparaître des éléments aléatoires de 1 Maintenant, puisque nous avons la grande boîte. Nous pouvons en fait le dupliquer et en faire une petite boîte. Je vais passer aux accessoires. Je vais aller voir notre gros coffre, dupliquer, et l' appeler coffre en PP. Nous enfilons le gros. Maintenant, ouvrons-le. Nous allons modifier quelques paramètres. Réglons le nombre minimum d'éléments à un et le générateur à un plus un. Il y aura donc un à deux objets et plus à chaque niveau. Et puisque nous allons le faire apparaître dans les pièces cachées, établissons une règle selon laquelle celle-ci génère toujours une potion temporelle, qui dans notre tableau de données est le Retournez dans le coffre et réglez ces deux I cinq au lieu d'une clé. Maintenant, nous allons laisser le reste inchangé afin que vous puissiez peut-être sélectionner deux tranches horaires, peu importe. Et nous allons aller à notre générateur de labyrinthe. Nous allons aller voir le promoteur. Nous allons copier cette partie, qui contient les chambres, mais nous n'en avons pas besoin. Nous avons juste besoin de tout cela. Nous n'avons pas besoin d'itinéraire, mais nous allons le modifier. Collons-le ici. Pour le réseau, nous avons besoin des pièces, je crois, nous les nommons. Prenez nos matrices. Chambres Biden. Mais c'est un ST, donc je vais le déconnecter. Je vais le connecter ici. Je suis là, je vais faire une pause, et je vais copier le rythme de la boucle for , la connecter comme ça. Sur une configuration classique, et là, nous devons effectuer le test de tension artérielle Nous n'avons pas besoin de l'itinéraire. Nous devons connecter ces deux broches ici. Et nous allons également mettre une autre règle ici, en installant une branche selon laquelle nos coordonnées actuelles ne sont pas contenues dans le tableau des allées spéciales Donc, juste au cas où l'une de nos allées spéciales serait considérée comme cachée. Nous allons dire non. Nous n'allons pas le créer. Je vais le connecter ici pour terminer celui-ci. Cela pourrait également être fait dans une séquence. Chaque séquence doit exécuter l'un de ces segments. Mais nous allons laisser les choses comme ça pour le moment. Si nous jouons à Compiler, voyons si nous faisons apparaître le petit coffre dans les pièces cachées Pendant que nous sommes dans la pièce cachée, nous y voilà. Il n'y a pas de coffre. Mais nous voyons le widget, mais il y a un coffre. Quel est le coffre, je suppose que c'est le bout du coffre. Trouvons-le. Fin de la poitrine. Voilà le coffre. C'est ici. Elle a l'air un peu petite. C'est un gros coffre, mais il semble un peu petit. Bref, voyons pourquoi il n'a pas fait apparaître le petit coffre dans les pièces cachées Du gameplay. sera encore une fois quelque chose de simple, probablement une fausse branche. Oui, j'ai demandé s'il contient et s'il doit contenir, non. Cela devrait être faux. Jouons. Je vois une pièce cachée ici, et elle a un coffre, qui a la même apparence. Maintenant, réglons ce problème. Passons à notre nouveau coffre. Je pense que nous avons une poitrine différente. Je ne vais pas chercher comme ça, je vais aller dans le dossier des maillages, il y a des maillages statiques ici, nous sommes et il y aura un autre coffre Non Maintenant, vérifions-le à nouveau, et c'est là. Ce n'est pas que nous avons ajouté un appareil photo. Nous avons trop prié pour faire une pause et cela s'est ajouté. Je vais utiliser ceci pour le bas et ceci pour le haut. Je vais les rapprocher un peu, avant. Et ça a l'air bien. Maintenant, ils avaient l'air un peu petits. Ce que nous pouvons faire, c'est aller dans le gros coffre et régler son e à 1,5. Si c'est trop, 1,25. Du bit. D'accord. Non, ça ne va pas du tout. Maintenant, c'est plus normal. Faisons-le également pour ce coffre 1,25 C'est bon. Tandis que. Appuyons sur Play. Je vérifie et je ne vois aucune pièce cachée. C'est un secret. Nous avons notre petit coffre et quelque part se trouve le gros. Trouvez-le également C'est ici. Comme on peut le voir, il apparaît à côté d'une porte. Nous devons également ajouter la règle pour les portes de ce coffre. Et c'est encore un peu petit. Ce n'est pas aussi impressionnant. La clé de poitrine devrait être plus grande, donc je vais la placer de 1,5 en dessous de 1,5. Mais cela en avait l'air beaucoup vu l' ampleur de la petite poitrine. Ça y est, allons dans notre labyrinthe. Passons à l'endroit où nous utilisons les instructions pour le coffre, qui se trouve juste au début de la section Créer des noyaux pour la poitrine. Nous avons les règles ici. Nous sommes en train de vérifier s'il est contenu dans les tuiles spéciales. Nous devons apporter cette fonctionnalité que nous avons créée à côté. Nous allons connecter les coordonnées ici. Mettez-la ou insérez-la, car s'il s'agit d'une tuile spéciale, ou si elle est adjacente à la porte, ne la faites pas apparaître N'ajoutez pas l'index des trésors. Compiler une sauvegarde. Nous allons jouer juste pour vérifier la taille. Nous savons que la règle fonctionne. Voilà, et c'est un peu petit. Il est trop petit. Nous allons donc aller à l'extrême et mettre l' échelle sur deux, et ce sera deux, peu importe ce que c'est deux, sauf si notre joueur ne peut pas passer, mais nous allons le changer encore une fois. Maintenant c'est bon. Juste pour y jeter un coup d'œil. Notre poitrine. Ça y est, c'est vrai. C'est un gros coffre maintenant. Nous pouvons le trouver facilement dans les couloirs et le repérer. Celui-ci est placé à côté d' une tour, également appelée Hell Gate. Quoi qu'il en soit, dans la leçon suivante, nous devrions commencer à créer le mécanisme permettant aux objets de tomber. Mais avant cela, permettez-moi de vous expliquer très rapidement. Nous savons donc ce que nous allons faire ensuite. Nous savons ce que nous allons programmer. Je vais apporter de la peinture. Et considérons que c' est à nouveau notre bloc. C'est notre pile, et notre poitrine apparaît quelque part ici. Maintenant, lorsque nous faisons apparaître notre objet, il est scié juste au milieu Si nous voyons un triple DV, disons que ce fichier se déroule comme ça, et que nous avons notre coffre ici, qui est ouvert. Je n'en parlerais jamais, mais de toute façon, et notre objet apparaît ici Ce que nous allons créer, c'est un système qui, à partir de l'endroit où l'objet est apparu, nous obtiendrons un point aléatoire dans les airs pour devenir polaire À partir de là, nous allons commencer à tracer la ligne vers le sol. Mais nous allons tracer une ligne dans un rayon autour de la boîte. Nous allons obtenir des lignes continues, mais de nombreux points, de nombreux points autour de la boîte, dont nous définirons le rayon. Et lorsque nous trouverons l'endroit où nous pouvons poser l'objet, et qu'il sera posé par terre , nous dirons que c'est l'endroit où vous devez aller. Et pour ce faire, nous allons faire une animation indiquant que l'objet va d' ici à cet endroit. Mais c'est quelque chose que je vais faire le prochain ? C'est suffisant pour le moment. Au revoir On se voit alors. 66. Animation de baisse d'objet près de la poitrine: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le véritable cours de création de RPG d' action Engine Five Procedural Dungeon création de RPG d' action Auparavant, nous avions ajouté le petit coffre et corrigé quelques bugs survenus pendant le jeu. En fait, nous en avons également augmenté la taille. Et une chose que nous n'avons pas abordée, c'est que lorsque nous avons joué, nous avons vu le widget de la grande boîte et de la grande boîte. Grande boîte. C'est ici. Ce qui s'est passé, c'est que la grande boîte était en fait selon notre vision initiale. Vous pouvez voir qu'il est apparu en ce moment. Si j'éjecte à nouveau la possession, je rejoue au jeu. Vous pouvez voir que c' est exactement ce qu'il devrait être. Mais si je le déplace, je déplace à nouveau la boîte, vous pouvez voir que l' infobulle du coffre se trouve au-dessus Et maintenant, nous pouvons réellement voir à quoi cela ressemblerait. C'est un peu gros, mais c'est bon. Ce que nous allons faire, c'est simplement le configurer ensuite, afin que nous ne puissions pas le voir par défaut. Nous allons donc passer à nos widgets, l'élément du plan, à cette visibilité invisible. Et nous allons le faire pour la boîte, le gros coffre, le widget, la visibilité. Visible et aussi pour la petite poitrine. Nous obtenons une visibilité invisible. Revenons maintenant à notre article et créons le mécanisme que nous avons expliqué. Mécanisme dans lequel nous allons sélectionner un point au-dessus de l'objet, lancer des lignes de traçage, trouver un endroit vide et faire apparaître l'objet La façon dont nous allons procéder est utiliser simplement un boîtier de délimitation. Et trouvez le point à l'intérieur de ce cadre. L'inconvénient de cette technique est que la ligne peut être percée pour indiquer qu'il y va, mais l'objet s'arrêtera à cause collision ou d'un objet sur la boîte, ou il pourrait même trouver une ligne qui touche la boîte, en disant que c'est disant que c' acceptable et en le laissant là Hum, il pourrait y avoir des moyens de créer une fonction comme un cercle, puis de passer à ce cercle, comme si nous donnions un pourcentage de plus ou de moins vers celui-ci. Ou ce que nous pourrions faire, c'est créer un code pour vérifier si notre boîte de liaison est un point que nous avons trouvé, comme lorsque je lance une ligne d'ici et qu'elle tombe ici. Cela appartient-il aux coordonnées allant du centre jusqu'ici ? Par exemple, nous créons une zone morte dans laquelle aucun objet n'est déposé ici. Mais nous ne ferons pas ces choses. Nous allons simplement mettre une case et y marquer un point. Ce serait suffisant pour le moment. Non, passons à notre article au moment de commencer à jouer. Il y a quelque temps, j'ai expliqué pourquoi les boucles ne devraient pas être utilisées dans le gameplay. Eh bien, pour chaque règle, il y a une exception. Il y a certaines raisons pour lesquelles nous devons utiliser des boucles il sur le gameplay, ce qui va en fait casser le jeu si ce n'est pas le cas. Par exemple, nous avons un mécanisme de rupture de jeu, comme, par exemple, notre clé en ce moment, nous voulons être sûrs à 100 % qu'elle tombe. Il ne disparaîtra pas de la carte, il ne tombera nulle part ailleurs, il tombera, et nous pourrons le récupérer. Notre système ne couvre pas vraiment ce problème, mais il est exceptionnel que nous puissions utiliser une boucle wile pour ces calculs Je trouve le bon endroit. Nous devons redéfinir nos règles, si cela prend du temps, si cela nous complique le jeu, si cela nous amène à faire autre chose, parce que si nous ne le faisions parce que pas, cela ruinerait le jeu Maintenant, bien sûr, il y a d'autres raisons d' utiliser des boucles dans le gameplay. Certaines méthodes plus avancées consisteraient à allouer des ressources, de la mémoire, mais en général, mécanismes de rupture de jeu pourraient utiliser des boucles pour s'assurer du résultat. Oh, ce que nous allons faire maintenant, c'est créer une variable de type vecteur, mais je pense que nous n'en avons jamais créée auparavant. Il s'agit d'un vecteur à trois points, trois entiers, et nous allons l'appeler get location N'oubliez pas que cela se retrouve dans tous les articles. Lorsqu'un objet apparaît, ce code s'exécute Nous allons le chercher pour chaque emplacement cible. Il est égal à zéro, qui est notre variable par défaut d'origine. Ce sera notre condition pour une boucle endiablée. Je vais le connecter ici. Maintenant, la deuxième variable que nous allons créer est notre variable is, qui sera du type entier. Nous n'avons pas besoin de le demander comme condition, car à l' intérieur de la boucle corporelle, nous changerons en fonction de l'emplacement cible, ce qui rompra notre boucle. Non. La première chose que fait le corps est d'ajouter 12 t. Et maintenant, les choses complexes vont commencer, un peu complexes. Ce n'est pas si complexe. Nous allons accélérer le rythme. Il est important d'aider. Oui. Collez mon gel Ce n'est pas une course multisphère, juste une trace de sphère, car lors de la première manche, nous ne voulons qu' un seul résultat. Nous ne voulons pas en avoir la liste. Non. Le point de départ. Nous allons trouver l'emplacement de notre acteur. Et nous allons ajouter à Z. Disons 200. Un peu haut, mais c'est bon. Mais maintenant, nous avons créé ce point ici. Maintenant, pour notre cible, nous allons obtenir un point aléatoire dans la boîte de sélection. Non. Parce que, comme vous pouvez le voir, c' est complètement différent. Cela nécessite une navigation. Comme nous avons pu le voir, c'était dans l' onglet de navigation, qui se trouve dans l'onglet AI. Nous ne voulons pas que cela se fasse au hasard dans la boîte fondatrice. Maintenant, pour sa demi-taille, nous allons utiliser le double de la taille 600. Elle est plus grande. Mais cela pourrait le projeter à l'intérieur d'autres carreaux. Utilisons donc la moitié de ces 300, cent un z. Et nous obtenons un point. En gros, on obtient un point dans le sol à ce niveau. Maintenant, si nous sommes ici, comment visons-nous ce point ? Non, nous allons obtenir ou ou, qui est une direction vers laquelle nous allons multiplier ce chiffre par notre autonomie. Jusqu'où, si nous sommes x, nous partons d'ici, jusqu'où allons-nous ? Parce que s'il s'agit d'une direction à partir de 0,1, alors disons que tout le reste est nul, alors cela signifie que sur l'axe X, passer à 0,1, multiplié par un nombre serait cette direction. Si loin que ça. Pour ce faire, nous allons le remplacer par un entier, et je vais le multiplier par un nombre positif. Nous allons multiplier par moins, disons 500. Donc, au lieu de monter, nous descendons. Et si nous ajoutons cela à ce point, nous arrivons à notre destination finale vers ce point. Je vais le relier à n. Je vais définir le rayon, disons n. C'est donc une balle un peu grosse, pas juste une ligne, car si nous voulons toucher la boîte, nous devons le savoir un peu. La prochaine chose dont nous avons besoin est en fait : qu' allons-nous atteindre ? Pas ça si on frappe. Nous ne pouvons donc pas mettre une branche ici, disons que nous détestons que quelque chose l'engendre là Il faut savoir si ce que l'on chauffe c'est ce que l'on veut, c'est-à-dire le sol. Et pour ce faire, nous allons juste utiliser un remorqueur sur notre sol. Nous allons passer à notre étage, qui est la dalle BP, aller dans la fenêtre d'affichage, pour sélectionner notre étage, passer aux remorqueurs, au remorqueur, et tapons Maintenant, je reviens. Maintenant que nous avons ajouté le remorqueur F. Revenons à notre article. Voyons le résultat de notre chauffage. Je vais détruire cette structure. Je vais aller voir le composant chauffant et lui demander s'il est équipé d'un tracteur. Je vais installer une succursale ici. Et maintenant, ce n'est pas la seule question que nous voulons nous poser si c'est F, mais nous voulons savoir si nos essais sont également, disons, égaux à. Essayons 30 fois. Je ne me connecte pas ici. Maintenant, ce sera le cas s'il a F ou si les balises sont supérieures à 30 ou égales à 30. Ensuite, nous allons définir l'emplacement cible en fonction de notre point d'impact, qui est le point, le point d'impact réel. Et nous pourrions choisir l'emplacement qui n'aurait pas vraiment d'importance. Mais pourquoi ne pas utiliser le point d'impact ? Maintenant, juste pour une démonstration, connectez cette condition. Il suffit de connecter le 30 égal à 30. Quoi qu' il arrive, il essaie 30 fois, et passons au jeu et jouons. Nous allons éjecter le navigateur de contenu. Vous allez mettre un objet au monde. Fais-le. Encore une fois, faire entrer un objet dans le monde. Oh, juste au cas où tu ne verrais pas les spots hors caméra. J'ai peut-être réussi à dessiner le type de bogue. Il faut donc que cela soit persévérant pour voir les limites. Maintenant, nous pouvons voir qu' a essayé 30 fois de trouver le sol qui l'entourait. Mais c'est un peu trop proche de l'objet. Alors allons-y et augmentons la taille des boeufs, en tirons cent 600. Lui encore. Nous allons apporter un autre objet. OK, maintenant ils sont un peu plus éparpillés. Hé, dupliquez ça. Dupliquer ici et déplacé ici. Au début du jeu, vous pouvez voir les deux points d'épingle différents. Je pense que c'est bon. Peut-être que nous pouvons l'agrandir un peu parce que la poitrine est mouillée à cet endroit. Des centaines. Oh, c'est trop gros. Je l'ai apporté très loin. De plus, vous voyez qu'ils descendent vraiment en dessous de l'article. C'est en fait parce que j'augmente la portée. Honnêtement, je voulais juste montrer une augmentation de la gamme. Cela pourrait en fait fonctionner comme ça. Par exemple, nous obtenons un point sur l'article, puis nous allons simplement d'ici à là. Alors rejouons. Cela va bien trop loin. Cette valeur est loin d'être atteinte. Nous allons utiliser le 300. Je pense que 300 c'était bien ou que le 600 était le 600, n' est-ce pas ? Apporte-ça ici. Maintenant, tout se déroule, le jeu se déroule. OK, donc nous en avons besoin, en fait, pas tant que ça, j'en ai besoin, disons 50 ou oui, gardons-le sur 500. Et la raison en est que si le mien s'est précipité, c'est parce que ça ne fonctionnait pas. C'était vraiment le cas. Mais quand il a atteint 30 tri, cela n'était pas valide, cela ne chauffait rien car passons à la douleur. Si nous partons du haut et que nous y allons exactement. Cela ne veut pas dire que nous y touchons. Cela signifie que nous y sommes arrivés. En plus de cela, cette distance B est plus grande que cela, désolé. Cette distance, 300. D'ici pour atteindre le sol. Nous avons besoin de cette autonomie supplémentaire. J'ai peut-être un peu utilisé l' explication, mais nous avons besoin d'une portée supplémentaire pour atteindre le sol parce que nous sommes sur une pente et parce que nous devons traverser le sol pour toucher le sol, pas nous nous contenter de connecter cette fine ligne et utilisons la plage 600 en fait. Je pense que ça avait l'air mieux. Encore un test s'il écrase, et je vais le laisser ici. Je ne pense pas qu'il ne faut jamais dire jamais. Je l'apporte ici. Je ne vois rien. Cela bouge toujours et je bouge, donc il ne s'est pas écrasé. Il se peut que l'article ait été éteint ici. Oui, j'ai désactivé la ligne de débogage. Oh. Essayons encore une fois. L'article. Je m'écrase parce que je l'ai placé au milieu des airs, pour qu'il n'atteigne plus le sol. Si je pouvais m'éjecter tout de suite, vous verriez que la clé est vraiment très loin du donjon OK, nous allons nous arrêter ici. Nous allons le tester à nouveau dans le prochain. Au revoir. À bientôt. 67. Animation de finition des objets avec des lignes de temps: Bonjour et bienvenue dans le cours procédural de création de donjons Action Psy et Game Design Workshop et R Engine Five création de donjons Action Psy Dans la leçon précédente, nous avons démontré l' importance d'utiliser des boucles de wile infinies et illimitées et pourquoi nous ne devrions les utiliser que pour les mécanismes de base Maintenant, j'essaie de déboguer quelque chose. J'essaie de montrer certaines choses de manière très détaillée, comme ajouter des éléments comme celui-ci pendant l'exécution, et surtout lorsqu' ils commencent par une boucle Wi, c'est une très mauvaise idée. Hum, un excès de confiance, peut-être. Mais oui, il peut se passer beaucoup de choses. Donc, si je retourne jouer, faisons plus de métier, et je vais passer à côté du sol. Je vais apporter l'article ici. Les lignes toucheront réellement le sol. Trouvons notre point de chute. Aucun article. Apportez-le ici, et je n'ai pas ouvert les files d'attente. Dave, parce que quand tu crasses, tu perds ton travail De plus, lorsque vous plantez, vous devez contrôler, supprimer et terminer le projet de toute façon. À proximité de cette ligne, il a fait une ligne, mais nous ne pouvons pas vraiment le dire, donc je vous espérais beaucoup. Ouais Je pense que c'est bon. Arrêtons. Revenons à notre article. Il s'agit du widget. Article. Nous avons trouvé un point où déposer notre clé pour déposer notre objet, n'importe quel objet. Quelle est la prochaine étape ? La prochaine étape devrait être de rendre notre objet visible, car soyons honnêtes, un objet qui reste là jusqu'à ce qu' il trouve où il va, puis fait simplement une animation et se dirige vers un endroit n'est pas vraiment beau car disons que les 30 ts peuvent prendre non pas une demi-seconde, mais 0,1 de seconde. À l'œil nu, nous verrons l'objet qu'ils sont assis puis bougent soudainement. Nous allons donc transformer notre objet visible en objet caché dans le jeu, alors c'est vrai. Cela se trouve sur le maillage de l'article. Et après notre boucle i, créons un événement personnalisé. Faisons en sorte que ce soit ailleurs. Animez l'objet. C'est ainsi que nous appellerons cet événement. Parce que maintenant nous allons jouer l'animation. Inachevé. Pour animer un objet. Et la première chose que nous allons faire est de rendre notre désordre visible. Visible. Supposons donc que ce soit faux. La prochaine chose dont nous avons besoin est de stocker emplacement de notre acteur d'origine, afin de trouver un acteur. Nous allons en faire la promotion auprès d'une variété. Je dis que c'est original parce qu'il faut passer à l'animation d'ici à là Ça vient d'ici. Il ne nous reste plus qu' à ajouter la chronologie. Maintenant, nous allons le connecter pour payer dès le départ. Nous allons suivre notre chronologie, créer un flow truck. va nous falloir des points. S'ils sont malades. Le premier point serait une valeur zéro. Le deuxième point serait 0,25 et un. Un Le troisième point serait 0,5 à rapide. Je pense que c'est bon. La valeur serait en fait nulle, nous revenons donc à la base. Et ce serait notre mouvement. Allons-y un peu mieux. Maintenant que j'avais sélectionné celui-ci, il essayait de l' adapter uniquement à la version précédente parce que j'ai également appuyé sur le Zoom vertical. Lorsque nous avons sélectionné certains points et que nous appuyons sur ce zoom ponal sur vertical, il essaiera de faire les points que nous avons plus le précédent Maintenant, nous allons tous les sélectionner en fait. le bouton droit. C'est pour l'automobile. W pour cliquer sur celui du haut. Peut-être faire en sorte que le C soit un peu plus comme ça. Le premier également. C'est très bien C'est un peu plus élevé que ce que nous allons calculer. Maintenant, ce que nous voulons, c'est que l'article remonte directement vers le haut, puis qu'il aille dans la direction dans laquelle nous voulons le faire. Nous avons besoin de cela pour passer à l'action. Pour déplacer l'acteur, pas seulement le maillage de l'objet, et ce sera fait à ce jour. Nous voulons donc laisser Vector créer ce mouvement. Voici donc notre Alpha. Appelons ce mouvement frappé : c'est notre mouvement Alpha. Nous avons dit, jusqu'à 50 %, gros, parce que c'est 025, et nous le savons Jusqu'à 50 %, nous voulons augmenter, donc si ce chiffre est inférieur à 0,5. Nous voulons aller dans une certaine direction. O B, notre cible, devrait changer. Nous pouvons donc en mettre une sélection ici. La condition est que cet ion soit notre Alpha inférieur à la moitié. Si nous voulons y aller, ce devrait être notre emplacement d'origine. L. Disons 200 de hauteur. Et si ce n'est pas le cas, nous devrions atteindre notre objectif. Nous allons également connecter l'emplacement cible. Maintenant, réfléchissons-y un instant. Que fait notre Alpha ? Parce que depuis, nous avons utilisé 0-1 Mais maintenant, nous utilisons 0-1 et encore une fois jusqu'à zéro. Cela signifie qu'à la fin de cette chronologie, Alpha serait No Alpha s A. A serait le dernier point serait la fin de ce leerp, car cet Alpha reviendra à zéro Nous ne voulons donc pas cela dans B. Nous le voulons en fait dans A parce que notre cible est en fait A. Donc, celle-ci doit également changer. Ce serait notre B réel à partir de moins de 50 %. Nous partons de 0-1 0-1, ce serait plus 200. Quel serait l'Alpha, le vrai ou le plus bas ? Eh bien, ce serait l'emplacement d'origine. Revenons-y une fois de plus. A Si nous sommes en dessous de 50 % d'Alpha, nous avons 0-1 pour passer de A à B. Si c'est inférieur à 50 %, nous passons de l'original à notre taille Si c'est après 0,5 %, nous allons de B à A, ce serait notre hauteur, et nous allons de A, qui serait notre position cible J'espère que ce n'était pas trop confus, mais c'est ainsi que je l'ai fait fonctionner. Mais assez, faisons encore une chose. Ajoutons une autre trajectoire de flux. Cette fois, ce sera une trajectoire très simple. De plus, la molette de la souris ne fonctionne pas vraiment ici car elle zoome et dézoome Vous devez avoir la molette de votre souris ici pour fonctionner, si vous l'avez déjà là, vous pouvez simplement cliquer et la laisser enfoncée. Non Il s'agira d' une simple voie de circulation. Nous allons avoir deux points à partir de la valeur zéro. Nous allons passer à 0,5 valeur un, et n'oublions pas d' utiliser notre dernière image k car les deux sont sur 0,5 0,51 Et ce que nous allons faire, c'est sélectionner nos articles. Nous allons mettre son k à zéro. Nous allons l'apporter ici et définir trois D. À l'échelle du monde, trois D. Récapitulons ces choses. En fait, c'est un peu plus loin. Ces deux lignes ne sont pas nécessaires. Nous pouvons lire ici. J'ai une ligne. Maintenant, dans la nouvelle échelle, nous allons laisser Vector. Je pense que nous pouvons tous voir où cela va nous mener. Nous allons utiliser le nouveau camion pour Alpha ou B, nous allons régler 111. Oh, l'objet grossira au fur et à mesure qu'il atteindra sa cible, et il atteindra sa taille d'origine. Je pense donc que ce serait pour celui-ci. Je te verrai bientôt. Au revoir 68. Afficher les widgets d'article et d'inventaire: Bonjour et bienvenue sur Game Design Workshop dans le cadre du cours de création de RPG d' action Procedural Dungeon Engine Five création de RPG d' action Auparavant, nous animions essentiellement notre objet de dépôt. Donc, comme il fonctionne dès le début de la partie, il fonctionnera avec des points de foule sur des bustes de poitrine. Ou si les tours de l'enfer lâchent également quelque chose, c'est ainsi que les objets seront déposés. Nous avons donc créé un événement personnalisé appelé animate item. Nous avons utilisé le maillage des éléments pour qu'il ne soit pas masqué, car il commence par être masqué. Nous avons enregistré notre emplacement d'origine. Nous avons utilisé des méthodes étranges que nous avons expliquées pour définir l'emplacement. Nous avons également agrandi le maillage de 0 à 1 pour qu'il paraisse plus grand lorsqu'il sort de la poitrine Maintenant, la prochaine chose que nous devons faire est d'obtenir notre widget. En fait, cela peut se produire à deux moments différents. Cela pourrait arriver. Cela peut se produire après la chute de l'objet Nous pouvons donc utiliser Terminer depuis la chronologie ou avant. Non, je vais le faire avant que l'objet ne soit réellement tombé, car c'est ainsi que cela se passe habituellement en particulier dans tous les jeux Ablo. En gros, en mode multijoueur, vous ne pouviez pas voir les objets tomber. Tout le monde les ramassait en l'air. Nous allons donc continuer comme ça. nous allons montrer le widget gros, nous allons montrer le widget au moment où il démarre l' animation. De cette façon, il devait être sélectionnable dès que nous pourrions cliquer sur le widget Je pense que dans Diablo, même les widgets sont animés, mais ce n'est pas ce que nous allons faire Nous allons appeler cet événement personnalisé. Widget. Mais nous avons besoin de renseigner certaines informations ici. Mais tout d'abord, appelons cet événement show widget. Nous allons aller ici, que nous appellerons objet animé une fois terminé. Nous allons faire une séquence. Et le premier serait un objet animé. Le second serait Afficher le widget. Oh. Tout d' abord, trouvons notre widget. Alors, procurez-vous un widget. Comme nous l'avons dit, il s' agit d'un conteneur et le conteneur, nous devons obtenir le widget, puis nous devons vous demander quel widget êtes-vous ? Alors, dirigez-vous vers le monde des objets. Un monde à deux objets et ce texte. Pour notre texte, nous avons besoin des données relatives à l'article. Nous devons casser la structure et connecter le nom de l'article. Oh. La prochaine chose dont nous avons besoin est d'activer ou de désactiver la visibilité de notre widget Je vais donc créer une fonction. Et disons que c'est rigide. Il va avoir besoin d' une entrée de y. Appelons ça. Et ici, je vais trouver la référence du widget. Je vais voir quelle que soit cette épingle. Sauf que je dois générer des événements de chevauchement. Encore une fois, quelle que soit la visibilité, appelez visibilité comme ça, mais rappelez. De plus, nous avons besoin d'une collision pour terminer une sélection ici, et le sélecteur sera essentiellement celui-ci C'est donc vrai. Nous n'avons besoin que d'une requête. Si c'est faux, il n'y a pas besoin de collision. Pourquoi devons-nous suivre ces deux étapes car même si un widget est invisible, il est possible que ses paramètres d'interaction autorisent toujours la saisie d'événements. En disant cela, je veux dire que je désactive la visibilité du composant du widget, mais les widgets ont en fait d' autres paramètres de visibilité. Par exemple, si nous allons ici et définissons la visibilité, vous pouvez voir qu'elle est visible, réduite, cachée et non testable thermiquement Cela signifie qu'il est visible et qu'il peut être testé à chaud là où il pourrait être possible de cliquer dessus Alors pourquoi ne pas simplement laisser la collision se déclencher, également pour plus de sécurité. est peut-être un peu exagéré, alors que c'est certainement exagéré, mieux vaut prévenir que guérir Cela n'ajoute pas grand-chose, ce qui permet en fait de faire encore moins de calculs. Et en gros, même cet acteur pourrait, même invisible, recevoir l'entrée et l' envoyer au widget, de sorte que le widget n'en est peut-être même pas responsable. Quoi qu'il en soit, il y a de nombreuses raisons pour lesquelles vous mettez parfois du code supplémentaire juste pour couvrir des bases supplémentaires. Au lieu de chercher, quel paramètre aurait été désactivé. Parfois, il est préférable de fermer certains paramètres root plutôt que de rechercher des sous-paramètres. Alors je fais une digression. Revenons à ce que nous faisons. Nous affichons donc des widgets, et nous avons maintenant un moyen d' activer ou de désactiver notre visibilité . Mais quand voulons-nous avoir une visibilité active et désactivée sur nos articles sur notre widget d'articles, ou sur nous pour notre projet. Ce que nous allons utiliser, c'est passer la souris sur les événements. Mais lorsque nous aurons terminé quelque chose, nous lui enverrons un message en passant la souris au-dessus de vous. Et lorsque nous envoyons alors que nous sommes hors de cet objet, nous allons envoyer un message, A, nous venons juste de laisser la souris au-dessus de vous. Et ce sera l'un de nos moyens de rendre le widget visible. Donc, la souris survole. nous allons l' utiliser avec un bouton. Nous allons prendre la gauche à. Mais lorsque nous appuyons dessus, nous affichons tous les éléments qui se trouvent dans notre fenêtre d'affichage Et pour ce faire, nous allons utiliser ce que l' on appelle un répartiteur d'événements heure actuelle, la façon dont les envois d'événements fonctionnent dans un environnement approximatif serait d'envoyer un message à tout le monde, et si tout monde l'écoute, il fera quelque chose U C'est peut-être l'une des choses, c'est l'un des moyens les plus lourds de communication sur les plans. Il ne doit pas être utilisé sur des objets constants. Cela ne peut pas être utilisé, mais oui, c'est l'élément le plus lourd des communications par plan Laissons-le là. Non, comment s'y prend-on ? Passons à notre contrôleur car nous devons maintenant entrer sur notre territoire de contrôleur. Donc, personnage du haut vers le bas, dossier du haut vers le bas, plans, et PP, contrôleur du haut vers le bas. Non. Nous n'allons pas tout gâcher pour l'instant. Ce que nous allons faire, c'est créer une entrée, qui est omise. Et ce sera une contribution régulière. Nous n'allons pas apporter de contributions améliorées à ce projet. Et ci-dessous, en dessous des fonctions, des macros et des variables, se trouvent les répartiteurs d'événements Nous allons cliquer sur Event Dispatcher et Stay Items Peut-être. Non, je vais compiler. Et je dois ajouter à la saisie. Appelons cela la visibilité des objets. Et appelons-en une autre : appuyez sur la touche Alt. Cela va être un peu redondant en appuyant sur Alt. Nous pourrions juste en utiliser un, mais faisons-le avec deux pour que ce soit un peu plus clair. Donc, lorsque j'appuie sur Alt, je veux regarder tous les éléments. C'est ainsi que nous organisons un événement. Nous avons créé, nous apportons nos entrées et nous l'appelons quand nous le voulons dans la ligne d'exécution. Mais lorsque vous appuyez sur cette touche, je veux que les éléments soient visibles et que la touche Alt soit enfoncée, qu' un copier-coller soit relâché, et que les deux soient rejetés, cela devient faux. Nous allons compiler et enregistrer. Nous allons fermer la manette de jeu. Nous n'en aurons pas besoin dans un avenir proche. Nous pouvons donc fermer beaucoup de choses. Nous pouvons fermer le menu principal. Et commençons à le fermer. Maintenant, ce que nous devons faire , c'est obtenir une référence à notre répartiteur d'événements, afin que nous puissions y trouver quelque chose Pour y faire référence, nous avons besoin de l'acteur, l'objet qui le contient. Je vais donc chercher leur manette. Et je vais demander à utiliser la manette du haut vers le bas, car en tant que mode de jeu, notre manette get pair est générale, et nous voulons spécifier de haut en bas pour obtenir le répartiteur Lier un événement à Go, c'est ce que nous appelons des objets Hogle. Événement par rapport au total des articles, cela liera un événement à vos expéditions Nous allons le connecter ici. Amenons-le ici et créons un événement personnalisé à partir du nœud d'événement de la liaison. Appelons cela des objets. Ou le total des objets, c'est à dire. Peu importe. Connectons-le ici. Connectons la visibilité ici, et faisons-en une variable. Donnie, à certains égards , il porte déjà notre nom. Eh bien, faisons de la place car nous sommes trop proches l'un de l'autre. Lorsque nous commençons à jouer, nous exécutons l'élément d'animation et nous affichons le widget en définissant son texte et en liant l'affichage ou le masquage sur Alt La prochaine chose que nous devons faire, ce sont les liaisons ho et hover. Eh bien, pas de liens. Ce que nous utilisons réellement, ce sont des fonctions supplémentaires sur nos appareils de communication P I. Oh, je vais ajouter une fonction supplémentaire. C'est ce que je vais appeler ça le début. Fini. Je vais passer un autre appel et encore. Revenons à notre article. Passons à notre interface, cliquez sur « Fin du survol », double-cliquez sur « Démarrer le survol Nous avons ces deux-là. Ce serait facile. Nous allons obtenir de la visibilité grâce à la visibilité du vrai, visibilité à du faux. Maintenant, pourquoi la touche Alt était-elle superflue ? La raison en est que nous n'en avons pas vraiment besoin pour changer le pointeur final afin de demander si la touche Alt est abaissée, et si ce n'est pas le cas, désactiver la visibilité Parce que nous ne voulons pas qu'Ed passe le curseur lorsque nous appuyons sur Alt pour arrêter la visibilité Et l'autre façon de le faire, qui est en fait préférable, serait d'obtenir contrôleur du joueur et de lui demander de le saisir. Et ici, nous pouvons sélectionner Alt ou avoir nos informations de touche personnalisées, ce qui irait à l'encontre de l'objectif de cette touche Alt. Quoi qu'il en soit, ce serait pour celui-ci. Je te verrai le prochain. Au revoir. 69. Ramasser des articles et les ajouter à l'inventaire: Bonjour et bienvenue dans le cours de Game Design Workshop Real Engine création Procedural Dungeon Action Arbis de Game Design Workshop Real Engine Five Auparavant, nous avions terminé la création de nos événements liés au widget d'émission. Nous avons ajouté le texte à notre widget, qui est le nom de notre article. Nous avons également intégré un événement de notre manette de jeu, un répartiteur d'événements, dont nous avons expliqué le fonctionnement Et nous avons créé la fonction de visibilité du widget qui totalise également la collision du composant du widget, puis nous avons créé l'événement hover start et hover end et les avons codés avec la visibilité de la Et à la fin du survol de l'événement, nous avons utilisé la touche de saisie enfoncée pour vérifier si notre Alt est enfoncée. Ainsi, lorsque nous survolons un élément et que nous terminons le survol, il ne disparaît pas Passons maintenant à notre autre événement d'interface, qui est celui d'interaction. Oh, je vais me rapprocher du début. Chambre. Tu n'as pas besoin ces deux-là. C'est bon. Donc, la première chose que je vais faire maintenant avant de commencer à créer l'ensemble de la chaîne d'événements, c'est ce que nous devons faire pour commencer à jouer, obtenir nos widgets, obtenir des widgets à partir de notre composant widget. Et passons à l' article plutôt qu'au moulage pur. Et nous allons avoir un bouton. Nous ne l'avons pas parce que je n'en ai pas encore fait une variable. Nous allons donc passer à notre widget. Nous allons sélectionner notre bouton, et le bouton 31 sera appelé bouton élément, et faisons-en une variable. Maintenant, je peux l'appeler «   à l'intérieur de l'article ». Bouton Obtenir un article. Et nous allons continuer. Donc, si nous cliquons sur notre widget, nous faisons en fait l'acte d'intelligence événementielle. Même s'il s'agit d'une interface Blueprint, elle possède toujours ce délégué de sortie que nous pouvons connecter à notre liaison Maintenant, la première question devrait être sommes-nous en mesure de choisir ? Et cela interagirait. Nous allons le promouvoir en tant que variable. Et quand ce sera vrai, nous allons définir l' interaction comme vraie. Peut-être faire un peu plus de place. Peut-être qu'en allant plus loin, vous pouvez manquer d'espace dans un espace infini. Toujours incroyable. Maintenant, nous allons devoir exécuter une fonction sur notre humeur de jeu. Mais nous ne remplirons pas complètement cette fonction pour le moment. Passons donc à notre support de haut en bas. Passons aux plans de nos dossiers et à nos ambiances de jeu Nous allons créer une fonction, tout l'inventaire, et il y aura un nom en entrée. Réclamez, et le résultat sera un Ben, qui sera sélectionné. Par exemple, si nous l'avons choisi ou non. Nous allons le laisser tel quel lorsque nous ferons l'inventaire, nous allons commencer à le remplir. Eh bien, revenons à notre objet et partir de notre set d'interaction, nous partons et nous avons besoin d' informations sur GM Tous les MJ du mode de jeu Down. Nous allons passer au moulage pur. Et nous allons l' ajouter à l'inventaire. Maintenant, pour le nom brut, nous allons utiliser notre nom brut. Ensuite, nous irons en succursale selon que nous choisirons l'article ou non. Commençons par le. Oh, que va-t-il se passer si nous ne choisissons pas un article ? Nous allons rejouer une animation, nous allons l'ajouter en ligne. allons entrer dans cette chronologie, et nous allons créer une trajectoire de flux. Les variables. Le premier serait 00. Le deuxième serait 0,27, disons cette fois, et celui-ci serait un, et le troisième serait 0,6, ce serait encore une fois zéro Maintenant, pourquoi plus long que la chronologie précédente ? Parce que depuis, nous n'avons pas pu récupérer l'article. Nous devons indiquer au joueur qu'il ne s'agit pas d'un nouvel objet, juste au cas où nous tuerions quelque chose. Je ne sais pas. Choix de design, considérez le choix de design. Je pense que l'animation devrait être plus longue car elle n'est pas captée, c'est quelque chose à indiquer au joueur, ce n'est pas habituel. Lorsque vous laissez tomber des objets constamment et que tout à coup, vous ne pouvez plus les récupérer , cela ne devrait pas être l'animation habituelle que vous voyez même un petit moment ou un peu Je pense que même un petit moment ou un peu plus long pourrait avoir un impact. Maintenant, le mouvement serait vraiment facile à réaliser. Nous allons à cet endroit. Nous allons alerter Vector. J'utilise cette nouvelle piste pour Alpha et notre position finale ne devrait pas s'y trouver. Notre emplacement cible serait l'Alpha, le A et l' emplacement cible plus. Comme, disons 150, ce serait RB. De là où nous sommes, nous montons puis nous descendons. Et quand ce sera terminé, nous passerons à l'interaction. Maintenant, si c'est vrai, si nous décrochons l'objet, nous allons juste faire baisser le niveau d'acteur. Et ce serait le cas. C'est la fin de notre code pour nos articles. C'est tout le code des articles. Maintenant, nous pourrions commencer par l'inventaire, mais nous devons faire un peu de travail préalable pour démarrer l' inventaire dans notre mode de jeu. Donc, lorsque nous lançons l'inventaire R two, lequel je clique maintenant pour passer en mode jeu, nous devons préparer certaines variables. L'une de ces variables serait notre niveau de gon. Niveau générateur, niveau donjon. Ouais. Il sera de type entier. Pour remplir ce niveau tangent, nous allons accéder à notre générateur puis nous allons commencer à jouer et définir le mode de jeu Déplace ce bout ici. Et nous allons régler le niveau de Dangon au niveau de notre générateur Apportez-le ici pour le connecter. Maintenant. La prochaine chose dont nous avons besoin. C'est une erreur car il n'a pas été compilé. Nous avons terminé avec les éléments, compilons le tableau. Je vais fermer des baignoires. Il existe de nombreux accessoires. Nous n'en avons plus besoin. Bref, maintenant je peux voir. Nous recherchons donc l'ancien jeu. Nous y voilà. Maintenant, la prochaine variable dont nous avons besoin sera essentiellement celle d' une carte. Avec le premier, faisons-en une carte. La première clé serait le nom, qui signifie notre article. Et le second serait un entier, qui sera le montant. Je vais nommer cette variable. Pli. B nous n'avons pas besoin de sauvegarder quoi que ce soit d'autre pour nos articles. Nous avons juste besoin de savoir de quel article il s' agit et combien de cet article ai-je ? Nous sommes maintenant prêts à remplir cette fonction que nous allons exécuter dans la prochaine leçon. Au revoir pour le moment. Chante toi à la prochaine. 70. Compteur de pièces et widget de collecte: Bonjour et bienvenue au Game Design Workshop et au cours de création de 95 ARP d'action Procedural Dungeon Auparavant, nous en avions terminé avec notre article BP. Nous avons terminé notre événement interactif que nous avons également lié en cliquant sur notre widget Wood Item World. Maintenant, lorsque nous interagissons, nous nous demandons si nous sommes en mesure de choisir si nous sommes à portée et si nous interagissons déjà. Si nous n'interagissons pas, nous définissons l'interaction sur true. Nous ajoutons notre objet à l'inventaire. Nous essayons d'ajouter l'article à l'inventaire car nous avons la valeur de retour de l'article sélectionné. Donc, sur cette base, si nous ne pouvons pas choisir l'objet, nous jouons une animation, et si nous choisissons l'objet, nous détruisons notre acteur. Ensuite, nous sommes passés en mode jeu et nous avons enregistré le niveau du donjon via notre générateur de labyrinthes Compilons ceci en fait. Nous avons enregistré le niveau du donjon au début de la partie, et nous avons créé un inventaire variable, qui est une carte des noms et des entiers, noms des lignes de la table de données et entiers pour combien en détenons-nous ? Continuons à remplir notre annonce dans l'inventaire. Ce dont nous avons besoin en premier, c'est de notre tableau de données. Nous allons donc obtenir des données. Et pour leur propre nom, nous allons le relier à un nom. Pour le tableau de données, nous allons utiliser nos éléments DT, et pour notre ligne suivante, nous allons en faire la promotion pour les variables locales. Appelons-le Data. Maintenant, nous allons briser ce thêta. Et nous allons poser une question simple. Cet article est-il applicable, puis-je l'ajouter à l'inventaire ? Si je ne peux pas l'ajouter à l'inventaire, cela signifie que c'est de l'or car c' notre seul article qui n'est pas ajouté à l'inventaire. Cela signifie que nous devons calculer le nombre de pièces que nous allons ajouter. Non La première chose que nous devons décider est le nombre de pièces que nous allons ajouter. Oh, nous allons atteindre le niveau de notre donjon. Nous allons obtenir une plage aléatoire. Je vais commencer par un et un niveau de donjon plus un. Nous n'allons pas réellement utiliser les pièces dans ce jeu. Ce que nous pouvons faire, c'est que vous pouvez, si vous le souhaitez, créer une boutique et la faire apparaître quelque part ou ouvrir une interface utilisateur entre les niveaux choisir des améliorations et dépenser ces pièces Nous allons maintenant promouvoir cette variable. Nous allons nommer les pièces, et nous allons les relier aux chutes. La prochaine chose que nous devons faire est mettre à jour lorsque nous aurons notre widget. Non, commençons à créer notre widget de jeu. Nous allons passer à I. Cliquez et sélectionnez l'interface utilisateur, plan du widget, ou le widget, et nommons-le W G, gameplay Je vais l'ouvrir. Je vais l'amarrer ici. La première chose que je vais ajouter est un Canvas. Laisse-moi zoomer une seconde. Maintenant, pour notre interface utilisateur, ce qui représentera nos pièces sera une boîte horizontale. Et à l'intérieur de cette boîte horizontale, nous allons ajouter un Et le texte. L'image serait celle de notre pochette, et notre texte indiquerait combien de pièces nous avons. Nous allons les sélectionner toutes les deux et régler pour qu'elles soient comblées à la différence que le texte doit être aligné horizontalement au centre et verticalement en centime. Pour notre image, sélectionnons la pochette. Laisse-toi encore un peu. Hein ? Maintenant, nous allons l'agrandir un peu. À quoi ressemble notre image et où elle n'est pas trop diffusée. Je pense à cette épingle. Sélectionnons notre bloc de texte, mettons-y 30. D'ailleurs, est-ce qu'il peut en contenir quatre ? Oui, quatre chiffres, c'est bien. Même cinq chiffres, c'est bien. Faisons juste trois chiffres. Utilisons maintenant les ancres pour l'ancrer ici. Nous le changerons peut-être par la suite par rapport au reste de l'interface utilisateur, mais pour le moment, nous l'avons ici. Et faisons du bloc de texte une variable. Appelons ça des points. Maintenant, revenons au jeu. Et nous devons réellement créer ce widget. Nous allons donc passer à Even Graph comme nous l'avons fait dans les widgets précédents. Nous allons créer un événement pour les clients. Nous allons l'appeler show game play. Nous allons créer un widget. Nous allons choisir le gameplay. Le joueur propriétaire est un contrôleur de joueur. Nous allons en faire la promotion en tant que variable. Appelons cela un gameplay W. Et nous allons l' ajouter à la fenêtre d'affichage. Maintenant, revenons à l' inventaire pour obtenir notre référence du gameplay de WG et le texte de nos points Réglons le texte. Pour le texte, nous allons utiliser les pièces. Notre prochaine étape consiste à nouveau à indiquer que notre joueur a ramassé quelque chose. Encore une fois, nous allons avoir besoin d'un widget. Nous allons à nouveau utiliser le widget de jeu pour cela. Ce que nous allons faire, c'est dupliquer cette boule horizontale, mais pas à l'intérieur, pour l' ancrer dans le Canvas. Et je vais faire en sorte que ce soit à peu près à la taille. Ils ont à peu près la même taille. Et je vais le placer ici. Je vais l'entourer de quelques points d'ancrage. Vous pouvez mettre les ancres à l'extérieur, alors voilà. Ce que je vais faire, c'est inverser cette tendance. Changez ce paramètre de 000 à sélectionné par des points. C'est un peu gros. Peut-être que nous avons besoin d'un format ou d'une taille inférieurs. Huit. 28 convient parfaitement, et nous allons l'animer. Maintenant, pour animer, nous allons passer aux animations. Comme vous pouvez le voir, je l' ai sélectionnée, la boîte verticale, pas quelque chose à l'intérieur. Je vais appuyer sur plus deux animations. Je vais appeler cet article, sélectionner, passer au suivi. Comme je l'ai sélectionné, je peux le sélectionner en tant qu'élément. Oh, je vais sélectionner la case horizontale. Et je vais appuyer sur Plus pour qu'il se transforme à nouveau, et maintenant je peux manipuler sa transformation au fil du temps. Donc, à zéro, nous allons commencer ici. Disons que dans une demi-seconde, je vais déplacer ma barre à une demi-seconde. Je voudrais avoir déplacé la traduction x jusqu'à 61, limitons-la à. Je vais maintenir cet emplacement à 0,8, disons. Je vais placer ce verre ici, et cela ajoutera une autre marque. Peut-être que 0,8 l'est aussi. Mettons-le sur l' un d'eux. Changez cela. Je vais simplement faire glisser ceci, et je vais également faire glisser ceci, vous devez faire glisser cette première action. Nous avons simplement fait glisser le point et il y parviendrait. Je les laisserais tomber tous les deux. Maintenant, ensuite, je dois ajouter une autre valeur ici sur un, qui serait notre axe y. Jusqu'à 1,5, je veux que cela soit abaissé. Combien beaucoup plus. Disons que cela n'a pas vraiment d'importance, car nous allons également le faire disparaître. Mais restons-en là, disons 60. Maintenant, je veux ajouter une piste PA. Quand cela baisse, cette partie de la pointe molaire est peut-être parfaite. 0,9. F 0,9, je souhaite ajouter une nouvelle piste, qui serait l'opacité du rendu Nous passerons de 120. C'est ainsi que nous animons notre widget. Mais nous voulons que cela se joue chaque fois que nous ramassons quelque chose. Pour cela, nous allons avoir besoin d'une fonction. Mais nous allons continuer sur ce point lors de la prochaine leçon. Au revoir pour le moment. À bientôt. 71. Fixer la fonctionnalité du compteur de pièces: Et bienvenue dans l' atelier de conception de jeux et dans Real Engine cinq appels à la création procédurale de Dungeon Action BZ Auparavant, nous avions commencé à créer notre publicité pour l'inventaire dans notre fonction de mode jeu. Nous utilisons donc la table de données pour obtenir notre temporaire à partir du nom de ligne entrant, qui provient de notre élément BP. Maintenant, nous avons commencé par une succursale qui s'est demandé s' il s'agissait d' un article ajouté à l'inventaire ou s'il s'appliquait simplement à notre étui en or. Comme c'est la seule tablette dont nous disposons, avons créé un code pour répartir aléatoirement le nombre de pièces que nous obtenons Et nous avons défini cette valeur sur notre widget, ce qui est en fait faux car nous avons besoin d'une variable relative au nombre total de pièces à ajouter à notre widget de jeu, non de la variable temporaire que nous obtenons. Nous allons donc promouvoir cette variable. Faites-en un total de pièces. Et nous connectons cela. Je vais le déconnecter, récupérer les pièces temporaires et les ajouter au total des pièces. Je vais définir cette valeur sur le total des pièces. Ensuite, je vais utiliser le total des pièces à ajouter au widget. Nous aurions pu utiliser cette pièce pour la prochaine pièce que nous avons conçue. Nous avons également créé le widget de gameplay. Et dans le widget de jeu, où nous définissons le nombre total de pièces, se trouve cette valeur ici, ce texte ici, qui indique notre total de pièces. Maintenant, il a cette icône de pochette. Ensuite, nous sommes allés de l'avant et avons copié ce widget ici, inversé l'ordre des deux, et nous avons nommé les pièces, nous les avons laissées dire « cueillies Nous ajoutons une icône. Maintenant, si nous avions ajouté un chiffre ici, sélectionné et un chiffre, puis l'icône, nous aurions pu utiliser notre variable de pièces ici pour indiquer le nombre de pièces que nous avons ramassées. Mais comme nous n'utilisons qu'une image, c'est bon. Nous n'allons pas utiliser cette variable pour cela. Nous ne l'utiliserons que pour l'ajouter au total des pièces. Maintenant, continuons avec cette fonction. La prochaine chose dont nous aurons besoin, ce qui sera courant dans la vraie branche et dans la fausse branche , est d'effectuer une mise à jour pour montrer au joueur que nous avons récupéré quelque chose. Et nous avons créé l'animation dans l'onglet Animation. Nous travaillons un peu vite ici. C'est donc la partie qui contient les animations pour ceux qui sont nouveaux. Et lorsque nous cliquons sur une animation, nous obtenons ses camions, dont nous allons animer les éléments Ici, c'est le temps qui passe, et nous définissons ce que nous voulons voir se produire sur chaque camion, sur chaque élément que nous voulons, sur la catégorie spécifique que nous voulons. Il y a plein de catégories ici. Loin. Nous l'avons donc animé, mais pour le jouer, nous avions besoin de fonctionnalités. Nous n'avons pas besoin de fonction. Nous créerions un événement personnalisé ou l'organiserions même depuis un autre endroit. Mais pourquoi ne pas nous faciliter un peu la vie et l'intégrer à une fonction que nous pouvons appeler avec quelques entrées. Puis programmez encore et encore quand c'est nécessaire. Oh, nous allons créer une nouvelle fonction. Appelons cet élément fonctionnel. Ramassage. Et dessinons à partir de la ligne d'exécution, et ils jouent une animation. Nous devons spécifier une animation. Si je clique ici, nous n'en verrons aucun car ils se trouvent dans cet onglet, choisissez et choisissez. Pour obtenir cette animation, connectez-vous en C ici. Et encore une chose que nous devons faire avant de jouer à l'animation, car c'est à peu près tout. C'est ainsi que nous jouons une animation. Accédez à Designer Tub, sélectionnez l'image, l'image de notre article ici, et le set est variable. Appelons cet élément image, puis revenons au graphique de notre fonction, obtenons l'image de cet élément et passons rapidement à la texture. Nous n'avons pas besoin de trop cliquer sur la taille car nous voulions conserver la taille que nous voulions. Et voici la texture dont nous avons besoin , mais ce sera la variable d'entrée. Je vais le connecter ici. Je vais créer la variable de texture ici pour nous. Je vais compiler et enregistrer, et revenons à notre meilleur jeu urbain. Nous allons obtenir notre référence en matière de jeu Wood you. Je vais dire ramassage d'articles. Nous allons le connecter ici. Et pour la texture, il nous faut un peu plus d'espace. Nous allons obtenir nos données à terme, c' est-à-dire les données relatives aux articles que nous avons stockées au début. Je vais le diviser, obtenir notre image d'inventaire et l' ajouter pour récupérer l'article. Maintenant, lorsque l' animation sera jouée, elle aura l' image appropriée de chaque élément. Passons maintenant à la partie suivante, la vraie branche si l'article est sélectionnable , donc il est sélectionnable Nous pouvons le mettre dans l'inventaire. La première question devrait être la faisons notre inventaire ici. Est-ce qu'il existe dans notre inventaire ? Je vais donc demander s'il peint comme nous l'avons fait avec le donjon tant de fois. Et ce qu'il va contenir c'est le nom brut que nous sommes en train Donc, nom de la ligne ici. Ouais Mais j'en utilise un tas. Laissez-les paraître un peu plus beaux ici. Commençons maintenant par une branche qui ne figure pas dans l'inventaire. Et la question suivante que nous devrions nous poser est la suivante : notre article est-il plein ? Pour notre inventaire, nous disposerons de quatre emplacements. Je vais donc copier cette branche, et je vais demander si la longueur de l'inventaire est égale ou inférieure ou égale à trois. S'il y en a trois, nous pouvons toujours en ajouter un de plus. Si c'est quatre, alors ça va devenir faux. Ici, c'est faux, ça va être très facile à compléter. Nous allons juste récupérer notre nœud de retour, et dire que l'objet n'est pas sélectionné, il diffusera notre animation. L'article n'a pas été sélectionné. Maintenant, si c'est vrai, nous allons simplement obtenir notre inventaire. Nous allons ajouter notre élément, qui serait le nom de la ligne. Et nous avons, à titre temporaire, le soin de le faire ressortir. Nos données temporaires. Nous avons le montant. Encore une fois, l'étape suivante devrait être le ramassage de l'article. Je vais le connecter. Voilà, je vais l'apporter ici. Je pense que c'est bon. Continuons avec la vraie branche si elle est déjà contenue. Non, nous allons demander si l'article est stable. Je vais apporter ça ici. Parce que s'il n'est pas stable, il ne sert à rien de le récupérer. Nous allons donc apporter ça ici. Et encore une fois, le nœud de retour indiquera « non sélectionné », donc l'objet rebondira Nous sommes pleins de cet article. Nous n'en voulons plus. Nous le voulons peut-être, mais il se peut qu'il s'agisse d'un seul article en stock. Que pouvons-nous faire ? Oh, que se passera-t-il si c'est le cas, et nous en avons certains dans l'inventaire. Nous allons obtenir l'inventaire parce que c'est ce à quoi nous avons affaire. Nous allons trouver le nom de notre ligne. Quel est notre article. À partir de là, nous allons promouvoir notre variable locale, appeler « viable », « nul  » et « terrible ». Cela semble être un thème de ce cheval. Lorsque vous travaillez avec plus de personnes que Loo, chaque nom doit décrire à quoi cela sert en gros. Il devrait toujours y avoir des mises à jour sur les variables relatives à ce qui a été créé et à tout le reste. C'est un équilibre délicat, il ne faut pas en abuser. Quoi qu'il en soit, nous allons maintenant obtenir les données de notre tente, son montant. Eh bien, en fait, le montant de l'article, vous voyez les données Tem, ça m'embrouille. Le montant de l'article à partir de nos données Tem, nous allons donc accepter les plus. Nous allons ajouter cette variable d'objet à ces données de température, et nous allons ajouter notre carte de notre inventaire Leur propre nom. Je ne l'ajouterai pas à nouveau. Je vais juste le mettre à jour, ainsi que la somme de cet ajout. La prochaine chose que nous devons faire est de récupérer les articles. Mais il devrait y avoir une étape entre cela et le ramassage des objets dont aucune de ces actions n'a besoin. En fait, cette action est également nécessaire car nous ajoutons quelque chose de nouveau à l'inventaire , à savoir mettre à jour la partie visuelle de l'inventaire. Oh, allons créer notre inventaire lors de la prochaine leçon, et celui-ci sera pour celui-ci. J'irai te voir alors. Au revoir 72. Visuels d'inventaire dans le gameplay: Bonjour, et bienvenue à Gain Design Workshop, à Real Engine Five, à un donjon procédural, à un RPG d'action et à un cours de création Auparavant, nous avons poursuivi notre fonction d'ajout à l'inventaire. Nous avons corrigé le nombre de pièces et nombre total de points nécessaires, et nous avons continué en créant une fonction pour le ramassage des objets. Nous avons créé une entrée de texture. Nous avons défini le pinceau sur l' image de notre objet à partir du pinceau provenant de notre objet en fonction de la texture de notre article, et nous avons diffusé l'animation. Maintenant, nous avons continué à vérifier la véritable succursale, certaines règles et conditions ici, si elle est déjà contenue, si notre inventaire est plein ou non. Lorsque les conditions ne s'appliquent pas, nous renvoyons le message « false », lorsque les conditions s'appliquent, nous ajoutons à notre gamme ou modifions notre montant. Encore une fois, en ajoutant simplement parce que c'est une mise à jour, puisqu'il s'agit d'une carte, puis nous continuons à jouer au ramassage des objets. Maintenant, une meilleure version du ramassage d'objets serait de les placer dans un widget séparé et, pendant qu'il joue, disparaître soudainement et d'en faire apparaître un nouveau lorsque vous en choisissez trop souvent Ou une autre mise à niveau. Cela pourrait être un code beaucoup plus détaillé avec des règles et tout et créer des choses, créer des entités en gros. Mais maintenant, il est temps de créer un petit inventaire. Je vais donc utiliser à nouveau une boîte horizontale. Je vais le placer juste ici. En fait. Amenons-le ici. Ensuite, je vais apporter que nous pouvons utiliser les préréglages, toujours plus facilement Et évaluons cela correctement cette fois. Ce sera un inventaire. Cela va être plus détaillé. Oh, pour la taille X, choisissons cent, ou 150 pour la taille Wits Et pour le placement, choisissons O. 50 et Y O -100 Parce que je pense que c' est un bon endroit pour choisir l'inventaire sur notre écran. Bien entendu, nous allons également l'animer. Devenir une animation très simple. Passons aux animations. Ajoutons un camion. Appelons cet inventeur. J'ai un mot, et j'entre. Créons une trace vers cette boîte horizontale. Je peux le sélectionner comme ça parce que je l'ai sélectionné. Si vous ne savez pas lequel est lequel, nous pouvons toujours les renommer. Tu sais quand ce sera le. Boîte horizontale, et ce serait la boîte horizontale des pièces. Il s'agirait de la boîte horizontale de l' inventaire. Revenons à nos animations. Nous pouvons voir que nous avons le bon camion, et nous allons ajouter un camion, qui va être transformé. Ce que nous allons faire, c'est la première à la première seconde, avec une action de zéro seconde. Je vais être sur X zéro. Disons un temps de p cinq. P 0,5 serait génial. Ce serait 900, je crois, -900. Et ça l'amène ici. Je pense que c'est suffisant. Si c'est trop loin. Je ne suis pas sûr. Je pense que c'est un bon endroit. Vous pouvez le placer où vous le souhaitez, mais pour nous, maintenant cela fera l'affaire. Maintenant, pour la partie interne, réinitialisons l'animation, sélectionnons notre case horizontale d'inventaire. Ajoutons quatre boutons. Un, deux, trois, quatre. Nommons-les également. Pourquoi pas ? Le B en un. Et allons-y un avec ni deux. Trois et quatre. Maintenant, nous allons tous les sélectionner, et nous allons les mettre dans le champ. Nous allons sélectionner le premier pour définir son style, puis nous allons copier cette base sur les autres boutons. À votre image. Passons à nos textures. Et nous avons, oui, cet article en encadré un. Laissons la teinte S, le carré va bien. Teinte pour la couleur normale , laissez-la telle quelle. Sur le pointeur de la souris, copiez-nous également et goûtons l'image. Donc, pour l'image secrète , nous allons sélectionner une teinte jaunâtre, puis nous allons coller à nouveau l'image Pour celui pressé, sélectionnons une teinte verdâtre. C'est bon. Et maintenant, copiez-collez cette pile, copiez, sélectionnez le bouton, collez et collez. Dernier bouton, collez. Nous avons maintenant quelques visuels. Maintenant, pour ce qui est de l'intérieur des boutons, utilisons une boîte à échelle et mettons à l'intérieur du bouton, c'est un enfant du bouton. Dans la zone d'échelle, je vais utiliser une superposition. Dans cette superposition, nous allons avoir une image et un texte Maintenant, expliquez très rapidement pourquoi nous utilisons chaque pièce. Image, nous avons besoin de l'image de l'article. Du texte, nous avons besoin du montant, et de la superposition, nous avions besoin de la carte derrière et du texte devant Non, ce qui est en fait fait fait. Je suis juste le contraire. J'ai besoin du texte ci-dessus, je pense. Je devrais avoir le texte. Cette image, permettez-moi de la modifier pendant une seconde. Choisissez le texte. Oui, c'est Collect. Le texte doit donc être le deuxième objet à l'intérieur de la superposition La boîte à balance, nous l'utilisons au cas où nos images seraient grandes dans la boîte ou pour faire en sorte que ce que fait une boîte à échelle, elle s'adapte à l'intérieur du contenant dans lequel elle est alimentée. Il le redimensionne pour l' adapter au contenant. Copiez-collez donc la case d'échelle avec ses enfants sur tous les boutons. En fait, corrigeons le premier, je vais supprimer le collé Corrigez le premier visuellement car si nous corrigeons les visuels, puis que nous les copiers-collons, nous aurons également les mêmes Nous allons donc configurer la superposition pour tout remplir, et nous allons définir la case d'échelle. Il est également déjà rempli. Ensuite, nous allons configurer l' image pour qu'elle remplisse tout, et le texte sera en bas à droite. Ensuite, nous allons sélectionner une autre option ici, qui est la justification où le texte commence et se termine au milieu. Et nous voulons, bien entendu, que le texte soit nul pour le moment. Et bien sûr, nous devrions remplacer le téléphone par un téléphone vraiment plus petit. Le huit n'est pas si grand, il n'atteint pas le sommet. Je pense que c'est une bonne proportion par rapport au chiffre. Pour l'image, passons à nos textures. Et je trouve ça drôle, je trouve ça drôle, ça a l'air bien. Si je sélectionne la texture CGL ou même HP, la première texture, j'ai l' impression qu'elle est verrouillée ou quelque chose comme ça Quoi qu'il en soit, vous pouvez choisir quelque chose qui vous plaît. Mais il existe des règles spéciales. Vous voyez, nous avons un espacement autour de nos textures. Il s'intègre donc bien à l' arrière-plan. Par exemple, si j' apporte la potion rouge, vous pouvez voir qu'elle se remplit correctement, alors que si j'apporte, disons ceci, ici ou ici, elle masque l'arrière-plan Je vais donc peut-être me contenter de la portion santé. C'est cool aussi, mais les joueurs penseront qu'il y a quelque chose sur lequel cliquer ici, et ils essaieront de cliquer. Eh bien, on dirait plutôt que c'est verrouillé. Quoi qu'il en soit, je vais sélectionner ceci. Je vais maintenant vous copier notre boîte d' échelle car nous avons défini les attributs, je vais la coller. Je vais également le coller en trois, numéro quatre. Maintenant, sélectionnons toutes ces images et faisons-en une variable. En fait, nous devons les nommer. Ni un, ni deux, ni trois, la capitale depuis que j'ai commencé avec les capitales. Quatre. Maintenant, la prochaine chose dont nous allons avoir besoin est d'accéder à notre graphique et de créer une nouvelle fonction que nous allons appeler update. Et bien sûr, cela va avoir besoin d'une entrée, et ce sera un nom, et ce sera une carte. La deuxième variable sera un entier car il s' agit de notre inventaire. Inventaire. Je pense que c'est la fin, il ne nous reste plus il ne nous reste plus qu'à passer à notre mode de jeu de haut en bas, et depuis notre gameplay en WT, à consulter notre inventaire. Maintenant, nous pouvons l'appeler ici ou nous pouvons l' appeler à la fin. Cela n'a pas vraiment d' importance, car comme nos points ne mettent rien à jour dans l'inventaire, seront simplement mis à jour sans rien changer. Mais nous aurions pu l'avoir ici, mais c'est disons plus optimal. Ça ne l'est pas. Cela n'a pas vraiment d'importance. Mais il effectue moins d'opérations. Si nous avions un inventaire très important, cela commencerait à avoir de l'importance. Nous allons apporter l' inventaire ici, nous allons le connecter ici, et nous l'avons prêt à fonctionner. Et ce sera tout pour celui-ci. Dans la leçon suivante, nous allons compléter cette fonction. Au revoir, C alors. 73. Mettre à jour les visuels d'inventaire: Bonjour et bienvenue dans le cours de création de RPG d' action et donjon procédural de Real Engine Five RPG d' action concerne le dernier point, nous nous sommes arrêtés avec la conception de notre widget pour notre inventaire, En ce qui concerne le dernier point, nous nous sommes arrêtés avec la conception de notre widget pour notre inventaire, qui fait partie de notre gameplay, aG Gameplay. Nous avons donc ajouté quelques images. Nous avons ajouté un texte pour indiquer le nombre d'articles de l'article en question dont nous disposons. Nous les avons ajoutés à une superposition afin qu'ils se chevauchent, et nous les avons ajoutés à une case d'échelle, qui appartient aux boutons que nous avons ajoutés Et nous avons ajouté la case d' échelle pour que la partie interne remplisse correctement le bouton. Nous avons animé notre inventaire en utilisant une très simple piste de traduction en déplaçant simplement la valeur x, et nous avons commencé à créer notre fonction de mise à jour de l'inventaire. C'est fini si je peux le trouver en mode jeu ici, dans notre fonction d'inventaire A. Commençons donc à le remplir . Qu'est-ce que cela va faire ? Discutons-en au fur et à mesure que nous le construisons. La première chose que cela fera est d'obtenir nos clés. En gros, nos rangées d'articles. Ensuite, nous aurons également besoin de nos valeurs pour obtenir les montants, car nous devons également mettre à jour les montants. Nous obtenons nos clés pour accéder à nos données, aux données des articles. Nous allons donc promouvoir chacune une variable locale, appelons les clés. Promouvons cela également en tant que variable. Appelons ces valeurs. Oh. Nous allons passer en boucle toutes les touches. Je vais apporter les clés de Loop. Et je vais obtenir la ligne de la table des lignes de données à partir des éléments de la table de données D. En fait, je vais faire un rayon. Je vais en faire une variable locale. Appelons cet article des données. Je vais supprimer ces deux éléments, apporter les données de l'article et connecter la ligne suivante ici. J'ai donc également un rayon avec les données de mon article. Maintenant, je vais récupérer les images de mon inventaire. Dans un, j'ai deux, trois et quatre ans. Je vais créer un tableau. Maintenant, je peux utiliser tous nos boutons avec 14 boucles. F deux. Pour chacune d'entre elles, je vais poser une question très simple. L'article est-il en bon état ? Viens ici, connecté à l' index, je vais le casser. Pourquoi est-ce que je fais cela et comment est-ce que je le fais ? Étant donné que nos articles sont ajoutés à notre inventaire dans un certain ordre, cet ordre est conservé dans nos rayons Donc, sauf dans un cas, nous rassemblons pour indexer zéro de notre tableau d'inventaire, et ainsi de suite Donc, si nos articles sont stables ou non, commençons s' ils ne le sont pas. J'ai besoin du texte, revenons au concepteur. Nous allons sélectionner nos textes. Je vais les rendre variables T, en une. La prochaine sera la deuxième. Les chambres seront à trois heures. Maintenant, pour ce qui est des variables, je peux les ramener ici dans certain ordre, un, deux, trois, quatre. W pour créer un tableau. Vous souhaitez les ajouter à ce tableau. Puisque ces tableaux correspondent, je peux obtenir un index pour le modèle spécifique que je veux et rendre sa visibilité invisible Caché en fait. Je vais passer à faux. La prochaine chose que je dois faire est d'obtenir notre élément de tableau. Ça va être un petit peu. C'est la texture du pinceau. Connecté ici, et pour la texture du pinceau, je vais l'obtenir à partir des données de nos articles, inventoriez un article non connecté ici, et cette pièce est prête Nous réglons ce petit bois sur le fond pour qu'il soit invisible, et nous définissons l' image de la texture de notre article. Oh, si c'est visible, nous allons simplement obtenir la valeur de notre inventaire, c' est-à-dire les montants. Et nous allons trouver la texture de la texture, désolée. Nous allons recevoir le texte pour indiquer le montant. Je vais dire texto. Je vais obtenir nos valeurs ici, je vais en obtenir une copie, la valeur serait l' index que nous utilisons. Bien entendu, nous devons le rendre visible au cas où il serait invisible. Je veux dire, le texte dans lequel nous ajoutons un chiffre, puis nous allons définir la texture du pinceau. Ce serait le cas. Ce serait notre fonction qui met à jour l'inventaire. Il obtient nos valeurs, nos clés et nos valeurs, puis il crée une liste de nos éléments actuels. Il passe par nos boutons, applique les chiffres et les images ou les définit de manière invisible. Je pense qu'après tout cela, nous en avons fini avec notre système d'inventaire. Maintenant, je pense qu'après avoir mangé toutes ces choses, il est temps de commencer à faire naître notre personnage Nous pouvons commencer à tester certains de ces mécanismes. Pour ce faire, nous devons créer certaines choses pour rendre la transaction un peu fluide. Parce que, comme nous l'avons dit, nous avons ce chargement. Dans ce chargement, nous allons créer une animation, un camion à animations multiples. Mais nous allons l' appeler Fade Load. La première chose que nous ajouterons est notre barre de chargement, qui ajoutera de la visibilité au camion. Au camion, au camion à barre de chargement et à un autre type de camion , à savoir la visibilité. Maintenant, il va être caché. Nous allons maintenant sélectionner le texte de chargement, de notre animation sur le camion ou sur l'élément. Et maintenant, ajoutons le camion pour manipuler l'élément, visibilité étant à nouveau masquée. Enfin, nous allons sélectionner notre image. Nous allons revenir à l'animation, l' ajouter en tant que camion, ajouter le camion à ses propriétés. Nous allons définir l' opacité du rendu. Donnons-le. Disons 2 secondes et demie, 25, créons la différence, et ici elle sera nulle. Donc un à zéro. Nous avons ce huit de notre charge et de notre écran. Compilons et sauvegardons. Revenons à notre générateur de labyrinthes. Allons-y vers la fin. Nous sommes à 0,85 Faisons le mauvais collage. J'ai défini un pourcentage. Attendons également un fragment de seconde. Réglons-le sur un. Appelons maintenant le « pain loading ». Jouons à l'animation. Créons maintenant une branche ici. En fait, bifurquez ici, pour que cette condition soit au niveau du générateur. Cela équivaut à un. S'il s'agit du premier niveau, nous allons faire l' animation de jeu du chargement. Comme nous allons le supprimer de Parent. Donc ce dont nous avons besoin maintenant. Disons que c'est un événement. Je vais devenir un joueur d'événements. Disons-le ici. Joueur. Et passons à l' animation et au temps. Mais nous savons combien de temps prend cette animation, allons-y. Mais nous pouvons attendre que la phase soit terminée, et passons à Troll et à Non, préparez-vous. souris. Et cela nous permettra de jouer. Mais la question se pose avons-nous caché notre bouche ? Je pense que ce n'est pas le cas. Non, allons-y. Le début de la partie commence lorsque nous indiquons le chargement. Nous voulons cacher notre souris. Avant le chargement de l' affichage, nous allons régler la souris d' affichage sur false. Passons à notre écran de chargement et au widget. Sélectionnons nos cavas et définissons-les comme visibles. Si tout va bien, non ou pas. Cela doit connecter la cible au widget car il joue à Animate Target est un widget utilisateur Cela signifie où est-ce que je joue cette animation. C'est l'animation à laquelle je suis en train de jouer, mais à qui appartient-elle ? C'est ce dont elle avait besoin. Enregistrez un fichier et appuyez sur Démarrer le jeu. Le jeu commence. Merveilleux. Je pense que c'est tout pour celui-ci. Dans la prochaine erreur. Amenons-le là où il est. C'est un mouvement artistique. Nous n'avons pas encore programmé ces choses. C'est pour cela qu'il ne l' aime pas. Manette abaissée. Nous le réparerons plus tard. Mais c'est tout pour celui-ci. Nous allons continuer le suivant. Au revoir. 74. Faire apparaître le zoom du joueur en cinématique: Auparavant, nous avions terminé notre fonction de mise à jour de l'inventaire, qui permet d'obtenir notre inventaire. Il ajoute nos clés et nos valeurs pour séparer les valeurs temporaires. Nous parcourons nos clés, nous les ajoutons à nos données d'inventaire. Nous examinons les noms de nos tables clés et les ajoutons aux données d'inventaire. Ensuite, nous parcourons nos images, les boutons, en gros, et nous ressentons les statistiques en conséquence. Ensuite, nous sommes passés à notre écran de chargement. Nous avons créé une animation simple avec de nombreuses entrées, de nombreux éléments différents. Notre image de fond s'est estompée. Nous utilisons le chargement et notre bloc de texte pour ne pas les utiliser. Nous les avons définies pour qu'elles soient masquées au début de l'animation, afin qu'elles disparaissent, puis elles commencent à s'estomper. Dans notre générateur de labyrinthe, nous avons renseigné notre pourcentage de chargement Et si le générateur est au premier niveau, cela signifie que nous sommes au premier niveau. Nous jouons donc l'animation en fondu de notre inventaire de notre barre de chargement, puis nous faisons apparaître notre joueur En fait, nous n'avons créé qu'une fonction. Nous n'avons pas encore fait apparaître le joueur. Mais après cela, nous avons eu l'heure de fin de notre animation. Nous avons retardé et nous nous sommes mis à rude épreuve. Et la prochaine chose que nous devrions faire est de nous charger. Nous déménageons avec nos parents. Non, faisons apparaître notre joueur maintenant. La première chose dont nous aurons besoin, imaginez que ce seront les coordonnées du donjon Nous allons récupérer notre donjon. Nous allons trouver notre premier bloc, pour le diviser. Il indique 00 par défaut, et nous allons obtenir l'emplacement. Nous allons ajouter un peu de hauteur à cette chanson en appuyant sur Ajouter cent, et c'est le point de départ Nous allons maintenant utiliser Actor Plus. L'acteur serait l'acteur. Nous allons diviser cet emplacement de transformation. Si nous jouons comme ça, nous verrons probablement le pompon. Et sur une très grande distance également. C'est parce que nous n' en avons aucun contrôle, parce que nous apparaissons dessus, comme n'importe quel autre acteur que nous avons fait apparaître dans ce monde Nous avons donc une nouvelle erreur. En place chez Max's Items. Quelle était l'erreur ? Pourquoi essaie-t-il de Maze Generator Oh, probablement dans le labyrinthe. Nous n'avons pas ce qui est notre gros torse sur les accessoires, le spa, les accessoires personnalisés Non. Non. Je fais juste de la chambre et je vais directement à SP et notre gros coffre est là, Maze Generator Self ? Était-ce notre gros torse ou était-ce notre petit torse ? Trouvons le petit coffre. Oui, c'était un petit coffre. Moi même. Mais le gros coffre. Je ne l'ai probablement pas changé ou un gros coffre. Il nous faut un coffre ici. Ici. H. Pourquoi puis-je pas encore une fois Je ne peux pas être par défaut. Je le sélectionne de cette façon. Je ne sais pas pourquoi je n'ai pas aimé l'inverse. Et ici, nous avons besoin d'une génération. C'est donc ici que nous faisons apparaître le petit coffre, en gros. Je n'ai pas changé de classe. Je ne sais pas pourquoi Andel a eu un si gros problème. Oh, parce que j'avais correctement connecté la valeur de retour. Oui, c'est pourquoi. Revenons donc à notre personnage d'origine, et voyons pourquoi nous ne pouvons rien jouer, faire quoi que ce Lorsque nous faisons apparaître un autre acteur, pareil, nous ne pouvons toujours pas déplacer l'autre acteur ou quoi que ce soit d'autre Maintenant, les pattes et les personnages ont une capacité spécifique appelée pouvoir être possédés Et pour posséder quelque chose, nous avons besoin de la manette du joueur. Et depuis la manette du joueur, nous faisons glisser le pointeur qui, comme vous pouvez le voir dans l'infobulle, s'attache à la manette du joueur et donne possession de la patte depuis cette Cela signifie que vous pouvez essentiellement déplacer cette patte. Il y a beaucoup plus à propos de la possession. Nous n'allons pas nous y prendre pour le moment. Mais si je le laisse comme ça, cela signifie que je peux déplacer mon personnage pendant que le fondu se produit. Nous allons mettre un délai ici. Et nous allons utiliser l'entier de l'animation. Maintenant, appuyons sur Play, et vous verrez également la caméra changée ici. La caméra a un peu changé, et nous pouvons vraiment bouger. Nos pointes ne nous transpercent donc pas, elles nous font juste peur. Réglons ce problème. Plus tard, ça. Allons à notre piège, à nos pointes. Comme ce n'est que visuel, nous devons le régler sur aucune collision physique. C'est quelque chose qui se passe visuellement. Nous ne voulons pas que cela génère des événements de chevauchement. De plus, le corps du piège n'a pas besoin de collision. Passons à la collision. Aucune collision. Ne générez pas d' événements sur le rap, compilez et sauvegardez. Toutes ces petites choses sont simplement adoptées parce qu'il existe de nombreux pièges, adoptées parce qu'il existe de nombreux pièges, et il y en aura encore beaucoup. Et le temps passe, et on peut jouer. Il y a quelque chose de bizarre dans l'animation. Je vais vérifier ce que c'est. Nous pouvons entrer dans les chambres. Nous allons régler ce problème parce que l'appareil photo est bizarre en ce moment. Et comme vous pouvez le voir, je clique ici, donc je ne vais pas correctement. Ce sont des problèmes liés à un contrôleur de gain, et il y a de nombreux problèmes que nous devons résoudre. Quant à cette torche, par exemple, elle s'éteint facilement. Laisse-moi voir. Toutes les torches ? Toutes les torches. Commençons donc à arranger les choses. Commençons par cette torche que nous considérons comme tout ce que nous trouvons. Nous devrions le réparer instantanément. Nous allons donc passer aux lumières du couloir. Il va y aller directement. Donc des accessoires, des accessoires de chambre. Allons là où nous lançons notre flambeau. Une torche est en fait la première chose que nous faisons. Donc je dois l'être. Torche de toit. Remplaçons ces valeurs pour une fois de plus, nous en sommes aux accessoires de la salle Blueprint, cette première partie de la chaîne d'événements Quel était le problème ici ? Je pense que ce sont les trois, 320. Vérifions-le avec 320 et tout le reste. Pile play. est encore plus loin. Laissez-moi simplement le sélectionner. Je vais voir l'enfant. C'est l'enfant d'un enfant, donc il ne peut pas vraiment faire ça. Ce que je peux faire, c'est trouver les cultures de chambre. Et à partir de là, le flambeau. 20 n'était donc pas la bonne direction. Ça fait 375. Voyons une autre direction. Ça l'est. C'est quoi celui-ci ? OK ? Mais c'est dans la même direction. Celui-ci. Je l'ai trouvé dans Sly en cliquant dessus. 375. Oui, en gros, c'est la valeur. OK, donc 375, 375 moins 375 -75. Telles sont les nouvelles valeurs. Oh, continuons. Vérifions-le d'abord. Mais je pense que maintenant tout va bien se passer. Ces torches sont en bon état, elles sont encastrées dans le mur, mais tant pis, elles sont déjà meilleures C'est un peu à l'intérieur du mur. Mais c'est bon. Bien. Non. Continuons avec notre possession du poème. Qu'est-ce qui se passe réellement ? Ce que nous pouvons également voir, c'est que lorsque je joue, j'ai une lumière différente de celle ressens lorsque je suis possédé et que je possède le personnage lorsque j'éjecte, tout à coup, la lumière devient géniale, quand je ne l'éjecte pas, la lumière est mauvaise Non. Réglons ce problème, car il s'agit d'une rupture de contrat instantanée. Nous ne pouvons pas effectuer de tels tests. C'est vraiment moche. Passons à notre personnage du haut vers le bas, aux plans, au personnage de haut en bas, à la caméra, etc. Commençons par ajouter l'exposition à la lumière. Cela signifie que plus nous restons longtemps dans une lumière, notre œil, elle est adoptée, sorte que l'appareil photo crée un tel effet. Nous allons donc chercher une posture. Nous allons définir un maximum de 2,1. 0,1 est peut-être un peu plus bas. Réglons-le sur un et vérifions-le s'il est nécessaire de le baisser. Et il fait déjà un peu plus sombre. Si j'éjecte, nous pouvons voir que la palette de couleurs reste en quelque sorte la même, l'éclairage, ce qu'il crée Tout cela est réglé. La raison pour laquelle cela fonctionne ici est que nous n' utilisons pas les paramètres du jeu. En fait, je clique dessus, il n'y a pas beaucoup de différence, et e V zéro, où si je le mets à un, il fera plus sombre, et si je le mets à moins un, il deviendra plus clair. Maintenant, je mets à nouveau zéro. Et ce que c'est, c'est le niveau de désinposition. Je pense que c'est ce que signifie E V. Ce que nous devons également faire, c'est créer une petite intro car elle s'adresse très brusquement au personnage Alors je vais arrêter. Je vais ajouter quelque chose. Ajoutez rapidement au projet. Je vais passer devant la caméra. Acteur, je vais régler cette position à 000 d' ici et tu sais quoi ? Je vais vraiment le déplacer vers le haut, appuyer sur Play. Je vais rejeter. Trouvez l'appareil photo. Je pense que c'est le cas. Céra. Non, c'est parce que, comme vous pouvez le voir, c'est 1520, alors que notre caméra était sur 300 Je vais chercher cet appareil photo. Je vais cliquer dessus, je vais piloter la caméra. Pour le mettre dans une position générale peut-être. Ici, je ne sais pas. Ce sera notre caméra interne qui sera dirigée vers notre lecteur. Peut-être face au joueur. Et angle. Oui, OK. Maintenant, je vais appuyer sur A, et cela enregistre la position. Donc, si j'appuie sur Stop, cette caméra est dans cette position. Je vais maintenant passer au plan de niveau. Oh, nous avions une caméra. J'ai oublié ça. Je vais supprimer le premier appareil photo. Oui, cela devrait rompre les connexions. Et le plan de niveau. Je viens de l'ouvrir la dernière fois. Je vais choisir la caméra. B le niveau et créez une référence. Vous voyez maintenant qu'il a été actualisé parce qu'il ne l'était pas avant de régler la caméra Cela n'est pas connu car j'ai supprimé l'appareil photo précédent. Je vais le connecter. Nous allons le supprimer. Nous allons compiler et enregistrer. Et pour ce qui est du spawner player, je vais faire une séquence avant le Et je vais vous prêter et nous décliquerons contexte car nous ne pouvons pas le voir Je vais donc sélectionner une vue fade avec une cible de vue fade avec une cible de vue fade avec une cible de vue fade Maintenant, pourquoi n'est-il pas apparu ? C'est parce que ce n'est pas une fonction vraiment courante et qu'elle a une exigence. L'exigence est la manette de jeu. Donc, si je dessine à partir d'ici et que j' obtiens la cible de fusion de vues, voyons le mélange avec la cible. Examinons la cible avec une hausse fade et connectons cela ici Vous pouvez le voir, nous l'avons obtenu instantanément, sans tenir compte du contexte , car il appartient au joueur. La manette possède cette fonction, en gros. C'est dans la catégorie joueur. Donc, le temps de fusion serait encore une fois notre chargement, notre non-chargement, notre paiement après le chargement, et peut-être -0,1 seconde à la fin, nous avons un point à une seconde, c'est mon point de vue Enfin, nous devons associer notre nouvelle cible de vue à notre personnage, car c'est cette cible que nous allons regarder. Il va récupérer notre appareil actuel, notre appareil photo, et se diriger vers une autre cible. Allons tester cette pièce. Et ça marche en quelque sorte. Je pense que c'est suffisant pour celui-ci. Nous allons tout corriger lors de la prochaine car nous devons corriger certains paramètres, beaucoup de paramètres à corriger. Nous allons vous voir alors. Au revoir. 75. Correction de collision et détection de tuile de joueur: Bonjour et bienvenue sur Game Design Workshop et Real Engine, cinq cours de création de RPG d'action procéduraux dans les donjons Auparavant, nous avions créé notre mécanisme de caméra que nous définissions View Get en mélangeant notre caméra d'origine dans le niveau que nous avions placé, et nous avions créé une référence dans le plan de niveau, nous avions déjà créé, mais nous en avons créé une nouvelle, peu importe Et nous avons également terminé le code lorsque nous apparaissons pour mélanger les cibles et prendre possession du joueur fois l' animation terminée Maintenant, nous avons aussi joué un peu et avons trouvé certaines choses en nous déplaçant. Par exemple, lorsque notre joueur est à l'intérieur de la pièce, la souris a un comportement étrange. Et quand nous étions en fait, nous n'avions pas cet exemple, mais lorsque nous traversions des tuiles, le personnage faisait un mouvement étrange, en particulier entre les connexions des tuiles. Voyons maintenant pourquoi ces choses se produisent. Tout d'abord, si je m'éjecte, je peux toujours sélectionner des éléments dans le menu Afficher Mais si je sélectionne les collisions, nous pouvons voir instantanément ce qui se passe. Par exemple, nos buissons d' ici sont définis comme invisibles, mais leur collision est activée. va de même pour nos sigils, que nous rendons invisibles, mais la collision se poursuit Et cela prouve que le fait transformer quelque chose d'invisible ou de caché dans le jeu ne signifie pas que nous mettons fin à la collision. Un autre problème qui se produit est que lorsque nous commençons à jouer, notre exposition à la lumière est différente de celle de la caméra de jeu. Alors, réglons ces problèmes. Nous allons sélectionner notre appareil photo en un mot. Cherchons l'exposition, voilà, et réglons l'exposition minimale et maximale sur un, comme c'est le cas pour notre caméra de jeu. Je vais économiser. Maintenant, passons à notre tuile DP, sélectionnez le ns. élisant les vignes, nous allons passer au comportement par défaut, car elles n'ont pas besoin de générer d'événements de chevauchement Ils n'ont pas besoin d'être piétinés par le personnage. Ils n' ont pas besoin de collision. C'est juste une question visuelle. Nous pouvons donc tout régler pour qu'il n'y ait pas de collision. Nous allons enregistrer et compiler. Maintenant, parfois, nous pouvons avoir un crash en faisant des choses avec les vignes. J'espère que nous aurons résolu ce problème lors de la sortie. Il y a un problème. Laisse-moi te montrer. Je vais sélectionner un actif. Je vais faire visiter Explorer. Et dans Explorer, je vais passer au cours Dungeon Jin, puis je vais accéder à Saved et nous enregistrer un journal d'urgence, par exemple. Maintenant. Dans notre journal des pannes, si nous pouvons constater qu'il y a une erreur répétée, si vous avez eu un crash, concerne les vignes , seuls les mods opaques ou masqués sont actuellement pris en charge, et nous avons spécifié des mods de mélange C'est un problème avec la translucidité , comme on peut le voir sur les feuilles de pin. Je pense que nous aurons réglé ce problème en fonction du projet, mais si cela se produit, c'est juste que le moteur pourrait tomber en panne lors du déplacement ou de la modification des paramètres. Maintenant, la prochaine chose à faire est de passer à nos décorations et de sélectionner nos CDL Ils les sélectionnent tous, un, deux, trois, quatre, les sélectionnent tous, et je vais également passer à la collision et cocher générer des piens à non et le personnage marche sur non et pas de collision, parce que là encore, c'est quelque chose de visuel Nous ne devrions pas y jeter un œil. Nous ne devrions pas entrer en collision avec elle. Eh bien, si j'appuie sur Play maintenant, ces problèmes seront résolus. Donc, si je passe à travers les carreaux, les mouvements sont beaucoup plus fluides, et si je passe à côté des portes, je ne suis pas bloqué par une collision. Je ne pense pas que cela nous empêchait de toute façon. Maintenant, si j'entre dans une pièce, essayons d'entrer dans une pièce, vous verrez instantanément que la souris a quelques problèmes ici. Je vise à la fois mon personnage et celui-ci se déplace vers le bas. Pourquoi est-ce le cas ? Encore une fois, nous avons défini le plafond pour qu'il soit invisible. En fait, il est assis ici. Nous ne pouvons pas le voir, mais il est là, permet de désactiver les collisions. Et rallumez-le, et vous pourrez le voir mis à jour pour montrer que notre plafond est là. Pour arrêter les collisions, démarrons notre système permettant de masquer et de montrer le plafond d'une pièce. Mais avant cela, il suffit d'apporter un petit changement à notre appareil photo. Passons à notre caméra. En fait, nous allons nous intéresser à notre personnage, notre source, pas à la caméra. Le ressort est comme une perche. C'est comme un bâton qui tient l'appareil photo, et il a ses propres règles. Nous allons changer la longueur de bras cible à 2 500. Nous avons donc une certaine distance par rapport à notre personnage. Ensuite, nous allons changer La rotation n'a pas besoin d'être absolue, être relative à partir de -50, elle doit être relative à partir de -50, nous allons la maintenir à -50, et à l'axe Z, l'axe bleu, nous allons en ajouter 45 pour créer une vue isométrique de notre jeu La prochaine chose que nous allons changer, c'est que nous allons taper le décalage, il y a un décalage de caméra activé que nous allons désactiver parce que nous voulons notre personnage soit toujours centré et que ce ne soit pas la caméra qui change le personnage. Parce que si nous allons jouer maintenant, il y a un petit retard sur notre caméra lorsque nous nous déplaçons. Oups. Je pense que je me suis trompé sur l'emplacement absolu. Ouais. Il doit être en rotation absolue. Nous allons donc sélectionner World 45. Et maintenant, revenons en arrière. Ouaip. Il fallait que ce soit absolu. Vous pouvez voir les mouvements de notre personnage, mais notre caméra a du retard. Ce n'est pas vraiment centré sur notre personnage. Il y a un délai jusqu'à ce qu'il amène la caméra vers le personnage. Faisons en sorte que cela ressemble davantage au jeu Ablo sans ce délai. Nous allons passer à un personnage. Je vais sélectionner Lug à nouveau. Je vais désactiver Camera Lug. Alors maintenant, notre personnage devrait rester au centre. Nous avons beaucoup plus de contrôle, par exemple en arrêtant ici, en arrêtant ici. Nous savons ce que nous cherchons. C'est vrai. Maintenant, commençons le système pour les chambres. La première chose dont nous aurons besoin est de créer une variable pour notre personnage afin de stocker où se trouve notre personnage. Je vais passer à notre personnage. Je vais cliquer sur les variables, et je vais créer une nouvelle variable. Appelons ça ds, et ça va être utile. Maintenant, pour dire à notre personnage quelles sont nos coordonnées, nous devons également accéder à notre plan de tuiles et créer ici une autre valeur Appelons-nous. Modifions-le également en détail. Le meilleur moyen de stocker ce point final serait de faire apparaître la tuile Nous allons le faire éditer et exposer notre spawn, compiler, enregistrer et compiler, compiler, enregistrer et compiler, puis passer à notre générateur de génération de labyrinthes Passons au début de la première phase, mais nous sommes en train de créer nos tuiles, et nous devons les actualiser Nous avons des cordons de carrelage. Et pour les cordons de carrelage, nous allons simplement utiliser les coordonnées Curr. Alors maintenant, les informations sont passées à la vignette. Comment le transmettre au joueur ? Eh bien, dans le domaine des décorations, nous avons une collision que nous aurions peut-être utilisée pour autre chose, mais pour l'instant, nous allons l'utiliser pour cela. Mais nous devons cliquer sur générer des événements qui se chevauchent pour être vrais. Et pour les préréglages de collision, nous l'avons sur Atom Ignorez tout sauf le joueur, l' étang, en gros. C'est notre collision entre des boîtes et nos décorations. À partir de cette collision, nous allons commencer à superposer les composants. Nous allons vérifier si l' autre composant possède un remorqueur, c' est-à-dire le joueur de remorqueur, nous allons mettre une branche et s'il y a le remorqueur, nous allons choisir un autre acteur Personnage du haut vers le bas. Et à partir de notre personnage du haut vers le bas, nous allons atteindre les coordonnées actuelles. Et pour obtenir nos coordonnées actuelles, nous allons utiliser une tuile BP pour la référence de la tuile à laquelle appartiennent les décorations, et obtenir les coordonnées des tuiles. Et nous allons le connecter ici. Ainsi, chaque fois que nous entrons dans un bloc, notre joueur sait désormais dans quel style il marche. Maintenant, je pense que c'est un bon point de rupture pour celui-ci. Je te verrai bientôt. Au revoir. 76. Mécanique des plafonds de la pièce: Bonjour et bienvenue sur Game Design Workshop, véritable donjon procédural d' action Bz Creation Curs sur Engine Five action Bz Creation Auparavant, nous stockions nos coordonnées, les coordonnées nos tuiles, pour notre joueur. Et pour cela, nous avons créé une variable val dans notre tuile BP. Il y en a un. La voici, la tuile P, appelée coordonnées des tuiles, et nous avons construit cette variable lorsque nous créons notre tuile P à partir des coordonnées actuelles Ensuite, nous créons une autre variable sur notre personnage, les coordonnées actuelles, et en utilisant la collision de boîtes de nos décorations, nous modifions certains paramètres de collision. Nous avons créé un événement de début de superposition vérifier si le composant possède le tag player, et si c'est le cas, nous donnons les coordonnées de la tuile. Et maintenant, continuons à utiliser ces informations pour créer notre système destiné à masquer nos plafonds. Non. Nous sommes sur les coordonnées du plan. Allons nous rappeler ce que nous avons créé. Nous avons ajouté ici quelques collisions qui seront utilisées pour détecter si le joueur entre dans une pièce. Nous allons passer à leurs paramètres de collision. Nous allons aller générer des événements. Oui. Nous allons changer d'étape, nous allons laisser les paramètres « oui » et « collision » prédéfinis, nous allons à nouveau personnaliser et tout ignorer sauf le sondage des joueurs. La prochaine chose que nous allons faire est sélectionner chacune d' entre elles et de sélectionner l'épreuve du début au tour et l'épreuve du composant de fin au tour. Dans les deux cas, nous devons commencer par se chevaucher et mettre fin au chevauchement. Il pourrait y avoir une solution plus simple qui permettrait de lier ces actions. Mais faisons-le plusieurs fois et habituons-nous à ajouter des câbles. Nous avons tous les chevauchements de début et de fin. Séparons-les. La fin se chevauche donc et le début se chevauchent. L'ordre n'a pas vraiment d'importance. Encore une fois, que demandons-nous ? Faisons les chevauchements de début. Nous demandons si l'autre composant est le joueur. Nous allons donc récupérer le cerf P et notre succursale. Et nous allons le copier sur chaque fonction. Vous voyez, j'ai failli faire l'erreur, je me suis presque connecté à un acteur. C'est le problème que pose le fait de ne pas lier les choses dans les actions. Mais si vous ne vous trompez pas, vous pouvez le faire dans l'une des actions répétitives. Alors, pourquoi est-ce que West ne fonctionne pas ? Ensuite, nous allons voir que West ne fonctionne pas parce que c' est connecté à l'acteur. Bien. La prochaine question que nous devrions nous poser est la visibilité de notre plafond. Mais c'est une question qui concerne tout, afin que nous puissions la connecter à tous. Je vais installer la succursale ici. Je vais connecter toutes les branches T ici. Et d'après notre variable de plafond que j'ai apportée d'ici, nous allons le demander de manière visible Pour la partie suivante, nous allons avoir besoin de notre référence tangente, nous allons obtenir notre tuile, et nous allons obtenir son nom de générateur O référence au générateur, et nous devons créer une autre fonction sur notre générateur. Passons à notre générateur de labyrinthe, créons une nouvelle fonction Nous allons appeler cette salle fonctionnelle remplissant hydrom sep, elle aura besoin d'une entrée d'un entier, qui sera l'index de la pièce car chaque tuile sait s'il s'agit d'une pièce et elle possède un index Donc, si vous voulez des décorations, lorsque nous appelons chambre ici, nous devons également obtenir notre chambre X. Pas d'index des chambres, comment ? Je suis désolée, l'index des chambres est enregistré dans les décorations. Il est stocké lorsque nous ajoutons les murs. Nous activons en fait la collision sur le composant de la boîte lorsque nous ajoutons les portes. Quel composant de la boîte permet la collision. Murs R A, désordre dans le grenier, enfants des murs. Nous activons donc le composant box, à savoir les entrées. Ça a du sens. Mais si nous les avions activés ici, cela se déclencherait même s'il ne s'agissait pas d'une pièce, et cela donnerait la réponse « chambre zéro ». Nous allons donc fermer l' événement de génération de chevauchement de ces boîtes. Donc c'est mon erreur. C'est un énorme programme, je ne vais pas mentir. Et toutes nos boîtes intermédiaires doivent avoir leurs parois fermées pour générer des événements de chevauchement. Ils ne tirent donc que lorsqu'ils sont dans une pièce. Maintenant, je vais connecter l'index des chambres ici. Vous savez, cela n'en a peut-être pas l'air parce que nous sommes sur des plans, mais nous n'en sommes qu'à quelques milliers de lignes de code et plus encore La mémoire est donc un atout majeur pour un programmeur. Mémoire personnelle, mémoire biologique, pas mémoire informatique. Eh bien, la mémoire d'un ordinateur est également un atout considérable en soi. Maintenant, allons masquer la fonction C de la pièce. Complétons cette fonction de base. Mais encore une fois, nous allons avoir besoin de quelque chose de plus pour compléter cette fonction. Ce serait un noyau d' interface Blueprint. Ouvrons donc nos peignes de labyrinthe et ajoutons une nouvelle fonction. Appelons ça D. Eh bien, c'est essentiellement notre plafond parce que notre commande pour masquer le plafond provient des décorations. Nous avons envoyé vers un point central. Disons notre labyrinthe, car nous y avons les coordonnées de la pièce Nous cachons les plafonds de cette chambre. Ensuite, notre labyrinthe enverra actuellement un message à l'index de chaque pièce pour masquer son propre plafond Il s'agit donc d'un petit échange d'informations. Bref, allons dans notre labyrinthe. Non, désolé, dans notre labyrinthe, et nous allons promouvoir l'indice de chambre d'une variable, non pas une variable locale, mais une variable réelle, une variable permanente, réelle. Variable permanente. Appelons cela l'index des chambres. La raison pour laquelle nous en avons besoin est que lorsque nous masquons les plafonds, nous devons savoir à quel indice de pièce nous devons masquer le plafond. Oh. Maintenant, nous avons également besoin d'une référence de joueur et puisque nous faisons apparaître la référence dans ce graphique, quelque part ici Disparais comme par magie, fais-le disparaître, donne-le comme s'il était apparu de nulle part, non Fais disparaître, en gros, l'erreur que j'ai laissée ici. Quoi qu'il en soit, pour promouvoir cette variable, nous allons cliquer avec le bouton droit de la souris et promouvoir la variable. Je vais appeler ça. Nous avons donc maintenant une référence à notre joueur. Revenons à nos plafonds pour lui, et trouvons notre référence de joueur. Ce que nous devons demander est assez simple : est-ce notre heure actuelle ? Accords actuels Oui. Ce sont nos coordonnées actuelles, le joueur qui se tient debout. Cela ne correspond pas à l' index des chambres dans lequel nous nous trouvons. Mais pour ce faire, nous allons obtenir notre réseau de pièces ST, qui est un tableau contenant les coordonnées de nos pièces avec toutes les pièces et leurs coordonnées. Nous allons en obtenir une copie. Je vais chercher l'index des chambres. Et nous allons demander si cela est contenu. Ray est contenu dans un tableau, désolé au contraire. Cela se produit lorsque vous pensez à l'avenir, nous n'avons pas besoin de sortir de la pièce. Nous devons simplement vérifier si nos coordonnées s'y trouvent. En fait, nous devons y aller. Et nous devons connecter les coordonnées, cela doit être rompu. Eh bien, parce qu'il contient un tableau, en gros, c'est pourquoi, et nous vérifions le tableau contenu s'il est exprimé en coordonnées de la pièce. Je vais appuyer sur une branche ici, pour y mettre une branche. Et la prochaine chose que nous devons faire c'est à partir des coordonnées de notre chambre, nous allons aller et, comme nous l' avons dit, nous allons cacher le plafond. Maintenant, je l'ai connecté à false. Pourquoi l'ai-je connecté à false ? La raison en est que cela devrait se déclencher lorsque nous entrons dans une pièce. Nous ne devrions pas réfléchir pendant que nous sommes dans la pièce, puisque nos chambres sont composées de quatre de ces chambres. Et cela signifie que nous avons peut-être une autre porte par laquelle la collision entre dans la pièce. Si nous subissons ces collisions, nous ne voulons pas les déclencher à nouveau. Cela ne devrait donc se déclencher que de l'extérieur vers l'intérieur. Bien sûr, nous aurions pu faire face à une telle collision, mais pourquoi ne pas créer des circonstances dans lesquelles nous pouvons utiliser du code pour vérifier comment appliquer les règles Non, allons chercher notre donjon. Trouvons nos coordonnées, notre acteur. De cet acteur, qui est notre titre, en gros. Allons chercher nos décorations, qui sont le contenant de notre acteur de décorations. Nous avons besoin d'un acteur et à partir de là, nous allons déposer un message. J'enverrai le message que nous venons créer dans notre interface Blueprint Parce que si je l'envoie directement sur la vignette, cela ne signifie pas que l'enfant acteur l'obtiendra. Et aussi, si je l'envoie aux Corans, c'est un conteneur. Ce n'est pas le véritable acteur. J'ai donc besoin de l'enfant acteur. Nous allons tester et nous avons un autre crash. Voyons à nouveau quel est le problème. Ouvert au crash. C'est aller dans le fichier g. Nous sommes partis d'ici. Utilisé sur matériaux valides non statiques. Le matériau a donc un problème. Oui, c'est le même problème avant. Il est mélangé et opaque et son mode de mélange a été spécifié, translucide, puis ce n'est pas un problème. Nous allons donc résoudre ce problème, envoyer et redémarrer. Et comme vous pouvez le voir, je ne l'ai pas fait, je n'ai pas sauvegardé avant de compiler et de sauvegarder. Je vais donc le refaire très rapidement , caméra alla, et c'est fait. Maintenant, avant de tester, allons créer un code très simple pour masquer le plafond Passons à notre décoration, et allons ajouter notre interface car les décorations ne l'ont pas. Nous allons donc ajouter Mize, Pi, PI . Je l'ai implémenté. Si vous ne l'avez pas implémenté, ajoutez simplement que le labyrinthe arrive ici À partir de là, nous allons accéder à l'interface et sélectionner les hauteurs. Passons au jeu pour le moment. Nous aurons toujours le problème de collision, mais les plafonds doivent être cachés lorsque nous entrons dans la pièce. Allons également jusqu'à notre plafond et trouvons sa visibilité, caché dans le jeu, et allons-y ou ce n'est plus caché dans le jeu. Il doit être caché lorsque nous jouons. Quand on entre dans une pièce. Jouons. J'espère que tout va bien. La poitrine a besoin de la règle. Nous atteignons le plafond, mais nous ne pouvons pas nous contenter car le coffre a besoin la règle pour ne pas apparaître devant une porte Ajoutons-le rapidement. Passons à notre générateur de labyrinthes. Allons à l'endroit où nous faisons apparaître le reste, où nous définissons les coordonnées du coffre Et nous avons cette règle adjacente à la porte. Carte. Nous obtenons les coordonnées. J'ai essayé cela à de nombreuses reprises , mais cela a échoué et il maintenu, peut-être parce que nous avons cette règle, et cette règle est correcte. Nous l'avons vérifié avec les lumières. J'ai peut-être essayé cela plusieurs fois et je n'ai pu le placer nulle part. C'était peut-être ça. Alors rejouons. Maintenant, parfois, la boule se ferme, où se trouve un coffre. Ce n'est pas devant une porte, c'était peut-être juste un. Super. Nous allons nous arrêter ici pour celui-ci. Je vais te chanter dans le prochain. Au revoir. 77. Mécanique du plafond pour montrer et masquer: Bonjour et bienvenue sur Design Workshop, et sur le véritable Engine Five, Procedural Dungeon et création de RPG d'action Auparavant, nous avions commencé par notre mécanicien de plafonds cachés. Nous avons créé la fonction ym dans notre générateur de labyrinthe, qui stocke notre pièce actuelle, et elle vérifie si coordonnées de nos joueurs actuels se trouvent dans la pièce dans laquelle nous essayons d'entrer Si ce n'est pas le cas, nous cachons le plafond. Ensuite, pour masquer le plafond, nous avons créé une interface de plan que nous avons utilisée dans nos décorations BP Une minute Ce n'est pas ça. Ça y est, mais pour l'instant, cela rend notre plafond invisible. Oh, animons ça. Créons une animation pour masquer le plafond, et la même animation que nous allons utiliser pour qu'il apparaisse. Tout d'abord, créons une variable afin de connaître l' état du plafond. Nous allons appeler ce repaire. Sur Hight say, nous allons lui dire que c'est vrai. Non Nous n'en avons plus besoin. Nous avons besoin de la référence du plafond, mais plus tard, après avoir défini la valeur masquée, nous ajouterons une chronologie. Et nous allons entrer dans la chronologie et créer une trajectoire de flux à partir de 01, avec un temps zéro, zéro ou zéro et un temps 0,3 ou un. Nous allons utiliser la dernière image clé. Il ne court que jusqu'ici, et nous allons choisir notre plafond et mettre le vent en place Nous allons le connecter pour le mettre à jour. Ce que nous allons faire, ce sont des vecteurs d'alerte. Nous allons connecter notre Alpha, notre camion de transport par camion, et nous allons passer au 111-001 Bien sûr, en fin de compte, nous avons besoin que le set soit masqué. Nous allons aller à un jeu où nous allons obtenir les élus, où sont les sélectionnés ? Pour notre indice, nous allons utiliser la direction. Si c'est à l'avenir, nous voulons qu'il soit masqué, quand il va être à l'envers, nous voulons qu'il ne soit pas masqué Et comme nous savons que cela va créer un problème de collision, nous allons atteindre notre plafond et sélectionner « Aucune collision ». C'est déjà fait. Mais si ce n'est pas le cas, parce que j'ai eu un accident. Je ne sais pas si nous l'avons déjà fait auparavant. Ce que nous devons faire, c'est éviter de générer des événements de chevauchement et de voir la collision retomber sur notre plafond. Si nous allons jouer maintenant, nous pourrons voir cette animation. Y. Maintenant, ça ne revient pas en arrière. Mais nous allons corriger les échanges. Il y a eu un décalage par image. Donc, vous pouvez maintenant voir le mouvement sans collision, et en fait, nous l'avons animé pour qu'il ne soit pas là La collision n'aurait pas vraiment d'importance pour le moment. Nous pouvons réellement marcher correctement maintenant dans les pièces situées à l'intérieur des chambres. Continuons donc à créer nos fonctions de masquage de plafond. Laissez-moi vérifier une seconde. Pourquoi y avait-il un tel cadrage ? Hé, je pense juste à mon ordinateur. J'ai quelques problèmes là-bas. J'entends le sommet. Oh, oui. Non C'était juste un problème parce que j'ai ouvert le projet après avoir été écrasée C'est vrai. Allons réparer nos plafonds, en gros. Commençons en face cette fois. Passons à notre interface de plan. Ajoutons la fonction. Non Fonction : plafond, plafond. Caractère D. Nous avons dit que c'est mal nommé que c'est le thème de cette fois. Nous allons appeler, c'est notre message. Nous allons définir le masqué sur faux, et nous allons inverser depuis la fin. Il suffit de faire l'inverse, pas par le bout, car si nous sortons au moment où nous entrons, nous ne voulons pas que cela commence par le bout, nous voulons que cela fasse marche arrière où que ce soit. va de même pour le jeu, et c'est pourquoi nous ne l'avons pas connecté au jeu dès le départ. Maintenant, quand est-ce que cela se produit ? Eh bien, nous avons la fin des événements qui se chevauchent. Rendons-les plus compacts. Mais nos événements se chevauchent. Nous allons devoir nous demander si ce qui finit par se chevaucher, c'est notre personnage Nous connaissons la procédure, nous copions et collons ces branches. Encore une fois, les lier aurait été une meilleure option. La façon dont nous procéderions est de créer un tableau. Nous allons récupérer nos boîtes, et nous allons trouver un chevauchement dans une boucle for qui contient toutes les cases et créer un événement personnalisé qui fait ces choses. Continuons. Nous allons le connecter ici. Et nous allons le connecter ici. Ensuite, nous devrons accéder à notre générateur de labyrinthe. Créez une nouvelle fonction. Appelons cela une idée. Non Roh Step Nous n'aurons pas besoin d'entrée car nous avons stocké la variable de la pièce actuelle, et après tout cela, je vais obtenir la référence du générateur ici, je vais copier-coller la référence ici et la pièce définie quand tout cela sera vrai. Passons maintenant au set de salle d'exposition. Trouvons notre ensemble hydrom fonctionnel. Nous allons le copier tel quel sans l'ensemble de l'entier, le coller ici. Ou notre appareil s'est déconnecté, nous avons besoin de nos barres actuelles. Au lieu de les cacher, nous devons les montrer. I. Alors, compilons et sauvegardons. Passons à notre jeu, et vérifions s'il fonctionne. Je me suis cachée, et elle est apparue. Mais il est apparu instantanément. Et maintenant ça ne marchait même plus. J'entre et je pars. Je suis entré, que s'est-il passé ? Nous devons l'embêter. Je suis entré, peut-être que j'en ai trop saisi puis je suis parti. Non ? Quoi qu'il en soit, cela semble fonctionner. Que s'est-il réellement passé là-bas ? Suis-je toujours impliqué dans la collision ? Oui, je suis probablement restée dans la collision sans m'en rendre compte. Passons donc à six l'animation. Allons dans nos cachettes et voyons ce qui se passe. Une chambre très bientôt. Désolée, non. Ou je vais ici. Mettons un point de rupture. Ils vont comme ça, comme ça. Est-ce que c'est un truc, c'est bizarre. Oh. Oh, pourquoi cela arrive-t-il ? Cela se produit parce que je règle la visibilité à la fin. Il joue donc l'animation, mais il montre le plafond à la fin. Donc, en gros, nous allons procéder tel quel. Ça ne fait pas de cerceaux Commentaire. Nous allons laisser cela tel quel et aller ici, simplement le connecter ici et le rendre faux Nous pouvons maintenant voir le plafond avant l'animation. Cacher, cacher, Y, et nous en avons fini avec notre plafond. Oh, c'est tout pour celui-ci. Je te verrai le prochain. Au revoir 78. Plan de visuels pour ascenseur: Bonjour et bienvenue sur Game Design Workshop Real Engine, cinq appels procéduraux de création de Pz dans un donjon Auparavant, nous avions terminé avec nos fonctions d'affichage et de masquage du plafond. Nous avons animé nos plafonds, avec notre chronologie. Nous avons utilisé l'échelle mondiale définie pour créer cette animation, puis nous avons créé l'événement d'interface show C Blueprint Et nous avons défini l'identifiant et le point de chute. Nous avons réglé le plafond de couverture sur Falls, afin de pouvoir voir l'animation, puisque nous nous cachons sur moi. À la fin de l'attaque, comme à la fin de l'événement ding. Ensuite, nous avons connecté les événements de notre côté à des événements qui se chevauchent. Nous avons vérifié si les extrémités de notre joueur se chevauchaient, et nous avons créé le plafond de truie donc le plafond de la pièce dans notre générateur de labyrinthe, exactement le même code que celui du plafond en peau Mais cette fois, nous montrons le plafond. La seule différence est que nous utilisons les coordonnées actuelles de la pièce, alors que dans le plafond masqué, nous envoyons en fait un ping à ces coordonnées. Maintenant, continuons à créer notre puits infini, pas vraiment infini comme nous en avons parlé au début. Mais les possibilités sont infinies. Et créons un labyrinthe. Terminons notre ascenseur. Ouvrez de nombreux onglets. Je vais juste commencer à les fermer toutes. Plus vous ouvrez d'onglets, votre FPS diminue à nouveau si votre ordinateur n'est pas aussi puissant Je vais ouvrir l'ascenseur. Je vais aller voir les plans, je vais aller voir les accessoires, et je vais choisir notre ascenseur Je vais l'apporter ici. De plus, nous allons avoir besoin d'un nouveau plan directeur. Appelons cela le mécanisme d'ascenseur BP. C'est bon. Maintenant, ce mécanisme d'ascenseur devrait en fait avoir notre roue à goupille ici. Je vais le copier, et je vais l'apporter ici. Maintenant, nous devons modifier l'échelle à. Je vais le déverrouiller , et je vais définir 0,4 ici et ici 0,3, et dans z 0,4. C'est donc un peu plus petit, et c'est un petit peu. Maintenant, nous allons faire preuve d'un peu de créativité et ajouter deux autres maillages statiques, en fait trois Pour les deux premiers, nous allons passer à nos mailles, et il y a un appareil de torture en X. Le voici, et nous allons le régler sur celui-ci et sur un autre. Donc, en gros, nous allons l'avoir ici et ici, celui-ci doit être alterné. Ou de près. Le mouvement des chaînes, c'est tout ce qui semble fonctionner. Oui, c'est bon. Ensuite, je vais utiliser ce bordel que nous avons vide pour acheter une boîte. Je vais l'apporter ici. Pour le rendre un peu plus fin. Comme ça, pour l'amener ici. Et en fait, je vais le rendre polaire. Mettons-en un de l' autre côté, également métrique. J'aime bien cette roue ici. Ne le rendons pas symétrique. J'aime bien voir ça. Si vous le souhaitez, vous pouvez le rendre symétrique. Je pense que, d'après le point de vue ci-dessus, nous considérerons que c'est une bonne chose. Peut-être que nous pouvons l'agrandir un peu. Cet axe. Et celui-ci. C'est bon. C'est bon. Si vous le souhaitez, vous pouvez jouer davantage avec cela et le rendre plus visible. Ce que nous allons faire, c'est un composant rotatif , un mouvement rotatif. Et nous allons même tracer un graphique, l'apporter ici, et nous allons obtenir notre roue, qui est, je crois, le maillage de la plante. Si vous le souhaitez, vous pouvez le faire, et nous allons ajouter ce composant à notre roue. Allons à notre port d'observation. Passons à notre système rotatif. Si nous jouons à Simulate, nous pouvons le voir tout faire pivoter. Laissez-moi le mettre dans le script de construction. Oh, je n'ai rien changé. Oh, regardez, vous pouvez découper cette pièce de simulation. Continuons à partir d'ici. Revenons maintenant à notre ascenseur, et transformons ce maillage statique en notre plate-forme d'ascenseur. Nous avons une méthamphétamine pour ça. Eat Elevator Cube, nous y sommes. C'est ça. Ajoutons maintenant un enfant acteur, qui sera un mécanisme d'ascenseur. Maintenant, sélectionnons un site pour le placer. Pour sélectionner ce site, apportez-le. J'habite ici. Oui, je pense que c'est bon. Et maintenant, nous avons besoin de quelques autres choses. Nous allons avoir besoin de certaines choses pour bloquer notre joueur. Bien entendu, nous serons également des joueurs locaux pour ne pas pouvoir bouger. Mais pourquoi ne pas l' autoriser à déménager ? C'est à nous de décider si nous voulons l'activer ou non et avoir des murs qui empêchent le joueur de bouger. Je vais donc ajouter d' autres mesures statiques. Tous ces stylos. Premièrement, et nous aurons besoin de cet avion élévateur ou du treillis statique. Nous allons le faire alterner et le ramener ici. Il faudrait peut-être qu'il soit un peu plus grand. Je pense que c'est bon, copions-le et collons ceci ici, collons-le à nouveau et faisons-le pivoter, amenons-le ici, nous allons le récupérer et le coller, mettre ici. Nous avons un mur de tous côtés. Parce que ce que nous allons faire, c'est que lorsque le joueur entrera dans l'ascenseur, nous allons le soulever. Maintenant, lorsque nous atteindrons l'étage suivant, nous aurons besoin d' un autre maillage statique. I. ne sera pas un avion, ce sera l'ascenseur cube 031 avant d'utiliser le 026 Ce serait donc notre plate-forme d'extension, car nous aurons un espace pour marcher entre l' ascenseur et notre tuile. Nous allons donc étendre une plate-forme comme celle-ci fonction du côté disponible dans notre labyrinthe, qui serait le bloc zéro, et nous allons étendre cette plate-forme vers ce côté Laissez-moi réinitialiser sa position. Et la prochaine chose dont nous aurons besoin, c'est d'un appareil photo. Et nous allons placer cette caméra. me reste deux E. Nous allons placer cette caméra au-dessus de l'ascenseur. Mettons-le également un peu sur le côté ou sur le côté. De ce côté, et peut-être un peu plus bas. C'est très bien. Ainsi, lorsque nous montons, nous pouvons voir et nous allons le traverser, sorte que nous ne pouvons plus voir le labyrinthe Nous ne pouvons pas voir à gauche et à droite. On ne voit que l'ascenseur. Ici, nous l'inclinons également un peu. Nous verrons quand nous réaliserons l'animation, nous verrons à quoi elle ressemble. Maintenant, la prochaine chose dont nous aurons besoin , c'est d' ajouter une collision, une collision de boîtes, mais nous savons quand le joueur est arrivé au centre. Et nous allons en fait le laisser tel quel parce que nous voulons être sûrs que le joueur est entré. Nous ne voulons pas que vous le déclenchiez lorsque le joueur est là, nous voulons que vous le déclenchiez lorsque le joueur est au centre. Peut-être que nous le réduirons encore un peu. Peut-être que nous le déplaçons vers le bouton avec le mécanisme, un peu ici. Oui, ça a l'air bien. Oh, encore une chose que nous devrions faire est de créer les composants nécessaires que nous voulons pour le corps. Faisons venir ce corps parce qu' il va s'élever. Mais nous ne voulons pas que la collision se produise, par exemple, avec le corps. Nous ne voulons pas que cela se répercute sur le corps. Mais puisque nous allons le devenir cela n'a pas vraiment d' importance, pour être honnête, car nous allons utiliser la localisation de l'acteur. Mais tu sais quoi ? Faisons-le à la dure. Utilisons le corps, pas l'emplacement de l'acteur, car nous allons montrer les deux manières. Si nous utilisons l'emplacement de l'acteur, nous devons détacher cet acteur enfant. Ce rôle est donc sur le terrain, puis nous pourrions déplacer l'acteur vers le haut. Mais détachons-le juste pour montrer comment nous le détachons. Ensuite, déplaçons le corps vers le haut. Mais si nous voulons déplacer le corps vers le haut, nous devons être les parents des choses que nous voulons déplacer avec le corps. Ce seraient donc les clôtures. Ce ne serait pas la boîte. Nous ne voulons pas la boîte. Ce serait la caméra. La caméra que nous voulions emporter avec nous. Ce serait l'avion d'ascenseur, et aussi la clôture pour. Oui. faudrait donc confier ces choses à l'étage de l'ascenseur Je pense que nous devons le réduire un peu. Oui. Cela se chevauchait en quelque sorte Oh. Voici la configuration de notre ascenseur, et je pense que c'est un bon point de rupture, et nous allons continuer dans le prochain pour alimenter le code. Au revoir. À bientôt. 79. Mécanique de labyrinthe de Spawn Next: Bonjour et bienvenue sur Gain Design Workshop, un véritable Engine Five, véritable Engine Five, création de RPG d'action et de donjon procédural Auparavant, nous avions créé les visuels de notre ascenseur. Nous avons également créé le mécanisme d' ascenseur BP, un visuel qui fera tourner cette roue et la détachera de l'ascenseur. Maintenant, nous avons simplement mis à jour le maillage statique, qui est responsable du mouvement de rotation de la roue, et nous avons créé notre structure avec notre corps et ses composants car nous allons réellement déplacer notre corps. Commençons maintenant par ce qui se passe lorsque nous entrons en collision avec le e. Avec le cube de collision Non Un composant commence à se chevaucher, posons-nous la première question. Est-ce un joueur ? Oh, il a une branche et a installé une branche. Si c'est le cas, nous devons vérifier si notre joueur possède la clé. Nous allons passer au mode jeu. Nous allons passer en mode de jeu de haut en bas à GM. Nous allons le convertir en plâtre pur. Et nous allons faire l'inventaire. Dans notre inventaire, nous allons trouver I six, qui est le nom brut de notre table de données ou de notre clé. Maintenant, nous allons utiliser une branche, et nous allons la connecter à, l' a-t-elle trouvée ou non ? Oh, nous allons le connecter à true parce que c'est un joueur, et nous ne l'avons pas trouvé, alors c'est assez simple. Nous émettons un son, et c'est tout. Le son que nous allons émettre est lié à l'ascenseur. l'ascenseur. L'ascenseur échoue Q parce que nous voulons des files d'attente Oui, c'est ça. Si c'est vrai, nous n'allons le faire qu'une seule fois. Parce que quoi qu' il arrive par la suite, nous ne voulons pas que cela se reproduise. Cela arrive. Il ne devrait y avoir aucune chance que cela se reproduise. Oh, la première chose que nous ferions serait de désactiver le mouvement du joueur. Mais comme nous n'avons pas encore créé ces éléments, nous les ajouterons plus tard. La prochaine chose que nous devrions faire est de trouver notre enfant acteur, c' est-à-dire notre mécanisme d' ascenseur et d'enfant-acteur, et nous allons passer de l'acteur à l'acteur. Nous allons garder le monde. Mais l'échelle de localisation et la rotation restent les mêmes. La prochaine chose que nous allons faire est réduire le mécanisme Nous allons le convertir en une pure poussière. À partir de là, nous voulons la composante du mouvement rotatif, et nous allons passer à ce taux de rotation. Deux -60. Cela commence à faire tourner la roue, et je vais régler l'axe Y de M 62. Nous allons réellement tester cela. Trouvons notre ascenseur. Cela signifie compiler Ouvrons le menu principal et réduisons un peu la taille de nos MS . Menu principal Nous y voilà. Et nous allons passer aux vignettes et fixons-le à dix. Disons dix pour le moment. Je vais compiler. Appuyons sur Play. Une très petite carte. J'ai créé une pièce. Intéressant Encore une fois, vous pouvez voir qu'il n'a pas trouvé d'endroit valide pour le placer, alors il a choisi de se trouver à côté d'une porte. Notre personnage est vraiment très petit. Quoi qu'il en soit Alors, on y va pour tout. Cela ne devrait pas changer depuis le début. Passons donc au mécanisme d' ascenseur et réglons le taux de rotation à zéro. Compilons et sauvegardons. Jouons à nouveau. Il a joué le santo. Ou c'est parce que nous n' avons pas l'article ou le bon. Mais il ne tourne pas maintenant. C'est bon à savoir. Trichons un peu et ajoutons cet article à notre inventaire Passons à notre dossier, passons à nos plans Passons à notre mode de jeu. Sélectionnons notre variable d'inventaire, et ajoutons I six avec une quantité d' un. Notre sauvegarde de compilation Je pense que nous vivons la quantité jusqu'à zéro lorsqu'il n'y en a pas. Assurons-nous de passer aux articles, articles dt, au montant clé. Nous en avons un sur tout. C'est une bonne chose que j'en ai ajouté un ici. Compilons et jouons, et maintenant nous avons la clé Cela nécessite certainement une alerte de caméra différente. Je suis ici. C'est ici. Et il a commencé à faire tourner la roue. C'est une bonne chose. Supprimons maintenant cette clé de notre inventaire. Retournons dans son ascenseur. Nous allons obtenir notre référence d'inventaire à partir d'ici, je vais le rediriger en fonction de celle-ci Ensuite, je vais aussi changer d'itinéraire ici. Je vais retirer les six. Maintenant, il est retiré, mais si notre inventaire est ouvert, ce bois est mis à jour. Nous devons mettre à jour nos visuels dans l'inventaire. À partir de notre mode de jeu, nous allons passer à autre chose, et nous allons obtenir le gameplay, la référence de notre widget, le gameplay du widget, et nous allons faire l'inventaire. Et voici l'inventaire à partir d'ici. Parce que même si nous ne faisons que la supprimer ici, cette variable a été mise à jour. Maintenant, jouons également un son. Copions ceci. Faisons en sorte que Let Unlock. Je pense que c'est ce à quoi nous jouons ici. Oui, déverrouillage de l'ascenseur. Et maintenant, il est temps de proposer le prochain labyrinthe. Quel serait donc l' emplacement de notre prochain ? Eh bien, cela dépend vraiment de ce que nous voulons. Pour l'instant, je me contente de définir le lieu, d'obtenir l'emplacement de l'acteur. Et à partir de là, j'ai ajouté les 2 500 unités irréelles Z. Oh. Nous allons promouvoir cette variable. Appelons ce nouveau centre. Et pourquoi un nouveau centre ? Parce que nos labyrinthes commencent à être construits, les donjons commencent à être construits du centre vers n'importe quelle direction Non, nous allons organiser un cours de flic, et nous allons choisir notre générateur. Maze Gen. Et nous allons diviser l' emplacement et le connecter. Maintenant, nous avons ici un tas d'options que nous devons compléter. Pour les compléter, nous devons savoir à quel niveau se trouvait le générateur précédent et certaines informations qu'il contient. Ce que nous allons faire, c'est à nouveau créer un g de référence. Nous allons le faire taper Me gen. M. Encore une fois, une référence à un objet , bien sûr, et nous allons l' apporter ici. La première chose dont nous avons besoin, ce sont nos styles Mac. Parce que sur cette base, nous allons simplement ajouter une plage d'entiers aléatoires. Cela reviendrait à un, deux, pour obtenir le niveau de notre générateur. Un, deux niveaux de générateur plus un. Dans ce cas, un, 22, alors ce serait un, deux, trois, un, 24, un, cinq, et ainsi de suite. Nous allons donc le connecter ici, et la taille du style doit être 600, cela signifie que la taille par défaut doit être 600. Je suis perplexe. Nous avons la bonne valeur dans le menu principal. Il est 800. Pourquoi je suis coincé avec 600 ? Je ne sais pas Taille M : taille F, taille maximale, nous obtenons une taille maximale. Et comme nous ajoutons un montant accru, augmentons-le toujours d'un. Mais faisons-le uniquement lorsque les styles de notre Mac ne correspondent pas à notre Mac. Donc, comme si nous avions atteint le maximum. Nous allons en faire un peu moins et nous allons le multiplier à partir de t. Donc, il s'agit essentiellement du nombre de tuiles que nous pouvons ajouter à notre labyrinthe Et si c'est inférieur à ce que nous pouvons placer, alors tout va bien. Nous allons donc sélectionner la taille du labyrinthe, je vais l'utiliser pour une condition, et si c'est vrai, si c' est inférieur à ce que nous pouvons adapter, alors nous choisirons la taille de mai. Nous restons les mêmes. Lorsque nous ne pouvons pas, nous en ajoutons simplement un. Mettons-le ici, pour que ce soit plus clair. Nous en ajoutons un à l' ensemble du périmètre. C'est peut-être bien. Maintenant, bien sûr, nous avons besoin d'un niveau de générateur, donc nous allons obtenir niveau de générateur et en ajouter un à huit. Et connecte-le ici. Notre générateur est maintenant amélioré. Regardons-le en action. Avons-nous un merveilleux crash ou est-ce que tout fonctionne parfaitement ? Allons donc à l'ascenseur. Un personnage si petit. Et nous affichons le chargement et l'écran. Ce n'est pas une bonne chose. Et nous avons un gel. Je vais contrôler la suppression. C'est probablement un peu fou pour Loop. C'est une boucle sans fin. Je vais utiliser le gestionnaire de tâches pour rouvrir le projet Cela se produit souvent avec des boucles. Ils peuvent complètement détruire ce que vous fabriquez. Mais il est possible que ce ne soit pas le cas, car nous avons notre chargement, et sans le chargement, certaines choses pourraient ne pas fonctionner. Retournons en arrière. Je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons régler ce problème lors de la prochaine. Le faites-vous alors ? 80. Génération de labyrinthe à partir de la première tuile: Et bienvenue dans l'atelier de conception de jeux organisé dans le cadre action procédurale du donjon Engine Five ou à la création de Pz Auparavant, nous avions commencé par notre événement de chevauchement des ascenseurs, cours duquel, lorsque nous montons dans notre ascenseur, nous vérifiions si c'est bien le joueur. Ensuite, on vérifie si le joueur a la clé qu'il est censé avoir. S'il ne l'a pas, nous émettons un son d'échec. Vous ne pouvez pas continuer. S'il a la clé, nous voulons connaître les événements qui vont suivre. Nous n'en sommes donc pas sûrs , donc nous sommes sûrs qu' ils ne se représenteront pas. Pour commencer, nous avons commencé par détacher notre enfant acteur, qui est ce mécanisme ici, et nous avons réglé son composant de mouvement rotatif que nous avons ajouté au mécanisme d'ascenseur, pour qu'il tourne sur -16 sur l'axe y. Ensuite, nous continuons en retirant la clé de l'inventaire, et nous avons mis à jour notre inventaire. Nous avons émis un son qui a débloqué l'ascenseur, et nous avons créé notre nouveau labyrinthe, qui a Et pour être honnête, bien sûr, cela a posé quelques problèmes. Tout d'abord, nous n'avons pas cliqué sur Continuer. Je n'ai pas cliqué sur Continuer car je suis en train de suivre le cours. C'est donc sur ce bouton Continuer le boss ici que nous devons cliquer pour indiquer à ce générateur que nous allons continuer. Si ce n'est pas la première pièce, continuez à construire. Nous aurions également pu vérifier si le niveau du générateur était le numéro un. Oh, nous avons également stocké Ensuite, je passe au niveau du donjon, au mode jeu. Nous aurions pu le prendre depuis le mode jeu au lieu de créer une référence juste pour cela, mais quoi qu'il en soit, nous devons relier le continuum au style initial. Parce que nous ne voulons pas afficher d'écran d'inventaire. J'ai été retiré de la liste des parents. Donc, chaque fois que cela sera appelé, cela produira probablement une erreur, mais nous nous en fichons car nous savons pourquoi il est là. Si nous ne voulions pas voir l'erreur, nous pourrions mettre un nœud valide. Comme ceci avant le pourcentage défini, et nous le connecterons ici, s'il est valide, nous définissons le pourcentage, s' il n'est pas valide, nous passons au nœud suivant. Mais nous n'allons pas le faire. Nous allons laisser une erreur, une erreur contrôlée. Appelons-le. Quand on l'appelle, cela prend environ 5 heures. C'est bon Maintenant, lors de notre premier style sur le spawn first, nous devons ajouter le code de création du premier Et pourquoi est-ce différent ? Allons peindre. Oh. Lorsque nous apparaissons, disons que c'est pour zoomer. C'est sorti. C'est tout simplement parfait. Ici. Disons que c'est notre tuile qui commence. C'est notre tuile qui possède l'ascenseur, donc c'est notre plate-forme d'ascenseur. Quand on monte. Lorsque nous créons le labyrinthe suivant et que nous montons, il apparaît directement au-dessus de nous Donc, s'il s'agit de la première tuile, et que nous devons la décaler dans une direction. Et dites à ce style que la direction dans laquelle nous l'avons décalé est ce que nous appelons l'intro, où nous avons en fait notre boîte dans laquelle le ballon sera livré En compensant cela, nous allons désormais placer le centre de notre donjon, le bloc d'introduction. Alors allons-y et faisons-le très vite. Ce que nous allons faire, c'est créer une nouvelle variable locale. Mais nous allons appeler direction décalée. Ce sera du type « direction ». Ensuite, nous allons définir un élément aléatoire à partir d'un tableau. Et nous allons créer tableau pour choisir une direction, c'est-à-dire à quatre, ce sera le nord-est, le sud-ouest, le nord-ouest, et ce sera notre décalage. La prochaine chose dont nous avons besoin, c'est d'une nouvelle sortie. Nous allons donc refaire une boucle endiablée, en nous déchaînant. Pour la condition, nous allons utiliser notre dernière sortie si elle n'est pas égale à deux dans la direction définie. Ainsi, l'égal n'est pas l'opérateur. Bien que cela soit vrai, nous ne voulons pas continuer. Nous devons trouver une nouvelle sortie aléatoire. Donc, ce que nous allons faire, c'est cette dernière sortie vers n'importe quelle valeur aléatoire qu'il peut attribuer. Cela n'a pas besoin de Let's this. Quoi qu'il en soit, continuons. Donc, pour être honnête, le véritable labyrinthe changera pas le centre Nous l'avons juste compensé. Cela ne veut pas dire que ce que nous allons compenser maintenant, c'est l'acteur réel. Ce que nous devons faire, c'est localiser l'acteur. Nous n'allons pas compenser le prix. Nous allons régler le générateur. Ainsi, lorsqu'elle fait apparaître la tuile, elle sera décalée C'est logique. Et nous allons sélectionner Je vais ajouter deux autres épingles, et l'indice sera notre direction de décalage. Apportons-le. Et maintenant, nous devons compenser notre position. Ce serait obtenir une citation. Cela sera également nécessaire pour le créer ou le ranger à partir d'ici. Divisons ça. North ajouterait simplement la taille des carreaux à x et le reste resterait le même. Ce serait au nord-est que l'on ajouterait la tuile au y et le reste resterait le même, x et ad. Tu annulerais ce chiffre moins la taille xy, et le reste le s. C'est un super spaghetti, c'est le niveau Albonaa U et l'inverse pour l'ouest, taille des carreaux ici ou y et x et réglage identique, et ce sera l'ouest. Maintenant, nous avons compensé cela par notre acteur. Maintenant, copions une partie du code que nous avons ci-dessous car nous en avons besoin. Nous avons besoin du carreau BP Spoon. Cordes de carrelage, divisons ça pour obtenir 00. Nous devons l'ajouter pour le détruire. Nous devons l'ajouter à la carte du donjon, les cordes actuelles. Nous avons besoin du spécial pour l' ajouter à des carreaux spéciaux, et nous n'avons pas besoin du reste. Nous l'apportons ici. Nos cordons actuels par défaut sont 00, donc c'est bon. Passons rapidement en revue les cordons actuels. C'est très bien Très bien, à côté, nord-est ouest, passons à chacune d'elles, pour trouver les voisins. Supposons que l' indice soit égal à. Ce que je veux faire, c'est simplement ajouter la direction du décalage au vide forcé. Je vais ouvrir une succursale ici. Si c'est égal à zéro, deux, dou est un, ouest est trois, A, et nous allons ajouter deux R et le réseau sera le tuyau I. Maintenant, nous avons besoin d'une référence à l'ascenseur de notre propriétaire, l'ascenseur qui a donné naissance à ce labyrinthe Nous avons une référence de l'ascenseur quelque part, nous avons la référence de l'ascenseur d'apparition Dupliquez ceci. Appelons-le ascenseur du propriétaire. Très mauvais nom ici. Donc, ce que nous allons faire, aller dans notre ascenseur et créer un vari, appelons-le action Je vais participer à l'action. Parce que nous en aurons besoin plus tard. Faisons en sorte que l'instance de spa elevator soit modifiable et exposons-la lors de son apparition Encore une fois, l'ascenseur Bactor, je vais le rafraîchir. Nous avons l'ascenseur le plus rapide, qui va mettre un tel L'ascenseur à spon, celui qui nous a engendrés et qui nous a engendrés, celui qui défie le téléphone Retournons en arrière. Un générateur. Un petit premier style. En fin de compte, prenons notre élévateur générateur et définissons Connectez-le pour terminer et connectons la direction du décalage. Nous avons maintenant notre première cuillère à modeler. Maintenant, si je vais jouer, commence à zéro. Je fais plein de pièges. Je vais éjecter du houblon. Je vous en prie. Hein ? C'était prévu. Nous allons contrôler Al delete et fermer ce programme. Et la troisième fois, c'est le charme. Nous verrons dans la prochaine leçon pourquoi cela n'a pas continué. Au revoir pour le moment. 81. Animation par ascenseur et effets sonores: Bonjour Et bienvenue au Game Design Workshop et procédurale Real Engine Five création de LPG d'action procédurale Real Engine Five dans les donjons Précédemment, nous avions terminé notre événement avec la première tuile d'apparition Nous avons ajouté le décalage sur la base d'une sélection aléatoire de l'emplacement de notre labyrinthe Ensuite, nous avons commencé à faire apparaître la première tuile. Nous l'avons ajouté à nos listes, et nous aussi à cause du crash du PC. OK. Permettez-moi donc de l'ajouter à nouveau très rapidement. Nous allons prendre l'ascenseur. J'ai gardé les indications ici. Oh, récupérez notre produit par ascenseur, pas celui qui a été engendré. Nous l'avons également conservé. Nous allons donc obtenir la cette direction et définir la direction définie sur notre direction de décalage. Ensuite, nous avons essayé de jouer et il y a eu un bug. Tout d'abord, voyons où nous créons l'ascenseur, quel promoteur. La première chose que nous faisons, c'est que nous n'avons pas la référence du générateur Nous allons cliquer sur notre variable de générateur, rendre modifiable en instance et l' exposer lors de son apparition dans notre ascenseur Nous allons compiler et enregistrer, et je vais actualiser cela. Pour Tor, et pour le générateur, nous allons utiliser Self. Cela couvre jusqu'à un certain point. Passons à notre graphique des événements. Allons à notre événement Built, je crois. Ou pas le construit. J'ai revu le premier carreau parce qu'il y a une erreur ici. Nous voulons le contraire. Nous avons ajouté la direction du décalage et j'ai utilisé le 02 en fonction de notre croix fine adjacente. Nous avons besoin de l'inverse. Ce serait donc un. Le sud serait donc nul. Ce serait trois, et ce serait deux. Maintenant, cela devrait poser problème aux porcs. Je ne sais pas s'il vaut mieux y aller et jouer avec le coffre, le vin. Qu'est-ce que l'ascenseur ? Loin. Nous avons quelque chose. Ils sont apparus au-dessus, mais nous ne bougeons pas Maintenant, comme vous pouvez le constater, tout jette une ombre pour résoudre ce problème. Nous allons tricher un peu ouvrir notre vignette, sélectionner nos murs principaux et les configurer pour qu'ils ne projettent pas d'ombres Et nous allons le faire également pour le sol. Et les vignes. Je vais compiler et enregistrer le jeu. un peu de cadre là-dedans. Passons à autre chose. Peut-être devrions-nous réduire un peu ces boîtes et agrandir un peu l'agriculture. Où est l' ascenseur là-bas ? Oh, au fait, j'ai de nouveau changé la taille de ma maman à 20 au lieu de dix. Je suis une sorte de caméra. Nous n'avons donc pas ces immenses ombres que nous avions, mais nous avons une lueur. Je suppose que la lueur vient de cette lave en dessous. Nous allons donc encore tricher un peu. Nous allons retourner à Where Tile. Nous allons dupliquer le sol. La base est d'un étage, un peu plus bas, pour cacher la lave. B encore une fois. C'était une belle lueur d'allumer I was the monkey. Une lueur démoniaque. Comme le sol est en lave, il faut donc cacher la lave. Et oui, je vais dans la bonne direction. Et maintenant, nous n' avons plus cette lueur. Nous ne verrouillons pas le joueur. Parce que c'est vraiment la souris qui frappe ici. Je ne peux pas bouger Oh, il est temps de faire monter l'ascenseur. Je vérifie juste qu'il se trouve au bon endroit. Oui, nous en avons ici, donc je suppose que le S&P est une bonne première pièce, deux options pour la gauche ou L'ascenseur et le box sont tous les deux corrects. J'y passe un peu de temps. Maintenant, retournons à notre ascenseur. Et tu as cette référence. Et maintenant, deux choses doivent se produire. Oh, nous allons mettre une séquence et créer un événement. Appelons cette station événementielle, et appelons-la la bonne. Et nous allons terminer cela par la suite. Maintenant, la deuxième chose qui doit se passer, la première, c' est d'obtenir notre manette de joueur. Nous pouvons donc obtenir la note que nous voulons, espace cible avec vue sur le sol, quelque chose comme ça. Afficher la cible avec une plante. Oh, le temps prévu serait de 3 secondes, et pour le reste, nous allons juste nous en donner une idée. Une fois que nous aurons commencé à jouer les animations, nous allons attendre 2 secondes. Ensuite, nous allons créer un lingot dans les variables. Appelons cette condition, et nous allons la définir comme vraie. Maintenant, à quoi servira cette condition ? Nous allons utiliser l' événement tick pour piloter notre animation. Nous allons avoir cette maladie ici. C'est un état de qualité. C'est un nom un peu meilleur. Sur la base de cette condition, nous allons calculer le montant réel de notre ascenseur. Et bien sûr, je plaisantais quand j'ai dit que nous allions le faire de la manière la plus difficile, en déplaçant le corps et non l'acteur Nous allons déplacer l'acteur. C'est beaucoup mieux puisque nous avons également déconnecté, détaché l'enfant acteur. Mais nous expliquerons comment cela se passerait si nous ne faisions pas partie de l'acteur et si nous devions déplacer le corps par rapport à l'espace. Oh. Lorsque notre ascenseur est en mouvement, nous voulons émettre un son. Pour le moment, nous voulons simplement émettre du son. Nous allons créer un son car notre ascenseur pourrait le faire pendant une seconde. Nous allons faire bouger l'ascenseur en conséquence, comme le ferait la partie de chargement, il attendrait que le labyrinthe soit terminé pour atteindre sa destination Parce que si nous ne le faisons pas, il est possible que l' ascenseur monte et atteigne la destination sans que le labyrinthe ne soit complètement construit Et c'est quelque chose que nous ne voulons pas. Nous allons donc avoir un lecteur Alpha, comme nous l'avons fait sur les Lerbs, comme nous l'avons fait pour les délais pour contrôler Oh, commençons par le son. Ce que nous devons faire pour que le son puisse le contrôler. Si je fais un son Lay. Je n'ai aucun contrôle sur. Je n'ai aucun contrôle là-dessus. Je ne contrôle que la plage de volume, heure des étoiles, les paramètres de simultanéité, c' est-à-dire que vous pouvez définir des règles comme la taille de la réverbération, où c'est un peu complet Quoi qu'il en soit, je n'ai pas de référence réelle au son, que si j'utilise la fonction create sound, D. Ensuite, j'ai cette valeur de retour, qui est une référence au son que je joue mais que je crée réellement, mais que je ne joue pas encore. Parce que lorsque je crée un son, je dois l'ordonner pour qu'il fasse ce que je veux, il s'agit simplement de créer une variable sonore, un canal audio de base. Je vais donc en faire la promotion. Mettons le son avant tout, élevons quelque chose. Je pense que c'est l' ascenseur. Ouais. C'est le signal de l' ascenseur. Je vais en faire la promotion auprès de Variable. Disons que c'est un ascenseur. Et maintenant, nous allons commencer à y jouer. Je vais appuyer. Jouez. Et je pense juste à ce son. Nous l'avons configuré pour qu'il fonctionne en boucle. C'est donc une infinité. Il doit être arrêté lorsque nous voulons arrêter d'y jouer. Oh, va tout enregistrer. Affaire Justin. Commençons par nos animations. Mais faisons-le dans la prochaine leçon. C'est un bon point d'arrêt pour le moment. Au plaisir de vous voir dans le prochain. Au revoir 82. Cinématique de la caméra pour ascenseur: Bonjour et bienvenue dans l'atelier de conception de Gain, véritable Engine Five, le donjon procédural et création de RPG d'action Auparavant, nous avions créé les dernières parties de notre événement de début de chevauchement dans notre ascenseur. Nous avons planté la cible de vue avec notre cible qui a réellement besoin de soi ici. Il ne se fondrait dans aucune cible s'il n'en avait pas de nouvelle. Nous nous sommes donc adaptés à notre nouvel objectif et nous avons créé l' événement de démarrage des animations que nous allons ressentir dans cette leçon Nous avons utilisé le délai pour configurer les choses, nos animations et tout le reste, puis nous avons défini la condition t sur true. Nous l'avons créé en fonction du son, nous l'avons stocké dans une variable, et nous l'avons configuré pour qu'il soit joué. Et nous avons expliqué quelques points sur le fonctionnement de notre mouvement d'ascenseur. Celui-ci, commençons par créer l'animation. Commençons l'animation. La première chose dont nous aurons besoin, c'est d'un calendrier. Nous allons donc ajouter un élément, saisir et créer une nouvelle trajectoire de flux. Ce sera à nouveau une très petite trajectoire de flux : le temps zéro, la valeur zéro, et 0,3, 0,3, c'est cinq. 0,3. Ce serait l'un d'eux. Cliquons. Utilisez également le dernier image-clé. Retournez ici. Maintenant, nous allons avoir nos fans. Allons-nous le faire ? Je vais le connecter . Je vais le faire. Je vais le connecter pour mettre à jour. Et maintenant nous allons le connecter, pour obtenir c. Je vais le séparer. Je vais passer à l'action. Et je vais les partager. Je vais ajouter x et y. Maintenant, pour notre t, c'est ici que nous allons apprendre. Nous allons laisser flotter et utiliser le nouveau camion. L'endroit où nous voulons les déplacer, c'est de ce qu'ils sont actuellement, à zéro. Pour ce faire, nous allons commencer à jouer. Supprimez cette loi, peu importe, et nous allons obtenir la première clôture, la position relative. Je vais partager ça. Je vais promouvoir le b, rester dans cette région et le relier ici. Maintenant, c'est stocké. Je vais revenir à la chronologie et sélectionner cette option pour Alpha, et B serait zéro pour A, pas Alpha. Alpha est toujours notre nouveau camion, notre camion flow. Alors, voyons voir si cela fonctionne. C play. Objet. Va chercher mon personnage parce que je ne vais pas y aller à pied. Je vais amener le personnage ici. J'en reprends possession. La commande fait beaucoup, mais la clôture se lève, et oui, elle fonctionne. La prochaine étape consiste donc à faire monter l'ascenseur. Et pour cela, nous allons utiliser e. Maintenant, nous avons notre condition. Si la condition est vraie, je dois faire le plein. Alors que, si nous faisions une référence relative ici, nous définirions une position relative, et nous aurions besoin du corps comme référence. Et cela emporterait tout le reste avec nous. Mais utilisons simplement le réglage d'un emplacement. Oh, pour le nouvel emplacement, nous devons passer de l'emplacement actuel à notre emplacement cible. Il va donc falloir y aller pour recommencer à jouer. Je pense que c'est au-dessus de tout, et nous allons le faire. Nous allons faire la promotion de ces deux films originaux. La prochaine chose que nous allons faire est d'ajouter à cela notre taille, fait que nous voulons créer le prochain labyrinthe, qui serait de plus Mais comme nous devons aller un peu plus haut, nous porterions ce chiffre à 2 900 Nous devons descendre, avoir de la place pour descendre en bas. Maintenant, nous allons en faire la promotion. Ce serait notre parent Pat. En fait, ce n'est pas relatif. Désolée. Je deviens patient. Nous avons maintenant ces deux valeurs. Revenons à notre Tiki Bent. Oh, lorsque nous avons une chronologie, nous avons un vecteur et nous allons à notre origine et à notre cible. C'est notre origine et c'est notre objectif. Et l'Alpha est généralement défini par notre camion chronologique. Nous devons maintenant promouvoir cette variable appelée max Alpha. Parce que nous allons le régler à partir de notre générateur de labyrinthe, comme nous l'avons fait pour le chargement Et sur cette base, c'est la hauteur que l' ascenseur essaiera d'atteindre jusqu'à ce que cet Alpha atteigne le numéro un. Il faut donc passer complètement d'un point A à un point B. Pour ce faire. Nous allons utiliser en constante. Qui, comme le dit le conseil, essaie d'atteindre un objectif à un rythme constant. Nous avons donc un courant et une cible. Pour le moment, nous allons prendre des vacances. Et notre cible serait l'erb, le résultat de l'erb Pour notre heure Delta, nous allons maintenant utiliser les secondes Delta, ce qui la rend un peu fiable par image Il existe une formule pour le rendre indépendant de l'image, la fréquence d' images n' affecterait pas le mouvement, mais nous n'allons pas le faire pour le moment Pour C, en vitesse de terp, qui correspond au pas de cette veine b, nous utiliserons 350 Maintenant, la prochaine chose que nous devons faire est de poser une question. nous avons atteint notre objectif, parce que vous l'avez atteint, alors nous devrions arrêter et annuler nos animations, faire tomber les clôtures Non, il existe de nombreuses façons de le faire. En fait, nous pourrions enregistrer notre Alpha égal à un, mais assurons-nous que notre position cible est la même que notre position actuelle. Nous allons faire un égal, désolé, presque égal. Pour ceux qui ne l'ont pas vu, c'était en bas , pas exactement égal, presque égal, et nous allons lui donner 1010 unités réelles , soit dix centimètres Maintenant, nous pouvons également changer notre condition. Cet événement de type stick ne se déroulerait plus. La prochaine chose que nous devons faire est de définir la longueur cible de la pièce ici. Au lieu de vendre pour la nouvelle cible, depuis notre manette de jeu, nous allons prendre le contrôle, et ce serait notre nouvelle cible. Depuis la caméra de l'ascenseur, nous revenons au joueur. Nous allons mettre un 52 dans l'exponentiel de fusion, c' est-à-dire qu'il contrôle la forme de la courbe, comme vous pouvez le lire dans l'infobulle indiquant son déroulement La prochaine chose que nous devons faire est aller dans le générateur de labyrinthe et de créer une nouvelle fonction Appelons ça de cette façon. Et nous allons obliger nos acteurs à détruire. Nous sommes Paul Look. Nous allons vérifier si c'est valide. La raison pour laquelle nous vérifions si c' est valide, c'est parce que nous ajoutons même des articles que nous allons récupérer. Si nous avons récupéré l'article, il n'est plus valide. Nous devrions donc vérifier cela. Ensuite, l'acteur, s'il est valide. Ensuite, nous avons créé l'ascenseur de notre fils, qui est l'ascenseur du niveau précédent. Il y en a ? Ça y est. Cet ascenseur ne doit pas être détruit lorsque nous créons le nouveau labyrinthe, car s'il est détruit lorsque nous créons un nouveau labyrinthe, nous tomberons dans le néant , dans un vide infini Nous devons donc vérifier si cela est également valide. La raison pour laquelle nous devons vérifier, c'est que s'il s'agit du premier labyrinthe, c'est qu' il n'y a pas d'ascenseur Enfin, nous allons simplement nous détruire. R. Compilons. Dave Dave et compilez. Dave, tout en fait. Voyons si cela fonctionne. Pour obtenir un personnage. Je vais déplacer le personnage et le récupérer. L'ascenseur est là. Je suis donc occupé et l'acteur ne bouge pas. C'est parce que nous n'avons pas réglé le rythme. Souffler Ce que nous devons faire, c'est dans notre générateur de labyrinthe, chaque fois que nous sommes fixés sur le pourcentage de notre chargement, sur la différence entre les deux et sur le pourcentage défini sur notre élévateur à obligations Oh. C'est ce que nous ferons la prochaine fois. J'irai te voir alors, au revoir. 83. Correction des problèmes de mélange de vue de la caméra: Bonjour et bienvenue dans le cours de création de RPG d' action et donjon procédural de Real Engine Five RPG d' action Auparavant, nous avions terminé avec nos animations d'ascenseurs. Nous avons réalisé l'animation des clôtures à l'aide d'une chronologie et d'une boucle pour parcourir toutes les clôtures, et nous avons défini l'emplacement relatif sur la base de Z et de zéro d'origine. Parce que dans notre Z original, ci-dessous. Ensuite, nous avons continué avec notre événement t qui, lorsque notre condition t est vraie, nous pouvons commencer à bouger. Nous avons déplacé la position de l'acteur entre l' original et la cible à l'endroit où nous devions nous rendre Et nous utilisons le Max Alpha pour parcourir la distance entre les deux. Ensuite, nous utilisons la constante Bay Interpret depuis position de l'acteur vers la cible avec un pas de 350. Ensuite, nous avons vérifié auprès d'une succursale si nous avions atteint notre objectif, et si c'était le cas, nous mélangeons la caméra de vision et nous désactivons notre condition t. Passons maintenant à notre générateur de labyrinthes, chaque fois que nous avons défini le pourcentage de chargement pour déterminer où se trouve le premier Voici le premier. Celui-ci est mis à zéro. Zéro, on commence, on n'a pas besoin de faire ça. Mais nous devons nous différencier lors de la construction. Ici, nous avons en fait mis le valide, ce qui nous donne essentiellement la branche . Faisons de la place. Il va nous falloir plus de place. Je pense que c'est suffisant, plus que suffisant. Nous allons donc le lire ici et en fait, le chargement est peut-être toujours valide car nous ne vidons pas la variable. Cette valeur valide n'est pas suffisante. Nous avons besoin d'une succursale. Mais si cela continue, mais quand c'est le cas, nous faisons la nouvelle chose, quand c'est faux, nous appliquons le pourcentage défini. Et le nouveau sera équipé de l'ascenseur le plus tôt possible. Et cet Alpha. Je pense que c'est 0,4, on passe à 40 %. Oui. Réglez donc Max Alpha sur 0,4. Nikki, la petite fille ici présente, a failli ne pas le voir, et je me demande pourquoi ça ne bouge pas Une branche de copie et le setter, et le second chargement est ici Nous pouvons ignorer cet acte. Passez directement à 0,5. Passons à la succursale, les faux à l'ancienne. Le vrai, c'est le nouveau, ce 2.5. Allons de l'avant. Gardons-en quelques-uns. Réglons ici 2.7. Ici, le poids passe à l' ancien au nouveau. Cela est correct. À partir d'Alpha, nous passons exactement au suivant à partir du pourcentage défini. C'est clair, assez clair. Gardons-en 85, et allons-y. En fait, il n'est pas nécessaire de se connecter ici. Nous ne mettons pas un joueur en gage, nous ne jouons aucune animation Nous ne faisons rien de tout cela. Cela peut donc s'arrêter là avec en fait un. Nous pouvons donc changer 0,7, mettons 0,8. Et cela serait suffisant. Devrions-nous y réfléchir une seconde fois ? Non, jouons. Démarrer. Pourrions-nous y réfléchir une seconde fois ? Non. Jouons. À. Trouvons-les de près. Bois. Et je vais de nouveau avoir du DZ. Nous déménageons. Nous nous déplaçons et le deuxième labyrinthe est construit. Et nous atteignons le deuxième labyrinthe. Et le premier labyrinthe n' est pas détruit. La musique n'a pas arrêté de jouer. Nous pouvons toujours interagir avec cela. Tout d'abord. Arrêtons l'interaction. Ce que nous faisons ici, c'est le mettre dans notre collision. Après les avoir fait, récupérez notre boîte et elle est activée pour éviter toute collision, qui est la valeur par défaut. Deuxième chose. Réglons ce vertige avec l'appareil photo qui me donne vraiment le vertige. Rapprochons un peu l'appareil photo. que nous fassions alterner Il semblerait que nous fassions alterner entre O Dios et celui-ci Non. Je pense que le premier zéro était celui de Making Days Choisissons-le. Il y a l'ascenseur. Oh, un labyrinthe étrange. Hé ! Un petit peu mieux. Ce que je vois, je pars du côté opposé. Oh, pourquoi ça commence si bizarre ? Là. Toutes les caméras vont juste au-dessus, disons, de 800. Disons 600. C'est bon. Faisons sortir les patients. Hoo. Je vais juste m' occuper de l'appareil photo 98 99. Je peux le déplacer un peu plus facilement vers ici. En rotation. Tu en as encore 108. Je vais le laisser 9000600, donc nous n'avons pas plus Tu peux le mettre où tu veux. Je pense que ce serait bien. Personnage. Elevator, dont je n'ai pas compris le personnage. Mais le sol. Je l'ai déplacé, le personnage est tombé. Où se trouve l'ascenseur ? Hein ? Oh, c'est encore pire que jamais. C'est incroyable. Huit, comme il est recommandé, c'est 60 -90 18 Les valeurs sont que nous devons également corriger celui-ci. Comme c'est moi. J'ai donc fait quelques recherches sur ce qui se passe. C'est un problème lié à la façon dont la cible de vue fade fonctionne avec ce que l' on appelle le verrouillage Kimbal, qui transforme l'écran en tournants, essentiellement sur parties éloignées de l'écran concernant nord-est, le sud-ouest et Que se passe-t-il ? Allons voir. Maintenant, je vais déplacer le joueur à côté de l'ascenseur. Encore une fois, sur le terrain. Maintenant, nous pouvons faire 123 cercles, en gros. Comme vous pouvez le constater, il s'épingle presque trois fois. Cela a à voir avec les pourritures, les rotations relatives et Ce que nous allons faire et cela va fonctionner, c'est prendre notre caméra et faire pivoter 23 fois le cercle complet. Maintenant, si nous compilons et que nous partons jouer , ils réparent le cardan de notre ascenseur Ascenseur et presque fixe. Cette montée et cette descente de l'ascenseur vers cette direction permettent de vérifier le joueur. Et c'est réglé. Oui. Mais nous devons faire la même chose pour le jeu de départ. Ce go, nous sommes en demi-cercle, disons-le une fois oh, c'était Je vais annuler la rotation dans le sens inverse. O. La boucle est bouclée. Aidez-moi. Que se passe-t-il exactement ici ? Et je vais éjecter la caméra. Je regardais d'ici, ce sont les joueurs. L'appareil photo est dans le mauvais sens, il devrait être plus de ce côté, qui est notre appareil photo d'origine. Voyons voir quoi. Je ne l'ai pas fait avant. Encore une fois, je vais le déplacer de ce côté. Je vais appuyer sur K, position de David. Je vais le piloter. Ça a l'air bien, notre joueur. Et je vais appuyer à nouveau sur Kate pour qu'elle joue. Oui, en gros, nous avons juste apporté la caméra pour mieux regarder du côté du joueur. A travaillé. Vous pouvez jouer avec des rotations jusqu'à ce que vous obteniez un mouvement qui vous convient et qui convient à votre position, nous allons le laisser tel quel Vérifions que l' ascenseur fonctionne toujours. Ascenseur. C'est bon. Enfin, nos caméras sont réparées. Je pense que nous avons accepté celui-ci avec le trucage des lots. C'était vraiment crucial. Arrêtons-nous ici et passons à la suivante. 84. Animation de l'ascenseur et saisie d'inventaire: Bonjour et bienvenue dans l'atelier de conception de jeux sous le moteur 5 appels à la création procédurale de Dungeon Action Z. Auparavant, nous avions finalement fixé les rotations des caméras Nous pouvons en fait avoir une transaction fluide et non ce lave-vaisselle. Je ne sais pas dans quoi nous nous trouvions. Et que l'ascenseur soit également oui. Et nous pouvons atteindre l'étage suivant. Mais le son continue de jouer et les murs ne s'effondrent pas. Allons donc régler ces problèmes. Et encore une chose que je mentionne, c'est que notre ancien labyrinthe ne recevait pas d'identifiant. Commençons donc par cela, car nous ne l' avons tout simplement pas appelé le code avons tout simplement pas appelé Nous allons obtenir notre référence. Et nous allons appeler Destroy Maze. Labyrinthe précédent, que nous appelons en fait le labyrinthe qui va être détruit, donc Destroy Maze serait un Et testons. Genre, c'est bien. At ne s'en est pas remis. S. Il y a un petit écart, et notre précédent appel au labyrinthe a été détruit, mais pas notre ascenseur actuel C'est une bonne chose. Nous ne voulons pas que cela détruit car nous ne tomberons nulle part. Continuons à régler le reste. La première chose que nous allons corriger est l'animation. Oh, nous devons faire tomber les clôtures. Je vais prendre ça en voiture. En tant que. Nous allons l' appeler clôture. Oh. La première chose à faire est d'entendre le son de l'ascenseur. Nous allons arrêter la variable audio. Maintenant, nous allons y aller parce que nous voulons émettre le son d'arrêt. Et il s'agit d' un ascenseur, d'un ascenseur, d'un Q, puis nous allons émettre du son. Il suffit de jouer. Ensuite, nous allons connecter le reverse end. Maintenant, cela va les faire tomber. Mais nous n'avons pas terminé. Nous devons étendre notre plateforme. Non, nous allons faire un changement de direction. Et nous allons relier cela à la fin de la chronologie. L'espace, les packs ci-dessus, c'est là, je pense que c'est bon, et maintenant nous avons besoin d'une nouvelle chronologie en partant de l'arrière, une chronologie À l'envers, parce que la raison en est que nous payons à l'envers, en abaissant la clôture, sans étendre la plate-forme Et nous aurons notre avion élévateur, qui est notre plate-forme, et cet emplacement relatif. Maintenant, n'oubliez pas que nous avons stocké une variable appelée direction. Et cette variable, nous l'avons stockée lorsque nous avons créé le premier style de notre génération de labyrinthe Le premier style s'est poursuivi. Et c'est dans cette direction que nous avons compensé le premier style en gros. Nous avons donc cette direction, qui est essentiellement notre sortie . Alors, vers quel est notre premier style que nous devrions étendre ? Et c'est ce que nous allons faire avec le nouvel emplacement. Mais d'abord, il faut se contenter de ne pas déraper les choses normales, désolée. Ert Et nous devons ajouter une chronologie. Disons que c'est deux secondes de lie, cela prend 2 secondes 00 et une, alimentons et utilisons également la dernière image clé Non, nous allons connecter cet Alpha, et pour B, nous allons sélectionner et la condition dans laquelle le joker d'index sera notre direction. Maintenant, pour Alpha, nous avons besoin de l'emplacement d'origine de la plateforme. Nous allons donc passer à la plaque de départ. Nous allons obtenir notre plateforme, nous allons obtenir une localisation relative et nous allons la promouvoir au rang de variable. Nous allons le nommer d'après son emplacement relatif. Peut-être que la plateforme originale n'a pas d'importance. Nous allons l'obtenir ici, nous allons le connecter à Alpha, puis nous allons y ajouter des éléments. Eh bien, nous allons ajouter pour l'est, nord, le nord et l'ouest, nous allons supprimer pour que ce soit 300 sur x ou le nord, dupliquer cela, zéro sur x et 300 sur y ou est, puis nous allons dupliquer les deux. Je vais connecter la plate-forme à la plateforme prédéfinie, et annuler le x connecté au sud, annuler, l'ouest connecté à l'ouest Maintenant, c'est en quelque sorte la fin de notre ascenseur. Et je dis un peu parce que nous allons avoir besoin de changer certains états du personnage pour le tenir debout, essentiellement pour qu'il ne puisse pas bouger tant qu'il est dans l'ascenseur Maintenant, la prochaine chose que nous devons faire est d'intégrer notre interface utilisateur à notre jeu. Nous en avons déjà créé la fonction dans notre mode de jeu, qui est un gameplay. Et la seule chose que nous devons faire, c'est retrouver notre personnage. Ouvrons ce plan et trouvons le gameplay. Et optez pour le mode jeu. En ce qui concerne le bas, mode de jeu, convertissez en mode pure cast, mode cette variable, connectée pour gagner du jeu, ceci en tant que variable, pas de gameplay. Et cela apporterait R U Y au début du jeu. Maintenant, nous pouvons voir les pièces. C'est la seule chose que nous pouvons voir pour le moment, car nous n'avons pas de clé pour apporter l'inventaire. Faisons une solution rapide pour résoudre ce problème maintenant. Apportons notre inventaire. Je vais m'évader. Je vais ouvrir notre manette de haut en bas sur laquelle nous avons utilisé les éléments de colle du bouton Alt. Maintenant, je vais utiliser le bouton This is the bottom ouvrir notre inventaire et le fermer. Ce que nous devons faire est pressé. Nous allons affluer. Lorsque nous serons sur A, nous allons ouvrir un inventaire Nous allons donc obtenir notre référence d' inventaire et c'est ce que nous allons faire. Passage en mode A. Passez en mode gain de haut en bas, convertissez-le en mode Pure Cast, et à partir de là, nous allons mettre à jour le A. Wig. Inventaire. Nous allons faire notre inventaire. Et puis, à partir de notre gameplay de Wood You, nous allons l' appeler animation, et nous allons jouer à l'animation. J'ai besoin d'un peu d'espace. Pour un système de sécurité intégré. Passons également à l'animation. Mettez un délai. Et puis nous arrivons. Passons maintenant à nos widgets de jeu. Et nous avons besoin d'une boîte horizontale de cette boîte horizontale. HB. Nous devons en faire une variable. Revenons à notre manette. B, inventaire et activé lorsque nous fermerons, nous y mettrons des trous. C'est faux Ensuite, nous devons rejouer, l'animation. Connectons l'animation, et nous devons connecter la cible, savoir le gameplay du widget. Encore une fois, et cette fois, ça va aller en sens inverse, pas en avant. Maintenant, théoriquement, nous avons une erreur. Donc, si nous n'avons pas compilé le gameplay. C'est pourquoi. Dossier Dave. Jouons. J'en ai une pour la presse. Nous avons notre inventaire, dont les boutons ne sont pas très beaux. Oh, je pense que c'est une solution pour la prochaine fois. J' irai te voir alors. Au revoir 85. Système de minimap: Et bienvenue dans l' atelier de conception de jeux et dans le cours de création de RPG d' action procédural Real Engine Five dans les donjons Auparavant, nous en avions fini avec mécanique de nos ascenseurs, presque terminée. Comme nous l'avons dit, il y a encore quelques petites choses à faire pour changer les états du personnage. Mais nous avons terminé avec le revers de la clôture. Nous avons arrêté la musique, le bruit de l'ascenseur, nous avons émis un nouveau son, puis nous avons abaissé les rambardes avec le même code en sens inverse de la chronologie Ensuite, nous avons créé une nouvelle chronologie basée sur le canal arrière de la chronologie précédente, exemple lorsque la chronologie précédente se termine envers, puis nous l'exécutons, et nous ajoutons l'emplacement relatif de notre plateforme en fonction certaines valeurs codées en chapeau et du relatif, l'emplacement relatif d'origine De plus, nous avons ajouté notre gameplay à notre écran, et nous avons créé la clé pour faire apparaître l'inventaire, qui se trouve en fait dans la manette du haut vers le bas Maintenant, nous avons commencé à faire plus de choses sur la manette et bientôt beaucoup plus. Et nous avons utilisé le numéro un du clavier pour faire volte-face entre A et B, ce qui signifie que A signifie mettre à jour l'inventaire et faire avancer l'animation Et avec un retard par rapport à l' heure de fin, il l' active, et B ferait le contraire, désactive et l' animation se joue à l'envers activation et la désactivation sont dues au fait que nous ne voulons pas pouvoir appuyer sur les touches pendant que l' animation est encore en cours de lecture. Maintenant, continuons à corriger l'une des erreurs que nous venons de voir, l'un des problèmes, qui survient lorsque nous n'avons pas d'images, exactement selon le même principe. Lorsque nous n'avons pas d'image, lorsque celle-ci revient, la texture de notre élément renvoie null, puis elle met une image blanche. Donc, ce que nous allons faire , utiliser une sélection sur le hetect de texture Ensuite, je vais me connecter. L'image d'inventaire ici, nous devrons peut-être la déconnecter. Mais pour l'index de ce dont nous avons besoin, nous devons vérifier si cette image ne vaut rien. Si c'est égal à rien, alors nous sélectionnons autre chose. Si ce n'est pas égal à rien, nous sélectionnons l'image d'inventaire. Autre chose serait l' image que nous avons sélectionnée ici. Je vais aller ici, le trouver. R, puis je vais revenir au graphique. Et glissez-le et déposez-le ici. Maintenant, cela aurait dû résoudre notre problème. En ce qui me concerne, il s'agit de corriger les images, et nous avons notre clé car nous l'avons ajoutée à l'inventaire. On peut voir une petite boîte blanche autour de celle-ci, ce qui n'est pas très agréable. Oh, réglons ça aussi. Nous allons passer au gameplay. Nous allons passer chez le designer. Nous allons passer au premier bouton, et il y a un tirage au sort autour de cette case. En appuyant sur G, vous pouvez voir la vue du jeu et sélectionnons à nouveau le premier bouton. Si je change cela en image, cela le corrige. Donc, je vais changer ça pour tout, tout. Mais le survol, la dépression et le normal, parfois, pas d'enregistreur ennuyeux Dessiné comme une image sur tout. Et je vais copier et coller cette vignette sur tout, copier et obtenir ce bouton, je vais le coller. Je vais coller ici, et je vais coller ici. Et c'est réglé. Nous n' avons plus de bordure blanche. Pour appuyer sur Play. Je vais apporter un inventaire. La première fois que l' inventaire arrive, il pas désactivé, alors que toutes les autres fois, il a été déposé. Corrigeons cela également. Laissez-moi le tester à nouveau. Bien sûr. Oui, la première fois qu'il arrive, il n'est pas déposé. Par défaut, cette barre devrait être désactivée. Enfin désactivé, nous devons essentiellement décliquer sur Activé. Compilez et enregistrez, et ce problème est également résolu. Puisque nous sommes ici pour corriger l'inventaire, ajoutons également notre minimum. Non, nous allons avoir besoin d'une superposition. Emmenons-le quelque part ici. Coupons-le dans le coin supérieur droit. Pour la position 1, allons-y moins 370, la position Y 50, l'égalité serait 32020. Ça fait donc une boîte. Maintenant, à l'intérieur de cette superposition, ajoutons un i. Re à deux images qu' ils vont ressentir. Deuxième image. Nommons le deuxième ordre des images, faisons-en une variable. Faisons la première image que j'appelle minima. Faites-en une variable. Pour notre frontière, c'est une perte, nous avons notre carte d'ordre imaginaire, une bordure minimale. Pour notre mini-carte, je pense que nous avons un matériau. Non, nous ne le savons pas. Sur une bordure simple. Nous avons la cible rendue. Que signifie la cible rendue ? Non, nous allons accéder à notre personnage et ajouter Is the capture to de component. Maintenant, il s'agit essentiellement d'un appareil photo, mais ce n'est pas n'importe quel appareil photo. Une caméra avec des règles très spécifiques qu'elle cible. Eh bien, pas les cibles. Il peut rendre des choses spécifiques et ne pas en afficher d'autres. Mais il ne l'affiche pas dans la fenêtre d'affichage. Ce n'est pas d'un appareil photo que nous regardons. Une caméra qui transmet sa vitesse à ce on appelle la cible de rendu de texture de rendu. C'est donc notre minimum. Nous allons le sélectionner dans la cible de texture de la caméra. Et réglons sa hauteur très haut. Fixons-le à 3 000 303 000. Il peut capturer une grande distance le long de nous. Maintenant, vérifions encore une fois que nous n'avons pas réellement le matériel. Nous le faisons. Je pense que nous devons prier pour rejouer. Donc, pour fermer ceci, et maintenant nous allons l'ouvrir à nouveau ou nous pourrions faire évoluer pour qu'il soit là. Et maintenant, nous avons la cible de rendu de la mini-carte matérielle. Mais nous allons ouvrir pendant une seconde, et nous allons changer une chose. Nous allons sélectionner notre échantillon de texture, façon dont il est déjà réglé sur minimap, et maintenant nous allons connecter, je pense, le masque d' opacité, ou il est en train de Cela devrait être un, la forme, le cercle, devrait être un, et nous allons enregistrer. Maintenant, supposons sélectionner le matériau sur notre minimap minimum que je rends, et cela fonctionne Maintenant, c'est un minimum de trois D, ce qui signifie que c'est cher mais nous pouvons rester un peu dans les parages. Nous allons régler ce problème en nous déplaçant à gauche et à droite. Mais nous avons un résultat. Nous ne pouvons pas voir ce qui nous entoure. La raison pour laquelle nous ne pouvons pas utiliser une technique traditionnelle et utiliser des textures et des coordonnées, c'est parce que notre carte est générée de manière aléatoire. Nous allons donc avoir besoin de trois D minima. Il existe également d'autres moyens de le faire, mais pour nous, ce serait bien. Je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer à la suivante. Au revoir. 86. Touches minimales finales et infobulle d'inventaire: Bonjour et bienvenue sur Design Workshop, le vrai Engine Five, le RPG d' action Procedural Dungeon Creation Curse Auparavant, nous avions résolu certains problèmes liés à l'apparence de notre inventaire. Nous les avons utilisés pour dessiner une image dans notre style pour supprimer les cases blanches autour des boutons, et nous avons résolu le problème lié à la présence d'une variable nulle dans cette texture lorsque nous définissons l'image de l'inventaire. Nous avons donc besoin d'une branche qui, lorsqu'elle est nulle ou nulle, utilise simplement notre image pour rien. Dans l'inventaire des mises à jour du code. Non Ensuite, nous avons ajouté nos éléments minimaux à notre écran , à savoir une superposition et deux images Les deux images sont l'une pour la bordure, nous avons choisi l'image de fond fantastique que nous avons l'image de bordure, et pour le matériau, nous avons choisi le matériau M minimum I, un matériau que nous avons créé et que nous avons modifié certains éléments à l'intérieur du matériau. En fait, nous changeons une chose, savoir que le cercle de forme doit avoir la valeur par défaut de un, sorte que le matériau peut choisir le cercle parce qu'il est conçu pour un carré ou un cercle minimum. Maintenant, ne sauvegardons pas à nouveau. Nous avons ajouté à notre personnage, rendu, ce n'est pas notre personnage. Non, c'est un personnage. D'accord ? Nous avons donc ajouté notre composant capturé, qui est une caméra spéciale qui affiche des éléments spécifiques Et nous avons défini la cible de texture comme étant le RT minimum, c' est-à-dire l'endroit où le flux de la caméra est projeté, disons, à peu près cela. Filtrons maintenant un peu ce que la caméra enregistre. Parce qu'en ce moment, comme on peut le voir. Il enregistre tout. On peut même voir le joueur. Nous ne pouvons pas vraiment voir le joueur, mais nous pouvons le voir. Le joueur est là. J'aime bien qu'il enregistre ça. Mais bien sûr, il ne devrait pas s' agir d'enregistrer des poèmes. Non, revenons à notre personnage. Nous allons sélectionner l'appareil photo. Passons à notre catégorie de capture de scène. Cliquons sur Avancé. Disons que nous ne voulons pas enregistrer les ESP d'atmosphère. Nous ne l'utilisons pas en fait. Nous ne voulons pas de brouillard. Ou c'est nous qui le faisons. Je ne sais pas Si vous voulez la sphère dans l'atmosphère dans le brouillard, vous pouvez les garder. Ce que nous ne voulons certainement pas, ce sont des mailles squelettiques. Peut-être des particules qui supprimeront les portes de guérison, mais peu importe, elles empêcheront les mailles d'atteindre les portes de guérison Et nous laissons tout le reste comme une question de facilité. Si cela prend trop de puissance de traitement, nous pouvons peut-être supprimer un peu de foudre. Mais si votre ordinateur peut le gérer, vous pouvez le laisser tel quel. Si ce n'est pas le cas, continuez simplement à vérifier les choses. Probablement l'éclairage Également l'éclairage caché, translucidité Ouais Quoi qu'il en soit, vous pouvez toujours régler les paramètres d' évolutivité de votre moteur sur une baisse Et cela résoudrait la plupart des problèmes si votre ordinateur est faible. Maintenant, la prochaine chose que nous devons faire est de retourner voir notre personnage, aller dans notre fenêtre d'affichage et de corriger le fait de tourner la caméra Nous allons donc apporter notre composant de capture de scène ici au début du jeu. Nous allons rester absolus, c'est-à-dire un nœud qui indique au composant s'il doit suivre les coordonnées mondiales ou locales. Et nous voulons suivre la rotation absolue du monde, afin qu'elle reste la même. Nous allons donc l'utiliser, et maintenant notre mini-carte devrait être prête Oui C'est stable, mais c'est dans la mauvaise direction. Passons à notre appareil photo et sélectionnons 45 degrés ici. Compilez et sauvegardez, et jouons. Et maintenant, c'est dans la bonne direction. Nous pourrions faire apparaître le minimum au moment où le larp de la caméra se termine Mais tout ira bien pour le moment. Nous allons laisser les choses tranquilles. Et ce serait bien si nous réduisions les minima lorsque nous arrivons à l'ascenseur, car nous pouvons voir le labyrinthe précédent disparaître Quoi qu'il en soit, c'est amusant, cause de l' émission de la poitrine, la matière émettrice qui se trouve ici, on peut voir ces eaux sur le sol Je ne sais pas s'ils savent qu' il s'agit d'une réunion. Quoi qu'il en soit, nous allons bientôt changer de modèle. Alors associons-le. Maintenant que nous avons ce système ici. Mettons un point pour que le joueur voie également le joueur. Eh bien, passons à notre personnage. Ajoutons un sprite en papier. Oh, passons à notre personnage. Ajoutons un sprite en papier. Et pour le sprite en papier. Dans nos textures, en fait, nous pouvons simplement sélectionner le sprite en papier et le sélectionner à partir d'ici Dehors. Faisons-le pivoter pour qu'il soit correctement orienté, la flèche pointant vers le caractère, et fixons sa hauteur à 2 900 et son échelle à 2,1 Dans tout, compilons et sauvegardons. Maintenant, jouons. Nous avons un minimum. Nous avons un sprite en papier pour indiquer notre direction au minimum Attendre. Et comme nous voyons une grande partie du coffre apparaître au début, sans trouver d' endroit où apparaître, passons à notre générateur de labyrinthes situé dans notre coffre ou notre coffre. Divisons à nouveau cela par deux et ajoutons simplement ce nouveau par division à la première division. Nous arrivons donc à 75 %, et connectons cela ici. Connectons-le également ici. Et ce serait tout. En fait, il est également là. Et maintenant, j'espère que nous allons mieux nous reproduire. Appuyez sur l'ascenseur. Oh, c'est une très belle scie par rapport à l'endroit où nous sommes. Prometteur, très prometteur. Maintenant, puisque nous en sommes au sujet de l'interface utilisateur. Ajoutons quelque chose de plus à notre inventaire. Ajoutons quelque chose qui, lorsque nous survolons ces boutons , nous donne des informations sur ce que nous survolons Nous allons donc le faire très simplement. Nous allons ajouter un bloc de texte. Nous allons l'apporter quelque part ici. Vérifions-le avec l'animation. Quelque part au milieu de notre inventaire. Ça pourrait être là, je pense. Nous pouvons juste le regarder en ce moment. Il n'est pas nécessaire que ce soit parfait. Ici, c'est bon. Je vais apporter son ancre, entrez également. Le centre est là-haut. Nous allons donc simplement apporter l'ancre ici et définir les alignements 2,5 et 0,5. Désolé, cela devrait être zéro et le s un moins. Non Correct, en fait. Génial. Ça n'a pas d'importance. Taille 200 parce que c'est la taille dont nous avons besoin, et définissons le milieu de justification . Pourquoi est-ce que je ne l'aime pas ? Pourquoi est-ce que je pense que c'est A, c'est complet. C'est la position sur x et y, puis l'alignement 5.5, nous n'avons pas vu que c'était faux. Maintenant, allons de l'avant. C'est un peu bizarre, mais c'est bon. Nous allons faire en sorte que ce soit tout. Nous allons appeler cela le g nous allons créer une fonction. Créons une nouvelle fonction. Disons un pourboire, et nous aurons besoin de quelques informations. Ça va être du genre. Contrôle de visibilité. Ouais C'est ce dont nous avons besoin. Je vais l'appeler visibilité. Et nous allons avoir besoin d'une autre entrée, qui sera un entier, et elle sera entrée. Maintenant, nous allons passer au mode gay. Nous allons chez GM. Faites du mode gay. Nous allons passer au moulage pur, et nous allons obtenir ing. Maintenant, à partir de l'inventaire, nous allons récupérer les clés. Nous allons les fabriquer ici. Et à partir de la clé, nous allons obtenir l'emplacement d'inventaire. Ensuite, nous allons poser une question. Notre article existe-t-il ? Pour ce faire, nous allons utiliser la longueur de notre inventaire, et nous allons le comparer avec plus, l' un des articles entrants. Je fais plus un parce que quand je vais les appeler, je les appelle bouton zéro, bouton un, bouton deux, bouton trois, et la longueur commence par un. C'est pourquoi je suis plus un. Je ne pouvais simplement pas faire le zéro, un, 23 et opter pour 1234. Mais habituons-nous à avoir ces différences entre zéro et, en même temps, comptage normal avec une coupe à un. Eh bien, nous allons vérifier si c'est supérieur ou égal. Et ça, je vais le connecter ici. Maintenant, s'il est supérieur ou égal, si ce n'est pas le cas, nous avons besoin de ce texte de sortie. Nous allons l' apporter ici. Je vais régler le texte. Et nous allons dire que je vais régler la capacité en régler la capacité de la visibilité entrante. Maintenant, que se passe-t-il lorsque c'est vrai ? Eh bien, nous allons trouver une table. Rangée. Et pour la ligne, nous allons connecter ce get. Pour ce tableau, nous allons utiliser des objets, et nous allons casser le SD. Nous allons copier-coller ce code ici. Et nous allons sélectionner le nom ici. En fait, nous n'avons pas besoin du reste, et la visibilité sera connectée ici, c' est-à-dire la visibilité d'entrée que nous avons prise à partir de là. C'est ainsi que nous avons créé l' infobulle, la fonction qui la rend visible ou invisible Maintenant, comment l'appelle-t-on ? Encore une fois, ça va être assez simple. Nous allons accéder à nos boutons, puis nous allons descendre dans la liste et voir comment nous devons les rendre variables. Nous en avons donc besoin en survol et en survol. Faisons-le pour chaque bouton. Variable au survol. Survolez. Accédez au troisième bouton, c'est variable. Passons au quatrième bouton, il est variable. Partons de l'intérieur du graphique. Cliquez ici, c'est beaucoup plus rapide survoler le pointeur et le bouton trois pour survoler et survoler Faisons-leur une belle liste. Pour les remettre en ordre par la suite. Y. Nous avons donc le bouton un, deux, trois, quatre, et nous avons le bouton de survol un, deux, trois, Nous ajoutons maintenant la fonction de survol à chaque modèle. Passons de zéro, un à trois, et visiblement à l'inverse N serait le bon le alors I. Des cerceaux sont fixés et cachés Et cachée. Compleons et économisons Allons jouer. J' aurais dû le voir invisible au début. Mais quand je passe à autre chose, je vais à la clé, et quand je vais à la clé, je vais à la clé. Quand je ferme, il disparaît. Quand j'ouvre, il apparaît. Cela n'apparaît qu'à la fin de quelque chose. D. Maintenant, définissons la visibilité par défaut invisible, passons à la visibilité et définissons-la sur masquée. Et maintenant, nous avons notre. Nous avons beaucoup fait au cours de cette leçon. Passons à la suivante. Passez nous voir pour le moment. À bientôt. 87. Système de santé des joueurs et widget: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop et Dungeon Real Engine Five Procedural Auparavant, nous avons légèrement configuré les paramètres de notre composant de rendu D dans notre personnage. Nous sommes donc allés voir notre caméra et nous avons dit ce qui devait être rendu et ce qui ne devait pas être rendu. J'ai cliqué sur l'appareil photo. Je voulais cliquer sur la capture sinusoïdale du composant. Nous utilisons les paramètres avancés de capture sinusoïdale pour accéder à nos indicateurs d'affichage généraux, et nous avons désélectionné les particules BSP et les mesures squelettiques Et comme nous l'avons dit, nous pouvons également sélectionner d'autres éléments si nous ne voulons pas qu'ils apparaissent dans notre capture du péché dans nos minima Maintenant, nous avons également ajouté sprite en papier pour représenter notre personnage au minimum Ainsi, lorsque nous jouons, nous pouvons voir notre direction, nous pouvons voir où nous nous dirigeons avec le minimum requis. Nous savons donc vers quoi nous nous tournons. Quoi qu'il en soit, nous avons ensuite procédé et avons changé notre règle dans notre génération de labyrinthes sur la création de cordons pour la poitrine Au lieu d'utiliser la moitié du labyrinthe, nous avons utilisé environ 75 % du labyrinthe et nous avons vérifié où placer notre index des trésors Pour ce faire, nous avons à nouveau divisé par deux la division déjà divisée du dernier indice par deux, puis nous l'avons ajoutée à la première division. Oh. Ensuite, nous avons ajouté dans notre widget de jeu une zone de texte qui contiendra le nom de l'objet Hobart dans notre inventaire Pour ce faire, nous avons utilisé nos événements de survol et de non-survol sur nos boutons, et nous avons créé une fonction qui prend l'emplacement d'inventaire en fonction du bouton Et nous avons créé une chaîne d'événements, essentiellement en reprenant l'inventaire du mode jeu, en vérifiant sa longueur, s'il est supérieur ou égal à l'objet plus un objet demandé, car souvenez-vous que la longueur commence à zéro, ce qui signifie qu'il n'y a pas d'objet et un, si plus un objet demandé, car souvenez-vous que la longueur commence à zéro, la longueur commence à zéro, ce qui signifie qu'il n'y a pas d'objet et un, vous gagnez, nous avons un objet. Ensuite, nous en avons ajouté un dans l'emplacement d' inventaire, car lorsque nous indiquons quel bouton nous utilisons, nous avons en fait utilisé zéro pour commencer. J'utilise zéro pour commencer. Donc zéro plus un signifie un, et si nous avons une longueur de un, tout va bien. Non, ce que j'ai fait ici, c'est le calcul que j'ai fait. Quoi qu'il en soit, lorsque nous n'avons pas d'élément, nous disons « aucun », le texte dit « non » et nous définissons sa visibilité, et lorsque nous avons un élément, nous obtenons le nom de l'élément et le définissons dans notre infobulle Continuons maintenant avec la création de l'utilisation des objets. Par exemple, lorsque je clique sur un objet, il se passe quelque chose. Et grâce à cela, nous serons en mesure d'être tenus, en fait, de remplir certains mécanismes de notre personnage. Par exemple, commençons par la partie santé, et lorsque nous utilisons une partie santé, nous devons ajouter de la santé à notre personnage. Cela nécessite un système de santé dans lequel nous pouvons ajouter ou supprimer de la santé. Et une visualisation de cela pour notre joueur. Non, commençons par la partie visuelle. La façon dont nous avons configuré notre système pour la partie visuelle consiste à modifier un paramètre interne d'un matériau pour le remplir à sa valeur maximale ou à sa valeur zéro. Oh, montrons comment nous procédons. Nous allons obtenir une image. Nous l' apporterons ici. Faisons en sorte que ce soit le contraire du minimum. Donc, position, je vais mettre 50, 50 ou y fois x 256. 256. Je vais peut-être baisser un peu plus ce chiffre. Ici, les ancrages sont également sûrs, peut-être un peu plus bas Peut-être aussi le rendre un peu plus petit. Oui, c'est pour ça. Hein ? Ça ne fait pas la queue, mais c'est un problème. Notre matériel, nous allons utiliser le M U I HP. Ce matériau, ouvrons le matériau. Possède ce paramètre HP, qui passe à 1 à 0 et qui change l'apparence de notre barre de santé. C'est donc une valeur que nous allons manipuler par le biais de notre plan directeur Pour ce faire, revenons à notre gameplay de Wood. Faisons en sorte que cela soit viable. Appelons cela la barre P. Non, c'est une image. Passons à notre graphique, et nous allons créer une nouvelle fonction. Appelons cette date HP. Ça devrait être un E ici. Maintenant, nous allons avoir besoin d'une entrée, qui sera du type à virgule flottante parce que nous avons une valeur de zéro à un, et nous allons l'appeler HP. La prochaine chose que nous allons faire est obtenir notre santé en gros, un élément, et nous allons obtenir du matériel dynamique. Il s'agit d'un nœud qui nous permet d'accéder et de manipuler le matériel de tout ce que nous voulons de manière dynamique pendant le jeu. Ce que nous allons faire, c'est un paramètre par valeur, et nous allons connecter la valeur ici. En fait, il en va de même pour cent. Parce que ce n'est pas la valeur réelle des HP. Il s'agit d'une valeur scalaire de 0 à 1, et c'est un pourcentage Ce n'est pas comme si vous aviez 300 CV, nous vous donnerions 300 CV sur 50. Pourquoi ne pas renvoyer le calcul ? Nous vous rembourserons directement le pourcentage. La partie importante ici est le nom du paramètre. Cela doit être dactylographié exactement comme dans le matériau. Passons au matériau, je pense que c'est la valeur HP. Y. Pour être toujours en sécurité, nous pouvons choisir le paramètre, le copier et le coller ici Oups, copie. Copiez et collez. Ce que j'ai collé était en fait mixte parce que le contrôle ne fonctionnait pas ici Lorsque j'ai appuyé sur le contrôle C, cela ne fonctionnait pas pour une raison quelconque. Peut-être que je l'ai fait évoluer. Secondes, fragment de secondes. Mon clavier est un peu collant, c'est un vieux clavier mécanique. Maintenant, où mettons-nous à jour cette valeur ? Si vous vous souvenez quand nous avons fabriqué le piège, passons aux accessoires. Ouvrons le piège. Ce n'est pas ici ? Un couloir, il devrait y avoir des ennemis. Donc, dans notre dossier Ennemis, nous avons le piège BP. Maintenant, lorsque nous avons infligé des dégâts à notre ennemi, nous avons utilisé le nœud appliquer des dégâts. Donc, si nous passons à notre personnage, dégâts de type A. Il y a un événement, un dommage. Cela se déclenche donc lorsque nous appliquons n'importe quel type de dommage, et quels que soient les types de dommages. Nous pourrions configurer la création de classes et tout le reste, mais nous n'allons pas le faire. Davis, revenons à notre personnage, et nous avons subi quelques dégâts. Créons une fonction pour supprimer la santé. Je vais donc l'appeler Santé. R et il va avoir besoin de deux entrées, ici, des entrées, O sera un lingot qui dit ajouter, quand c'est deux, nous ajoutons, et un flottant qui est endommagé. La prochaine chose dont nous aurons besoin, ce sont deux variables. Ils seront du type de flotteur, et l' un portera sur la santé actuelle, et l'autre sur la santé Mx. Dans l'état de santé des MC, nous allons donner une valeur par défaut, et cette valeur par défaut serait Nous allons maintenant définir la valeur actuelle de la santé de Max au début du jeu. Passons donc au début du jeu après avoir défini l'absolu, nous allons définir la valeur actuelle de la santé de Max. Ensuite, connectons notre fonction et supprimons la santé de nos éventuels dégâts. Et entrons dans notre fonction. La première chose que nous devons savoir, c'est si nous ajoutons ou extrayons des dégâts, car des dommages peuvent également l'être Guérison, nous allons faire un moins ou un plus. Les points négatifs devraient être en bas parce que nous allons avoir Maxel, donc Maxel moins les dégâts, puis Max Health Le talon serait endommagé. Nous allons faire une sélection. Nous allons connecter notre annonce ici. P A, nous ajoutons. Si ce n'est pas P A, c'est Peak B, donc nous soustrayons Nous allons augmenter cette valeur. Mais axe, pince, flotteur. Parce que nous voulons parler de Max. nous ne voulons pas qu'il dépasse l'état de santé de notre MAC En gros, nous ne voulons pas qu'il dépasse l'état de santé de notre MAC ou qu'il soit inférieur à zéro. Nous allons obtenir notre santé MAX, et nous allons la connecter à Mx, et la valeur minimale serait zéro. Nous ne devrions pas soustraire en dessous de zéro. Et nous allons définir notre état de santé actuel. Maintenant, la prochaine chose que nous devons faire est de diviser notre santé actuelle par la santé maximale. Et cela nous donnerait un pourcentage de notre santé. Maintenant, nous allons passer à notre mode gay. Nous allons accéder au gameplay de notre widget. À partir de là, nous allons dire HP Update HP. Nous allons nous connecter cette année, et nous allons indiquer notre pourcentage ici. Dossier, pressons. Ils enregistrent et compilent en fait tout. Allons. Voyons voir si cela fonctionne. Nous allons tomber dans un piège. S. Mais pour le moment, nous ne savons pas exactement quelle partie de ces actions ne fonctionne pas. Commençons par notre piège. Allons à notre piège. Ce que nous voulons vérifier si nous infligeons des dommages. Je vais commencer les vérifications à partir d'ici. Supposons que tout le reste se déclenche correctement, et nous voulons voir si cela cause des dommages. Nous arrivons à cet endroit, donc nous infligeons des dégâts. Je vais arrêter parce que cela prend du retard et pour supprimer le point de rupture à partir de là. Je vais aller voir notre personnage du haut vers le bas et appliquer un point de rupture à l'événement, quel que soit le dommage. Maintenant, trouvons le piège. Les casquettes n'apparaissent pas dans les chambres. C'est quelque chose de bien. R, nous infligeons des dégâts. Nous l'avions retiré. Cette valeur est neuf. R : nous avons subi un dommage. Mise à jour 0.9 HP. B. Nous mettons à jour HP en réglant la valeur sur 0,9. Nous avons le bon car collé. Quoi ? OK, il n'est pas prévisualisé parce que je joue. Je devrais réduire notre état de santé. Supprimer le point. Est-ce que ça marche, et je ne le vois pas. La tasse émet un son erroné. Cup émet un mauvais son en attaque. Passez à l'attaque. Nous ne jouons pas le son ici. OK, nous jouons le son ici. Ce son est correct. Recadrage E. Revenons au matériel. Nous connectons ceci, si c'est 0,9, ça devrait ressembler à ça, si c'est 0,8, ça devrait être comme ça. Zéro. Allons tester si la valeur par défaut est zéro. Est-ce qu'il est mis à jour ? Oui, c'est le cas. Mais après, ce n'est pas le cas. Je passe toujours à 0,9. Va voir notre personnage. Vous pouvez voir que nous pouvons également déboguer pendant l'exécution Je peux accéder à mon personnage, je peux sélectionner un personnage. Cela ne comporte qu'un seul nœud. Nous ne le verrons pas facilement, mais si je l'amène ici, il sera visible. Nous pouvons effectivement le voir pendant l'exécution. Mais ça marche, c'est ce qu'il fait. Cela va de l'avant. Je vais mettre un point de rupture ici. Je vais voir la valeur 0,9. À chaque fois, la valeur est de 0,9. OK. C'est quelque chose que je vais résoudre la prochaine fois. Je vais le laisser ici. Au revoir pour le moment. 88. Potion de santé utilisabilité de l'article d'inventaire: Bonjour et bienvenue dans atelier de conception de jeux sous le moteur 5 procédural à la création de Dungeon Action Pz Auparavant, nous avions commencé à créer notre système de santé. Nous avons ajouté notre image sur notre widget dont nous manipulons le paramètre scalaire, valeur HP obtenant l'instance dynamique, qui est la valeur HP ici Remettons-le à un. Ensuite, nous avons continué à créer dans notre personnage l'événement « n'importe quel dommage » et la fonction «   ajout/suppression de santé », ce que j'ai fait une très grosse erreur ici. Je soustrais et j' ajoute une valeur à la santé maximale au lieu de la santé actuelle Chaque fois que nous infligeons 0,1 point de dégâts, nous réduisons en fait notre santé maximale, est donc toujours de 90 %. Maintenant, connectons l'état de santé actuel au lieu de l'état de santé MAX. Si nous allons vérifier, cela devrait fonctionner. C'est ici. Hein ? Ouais. Cela fonctionne. Perdre de la santé, c'est aussi une grande quantité de santé. Et nous avons enfin le bon son sur le piège. Nous changeons le son du jeu ici, après le délai, c'est-à-dire le moment où cela endommagera le personnage. Il se joue avant la partie déclencheur, puis avant la partie avec l'attaque par pointe. Continuons avec notre volet santé. Pour cela, nous devons revenir à notre Widgit de gameplay. Et nous allons avoir besoin de nos boutons. Nous allons sélectionner le premier bouton. En fait, faisons-le à partir du graphique. Nous n'avons pas besoin de presser les boutons maintenant. Nous savons qu'ils existent ici. Passons donc au premier bouton, et appuyons sur Allons-y si j'ai cliqué Et puis le bouton 2 en cas de clic , le bouton 3 est cliqué et le bouton 4 t. Eh bien, nous l'avons pour les événements La prochaine chose que nous devons faire est de créer une fonction que nous appellerons use, et elle aura une entrée de type entier. Appelons cela un complot. Revenons donc à votre graphe de Ben. Dans nos boutons, utilisons cette fonction d'utilisation. Utilisons cette fonction d'utilisation et connectons tout, commençant par 0-1, deux et trois heure actuelle, lorsque nous appuyons sur un de nos boutons, ils exécutent cette fonction en utilisant un, deux, trois 0-3 Passons maintenant à la fonction. Et nous aurons besoin de notre inventaire. Nous avons donc stocké en survol, pas stocké, mais nous avons utilisé ce code ici pour obtenir notre inventaire Je vais donc le copier-coller en cours d'utilisation, et je vais le convertir à nouveau en moulage pur, car lorsque vous faites copier-coller, les moulages purs redeviennent normaux Maintenant, nous avons accès à notre inventaire, et nous allons récupérer nos clés. Et nous allons les promouvoir dans notre variable locale. Appelons ces clés. Et nous allons retrouver nos valeurs. Et nous allons en faire une variable. Collez également les valeurs. Nous avons maintenant accès à nos objets et à nos valeurs. Maintenant, ce que nous allons faire, c'est utiliser cet index d'objets pour accéder à nos clés. Nous allons obtenir. Et nous allons passer à l'index I, s. Nous allons obtenir notre emplacement, pas l'index des articles. Emplacement d'inventaire, en gros, et nous allons changer Sur la base de ce nom, nous devons définir les noms de nos suites. Je vais entrer dans les détails, nous allons supprimer le code PIN par défaut, et les objets que nous avons à utiliser sont, je crois, deux pour la portion, le temps et moi cinq pour la destruction. B était-ce ce matériel compilé et sauvegardé et vérifions-nous nos articles pendant une seconde. Je me souviens que celui que j'ai choisi était pour la santé. Il y a des objets. C'est ici. Les objets. Les potions de santé, potion pour animaux de compagnie, potion étaient de quatre et cinq, c'était OK. Mais la première chose que nous faisons en ce moment, qui est en fait la deuxième, ce sont les potions. Revenons à notre Pam p. Et quand il s'agit d'une potion, nous devons vérifier si notre joueur est en pleine santé ou non Parce que si le joueur a plein de santé, nous ne devrions pas ajouter de points de vie supplémentaires. Mais même si c'est le cas, nous devrions avoir la possibilité de différencier si nous ajoutons ou non. Eh bien, nous allons installer une branche. Nous allons faire participer le joueur. Cela nous permet d'accéder directement à la personne contrôlée que nous sommes et que notre contrôleur contrôle possède. Nous allons dépasser le caractère dw, qui est en fait la classe de notre étang, pour obtenir les variables que nous voulons Nous allons connecter cela ici, ici, et nous allons vérifier si notre santé actuelle est égale à notre santé Mx, pas définir, obtenir Si elles sont égales, alors nous ne devrions rien faire parce que le personnage est en pleine santé. S'ils ne sont pas égaux, nous devrions ajouter la santé et publier l'annonce. Et maintenant, attribuons une valeur à nos potions. Disons qu'ils guérissent pour retrouver la santé. Si nous voulons être en mesure de boire des potions en pleine santé, il suffit de relier cela par ici Ou si nous voulons préciser qu'il manque deux points de vie, pour utiliser une potion, nous pourrions créer d'autres règles ici Pour nous, nous garderons cette règle, et la prochaine chose que nous ferons sera d'obtenir nos valeurs, c'est-à-dire le nombre de potions que nous avons dans notre inventaire Ici, et je vais découvrir nos valeurs. Je vais acheter notre lot car il s'agit d'un emplacement d' inventaire. Et nous allons en faire une moins, qui est la potion que nous venons d'utiliser Nous allons maintenant vérifier si c' est inférieur ou égal à zéro, et utiliser une branche. S'il n'est pas inférieur à zéro, nous allons récupérer notre inventaire. Nous le promouvons vraiment en tant que variable, mais cela n'a pas vraiment d'importance. Convertissez à nouveau en pure diffusion, commentez. Casting. Si ce n'est pas zéro, cela signifie que nous avons encore des portions, nous allons ajouter notre machine à sous. Et le point négatif de nos valeurs. Mais cela sera soustrait d'une unité. Je sais que cela peut prêter à confusion que nous ajoutions, mais l'ajout ne fait que mettre à jour la valeur qui existe déjà. Maintenant, nous allons mettre à jour l'inventaire de notre inventaire, que vous allez utiliser. Inventaire. Peu importe que nous utilisions la même variable que celle que nous appelons car ces nœuds sont deux choses différentes. Mais cela signifie en fait qu'il va également projeter de la glace. Donc, la promotion de cette variable rendrait un peu plus optimale, peut-être dans sa construction. Nous promouvons cette variable et conservons pour ne pas l'appeler à chaque fois. Mais pour le moment, cela n'a qu'un impact minime sur notre jeu. Oh, la prochaine chose que nous devons faire est de mettre à jour notre infobulle qui n'est pas appelé info-bulle de mise à jour, mais plutôt info-bulle Nous allons essayer de le rendre visible et de le mettre en place pour qu'il soit visible et que l'emplacement soit notre emplacement. La raison pour laquelle cela fonctionnera est que si nous entrons, nous vérifierons si cet article existe. Si nous l'avons dans notre inventaire. Si nous ne l'avons pas dans notre inventaire, c'est que nous n'en envoyons aucun. Revenons à l'utilisation Maintenant, que se passe-t-il lorsque nous sommes à zéro ? Oh, que se passe-t-il lorsque nous sommes à zéro, nous devons le retirer de l'inventaire. Oh, je vais récupérer notre inventaire. Encore une fois, peu importe que je copie/colle ce code car même si je le fais glisser, il le fera à nouveau. Maintenant je vais déménager. Et pour le retirer, nous allons mettre nos clés dans la fente. Nous allons mettre nos clés dans la fente. Ensuite, nous allons simplement mettre à jour l'inventaire. Non, allons tester ça. Passons à notre mode de jeu, sélectionnons notre inventaire, ajoutons quelques portions, soit deux, et ajoutons deux potions Allons nous blesser. potion fonctionne ici, donc moi. Rien ne se passe, et trouvons un piège Je vais m'en servir un. Mais imbécile, blesse-toi encore une fois. Trop petit, 90 % ne s'affichent pas vraiment et 80 % en montrent trop. Quoi qu'il en soit, utilisons la potion et c'est parti. Un problème, le remorqueur qui se trouve ici pour les deux parties n'est pas apparu. Jetons donc un œil à celui-ci. Passons à notre gameplay. Passons au graphique Ben et ne survolons pas l' inventaire des mises à jour. Nous pouvons passer directement à partir de la fonction, d inventory, et nous voulons que lorsque je la mets sur masquée, elle soit visible. Mais maintenant, nous avons les deux potions. Rien ne se passe, il faut en placer un, un à gauche, à gauche. Pourquoi était-il si grand ? Je pense que nous l'avons fait un peu trop grand. C'est un peu décalé. Alors réglons ces deux problèmes. D'une certaine façon, vous vous demandez comment j'ai fait le plein écran. J'ai appuyé sur F 11. Et si vous appuyez réellement sur la touche Shift N F 11, cela passe complètement en plein écran. Il couvre même la barre des fenêtres que vous ne pouvez pas voir ici. Mais oui, Shift F 11 le couvre complètement. F 11 passe simplement en plein écran sans la barre Windows. Quoi qu'il en soit, réglons le problème visuel. Oui, ça n'a pas l'air bien. La raison en disparaît à cause des règles de rendu. Cela irait donc un peu vers la gauche. Je pense que c'est ça. Ouais. Je vais donc tricher et utiliser la transformation du rendu de traduction Utilisation pas très optimale, mais nous nous en contenterons pour l' instant moins trois. Alors voilà. Et collons-le ici. Vous pouvez le voir quand je clique, car il s'agit du même type d'élément. Même si je clique sur le bouton aussi parce qu'ils ont à peu près les mêmes types d'éléments. Je suis resté au bas de l'échelle. Cela ne réinitialise pas cela, ce qui est une fonctionnalité très intéressante. Disons moins ici également. Je pense que maintenant je voulais dire qu'ils sont plus beaux, mais en gros. Oui, parce que le texte «   place » est en gras. Alors changeons cela pour ne pas le faire. Je n'aime pas les classiques. Oui, le normal, c'est mieux. Utilisons. Nous pouvons en finir avec l' optimisation des visuels et de tout le reste. C'est bon C'est bon, c'est bon. Eh bien, je pense que c'est tout pour celui-ci. Je vais te voir ensuite. Au revoir 89. Barre de temps de jeu et potion temporelle: Bonjour et bienvenue à l'atelier de conception de jeux, Real Engine Five, au donjon procédural, RPG d'action et au cours de création Dans la leçon précédente, nous avons commencé par notre mécanique d'utilisation. Dans notre gameplay en mode b, nous avons utilisé l'événement « on click » sur les quatre boutons et créé une fonction d'utilisation, dans laquelle nous avons utilisé un entier pour déterminer sur quel bouton, c'est-à-dire sur quel emplacement de l' inventaire nous appuyons. Dans cette fonction, nous avons obtenu notre inventaire, celui de notre mode de jeu, lequel nous avons stocké les clés et les valeurs dans des variables locales distinctes. Ensuite, en fonction de notre emplacement, nous obtenons de nos clés le nom de la clé, qui est notre propre nom, et nous changeons en fonction des éléments que nous avons. J'ai deux, trois, quatre et cinq. Si deux, c'est la potion de santé. Nous avons donc vérifié si notre joueur était plein de santé. Parce que si notre joueur est plein de santé, nous ne devrions pas boire la potion. Et si les points de vie ne sont pas complets, nous utilisons la fonction de suppression de santé pour ajouter deux PV à notre joueur. Ensuite, nous avons vérifié les valeurs de l'emplacement actuel, c' est-à-dire les potions de santé, pour voir si moins un fait zéro ou est inférieur à zéro En fait, une valeur inférieure à zéro ne devrait jamais se déclencher. Et si nous avons des potions en gros, c'est ce que nous vérifions ici Si nous avons des potions ou si deviennent nulles lorsque nous les utilisons, nous avons mis à jour notre inventaire en conséquence en supprimant ou en ajoutant la même clé à l' Ensuite, nous avons mis à jour notre inventaire et mis à jour le hover tip également Juste au cas où il deviendrait zéro, il dira non. Maintenant, l'ordre nous indique que nous devons créer la potion de vitesse dès maintenant, mais je ne veux pas commencer par mécanismes des personnages exactement pour le moment Puisque nous sommes sur le widget de jeu, créons la potion temporelle, qui ne contient pratiquement que deux variables Nous allons créer une variable de float. Nous allons appeler ce parent. Nous allons le dupliquer et l'appeler Max. Ce que nous allons faire, c'est ajouter une valeur à l'heure actuelle. Supposons que notre potion à usage unique nous donne 60 secondes parce que nous allons sortir en quelques secondes, et c'est sur cette valeur que nous devons régler notre temps actuel Mais nous allons simplement serrer, serrer l'axe. Désolé, bloquez le flotteur. Nous allons le connecter ici, et notre temps maximum sera notre temps maximum. Et donnons le temps maximum à la valeur par défaut. Nous devons compiler pour cela. Et ce serait, disons, 220. Disons que c'est 220, et nous ajoutons une minute à chaque fois. Nous buvons une potion temporelle. Et relions cela à cinq. Maintenant, la prochaine chose qui devrait arriver est déjà faite. Nous allons le connecter à la branche ici, et elle va vérifier si le slot de valeur actuel est suffisant, et elle le supprimera ou ajoutera s' il est stable, ce qui n'est pas le cas. Je pense que les potions temporelles ne sont utilisées qu'une seule fois. Si tout est utilisé une seule fois sauf les potions et la potion de vitesse Créons donc l' indicateur de l'heure, comme nous en avions besoin dans l'interface utilisateur. Nous allons passer à la p. Nous allons utiliser la même technique que le matériau utilisé pour la barre de santé. Nous allons donc utiliser une image. Mettons l'ancre au milieu et en haut. Réglons la position x -300, position y 50, la taille x 600, soit y 60. Et je pense que c'est une bonne limite horaire. Passons maintenant à l'apparence. Nous allons nous brosser les dents, et nous allons utiliser la mer. Matériel d'instance. Nous avons maintenant notre barre de temps. Programmons-le pour qu'il fasse quelque chose car l'avoir ne veut pas dire qu'il fait quoi que ce soit. Nous allons donc passer à notre graphique. Nous allons passer à notre graphique des événements. Nous allons passer à la structure de l'événement, qui ressemble à un début de partie ou à des plans Et maintenant, nous allons utiliser a. comme date par événement. Pour ceux qui sont nouveaux, qu'est-ce qu'un chronomètre, c'est essentiellement un nœud utilisé pour créer un événement chronométré qui déclenchera une action après une durée spécifique, qui, si nous cliquons sur Lupin, peut également être configurée pour se répéter par intervalles duraux De la façon dont nous l'utilisons, nous créons un événement personnalisé, et nous associons cet événement à notre époque par l'intermédiaire du délégué ici présent. Quelles informations supplémentaires seraient que peu importe le nombre de fois vous les avez et où vous les avez. nombre d'actions qu'ils effectuent est important , car en retard dans le code, elles sont en quelque sorte considérées comme ponctuelles, comme s'il y avait un choix général derrière tout ce qui s'accumule, expliqué grossièrement , pas exactement comme ça, mais disons que cela accumule les actions du temps Maintenant, dans notre théorie, mettons quelques valeurs. Notre chronomètre va donc tourner en boucle. Ça va tourner en boucle toutes les 1 seconde. Cela signifie que le premier stick fonctionnera 1 seconde après le début de la partie. Nous allons donc définir notre heure actuelle. Toutes les 1 seconde, deux fois l'heure actuelle moins une. Ensuite, nous allons demander si ce temps est égal à zéro. En fait égal ou inférieur à zéro. Inférieur ou égal. Commandez du shot dedans quand je veux une note rapide. S'il est inférieur à zéro, nous allons en gros revenir à la fin de la partie. Ce que nous n'avons pas appelé ainsi, nous le ferons plus tard. Maintenant, juste une information de plus. Nous n'allons pas faire de pause ou je pose ce chronomètre, mais pour ce faire, pour les minuteries , nous avons un système appelé Handles, Ter Handle Si je fais la promotion de cette variable, et que nous l'appelons Timer ble and I Now, si je devais appeler ce handle n'importe où, si j'y avais accès, je pourrais mettre le chronomètre en pause ou le remettre en pause et demander également si le chronomètre est activé. C'est ainsi que nous procédons. Et il y a aussi un article clair et invalide. Il y a encore quelques options. Je voulais juste ajouter ceci. Je ne vais pas utiliser cette variable. Je vais le supprimer. Nous avons maintenant un chronomètre qui compte à rebours, et lorsque nous utilisons notre article, nous augmentons notre temps Maintenant, il ne sera pas mis à jour instantanément, mais il sera mis à jour pratiquement instantanément parce que c'est chaque seconde, chaque seconde, qu'il le met à jour, et c'est vrai. Revenons à notre chronomètre. Nous allons avoir besoin d'une fonction. Et la fonction sera très similaire à celle que nous voulons mettre à jour HP. Je vais le dupliquer. Toutes ces mises à jour. Et au lieu du bar, je vais utiliser le. Il y a un bar. Ce n'est pas une variable. Passons au designer. Sélectionnons-le. Faisons-en une variable. Nous allons l'apporter ici. Mais cela nous donne un pourcentage à partir du moment où nous effectuons les calculs de santé. Mais nous devons faire les calculs ici pour le moment. Nous devons apporter l'heure actuelle, je vais avoir besoin de x heures. Nous allons diviser les deux. Nous obtenons le pourcentage, et nous allons le connecter ici. Nous allons le supprimer. Et pour une raison ou une autre, je suis sûr que cette valeur serait la même. Mais vérifions-le. Vérifions-le. Nous ouvrons l'instance. Donc oui, cette valeur est la valeur P. Il s'agit donc de notre variable de paramètre. Si nous ouvrons le matériau principal, nous pouvons voir qu'il s'agit du paramètre que nous remplissons et de sa valeur P. Nous remplissons donc le P du chronomètre. Non, ils veulent blâmer les autres pour les conventions de dénomination, pour être honnête. Quoi qu'il en soit, nous n'avons plus besoin de cette entrée car nous sommes en train de mettre à jour ici. Et utilisons cette fonction avant notre branche. Nous allons régler ce minuteur de mise à jour. Maintenant, si nous voulions être vraiment très précis, nous pourrions le copier pour notre usage lorsque nous réglerons l'heure actuelle, et il serait mis à jour instantanément. Ce n'est pas une mince affaire, mais je ne pense pas que cela aurait également Nous utilisons la potion, comme ce serait le cas au prochain bâton. Loin. Allons tricher pour tester notre potion Nous allons ajouter un nouvel article à l'inventaire. Nous allons appeler ça I 5. Je pense qu'il y en aura cinq, et ce sera un. Et je vais compiler et jouer. Sauvegardons tout avant que j'appuie sur Play. Cela ne nous importerait pas. On ne s'écraserait pas là-dedans. Nous n'avons créé aucun code. Oh, et ça ne marche pas déjà. Oh, parce que nous n'avons pas réglé l'heure actuelle sur quoi que ce soit. Donc je l'utilise en fait. Ouaip. Nous pouvons voir que cela fonctionne. Mais nous devons régler l'heure actuelle sur la durée maximale de la construction. Ou l'autre chose que nous pouvons faire, mais nous devons le changer à chaque fois, c' est que notre temps maximum est de 2h20 Nous pouvons régler l'heure actuelle à 220. Nous utilisons simplement le temps maximum défini par rapport à heure actuelle et commençons à jouer ou à construire, sorte que nous n'avons pas à changer les deux valeurs à chaque fois. Quoi qu'il en soit, laissons les choses aussi simples que possible. Je pense que c'est tout pour celui-ci. Je te verrai le prochain. Au revoir. 90. Effets de potion et de potion de vitesse: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop et Dungeon Real Engine Five Procedural Auparavant, nous avions ajouté notre chronomètre à notre fenêtre d'affichage. Nous avons ajouté la barre de chronométrage, et nous avons ajouté l' événement Construct, qui est le point de départ des Blueprints, défini par événement, c'est-à-dire un événement qui se produit à chaque fois. Et nous avons créé un événement personnalisé que nous adaptons à un événement. Et nous avons utilisé cet événement personnalisé pour définir l' heure actuelle à -1 seconde. Ensuite, nous avons mis à jour notre barre en utilisant la valeur de notre paramètre scalaire, qui est la valeur HP, et nous avons obtenu le pourcentage de notre temps actuel par rapport à notre temps maximum Ensuite, nous avons procédé à notre événement d'utilisation pour terminer, nous agissons dans l'autre sens. Nous avons d' abord créé l'événement use, mais quoi qu'il en soit, nous avons donc procédé à la création de l'événement use. Lorsque nous utilisons l'élément I five, qui est une partie du chronomètre, nous ajoutons 60 à notre heure actuelle, soit 60 secondes. Oui, en gros 60 secondes. Nous atteignons notre temps maximum, puis nous mettons à jour nos minuteries Il s'agit donc d'une mise à jour instantanée n'attend pas une seule seconde. Ensuite, nous utilisons le code que nous avons pour les portions. Également. Il s'agit d'un code commun. Pour toutes ces actions, un code commun sera utilisé pour vérifier si nous avons d'autres portions dans l'inventaire, et si nous n'avons pas à les supprimer de notre inventaire et à mettre à jour le survol de l'infobulle. Maintenant, allons-y et passons à la partie vitesse. Je suis trois. Non. J'aime bien le faire glisser. Le clic raté est incroyable. Maintenant, pour ce faire, passons à notre personnage, et passons à nos particules. Eh bien, en fait, définit une particule. Je l'ai déjà préparé. Nous allons avoir besoin du port P Revenant Frosting Head. Si cela a du sens, c'est la particule dont nous avons besoin. Nous allons le sélectionner, puis appuyer sur Ajouter, et nous allons sélectionner un système de particules en cascade, et il sera ajouté à notre personnage. Maintenant, nous allons l' agrandir un peu . Nous allons le mettre à deux. Et c'est très bien. Et ouvrons notre particule. Apportez quelques modifications. Je vais apporter la particule ici. Ce que nous voulons, c'est ce MC carbonisé et nous allons changer la durée de vie de 1 à 2,5 Je vais vous dire pourquoi dans une seconde. Et en gros, c'est la durée de vie de cette partie de la particule Si nous la fermons, nous pouvons voir que ce sont les flammes réelles Ce truc. Et nous allons également modifier, pas la taille par durée de vie. Oui, la taille par durée de vie, nous allons le désactiver. C'est toujours une taille unique. Sinon, si ce n'est pas le cas, laissez-moi décliquer dessus Nous préférons peut-être qu'il en soit ainsi, mais je ne le fais pas en fait. On dirait que nous sommes alimentés au gaz. Nous ne voulons pas être alimentés au gaz. Nous voulons devenir bookmakers. Je ne sais pas, quelque chose de différent. Nous n'allons donc pas le supprimer, mais le désactiver, en appuyant sur ce x ici pour le désactiver, et maintenant cela ressemble plus à une aura, plus à une véritable piste que nous vivons Lorsque nous sommes statiques, cela montre également que cela est activé. Ce serait du côté des particules. Allons programmer ça. En fait, encore un réglage de l'article. Revenons-en à la particule. Nous ne voulons pas qu'il s'active automatiquement. Je vais donc évaluer l'activation et désactiver l'activation automatique. Nous voulons l'activer . Nous ne voulons pas que ce soit un état constant. Je vais compiler et enregistrer, et revenons à notre gameplay. Ce n'est pas notre gameplay. Encore une fois, je me trompe il faut s' en tenir au personnage. Passons au graphique des événements et créons des événements personnalisés quelque part. Je vais créer un événement personnalisé ici. Et disons-le, je ne sais pas. P.D. DP est un bon nom. Trouvons donc notre port de tête P Revenant Frosting, et activons-le Nous devons également, en fait, nous n'avons pas besoin de le définir comme actif. Nous avons juste besoin. Il s'agit simplement d'un nœud d'activation. Nous n'avons pas besoin de le mettre en mode actif, et nous allons également le réinitialiser Maintenant, définissons également sa visibilité, iden, et activons-la au cas où elle serait visible ici. Juste au cas où cela ne se terminerait pas et qu'il ne démarrerait pas correctement, il ne démarre pas brusquement. Ça a l'air mieux. Par exemple, ce que je veux dire, ce sont des détails techniques. Retournons peindre. Ce que je veux dire, c'est que si nous avons notre caractère et que notre effet s'arrête là. Juste au cas où l'activation ne démarrerait pas d'ici. Pour un cadre, nous voyons ceci. Nous ne voulons pas voir cela tout de suite, voulions le voir s'étendre petit à petit. C'est pourquoi nous jouons avec la visibilité, réinitialisant puis en l' activant Ensuite, nous devons utiliser les mouvements de notre personnage Qu'est-ce que la composante du mouvement du personnage ? C'est spécifique aux plans des personnages. Par exemple, ce plan m' a permis de le rendre visible. Passons aux paramètres du cours. Et vous voyez, la classe parentale est un personnage, lorsque nous créons des plans, si je dois créer un plan ici, me demandent s'il s'agit d'un acteur ? Est-ce une épingle ? Est-ce un personnage ? Maintenant, les personnages et un en dessous de l'étang, ne figurent pas dans cette liste hiérarchique, car les personnages sont des étangs, mais les étangs ne le sont pas tous. Certains des étangs peuvent être des personnages. C'est comme le schéma du van, qui signifie qu'en gros, le personnage hérite de l'étang, Pond n'hérite pas du Et la particularité du personnage est cette composante de mouvement du personnage, qui sert essentiellement à gérer logique du mouvement pour trois personnages en D. Il peut être utilisé pendant deux jours, mais ça va être un peu difficile, il faudra peut-être quelques connecteurs. Quoi qu'il en soit Donc, celui-ci, qui est responsable du mouvement de notre personnage, comporte un tas de paramètres, une quantité infinie de paramètres, si vous voulez. Vraiment. Quoi qu'il en soit, ce que nous voulons de tous ces paramètres, c'est notre vitesse de marche maximale. Donc, par défaut, nous en avons 600, et je pense que c'est une bonne vitesse. Mais lorsque nous sommes rapides, fixons-le à quelque chose de plus grand. Nous allons donc définir le maximum de marche. Vitesse. Disons jusqu'à 900. Ensuite, ce que nous allons faire, c'est généralement retarder. Par exemple, nous pourrions mettre un délai, et après disons 14 secondes, nous remettons la vitesse de déplacement maximale à 600 pour revenir à notre vitesse initiale, et nous fixons la visibilité de la particule à deux. Nous pourrions également désactiver ou utiliser l'autre nœud que nous n'avons pas utilisé, régler act sur négatif puis le réinitialiser, par exemple. Mais nous ne pouvions rien faire non plus, mais cette particule garderait des ressources, très peu. Cela dépend également de la particule. Désactivons donc. Juste pour économiser quelques ressources. Maintenant, ce délai ferait office de portail. Au fur et à mesure que nous étions en train de passer par là, nous réglons 900. Si le délai est en cours, il ne sera pas avancé tant que le délai ne sera pas terminé, puis il pourra être exécuté à nouveau. Mais si nous utilisons un délai rétractible, ajoutez-le à 14. Cela signifie que chaque fois que nous buvons une potion, le délai déclenche le compte Alors faisons-le. Donc, en gros, si nous continuons à trouver des potions prédéfinies, nous recommençons ce compte à rebours de 14 secondes. Nous n'allons pas ajouter de temps supplémentaire, nous allons simplement redéclencher les 40 secondes. Maintenant, appelons cet événement en fonction de notre usage. Ou ici. Nous allons passer du casting à deux joueurs BP, nous allons être rapides, et nous allons connecter Speedy ici au groupe. Nous allons compiler et enregistrer, et passer à la triche Passons à notre mode de jeu et changeons un objet de l'inventaire. Réglons ce deux I trois, et I trois a deux utilisations par défaut. Jouons. Et je me déplace normalement. J'ouvre l'inventaire, de la glace, bouteille bleue, j'en utilise une, et j'ai Speedy. 13 secondes, 14 secondes. En fait, redéclenchons. Je l'utilise à nouveau, et maintenant ça devrait prendre quelques secondes. Qu'est-ce que l'ascenseur ? Oh, des souris. Juste ici, ascenseur ici. Dungeon du labyrinthe de souris. Oh. C'est tout pour celui-ci. Je vais te chanter la prochaine chanson. Au revoir. 91. Potion de rage et effets de particle: Bonjour et bienvenue sur Game Design Workshop er Real Engine Five Procedure Dungeon Action Bz Creation Curse Auparavant, nous avions ajouté notre événement rapide à notre personnage. Un événement qui permet à notre personnage de se déplacer plus rapidement. Pour ce faire, nous avons ajouté une particule à notre composant de classe de personnage, la porte Revenant Frost Nous avons modifié certains éléments de la particule, nous avons modifié sa durée de vie et nous avons désactivé la taille par durée de vie. Cela fait donc plus d'effet qu'il bouge avec nous, que nous laissons une trace. Ensuite, nous sommes partis, nous avons créé une chaîne d'événements, nous avons activé la particule, parce que nous l'avons configurée pour qu'elle ne s'active pas automatiquement dans les détails. Ensuite, nous définissons la visibilité sur true alors que nous la définissons sur false, parce que nous ne voulons pas qu'elle soit visible. Nous ne voulons pas voir un cadre datant de l'activation précédente, comme s'il ne s'activait pas, dans le dernier état de la particule, par exemple. Maintenant, nous avons changé la vitesse de déplacement de notre personnage à 900, puis avec un délai rétractible, ce qui signifie que nous pouvons boire une autre potion et réinitialiser l' Après le délai, nous avons ramené la vitesse à 600, ce qui a réglé la visibilité sur. Cela devrait être faux, ma faute, et nous avons désactivé la particule Ensuite, nous sommes allés sur notre widget de jeu, nous avons appelé l'événement Speedy référence à notre personnage, et nous avons connecté la fonction au reste. code qui gère et supprime l'annonce de inventaire et met à jour nos widgets. Maintenant, une chose que j'ai remarquée, c'est que notre Speedy a deux charges, mais ce n'est pas un chiffre. Et selon notre code, cela ne fonctionnerait pas. Par exemple, si nous le mettons en stock, nous pourrons choisir plus de potions et les conserver à l'infini Et si nous sommes réellement, ce que nous devons faire est de créer un code personnalisé pour dire que si c'est l'article que j'ai trois, alors montrer les stocks, ce que nous ne ferons pas, nous le laisserons simplement comme ça. Ou si vous voulez, nous pouvons également accéder à notre potion de vitesse dans nos objets Dt et fixer le montant à un, et ce serait tout C'est réparé. Nous n'avons pas besoin de voir un chiffre. Et maintenant, nous allons faire le I four, qui est la potion, qui détruira tout Eh bien, cela va vraiment faire des dégâts, mais les dégâts seront si importants qu'ils détruiront tout ce qui nous entoure. Et par tout, je ne parle pas de la carte. Nous n'avons pas de carte détractive. Je veux dire tuer tous les ennemis et les tours, que nous appelons Hell Gate. Pour cela, nous avons besoin d' une autre particule. Choisissons la carte de cette belle explosion, apportons-la ici. Nous avons cette belle explosion. Il s'agit essentiellement d' une autre échelle, mais nous allons augmenter sa taille et elle conviendra parfaitement à nos besoins. Nous allons donc passer à notre personnage. Et pendant la sélection, nous allons ajouter une cascade. Ops. Qu'est-ce qui se passe ? Oui, tu ne devrais pas taper annonce sur annonce. Cela ne fonctionne tout simplement pas, et nous allons l'activer automatiquement. En fait, laissons l'activation automatique. Nous déterminons la taille, et une grande. Changeons son échelle à trois. Nous voulons que cela touche une grande partie de la population. Utilisons en fait un test clé. Alors, ce que nous allons faire, c'est créer un autre événement personnalisé. Toute cette gamme. Et consultez notre article ou celui-ci, et dites « activer et « régler cela sur vrai ». Maintenant, nous allons accéder à une manette, cliquer avec le bouton droit de la souris et utiliser, disons, le clavier de base. Base bar, nous y voilà. Trouvons la référence de notre personnage. Nous n'en avons aucune. Peu importe, rentrez chez vous. Le personnage de DW se transforme en pure distribution ou en rage. Et compilons et jouons. Et nous voulons que notre particule soit k de la taille d'une tuile. Mais si j'appuie sur l'espace. Oui, ça a l'air et plus D. Cela ressemble à la taille que nous voulons. Maintenant, pour ce qui est de la portée, la zone de dégâts , de la façon dont nous allons infliger des dégâts. Nous allons utiliser une sphère de collision. Donc une peur de collision. Collision de sphères. Non. Je vais aller le cacher à Game to Falls. Ensuite, je vais augmenter le rayon à, disons, 400. Oui, 400 semble. 500 c'est mieux. Mais nous pouvons vérifier puisque nous avons masqué la visibilité. 500, c'est un peu trop. Modifions-le donc en 400. Jouons à nouveau. Oui, je pense que visuellement, nous sommes dans ces limites. Cependant, peu importe la distance par rapport au cercle, mais par rapport à la lésion, nous allons faire les mêmes dégâts partout. Cela semble donc bien. Mais nous n'allons pas laisser les choses comme ça. Nous n'allons pas l'utiliser tel quel. Nous savons que le rayon de vitesse est de 400. Ce que nous allons faire, c'est le changer de 0 à 400. Nous pouvons même augmenter la distance à partir de l'endroit où nous nous sommes chauffés. Nous ne créerons pas ce code, mais cela peut être fait facilement. Lorsque nous avons une sphère dont la taille augmente. Maintenant, nous allons définir sa collision. Ignorer certaines choses. Nous allons le faire sur mesure. Nous allons ignorer la visibilité, la caméra, la statique du monde, et non la dynamique du monde. En fait, laissons le corps physique allumé et destructeur. En fait, fermons également la dynamique mondiale. Quelle est notre porte de l'enfer ? Permettez-moi de me le rappeler. Nous allons aller à Blueprints. Nous allons acheter des accessoires aux ennemis. Nous allons aller à Hell Gate et sélectionner sa propre capsule. C'est une collision avec Damas. Nous allons passer aux préréglages de collision. C'est une dynamique mondiale. Nous ne voulons donc pas ignorer la dynamique mondiale. Nous allons donc les laisser se chevaucher. Dans Physics Body, faisons bouger les boîtes avec notre dose de rage. La seule chose que nous devons changer maintenant est de passer d' requête à une collision. Commençons par éviter toute collision. Et lorsque nous sommes sur le point de l'étendre, nous avons alors dit que c'était une collision. Disons que le rayon est un et non zéro. Mettons-le sur l'un d'eux. Maintenant, revenons à notre code et ajoutons une chronologie. Ce n'est pas une chronologie. Désolé. Nous devons d'abord activer la collision. Maintenant, nous allons récupérer la sphère. Restons-en là pour éviter une collision de potions. Et la collision est activée. Et choisissez de ne varier qu'aucune physique. Chez, nous voulons de la physique, parce que nous avons décidé d'y placer les éléments physiques, et maintenant nous avons besoin d'une chronologie. Donc chronologie. Entrons. Créons une trajectoire de flux de 0,31 et de zéro, zéro Bien sûr, que nous utilisons la dernière image clé. La prochaine étape serait d' aller dans Event graph, update. Découvrons la collision de nos sphères, le pot de taux et le rayon de notre sphère. A est connecté pour effectuer la mise à jour. Tirons les leçons du 12400 avec l'Alpha de notre nouveau camion. Maintenant, quand nous aurons terminé, nous aurons à nouveau cette collision, gros, aucune collision entre les deux. Et nous allons également définir le rayon de la sphère. 21. Maintenant, que se passe-t-il lorsque notre potion de rage entre en collision ? Passons au début, à notre pot de rage. Faisons de la place. Ayez ceci ici. Mettez un commentaire à ce sujet. Faisons rage. Mettons un commentaire dans ce colli. Et c'est tout pour le moment. Oh. Choisissons notre autre composition et demandons qu' s'agisse pas de l'autre composition, de l'autre acteur Parce que maintenant nous allons vérifier la présence d'IA. Nous sommes donc certains que l'IA ne peut entrer en collision que pour leur corps et rien d'autre. Eh bien, le composant de la capsule. Nous allons donc vérifier s'il y a un remorqueur. Si l'acteur a un remorqueur, nous allons nous brancher, faire le si, puis nous allons chercher notre acteur et lui infliger des dégâts Et nous allons appliquer des dégâts, disons dix. Nous n'utiliserons pas les autres nœuds, et ce serait notre collision de potions, notre collision de potions. Appelons maintenant cet événement dans notre fonction use. Ou j'ai quatre ans. Nous allons appeler depuis notre personnage du haut vers le bas, la fonction H dépend en fait de ne pas fonctionner, puis la connecter ici. Créons un cheat en quatre sur un. Passons à notre manette et supprimons notre démag. Pour être honnête, allons à notre porte de l'enfer et à notre acteur Tug of Defaults in Hell Gate, et ajoutons le remorqueur et ajoutons Mais nous n'avons pas de système de santé sur notre tour. C'est ce que nous devrions faire ensuite. Testons simplement notre portion. Une potion de quête. Ça explose, ça disparaît, et c'est tout. C'est plein. C'est tout pour celui-ci. Je te verrai le prochain. Au revoir. 92. Musique de combat et mode de combat Hellgate: Bonjour et bienvenue sur Gain Design Workshop, et sur Real Engine Five, sur le donjon procédural, RPG d'action et sur le cours de création Auparavant, nous avions ajouté la fonctionnalité Rage Potion. Nous avons ajouté la rage collision à notre personnage, une sphère dont la taille augmentera en fonction d'une chronologie. Nous avons ajouté la marque Reman et partie que nous avons également augmentée en taille est l'activation du toto Oui, cela ne devrait pas être activé automatiquement, compilé, puis nous avons terminé la fonction, l'événement, rage, qui active notre particule, indique l'activation de la collision sur la potion de rage, utilise une chronologie pour augmenter la taille de la sphère, puis nous la désactivons Ensuite, lors de la collision de la sphère, lorsqu'elle entre en collision avec une sphère, nous utilisons un tag E pour ennemi Si l'autre acteur du tag possède le tag E, nous nous sommes branchés et nous lui infligeons des dégâts Ensuite, nous sommes passés à notre gameplay, appelé cet événement lorsque quatre objets quatre sont utilisés, et nous l' avons connecté à notre fonction, à notre chaîne d'événements, mais nous avons retiré la potion de l' inventaire Ensuite, nous sommes allés à notre porte principale et avons apposé l'étiquette E. Mais nous avons décidé de ne pas l' utiliser. Nous ne pouvons pas encore tester la porte de l'enfer parce qu'elle ne contient aucun code. Commençons donc à remplir un code sur le portail principal. Mais avant cela, expliquons à nouveau ce que nous avons ici, ce que nous avons créé. Nous avons donc deux dégâts statiques qui représentent la partie visuelle du portail principal, et également une particule qui représente également la partie visuelle. Et une lumière ponctuelle pour rendre tout cela un peu plus lumineux. Nous pourrions modifier certains paramètres de la lampe ponctuelle, adaptons-la à Lumens. Disons-le à 150. Disons-le d'une couleur rougeâtre. Disons-le à une missive rougeâtre. Il fait 1011. Voyons à quoi ça ressemble. Grand changement. B. La gamme de la vaste gamme. Gamme 600. Oh, je n'ai pas changé de couleur. Que s'est-il passé ici ? Oh, je suis quoi ? Je suis assise dans une immense lampe. Oui, ce n'est pas le cas en ce moment. Peux-tu supprimer cette partie ? Changer une missive en lumière me donne l'air de rien. Oui, réduisons son atténuation à cent, et passons à quelque chose comme ça 0,1 vert et 0,1 bleu. Tester. I. Il y a aussi une lueur plus rougeâtre sur les murs. W Je le vois sur de la terre battue, peut-être qu'il est plus beau. Encore une fois, nous l'avons. pourrait être un peu plus intense, mais je pense que c'est bon. Maintenant, retournons à Hell Gate. Sélectionnons. Mais avant de commencer à coder, rappelons-nous ce que nous avons construit ici. Nous avons un maillage statique avec un maillage statique étant enfant et un système de particules. C'est notre partie visuelle. Ce que représente, c'est la partie visuelle de la porte de l'enfer. Ensuite, nous avons un point lumineux indiquant que nous devrions modifier ses options, disons un rayon générationnel de 700 Disons-le à nous et à 150, et changeons la couleur de la lumière en rougeâtre foncé Avec un mur en bus, s'il vous plaît. 05, c'est vrai. Et je pense que ce serait pour la lumière. Et puis nous avons une capsule. La lumière, il faut la faire briller un peu pendant le terme. La capsule est l' endroit où se trouve notre boîte à chaleur, mais nous pouvons entrer en contact avec le joueur car nous avons défini ces deux messages de non-collision. Et toutes les capsules entrent en collision parce que c'est une capsule, et c'est ce que nous testons. Nous pouvons optimiser le bit, mais ce n'est pas le cas. Ensuite, nous avons une collision de sphères, mais nous n'avons pas encore augmenté sa taille. Cette collision détectera si le joueur est à portée de tir ou non. Nous optimisons son congé de collision Let's set n'a pas d'importance car nous nous chevauchons Définissons-le sur personnalisé et ignorons tout sauf la maison. Maintenant, configurons également ces deux maillages statiques pour qu'ils ne projettent pas d'ombres Nous ne voulons pas qu'ils jettent de l'ombre. Et nous avons configuré Begin Play pour que notre mouvement de rotation mette à jour les ensembles statiques, afin qu'ils pivotent. Maintenant, si nous compilons et sauvegardons, commençons par notre collision. La première chose à faire est de calculer le rayon de la sphère. Faisons en sorte que le jeu caché ne soit pas vrai. Compilons. Réglons le rayon par défaut sur, disons 100. Quelle est sa taille. De plus, en ce qui concerne notre joueur, nous devrions passer à notre collision avec Rage Pot, c'est le jeu caché pour être vrai parce que je ne l'ai pas tournée. Nous le désactivons à la taille souhaitée, mais nous ne l'avons pas activé pour le masquer à nouveau. Oh, je vais compiler et enregistrer le personnage. Allons jouer. 700 semble un peu excessif. Il ne nous détecte pas lorsque nous apparaissons, mais si nous bougeons, il démarrera Eh bien, cela pourrait commencer parce que la visibilité posera un problème, mais cela commencera à nous attaquer. Eh bien, disons que c'est un peu plus petit. Nous voulons une tuile , donc 600 peut-être. Tuile et un peu d'une tuile. Près de 550, je pense, ce sera la clé. Donc, 550 joueurs, etc. Ça a l'air sympa. Mais il ne nous attaquera pas par ce biais. C'est une jolie bague. Laissons-le là. Retournez. Et faisons quelque chose pour remédier à cette collision. Nous allons choisir le point de départ du chevauchement. Nous allons demander à l'autre composant qui est P pour notre joueur. Je vais installer une branche. Posez la question , puis nous allons créer une variable. Appelons ça le feu. Et je vais dire que c'est vrai. Maintenant, nous allons avoir besoin d'un chevauchement final, bien sûr, depuis la sphère. Et nous allons demander la même chose et ce sera faux. La prochaine chose que nous devons faire est de modifier notre contenu sur les deux messages statiques. Faites en sorte que ce matériau soit celui que nous avons réellement sur le sol et qu'il brille et redevienne normal Instance CM. Je pense que c'est le troisième. Et c'est vraiment un enfer. Nous verrons dans le jeu. Mais oui, je pense que c'est celui-ci. Quoi qu'il en soit, la prochaine chose que nous devrions faire est de nous superposer et de ramener les choses à la normale Ce serait le G M. Maintenant, ce que nous voulons également faire, c'est changer de musique. Lorsque nous sommes au combat, nous devons en être avertis. C'est Combat O. Passons donc à notre personnage et créons un composant audio audio. Faisons une glace. Pour cela, nous voulons la boucle variable correspondante. Cette boucle dorée Lightning Tiger. Nous ne voulons pas qu'il s'active automatiquement, nous allons donc désactiver l'activation automatique. Et nous allons créer un événement personnalisé. Et nous allons appeler cela play action autoyp. Musique d'action. Un peu d'espace. Maintenant, la première question est la suivante : est-ce que la musique joue ? Tellement de choses à ce sujet. jouant, alors si ce n'est pas le cas, nous allons disparaître. Utilisons des pings ici. Faisons en sorte que la durée du pad soit de 2 secondes et que l'heure de début soit fixée à deux secondes. C'est un double car l'introduction est longue, et nous voulons commencer un peu plus loin Maintenant, nous allons organiser un gala et nous allons relier cela à ce retard. Donc, chaque fois que nous entrons en collision, et même lorsque nous sommes attaqués, nous allons appeler cet événement S'il s'agit d'un jeu, cela ne fait que se redéclencher, notre temps de recharge pour quitter le combat, par exemple Réglons ces deux 15 secondes. Et je vais les renommer en n needs et n peut-être en majuscule A. Oh, que ferons-nous après ce délai Nous allons effacer notre film d'action. Musique d'action. C'était un film aussi simple que cela. Ce serait génial, n'est-ce pas ? Je vais en mettre deux ici, sans durée. Je vais compiler et enregistrer, et c'est pratiquement prêt. Oh, arrivons ici jusqu'à notre porte principale. Et maintenant, nous avons besoin d'une référence au personnage, ce que nous avons. C'est l'autre acteur ici. Je vais créer un personnage. Converti en fonte pure. Je vais jouer de la musique d'action. Je vais le connecter ici. Nous pouvons maintenant tester quand nous sommes à portée et quand nous ne le sommes pas. Oh, allons vérifier ça. Nous n'avons pas de musique. Trouvons la porte de l'enfer ici. Sur le dessus. C'est bon. Il joue notre musique. Maintenant, testons-le un peu plus vite car 15 secondes, je ne veux pas attendre pour le moment, et ce serait une perte de temps. Passons donc à notre joueur. Fixons la valeur légale à 3 secondes, par exemple. T. Il n'y a pas de porte de l'enfer. J'essaie d'autres moyens. Il y en a un là-bas. Hein ? Le matériau a changé. Allons voir la musique. Un, deux, trois, c'est arrêté. Entrons et sortons. Constamment. Ouaip. Donc, notre mécanicien travaille. Et je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer à la suivante. Au revoir. 93. Système de santé Hellgate et mort: Bonjour et bienvenue dans le cours de création de RPG d' action Procedural Dungeon Five Game Design Workshop et Real Engine Five création de RPG d' action Auparavant, nous avions créé la chaîne d'événements pour vérifier si notre personnage est à portée de notre tour. Non, nous avons vérifié s'il contient la composante P, nous avons vérifié s'il s'agissait d'une collision capsulale entre notre personnage et nous avons défini une variable que nous avons appelée feu Ensuite, nous avons remplacé le matériau un matériau qui passe de l'éclat à la normale, puis nous l'avons rétabli. Et nous avons créé le mécanisme musical Play Action de notre personnage, qui commence à jouer avec une décoloration ou qui s'estompe au fil du temps Remettons cela à 15. Cela pourrait être long. Remettons-le à dix. Puis nous disparaissons puisque 10 secondes se sont écoulées, et nous n'avons pas été touchés, alors ça s'estompe Maintenant, continuons avec notre système de santé Health Gates. Comme nous l'utilisons pour le personnage, les dégâts éventuels. Commentons ceci. Une musique. Chaque fois que nous utilisons un événement de dégâts pour notre personnage, va de même pour notre tour, puisque nous infligons des dégâts lorsque nous utilisons la potion et lorsque nous commençons à tirer Un événement de dégâts, et nous allons avoir besoin de deux variables, bien sûr, ou la santé actuelle et la santé Mx, ce seront des entiers Pas des nombres entiers. Je voulais dire des chars. Ce point décimal est important et facilite les divisions Tout dommage subi. Nous devons réduire les dégâts causés à notre santé actuelle, pas à notre M. Nous allons faire un inconvénient Nous allons nous connecter. Ceci est en fait ici et cela ici parce que nous faisons soustractions à notre état de santé actuel Je vais le charger en agrafes. Je vais régler notre état de santé actuel, et la pince, bien sûr, serait minimale à Mx. Au début du jeu. Réglons MC. Réglons le courant sur Mx. Fixons une valeur pour l'état de santé du MC. Disons cinq points de santé. Nous devons compiler. De santé. Prochaine. Nous allons simplement poser une question. Revenons à nos éventuels dégâts. Nous allons mettre une branche, et nous allons vérifier si elle est égale ou inférieure ou égale à zéro. Parce que nous sommes furieux et notre attaque médiatique va faire plus d'un mal. Notre tir va faire un seul dégât. Nous voulons également vérifier qu'il y a moins de zéro, même si nous sommes en train de le serrer, ce qui le rend obsolète Quoi qu'il en soit, si ce n'est pas le cas, faisons-le d'abord. Si nous ne sommes pas Zero Health TM. Non, nous n'allons le faire qu'une seule fois. Je suis désolée, je prends de l'avance. Ce seront tous nos ennemis, les méchants. Avant de le faire une fois, car nous en faisons une. Faisons quelque chose de délicat avec notre portail d'aide. Ce que nous allons faire, c'est réduire la taille de nos maillages. Il semble donc qu'il diminue chaque fois que nous l' attaquons. Nous allons choisir ces deux gâchis. En fait, nous avons juste besoin du parent, qui est maillé. Nous allons supprimer l'autre, et nous allons passer aux trois D. Ce que nous allons régler, c'est parce que nous partons de 0,5. Restormons-le en tant que variable et commençons à jouer. Une balance murale. Nous allons promouvoir cette variable. Nous allons le nommer original. Ici. Maintenant, ce que nous allons faire pour le monde de la guérison défini, c'est le larp Pourquoi allons-nous le laisser  ? Nous allons lire l'original, qui serait B dans notre cas, et un cinquième de celui-ci Nous allons nous diviser. Nous allons en faire un entier. Nous allons le diviser par 555. O Alpha serait le pourcentage de notre santé par rapport à notre état de santé actuel. Nous allons diviser les deux. Donc, puisque nous partons du pourcentage complet, cela passerait de B à A, car chaque dommage réduira l'Alpha. Et à chaque fois, nous voulons modifier un cinquième de l'échelle d'origine. Et ceux que nous allons laisser pour plus tard, quand nous aurons de l'IA. Maintenant, que devons-nous faire fois que nous y sommes parvenus pour créer un événement personnalisé Nous allons appeler cela la mort, et nous allons l' appeler d'ici. Maintenant, ressentons la mort. Ce que nous allons faire, c'est utiliser un compteur sur place. Et l'emplacement serait notre écart à l'emplacement p. Un pmètre serait une explosion. Nous avons donc l'explosion P, et ce sera une augmentation d'échelle b, cinq. Restons autodestructeurs et activons-les automatiquement. Maintenant, la prochaine chose que nous devons faire est récupérer notre sol en carrelage et de réinitialiser son matériau, pas de réinitialiser son matériau. Lorsque nous nous dirigeons vers notre tuile, lorsque nous avons un portail, nous avons une sauge au sol Ce que nous voulons, c'est faire disparaître la sauge. Pour ce faire, nous avons besoin d' une référence de tuile. Donc, sur notre portail principal, nous allons créer une variable tile appelée pile. Ce sera une tuile de type P. Je vais compiler et enregistrer une référence d'objets, et nous allons accéder à notre labyrinthe dans lequel nous allons générer W est notre Le voici, un générateur de labyrinthe. Lorsque nous faisons apparaître les portes principales de nos accessoires, propriétaire, c'est-à-dire oui, celle-ci, la plus complexe Nous devons rendre l'instance de variable modifiable et l'exposer au moment du spawn Alors maintenant, dans notre labyrinthe, l'accessoire où nous apparaissons, ce n'est pas ça Lorsque nous avons créé la porte de l'enfer, est-ce que je l'ai compilée ? Je n'ai pas compilé. Nous voulons l'actualiser, et nous avons maintenant notre vignette. Alors, que connectez-vous pour le carreau ? Eh bien. Nous savons que nous prenons les coordonnées. Je vais donc le connecter ici. Et nous allons compiler et enregistrer, et maintenant nous avons notre référence à notre tuile. Nous allons donc prendre notre carreau, le carreau, le sol, et le matériau ou l'élément zéro parce que sur l'élément zéro, nous avons le C et nous allons le mettre à vide. Il faudrait prendre d'autres mesures concernant l'IA. Mais lorsque nous aurons notre IA, nous serons en train de terminer. En gros, lorsque nous attaquons le T, l'IA le met automatiquement en état d'attaque, sorte qu'elle recherche le joueur et attaque le joueur. Et au décès, nous le libérerons essentiellement. Nous allons créer un comportement selon lequel ils s'enfuient, et peut-être qu'à un moment donné, ils vous changeront en arrière et/ou qu'ils commenceront à patrouiller quelque part au hasard, mais nous verrons le Since we have our death En fait, nous devons également détruire l'acteur. Parce que si nous ne détruisons pas l'acteur, notre porte sera toujours là. Maintenant, compilez et enregistrez. Nous avons une partie des dégâts qui peut détruire cette porte. Nous allons le tester. Boum. Oui, ça marche. Génial. Je pense que ce sera pour celui-ci. Je te verrai le prochain. Au revoir 94. Animation de balle Hellgate et système de ciblage: Bonjour et bienvenue sur Game Design Workshop sous le moteur Five Procedural Dungeon Action Pz Creation Calls Précédemment, nous en avions terminé avec notre mécanisme Hell Gates Health. Nous avons ajouté l'événement « any damage et nous avons créé deux variables, MX health et carrier health. Nous avons suivi la procédure pour soustraire notre santé et vérifier si nous sommes morts ou non. Si nous sommes morts, nous organisons notre événement personnalisé de mort, qui fait apparaître un mètre électrique, met le matériau du sol à zéro, le matériau CG, puis détruit notre acteur Si nous ne sommes pas morts, nous réduisons notre taille d'un cinquième, ce que nous ne pouvons pas vérifier parce qu'en fait, nous ne pouvons pas le vérifier si nous modifions les dégâts causés notre portion d'âge. Donc, si j'évalue les dégâts à quel niveau de santé avons-nous ? Nous avons cinq points de santé. Ce que nous allons faire, c'est infliger un point de dégâts, et nous allons augmenter le délai de 2 secondes. Nous allons rendre cela un peu infini. Mais nous pouvons arrêter le temps de jeu quand nous voulons 2 secondes. Trouvons une porte infernale. Il n'y a pas de porte de l'enfer. C'est bien que parfois ça commence sans une porte infernale. Pressez une portion de sauge. Obtenez Non, ce n'est pas le cas. Parce que ce n'est pas Davibl. Faisons la promotion de ce verbe de façon temporaire. Après avoir vérifié la succursale. Il ne dit rien d'autre. Je vais comme ça ici. R. Vérifions-en 12 ou 3. Oui, il devient de plus en plus petit et serré. Donc ça marche. Revenons-en à notre personnage. Supprimons cette variable. Connectons-le à. Faisons ce délai. Séparons également la variable à partir des variables, compilons et enregistrons, et revenons à notre porte. Maintenant, continuons à fabriquer le portail principal. Maintenant, je commence à jouer. Nous allons avoir besoin de faire certaines choses. Mais d'abord, créons la balle que la porte L va générer. Nous allons passer aux plans, nous allons créer un nouveau dossier. Appelons cela un laboratoire. B. Entrez-le et créez un nouveau plan. Tapons acteur, qui sera BP, L gate bullet. Ouvrons-le maintenant. Parlons-en ici. Dave, la première chose que nous devons ajouter est le système d'articles. Oh. Passons au contenu. Cherchons le chemin de fer. Nous allons utiliser cette piste principale. Dupliquons cela en fait. Nous avons donc la première piste principale. Passons à cette piste principale. Modifions la durée de vie des couleurs de l' échelle. Passons aux ions, aux points de courbe constants, et changeons le tout quelque chose de jaunâtre ou de rougeâtre Faisons en sorte que ce soit une missive. Ceci est une copie de celui-ci , le copier-coller est disponible. En fait, et si nous la changeons en constante vectorielle et que nous la rendons rougeâtre ? Mieux vaut passer à la constante vectorielle . De toutes les tangentes, sera un peu plus constante, cela ne changera pas tant que ça, mais tout ira bien Et 11 ici. Et changeons la couleur initiale ou quelque chose de rougeâtre. 55 un peu. R. Oui, c'est bien. Nous allons économiser. Fermez ceci, nous allons revenir à notre solution Hell Gate, et nous allons ajouter une cascade, et voilà. Maintenant, nous avons besoin d'une collision, ici nous en avons besoin. Avant la collision. Mettons un peu plus l'accent sur la fête. S. La collision ne devrait pas être une conséquence de la particule. Chaque collision doit être l'enfant de la racine par défaut. C'est très bien Je pense qu'il faut aller ici. Faisons en sorte que ça bouge. Non, nous devons d'abord optimiser une petite partie de la sphère. Passons aux collisions de la sphère. Vérifions l'atome, et nous allons tout ignorer sauf les étangs. Compilez et enregistrez. Maintenant, allons-y pour le faire bouger. Ce dont nous aurons besoin, c'est d'une cible, car nous allons suivre le calendrier entre notre position et la cible pour rythme du tir ou des déplacements. Et ce que nous allons faire, c'est trouver l'emplacement de notre acteur. Mais l'acteur, nous ne voulons pas que ce soit nous-mêmes. Nous voulons la patte du joueur, donc nous allons demander au joueur connecter cet emplacement pour obtenir l'acteur Et ce que nous allons créer , c'est une boîte autour du joueur. Par exemple, certains tirs manqueront exprès au joueur. Je tire à gauche et à droite, certains d'entre eux vont vers le joueur, mais la plupart vont vers la gauche et la droite. Oh, nous allons faire un moins, disons 100, disons que nous visons le sol. Ensuite, nous allons obtenir un point au hasard dans la boîte de sélection. Une zone autour de notre joueur. Réglons ce 200 201, et nous allons faire une sélection. Parce que, comme nous l'avons dit, certains d' entre eux seraient destinés à notre joueur. Et nous allons indiquer l'emplacement de l'acteur. Ici, nous allons tirer au hasard . Certains d'entre eux visent notre joueur, d'autres visent ailleurs, et ce sera notre cible. Je vais donc le promouvoir en variable et l'appeler target. Je vais le connecter au début du jeu. Nous n'avons pas besoin des deux autres, je vais les supprimer. Je vois ça un peu plus bas. Et maintenant, nous avons besoin de l'emplacement original de l' acteur. Nous allons donc trouver la localisation de l'acteur. Je vais le promouvoir à un emplacement d'origine variable. Et maintenant, nous avons besoin de la chronologie, alors ajoutez-y une chronologie. Pour le moment, nous allons faire quelque chose de différent. Nous allons utiliser deux trajectoires de flux, l'une pour contrôler la distance et l'autre pour contrôler la hauteur de notre projectile Alors, entrons dans la chronologie. Ajoutons deux pistes de flux. Nous pourrions le faire avec une piste vectorielle, mais utilisons simplement deux pistes de flux. Je pense que ce que chacun fait est plus clair et qu'il est plus facile de les configurer. Mais le premier serait de 00,0 avec une valeur de zéro, et le second serait de savoir combien de temps notre balle devrait-elle voyager ? Disons quelque part par ici, quelle que soit la valeur de 0,85 Peut-être que c'est trop 0,8. Point zéro 0,8. Je veux un chiffre proche de 75, donc 0,8 sonne bien, et une valeur de un. Mettons cela en place ici. Pour la piste suivante, ajoutons les points. Le premier serait zéro, zéro. La seconde serait à mi-temps, disons une mi-temps de 0,8 0,4 0,4. Ça en serait une. Et le dernier point serait de 0,8 sur la valeur zéro. Maintenant, remplissons-le. Ce que je voulais dire, c'est que celui-ci est celui qui contrôle notre distance entre l'origine et le joueur, et celui-ci contrôlera uniquement l'axe Z entre la hauteur d'origine et la hauteur d'origine. Maintenant, allons-y. Ce que nous allons faire, c'est trouver un emplacement. Nous allons laisser Vector. Nous allons relier l'emplacement d'origine à A. Et nous allons atteindre notre cible. Et nous allons ajouter la hauteur que nous allons contrôler depuis notre deuxième piste. Je vais le faire. Nous allons connecter la piste deux ici, nous allons connecter la piste 1 ici, nous allons connecter celle-ci ici. Et pour les valeurs, nous allons simplement ajouter 100 à Z. Lorsque nous aurons terminé notre chronologie, nous passerons à un compteur sur place Y t. C'est y. Sur un compteur sur place. Nous allons choisir l'explosion de particules. Nous allons le redimensionner pour qu'il soit réellement redimensionné à 2,5 0,55. Pour l'emplacement, nous allons atteindre notre cible. Ensuite, nous passerons à ce numéro. Maintenant, il est possible que nous soyons détruits avant cela, c' est-à-dire lorsque nous entrons en collision avec le joueur Non, allons-y. Passons à la collision de notre sphère, commençons l'épreuve du premier tour. Demandons le composant. Si le composant possède un point P, nous allons infliger des dégâts à l'autre, c'est-à-dire au joueur Je vais appliquer, disons p, un dommage, puis copier ce compteur sur place. Ou ici. Nous n'utiliserons pas la cible. Nous nous déplacerons à l'emplacement de l'acteur par rapport à l'autre acteur. fait, nous pouvons utiliser le résultat du balayage et le décomposer, et nous pouvons utiliser l'emplacement, l'emplacement du point d'impact Nous pouvons donc le faire apparaître exactement où nous voulons, car l'autre acteur donnera le centre de notre acteur. Oh, nous allons utiliser le lieu de l'impact, puis nous allons détruire l'acteur, et ça ne nous intéresse pas parce que l'acteur est déjà détruit. Je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer à la suivante. Au revoir 95. Tir au tir au balle Hellgate et effets spéciaux: Bonjour, et bienvenue sur Gain Design Workshop, et sur Real Engine Five, Donjon procédural, Action RPG, cours de création Sérieusement, nous en avons fini avec notre balle Hell Gate. Nous avons ajouté un effet de particules qui nous a permis de modifier quelques paramètres, en gros, le changement de couleur au cours de la durée de vie, dont nous en avons fait une constante, puis nous avons également modifié la taille initiale. Ensuite, nous avons créé notre plan de puce en utilisant une classe d'acteurs, et nous avons ajouté cette particule et une collision de sphères, que nous utilisons act Si nous entrons en collision avec le joueur, nous obtenons le résultat de cette collision, nous obtenons le point d'impact et le point d'apparition précis, et nous avons infligé un dommage au joueur, 0,1 point de dégâts, puis nous avons détruit l' 0,1 point de dégâts, puis nous avons Maintenant, la façon dont cet acteur se déplace est la suivante : au début du jeu, nous enregistrons une position cible grâce à la position du joueur, plus un point aléatoire autour des pieds du personnage. Ensuite, nous stockons l'emplacement initial, et nous utilisons une chronologie avec un point très rapide, compris entre zéro et 0,8 pour atteindre la cible, et nous avons utilisé différentes séries, nous avons utilisé deux trajectoires de flux différentes, l' une pour modifier la distance et l' autre pour contrôler la hauteur. Nous utilisons l' emplacement défini pour déplacer l'acteur. Ensuite, si nous n' atteignions pas notre cible, nous n'avons pas touché le joueur en fait, nous avons atteint notre cible. Nous utilisons l'emplacement du compteur d'apparition pour déclencher une explosion, puis nous avons détruit Passons maintenant à notre Hell Gate et à l' événement Begin Play pour commencer à créer le mécanisme de tir. Nous allons donc utiliser à nouveau un événement temporel. Et il va regarder toutes les 0,3 secondes. Le mécanisme de prise de vue rapide. Je vais créer un événement personnalisé. Appelons-le devoir. Et utilisons une branche décider quand elle est réellement en train de tirer ou non. Et nous avons cette maladie, nous l'appelons feu. Nous allons utiliser cette condition ici. Mais maintenant, nous n'avons pas toujours envie de tourner. C'est à ce moment-là que nous pouvons tirer lorsque le joueur est à portée, mais est-ce que le joueur est dans la ligne de mire ? C'est aussi une question. Allons-nous faire un tracé linéaire ? Par chaîne ou par chaîne Tamela. Et nous allons utiliser la localisation de l' acteur à des fins artistiques. En fait, nous allons faire le contraire. Nous allons utiliser l'emplacement ou la fin de l'acteur et pas seulement l'emplacement de l'acteur, l'emplacement du maillage statique, car il est un peu plus haut que l'endroit où le plan indique une cuillère Nous partons de là. Nous nous arrêtons là , nous ne commençons pas, nous allons nous inquiéter de l'emplacement parce que c'est un composant. Nous avons besoin de l'emplacement des mots de la métaphore statique ? Je vais me lever et à partir de l'étang, nous allons nous localiser parce que l'étang est un acteur. Je vais m'en servir dès le départ. Mais nous sommes en train de vérifier entre le joueur la tour, est-ce visible ? Pouvons-nous toucher quelque chose ? S. Allons-nous vérifier ça ? C'est le composant que nous chauffons , cassons-le. Cliquez sur le résultat. C'est le composant dans lequel nous chauffons l'acteur, alors g E. Nous avons chauffé notre tour ? C'est uniquement si nous chauffons quelque chose. Première question, nous avons vraiment touché quelque chose ? Si nous chauffons quelque chose, a-t-il le g E ? Si c'est le cas, nous irons tous en classe. Nous allons diviser la transformation. Nous allons obtenir à nouveau la mesure statique. Emplacement du mot. Répondez un peu plus haut, et maintenant nous devons payer le son Maintenant, pour ce qui est du son, nous n' avons pas de son pour cela, mais il y a un son dans Unreal que je trouve parfait pour cet usage, pas le meilleur Nous allons passer au contenu. Et comme vous pouvez le constater, il n' y a pas de contenu moteur. Nous allons dans les paramètres et ne sélectionnons aucun contenu du moteur. Nous allons avoir un nouveau dossier appelé engine. Maintenant, il n'est pas recommandé de modifier ou de faire quoi que ce soit dans ce contenu si vous ne savez pas exactement ce que vous faites. Parce que cela peut perturber le moteur, mais nous ne pouvons pas utiliser un son provenant de là. Et nous allons utiliser la fenêtre des tables. Le plus proche. Oui, celui-ci. Fermez la fenêtre de discussion. Maintenant, notre feu est prêt. Allons compiler et enregistrer. Je n'ai pas choisi de classe, P bullet. Ici, nous choisissons un acteur, qui est P H gate Bullet. Compilons et sauvegardons. Manière. Les boîtes sont immenses. Et ça ne nous tire pas dessus. Pourquoi ne nous tire-t-il pas dessus ? Allons voir Je peux supporter cette musique. Voilà pour les tests. Nous allons nous rendre à notre porte principale. Maintenant, nous avons quelques portes principales. Disons que nous en avions plus. La façon dont nous pouvons le faire est de sélectionner celui-ci. Rejetons, sélectionnons celui-ci, et nous pouvons aller ici, et nous verrons qu'il est sélectionné. Voyons ce qu'il fonctionne. Il heurte quelque chose. Nous ne pouvons pas E, est-ce que cette classe a un tag ? Il doit y avoir une étiquette. Ouais. Parce que notre couple n'en a pas. Faisons un débogage sur cette trace pour installer un stent sur le joueur. Déplaçons le joueur à côté d'une porte infernale. Nous attaquons le joueur. C'est un moment parce que ça peut aller. Donc, ce contraire n'a pas vraiment fonctionné. Nous allons donc faire le contraire. En tant que personnes normales, nous allons commencer par le maillage. Nous allons simplement montrer que le contraire est généralement bien aussi. Cette fois, ce n'est pas le cas. Nous allons changer d'acteur en, et allons-y . Maintenant, ça touche le joueur mais ça ne tourne toujours pas. Allons vérifier. Quoi ? Comme nous cherchons un acteur, nous devons vérifier la composante en T. Nous avons besoin d' un son pour T. Nous avons besoin d' un Nous avons besoin vérifier si le son du tournage est bien joué. Nous avons du feu craché. Bien, supprimons tout ce débogage, afin que nous puissions voir les choses un peu plus clairement. Passons à la sphère. Mettons-nous cachés dans le jeu. Deux. De quoi d'autre avons-nous besoin pour supprimer les lignes de débogage ? Et juste pour le plaisir, passons à notre personnage et ajoutons un composant audio. Créons cette ambiance. Choisissons-le pour créer une ambiance sonore. Je pense que c'est ça. Je ne suis pas sûr. Oui, c'est ça. ambiance, le Q, pas le son, et il s' activera automatiquement pour s'activer Allons vérifier. Un pH ambiant. Nous n'avons pas de porte infernale. C'est bon. Fais feu à toute vitesse. Il reste un peu au sol, puis il explose Peut-être pourrions-nous mettre du code pour cela, mais ne le faisons pas. C'est bon. La prochaine chose que nous devons faire. Je remarque que l' éclairage est un peu statique, cela se déforme légèrement. La fenêtre d'affichage a été déplacée. Cette lumière ici est un peu statique, et nous avons un code pour la faire scintiller. C'est dans nos torches. Passons à nos torches. C'est la police qui allume le flambeau. Je vais utiliser ce code ici. Retournez à notre porte de l'enfer. La balle. Je ferme la balle, nous n'en aurons plus besoin. Hell Gate, et pour mettre ça ici. Je vais mettre une séquence. Je l'ai placé avant l'événement temporel, afin que nous puissions simplement effectuer ces actions d'affilée. C'est vrai. Maintenant, je vais aller à la lumière. Je vais chercher la couleur. Je vais passer à A, coller. Je vais le coller et le modifier un peu correctement. Et peut-être plus d'orange ici, et la lumière viendra de la densité. Nous en avons 100, 150 disons au hasard. Non, on ne peut pas le faire au hasard dans la mise à jour, ce sera d. La plage sera comprise entre 700 Agrandissons-le et supprimons quelques points. Gardons celui-ci. Oui, c'est bon. Et vérifions-le. Il n'y a pas de portail. Nous en aurons un. Et oui, en ce moment, la lumière , bien sûr, est bien meilleure. Cela fait quelque chose. Lisez. Je pense que c' est tout pour celui-ci. Je te verrai le prochain. Au revoir 96. Widgets de souris personnalisés et maille revenante: Bonjour et bienvenue dans le cours de création de RPG d' action et donjon procédural de Real Engine Five RPG d' action Tout à l'heure, nous en avons terminé avec notre porte de l'enfer. Nous avons terminé notre événement de tournage, qui utilise un temps défini par événement et déclenche l'événement de tournage. Ensuite, nous demandons si nous sommes capables de tirer. Si nous parvenons à le trouver, nous lançons une ligne de traçage depuis le maillage statique vers le joueur. Le contraire n'a pas vraiment fonctionné pour nous. Ensuite, nous demandons si nous avons chauffé quelque chose. Maintenant, si c'est vrai, si nous avons chauffé quelque chose, nous nous demandons si c' est le joueur. Et si c'est le cas, nous sommes en train de créer une balle infernale, et nous émettons un son Nous avons également créé, nous n'avons pas créé. Nous copions et collons le code de nos torches, ce qui fait trembler la vie. Nous avons légèrement modifié la chronologie et les valeurs. Alors maintenant, notre lumière de notre porte de l'enfer est également une animation, en gros. Oh, nous allons enregistrer ça. Je pense qu'il est temps de commencer à créer plus de choses liées aux joueurs. Oh, commençons par la souris. Nous allons créer deux widgets. Un pour que la souris passe par-dessus les ennemis, et un pour qu'ils soient normaux. Nous allons donc appeler User Widget. Nous allons sélectionner le plan du widget, widget utilisateur, la souris normale W G. Je vais copier-coller et l'appeler W G mouse. Nous allons maintenant accéder aux paramètres de notre projet et rechercher ou utiliser le curseur. Et voici nos curseurs logiciels, que nous pouvons remplacer par certains widgets Nous allons en ajouter deux. En fait, cela ne nous permet pas d'en ajouter un deuxième car celui-ci doit être unique. Mais la première serait la valeur par défaut, et la seconde serait la croix pour elle. Comme vous pouvez le constater, nous choisissons parmi une set list. Maintenant, par défaut, nous allons choisir la souris W G normale, pour le réticule, nous allons choisir la souris W G. Attack, je crois Souris d'attaque. C'est ici. Nous allons fermer les paramètres du projet. Nous n'en avons plus besoin. Ils s'enregistrent automatiquement dès que nous apportons des modifications, et ouvrons nos deux widgets. Nous allons ouvrir la souris normale, l'amener ici. Ouvrons également la souris d' attaque. Pour une souris normale, nous allons placer un canevas. Et nous allons utiliser une image. Et nous allons aller voir notre mage et régler sa taille à 90. Nous voulons que ce soit une boîte, et pour le pinceau ema, nous allons sélectionner UI mouse. Il devrait y avoir une souris d'interface utilisateur. Il semble que nous ayons assez joué et c'est apparu. Choisissons donc la souris UI. Maintenant, nous pourrions créer un code complexe et le rendre rouge. Mais ce que nous allons faire, c'est ouvrir le Canvas, revenir à notre souris d'attaque, la coller ici sélectionner la souris et passer à sa teinte. Nous allons le rendre rouge vif. Et maintenant, nous avons une souris rouge pour cibler au lieu de créer n'importe quel type de code. En gros, c'est tout à partir de cette partie. Ce qui doit être programmé, c'est la partie qui change de couleur lorsque nous survolons un ennemi Mais pour cela, nous devons d'abord modifier un code sur la manette du joueur. Donc, ne le faisons pas encore. Ce que nous devons faire, c'est enfin retrouver notre personnage, changer de modèle. Donc, à l'intérieur de notre personnage du haut vers le bas, nous allons accéder à la fenêtre d'affichage Nous allons zoomer sur un personnage et sélectionner notre maillage. Maintenant, nous n'allons pas entrer dans trop de détails sur l'animation et les maillages, car nous allons simplement faire en sorte que cela fonctionne pour nous Il utilisera le personnage de parangon, qui est destiné à un usage complètement différent Nous allons donc simplement faire en le personnage de Parangon corresponde à nos compétences, à nos capacités et à notre gameplay souhaités Pour notre maillage, nous allons sélectionner notre revenant. Et comme vous pouvez le voir, elle est dans une situation très étrange. C'est parce que nous utilisons l'ensemble d'argent C, que nous devons remplacer par le plan du révérend my Et comme vous pouvez le constater, cela a clairement tout changé. Maintenant, si nous compilons et appuyons sur Play, nous verrons un problème dans le caractère des recettes. Ouvrons le caractère des recettes. Il y a un code ici qui est obsolète de nos jours. La façon dont cela se produit n'existe plus dans les paramètres du projet. Nous allons donc supprimer ces événements qui posent problème. Nous allons compiler ce plan, l'enregistrer, puis appuyer sur Play Nous avons donc maintenant notre personnage de revenant dans notre jeu. Mais notre arme est constamment étendue, ce qui n'est pas très agréable. Alors, réglons ça. Je vais également baisser le son car nous allons faire de nombreux tests. Oh, allons ouvrir notre plan d'animation des personnages. Nous allons ouvrir le Revenant Skeleton Mesh Act parce que les personnages sont interconnectés Ils ont tous les talons ici, que nous pouvons utiliser pour le plan d'animation, pour le montage de la scène de niveau, ou pour la mese squelettique Nous pouvons passer à chaque catégorie. instant, je vais passer au plan, mais je ne veux pas que BP Revenant truque Je veux le plan d'animation de Revenant. Je vais le sélectionner et l'ouvrir. heure actuelle, nous sommes à l'intérieur de la locomotion, qui se trouve à l'intérieur du graphe d'animation, qui détermine sur quelle animation jouer Avant de commencer à configurer l'animation, passons à Evenra Si nous avons reçu une erreur concernant un personnage que nous n'utilisons pas, le personnage revenant, c'est parce qu'il y a tous ces acteurs ici sur animation initialisée du plan d' événement à attribuer au personnage revenant Donc, comme il s'agit d'une référence précise, d'un casting, en fait, pas d'une référence précise, je fais référence à cela, donc lorsque nous appuyons sur Play, il vérifie si cela compile ou non Et ce n'était pas le cas. Je vais donc le supprimer car nous n'aurons pas besoin de l'animation initialisée Nous n'en avons pas besoin quand la voiture BP émet du blabla, bla. Nous n'en avons pas besoin. Et ce n'est pas ce que nous faisons et nous n'appliquons pas le simple montage au début, qui est le montage interne, et je pense que nous n'avons pas besoin des notificateurs d'animation d'un Nous allons probablement créer le nôtre. Je vais aussi le supprimer. Et la façon dont nous allons animer, c'est jouer des montages Nous allons en fait créer un énorme graphe d'animation doté de nombreuses fonctionnalités. Donc, dans notre locomotion, dans notre graphique d'animation, passons à la locomotion Nous avons la locomotion au sol de base, qui se divise ensuite en un décalage anim vers les fentes du haut du corps, et elle propose des plans étranges que nous n' allons pas beaucoup utiliser Ensuite, il passe en revue tout cela et nous donne la pose de sortie. Et ce que nous allons faire, c'est passer à l'intérieur la locomotion au sol et remplacer le ralenti par le ralenti, cette animation qui met le pistolet à bout de souffle. Nous n'avons donc pas besoin de cette boucle d'inactivité lorsque le canon est étendu, nous avons besoin de la boucle d'inactivité hors combat. Et nous devons y jouer. Nous allons l'ajouter ici, et nous allons compiler, et maintenant notre idole est avec un pistolet à terre. Alors revenons en arrière, et commençons notre course à pied Maintenant, nous avons commencé notre course à pied, mais nous avons encore une fois besoin d'une course hors combat Nous allons donc faire du jogging hors combat, qui est FWD Start, et nous allons sélectionner Play, si nous cliquons dessus, celui-ci Eh bien, c'est notre point de départ. Maintenant, revenons en arrière et passons à notre arrêt de jogging, dont nous avons encore une fois besoin, le non-combat Alors combattez Jog W, et nous allons jouer. Et cette animation a cette belle animation. Il fait parfois marche arrière parce que nous n' avons pas de système complet, mais c'est bon. Enfin, allons courir, et nous pouvons voir ici un espace de mélange, qui est en fait multidirectionnel pour les doublures et tout Puisque nous n'aurons pas besoin de tout cela. Retournons en arrière. Nous allons le supprimer. Encore une fois, nous allons utiliser le jogging vers l'avant ou le chien vers l'avant , sans combat, entre les parties, qui est cette animation constante Maintenant, économisons, revenons à notre jeu. Appuyons sur Play. Nous avons également la nouvelle souris. Et vous pouvez voir en ce moment que nous avons une meilleure animation pour les aigles qui marchent et courent. J'utilise une portion de chauve-souris. Je n'en ai pas. Je pense que ce serait pour celui-ci. Je te verrai le prochain. Au revoir 97. Animation d'attaque au corps à corps et à corps: Bonjour et bienvenue dans Game Design Workshop et Real Engine Five Procedural Dungeon Action Is Creation Calls Auparavant, nous avions créé nos widgets pour notre souris. Nous avons créé le widget d'attaque souris et le widget normal de la souris, et nous les avons ajoutés dans les paramètres de notre projet à notre logiciel de curseur ou à nos curseurs logiciels Nous avons donc ajouté notre modèle aragonais à notre personnage Et nous avons changé la classe d'animation pour devenir le plan d' animation du revenant et le maillage squelettique du revenant Nous avons ensuite apporté quelques modifications au plan d'animation, en situé à graphique d'animation situé à l'intérieur de la locomotion au sol, et nous avons modifié le Jog start, jog stop et run pour passer aux animations et nous avons modifié le Jog start, jog non liées au combat Maintenant, continuons en me faisant attaquer. Mais avant cela, j'ai remarqué que lorsque nous infligons des dégâts avec la potion de rage, nous n'appliquons aucune impulsion aux objets physiques Comme nous avons permis aux objets physiques de se chevaucher lors de la collision de rage, nous devrions le faire également Donc, avant cette branche ici, nous allons mettre une séquence. Et nous allons créer une branche, et nous allons copier en fait, nous ne voulons pas que l'acteur soit remorqueur C'est un composant. Nos objets physiques, les boîtes, sont des composants. Nous allons donc passer au composant et a remorqué un composant a remorqué Et le tag sera H. Si c'est le cas, nous allons obtenir le composant et le lancer. Si c'est vrai. Il va nous falloir plus d'espace. Un peu plus haut. Pour donner notre impulsion, nous allons devoir donner un chiffre. Ce que nous allons faire, c'est diviser ce vecteur en x, y et z. Nous allons obtenir une charge aléatoire dans la plage. Et nous allons le dupliquer deux fois deux fois. En fait, entre les deux premiers, nous allons sélectionner en fonction d'un bulbe aléatoire. Cela se connectera en x et en y. Cela se connectera en mode mort. Maintenant, pour les valeurs, nous allons mettre moins 220. Et en fait, cela doit être moins 260, disons, et cela devrait être moins 220, car le maximum est plus proche de zéro. Donc, puisque nous sommes sur moins, cette valeur devrait être inférieure à celle-ci. Et faisons le positif ici, soit 220 minimum et 260 maximum. Et pour l'impulsion de hauteur, mettons 200 à 300. Et maintenant, en théorie, vérifions également le changement de vitesse Ce que cela fait, en gros, c'est comme accumuler la masse de l'objet, si cela a du sens, parce que les objets physiques ont une masse Mais c'est un peu plus compliqué que cela, mais considérons grossièrement que c'est le cas. Alors allons jouer. Retrouvez quelques boîtes de notre inventaire. Oui. Ils bougent, ils ont une impulsion. Maintenant, nous allons également utiliser ce code dans notre attaque masculine. Mais nous allons le copier-coller à ce moment-là. Maintenant, pour créer une attaque A M, nous devons d'abord effectuer quelques travaux préliminaires. Ce que nous allons faire, c'est accéder à notre dossier de plans dans notre dossier d'énumérations et créer une autre énumération, qui sera l'état du joueur Nous aurons maintenant la plupart des États, tous les États essentiellement recensés. Mais il est recommandé d'en avoir plusieurs. Nous allons appeler cet état du joueur. Nous allons l'ouvrir. Apportez-le ici, et je vais ajouter deux états. Je pense exactement. Appelons le premier état comme ça. Appelons le deuxième état. Normal, tout le troisième état A ou lorsque nous visons, appelons le cinquième, le quatrième état. Stan, parce que lorsque nous sommes touchés, nous voulons qu'un mini-stan apparaisse, et appelons le dernier état M. La façon dont nous allons l'utiliser M. La façon dont nous allons l'utiliser est principalement de ne rien faire lorsque nous sommes dans un autre État. La prochaine chose que nous allons faire est d'accéder à notre personnage et de créer une fonction pour changer d'état. Nous allons donc l' appeler Change Eight. Pour l'entrée, il aura un état de lecteur électronique. Cette date. Créons une variable de type player state. Appelons également cela le joueur huit. Pâté. État du joueur E. Et nous allons le dupliquer. Et nous allons l'appeler Player State Age. Oh, nous devons régler ces choses ici. La première chose à faire est de régler l'état de notre joueur sur l'état précédent. Et la prochaine chose que nous faisons est de définir notre joueur le désir qui se présente. Maintenant, je ne pense pas que nous allons utiliser l'état précédent, mais pourquoi ne pas l'avoir ? La prochaine chose que nous devons faire est d'ajouter l'état à notre contrôleur de haut en bas. Et comme nous allons souvent utiliser la référence à la manette, commençons à jouer. Et ici, nous sauvegardons le mode de jeu. Faisons de même pour X et Maro pour la manette du joueur. Non, nous allons avoir un joueur et un casting. Pour en faire un pur plâtre. Promouvez cette variable. Connectez-le et nous avons maintenant une référence à notre contrôleur. Passons maintenant à notre contrôleur et créons une variable. Appelons ce joueur huit. Huit joueurs. L'état du joueur B est déjà une variable. Le type sera l'état du joueur. Compilez et sauvegardez. Revenons à notre fonction et à notre état. Nous allons obtenir notre référence de manette du haut vers le bas, et passer aux joueurs de l'État. Huit, notre État. Oh, on en a fini avec ça. Et la prochaine chose que nous devrions créer est notre montage d'animation pour M Montage. Oh, nous allons définir st, qui est l'animation que nous voulons utiliser, et nous allons cliquer dessus avec le bouton droit et monter huit animations. Maintenant, qu'est-ce qu'un montage d'animation ? Nous allons peindre une seconde. Oh, considérons que nous avons notre personnage et notre personnage qui dirigent. Il s'agit d'une animation. Bref. Notre personnage est donc constamment en train de courir. Et tout à coup, nous avons envie de jouer une attaque. Et disons que nous ne voulons pas complètement changer de personnage. Nous voulons que cette partie soit la même. Ensuite, nous pouvons utiliser un autre système appelé slots. Va trop gros. Mais nous pouvons utiliser un autre système appelé machines à sous, et nous pouvons dire que nous pouvons simplement jouer une animation sur cette partie ou la mélanger avec la partie ci-dessous. Et voici où se trouvent les montages. Comme nous le disons, jouez cette animation. Appelons attaque 1, et il tend, par exemple, son bras comme ça et pour frapper. Maintenant, nous allons utiliser cette partie pour nous, mais les montages ont la capacité lancer une attaque, par exemple , par la suite, et de lancer ce coup de poing si le joueur continue d' appuyer ou non Et en gros, c'est un outil qui nous aide à créer des animations plus puissantes et non seulement plus puissantes, mais qui nous permet de contrôler des animations complexes. Par exemple, des combos d'attaques, des mouvements spéciaux, qui peuvent être déclenchés par le gameplay Quoi qu'il en soit, allons-y. Nous sommes donc en train de créer notre montage. Ouvrons notre montage. Oh, nous voulons jouer quelque part ici, par exemple, pour créer une particule ou pour jouer une autre animation. Ce que nous ferions, c'est créer quelque chose appelé Nous allons cliquer avec le bouton droit de la souris. En fait, nous devons cliquer ici sur les notifications. Il s'agit de la barre de notification. Et qu'est-ce qu'un notifiant ? En gros, il s'agit d'un marqueur que nous pouvons placer à des points spécifiques de l'animation pour déclencher certains événements. Nous allons donc placer un modificateur d'animation. Quelque part ici. Tout ça ici, une notification, et nous allons passer à une nouvelle notification, appelle-la. Eh bien, ce n'est pas une particule. C'est en fait un plan d'attaque moi que nous allons créer, mais appelons-le une particule Maintenant, si j'avais une autre animation ici, je pourrais l'apporter. Je peux apporter une autre animation. C'était un mauvais exemple. Ce que nous allons faire ici. Et ce que nous allons faire ici , c'est créer un notificateur, qui est en fait une marque, un point sur lequel nous pouvons déclencher des événements pour lesquels nous voulons que quelque chose se produise. Il peut s'agir de sons. Il pourrait s'agir d'une autre animation. Par exemple, si j' apporte une animation. Il s'agit maintenant de la même animation. Mais si j'apporte à Even la même animation, et que j'ai envie de le faire à nouveau. J'aurais besoin de quelque chose au notificateur pour expliquer quand nous allons dans quelle animation. Ce que nous allons faire, c'est que quelque part par ici, nous allons créer un nouveau notificateur. Appelons-le tôt. Ta. Et maintenant que nous avons ce notificateur ici, lorsque cette animation est placée ici, elle le déclenche. Il existe un moyen de le trouver ici. Oui, pas ici. Il s'agit du graphique d'animation. Désolé, le graphique des événements doit figurer sur le graphique des événements de la partie programmation, et non de la partie animation. Quoi qu'il en soit, c'est un événement. C'est une question de programmation, donc mon événement me notifie une attaque. Et cela se déclencherait à ce moment-là. Mais comme nous n' avons qu'un seul notificateur, il existe une autre façon de l'appeler. Et juste pour le démontrer pour le moment, nous allons le relier dans la prochaine leçon. Passons à Pen gra dans notre personnage de joueur. Créons un clavier spatial. Nous allons utiliser l'espace du clavier. Nous lançons l'attaque M. Donc, si nous jouons , cette notification commence puis se termine, et que nous recevons notre nom notifié afin que nous puissions passer d'ici. Il existe de nombreuses façons de créer des animations. Nous en choisirons des spécifiques juste pour que notre personnage fonctionne. Maintenant, je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons continuer à développer notre montage spatial et ludique, ainsi que toute la logique de notre attaque, et créer également un plan qui sera notre attaque dans la prochaine leçon Au revoir. À bientôt, 98. Collisions et effets du plan d'attaque au mêlée: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop et Dungeon Real Engine Five Procedural Auparavant, nous avions créé une date personnalisée pour notre joueur en utilisant la numération et en enregistrant nos états Et nous avons procédé à la création d'un état de changement dans la fonction de notre personnage. C'est ce qu'on appelle l'état de changement, et nous stockons l'état précédent dans une variable. Nous définissons le nouvel état, le nouvel état du joueur sur l'état, et nous transmettons également ces informations à notre manette descendante dans laquelle nous avons créé l' état du joueur, une autre variable. Nous avons également créé l'état précédent et l'état du joueur dans la variable personnage du joueur. Maintenant, nous avons procédé à la création de notre montage d'animation, et nous avons créé un modificateur d'animation. Cela indiquera à notre attaque automatique quand une de nos particules, ce que nous avons dit, ce ne serait pas une particule. Ce sera un plan qui aura une certaine logique. Maintenant, clôturons ce montage. Allons créer notre acteur moi. Nous allons aller dans le dossier Abilities, cliquer avec le bouton droit de la souris et créer une nouvelle classe de blueprint Nous allons devenir acteurs, et appelons-le BP. Nous n'allons pas le programmer pour le moment. Nous allons aller directement chez notre collectionneur. Nous allons assister à notre événement spatial, l'événement Bace Ball, et nous allons changer en fonction de notre état Nous allons le connecter sous presse. C'est à ce moment-là que nous allons pouvoir lancer une attaque olfactive. Et le seul endroit où nous voulons pouvoir le faire, c'est quand nous sommes normaux. Non, alors la prochaine chose que nous allons faire normalement est de changer d'état. Nous allons apporter notre fonction de changement d'état. Je vais me le régler. Cela change donc notre état de moi. Maintenant, si je continue d'appuyer sur la barre d'espace, elle ne se redéclenchera pas. Maintenant, la prochaine chose que nous devons faire est de payer un son. Nous allons jouer le son en deux D, et nous allons choisir comme son le fort effort swing. Efforçant. Nous allons utiliser cet effort pour chanter. Si nous allons l'utiliser, c' est parce qu'il a plusieurs ailes différentes. Qu'est-ce que ce dialogue de dialogue également ? Ah. Oui, le son sera différent à chaque fois que nous attaquerons. Passons maintenant à notre lecteur, et après notre son, nous devrions jouer notre montage. Et pour jouer à Armonta, nous avons besoin d'un composant Skeleton Mesh. Cela est nécessaire. Parce que qui joue ce montage ? C'est important. Mais nous allons nous connecter ici. Et pour le marmontage, nous allons choisir notre dernier montage. Maintenant, avant de dire que nous pouvons utiliser le début notifié ou n'importe quel autre, il se déclenchera chaque fois qu' un notificateur sera utilisé. Et comme nous en avons un, nous pouvons simplement l'utiliser sans nom de notificateur et dire, classe acto, et ce serait notre BP Melly Ou la transformation, nous allons nous séparer et nous avons besoin d'un emplacement. Nous allons récupérer notre maillage. Obtenez la localisation. Emplacement du football, qu'est-ce que cela signifie ? Je pense que nous utilisons ce maillage squelettique parce que c'est là que nous pouvons obtenir un emplacement de football. Si nous passons à notre squelette, revenons à notre personnage et passons à notre squelette Nous pouvons voir qu'il y a un tas de choses supplémentaires comme Qu' est-ce qu'un slot en gros ? Je veux dire un socket, pas un slot. Alors, qu'est-ce qu'un socket ? Nous pouvons aller ici, et nous museler deux yeux Vous pouvez voir qu'il y a également une prise ici, laquelle nous pouvons attacher quelque chose, comme une fente dans laquelle nous pouvons placer des objets. Et il n'est pas nécessaire que ce soit exactement sur la balance. Comme vous pouvez le voir, cette prise est très loin, ce qui pourrait nous convenir. Mais je pense que ce n'est pas le bon bras avec le et r pour trouver le support et le R sur notre montage. Oui, c'est l'autre r, le bras droit, pas le bras gauche. Nous avons donc besoin d'un R R, d'une arme, d'un R, d'un R, d'un R où nous sommes à droite, et d'un R Buzel. et d'un R Buzel Utilisons cette muselière. Le nom du socket est ici. Muscle marque un. Revenons à notre personnage et utilisons le nom du socket. Ce que je n'ai pas fait correctement. Parfois, le contrôle C ne veut tout simplement fonctionner. Muselière 1 Cela donnera la position du mot dans laquelle se trouve notre socket à cet état. La prochaine chose que nous allons faire est d'attacher notre meacor à notre hd Notre attaque personnelle suit donc un petit moment . Nous allons faire une touche d'aduch À l'acteur. Parce que nous créons un acteur et que nous voulons l'associer à notre acteur. Et nous allons tenir parole. Cela signifie que lorsque nous tournons notre attaque contre moi tourne également, et le rôle de l'acteur serait le même. Peut-être pouvons-nous abuser un peu de notre attaque, de notre attaque mai, et simplement faire demi-tour lorsque nous attaquons et touchons de nombreux ennemis. Oh. Maintenant, il ne nous reste plus qu'à me rafraîchir pour savoir à quelle fréquence nous pouvons le faire. Oh, changeons d'état ici après 1 seconde. Je voudrais donc ajouter un délai. 1 seconde. Et passons à l'état normal. Cela poserait problème si nous permettions que quelque chose d'autre se produise pendant une attaque par courrier, car disons, par exemple, que je suis dans l'état AM et que j' appuie sur l'attaque par courrier, puis que je reviens instantanément à l'état AM. Après 1 seconde, mon état AM redeviendra normal. Mais nous verrons comment cela se passe et nous apporterons les modifications appropriées. Découvrons notre plan d' attaque principal et nos capacités. Ajoutons une sphère de collision. Par collision. Faisons en sorte que ce soit 100 et un rayon. Nous devons également faire avancer les choses un peu. Euh, peut-être que ça irait. Maintenant, pourquoi nous le faisons avancer parce que le centre du plan est l'endroit où il apparaîtrait Nous avons donc besoin que cela ne soit pas ici parce que cela empiéterait sur notre caractère. Nous n'aimons pas le chevauchement avec un personnage. Donc, quelque part ici serait charmant. Maintenant, la prochaine chose dont nous avons besoin, c'est d'une particule en cascade. Pour le système de particules, nous allons utiliser le Revenant Primary. Beaucoup de primaires de revenants. Nous voulons le personnage principal de Revenant. Hein ? Allons-y un peu plus loin, pas sur la totalité. Je vais parler de ce x sur un, et sur deux. Oh, ce sera un article. Point. Plus grand. Nous allons voir à quoi il ressemble sur la carte. Maintenant, la prochaine chose que nous allons ajouter est une lumière ponctuelle. Faites-le produire un peu plus de lumière. Libérez la zone lorsque nous sommes simplement en train d'attaquer. Eh bien, en gros, j'ai un peu éclairé le sol. Nous allons obtenir une lumière ponctuelle, nous allons lui donner un rayon de deux. Et nous allons le placer un peu plus bas. Ici. Cela illumine notre région et un peu plus loin. Pas trop parce que vous ne voulez pas voir notre personnage, quelque chose qui commence ici et qui commence également ici. Vous voulez voir comme si cela partait d'un bassin. Nous devons également changer la couleur quelque chose de rougeâtre, très bien. Et passons à la programmation, cela pourrait attaquer. Maintenant, nous utilisons généralement destroy actor chaque fois que nous voulons quelque chose. Mais c'est aussi une autre méthode. Nous passons à la classe par défaut. C'est pour la vie. Nous pouvons voir que nous avons cette variable ici, durée de vie de cet acteur. Ero, c'est pour toujours. Mais si nous mettons 0,3, par exemple, cela mourra en 0,3 seconde. Cet acteur, nous n'avons pas besoin de le détruire. Nous n'avons pas besoin d' appeler Destroy Ever. Ce que nous devons faire, c'est rentrer dans notre sphère. Quelle collision, sélectionnez Personnaliser. Je vais tout ignorer sauf le pon et l'objet physique. En fait, il ne faut pas l'ignorer pour ce qui est de la dynamique, c'est aussi notre porte infernale. Sur la capsule. C' est notre collision. Une dynamique. Oh. Maintenant, notre sphère doit faire quelque chose lorsqu'elle commence à se chevaucher. Lorsque nous faisons apparaître des acteurs, même si l'autre acteur apparaît à l' intérieur de la sphère, cela déclenche l'événement de début de superposition. Oh. Nous devons demander à un autre acteur tag, et si l'autre composant fait une séquence. Faites-le séparément. L'un est pour l'ennemi. L'autre concerne le P H physique Deux branches. Nous ne pouvons pas encore vraiment nous sentir dans le rôle de l'ennemi, car notre mâle n' infligerait aucun dommage au plus gros coup qui nous est infligé. Mais nous pouvons faire de la physique. Nous allons le faire pour la physique c'est pour notre personnage. Je passe au revêtement. Ici. Il suffit d'ajouter des impulsions, des flottants aléatoires Nous allons y retourner pour moi, rythmer les choses ici. C'est vrai. Un objet valide. Vérifiez également ceci. Juste au cas où il serait détruit ou quelque chose comme ça. Nous allons nous connecter ici. Et ce serait le cas. En fait, nous devons également connecter la cible, qui achetons-nous nos impulsions d'achat ? Et ce serait notre autre composante. Allons tester car je pense que nous aurons un problème avec la rotation de notre odeur. C'est moi. Rien ne se passe parce que nous avons activé la saisie dans notre personnage. À la fin du jeu de mendicité, trouvons référence de notre manette de joueur, et disons que peut-être je connecte la référence de la manette à la manette du joueur, cible serait soi Comparons. C, il ne se passe rien. Voyons pourquoi ? Je pense que je sais pourquoi. Comme l'état par défaut est mort, réglons-le sur normal car c'est notre premier état. Créez la variable mais n'avez pas créé d'état de joueur. Allons tester à nouveau. J'ai du son. Je n' ai pas de montage. Ou sortons. J'y repense, j'en connais la raison. Passons au montage de notre casting et, comme je l'ai déjà dit, nous devons utiliser un slot. heure actuelle, c'est sur l'ensemble de la machine à sous et on dit qu' il faut le faire à tout le corps. Allez voir notre graphique d'animation. Nous verrons que cela ne suffira pas, car le corps entier n'a pas fondamentalement d'intrigue. Mais nous devons faire la fente du haut du corps. Nous allons faire du montage et comploter Tam. Partie supérieure du corps. Cela peut se figer, mais nous compilons et sauvegardons. Il va geler. Ne l'a pas fait. Fais. Si j'arrête de jouer. Oh. Bref, passons à notre gameplay. Je pense que cette fois , cela fonctionnera. Ouais. Je peux voir expliquer correctement l' animation. Même si l'aperçu se fige, cela ne veut rien dire Il y a des problèmes à changer les choses. Mais nous ne produisons pas la particule. Est-ce parce que cela ne déclenche pas ? Il y a une chance. Passons au point de rupture, ou peut-être à la localisation du mot Mcle One ? Oh, déclencheur. Faites un peu d'introspection et découvrez quel est le problème. Lorsque j'ai créé une notification et que j'en ai ajouté une nouvelle, il s' agit d'un notificateur squelette, différent du montage du plan. Notre nœud ici. Dans l'infobulle, cela ne fonctionne qu'avec Lay Montage Notify et non avec les modèles squelettiques. Nous allons changer, supprimer cette attaque M, et nous allons l'utiliser. Modifier le montage. Nous allons appeler M attack. Maintenant ça marcherait. Oui, nous pouvons voir comment nous avons rédigé notre article. Mais comme je l'ai dit, nous avons un problème avec la rotation. Non, pour résoudre ce problème, nous allons passer à notre PPM. Nous allons passer à notre première pièce et à la rotation des acteurs. Pour la nouvelle rotation. Nous allons voir pourquoi une rotation. Et le point de départ serait Player Po. Nous allons également faire un « Je vais obtenir le vecteur avant ». Il s'agit d'un vecteur qui nous indique où nous regardons, en gros. départ serait donc l'emplacement du point, et n serait l'emplacement où nous nous trouvons plus le vecteur avant pour lui donner une direction. Une autre rotation doit être fixée. Oui, ça parle. Je n'aime pas l' endroit où il se reproduit. Mais je l'aime bien dans certains cas. Passons tout d'abord à notre taux de jeu. OK, je l'ai déjà changé. Nous devrions en changer deux, peut-être deux pour nous rafraîchir. Huit. Laissons le taux ennemi à un moment donné. Cinq et un. Choisissons l'emplacement du museau à deux endroits. Je pense que c'était un peu plus avant-gardiste. Même s'il est dans la mauvaise main au moment où nous diffusons l'animation. Oh, non, non. Muszzle One l'était Mais faisons-le mouiller un peu plus tard pour nos mains. Peut-être. Dave. C'est mieux comme ça. La vie est un peu trop intense. Ce serait un peu plus bas. Mettons-nous en place. Hein ? Allons. Ouais. Ça a l'air bien. S'il déplace les boîtes, il devrait pouvoir déplacer les boîtes. Encore des boîtes dans cette pièce. Chambres. C'est la boîte. Il y en a, non ? Parfait. Nous déplaçons des boîtes. Génial. Je pense que c' est tout pour celui-ci. Je te verrai le prochain. Au revoir. 99. Visée statique et mécanique de tir: Bonjour et bienvenue sur Gain Design Workshop, un véritable Engine Five, véritable Engine Five, création de RPG d'action et de donjon procédural Auparavant, nous en avions terminé avec notre attaque contre moi. Nous avons créé un montage d'animation que nous avons utilisé un notificateur de montage pour avertir lorsque nous voulons reporter notre attaque. Nous l' avons également utilisé dans le plan du personnage et dans l' événement de la barre d'espace pour faire la distinction entre les états des joueurs, afin de ne pouvoir attaquer que lorsque nous sommes normaux Nous changeons d'état immédiatement après. Nous avons joué un son, nous avons joué le montage et, au début, nous avons notifié le montage. Nous avons créé notre VP May Attack, et nous l'avons attachée à l'acteur. Ensuite, nous avons attendu 0,8 seconde et avons rétabli l'état. Dans notre plan My attack, nous avons commencé par régler la rotation de l' acteur vers l' endroit où regarde la patte Ensuite, nous avons créé l' événement de chevauchement du composant avec une sphère basé sur notre collision de sphères qui vérifie si l'acteur possède un objet physique ou s'il s'agit d'un ennemi. Comme nous l'avons dit, l'ennemi sera rempli plus tard, et c'est tout. Et notre acteur d'attaque est composé d' une lumière, d'une particule et d'une sphère de collision. Maintenant, continuons à créer notre mécanisme de tir. Mais pour cela, nous devons d'abord faire du moi un mécanisme de visée. Mais pour cela, nous devons créer un mécanisme de visée. Ainsi, lorsque notre personnage étudie encore, il passe son quart de travail, par exemple, nous pouvons dire que le personnage vise, sorte que le collectionneur peut tirer. Mettons maintenant un commentaire ici. Appelons cela M et créons notre panique. Comme je l'ai dit, nous allons utiliser le bouton Shift, donc nous allons utiliser le bouton Shift gauche sur les claviers Et nous allons créer un lingot qui nous permettra de savoir si Shift est en baisse ou non Nous allons être amis et amis. Maintenant, la prochaine chose que nous allons faire est d'activer l'état du joueur. Oh, lequel ? Sur les deux. Quand allons-nous pouvoir viser ? Eh bien, en gros, lorsque nous sommes normaux, ou que nous visons déjà parce que l' animation n'est pas terminée, nous devrions pouvoir viser à nouveau. Mais ce que nous allons faire, faire bouger notre personnage et changer une chose. Dans le mouvement de notre personnage, il y a une rotation orientée Ici, il s'agit d'orienter la rotation vers le mouvement, ce qui signifie que le personnage s' oriente vers notre mouvement Lorsque nous visons, nous ne voulons pas que cela se produise. Nous voulons qu'il vise là où vise notre souris. Nous devons donc l'éteindre. Nous allons passer aux mouvements, puis changer d'état. Maintenant, je ne vais pas me sentir mal parce que nous avons abord besoin du montage pour jouer, puis le déclencher, l'activer, alors qu'ici, nous devons le désactiver puis jouer le montage Nous allons régler l'état sur a. Pour viser, nous allons utiliser la pose que nous avions au début, est-à-dire étendre le canon. Nous allons créer un montage à partir de cela. Montage d'un patient BE Montage. Nous n'en avons pas vraiment besoin, nous en avons besoin. Nous devons définir l'emplacement, l'emplacement par défaut étant le haut du corps, le nom, le haut du corps. Maintenant, si nous voulons réinitialiser cela, nous pouvons simplement vérifier que vous avez travaillé. Il recule parfois. Et maintenant, si je vais ailleurs et que j'y reviens, cela fonctionne, et notre montage avec les acteurs fonctionne également. Comme vous pouvez le voir, ce dont nous avons besoin à partir d'ici, c'est en fait cette partie qui va du bas vers A. Oh. Retournons en arrière. Passons à la page. Maintenant, il y a aussi un joueur dans Montage, qui est un nœud de tri avec moins d'options Mais nous l'utilisons parce qu'il offre beaucoup plus d'options au final. Nous allons maintenant utiliser le maillage squelettique. Pour le montage, nous allons sélectionner celui qui est inactif. Maintenant, pour abaisser le but, tu vas tricher un peu Utilise ce montage. C'est normal, et notre tarif serait de moins un. Cela l'obligera donc à jouer en sens inverse. Ensuite, nous allons changer d'état après avoir abaissé notre arme. Lorsque nous baissons l'arme, nous la réglons à la normale. Ensuite, nous devrions réorienter nos mouvements parce que nous sommes dans un état normal Maintenant, plus tard, lorsque nous réglons la souris pour qu'elle devienne rouge, lorsque nous visons un ennemi. Nous le réglerons également pour qu'il devienne rouge à la fois lorsqu' on vise et qu'il passe à la normale lorsque l'on ne vise pas. Ainsi, lorsque nous visons, notre souris sera constamment rouge, ce qui indique que nous le pouvons et que nous sommes prêts à tirer. Allons tester ça. Appuyons sur Play. J'appuie sur Shift, nous pouvons voir notre arme. Mais pour le moment, nous ne visons pas. Il a donc commencé à bouger et à viser simplement le pistolet. Mais comme vous pouvez le voir, si on ferme le son, c'est qu'il est trop fort. Comme vous pouvez le constater, notre objectif rotation a fonctionné comme si nous n'étions pas en train de tourner vers le mouvement en ce moment. Mais si je le désactive, nous revenons à notre mouvement. Maintenant, nous mitraillons gentiment, ce qui n'est pas mal, mais ce n' est pas ce que nous voulons Quoi qu'il en soit, pour résoudre ce problème, nous devons accéder à la manette du joueur et corriger nos mouvements. Mais nous n'allons pas le faire maintenant. Nous allons continuer avec notre mécanisme de tir. Oh, allons-y. Va voir ton personnage. Mettons-le ici. Hé ! Utilisons le bouton principal gauche pour créer notre événement d'attaque. La première chose que nous allons faire est de changer d'état. Set. Lorsque nous voulons attaquer, nous visons. Oh, nous allons poser une question. C'est une succursale. Sommes-nous déjà en train d'attaquer ? Je vais promouvoir cette variable et l'appeler attaque. Parce que si nous attaquons déjà, nous ne devrions pas attaquer à nouveau, cela devrait être un temps de recharge, sinon notre arme s' empotera comme une mitrailleuse aussi vite que nous pourrons cliquer Oh, si nous n'attaquons pas, alors nous allons faire de l'attaque une réalité. La prochaine chose que nous allons me demander, c'est de jouer notre montage. Cette fois, nous avons déjà un montage, il s'appelle Primarifier made montage et quelques notifications que nous n'utiliserons pas, mais c'est bon Et apportons notre filet. Ici. Maintenant, la prochaine chose que nous allons faire est de réussir. Et avant cela, créons simplement une fonction appelée spa. Puce. C'est ce que nous utilisons. Mais nous n'allons pas l'utiliser maintenant. Ce que nous allons faire, c'est terminer notre mécanique. Oh. Lorsque nous jouerons au montage, nous passerons au spa. Puce. Oh, la prochaine chose à faire est de réinitialiser qui attaque un bar. Nous avons besoin de nous rafraîchir. Mettons donc un délai ou disons un point. Et nous devons nous remettre à zéro. Je vais créer un événement habituel. Et cette réinitialisation. Mets-le ici. Cela doit changer en fonction de l'état du joueur, car par exemple, nous voulons faire autre chose lorsque nous visons et une autre lorsque nous attaquons normalement. Par exemple, lorsque nous survolons un ennemi et que nous appuyons sur un clic, fin est différente de celle obtenue si nous appuyons sur Shift et que nous commencions à tirer Maintenant, changeons . Bien sûr, dans les deux états, il n'est pas nécessaire d'attaquer. Mais lorsque nous attaquons normalement, réglons également ce paramètre stat, car si nous sommes étourdis pendant une attaque, nous devrions être en mesure de réinitialiser notre attaque. Maintenant, lorsque nous attaquons normalement ou lorsque nous commençons, nous voulons baisser notre arme au cas où nous n'attaquerions pas à nouveau, exemple si je survole un ennemi et que je tire, puis que je lance le pointeur, vous pouvez garder la main levée en position de tir, elle doit baisser Et pour ce faire, nous allons encore une fois tricher un peu et opter pour un Lower Gun personnalisé Et nous allons le relier à cette chaîne d' événements parce que c'est ce que nous voulons voir se produire. Si c'est vrai, cela n'a pas vraiment d'importance. C'est déjà le cas Nous allons le laisser refaire. Oh. Nous allons appeler Lower Lower Gun. Dans les deux cas, c'est normal. Et ce serait une partie de notre attaque au bouton gauche. Mais continuons avec la puce, qui est la partie suivante. Lors de notre prochaine leçon. Au revoir 100. Plan de balle de joueur et visuels: Bonjour, et bienvenue dans le cours de création de cinq jeux de rôle procéduraux dans les donjons par Game Design Workshop et Real Engine création de cinq jeux de rôle procéduraux dans les donjons Auparavant, nous avions commencé par notre mécanique de tir. Nous avons donc créé l' événement AM avec left shift. Nous fixons l'objectif vers le bas ou AM n'est pas vers le bas lorsque nous appuyons et relâchons. Nous changeons en fonction de l'état E. Nous désactivons l'orientation par rapport au mouvement, nous passons à l'état AM et nous jouons un montage qui met notre arme sur le côté, par exemple. Maintenant, lorsque nous relâchons, nous jouons d'abord le montage pour baisser le pistolet, puis nous rechangeons les états. Donc, avant que le set ne prenne le dessus, nous savons que nous avons au moins commencé à baisser notre arme. Pour être honnête, cet ensemble d'orientation de rotation du mouvement est un peu décoratif ici, juste pour montrer ce que cela signifie lorsque nous sommes orientés en fonction du mouvement, le personnage peut réellement faire demi-tour, lorsque nous ne le sommes pas, le personnage reste stable et cela ressemble plus à du mitraillage Laisse-moi baisser un peu le son. C'est ce qui fait la différence avec cette variable. Il s'agit essentiellement de mitraillage. L'autre est de suivre l'orientation au mouvement, suivre la rotation au mouvement. Eh bien, pour nous, ce que nous allons faire, c'est que nous allons constamment tourner l'endroit où se trouve notre souris. Ce n'est donc pas vraiment nécessaire. Mais s'il reste ici, cela n'affectera pas notre code. Maintenant, nous voulons utiliser le bouton gauche de la souris. Pour créer à nouveau une chaîne d' événements basée sur l'état de nos joueurs. Ensuite, nous avons ensuite posé la question de savoir si nous attaquons, et si nous attaquons déjà, exemple si nous tirons, nous n'allons rien faire. Mais si nous ne tirons pas, nous allons tirer. Nous avons donc dit attaquer pour vrai, nous avons joué le montage de tournage que nous avions créé. En fait, nous n'avons pas créé que cela existait , qu'il tournait. Ensuite, nous passons à notre fonction spawn bullet que nous avons laissée non remplie Ensuite, après un délai de 0,65, nous réinitialisons l'attaque afin de pouvoir tirer à nouveau. Mais lorsque nous visons, nous ne baissons pas le canon, ce qui est un événement. Nous avons créé et en quelque sorte piraté notre façon de créer un nouveau code et nous l'avons utilisé lors de la sortie du Shift, qui est notre point faible. Maintenant, continuons à remplir cette fonction, et pour ce faire, nous devons créer un nouveau plan, nous allons passer aux plans Nous allons passer aux capacités. Nous allons cliquer avec le bouton droit de la souris et créer une nouvelle classe de plan Ce n'est pas vraiment une capacité, mais Hel Gate Bullet n'en était pas une non plus. Nous allons donc appeler cela une balle en polypropylène. Je vais l'ouvrir. La première chose dont nous aurons besoin, c'est d'une particule. Nous allons donc ajouter un composant de particules en cascade, et ce sera modèle et Mark, il y aura beaucoup de marques. Marquez l'huile. Il y en a deux. L'un est glacé, nous voulons le normal. Nous, nous avons une belle balle ici. C'est un effet pour notre balle. Maintenant, la prochaine chose dont nous avons besoin, c'est d'un tube de collision. Une sphère de collision n' est en fait pas un cube. Laissons son rayon à 32, donnons beaucoup pour pouvoir chauffer la zone, peu importe si nous chauffons directement. Soyons gentils avec nos joueurs. La prochaine chose dont nous avons besoin, nous l'avons configurée dans notre BP ML, c'est ce point de vie ici où nous voulons éclairer le sol pendant nous voulons éclairer le sol que la balle se déplace. Revenons à notre puce et collons cette lumière. Peut-être que c'est un peu grand que son rayon d'atonation est de 200 Rapprochons-nous de la balle, et je pense que c'est bon. Enfin, nous avons besoin d'une composante de mouvement des projectiles. Maintenant, ce composant est tout comme le composant de mouvement, tout comme le composant de rotation, un composant avec de nombreuses options. Et la seule chose que nous devons changer , c'est en fait deux choses. C'est la rotation qui suit la vélocité, mais nous voulons que l'acteur soit toujours orienté vers sa vitesse. Nous voulons également ramener l' échelle de gravité des projectiles à zéro Peut-être 0,1, nos balles ont une pente descendante, peut-être 0,1 Mais si c'est trop et que nous constatons que nos balles s'enfoncent très vite dans le sol, nous devrions le ramener à zéro Maintenant, cette composante du mouvement du projectile possède un vecteur appelé vitesse, ce qui signifie vers quelle direction et à quelle vitesse je vais ? C'est quelque chose que nous allons calculer plus tard. Mais ce que nous allons faire, c'est consulter notre graphique des événements pour commencer à jouer, obtenir le mouvement de notre projectile et sa vélocité Je vais utiliser cette épingle et créer une nouvelle variable, appelée vélocité et vélocité. Ce que ça devrait être. Nous allons donc en faire un vecteur. Nous allons le diviser de manière à ce que nous utilisions uniquement x et. Nous allons créer cette variable, modifier l' encens et l'exposer sur sp R Cela s'explique par le fait que nous utilisons une caméra isométrique et inclinée. Cela signifie qu'il ne suffit pas d'obtenir la bonne rotation et de regarder pour trouver notre vélocité, la bonne rotation et de regarder pour trouver notre vélocité, où doit se trouver notre bullet co . Donc, pour le moment, nous utiliserons ici le x et le y. Mais je pense que ces quelques informations seront utiles pour plus tard. Quoi qu'il en soit, la prochaine chose que nous devons faire est de vérifier notre collision. Alors, avons-nous touché un ennemi ? Nous allons sélectionner la sphère. Nous allons commencer les événements qui se chevauchent. Et nous allons d' abord vérifier si l'autre acteur est valide. Parce que si nous tirons sur un ennemi en train de mourir, par exemple, il va être détruit, nous ne devons rien faire. Maintenant, la prochaine chose que nous devrions demander est est-ce que l'autre composant est équipé d'un remorqueur ? Le tag serait un ennemi, et nous créons une branche. Et s'il s'agit d'un ennemi, nous devrions réellement infliger des dégâts. Appliquons un dommage d'un. N'oubliez pas de connecter l'acteur des dégâts. Ensuite, ce que nous allons faire, c'est agir. Cette erreur. Un T, probablement. Et nous utiliserons à nouveau la marque end, comme nous l'avons fait lors de l'explosion. Mais cette fois, nous allons le rendre beaucoup plus petit, 444. Et le lieu serait celui de notre acteur. Maintenant, si nous n'avons pas touché d'ennemi, nous allons juste faire apparaître Dmter Nous n'allons pas infliger de dégâts, à moins d'avoir un terrain destructible et de passer ensuite à Deactor. Donc, on touche un ennemi, on lui inflige des dégâts, on fait apparaître une particule Nous ne touchons pas un ennemi, nous faisons simplement apparaître une particule et détruisons l'acteur. Il y aurait donc un problème avec cette configuration : lorsque nous lançons une balle, si elle ne touche rien, elle continuera pour toujours Pas vraiment, mais oui. Ce que nous allons faire, c'est revenir aux valeurs par défaut de notre classe et à notre durée de vie, et fixons-la à 5 secondes, je ne sais pas Je pense que c'est suffisant. Maintenant, juste pour tester nos balles Quand nous aurons terminé, je pense que ce sera pour celui-ci. Je te verrai le prochain. Au revoir 101. Prise de vue au joueur et effets visuels: Bonjour et bienvenue dans le cours de création de Game Design Workshop Rail Engine Game Design Workshop Rail Engine Five Procedural Dungeon at Auparavant, nous avions créé notre plan à puces. Oh, nous avons utilisé une particule pour montrer l'effet traînée et l'effet balle. Et nous avons utilisé la sphère pour détecter les collisions en cas collision avec l' environnement ou avec un ennemi Et nous utilisons le feu ponctuel pour faire apparaître une petite lumière rouge non blanche sur le sol pendant que la balle se déplace. Nous utilisons le mouvement du projectile pour définir notre échelle de gravité, et il sera chargé de contrôler notre mouvement, vitesse de nos balles, le mouvement de nos balles À partir de ses réglages, nous avons désactivé l'échelle de gravité et défini la rotation qui suit la vitesse. Notre acteur regarde toujours vers la vélocité. Maintenant, au début du jeu, ce n'est pas nous qui avons enregistré. Nous réglons la vitesse de déplacement du projectile une variable que nous avons créée, et nous utilisons x et y à partir de celle-ci Nous avons fait en sorte que l'encens soit modifiable et exposé lors de son apparition. Lorsque nous lançons la balle, nous lui donnons de la vélocité Ensuite, nous avons effectué l'événement de chevauchement lequel nous demandions si acteur avec lequel nous sommes entrés en collision était valide, ce que nous vérifiions, en gros, si l'acteur avec lequel nous sommes entrés en collision le point d'être détruit ? Donc, s'il est sur le point d'être détruit, n'y faites rien. Ensuite, nous avons vérifié auprès d'une branche si elle portait le tag E, ce qui signifie que c'est un ennemi. Nous infligeons donc des dégâts. S'il ne s'agit pas d'un ennemi, nous faisons simplement apparaître une particule ce que nous faisons également lorsque nous infligeons des dégâts, puis nous détruisons l'acteur Enfin, nous modifions la durée de vie pour qu'elle soit, je crois , 5 secondes, 5 secondes, afin que nos balles ne partent pas indéfiniment lorsque nous les tirons Maintenant, allons terminer notre événement Spa Bullet. En fait, la fonction Spa-Bullet. La première chose à faire est créer une fausse muselière Et la raison en est que si nous nous intéressons à notre maillage squelettique, la recherche d'une muselière Nous pouvons voir qu'ils sont placés dans des positions très étranges. C'est parce qu'ils ont des capacités spécifiques, un timing précis, une manière très spécifique d'être utilisés. Nous n'allons donc pas l'utiliser. Nous allons tricher un peu et créer un muscle dans une certaine position que notre arme atteindra Et comment allons-nous nous y prendre ? Nous allons ajouter une composante sinusoïdale à notre plan et utiliser son emplacement, appelons ce muscle en fait Chaque endroit pour générer nos effets pour notre tournage. Passons donc à notre fenêtre d'affichage et à l'emplacement. En fait, j'ai un endroit en tête que j'ai testé et qui semble correct. Ça va être 128 sur x, ça va être -28 sur y, et ça va être ou en fait e huit sur Z. Donc c' est là que notre arme atteint et c'est sur la pointe du pistolet , que c' est à peu près là que devrait se trouver notre muscle Revenons donc à notre liste de spams et en utilisant cette variable musculaire, nous allons obtenir l'emplacement, l'emplacement des mots. Et nous allons parcourir un mètre à cet endroit. Connectons ces deux emplacements. Pour l'électromètre, nous allons utiliser Last Shot Muszzle Flush. Il y en a plein. Mais je pense qu'il n'y en a qu' un qui porte ce nom. Les autres sont locaux, c' est-à-dire les coordonnées locales et le glaçage. Donc oui. Rinçage du museau lors de la dernière injection. Maintenant, si nous jouons simplement avec ça, nous verrons instantanément un problème avec le ze flush Encore une fois, c'est la rotation qui devrait entraîner la rotation de nos personnages, car pour le moment c'est le contraire. Et c'est aussi un peu gros. Je voulais également tester la taille. Alors revenons en arrière. Réglons son échelle à 0,3. Et la rotation. Nous allons procéder à la rotation de nos capsules parce que c'est ce que nous cherchons. Mais maintenant, cela devrait bien fonctionner. Nous déménageons après le tournage. Mais c'est parce que nous n'avons pas supprimé les restrictions de mouvement et que, en gros, les commandes du joueur se trouvent dans la manette. Parce que toutes nos commandes sont essentiellement la souris. La souris a donc besoin d'un peu de code pour décider de ce qu'elle fait. Maintenant, arrêtons le jeu, revenons en arrière. Et la prochaine chose que nous allons faire , c'est réapparaître d'un mètre Mais cette fois, en pièce jointe. Et cette fois, nous allons utiliser le muscle pour. Un endroit qu'il suit parce que ces points, sont des points de contact, qui sont les noms des douilles du squelette que nous avons vu suivent le mouvement du squelette là où ils se trouvent. Mais nous allons le refaire à l' emplacement de la muselière Et nous allons garder la position du mot. Oui, il suffit de garder la position des mots. La rotation n'a pas vraiment d'importance. Et pour l'article, nous allons sélectionner le dernier point Lush. Et je vais le modifier un peu parce que nous ne voulons pas le vrai Trouvons-le d'abord, local, enfin. Je pense que c'est ça. Je veux qu'il soit verrouillé. Y en a-t-il un qui est débloqué ? Oui, il y en a. Un muscle tiré et bloqué. C'est ce dont nous avons besoin. Passons à cette particule. Ce que nous allons changer, c'est un tout petit détail. Nous allons passer au médicament, et nous allons changer la valeur de deux à 0,5, disons. C'est un peu plus vrai, pas tellement résistant à l'air. Nous allons fermer cette particule. Retournons en arrière. C' est peut-être un peu gros. Allons y jeter un œil. Nous devrions peut-être nous y attarder un peu. Ne mange même pas. Déboguons ça. Eh bien, revenons à notre plan Regarde ce qui se passe. OK, je ne l' ai pas attaché au composant. Nous définissons l'os à verrouiller, l'os à attacher, mais nous ne définissons pas le maillage. Nous allons donc utiliser ce maillage. Enregistrer sur Comp. Alors revenons en arrière et testons. Je pense que la taille serait grande. Shift. Ick. Nous avons de la fumée. C'est bon. C'est vrai. Il fonctionne correctement dans toutes les directions. C'est une autre façon de faire en sorte que quelque chose suive votre rotation. Vous l'attachez à votre personnage. Maintenant, continuons à faire apparaître notre balle. Nous allons téléphoner depuis le cours. Nous allons diviser la transformation. Nous allons sélectionner notre balle. Le mot localisation devrait à nouveau être notre muscle. Et maintenant, nous avons besoin d'une vitesse de tir. Pour l'instant, nous allons juste en profiter pour voir nos balles Nous allons utiliser le vecteur direct de la capsule. Laissez-moi apporter la capsule ici. Passons au vecteur. Multiplions cela par une vitesse que je n'ai pas et 101 000 Passons à la vélocité. Allons tirer. Nous tirons irrégulièrement par rapport à l'endroit où se trouve notre souris, nous tirons et notre balle explose Enfin, bien sûr, nous avons besoin d'un son. Alors allons-y, et une fois que nous aurons fait apparaître notre balle, nous allons jouer le son D, et nous allons utiliser le son du pistolet Maintenant, nous devrions avoir du son pendant le tournage. Puis-je vérifier si cela l'endommage, ce qui, à mon avis, n'est pas le cas. Ça devrait être cinq heures, n'est-ce pas ? Alors vérifions-le. Et je pense que je sais déjà ce que c'est. Nous devrions d' abord aller à la porte de l'enfer. Le remorqueur Defols. Tu vois ? Nous avons l'acteur qui tire Es dans la balle, je demande une étiquette de composant Il ne faut donc pas demander de composant. Je devrais demander un acteur. En tant que tag E du composant. Mais maintenant, nous devrions pouvoir filmer quelque chose. Si nous y parvenons il y a deux portes de l'enfer là-bas. Allons-y Ouais. Nous ne pouvons pas détruire les portes de l'enfer. Nous y arrivons. Oh, je pense que ce serait un bon point d'arrêt pour celui-ci. Je veux te voir le prochain. Au revoir 102. Animation de mort des joueurs et mécanique: Bonjour et bienvenue dans l'atelier de conception de jeux et Real Engine Five procédural création de RPG d'action-RPG Real Engine Five procédural dans les donjons Dans le dernier, nous en avons fini avec l'apparition de notre balle Nous avons terminé. Entre guillemets car nous avons besoin de la bonne vitesse Donc, ce que nous avons fait, c'est que nous avons fait apparaître un compteur électronique sur une fausse muselière Nous avons créé un faux emplacement que nous appellerons museau devant notre personnage, et nous y faisons apparaître un compteur électronique. Et nous utilisons la rotation des capuchons pour faire pivoter ce mètre, qui est le compteur qui fait clignoter notre museau, par exemple Oh. Ensuite, nous avons créé un émetteur attaché, auquel était également attaché le maillage du muscle alvéolaire Notre fumée suit donc une petite partie de notre arme. Notre mouvement dans notre arme. Ensuite, nous avons fait apparaître notre acteur de poulette avec l'emplacement du mot « emplacement du museau », puis nous avons créé une fausse vélocité vers l' avant Puis nous avons émis un son. Maintenant, avant de modifier les mouvements de notre personnage et de déterminer où il vise réellement, nous devons terminer le dernier. Mettons un commentaire ici. Animal de compagnie. En fait, tirez. J'aurais plus raison. Maintenant, la dernière chose dont nous avons besoin, c'est de notre système de santé. Nous l' avons créé jusqu'à un certain point. Mais nous n'avons pas conçu ce qui se passe. Nous n'avons pas notre stand. Peu de pièces se reproduisent une fois que nous avons subi des dommages. Continuons donc avec cette logique. Tout d'abord, nous avons dit que nous jouerons notre personnage lorsque nous aurons subi des dégâts. Cela signifie que cela devrait également être une période de grâce pendant laquelle nous ne serons pas étourdis, sinon nous serons bloqués lorsque nous recevons un non-mag continu, par exemple, pour la tour qui tire continuellement ou si de nombreux ennemis nous frappent en même temps Nous allons installer une succursale ici, et nous allons demander si nous pouvons nous faire regarder. vais promouvoir cette variable, et appelons-la C B. En fait, c' est un très mauvais nom. Disons que c'est cool down. Si Sn est en mode de refroidissement, nous le faisons, si S n'est pas en mode de refroidissement, nous faisons autre chose. La première chose à faire est de mettre Stan sur Cool Down. Mais si cela se déclenche à nouveau, c'est à partir de zéro. La deuxième chose à faire est de changer d'état. T. La prochaine chose que nous devons faire c' est émettre un son de chaleur. Un son, deux D. La raison pour laquelle nous ne le jouons que sur Stun, c'est que nous ne voulons pas que chaque chaleur produise un son, mais que chaque chaleur qui nous assomme doit donner le Mais nous allons utiliser la chaleur. Moi, Herm. Nous allons utiliser un Hert Mel. Ensuite, nous poserons une question si nous sommes morts. Parce que si nous ne sommes pas morts, nous allons faire autre chose. Si nous sommes morts, nous jouerons à la mort, et à la mort, si nous faisons la promotion de cet air. Tout ça est mort. Disons que c'est mort. Créons un événement personnalisé. Toute cette mort et je dis que c'est faux. Maintenant, si nous ne sommes pas morts, nous voulons créer un effet de chaleur. Cela montre donc aussi visuellement que notre personnage a pris de l'ampleur. ce que nous faisons. Créons un autre montage. Eh bien, c'est réglé pour le chauffage. En fait, nous devons être des parangons. Nous avons donc ce front de réaction thermique. Nous allons créer un montage à partir de. Nous allons entrer dans le montage, les emplacements de groupe seront ceux du haut. Partie supérieure du corps. Revenons à notre personnage et jouons son montage. Sélectionnons notre maillage squelettique. Et notre montage. Il réagit de front. Et maintenant, ce que nous allons faire, c'est ne pas passer par cette chaîne d'événements, c'est-à-dire lorsque nous arrêterons de jouer les montas, nous passerons aux choses suivantes, nous choisirons l'événement complet et interrompu Donc, si quelque chose interrompt ceci ou si cela est terminé, alors nous allons faire autre chose. Ce que nous allons faire, c'est obtenir l'état de notre joueur, quel état du joueur, car ce résultat variera en fonction de l'état du joueur, un peu, pas beaucoup. Et si nous étions en position normale A ou moi, nous voulons revenir à une position normale. Nous allons encore changer d'état. À la normale. Si nous étions normaux, si nous visions parce que cela interrompt notre visée Si nous essayons de tirer et quelque chose nous tire dessus et que cela nous touche, cela interrompt notre visée. Nous devrions donc viser à nouveau, et toujours pareil Et ce que nous allons faire ensuite va retarder un petit peu. Disons 2,5 secondes. Ensuite, nous allons régler le non-refroidissement. Je n'aime pas ce bruit, donc je ne suis pas cool, c'était peut-être un C. Bref, compilez et enregistrez. Mais en gros, c'est notre compte à rebours pour le moment où nous pourrons à nouveau être stupéfaits. Maintenant, dans ce cas, nous sommes stupéfaits. Si nous ne quittions pas notre équipe. Je vise, je tire et je suis stupéfait. Ba, c'est le cas lorsque nous sommes en train de nous rafraîchir. Nous ne pouvons pas être dans ce cas si nous avons été stupéfaits par ce qui s'est passé ici. Je me suis connecté, j'ai connecté les mauvaises choses. Lu pendant que c'est arrivé. C'est ici. Nous sommes donc maintenant une star, nous nous mettons en position debout et nous changeons d'état. Ainsi, lorsque nous changeons d'état, nous ne pouvons pas viser, nous resterons donc debout. Mais si nous sommes déjà debout et que nous visons, cela devrait interrompre notre objectif, quoi qu'il arrive. Mais si nous sommes stupéfaits et que nous continuons à appuyer sur Shift, nous devrions revenir à notre objectif. Mais nous allons installer une succursale ici. Et si c'est faux, nous allons nous connecter ici, et si c'est vrai, nous allons nous connecter ici, nous allons nous connecter ici, et la condition est que nous visons toujours, donc que nous visons vers le bas, si nous appuyons toujours sur Shift. En gros, lorsque nous sommes stupéfaits, nous ne sommes pas interrompus pendant le tournage. Mais si nous visons et que nous avons déjà été stupéfaits, nous sommes interrompus. La deuxième fois que quelque chose nous attaque, nous atteignons notre objectif, qui serait un mécanisme caché dans le jeu. Quoi qu'il en soit, continuons avec notre côté triste, notre mort quand nous perdons, quoi qu'il arrive ne doit arriver qu'une seule fois. Donc deux une fois. Ensuite, nous devrions émettre le la mort, donc émettre le son sur D. En fait, cela ne devrait pas être la première chose à faire, mais éliminons ce son horrible dès le début. Je crois que ça s'appelle douleur. Douleur numéro deux. Eh bien, nous pouvons choisir la douleur liée à l' effort ou probablement, celle-ci est plus agressive, plus meurtrière. Maintenant, nous devrions arrêter le mouvement ici, mais nous n'avons pas encore réglé la partie manette Nous allons donc le faire plus tard, et bien sûr, changer notre état en mode mort, qui est l'état par défaut. Et maintenant, nous devons jouer une animation. Nous allons donc trouver notre animation sur la mort, donc ce sera la mort. En tant que mort en arrière et en avant, je pense que l'avant est préférable plupart des cas, car le retour en arrière peut sembler étrange dans certains cas, mais nous allons créer un montage d' animation à partir de celui-ci Nous allons changer son emplacement pour le haut du corps. Encore une fois, R, non ? Revenons à notre personnage et jouons un montage. Sélectionnons notre maillage squelettique. Nous allons sélectionner le montage. Et retirons notre widget de jeu de notre écran. Il n'y a donc plus d' éléments de santé ou quoi que ce soit d'autre. Mode de jeu de haut en bas. Nous y voilà. Jouabilité. Éloigne-toi du parent. Cela se produira instantanément. Nous n'attendrons pas la fin du montage ni ne notifierons quoi que ce soit. Ce que nous devons faire, c'est créer un jeu à l'écran. Mais faisons-le pour le prochain. Au revoir pour le moment. À bientôt. 103. Système de détection de souris: Bonjour et bienvenue sur le moteur Game Design Workshop, cinq Procedural Dungeon Action Creation Curse Auparavant, nous nous sommes arrêtés avec notre décès dû à la fonction de décès, en fait. Et nous avons dit que nous avions besoin d'un jeu qui montre essentiellement quand nous mourons. Mais reprenons les choses depuis le début. Nous avons créé la suite de notre événement « Tout dommage » auquel nous avons dû ajouter « supprimer la santé ». Nous avons demandé si nous étions déjà sur Stun, si nous étions sur Stun Cooldown Si nous ne sommes pas sur Stun Cooldown, alors nous activons le refroidissement par le soleil, et nous activons notre mode sur Stun Cooldown et nous activons notre mode sur Stun Ensuite, nous émettons un son qui indiquera au joueur que nous sommes étourdis. Si nous sommes en train de nous rafraîchir, alors nous nous demandons directement si nous sommes morts. Si nous sommes morts, nous continuons d'être un événement de mort. Si nous ne sommes pas morts, nous diffusons un montage d'animation pour montrer que nous sommes touchés, mais il peut être interrompu en marchant, bougeant ou autre et en changeant. Et complètement ou sans interruption, nous changeons en fonction de notre état, que faisons-nous ? Donc, en gros, nous avons créé un mécanisme caché qui, pour la première fois, lorsque nous visons et tirons, nous revenons à notre objectif afin de pouvoir tirer à nouveau. Mais si nous en sommes au deuxième coup, ce qui signifie que nous visons déjà parce que l'appareil n'a pas changé d'état parce que nous avons été étourdis, alors nous revenons à la normale et interrompons notre attaque Ensuite, nous avons attendu 2,5 secondes pour activer l' étourdissement et le refroidissement C'est donc notre période de grâce pour ne pas nous laisser étourdir Lors de notre événement, la mort, nous l'avons fait une fois, nous avons émis le son de la mort, un son horrible, et nous avons changé l'état en mort, et nous avons joué notre moa de mort Maintenant, créons notre widget Nous supprimons également du widget de jeu parent, de sorte que nous ne voyons plus la partie santé ou quoi que ce soit d'autre. Oh, maintenant, créons essentiellement notre widget pour notre jeu à l'écran. Passons à l'interface utilisateur. Cliquons. Passons aux widgets utilisateur, au plan du widget utilisateur, et reprenons le jeu ALLEZ-Y. Ouvrons-le. Et amenons un Cvass. Et un texto. Écrivez la fin du jeu. Ancrons-le au milieu. Décalons la position x deux moins 175. Changeons de position de deux volées. Disons la taille x trois et la taille 89. Maintenant, fixons notre taille sur six. Elle a l'air un peu plus grande. Je vais le laisser en gras. Tapons du texte, la partie est terminée. En fait, je pense que c'est un mot. C'est une partie terminée ou une partie sur un ou deux mots. Si j'aime bien ces deux mots, ça va mieux. C'est un peu défini sur la base du r, mais ça va. Je ne pense pas que cela se remarquera. Maintenant, la prochaine chose dont nous avons besoin de décrire notre score. Apportons un texte et enveloppons-le dans une boîte horizontale. Dupliquons ce texte. Sur le premier texte, tapons quatre points en base de deux points. Et le texte suivant devrait être disons un, deux, trois, quatre, cinq, 50. Maintenant, faisons en sorte que la boîte verticale puisse l'enfermer Alors ancrons-le également au milieu. Réglons le décalage moins 125. Cent ans, ça devrait être deux. C'est gros, mais c'est bon. Ce que nous pouvons faire, c'est simplement laisser cela les consolider tous les deux sur le terrain. Cet alignement sur la droite est trop centré. Faux alignement vers la droite. Oui, ça a déjà l'air mieux. Ce sera pour notre score. Créons une variable de notre texte 00, et nommons-le score de soulignement score C'est une variable. Nous pouvons le régler sur quelque chose, et maintenant nous avons besoin d'une autre boîte horizontale. Mets-le dans le cavas. Réglons sa cravate visuellement. Nous voulons que ce soit ici. Dans cette partie de l' écran, jusqu'ici, peut-être. Réglons les décalages. Tout convient ici. Maintenant, ce que nous allons mettre ici sera une boîte verticale. Et deux espaces. Nous pouvons donc contrôler la case verticale là où elle est alignée, et l'espace doit être un au début, un en dessous de la boîte verticale. Nous pouvons donc tout vérifier. Et nous allons remplacer les deux espaces par 0,1. Nous avons donc laissé cet espace vide sur les côtés. À l'intérieur de la boîte verticale, mettons également à nouveau deux espaces et une boîte horizontale entre les deux espaces, et nous allons définir Cette boîte sera en fait celle qui contient les boutons. Qui ont également besoin de quelques espaces. Apportons les boutons et les entretoises. Nous avons besoin de deux boutons, un, deux. Apportons à nouveau des entretoises. 12, trois, et sélectionnons tout ce que nous voulons ressentir. Hein ? Maintenant, nous allons changer les boutons latéraux pour qu'ils soient de 0,1 p. Je pense que par défaut, cela nous donne un joli bassin pour nos boutons. Maintenant, choisissons de texter O ici et un autre ici. Appelons cela le menu principal. Et l'autre, appelons ça un jeu de cartes. En fait, il suffit d'arrêter. Ce que nous allons faire, c'est accéder à, en fait, nous avons besoin de ces deux boutons a et de sélectionner chacun d'eux. L'événement sur lequel vous avez cliqué. Nommons ces modèles car je n'ai aucune idée de ce que c'est lequel. Voici donc le menu B, et voici le B qui. Maintenant, les événements sont nommés, c'est donc à cela que nous jouons. Et c'est le menu principal que nous ouvrons au niveau supérieur. Souvenez-vous de la boucle dont nous avons parlé au début. Ce serait le nom de notre niveau. Copier-coller, c'est le niveau du jeu. Appuyez sur ce bouton pour tout recharger et nous amène à notre menu principal et nous quittons le jeu Maintenant, ce que nous voulons faire, construire, obtenir notre score T et un xt. Connectons-le ici. Notre score, ce que nous allons utiliser comme score. Utilisons nos pièces pour obtenir un score. Nous allons donc créer un mode. Je vais lancer du haut vers le bas. Nous allons passer au moulage pur et récupérer nos pièces. Nombre total de pièces. Connectons-le ici. Notre score est donc constitué de nos pièces. Compilons, et testons notre système de mort. En fait, avant de vérifier notre système de mort. Passons à notre personnage très rapidement et changeons notre santé Mx en un. Nous mourons donc instantanément d'un piège, et nous n'attendons pas dix coups. En fait, mourons à côté de ça. Nous ne sommes pas en train de mourir. Donnons forme à ce qui se passe. C'est parce que nous vérifions la mort ici, variable mort, que nous devrions vérifier si notre vie est égale à la mort, notre vie actuelle est égale ou inférieure à zéro. Si c'est le cas, disons également que c'est vrai. Maintenant, nous devrions pouvoir mourir. c'est vrai. Maintenant, Le piège ici. Oh, il est mort, mais on peut toujours bouger, comme tu peux le voir. Mais nous ne pouvons pas subir d'autres dégâts. Mais nous mourons. Maintenant, nous sommes capables de nous déplacer car nous devons faire fonctionner une fonction d'arrêt des mouvements. Mais pour qu'un mouvement d'arrêt fonctionne, nous devons contrôler la façon dont nous nous déplaçons. De plus, le widget n' apparaît pas parce que nous ne l'avons pas appelé Allons donc jusqu'à la mort. Passons d'abord à notre jeu, notre section de création de widgets. Créons un évent personnalisé. Appelons cet événement GO. Copions cette partie à partir d' ici et la manette de jeu. Va ici. Nous allons promouvoir cette variable. En fait, nous n'avons pas besoin de le promouvoir. Parce que nous allons simplement réinitialiser le jeu par la suite. Nous ouvrons simplement à nouveau le menu principal. Nous les ajoutons donc au port d'affichage, puis nous allons passer en mode jeu et appeler GO. Maintenant, nous avons donc un écran de décès. Ouais. Tout est un peu décalé. S. Mais c'est bon. Nous pouvons les laisser un peu décalés. Il ne s'agit pas d'un produit final. Je pense donc que c'est tout pour celui-ci. Dans le prochain, fixons notre mouvement, car nous avons tout ce sac depuis si longtemps. En gros, lorsque je vise en dehors de la carte, maintenant que nous atteignons cet endroit, peignez-le. Si j'apporte le journal des messages ici, enregistrez le journal des messages de deux fenêtres A. Clarifions-le. Comment est-ce que ça va se passer ? Vous pouvez voir qu'il n'y a aucune erreur, aucune erreur, aucune erreur. Si je déplace la souris quelque part où elle ne touche rien. Cela devrait produire l'erreur, mais ce n'est pas le cas. Où se trouve cette erreur ? J'ai vraiment pensé que c'était ça. Maintenant, qu'est-ce qui se passe ? Pourquoi ne l'avons-nous pas fait, le voici. OK, donc si je clique, lisons l'erreur. Mieux vaut d'abord lire les erreurs. Une entrée de mouvement BP ou un accès qui n' essaie pas de lire une propriété, appelez fun get up. Donc, en gros, nous n'avons pas encore possédé notre téléphone. C'est pourquoi cela se produit car lorsque nous commençons à jouer et que nous faisons apparaître le premier, nous ne le possédons pas encore. C'est bon. Maintenant, une autre chose que je tiens à mentionner est que si vous avez ce pool de textures en streaming de plus de neuf K, cela pourrait un peu détériorer vos graphismes à certains endroits. Maintenant, si vous avez un ordinateur puissant, la raison en est que ce personnage possède quatre textures de résolution K, et par défaut, nous avons plein d'autres textures très texturées Comme vous pouvez le voir, cette icône est un peu embrouillée cette fois. Cela est dû au pool de streaming de textures. Alors, comment résoudre ce problème ? Nous allons appuyer sur la touche de vignette, de l'index à un, et nous allons appuyer sur le point R M. Texture du point. Je vais juste le laisser trouver la commande, les textures, streaming est un pool de diffusion de texte La taille de notre piscine de streaming. Si nous le fixons à 3 000, par exemple, notre erreur disparaît. Nos textures deviennent également claires. Mais cela signifie qu'il consacre trois K de RAM à nos textures. Rappelez-vous simplement qu'il s'agit de V Ram, donc c'est la mémoire de la carte vidéo. Ce n'est pas la mémoire de l'ordinateur. Si votre carte vidéo n'a pas autant de RAM, je ne vous conseille pas d'en augmenter la taille. Loin. Ce serait pour celui-ci. Je vous verrai la prochaine fois corriger ces erreurs séparer le mouvement et tirer avec la souris À bientôt, au revoir. 104. Interaction avancée de la souris pour les éléments: Bonjour, et bienvenue dans Game Design Workshop, cinq donjons procéduraux et de création de RPG d'action sur Real Engine donjons procéduraux et de création de RPG d'action sur Auparavant, nous avions terminé notre jeu à l'écran. Nous avons ajouté notre texte de fin de partie, un texte pour le score mondial et un texte pour notre score. C'est un peu décalé entre les deux, mais peu importe si vous voulez passer du temps à fixer les positions, soyez mon invité. Maintenant, nous avons utilisé deux boutons pour notre Qi et pour le menu principal, ce qui permet de redémarrer notre jeu Pour redémarrer notre jeu, nous utilisons le niveau ouvert par son nom, qui redémarre le tout comme nous en avons parlé, et il affiche à nouveau le menu principal et supprime tout ce que nous avons fait Le Moi précédent. Maintenant, pour notre livre, nous avons juste utilisé un jeu d'argent, et c'est tout. Pour notre score dans Begin Construct, nous avons obtenu le nombre total de pièces et défini le texte. Commençons maintenant par quelque chose de plus intéressant. Passons à notre manette de jeu du haut vers le bas. Dans ce contrôleur, nous allons trouver une fonction appelée get location under cursor. J'en avais fini avec ça au début. C'est celui-ci ici. Nous pouvons également le trouver ici. C'est en fait sous le doigt. Nous voulons mettre le curseur sous le curseur, celui-ci. Nous n'utiliserons pas Under Finger, nous pouvons donc le supprimer, et tout ce qui est utilisé. Où il a été utilisé. Nous n'avons donc pas besoin de l'événement tactile tant que tout ne va pas bien. Alors, à quoi sert notre position obtenue sous le curseur jusqu'à présent ? Il utilise donc le résultat thermique sous curseur par canal, et le canal est la visibilité et les traces pour le complexe, et il nous donne le résultat thermique. Dans les coulisses, il crée en fait une ligne de trace entre notre caméra la position de notre curseur sur notre et la position de notre curseur sur notre écran en tenant compte de la profondeur et du fait qu'il touche quelque chose ou non. Donc, ce que nous voulons faire dans un premier temps c'est le dupliquer mais avec une sphère de trace, afin d'augmenter un peu la taille du curseur de notre clic. Maintenant, une autre raison pour laquelle nous allons l'utiliser est que nous voulons pouvoir créer une liste que nous ignorerons en caractères. Par exemple, notre joueur. Et à ce propos, passons à notre personnage de haut en bas. En fait, créons d'abord une variable sur les contrôleurs. Appelons cela une référence. Comme vous pouvez le constater, c'est déjà pour moi le personnage du VP du haut vers le bas. Si vous devez le changer en caractère P du haut vers le bas. Une référence à un objet. C'est parce que je testais certaines choses, et la dernière variable a été laissée ici. Maintenant que nous avons notre référence de jeu, saisissons-la dans notre personnage du haut vers le bas au début de la Donnons un coup d'œil au joueur. Définissons la référence de jeu et connectons-nous à la référence de jeu. Et maintenant elle est peuplée. Notre référence est renseignée. Revenons à la manette, et à partir de notre référence de jeu, nous allons obtenir. Caméra, nous allons localiser le monde. Il existe un autre moyen de faire en sorte que notre caméra ne corresponde pas au plan de notre joueur Nous aurions pu utiliser le gestionnaire de caméra. Et à partir de là, nous aurions pu obtenir l'emplacement de la climatisation, ce qui nous donne l' emplacement de notre caméra. Mais cette méthode est également bonne, consiste simplement à rendre notre joueur fiable Et c'est notre point de départ. Maintenant, apportons une trace sphérique. Bi-canal. Réglons son rayon à 20. Notre extrémité devrait être notre position, notre point de chaleur de la souris. Mais que se passerait-il si la souris n'avait pas touché quelque chose ? Et si la souris que nous visons ne visait rien ? Faisons donc d'abord appel à une branche pour poser cette question. Est-ce que nous détestons ? Si nous chauffons, créez la sphère. Si nous ne chauffons pas, nous ferons autre chose. Je vais déconnecter ces éléments ici parce que nous allons modifier les résultats thermiques en fonction de nos besoins. Maintenant, que faisons-nous lorsque nous ne détestons rien ? Eh bien, ce que nous faisons, c'est la position de la souris, et nous allons également le faire à la naissance dans le monde. Le déménagement dans l'espace des mots. Si je vais le faire, c'est parce que lorsque nous ne touchons rien, comme nous pouvons le constater actuellement, nous devons reconnecter certaines choses Hein ? Comme nous pouvons le voir en ce moment, lorsque je ne clique sur rien, notre personnage ne bouge pas, et nous pouvons voir que le lieu est ici. Nous pouvons voir où il pense réellement, où nous sommes en train de chauffer. La musique doit être réduite. Puisque lorsqu'il renvoie faux, cela renvoie en fait zéro. Nous devons changer cela. Nous devons être capables de nous déplacer vers notre souris. Donc, ce que nous allons faire, c'est ajouter cet emplacement, le mot emplacement est une multiplication, pas une addition. C'est l'annonce. Il a ce symbole de basse, ce qui en fait une publicité. Maintenant, nous allons cependant multiplier. Nous allons multiplier la direction. Et nous allons le remplacer par un entier, et nous allons donner une plage à cette direction. 3 300. Y 3 000. Supposons que la portée de notre caméra soit d'environ deux kilomètres Nous voulons donc qu'elle soit au moins inférieure à celle du personnage, au moins à la même hauteur du sol. Donc 3 000 environ, ce serait bien. Et ce que nous allons faire, c'est promouvoir cette variable, une variable locale. Et appelons cela citation. Par exemple, si je dois me connecter, déconnectons-nous un peu avec la ligne de traçage. Si je dois le connecter aux chutes, puis le connecter également ici, et obtenir notre position de chauffage ou la sortie. Maintenant, et connectez ceci ici, maintenant nous devrions pouvoir marcher vers les falaises. Au moment où je clique ici, non. Pourquoi est-ce que cela se produit ? Ça n'a aucun sens. Ce n'est pas la manette. Quel est le code original ? Cela n'arrive pas parce que le code par défaut indique à la balle de ne se déplacer que lorsque nous avons un heat through. Donc, si je le connecte également, alors nous devrions marcher vers la falaise. Oui, nous nous dirigeons vers notre destin. Cela fonctionne. Je vois le sol ici en train de mourir. Nous allons régler ce problème plus tard, ou allons-nous le laisser tel quel ? Ça n'a pas vraiment d'importance. Il s'agit simplement de positionner les parois du carreau. Ce n'est donc pas le contrôleur. Maintenant, nous venons de résoudre le problème selon lequel, si nous ne le faisons pas, nous pouvons toujours avancer vers le néant. Mais ce n'est qu' un des problèmes. Déconnectons-le, reconnectons-le et déconnectons-le Donc, si nous ne touchons pas quelque chose, nous réglons la position de la chaleur sur ce que se trouve notre souris ou en dessous. Et maintenant, poursuivons cette logique. Encore une fois, nous allons nous demander nous avons touché quelque chose ? Je vais changer ça en caméra, le canal de trace. Si nous n'avons pas touché quelque chose, cela signifie que la souris chauffe quelque chose, mais nous ne devons pas y prêter attention car nous sommes sur un canal différent. Oh, cela signifie que notre emplacement devrait devenir un lieu de prédilection pour les souris. Nous allons donc changer notre position de chaleur en position de chaleur de notre souris. Maintenant, comme vous pouvez l'imaginer, les spaghettis ici seront délicieux ou un plat familial complet Essayons de le garder aussi propre que possible. Continuons. Comme nous pouvons le constater, nous avons une production de chaleur. Renommons-le en Enemy Heat. Non, parce que selon la façon dont notre système va fonctionner, importe qu'il soit touché par un ennemi ou qu'il ne bouge pas, nous nous déplacerons quand même, peu importe, peu importe. Non Ce que nous allons faire, c'est promouvoir cette variable, variable locale, appelle-la. C'est. Ennemi, c'est la température. Parce que nous savons que nous avons un problème avec le même nom. Nous allons faire en sorte que l'ennemi ne soit pas touché. Ce serait le cas si nous n'avions pas de matin et si nous n'avions pas de tournage. Maintenant, tournons plus tard. Partons du point de vue que nous n'avons rien touché et que ce n'est pas un ennemi. Nous sommes juste en train de cliquer sur le sol. Demandons-nous si l'objet que nous touchons est-il un objet ? Pour cela, nous allons utiliser une séquence. Parce que quoi qu'il arrive, 01 est une sortie paire, et notre zéro est en fait une sortie paire, et notre 1 serait autre chose. Maintenant, cela ne devrait pas vraiment être connecté ici. Celui-ci serait connecté ici, car nous ne voulons pas changer notre position de chaleur, mais nous voulons désactiver la température de chaleur de notre ennemi, qui est désactivée par défaut Donc, même si nous le connectons ici, cela n'aurait pas vraiment d'importance car par défaut. Mais soyons honnêtes. Ça, alors vas-y. Maintenant, lorsque nous vérifions un article, nous devons vérifier si notre acteur thermique est valide. Je vais battre notre résultat de la manche. Je vais l'apporter ici et demander si l'autre acteur est valide. Ce serait le début de notre voyage pour détecter des objets. Une chose que nous devons faire, c'est avant de passer au code, accéder à nos objets interactifs à notre poitrine, à notre gros torse, puis placer le coffre ici également Avec quoi d'autre interagissons-nous ? Les accessoires de la chambre. Je pense que c'est tout, et les objets, bien sûr, passons aux articles et à l'article BP. Passons à Big Chest Plus Defaults et recherchons Tug. Mettons le tag I. Je vais le sauvegarder, et mettons-le également dans le coffre. I pour objet interactif, je ne sais pas. Interference, c' est le remorqueur que j'ai choisi. Vous pouvez choisir vos propres remorqueurs, bien sûr, n'oubliez pas de les placer correctement. Objets et coffres du tag I parce que nous pouvons cliquer dessus en tant qu'objet Maintenant, je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer à la suivante avec notre code des quatre articles. Au revoir 105. Système d'interaction avec la souris et entrées: Bonjour, et bienvenue dans Game Design Workshop Real Engine Five Procedural Dangon Action A BZ Creation Course Auparavant, nous avons continué avec la position de notre souris sous Cursor. Fonction, en gros, le résultat thermique de notre souris est le résultat thermique personnalisé que nous créons, et nous avons commencé par placer notre chaleur sous le curseur. Nous avons vérifié si nous fixons quelque chose, si nous chauffons quelque chose, et si ce n'est pas le cas, nous déterminons la position de notre souris, projetons son anneau par rapport à l'emplacement du monde et nous obtenons un point dans cette direction, 3 000 points en fait à portée dans cette direction, et nous l'avons défini comme point de chaleur Maintenant, si nous touchons quelque chose, nous créons une course de sphères d'un rayon de 20 qui commence au niveau de notre caméra et se termine au niveau de la chaleur de notre souris. Nous demandons si nous avons encore une fois touché quelque chose parce que cette fois nous vérifions la trace de la caméra. Maintenant, si nous avons touché quelque chose, nous réglons la température si nous n'avons pas touché quelque chose, nous vérifions l' emplacement, nous réglons la position en fonction du résultat du curseur de la souris, résultat, et nous réglons le fait que nous n'avons pas touché d'ennemi. Ensuite, nous devrons faire autre chose et nous recevrons le bon de retour. Mais la prochaine chose que nous devions faire, et nous avons commencé à faire, était que notre système vérifie si nous survolons quelque chose ou non Et la première chose à faire est d'obtenir notre résultat en tant qu'acteur thermique. Nous avons également ajouté à notre coffre, notre boîte, notre coffre, notre grand coffre et à nos objets, le remorqueur Oh, c'est la prochaine chose que nous vérifierons après avoir vérifié que l'acteur est valide. L'acteur a-t-il le remorqueur I. Donc un remorqueur et la branche, et la lettre I, et nous avons également répondu à cette question Maintenant, allons-y avec une branche forse, ce serait le cas si ce que nous touchons n'est pas un objet Ce dont nous avons besoin, c'est d'une fonction. Nous allons donc créer une fonction. Appelons cette fonction ear em elect. Parce que si on ne touche pas quelque chose avec ça, c'est que nous n'avons pas de cible. Pour remplir cette fonction, nous avons besoin de deux variables. Pas de locaux, des modèles normaux. Nous allons les créer et ce sera le genre de numéro. Ce serait notre objectif précédent. Supposons que nous survolons le curseur parce que nous survolons les objets. Nommons l' autre parent. Alors, que faisons-nous de ces objets ? N'oubliez pas que lorsque nous avons créé l'élément PP, nous avons créé ces deux messages de début de survol et de fin survol, des messages d'interface Blueprint Ainsi, lorsque nous passons l' aspirateur sur notre objet, nous devons terminer le survol sur tous les objets que nous détenons Nous allons donc avoir nos avant-premières, et nous allons obtenir notre version actuelle Et si nos aperçus sont valides, ici, puis survolez le Ensuite, nous allons vérifier si le survol actuel est valide. Et nous allons connecter le survol américain non valide, et bien sûr, aussi le survol final Nous allons faire la même chose pour celui-ci. Nous allons copier la base cette année. Rapprochez-vous un peu et nous terminerons le survol sur ce que nous sommes actuellement en train de survoler Ensuite, nous allons définir la version actuelle et la précédente sur nulles, elles ne sont plus valides. Nous allons également connecter celui qui n'est pas valide ici. Juste au cas où cela serait valide et non valide ou si nous couvrons toutes nos bases. Maintenant, revenons à notre fonction, et appelons cette nouvelle fonction. L'article de la voiture est sélectionné sur False. Ainsi, lorsque nous couvrons un article et qu'il ne s'agit pas d'un article, nous effaçons la sélection d'articles. Maintenant, si nous survolons quelque chose, nous avons besoin d'une question. Notre survol actuel est-il le même que celui de l'acteur principal ? Est-ce égal au survol actuel ? C'est le facteur. Et si c'est vrai, nous ne faisons rien. Si ce n'est pas le cas, nous recevrons notre survol actuel, et nous le ferons parce que cela signifie que nous avons créé quelque chose de nouveau Mais seulement si c'est valide, si notre dernier ne l'était pas, alors nous devons vérifier si c'est valide. Parce que s'il est valide, nous devons définir le survol vis sur le survol actuel Si ce n'est pas valide, alors cette erreur thermique, je dirais que vous essayez de définir null à null. Ça ne me plairait pas. Maintenant, ce que nous devons faire, c'est régler notre survol actuel pour qu'il chauffe légèrement l'as Je ne sais pas si tu l'as coupé. J'ai essayé de connecter cette année et tu ne m'as pas laissé faire. Et la raison en est que c'est un acteur, mais c'est un personnage du haut vers le bas. Changement. Référence de l'acteur, modifiez le type de variable. Super, pas de crash. Arent Hover et Previous seront tous deux acteurs. Car Hover ne devrait pas être le personnage du haut vers le bas. C'est logique, je pense. Je vais apporter ça ici. Bien entendu, si notre survol actuel n'était pas valide, cela signifie que nous allons le laisser directement à notre acteur actuel Et nous devons donner le coup d' envoi à cet acteur. Mais l'acteur sait qu' il est en train de planer. Vous commencez à interagir. Nous avons besoin d'une autre fonction. Mais arrivons ici et appelons-le au. Et nous le remplirons plus tard. Pour l'instant, passons au graphique des événements, et passons à notre entrée améliorée, à un clic de destination défini par l'IA. Maintenant, nous n'allons pas utiliser la console, je vais donc la déconnecter Ce que nous allons utiliser pour notre interaction est complet. Cela signifie que j' ai cliqué et qu'il y a essentiellement quelques règles concernant le fait de cliquer sur le même cadre et de le relâcher Mais en gros, la façon dont cela fonctionne, c'est que lorsque vous cliquez, cela se produit. Nous n'allons pas utiliser le clic et maintenir plus de détails que cela. En fait, nous le sommes parce qu' il a été utilisé ici, et nous en garderons une partie, mais plus tard, pas maintenant. Maintenant, ce que nous allons faire, c'est vérifier si notre a, notre joueur est valide. Nous n'avons donc pas cette erreur embêtante que nous avons eue pendant tout ce temps. Je veux la version complète. Lorsque vous déconnectez quelque chose, il disparaît. La raison en est que nous avons ce r ici qui montre le reste des options parce qu'elles se cachent. Nous devons donc terminer. Connectons-nous ici. En fait, copions-collons au début. Trig ne déclenche pas cette erreur embêtante. Et nous n'allons pas utiliser d'acteur également. Nous allons utiliser le stop moving, mais nous allons en créer un nous-mêmes. Notre acteur est valide, et continuons à le connecter. Ce que nous allons faire, c'est chacun en fonction de l'état du joueur, parce que c'est l'état du joueur ici, et nous voulons interagir uniquement lorsque nous sommes normaux. Nous ne voulons pas interagir lorsque nous sommes en train de pirater ou autre chose, nous ne choisissons pas des objets au hasard. Et en fait, utilisons le seuil que nous avons. Mettons une branche ici. Donc, si notre temps écoulé est inférieur au seuil Nous nous connectons à la normale. Cela signifie que si je clique sur un article pendant un certain temps et que je ne le publie pas , cela ne se produira pas. L'interaction n'aura pas lieu. Il me suffit donc de cliquer et relâcher pour que cela interagisse. Si je survole simplement avec un clic sur Rest, nous ne devrions pas être en mesure de sélectionner des objets Eh bien, en fait, de cette façon, nous ne devrions pas être en mesure de choisir des objets. Si nous n'utilisons pas ce nœud, nous pourrons cliquer sur des éléments tels que survoler le m avec le pointeur de la souris , décider quand nous le relâcherons et simplement le corriger Mais faisons en sorte que vous ne puissiez pas choisir des objets si vous les tenez dans vos mains. Nous allons donc utiliser une branche à deux branches ici, et nous allons apporter cette fonction d'interaction. Maintenant, si nous laissons les choses comme ça, chaque fois que nous cliquons, nous essayons d'interagir. Mais que faire si nous voulons déménager ? Comment faire la différence entre les deux lorsque je veux cliquer et déplacer et quand je veux cliquer et récupérer quelque chose Eh bien, ce serait simple. Nous avons notre survol actuel ici. Si cela est valide, alors nous interagissons. Si cela n'est pas valide, que nous nous déplaçons ou que nous attaquons. R Allons-nous apporter ça ici ? Ansi Fy un peu. Est-ce que c'est aussi le cas ? Connectons-nous ici. Ajoutez encore une chose, nous devrions ajouter cette question selon laquelle nous faisons passer un élément de la branche française à la branche de déclenchement Basez la même question que nous voulons poser sur le déclencheur. Sommes-nous en train de survoler un article ? Nous ne survolons pas un article. Nous verrons ce qui se passera plus tard. Si nous survolons un objet, nous ne ferons rien car nous voulons vérifier combien de temps nous maintenons la souris En gros, il s'agit d'un événement à la sortie avec un ter. Eh bien, pas à la sortie, lors d'un événement de presse avec un ... quelque chose entre les deux. Et cela pourrait presque mettre fin à notre système d' interaction. Nous avons besoin d'interagir. Mais nous devons d'abord faire d'autres choses. Passons donc à la suivante. Je pense que c'est un bon point de départ pour celui-ci. Je veux te voir alors. Au revoir. 106. Système d'interaction de portée minimale: Bonjour et bienvenue dans le cours de création de RPG d'action-RPG de type Game Design Workshop et Dungeon Real Engine Five Procedural Auparavant, nous avions presque terminé notre séquence d'interaction. Nous avons en fait terminé avec notre recherche articles si certains éléments font partie de la fonction. Mais nous avons vérifié si c'était valide. Nous avons vérifié si l'acteur a choisi de ne pas connecter l'acteur. Oui, nous devons connecter l'acteur. S'il y a du canard, le i, et nous avons vérifié auprès d'une branche. S'il ne s'agit pas d'un acteur avec I, nous effaçons toutes nos sélections pour créer une fonction qui met fin au survol des éléments actuels ou précédents dans les Ensuite, nous avons vérifié, à partir de la vraie branche, si notre cible actuelle est la cible que nous atteignons. Si c'est le cas, nous ne faisons rien. Si ce n'est pas le cas, nous configurons notre survol actuel pour mettre fin au survol Nous réglons notre survol actuel sur le survol précédent, puis nous réglons l'élément que nous survolons sur notre survol actuel et nous réglons le survol de notre Maintenant, au cas où notre survol actuel ne serait pas valide, nous n'avions rien dans la cible Nous plaçons simplement notre curseur actuel sur l'acteur ciblé. Ensuite, nous sommes passés à notre action d'amélioration de l'IA A A Set Destination click. C'est affreux. OK. Nous avons utilisé la branche complète de l'action, qui possède elle-même certaines règles. Et en gros, nous avons maintenu la règle selon laquelle nous n' interagissons pas si vous appuyez sur ce bouton à un certain seuil appuyez sur ce bouton à un certain seuil. Et nous n'avons pas fini d'interagir car nous avons besoin de quelques éléments supplémentaires. Et l'un des avantages, c'est que nous avons supprimé l'arrêt du mouvement, nous allons donc en créer un pour nous. Oh, créons un événement personnalisé. Disons que c'est un arrêt. Déménagement. Et créons un bleion. Appelons cela bleion. Déménagement. Et mettons-le mes amis, parce que lorsque nous arrêtons de bouger, cela baisse Lorsque nous arrêterons de le déplacer, nous voulons que ce soit vrai. Ensuite, nous allons vérifier. Vérifiez si le contrôle p est valide car nous ne voulons pas de pacers avant le début de la partie Et nous allons ajouter une entrée qui serait nulle si le point du contrôleur est valide. Mais cela nous fait arrêter de bouger. Et pourquoi avons-nous besoin de cette variable ? Eh bien, nous avons cette fonction de déplacement 2 ici. Nous ne l'utiliserons pas. Nous créerons notre propre fonction sur Tick Event. Mais je m'égare. Nous n' y sommes pas encore. Il y a donc d'autres points que nous devons arrêter de déplacer en plus de l'interaction. Et ce serait lorsque nous visons, lorsque nous mourrons d'envie. Je pense quand nous subissons des dégâts. Revenons-en donc à notre personnage. Passons à notre objectif. Nous avons besoin de la référence du contrôleur ici, apportons le contrôleur BP. Allons un peu plus loin. Passons à autre chose. Ce qui nous amène ici. Maintenant, personnage, nous réussissons, voulons que cela se produise quel que soit le dommage, et ce, après avoir perdu un peu de santé. Et le dernier endroit, bien sûr, nous en avons besoin, c'est à notre mort, après avoir joué du son. OK. Oui, une fois que nous aurons terminé, tout ira bien. Peu importe, car cela désactivera notre intimidation et nous ne pourrons pas la réactiver Oh. Nous avons ajouté notre arrêt pour nous déplacer partout où cela était nécessaire. C'est l'endroit dont nous avons commencé à parler, que nous allons ajouter, et ce serait la fonction d' interaction. Oh, à quoi sert notre fonction d' interaction ? Il vérifie si notre courant est valide. Ensuite, nous envoyons un message. Correct. Et ici, arrête de bouger. Donc, en gros, maintenant, nous pouvons interagir avec nos objets dans le monde. Mais aussi parce que nous avons gâché cette fonction, nous ne pourrons probablement pas bouger Vérifions-le très rapidement. Oui, nous ne pouvons pas bouger pour le moment. Mais nous sommes capables de tirer et de bouger alors que nous sommes géniaux. Ensuite, nous ne pouvons plus bouger. Incroyable. Cela ne fonctionne qu'à l' extérieur, à l'intérieur du labyrinthe, cela ne fonctionne pas vraiment, mais à l'extérieur, nous obtenons un point que nous devrions avoir Quoi qu'il en soit, est-ce important parce que nous avons déjà les outils pour résoudre ce problème. Nous avons juste besoin d' un petit code supplémentaire. Nous avons les ressources nécessaires. Je veux dire que nous avons besoin. Non. Ce que nous allons faire, c'est en fait, nous avons besoin d'une branche, mais nous avons juste besoin d' une. Supprimons simplement ce qui suit. Nous n'avons pas besoin de ce qui suit. Nous avons besoin de la destination du casting et uniquement de faux. Parce que lorsque nous ne touchons pas un ennemi, c'est à ce moment-là que nous marchons. Et nous ne voulons pas marcher dans n'importe quelle situation. Nous voulons marcher quand nous sommes dans un état normal. Atteignons leur état. Connectons normalement. Maintenant, si nous sommes normaux et que nous touchons un ennemi, nous allons tirer. C'est facile à faire. Ce que nous allons faire pour cela, c'est consulter notre mécanicien de tir. Le tournage ici. Et bien sûr, nous allons encore tricher un peu. Nous allons utiliser cette partie ici parce que cette question est posée via notre manette Game Pod, et nous allons organiser un événement personnalisé. Appelle-le. Deux et nous allons juste nous connecter ici. Maintenant, depuis la manette du joueur, nous pouvons appeler à partir de la référence du joueur, tirer. Maintenant, lorsque nous survolons quelque chose, nous sommes capables de tirer dessus Mais encore une fois, pour tirer sur quelque chose, nous devons être capables de bouger. Ainsi, lorsque nous avons enregistré une destination de cache, lorsque notre destination de cache est enregistrée, qui est en fait notre chaleur, ou l'emplacement du curseur, nous pouvons nous déplacer. Et comment allons-nous nous déplacer puisque nous avons supprimé le déplacement vers, en gros, ce qui n'ajoute pas un simple lieu de déménagement. Je pense que le précédent n'ajoute que l'entrée du mouvement publicitaire. En fait, dans la fonction suivre. Oui, j'ai saisi le mouvement d'ajout. Non. Passons à cette fonction, mais légèrement améliorée. Parce que nous allons l' appeler, ce qui ajouterait constamment un mouvement à notre position actuelle. Faisons une vérification pour x et y de l'emplacement de notre étang. Alors cassons tout ça pour ici. Décrivons l'endroit d'où ils viennent. Ce vecteur ici, bien sûr, est le lieu pourtant acteur, notre étang. R Nous allons vérifier si cela est presque égal à y pour x y avec les x et y de notre position entrante. Admettons une tolérance de 15, cette valeur étant correcte car ce que nous allons faire plus tard signifie que notre personnage peut avoir le bras vraiment tendu à cause de l'arme. Si nous introduisons notre souris dans cette zone, ce sera un problème parce que si nous essayons de viser ici et que notre arme musculaire est là. Et cela crée un problème. Il va essayer de tirer vers l'intérieur, et disons que non, ce n'est pas possible Nous allons donc créer une zone autour du joueur, que la souris, lorsqu'elle entre dans cette zone, se déplace vers tel ou tel côté en fonction certaines règles ou de ce côté ou en fonction de certaines règles. Nous aurons une zone morte essentiellement autour de notre personnage. Voyons maintenant si c'est égal, presque égal aux deux, car si l'un d'eux ne l' est pas, déplacez-vous. Mais s'ils sont égaux, nous devrions nous déplacer de deux fois. Nous avons atteint notre destination. Retour au graphique des événements. Appelons un événement arctique. Cela va s'appeler perfram, et nous allons le faire valide Notre personnage, les personnages d'ici. Ensuite, nous allons faire une séquence car nous allons ajouter quelques éléments à cet événement de tic-tac. Maintenant, mettons une branche ici, le reste de la séquence et demandons si nous nous déplaçons. Si nous déménageons, nous suivons. Pour l'emplacement, la destination du cache. Compilez et enregistrez. Théoriquement, nous pouvons maintenant marcher Non. Même le précédent. Et marche. J'en connais la raison, car notre état clair devient normal, ce qui ne se met pas à jour puisque nous n'avons pas mis à jour l' état par défaut du personnage, et l'état par défaut du personnage est normal parce que nous l'avons modifié. Mais ce n'est pas le cas, alors cela ne met pas à jour le contrôleur. Maintenant, nous pouvons donc déplacer Non, et le point de retour, toujours le centre du personnage, qui est à l'extérieur, ne l'est pas. Bien sûr, parce que nous n'avons pas terminé cette partie de la fonction. Cette partie de notre lot plutôt. Nous n'avons pas terminé la partie de la fonction Si nous atteignons une cible, et que ce n'est pas un ennemi, que devons-nous faire ? Faisons-le donc pour le suivant. Et je te quitte pour le moment. Au revoir 107. Finir le tir statique et viser: Bonjour et bienvenue sur Game Design Workshop et sur Real Engine Five Procedural Dungeon Action PZ . Auparavant, nous avions commencé par notre fonction d'interaction, mais nous avons fini par terminer le mouvement. Nous avons également terminé la fonction d' interaction, j'espère. Nous allons vérifier quand nous pouvons nous déplacer et sélectionner un coffre ou un objet. Ensuite , nous avons créé le mécanisme Stop Move, qui transforme en fait nos lingots de mouvement en chutes et ajoute une entrée de mouvement nulle si la manette de notre joueur est valide Si le pion de notre joueur est valide. Désolée. Ensuite, nous avons procédé ainsi sur notre déclencheur, ce qui signifie que lorsque nous commençons à cliquer, il continue de fonctionner pendant que nous maintenons le clic enfoncé. Je vais y revenir une fois de plus. abord, nous vérifions si notre joueur est valide, puis si notre ho est valide, car si nous survolons un objet, nous ne devons pas nous déplacer vers cet objet Si nous voulons nous déplacer vers cet article, si par exemple, nous ne sommes pas dans la gamme, nous pouvons créer un code ici, si nous ne sommes pas dans la gamme de l'article, si nous nous dirigeons vers l'article, sinon, ce que nous voulons faire. Oh, alors nous avons vérifié si notre joueur est dans un état normal. Ainsi, lorsque notre personnage est en mode normal, nous vérifions si nous touchons un ennemi avec notre curseur, ou si ce n'est pas le cas, nous réglons la position de notre manche par rapport à notre destination d' incantation, et nous réglons le déplacement sur vrai. Si c'est le cas, nous sommes juste en train de filmer et nous avons créé un événement personnalisé ici dans Shoot from the branch parce que nous n'en avons pas besoin, et cela suit la même logique. Maintenant, revenons à notre manette La raison pour laquelle nous définissons le déplacement est vrai, et nous définissons la destination du lancer, c'est parce que notre mouvement est contrôlé par notre événement tic-tac , au cours duquel nous avons demandé si le joueur était valide, si notre référence au joueur était valide, puis nous vérifiions si nous bougeons ou non. Si c'est le cas, nous utilisons la fonction follow fournie par areal, qui permet au contrôleur à paires d'accéder à l'étang contrôlé, obtenir son emplacement, vecteur de direction unique à partir de deux, et qui le fournit pour ajouter une entrée de mouvement Nous avons amélioré cette fonction en vérifiant si nous avons atteint notre destination en vérifiant les valeurs x et y de la destination et notre position actuelle. Et si c'est vrai, alors nous ne bougeons plus parce que nous sommes arrivés à destination. Et nous avons découvert que nous ne pouvions pas encore nous déplacer, car si nous passons à notre fonction um get location under cursor, nous pouvons voir que notre position d'obtention n'est pas définie lorsque nous touchons quelque chose avec notre ligne de trace. Eh bien, cette logique ne l'est tout simplement pas. Ce que nous allons faire, c'est obtenir notre résultat thermique ici, car nous allons avoir besoin de valeurs à partir de celui-ci. Mais il va falloir se demander si l'acteur que nous avons affronté est un ennemi. Donc, comme tag e. Mais s'il n'y a pas de tag E, alors nous ne touchons pas d'ennemi. Nous allons suivre la logique qui consiste à frapper un ennemi plus tard. Mais pour l'instant, nous allons relier le faux à ici. Peut-être devrions-nous avancer un peu plus sur cette question. C'est très bien. Cela commence à devenir un spaghetti familial en portions. Mais je pense que c'est bon. Maintenant, si on joue, on peut vraiment bouger, on peut tirer sur Ida. Mais le problème vient de la visée. Nous ne pouvons pas viser. Je peux appuyer sur Shift pour commencer à tirer, mais je ne peux pas viser l'endroit où je tire. Réglons ça. Nous allons avoir besoin de savoir pourquoi cela persiste dans le mouvement , je vais juste mettre un est valide ici J'espère que cela résoudra le problème. Oui, plus d'erreur. Enfin. Maintenant, nous devons viser l' endroit où nous tirons. Et pour ce faire, nous devons créer le système dont nous avons parlé selon lequel entre une certaine distance, il va décaler notre vecteur vers l'avant et notre visée, notre rotation. Allons-y et ajoutons très rapidement à notre position d'obtention sous le curseur, purement et simplement . Nous devons changer ce nom de toute façon. Ajoutons deux variables dans la note de retour. L'un d'eux serait un vecteur. Appelons cela un objectif prospectif. F, n'est-ce pas ? Peut-être. Et puis nous avons besoin d' un autre vecteur mais d'un rotateur cette fois. Appelons cela Fation, qui inclura en fait les variables normales, mais de toute façon, transformons ces deux variables en variables locales Donnons-leur le nom de cette dame adorée jusqu'à présent et de départ, de set Donnons-leur quelque chose. Passons à démontrer le problème. En fait, ce qui se passe ici, ici, pour notre compensation pour A, nous allons trouver notre personnage. À titre de référence, nous allons utiliser le vecteur avant le vecteur. Et pour la rotation. Trouvons la position de l'acteur, et obtenons notre résultat thermique, qui consiste à le copier, le voici, obtenir notre résultat thermique, et nous allons le trouver auprès de l'acteur en fait. Rotation. Aucun parent, désolé. Rotation, et ça va commencer par notre personnage, et ça va se terminer par notre résultat de manche. Maintenant, pour que cela fonctionne, nous avons besoin de code. Nous devons définir la rotation quelque part, et nous allons passer à notre événement e, et à partir de là, nous allons passer à un événement de notre séquence. Nous allons donc activer l'état du joueur. Parce qu'il y a des moments où nous n'avons pas envie de modifier la rotation de nos personnages. En gros, il n'y a que deux fois où nous voulons modifier la rotation des personnages. C'est par la voie normale ou par la route A. Re ici. Je peux connecter les deux, et nous allons obtenir notre référence de jeu et cette rotation. Rotation du véhicule. Nous aurons besoin d'un peu de place ici. Un tout petit peu plus. Je pense que c'est bon. Oh, ce que nous allons faire, c'est aller à notre stage. Nous allons le rendre constant. Cela signifie effectuer une rotation selon une valeur constante basée sur un tempo basé sur notre delta T. Pour le delta T. Utilisons l'événement tick. Cela rend le cadre pertinent, mais c'est bon. Et pour ce qui est de la rapidité, nous allons utiliser 100. Maintenant, quel est le nôtre actuellement ? Eh bien, nous allons obtenir notre référence de joueur. Nous allons faire une rotation. En fait, nous allons utiliser ceci ou le courant, mais la cible, nous ne modifierons pas le x et le y. Nous allons garder la même chose, donc nous allons passer à ceci. Nous allons casser ça. Le lancer et le lancer resteront les mêmes. Yo, qui est en train de changer, sera la seule à changer. Trouvons donc la position de notre souris sur la fonction occurs. Casse ça. Connectons ceci. Et encore une chose avant d'avoir terminé. Revenons à notre personnage P du haut vers le bas. Passons à notre balle d'apparition et changeons le vecteur vers l'avant que nous avions créé dans la capsule , à savoir l'avant de notre balle Trouvons la référence de notre manette de joueur. Allons-y sans le git. Non. Ce n'est pas le nom. Il faut obtenir des patients pour patients obtenir le résultat sous Kersor C'est notre fonction. Mais celui-ci. Allons à notre emplacement gt sous la fonction Kursor. Vérifions-le. Par défaut, cette fonction est protégée par un spécificateur d'accès, ce qui signifie qu'elle ne peut être appelée par rien d'autre. Rendons-le public. Nous pouvons y accéder. Je vais me localiser sous Cursor, nous y voilà, et nous allons viser vers l'avant et nous connecter ici. Allons jouer. Cela nous donnera une sorte de rotation. Et comme vous pouvez le voir, tournez vers ma souris. Mais voyez-vous que la puce est légèrement décalée par rapport à l'endroit où je clique ? C'est parce que nous sommes dans un monde en trois D et que nous essayons de cibler un monde en deux D. Donc, à certains endroits, c'est bon, c'est direct, comme si on prend cet angle, peut voir que c'est directement sur la balle de la souris, o Il y a un angle presque direct, et tout autre angle commence à vraiment se décaler. Maintenant, faisons les calculs nécessaires pour modifier ce décalage et le faire viser correctement. Revenons donc à notre position sous ers pure, et nous aurons besoin de beaucoup d' espace pour le faire glisser jusqu'ici. Peut-être que l'espace est suffisant, et nous allons déconnecter les deux Commençons par calculer la direction de notre museau. Nous allons obtenir la référence du joueur, et nous allons obtenir une muselière De notre museau, nous allons capter l'action du monde. En fait, nous avons juste besoin du Z ici, je vais le casser. La direction vers deux serait notre point de chauffage. Trouvons notre point de chauffage. Mettons également fin à cela. Pourquoi faisons-nous cela ? Pourquoi devons-nous trouver la direction ? Parce que nous devons connaître la direction entre l'arme la cible pointée par la souris pour ajuster correctement la visée en conséquence. Faisons la soustraction pour trouver la direction négative Nous devons maintenant calculer la direction entre la caméra et le git de la souris, car la perspective de la caméra influe sur la façon dont nous voyons et visons les cibles en raison de notre vue isométrique Ce que nous faisons réellement, c'est et nous allons convertir le lieu en espace mondial. Connectons également le y. C'est assez important. Et le prochain endroit dont nous avons besoin est la caméra, donc nous avons notre lecteur. Notre joueur est là. Allons chercher un appareil photo. Trouvons la localisation du mot. Soustrayez ces deux points Obtenez la direction de la caméra vers la chaleur de la souris, l'emplacement du mot de la souris. La prochaine étape serait de normaliser cette échelle. Maintenant, normalisons les composantes z de ces deux différences pour ajuster le vecteur de direction, tenant compte des différences de hauteur entre la caméra l'arme et la cible, car ces trois éléments sont tous des axes Z différents. Maintenant, pour ceux qui débutent en mathématiques, qu'est-ce que la normalisation ? Eh bien, c'est le processus qui consiste à ajuster les valeurs mesurées sur différentes échelles à une échelle commune, si cela a du sens. La façon dont nous allons procéder va battre ce résultat. Nous allons nous diviser. Est le résultat par le z, la direction du résultat de la direction entre nos muscles et notre chaleur par rapport à notre chaleur et le résultat de direction de notre caméra et de notre souris sur l'écran. Et ce que nous devons faire, c'est en faire un vecteur. C'est une division par élément. Nous allons donc changer cette broche de sortie en vecteur. Comme vous pouvez le voir, cette division est devenue une division par élément, c' est-à-dire un X divisé par x, A donc toutes ces valeurs sont les mêmes. Et cela compensera notre algate. Nous devons augmenter ce facteur différence entre la caméra et la souris Multiplions-le par le résultat de la soustraction dans cette direction, et ajustons-le en fonction de notre position thermique Nous allons donc ajouter notre point de chauffage ici. Puisque nous utilisons nos muscles. Utilisons à nouveau notre museau, pour trouver l'apparence de la rotation avec le nouveau décalage Nous allons procéder à une rotation mondiale. Nous allons nous connecter à l'art. Ensuite, nous allons connecter ceci pour trouver et connectons-le ici, et créons le monde. À et connectez-le ici. Mais nous n'avons pas terminé, mais voyons ce que nous avons créé. Vous voyez là où je clique, je vise vraiment. C'est là que va aller la puce, là où je clique. Mais si je m'approche trop près de mon personnage, vous pouvez voir qu'une balle est soudainement tombée par derrière. Celui-ci se heurte en fait à un personnage. Nous sommes en train de nous tirer dessus. Je pense que je peux le faire tirer à nouveau par derrière. Tu as vu que c'était incroyable ? De plus, notre animation est fulgurante. Voyez-vous que l'animation attire beaucoup d'attention parce que nous sommes trop près du museau ? Donc dans ce cas, la priorité du modèle est prioritaire la rotation du modèle est plus prioritaire que le museau car nous sommes trop proches Si je m' éloigne un peu plus, tout va bien. Si je m'approche de trop près, nous commençons à trembler et nos prises de vue deviennent très mauvaises Maintenant, je pense que c'est suffisant pour celui-ci. Nous allons régler ce problème lors de la prochaine. Au revoir. 108. Mécanique de l'ennemi sous le curseur: Bonjour, et bienvenue sur Game Design Workshop, véritable cours de création de RPG d'action et de donjon procédural sur Engine Five création de RPG d'action et de donjon Auparavant, nous en avions terminé avec les mathématiques de notre décalage de visée. Nous avons obtenu notre direction de notre muscle vers la direction de notre chaleur, et nous avons obtenu notre direction de la position de notre mot à celle de notre caméra à celle de notre souris, de la position de l'écran . Nous avons obtenu la direction, nous avons normalisé l'axe Z à partir de ces deux axes, nous lui avons donné l'échelle de direction fonction de la normalisation ici, et nous avons ajusté la position thermique pour tenir compte du décalage des armes. Nous avons donc ajouté le point de chaleur à ce résultat, cette direction d' échelle. Maintenant, mais nous devons régler le problème selon lequel lorsque nous sommes trop proches, ciblage est très, très décalé. Nous devons vérifier juste la distance si résultat de notre alimentation est essentiellement supérieur à une distance ou inférieur à une distance par rapport à notre personnage. Créez un petit cercle dont nous avons parlé autour de notre personnage. Et j'ai une valeur en tête. Mettons donc une branche ici. C le Connect this à la succursale se trouve ici. Co-représentons ici. Et qu'allons-nous faire pour vous demander de réduire la distance. À quoi sert le moins ? Je vais me procurer un vecteur. Pour faire 107 ici. C'est la valeur que j'ai découverte, j'arrête de trembler et ça fait apparaître erronées en gros Vecteur F 1, nous avons besoin de nos muscles. Vecteur deux, nous avons besoin du décalage d'un emplacement. Et quand c'est deux, quand la distance est plus grande, nous sommes plus proches de notre personnage, de ce cercle situé sous le personnage, parce que c'est essentiellement un rayon Connectons-nous d'abord ici. Nous aurons besoin des nœuds que nous avons ici. Nous n'avons pas besoin de l'emplacement. Nous avons juste besoin d'un coup d'œil. Et cela va commencer ici. Ce sera un vecteur direct. Faisons en sorte que le bas soit là. Hein ? Nous allons connecter cela, et notre objectif est à nouveau la chaleur compensée. Nous allons nous connecter à cette chaleur ici. Et ça corrige le problème. Allons-y, Clay. Et comme nous pouvons le voir, nous pouvons tirer près de notre charretier et il tirera droit. S. Nous avons commencé à tirer, maintenant nous pouvons viser où nous voulons. Nous devons en augmenter la taille cible. C'est petit, la longueur des caractères et c'est énorme. Mais maintenant, nous pouvons nous déplacer et tirer. Mais nous ne pouvons pas tirer lorsque nous survolons une cible. Nous devrions peut-être pouvoir déménager ici. Nous n'avons peut-être pas fait l'extension de la plateforme. Nous n'avons pas testé en fait. Nous l'avons fait. Nous l'avons fait, nous n'y sommes pas allés. Nous irons voir Deb plus tard. Nous devons continuer avec ce qui se passe lorsque nous survolons un ennemi C'est assez important. Nous ne voulons tout simplement pas prendre des photos uniquement en appuyant sur Shift et en tirant. Nous voulons être en mesure de tirer en choisissant également, 100 parties. Nous avons donc un nouveau point de chauffage. Nous avons maintenant le point de départ d'une cible. Je n'en ai pas sur le sol, c' est-à-dire la souris. Si nous voulions une chaleur plus spécifique, ce serait le point d'impact. Cet endroit serait, par exemple, celui où nous avons atteint la cible. Corps dur. Mais pour nous, cela n'a pas vraiment d'importance, mais faisons-en la promotion auprès de notre centre de chauffage. Je vais donc trouver l'emplacement du chauffage. Et je vais le régler sur le point d'impact. Avant de commencer à tirer ou quoi que ce soit d'autre, nous devons vérifier si nous sommes perdus, si nous sommes dans la ligne de mire, parce que vous ne pouvez pas tirer à travers les murs. Par exemple, d'accord, l'emplacement de ce chapeau vient de notre caméra à notre souris. Mais il ne sait pas si notre joueur a un mur entre lui et la souris et l'objet. Donc, ce que nous allons faire entre parenthèses, nous ramassons des objets à travers les murs de toute façon Ne faisons pas ça pour notre tournage. Nous allons donc lancer un tracé linéaire par canal. Et l'emplacement des statistiques serait Muszzle. Trouvons l'emplacement de la salle de muselière. Où se trouveraient les extrémités cet embout, de la coupe finale, de la rotation. La cible est l'emplacement. Les départs sont le museau, le vecteur. Ajoutons ce vecteur direct à notre phase de localisation des salles. Nous devons lui donner une fourchette. Multiplions donc cela. Entier, dont il s'agit d'une plage de 2000. Ensuite, nous l'ajoutons à l'emplacement de notre tableau. Fard dans cette gamme et à la forme parce qu'en gros c'est un point Donc un point de distance, où dans le monde devrait se trouver cette distance. Il a également une orientation, bien sûr, parce que c'est vers l'avant, et c'est dans cette direction que cela dépend. Une nouvelle trace pourrait être un peu facile. Nous en serons peut-être capables, tant pis. Laissons le tracé linéaire. Je dirais qu' il faut en faire une sphère avec un rayon, afin que nous ne puissions pas tirer à travers de très petits trous, mais bon, peut-être que la balle va entrer en collision Si cela n'entre pas en collision, nous devrions ignorer un acteur. Alors allez-y, et l'acteur que nous ignorons est notre joueur. J'obtiens notre référence de joueur et je la connecte ici. Maintenant, si nous chauffons ou non, si nous le faisons, cela signifie qu'en gros, ne pas frapper signifie que nous n'avons pas touché d'ennemi Nous devons donc éteindre l'ennemi. En fait, nous n'avons pas besoin de l' éteindre. Retournez ici. Dans ce cas, notre cœur est notre sous-sol. Maintenant, si nous revenons à notre nouveau résultat, qui serait le nouveau point d'impact, de notre arme, de notre muscle à l'ennemi. Si l'acteur a une cible et qu'il a un acteur, le voici, en tant que g E. Nous allons le régler en conséquence car nous risquons de toucher d'autres objets, pas des ennemis. Nous sommes peut-être en train de nous heurter à des murs. Et en fait, notre canal de traçage devrait être la caméra, non la visibilité, car c'est ainsi que nous avons organisé les collisions dans les labyrinthes Maintenant, ce que nous voulons faire, c'est effacer les éléments sélectionnés. Parce qu'à ce stade, lors des remplacements de prise de vue, nous ne voulons pas cliquer pour interagir avec des objets Nous voulons qu'il tourne. Et il ne reste plus qu'à définir nos vecteurs et nos décalages, et nous avons également besoin du nœud de retour , car il s'agit d'un autre point à la fin de la fonction Remballez ce copiez-collez ceci, nous avons besoin d'une bonne glucaration. Nous avons besoin d'un We Can pour les recréer. Ici, ici. Et pour notre rotation, trouvons la position de notre acteur, notre lieu de jeu, l'emplacement des acteurs de la manette AM. Et pour atteindre notre objectif, nous avons besoin de notre point de chauffage. Maintenant, pour notre pause de matin, nous avons besoin de notre oncle. Allons chercher notre muselière Ce dont nous avons besoin, c'est de nous concentrer sur ce que nous avons chauffé. Oh. Il ne s'agit pas d'une trace de chaleur linéaire. Il s'agit d'une trace de chaleur sphérique, celle que nous chauffons en premier. Oh, nous allons y arriver, A. Mais nous devons créer une solution pour y parvenir. Pour ce faire, nous allons le découper à nouveau, nous allons faire une rotation en c, quelle cible serait celle-ci, puis un vecteur vers l'avant. Obtenez un vecteur avancé à partir de ces rotations, et nous allons le relier à notre décalage. Et ce serait tout. Allons photographier les objets. Et nous ne pouvons pas encore filmer ces objets. La raison pour laquelle il n' a pas terminé notre événement de clic. Non. En fait, ce n'est pas la raison. La raison en est que nous n'avons pas terminé le changement de type de souris, dont nous serons responsables si nous touchons un ennemi ou non, mais finissons-en avec l'événement de clic, car il ne nous reste que très peu de nœuds. Eh bien, l'un des points que nous devrions faire est que déplacement diminue lorsque notre seuil est inférieur. C'est bouger pour que nous puissions botter et bouger. Vrai contre vrai, faux et faux. Cela permettra donc d'arrêter le petit bug que nous avons vu. Mais j'ai cliqué et ça a commencé à bouger sans fin. Maintenant, si je relâche ma souris, elle cesse de bouger. Et quand je clique, avant que je ne clique sur ma souris pour la relâcher, le personnage continuait de bouger Mais finissons-en avec notre attaque. C'était une petite parenthèse. Considérons cela comme une parenthèse pour attaquer. Nous devons utiliser le curseur pour passer de normal à croisé, et en même temps, changer l' état de notre personnage pour qu'il vise essentiellement Depuis notre événement Tick, cela doit se produire constamment. En déplaçant la souris, nous devons savoir instantanément s'il y a quelque chose en dessous de nous. J'ai des ennemis sous nos ordres. Nous allons ouvrir une succursale. Nous allons placer notre fonction get location sous Cursor. Et nous allons le connecter. Chambre. Alors nous allons le faire une fois. Les deux ou tombent parce que quoi qu'il arrive ne doit se produire qu'une seule fois, et chacun se réinitialisera mutuellement. Nous allons faire une séquence, copier-coller toutes les deux et la première chose qu'ils font est d'en réinitialiser une autre. Maintenant, quelle est la prochaine chose qu'ils font ? Ils changent de mode si nous frappons un ennemi, nous allons croiser le sien, c' est-à-dire la souris que nous avons conçue. Nous avons remplacé avec notre souris rouge. Est-ce que c'est ça. Ici, nous avons un problème. Si nous visons, nous ne devrions pas changer le curseur, nous voulons donc sélectionner. Nous allons vérifier si notre statut de joueur est égal, égal en termes d'égalité. Deuxièmement. Si c'est vrai, alors nous allons garder le collimateur Si ce n'est pas le cas, nous allons revenir à la valeur par défaut. Si je laisse les choses comme ça, il y a un problème avec le fait que le vrai D ne soit pas compétitif. Qu'est-ce qui fonctionne. Travaillant. accord ? Je pense que nous allons résoudre le problème suivant. Et j'irai te voir alors, au revoir. 109. Pochoir post process et corrections de détection d'ennemis: Bonjour et bienvenue dans l'atelier de conception de jeux et avec Real Engine création de 5 RP procéduraux dans les donjons Auparavant, nous avions terminé avec notre personnage du haut vers le bas visant une partie de notre manette This is not a game. C'est un personnage. Il s'agit d'une manette. Nous en avons donc terminé avec la fonction « localisation de la partie G » de notre manette de jeu. Mais si nous visons un ennemi, nous vérifions. Nous lançons en fait une ligne de traçage depuis notre point d'impact, qui est le point d'impact. Dirigez-vous bien vers le point d'impact thermique de nos muscles. Maintenant, si cette ligne trace quelque chose de chaud, cela signifie que nous avons peut-être un ennemi, que nous avons peut-être heurté un mur. Nous ne le savons pas. S'il n'entre en contact avec rien, ce qui n'est probablement jamais le cas, nous rétablissons notre chaleur normale, puis les choses suivantes se produisent. Mais si nous touchons quelque chose, nous vérifierons s' il s'agit d'un ennemi ou non. Cela définit donc la variable temporaire de l'ennemi thermique. Ensuite, nous avons effacé la sélection d'objets , car si nous avions un élément dans notre sélection, nous ne devrions pas l'avoir car notre clic interagirait au lieu de tirer. Ensuite, nous avons continué à régler les décalages de rotation et un facteur entre notre muscle et notre facteur thermique. Nous avons obtenu le vecteur avant de rotation bleue fine pour définir le vecteur avant, et nous nous sommes rendus de notre joueur à notre position de chaleur pour trouver la rotation à laquelle nous devons faire face. Maintenant, nous avons eu quelques problèmes. Nous avons également terminé notre événement de clic sous la forme d'une petite parenthèse pour arrêter le mouvement lorsque nous relâchons le clic, car il se déplaçait constamment Ensuite, nous avons procédé à modifications pour changer le curseur de la souris selon que nous touchons un ennemi ou non, ayant à effectuer événements en fonction de cette branche ici, ils se réinitialisent mutuellement, et nous avons réglé le curseur de la souris Maintenant, ce que je voulais montrer que cela n'arrive pas nécessairement à chaque fois, c'est que la souris peut réinitialiser sa position lorsque nous changeons le widget. Cela peut poser quelques problèmes. Mais nous n'avons pas réussi à le démontrer raison d'un problème de ciblage. Je suppose que c'est un problème de collision. Nous allons vérifier. Mais ce que nous devrions faire comme solution de contournement, cela pourrait être corrigé dès maintenant. Mais nous allons définir notre position. Et la position dans laquelle nous allons placer la souris est la position de la souris. Nous allons donc obtenir un poste. Et portail. Il arrondit ce char. Il le fait automatiquement si vous essayez de le connecter à un entier, ce qui permettra de maintenir notre position fondamentalement en place. Oh. Découvrons ce qui se passe. Pourquoi ne pourrions-nous pas le faire ? Nous allons recréer cette situation. Nous avions un portail principal que nous ne pouvions pas abattre. Il y a une porte infernale. Apportons le caractère de la tuile, le personnage. À côté de l'enfer. Ici, il nous tire dessus. Je vais de nouveau fermer le son. Et je vais en reprendre possession. D'accord. Lorsque je sélectionne une porte, rien ne se passe. Voyons donc ce qui se passe dans notre ciblage. Je vais chercher la manette BTN, déconnecter et l' apporter ici Ça l'ancre. Je ne suis pas sûr. Déconnectez-le, peut-être. Je vais accéder à la fonction «   t » située sous Cursor. C'est cette fonction que nous voulons vérifier. Et ce qui nous intéresse, c'est cette branche ici, qu'elle trouve un ennemi ou non. Maintenant, pour montrer ce qui se passe. Nous devons cliquer dessus ici. Cela peut indiquer que ce n'est pas le bogue, mais c'est peut-être aussi automatique ici. Nous pouvons maintenant voir la ligne du bogue. Nous allons donc l' apporter ici. Si je ne vise rien, tout se passe correctement. Mais si je vais vers la cible, oui, rien ne se passe. Je ne pense pas que ce soit dû à une petite collision. Je pense que c'est parce que j'ai laissé la collision m' expliquer plus tard. Mais nous avons apporté quelques explications. Passons à la capsule. Ce que nous devons faire , c'est modifier les préréglages de collision en les personnalisant, et nous voulons bloquer la caméra Nous pouvons nous chevaucher avec n'importe quoi d'autre, mais nous voulons bloquer la caméra. Le canal de collision de la caméra, qui n'a rien à voir avec ce qu'il dit : caméra. Nous venons de décider que cette réponse à la course bloquerait et nous allons nous baser sur ces résultats. Cela n'a pas vraiment d'importance, c'est pourquoi nous avons choisi des appareils photo car peu importe ce qui est écrit ici. La façon dont nous avons choisi d'utiliser le système est importante. Ce ne sont que les ensembles définis par Unreal, mais il est judicieux de les utiliser tels qu'ils sont décrits car de nombreux mécanismes fonctionnent selon cette logique Mais encore une fois, lorsque vous créez vos propres objets, vous pouvez faire la programmation que vous voulez. Au moins ça marche, et d'autres personnes peuvent le lire. Allons appuyer sur Play. Je pense que cela résoudra le problème. Une souris doit devenir rouge lorsque nous découvrons que porte L n' en a pas sur cette carte, donc je vais réessayer. Nous en aurons plein ici. Dieu merci, la souris devient rouge. C'est comme le portail, et je peux filmer et lire. Je peux ouvrir là-bas. Ma santé ne dépend que d'un, et je tombe sur un piège. Où est l'état de santé de mon médecin ? Commencez à jouer. Nous y voilà. L'état de santé de Max, disons qu'il est à dix ans. Nous ne mourons donc pas instantanément. Si tu veux être vraiment cruel, tu peux mourir instantanément. Les joueurs M peuvent mourir instantanément lorsqu'ils tombent sur un piège et ils n'ont qu'une seule santé. Maintenant, la dernière chose que nous devrions faire pour notre personnage serait d' aller dans les paramètres du projet. C'est pour le Tencel Aston Depth Stan Sil Pass, et au lieu de l' activer avec Spencil La prochaine chose que nous allons faire est de passer à notre niveau et de faire une erreur de post-traitement. C. Volume post-traitement, et nous voulons sélectionner Word World. Quel était le nom ? Ce que nous recherchons, c'est d'être infini. Oui, explorez cette étendue infinie. La prochaine chose que nous devons faire est de passer à nos matériaux de traitement. Trouvez-les. Ajoutons un matériau à ce tableau. Serait Serait ou traitez tous. Processus M post. Je pense qu'il y a un exemple. Mon processus de pose insiste, ce serait tout. Ensuite, nous devrions passer à notre personnage ou à notre maillage statique personnalisé. Nous devons permettre cela. Cherchons donc une profondeur de rendu personnalisée. Oui, c'est ce que nous voulons, et nous allons le fixer à 21. Maintenant, en théorie, nous pouvons voir notre joueur derrière des murs. Ouais, c'est ici. Et la façon dont cela fonctionne, c'est que notre matériau, restons-y pendant une seconde. Je sais. Cela m'a été expliqué. C'est le cas, ceci. Donc, en gros, elle se cache entre la couleur de base et celle que nous voulons voir apparaître derrière la cible, B est cette cible Et cela est décidé par un masque comme celui-ci à partir d'ici, dont la première partie traite de la modification du matériau lui-même, et de la matière qu'il montre en gros. Donc, parce que nous avons la valeur 1, où nous avons beaucoup de valeurs uniques, mais de toute façon, je pense que c'est celle-ci, s'il s'agissait d'une valeur différente, cela affecterait la profondeur de snsiil que nous avons dite, si j'ai bien compris Donc, en gros, si c'était deux pour notre personnage, ça devrait être deux. Et comme tout le reste du monde est nul, nous verrions les deux, par exemple. Ou je pense que cela fonctionne simplement avec celui-ci et avec n'importe quoi d'autre dans le monde. Oui, je pense que c'est ça. Je pense que tout est nul dans le monde. Donc, parce que c'en est devenu un, nous pouvons le voir derrière les murs. Et en gros, c'est tout pour notre personnage. Nous avons terminé notre personnage. Maintenant, Turn a un I et toutes les tâches de débogage que nous devons faire Testons encore une chose. D'accord, l'ascenseur ne fonctionne pas, mais est-ce que le coffre fonctionne ? Je ne l'ai pas testé ? Pouvons-nous récupérer des articles ? J'en ai un, voici l'inventaire. Laisse-moi m'en servir. Y a-t-il un coffre ici ? Non. Où est le coffre ? Voilà, je clique dessus. Maintenant, je ne peux pas. Voyons pourquoi pendant une seconde. Peut-être que si c'est quelque chose de simple, nous pouvons le déboguer facilement maintenant Contrôleur, nous sommes en train de travailler. Pourquoi s'agit-il encore d'une collision ? Jouons. T. Déplaçons l'acteur directement sur le torse. Et je ne pense pas, j'imagine que vous n'entrez pas en collision avec le Je pense qu'il s'agit encore d'un problème de collision . Passons à notre poitrine. Imprimés, gros torse. Il n'y a pas de collision. Nous avons juste ce coffre ici et nous l'avons placé dans la partie inférieure de celui du haut. Notre masse va atteindre celle du haut, pas celle du bas. Alors peut-être que je l'ai mis en bas. Je vais le copier. Comme vous pouvez le constater, vous pouvez même copier groupes entiers en les basant sur eux. Et le travail fonctionne, copiez parce qu'il n'a obtenu que ce groupe pz Je dois peut-être copier l' intégralité de la collision. Propriétés, en tant que propriétés. Ça marche, ça ne marche pas, peu importe. Faisons en sorte que ces collisions soient vraies. Nous voulons donc simplement tout bloquer pour empêcher la combinaison de visibilité et de collision, comme une collision. Si ce n'est pas le cas, Non , il n'y aura aucune collision et cela ne générera pas d'événements de chevauchement. Je pense que ça règle le problème. Si ce n'est pas le cas, nous allons simplement participer aux collisions. Personnage à côté de la boîte, ce qui est très sympa avec une musique plus proche. Ici. Ou ce n'est pas le cas. Ce n'est même pas en bas, je clique sur le bas, mais ça ne fait rien vraiment. Donc, copions ces paramètres de collision et faisons en sorte que nous bloquons la caméra. Tu bloques O, ça ne marche pas. Fait Dans les deux cas, est capable. Où cela devrait fonctionner. Je revérifie à partir d'ici. Pour y retourner. Amenons le personnage à la poitrine. Encore une fois, cela ne fonctionne pas. Mais maintenant, nous devons également tester la ligne de traçage. Nous devons le déboguer. Nous allons donc sélectionner. Disons pour un cadre. Voyons si nous touchons quelque chose avec la boîte. Je m'éjecte de ma boîte d'acteur. C'est un h. À l'idée d'avoir déplacé le personnage, je l' ai déplacée de la vignette. Donc oui, en fait, nous sommes en train de toucher la case. Je vérifie. Nous sommes en train de toucher la case. La question se pose donc que demandons-nous pour que Actor Big Chest soit tiré Est-ce que ça court jusqu'ici, voyons voir I. Commençons par la boîte Où est la boîte ? OK. Non, il ne gère pas du tout cette branche. J'ai fait quelques tests, et pour une raison ou une autre, si je le connecte en face, je me connecte d'abord, puis je le mets à zéro et ensuite l'un d'eux fonctionne, ce qui n'a aucun sens. Je suppose que c'est à cause de l'objet que nous sommes chacun d'entre nous que nous testons Je ne sais pas vraiment pourquoi cela ne fonctionne pas. est normal, mais oui, ça l'a fait fonctionner. Donc zéro devrait descendre , puis un de cette partie gauche. Je suppose que c'est parce que celui-ci existe réellement. Pensez-y. Celui-ci existe, mais pas celui-ci Donc, en gros, pour le corriger, nous pourrions créer une chaîne d'événements, mais je pense que c'est bien Puisque ça marche. Je pense que c'est la raison pour laquelle je pense que parce que celui-ci existe et que celui-ci ne le fait pas d'une manière ou d'une autre, cela garantit qu'il fonctionne avant cette sortie Je pense que cela doit être logique. Bref, allons jouer. En fait, j'ai joué et testé. Nous avons d'autres problèmes que nous allons résoudre au cours de la leçon, puis nous allons commencer à utiliser l'IA. Le personnage jette des murs, chouette, où est la boîte ? I. Je ne vois pas l'infobulle, et nous allons voir pourquoi Mais si je clique, il s'ouvre et range les éléments au même endroit. C'est ce que nous allons découvrir lors de la prochaine. Au revoir. 110. Fixations de widget de propagation de l'article et de la poitrine: Bonjour et bienvenue sur Game Design Workshop sous le moteur 5, création de RPG d'action Procedural Dungeon Auparavant, nous en avions fini avec notre personnage, et nous avions découvert quelques bugs pendant le jeu. Commençons maintenant à corriger ces bogues. Alors, tout d'abord, passons à l'article BP. Et dans notre IOP, lorsque nous recherchons des mots, nous testons la visibilité. Caméra B. Maintenant, testons nos collisions. Maintenant, notre collision d'objets serait un atome, bloquant la visibilité, bloquant la caméra et la dynamique de guerre, et nous serions fatigués de la physique Passons maintenant à notre sphère, puis à nouveau à nos paramètres ou paramètres de collision. Cela devrait donc simplement tout ignorer, pas de physique et se chevaucher avec le personnage, car c'est notre gamme Passons à notre widget, qui ne présente aucune collision. R C'est une interface utilisateur, mais changeons cela sans collision. Cela n'a pas vraiment d'importance puisque nous le portons à l'écran. Ne génère pas d'événements de chevauchement. C'est bon. Compiler. Et passons à notre gros coffre. Réparons d'abord à ce problème. Sélectionnons nos deux maillages et disons qu'ils disons qu' génèrent des événements physiques, si quelque chose le sait vraiment Laissons-le simplement allumé. Passons aux collisions activées. Nous voulons qu'ils soient tous les deux purement physiques, qu'ils soient tous deux statiques, et disons qu' ils bloquent tout. Maintenant, revenons à notre article et augmentons également la centaine. Nous lui donnons donc un peu d'autonomie. Allons nicher. Près de la boîte. Ouvre-le. Plus près. La position à l' écran est peut-être la même, mais nous ne pouvons même pas voir les objets. Sont-ils tous là ? Ils sont toujours là. Cela n'a pas résolu le problème, peut-être lorsque nous déplaçons les éléments de notre chronologie ici, et que nous les dessinons graphiquement Nous nous déplaçons par téléportation. Non Ce n'est pas un inventaire complet. Vous ne voulez pas que celui-ci figure sur l'élément d'animation. O par ici. Oui, la téléportation n' est pas cliquée ici Peut-être parce que s'il le fait, il prend en compte la collision. Et la grande boîte ici, comme si j'avais vu les objets bouger. Il semble qu'ils bougent, mais au final, ils reviennent à o. Passons donc à notre chronologie, mais nous animons à nouveau l'élément Et à la fin, définissons simplement l'emplacement de l'acteur. Pas de mise à jour, terminez jusqu'à la destination finale, dont j'ai obtenu la localisation. Voyons si cela fonctionne. Il y a peut-être quelque chose qui le réinitialise. C'est à côté de nous. Oui, ça a marché. Ils y restent donc. Sympa. OK. Le texte est un peu long. Cliquons sur. L'un d'entre eux. Je ne peux pas ramasser d'or. Non, je peux. Mais il n'est pas en train d'être détruit. Je peux ramasser une infinité d'or. Donc, la première fois que je le prends, il diffuse l'animation de l'inventaire complet. Intéressant Maintenant, choisissons une potion. J'ai une potion, utilisons-la. Pourquoi continuer à bouger ? Potion de rage. Je l'ai ramassé, il y est resté. Il semble donc qu'ils ne se détruisent pas eux-mêmes. Corrigons le widget pendant une seconde. Supprimons toutes ces lignes de traçage car elles sont agréables à voir. Nos lignes de traçage se trouvent donc dans notre boucle Wi. Et sur l'objectif, Dave. Voyons pourquoi ils ne sont pas détruits. Quand je les choisis, c'est le mode jeu. L'inventaire des gobelets, quand il tombe et que son épingle tombe, s'arrête là. Et ne pas revenir choisi au final. Parce que nous ne renvoyons aucun pic dans les autres options lorsque c'est possible et que nous sommes complètement bloqués ou que l'inventaire est plein Nous revenons que nous ne pouvons pas le cueillir, mais nous ne pouvons pas le récupérer lorsque nous le récupérons. Cela devrait donc résoudre le problème. Corrigons le widget pendant une seconde. Passons à moi et passons à l'ancien article. Changeons la taille à 21. Audacieux. Toute cette audace. Il y en a un autre. Utilisons le drop it as better et distribuons par défaut. Maintenant, ils devraient être plus beaux. Cette ligne que vous voyez ici, c'est parce que je n'ai pas l'écran de chargement. Vraiment, je ne pense pas que ce soit ça. Mais ajoutons l'écran de chargement, ouvrons donc l'écran de chargement. Également. Qu'est-ce qui pourrait être. Oh, c'est visible. Vous avez l' écran de chargement. Oui, nous le savons. Nous allons donc vérifier quelles sont les lignes ici. Allons chercher les objets. O est le coffre dehors ici. En tapant sur la poitrine, les objets tombent. Tu peux les voir rentrer. Mais pour le moment, c'est bon. Je peux les récupérer, je me fais détruire. Y avait-il de l'or. Nous avons une zone secrète. C'est ce que tu as vérifié. Pourquoi ne le fait-il pas. Un moyen. Copions également ce test dans un petit coffre. Passons au petit coffre. Les deux. Je vais y aller un par un. Je vais juste copier la collision, ceci et le coller. Je travaille Je vais travailler. Dépêchez-vous de passer à autre chose. Cela devrait être la catégorie de ce groupe, mais cela ne fonctionne pas. Bref, un par un. Nous devons tout ignorer, bloquer la caméra et la visibilité , bloquer et corriger. Toujours une requête Jack uniquement, les deux requêtes sont activées, non ? Ce serait ça. Allons tester pour les points. Ils sont en train d'être détruits. Je pense qu'ils vont être détruits. C'est quoi cette ligne ? C'est très embêtant. Une rage qui fait rage à une pièce de monnaie. J'ai besoin que la pièce soit déposée. Maintenez. Nous y voilà. Hein ? J'accepte l'or. Je l'ai. Génial. Prends les choses, utilise-les. Prends le reste. J'ai déjà une clé. C'est pourquoi je peux obtenir la clé. Cela apparaît un peu vite, n'est-ce pas ? Je veux que ce soit un peu plus lent. Je peux voir le widget apparaître, mais c'est tellement rapide C'est très bien La deuxième fois, ça va un peu vite. Quelque chose que je suis un peu rapide. Donc, tout d'abord, le widget ne s'affiche pas sur le coffre lorsque je le survole. Alors choisissons-le aussi. Ce qui manque, c'est le code pour cela. Vous allez donc copier-coller le code de l' élément BP, à savoir start hover et event and hover Nous allons le copier. Il a cette fonction. Copier-coller d'abord la fonction. Donc, visibilité du widget, allons dans le coffre, allons dans les fonctions, collons-le. Toutes les variables existent, tout va bien. Ops. Nous devons le fermer. Allez dans le gros coffre, collez-le également ici, toutes les variables sont bonnes, c'est prêt. Passons à notre article. Copiez ceci. Dans le graphe de ventilation, collez-le ici. Ou parais bien. Toujours dans la poitrine, même un graphique, je vais le corriger ici, maintenant nous devrions avoir un g au-dessus de la poitrine. Quelque chose quand l' appareil photo change, je pense que lorsque sa lentille crée cela avec la poitrine Ensuite, créez ou créez des scénarios assez géniaux. Voici donc le widget. Et je clique sur le widget et rien ne se passe. Si je clique sur le coffre, il se passe quelque chose. Oshion. Wold Oh. Problème. Le clic est comme ça. J'ai compris. Parfois, cela signifie un deuxième clic. Je suppose que c'est lié à la concentration. Tu devrais régler ça aussi. Arrêtons. Le tas d'erreurs. Remplissons-les. Quelle visibilité la visibilité est la notabilité, quelle visibilité C'est. Parce que lorsque je récupère l'article et que le widget disparaît, nous en avons besoin d'un valide ici. Lorsque nous devons le récupérer, il est détruit, donc le widget n'existe pas. Il essaie de se cacher. Pas de problème Passons à la suivante. Propriété des widgets, non valide. Je suppose que c' est pareil. Je suppose que pour la même visibilité, la même visibilité du widget, la même collision, le widget Donc c'était génial parce que lorsque nous venions chercher un objet, il était détruit, et nous avons demandé de faire tout cela Donc, je pense que c'est un bon point d'arrêt. Nous allons continuer à nous taper sur le suivant. Au revoir 111. Corrections du widget d'article et code d'ascenseur: Bonjour et bienvenue sur Game Design Workshop Real Engine Five Procedural Dungeon Action Arbsic Auparavant, nous avons débogué certaines choses dans le jeu, et maintenant nous allons continuer sur cette Maintenant, sélectionnons notre appareil photo. Et ce que nous devrions changer, c'est la contrainte, le rapport hauteur/largeur, car cette petite ligne verte qui apparaît ici est due au fait qu'elle essaie de limiter le rapport hauteur/largeur et le post-traitement avec le stand sil ne va pas vraiment de pair avec cela Donc oui, nous allons simplement le désactiver et changer le champ de vision à 55, qui correspond à notre caméra pour le joueur, 55. Donc maintenant, si nous jouons, nous ne voyons plus lignes ici pour limiter l'aspectation, faire une sorte de cinématique Pop, et cachons cette ligne de trace à la maison. Allons chercher l'emplacement sous le curseur dans le contrôleur Optan et définissons-le sur le bogue Et j'ai remarqué qu' il y avait un problème. Quand je clique sur des objets et que je ne m'arrête pas, la boîte est la boîte. Supposons que je déménage et que l'officier veuille un objet. Non, j'ai arrêté. P. Le problème, c'est que la première fois que nous cliquons sur le widget, cela ne se produit pas, et la deuxième fois que le défilement s'exécute, il s'exécute plus rapidement. Alors, allons le réparer. Tout d'abord, le problème avec le coffre, et non pas vraiment le fait que le coffre n'a pas code obligatoire pour s'ouvrir lorsque nous cliquons dessus L'élément fait, comme si nous y accédons, nous pouvons voir que nous avons lié une interaction sur les widgets Bouton Copions ceci. Allons dans notre poitrine et interagissons sur la base de ce COVID. Faites-en un pur plâtre. Il est personnalisé avec un bouton Bind Zoo . Connecté ici. Copiez-collez ceci. En fait, nous devons d'abord commencer à jouer. Bouton d'appel. Maintenant, nous l'avons copié ici. Et passons à la poitrine. Cette année, passons à la fonte pure. Connectons-nous cette année et au moment commencer à jouer, finissons par régler le problème. Bindon. Maintenant, résolvons le problème de focalisation. Nous faisons cela, nous allons commencer à jouer à la manette. C'est où ? Juste au niveau de la carte, dans son contexte, commencez à jouer. Donc, ce que nous voulons faire, c'est obtenir une référence à soi, donc au contrôleur, et entrer Ode et UI. Les deux permettent de se concentrer à tout moment. La seule chose que nous devons faire est décliquer sur SO pendant la capture, afin que lorsque nous cliquons sur une interface utilisateur, le so ne disparaisse pas Oh, il y en a même une pile. Nous allons tester cela. n'y a pas de salle de test. Chien. Enfin, il y a une fin, ça réchauffe, passe à la musique. Hey, apportons ça ici. Je ne l'ai tout simplement pas vu. A fonctionné instantanément. Maintenant, ce que nous voulons, c'est que cela fonctionne instantanément, alors cliquez. Non, cela n'a pas fonctionné instantanément. Fonctionne maintenant instantanément, mais cela n'a pas fonctionné la première fois. Pourquoi ne peuvent-ils pas attraper aussi froid parce que je clique sur la partie « rage ». J'ai attrapé le rhume. Maintenant, le problème, c'est que les éléments eux-mêmes ne sont pas cliqués instantanément Découvrons pourquoi. Faisons encore un test. J'ai peut-être fait quelque chose de mal. Je ne crois pas. Cliquez sur le coffre pour ouvrir. Je n'ai pas de potion temporelle, restons-en à la potion temporelle. Je clique, il disparaît et rien ne se passe. Ici. Tirez. La deuxième fois, cela fonctionne, même si j'ai Alt ou si j' essaie simplement de cliquer dessus normalement, sur l'élément puis d'accéder au widget, cela fonctionne toujours. Ce n'est pas le cas la première fois. Je veux essayer pour la première fois de passer de l'article au widget pour que les choses soient plus claires pour moi. Mais je pense que cela a quelque chose à voir avec notre code et c'est le coffre. Hé, passons de l'élément au widget. Plus vite. La première fois que je clique dessus comme ça, ça marche. Je clique dessus comme ça, il disparaît. Donc, quand j'appuie, je clique. La première fois qu'il disparaît. Il doit y avoir une sorte de mauvaise opération de commande. Nous allons vérifier. 112. Ajustements du widget d'élément et fonctionnalité de l'ascenseur: Bonjour et bienvenue sur Game Design Workshop, véritable cours de création Procedural Dungeon Action PS sur le moteur 5 cours de création Procedural Dungeon Action PS Faites des tests rigoureux. Je me rends compte en quelque sorte de ce qui se passe. C'est assez évident. Mais lorsque nous sélectionnons, lorsque nous définissons la visibilité, et que nous nous concentrons, nous ne définissons pas l'élément à cibler. Nous allons donc obtenir la manette. Nous allons obtenir dans notre lot de widgets, quel composant nos widgets nous allons obtenir un widget. N'oubliez pas qu'il s'agit d'un composant. Il s'agit de l'objet entité réel, et nous allons saisir Y, et nous allons nous concentrer sur cela. Une autre chose que j'ai remarquée, c' est que la chronologie ne correctement lorsque nous avons déjà un article dans notre inventaire. Parce que nous avons connecté cette pièce. Il doit être connecté dès le début du jeu , car lorsque nous rechoisissons un objet, il ne peut pas rentrer dans notre inventaire, après une chute ou, pour une raison ou une autre, nous ne pouvons pas le sélectionner de toute façon Cela commence par le jeu, et lorsqu'il est terminé pour la première fois, il ne rejoue plus jamais parce que c'est terminé. Mais nous avons besoin de cette pièce dès le départ. Maintenant, une dernière chose dont nous avons besoin est de passer à notre mode de jeu, et maintenant, je pense que nous l'avons défini. Je pense que nous l'avons déjà défini, défini le mode de saisie et l'interface utilisateur, et que nous avons commencé à jouer sans masquer le curseur. Pas non plus mon curseur dans l' élément. Ont-ils cliqué dessus ? Pe, je ne l'ai pas fait. Donc pas non plus de curseur. Lorsque nous réglons la visibilité de la perruque. Ce serait, je pense, « Allons jouer ». Il y a le coffre là-bas ? Ileal n'est pas tombé, tant mieux. Types de tigres, attaques. Oh, qu'est-ce qui se passe ici ? Est-ce visible dès le début ? C'est parce que je cible la poitrine. D'accord. Oui, parce que c' est normal quand je le contient. D'accord. Ouais Ouvrons donc le coffre. G, la clé. Donc, cela fonctionne depuis le début. , je prends cette photo et je reçois à nouveau les objets, photos, et ça marche. Sympa. En train de jouer. Maintenant, la prochaine chose que nous devons vérifier est le widget de jeu. Lorsque nous jouons l' animation de la prise d'un objet. Passons donc à votre gameplay, trouvons l'animation, l'onglet Animation, le choix des éléments, les références. OK, prenez le pinceau de réglage de la taille de l'article, puis continuez. Restaurons l'état car chaque fois, il devrait être joué depuis le début. Cet état de restauration est nécessaire. Appuyons, cela va sélectionner Start. C' est parti rapidement. C'est le personnage, ça l'est. Le personnage est là, en train de taper sur des pièges. Maintenant, nous devons choisir des objets sur une ligne. Choisissons ceci, et choisissons ceci. Et il joue le mien. Voici un personnage qui ne cesse bouger. Quand est-ce que cela se produit ? Quand je n'arrive pas à atteindre une destination parce qu'elle continue d'essayer. Hein ? Je pense que nous allons laisser les choses telles quelles, peu importe. Ce que nous allons devoir faire, c'est réparer l'ascenseur. Parce que pour le moment, l'ascenseur ne fait tout simplement pas exploser cette plate-forme, n'est-ce pas ? Nous avons une clé. Allons à notre ascenseur. Va vite ici. Lieu. A mangé. Que se passera-t-il ensuite ? Non D'accord. Je pense que c' est assez simple. Nous allons à l'ascenseur et je n'ai pas fait descendre le Pence. J'appelle Pence à la fin de l'événement, auquel l'ascenseur arrive. Près de l'ascenseur Et elle. Coup de cœur. Oh, j'espère ne pas t'avoir écrasée, mais il y a une raison à cet accident. Quand j'ai ajouté Fence Down, il faut le faire une fois après cette branche, sinon l' animation continue encore et encore. Il continue de le faire fonctionner encore et encore très vite par image, et cela se décompose. Une autre chose que j'ai remarquée c'est que lorsque nous créons un labyrinthe, nous faisons apparaître le personnage Et nous conservons la référence comme ça. Mais lorsque nous créons un nouveau labyrinthe, nous n'avons pas cette référence Donc, ce que nous allons faire, c'est aller sur la planète d'origine, n'est-ce pas ? Et quand ça continuera, nous passerons à nos modes de jeu Nous avons une référence sur un mode de jeu ici. Maintenant, nous ne le savons pas. Mais nous avons une manette, je pense qu'il n'y a plus de manette ici, elle l'est. À l'écran. Nous avons donc une référence de joueur. Nous savons que pour que la manette de jeu contienne cette référence au joueur, elle est déjà remplie lorsque nous passons au niveau deux, le générateur de labyrinthe de bactors, où est-il ? Voilà, et nous allons acheter une manette de jeu. Comme du haut vers le bas. Convertissez un animal de compagnie. Nous allons nous faire payer. Et nous allons définir ici notre référence de jeu par rapport à celle-ci. Va jouer. Tout doit être en ordre. L'ascenseur est fermé. Nous avons déjà une clé. Puis écrasez à nouveau. OK, après quelques recherches, j'ai réalisé qu'il y avait deux choses qui ne tournaient pas rond. Tout d'abord, dans le labyrinthe, lorsque nous créons le labyrinthe, nous faisons apparaître le joueur et nous détenons Mais lorsque nous retrouvons un labyrinthe, nous n'avons aucun moyen de passer la référence « Nous ne redéfinissons pas cette référence Le nouveau labyrinthe ne sait donc pas qui est le joueur. Donc, pour résoudre ce problème, nous allons venir ici au début. Commencez à jouer. Lorsque nous disons « continuer », mais lorsque vous poursuivez le labyrinthe, nous allons définir la référence du joueur, nous allons obtenir notre manette de joueur Nous allons descendre. Nous allons en faire un pur casting. Je vais me connecter. En fait, nous allons obtenir une référence de jeu. Et nous allons relier cette référence de joueur à notre joueur. Maintenant, le nouveau labyrinthe connaît un joueur. Maintenant, la prochaine chose qui pose problème, c'est ici. Intéressant Au début de l'événement de chevauchement, lorsque nous créons le nouveau labyrinthe J'ai fait une erreur ici. Quand je demande le double de la taille du labyrinthe, combien de tuiles il peut contenir en gros Je demande avec le plus un. Donc, si j'ajoute plus un, cela peut-il convenir, puis je n'ajoute pas plus un parce que cela alimente. Je devrais donc me demander si le labyrinthe actuel, et ce qui m'a laissé entendre c'est que chaque fois que j'ai eu un crash, c'est parce que le labyrinthe dans lequel nous avons eu cette erreur ici, nous l'avons créé C'est le seul code d'erreur que nous avons réellement créé. C'est incroyable que ça se soit réchauffé par accident. Nous avons donc compris que ce labyrinthe ne peut pas en construire davantage. Et quand nous le voyons tous les deux tomber en panne, il a ce problème. Donc oui, c'était le truc. Il construisait plus que ce qu'il pouvait supporter. Je ne peux pas en supporter plus, et certaines de nos règles ici auraient pu dire que nous ne pouvons pas construire quelque chose, peut-être qu' un fouet s'est figé Maintenant, allons tester une dernière fois. Et l'ascenseur. Nous pouvons toujours emménager ici, mais je pense que c'est bon, si nous ne nous échappons pas par erreur dès le début en entrant. Ce serait très bien. Donc, une lumière très vive. Vous modifiez les paramètres de l'appareil photo. Je vais dans le deuxième labyrinthe, je vais chercher la clé. Ajoutons un peu plus de temps. Voyons ce truc interminable se produire. C'est le prochain labyrinthe. O. Quand je m'éjecte, le labyrinthe ci-dessous a été détruit. Quelque chose est resté. Le gros coffre ne sera pas détruit. Une fois ajouté, cela devrait probablement être ici. Il devrait y avoir un coffre. Il y a un coffre ici. Les gros coffres doivent être ajoutés à la liste des acteurs des destroyers, et nous avons le troisième labyrinthe et celui qui grandit et grandit de plus en plus. Déplaçons-nous sur le côté O. Ici. La clé Un moment également à l'époque. Qu'est-ce que l'ascenseur ? Ici. Peut-être que la phase suivante devrait être plus importante que celle-ci. C'est en fait plus petit. Sommes-nous en train de réduire notre taille ? Sommes-nous en train de réduire notre taille ? Ou est-ce que c'est plus gros ? C'est juste que celui-ci a trois chambres. Nous en avons deux. Mettons-y le coup d'envoi. Plus gros, je ne sais pas. Et ça a l'air pareil. Un C'est le look. , c'est la clé de Ici, c'est la clé de l'acteur. Trois chambres. Combien ajoutons-nous à chaque fois ? Je pense que nous ajoutons trois blocs à chaque fois. Deux. Non, ça va être aléatoire, n'est-ce pas ? Un, deux, trois, quatre, cinq ou six, voire huit, voire 12, 13, 14, sur 21. Deux, 22 et des blocs. Regardons le suivant. Faites-le depuis le début, comptez les blocs. Avec la clé. À tout moment. Allons prendre un peu de temps. C'est bon. Dans le joueur il semble plus grand maintenant : un, deux, trois, quatre, cinq, 1012, 14, 15 2021, 23, 24, 26, 27, 29 et huit e, f. Oh, nous ajoutons des boîtes. Nous les ajoutons lentement. Nous pouvons l'augmenter si nous le voulons, par exemple au niveau du générateur plus trois à chaque niveau, et il grandit de plus en plus. Maintenant, notre pièce principale est prête. La seule chose que nous devons ajouter est notre IA et choisir un peu nos couleurs et nos lumières. Oh, ce sera moi pour celui-ci. Je te verrai le prochain. Au revoir 113. Import de personnages Morigesh et système de santé IA: Bonjour et bienvenue dans le cours de création de piquets actionnels Game Design Workshop et Rail Engine Five Procedural Dungeon création de piquets actionnels Auparavant, nous en avions fini avec nos bugs. En fait, nous n'en avons pas fini avec nos bugs. Je suis sûr que nous en trouverons d'autres. Mais au fur et à mesure que nous les trouverons, nous les réparerons. Maintenant, il est temps de démarrer notre IA, ce qui signifie que nous devons également expliquer certaines choses. Mais commençons par créer un dossier dans leurs plans Toute cette IA. Entrons dans ce dossier. Et aussi, téléchargeons. Euh, non, à partir d'ici. Notre personnage de Paragon, Morgue Mies, Marie, je ne sais pas comment il est orthographié, comment il se prononce, qui figurera dans Vous ne l'avez pas, vous pouvez le trouver gratuitement sur le marché, comme nous l'avons montré pour comme nous l'avons montré notre autre personnage de Paragon, Revenant Oh. Ajoutons-le au projet. C'est ici. Cela va prendre un certain temps. Oh. Maintenant que nous avons notre personnage de Paragon. Revenons à notre enquête pour vérifier que nous l'avons. Personnages hypothécaires, audio. Un héros. C'est vrai. Ouais. Tout semble aller pour le mieux. Je viens de vérifier les animations du reste des dossiers, mais passons à notre dossier A, qui n'existe pas. Je vais le créer à nouveau. Je pensais vraiment l'avoir fait. Quoi qu'il en soit Dans ce dossier, passons à notre personnage Morgs. Personnages, raconte Mig. Dupliquons ce joueur hypothécaire. Faisons-le glisser et déposez-le dans le dossier AI. Oh, tout d'abord, nous avons notre caractère. L'IA a besoin d'un personnage. La deuxième chose dont une IA a besoin, c'est d'une manette, qui est la même que le joueur. Mais nous allons cliquer sur AI Controller. Là, nous pouvons passer à l'impression Lue et à l'IA. Et nous allons sélectionner AI Controller. Je vois le nom car nous pouvons avoir des manettes différentes pour différents ennemis. Et renommons le personnage en I one En bref, qu'est-ce que le contrôleur AI ? Il est conçu pour régir le comportement de l'IA, comme c'est le cas pour notre personnage , nous décidons des entrées ou de notre personnage, nous décidons sur quel joueur nous appuyons, en fait, et le contrôle traduit cela au personnage, au I ou à quoi que ce soit d'autre. Mais il en va de même pour le contrôleur de l'IA. Elle couvre le comportement. Maintenant, la prochaine chose dont nous avons besoin est un comportement IA t. Appelons cela un comportement AI AIP Et qu'est-ce qu'un arbre décisionnel, un arbre comportemental basé sur l'IA ? Eh bien, c'est une structure de prise de décision. Nous pouvons l' appeler ainsi. Il s'agit d'un arbre, organisé en t avec différents nœuds qui déterminent ce que l'IA doit faire, en fonction des règles. Et les arbres peuvent inclure d'autres arbres. Ils peuvent décider d' utiliser d'autres arbres, d' effectuer des tâches complexes en toute honnêteté et de les déboguer facilement Maintenant, l'arbre des comportements est livré avec un autre élément appelé tableau noir, qui est chargé de contenir les valeurs Il s'agit d'un modèle de valeurs pour l'arbre des comportements. Il stocke les données, et il est efficace de communiquer avec l'arbre et les données que nous avons stockées. Mais pour être honnête, c'est aussi un peu exagéré par rapport à l'ampleur de notre IA, mais nous allons l'utiliser simplement pour montrer comment nous l' Il est davantage conçu pour des actions d'IA très complexes. Eh bien, appelons ça. C'est mon. Et les prochaines choses dont nous aurons besoin sont un service et quelques tâches. Qu'est-ce qu'un service ? Il s'agit d'un type spécial de nœud décorateur dont le comportement consiste à effectuer des tâches à intervalles réguliers, comme cela pendant cette période Par exemple, nous allons utiliser hos pour obtenir certains attributs de notre personnage et les transmettre au quartier noir. Et les tâches sont les éléments fondamentaux des arbres de comportement. Ils représentent chaque action ou ensemble d'actions que l'IA peut effectuer. Par exemple, nous allons utiliser un t prescrit, qui est déplacé vers un emplacement, qui est déplacé vers un emplacement, mais nous pouvons créer une tâche Nous pourrions effectuer une tâche qui serait beaucoup plus compliquée à déplacer, car elle pourrait avoir de nombreuses autres règles. Mais nous allons approfondir les tâches et les services lorsque nous les créerons. Parce que pour l'instant, nous devrions saisir notre personnage d'IA. Et fais-le compiler. Pour ce faire, il vous suffira tout sélectionner et de le supprimer. Nous supprimerons également le nombre de comptes, le nombre d'attaques, l' attaque de sauvegarde, l'apparence de base, le tour de base et, bien sûr, nous allons supprimer la caméra polo et la perche de caméra. Mais nous allons ajouter quelques éléments plus tard. Nous aurions pu utiliser le modèle à la troisième personne pour le faire, mais cela reviendrait à dupliquer et supprimer beaucoup de choses prendrait plus de temps Oh, classez et enregistrez. Fais tout ça. Nous allons tout fermer maintenant. Ayez le matériel d'IA. Et aussi, ouvrons le contrôleur IA ennemi pour qu'il affiche même un graphique. La seule chose dont nous aurons besoin ici, c'est le comportement t. Le comportement t serait notre t. Savors. Maintenant, c'est le seul code dont notre contrôleur a besoin dans l'arborescence. Je vais fermer ça. Nous allons ouvrir l'arborescence de l'IA. Tableau noir. Maintenant, nous pouvons accéder au tableau noir l'arbre d'IA situé sur ces deux sommets. Nous n'avons pas vraiment besoin que le tableau soit ouvert, cela n'ouvre pas l'arborescence de l'IA Revenons à notre ennemi de l'IA et créons quelque chose de simple. Disons que chaque fois que nous subissons des dégâts ou des dégâts. Nous allons réduire notre état de santé. Oh, créons deux variables. L'un serait b serait des flotteurs, et l'autre serait la santé inhérente Et le prochain serait M Health. Oh, nous allons retrouver notre C et la santé. Nous allons soustraire. Les dégâts. Nous allons porter le flotteur à zéro et à Mx Health. Et en fait, compilons et définissons des valeurs par défaut. Disons que MC Health serait : Combien de fois l'IA devrait-elle obtenir ? Disons trois. Oh, mettons-en trois. Santé. Fixons la valeur de chute du courant t à trois. Ou nous pouvons commencer à jouer et régler la santé maximale sur la santé actuelle. Oh, nous allons vérifier si c'est inférieur ou égal à zéro, et nous allons ouvrir une succursale. Il ne va émettre aucun son. D, ce qui serait quelque chose comme celui-ci. Les bananes attaquent la tasse Guo C'est donc une attaque féminine, je ne sais pas. Ça a l' air d'être un succès. Ensuite, nous allons créer deux événements pour les clients. Répliquez cela, l'une d' elles s'appellera la mort. Et l'autre sera appelé personnage étourdissant une fois que nous aurons été touchés et qu'il aura encore de la santé, nous serons étourdis ou étourdis Et sinon, il va mourir. Nous avons maintenant un système ou une IA qui peut être endommagé et/ou étourdi. Je pense que c'est suffisant pour celui-ci. Nous allons passer à la suivante. Au revoir. 114. Retargeter les animations revenantes vers Morigesh: Bonjour et bienvenue dans Game Design Workshop et dans le cours de création de RPG d' action Real Engine Five Procedural Dungeon création de RPG d' action Auparavant, nous avions créé notre plan d'ennemi NI. Nous avons créé notre contrôleur ennemi basé sur l'IA, notre arbre de comportement et notre tableau noir Ensuite, nous sommes allés de l'avant et avons créé du code. En fait, nous avons d'abord supprimé le code qui était déjà là ainsi que certains composants. Ensuite, nous sommes allés de l'avant et avons créé un système de dégâts pour réduire notre santé chaque fois que nous subissons des dommages. Et si c'est zéro, notre santé, nous allons mourir ou ne pas mourir, et nous allons émettre un son et être stupéfaits. Maintenant, nous continuons avec notre mécanique. Nous avons à nouveau besoin d'une machine étatique. Nous allons donc accéder à notre dossier AI, nous allons écrire click, nous allons accéder aux plans et créer une énumération d'énumérateurs Et nous allons l'appeler E AI One States. Allons-y et ajoutons quelques rebelles. Disons que nos États patrouillent. Si c'est l'orthographe correcte, mais peu importe, Attaque. Disons. Ayons également une position. Utilisez l'orthographe pour attaquer. Il y a beaucoup de mots dans celui-ci. Maintenant que nous avons les États-Unis. Revenons à notre IA et augmentons-les. Nous allons dater la variable, nous allons l'appeler AI. Il sera du type E huit, je l'affirme. Maintenant, terminons avec notre épreuve de stand, car ça va être facile. Nous allons demander si notre état actuel est égal à stat et si c'est le cas, nous n'allons rien faire. Si ce n'est pas le cas, nous allons définir notre état et jouer à Amontage. Créons maintenant Amontage. Accédez à notre animation, note. Mortgage et je vais le chercher. En fait, nous devons créer un montage à partir de celui-ci, huit montages d'animation, et je vais entrer dans le montage et laisser l'état aller au haut du corps, la fente au haut du corps. Parce que nous n'avons pas vraiment besoin de faire grand-chose sur ce plan d'animation, car il est conçu pour ce personnage. C'est faux. Maintenant, quand il ouvre le mauvais, nous pouvons le changer d'ici, les trois points ici, passer à celui que nous voulons. Maintenant, cela utilise déjà ce que nous voulons en grammes, tout. Et dans Event Graph, tout est configuré pour le joueur de Morigs Nous n'utiliserons pas les attaques ou quoi que ce soit d'autre, mais nous n'aurons pas d'erreurs non plus. Non, revenons en arrière, je vais le supprimer , le fermer. Je vais également clore le montage. Pour le montage, nous allons choisir le front thermique. Les deux. Je vais le glisser-déposer ici. Je ne sais pas pourquoi il y en a deux. L'autre doit être le modèle. Quoi qu'il en soit Voici donc le montage de la pièce. Le montage Mooch One. Et nous devons connecter le maillage squelettique, et je vais vous proposer à nouveau Montage. Et maintenant, pourquoi avons-nous besoin de la plus avancée ? Parce qu'une fois terminé, nous voulons que cela soit terminé, que cela revienne à l'attaque. Parce que quoi qu'il arrive, même si l'IA ne se rend pas compte qu'il y a un joueur à proximité, si un joueur lui tire dessus, elle change pour attaquer le joueur. Tirez essentiellement vers le joueur. Maintenant, allons terminer notre mort. Tout d'abord, quoi qu'il arrive, il ne doit se produire qu'une seule fois. Faites-le une fois. Juste au cas où il serait à nouveau endommagé et que cela se déclencherait, nous avons besoin d'une variable pour savoir que nous sommes morts. Nous avons un b. Appelons ça la mort. Nous allons le régler sur true. La prochaine chose que nous allons faire, c'est émettre un son. Ouais. Pour le son, il faut crier Une femme crie, ça y est. C'est un bon son de mort. Je vais assister à une collision entre acteurs en fait, pour la désactiver Actor active la collision pour désactiver le papillon. Quoi qu'il en soit, définissons l'acteur. Pi désactivé. Faisons en sorte que les mouvements de notre personnage soient les mêmes que ceux de l'air. Mettons Walk à zéro. En fait, réglons également la vélocité à zéro. La raison pour laquelle nous faisons cela, en laissant la vélocité et le maximum atteindre zéro c'est juste au cas où notre graphe d'animation, qui est affecté par ces variables, recevrait une mauvaise commande dans la dernière seconde, peut-être quelque chose comme ça. Ainsi, lorsque nous mourons, nous mettons ce paramètre à zéro, et rien d'autre ne change l'animation. Maintenant, la prochaine chose que nous devons faire est de jouer un montage. Eh bien, trouvons la mort. Un peu cette animation. Si nous avions une particule ou quelque chose comme ça et qu'elle disparaissait, ce serait bien. Mais faisons quelque chose de plus à la fois. Je pense à un bar, comment s'appelle-t-il ? Un revenant ? Comme une meilleure mort. Nous l'avons effectivement utilisé ici. Nous allons donc dans notre navigateur de contenu. Mort Il s'agit d'une séquence d'animation sur la mort extraite de Revenant. Nous allons le dupliquer. Lubrifier. C'est ici. Déplaçons-le dans le dossier AI, afin de pouvoir travailler plus clairement. Je l'ai perdu maintenant. Ciblez d'ici à A. Ici. Non, je vais cliquer sur la cible, qui la dupliquera également, mais la cible serait de faire l'Arti Manan Et O Source Need Revenant. Je serais mota. Nous allons passer à une cible de presse. Voyons ce que nous avons créé avec l'IA. Il n'a pas été créé ici. Je pense que oui, c'est une question de contenu. C'est bon. Cela semble bien. Le squelette est un peu étiré, mais il va bien. Je pense que c'est un petit peu. Ça a l'air bien. Ah, Dave. Maintenant, l'animation de retargeting n'est généralement pas si simple, mais les personnages de Paragon sont d'accord. La plupart d'entre eux, comme Mortgage et comment il s'appelle Revenant. Je ne devrais pas le mettre dans le dossier AI, ou maintenant parce que les dossiers de ne le faisaient pas. Existe déjà. Oh, renommons ça. Ciblez la mort. Ou c'est une mort retardée, et on peut la déplacer. Et sortons-en un montage. Appelons pour réclamer une amende. Passons au montage, changeons l' emplacement du groupe, pour le haut du corps. Donc, compilez. Retournons voir notre ennemi et jouons au montage. Ton sera notre maillage, et les montas seront ceux que nous venons de créer Maintenant, nous devons supprimer certains éléments dont le code existe déjà, car nos codes peuvent être des composants, nos codes peuvent être des mais pour le moment, c'est le cas pour le copier-coller Pas sur nos articles, des gouttes sur notre poitrine. Je vais aller jusqu'à notre poitrine. Et je vais faire l'inventaire. Voici notre code pour déposer des objets. OK. Oui, nous devrions avoir un commentaire. Maintenant, ce dont nous avons besoin, c'est essentiellement le flop. J'ai besoin du générateur, mais nous n'avons pas de référence. Copions simplement ceci. Il s'agit d'un nombre x d'articles. Faisons-en une variable statique de deux. Réglons cela ici. Et entre 1 et 2. Mettre les deux ici n'avait pas vraiment d'importance, mais de toute façon. Et pour un générateur de labyrinthe, nous allons simplement créer une variable, poser dessus et modifier l'instance Lorsque nous répondons à l'IA, nous pouvons transmettre cette référence. La raison pour laquelle nous avons besoin du générateur est bien sûr d'ajouter pour détruire. Nous avons le coffre ouvert. Nous avons dit que cela n'était pas ajouté pour être détruit. Mais corrigeons ce problème dans une autre étape de débogage. Loin. La dernière chose à faire, c'est qu'après avoir vérifié, nous pourrions avoir accès à notre manette. Fais-le, on y va. Oui Taller Nous allons acheter un contrôleur AI Nous ne sommes plus joueurs. Nous sommes moi. Nous allons à Bs. Cela nous laisse un tas de contrôleurs IA qui ne font rien. Mais nous pourrions créer un système dans lequel IA, qui s'allumerait par la suite, utiliserait une manette non possédée. Oh. Nous allons laisser le corps sous forme de dés car il sera détruit lorsque la carte sera supprimée. Lorsque nous passerons au niveau suivant, peu importe que les corps soient restés dans le niveau précédent. Ils vont être détruits avec ça. Je pense que c'est un bon point d'arrêt. Nous allons passer à la suivante. Par A 115. Vérification de la gamme IA et gardes du Hellgate: Bonjour et bienvenue dans Game Design Workshop, Procedural Dungeon Five sur le moteur R cours de création d'AP d' action Auparavant, nous en avions terminé avec nos événements et ceux de notre mort. Nous avons créé un état pour l'IA et l'énumération de la date, et nous avons dit que si le personnage n'est pas étourdi, il en va de même, et nous avons joué un montage et terminé Nous avons changé d'état pour attaquer. Maintenant, à notre décès, nous le faisons une fois, nous mettons une variable à mort. Nous émettons un son. Nous avons réglé la collision, le tic-tac et le mouvement à zéro en gros, et nous jouons un montage que nous avons redirigé à partir de l'autre personnage de parangon Pour une raison ou une autre, je pense toujours que le nom est Cabal. Peut-être que cela me rappelle beaucoup le personnage de Blood One, Caleb, parce que je sais que ce n' est pas Caleb Peut-être que Cabal me vient à l'esprit. Je ne sais pas. Manière. Ensuite, après avoir joué notre montage, nous choisissons un maximum d'objets de 1 à 2 au hasard, et nous nous dirigeons vers notre mécanicien pour déposer des objets. Et nous avons ici un stylo qui choisit un élément aléatoire de 1 à 5 Ensuite, nous possédons le contrôleur qui, comme nous l'avons dit, ne supprimera pas un tas de contrôleurs, mais il donne la possibilité de créer un système permettant à chaque nouvelle IA de posséder un contrôleur inutilisé. Passons maintenant à notre mécanisme de détection des joueurs. Pour ce faire, nous allons avoir besoin d'une collision de sphères. Passons à notre fenêtre d'affichage. Nous le voyons vraiment, quelle est sa taille. Fixons le chiffre deux, quelque chose comme 900. Je pense que cela devrait être une belle gamme autour de nous. Cette collision nous permettra de détecter et de détecter le joueur. C'est une belle région. Oh, encore une fois, cette collision ne cherche qu'une seule chose. Passons donc à nos paramètres de collision. Passons à la personnalisation, ignorons tout, sauf les étangs. Mais il connaît également les autres IA, elles se chevauchent. Ils créent. Vous pourriez avancer le code avec quelque chose. Peut-être communiquent-ils entre eux. Je ne sais pas. L'un est une maladie faible, l' autre vient la guérir. Nous verrons. Cela dépend de votre imagination. Non. Allons faire quelque chose avec cette sphère. Nous allons avoir besoin d' un événement de début de chevauchement et d'un événement de fin de chevauchement. Commençons par le début. Tout d'abord, nous demandons si l'autre élément est la collision du joueur. En particulier, la capsule. Alors, tirez sur l'autre composant. Nous l'avons fait tellement de fois. Maintenant, la prochaine chose que nous devons faire est de créer une variable dans la plage, et définissons-la à ce que cela soit vrai. Ensuite, nous allons lancer une ligne par chaîne. Avons-nous une visibilité vers le joueur, ou est-ce que le joueur était derrière un mur et qu'il est entré en collision avec la sphère Nous allons donc commencer par l'emplacement. Je vais m'arrêter à notre joueur. Donc un lieu. Je vais relier ça à la fin. Je vais régler la visibilité sur la caméra, et nous allons annuler notre résultat en termes de chaleur. Si l'autre acteur qui a fait le buzz g. En fait, nous n'avons pas d' acteur pour le tag. Nous avons cependant la possibilité de jouer un rôle d'égal à égal et de recommencer. Vérifiez simplement s'il s'agit de l'autre acteur du pion. Si c'est le pion ou le bien, si ce n'est pas le pion, faites rien, et si c'est un pion, nous allons configurer l'État pour qu' Maintenant que nous avons le téléphone, nous pouvons demander au joueur de haut en bas de jouer de la musique de personnage et d'action. Notre action commence donc. Maintenant, nous en avons fini avec les chevauchements, ça va être assez simple Nous allons vérifier si le personnage se chevauche ou s'il y a un câlin P. L'adversaire fait un câlin P. Nous allons mettre une branche, et si c'est vrai, nous allons la placer à portée de copains Un système que nous avons créé ici pour la détection. Tout pourrait également être créé dans l' arbre des comportements avec un système complexe tel que EQ S, qui est un système de requêtes environnementales et d'autres moyens comparer les traces de lignes ici ou non Comme je l'ai dit, utiliser le tableau noir et le processus d'ajout de clés, suppression de clés, de mise à jour des clés sont un peu exagérés pour une IA aussi simple Nous allons donc combiner les deux et parler de l'environnement, la prochaine chose dont nous avons besoin. Lorsque nous sommes en mode attaque, joueur sort soudainement du champ de vision. Nous avons besoin d'un mécanisme capable de savoir, maintenant que le joueur est en ligne de mire, d'attaquer. Parce que les joueurs peuvent tout faire, vous savez, ils peuvent simplement se cacher dans les coins, ils peuvent se cacher, ils peuvent faire plein de choses. Notre IA doit donc savoir quand elle est directement visible ou si elle doit se déplacer pour y parvenir. Nous allons passer à notre pièce de départ. Et nous allons créer un Primer Pi. Par exemple, il peut s'agir d'un service , d'un truc qui fonctionne certain temps et qui fait une certaine chose. Mais c'est aussi parce que nous allons utiliser un service pour mettre à jour nos informations, notre santé, notre état de santé. Voyons comment, parce que nous avons joué avec Times auparavant, nous utilisions les niveaux auparavant. Ils voient comment nous pouvons les démarrer et les arrêter quand nous le voulons. Nous allons faire la promotion de ce bundle. Nous avons parlé de la poignée, c'est ce qui gère le temps et appelons poignée comme le temps. Et instantanément, je vais le mettre en pause. Pour le moment où il est créé, il est en train d'être posé. Mettons un temps à 0,3. Réglons-le pour qu'il ressemble. Créons un évent personnalisé. Nommez ce look pour joueur. Ce qu'il va faire, lancer une ligne de traçage. Mais nous allons copier à partir d'ici. C'est exactement ce que nous voulions faire. Nous en avons également besoin et cela équivaut à un. Nous allons copier tout cela. C'est ce que fera cet événement. Nous allons tracer une ligne de traçage entre l'acteur et le personnage, pour vérifier si cela a enthousiasmé notre joueur. Maintenant, que se passe-t-il, qu'il s'agisse d'un joueur ou non, nous allons avoir besoin d'une variable, tout est prêt, ce sera une variable d'investissement Je vais le définir sur vrai, et si ce n'est pas le cas, je vais le définir sur faux. Si c'est vrai, nous allons vérifier si nous sommes stupéfaits. Si ce n'est pas le cas, nous allons préparer notre État à attaquer. Ce serait donc notre mécanisme pour protéger le joueur. Maintenant, la prochaine chose à faire est d'utiliser notre IA. Pour cela, nous allons également avoir besoin de quelques variables. Nous allons avoir besoin d'un emplacement hôte car nous allons les faire apparaître autour des portes Voici donc notre hôte. I. Et les IA devraient savoir si l'hôte est mort. Donc, si le joueur tue la porte de l'enfer, il doit faire quelque chose. Créons une autre variable. Ça va coûter des lingots, tous ces hôtes sont morts. Nous pouvons donc maintenant terminer le code de nos portes bloquées. Allons trouver nos portes principales. Allons voir Ben Graf pour commencer à jouer. Sur la séquence, nous allons ajouter un autre nœud. Montons cette fois. Et ce que nous allons faire, c'est faire une boucle à gué. Pas de boucle en forme de F. Cependant, nous avons besoin d'une quantité aléatoire d' IA pour apparaître de manière aléatoire. Aléatoire dans la portée. Maintenant, nous allons commencer par un niveau de générateur. Trouvons la référence de notre générateur, que nous n'avons pas. Créons-en un pour cela. Soyons du type P. P. Maze Gen Exposons-le sur une cuillère. Passons à son nom, qui se trouve dans notre générateur, Prints, Maze generator La porte de l'enfer, c'est ici. Les portes du hall sont très importantes ici. J'ai compilé le pavé, mais le labyrinthe. C'est la ligne de triche. C'est le ponter du Hall Gate. Je n'ai donc pas trouvé cela faux. Nous allons vérifier. Réinitialisons-le à Hell Gate. Et maintenant, mettons-nous dans le générateur. Compilation : Bator, portail, générateur . Passons au niveau. À partir du minimum du générateur, un maximum. Mets ça au hasard. Choisissez au hasard. B plus un ou le niveau du générateur. Maintenant, nous devons tous les personnages et appeler plus. Personnages IA. Lors de la transformation je n'ai pas indiqué l' emplacement de l'hôte sur le générateur. Je n'ai pas fait le générateur. Connectons-le ici. J'ai besoin de dénoncer. Cela permet d'exposer l'emplacement de l'hôte. Huit. Et pour l'emplacement de l'hôte, je vais obtenir l'emplacement. Nous les engendrons ? Eh bien, souvenez-vous de ce point aléatoire dans la boîte de sélection. C'est ce que nous allons utiliser. Point de départ dans une boîte de délimitation avec une demi-taille de 300, un, et le centre devrait être notre position des acteurs, étant donné b de hauteur plus 40, disons, serait notre centre Maintenant, nous allons obtenir la référence du générateur, Troy, je vais aller à At the AI. Nous avons également besoin d'une autre liste ce sujet et de promouvoir cette variété. Changez vraiment d'acteur à acteur, ce ne sera pas un aca, soit les zombies, notre IA. Je vais le connecter ici. Nous devons simplement y ajouter quelque chose. Ajoutez Ops à cet acteur. Maintenant, quels acteurs détruire ? Appelons ça mes zombies. Non, ce n'est pas l'IA, ce n'est pas le nom de notre IA. Ce que j'appelle déjà les zombies et j'aime bien. Que faisons-nous avec ces zombies ? Quand on meurt quand le portail meurt. Tu penses que c'est la mort. Nous voulons que les zombies soient morts. Donc, avant de détruire l'acteur, nous allons utiliser le tableau M Zombies. Cette destruction doit être terminée, connectée à partir d'ici. Et pour mes zombies, nous allons voir cet hôte papa, tous les zombies, tous les ennemis, nous savons que la porte de l'enfer est morte. Et ce serait un. Je pense que c'est suffisant pour celui-ci. Nous allons passer à la suivante. Au revoir. 116. Tir de balle par IA et mécanique du Knockback: Bonjour, et bienvenue dans l'atelier de conception de jeux sur procéduraux Real Engine Five création de RPs d'action procéduraux Real Engine Five dans les donjons Auparavant, nous avions créé un système pour détecter notre joueur. Dans notre IA, nous avons ajouté ce tube de collision qui se superpose au début et à la fin pour vérifier si le joueur est à portée. Puis, au début du chevauchement, nous sommes allés et avons franchi une ligne pour voir si notre cible était le joueur Pouvons-nous avoir une visibilité directe sur le joueur ou y a-t-il quelque chose entre les deux ? Et si c'est le cas, alors nous sommes passés à l'attaque, et nous avons commencé notre film d'action, notre musique d'action. S'il ne se chevauchait pas, nous avons simplement défini la plage de. Nous avons ensuite créé un chronomètre que nous avons créé au début du jeu chargé de créer un système qui vérifie en permanence si le joueur se trouve à portée ou non. Si c'est le cas, si nous ne sommes pas Stan, nous attaquons. Et ce système est un mécanisme qui fonctionne dans le temps, comme un service, quand nous le voulons et quand nous le voulons, nous pouvons le poser par le biais de notre poignée de minuterie, qui est chargée de gérer les minuteries, en gros Ensuite, nous avons terminé notre mécanisme d'apparition dans nos portes principales pour notre IA, nous avons utilisé une boucle pour indiquer au hasard la gamme de genres de notre niveau de générateur, en ajoutant un au hasard, au niveau plus un, puis nous avons utilisé un point pointé au hasard sur un point aléatoire dans le cadre pour faire apparaître notre IA autour de notre Nous les avons ajoutés à un tableau d'acteurs à détruire sur Moi, et nous les avons ajoutés à un autre tableau pour devenir des mysombies, comme nous l'appelions Donc, lorsque le portail When the Heal s'éteint, ce n'est pas la mort. Soit c'est la mort. Et la porte de guérison s'éteint. Il passe par chacun des zombies, chacune de nos IA. Alors salut, je suis mort. Il définit que la variable host est morte, puis elle agit elle-même. Oh, continuons en faisant le tournage proprement dit. Et le tournage proprement dit se fera à travers l'arbre. Et pour ce faire, nous allons avoir besoin d' une interface de plan, capable de l'appeler à n'importe quelle IA utilisée par l'arbre. Nous allons accéder à notre dossier AI. Nous allons créer une interface de plan. Appelons cela B I AI. Ouvrons-le. C'est une fonction. C'est ce qu' on appelle une tactique. En fait, appelons ça tirer. Compilez les paramètres de Dave Bator A I sur cette interface. A Ai et maintenant nous avons notre interface ot. Double-cliquez sur l'événement. La première chose que nous devrions demander, c'est si nous sommes morts, car si nous sommes morts, ne tirez pas. Et si nous ne sommes pas morts, nous allons jouer à un Montage. Allons créer ce montage, allez dans le navigateur. Allons à la morgue, morgue, et cherchons par Marie B. Il y a une attaque primaire de montage qui est lente. Allons y jeter un œil. Ici, ça a l'air bien. Nous allons nous en servir. Quand nous ne serons pas morts, nous monterons Advance Node. Nous allons utiliser le maillage acelétal. Encore une fois, déposez le ici. La prochaine chose que nous devons faire est de trouver notre solution. Créons notre puce. Passons aux plans de nos dossiers. Passons aux capacités. Faisons un clic droit. Passons à la porte du cours Blueprint et à la puce P AI Oh, tout d'abord, ajoutons un système de particules AD. Mon essence. Projectile. Nous y voilà. C'est la lueur du poignard. La prochaine chose dont nous aurons besoin. Le maillage statique serait un poignard. Ce pereng a vendu A M LP. Nous devons le faire pivoter un peu. Faites pivoter la particule. Il faut faire pivoter la lame. Il est plus petit et particulaire, donc incisons à 1,5. Cela semble juste. Et il a besoin d'un matériau. C'est un tigre magique. Nous avons ici un tigre magique. En ce moment, ça a l'air mieux. On peut le déplacer un peu. Cette ligne, mais c'est bon. Nous ne pourrons pas le voir. On ne voit qu'une lueur et un poignard Maintenant, ce dont nous avons besoin, c'est empêcher la collision de ce poignard, car nous allons utiliser une capsule de collision pour provoquer la collision Cela ne générera pas de chevauchement. Il n'y aura pas de collision, et c'est une capsule. En fait, ce n'est pas parentalisé. Mme devrait y aller. Faisons-le pivoter. Elle est plus petite. Bit. Je pense que c'est bon. Écrire Dans cette capsule, on ne cherche qu' un pon, une collision. En fait, il recherche également des murs définis, tout sauf protic, block wall dynamic Superposition sur. ne suis pas vraiment sûr du mot dynamique si nous le voulons, parce que nous voulions peut-être franchir les portes de l'enfer. Laissons les choses aussi simples que possible. C'est plus facile. Et la dernière chose à ajouter est un mouvement de projectile Nous devrons désactiver la gravité. Réglons la vélocité à zéro. Et la dernière chose à faire est de commencer à jouer, accélérer le mouvement de notre projectile et de le transformer en variable que nous allons exporter sur Swan Et faites-en de l'encens, éditez, compilez et enregistrez. Revenons à notre IA et ainsi de suite après notre montage. Bien entendu, l'acteur serait notre solution d'IA. Ce n'est pas une balle. C'est un tagueur mais ça va. Non, nous le produisons et quelle est sa vitesse ? Heureusement, si nous passons au comportement, je suis désolée. À notre squelette. Il existe un socket appelé pon pon r. Nous pouvons l'utiliser. Un bel emplacement. Revenons à notre IA et trouvons l'emplacement de notre maillage CKT. Voici toutes les vitesses. Nous allons juste continuer. Je vais reprendre la rotation. Nous allons trouver un aperçu de la rotation. Nous allons aller de l' avant. Juste là. Nous allons multiplier, ce qui sera essentiellement notre cible. Faisons donc un entier, disons 200, un peu plus vite que les joueurs. Ce serait ça. Ce serait notre tournage. Maintenant, comme nous l'avons dit, le tournage de l'événement sera piloté par l'arbre. C'est pourquoi il s'agit d'une interface. Ainsi, l'arbre peut envoyer à un acteur non pertinent. L'acteur aura juste besoin du numéro d'appel. Nous pouvons vraiment aller vérifier certains appels. Donc, si nous jouons, nous avons un tas d'erreurs dans Mortgage, Blueprint et Mortgage Oh, c'est parce qu'il y a eu des erreurs. Comme j'ai dupliqué le personnage, puis le casting dans le plan de Morgmention, il va y avoir quelques erreurs parce que j'ai dupliqué parce que j'ai Ouais. Alors allons régler ce problème. Obtenez le plan de la morgue, votre original. C'est une mauvaise façon de le rechercher. Personnage, héros, Morges, joueur de la morgue, supprimez tout ça Accédez au plan. Voyons voir ça. Allons voir ça. Ceci et cela. Maintenant, c'est bon. Non, on peut jouer. Cherchons une porte infernale. Et nous avons trois IA. Ou nous en avons trois. Nous devrions en avoir un ou 21 parce que c'est un o basé sur. Oui, car notre boucle for est basée sur zéro. Réglons ça. Retournons à notre porte de l'enfer. Une erreur très fondamentale s'est produite de toute façon. Ennemis de la porte. Zéro à un signifie deux. Nous allons le faire de façon négative. Nous allons être de zéro à zéro, ce qui signifie un. Et maintenant, nous n'avons plus de porte de l'enfer. Encore une fois, nous avons une porte infernale. Elle ne veut pas de nous cette fois. Hé, nous avons une porte infernale, et nous y avons un ennemi. Hein ? Tournons-le. Essayons de le tuer. En fait, je suis en train de le toucher, mais il n'y a pas vraiment de soleil. Il y a du son. Je veux juste arrêter le son. Il n'y a pas de remorqueur I. Je vais aller à Atifs, nous allons aller à des remorqueurs, nous allons ajouter le remorqueur E, je crois, pas moi. Je voulais les objets, l' interface, les interférences Away E est pour ennemi. Nous avons le remorqueur, nous devrions pouvoir en tuer un. Ils sont en train de mourir. Ils se relèvent , mais ils sont en train de mourir. Les objets apparaissent à zéro, zéro, zéro. Allons-y maintenant. Revenons à notre IA et repartons très rapidement. La mort, voici une mort, flop. Bien entendu, cela a atteint 000 parce que nous n'avons pas défini de lieu. L'emplacement serait simplement. Mais ils jettent des objets. Donc c'est cool. Oui, il y a une IA Tweetez-le, tuez-le et veillez à ce qu'il dépose des objets directement à la porte, peu importe. Maintenant, si je clique dessus et que je déplace la souris, me relève, mais elle lance des objets. Maintenant, le prochain événement qui sera piloté par notre interface est l'événement knockback , que nous pouvons également déjà tester. Ça, on peut le porter, on peut utiliser l' IA médicale et ça devient knoba Oh, je vais passer à notre interface bleue, I AI, et à une fonction appelée Parce que c'est aussi un message universel. Nous allons l'envoyer depuis notre attaque Mi, et cela doit être pour toutes les IA, pas seulement pour celle-ci. Oh, ce sera une interface de regroupement envoyer à n'importe quel acteur. Mais je pense que c'est un bon point d'arrêt pour cela. Nous allons passer à la suivante. Au revoir 117. Mécanique du Knockback et du paralysie: Bonjour et bienvenue dans l'atelier de conception de jeux, Real Engine Five Procedural ARPZ de Real Engine Five Procedural Dungeon Action Auparavant, nous avions créé la puce d'intelligence artificielle selon laquelle il fallait une particule de maille astatique ou de notre maille de colère, une particule pour la faire briller, une capsule qui détecte la chaleur ou non, et un Pour contrôler sa vélocité. Maintenant, une chose que nous n'avons pas faite, c'est de nous occuper de la capsule, mais lorsque vous frappez un joueur pour faire quelque chose , lorsque nous entamons une épreuve de tour , nous allons donner l'autre élément. E, en fait, nous en avons besoin aussi, mais nous en avons besoin en ce moment pour le joueur. Et nous avons besoin de succursales. abord, nous devons nous demander si l'autre acteur est valide. L'autre acteur est-il valide ? Parce que c'est peut-être de, il est peut-être train d'être détruit ou quelque chose comme ça. Alors, l'autre acteur est-il valide ? Alors c'est l'autre acteur qui joue ? Si ce n'est pas un autre joueur, l'autre acteur est-il un ennemi ? Et si c'est notre joueur, tu vas infliger des dégâts à l'autre acteur. Dégâts d'un. Disons que article, emter, location.cion serait Pour le compteur, nous allons utiliser point mortgage do Impact, qui est un petit cloud Maintenant, petit nuage vert. Si c'est si l'autre acteur est un ennemi, nous ne devrions rien faire. Je devrais juste le parcourir. Mais si ce n'est pas le cas, nous allons simplement former ce cloud. Bien sûr, enfin, nous allons détruire un acteur. Par exemple, si ce n'est pas un ennemi, c'est un mur, vous êtes détruit. Après notre puce BP AI. Nous sommes allés de l'avant et avons créé notre BI AI, qui est notre interface de référence pour l'IA, et nous avons créé deux événements , le tournage que nous avons terminé et le backback que nous allons faire maintenant Maintenant, pour le tournage, ce n'est pas le tournage. C'est un tournage. Nous sommes en train de vérifier si le personnage est mort. Sinon, nous jouons un montage, et nous produisons cette balle que nous avons créée, eh bien, il est plus probable que Ping Dagger Et nous choisissons pour l'emplacement, la poche en filet. Désolée, je filme. Le nom du socket de masse Weapon R et pour la vélocité entre celui-ci et la position de l'acteur, à la vitesse que nous avons choisie. Passons maintenant à notre événement rétrospectif. Non, amenons Pack. En fait, il suffit de double-cliquer ici en face. Nous obtenons l'événement, et nous allons définir l'état du personnage sur un. Ensuite, nous allons obtenir un emplacement, conserver temporairement parce que nous allons nous déplacer vers cet endroit vers un autre endroit. Nous allons nous rendre dans cet endroit temporaire. Retour. Et puis je veux faire une autre variable. Créons-le réellement. Je vais être de type entier de cette plage. Maintenant, nous pouvons parfois être un peu embrouillés, et traverser des murs, traverser des endroits Nous pourrions procéder avec des lignes de traçage et des règles plus coûteuses et plus détaillées, mais tout ira bien. Je vais faire notre sélection aléatoire à portée, mais à portée. Et disons 100-150. Ce que nous devons faire, c'est jouer un montage. Joue un montage, et allons créer A Montage. Vous allez consulter notre dossier hypothécaire. C'est Mack. Celui-ci. Et nous allons créer un montage d'animation, nous allons ouvrir et sélectionner la fente située dans le haut du corps. Dave s et revenons à notre y. Je peux supprimer le montage et ce maillage squelettique, et maintenant nous avons une animation. Maintenant, au fur et à mesure que cette animation se produit, nous allons jouer une chronologie. Et lors de la mise à jour, nous allons définir l'emplacement. Je vais alerter. Ce serait notre knockba temporaire Pour B, nous avons besoin d'une direction que nous allons multiplier avec notre gamme arrière Convertissez cet entier, en gros, la direction doit venir en interne. Ce que nous allons faire, c'est ajouter un facteur d'entrée à notre interface d'impression nba. Cette direction. Compilateur Dave. Si nous revenons à notre IA maintenant, nous l'avons ici, et nous pouvons l'apporter ici. Maintenant, pour notre disque Alpha, entrons dans la chronologie. Nous allons sélectionner le cadre de ski à utiliser. Ajoutons un camion-flotteur. Ajoutons deux points. Supposons que le temps soit 000 au premier point, deuxième point à 0,5, disons un. Et ce serait notre Alpha. Maintenant, lorsque nous serons emballés, la prochaine chose qui devrait arriver, c'est que nous changerons d'état après le peloton pour attaquer. Et nous nous faisons du mal à nous-mêmes. Si nous voulons vraiment le faire, nous le faisons. Si nous voulons que les hommes ne se fassent pas de mal, nous ne nous infligons simplement pas de dégâts. Ce serait tout. Nous avons un revers. Oh, teste-le. Va pour gagner du niveau. Nous devons l'ajouter à notre odeur. Passons à notre capacité à me connaître. Capacités, où est le moi ? Eh bien, quand on commence à se chevaucher, et que l'autre acteur est E, l'autre acteur, et on fait marche arrière. Pour ce qui est de l'orientation, faisons avancer le vecteur de l'acteur. Puisque cela tourne en fonction du personnage. Maintenant, continuons le test : il existe une IA. Il y a O C' est vraiment parti loin. Il est mort. J'ai parcouru le sol. J'ai trouvé ça trop fort. OK, nous devons donc régler ce problème. Faisons une pause avec Optily. Si vous n'essayez pas de lire et posséder un stylo, c'est bon. Allons-y, c'est une note valable ici. Si ce n'est pas valide, il essaie de le faire. Peut-être parce que nous n'en avons pas possédé. Ouais. Qu'y a-t-il de mal à frapper un acteur, un acteur, un patient ? acteur, un patient Lorsque nous l'attachons au lecteur, ouvrons le plan du joueur pendant une seconde Passons aux plans, à notre personnage principal. Répondez-moi, nous l'attachons. Acteur lui-même, donc non. Attends, on dirait que c'est allumé. Pourtant acteur. Nous jouons, donc nous devrions envoyer un ping dès le début . OK. Oui, je n'ajoute pas l'emplacement temporaire à la direction. Il fait une direction à partir de là, c'est pourquoi il revient au début de la carte ? C'est pourquoi lorsque j'ai frappé Mack, il est revenu à la première case. Elle s'est jetée sur le premier carreau parce que j'étais là et elle s'est jetée ici. Il a donc une direction, mais où dans le monde ? Je n'ai pas précisé où dans le monde. Nous avons à nouveau le problème de texturation. Donc, notre streaming en taille réelle 200. Vous pouvez voir que la carte ici est mal texturée, tant mieux Et allons trouver une IA. n'y en a aucune ici. OK. Il y a une IA ici. À côté. Et maintenant Knock Back fonctionne. Nous soutenons l'IA. C'est très ennuyeux si vous êtes debout, mais nous allons régler ce problème. Ils devraient. Cela semble embêtant. Je vais m'en occuper plus tard. Continuons à utiliser l'IA. Aucun dos ne fonctionne, nos problèmes de tir, mais notre dos fonctionne fait également des dégâts Enfin, ce que nous devons faire avant de prendre notre décision T, c'est activer tout cela. Nous devons créer deux autres événements sur notre BI, I AI, ce qui me permettra de me concentrer sur la peinture pendant une seconde. Cela fait longtemps que nous ne l'avons pas fait. Oh, disons que notre IA est ici, et qu'il y a un mur ici. Et notre joueur est derrière ce mur. Maintenant, lorsque l'IA essaie de trouver le joueur, elle se déplace comme quelque part ici, disons qu'elle obtient ce point. Sa direction serait en fait de ne pas se diriger vers là-haut, mais plutôt vers le dernier endroit où il se dirige vers l' endroit où il se déplace. Mais nous voulions nous tourner vers le joueur. Nous allons donc tricher un peu, et nous allons utiliser la rotation. C'est un R, un R bizarre, mais c'est un R. La rotation est basée sur le mouvement, comme utiliser la rotation pour pivoter vers le mouvement Et puis lorsque nous le désactivons et que nous utilisons la rotation de la manette qui sera réglée en fonction du joueur. Pour l'IA, elle se déplacera vers un point et elle se tournera vers le joueur. Et nous fixerons le taux de rotation et tout ce concerne la décision et la prise de décision. Le comportement t. Bref, revenons à notre projet. Et ajoutons ces deux événements. Passons à B I AI. Fonction. Appelons ce contrôleur. Créons-en un autre, le mouvement, la rotation. Passons à l'IA et appelons ces deux événements. À compiler. Dave. Rotation de la manette, rotation des mouvements, nous allons obtenir le mouvement de votre personnage et la rotation souhaitée. Quoi ? O Cela oriente la rotation vers le mouvement. Ce sont les deux. Ce sera désactivé et ce sera basé sur eux ci-dessus. Connectez le mouvement du personnage, et celui-ci sera activé et désactivé. Et ce serait tout. Notre code ici est quasiment intégré à l'IA. Parlons-en ici. Ici aussi, il est seul, et ce serait tout. Compilons et sauvegardons. Et dans le suivant, commençons par notre troisième comportement. Au revoir. 118. Variables du tableau noir et arrangement de l'arbre de comportement: Bonjour et bienvenue au Game Design Workshop et au de Real Engine Five création de LPG Procedural Dungeon Action Auparavant, nous en avions terminé avec nos événements sur l'IA, nos événements BI, notre événement sur les messages. Nous avons terminé avec Knock Back. Nous avons configuré notre personnage pour qu'il étourdisse, nous avons défini un emplacement temporaire, une portée de frappe temporaire. Nous jouons une animation, et pendant que l'animation est jouée, nous jouons une chronologie de 0,5. Il s'agit de l' heure de l'animation et de la localisation de l'acteur en conséquence, que nous avons utilisée dans le cadre de notre attaque par courrier électronique, et que nous avons ajoutée à l'emplacement parent. Au bout du compte, je l' ai oublié, la presse a couru, et pour indiquer où dans le monde, nous passons par le lieu d'origine. Maintenant, quand c'est terminé, nous avons configuré le mode d'attaque à deux de notre IA et elle inflige un dommage, ce qui devrait en fait être le contraire. La raison en est que cela n'a pas vraiment d'importance. Parce que si nous subissons un seul dégât, nous serons stupéfaits. Donc oui, c'est pourquoi c'est important car si nous appliquons d'abord les dégâts et que nous passons à quel est l'événement dommageable ? Voilà, nous subissons un dégât et nous serons étourdis. Et si nous sommes déjà stupéfaits, cela ne nous rebutera pas. Ensuite, nous passons à l'attaque. C'est pourquoi cet ordre est important. Maintenant, c'est un petit bogue parce que cela ne veut pas dire que cela attendra l'événement, parce que c'est lui qui appelle cet événement. C'est ce qu'on appelle des dégâts appliqués. Je ne pense pas que cela attendra. Nous ne pouvons pas mettre un petit délai ici. De 0,1. Ensuite, pour attaquer, soyez plus sûr. Quoi qu'il en soit Ensuite, nous avons créé deux autres événements en utilisant la rotation souhaitée par la manette, au lieu d'un mouvement orienté que nous utiliserons pour viser notre cible, notre joueur. Et tout cela se produira dans AI Behavior Three. Maintenant, nous devrions d'abord vraiment remplir le tableau. Mais avant cela, permettez-moi de vous expliquer certaines choses. Par la racine. C'est le premier nœud qui s'exécute lorsque nous exécutons l'arbre des comportements, nous avons quelques options. Nous avons le sélecteur, la séquence et le parallèle simple Ce que nous allons utiliser, c'est un sélecteur et une séquence, pas plus optimaux Dans certains cas, nous aurions pu utiliser un simple parallèle, mais ce sont les deux plus courants. Mais apportons un sélecteur, et apportons également une séquence Les deux, vous pouvez voir ces flèches ici. Si j'amène connect to the root deux, malheureusement, je n'en connecte qu'un. Mais apportez un autre sélecteur juste pour le plaisir. Vous pouvez voir que nous avons un ordre des opérations 012. C'est ainsi que cela fonctionne. Donc, si je l'apporte ici, ça devient deux. Ils exécutent donc à la fois des sélecteurs et des séquences de gauche à droite pour terminer leurs actions La différence entre le sélecteur et les séquences est que, comme indiqué dans l'infobulle, il cesse de s'exécuter lorsque l'un de ses enfants réussit Dans le cas contraire, il continue de gauche à droite jusqu'à ce que l'un des Ce que nous allons utiliser pour le premier nœud sera Elector Je vais y aller. Nous aurions pu utiliser une séquence. Peu importe car dans ce nœud, que ce soit dans une séquence de sélecteurs ou en parallèle, nous pouvons placer ces décorations, qui signifie quelles sont les conditions de ce sélecteur Je suis en train de faire une digression. Commençons par définir nos variables dans notre tableau noir variables ici sont appelées clés, et en gros, ce sont des variables identiques. Mais pour les mettre à jour, nous devons le faire d'une certaine manière. Mais ajoutons-les d'abord. Créons b, il nous faut en fait trois b. Un, deux, trois. Nous avons besoin de deux vecteurs. Nous avons également besoin d'un dénombrement de huit personnes. Disons ce huit. Disons que P One serait mort. P 2 ferait mieux de tuer Host. Un pull trois serait sur huit. Nous n'avons pas besoin de la gamme parce qu'il y en aura une autre en particulier, nous avons besoin de la gamme. Pourquoi pas ? Mettons-en également à portée. Nous pouvons nous en servir. Dans un sens. Oh. Les vecteurs doivent être des hôtes. Emplacement et l'autre doit être déplacé vers l'emplacement. Enfin, il nous faut un acteur. Nous avons besoin de l'ennemi comme il le fait pour l'ennemi. Alors, que ferons-nous pour créer un objet ? La différence est que les objets situent au-dessus de la hiérarchie par rapport aux acteurs. Nous ne pouvons pas avoir d' acteurs spécifiques comme variable ici. Nous ne pouvons pas avoir un type de clé tel que changer l'objet en, par exemple, cet acteur de cas, mais nous aurions pu le changer comme nous voulions être précis. Mais il vaut mieux le généraliser autant que possible. Nous devons simplement faire attention à ce que nous ne devrions pas placer l' acteur ou l'objet sur quelque chose d'incorrect car cela pourrait faire reculer les choses. Cela peut entraîner des accidents. Alors, sauvegardons cela, et revenons à notre comportement, en fait Nous aurions pu simplement prendre cette baignoire et nous écraser. 119. Paramétrer les variables du tableau noir et les arbres de comportement de l'IA: Bonjour et bienvenue sur Game Design Workshop n Real Engine Five Procedural Dungeon Action PZ Calls . Parfois, il n'est pas agréable que vous modifiiez un tableau à l'extérieur et que vous l'ayez ouvert dedans et que vous provoquiez des pannes Retournez à notre arbre. La première chose devrait être le lecteur, mais cela n'a pas vraiment d' importance car il ne gérera qu'un seul service Créons sur le nouveau service. Nommez ce service ES, PT service. Je suis au service de police , appelez-nous. Ouvrez-le, ouvrez-le sur le pavé. Ce dont nous avons besoin, c'est que vous receviez Tick AI Tout d'abord, faisons une séquence, car nous ne voulons pas qu'elle s'exécute à chaque fois. Et cela reviendrait à avoir le joueur acteur comme référence. Nous avons notre variable dans notre tableau noir, à laquelle nous avons un objet Appelons ce joueur ou cet ennemi. Le duo est l'ennemi de l'ennemi du moi, quoi que vous vouliez. Oh, nous allons créer une variable ici. Ça va être un tableau noir, sélecteur. Appelons maintenant ce sélecteur Ennemi. Mettons-le ici. Demandons si c'est valide. Nous allons sauvegarder la valeur. En tant qu'acteur, cette valeur du tableau noir est un acteur. Nous le savons grâce à Blackboard, qui est un objet, mais acteur de classe de base n'a pas vraiment d'importance Et c'est un élément important lorsque nous ajoutons clés Blackboard Blackboard pour savoir quel type de valeur il s' agit, quel type de valeur, quel type d'acteur ? De quel type de variable, quel type de variable il s'agit. Non. Nous allons vérifier si c'est valide. Je vais le connecter ici. Parce que si je demandais cette valeur, que je la demandais sous forme de vecteur et que c'était un acteur, cela ne marcherait pas. Mais il y a aussi quelque chose qui nous dira sur quoi il est basé. Ajoutons le service ici pour montrer cette bonne chance. Je vais donc cliquer avec le bouton droit de la souris, ajouter un service, et le service que je vais ajouter est Get Starts. Maintenant, si je sélectionne ce service, je n'ai pas exposé la variable. C'est également quelque chose de très important. Nous devons rendre les touches du tableau instantanément modifiables. Ils doivent être exposés, sinon l'arbre peut les voir. Maintenant, nous avons l'ennemi BB ici, et nous devons lui donner une référence à nos touches Blackboard, comme vous pouvez le voir Alors, de quelle clé s'agit-il ? Cette clé serait donc ennemie, nous savons que c'est un objet de type acteur, et nous faisons également correspondre cette valeur au tableau noir Maintenant, si l'un de ces changements d' événements n'est pas correct, cela ne fonctionnera pas. C'est pourquoi je dis qu'il est un peu exagéré d'utiliser des tableaux noirs pour des tâches simples, mais c'est aussi une bonne façon de montrer un Continuons. Lorsqu' elle n'est pas valide, nous voulons qu'un tableau noir saisisse à nouveau cette touche. En tant qu'objet. Parce que nous essayons de le définir en tant qu'acteur. Vous pouvez voir qu'il n'existe pas. Ce n'est donc qu'une solution, en gros, nous l'enregistrons en tant qu'objet et nous savons de quel type d'objet il s'agit. Connectons-le ici. Et pour ce qui est du rapport qualité-prix, nous allons y arriver. Maintenant, c'est la seule chose qui fonctionne. La deuxième chose que nous devons faire est mettre à jour toutes nos valeurs. Pour ce faire, nous allons avoir besoin d' ajouter une interface de plan, ajouter une fonction, à tous les get T et il y aura un tas de sorties Mais nous avons besoin de notre Bulin. Nous devons en fait copier les clés de notre tableau noir. Donc l'un est mort, l'autre est mené. L'autre est à portée de main. Ensuite, nous avons besoin d'une autre valeur de E M, non. Une EA est déclarée. E Un déclare. Disons que c'est cette date. Enfin, nous en avons besoin d'un autre, qui serait le type ou qui sera l'emplacement de l' hôte. Maintenant, revenons à notre personnage juste pour remplir cette dernière fonction. Il y a un personnage en haut, le personnage IA, une balle. Il est fermé ou rouvrons-le. Sûrement à cause de l'accident. Ce n'est pas fermé ici. C'est le cas. C'est ce qui le rend très petit. Bannons-le ici. Passons maintenant à notre interface, passons à get Starts, et connectons les bons arrivages. À portée pour à portée, à l'intérieur pour l'aperçu, mort pour mort, hôte pour emplacement de l'hôte, huit pour l'état, et l'hôte est mort ou l'hôte est mort. Retournons faire le service. Créons un ensemble de valeurs de clé de port noires. Les huit. Obtenez l'état de Suts. Alors, prends des bégaiements. Et nous pouvons voir ce qui est quoi ? Il nous faut un mort. Nous avons besoin d'un post mort. Ils devraient tous avoir BB devant eux, la clé Blackport. B dans la gamme B. En tant que double r supplémentaire deux fois B huit et B. Maintenant, nous devons prendre toutes ces valeurs. Commençons donc par cela, Blackward Kias, nous devons copier-coller plusieurs fois Et nous obtenons les lingots, papa, le stock de Bion The Keys. Connectez cela et connectons le mort à l' hôte, aux informations et à la portée. Enfin, définissons cette touche noire comme en action. Je vais faire venir l'État ici. Et enfin, cette clé de port retour en tant que vecteur et connectez-la ici et là. Donc, tout est réglé. Dans notre service BTT BT. Tâche BTT BT. Loin. Fermons le service. Nous n'en avons plus besoin. Revenons à trois, et nous devons nous mettre au point. Je ne les ai pas fait poser, retournez au service. Dévoilons tout cela. Nous pouvons cliquer sur ce I ici. Nous n'avons pas besoin de cliquer dessus, mais nous pouvons cliquer sur le I ici. Revenons maintenant à trois. Nous allons sélectionner le service. Ils compilent et maintenant nous pouvons tous les configurer. BT mort c'est mort. Le système d'exploitation est mort, c'est l'hôte mort. L'intérieur est à l'intérieur, la plage I est à portée, l'état AD et l'emplacement de l'hôte est l' emplacement de l'hôte. Cela mettra à jour nos statistiques, notre tableau noir, comme nous pouvons le voir tous les 0,5 avec un écart d'un Je pense que c'est un peu bas. Mais peut-être devrions-nous y aller un peu plus vite. Pour ce faire, nous allons le mettre à 0,4, écart de un, et il fonctionnera toutes les trois, deux ou 5 secondes, au lieu de quatre à six. Oh. Ensuite, que faisons-nous de toutes ces informations ? Eh bien, je pense que c'est un bon point d'arrêt pour celui-ci. Nous avons transmis nos références, nous avons transmis nos variables à notre tableau noir Et pour le suivant, commençons à programmer ce qui se passe avec ces informations. 120. Comportement de la patrouille IA et mode panique: Bonjour et bienvenue dans le Game Design Workshop, véritable cours de création de RPG d'action et de donjon procédural sur Engine Five création de RPG d'action et de donjon Auparavant, nous avions créé notre service pour mettre à jour nos informations. Pour ce faire, nous avons utilisé la fonction Get Stats de notre interface Blueprint Stats Dans cette fonction, nous avons ajouté quelques sorties et dans notre personnage d'IA, nous avons rempli cette fonction pour transmettre nos points de départ. Ensuite, dans notre service, nous avons utilisé le code approprié pour régler les touches du tableau en démarrant à partir de notre point de départ. Maintenant, nous avons également configuré le joueur pour qu' il ne soit effectué qu'une seule fois si la clé du tableau noir n'est pas valide Maintenant, nous allons continuer. Créons un lecteur de sélection . Vous pouvez voir lorsque nous quittons la route, nous avons beaucoup plus d'options Cela peut se produire, par exemple, exécuter eQuS après le premier nœud Et nous n'entrerons pas dans les détails. Mais le premier sélecteur ne doit avoir qu'un seul décorateur, et ce serait un décorateur Blackboard, ce qui signifie une condition ce qui signifie Ainsi, lorsque nous cliquons sur le décorateur, qui est une règle essentiellement pour que cela continue, nous allons utiliser la règle. Cliquons sur la règle. Et nous allons définir notre requête, dont la touche du tableau noir qui n'est pas définie serait publicitaire Si nous sommes morts, nous n'allons pas procéder, et cela annulera le téléphone. Cela signifie que tout ce qui s'y passe, et nous continuons ici, ce qui signifie ne rien faire dans notre cas. Maintenant, pour notre premier électeur, utilisons ens. Cela pourrait être la meilleure première chose que notre sélecteur essaie, car il s'arrête lorsque les premiers enfants réussissent Donc, notre première tentative est de réussir quelque chose si nous sommes en mode patrouille. Et cela me rappelle qu'il faut revenir à notre IA et définir notre état comme patrouille par défaut. C'est ça par défaut. C'est très important car s'il ne s'agit pas d'une patrouille, alors notre séquence ne fonctionnera pas, je ne jouerai pas. Nous allons ajouter la clé du couloir. Nous allons définir la clé de port noire état d'énumération, ce qui modifie la requête clé et est égale à la valeur de la clé Oh, oui. Nous devons aller au tableau noir. Dans le A, nous devons choisir un type, qui serait un état AI. Tous les détails Maintenant, fixons une valeur E égale à patrol. C'est la condition pour exécuter la séquence. Si cela échoue, on passera à la suivante. Le premier qui va réussir, il va entrer. Il s'agit du sélecteur. Maintenant, nous allons faire la séquence, ce qui signifie deux choses jusqu'à ce que l'une d'elles échoue. Non La première chose à faire est d'exécuter une tâche qui obtiendra un point aléatoire. Créons une nouvelle tâche. Appelons cela une tâche BT. Marquons deux emplacements au hasard. Et on y entre. Maintenant. Nous allons exécuter l'IA, c'est-à-dire quand, je n'ai pas trop expliqué. Ici, nous avons obtenu un Tick AI de réception, que le tick a déterminé à partir de notre chronologie. Ici, nous avons coché une case où cela reçoit une exécution. Notre exécutif va confier cette tâche ici. Alors appelons-le en fait. Nous pouvons voir ici dans les tâches, DT tsk random random location Mais remplissons le code. C'est donc l'ex qui reçoit l'IA. Recevoir un événement AI et exécuter. Pour cela, nous allons avoir besoin de trois variables issues des tableaux noirs Créons trois variables, Blackboard value ou But I'm having ou Selector Les autres. Sélecteur de touches Sélecteur Le premier serait de passer à Key. Le second serait l'hôte. Le troisième serait notre hôte racine, racine. Tout cela doit être devant eux, juste pour être correct. Le mot clé n'est pas nécessaire. Nous allons obtenir notre point de contrôle. Nous allons trouver l'emplacement de l' acteur, et nous allons sélectionner. La valeur serait la mort de notre hôte. Valeur en tant que bannissement car la mort de notre hôte est un bannissement. F B, nous allons obtenir l'emplacement de l' hôte, en fait, emplacement de l' hôte, et nous allons obtenir un port comme vecteur. Connectez-le ici. Maintenant, la prochaine chose que nous allons faire est de pointer le rayon accessible, et nous allons régler le rayon à 800. Qu'est-ce que cela fait ? Il nous indique que si notre hôte est mort, obtenez un point aléatoire autour du joueur. S'il n'est pas mort, obtenez un point aléatoire autour de l'hôte. Et puis nous allons passer au film, aux films remarquables. Quoi qu'il en soit, le vecteur de Luck Kia, et c'est le résultat Maintenant, lorsque nous exécutons une tâche, nous devons terminer les exécutions. Eh bien, pas tout le temps, mais celui-ci nécessite de savoir que c'est un succès équestre. Je vois probablement parce que nous n'imposons aucune condition ici Si cela échoue ou réussit, cela n'a pas d'importance pour nous. Nous dirons que cela a été un succès. Notre séquence peut exécuter la tâche suivante, mais nous n'allons pas la compliquer. Nous n'en utiliserons que deux. Pour la touche Blackboard, nous allons utiliser le deuxième mouvement, A, soit C. Maintenant, c'est l'emplacement, pas l'emplacement. Ce que nous devons faire, c'est nous atteler à notre tâche, vérifier que nous l'avons fait. Je ne l'ai pas rendu public. Ils doivent toujours être publics, et nous pouvons définir le transfert vers notre lieu de déménagement, l'emplacement de notre hôte vers l'emplacement de notre hôte, et l'hôte est mort par rapport à l'hôte est mort. Faisons une autre séquence à partir d'ici. Entrez un décorateur, une valeur au tableau noir, et la condition serait que le root est mort, l'hôte est Et si ce n'est pas réglé, nous allons entrer. Et ce que nous allons faire, s'il vous plaît, attendez 5 secondes. Donc, lorsqu'il patrouille et que l'hôte n' est pas mort, attendez 5 secondes. S'il est en patrouille et que l'hôte est mort, il traversera notre donjon au hasard Par exemple, nous avons créé un mode panique. L'hôte est mort, nous courons au hasard à l'infini. Ce sera un mode panique. Nous n'allons pas passer en mode panique. Nous allons juste retourner patrouiller, et tout le monde paniquera tout seul. Donc, pour y revenir encore une fois, nous sommes en train de démarrer et de vérifier si nous ne sommes pas morts. Si nous ne sommes pas morts, nous essayons de voir si nous sommes en train de patrouiller Si nous ne patrouillons pas, nous allons faire autre chose. Si nous patrouillons, nous choisissons un endroit aléatoire autour de nous Nous déménageons à cet endroit. Si notre hôte n'est pas mort, nous attendons. Si notre hôte est mort, nous choisissons un autre lieu et nous nous baladons. Maintenant, une dernière chose que nous devrions faire, encore une fois, c'est se faire avorter. Donc, lorsque le changement est effectué, cela s'arrête , etc. Et aussi lorsque l'hôte est mort, interrompons cela, nous interrompons cela, nous annulons le poids. Une chose facile à faire est passer la séquence CVI ici, connectif Ici, ce sera le dernier car entre eux, nous allons mettre le tournage. Et ce que je vais faire c'est qu'au lieu de vérifier s'il y a une patrouille, je vais vérifier s'il n'y a pas d'étourdissement Et si nous sommes stupéfaits, nous ne faisons rien de tel. Nous sommes stupéfaits. Je sais, peut-être que tu es aussi stupéfait, mais c'est comme ça que ça marche. Celui-ci est simple. Et nous allons nous en remettre à nous-mêmes si nous changeons de condition par rapport à. Maintenant, je pense que cela pourrait être un bon point de rupture. Dans le prochain, nous allons suivre logique du tournage, car si nous ne patrouillons pas nous devons vérifier si nous tournons Enfin, nous vérifions s'il n'y a pas d' étourdissement. Alors, je vais te voir. Au revoir 121. Mode attaque IA et vérifications de la ligne de visée: Bonjour et bienvenue dans le cours de création de RPG d' action Procedural Dungeon Under Engine Five RPG d' action Auparavant, nous avions créé une tâche BT pour choisir l'emplacement. Nous avons créé trois variables, les clés de port noires, dont l'une est l'emplacement de l'hôte. L'autre est le déplacement vers l'emplacement, et l'autre est que l'hôte est mort. Donc, si l'hôte est mort, nous choisissons un emplacement autour de notre joueur. S'il n'est pas mort, nous choisissons un emplacement autour de l'hôte. Et nous sommes en train de définir cet endroit pour notre déménagement. Ensuite, nous procédons à la fin de l' exécution avec un quatrième succès. Dans notre arbre, nous l'avons ajouté après la question de savoir si le joueur est mort. Sur notre sélecteur, la première chose que nous vérifions est si notre IA est en état de patrouille S'il est en état de patrouille, nous choisissons cet emplacement de tâche aléatoire. Nous utilisons cette tâche, qui consiste à choisir un emplacement aléatoire. Nous déménageons à cet endroit. Si l'hôte est mort, nous attendons 5 secondes. S'il n'est pas mort, nous continuons à courir en mode panique. Ensuite, nous avons ajouté une autre condition, une autre séquence, si cela échoue. Il essaiera de vérifier si nous sommes stupéfaits, et si nous sommes stupéfaits, il ne fera rien. Non Créons notre attaque dès maintenant. Mais cette fois encore, nous avons besoin d'un sélecteur. Parce que nous allons vérifier entre deux choses pour vérifier si nous saisissons l'une ou l'autre, parce que le sélecteur s'arrête lorsque l'un de ses enfants réussit, il ne passe donc pas au suivant Maintenant, utilisons une séquence en fait. Mettons la valeur du décorateur Blackboard. Sélectionnons le décorateur, qui serait la touche du tableau noir, notre état est égal à Bien sûr, cela va s'auto-avorter. Oh. Trouvons notre séquence. La première chose à vérifier est de savoir notre acteur est à portée. Listons ici la variable in range. Mettez un décorateur, un tableau noir. Gamme. Ce n'est pas défini en fait. Nous ne sommes pas à portée si nous sommes en état d'attaque, et nous ne sommes pas à portée, allons-y. Pour ce faire, nous allons avoir besoin d'une autre tâche. Réglons cela également pour la planche de surf. Tu sais quoi, en fait, n' avançons pas. Si nous ne sommes pas à portée, nous allons essayer de nous y mettre quoi qu'il arrive. Même si le joueur entre soudainement dans notre champ de tir, nous devrions tout de même revenir à la position que nous avons décidé de prendre. Cela donnera l'impression que l'IA va faire quelque chose, nous allons créer de l'anxiété. Passons maintenant à la création de notre tâche, appelons-la étape vers la cible. Nouvelle tâche, à un rythme effréné, appelons-la pupille et entrons. Nous allons utiliser à nouveau l'événement execute. Exsudez l'IA Et la première chose à faire est que, juste au cas où nous aurions déjà attaqué et que nous effectuons une rotation, nous avons réglé la rotation pour qu'elle tourne vers le contrôleur. Nous devons effectuer une rotation pour effectuer une rotation du mouvement. Nous envoyons vers notre plan d'IA. C'est la balle que nous allons déplacer en ce moment, et nous devons utiliser la rotation d' orientation pour nous déplacer. Parce que lorsque nous attaquons, nous utilisons la rotation d'orientation vers le contrôleur. Non, un service de bacor, cette tâche de bactor. La prochaine chose que nous devons faire est de poser une question. Nous allons donc créer une branche Eh bien, la question serait si nous pouvons atteindre un point à côté de notre joueur ? Nous trouvons un point En gros, nous allons créer à nouveau une formule mathématique pour créer un cercle autour de notre personnage. Et si nous pouvons atteindre un point dans ce cercle, ce sera vrai. Si ce n'est pas le cas, ce sera faux, et nous allons terminer l' exécution sans succès. Cela va donc fonctionner à nouveau. Cela échouera. Ainsi, lorsque le premier échoue, abandonne, puis tous les trois s'exécutent à nouveau et essaient de trouver un autre point Oh, comment s'y prend-on ? Eh bien, commençons par notre formule du cercle. Nous allons donc acheter Pi. Nous allons le multiplier par deux ou par une valeur maximale, et nous allons obtenir une plage flottante. Et le minimum serait Pi, et le maximum serait i carré en gros, pi carré, désolé, deux Pi, si Pi carré, il faudrait multiplier par italf Et à partir de là, nous allons obtenir. O sinus, assurez-vous que c'est une radiance et des degrés, puis nous allons obtenir une radiance sinusoïdale qui doit être persistante Nous allons le multiplier par 500. Ce serait donc essentiellement la gamme. Ensuite, nous devons l'ajouter à notre position de joueur pour que le joueur y participe, pour obtenir une position de destination. Et nous allons freiner. C'est à Split que nous le choisissons ici. Frein en le choisissant avec la goupille. Et à partir du Z, nous allons atteindre un point de chiffon aléatoire dans un rayon Ce n'est pas ce que nous voulons pour Radius. ce que nous voulons. En fait, c' est un rayon, pas le 500. C'est aussi pour x, nous allons utiliser ceci, pour, nous allons utiliser ceci et pour y, nous allons utiliser le signe. Maintenant, connectons cela à la condition, la valeur renvoyée si nous l'avons trouvée ou non à cet endroit, si le terrain est accessible, et c'est le cas, nous devons le dire au contrôleur de connexion, brunch. d'examiner les nœuds et Il peut parfois être difficile d'examiner les nœuds et le code. Nous devons obtenir ce contrôleur et définir le point focal. C'est exact cette année. Et bien sûr, nous avons besoin d' une valeur de clé pour tableau noir, donc d'un sélecteur de touches pour tableau noir Tous ces éléments sont en Mo ici et n'ont aucune valeur en tant que vecteur ici. En fait, nous devons en faire une variable, car si nous l'utilisons deux fois, nous en obtiendrons deux au hasard. Ensuite, nous allons terminer. Accès. Ce serait demander une sauvegarde. Faisons la clé BD. Valeur publique, suivi de l'adresse IP ou modification en cours. Revenons à notre tableau, et à notre séquence appelée les PT à cibler. Nous allons sélectionner ceci. Si je les ai déposés maintenant, choisissons que ce soit notre lieu de déménagement. Ensuite, il suffit de passer à. Nous nous déplaçons vers l'emplacement, où nous avons la patrouille, donc je copie ici, où la variable est déjà définie. Ici. Et ce serait tout vu de côté. Donc, si nous attaquons et que nous ne sommes pas à portée, nous trouvons un endroit aléatoire. Nous essayons de trouver un endroit aléatoire près du joueur et de nous y déplacer. Jusqu'à ce que nous le trouvions, nous restons coincés dans cette boucle ici. Passons maintenant à la suivante. Ce sera à nouveau une séquence. Celui-ci fonctionnera sur la base de deux décorations. La première, la portée serait dans la gamme. Ajoutons-en un autre ou k. Et celui-ci serait également par surprise, nous avons besoin d'une autre tâche ici. Mais je pense que c'est un bon point d' arrêt pour celui-ci. Nous allons passer à la suivante. Au revoir 122. Optimisation du volume de navigation par IA et du parcours: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le cours de création procédurale d' action-psic de Dungeon sur Real Engine Five création procédurale d' action-psic de Dungeon Auparavant, nous commencions par mettre une partie de notre état comme une attaque sur notre arbre de comportement. Donc, si cela équivaut à une attaque, nous vérifierons si notre personnage est à portée ou non. S'il n'est pas à portée, nous essayons de faire un pas vers le personnage, de nous déplacer vers le personnage, puis déplacer vers le personnage, de nous déplacer vers cet endroit. Comment y parvenons-nous ? Eh bien, nous réglons notre mouvement sur une rotation. Le personnage se déplace donc en fonction de sa rotation. Et puis nous arrivons à comprendre le personnage. Nous faisons quelques calculs pour créer un cercle autour du personnage, et nous vérifions un rayon de 200 de 200 autour du point de 500 rayons lequel nous créons le cercle, nous créons le cercle et à partir de ce point, obtenons 200 rayons supplémentaires, en gros. Non, la raison pour laquelle nous le faisons. Je n'ai pas trop expliqué cela, c'est parce que nous ne voulons pas vraiment prendre un point avec le joueur et simplement aller ici. Prenez ce point et 200 autres points de rayon peut-être que nous nous éloignons un peu plus du personnage. Il y a plus de chances que cela se produise. Il pourrait y avoir des moyens plus complexes de le faire : plus de formules mathématiques, plus de conditions Mais je pense que c'est une bonne solution pour un résultat rapide. Donc, après cela, si ce n'est pas vrai, nous renvoyons execute false. Notre tétrac fait donc une boucle ici jusqu'à ce qu'il trouve un point correct Et si ce n'est pas le cas, s'il trouve le bon point, il définit le point focal local de la souris, et nous définissons la valeur de la touche du tableau noir et finissons l'exécution sur true Nous pouvons donc déménager à cet endroit. Ensuite, nous avons commencé par ce qui se passe si le charretier est à portée et qu'il est également serré. Maintenant, comment cela va se passer , comment allons-nous nous dérouler, créer une tâche, une tâche à attendre, une tâche à tirer et une tâche pour réinitialiser le tournage. Commençons donc par le matin, nouvelle tâche, base d'impression. Appelons cela Am, bien sûr, nous allons avoir besoin du reçu . Assurez-vous choisir l'exécution par l'IA, pas simplement exécuter Nous allons envoyer que nous avons besoin rotation du contrôleur, donc du message du contrôleur. Et nous allons partir du point de vue. Et nous allons nous lever et nous allons faire attention. Nous utilisons donc la rotation du contrôleur. Nous sommes en train de définir le point focal, et il tournera vers celui-ci. Nous allons donc terminer l'exécution. Maintenant, en ce qui concerne la rotation du contrôleur , quel est le but. Il existe un moyen de contrôler la vitesse de rotation. Donc, si nous passons à notre personnage IA, mouvement des personnages et à la rotation des caractères, il y a certains paramètres ici, et il y en a un appelé paramètres de rotation des mouvements des personnages, qui est actuellement à 40, réduisons-le à 360. Mais c'est le taux auquel il tourne essentiellement. Comme vous pouvez le constater, le changement de rotation par seconde est utilisé lorsque le contrôle, la rotation souhaitée ou l'orientation par rapport au mouvement sont définis. Mais cela contrôle la rotation dans les deux cas, ou la rotation souhaitée ou l'orientation de la rotation par rapport au mouvement. Maintenant, revenons à notre BT et lorsque nous aurons terminé l'exécution, nous devrions forcer le succès. Revenons à nos trois et appelons cette tâche. PTT A. La prochaine chose à faire est d'attendre. Maintenant, nous allons modifier un peu les réglages du poids. Il y a un temps d'attente ici, donc nous allons attendre 0,2 seconde. Nous allons vous donner un écart aléatoire de 0,1. Nous pouvons donc attendre 2,3 secondes ou 0,1 seconde. Et cela créera un sentiment aléatoire au moment où l'IA attaque. Et voici la partie suivante , que nous allons tourner. Encore une nouvelle tâche. Soyez une base d'impression. Appelons cela BT Task Shot. Passons à l'exécution. IA. C'est très simple. Ce que nous devons faire, c'est prendre le contrôle de notre PM et de notre message, car nous avons déjà créé le code pour le tournage. Maintenant, nous pouvons mettre une tâche de poids dans notre équipe, ou nous pouvons même y mettre un délai. Parce qu'après le tournage, nous devrions attendre. Attendons une plage aléatoire. Plage flottante aléatoire, désolé, de 1,4 à 1,1 0,6. Finissons l'exécution. Je le fais comme ça et sans cohérence, car je veux montrer qu' il existe de nombreuses façons de faire les choses. n'y a pas un seul moyen, et cela n'a pas vraiment différence si je mets le poids ici. Alors en gros, la différence est que cela va peut-être avorter si je m'abandonne moi-même. Mais la tâche s'arrêtera également lorsque je m'abandonnerai moi-même. Il existe donc de nombreuses façons de faire les choses. Il faut juste que ça marche. Oh, appelons Shoot. T est un shoot de tâches. Maintenant, réinitialisons le tournage Nous avons donc besoin d'une nouvelle tâche pour effectuer le tournage avec réinitialisation des tâches de base. Et ce que nous allons faire, nous allons l'examiner parce que nous allons définir les variables, aller dans l' arborescence et montrer cela. Nous allons définir ces variables sur false. Donc, pour qu'ils soient définis comme vrais. La tique doit recommencer à courir. Il va falloir vérifier tous les 0,3 ou 0,5 pour qu' ils redeviennent vrais. C'est donc une autre façon de créer un petit délai. Passons maintenant à la réinitialisation du tournage. Recevons des exsudations. IA. Il suffit de créer deux variables, les touches du tableau noir ou les touches noires Blackboard Keys Elector, et l'un d'eux sera Bp. L'autre serait la gamme PB. Cela donne également l'opportunité lorsque le joueur se déplace hors de portée. Ce délai, ce délai, par exemple, lorsque nous nous trouvons hors de portée entre les secondes nous donne la possibilité des mesures plus complexes si nous le voulions. Revenons-en donc à cela et à la valeur du pluck. Les valeurs et la fin de l'exécution sont exécutées. Quant à savoir si nous sommes en train de régler ces deux chutes, nous devrions les rendre publiques. Nous pouvons leur configurer notre IA. Trois ici compilent. Je Je pense que je choisis le mauvais événement. Oui, ça doit être ça, alors optez pour ce set. Et ici, bien sûr, ils sont là. Portée étroite. En gros, c'est pour. 123. Volume de navigation et optimisation: Bonjour et bienvenue dans l'atelier de conception de jeux et dans le cours de création de Real Engine Five Procedural Dungeon Action AR Phys. Maintenant, pour faire bouger les choses et faire toutes nos merveilleuses choses. Comme vous pouvez le constater, pour chaque tâche pour laquelle nous avions besoin d'un point aléatoire ou d'un déplacement , nous avons besoin de données nerveuses, ce dont nous n'avons pas besoin car elles peuvent les obtenir automatiquement. Mais ce que nous allons faire , c'est créer un volume énorme. Ceci. Nous avons donc besoin d'un autre volume de rebond du maillage Réglez son emplacement sur 00. Réglons-le à quatre K partout. Nous pouvons augmenter considérablement sa hauteur parce que nous partons de 00, alors peut-être. Oui, ça fait 30 km. Si c'est zéro. C' est ce qui fait que nous ne pouvons peut-être pas être infinis parce que nous ne pouvons pas déplacer les plans de volume de navigation en livres Comme vous pouvez le constater, il essaie de créer le volume de navigation, même s'il ne contient rien. Mais nous devons apporter quelques modifications. Je vais construire. Nous allons continuer après. Et laissez-moi vous expliquer pourquoi nous avons besoin de ces paramètres. Il s'agit d'un volume de navigation énorme. Tout d'abord, nous démontrons que nous devons nous concentrer sur le cadre du projet, certain temps, qui est un cadre national, et que nous voulons que cela soit dynamique. Si j'appuie sur Dernière chose, nous devons changer le boulon de refonte en Is it run time generation, alors je vais bien Je l'ai obtenu dans les paramètres du projet. Maintenant, si j'appuie sur Play, pour voir un peu trapu. Et si je choisis la nation, donc si je choisis la navigation, vous pouvez voir. C'est une vaste région. C'est de la navigation, même sur les toits. Donc oui, c'est une vaste zone, et plus le bras sera gros plus nous aurons de zones, et ça va devenir désordonné. Il va vraiment prendre de l'image et toute cette IA qui se déplace autour de lui. Pour changer cela, nous allons utiliser quelque chose. Vous n'êtes pas censé être honnête pour le faire comme ce bâtiment sur terre sur une immense zone de navigation. Mais tout autre système nécessiterait beaucoup de temps et de travail pour être achevé et splus plus Mais en toute honnêteté, il est possible optimiser un peu grâce à des plans et à tout Pour nous, ce que nous allons faire, je vais quitter la navigation, c'est passer à nouveau aux paramètres du projet. Nous allons rechercher des invocateurs. OK. Nous allons donc utiliser ce paramètre pour générer une navigation uniquement autour de l'invocateur de navigation. Et qu'est-ce que la navigation dans Okers ? s' agit donc essentiellement d'un outil, d'un outil utilisé pour générer et gérer dynamiquement des mesures de navigation, les meas essentiellement dans un environnement vaste ou ouvert. Démontrons cela. Ajoutons-le à notre personnage. Passons à notre personnage de haut en bas. Ajouter Voker, navigation dans Vocer Optimisons un peu car 3 000 rayons, c'est grand, donc je vais faire une suppression de 200 rayons 400 Vous voulez que le rayon de suppression soit légèrement supérieur à celui de la génération, afin qu'il crée une trace lorsqu'il le supprime. Alors, appuyons sur Play maintenant. Éjectons-le. Et vous pouvez maintenant voir le désordre de navigation, ce qui est calculé uniquement en fonction de notre personnage. Nous allons donc faire de même avec nos IA. Quelle est cette erreur due à la trace par joueur ? Parce que l'IA existe avant le joueur. C'est un problème. Ça n'a pas vraiment d'importance. Il s'agit d'une erreur nulle. Vous n'avez pas pu trouver le joueur pendant une seconde. Rejouons. En fait, revenons à notre IA. Ajoutons l'invocateur. Réglons son rayon de tuile 2200400. Voyons vraiment l'IA. Comment puis-je ? Non, nous ne le savons pas. Mais nous avons une clé. Passons à ce qui précède. Il fait encore noir. Mes ombres. Nous devons changer la voiture de l'ascenseur. Mieux. N'y a-t-il pas d'IA ici également ? Il y a l'IA. OK. Maintenant, nous pouvons utiliser l'IA si elle fait quelque chose. Pour le moment, il semble que cela perdure. Oh, pour commencer facilement, allons dans l'arbre. S. Et je ne le trouve pas, je sais. Nous n'avons pas dit à nos pontons qu'ils étaient essentiellement contrôlés par cela. Parce que si nous ne définissons pas leur IA, ils ne le sauront pas. Pense que c'est logique. Donc, dans le detailb, dans le b par défaut, en gros, je vais rechercher un contrôleur AI Au lieu du contrôleur AI générique A, nous allons utiliser le nôtre, l' AIC N, et maintenant ils sont contrôlés. Recommençons, et nous avons une IA ici. Mais encore une fois, cela ne fait rien. Pour une autre raison, cette fois. Je ne trouve plus grand-chose. B. Mais je le sais ? Oh, c'est le personnage. C'est mon erreur. Revenons à l'IA. C'est là qu'il doit être. L'IA doit donc être contrôlée par l'IA, et non par le personnage. Alors allons jouer. Ah. Jouons à nouveau. Tu as l'IA. Génial. Et ça ne fait rien. Et encore beaucoup de trouvailles. Eh bien, c'est logique. Je suis désolée. J' oublie toujours l'essentiel. Comme l'autoposesse A au-dessus de la manette ennemie IA, c'est un endroit du monde où nous ne plaçons pas l' Nous le ferions si nous débuguions sur une autre carte, mais pour le moment, nous avons été placés ou apparus parce que nous créons cette IA. Nous compilons et sauvegardons, pour troisième fois, la quatrième fois, temps de maladie fait le charme. Et voyons voir si elle ne bouge pas, elle bouge. Génial. Déplacement, mais l' animation ne se met pas à jour. Génial. Eh bien, réglons ce problème dans le prochain. Je vais t'appeler alors. Au revoir. 124. Comportement de finition et débogage: Bonjour et bienvenue dans Game Design Workshop, Rail Engine Five Procedural Dungeon création de Rail Engine Five Procedural Dungeon at Pred Auparavant, nous en avions fini avec notre IA, et nous avions également ajouté notre volume de réponse à la navigation, ainsi que nos révocateurs de navigation Nous avons également terminé nos tâches BTT. Je pense qu'ils ont été suffisamment bien expliqués. Maintenant, nous avions quelques bugs à corriger. Tout d'abord, passons à notre IA ici, où se trouve tout ce plan d'animation basé sur l'IA Lorsque toutes ces informations proviennent du propriétaire du pawn, essayez de contacter Pawn Owner Mais cette fois, notre propriétaire n'est pas un joueur. Cela est donc peut-être en train d'échouer. Mais ce que nous allons faire, c'est lancer le jeu sur Blueprint. Nous allons essayer de trouver le propriétaire de Pw. Et nous allons demander à AI AI e one de recruter et de promouvoir ces deux personnages. En fait, je vais l'appeler comme ça Le personnage AI a été pris. Et nous allons changer cela. Maintenant, a. La raison pour laquelle nous faisons cela, c'est parce que nous voulons changer ici, changer la façon dont nous l'avons fait pour connecter ici, cela va ici. Au lieu de mettre à jour Acceler quelle est cette recherche ici ? Pour le supprimer ici, et connecter le personnage à notre mouvement de personnage. Et ce que nous allons obtenir, c'est la vélocité. Ce sera le cas en fin de compte, et nous allons connecter cela ici. La raison en est que l'accélération ne fonctionnait pas vraiment avec la façon dont se déplace notre charter. Donc, nous allons compiler, s, nous allons jouer, et maintenant notre IA est censée bouger. Je ne fais rien. Non, non, ça bouge. Super, et il améliore la navigation . Comme vous pouvez le voir autour de lui, il peut se déplacer n'importe où. Maintenant, essayons de l'attaquer. Il nous voit, il nous regarde. Et il n'a rien fait, ce qui a fait volte-face à nous. Créez ce bogue et voyez ce qui se passe. Ouvrez le jeu. Cet onglet. Je vais m'éjecter d'ici, je vais le sélectionner , sélectionner l'IA Parce que pour le trouver ici, ici, il faut le sélectionner. Il devrait indiquer sélectionné, eh bien non. OK. Essayons de trouver quelle IA est laquelle, car il y en a deux ici, ou des mouvements. Poids. Les deux attendent. Je pense que c'est celui-ci. Celui-ci a complètement reculé, parce que celui-ci continue de bouger. Il faut donc dire zéro. Oui, ce qui ne fait rien en fait. Pourquoi ne fait-il rien ? Au retour. Je le filmais par erreur, et c'est une vérification constante de l'état sélectionné par l'IA ou en avons-nous un ? A est un Laissez-moi essayer de le déboguer OK. Après un peu de débogage, je découvre que j'ai créé ce handle ici, mais que je ne l'ai jamais utilisé Non, en gros, ce que nous devons faire, c'est lorsque nous commençons à nous chevaucher. Et lorsque nous touchons le joueur, nous sommes à portée, nous devrions commencer notre temps. Nous interrompons le temps de pause par manche, lorsque le champ est à portée, nous commençons à chercher notre joueur Et bien sûr, en ce qui concerne le décès par décès, voilà, juste après le décès, reprenons les choses en main, clarifions-le et invalidons-le Il ne fonctionne plus, même pas en pause. Oh, le prochain endroit serait de passer à notre tâche PT, étape par étape vers l'objectif. Encore une fois, j'ai commis une erreur. Je n'ai pas ajouté l'emplacement des points du joueur. Ce sont les éléments de base, comme cette gamme, par rapport à d'autres. Je vais juste ajouter. Ajoutez et ceci x ceci. Soyez là quand vous avez raison, vous devez le dire où dans le monde. Nous en avons déjà parlé. Bien sûr, le prochain endroit serait que nous fassions également quelque chose. Puce BP AI. Je demande si le composant possède le remorqueur E, c' est-à-dire si l'acteur a creusé parce que nous l'avons sur l'acteur et non sur le tube de collision, la capsule de collision Je pense que je comprends le problème où nous ne pouvions pas tirer. Nous passons également à notre personnage de haut en bas, et lorsque nous sommes endommagés et étourdis, nous sommes toujours en vie. Ils le sont. Nous allumons l'État. Et si nous sommes déjà stupéfaits, nous passons à l'état normal si nous appuyons sur Tamise. Si nous n' appuyons pas sur Shift, la touche Tamise. Si nous n' appuyons pas sur Shift, nous revenons à l'état normal Cependant, si nous passons le quart de travail, nous passons au retard et nous restons debout au lieu de nous refroidir , et nous ne retournons pas au matin. Pour ce faire, nous allons faire appel à notre mécanicien am, créer un événement personnalisé, am. Ainsi, lorsque nous appuierons sur le tamis gauche, nous n'avons pas besoin de le faire car il est déjà en panne, et nous allons le connecter ici parce que nous ne voulons pas passer ce test Donc, pour l'animation de la mort de notre ennemi debout, nous devons trouver nos pages de montage d'animation et d'animation , et nous avons besoin de There is death. En fait, nous l'avons basé ici. Cette animation doit, là où elle possède cette option, activer la fusion automatique. n'est pas ce que nous voulons. Si nous voulons qu'il y reste. Nous faisons la même chose pour d' autres, tout comme l'animation Knockb Passons donc à notre animation Knock Back et sélectionnons le mélange automatique comme faux. Et jusqu'à la mort de notre personnage. Passons donc à Revenant. Trouvez la mort. Tout comme la mort ici, la mort ne fait pas bon ménage, et avec notre feu principal. Nous ne voulons pas que cela se mélange. Et maintenant, nous pouvons jouer au test. OK. Ça m'a été dit ? En haut de la tour. L dans la tour. À l'écoute de moi. donc qu'il suive un petit peu faut donc qu'il suive un petit peu la rotation. Encore une chose. Encore une fois, sur le projectile de la balle, on passe au mouvement du projectile, on suit la rotation qui suit la vitesse J'ai émis un peu de son. Regarde ce qui s'y passe. Faire de l'exercice. prie. C'est dans les portions. Grand coffre. J'ai déjà la clé. I. Niveau suivant. Je vois au Mara 50 grammes. Nous avons un tas d' annonces ouvertes qui se terminent. 60 PS, non ? Je pense que cela est dû à l'IA et au volume de navigation. En ce qui concerne le temps d'exécution, ce serait un peu mieux, peut-être bien mieux. ennemis qui marchent sur des pièges, une autre IA. C'est embêtant que ce qui se passe ici ? J'essaie de déménager ici. Appuyer correctement sur le support. Mais je chauffe et il essaie de se déplacer là où je chauffe. Si je clique, je continue de marcher. Mais je suis en train de mourir, je marque un score, non ? Nous avons un problème de mouvement et de chauffage. Mais je pense que nous allons avoir besoin d'un autre terrain. Nous allons donc laisser ça pour eux. Au revoir À bientôt. 125. Correction de bugs finaux et polissage du gameplay: Bonjour et bienvenue sur Game Design Workshop, et sur le véritable moteur 5 du cours de création de RPG d'action Procedural Dungeon création de RPG d'action Procedural Enfin, voici notre dernière leçon de débogage. Tout d'abord, réparons le labyrinthe infini, pas sans fin, mais à la précipitation du moteur Ce qui se passe, c'est que lorsque nous reportons la première tuile, je pose la mauvaise question, la direction hors site, et pas égale à la Mais parce que nous décalons le labyrinthe en fonction de la direction du décalage Notre sens de décalage devient fondamentalement le contraire. Notre dernière sortie ne doit pas être l'opposé de notre direction de décalage , car supposons par exemple que nous nous déplaçons vers le nord, alors la direction de décalage O est le nord, mais le sud devient le t qui ne doit pas être égal. sud devient le carreau où nous venons, l'ascenseur. Donc, puisque le sud devient la dalle de l'ascenseur, la dernière sortie ne devrait pas être l'ascenseur. Lorsque cela se produit, cela crée un labyrinthe de grande envergure détruit complètement le système et fait planter le moteur Donc, ce que nous allons faire, c'est sélectionner le commutateur. Et prenons la dernière sortie ici pour pouvoir l'obtenir. Ensuite, je vais le déconnecter. Du nord, nous avons besoin du sud, de l'est, nous avons besoin de l' ouest depuis le sud, nous avons besoin du nord et de l'ouest, nous avons besoin de l'est dans la direction opposée à la direction opposée. La dernière sortie ne doit pas être égale à l'inverse. Mais lorsque nous quittons le style, ce ne devrait pas être l'ascenseur C'est donc ce qui a causé le crash du moteur. Il a eu une chance sur quatre, c'est un très mauvais bug. Quoi qu'il en soit, c'est tout simplement logique, c'est simplement parce que nous sommes en train de prendre cette direction. Loin. Maintenant, le prochain bogue qui se produit, c'est que parfois cela fait apparaître un labyrinthe que vous ne pouvez pas quitter le premier bloc dans le labyrinthe suivant , puis continuer Et c'est parce que nous définissons la dernière sortie, mais nous ne fixons pas les directions. Je ne donne pas les indications. Donc, en gros, à la première sortie, nous définissons la direction pour qu'elle soit vraie. Mais ce n'est pas ce que nous faisons, j' ai fait le débogage ici. Commentaire de débogage Ce n'est pas ce que nous faisons ici. Je vais mettre ça ici. Je vais aller un peu plus loin. Mais maintenant, nous devons informer le style que votre direction est ouverte vers la dernière sortie, et passons à la dernière sortie, c'est ici. Cela était donc à l'origine de ce bogue. Maintenant, nous nous sommes arrêtés avec quelques problèmes de mouvement et de prise de vue. Passons donc d'abord à la manette du joueur. C'est une erreur que j'ai commise. Eh bien, il y en a beaucoup que je n'ai pas détectées, mais dans le cas d'un projet de la taille, bien sûr, localisez-le sous Kursor Donc, dans notre fonction, get location under Kursor, je vérifie la visibilité pour obtenir sous Kursor Ainsi, lorsqu'il ne touche rien et qu'il ne prend pas en compte les collisionneurs de sphères, cela renvoie des valeurs erronées basées sur d'autres collisions présentes sur notre carte Je vais donc passer à la caméra, et cela va régler ce problème. Viennent ensuite les problèmes de tournage. Donc, lorsque nous tournons, nous devons changer, arrêter de mettre des écoutes sur écoute Ainsi, lorsque nous tournons, lorsque nous sommes en mode amélioration de la détection des entrées , cliquez et c'est déclenché. Et nous survolons une cible, nous sommes dans un état normal, nous survolons une cible et nous tirons Nous devrions arrêter le mouvement. Parce que si nous n' arrêtons pas le mouvement, c'est qu' il est activé par le passé et comme c'est le cas, il continue de bouger. Nous devrions donc arrêter le mouvement. Et une autre chose qui dérange c'est ici lorsque nous sommes dans le collimateur Donc, dans le collimateur, nous sommes en train de vérifier quand, en ce moment, c'est le changement qui doit être fait. Donc, ce que nous faisons, c'est vérifier si nous sommes sous l'ennemi, notre Hursor est sous le joug d'un ennemi, puis cela Mais si nous maintenons le cap alors que nous sommes dans un État, nous ne modifierons pas l'objectif. Nous sommes juste en train de le régler sur un réticule, une cible rouge. Honnêtement, cela ne devrait pas être le cas car au cas où nous serions regardés, l'une des choses qui peuvent arriver est que lorsque nous obtenons Stan, AM se transforme temporairement en Stan Donc ça disparaîtrait Donc ce que je vais faire c'est le supprimer, passer à la première question et juste obtenir la référence du joueur, je suis là et juste obtenir la référence du joueur, et en faire une. Donc, si nous frappons un ennemi ou si je suis à terre, c'est une malédiction croisée. Si ce n'est pas le cas, nous avons un curseur normal. Donc, cela devrait être le changement, et cela devrait être un point de contrôle central C'est mieux que de l'avoir comme option ici, comme si la première question était celle qui change les choses. Passons donc à notre personnage de haut en bas. Et lorsque nous visons, nous devons également arrêter le mouvement. Sur le quart de travail à gauche, visez , etc. Ici, avant de jouer notre montage, arrêtons le mouvement, avant même ces deux choses. Nous allons obtenir la référence de notre manette de jeu, je vais arrêter de bouger. Maintenant, il y a un mouvement d'arrêt pour la navigation, qui n'est pas le nôtre, juste au cas où vous manquiez un clic et que vous utiliseriez celui-ci à la place de celui-ci. C'est arrêter de bouger, pas arrêter le mouvement. Arrête de bouger. Si j' appelle l'autre. Arrêtez le mouvement. Vous voyez, c'est une fonction différente. Sa cible est le contrôleur lorsque cette cible est le contrôleur de haut en bas de BP. La logique sous-jacente est celle de l'IA, et pour être honnête, nous créons généralement notre personnage pour qu'il soit une IA, qui change simplement d'état, mais c'est un peu plus avancé. Maintenant, la prochaine chose à faire pour corriger les bugs du jeu, c'est ici, lorsque nous réinitialisons l'attaque, lorsque nous réinitialisons l'attaque, nous baissons le pistolet Ainsi, lorsque nous baissons le canon, quoi qu'il arrive, cela signifie qu'il redeviendra normal, même si nous baissons le canon parce que nous avons été interrompus ou parce que nous avons tiré et qu'il doit réinitialiser l'attaque. J'ai donc besoin d'une question : dois-je baisser mon arme ou non ? Et c'est notre objectif en bas. Si nous visons vers le bas et que c'est vrai, ne baissez pas le canon. Si ce n'est pas vrai, baissez le pistolet. On parle de cette branche ici, nous l'utilisons ailleurs, ce qui nous fait du mal. Ainsi, lorsque nous subissons des dégâts, nous nous tournons vers l'étourdissement, et il est possible que nous ne le fassions pas Ensuite, si nous ne sommes pas morts. Si nous sommes morts, nous faisons juste ce qu'il faut pour mourir. Mais si nous ne sommes pas morts, nous jouons au montage thermique et nous changeons en fonction de l'état du joueur. Si nous sommes étourdis, que nous partons et que nous visons vers le bas, nous réglons simplement le délai et les statistiques sur le temps de refroidissement, sans rien changer. Cela signifie que nous restons étourdis par l'État. n'est pas ce que nous voulons. Ce que nous voulons faire, c'est nous concentrer sur l'objectif de l'État. Si nous n'inversons pas l'état, nous restons debout, et c'est pourquoi nous ne pouvons pas bouger à certains moments en combattant l'IA Nous restons debout tout en appuyant sur Shift, et rien ne se passe. Nous restons debout pour toujours jusqu'à ce que nous changions vraiment, et cela se dirige vers l'autre branche. Donc, en gros, cela bloquait nos états tant que nous appuyions sur Shift, et nous espérons que cela résoudra le problème. 126. Correction de bugs de gameplay majeurs: Bonjour et bienvenue sur Game Design Workshop, sur le moteur L cours de création de cinq applications d'action procédurales dans les donjons Maintenant, la prochaine chose est que notre ascenseur a un problème avec notre caméra. J'ai d'autres problèmes, mais le plus clair concerne l' appareil photo, car nous avons copié-collé le post-traitement, mais il l'a réglé sur un et un, mais cela ne l'a pas activé Nous devrions donc activer l'exposition sur 11 sur Min Max pour qu'elle soit de 11, et cela corrige l'éclairage qui devient trop intense. Maintenant, la dernière chose à faire est d'ajouter notre brouillard. Nous allons ajouter des choses, huit brouillards exponentiels. C'est ce que nous voulons. Lisons à haute voix. Si nous commençons ici, nous voulons que le brouillard soit un peu plus faible. Jouons une seconde. Maintenant, je n'ai pas réglé les choses. Réglons les détails du peuple. Réglons-le sur -700. Je vais augmenter ce chiffre, être plus visible parce que c'est tellement ennuyeux. Laissez-moi le fermer pour ça. OK. Plus rien ici. Donc, emplacement, -700, mettons fk densité deux. Je sais que la valeur passe à 2,5, mais voyons voir. J'ai cliqué sur Alo, disons 22. Et ce serait tout. Réglons également. Je vais coucher quelque chose de rougeâtre. Nous avons donc une couleur rougeâtre au brouillard. Et je pense que ce serait ça. Oui. Je vous en prie, jouez maintenant. C'est un peu plus bas et c'est un peu triste. Oh, et laissez-moi actionner à nouveau les flèches parce que nous pouvons les voir En fait, je l'ai oublié après le débogage. Accédez aux flèches à bascule où vous trouvez les flèches à bascule. Je débugue, nous y voilà. OK ? C'est connecté parce que je voulais voir ce qui se passait pendant le débogage Il fait un peu plus sombre que ce à quoi je m'attendais, mais cela rendra les lumières un peu plus conviviales. Mais pour mieux voir le personnage , passons au personnage dans la fenêtre d'affichage, car le personnage ne doit pas être si sombre Mettons un point en lumière ici. Appelons cette lumière de caractères le rayon des caractères. Et changeons cela en lumen en fait. 100 c'est beaucoup, disons 50 le rayon 50. Nous pourrions avoir des articles, par exemple, qui augmentent les doses de ce blog. En tant que rayon 70, peut-être 100, cela ne fait pas d'ombre à notre personnage, 100 peut-être hors source 50 ou une longueur 70 un peu trop éloignée des caractères de 100. Si votre point de vue est erroné, vous risquez de manquer un peu les valeurs. E. La chaussure va créer des ombres. C'est bon. C'est bon. Non. C'est quand même un peu bizarre. Je veux dire, vraiment concentré sur le centre. Changeons un peu la couleur pour quelque chose de plus charnu. Ici. Huit. Peut-être qu'on en a mis un peu plus haut. Utilisez ce 70. Tu sais quoi, n'éclairons pas le personnage avec ça, mais éclairons le sol autour du personnage. Ce que nous allons faire, c'est passer au canal de la lumière. Laissez-le éclairer Channel 2, pas notre personnage. Et rapidement, passons à nos carreaux. Carrelez le carrelage et passez à votre étage. Le canal sera également éclairé par le canal un, et non par le canal deux, car c'est le canal un basé sur zéro. Voyons à quoi cela ressemble. Oui, nous avons un rayon de lumière, et nous pouvons augmenter légèrement l'éclairage de notre carte. Passons aux détails 1-4. Si nous sommes mouillés, les phoques sont un peu plus lents, mais tout est beaucoup plus visible. Et lorsque nous passons à côté des ombres, nous pouvons voir notre lumière. C'est bon. Maintenant, non, sois honnête, c'est trop léger. Mettons ça 23. Lumière en trois. Je suis un peu trop mince. Deux qui semblent faire l'affaire. Bien mieux. Maintenant, si je vais passer à un autre étage, l'ascenseur. Ici, de l'autre côté, nous avons les clés Pops. Le personnage est tombé, mais cela n'a pas vraiment d'importance. Je vais juste l' élever ou le localiser. Descendez le caractère, nous y voilà et collez. Nous avons également activé l' ascenseur. Moi. Je descends, il fait un peu plus clair parce que le brouillard ne suit pas vraiment. Mais ce que nous faisons. Retournons à l'ascenseur et commençons à jouer sur l'ascenseur, où est-ce que ça va toujours. Nous y voilà. PS. Nous y voilà. Nous allons utiliser toutes les portes dérobées des cours. Nous allons obtenir le brouillard de brouillard, nous allons obtenir le premier exemplaire que nous trouverons parce que nous n'en avons qu'un, en le promouvant au rang de variable appelé brouillard variable. Sur notre tickvn, lorsque nous définissons l'emplacement de l'acteur. Nous allons définir l'emplacement ou l' emplacement des brouillards. Il va nous falloir un peu plus d'espace. Nous allons alterner avec Constant, nous allons garder la même vitesse. Nous allons trouver la localisation de l'acteur. Ce Delta T parent, nous allons utiliser Delta. À partir de la cible, nous allons en fait l' utiliser exactement comme ça . » va avoir besoin d'un nouvel original et d'une nouvelle cible. Je vais donc promouvoir cette survie au rang d'original. Le dernier à avoir. Nous allons régler cela lorsque les clôtures seront montées. Pour être sûr maintenant. Je pense que cette animation de démarrage, c'est la montée des clôtures. Nous allons donc chercher notre brouillard, je vais trouver un emplacement. Je vais régler l'emplacement du brouillard d'origine sur celui-ci. Et ajoutons à cela la hauteur du labyrinthe. Nous ajoutons 2900. Numéro 2500. C'est l' ascenseur, n'est-ce pas ? Oui, c'est la place de l'ascenseur, elle devrait disparaître, et le labyrinthe monte lorsque nous répondons au labyrinthe Cela peut être une variable jusqu'à 2500. C'est l'endroit où se trouve le brouillard, 22500. Je vais copier cet article d'ici à ici. Ça, je vais définir un emplacement cible pour cela. Je me connecte cette année, je me connecte cette année. Et c'était un jeu pour l'autre. C'est bon. Et le brouillard nous accompagne. Cela ne ressemble pas vraiment à un brouillard, mais cela donne cette couleur et cette ombre Il y avait donc un énorme châssis à cet endroit. C'est arrivé. Tu vois ? C'est le problème avec s. Nous n'avons pas résolu ce problème. Réglons ça pendant une seconde. Ailes. Je n' aime vraiment pas le voir. Où est-il ici ? Je vais chercher cet étage, déplacez-le un peu. En d'autres termes, cela ne vient de nulle part ailleurs. C'est réparé. Ce que fait notre brouillard, gros, n'est pas visible ici, mais il est visible vers ici, nous ne pouvons donc pas voir le bout de ces carreaux. Et il en sera de même si nous passons à l'étage suivant, passons à l'étage suivant. Vous verrez que la même chose se produira dans le prochain. Tout d'abord, cela s'estompe un peu. Maintenant, nous pouvons voir le bord de la coupe, mais nous allons ici. Tu vois, il n'y a pas de tranchant. Il y a un problème ici, nous pouvons déplacer des choses, et je suppose qu'il y a d'autres problèmes qui peuvent être résolus Ce coffre ? Je ne suis pas à portée. Quoi qu'il en soit, comme vous pouvez le constater, il y a des bugs. Prêt à être à portée. Je pense que nous avons fourni les outils nécessaires pour corriger tous ces bugs. Maintenant. Autre chose, j'ai légèrement augmenté mes images par seconde Comme vous pouvez le voir, comme vous pouvez le voir, j'ai réduit le volume du labyrinthe, le volume de navigation à 1 000 maintenant Non seulement ce n'est pas optimal, mais cela crée de nombreux problèmes, un énorme maillage de navigation. Je n'utiliserais pas un désordre de navigation pour une telle quantité d'IA. J'aurais peut-être écrit un mouvement personnalisé pour qu'ils puissent les déplacer et les verrouiller dans l'axe, et ne pas se déplacer sur l'axe Z ou même s'ils se déplacent sur l'axe Z, suffit de se déplacer vers sans navigation, comme des traces de ligne, pouvez-vous y aller, puis y aller, quelque chose comme ceci, un système comme ça. Maintenant, une autre façon de le faire, je n'ai pas vraiment testé, mais nous aurions pu créer un niveau, un niveau de streaming que nous chargeons, doté d'un volume de navigation, et nous modifiions les nombreuses techniques à faire, gros, peut-être écrire un volume de navigation personnalisé dans spl plus, peut-être une classe personnalisée pour celui-ci, comme l'utiliser dans une classe différente que vous pouvez déplacer car plans ne permettent pas de déplacer ce volume Vous pouvez également classer les volumes de cette façon, car si nous passons à un volume de navigation, passons ici Phone act plus, il y a une refonte de Nav me, il y a d'autres choses, mais nous ne pouvons pas créer de volume de navigation C'est donc bien écrit dans Seps et une classe que vous pouvez créer avec un volume de navigation. Peut-être ou encore, il existe différentes façons de faire les choses en gros, mais la partie infinie, avoir quelque chose d'infini, n'est pas vraiment possible avec les outils dont nous disposons Nous avons en quelque sorte triché et créé ce volume de navigation, et c'était tout Merci de nous avoir rejoint dans cette véritable aventure Blueprint à cinq moteurs laquelle nous avons créé un générateur de moteurs complet pour un jeu de haut en bas, mettant en scène des ennemis, des objets à ramasser et plus encore Nous espérons que vous apprécierez le cours et que vous apprendrez beaucoup de choses en cours de route. Vos commentaires sont très importants pour nous. Donc, si vous pouviez laisser un avis et partager vos réflexions, cela nous aiderait vraiment à nous améliorer et continuer à fournir le meilleur contenu possible. Merci encore pour votre soutien, et nous sommes impatients de voir ce que vous allez créer.