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.