Transkripte
1. Spieldesign-Workshop: UE5 prozedurale Dungeon ARPG-Erstellung: Wolltest du schon immer deinen eigenen Dungeon
wie den legendären Diablo mit unerbittlichen
Feinden und einem epischen
Spiel
erschaffen und dabei die Macht nutzen, fünf zu erkennen? fünf zu erkennen? Nun, jetzt seid ihr herzlich willkommen beim Game-Design-Workshop,
in dem ihr fünf, prozedurale
Dungeons und Action-Si-Erstellung
realisiert Denn dein Traumspiel
kann Wirklichkeit werden. In diesem Kurs lernst du, ein voll
funktionsfähiges Action-LPG zu entwerfen fortschrittliche Baupläne
verwendest, von der
dynamischen
Generierung von Tangenten bis hin zu benutzerdefinierten KI-, interaktiven Truhen- und
Inventarsystemen Sie haben alles, was Sie brauchen , um Ihre Vision ans Licht zu bringen Hallo, ich bin Marcos und
habe mich mit
Dudo zusammengetan, um diesen
aufregenden Kurs anzubieten Unser Ziel ist es,
ein System zu entwickeln , das dynamisch Level
generiert, komplett mit benutzerdefinierten Wänden,
Requisiten und Beleuchtung, und
gleichzeitig
Gameplay-Funktionen hinzufügt, gleichzeitig
Gameplay-Funktionen hinzufügt um deinem Spiel Leben einzuhauchen Wir werden einen
Levelgenerator entwickeln, der
einen benutzerdefinierten Backtrack-Algorithmus verwendet einen benutzerdefinierten Backtrack-Algorithmus , um die Struktur
des Dangons zu erstellen Dies wird die Grundlage
für unsere prozeduralen Levels legen und
sicherstellen, dass sich das Spiel frisch und einzigartig
anfühlt Als Nächstes werden wir Räume bauen und das Level in
verschiedene Kategorien
einteilen Auf diese Weise können wir verschiedene Texturen,
Materialien und Requisiten
anwenden , um die visuelle
Vielfalt des Dangons zu verbessern Wir werden Lichtrequisiten hinzufügen, die
automatisch im Dungeon erscheinen , um
dem Level, während er generiert wird,
zusätzliche Atmosphäre zu verleihen Level, während er generiert wird,
zusätzliche Atmosphäre zu Eine der
aufregenderen Funktionen, die wir behandeln
werden, ist die
Aufzugsmechanik, die endlose Levels ermöglicht, während
die Spieler vorankommen.
Der Aufzug
spawnt einen neuen Generator, um das nächste Level während
die Spieler vorankommen.
Der Aufzug zu erschaffen ,
das Wir werden außerdem Entwürfe, Truhen
und eine Questtruhe hinzufügen, um
den Aufzug für den Aufstieg
in die nächste Etage freizuschalten den Aufzug für den Aufstieg
in die nächste Etage Damit sich die Umgebung lebendiger
anfühlt, werden
wir
physische Ressourcen oder
dynamische Interaktionen mit Requisiten
und Objekten in der Spielwelt einführen dynamische Interaktionen mit Requisiten und Objekten in Was das Design der Benutzeroberfläche angeht, werden
wir
ein Minimum von drei D einführen Spielern das
Navigieren im Dungeon
zu erleichtern Darüber hinaus werden wir
ein grundlegendes Benutzeroberflächensystem
zur Anzeige von Gesundheit
und Inventar sowie
verschiedene Gegenstände wie Geschwindigkeitssteigerung, Gesundheit und Zaubertränke entwickeln ein grundlegendes Benutzeroberflächensystem
zur Anzeige von Gesundheit , , alles Malas Für den Kampf werden wir
einen Charakter mit zwei
Hauptfähigkeiten erschaffen :
einen Angriff, der Gegner und Objekte zurückstößt,
und einen Angriff, der aus der Ferne einen
Damm aufbaut Wir werden auch
ein feindliches KI-System implementieren, Gegner patrouillieren
, auf den
Spieler
schießen, bei dem Gegner patrouillieren
, auf den
Spieler
schießen, wenn er sich in Reichweite befindet,
und sich neu positionieren, um einen taktischen Vorteil zu wahren Um den Schwierigkeitsgrad weiter zu erhöhen
. Wir werden ein feindliches
Gebäude entwerfen , das
auf den Spieler schießt. KI-Feinde werden
dieses Gebäude bewachen, und wenn es zerstört wird, gerät die
KI entweder in Panik oder greift den Spieler
aggressiv an und fügt dem Dungeon ein strategisches
Element
hinzu In diesem Kurs erhältst
du Zugriff auf ein umfangreiches Ressourcenpaket , das
dein Spieldesign verbessern wird Es enthält 21
benutzerdefinierte Benutzeroberflächentexturen und
133 Tracture-Maps für die
Texturierung von Objekten, 133 Tracture-Maps für die
Texturierung von Objekten mit denen 53 Materialien
und Material-Instanzen erstellt Das Paket enthält
63% Durcheinander von Fliesen in den fünf
Dungeonstilen „Stein“, „
Moosiges Kopfsteinpflaster“, „Holz“, „Ziegel“
und eine dunklere Themenkammer, und eine dunklere Themenkammer, sodass in den fünf
Dungeonstilen „Stein“, „
Moosiges Kopfsteinpflaster“, „Holz“, „Ziegel“
und eine dunklere Themenkammer,
sodass du sie nahtlos in dein Projekt integrieren kannst. Diese Codes führen dich
Schritt für Schritt durch den Aufbau
eines voll funktionsfähigen Dungeonsystems eines voll funktionsfähigen Lasst uns eintauchen und anfangen,
unsere eigene prozedural
generierte Welt zu erschaffen unsere eigene prozedural
generierte
2. Spielgrundlagen: Hallo und willkommen zum
Game Design Workshop und dem Kurs zur mit
Real Engine Five Erstellung prozeduraler
Dungeon-Action-Rollenspiele Lassen Sie uns erklären, worum es in
diesem ganzen Kurs geht. Ich werde dafür
zunächst
meine großartigen Zeichenfähigkeiten
in Farbe unter Beweis stellen ,
und das werden wir während des Kurses oft tun
. Was wir jetzt erstellen werden,
ist im Grunde ein Hauptmenü. Das wird ein Labyrinth
erzeugen. Aber die Art und Weise, wie
es funktionieren wird, werden wir etwas
genauer besprechen genauer Aber vorerst
wird es wie bei
Schlangenpfaden entstehen , die
irgendwann enden werden. Sie werden nicht in der
Lage sein, mehr zu erschaffen, also wird sie versuchen, einen anderen Weg zu
wählen und einen weiteren Schlangenpfad zu
schaffen
, der enden wird, jetzt zu gehen und dann immer mehr. Wir werden
das von einem Ausgangspunkt aus tun, und wir
werden uns auf
einem fiktiven Raster in jede Richtung bewegen Falls das Sinn macht. werden
wir
unseren eigenen Charakter kreieren
, der einen Angriff im Einkaufszentrum haben wird. Lass uns hier einen Schlag machen. Mein ML-Angriff und
ein Schießangriff. Natürlich ist der Koarcor, den
wir in
alle Richtungen bewegen können , das ist gegeben Und wir werden auch ein kleines Inventar
haben, wenn
das zum Beispiel unser Bildschirm ist,
wir werden hier ein
Inventar auftauchen lassen,
unser Charakter wird in der Lage
sein, einige Gegenstände aufzusammeln, indem er sie
anklickt, oder
einige Truhen öffnen,
in denen Gegenstände sie
anklickt, oder
einige Truhen öffnen , Ja, das ist ein fantastisches Schach. Wie ich dir schon sagte, tolle
Zeichenfähigkeiten. Ja. Und zu guter Letzt werden
wir einen KI-Charakter
erstellen. Lasst uns
diesem Charakter, der einen Fernangriff ausführen
wird, zwei Hörner aufsetzen einen Fernangriff ausführen
wird Es wird keine Waffe sein, es wird so etwas wie ein Dolch
sein. Und das, was wir
bei der
Erstellung des Labyrinths tun, werden wir im Grunde auch bei der
Erstellung des Labyrinths tun, werden wir im Wir werden so
etwas wie einen Turm bauen , der auf dich schießt, wenn du in Reichweite
bist, so
etwas Und im Grunde wäre das so. Die KI wird den
Turm bewachen und auf Patrouille sein. Wenn der Turm zerstört wird, läuft
er im Panikmodus durch das
Labyrinth Und wenn du in Reichweite
der KI bist, wird
sie dich erschießen, und wenn du dich nicht in der
Reichweite befindest, sind sie agro Sie werden versuchen,
einen Ort zu finden, auf den sie schießen können. Im Grunde eine sehr einfache KI. Wir werden Navigations
- und KI-Bäume
verwenden , um sie zu
demonstrieren. Aber um ehrlich zu sein, diese Größenordnung der KI und die
Art und Weise, wie wir sie gemacht haben, werden
prozedural sein , weil unser Labyrinth
etwas ist, das ich nicht hinzugefügt habe Das Labyrinth, wenn wir
das Ende erreichen , sagen wir, das ist
das Wir werden
mit einem Aufzug nach oben fahren
und ein weiteres Labyrinth schaffen Nicht kleiner, größer
als der vorherige. Kleiner würde keinen Sinn ergeben. Aber ja, das wäre es. Wir werden ein weiteres Labyrinth
schaffen. Und da das unendlich ist
und so, wie wir es tun, werden
wir
ein Navigationsvolumen verwenden das unsere Labyrinthe
verschlingt,
was es nicht unbegrenzt macht, weil es ein Limit hat Aber wir
werden das verwenden, um ein
Navigationsmuster zu demonstrieren,
das nach Ansicht von AI nicht optimal wäre Das wäre für unser Spiel. Es wird etwas
Framelg erzeugen, aber es ist in Ordnung. Ich denke, das ist ein guter
Ausgangspunkt für Erklärungen. Gibt es ein Kunstwerk, eine Kunstform, wie Sie sehen können Wir werden mit
dem nächsten weitermachen. Tschüss. Fangen wir damit an, ein neues Level für
feindliches Spiel zu
erstellen , denn dieses Level wird mit
unseren Vorschau-Assets gefüllt. Falls Sie mit
ein paar Erläuterungen noch nicht vertraut sind, können
wir die Ressourcen,
die wir auf
der ganzen Welt bevölkert haben, hier
in der Gliederungsbox finden der ganzen Welt bevölkert haben, hier
in der Gliederungsbox finden Wenn ich ein
Asset auf der Welt auswähle, wird
es mich zu diesem
Asset im Outliner weiterleiten Im Outliner können wir sehen, was sich darin
befindet, was wir in unserer Welt
platziert haben Lass uns ein neues Level erstellen. Gehen wir zu den Ordnerzuordnungen, klicken mit der
rechten Maustaste und wählen Ebene aus. Dadurch wird eine neue Umgebung
für uns geschaffen , die leer sein wird. Ich nenne es Game
Level. Ich werde Enter drücken. Jetzt können Sie sehen, dass sich neben dem Symbol
ein kleines Sternchen Dieses Sternchen bedeutet, dass
dieses Asset nicht gespeichert wurde. Wir können es auch sehen,
wenn ich den Ordner wechsle Ich habe
beispielsweise vergessen, dass
ich dieses Asset nicht gespeichert habe Wir können hier unten sehen,
dass dort ein nicht gespeichertes Asset steht. Wir beheben das,
drücken wir auf dieses Symbol und es öffnet sich das Menü für
sichere Inhalte und ich werde das Asset speichern Quick Shortcut
heißt Control Saved, und es ist der Shortcut,
um alles zu speichern. Wie wir die Datei sehen können, alle speichern. Gehen Sie zurück zum Inhaltsbrowser, zurück zu den Karten und
lassen Sie uns unser Level öffnen. Jetzt können wir im Outliner sehen, dass diese Ebene
jetzt leer ist Da ist nichts drin. Ich wollte
etwas reinbringen, aber ich werde uns
jetzt nicht benehmen. Ich gehe einfach zu
dieser Taste hier drüben und drücke Lass uns die
Richtungsbeleuchtung hinzufügen, damit wir Dinge erledigen können. Wir können nichts sehen, weil
es nichts zu sehen gibt. Ich werde auch eine
Form hinzufügen und eine Röhre auswählen. Jetzt können wir sehen, dass
es Licht und die Röhre gibt. Wir können es auch in unserem
Viewport sehen. Mischen Sie die Kamera Und für diejenigen, die keine
Ahnung von Unreal Engine haben, das gemacht,
indem ich die
rechte Maustaste gedrückt habe und mich
mit WA und D bewegt habe, während ich mit WA und D bewegt habe, die rechte Maustaste gedrückt U und A bewegen die
Kamera auf und ab,
und die Maus dreht sich im Grunde
wie in einem Spiel Fledermäuse sind eher technisch. Wie wir sehen können, als
ich den Würfel
oder die Beleuchtung, das
gerichtete Licht, ausgewählt habe . Wir können sehen, dass sich die
Paneldetails hier geändert haben. Dies sind Details für
alles, was wir ausgewählt haben. Daneben befindet sich eine weitere
Registerkarte namens Welteinstellungen. Wenn Sie diesen
Tab nicht haben, finden Sie ihn in den Windows WD-Einstellungen. Sie kann überall angezeigt werden, aber Sie können sie im
Viewport verankern, wo immer Sie möchten In den Worteinstellungen finden
wir viele
Informationen über die spezifischen Regeln unseres Levels Einige spezifische Regeln legen
dies in den Wandeinstellungen fest. Wir werden uns jetzt nicht um
alles kümmern, aber wir werden die Regeln für
die Spielstimmung überprüfen, das sind die Regeln, sagen wir, die wichtigsten Informationen Es ist eines der ersten
Dinge, dass, wenn wir auf
Play drücken , das
vorgegebene Verhalten geladen wird Und was meine ich mit
vorgegebenem Verhalten? Wenn wir auf Play drücken, können Sie sehen der Outliner
mit vielen weiteren Dingen gefüllt wird Dies sind notwendige
Dinge, um das Spiel auszuführen. Im Moment haben wir den
Würfel und die Beleuchtung, und standardmäßig können wir
mit der Maus steuern und uns
bewegen und den Mauszeiger bewegen Um all dieses Verhalten zu ändern, müssen
wir die Einstellungen ändern Es gibt verschiedene
Möglichkeiten,
dieses Verhalten zu ändern , und für uns werden
wir ausnutzen, werden
wir ausnutzen wie wir es
im Spielmodus ändern können Um das zu erreichen, werden
wir nun eine Vorlage
und einen Großteil unserer Programmierung
verwenden und einen Großteil unserer Programmierung Also gehen wir wieder zur
Inhaltsleiste und
wählen Hinzufügen und Funktion oder Inhaltspaket hinzufügen aus. diese Weise können Sie dieses Inhaltspaket,
die von Areal angebotenen Vorlagen, zu Ihren
Projekten hinzufügen , falls Sie dies bei
der Projekterstellung nicht getan haben Sie können das Blueprint One, das Seplus Plus One oder
das Starter-Inhaltspaket hinzufügen Seplus Plus One oder
das Starter-Inhaltspaket Wir gehen zu Blueprint
und wählen die Option von oben nach unten aus. Ich werde auf
anderes Projekt drücken. Für mich wird es sofort geschehen. Es ist vielleicht nicht für dich. Ich habe diese
Informationen neu geladen, weil ich sie bereits
in anderen Projekten
heruntergeladen Wenn der Download abgeschlossen ist, wird der
Inhaltsbrowser in einem neuen Fenster geöffnet, und wir können
den vorherigen schließen Ich werde das Ganze im Vollbildmodus machen
. Und lassen Sie uns sehen, welche
neuen Dinge hinzugefügt wurden. Es wurde der Ordner mit den Charakteren hinzugefügt
, der das Geld
für die Animationen enthält. Ich denke, es sind Many und Qin und einige
Level-Prototyping-Tools und ein Cursor-Ordner für
den Klick von oben nach unten Der Top-Down-Ordner selbst, der eine Map enthält, die all das
benötigt, um zu funktionieren Und im
Blueprints-Ordner können
wir die drei
Klassen sehen, die wir tatsächlich häufig verwenden werden Ich habe das
Wort Klassen oft verwendet,
und für diejenigen, die
neu im Programmieren sind, könnte
das verwirrend sein Im Moment können Sie Klassen
auch als Vorlagen
für Programme
betrachten ,
zum Beispiel als spezifischere Platten für die Erstellung von Objekten
in unserer Welt, und alles in unserer
Welt ist ein Objekt. Zum Beispiel haben wir hier drei spezielle
Blueprint-Klassen. Wir haben die Charakterklasse und wir haben die
Controller-Klasse und die Game-OD-Klasse Jede von ihnen ist
mit einem bestimmten Verhalten neu programmiert, und das macht sie zu einer Klasse. Und in unserem Fall verwenden
wir momentan das Spiel Old
Class, das dafür verantwortlich ist. Ich werde
dieses Fenster
hier schließen , das,
wie wir in
den Welteinstellungen sehen können, für den Klassenteich,
für den Controller,
für
das HUD, für viele Dinge verantwortlich wie wir in
den Welteinstellungen sehen können, für den Klassenteich, für den Controller, für
das HUD, für viele Dinge Jetzt gehen wir
zu Gamed Override und
wählen Gamed von oben nach unten Wie Sie sehen können, wurden
die Informationen hier
bereits
näher an das angepasst , was wir wollen Wenn ich die Play-Taste drücke, können wir sehen, wie der Charakter von oben nach unten endlos
fällt Wenn ich die
Standardbauernklasse entferne und „ Keine“ verwende
und dann die Abspieltaste drücke, der Charakter verschwunden
und die Kamera dort
geblieben, wo wir sie
ursprünglich platziert Das bedeutet durch das vorgegebene Verhalten
des Spielmodus, dass, wenn wir eine
Standardklassenfigur haben, immer bei
Spielbeginn spawnt, wenn wir die Play-Taste drücken Weitere
Informationen zum Spielmodus , dass er pro Level ausgeführt wird Das bedeutet, dass es
darin enthalten ist. Es enthält Regeln
für diese Ebene, aber wir können es auf vielen
Ebenen verwenden, weil wir vielleicht dieselben
Regeln oder viele Ebenen haben
möchten. Wir können in unserem Spiel so viele
Spielmodi haben, wie wir wollen, und wir können sie hier jederzeit
überschreiben. Ich verwende das Wort überschreiben , weil wir
einen Standard-Schwulenmodus festlegen können. Das
waren die Projekteinstellungen, als
wir den Schwulenmodus eingestellt haben. Wir können feststellen, dass wir
eine Standardeinstellung festlegen können , die alle
unsere Maps verwenden werden. Oh, Mode ist eine etwas
komplizierte Klasse. Er ist auch
für Mehrspieler-Sachen zuständig, und ich kann
viele Sonderregeln festlegen. Die Fähigkeit, dass es
auf jedem Level neu starten muss. Lassen Sie mich Ihnen ein
Beispiel in Farbe geben, um es visuell schmerzhafter zu machen. Oh. Wenn das unser Level ist, beginnen wir
beim Laden
mit dem Spielmodus. Warum sage ich, dass wir
mit dem Spielmodus beginnen? Weil der Spielmodus läuft,
bevor das Level geöffnet wird. Wie wir das deutlich sehen können. Die Ebene selbst hat
einen anderen, in sich geschlossenen,
spezifischen Bauplan, den
Ebenenplan Wir können das demonstrieren, indem wir zum Projekt
gehen
und in diesen
Wind gehen, und dann den
Level-Blueprint öffnen Für diejenigen, die neu sind, ist
dies der Event-Graph, der
Teil des Entwurfs Wir werden
etwas später weitere Dinge erklären. Ich werde jetzt anfangen
zu spielen. Sie nivellieren Blueprint. Das bedeutet, dass zu
Beginn des Levels die Zeichenkette auf
der Konsole
ausgegeben wird, in der sich
diese Buchstaben befinden Ich werde diese Zeichenfolge kopieren. Ich gehe zum
Inhaltsbrowser. Gehe zum Modus „Baupläne nach unten“. Wenn es
so geöffnet wird,
passiert das normalerweise , weil
es keinen Code enthält. Es zeigt uns
also die
Standardvariablen des Blueprints Die Standard-Wanne. Ich
kompiliere und öffne den vollständigen Blueprint Ich werde mit der rechten Maustaste
auf das Ereignisdiagramm klicken und die angegebene Art eingeben Ich werde einfügen.
Drucke. Ich werde diese A-Gain-Form korrigieren. Blaupause. Kompilieren und
ich drücke Play Wie Sie sehen können, wurde zuerst ein Spielmodus und
darüber der Level-Blueprint gedruckt Das bedeutet, dass die Reihenfolge, dieser ausgeführt wird, zuerst
der Spielmodus ist
, der alle Informationen enthält Wir haben über den
Player-Controller,
das Spielertelefon, alles gesprochen , und dann wurde ein
geschlossener Level-Blueprint ausgeführt könnten
einige Fragen Leuten könnten
einige Fragen in den Sinn kommen: Warum
verwenden wir das und warum verwenden
wir jenes nicht Bei der Kodierung gibt es
etwas, eine Referenz. Das heißt, ich
möchte etwas
oder etwas anderes tun, um etwas für mich zu
tun. Wenn ich
etwas mit
etwas anderem wie
dem Spiel kommunizieren
möchte, kommuniziere ich generell etwas mit
etwas anderem wie mit Level-Blueprints Ich brauche eine Referenz. Es gibt eine Referenz. Also muss ich eine
Referenz für dich haben. Eines der Prinzipien, eines der Prinzipien, eigentlich, aber eine Art, wie wir
denken, wenn wir etwas
programmieren, sind die Referenzen. Wie kann ich eine
Referenz darauf bekommen und wie bekomme ich eine
Referenz darauf? Es gibt viele Regeln. Ich werde nicht zu sehr
ins Detail gehen, aber das ist eine
der Möglichkeiten, wie wir
entscheiden, was wir verwenden. Es gibt viel
kompliziertere Entscheidungen und Regeln, die
berücksichtigt werden müssen. Aber eine Sache,
die zum Beispiel wichtig ist, ist die
Referenz für Anfänger, das ist etwas, an das sie sich gewöhnen
müssen Oh, warum verwenden wir auch
den Spielmodus und wie
werden wir ihn verwenden Werden wir die Fähigkeit des
Spielmodus
demonstrieren , sich selbst neu zu starten Das heißt, wenn
wir das Level laden, wollen
wir bestimmte
Dinge auslösen, die passieren. Und wenn wir das Level neu laden, vergessen wir sie und laden
sie von Anfang an neu In einem konkreteren Beispiel werden wir
den Spielmodus verwenden, um
das Hauptmenü zu
erstellen Lassen Sie uns eine neue Folie erstellen. Was wir machen werden,
ist ein Programm, das sagt: Dow me das Hauptmenü, der Spieler drückt oder startet und startet und startet dann das Spiel, weiter mit dem, was wir gemacht
haben, oder beendet das Spiel. Aber wenn das Spiel beendet ist, wollen
wir es neu laden Was wir
tun werden, ist, das Level von hier aus wieder zu öffnen Wenn wir also das Etikett erneut öffnen, möchten
wir wieder das
Hauptmenü anzeigen. Aber wir werden den Spielmodus verwenden, um
das zu hosten. Ich denke, das
reicht für die Theorie. In diesem Fall
sehe ich dich im nächsten mit mehr Action. Auf Wiedersehen.
3. Erstellen des Hauptmenüs: Hallo und willkommen zum
Game Design-Workshop und den Aufrufen zur für Engine Five Erstellung von
echten prozeduralen
Dungeon-Action-PZs In der vorherigen Lektion
haben wir damit begonnen, unsere Map im
Ordner Maps zu
erstellen Anschließend haben wir die Vorlage für Charaktere von
oben nach unten
hinzugefügt und den
Spielmodus in unseren Wandeinstellungen geändert. Wir haben auch einen Würfel und
ein gerichtetes Licht hinzugefügt und die
Fähigkeit demonstriert, naja, nicht die Fähigkeit, sondern die Reihenfolge der Operationen,
dass der Spielmodus zuerst ausgeführt wird und dann das Spiellevel läuft, wenn wir
unser Level starten Jetzt werde ich
diese Zeichenketten löschen, und
ich werde auch den Würfel
und das Richtungslicht löschen, und ich werde alles
speichern In dieser Lektion werden
wir mithilfe eines Widget-Blueprints
das Hauptmenü für das Widget für unser Spiel
erstellen für unser Spiel mithilfe eines Widget-Blueprints
das Hauptmenü für das Widget Jetzt gehe ich zu Inhalt, klicke mit der
rechten Maustaste, erstelle einen neuen
Ordner und nenne ihn U. In diesen Ordner klicke ich
mit der rechten Maustaste Benutzeroberfläche und
wählen Sie Widget-Blueprint aus. Was ist nun ein Widget-Blueprint? Ein Widget-Blueprint ist eine Möglichkeit, die uns
Real bietet, Benutzeroberflächen zu
erstellen Ich werde das Benutzer-Widget für die
allgemeine Klasse auswählen. Es gibt
viele andere Klassen für ganz bestimmte Dinge. Was wir brauchen, ist ein Benutzer-Widget. Ich werde das WG nennen. Hauptmenü. Und ich
werde es öffnen. Bevor wir mit
der Programmierung des Widgets und des Hauptmenüs beginnen. Lassen Sie uns ein bisschen über Widgets
für diejenigen sprechen, die neu sind. Zuallererst können wir feststellen, dass dieses Diagramm ein
bisschen anders aussieht als die Grafiken, die wir auf dem Spielmodus-Blueprint oder
dem Spielebenen-Blueprint gesehen haben Spielmodus-Blueprint oder
dem Spielebenen-Blueprint Der Grund dafür ist, dass wir uns
im
Designer-Tab des Widgets befinden im
Designer-Tab des Widgets Es gibt auch eine
Grafikbox, die
den anderen Grafiken
vertrauter aussieht . Der Grund dafür ist, dass
wir
in der Graph-Tube die
Programmierung des Widgets übernehmen, während
wir in der Designer-Tube den visuellen
Teil des Widgets übernehmen. Ein Widget erscheint auf dem Bildschirm. Dazu verwenden wir
Elemente aus unserer Palette
und stellen sie so ein, wie sie aussehen sollen. Oh. Eine weitere Sache, wenn wir etwas
auf der visuellen Seite des Widgets hinzufügen, können
wir es
hier in der Hierarchie sehen. Lassen Sie uns nun mit dem
Hinzufügen einer Leinwand beginnen. Ich werde es hier
per Drag-and-Drop platzieren, oder ich könnte
es einfach hierher ziehen und es wird dasselbe sein. Beschreibung dessen, was
der Cvass macht. Sie können gefunden werden
, wenn Sie mit der Maus
darüber fahren und die Opta-Beschreibung sehen Aber im Grunde ist
es ein Element, das anzeigt, wo sich unsere Widgets
im Raum auf unserem Bildschirm befinden Sie können eine kleinere
Kavasse als Ihr Bildschirm haben. Sie können Leinwände
in Leinwänden haben. Es wird
nicht empfohlen, zu viele Leinwände zu
haben Oh, lassen Sie uns das demonstrieren. Wir bringen hier einen Button mit. Lege es in die Leinwand. Ich kann ihm sagen, wo auf der Leinwand er sein
soll oder wie groß er sein soll. Und je nachdem, ob
Canvas tatsächlich eine Leinwand im
Vollbildmodus oder
teilweise diese Leinwand ist , können wir
zum Beispiel eine Leinwand in
einem kleineren Widget in einer
Ecke oder so
haben einem kleineren Widget in einer
Ecke oder so Es sagt ihr
anhand dieser Konvas, wo sie sich befinden soll. Nun, wenn ich einen
zweiten Button hätte, würde
das die Dinge verkomplizieren Nehmen wir zum Beispiel an, ich möchte diese Schaltfläche genau
unter dieser Taste haben,
und es ist schwierig, diese Dinge im
Auge zu behalten. Aber es gibt auch andere
Tools, wie zum Beispiel ein vertikales oder
ein horizontales Feld Im Moment benötigen wir
ein vertikales Feld Und in diesem vertikalen Feld habe ich die anderen Schaltflächen gelöscht. Vielleicht brauche ich sie. Ich werde
wieder
eine vertikale Box mitbringen und alles machen. Jetzt kann ich diese Ptons
in dieses vertikale Feld ziehen. Und wie diese Schaltflächen in diesem Feld vertikal
ausgerichtet sind. Jetzt wird die Größe jedoch durch die Box
bestimmt. Es gibt viele Möglichkeiten, die
Größe und alles zu ändern. Wir müssen gerade ein ganzes
UI-Erlebnis durchmachen. Wir werden die
Box tatsächlich dort platzieren , wo wir wollen, und
sie so dimensionieren, wie wir sie wollen. Um das zu tun, behalte ich die gleiche Stelle bei jeder Auflösung ,
weil das hier das E ist. Wir können es immer
anhand dieses Ankers ausgleichen. Was ist ein Anker?
Es teilt dem Widget anhand dieses Ankers mit,
wo es platziert werden soll, aber basierend auf diesem Punkt. Wenn ich also die
Auflösung jetzt ändere, versucht
sie, diese Position beizubehalten, aber wenn ich zu
unorthodoxen Vorsätzen übergehe, verliert
sie irgendwie den Überblick Das kann behoben werden,
indem man den Anker herumlegt, und es wird auch versuchen, ihn zu behalten Auch hier ist es nicht sehr einfach, all diese
Dinge im Auge zu behalten, aber es gibt andere
Möglichkeiten, dies zu tun Zum Beispiel, wenn ich
das vertikale Feld auswähle und zum Detailbereich gehe Wenn ich wieder alles auswähle, haben
wir ein detailliertes Fenster, wie wir es auf dem Plan hatten, haben
wir ein detailliertes Fenster,
wie wir es auf dem Plan hatten,
den Spielplan,
wie wir es auf dem Level haben, wenn wir etwas auswählen,
und wir gehen zu den einzelnen Oh, wenn ich das
vertikale Feld mit den Details auswähle, kann
ich sehen, dass es einen Anker gibt Beginnen wir mit
der Ankeroption. Oh. Sie können sehen, dass es
einige voreingestellte Ankerpositionen gibt. Was wir
wählen werden, ist die mittlere. Wir wollen es in
der Mitte des Bildschirms verankern. Aber wie Sie gesehen haben, hat dies unser Widget nicht in die
Mitte des Bildschirms
verschoben. Versuche zu sagen, wo es war. Der Grund dafür ist
, dass es durch diese
Werte hier,
Position x und Position Y,
ausgeglichen wird durch diese
Werte hier,
Position x und Position Y,
ausgeglichen . Wenn ich dieses Ding auswähle, das der Standardwert ist, gehen
wir zu seinem
ursprünglichen Drehpunkt. Was ist nun ein Drehpunkt? Das bedeutet, dass diese Box
zum Beispiel
nicht in der Mitte ist, aber ihr
Punkt, an dem wir ihre Größe
manipulieren,
beginnt in dieser Ecke Nun, wenn ich eine bestimmte
Größe festlege, wie 500 mal 300, vielleicht 300, vielleicht 200 Nun, wir wollen zum Beispiel ein paar lange
Knöpfe. Wir können sagen, dass der
Offset der Position x minus 50 wäre. Und die Position
y wäre -100. Jetzt ist es in
der Mitte positioniert , weil wir
es um diese Werte Aber was ist, wenn ich die Größe meines Widgets
ändern möchte? Das ist jetzt nicht mehr so,
ich muss wieder rechnen. All diese
Aktionen nicht noch einmal zu machen. Wir könnten sagen, dass die Position nicht
versetzt ist. Zunächst
empfehlen wir die Ausrichtung, die ein Wert von 0-1 ist, sie kann sogar
negativ und über eins gehen Die Ausrichtung ist 0,5 und 0,5. Und das bringt das
Widget in die Mitte. Richten Sie mein Widget prozentual auf einem Wert von 0-1 an seiner
X-Achse und Y-Achse Wenn ich die Größe ändere, wirst
du sehen, dass es
immer in der Mitte bleibt Bringen wir das
zurück auf 100100200. Oh, kompilieren und speichern. Jetzt haben wir unser Widget in
der Mitte unseres Bildschirms. Aber unsere Knöpfe sehen
nicht gerade gut aus, so wie sie sind. Die untereinander, auch in einem Minimalmenü, das
sollte nicht passieren. Was wir tun werden, wir
werden beide Schaltflächen auswählen und die Option verlieren. Und in der vertikalen Ausrichtung
wählen
wir die Option, geben Ausrichtung ein, geben Vertikal
ausrichten ein. Jetzt können Sie sehen, dass unsere
Buttons viel besser aussehen. Ein interessanter Aspekt dabei wäre, dass wir bei der
Auswahl der beiden Schaltflächen gleichen Einstellungen beibehalten, wie beide
diese Einstellungen haben, also auch beide. Wenn ich die Option auswähle, während
die Steuerung im senkrechten Kästchen angeklickt ist, kann
man sehen, dass diese
Einstellungen verschwinden weil die Einstellung der Abnutzung auf etwas basieren
sollte. Wie Sie sehen können, befindet sich der
vertikale Kastenschlitz hier oben, und wenn ich das vertikale Feld auswähle, befindet sich
der Steckplatz für das CVAS-Bedienfeld
hier oben. Das ist also
das Einstellen der Position innerhalb
des Cvass, während
wir hier die Position
innerhalb der vertikalen Box,
die
Ausrichtungsposition oder was auch immer festlegen die
Ausrichtungsposition oder Jetzt gibt es viele
weitere Möglichkeiten, dies zu tun. Wir hätten Abstandshalter
zwischen diesen Knöpfen platzieren können. Das ist ein anderer. Lassen Sie uns das
tatsächlich demonstrieren. Nehmen wir an, dass beide
Tasten zur Steuerung dienen und wählen Sie beide vertikal aus. Jetzt zwei große Knöpfe. Ich möchte sie kleiner haben, damit
ich ein paar Basen gebrauchen kann. Bring es hierher zwischen
die beiden Knöpfe, ich werde
einen weiteren über dem anderen Knopf platzieren. Wir werden einen
unter den anderen Knopf bringen. Wenn Sie nun
noch einen echten
Pull-Tipp bemerkt haben, den wir sehen können, wenn ich den Knopf hier drüben setze, wird diese Linie gezogen, diese blaue Linie hier drüben mit einem kleinen R an der Ecke
, das nach oben zeigt. Das heißt, fügen Sie es
der obigen Hierarchie hinzu. Zum Beispiel befindet sich die
obige Hierarchie
gerade in der vertikalen Box. Wenn ich versuche, es hier hinzuzufügen und
es einen Pfeil darunter platziert, wird es der unteren
Hierarchie hinzugefügt, über dem Abstandshalter Aber wenn ich den Pfeil nach oben habe, würde
er zur obigen Hierarchie,
dem Canvas-Bedienfeld, hinzugefügt .
Lass uns das versuchen. Wir werden es hier hinstellen,
ich werde es veröffentlichen. Wie Sie sehen können, wurde es der Canvas-Hierarchie
hinzugefügt. Ich prüfe hier, es wird es standardmäßig in das vertikale
Feld am Ende einfügen Ich werde die Abstandhalter auswählen
und ich werde auswählen. Wie Sie sehen können, hat sich die Basis abgezogen, und jetzt sehen die Knöpfe
auch
etwas besser aus, als wenn
sie übereinander Mit dieser Einstellung können
wir alles fühlen, und es funktioniert genauso. Wir müssen uns nicht um vertikale Ausrichtungen
oder ähnliches
kümmern . Jetzt sollten
diese Schaltflächen
etwas Text enthalten Wenn wir Dinge
in das vertikale Feld einfügen, haben wir 12, drei,
vier, fünf Elemente hinzugefügt Aber wenn ich
etwas zu einer Schaltfläche hinzufüge, bringen
wir es zur Schaltfläche. Wenn ich
der Schaltfläche also etwas hinzufüge, z. B. einen Text, und ich werde etwas hinzufügen, sagen
wir, ich möchte zwei Texte. Das kann ich nicht tun, weil
Buttons nur ein Kind bekommen. Das heißt, sie können
nur eine Sache in sich haben. Aber es gibt einen Weg, das zu umgehen. Sie können eine Sache haben, die viele Dinge
enthält. Sie
können beispielsweise eine Schaltfläche haben , in der sich ein vertikales
Feld befindet. Wie wir sehen können,
kann das vertikale Feld viele Dinge enthalten. Das nennt man Kinder, und wie viele Kinder
kann ein Element haben? Nun, ich werde diesen Textblock
kopieren und
ihn in die andere Schaltfläche einfügen. Und ich gehe zum
ersten Textblock und
ändere den Text in
seinen Details. Nennen Sie es. Und gehe auch zur anderen Schaltfläche und als Textblock zwei. Ich denke, das ist genug
für diese Lektion. Ich sehe dich
das nächste Mal. Auf Wiedersehen.
4. Hinzufügen des Hauptmenüs zum Ansichtsfenster und zur Beenden-Funktionalität: Hallo und willkommen beim
Game Design Workshop, ich bin ein echter Lensing Five
Procedural Dungeon Action-Action-ARPG-Erstellungskurs Im vorherigen Abschnitt
haben wir uns mit der Grafik
des Hauptmenüs Grafik
des Hauptmenüs In diesem Fall fangen wir an, einige Dinge zu
programmieren, damit wir dieses
Hauptmenü in unserem Spiel sehen
können Jetzt gehen wir in den
Spielmodus. Wenn Sie ihn nicht finden können, befindet er sich auf Inhaltsleiste in der Ordner-Benutzeroberfläche und nein, tut mir leid,
im Ordner von oben nach unten, den gefalteten Blueprints, und
der Spielmodus ist da. Pläne von oben nach unten, Gamede. Nein, in unserem Spielmodus ziehen
wir ein Kabel Lassen Sie uns nun hier ein paar
Dinge über dieses Kabel erklären. Wir haben es schon einmal
mit Print string gemacht, aber wir haben
nichts darüber gesagt. Also was das ist, das ist die
Ausführungslinie von Blueprints Kurz gesagt bedeutet das, dass diese Ausführung den Ablauf der Logik
steuert Wenn ein Ereignis ausgelöst
wird, folgt es dieser
Ausführungszeile, um
die Aktionen auszulösen , die in einer bestimmten Reihenfolge
ausgeführt werden . Im Grunde bestimmt es die
Reihenfolge der Dinge, die passieren sollen. Lassen Sie uns das also demonstrieren. Wenn ich einen Abdruck anbringe. Und für die Zeichenfolge werde
ich
eine eingeben und dann, ich werde diese kopieren und einfügen. Geben Sie eine zweite Druckzeichenfolge ein. Ich gehe zur
Übersichtskarte, gleiche Ebene. Sie haben ausgewählt und spielen. Oh, ich sehe eins, zwei, es wurde zuerst
eins gedruckt und dann zwei. Nun, es gibt besondere Zeiten denen das nicht
genau dann passiert , wenn wir mit Verzögerungen
spielen, wenn wir andere
Ereignisse auslösen, die Verzögerungen haben, oder sie haben. Es gibt mehrere Gründe, warum das
nicht in der richtigen Reihenfolge passiert, aber sie sind alle auch
sehr spezifisch Lassen Sie uns das
anhand eines Beispiels demonstrieren. Wenn ich ein benutzerdefiniertes Ereignis mache. Das bedeutet, dass ein eigenes Ereignis, wie z. B. Begin Play, ein
vorgeschriebenes Ereignis ist Es schlägt fehl, wenn der
Plan läuft. Wenn ich ein benutzerdefiniertes Ereignis verwende, ist
es ein Ereignis, das ich erstellt habe, also muss ich es aufrufen Lassen Sie uns dieses benutzerdefinierte
Ereignis tatsächlich als Test bezeichnen. Nun, ich werde hier eine
gedruckte Zeichenfolge von zwei einfügen. Ich werde
es tatsächlich auf drei ändern. Ich werde hier mein
benutzerdefiniertes Event einberufen. Wenn ich diese beiden verbinde, lass uns spielen, alles passt
zusammen, eins, zwei, drei. Aber wenn ich hier eine Verzögerung einfüge, sagen
wir von 2 Sekunden
von 0,2 Sekunden, sehe
ich eins, drei, zwei. Das wurde hier ausgelöst, aber
da es eine Verzögerung gibt, wird der Betrag abgewartet,
aber das wird so weitergehen. Eine Verzögerung wird
nicht dazu führen, dass es aufhört. Aber jetzt geben wir
ein Limit von vier Schleifen ein. Wenn ich hier vier Schleifen habe, was sind dann vier Schleifen? L Lass es uns haben. Oh, es ist ein Programmierknoten, mit einem Index
beginnt und mit einem anderen Index
endet, und das tut er so lange, bis er alle Indizes
durchläuft Für den Loop-Body werde
ich das
hier verbinden, und eigentlich mache
ich es von zwei, sagen
wir, das wären fünf Und geh und drücke Play.
Siehe eins, zwei, drei, 45. Bei diesem Knoten wartete
es beispielsweise, bis dieser Knoten fertig gestellt war, und fuhr dann mit der anderen Zeile fort
. Wie dem auch sei, durch Übung
und Erkundung der Engine und Programmierung werden sich die
Leute mit diesen Dingen
besser auskennen. Lassen Sie uns das alles löschen , weil wir es nicht benötigen
werden. Wir werden keine Testveranstaltung
benötigen. Und lassen Sie uns damit beginnen,
unser Widget in unseren Viewport zu bringen. Ich werde das machen. Eigentlich brauchen
wir ein benutzerdefiniertes Event, also ein Event, und wir werden
es Show Main Menu nennen. Wenn wir das Spiel starten, wollen
wir das Menü einblenden. Wenn wir jetzt darauf
doppelklicken, gelangen wir zu
dem Ereignis, das wir erstellt haben. Oder wenn wir hier eine Funktion hätten, wir später über
Funktionen sprechen, das würde die
Funktion für uns öffnen. Jetzt das Hauptmenü anzeigen, das wir erstellen werden Denn um unser
Widget in die Welt zu bringen, müssen
wir es irgendwie erstellen. Wir müssen es als Entität haben, und die Klasse, die
wir für
das Widget wählen werden, wird
das WG-Hauptmenü sein. Jetzt, Spieler besitzen, werden
wir den Player-Controller verwenden Und was dieser
Spieler bedeutet. Im Grunde genommen, wenn wir ein
lokales Co-Spiel hätten, und es gibt
auch im Mehrspielermodus einige Verwendungszwecke, dass du anderen
Spielern Widgets zeigst und so, vielleicht Es teilt der Engine mit, wem
dieses Widget gehört. Also haben wir das Widget erstellt. Also, wenn ich Lehm pressen gehe, wird
nichts passieren. Wir sehen das Widget
nicht. Der Grund dafür ist, dass
wir bei der Erstellung des Widgets einfach eine Variante daraus gemacht
haben, eine kleine Zelle
erstellt die die Informationen
dieses Widgets
enthält Wir haben der Engine nicht gesagt, machen Sie etwas mit
diesen Datendaten Der Rückgabewert ist also
das Widget, das wir erstellt haben. Wenn wir mit der Maus über die
Pins eines Knotens fahren, können
wir weitere
Details zu ihnen sehen Wenn Sie also auf
das Hauptmenü-Objekt verweisen würden, haben wir ein
Hauptmenü-Widget erstellt, bei dem es sich um ein Objekt handelt Wie wir bereits sagten, ist
alles ein Objekt. Und wir haben einen Hinweis darauf. Wir werden
diese Variable bewerben und sie W G-Hauptmenü nennen. Jetzt haben wir unsere Daten,
wir haben unser Widget und wir haben es
in dieser Variablen gespeichert, und wir
wollen diesen Daten sagen, dass etwas passiert. Ich werde es
von den Variablen
hierher bringen , denn wenn
wir eine Variable erstellen, wird
sie hier gespeichert. Ich werde diese Variable bringen
und sagen „Zum Viewport hinzufügen“. Dies ist der Befehl zum Hinzufügen
eines Widgets zu Ihrem Viewport. Nun, ich werde das hier
verbinden. Und jetzt drücke ich A
und das ist ein Widget. Ich drücke die Knöpfe. Es passiert noch nichts. Aber wir werden das jetzt programmieren. Und das Erste, was
wir
programmieren werden, ist der Button Quid. Gehen wir also zu unserem
Top-Down-Spielmodus, Widget-Hauptmenü, und
gehen wir zur Schaltfläche Quid. Wenn wir nun diese Schaltfläche wählen, wollen
wir etwas
mit dieser Schaltfläche machen. Also müssen wir
ihr Verhalten bestimmen. Dazu müssen wir bei den Details auf
die Variablen klicken. Ich werde hier
darauf klicken und
diesen Button auch Quit nennen . T. Und jetzt werde ich
weiter ins Detail gehen, und diese Liste von
Ereignissen ist erschienen. Wenn ich die
Variable deaktiviere, verschwindet sie. Wenn ich auf die
Variable klicke, erscheint sie. Das bedeutet nicht, dass ich die Schaltfläche
nicht auf andere
Weise verwenden kann. Es gibt andere Möglichkeiten,
es zu verwenden, ohne eine Variable zu sein. Aber das ist die Art und Weise, wie
wir es jetzt machen werden, und es ist die gebräuchlichste Methode. Wir wählen
das Ereignis per Mausklick aus. Oder gedrückt. Der Unterschied zwischen diesen beiden besteht darin,
dass wir beim Klicken auf die
Schaltfläche klicken müssen und wenn wir sie
loslassen und
immer noch auf der Schaltfläche sind, wird diese Aktion akzeptiert. Nun, gedrückt ist, dass es in dem
Moment passiert, in dem wir klicken. Nein. Auf die Schaltfläche geklickt und. Wir ziehen einfach
einen Tisch und sagen: F:
Wir werden keinen Spieler
angeben. Wir werden keinen Spieler
angeben Wir werden keine Einstellungen für das Beenden
angeben, wir werden
es einfach beenden lassen
und wir werden die
Plattformeinschränkungen nicht ignorieren, und wir werden die
Plattformeinschränkungen nicht ignorieren weil das nicht für eine
bestimmte Plattform
gilt Oh, wir
kompilieren und speichern, gehen zu unserer
Spielebene und drücken auf Play. Wenn ich jetzt auf Quit,
Release it klicke , sonst funktioniert es nicht, aber wenn ich auf Quit
klicke und loslasse, ist es das Spiel. Ich denke, das ist ein guter
Ausgangspunkt für diese Lektion. Wir
sehen uns am nächsten. Auf Wiedersehen.
5. Lade von Bildschirmmechanik und Labyrinth-Spawning: Hallo und willkommen zurück zum Game Design Workshop Real Sin Five Procedural Dungeon
Action A Psy Zuvor haben wir
unsere Ereigniskette
vom Beginn des Spiels
bis zur Anzeige unseres Hauptmenüs erstellt . Außerdem haben wir ein benutzerdefiniertes Ereignis erstellt, das das Widget erstellt, es in einer Variablen
speichert und es dem Viewport hinzufügt Wir haben auch die
Quick-Button-Funktion
so programmiert das Konfliktereignis verwendet, und wir haben den Qi-Spielknoten Jetzt werden wir mit
der Funktion
zum Starten des Spiels fortfahren . Aber bevor wir mit der
Programmierung der Starttaste beginnen, wollen wir unser System ein
wenig erklären. Was wir also
haben werden, ist ein Labyrinth-Generator. Das wird das Level
aufbauen, wie auch immer es will. Wir werden einige Regeln erstellen. Wir werden einige Regeln
im Generator haben, wie es beim
Erstellen eines Levels funktionieren wird. Aber dieses Level hat
einen Anfang und ein Ende. Und dieses Ende wird einen weiteren Generator
hervorbringen. Es wird von Mas-Generator zu
MA-Generator zu Mas-Generator gehen , einige Regeln haben
und immer größer werden usw. Wenn wir also ein Spiel starten, wenn wir drücken, sagen
wir, wir haben den Spielmodus, und vom Spielmodus aus erscheint das Hauptmenü Das Hauptmenü kann sich drehen oder starten. Hier werden wir den Labyrinth-Generator spawnen Nun, dieser Labyrinth-Generator, wir brauchen eine Option
, bei der es die erste ist, oder ist es jemand in der
Mitte oder am Ende
, dann verliert der Spieler Es gibt also verschiedene
Möglichkeiten, das zu tun. Die Art und Weise, wie wir das
tun werden, besteht darin, eine Variable verfügbar
zu machen . Dies bedeutet, eine Variable verfügbar zu machen, die aktiviert werden
wird. Im Grunde wird
es ein Edelmetall sein, das dem Labyrinth sagt, ob Sie der Erste
sind oder nicht,
was eine sehr einfache
Art ist, was eine sehr einfache
Art ist Denn wir werden diesen Schauspieler
hervorbringen, und jeden Schauspieler werden
wir ihn hervorbringen Nun, was diese Variable jetzt für uns tun
wird, für den ersten Teil unseres Programms Es unterscheidet
sich vom Labyrinth , dass, wenn Sie der Erste sind, der Ladevorgang
fortgesetzt wird.
Dies ist das Laden des
Ladebildschirms Wir werden also eine
Leiste zum Laden und
Nachfüllen haben , während der Generator das Labyrinth baut
und es spielbereit ist Nein. Lass uns beginnen. Beginnen wir mit der Erstellung unseres
Labyrinth-Generator-Blueprints. Wir werden zum Inhalt übergehen
. Wir gehen zum Inhaltsordner und klicken mit der rechten Maustaste auf einen neuen Ordner. Ich werde es Blueprints nennen. Jetzt haben
wir viele Ordner,
und im Grunde
könnten wir einfach mit der und im Grunde
könnten wir rechten Maustaste
auf Blueprints klicken und die Farbe festlegen Ich werde es auf Blau setzen. Gehe zur Ordner-Benutzeroberfläche, klicke mit der
rechten Maustaste und stelle die Farbe ein. Ich werde
es hellblau sagen. Und Sie werden schnell einen
anderen Ordner benötigen. Vielleicht Ordner von oben nach unten. Ich werde es auf Grün setzen. Und jetzt kann ich schnell jeden
gefalteten Ordner
anhand seiner Farben durchsuchen Jetzt klicken
wir im
Ordner Blueprints mit der rechten
Maustaste und erstellen eine neue Blueprint-Klasse Wenn ich das mache, öffnet sich
das Menü, in dem es mir sagt, Sie
eine Template-Klasse oder
etwas anderes aus einer Vorlage erstellen möchten , die Wenn wir können, gibt es eine Reihe von Klassen, die erstellt werden können Was wir jetzt wollen,
ist eine Schauspielerklasse. Im Grunde
ist ein Schauspieler ein Objekt, das in der Welt platziert
oder erzeugt werden kann Im Grunde ist alles ein
Objekt, das platziert werden kann, aber alles hat
einige zusätzliche Regeln Der Schauspieler ist der leerste. Zum Beispiel
hat der
Charakterentwurf, dass wir
unseren Charakter von oben nach unten haben , zum Beispiel eine Kollisionskugel und keine
Kollisionskapsel, tut
mir leid, und ein statisches Netz und eine Richtung, die eng zu einem Punkt führt Es hat die Bewegungskomponente, die nur in der
Charakterklasse vorkommt Wie dem auch sei, ich erkläre vielleicht gerade
viele Dinge. Also werden wir uns einen Schauspieler ausdenken. Und wir werden diesen Schauspieler
PP Mazen Tape Everything
nennen PP Mazen Tape Everything und den Labyrinth-Generator öffnen Ich werde es hier hinstellen. Das erste, was
wir
tun werden, ist eine Variable zu erstellen. Wir gehen zu Variablen und drücken hier auf dieses
Plus-Symbol. Und es hat es bereits zu
einem Goldbarren gemacht, weil wir unterscheiden
wollten , ob das
Labyrinth das erste Stück ist oder ob es weiter wächst Ich werde es am Dienstag benennen. Ich werde es Continue nennen. Vielleicht nicht der beste Name, aber wir machen den Job jetzt. Jetzt gehe ich zurück
zum Hauptmenü und gehe
zur Starttaste, die variabel ist
, nenne sie Art Button. Und ich werde auf Klick
drücken, weil
wir auf Klick auf Lick geklickt haben. Wir sollten es auf Art
Button machen. Auch auf Klick. Nun, wie bringe ich diesen
Schauspieler zur Welt? Wir verwenden einen Knoten namens
Stone Actor aus dem Unterricht. Die Klasse, die wir als
Labyrinth-Generator
auswählen werden Labyrinth-Generator
auswählen werden BP Labyrinth-Genre. Jetzt gibt es hier eine weitere Option. Es heißt Transformation. Was Transformation bedeutet, ist für
diejenigen, die neu sind, Transformation eine Gruppe von Informationen, es ist eine Informationsstruktur. Wir werden noch weiter über
Struktur sprechen, aber sie ist keine
strukturierte Variable Es ist eine einzigartige Variable, die drei Vektoren
enthält. Und wenn ich mit der rechten Maustaste
darauf klicke und es aufteile, können
wir sehen, dass es die Position der
Son-Transformation,
die Drehung der Spin-Transformation
und die Spon-Transformationsskala enthält die Drehung der Spin-Transformation , was drei Vektoreinheiten Einer von ihnen ist ein Rotator. Die anderen beiden sind
nur normale Vektoren. Das heißt, wir
wollen diesen Schauspieler verblüffen, aber wo wollen wir ihn
mit welcher Rotation
und in welchem Maßstab erzeugen ? Für den Moment, nicht für den Moment, werden
wir
ihn an der Null, Null, Nullstelle der Welt,
Null, Null,
Null, Y und Null, und zwar werden
wir
ihn an der Null, Null, Nullstelle der Welt,
Null, Null,
Null, Y und Null, mit der normalen
Rotation
und der Standardskalierung Vorher haben wir gesagt, dass
wir dies für
diesen Labyrinth-Generator angeben werden,
ob es sich um eine Fortsetzung handelt oder Es gibt viele
Möglichkeiten, dies zu tun. Ich werde dir
schnell zwei Möglichkeiten zeigen. Wir gehen zu diesem Spawn und von hier aus dem Rückgabewert erhalten
wir
die, die tatsächliche
Referenz auf das Ding, das wir
sponden, den Schauspieler, den wir auswählen Von hier aus kann ich
weitermachen,
wie Sie sehen können, das Ziel ist der Schauspieler, dem wir gerade die Pfoten
verpasst Und den Wert können wir auf Ja oder Nein
setzen. Eine andere Möglichkeit,
das zu löschen
, besteht darin, zum Labyrinth-Generator zu gehen und
zur fortlaufenden Variablen
zu gehen, dass es sich um eine Instanzbearbeitung handelt
und sie auf Span angezeigt Das heißt, wenn ich
jetzt kompiliere und speichere, gehe zurück zum Hauptmenü und wähle es erneut aus, weil es
nicht automatisch aktualisiert Manchmal tut es das.
Ich werde diesen
Labyrinth-Generator erneut auswählen Jetzt habe ich diese
Option hier drüben. Ich werde das nicht ankreuzen,
ja, ich werde es nein lassen, und wenn dieser Löffel kommt, ist er
standardmäßig ausgeschaltet Für uns ist das standardmäßig
ausgeschaltet und wir wollen, dass es ausgeschaltet ist. Wenn wir
das Labyrinth abholzen, um
weiterzumachen, werden wir es hier
suchen Um zu beweisen, dass wir das
in die Welt gebracht haben, gehen
wir zum Labyrinth-Generator Wir gehen
zu seinem Event-Graph und auf Begin Clay bringen
wir Schnüre mit
und sie machen das Labyrinth Bevor wir hier leben, sollten
wir noch etwas tun Wir verderben den
Labyrinth-Generator. Aber als Nächstes
sollten wir unseren visuellen
Teil des Widgets
entfernen Aus unserer Sicht. Und um das zu tun,
werden wir einen Teil entfernen. Dies ist der Knoten, der dafür verwendet wird. Und als Ziel
werden wir uns selbst haben. Target
bedeutet in der Regel in Knoten, wer das macht. Wenn wir in den Spielmodus gehen
und nach rechts gehen, aus dem Teil entfernen. Wir werden
kontextsensitiv sehen, es gibt es nicht. Aber wenn ich das entferne, können
wir es finden. Wie Sie sehen können, gehört es
zum Kategorie-Widget. Das bedeutet also, dass es etwas
für ein Widget
tut . Ich
werde darauf klicken. Und wenn ich das hier verbinde, passiert
nichts, weil der Spielmodus kein Widget ist, ich werde einfach
einen Fehler auslösen oder nichts. Aber wenn ich das
Widget-Hauptmenü verbinde, das wir
in unserer Referenz
hier gespeichert haben , um
es aus Parent zu entfernen, wird es wissen, dass dieses
Widget-Hauptmenü, sagen wir, wir haben fünf davon
erstellt, und wir haben nur eines davon
gespeichert. Dieser von ihnen, den
wir
als Variable gespeichert haben , wird aus dem übergeordneten Element
entfernt. Jetzt werde ich das löschen und wir werden es belassen
und aus dem übergeordneten Bereich entfernen. Das Ziel selbst. Wir
sind auf dem Widget, auf Pile and Save,
und los geht's. Mac drückt Play, Maze Gen hat ein Telefon und das
Widget wird entfernt Ich denke, das ist ein netter
Haltepunkt für diesen. Ich sehe
dich am nächsten. Auf Wiedersehen.
6. Erstellen eines Ladebildschirms: Hallo und willkommen zum Game
Design-Workshop im Rahmen Engine Five-Action-Rollenspiels zur Erstellung von prozeduralen
Dungeon-Action-Rollenspielen Erstellung von prozeduralen
Dungeon-Action-Rollenspielen In der vorherigen
Lektion haben wir hinzugefügt, dass wir tatsächlich den
Blueprint Maze-Generator erstellt haben, und wir haben ihn über die Starttaste
unseres Hauptmenüs gestartet Außerdem haben wir dem Labyrinth-Generator eine Variable hinzugefügt,
die wir
verfügbar gemacht haben, um sie beim
Spawnen des Labyrinths
setzen zu können . Diese Variable war die Continue-Variable, die für
uns unterscheidet, ob es sich um
die erste Figur handelt
oder ob es sich um eine Figur handelt, die das Spiel fortsetzt für
uns unterscheidet, ob es sich um
die erste Figur handelt
oder ob es sich um eine Figur handelt, die das Spiel In dieser Lektion
werden wir mit der
Erstellung der ersten
Schritte der Logik fortfahren , die darin besteht
, den
Ladebildschirm anzuzeigen oder Ich lösche diesen
Druckbildschirm hier, klingle und
drücke B und klicke, oder ich hätte mit der rechten
Maustaste klicken und Zweig eingeben können, und ich bringe einen Zweig. Nun, was ist ein Zweig? Im Grunde
ist ein Zweig eine I-Aussage. Es ist wahr oder falsch basierend auf einer Bedingung
, die wir angewendet haben. Und die Bedingung hier wäre. Also ist es im Grunde eine Fortsetzung
des Labyrinths von früher, oder ist es das erste Stück? Jetzt, da wir das
Hauptmenü im Spielmodus erstellt haben. Wir müssen ein weiteres Widget
für den Ladebildschirm erstellen , und das führt uns dazu, ein neues Widget zu
erstellen. Also gehen wir
zum UI-Ordner. Ich klicke mit der rechten Maustaste
und gehe zu Benutzeroberfläche, Widget-Blueprints, und wähle erneut
Benutzer-Widget Ich werde das
WG Loading Loading nennen. Und ich werde es öffnen. Ich werde es herbringen und ich werde alles
retten. Jetzt werden wir wieder eine Leinwand
benutzen. Und das ist kein Problem,
denn auf jeden Fall wurde das
Hauptmenü zu Beginn
aus einem übergeordneten Menü entfernt Es ist also kein Problem, eine weitere
Convas zu haben. Nicht dass es ein großes Problem
wäre,
zwei Konvasen oder drei oder vier zu haben großes Problem
wäre,
zwei Konvasen oder drei oder vier zu Jetzt
wähle ich ein Bild aus, füge es als Hintergrund und ich werde es im Vollbildmodus
verankern Ich werde die Offsets auf Null
setzen. Wie Sie sehen können,
füllt es den gesamten Bildschirm aus. Ich gehe zu den
Pinseleinstellungen, einer neuen Einstellung, die
wir gerade untersuchen. Sie zeigt im Grunde
, wie etwas aussieht.
Wir bringen einen Knopf mit. Lassen Sie uns das tatsächlich
demonstrieren. Wo ist Play? Wir können sehen, dass sich die Farbe
dieser Taste ändert, wenn ich mit der Maus Also gehe ich zu unserem Hauptmenü und gehe zum
Designer. Tippe auf die Knöpfe. Wir können unten den Steckplatz
und die Ausrichtungseinstellungen sehen. Wir können sehen, dass
es einen Darstellungsstil gibt
, der viele
Einstellungen enthält , um den
Schaltflächenstil und das Aussehen festzulegen. wir nun zum Laden zurück und gehen wir zu unserer
Darstellungseinstellung. In diesen Einstellungen haben
wir also diese Pinselfarbe. Wir können ein
Bild auswählen, das wir möchten, aber im Moment verwenden wir
nur die Farbtonfunktion. Ible und verwandle es
in eine schwarze Farbe. Und wir haben einen schwarzen Hintergrund
für unseren Ladebildschirm. Das nächste Element, das wir benötigen,
heißt Progress Barrel. Dies ist ein weiteres einzigartiges
Element wie die Schaltflächen. Wenn wir sie drücken, tun
sie etwas. Das ist ein Balken, der sich
prozentual füllt. Ich meine, ein bisschen, bevor wir es bekommen. Schauen wir mal, ob es einen Stil gibt. Es gibt auch die
Einstellungen, die wir kennen, die Einstellungen, die wir
an der Position platzieren , die Verankerung, die Ausrichtung und den Stil
, der auch viele Einstellungen hat Darunter befindet sich auch eine weitere Einstellung, die
als Fortschritt bezeichnet wird und nur für
den Fortschrittsbalken Wenn ich den Prozentsatz erhöhe, können
Sie sehen, dass dieser Balken gefüllt ist. Ist Progress Martin. Ja. Und es hat einige Fähigkeiten
, die je
nach Richtung und
vielen anderen Optionen gefüllt werden müssen. Für uns werden wir jetzt vielleicht nur den
Füllungshintergrund und das Bild
ändern. Was wir also
auswählen werden, ist Deckkraft
der T-Balke Das wollen wir für
unser Hintergrundbild. Und das
wollen wir auch für unser Feldbild. B- und Balkenopazität. Oh, ein bisschen. Wir wollen nicht, dass der
Fortschrittsteil da oben steht. Wir wollen, dass der
Fortschrittsteil in der Mitte liegt. Gehen Sie nicht zu den
Offsets der Position. Und was die Größe angeht,
können wir sogar beißen. Lassen Sie uns die Ausrichtung Y X wie
in der Mitte platzieren. Guter Punkt. Y. Sie sind 1.500, vielleicht 600, 1.600 oder X-Größe, und sagen wir, 50
sieht gut aus oder Größe Y. Lassen Sie uns
jetzt mit der Farbe fett Füllen wir den Balken b. Setzen
wir ihn auf 1% Jetzt gehe ich zum Farbton des Hintergrundbilds und wähle etwas Gräulicheres Mehr. Das ist in Ordnung. Vielleicht einen Punkt Alpha setzen, damit ein Verbot gemacht
wird, das tut es nicht, aber es
tut es auch , wenn wir es
auf
2,3 erhöhen, dann können Sie das Verbot sehen. 0.8, und irgendwas ist in Ordnung. Wenn ich jetzt den
Farbton des Füllbilds ändere, werden
Sie feststellen,
dass die Farbe, die ich möchte,
dadurch nicht wirklich geändert Das liegt daran, dass dies mit dieser Option hier
gefüllt wird, hier Füllfarbe und Deckkraft, was eine andere Einstellung für
die Farbe des Bildes ist , das wir anwenden Also werden wir
die Farbe hier ändern. Wir werden es rot machen, ein bisschen dunkler,
ein bisschen mehr. Dieser 2.8. Nun, vielleicht 0,9 Wein, und vielleicht
eine Null. Grün, auch ein bisschen heller
in Richtung des orangefarbenen Lichts. Okay, ich finde, es sieht gut aus. Und jetzt haben wir eine
gruselige Ladestange oder ein unkonventionelles,
quadratisches Okay. Das nächste Element, das
wir brauchen, ist ein Text. Ich werde
eine Textvariable mitbringen, die nur eine Variable ist
, mit der wir Text schreiben. Ich werde
es in der Mitte verankern. Ich werde die Offsets auf Null
setzen. Größe, richten wir es auf 0,5 aus. S fünf. Dieser, vielleicht drei. Drei ist in Ordnung. Bei dieser Länge
geben wir zuerst den Text ein. Im Text der Ankünfte. Wir haben wieder verschiedene Möglichkeiten. In diesem Fall haben
wir also Inhalt, dem sich der
Text befindet. Darunter können wir
unseren Text, unsere Schrift und unsere Undurchsichtigkeit am Ende manipulieren Undurchsichtigkeit am Ende Das werden wir in einer Sekunde tun. Geben
wir für Text nun flo in Großbuchstaben Passen wir die Größe der
Schrift an, die Eyes of Font ist. Ich hundertdreißig Forte. 35. Das sieht okay aus. Auge hier, wenn
es genau in der Mitte ist, ist
es fast in der Mitte Es ist in Ordnung, es ist in Ordnung. Lass uns auch den Text
ändern. Wir Keine rötliche Farbe, Weiß
ist in Ordnung, alles andere. Sie können die Durchsichtigkeit
oder eine oder die Grundschraube,
spätes Licht, regulär
nach Belieben ändern spätes Licht, regulär
nach Belieben Für unsere Zwecke ist das
momentan in Ordnung. Wir könnten damit beginnen, den Text zu
animieren und
durch die Animationswanne ein- und auszublenden und
so eine Animation zu erstellen, aber wir
werden das
Kompilieren und Speichern nicht durchführen Und nun, wie werden wir diese Leiste
während des Spiels nutzen ,
um
ihren Prozentsatz deutlich zu erhöhen Zuallererst
werden wir es
Ladeleiste nennen und
es variabel machen , weil wir etwas damit anfangen
wollen. Und wir wollen etwas mit irgendeinem Teil des visuellen
Teils des Widgets machen, den wir gesagt haben? Wir müssen es zu einer Variablen machen. Wenn wir
zum Beispiel den Text ändern wollten ,
mussten wir ihn variabel machen. Wir wollten
das Hintergrundbild ändern? Wir mussten es zu einer Variablen machen. Oh, Ladebalken, es
ist jetzt eine Variable. Gehen wir zur Grafik
und bringen sie dazu, etwas
zu zeigen. Und wenn ich davon abziehe, kann
ich wie viel Prozent machen. Und dieser Prozentsatz ist ein Wert von 0-1. Im Grunde ist es eine
Flussvariable, die vollständig eingestellt werden muss. Wie wir sehen können, ist es
derselbe Wert wie hier 0-1. Wir können es auf zwei setzen, aber
es wird keine Wirkung haben. Es ist unter Null oder über Null. Es ist also eine
Null-zu-Eins-Variable. Raus. Und so legen
wir den Prozentsatz fest. Aber wenn ich das Widget
erstelle, zum Beispiel im Ga-Modus. Ich speichere es in einer Variablen. Wenn dieses Widget
den Fortschrittsbalken hätte, hat
dieses Widget für den Fall diese
beiden Schaltflächen als Variablen. Auf diesem Widget kann ich es hier G-Modus
nennen. Ich kann diese beiden Schaltflächen
von hier aus aufrufen , weil ich einen Verweis darauf
habe. C ist der Startknopf dafür. Ich kann einen Hinweis darauf bekommen. So wie ich es tun
würde, wenn das Lade-Widget
erstelle
und in einer Variablen speichere, könnte
ich meine
Referenzvariable abrufen und die Startschaltfläche
oder den Fortschrittsbalken aufrufen. Aber das ruft auch immer wieder
etwas auf. Was wir tun werden, ist
,
eine Funktion zu erstellen , die gehen
wir zum Diagramm. Ich werde das in die Funktion kopieren. Ich habe die Funktion so erstellt, dass hier
eine Funktion habe und das Plus-Symbol
drücke, und es wird eine neue Funktion erstellt. Also werde ich eine
Funktion erstellen und diese einfügen. Also, wenn ich das alles machen
will, kann
ich diese Funktion
vom Widget selbst aus aufrufen. Ich werde das
gleich demonstrieren. Nun, für diejenigen, die ich
kannte, was ist eine Funktion? Kurz gesagt, es ist
ein Befehlssatz
, der einfach
aufgerufen und wiederholt werden kann. Wenn ich zum Beispiel einen bestimmten
Befehlssatz häufig verwende, kann
ich ihn in eine Funktion einfügen
und muss diesen
Befehlssatz nicht jedes
Mal schreiben, wenn ich ihn benötige. Es gibt viele
Regeln für die Funktion. Eine wichtige Regel ist, dass sie nicht einfach Zeit in Anspruch nehmen können. Man kann keine
Verzögerungsknoten oder Timeline-Knoten
in Ionen haben in Ionen denn es gibt Dinge, die
als reine Funktionen bezeichnet werden. Es gibt Dinge, von denen
ich sowieso zu viel reinnehme. Lassen Sie uns zunächst
Funktionen als eine Reihe
von Anweisungen betrachten , die wir aufrufen
können, wann immer wir wollen. Und in diesem Fall
wollen wir als Befehlssatz den Prozentsatz
des Ladebalkens festlegen. Wenn ich jetzt eine Funktion aufrufe, kann
ich einige Eingaben , zum Beispiel
bringen wir die Funktion hierher. Im Moment ruft sie einfach
die Funktion auf, um zu tun,
was auch immer sie tut. Wenn ich dieses Kabel hierher ziehe, heißt
es, Pin zum Knoten hinzufügen. Lass uns das machen. Ich habe eine Eingabevariable
für diese Funktion erstellt. Ich gehe zurück zur Grafik. Ich kann sehen, dass diese
Funktion jetzt
diese Variable in Prozent hat . Ich kann es auch anders machen, indem
ich die Funktion hinzufügen, auswählen und zu ihren Details zu
Eingaben oder Ausgängen
gehen zu ihren Details zu
Eingaben oder Ausgängen
gehen kann, weil die
Funktion eine Ausgabe haben kann. Nehmen wir zum Beispiel an, dass es sich um eine Aktion
handelt, es wird wahr zurückgegeben. Ich hätte eine Verzweigung
, die, wenn das passiert, wahr zurückgibt, wenn es nicht
passiert, sie falsch zurückgibt. Aber ich werde im Detail
abgleichen. Nun, das ist die andere Art Eingaben oder Ausgaben
zur Funktion
hinzuzufügen. Wir werden
das viel später verwenden und wir werden
es viel besser erklären. Aber vorerst werden wir diese Eingabe in Prozent
verwenden und die
Funktion in Prozent benennen. Es gibt keinen wirklichen Grund,
denn wie Sie sehen können, ist
diese Funktion
dieselbe wie diese. Außerdem möchte ich nicht jedes Mal die Ladeleiste aufrufen. In Bezug auf die Leistung ist das
kein wirklich großes Problem. Rufen Sie die Ladeleiste jedes
Mal von der Referenz aus auf. Da wir
die Referenz sowieso verwenden. Ist nur dafür, dass
es
mir leichter fällt , einfach Prozent anzurufen. Ich denke, das ist ein guter
Haltepunkt für diesen. Ich sehe
dich am nächsten. Auf Wiedersehen.
7. Hinzufügen eines Ladebildschirms zum Spielmodus: H. Hallo und willkommen zurück zum
Game Design-Workshop
und zum echten prozeduralen
Action-PS-Erstellungskurs für Engine
Five-Dungeon-Action-PS Action-PS-Erstellungskurs für Engine
Five-Dungeon-Action-PS unserer vorherigen Lektion haben wir unseren Ladebildschirm,
unser Lade-Widget und
die Funktion erstellt, mit der der
Prozentsatz des Ladebalkens festgelegt Wir haben auch
Bars und alles andere entworfen. Und jetzt fügen wir
es unserem Viewport hinzu. Lass es uns in unser Spiel aufnehmen. Also werden wir es
wieder im Spielmodus hosten. Damit meine ich, dass
wir ein Event veranstalten werden. Die Sendung wird geladen. Und wir werden den Code hier kopieren und
einfügen. Wir werden diesen Teil löschen. Eigentlich nicht alles.
Wir werden es rückgängig machen. Anstelle des Hauptmenüs wählen
wir
das Lade-Widget. Wir zeigen das Laden,
wir erstellen das Widget. Wir speichern es in
einer Variablen, die geladen wird. Eine Unterstreichung? Ich
werde das verbinden. Es ist etwas
gerader und bringt die variable Holzbelastung mit sich. W G. Wir fangen an, hier Dinge zu haben, also fangen wir an zu kommentieren Wählen Sie
Start Play Event aus, drücken
Sie C und geben Sie B Anu Dann werde ich
die beiden tatsächlich auswählen. Um sie zur
Seite zu legen und zu tippen, drücken Sie C und geben Sie Widgets ein. Ich werde es ein bisschen größer machen. Und ich werde
das Hauptmenü anzeigen auswählen. Geben Sie Hauptmenü anzeigen ein. Und das Gleiche gilt für den
Ladetyp Show Ping. Und ich werde die Farbe
dieses Kommentars in
etwas wie Bläulich
ändern dieses Kommentars in
etwas wie Bläulich Und wir haben angefangen, hier etwas Ordnung zu
haben. Jetzt
kompilieren und speichern wir, und das bringt unser
Widget in unseren Viewport Nun, wo nennen wir das? Gehen wir zurück zu
unserem Hauptgenerator zu unserem Continue-Zweig. Das
geben wir vorerst. Nun, wenn es wahr ist, wenn es weitergeht, werden
wir später sehen, was vor sich geht. Aber wenn es falsch ist, wählen
wir aus, wir werden einen Knoten
namens Get game mode finden, und dieser gibt uns
Zugriff auf unseren aktuellen Spielmodus. Das Problem hier ist, dass es sich um einen
generischen Spielmodusknoten handelt. Das bedeutet, dass es ein generisches Objekt zurückgibt, das auf dem
Spielmodus basiert, wie wir
im Rückgabewert sehen können. Wenn ich also meinen spezifischen
Spielmodus haben möchte, diesen Spielmodus, verwenden
wir einen Knoten, der
Casting genannt wird. Was bedeutet Casting? Im Grunde
fragt es, was auch immer wir sind, das Objekt, das wir testen, ob es aus
einer bestimmten Klasse stammt. Ich werde im Spielmodus von
oben nach unten fragen. Jetzt erhalte ich das
Spiel de und frage, ist das das Spiel d,
das im Spiel läuft, das Spiel de, das
gerade aktiv ist. Wenn ja, können wir ein
Kabel aus dem reinen Guss ziehen. Wenn nicht, wird es, tut
mir leid, nicht vom Guss her rein . Oder wenn nicht, wird es scheitern. Wenn ich nun ein Kabel
aus dem Erfolgsteil ziehe, habe ich noch eine weitere
Variable, die besagt: S BP Top-Down-Spiel d.
Das bedeutet, dass wir unseren
Top-Down-Spielmodus, den wir
gerade verwenden, direkt aufrufen können unseren
Top-Down-Spielmodus, den wir
gerade verwenden, direkt aufrufen . Das bedeutet, dass ich
Zugriff auf all diese Variablen habe, die wir erstellt und gespeichert
haben, als sie erstellt wurden. Wenn sie nicht erstellt würden, wären diese
Variablen leer. Gehen wir nun zurück
zum M-Generator. Wie Sie sehen können, hat er
diese Execute-Pins, und als ich den Fehler
zuvor gemacht habe, habe ich das Pure Cast genannt. Ich wollte zeigen
, dass es eine Möglichkeit gibt, das nicht als Execute
zu verwenden. Es heißt Convert
to Pure Cast Entferne die
Ausführungspins, um
den Knoten vielseitiger zu machen . Die Umwandlung würde trotzdem fehlschlagen, was zu einer ungültigen
Eingabe in der Ausgabe führen würde, tut mir leid. Das bedeutet, dass es
eine Erfolgsvariable erzeugt. So können wir es zum
Beispiel in einer Filiale haben, wenn die Möglichkeit besteht, dass
dies nicht unser Spielmodus ist. 02, zum Beispiel Fehlercode. Dieser Plan, und
wir könnten zum Beispiel sagen, wenn das falsch ist, dann sagen wir Fehler, das Spiel
ist falsch Aber das werden wir nicht tun. Wir wissen, dass unser Spiel das sein
wird. Wir werden
also von
hier aus trinken und für Variabel werben Und das könnte tatsächlich vor der Filiale gemacht
werden. Ich nehme das hier mit. Und als wir
zur Variablen hochgestuft haben
, wurde der Name wie
BP Top Down Game Old verwendet. Das ist also sehr
praktisch für uns. Und wir haben diese Referenz, und wir können sie einfach per Drag & Drop auf die
Variable ziehen, die wir erstellt haben. Oh, wenn Sie mit der Maus per
Drag-and-Drop ziehen, können
Sie ein Get oder ein Set bekommen. Ein GET ist das Abrufen der Variablen, ein Setter ist etwas , auf das wir
die Variable setzen Dafür gibt es eine schnelle
Abkürzung. Wenn ich mit der Strg-Taste ziehe
und loslasse, oder wenn ich mit der linken Maustaste ziehe und dann loslasse, wird
es ein Getter oder ein Setter
mit
lt . Stellen Sie das jetzt wieder her Von hier aus
wählen wir den Ladebildschirm aus. unser Fortfahren nun falsch ist, wird
der Ladebildschirm angezeigt. Wenn ich jetzt auf Play
drücke, Spiel starten drücke, können wir unseren
Ladebildschirm
sehen, hier ist er. Wir haben den Ladebildschirm erfolgreich
hinzugefügt. Schauen wir uns nun
etwas genauer an, wie unser Ladebildschirm funktionieren
wird und wie unser Labyrinth-Generator funktionieren
wird Oh, ich werde Paint öffnen. Betrachten wir das als
unsere Ladeleiste. Und wie gesagt, wir werden die Ladeleiste auf
der Grundlage
des Prozentsatzes
unserer Labyrinth-Generation füllen des Prozentsatzes
unserer Labyrinth-Generation Aber wenn wir
die Generation Maze in Betracht ziehen, lassen Sie uns ein wenig
über die Generation M sprechen, wie sie funktionieren wird Die Art und Weise, wie sie funktionieren wird,
ist, dass etwas
hinzugefügt
wird , das wir eine Kachel nennen werden Und es wird
Kacheln hinzufügen, die auf einigen Regeln basieren, und es wird eine Form
erstellt. Von einem Labyrinth oder was auch immer. nun diese Steine hinzufügst und die Art und Weise festlegst, wie sich der Spieler
bewegen wird , wird er
zum Beispiel Blöcke und Dinge
erstellen Nennen wir das Phase eins. Nennen wir das Phase eins. Das wäre ein einfacher
Weg, um das Laden zu Sie sind diese Prozentzahl
auf der Grundlage von Null bis maximal Holz Das ist ein x, kein t.
Null bis maximal wäre also der
prozentuale Anteil des Ladebalkens Aber danach
wird unser Labyrinth einige andere Dinge tun, es wird Wände schaffen, es wird Materialien
verändern, es wird Dinge
abstauen. Diese Phase ist also ein
kleines Fragezeichen, wie groß der Prozentsatz dieser Ladebalken sein
wird Also, was wir tun werden, werden
wir vortäuschen. Nehmen wir an, das sind 0,2%,
das sind 20%, tut mir leid, aber es ist
ein Wert von 0-1 Das sind zum Beispiel
0,3%. Wir werden falsche
Prozentsätze angeben, weil wir wirklich nicht einmal wissen, wie der Computer des Spielers darauf reagieren
wird Einige Aktionen sind GPU-basiert, andere Aktionen sind CPU-basiert Also ja, wir werden falsche Prozentsätze
festlegen. Das ist normalerweise das, was Sie
beim Laden von Balken sehen , wie
sie sich bewegen, anhalten, mit großer Geschwindigkeit bis zu einem Punkt hochfahren und
dann anhalten und weiterbewegen, denn für sich dann
weiterbewegen, denn für
fortgeschrittenere Benutzer dauern
manche Loops länger Bei Loops,
die das Bett einfrieren, kann es also breite Loops geben, die den Computer
komplett einfrieren. Das ist normalerweise
der Teil, in dem wir nicht einmal eine Wanne in bestimmten
Ladestangen haben können. Ja, wie dem auch sei, es
hängt davon ab, dass es Möglichkeiten gibt das immer fortschrittlicher
zu machen
und es nahtlos zu machen und in der Lage
zu sein , deinen
Computer vollständig zu kontrollieren und mit
einem riesigen technischen Wissen
und einem großen Designanteil im Spiel sehr spezifisch zu sein . Aber für uns werden
wir einige grundlegende Methoden verwenden. Nun, ich werde das schließen, und ich denke, das ist vorerst ein guter
Ausgangspunkt, und wir werden
diese Aktionen beim nächsten demonstrieren . Nehmen wir zum Beispiel an, wir haben eine
minimale Kachel von Null bis eine maximale Kachel und setzen einen Prozentsatz dieses Balkens auf den Prozentsatz
von Null zu Mx-Kachel. Wir werden hier aufhören. Ich werde
dich am nächsten sehen. Auf Wiedersehen.
8. Aufbau des Labyrinth-Algorithmus: Hallo und willkommen zurück
zum Game Design-Workshop
und zum echten Engine
Five-Procedural Dungeon-Action-Kurs A Ps Creation Zuvor waren wir
mit dem niedrigen Dan-Balken fertig
und haben erklärt, wie
er gefüllt werden soll Wir haben den
Spielmodus benutzt, um ihn zu spawnen. Und das nennen wir „Unser Ich“ nach
unserer
Spielmodus-Referenz nun in dieser Lektion mit der Mathematik fortfahren, Lassen Sie uns nun in dieser Lektion mit der Mathematik fortfahren, die zum Füllen des
Ladebalkens
erforderlich Wir werden eine Funktion
erstellen. Wir werden das LC
Calculate Tile
Loading nennen . Das ist in Ordnung. Wir werden dafür sorgen, dass
das funktioniert. Wir wählen
die Funktion so aus, wie sie geöffnet wurde, und ich die reine. Wie gesagt, Funktionen sind wie Codevorlagen
, die wir oft wiederholen können. Und deine Funktionen, wir haben
ein bisschen darüber gesprochen. Sie dienen zur
Durchführung von Operationen. Das bedeutet, dass sie eine Ausgabe
benötigen und keine Ausführungszeile haben
. Wir können hier eine
Ausführungslinie sehen, aber wenn ich sie in das
Ereignisdiagramm bringe, wenn ich sie hierher ziehe, können
Sie sehen, dass sie
keine Ausführungslinie hat. Wenn wir wollen, dass das läuft, braucht
es einen Ausgang damit wir
es mit irgendwem verbinden können, und es benötigt die Informationen
von dieser Funktion. In der Regel
sollte eine reine Funktion keine Setter enthalten, sie
sollte keine Daten verändern Sie sollten nur Operationen ausführen. Sie können Daten
innerhalb einer reinen Funktion ändern. Ich kann hier einen Setter angeben, aber das verfehlt gewissermaßen
den Zweck der Opt-Optimierungstechniken
,
die Unreal für
die Verwendung reiner Funktionen Opt-Optimierungstechniken
,
die hat Nun, als ich
eine neue Ausgabe erstellt habe, habe ich einen Float für mich hinzugefügt, weil ich ihn bei den Variablen belassen
muss. Wenn es kein Float ist, können
Sie den
Typ auswählen und zu Float wechseln. Standardmäßig könnte es ein Bulon sein. Nennen wir diese Ausgabe zwei
Paare berühren zwei Prozent. Nein. Wir haben unsere Funktion,
wir haben ein paar Funktionen, und wir müssen hier einige Operationen
erledigen. Dafür benötigen wir
zunächst
zwei Variablen, und zwar eine Variable, sie wird sein und die andere Variable
wird aktuell sein. Wie Sie sehen können, sind meine
Variablen Integer denn bereit zu erklären, dass
ich etwas gemacht habe,
aber der Typ wurde beibehalten. Wenn es sich nicht um
eine Ganzzahl handelt, können
Sie wiederum auf den
Typ klicken und von
Bleion oder was auch immer
es ist, zu Integer wechseln Bleion oder was auch immer
es ist, zu Integer Lassen Sie uns nun diese
beiden Variablen hierher bringen. Die Formel, um, sagen wir, den prozentualen Anteil der aktuellen
Steine zu den männlichen Plättchen zu ermitteln,
wäre, die
aktuellen Kacheln durch die maximale Anzahl an Kacheln zu teilen und
das mit 100 zu
multiplizieren Was wir jedoch wollen,
ist,
das Verhältnis
der maximalen Anzahl
an Kacheln zum aktuellen Plättchen
in Prozent zu berechnen das Verhältnis
der maximalen Anzahl
an Kacheln . zu tun, werden
wir
diese Division einfach umkehren und
die maximale Anzahl an Kacheln durch
die aktuellen Kacheln dividieren die maximale Anzahl an Kacheln durch
die aktuellen Kacheln Und weil das ganze Zahlen sind und die Division
davon eine Gleitkommazahl ergibt, machen
wir das einfach zur Engine und
betrachten
das Ganze als Also werden wir
zwei Float-Konvertierungen durchführen. Ich werde diese
Konvertierung kopieren und sie hier verbinden. Jetzt werden wir
das teilen und mit 100 multiplizieren. Was wir nun haben, ist
die Darstellung des Verhältnisses der maximalen Anzahl an
Kacheln zu den aktuellen Kacheln. Aber wir wollen, dass dieser Wert
bis zu 40% des Balkens ausfüllt und nicht über 40% steigt. Also
teilen wir wieder durch 40,
40 geteilt durch diesen
Skalierungsfaktor, und das ist Skalierung, weil sich die aktuellen Kacheln ändern werden, und wir werden
das mit dem Prozentsatz verbinden. Das bedeutet
eigentlich Normalisierung, das heißt,
es wird in den
Kontext A gebracht, dass 40 das Maximum ist Ich hoffe, das wird verstanden. Auf geht's, wir werden damit fortfahren
, die
Lademarke mit diesem Prozentsatz zu füllen. Und lassen Sie uns das tatsächlich
demonstrieren, wie wir es machen werden.
Demonstrieren Sie einige Prozentsätze. Also werde ich von
hier schleppen und ein Holz laden. Und hier ist die Variable , die wir im
Top-Down-Spielmodus gespeichert haben. Wenn ich von hier aus ziehe, ziehe
ich direkt aus dem
Top-Down-Spielmodus, weil wir diesen
Spielmodus als Variable
gespeichert haben . Oh, wir legen die Prozentzahl fest ist
die Funktion
, die wir erstellt haben. Und verbinde das hier. Wenn ich es bei e lasse,
geht es über Null hinaus. Aber nehmen wir zum Beispiel an, unsere maximale Anzahl an Kacheln ist 20 und unsere aktuelle Kachel ist. Das sollte also unsere
Ladeleiste zu 20% füllen. Und ich glaube in der Tat, 40% wären hier,
50% irgendwo hier. Lassen Sie uns
es tatsächlich mit 20 von 20 füllen. Ja, jetzt hat es
40% der Bar gebaut, ich glaube, 50 sind hier irgendwo. Und es funktioniert richtig. Jetzt müssen
wir noch etwas tun: Diese beiden Variablen, Max Styles und Current Tiles,
erstellen . Was wir tun sollten, ist sie
auf Spaw verfügbar zu machen, eigentlich nur die maximalen Stile,
nicht die aktuellen Kacheln, sie
auf Spaw verfügbar zu machen und sie für die
Instanz nutzbar zu machen Wenn wir also zu unserem
Hauptmenü in der Grafik gehen, kompilieren und speichern
wir es, es
wurde nicht aktualisiert. Aber wenn ich
den Labyrinth-Generator erneut wähle, können wir
jetzt sehen, dass
wir hier die maximale Anzahl an
Stilen haben , mit dem
Standardwert 20. Zwei weitere Erklärungen. Was bedeutet
das, der Standardwert? Wenn wir eine Variable auf
dem Blueprint auf einem beliebigen Blueprint erstellen dem Blueprint auf einem beliebigen Blueprint Zuallererst muss
der Blueprint kompiliert werden. Wenn ich also bitte kompiliere, dann können wir
anhand der Details zum Standardwert sehen , dass
wir jeden beliebigen Wert für diesen Blueprint
angeben können für diesen Blueprint
angeben wenn er nicht
von irgendwo anders gesetzt wurde.
Der Wert, den wir für
einen Standardwert festgelegt haben , wird
jedes Mal beibehalten, wenn wir ihn verschieben. Und die andere Sache, über die
ich
sprechen wollte, war die Das Erstellen eines
Blueprints bedeutet also, dass ich
zum Beispiel, wenn ich
diesen Altersgenerator hierher bringe, eine Instanz
dieser
Klasse mitgebracht habe Wie wir bereits erwähnt haben, ist
alles ein Objekt, und Klassen sind Möglichkeiten,
Objekten mitzuteilen , was sie in einem
voreingestellten Vorlagenmodus tun sollen Und wenn ich
sie auf die Welt bringe, bringe
ich Exemplare
von ihnen. Ja. Das
wollte ich hinzufügen, weil wir die editierbare Instanz schon
zweimal oder vielleicht öfter
verwendet haben die editierbare Instanz schon
zweimal oder vielleicht öfter
verwendet und es
dafür keine Erklärung gab Lassen Sie uns nun unsere
Werte auf die Standardwerte zurücksetzen. Ich werde
diese neue Variable löschen. Ich werde die
aktuellen Kacheln auf Null setzen und ich werde die maximale Anzahl an Kacheln setzen. Eigentlich lasse ich es
bei 20 stehen. Was wäre unser nächster
Schritt jetzt? Unser nächster Schritt wäre, das erste
Plättchen für das Labyrinth zu verschieben Und dafür
benötigen wir einen Bauplan für die Kacheln. Ich werde zum Inhalt übergehen. Ich gehe zu Blueprints und erstelle
einen neuen Blueprint
vom Typ Akteur und nenne ihn
PP Underscore-Datei Bevor wir weitermachen
und anfangen, Kacheln und so zu spawnen,
lassen Sie uns ein wenig
über unsere Labyrinth-Generation sprechen Fangen wir mit dem ersten Plättchen , das wir spawnen werden.
Was bedeutet das? Nun, unser Labyrinth
wird so funktionieren, abgebildet wird es auf der Grundlage eines
zweidimensionalen Rasters, eines
X- und eines Y-Rasters, X- und eines Y-Rasters Und das wird durch negative und
positive Werte
und Null
dargestellt negative und
positive Werte
und Null Und unseren ersten Stil werden
wir als
0,0-Kachel betrachten. Wenn wir nun etwas hinzufügen
wollen, sagen
wir
zum Beispiel für Nord, wir es
hinzu, dass X
der Wert für und Süd
und Y der Wert
für Ost und West ist. Aber das werden wir
sicherstellen, wenn wir es in
den Weltrichtungen tun. Nehmen wir an, für Nord wollen
wir eins erhöhen, x und y bleiben
gleich, oder für Süd wollen
wir x dekadieren, wollen
wir x dekadieren, Null auf. Das Gleiche könnte für y gemacht werden, wenn wir
für links und rechts
Ost und West wollten , es wird
im Grunde 0,1 sein
und Nullpunkt minus eins Das ist unsere interne Koordinate , dass dieses Stück zum Nullpunkt
gehört Dieses Stück gehört zu 1.1. Das gehört zu einem
Punkt minus eins usw.
Es können 25 sein beliebige Zahl, das wird
unsere Darstellung sein ,
die in einer Variablen gespeichert ist. Abgesehen davon, was wir
brauchen, um auf eine Datei zu antworten,
ist, dass sie eine bestimmte Zeit hat. Was wir also tun werden
, nehmen diese Größe und multiplizieren
sie mit der Position
der Keule, zum Beispiel,
wenn unsere erste Kachel 600 ist und
sie diesen
Raum wenn unsere erste Kachel 600 ist einnimmt. Wenn wir das zweite hinzufügen, sagen
wir zum Beispiel Nord, wäre
es 0600
multipliziert mit eins und
600 multipliziert mit Null,
also passt also Unsere Quadrate, unsere Kacheln
werden dieselben sein denn 600
multipliziert mit Null und
Null ist hier und Hundert
multipliziert mit Eins, das
führt uns zur
Weltposition von x gleich 100,
wo dieses x ,
denn 600
multipliziert mit Null und
Null ist hier und Hundert
multipliziert mit Eins, das
führt uns zur
Weltposition von x gleich 100,
wo dieses x Null ist. Oh, ich denke, das ist
vorerst
genug Erklärung , während wir
mit der Erstellung des Labyrinths Wir werden weitere Dinge erklären, aber dies ist eine erste
Einführung in die Variablen , die wir in
der nächsten Lektion erstellen werden, um diese Informationen zu
speichern Ich frage dich nach einem nächsten. Auf Wiedersehen.
9. Erstellen der ersten Kachel: Hallo und willkommen zurück zum
Game Design Workshop und dem Kurs zur mit
Real Engine Five Erstellung prozeduraler
Dungeon-Action-RPs In der vorherigen Lektion
haben wir also die Funktion „Laden von
Kacheln berechnen“ entwickelt. Diese Funktion berechnet, Diese Funktion berechnet welcher Prozentsatz der
aktuellen Spielsteine von der
Maximalzahl 40% des Maximalzahl 40% des Balkens entspricht, und gibt
uns einen Nun haben wir auch ein wenig
über die Variablen und das
zweidimensionale Raster unseres Labyrinths gesprochen über die Variablen und das
zweidimensionale Raster unseres und darüber, wie
wir
unsere Kacheln, die in einem zweidimensionalen Raster erscheinen,
zuordnen
werden unsere Kacheln, die in einem zweidimensionalen Raster erscheinen,
zuordnen werden Lassen Sie uns nun damit beginnen,
einige Funktionen und Variablen zu erstellen , die wir verwenden werden, um diese Daten
zu manipulieren und Regeln für sie zu
erstellen und die erste
Kachel zu erstellen Als Erstes
werde ich also
eine Funktion namens eigene Dateien erstellen eine Funktion namens eigene Dateien Natürlich
benötigen wir den Continue-Zweig,
damit wir unterscheiden können, ob
dies der erste Stil ist, der auf der Grundlage des gesamten Spiels
erscheint, oder ob es sich um einen fortlaufenden Teil Wir werden das verwenden, weil wir
ein Introstück haben werden, zum
Beispiel einen Ballon darstellt, wie der Spieler in dieses Labyrinth
gelangt Und wenn wir
weitermachen, wird der Slot
, an dem wir den
Ballon spawnen, der Slot sein, uns
unser Aufzug
vom vorherigen Level
zum nächsten Level führt vom vorherigen Level
zum nächsten Level Wenn wir also
das erste Plättchen erstellen
, müssen wir
berücksichtigen, dass
wir
beim obigen Labyrinth Farbe mitbringen Wenn wir also unser
Labyrinth auf Ebene eins haben, sagen
wir, die Null
auf der D-Achse ist Das nächste Stück, das
wir spawnen werden,
das nächste Labyrinth, das ist
ein Labyrinth , Agentenlabyrinth, wie auch immer
Sie Aber das nächste Stück
, das wir spawnen wollen, wo auch immer es oben erscheint
und sich selbst erschafft, wir wollen eine
Entsprechung mit dem darunter liegenden Labyrinth haben , von
dem wir eine Höhe
haben,
und wir werden hinaufgehen wo auch immer es oben erscheint
und sich selbst erschafft,
wir wollen eine
Entsprechung mit dem darunter liegenden Labyrinth haben, von
dem wir eine Höhe
haben,
und wir werden hinaufgehen. Also
muss dieses Stück hier leer sein. Und beim ersten
Stück Mais, sagen
wir, der Anfang ist da, dieses Stück wollten wir der Ballon sein, zu
dem wir gekommen sind Von wo wir gekommen sind.
Lass uns das fortsetzen. Aus diesem Grund
müssen wir diesen Zweig auf zwei Aktionen aufteilen, unabhängig davon,
ob es sich um eine Fortsetzung handelt oder
nicht, in der ersten Kachel. Nun, wie wir es im
Hauptmenü getan haben und den Spontor-Knoten verwendet haben, werden wir
hier
dasselbe tun, um vom Kurs aus zu sponsern, und die Klasse, die wir verwenden
werden, ist die BV-Kachel Wir werden die
Spon-Transformation aufteilen. Standort angeben Ich habe
in den vorherigen Erläuterungen ein
wenig über Orte gesprochen , und was ich
hinzufügen wollte , war, dass es, wenn wir uns im Level
befinden, ein kartasisches
System aus X, Y und Z
gibt. Ich habe darüber
gesprochen, dass
unser erstes Labyrinth Z Null ist und das zweite Labyrinth
auf Z, sagen wir rot, sein wird Auf der Welt
haben wir ein Ctsan-System, das wir Dies ist eine kleine Klammer für diejenigen Wenn wir jetzt den Labyrinth-Generator
spawnen, wir ihn
auf 000x0, Das ist, sagen wir, der Mittelpunkt
unseres Wortes. Und wenn wir
das erste Mal spawnen, könnten
wir die 000 verwenden, aber das würde bedeuten, dass,
wenn wir wieder auf ein Labyrinth antworten, dieses wieder
an der ersten Stelle erscheint Also was wir hier tun werden, wir werden einen Knoten
namens get acto location verwenden Weil das Ziel
dieses Knotens selbst
ist, gibt er uns als Rückgabewert
die Position, an der das
BP-Labyrinth Jetzt antworten wir vom Hauptmenü
aus, es ist 000. Wenn wir es später von
einem anderen Ort aus beantworten, wahrscheinlich vom Aufzug, wird
es
die Position des Schwamms ermitteln,
um die Kachel hinzuzufügen Wie dem auch sei, lass uns weitermachen. Was werden wir sonst noch brauchen? Also, ein bisschen
Optimierung, nicht viel Optimierung, wir werden nicht viel
optimieren, aber ein bisschen. Wenn wir
das nächste Labyrinth spawnen, sollten
wir in der Lage sein, das vorherige zu
löschen Es wird also nicht
in RAM und Aktionen geladen. Zum Beispiel werden wir ein Navigationsraster
haben , das von der KI aus verwendet wird. Es sollte nicht
all diese Dinge in
der vorherigen Karte berechnen . Wenn wir beispielsweise Elemente haben, sollte
es
die Elemente nicht berechnen , wenn sie kollidieren, oder physikalische Elemente
sollten nicht ausgeführt werden Wir brauchen also eine Liste, um
Dinge zu vernichten, nachdem wir uns entschieden haben. Und für diese Liste werden
wir eine Variable erstellen und sie wird
vom Typ Schauspieler sein. Wir geben
Akteur ein und gehen zu Objekttypen und wählen
Objektreferenz aus. Jetzt werden wir
etwas später Soft-Object-Referenzen
und Objektreferenzen
erklären . Aber wir werden
nicht so viel optimieren. Wir werden
Objektreferenzen verwenden. Aber ich schweife später ab. Jetzt werden wir diesen
Akteur verwenden, der Objekt ist. Was wir diese
Liste nennen wollen, sind Akteure, die zerstört werden müssen. Was ich
in dieser Situation genauer analysieren möchte ,
ist, dass
wir, wie gesagt, diese
Variable auf etwas setzen. Aber das enthält nur eine
Information, eine Variable. Aber wenn ich eine
Liste von Variablen haben will. Nein, neben dem
Variablentyp haben
wir auch einen Containertyp, wie es im Tooltip steht Für diesen benötigen
wir zum Beispiel ein Array Was ist ein Array? Lassen Sie uns diesen ersten Variablentyp ändern.
Wir haben das mitgebracht. Zweitens, was ist ein Array?
Im Grunde ist es eine Liste. Es ist eine Liste
derselben Datentypen, eine Sammlung von
Elementen, wenn man so will. Im Moment haben wir
eine Liste von Schauspielern. Aber wenn ich
den Variablentyp ändere, wäre
es
zum Beispiel eine Liste von Buionen oder eine Liste von
Ganzzahlen, eine Liste von Vorerst überlassen wir es
den Schauspielern. Objektreferenz,
das ist der andere Bildschirm,
das werde ich eingeben. Wenn ich nun das Set auswähle, ist, wie wir sehen können, eine Liste
erforderlich. Wenn ich das G verwende,
erhalte ich eine Liste. Wie kann ich also
einen einzelnen Akteur
zu dieser Liste hinzufügen , eine
einzige Variable. Wir machen das so, dass wir einen
Getter verwenden und vom Getter aus verwenden
wir den Knoten, wenn
Arrays viele einzigartige
Knoten für die Manipulation von Daten haben In diesem Kurs werden wir einige
von ihnen kennenlernen. Ich werde das hier verbinden. Wenn das jetzt läuft, stört es unseren ersten
Stil auf dieser Liste , dass wir Schauspieler sind, die es zu
zerstören gilt, wenn wir
zum nächsten Level übergehen? zerstören gilt, wenn wir
zum nächsten Level übergehen Die
zweite Sache, die wir
brauchen, ist das, was wir
das Koordinatensystem nennen,
das Koordinatensystem,
die Koordinatenwerte Dafür werden wir eine weitere Variable
erstellen und sie es nennen. Und wir werden das bis zu einem gewissen Punkt
ändern. Was ist nun ein In-Point? Es ist im Grunde ein Zwei-D-Vektor. Außerdem werde ich von einem
Array zu einer einzelnen Variablen wechseln. Wenn ich jetzt kompiliere, ist
der Standardwert
derzeit Null, Null. Das wollen wir
für das erste Stück. Die erste Kälte
, die wir wollen, ist 00. Jetzt müssen wir
das irgendwo aufbewahren. Neben den Arrays gibt es noch
einen anderen Variablentyp, der als Map-Variable
bezeichnet wird einen anderen Variablentyp, der als Map-Variable
bezeichnet sich im Grunde um ein
zweidimensionales Array mit einigen zusätzlichen Regeln Lass uns eine erstellen. Ich werde
eine neue Variable erstellen. Ich werde es Gon nennen. Ngon-Karte. Nein, eigentlich gehe
ich nur zu mir, verdammte Karte Dang Map würde auch den Typ
der Variablen besser beschreiben Also gehe ich hier zu
den Containertypen und wähle die Karte Sie können es als zwei Variablen sehen. Das ist also, was eine Karte ist. Es ist wie ein
zweidimensionales Array, aber der
erste Variablentyp
muss eindeutig sein. Lassen Sie uns das kompilieren und
demonstrieren. Zum Beispiel, wenn ich den Schlüsselpunkt
hinzufüge, die 8,00, und ich versuche, erneut etwas
hinzuzufügen. Das erlaubt mir nicht,
aber wenn ich als
Akteur
zum Array gehe und nichts hinzufüge, kann ich es wieder hinzufügen. Es spielt keine Rolle, ob
wir Duplikate haben. Ich werde das löschen, ich
gehe zurück zu Anrufen und werde sie tatsächlich
ansprechen Landkarte. Ich gehe zurück zu p und lösche auch den
Standardwert, den ich hinzugefügt habe. Das erste sind jetzt
die Koordinaten. Die erste I, die
wir auf dieser Karte haben. Der zweite wäre
der Hauptdarsteller selbst. Ich könnte also entweder
die Koordinaten
oder gleichzeitig den Schauspieler haben , auf
den ich verweisen
möchte. Ich werde Tile eingeben. Ich werde die BP-Kachel archivieren. Ich werde eine
Objektreferenz verwenden. Ich werde den
Variablentyp ändern. Es fordert mich auf, den Variablentyp zu
ändern , weil ich
ihn in das Diagramm aufgenommen habe. Das bedeutet, dass es
bereits registriert ist. Wenn ich
es nicht in das Diagramm gebracht hätte, war
ich nur hier, um die Variable zu
erstellen, und ich ändere
den Objekttyp. Sie können sehen,
dass es keinen Einfluss darauf hat. Aber sobald ich
es in die Grafik einfüge, wirkt
es sich darauf aus. Ich
werde es rückgängig machen. Ich werde
diesen Gin herbringen. Und was das Array angeht, werde
ich hinzufügen. Nun, diese Anzeige hat eine spezielle Regel, dass, wenn Sie etwas hinzufügen,
das bereits existiert, da es der
erste Schlüssel sein muss, eindeutig sein muss. Es wird
den vorhandenen Schlüssel außer Kraft setzen. Das ist also keine
ausfallsichere Mechanik, um Dinge hinzuzufügen, aber weil wir wissen,
dass das nur
einmal zu Beginn des Gebots ausgeführt wird , weil es das erste Plättchen ist, ist es ausfallsicher, dass es
das richtige Stück hinzufügt Jetzt verbinde ich hier die
aktuellen Koordinaten und den Akteur
sowie den Rückgabewert des
Spawn-Schauspielers
mit sowie den Rückgabewert dieser Dungeon-Map In unserem Dungeonsystem, in unserem Labyrinth-Dungeon, wie auch immer Wir werden eine Sonderregel haben. Diese Regel besagt, dass auf speziellen Blöcken
keine Dinge spawnen Also brauchen wir eine Liste der speziellen
Blöcke, keine Spawn-Dinge. Für diese Liste werden
wir
die Koordinaten des Dungeons
selbst verwenden die Koordinaten des Dungeons
selbst Also werde ich die aktuelle
Koordinatenvariable
duplizieren , kopieren und einfügen Und ich werde
es zum Beispiel in Spezialräume umbenennen, also eigentlich alle
Spezialkacheln Spezielles Kachel. Und ich werde daraus auch eine Liste machen, ein Array. Nun, ich hätte
daraus ein Set machen können,
das dieselben Regeln wie die
Map oder der erste Schlüssel hat . Einige der Regeln sind dieselben. Das bedeutet, dass sie eindeutig
hinzugefügt werden müssen. Aber ich werde
einfach ein Array verwenden da sie
etwas einfacher zu manipulieren sind. Ich werde
spezielle Kacheln mit Halt mitbringen. Ich werde mir einen Getter besorgen und dieses Array hinzufügen,
die Koordinaten dieser Kachel Ich denke, das ist vorerst ein
netter Ausgangspunkt. Bei der nächsten Legion werden
wir entscheiden und beschreiben, wie wir den Austrittspunkt
definieren werden Wo ist das nächste Stück? Wo werde
ich dieses Stück scharren? Wo wird das nächste Stück laichen
? Wir werden die
Nora Southwest-Verordnung definieren. Vielen Dank. Auf Wiedersehen.
10. Benutzerdefiniertes Richtungssystem: Hallo und willkommen zurück zu den
fünf prozeduralen
Aufrufen zur Erstellung von Dungeon
Action Apes der Game Design Workshop-Engine Erstellung von Dungeon
Action Apes Beim vorherigen haben wir die Kette der Ereignisse
gestartet, Funktion
der
Span für den Stil Und wir haben die Schauspieler hinzugefügt
, um das Array zu zerstören. Wir haben ein
bisschen über Strahlen erklärt. Wir haben auch die
Dungeon-Map-Variable erstellt
, bei der es sich um eine Variable aus einem
Int-Punkt und einem Akteur handelt Und wir haben auch die Koordinaten
zu einem speziellen Kachelarray hinzugefügt. Aber wir haben gesagt, dass es sich bei den
Spezialplättchen um Kacheln handelt, damit wir nicht bald
die Regel einhalten werden, keine
Dinge in unserem
Dungeon zu spawnen Wir
wollen zum Beispiel nicht, dass auf dem ersten Plättchen eine Truhe auftaucht H. Lassen Sie uns speichern und
eine weitere Variable für die Auflistung erstellen eine weitere Variable für Diesmal wird
es die Liste der Variablen
Nordost, Ost und
Südwest sein . Dies ist eine sehr
einzigartige Art von Liste. Diese Liste hier drüben, die MP-Liste oder die
Array-Liste oder die, wie gesagt, sie können zur Laufzeit geändert werden. Das bedeutet, dass ich
während des Spiels
Dinge zu dieser Liste hinzufügen
oder entfernen kann. Was wir erstellen werden,
ist eine alte Aufzählung,
was egal ist, ob du dich auf Blueprints oder Sets Plus befindest, Aufzählungen können
sich während der Laufzeit nicht ändern Das ist es nie. Aber es wäre eine
enorme Leistung. Jetzt. Mal sehen, wie wir diese Variable
erstellen. Diese Variable kann hier nicht in der Liste
erstellt werden , da die Liste hier
Dinge enthält, die veränderbar sind. Für unsere Liste wird
das, was
veränderbar sein wird
, der Wert sein. Aber die Liste selbst muss hier
erstellt werden. Um das zu erstellen. Wir müssen zu Content Drawer
gehen, zu unseren Ordner-Blueprints Wir werden dort
einen weiteren Ordner erstellen. Ich werde das
oder Nums for Fold nennen. Arme. Ich klicke mit der rechten Maustaste und gehe zur Kategorie
Baupläne, Schlauchaufzählung Wir nennen das Oh,
gehen und fügen vier Variablen hinzu Ich werde es öffnen
und das ist, was wir sehen, die Liste der Aufzählungsvariablen, und wir haben diese Schaltfläche die Aufzählungszähler
hinzufügt Wenn ich versuche, einen
Enumerator in vier umzubenennen, haben
wir einen neuen Enumerator
Null, Eins, Zwei, Drei.
Ich versuche, diese Null zu nennen, Sie werden sehen, Sie Der neue Enumerator Null wird bereits verwendet. Aber auch das hat eindeutige Namen. Jetzt ändere ich 01. Ich werde es zum Beispiel
auf Null belassen. Mein Fehler. Schreiben Sie
R in Großbuchstaben, es wird nicht zwischen Groß- und Kleinschreibung unterschieden. Die Verwendung der Großbuchstaben R ändert
sich also nicht wirklich. Jetzt werde ich diese Namen
löschen. Ich muss einen Namen angeben. Also fangen wir mit
dem ersten Anruf an. Und für den Norden,
den zweiten
nenne ich E für Ost, den dritten
nenne ich Süden für S für Süden und den vierten
nenne ich ihn W oder West. Wir haben Nordost-Südwest. Das ist also unsere
vorgegebene Liste. Bevor wir zu
denjenigen übergehen, die eine Definition wollen, wäre
eine genauere
Definition dass es sich um eine
Datentypisierungsprogrammierung handelt, uns
ermöglicht,
Namenskonstanten zu definieren, die bestimmte Werte repräsentieren Zum Beispiel unser Optionsmenü,
oder wir könnten normale, einfache Itmare-Höllenfehler haben Das ist zum
Programmieren zu verwenden , um unseren Code
etwas übersichtlicher zu machen , als
wenn wir zum Beispiel
einen Haufen Pollen,
ein paar Zweige haben , Dinge ein- und
ausschalten oder Zeichenketten
oder so Lass uns weitermachen. Bringen wir diese Liste zu unserem
Blueprinting-M-Generator, weil wir
sie sehr brauchen Coy hätte es
Richtung nennen sollen. E-Richtung. Ich werde
eine neue Variable erstellen. Ich nenne es. Erektionen,
nur Anweisungen Nun, wir werden es hier nicht leicht
finden. Also ich gehe zu MS, es gibt
viele Aktionen vom Typ Pset. Jetzt gibt es uns die Variable, die
wir erstellt haben, e directions, die die Liste von
Nordosten, Süden und Westen enthält Ich werde einen
einzigen Typ von ibru von A ändern, ich kompiliere und lasse mir etwas
zeigen Nun, wie Sie sehen können, werden wir es
tatsächlich mitbringen,
wir können es an den Details sehen Es gibt ein Drop-down-Menü mit
unseren Optionen für Nordosten und
Südwest, und eine
davon ist,
den ausgewählten Wert beizubehalten Aber selbst wenn es all diese Werte
gespeichert hat, ist einer dieser Werte
derjenige, zu dem er hinzugefügt wurde Wenn ich die Anweisungen
festlegen werde, wird das eine
dieser Optionen sein. Eigentlich Richtung, kein guter Name für diese Variable, weil
wir
diese Variable verwenden werden, um unseren Austrittspunkt von
unserem erzeugten Akteur zu definieren unseren Austrittspunkt von
unserem erzeugten Akteur B: Was
wir jetzt tun müssen, ist herauszufinden , wo unsere nächste
Figur erscheinen wird Also werde ich
den Namen in Last Exit ändern. Oh ja. Das ist unsere
letzte Exit-Variable. Wo sind wir zuletzt ausgestiegen? Oh, geh zum Kompilieren, Dave. Und jetzt machen wir
einen zufälligen Ausgang. Jetzt gehen wir zur
Systemwiederholung. Es ist keine schlechte Technik, aber auch die beste. Wir werden Make Array nehmen. Wenn ich das hier wegziehen würde, könnte
ich make array nicht bekommen weil das
kontextsensitiv ist War ich nicht. Ich tippe M-Array ,
es macht dasselbe. Aber wir haben ein
Array mit einem Platzhalter als Variable erstellt. Also werde ich
auch kontextsensitiv werden, zum Beispiel von Ray eine Kopie
bekommen und das hier
verbinden. Also habe ich den Platzhalter
in eine Art unserer Meration umgewandelt. Jetzt haben wir
dieses Array hier, um das Get or Up zu löschen Von hier
an gehe ich zurück und verbinde das
hier, lösche das hier. Ich werde unsere Stecknadeln hinzufügen
und es nach Westen schaffen. Aber das sind kleine
Tricks für mich, weil ich nicht
ein Array mit
allen Richtungen erstellen muss und das Array, das ich erstellt habe, nach dem Zufallsprinzip auswählen muss. Ich erstelle nur ein
temporäres Array, das Müll gesammelt
wird. Jetzt
ist diese Carbach-Sammlung auch eine große Sache. Es gibt viele Erklärungen. Wir werden nicht darauf eingehen. Oh, ich habe ein Array erstellt
, das nicht in einer Variablen
gespeichert wird und Speicherplatz beansprucht, was Fahrlässigkeit
wäre, denn nur ein Strahl von
R-Aufzählungswerten ist Aber wie dem auch sei, ich
wollte nur zeigen wie wir Knoten manipulieren
und vom
Platzhalter zu unserer eigenen Variablen gelangen können Knoten manipulieren
und vom
Platzhalter zu unserer eigenen Variablen gelangen Nun, das macht
eine zufällige Auswahl aus diesem Dom-Element und macht
es zu unserer Variablen Ruft es zu unserem letzten Ausgang auf. Wenn das läuft, haben
wir beschlossen, dass unser letzter Ausgang dieser
sein wird. Wir können das tatsächlich mit einer Print-Zeichenfolge demonstrieren
, ich verbinde diesen Wert hier. Das wird uns eigentlich nichts
zeigen. Es zeigt uns nichts, weil wir erste Kachel des
Telefons nicht angeschlossen
haben. Ich werde das hier verbinden. Kompilieren. Ich gehe zur Pre. Wie wir sehen können, drücke ich erneut auf
Play und Start, noth, drücke und
starte. Wieder nach Westen. A Es ist Rundo. Ein Grund, warum du
einfach nach Westen und Süden gefahren bist. Okay. Wir haben einen Norden.
Ja, es funktioniert. Wird zufällig ausgewählt, dreimal. Ich denke, das ist ein
netter Ausgangspunkt für diesen. Wir fahren mit dem nächsten
fort, indem den Austrittspunkt
definieren, nicht den Austrittspunkt,
den Einstiegspunkt, was wir
auch in einigen Regeln sein werden .
Das war's für diesen Auf Wiedersehen.
11. Finden von benachbarten Kacheln: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon
Action-Rollenspiel zur Erstellung von Action-Rollenspielen Auf dem vorherigen haben wir den letzten Ausgang IO Blue
erstellt,
und wir haben die
Aufzählung erstellt, die wir Und erklärte ein paar Dinge
über Aufzählungen. Wir beweisen auch, dass wir
durch den Mar
A-Cheat hier einen zufälligen Punkt
bekommen , und das brauchen wir momentan
nicht,
also machen mit
dem entgegengesetzten Ausgang weiter Jetzt können wir es uns einfach
machen und keinen zufälligen, entgegengesetzten
Ausgang haben und einfach überprüfen, ob all diese beiden Variablen niemals identisch
sind Anderer Scheck, das ist nein.
Was wir tun können, ist einfach das Gegenteil von dem zu
bekommen
, was unser Ausgang ist. Zum Beispiel malen. Wenn dies unsere Box ist und
wir von oben ausgehen, sollte
das Intro von unten sein Wenn wir aus dem Osten kommen, sollte das Intro
im Ich denke, das ist eine einfache Regel, und sie macht es uns momentan ein
bisschen einfacher Wir werden
später einige Prüfungen erstellen, sodass eine Variable nie
mit einer anderen Variablen geliefert wird. Aber lassen Sie uns vorerst
mit dem weitermachen, was wir machen. Nun, um das zu tun. Wir brauchen eine Methode, um die Nachbarn zu
finden, die benachbarten Zellen, wie auch immer
Sie sie nennen wollen Was ist
im Grunde unsere ersten, unsere ersten Koordinaten, wie
unsere Koordinaten sind
Null, Null, Null, X, Null, Y. Was wären die
Nachbarn auf einem Kreuz? Weil wir
mit einem Kreuz bauen. Das ist auch eine Information
über unseren Dungeon, wie er den Dungeon
Creator ausmacht wie er den Dungeon
Creator ausmacht. Lass uns wieder malen
gehen Wie Sie sehen können, habe ich Pfeile auf den
Nordost-Südwest gelegt. Wir haben keine Pfeile im
Nordwesten oder Nordosten, oder das würde einen
anderen Gebäudetyp erfordern. Aber für uns werden wir jetzt die Grundzüge machen,
nur Nordost-Südwest
zu haben , und mit dieser Logik
weitermachen. Nun wollen wir die Nachbarn
dieser aktuellen Koordinaten ermitteln. Wir werden eine
weitere Funktion benötigen. Es wird wieder eine
reine Funktion sein weil es eine
mathematische Berechnung ist. Wir werden
eine neue Funktion erstellen. Wir werden es darauf
Wind Cross Base nennen. Das ist die Schreibweise
für angrenzend. Gesendet. Wie dem auch sei, es spielt keine Rolle. Wenn Sie immer wieder
einen Rechtschreibfehler machen, ob es der ständige
Rechtschreibfehler ist, das nicht wirklich wichtig, weil
Sie Ihre Funktion finden können. Aber Rechtschreibung ist
ziemlich wichtig. Geben wir nun diese Funktion ein. Eigentlich ist es offen. Nun, was wir brauchen werden
, ist ein Input. Wir werden eine
Eingabe von Koordinaten benötigen. Ich gehe zu den Eingaben und
wähle einen In-Punkt aus. Und ich werde das DS nennen. Wie gesagt, ds,
der In-Punkt ist ein Zwei-D-Vektor. Das heißt, er hat ein X und
ein Y. Er hat kein Z. So wie ich es
mit der Transformation machen könnte. Ich kann es also mit Kabeln machen, aber ich möchte Split nicht verwenden,
denn wenn ich Split verwende, sieht
es so aus,
und ich
muss es einfach von
hier wegziehen Es wird sowieso ein Chaos sein. Also werde ich die
beiden neu kombinieren , was ich tun werde, ist, ich werde
das hierher ziehen und
Break in Point eingeben Break in Point Jetzt ist es ein
bisschen klarer, was am Ende nicht so sein
wird Denn was wir tun müssen, ist, dass wir manuell eine zu den oberen
Koordinaten
hinzufügen oder eine subtrahieren
müssen den oberen
Koordinaten
hinzufügen oder eine subtrahieren Und machen Sie dasselbe für Y. So erhalten wir unsere
Nord-Südost-West-Koordinaten Weil wir
definieren werden, dass unser Norden der Plus-Sinus von x
ist. Süd ist unser Minus-Minus
in der Wortrichtung X, und Essen ist die
positive Richtung auf und wir sind die negative
Richtung auf Y. Oh. Jetzt habe ich die Werte
manuell erfasst
und hinzugefügt. Aber ich muss die Punkte klarstellen. Aber ich werde so machen,
wie ich das gemacht habe, einen Strahl zu machen. Ich kann es tatsächlich auf den Punkt bringen. Ich kann diesen Knoten hier
drüben haben , der einen
weiteren Punkt erzeugt. Die meisten Dinge können vorübergehend auf diese Weise
erstellt werden. Jetzt brauche ich das viermal. Jetzt verbinden wir
alles, alles. Lass uns hierher gehen, geht hierher. Wir werden gezwungen sein, ein bisschen zu
spagetifizieren. Ich ziehe vom
Y hier auf 0x0y und vom Y hier
auf dieses Nully, und ich werde hier
dasselbe mit x machen,
und es heißt sageify und Kurz gesagt bedeutet das, dass wir einen variablen neuen
Endpunkt mit
der aktuellen Position
plus eins bis x oder plus zwei x plus ein y und plus
minus ein y
und plus minus ein y
erstellen der aktuellen Position
plus eins bis x oder plus zwei x plus ein y und plus . Wir haben eine Kreuzposition um unsere Nachbarn
von unserem aktuellen Punkt aus zu finden. Jetzt mache ich wie zuvor
einen Strahl und füge Stecknadeln hinzu. Ich werde das
hier und hier das hier verbinden und auf
das nebenstehende Weinkreuz klicken und eine Ausgabe erstellen,
die ein Array sein wird, und
es
j nennen es . Zuletzt müssen
wir eine Verbindung zum Rückknoten herstellen
, dem Array, das wir gerade zu einem benachbarten Array
gemacht haben. nun, bevor wir weitermachen, Lassen Sie uns nun, bevor wir weitermachen, demonstrieren,
was wir erstellt haben. Gehen wir also in die
Funktion mit dem ersten Stil und setzen wir wieder eine Rt-Bar ein. Lassen Sie uns diese
Funktion hierher bringen. Ich habe sie nicht als reine Funktion ausgewählt, ich wähle sie jetzt einfach aus und wähle die Funktion an einer
beliebigen Stelle aus. In der Detailansicht können Sie
diese reine Option sehen . Ich
werde das auswählen Für Koordinaten kann ich jetzt
die aktuellen Betten verwenden. Und was wir sofort
sehen können, ist, dass wir diese Variable nicht
mit dieser verbinden können , weil es sich bei
dieser um eine Box handelt. Hat das Symbol einer Box, das ist unser Array-Symbol, wobei dieses
nur ein Stecknadelsymbol hat, diesen abgerundeten Punkt hier. Oh, wie können wir alles zeigen, alle
Elementlisten dieses Arrays. Was wir verwenden können, ist eine
sogenannte For-Schleife für jede. Jetzt gibt es
auch einen Foreloop. Bringen wir es mit Kein einziges Beispiel. Also, was ist der Unterschied
zwischen diesen beiden? Lassen Sie uns zunächst
erklären, was sie tun. Was sie tun, basiert
auf einem Index, wir selbst setzen oder den
wir aus einem Array abrufen. Das ist eine Aktion
, die wir programmieren können und die als Body Loop bezeichnet wird. Und wenn es fertig ist,
verkabelt es den fertigen Pin. Wie Sie
sehen können, haben diese auch auf dieser Seite
einige andere Pins. Dieser gibt uns
zum Beispiel nur einen Index, wenn ich
den Index 55-55 setze Das heißt, es wird indexiert Der erste Index, den
wir angeben, wenn
der Bodyloop ausgelöst wird, wäre 55. Und der Grund, warum wir wissen, dass es
55 ist, weil wenn wir das abdecken, heißt
es, dass für
jeden Index vom Startindex bis einschließlich Stoppindex eine
Body-Loop ausgeführt jeden Index vom Startindex bis einschließlich Stoppindex eine
Body-Loop Das ist das Schlüsselwort, inklusive. Das bedeutet, dass es 55 laufen wird, und es wird auch 65 laufen. Nun, dieser gibt
uns ein Array-Element. Wenn wir also für
jede Schleife aus einem Array verwenden, bekommen
wir tatsächlich auch das
entsprechende Element in
den Index. Nein, lassen Sie uns das
vor der Druckzeichenfolge verbinden. Und jetzt wollen wir auf dieses A-Element
hinweisen. Ich werde das hier verbinden. Ich werde diese Schleife löschen. Und unsere Koordinaten sind
momentan Null und Null, Null auf Y und
Null X. Es sollte
uns
also eine Plus-Eins auf X,
eine Minus-Eins auf X,
eine Plus-Eins auf Y
und eine Minus-Eins auf Y geben eine Minus-Eins auf X, , während das entsprechende
Gegenteil bei Null
bleibt. Ich gehe kompilieren.
Ich bin auf dem Overp Es tut mir leid. Gehe auf M-Level. Gehen Sie, um alles zu speichern
und drücken Sie Play. Jetzt wie im Spiel, wir können
die Koordinaten hier oben sehen. Wenn es zu schnell ist, können wir einige zusätzliche Optionen
für die Druckzeichenfolge
öffnen, die nur eine Dauer,
einige andere Dinge oder einen Fortschritt hat . Wir, zieh das an. Wenn ich zum Beispiel jetzt, wird
es länger bleiben. Wenn wir es nun
mit verschiedenen Werten testen, rufen
wir
statt der aktuellen Colts den MA-Generator auf, ich teile das auf Wählen Sie, sagen wir, wir
beginnen bei eins und eins. Ich sollte korrekt aktualisieren,
da es die Werte gemacht hat. Noch eine Sache, bevor wir für diese Lektion
schließen. Ich denke, wir sollten neben der Reihenfolge
, aus der sie kommen, eine Erklärung platzieren . Wie gesagt, Nord ist Plus auf X und Süd ist Minus auf
X und West Minus auf Y, und Plus ist Ost. Ich gehe zu der Veranstaltung. Ich kann
es tatsächlich als Tooltip verwenden, aber ich bevorzuge es beim Namen Ich habe es hier. Benennen Sie es mit F
zwei im Weltraum und North North East West um. Ich kann das haben und
mir erklären , in welcher Reihenfolge
diese kommen. Nun, ich denke, das
reicht für diesen. Ich sehe
dich beim nächsten Mal. Auf Wiedersehen.
12. Koordinaten-Mapping und Kachel-Spawning: Hallo und willkommen zurück zum
Game Design-Workshop
und zum Real Engine Five-Kurs zur Erstellung von Procedural Dangon
Action RBC Zuvor hatten wir
unsere Funktion „Fine Cross“ eingerichtet , die an
Nord-Südost-West angrenzt Und lassen Sie uns
das tatsächlich neu kombinieren. Wir haben die Eingabe
einer Int-Punkt-Eingabe, und wir exportieren, wir haben eine Ausgabe mit einem
Array von T-Punkten Jetzt demonstrieren wir mit einer Vorschleife
die
Fähigkeit, jede beliebige Koordinate hinzuzufügen uns die Nachbarn,
die Quernachbarn, zu
geben Also lass uns das hier verbinden
und das auch lassen. Jetzt wollen wir
das Gegenteil von Last Exit erreichen. Um das zu tun, werden
wir diese Liste hier verwenden. Ich werde mir eine Kopie holen. Der Unterschied
zwischen einer Kopie und
einer Referenz besteht darin, dass ich, wenn
ich eine Kopie erhalte, im Grunde genommen ein Duplikat des eigentlichen Elements erhalte. Was aus der Referenz stammt, kann
ich tatsächlich die Quelle,
die tatsächliche Entität des Arrays,
manipulieren . Was wir also brauchen, ist eine Kopie. Und jetzt werden
wir einen neuen Knoten verwenden. Wir werden einen ausgewählten
Knoten verwenden. Lass es mich demonstrieren. Wir geben Select ein. Wie Sie sehen können, haben wir hier
diesen Knoten
, der uns einige Optionen
und einen Index mit einem Platzhalter und einem Rückgabewert bietet . Auf der Grundlage dieses
Index-Jokerzeichens handelt es sich nun um einen
alten Platzhalter, weil er sich in viele Typen ändern
kann Wir werden tatsächlich das AM
benutzen, das wir haben. Zum Beispiel werde ich hier den letzten Ausgang
verbinden. Ich habe automatisch konvertiert. Dieser
Rückgabewert ist nun eine Ganzzahl , weil wir eine
Auswahl aus einer Ganzzahl angefordert haben. Wenn ich nur Select anfordern
wollte, können
Sie sehen, dass
alles eine Y-Karte ist. Wir können diesen Knoten also
in vielen verschiedenen Fällen verwenden. Nein, wir machen einen Nord zuerst Eins,
Null, weil Arrays
mit Null nummeriert
sind , also eins, zwei,
drei usw. Oh, Nord ist Null,
Ost wäre zwei, Süd wäre eins und West wäre drei Aber basierend auf dem Index, der
eingeht, kommt es nach Süden, wählt
es zwei, wenn es ein Norden ist, wählt es den
entsprechenden. Aber das Problem dabei
ist, dass wir Norden auswählen,
wenn Norden kommt . Wenn der Osten kommt, wählen
wir den Osten. Wir wollen diese Zahlen
umkehren. Aber wenn es nach Norden kommt, wollen
wir nach Süden, aber wir
werden uns hier für einen entscheiden Wenn es Süden ist, wollen wir Norden, also werden wir hier Null
wählen. Wenn es Osten ist, wollen wir Westen, und wo es
Westen ist, wollen wir Osten. Jetzt können wir das also
im Grunde auf die Einnahmen,
die wir mit diesem Array erzielen, umkehren wir mit diesem Array erzielen Um nun endlich unser Ziel bei
all diesen Aktionen zu erreichen , müssten dem Programm
sagen, dass diese Box diese
Koordinaten auf unserer Karte haben sollte, unsere Zweidimensionalität
sollte den Anfang haben Nun, nicht der Startblock, sondern der Intro-Block, nennen wir ihn
zum Beispiel Intro Lassen Sie uns tatsächlich
einen Plan dafür erstellen. Gehen wir zum Blueprint-Ordner. Wir klicken mit der rechten Maustaste. Wir werden
eine Blueprint-Klasse auswählen. Ich werde Schauspieler werden. Nennen wir es BP-Intro
oder Ballon oder was auch immer. Wir werden einen Ballon benutzen. Deshalb habe ich Ballon gesagt. Nein. Da wir wollen, dass Intra
dort spawnen soll, sollten
wir dem Labyrinth sagen, dass es leer bleiben soll Diese Koordinaten. Also, was mache
ich, wenn du zu speziellen Fliesen
gehst? Ups. Ich habe hier schon
einen Fehler. Ich schätze, das ist passiert. Es sollte keine Elemente enthalten.
Ich werde das löschen. Spezielle Kacheln
sollten aus Null-Elementen bestehen. Ich vermute, das
ist passiert, weil ich das Element von hier aus
erstellt habe das Element von hier aus
erstellt Ich habe diese Variable dupliziert, also hat
sie sie vielleicht beibehalten oder
ich habe sie versehentlich hinzugefügt
oder für eine Also müssen spezielle Felder leer sein. Jetzt kopiere ich
diese speziellen Kacheln, füge sie ein und benenne sie in stt um.
Aber wir werden wieder
eine andere Liste haben, wir werden sie mit Kontrolle
hierher bringen und
AD auswählen und diese
Variable von get hinzufügen Nun, wir werden
diese Liste verwenden, wenn wir das Labyrinth
bauen, um einige Regeln
zu erstellen, die
besagen, dass wir
hier nichts platzieren sollten, weil wir vielleicht selbst einige
Dinge dort platzieren möchten, wie wir es jetzt tun werden. Nehmen wir an, wir möchten
diese Intro-Kachel „Stelle diesen Platz platzieren Ich werde
wieder diesen eigenen Schauspieler verwenden , weil so die Schauspieler
auf der Welt reagieren Und ich wähle
den in O aus. Es ist ein R. Oh, lass uns
zu diesem Bauplan übergehen Ich bin dazu übergegangen, dass
ich diese Brauen ausgewählt habe,
was bedeutet, zu einem Set zu blättern, eine Lupe hier drüben, und es führt mich
zum Blueprint, ob ich in einem anderen Ordner
wäre,
das ist das, bereit Jetzt
doppelklicke ich darauf, füge ein statisches Netz hinzu
und wähle für das hier automatisch
gewählte
statische Netz eine und wähle für das hier automatisch
gewählte
statische Netz hier automatisch
gewählte Wir haben eine Röhre. SM-Röhre. Okay, lassen wir
diese Röhre vorerst stehen. Also wissen wir, wo unser Intra ist. Finden Sie jetzt den Standort. Wie gesagt, wenn ich
das aufteile, kombiniere die Struktur neu. Ja. Sie können auch
die Vektoren selbst aufteilen. Aber was wir wollten, war eine
Rekombination, um zu zeigen, dass es sich
um eine Transformation handelt Wenn ich es jetzt aufteile, kann ich die Position und die Rotation
sehen. Ich habe meine lokalen Koordinaten oder ein zweidimensionales Array. Aber was würde das in Koordinaten
in der Welt bedeuten? Weil dafür
Wortkoordinaten benötigt werden, kann es nicht auf der
Grundlage von eins und zwei, minus eins und minus zwei,
wo auf der Welt, Aber dafür werden
wir eine weitere Funktion erstellen, eine
weitere reine Funktion, um ihr Koordinaten geben zu
können, und sie gibt uns eine Wortposition Oh. Gehen wir zu unseren Funktionen, drücken erneut auf dieses Plus-Symbol und fügen eine neue Funktion hinzu. Nennen wir diesen Punkt Standort. Ich denke, das ist genug. Wie gesagt, wir brauchen hier
noch einen Input. Es wird die
Punktverordnung in diesen Löchern bekommen. Und es wird die Ausgabe
eines Vektors haben. Wir haben ein W-Leerzeichen von x, y und z. Sagen wir so. Wäre es nicht toll,
wenn ich
das hier verbinden könnte und du einfach arbeiten
könntest. Aber was wir tun müssen,
ist das kaputt zu machen. Erinnerst du dich, als wir
in Paint über die Stapelgröße gesprochen haben, zum
Beispiel, wie groß unser
eigentliches Labyrinth ist? Nun, wir
müssen diese Variable erstellen. Ich werde hier
unsere Variable drücken, ich werde
ihren Typ Integer ändern. Ich werde es Ile is nennen. Weil ich die
Größe der R-Kacheln kenne, diese 600, werde ich 100 eingeben. Das ist der Standardwert, aber wir können ihn als Instanz
editierbar machen und ihn beim Spawn verfügbar Wir können es also ändern. Wir
haben verschiedene Kacheln, wenn wir das Labyrinth spawnen, gehen
wir zum Hauptmenü
und dann zum Diagramm, Lass uns das aktualisieren. Sammle es und nichts
passiert, weil ich diesen Entwurf nicht
kompiliert habe Und jetzt haben wir die Größe der Kacheln. Wir können es
selbst anpassen , wenn wir verschiedene
Arten von Kacheln haben, 400 mal 400 oder wie
viele wir auch immer sterben. Ich kompiliere und speichere erneut und kehre zu unserer Ma zurück. Jetzt haben wir diese
Kachelgröße, dass sie hundert ist, und wenn wir das mit x multiplizieren, multiplizieren wir es mit y. Wir werden zum Vektor. Eigentlich, weil mit Vektoren. Nun, das ist Vektoren sind Floats. Wenn ich also einfach versuche, daraus
einen Vektor zu machen, wird das nicht passieren. Jetzt kann ich immer zwei Fließkommazahlen ändern
und es wird
ein Float erzeugt. Aber heutzutage gibt uns Real
die Möglichkeit, zu diesem Pin zu gehen, rechten Maustaste zu klicken und
ihn in alles umzuwandeln, was ich will. Ich werde einen Festwagen wählen. Einfache Genauigkeit
spielt für uns keine Rolle Deshalb vielleicht ein größeres
Verfahren für uns, weil wir ganze
Zahlen multiplizieren Und nun ja, um ehrlich zu sein, weil es den Standort wert ist und wir vielleicht gerade dabei sind, das Labyrinth zu
sprengen. Ich schwebe. Macht spielt keine
Rolle oder spielt keine Rolle. Oh, von hier aus kann
ich jetzt Tor machen. Und das ist mein X-Wert und das ist mein Y-Wert. Und für den Z-Wert füge
ich ihn einfach zur
Tor-Asi hinzu. Füllen
ist wichtig. Ja. Also, da das Null ist, wird die Z-Achse
von unserer Position des Schauspielers aus
hinzugefügt . Und der Grund, warum wir
das hinzufügen , ist, dass dies unser Startpunkt
ist. Und wenn wir
später die nächsten Labyrinthe spawnen werden, wie oben und sogar mit einem anderen Startpunkt als 002000,
sagen wir Es könnte 500 mal 600
X und ein zufälliges Z sein. Deshalb müssen wir den Standort
des Schauspielers so hinzufügen Bei den nächsten Labyrinthen, die gebaut
werden, wird
berücksichtigt, dass
ihre Position
relativ zum Standort des Schauspielers und zum Standort Labyrinthe, dem Standort
des
Labyrinth-Erstellers, ist Standort des Schauspielers und zum Standort Labyrinthe, dem Standort
des
Labyrinth-Erstellers, Labyrinth-Erstellers Oh, ich werde das hier hinstellen. Wir haben diesen Plan nicht
viel spezifiziert. Ich werde kompilieren,
ich werde speichern und ich werde
zu diesem ersten Stil zurückkehren, und ich werde
Feinstation bringen, es sauber machen,
also geht es wieder,
und ich werde hier und das hier
verbinden Wenn ich jetzt spiele, sollte es erscheinen. Wir können es tatsächlich sehen , weil wir den
Ladebildschirm haben Gehen wir also zum
Ladebildschirm. Gehen wir zum Cavas-Panel
und setzen die Sichtbarkeit auf Versteckt. Kompilieren und speichern. Es
ist kein geladener Bildschirm vorhanden. Aber ich schätze, wir sehen es nicht, weil es kein Licht
gibt Lass uns das reparieren. Lasst uns Licht auf unser Niveau bringen. Wir gehen
zu der Box hier oben , die schnell
zum Projekt hinzugefügt wird. Wir gehen zu den Lichtern und fügen das gerichtete Licht hinzu. Lass uns nochmal spielen. Ich kann wirklich keine Kiste sehen, weil unsere Kamera nicht
der richtige Ort war. Oh, ich schätze,
das ist unser Intro. Also irgendwo hier in der Nähe
ist unser Labyrinth-Generator. Also, ich denke, das ist ein guter
Haltepunkt für diesen. Und beim nächsten sollten
wir damit beginnen, unsere Kachel so zu
gestalten, dass wir unsere erste Kachel sehen
können. Auf Wiedersehen.
13. Visualisieren des Labyrinths mit Pfeilen: Hallo und willkommen zum
Game Design Workshop und dem Kurs zur prozeduraler
Dungeon-Action-RPGs
mit
Real Engine Five Dungeon-Action-RPGs Zuvor hatten wir die Funktion zur
Ortung feiner Kacheln entwickelt, die
anhand von Koordinaten
und anhand unserer Kachelgröße,
der Position unserer geraden
Koordinaten und dem Wort Position eine Feinabstimmung und anhand unserer Kachelgröße,
der Position unserer geraden
Koordinaten und dem Wort Position eine Feinabstimmung Oh, wir haben das zu unserem Code hinzugefügt und auch
unseren Intro-Block Das sollte eigentlich ein bisschen
höher erscheinen, also füge ich hier einfach etwas hinzu
und mache eine Vektor-Add-Mathematik Ich werde zu den
Zaxen 300 hinzufügen. Ich werde das hier verbinden. Jetzt wird es also etwas
höher erscheinen als der
Rest unseres Labyrinths Nun noch ein Detail, bevor
wir anfangen, die Kacheln Wie gesagt, wir müssen das zu den Aktoren hinzufügen,
um das Array zu zerstören Ich werde die
Schauspieler dazu bringen, sie zu zerstören. Ich werde einfach auf Hinzufügen drücken. Und ich werde auch
diesen Schauspieler hinzufügen, was das Ergebnis des
Spawning-Schauspielers PP-Intro ist Lassen Sie uns jetzt kompilieren und speichern. Lass uns unseren Stapel öffnen. Wenn wir
ihn jetzt
wieder das erste Mal öffnen, öffnet sich der Bauplan so Wir müssen nur den
vollständigen Blueprint-Editor öffnen. Nochmals, falls sich
jemand wundert,
dies sind die
Standardwerte in diesem Blueprint Sie finden sie auch in den Klassenstandardwerten
hier im Detail Ich werde das hier anschließen. Und lass uns anfangen. Zuerst werden
wir
einige Dachgitter und einige Pfeile an unserer Komponentenwanne Um sie zu sehen,
gehen wir zu unserem Viewport. Und lassen Sie uns auf „
Statisches Netz hinzufügen“ klicken. Wir fügen ein statisches Netz hinzu.
Lassen Sie uns dieses Mesh benennen. Vier. Und das ist eine statische
Netzkomponente. Es muss also genau hier eine statische Mesh-Entität zu diesen
Eigenschaften hinzugefügt werden, denn das
bedeutet Blueprint
, dass Sie ein statisches Mesh haben Es steht nicht im
Blueprint, welches statische Mesh. Aber wir gehen hier auf
die Detailansicht und gehen dann zur statischen Mesh-Eigenschaft
und wählen unser Stockwerk Also, gibt es zwei Stockwerke, die 400 mal 400, und die schlichte Etage. Das ist ein Stockwerk von 600 mal 600, also werden wir dieses benutzen. Nun, wie gesagt, unser Norden ist die
positive Achse auf X
und unser Westen, unser Osten ist
die positive Achse auf Y. Um die Dinge für uns etwas
visueller zu machen, damit wir erkennen
können, was es war, wenn wir sie uns einfach
auf der Karte ansehen. Wir werden vier Pfeile hinzufügen. Füge zuerst hinzu. Dann werde ich kopieren und einfügen. 43 mal. Oh, ich werde auch auf Pfeil
Nord, Pfeil
Süd und Pfeil West
umbenennen . M. Jetzt. Da diese Pfeile klein sind, sollten wir sie auch vergrößern. Ich wähle
sie alle aus und gehe zur Skalierung und
erhöhe sie im Grunde um einen
Faktor zwei. Jetzt sind sie ein bisschen größer. Lassen Sie uns sie
entsprechend rotieren. Ich drücke den Rotator, also E
, drehe
den zweiten Pfeil,
den Ostpfeil, und drehe
jetzt den Südpfeil Den Westpfeil drehen. Das ist alles in Ordnung
und gut. Wir haben vier Pfeile, die die Richtung
angeben, aber wir haben keine
speziellen Informationen darüber, was was ist. Wenn ich das sehe,
ohne das Werkzeug
ausgewählt zu haben oder so , kann
ich nicht sagen, ob
dieser Norden oder Westen ist. Aber lassen Sie uns zu jedem Pfeil etwas
Text hinzufügen. Text, Pfeiltext,
Auswahl des Pfeils. Den letzten
Pfeil und Text auswählen. Warum wähle ich sie aus? Denn wenn ich sie auswähle, sie automatisch als untergeordnetes Element
der ausgewählten Komponente hinzugefügt. Wenn ich den Stamm ausgewählt hätte, würden
ihm die
Textkomponenten hinzugefügt, die dem Stamm übergeordnet Jetzt sind sie dem Pfeil
zugeordnet. Wenn ich also die
Pfeilrichtung ändere, ändert sich auch der Text. Jetzt werde ich die Texte
etwas weiter nach vorne
bringen . Wie Sie sehen können, mit 0,5
hinzugefügt,
weil die Pfeile mit E von zwei
gerendert unser Text automatisch mit 0,5
hinzugefügt,
weil die Pfeile mit E von zwei
gerendert werden. Es wird also im Grunde genommen um eins skaliert wenn ich es außerhalb des
übergeordneten Pfeils setze Ich habe bis zur
Wurzel des Bauplans erzogen,
nicht die Wurzel gezogen, sondern nur angefasst Sie können sehen, dass es
wieder Eins, Eins, Eins ist, aber der Text hat die gleiche Größe
beibehalten Wir gehen zurück und setzen es auf
den Pfeil, der nach Norden zeigte.
Ich sehe, dass er wieder
0,5 0,5 0,5 hat, aber er hat die Größe vergrößert. Das liegt daran, dass der Pfeil
selbst auf zwei skaliert ist. Es war etwa vier,
es wären
zum Beispiel 0,25 . Lassen Sie uns das im Anhang
demonstrieren Auch hier habe ich es zu einer Wurzel gemacht. Auf dem Boden. Das ist der Grund. Hier, der Pfeil oder ich berühre
den Text noch einmal. Sie können sehen, dass es 0,5 ist. Wenn
ich jetzt den Pfeil auf zwei zurückstelle, bleibt
der Text 0,25, weil
ich jetzt skaliere, während ich das als Kind gemacht
habe Die Engine denkt also, dass ich denke, dass all diese automatische Mathematik gleichzeitig
passiert Ich werde es wieder rückgängig machen. Eigentlich musste ich die Eltern nicht
aufheben. gehe einfach zu eins, eins, A. Ich werde
es ein bisschen rotieren Drehe das Ganze entgegengesetzt, also
mache ich das auch. Ich werde bei
den Details den Text
von Text auf n für Norden ändern . Hier. Jetzt sind unsere Pfeile auf
Position Null mit dieser Null. Vielleicht ist das nicht die beste Option , weil sie
ein bisschen höher
als der Boden sein sollten . Im Moment sind sie
genau auf dem Boden. Also werde ich den Standort wechseln. Ich kontrolliere, habe
jeden von ihnen ausgewählt. Ich werde den
Standort auf Netz ändern. Oder 100 oder 50, nur
ein bisschen mehr. 90 k. Nun, für diejenigen, die neu sind:
Die Art und Weise, wie ich mich hierher bewege, ist die
Art und Weise, wie ich den Editor verschiebe. Das bedeutet, indem Sie die
rechte Maustaste gedrückt halten und
AWS T&E verwenden , um sich zu bewegen Oh. Jetzt, wo wir n haben, hier nicht ganz
zentriert. Beweg es. Wenn ich es verschiebe, kann
ich es nicht mit
dem aktuellen Thema zum Rasterabstand zentrieren. Aber weil es zehn ist, wenn ich es auf fünf setze, es
vielleicht in der Mitte okay. Ja. Es ist Center Better Five. Aber wenn es nicht einmal auf fünf
zentriert wäre, könnte ich es
natürlich auf eins
setzen Ich drehe es wieder ein und jetzt könnte
ich es einfach ausschalten
und das Schnappen wäre Das Gleiche können wir mit der
Drehung mit den Graden machen, und dasselbe können
wir mit der
Skalierung machen , die durch
diese Optionen hier gesteuert wird Lassen Sie uns nun mehr Textnra hinzufügen, lassen Sie uns diesen
Textrander tatsächlich einen Norden nennen Ich gehe zum anderen Textender. Ich werde die Skala auf
eins einstellen. Denken Sie daran, das gesperrt zu haben, sodass alles auf eins skaliert wird. Wenn Sie das entsperrt haben, haben
Sie eine Skalierungskomponente, und seien Sie vorsichtig, wenn
diese überhaupt skaliert wird Ich sperre sie, sie wird sie entsprechend
skalieren Sperren Sie es erneut. Satz eins, 11. Schon wieder. Bringen wir es her. Lass es uns rotieren. Das weiß wirklich was. Das sollte so sein. Ich bringe es her. Ich ändere den Text auf West W. E. One. Okay. Lass uns den
Osten machen. Das war der. Siehst du, weil ich noch lange
rotiere, dreh es. Und das
ist tatsächlich der Ostpfeil. Also werde ich es auf
Transformation und Rotation
zurücksetzen und nochmal weitermachen. Ich setze es zurück, indem ich
hier auf den fetten Pfeil klicke, wenn du
etwas bewegst , und
dich frage, ob du es hier mit diesem Pfeil auf die
Standardeigenschaft
zurücksetzen möchtest es hier mit diesem Pfeil auf die
Standardeigenschaft
zurücksetzen Ich werde es so ausdrücken. Ich werde es so drehen,
es so, und wir werden weiter unten
nachlassen. W E von wechseln, um
wieder zu feuern, etwas mehr runter. Ich finde, sie sehen gut aus. Nun, beim Westpfeil, lassen Sie uns diesmal den richtigen
Pfeil machen. Ich werde den
Text woanders auf Ws setzen. Ich werde die
Rotation ändern. Korrekt. Es skaliert auf eins und lege es hier etwas
tiefer. Gut abheften, für
den letzten, South, Bring it down, S für den
Text, und entsprechend belassen. Stellen Sie die Skala natürlich auf eins und wir legen den Standort fest. Jetzt haben wir eine Richtung von Nordosten nach
Südwesten, um zu sehen, wo sich unsere möglichen Ein- und
Ausgänge befinden. Wenn wir zum Beispiel jetzt spielen
gehen, können
wir den Ladebildschirm sehen Ja. Also lass uns zu
unserem Ladebildschirm gehen, zu unserem Cavas-Panel gehen
und es verstecken, kompilieren und speichern, damit wir tatsächlich sehen können,
was wir bauen Wenn ich auf Play drücke, sieht die Kamera
nicht richtig aus. Aber wenn ich auswerfe, drücke zum Beispiel
Alt und S. Nicht zum Beispiel, das ist
die Abkürzung zum Auswerfen. Ich kann mich im Editor-Editor wieder
frei bewegen. Wir können den
Nordost-Südwest sehen, aber wir können die Pfeile nicht sehen. Der Grund dafür ist, dass es
eine Option für die Pfeile gibt. Wir werden es später zeigen. Es gibt also eine Option
für die Pfeile , um sie im Spiel zu verstecken. Nun, wie Sie sehen können, liegt
unser Ausgang wahrscheinlich im Norden, weil der gegenüberliegende
Süden unser Intro-Block ist Wie Sie sehen können, ist er
nicht genau zentriert, und der Grund dafür ist
, dass wir, wenn wir
zum Intro-Block gehen, zum Viewport gehen Sie können sehen, dass das Zentrum
tatsächlich diese Ecke hier drüben ist , nicht die Mitte des Quadrats Deshalb sieht es also aus.
Das brauchen wir nicht. Deshalb sieht es nicht zentriert
aus. Aber wenn es sich um einen Drehpunkt in der Mitte des
Tubos gehandelt
hätte, wäre er zentralisiert
gewesen Nun, ich denke, das ist
genug für diesen. Lassen Sie uns die Pfeile noch einmal
zeigen, die versteckte Spielvariable, gehen wir zum Viewport, zum
Ti-Port, nicht zum Labyrinth-Generator Wählen wir alle
Pfeile aus und gehen dann
zur Option „Details“ Ich habe gerade HID hier geschrieben, und ich werde
das ausschalten, wenn ich kompiliere und speichere. Handeln. Wir können jetzt die Pfeile sehen und
der Ausgang ist von Osten, also kommt unser Intro aus dem Westen Das war's für diesen
. Das nächste Mal
sehe ich dich. Auf Wiedersehen.
14. Hinzufügen von Schloss-ähnlichen Wänden: Hallo und willkommen zum Game Design Workshop
unter den
prozeduralen Aufrufen zur Erstellung von Dungeon-Action
Bz aus der Engine Five prozeduralen Aufrufen zur Erstellung von Dungeon-Action
Bz Zuvor haben wir mit der
Erstellung des Kachelpfeils begonnen. Wir haben einige Pfeile hinzugefügt,
wir haben Boden hinzugefügt
und wir haben etwas Text ,
um die
Richtung der Pfeile auf der
Grundlage unserer Koordinaten anzugeben . Oh. Wie wir die
Koordinaten im Grunde verwenden. Nein, jetzt. Lass uns noch ein paar Dinge
anfangen, damit es sich ein bisschen mehr
wie ein Dungeon anfühlt Wenn wir auf Play drücken, sieht
es komisch aus Boden in der Mitte des Himmels. Also lasst uns ein paar Extras hinzufügen, damit es mehr wie ein Dungeon aussieht Nein, was wir hinzufügen werden
, ist statisches Chaos. Sei über eins hinaus. Vier.
Wir haben also vier davon. Wir können sie zwei nennen, alle eins. Wand zwei. Und vier. Nun, da
ich HID geschrieben
hatte, wurden nur Optionen
angezeigt, die HID enthielten. Also lies das, damit ich alles sehen
kann. Und für das statische Netz für all das
wähle ich alles aus. Und da dies ein
gemeinsames Attribut ist, kann
ich es allen hinzufügen. Ich werde erneut auswählen und
diesmal die 400 mal 400. Und tatsächlich werde ich auch das Material
ändern. Ich muss das tun, indem ich
jeden von ihnen auswähle und
den Ziegelstein Ziegellehm B verwende . Ich habe keine Ahnung
, wie man das ausspricht Aber das ist es, was wir verwenden. Und ich werde
es für alles auswählen. Das Material auf
diesem Boden stammt aus
dem originalen
Starterpaket von Real Engine. Jetzt verschieben wir sie, um so etwas wie Wände zu
schaffen. Aber zuerst werde
ich
die Skala auf zwei ändern . Vielleicht ein bisschen länger 2,3, Höhe angeht, und ich
muss sie vorher entsperren. Danke. Jetzt kopiere ich
diesen Wert, kopiere ihn und
füge ihn in den Rest ein. Das ist eine weitere
Option, die wir haben. Wir können sogar
ganze Optionssätze kopieren, wie ich zum Beispiel die gesamte
Eigenschaftskategorie-Transformation kopieren kann , und wenn das andere
Objekt dasselbe hat, einfügen, und es hätte funktionieren
sollen. Auch hier die Pfahleigenschaften
in der Kategorie und die Grundeigenschaften
in der Kategorie Okay. Da hast du's. Funktioniert. Ist. Jetzt haben sie alle
die gleichen Eigenschaften. Nun, das Problem ist, dass,
weil das mit zwei
multipliziert wird , es ist 400 mal zwei, es entstehen 800 Stockwerke, nicht 600 Stockwerke, was für uns momentan kein großes
Problem ist weil wir den zusätzlichen Raum brauchen Wir werden sie vielleicht
an den Rändern platzieren. Vielleicht irre ich mich, vielleicht ist unsere
Größe nicht 600, sondern 800. Vielleicht wurde ich falsch informiert. Von den drei D-Leuten
über das Vermögen. Aber es ist in Ordnung. Wir können einfach unsere Kachelgröße auf 800
ändern. Lass uns weitermachen Wir können es dem Standardwert für die
Kachelgröße aus dem Labyrinth-Generator tun, mindestens 2800, oder wir hätten
es auch hier im Hauptmenü tun Im Moment müssen wir es auf jeden Fall
im Hauptmenü machen , weil der alte Standardwert ihn übertrieben
hätte,
weil er hier nicht
aktualisiert worden wäre Jetzt Datei speichern, vollständig speichern. Unsere Fliesen sind 800. Jetzt. Platzieren wir sie grob. Da. Sie müssen eine Box erstellen. Wenn wir
sie grob austauschen und sie
tatsächlich cool herstellen. Etwas niedriger, weil
man sieht auf
der gleichen
Höhe wie der Boden befinden, die Materialien sich überlappen können, und wir wollen nicht, dass
das passiert Als es niedriger ist. Ja,
das sieht gut aus. ist nicht wirklich wichtig.
Ja, es ist in Ordnung. Im Moment haben wir etwas
, das wie Wände aussieht. Ich werfe es wieder aus,
von einer Seite. Du hast etwas
, das wie Wände aussieht. Wenn wir die
Gegenstände darüber platzieren, wie Wände und so, müssen
wir uns möglicherweise an das
anpassen, was wir sehen Gehen wir zum Labyrinth-Generator und fügen die
BB-Kachel als Kachel hinzu, fügen
wir noch etwas hinzu Du wirst einen Text hinzufügen. Noch ein Text-Rendering.
Das wird es hier
oben platzieren und drehen,
schauen Sie in die Kamera. Oh, ich konnte es nicht rückgängig machen
, weil ich es gelassen habe. Und wenn du in einem beliebigen Editor
spielst, benötigen
Änderungen auch eine
bestimmte Kombination , um gespeichert zu werden.
Nun ja, eigentlich. Aber wenn du im Editor
spielst, nimm grundsätzlich keine Änderungen vor. Das ist eine der Regeln. kannst du. Wie ich schon sagte,
du kannst sparen. Wenn du ein Level hast
, das du spielen und auswerfen und etwas
bewegen
möchtest , kannst
du es speichern und du kannst es
tatsächlich speichern Es ist der Button k. Lassen Sie
mich das demonstrieren. Gehen wir zum Spiellevel. Wenn ich auf Play drücke,
werde ich sofort auswerfen. Ich möchte
zum Beispiel das nicht verschieben, weil es
durch unseren Bauplan erzeugt wurde, sondern ich möchte zum Beispiel
die Richtungsbeleuchtung verschieben die Lassen Sie uns nicht das
Richtungslicht nehmen, sagen wir,
es ist ein weiterer Schauspielertisch Ich möchte seinen Standort verschieben. Und vielleicht
auch um ein anderes Maß drehen. Wenn ich K drücke, indem ich es auswähle, siehst
du den sicheren Status von
K. Wenn ich die Wiedergabe beende, behält
es die Rotation und Position oder Skalierung bei
, die ich eingestellt habe. Setzen wir dies auf die Standardeinstellung zurück
und kehren wir
zu unserem Blueprint zurück Nun zurück zu unserem Text Mir wird das gefallen, es
ist tatsächlich veraltet Und was den Text angeht,
werden wir ihn
von woanders fühlen und
Shona vergrößert Und wir werden das
mit der Bildgröße von 26 machen, ich werde sie auf 30 setzen 40, 50, 50 sieht gut aus. Ich habe es hier irgendwo
platziert, weil es sich ausdrücken wird. Eigentlich werde
ich es hier drüben machen. Ich gehe zum
Bauskript. Jetzt. Ich spreche ein bisschen
über das Konstruktionsskript. Was es macht, ist
Dinge zu erschaffen und Informationen zu korrigieren, und es manipuliert den Bauplan im Grunde vor seinem eigenen Lass uns vielleicht gehen. Ich hole mir diesen neuen Text
, den ich nicht vom Namen bis zur
Dateinummer abgeglichen habe. Ich werde ihn kontrolliert
hierher bringen und ich werde den Text einstellen. Ich werde
das zuerst verbinden. Für den Text
werde ich ihn
so ändern, tatsächlich Text klingelt, was eine Zeichenfolge zu Text ergibt. Jetzt mache ich hier einen Stift,
was bedeutet, dass aus der obigen
Zeichenfolge die untere Zeichenfolge wird. Für die erste Zeichenfolge
werde ich Pile is Or B verwenden, ich werde tatsächlich eine variable Kachel
erstellen. Als ich ein Wort hinzufügte,
mochte es nicht zwei Wörter ,
weil wir die
Textnummer haben und ein T-Ergebnis
davor setzen. Jetzt kann ich das kompilieren und in Holz
ändern. Hey, ich werde das auf
die T-Zahlenvariable
von N auf Ganzzahl ändern die T-Zahlenvariable
von N auf Ganzzahl Ich werde es hierher bringen und es mit B verbinden. Nun, wo diese
Ty-Nummer mit Informationen
gefüllt wird , die beim Spawn erscheinen werden Wenn Sie kompilieren und beim ersten Mal nicht
funktioniert haben, heißt
es, der
Standardwert kann nicht analysiert werden Ich werde nicht darauf eingehen. Sie können erneut kompilieren
und es ist behoben. Oh. Wird auf der Instanz
gefüllt, editierbar sein und beim Spawn verfügbar Wenn wir
eine Kachel spawnen, zum Beispiel
unsere erste Kachel im
Labyrinth-Generator, unsere erste Kachel im
Labyrinth-Generator, wechseln Sie zu unserer Auf einen Titel setzen. Jetzt haben wir diese
Kachelnummer hier, und die erste Kachel ist Null. Schauen wir uns zum Kompilieren und Speichern an, wie es aussieht. Ich werfe aus. Die Zahl ist Null.
Mir gefällt es nicht, dass wir jedes Mal auswerfen Ich werde einfach eine Kamera
mitbringen. Gott. Ich werde es auf Null, Null,
Null oder etwas
höher setzen . Schau nach unten. Meine stellen wir hier hin und
machen es schräg. Wenn ich jetzt anfange, hat sie
nichts bewirkt , weil wir sie nicht so
eingestellt haben , dass sie diese Kamera besitzt. Wir werden jetzt zu einem
Level-Blueprint übergehen, wie bei der Kamera, zum
Level-Blueprint Klicken Sie und erstellen Sie eine Referenz. Davon werde ich
cooler, ich werde
dich mit Blend mischen. Verbinde das neue Ziel, diese Kamera und verbinde
das mit Bigin Play, Compile und Seven Play Und jetzt
besitzen wir diese Kamera. Okay. Also wir haben die
Fliesennummer Null, wir haben die Pfeile und wir haben
tatsächlich ein paar Wände, denen diese Wand ein
bisschen abweicht, es ist diese Wand. Ich habe es überlappen lassen, es eng
ansetzen lassen, ein bisschen tiefer.
Okay, lass uns spielen. Anzeige. Wir haben unsere Zeitnummer, wir haben unsere Anweisungen
und wir haben einen Start, der jedes Mal
zufällig Was wir jetzt tun müssen, ist
einen Weg zu finden, damit diese Pfeile versteckt werden, wenn wir unseren Ausgang
haben und wenn wir wissen, dass wir von Westen blockiert
sind diese Pfeile versteckt werden Aber das
werden wir für
die nächste Lektion vergessen. Auf Wiedersehen, wir
sehen uns bei der nächsten.
15. Blueprint-Kommunikation mit Schnittstellen: O Hallo und willkommen zum Game Design
Workshop und zum echten Engine Five-Procedural
Dungeon-Action-Rollenspiel-Kurs zur Erstellung eines echten Engine Five-Action-Rollenspiels Zuvor hatten wir ein
paar Wände auf unserer Kachel hinzugefügt, und wir haben auch den Text mit den
Kachelnummern hinzugefügt , wir dem
Konstruktionsskript hinzugefügt haben Wie gesagt, das läuft bevor der Blueprint
in der Welt erscheint,
wohingegen, wenn ich
ihn zum Beispiel zu Beginn des Spiels hätte , er sofort laufen
würde Das war nach dem Spawnen. Oh, jetzt schauen wir weiter unsere Pfeile
, basierend auf
unseren Ausgängen, je , welche Seite blockiert ist
und welche Wollen wir das auch
verwenden,
um herauszufinden, wann ich das nächste
Teil baue, ob das vorherige, wo es Ausgang ist,
wo ich
bauen kann , um das zu tun, wir werden eine Funktion brauchen, aber wir werden
keine Funktion benötigen Nur für den Fall, dass du
später deine eigenen Kacheln,
dein eigenes Labyrinth erstellen später deine eigenen Kacheln,
dein eigenes Labyrinth Wir werden erstellen
und vielleicht haben wir ein Labyrinth , das aus vielen Kacheln besteht Wenn sie die Funktionen haben, nicht wenn sie dieselben Funktionen
haben,
sondern wenn sie eine
bestimmte Ergänzung
zum Blueprint haben,
nämlich sondern wenn sie eine
bestimmte Ergänzung
zum Blueprint haben die
sogenannte Blueprint-Schnittstelle, können
sie dieselben ausführen. Sie können von
demselben Algorithmus
aus verwendet werden Lassen Sie mich beißende Farbe erklären. Nehmen wir an, wir haben einen
Algorithmus, der sagt: Lasst uns tatsächlich einen Algorithmus erstellen Wenn die aktuelle Kachel
gleich der Mac-Kachel ist, p? Wenn es nicht gleich ist,
dann auf der Kachel. Das
werden wir später erstellen. Wenn ein Spawn-Plättchen und ich seine Pfeile hin- und herschalten
möchte, da unsere Spawnmechanik uns einen Verweis auf das Objekt
gibt,
das wir spawnen, könnten
wir direkt
eine Funktion aufrufen, könnten
wir direkt
eine Funktion aufrufen die sich in diesem Sagen wir in unserem Kachel-Blueprint, Kachel. Was wäre, wenn ich P hätte, würde ich es tun. Und dieser Funktion
würde es nicht gefallen. Wenn ich zum Beispiel bei
der Auswahl einer Klasse ein zufälliges
Feld hier platzieren würde, um
aus verschiedenen Kacheln auszuwählen ,
zufällige Klassen. Es würde nicht gefallen, dass
ich daraus schöpfe und eine bestimmte
Funktion dieses Entwurfs ausführe Hier ist also, wo
Blueprint-Schnittstellen herkommen. Sie haben eine Reihe von
Funktionsnamen mit Eingaben und
Ausgaben, was auch immer
eine Funktion tun kann Sie können
sogar von einigen Klassen, aus
denen wir auswählen,
gemeinsam genutzt werden einigen Klassen, aus
denen wir auswählen,
gemeinsam genutzt Wenn ich hier also
eine BI-Funktion habe, eine
Blueprint-Schnittstellenfunktion, kann
ich
unabhängig von der Klasse eine Nachricht senden,
unabhängig davon, ob es sich um
ein Wort handelt, unabhängig von
der Klasse, sondern ich spawnt, solange die Klasse
diese Blueprint-Schnittstelle enthält, quasi
in ihren Eigenschaften vererbt. Ich werde Ihnen jetzt zeigen, wie Sie
das hinzufügen können. Das ist also im Grunde eine
der Einsatzmöglichkeiten von
Blueprint-Schnittstellen Wir werden uns nicht auf das konzentrieren,
was optimaler ist. Es gibt andere Möglichkeiten
, Informationen zu senden. Es gibt Event-Dispatcher, es gibt direkte Verweise, es gibt eine Reihe
von Möglichkeiten, dies zu tun Aber was ist optimaler oder nicht? Hängt von vielen Faktoren ab. Und normalerweise geht es nicht darum, dass die Probleme
nicht von dort kommen. In der Regel handelt es sich um
Kollisionsprobleme. In der Regel handelt es sich um
Navigationsprobleme, das Navigationschaos, und bei KI verschiedene Arten von Problemen zu viel
schwerwiegenderen Problemen in Spielen. Aber du kannst immer den Profiler
verwenden und überprüfen, wo dein Spiel Probleme hat Lassen Sie uns nun diese Schnittstelle hinzufügen, aber um sie hinzuzufügen,
müssen wir Gehen wir also zu unserem
Blueprints-Ordner. Klicken Sie mit der rechten Maustaste, um tatsächlich
einen neuen Ordner zu erstellen. Es heißt dieser Ordner,
BI, Blueprint-Schnittstellen. Sie werden diesen Ordner
aufrufen. Sie gehen zu Blueprints, klicken mit der
rechten Maustaste und gehen zu Blueprints
und wählen Blueprint-Schnittstelle und wählen Blueprint-Schnittstelle Ich werde das BI Plt
Homes nennen. Und ich werde es öffnen. Wenn ich es jetzt
hier öffne, gibt es uns bereits
eine neue Funktion zum Hinzufügen. Die erste Funktion
, die wir hinzufügen werden ist eine Funktion, um den nächsten Ausgang zu
finden. Denn wo
wir sind, müssen wir zunächst den nächsten Ausgang
finden. Also finde Dann
brauchen wir dafür zwei Eingaben. Sie werden
vom Typ E sein. Oh, es ist schon für mich, weil es die letzte
Variable ist, die ich erstellt habe, und wir werden diese Variable Einkommen
nennen. Erektion. Und gehe zu den Ausgaben und
erstelle eine weitere Variable. Ich werde wieder
in Richtung E fahren, und das wird
der Ausgang sein. Ba, diese Funktion
wird
Dinge tun , um die Richtung
anhand der eingehenden
Richtung zu finden . Wo ist der Ausgang? Weil wir nicht
wollen,
dass der Ausgang der
Eingangsrichtung übereinstimmt. Denn dann werden wir
Pong hin und her spielen. Und die nächste Funktion
wären Ogle-Pfeile, um die Sichtbarkeit danach einzustellen , ob der Pfad blockiert
ist oder Wie Sie feststellen können, kann für diejenigen, die neu sind, ich
für diejenigen, die neu sind, hier keine Kodierung platzieren Das liegt daran, dass
wir bei
Blueprint-Schnittstellen sie
dem eigentlichen Blueprint verdanken , zu dem
wir sie hinzufügen. Und der Grund dafür ist
, dass wir vielleicht
dieselbe Funktion mit
denselben Eingaben und Ausgaben wollen dieselbe Funktion mit
denselben Eingaben und Eva macht ein paar verschiedene Berechnungen, einige verschiedene
Operationen darin Sie können auf BV-Kacheln
unterschiedlich arbeiten. Sie können auch auf der BV-Kachel
unterschiedlich funktionieren, aber die Ein- und Ausgaben
wären identisch. Wie dem auch sei, lass uns weitermachen. Wie fügen wir diese
Schnittstelle zu unserem Blueprint hinzu? Um das zu tun, gehen wir zu den
Klassenstandardwerten, tut mir leid, zu den
Clus-Einstellungen, und
wir gehen zur Schnittstellen-Tube und
zu den
implementierten Schnittstellen Wir wählen Hinzufügen
und rufen BI Mase kommt auf. Jetzt wurde unter unseren
Funktionen Variablen und Variablen
eine neue Kategorie
namens Interfaces erstellt eine neue Kategorie
namens Interfaces Wenn ich das öffne, kann ich deutlich
sehen, dass ich es nicht kompiliert habe. Ich kann
unsere beiden Funktionen deutlich sehen. Die Funktionen, die
Sie
zuvor gesehen haben, waren eine Funktion, die ich der Platte
ausprobiert habe, aber sie hat nicht gut funktioniert. Also ja, das sind momentan unsere
beiden Funktionen. Kompilieren Sie erneut und
es wird kompiliert. Kompilieren Sie immer Ihren
I-Klassen-Blueprint. Dave, und schließen Sie dann, bevor Sie Dinge auf Ihrem Blueprint tun
, dass Sie ihn hinzugefügt haben Nun, unser nächster Schritt,
bevor wir anfangen,
diese Funktionen zu reparieren , nicht zu reparieren, sondern zu erstellen, wäre, eine Variable
zu erstellen der die Information darüber
gesteuert wird, ob
eine Richtung offen ist oder nicht Wenn eine Richtung Zugriff hat, können
wir weitermachen
oder sie ist blockiert. Und wie Sie sehen können, habe ich
bereits damit gespielt,
und das ist eine
Map-Variable, die ich erstellt habe. Fangen wir also von
vorne an. Nehmen wir an, das ist zum
Beispiel keine Karte. Nehmen wir an, es ist eine
einzelne Variable und sie wird
vom Typ Directions sein. Erstellen Sie eine neue Variable
vom Typ Richtungen und wählen Sie dann die
Kartenvariable, den Kartencontainer, aus. Und der zweite Teil
davon wäre ein Bolan. Richtung ein aus. Das haben wir hier geschaffen. Ich nenne das „
Variable Directions“. Jetzt brauche ich
eine weitere Variable, die diesmal wieder eine Map
wäre, und ich werde
beide Seiten haben. Ich nenne das Gegenteil. Ich werde kompilieren und speichern. Und für diese beiden Variablen muss
ich einige
Standardwerte festlegen. Also werde ich zuerst
zur Wegbeschreibung gehen. Ich werde einen hinzufügen. Ich werde sagen, das ist West. Ich werde
einen weiteren hinzufügen, sagen wir, das ist Süden, noch einen
hinzufügen,
sagen wir, das ist Osten, und ich werde noch
einen hinzufügen, der im Norden sein wird. Ich werde den
In-Teil belassen , die zweite Taste wie auch. Nun, warum habe ich nicht
immer die Taste „Vier hinzufügen“ gedrückt? Und dann, weil,
wenn einer von ihnen
Nord ist und der
Standardwert Nord ist, kann
ich keinen weiteren hinzufügen. Wie Sie sehen können,
heißt es, dass
kein neuer Schlüssel hinzugefügt werden kann, da
er bereits existiert. Jetzt werde ich das auch für
die entgegengesetzten Richtungen tun . Und das wäre Süden,
das Gegenteil ist Norden. Das wäre Osten, also das Gegenteil ist Westen. Das wäre Westen, also das Gegenteil ist Osten. Und das wäre Norden,
das Gegenteil ist Süden. Ich werde kompilieren und speichern. Lassen Sie uns zuerst
die Anweisungen verwenden. Gehen wir zu unserer
Tal-Pfeile-Funktion. Jetzt wurde es als
Ereignis erstellt, wo ich
es als Funktion haben wollte. Also werde ich das löschen. Ich werde das löschen und
das System ein
wenig auf den Kopf stellen, weil ich es dann nicht einfach
zum Laufen bringen kann. das in der Vergangenheit zu erledigen
, füge ich einfach den Parameterstapel
hinzu gehe zurück zu unserem Blueprint Insgesamt acht Funktionspfeile. Füge etwas hinzu. Lass uns das machen. Lassen Sie uns das hinzufügen Das ist in Ordnung. Das, kompilieren und speichern. Geh zurück, ich
werde
die Ausgabe löschen und kompilieren und speichern. Und jetzt habe ich es als Funktion. Nun zu unserer Funktion
Gesamtpfeile. Holen wir uns die Anfahrtsbeschreibung auf der Karte. Und wenn wir
Informationen auf der Karte manipulieren, können
wir nicht wirklich ein Array
bekommen Wir müssen uns dem Array zuwenden, einem der beiden Schlüssel Ich gehe mal was sehen. Eigentlich sind es Schlüssel und
Werte. Es sind keine zwei Schlüssel. Es ist e und die Werte von Wie dem auch sei, ich hole mir die Schlüssel und gehe zu jeder Schlüsselschleife. Wir haben vorher ein paar Dinge
darüber erklärt, welche Loops es sind, jetzt wird es ein Kinderspiel. Ich werde mich wieder
orientieren und einen Wert finden. Es ist möglich, einen Wert
anhand eines Schlüssels zu finden. Ich werde das hier
verbinden, das Array-Element
aus der Vorderschleife, und ich suche den Schlüssel
aus den Anweisungen heraus. Und ich werde tatsächlich
alle meine Pfeile holen. Eins zu oder was wir brauchen, ist ein
auf den Anweisungen basierendes Mietobjekt. Also werde ich den Nordpfeil mit dem
Nordpfeil verbinden. Ich werde den Südpfeil mit dem
Südpfeil verbinden, um
Ost-Ost, West mit West zu verbinden. Aus diesem Array, das es basierend auf dem ausgewählten Strahl
auswählt, wählt es
basierend auf den Richtungen aus. Ich werde für mehr Sichtbarkeit sorgen, und ich werde es auch
an Kinder weitergeben Und die Sichtbarkeit, die festgelegt
wird, wird auf der Grundlage des
Ergebnisses der Suche
definiert Jetzt hat es zwei Optionspins. Eine davon ist, ob
der Artikel gefunden wurde ,
weil
sie manchmal nach
etwas gefragt haben, das nicht
in der oben angegebenen Anleitung steht . Und der andere ist
der Wert der Daten. Ich werde
das mit Sichtbarkeit verbinden, und ich werde das hier
verbinden. Ich stelle das hier her und es ist unvollendet. Ich werde fertig stellen. Geben Sie zurück, dass wir die Funktion
abgeschlossen haben. Jetzt werde ich
kompilieren und speichern. Und lassen Sie uns
das zum Beispiel testen. Lassen Sie uns die Tg-Pfeile
genau hier platzieren. Das Kompilieren sagt Wenn ich Play drücke, sollte
kein Pfeil
angezeigt werden , da wir sie
unsichtbar haben Wir haben sie, dass
alles blockiert ist. Aber wenn ich drücke, sagen
wir, North
and South ist geöffnet, wird
es funktionieren.
Ja, es funktioniert. Oh, ich denke, das
reicht für diesen. Ich werde dich
im nächsten sehen. Auf Wiedersehen.
16. Finden von verfügbaren Exits: Hallo und willkommen zurück zum
Game Design Workshop, fünf prozedurale
Dungeon-Action A
Plus zum Erstellen von fünf prozeduralen Dungeon-Aktionen anbieten der vorherigen Lektion haben
wir ein
wenig über Blueprint-Schnittstellen gesprochen und auch einige Variablen erstellt
, und auch einige Variablen erstellt die
Richtungsvariable, die alle
Informationen für West, Südost und Nord sowie die Sichtbarkeit
der Pfeile in boolescher Form enthält Südost und Nord sowie die Sichtbarkeit
der Pfeile in boolescher Sichtbarkeit
der Pfeile in boolescher Und wir haben auch die Karte mit
entgegengesetzter Richtung erstellt, wir
die Richtungen
und das Gegenteil davon haben Wir haben auch die Funktion „
Gesamtpfeile“ erstellt
, bei
der wir die Richtungen nehmen und jede einzelne
von ihnen durchsuchen und
den entsprechenden Pfeil finden den entsprechenden Pfeil , um die Sichtbarkeit ein- oder auszuschalten. Fahren wir nun
mit der Suche nach dem Ausgang fort. Hier ist ein bisschen Dampf aufgegangen. Macht nichts Fahren wir also damit fort, unseren Ausgang
zu finden. Zunächst
müssen wir die
Einkommensrichtung auf eine Variable umstellen,
falls wir sie später benötigen. Wir können es in dieser Funktion tatsächlich
frei verwenden, nur weil wir
dieses Einkommen hier haben. Lass mich dir jetzt eine
coole
und echte Funktionalität zeigen. Wenn ich das umbenenne,
um das klarer zu machen, Einkommensziele, setzen
wir hier ein S. Während ich mich in der Funktion
befinde, kann ich jede Eingabe aufrufen, die zu dieser Funktion
kommt, indem ich
einfach das
E (Einkommensrichtung) eintippe. Das ist
in einer anderen Kategorie eindeutig anders. Es ist eigentlich in keiner Kategorie. Es bedeutet, dass es in
dieser Funktion ist. Ich kann es als Variable aufrufen, solange ich in dieser Funktion
bin. Wenn ich außerhalb dieser Funktion in
das Diagramm gehe und
diese Variable einfüge, wirst
du sehen, dass
sie nicht existiert. Wenn eine Variable nicht
existiert, können
wir mit der rechten Maustaste klicken und
eine Variable erstellen,
um sie Die
Daten und der Datentyp und diese Dinge werden beibehalten. Lassen Sie uns das jetzt löschen.
Wir werden es nicht brauchen. Kehren wir zu unserer Funktion zurück. Oh, verbinde das hier. Wir haben Einkommensbeschreibungen. Unser erster Schritt sollte sein, dass unsere
Anfahrtsskizze aktualisiert wird,
sodass es sich bei dieser Richtung
tatsächlich um eine bewegliche Richtung handelt. Es ist frei, sich von der
Seite zu bewegen. Es blockiert nicht. Also sollten wir die Pfeile einschalten. Aber was wir tun werden, ist
die entgegengesetzte Richtung einzuschlagen. Wir werden den Wert
der Einkommensrichtung ermitteln
, den ich einfach von
hier ziehen kann, egal, und dann füge ich ihn der Karte
hinzu. Und warum ich
hinzufügen werde, wie wir erklärt haben, weil wir einen
Wert hinzufügen, der bereits existiert, es ändert nur den Wert. Es wird kein neuer hinzugefügt. Also werde
ich das hier verbinden und den Wert
auf true setzen und
die Exstitution verbinden Der nächste Schritt, den wir
tun sollten, ist
herauszufinden , welche dieser Richtungen frei
ist, um einen Ausgang zu erstellen Was wir tun werden, ist
tatsächlich die Anweisungen zu duplizieren. All dieser geht raus. Ich werde kompilieren, und
da dies ein Duplikat ist, hat
es bereits unsere Werte Jetzt werde ich die Einkommensrichtung
entfernen,
was eigentlich der Name für Einkommensrichtung sein sollte. So viele sind nur eins. Hier lebe ich es aus. Nun, da wir
einen Wert von hier,
der Einkommensrichtung, entfernt haben , sollten
die restlichen Werte frei
sein,
unser Ich weiter aufzubauen, also zum Beispiel den Ausgang zu finden, den wir wollen. Also werde ich die Schlüssel holen. Also, das wären nur
die möglichen Antworten, und ich werde einen zufälligen Gegenstand
bekommen. Ich werde
das zu einer Variablen heraufstufen und ich werde es Possible
Exit nennen. Dieses Jahr dieses Jahr. Jetzt haben wir einen möglichen Ausgang. Da wir uns entschieden und es
nach einer Variablen sortiert
haben, sollten wir es wieder
aus den möglichen Exits entfernen Ich werde das hier verbinden. Ich werde das hier verbinden
und es wird entfernt. Jetzt bleiben also zwei mögliche Ausgänge übrig
. Das nächste, was wir tun
sollten, ist die Anweisungen wie
und mit Hinzufügen meine
ich, den Wert
unseres möglichen Ausgangs zu aktualisieren Und das wird
sich als wahr herausstellen. Also jetzt kompilieren und speichern, der nächste Schritt
wäre, die Pfeile zu kontrollieren Da wir die
Richtungswerte aktualisiert haben, die Funktion, die wir
erstellt haben, um Pfeile zusammenzufassen, werden
wir auch unsere Pfeile aktualisieren Am Ende
bringen wir den Ausgangsknoten, der hier
angeschlossen ist, zusammen und verbinden den möglichen Ausgang mit
dem Ausgangsausgang Wir könnten diesen Ausgang tatsächlich
nennen, keinen möglichen Ausgang.
Kompilieren und speichern. Lassen Sie uns nun malen und erklären, was dieser
Code tatsächlich bewirken wird. Was ist die Theorie dahinter? Im Moment haben wir eine
Kiste, unsere Kachelbox, und wir beschließen, einen Ausgang zu haben, sagen wir zufällig
von dieser Seite, und weil dies die erste Box
ist, wäre
dies unser Intro Intro-Block. Jetzt finden wir einen zufälligen
Ausgang auf der ersten Kachel des Telefons. Das zweite Stück
, das wir bauen werden. Lass es uns tatsächlich auf
Gelb setzen. Das zweite Teil
, das wir bauen werden, wird
automatisch gebaut. Wir werden die Funktion
natürlich ausführen, um das zu tun. Ich hoffe, dass dieser Ort
ihr Eingang ist und dass sie
nach dem Zufallsprinzip entscheiden wird , ob eine
Seite weitermachen will. Nehmen wir zum Beispiel an, dass es weiter steigt. Im nächsten Teil werden wir auch wissen, dass es hier einen weiteren Ausgang gibt, und sagen wir, es
geht so weiter. Jetzt siehst du, wohin
ich damit will. Es wird tatsächlich damit
enden, hierher zu gehen, und es wird nicht weitergehen
können. Die Art und Weise, wie wir es bauen,
ist wie eine Schlange wie ein Wurm. Es schafft einen weiteren Ausgang. Was wir tun werden,
ist,
einen Algorithmus wie einen
Buck-Track-Algorithmus für diejenigen zu entwickeln einen Algorithmus wie einen
Buck-Track-Algorithmus , die
etwas weiter fortgeschritten sind Was ist ein Buck-Track-Algorithmus? Kurz gesagt, es platziert etwas,
es platziert etwas, es platziert etwas, bis die Regeln besagen, dass man etwas nicht platzieren kann Auf dieser Grundlage gibt es keine
Platzierungen mehr. Also geht es zurück und prüft , ob es einen anderen Weg kaufen kann. Nun, das ist eine sehr
grobe Erklärung. Das werden wir tun. Aber genau für uns wollen
wir einen Schritt zurückgehen. Als ob ein traditionellerer
Backtrack-Algorithmus einfach von hier aus funktionieren würde Es hat eine Stelle gefunden, an der es
nicht weitermachen kann, also geh zurück. Kannst du einen anderen
Ort finden, an dem du weitermachen kannst? Wir werden tatsächlich
einen zufälligen Block auswählen ,
damit er nach dem Zufallsprinzip Dungeons
erstellt, die den Dungeon
an verschiedenen Stellen
verzweigen die den Dungeon
an verschiedenen Stellen
verzweigen Weg, wir kommen
zu weit voran. Ich denke, das ist ein guter
Zwischenstopp für diesen. In der nächsten Lektion können
wir damit beginnen, dies
aufzubauen und noch
ein paar Dinge zu erklären. Tschüss. Wir sehen uns
beim nächsten.
17. Algorithmus für die Basis-Labyrinthform: Hallo und willkommen zum
Game-Design-Workshop im Rahmen prozeduralen
Dungeon-Action-RPGs mit
Engine Five Dungeon-Action-RPGs Zuvor hatten wir
die Funktion find exit erstellt, die unserer Variablen die
Richtung des Einkommens berechnet, einige
Berechnungen
durchführt und Richtungen zu
unserer Richtungsvariablen addiert und entfernt Sie aktualisiert die Statistiken, welche Pfeile also sichtbar sind, und aus unseren
möglichen Richtungen und aus unseren
möglichen Richtungen entfernen
wir die Richtung
, aus der wir kommen. Und dann speichern wir eine zufällige Richtung
von den übrig gebliebenen, und wir entfernen auch diese und ändern auch die Pfeile, Richtungen und Variablen,
um die Pfeile sichtbar zu machen. Und dann summieren wir die Pfeile mit der Funktion, die
wir zuvor erstellt haben. Jetzt haben wir auch
ein wenig über
unseren Algorithmus erklärt , der ein Backtrack-Algorithmus sein wird Für diejenigen, die
eine genauere Erklärung
über den Thera-Algorithmus
und was er ist, benötigen über den Thera-Algorithmus
und was er ist, Im Grunde ist es eine Technik, um Probleme
schrittweise zu
lösen, indem Teillösungen
ausprobiert und dann aufgegeben werden, wenn
sie nicht geeignet sind unserem Beispiel wird es versuchen, ein anderes Plättchen zu erstellen, um es zu platzieren Wenn es nicht in der Lage ist, ein anderes Plättchen
zu platzieren, kehrt
es zu
einer vorherigen Position zurück,
wie gesagt, zu einer zufälligen
vorherigen Position und versucht, von dort aus weitere
Kacheln zu erstellen Lassen Sie uns nun mit der
Erstellung eines Algorithmus beginnen. Wir werden auf dem Labyrinth-Generator zu Even Graph wechseln ,
nicht
auf der Kachel Wir, mit dem BPM-Generator,
gehen zu VNGraf. Wir werden
ein benutzerdefiniertes Event erstellen. Nennen wir dieses
benutzerdefinierte Ereignisfeld. Nun, die erste Frage, die wir stellen
sollten, ist mit einem Zweig, sind wir fertig, sind unsere aktuellen Kacheln mit unseren Mac-Kacheln
identisch? Ich werde das hierher bringen
und ich werde das verbinden. Die erste Frage ist erledigt. Wenn das stimmt, sind wir fertig mit dem Bau des ersten Teils unseres. Wenn nicht, was der
interessanteste Teil ist, sollten
wir mit dem Bau beginnen. Unsere nächste Aktion
besteht nun darin, die
aktuellen Kacheln um eins zu erhöhen. Ich werde das hier einfügen, ich werde eine plus eins machen und ich werde
die aktuellen Kacheln setzen. Wenn wir es um eins erhöhen, könnten
wir auch Plus plus hinzufügen, was eine Erhöhung von bedeutet, die sich um eins erhöht Aber das ist auch in Ordnung. Für den nächsten Teil kommt der
schwierigere Teil, denn hier geht es im Grunde um mehrere
Fragen. Und dafür
brauchen wir eine Funktion. Was diese Funktion bewirken wird. Der erste Schritt unserer
Frage wird darin bestehen, nicht das angrenzende Kreuz zu finden, sondern das angrenzende Kreuz
, das leer ist. Lassen Sie uns eine weitere Funktion erstellen, und wir nennen sie leere Basis. Die Schreibweise vielleicht richtig. Wer weiß? Nein. Was wir tun werden, ist unsere
aktuellen Koordinaten zu ermitteln, und wir werden auch
die Funktion abrufen, mit der wir das Fundkreuz nebenan
erstellt haben . Und aus dieser Liste, die
wir erklärt haben, bekommen
wir alles, was an unsere Koordinaten
angrenzt. Wir gehen für eine
Schleife, für jede Schleife. R und wir werden
ein paar Tests machen. Der erste Test, den
wir machen sollten, ist
, gehören diese Koordinaten
schon zum Dungeon Wenn es schon dazugehört, bedeutet das, dass
es einen Titel hat, also sollten wir nicht dort sein Ich hole
unsere Dungeon-Karte und ich hole unsere Schlüssel
und ich werde fragen, ob
die Schlüssel einen Gegenstand enthalten Und das Objekt wäre das Array-Element
der benachbarten Nachbarn Oh, das ist unsere erste Frage. Lass uns einen Ast anlegen.
Lass uns das hier verbinden. Nun, wenn das wahr ist, sollten
wir weitermachen. Und die nächste Frage wäre, gehört es zu den Koordinaten des
erzwungenen Eindringens? Wie zum Beispiel der
Intro-Block oder für die nächsten Level der Aufzugsblock
aus dem vorherigen Ich Oh, mal sehen, ob diese
Koordinaten auch in einer Kopie
enthalten sind und fügen
sie in die leere Force-Liste Nun, wenn wir einen Zweig haben
und zwei Dinge haben, von denen
wir wollen, dass sie wahr sind, damit
sie von der Wahrheit abweichen. Wir haben die Variable. Eigentlich nicht beide. Um diesen Satz zu ändern wir,
wenn wir einen Zweig haben
und überprüfen möchten ob eine der
Bedingungen zutrifft, können wir,
wenn wir einen Zweig haben
und überprüfen möchten,
ob eine der
Bedingungen zutrifft,
diese oder Knoten verwenden. Oder Boulan, was
bedeutet, ob das wahr ist oder ob das wahr ist Das heißt, wenn eine
unserer Bedingungen zutrifft, wird der Branch von „wahr“ ausgelöst Was wir wollen, ist, dass keine
der Bedingungen wahr ist, also wird bei Falsch ausgelöst. Jetzt brauchen wir eine weitere Bedingung, und die
Bedingung wäre , wie groß kann ich das Labyrinth bauen Also, was bedeutet das
Maximum für X und Y, ich kann in das Layout gehen Dafür benötigen wir
eine neue Variable. Wir werden eine neue
Variable aus Variablen plus erstellen. Wir werden eine
Variable auswählen und ihren Namen auf
M s setzen und ihren
Typ in eine Ganzzahl ändern. Das ist natürlich eine Ganzzahl, weil es keine halben Blöcke gibt. Es gibt nur einen, zwei, drei, vier, wie
viele Blöcke wir wollen. Und wenn wir nur eine Variable haben, können
wir nur keine
quadratischen Labyrinthe erstellen , weil sie zufällig generiert
werden Aber wenn die maximale Anzahl der Gänge ungefähr der Größe des Labyrinths entspricht, was sie fühlen können, dann wird
es Squash sein Wenn wir zwischen
X und Y
unterscheiden und
Parallelogramme erstellen wollten , dann bräuchten wir die maximale
Größe x die maximale Größe Y.
Jetzt brauchen wir für uns nur die Mac-Größe Bringen wir es her.
Wir wollen lieber Größer oder Möller
vergleichen Ich habe das Gegenteil gesagt. Wenn es größer ist, ist es dieses, wenn es kleiner ist, ist es dieses. Das x und das y, also
müssen wir das duplizieren. Hier verbunden. Oh, wenn wir unsere
aktuellen Koordinaten haben, was im Moment nicht unsere aktuellen
Koordinaten sind, ist es dieses eigentliche Array-Element, das ich hier
unterbrechen werde, weil es ein In-Punkt ist und ich
X und Y trennen. Oh, wenn mein X größer ist oder mein Y größer
als die May-Größe ist, dann sind wir außerhalb der Grenzen Gleichzeitig
wollen wir aber auch die negativen Werte verwenden,
sodass sich unser Labyrinth auch hinter
dem Stern verzweigt Wenn wir hier beginnen
und uns einfach auf der positiven X- und
Y-Achse
fühlen, ist
das unser Bauraum Aber wenn wir hier und
da auch mit dem Negativen beginnen, dann unsere Größe und das Dreifache Wir werden
das mit minus eins
multiplizieren ,
sodass wir es negieren können, und
wir werden diese beiden miteinander verbinden Das ist ein Chaos. Bringen wir
das Positive, das Größere oben und das Negative nach
unten und verbinden das hier. Was wir tun können, ist
einige vorgelesene Notizen zu erstellen , indem wir
auf die Kabel selbst klicken. Das verbindet sich hier, also
werde ich das hier verbinden. Ich werde das
zurückbringen und das hier verbinden. Und lass uns hier noch
einen machen, wir hier. Und weißt du was? Wir
werden das hier einfach duplizieren, das ist
variabel, vielleicht hier
verbunden. Bereit, sie können meinen Fehler sehen. Okay, denn wenn
es so spaghettiert ist, ist es schwer, einen
Sinn daraus zu machen X geht hierher und Y geht hierher. Und das wird nicht benötigt. Okay. Jetzt ist es ein
bisschen besser. Jetzt werde ich wieder die
oder
eine oder eine logische Gangart benutzen eine oder eine logische Gangart benutzen Ich werde hier eine Verbindung
herstellen,
denn wenn irgendwas davon t ist, dann wird es wahr zurückgegeben Wenn alle falsch sind,
wird Falsch zurückgegeben,
wir befinden uns also im Labyrinth Und ein netter kleiner
Trick und echter Clou ist auch, dass
ich sie nehmen kann Ich kann mit der rechten Maustaste klicken, und ich kann sie
zusammenklappen, funktionieren. Ich mache es einfach und
nenne es. Technik ohne Vokale. Nein, ich habe
die Ausgabe nicht erstellt , weil wir sie nicht angeschlossen
hatten Setzen wir es in eine Variable. Nennen wir das außerhalb der Grenzen. Eingabe von Bounce. Gehen wir rein und
verbinden uns hier. Kompilieren und speichern. Gehen wir zurück zu Get Empty nebenan und erstellen einen weiteren
Pin in diesem oder und verbinden ihn hier. Ich habe das ein
bisschen hinter mir gelassen. Ja, wir können mehr Pins konkretisieren indem wir auf den
Anzeigen-Pin klicken, wie ich es hier getan habe. Ich hätte es examen sollen. Wie dem auch sei, lass uns weitermachen. Die Logik ist der wichtige Teil. Lassen Sie uns nun sagen
, dass alles falsch ist und alles
nach unserem Plan läuft, dass es richtig ist. Und eines davon nebenan
ist völlig leer. Es gehört nicht
schon zum Labyrinth. Es ist nicht zwangsweise leer und es liegt nicht außerhalb der Grenzen Lassen Sie mich
außerhalb der Grenzen ganz schnell überprüfen , ob nichts falsch ist Wenn die Ma-Größe
größer als das X ist , ist das Gegenteil der Fall Wenn das X größer
als das Labyrinth ist und wenn das X
kleiner ist, und das Das heißt,
wenn zum Beispiel x minus zehn und die
Größe minus fünf ist, es s, und es ist,
es ist außerhalb der Grenzen. Das ist richtig. Also,
wenn diese korrekt sind, haben
wir die Koordinaten, aber wir wissen nicht, was es ist, Nordosten, Südwesten,
wo sind diese Koordinaten? Wir benötigen diese Information auch. Wir werden
also
eine temporäre Variable erstellen , wenn wir hier in der Variablenliste
nach unten gehen . Wir können jetzt eine neue
Option sehen, lokale Variablen, bei der es sich,
wie Sie sehen können,
um leere benachbarte Variablen handelt, die nur zu dieser Funktion
gehören. Das heißt, wenn
diese Funktion ausgeführt wird, erhalten
sie
ihre Standardwerte. Es speichert keine
Informationen über sie. Oh, da es sich um
eine reine Funktion handelt, können
wir sie tatsächlich verwenden. Was wir tun werden, ist,
wir werden es nennen, wir werden
es zuerst zu einer Karte machen. Und der erste Schlüssel, der Schlüssel,
werden die Anweisungen sein, Rameration Die Variable, die
zweite Variable wäre der Koordinatenpunkt Oh, ich muss es herbringen. Lass es uns auch benennen. Ein Kation. Nun, lass es uns benennen. A Es sind
keine Standorte verfügbar. Es ist das gültige Nebengebäude. Okay. Aber wir haben ein
gültiges angrenzendes. Und hier werden wir diesen gültigen Nachbarwert hinzufügen
. Dieser Wert, der
aus dem Array stammt. Wir werden es hier verbinden. Woher wissen wir nun, ob es
Nordosten, Süden oder Westen ist? Was wir
tun werden, ist, hier einen ausgewählten Knoten
zu verwenden. Und für die Optionen werden
wir
den Array-Index verbinden. Eigentlich hat das nicht wirklich gut
funktioniert. Manchmal gibt es
dir nicht die Optionen, Zake. Lass uns eine Auswahl treffen. So wie mit einem Platzhalter, und wenn ich ihn verbinde, gibt es mir immer noch
keine Optionen. Also, wir werden
es ein bisschen auf die leichte Schulter nehmen und von hier aus
die letzte Ausfahrt nehmen
und von hier aus eine Auswahl treffen. Ich werde
das auch hier verbinden und dann hier eine Verbindung herstellen und das entfernen. Das hat nicht funktioniert. Lass es uns nochmal versuchen. Lass uns den Ausgang nehmen und aus dem Index-Array wähle
ich Wir
werden das hier verbinden. Y. Hier haben wir die Werte werde
das hier zuerst verbinden und dann werde ich
das trennen So bringen wir
diesen Selektor rein. Unglaublich. Wir bringen
aus dem Array. Wir wählen aus, wir bringen eine
Variable aus unseren E-Richtungen mit. Wir haben es mit der Auswahl verbunden, sodass es die Optionen anzeigt anstatt
sie als Variablen zu haben. Es hätte vielleicht einen
einfacheren Weg gegeben, dies zu tun. Wie dem auch sei, da wir jetzt wissen entspricht
unser Index
diesem Index des Strahls, denn das ist der
, für den wir Looping verwenden Wir wissen, dass der erste
Index Null für Norden ist. Der erste ist
Nummer eins für Süden, Nummer zwei für Osten und Nummer drei für Westen. Also können wir es
hier entsprechend machen:
Nord-Nüd, Ost-West Jetzt brauchen wir als Nächstes
eine Ausgabe in dieser Funktion Ich wähle
das aus und aus dem
fertigen der vier Loop Denn wenn wir es hier hinzufügen würden, jedes Mal, wenn
der Schleifenkörper abgefeuert
wird würde jedes Mal, wenn
der Schleifenkörper abgefeuert
wird, komplett sein. Im ersten Fall würde
es sogar komplett passen. Ich werde das hier verbinden und ich werde die
Ausgabe in eine Kartenvariable ändern, eigentlich eine Richtungsvariable , die daraus eine Karte macht. Und der zweite
wäre wieder ein gutes Beispiel. So können wir
unseren gültigen Nachbarn verbinden. Nennen wir auch
gültige Werte. Warum füge ich die Werte
in diesem Namen hinzu und nicht
hier in diesem Namen, denn
wenn Sie dieselben Namen haben, kann das die Engine verwirren und normalerweise lässt es Sie nicht,
aber falls es Sie zulässt, kann
es die Engine beim Verpacken des Spiels
bei vielen anderen Dingen verwirren Verpacken des Spiels
bei vielen anderen Also ja, es ist besser,
unterschiedliche Namen für die
lokalen Variablen zu haben , für
die Variablen , die
in deinem Blueprint nicht lokal sind, und auch für die Rückmeldungen und alles andere
. Erstellung von Namen für Variablen
ist besser , wenn viele Erklärungen wie gültige
benachbarte Werte Vielleicht hätte das gültiges Labyrinth aus
benachbarten Werten Je mehr Erklärungen zu den
Variablennamen, desto besser. Oh. Im Moment sind wir mit dieser Funktion
fertig, zeigen auf ein leeres Feld nebenan und
wir geben diese Liste zurück. Wir haben auch diese
Checkout-of-Bones-Funktion erstellt, und ich denke, das ist ein
guter Ausgangspunkt. Wir sehen uns
beim nächsten. Auf Wiedersehen.
18. 3D-Lektion 17 Kontinuierliches Kachel-Spawnen: Hallo und willkommen zurück zum
Game Design-Workshop und zum prozeduralen Kurs zur
Erstellung von
Dungeon-Action-Bs mit
echter Engine Five Erstellung von
Dungeon-Action-Bs In der letzten Lektion
haben wir damit aufgehört, unseren Get Leer-Anbau zu
erstellen. Wir haben tatsächlich mit
unseren Nachbarn gesprochen. Wir haben das Nachbarschaftsnetzwerk gegründet und wir vier haben
uns alle angeschaut. Wir haben überprüft, ob sie
zur Dungeon-Map gehören, ob sie zur
Forced Leere gehören
oder ob sie sich außerhalb
der Grenzen befinden, indem wir
diese It-Funktion hier erstellt haben. Wenn sie also zu keiner dieser Funktionen
gehörte,
haben wir sie zu einer Variablen
namens valid adjacent hinzugefügt,
die eine lokale Variable in dieser Funktion ist,
und wir haben diesen Wert
zusammen mit unseren Rückmeldungen angegeben,
wenn die for-Schleife abgeschlossen ist Lass uns mit unserem Labyrinth weitermachen. Algorithmus erstellen. Gehen wir nun zu Even Graph
und bringen wir diese nette
kleine Funktion, die wir gemacht haben
, mit der wir nebenan leer werden. Aber wir haben es nicht rein gemacht. Ich werde auf Compue klicken
und jetzt ist es nur noch eins. Jetzt haben wir diese Liste. Was wir
mit dieser Liste machen wollen, ist prüfen, ob der letzte Ausgang zu etwas davon
gehört. Also, was ich
tun werde, ist, den letzten Ausgang zu finden. Wenn ich den letzten Ausgang nicht finden kann, müssen wir einen Rückweg machen, dann gibt es keine
Möglichkeit, weiterzumachen, weil all die leeren Nebengebäude nicht dem
Ausgang entsprechen, den wir wollen Der Block möchte von
dort ausgehen, aber der nächste Block ist eigentlich
nicht gültig Nein, wir werden jetzt nicht
den Backtrack machen. Was wir weitermachen werden,
wenn wir den letzten Ausgang finden. Ich werde hier eine Filiale einrichten, wir werden das hier
verbinden. Und seit wir unsere
letzte Ausfahrt gegründet haben und sie existiert. Das bedeutet, dass ich einen neuen Block
bauen kann. Das bedeutet, dass ich endlich eine
neue Koordinate haben kann. Ich werde
die aktuellen Kabel mitbringen und ich werde
sie anschließen, um das hier zu verbinden Jetzt, wo wir unsere
neuen Koordinaten haben, müssen
wir den Ort finden, an dem wir
die neue Kachel
spawnen werden Oh, bringen wir unsere eigene Schauspielerklasse mit. Und wir werden wieder
die Klassenkachel auswählen, P-Kachel, und wir werden
die Transformation teilen. nun den
Standort zu finden, den wir brauchten, haben wir dafür eine Funktion erstellt, die als
No Fini Location bezeichnet wird Ich werde das hier verbinden. Ich werde das hier verbinden und wir können endlich einen neuen Block
haben. Nun, das reagiert
auf den neuen Block. Unsere Kachelnummer
sollte nicht Null sein. Unsere Titelnummer
sollte unsere Kacheln sein. Denn im Moment haben wir
Eins addiert und Null plus
Eins ergibt Eins, also ist dies unser erstes Plättchen
mit der Zählbasis Null Das nächste, was wir tun sollten,
ist, das Ganze zu dem Mist hinzuzufügen. Ich bringe
die Dangon-Karte und füge hier den
Ort hinzu Und ich werde die
aktuellen Koordinaten
hierher bringen und den Rückgabewert vom Spawn-Akteur zum Darsteller des
Dungeons Außerdem müssen wir
von hier aus den Suchausgang aufrufen. Ja, ich suche einen Ausgang. Wir wollen die
erste Nachricht haben, weil ich den Ausgang ausgewählt
hätte Wir können das auswählen. Wie Sie sehen können, hat es
ein anderes Ziel. Es hätte wahrscheinlich nicht funktioniert weil diese Farbe
hier bedeutet , dass Sie
es auf dieser Blaupause aufrufen, auch wenn ich das Ziel
angeschlossen habe Aber wie dem auch sei, es sollte die Blaupause
sein. Die Nachricht, wenn es
diesen Ordner hier drüben hat, bedeutet das, dass
es eine Nachricht sendet Jetzt werde ich das
löschen und ich werde das hier verbinden. Und für die eingehende Richtung wählen
wir einfach die letzte. Ausgang. Y. Und unser Ausgabewert würde unseren letzten Ausgang festlegen Wir müssen auch diesen
Schauspieler hinzufügen, der zerstört werden soll, also werde ich
die Schauspieler zu Destroyer bringen Ich werde das Array ergänzen und
das hier verbinden Wir werden
alles ein bisschen verschieben. Hier, und vielleicht machen wir die
Kabel etwas weniger stark. Sieh schon besser aus. Jetzt, wo all diese
Funktionen passiert sind, sollten wir
alles wieder aufbauen. Wenn ich hier klicke, können
Sie sehen, das führt
mich zum Start,
und das wird so
lange weitergehen, bis diese Bedingung erfüllt
ist oder diese oder
jetzt ein Problem findet. Lassen Sie uns demonstrieren
, was wir geschaffen haben. Ich gehe zur
Variablen Meine Größe und wähle eine Zahl aus. Sagen wir fünf. Lassen Sie uns diese Instanz tatsächlich
editierbar
machen und auf Spone verfügbar machen, damit wir sie bald vom
Hauptmenü aus einrichten können Aber lassen Sie uns das
auch aktualisieren. Lassen Sie uns zuerst kompilieren. Lass uns das auch aktualisieren. Und wir haben hier die Größe eines Labyrinths. Maximal 20 Kacheln, natürlich müssen
wir
das Build-Event auch
nach unserem
Spawn-First-Stil-Event ausrufen nach unserem
Spawn-First-Stil-Event Also werden wir hier
unseren Build und Compile aufrufen. Lass uns gehen. Wir starten vor dem Start
und es hat gebuggt. Warum hat es einen Bug gemacht? Jetzt hat es geklappt. Hier hier hier. Warum ist das eine Sackgasse? Haben Sie wieder Ops hier, das ist eine Sackgasse. Ich komme von hier, ich entferne das. Hier. Irgendwas stimmt nicht mit
den Pfeilen. Gehen wir also zu Lass uns zur BP-Kachel
gehen und lass uns zu unseren
Schnittstellenfunktionen gehen. Ich finde wahrscheinlich einen Ausgang. Schauen wir uns an, was wir in der nächsten Richtung
tun. Wir stellen das Gegenteil fest. Wir fügen hinzu, dass wir vom
Gegenteil kommen. Wir entfernen es
aus dem Ausgang der Listenschlüssel. Wir fügen den Ausgang hinzu und schalten die Pfeiltasten Einkommensrichtung ist vorbei. Ja. Das ist das Problem hier. Siehst du, wir entfernen
die Einkommensrichtung. Wir entfernen eine
Möglichkeit, wie wir aussteigen können. Was wir entfernen sollten, ist zunächst
das Gegenteil der
Einkommensrichtung. Wenn wir also das Spiel jetzt kompilieren, haben
wir zwei Pfeile und
es endet mit einem Pfeil Okay, großartig, und das
bleibt leer. Ebenfalls. Wir haben etwas, das angefangen
hat, ein Labyrinth zu schaffen, ein Wurmlabyrinth, wir fangen hier an Lass uns noch ein paar
Mal sehen, ob es einen Rückzieher macht. Und lass uns wissen, wie viele Teile es sind. 11. Wie wir dieses Maximum sagen. Oh, ich habe das Ende erreicht. Das ist der Grund. Das Ende. Das erraten. Sagen wir fünf. Das ist also Null, Eins, Zwei, Drei oder Fünf. Das ist das Ende.
Deshalb hört es hier auf. In Ordnung. Nein, ich denke, das ist ein
guter Haltepunkt. In der nächsten Lektion
werden wir die Bata-Logik anwenden. Auf Wiedersehen. Wir sehen uns
beim nächsten.
19. Benutzerdefiniertes Backtrack-System: Hallo und willkommen zurück zum
Game Design Workshop und dem Kurs zur echten Engine Five Procedural Dungeon Action ARPs Zuvor haben wir den Start
unseres Algorithmus erstellt ,
unseren entwickelten Algorithmus Wir haben tatsächlich viel geschaffen. Wir haben die
erste Frage gestellt, die
besagt, dass unser Algorithmus die MC-Kacheln
erreicht hat. Dann haben wir ein zusätzliches Kachel hinzugefügt, ein zusätzliches zum
Zähler der Kacheln. Wir stellen einige Fragen,
zum Beispiel, ob unser leeres Nachbarland
um uns herum gültig ist, und wir haben die Position
unserer neuen Koordinaten gefunden, ob sie gültig sind, und
wir spawnen das Kachel Wir haben die Liste der Zerstörungen erweitert, wir fügen die Liste des Dungeons hinzu, wir haben einen neuen Ausgang gefunden und wir bauen weiter Lassen Sie uns nun
mit unserer Bactra-Schleife fortfahren. Oh. Jetzt müssen wir wieder
ein paar Fragen stellen. Lassen Sie uns also Paint öffnen
und diesen Teil
unseres Algorithmus
Lavid genauer erklären unseres Algorithmus
Lavid genauer Nehmen wir nun an, wir haben unseren Dungeon, der gerade erstellt
wird Lass mich das kopieren und einfügen. Irgendwann
kann es nicht mehr schaffen. Es hat versucht, weiterzumachen, und
es gibt keinen Spielraum mehr, um mit den Regeln
, die wir bisher haben,
fortzufahren. Was machen wir also? Wir werden eine
sehr einfache Frage stellen. Wir werden den zufälligen Block
„Wähle 11“ von
den Blöcken, die wir erstellt
haben, unterscheiden und
versuchen herauszufinden, ob es einen gültigen
Ausgang gibt. Aber wir
werden auch noch eine weitere Frage
stellen Wenn wir einen Block
besucht haben
und
von diesem Block aus weiterbauen, bla bla bla a Roa, dann wird er kontinuierlich gebaut und
er findet am Ende wieder Wir wollen nie wieder zu diesem Block
zurückkehren. Also werden wir eine weitere Liste erstellen , in der wir die Blöcke platzieren
, die wir besucht haben. Also werden wir eine weitere Liste
aus den Blöcken erstellen , die
wir besuchen, damit wir sie nie wieder besuchen. Der Grund dafür ist,
dass
aus meiner Sicht ein besserer Dungeon entsteht,
ein verzweigteres Dungeon, als es ohne ihn der Fall wäre Wie dem auch sei, das ist unsere Regel. Lass uns es umsetzen. Um das zu tun,
brauchen wir jetzt eine neue Funktion. Lassen Sie uns nun
eine weitere Funktion erstellen und diese aufrufen. Versuch, dem Truck zu trotzen. Als Erstes müssen wir unsere
Dungeon-Karte duplizieren Ich nenne das Duplikat Z. Ich denke, das ist in Ordnung. Ich werde das
herbringen und ich werde auch unsere Dungeon-Karte
mitbringen Jetzt wähle
ich auf der Karte des Dungeons die Schlüssel aus Und ich werde tatsächlich
die Länge ermitteln. Ich kann ein zufälliges Element direkt
aus dem Array abrufen, und ich werde
eine lokale Variable heraufstufen, die Ganzzahl, den
Out-Index, nicht den Endpunkt. Und ich werde
diesem zufälligen Ort einen Namen geben. Ich werde das hier verbinden. Lassen Sie uns überprüfen, ob dieser
zufällige Ort innerhalb unseres Besuchten
liegt. Ich habe ihn
tatsächlich hier. Standorte. Ich werde
das Essen überprüfen. Ich werde den Schlüssel brauchen
, um herauszufinden, ich
werde es brauchen, ich werde es
einfach holen Es gibt eine Referenz,
ich brauche eine Kopie. Ich hole mir diesen
zufälligen Standort. Warum mache ich das so? Ich werde es
in einer Sekunde erklären. Ich mache das so, weil ich erklären
will , dass ich,
wenn ich das hier angeschlossen hätte, einen neuen Zufallsgenerator bekommen würde. Wenn ich es in einer Variablen speichere, erhalte ich diese
Variable, die ich gespeichert habe. Aber wenn ich von
diesem Knoten hierher komme, dann erhalte ich jedes
Mal, wenn
etwas von dem Zufallsprinzip anfordert, einen
zufälligen Zufallscode. Das Gleiche wäre
passiert, wenn ich eine zufällige Zahl gehabt hätte. Wenn ich zweimal anfragen würde, würde ich zwei
verschiedene Nummern bekommen. Und alle zufälligen Knoten,
wie zum Beispiel ein zufälliger Wertebereich,
funktionieren so. Sie geben
allem, was mit ihnen
verbunden ist, einen anderen Wert . Lass uns weitermachen. Nun,
wenn das wahr ist, dann wollen wir diese
Funktion hier beenden. Also, wir werden eine Ausgabe
haben, und sie wird vom Typ Lean sein, und wir werden sie benennen. Nein. Ich werde das hier
verbinden und den Ausgang platzieren. Nun, weil ich
die Funktion hier beende, heißt
das nicht, dass, wenn
ich Dinge hier habe, sie nicht laufen, wenn
sie falsch laufen. Ich kann viele
Rückgabeknoten innerhalb
einer Funktion haben , je nachdem, wo
die Funktion enden soll. Also. Also, wenn es falsch ist, werde
ich auf die
Nangon-Liste gehen, unsere Dungeon-Karte Ich werde das herbringen. Ich werde D drücken. Ich
werde das hier verbinden. Eigentlich werde
ich das von diesem Getter aus einfach hier reinstellen Außerdem müssen wir aufdrehen, wir
können das Objekt auch kriegen. Und ein sofortiger Fehler. Ich will die
Dungeon-Karte nicht hier haben. Ich will den besuchten
Ort hier haben. Ich suche auf
der Dangon-Karte und füge dem
besuchten Ort etwas hinzu Oh. Jetzt habe ich
dem besuchten Standort den neuen Standort hinzugefügt, von
dem
wir testen, ob er einen Ausgang haben kann. Selbst wenn dieser Ort
keinen Ausgang hat, wollen
wir ihn trotzdem
zu den besuchten Orten hinzufügen. Wie werden wir nun überprüfen
, ob
es einen Ausgang zu diesem gibt? Wir müssen
unsere I Maze Kämme öffnen und
eine neue Funktion hinzufügen und diese Funktion New Exit nennen Ich kompiliere
und speichere die BI-Coms, Mas Coms und gehe zu unseren Jetzt erscheint diese neue
Funktion hier. Diese neue Funktion benötigt
jedoch eine Ausgabe. Wir, lassen Sie uns eine Ausgabe hinzufügen. Es wäre kein Ausgang. Und es benötigt eine weitere Ausgabe
der Ausgangsrichtung .
Nennen wir es. Es wird aus
den Typanweisungen und
den Aufzählungsanweisungen kommen, und jetzt können wir tatsächlich kompilieren und
speichern und dann zur Kachel zurückkehren Das ist eine Funktion. Das ist
kein Ereignis mehr. Ich öffne es und lass uns hier ein paar Dinge
kreieren. Wirklich, weißt du was? Lass uns zuerst diesen Teil
beenden. Und dann werden wir das tun. Also werde ich
den neuen Ausgang als
Nachricht bezeichnen den neuen Ausgang als , weil wir eine Nachricht
senden. Es ist eine Blueprint-Schnittstelle. Und wenn es wahr ist, will
ich kein N,
ich will eine Filiale Wenn das den Wert true zurückgibt, bedeutet das, dass wir keinen Ausgang haben, dann geben wir keinen Ausgang zurück. Wir kopieren den Rückgabeknoten und fügen ihn ein. Wenn das falsch ist, werden
wir den letzten Ausgang
auf die Ausgangsrichtung
setzen , und wir werden
unsere aktuellen Koordinaten
auf W setzen , das ist die Verordnung hier drüben. Lass uns hier ein bisschen zu
Spaghetti Pi vorlesen , geht hierher Hier. Ein bisschen besser. Ich will das machen. Okay. T hoch. Es ist immer gut, sie ein bisschen zu binden
. Nein, wir geben
das mit Löchern zurück .
Wir haben einen Ausgang gefunden. Wir können weiterbauen. Ich denke, wir sollten das hier
verbinden. Nennen wir diese Funktion. Rucksack, der nicht einfach sein
wird
, sondern
eine echte Funktion sein wird. Und wir werden hier drüben
eine Filiale anlegen. Und wir müssen noch
ein paar Dinge tun. Wenn ich nun, sagen wir,
keine Notausgänge platzieren würde, dann
bauen wir mit unseren neuen Daten weiter. Wenn ich von Build aus
starten würde, würde es diese Prüfung
durchlaufen, was wirklich egal ist, aber es würde den aktuellen Kacheln eine zusätzliche
hinzufügen, und wir wollen nicht, dass
das passiert. Also werden wir
ein weiteres benutzerdefiniertes Ereignis erstellen. Und wir werden
es Continue Build nennen und wir werden
es mit dem Zweig
hier drüben verbinden, den wir
für leere angrenzende Gebäude nehmen. Wir werden mit
Build From False fortfahren. Das heißt, wenn kein Ausgang falsch ist, werden
wir mit
unseren neuen Daten
weiterbauen , die hier übergeben
werden. Es wird die Verordnung überprüfen
, die wir erlassen haben, und es wird entsprechend funktionieren Was passiert nun, wenn kein Ausgang wahr ist, wenn
wir keinen anderen Ausgang haben Nun, wir werden
eine sehr einfache Frage stellen. unsere besuchten Orte und die Dungeon-Karte die
gleiche Länge, um das zu tun Ich frage nach der Länge, die uns die
Anzahl der Einträge auf dieser Karte,
dem Array oder dem Set gibt dieser Karte,
dem Array oder dem Set Und wenn diese beiden identisch sind und es keinen Ausgang gibt, dann können wir
das Labyrinth nicht mehr überwinden A Wir werden blinzeln, nur um des
Abhörens willen. Ich kann nicht bauen. Und damit unser Code keine Fehler macht, werden
wir unsere übergeordneten Kacheln setzen. Bis zum Maximum an Stilen, und wir werden Build aufrufen. Das heißt, wenn das
Labyrinth nicht mehr gebaut werden kann, setzen wir unser aktuelles Feld auf
zwei Maximal-Stile und verlassen Basis, in der der
Bau des Dungeons stattfindet Wenn das nicht der Fall ist,
wenn die Karte
des Dungeons nicht den
besuchten Orten entspricht, sollten
wir einfach den Tri-to-Backtrack erneut
ausführen Und das wird kein Problem sein weil es nicht unendlich sein wird, denn jedes Mal, wenn
wir
den Backtrack ausführen und einen neuen Punkt
auswählen, fügen
wir ihn hinzu, um diese Orte zu
besuchen Irgendwann werden diese beiden
Variablen identisch sein. Im Grunde werden sie nicht identisch
sein, weil sie in einer anderen Reihenfolge sein werden, aber sie werden
dieselben Informationen enthalten. Also wird es aufhören und unser Gebäude
verlassen. Ich denke, das ist
genug für diesen. Wir setzen den nächsten fort,
indem wir den neuen Exit-Code eingeben. Wir sehen uns dann. Auf Wiedersehen.
20. Finalisieren von Backtrack-Regeln: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon
Action At Ps Zuvor haben wir unsere
benutzerdefinierten Regeln für das Backtracking erstellt. Wir haben gesagt, dass
wir versuchen werden, einen
Rückschritt
zu machen, wenn wir keinen Nachbarn finden können Oh, wir haben die Schlüssel
für den Kerker, was auch immer gemacht wurde Wir haben den Zufallsindex
aus diesem Array gespeichert , den
wir aus den Schlüsseln erhalten, und wir haben in der Liste
der besuchten Orte überprüft, ob er besucht wurde Wenn es in der Liste
der besuchten Orte steht, verlassen
wir es mit Stürzen Wenn es nicht stimmt, dass
es keinen Ausgang gibt. Also gehen wir das noch einmal durch
, um einen anderen möglichen zu finden. Wenn es nun nicht wahr ist, also nicht in
den besuchten Orten enthalten ist, dann fügen wir diesen Standort
zu den besuchten Orten hinzu . Wir versuchen einen neuen Ausgang zu
finden. Wenn wir keinen neuen Ausgang finden können, geben
wir false zurück und
führen den Vorgang erneut aus. Und wenn wir einen neuen Ausgang finden, haben wir in den Variablen gespeichert, wir haben die Koordinaten gespeichert und gehen wir nach draußen und setzen den Build
von einem neuen benutzerdefinierten Ereignis aus fort. Wenn wir nun versuchen, einen neuen Ausgang
zu finden, überprüfen
wir, ob
es so viele besuchte Orte gibt wie
in der Dungeonliste Es tut mir leid, wenn wir die
Länge dieser beiden Karten verwenden
und wenn sie identisch sind, verlassen
wir das Spiel mit der Nachricht, dass
wir nicht mehr bauen können Wir setzen unsere maximale Anzahl
an Kacheln auf die aktuellen Kacheln und führen den Builder erneut aus. Diesmal
kehrt er von true zurück. Nun sind wir von hier weggegangen, ohne den neuen Ausgang
in der BP-Kachel zu
füllen. Also lass uns das machen. Öffnen wir unsere Funktion new exit , die wir in
der Blueprint-Oberfläche erstellt haben, und fangen wir an, einige Regeln
zu erstellen Die erste Regel, die wir haben sollten,
lautet: Bringen wir den Zweig mit. Lassen Sie uns die möglichen Ausgänge und die Länge ermitteln Ist diese Länge gleich Null? Gibt es zum Beispiel
mögliche Ausgänge? Denn wenn es
keine möglichen Ausgänge gibt, sollten wir vielleicht zuerst nur die
Pfeiltasten Nur für den Fall, dass einige
Pfeile falsch sind. Und dann
kehren wir ohne Ausgang zurück. Nun, falls das nicht Null ist. Hier kommt der
interessante Teil. Wir sind interessant, vielleicht hart. Wie dem auch sei, wir
werden vom Gegenteil ausgehen. Wir werden uns für
ein Rondo entscheiden. Und wir werden den Ausgang nehmen. Ich habe Exit gebracht, ich habe
es aus den Variablen geholt, es
gedrückt gehalten und
hierher gebracht und losgelassen,
was einen Setter bekommt Ich werde das verbinden. Hier. Jetzt machen wir dasselbe wie mit Find Exit, aber mit ein paar Änderungen. Jetzt fügen wir Wegbeschreibungen
hinzu und fügen die Ausgangsrichtung hinzu. Wir werden es zu t hinzufügen und wir werden es wieder
entfernen. Ich werde
es wieder mitbringen. Ich werde einen Tisch von hier herholen. Entferne den Ausgang von
den möglichen Ausgängen. Nächstes Mal können wir
wählen, dass es wahrscheinlich kein nächstes Mal
geben wird, weil
wir diesen Stil so einstellen
, dass wir nie
wieder über unsere besuchten Standorte
besucht werden wieder über unsere besuchten Standorte
besucht Aber wie dem auch sei, nein, wir
gehen zu hässlichen Pfeilen, ich habe in beiden die falschen
Umschaltpfeile aufgerufen Aber ja, es ist in Ordnung. Am richtigsten wäre es, diesen mit
dem gelben Knoten zu machen. Aber lass uns das richtig lesen. Denn wenn wir einen
gelben Knoten haben, bedeutet das Selbst. Das Ziel ist das Selbst und das ist es
im Grunde, das ist es. Es bedeutet, dass du es auf dich selbst
abgesehen hast. Sogar hier hat es sich selbst, aber aus irgendeinem Grund ist
das besser. Und das ist
eigentlich ein Pin, ich habe
den Pin sowieso als Knoten bezeichnet. Wir sprechen von Pfeilen, und dann brauchen wir wieder den
Return-Node. Diesmal haben wir einen Ausgang gefunden. Wir klicken darauf und verbinden den
Ausgang mit der Ausgangsrichtung. So, jetzt bekommen wir
ein paar Informationen. Lassen Sie uns jetzt versuchen, das auszuführen. Wie wir sehen können. Okay. Lass uns
sehen, wie es passiert. Gehen wir zu unserem Event-Graph und fügen wir hier eine Verzögerung ein. Setzen wir eine Verzögerung von 0,2
Sekunden ein. Ja. Das ist in Ordnung. Und lass uns zu unserem
Hauptmenü gehen. Lass uns das größer machen. Machen wir Stapelgrößen. Okay, 200 sind vielleicht
ein bisschen groß, aber sagen wir 100. Sehen wir uns die Größe an und
ich denke,
es würde genügen , zehn mal 10100 Und wenn wir
die negativen zählen, sehen
wir uns zehn an. Also spiel Ich werfe es schon aus
und wir können sehen, wie wir versuchen, unser Labyrinth
zu bauen Ich baue einen Kerker, das sieht man
hier mit Backtrack, Backtrack Wenn du kein anderes
findest, siehst
du, wann es
diese quadratische Form oder Parallele formt, versucht
sie, zurückzugehen .
Da ist sie Ich glaube, das ist von
den letzten Stücken, 100. Nun, soweit
ich das beurteilen kann, es sind 100. Nun, soweit
ich das beurteilen kann,
habe ich das Gegenteil gesagt. Vielleicht sollten wir das ändern,
vielleicht sollten wir
diese Zahl auf diese Seite legen . Okay, gehen wir
dazu, gehen wir zu unserer Kachel. Das ist aus dem Norden, sollte aus dem Süden kommen. Lass es uns noch einmal ausführen. Nein. Okay. Warum? Ich ändere es einfach. Nun, egal. Lass uns rückgängig machen. Was ist hier los? Es ist richtig. Ich drehe
die Kamera um. Mein Fehler. Es ist richtig. Es macht einen Rückzieher, es erzeugt Lass uns versuchen und
ein bisschen testen Setzen wir 1.000. Setzen wir das auf 50. Setzen wir das auf 20,1, also ist es ein bisschen schneller Und lehnen Sie ab und spielen Sie. Raus. Ja. Es schafft ein Level, langsam, aber das tut es. Das wird nicht nerven. Wir
wollten ein bisschen nerven. Machen wir es so, als ob wir 1.000 Teile zusammensetzen
wollen, aber in einem Labyrinth von fünf Also das wird nicht passen. Sehen wir uns dieses Beispiel an. Hier sollte es jetzt heißen , dass irgendwann unsere
Fehlermeldung angezeigt wurde. Ich kann nicht weitermachen. Es wird eine kleine Kiste bauen,
keine Kiste, weil wir dem Buck auf der Spur
sind Es hat die Nachricht gedruckt. Maze kann nicht mehr bauen.
Wie ich das geöffnet habe Ich habe die Kacheltaste gedrückt, die neben einem. Wenn ich das mache, kann ich die letzten Nachrichten
sehen. Wie Sie sehen können, kann
ich auch sehen, was ich gemacht
habe , indem ich zum Beispiel auf den
Hintergrund geklickt habe. Also, wir haben Mace
nicht, aber mehr. Und wir haben diese
kleinen Lücken hier und hier drüben, weil
unser Backtracking nicht
funktioniert. Es hat einige
besuchte Orte, also habe ich mich entschieden, das nicht zu tun Das Problem, das
wir sofort
erkennen können , ist, dass
einige der Blöcke, selbst wenn sie
Zugriff auf andere Blöcke haben, sie nicht den Pfeil haben. Und das liegt daran, wie
die Labyrinthe gebaut wurden. Wir aktualisieren einige Pfeile, aber einige aktualisieren wir nicht Lassen Sie mich Ihnen
dazu ein Beispiel geben. Lass uns Farbe wegwerfen. Nehmen wir zum Beispiel an
, wir bauen ein
Painter-Tool, wir bauen den ersten Block und wir bekommen diesen Ausgang. Jetzt bauen wir
den zweiten Block, und wir aktivieren ihn,
und wir versuchen, von hier aus
zu beenden Also bauen wir diesen Block. Wir aktivieren das
und versuchen, es hier zu beenden. Jetzt aktivieren wir diesen Block. Wir aktivieren hier und
versuchen, den Vorgang zu beenden,
was wir Also das
wird eigentlich nein, wenn es einen Pfeil hat, weil
es versucht hat, hierher zu kommen Es kann nicht bauen, aber
es hat etwas gefunden, also gibt es Zugriff darauf. Versuchen wir nun, von hier aus einen
Rückschritt zu machen. Von hier aus machen wir einen Rückzieher,
also aktivieren wir das. Wir haben versucht, diesen Weg zu gehen. Ups, wir aktivieren das. Nun, wir sind diesen Weg gegangen und wir aktivieren ihn Und wir wollen diesen Weg gehen. Nun, das können wir nicht. Also,
wir aktivieren das, aber nicht
dieses hier. Also wenn das viele Male passiert, wie wir gesehen haben, in dem großen
Labyrinth, das wir gerade geschaffen Wir können sehen, dass das oft passieren
wird, und es entsteht ein Muster dass einige von ihnen so sein
werden, und einige von ihnen
werden so sein, und sie werden das letzte nicht
haben weil das
letzte von
hier kam und es hieß,
sie könnten nicht weitermachen oder
es wurde hier kam und es hieß kein Pfeil gesetzt Es hat einfach versucht, einen Rückzieher zu machen.
Also, lass uns das reparieren Also, unsere Pfeile im Labyrinth
sind tatsächlich korrekt. Aber das werden wir
in einer zweiten Phase tun. Unsere erste Phase bestand darin, einen Wert auf
der Grundlage der uns zur Verfügung stehenden Werte zu
erstellen,
denn 1005 wird, wenn die
maximale Anzahl der Felder nicht passt, immer ein
kastenförmiges Ding
entstehen Lassen Sie uns also etwas Besseres platzieren. Lass uns diese drei setzen und
lass uns das auf 20 setzen. Was es schafft.
Ich habe nochmal nachgesehen. Ja, so etwas
sollte eher ein erstes Level sein. Es hat eine Kleinigkeit, und
dann machen wir weiter, wir können die Anfänge von
Hauptgröße und Kacheln erhöhen. Eigentlich haben wir zu viel gesagt. Ich denke, das ist ein
guter Zwischenstopp, und
das werden wir beim nächsten fortsetzen. Auf Wiedersehen.
21. Verbindungskacheln nach der Labyrinth-Generation: Hallo und willkommen zurück
zum Game Design Workshop,
dem Kurs zur echten Engine
Five-Action-Dungeon-Action-Rollenspiels Five-Action-Dungeon-Action-Rollenspiels Zuvor haben wir
die Funktion „Neuer Ausgang“ erstellt,
sodass wir nach Möglichkeit einen
neuen Ausgang finden, wenn Labyrinth-Generator nach dem Pack-Track-Algorithmus
gefragt Außerdem haben wir
unser Labyrinth im Spiel demonstriert. Und wir finden ein Problem
mit den Richtungspfeilen. Also lass uns das beheben. Gehen wir zum Maigenerator. Ich werde die Emulation beenden und
ein neues Atom-Event erstellen Und ich werde dieses
Event zum Beispiel Dekoration nennen. Nun, Pfeile sind keine Dekoration, aber das wäre
im Grunde unsere zweite Phase. Jetzt
brauchen wir eine Funktion, um
all die
Verbindungen zu reparieren , die keine Verbindung herstellen, die Sinn macht. Ja, lass es uns tatsächlich so
nennen. Repariere Nicht-Ones. Ich setze eine
Klammer, s, Sichtbarkeit. Okay, also was wir tun
werden, um das zu erreichen
, ist, dass wir den ganzen Kerker nach oben
nehmen Wir werden uns alle Schlüssel
schnappen. Und von jetzt an sind
wir ein bisschen langsamer, als wenn wir das alles laufen lassen. Denn von jetzt an werden
wir durchgehen ganzen Dungeon
durchgehen und einige Regeln
hinzufügen Das wäre nicht der
optimalste Weg, und Baupläne wären auch nicht der
optimalste Weg, das zu tun Surplus Plus wäre viel effizienter, um solche
Dinge zu erstellen Aber um die Regeln getrennt zu
halten, können
wir darauf schauen, dass wir den Dungeon viele
Male
durchschauen und bestimmte Aktionen ausführen Jetzt gibt es noch ein weiteres Problem, wenn
zu viele
Aktionen in einer Schleife Es geht darum, wie für die Schleife für
jede Schleife oder für die Anzahl der Schleifen. Es gibt eine Obergrenze , die Unreal erkennt, wenn
es sich um eine Endlosschleife Wenn das zu lange dauert, könnte
Unreal sagen, dass es sich um eine Endlosschleife
handelt Es
zählt also nicht wirklich die Indizes. Es zählt auch, es zählt natürlich
den Index, aber hauptsächlich zählt es wie viele Aktionen innerhalb der Schleife
passieren Das gibt es auch in den
Projekteinstellungen, wenn wir nach einer
Endlosschleife suchen. Anzahl der maximalen Schleifeniterationen. Wie Sie sehen, kommt es auf
Iterationen an. Nun, ich habe mich vielleicht ein wenig
verändert, aber wenn Sie auf ein
Problem mit Endlosschleifen stoßen, erhöhen Sie diese Zahl auf
eine größere Zahl. Ja, ich denke, das
ist eine Höchstzahl. Jedenfalls sind das ein paar
zusätzliche Informationen. Ich glaube nicht, dass wir das ändern
müssen. Ich denke, die Nummer, die
es war, war in Ordnung, aber lassen wir es hier. Wenn Sie auf dieses Problem stoßen, gibt es in
Blueprints auch eine andere Möglichkeit , das System zu betrügen, indem einige Aktionen verzögert
werden Aber wie dem auch sei, lass uns weitermachen. Also werden wir
all unsere Dungeon-Koordinaten durchgehen. Und von diesen
Dungeon-Koordinaten werden
wir nach gültigen Nachbarn
suchen, im Grunde genommen nach gültigen Nachbarn, ob sie zu einem
Dungeon gehören, dem nächsten Und wenn sie das für die Nachbarn tun, dann helfen wir
unserem Block aktivieren die
Pfeilrichtung zu dieser Seite Einfache Aktion, aber
es gibt eine Sache. Wir sollten das
eigentlich nicht auf der ersten Kachel machen. Aber warum nicht? Lass es uns in der ersten Kachel machen. Ebenfalls. Also, was ich
tun werde, ist das L-Element zu nutzen. Wenn ich nicht wollte, dass das
in der ersten Kachel passiert, tut mir leid. Ich wollte nicht, dass
in der ersten Kachel passiert, ich würde das einfach gleich Null machen. Also, wenn das der erste Index ist, tu nichts. Das ist im Grunde das, was wir zeigen
wollten. Also, wenn es der erste
Index ist, tu nichts. Und wir können einige zusätzliche
Regeln haben, wenn es
zum Beispiel der 24. Index ist, tun Sie das nicht. Es gibt aber auch andere Möglichkeiten, Regeln wie
diese effizienter zu aktivieren. Wenn wir nun unsere Funktionen überprüfen, haben
wir nur noch einen leeren Rand. Was wir brauchen, ist das
Gegenteil davon. Lassen Sie uns also
eine weitere Funktion erstellen. Nennen wir es get F. D un adjacent. Nein. Ich glaube, wir rufen diese
Funktion von unseren Ordinaten aus auf. Sie benötigt eine Koordinate , weil wir herausfinden müssen,
was sich hier in der Nähe befindet Wir gehen zu den Eingaben. Wir werden einen
In-Punkt als Variablentyp auswählen. Ich werde das Punkte nennen. Nein, was machen wir mit
diesen Koordinaten? Nun, wir finden das
Kreuz nebenan. Wir haben diesen Fund Socent. Wir bekommen also unsere Rossocent-Liste. Und dann wiederholen wir diese Liste mit einem für Und wir werden prüfen,
ob das enthalten ist. Eigentlich brauchen wir hier
den Dungeon, die Dungeon-Variable, die Dungeon-Map Und ob wir überprüfen können, ob das diesen Endpunkt
enthält. Wenn alle Nachbarn oder
einige der Nachbarn in dieser Liste enthalten sind . Das bedeutet, dass sie Teil des Kerkers sind
. Wenn nicht, dann sind
sie ein leerer Ort. Also brauchen wir eine Karte
, um das auszugeben. Wir müssen jede
Variable auf einer Karte speichern, weil wir die Verordnung brauchen,
und wir brauchen auch die
Richtung, die wir hier kennen, es ist
Nordost-Süd-Nord-Südost-West Unser Indexstrahl
entspricht also Nordost-Nord-Südost-West Jetzt werde ich
eine lokale Variable erstellen. Wir werden sie valide Das
nennen. Welt ernsthaft.
Ja, das ist in Ordnung. , es wird vom Typ
E sein . Und es wird eine Karte sein, und der zweite Schlüssel wäre drin. Wir bringen das
hierher und wählen Hinzufügen. Wir werden unser Bestes tun, um
den ausgewählten Knoten zu bekommen , denn
wenn ich ihn hier auswähle,
werden die Optionen nicht aktiviert. Hier erlaubt es mir nicht, die Optionen hier zu aktivieren
oder zu aktivieren. Also werde ich den letzten Ausgang
mitbringen. Ich werde unseren tatsächlich
anhand des Index machen und AR,
ich gehe zu den Auserwählten. Ich werde
den letzten Ausgang hier verbinden. Das aktiviert die Optionen. Ich werde das hier verbinden und dann werde ich
das trennen. Füge einfach Optionen hinzu. Ich verbinde
das RA-Element und gehe nach Nord-Süd-West. Jetzt wird unsere Liste korrekt
gefüllt. Wenn wir fertig sind, benötigen wir einen Ausgabeknoten, um unsere Ergebnisse zu liefern und diese tatsächlich
zu erstellen. Also werden wir
eine Ausgabe
vom gleichen Typ wie die gültige Nachbarausgabe erstellen . Eigentlich glaube ich, dass ich das
einfach machen kann. Ausgang. Wenn ich hier
etwas per Drag-and-Drop verschiebe, auch wenn ich Rahmen per Drag-and-Drop ziehe. Wenn ich diesen per Drag-and-Drop ziehe, würde
er einen gültigen Knoten
für mich erstellen . Das brauche ich nicht. Ein Ausgang Ein Ausgangspin für mich. Verbinde das hier.
Kompilieren und speichern. Und kommen wir zurück zu unserer Lösung, dass keine
Verbindungsverbindungen sichtbar sind. Ich werde
diese Funktion
hierher bringen , sie wird nebenan gefüllt. Ich werde das hier verbinden. Und von hier aus
werde ich die Schlüssel holen. Ich habe ein Array mit
Nordost, Süd und West, das ich durchziehen kann. Und dann hole ich meinen Kerkerwischer. Ich werde das
aktuelle Array-Element finden. Von diesem Schauspieler
werde ich Aktionen bekommen. Und füge das
entsprechende Element hinzu, verbinde es hier
und setze es auf true. Am Ende schalten wir
also einfach die Pfeile um, was wir am
Ende tun können oder wir können es hier tun Es ist nicht wirklich wichtig.
Es ist dasselbe. Aber was wir tun sollten, ist die Pfeile
umzuschalten. Als Botschaft Weil, wie gesagt, das eine andere Kachel sein
könnte. Es könnte für uns sein. Jetzt haben wir eine BP-Kachel. Es könnte jeder Schauspieler sein. Wenn wir uns dafür entscheiden,
die Variable als Akteur zu
verwenden, werden wir das jetzt nicht tun,
weil es
das Labyrinth durcheinander bringt und es als Botschaft
sein wird Lassen Sie uns nun erklären,
was wir hier für
diejenigen getan haben , die es nicht verstanden haben:
Da das Feld angrenzend ist haben:
Da das Feld angrenzend und wir die Richtungen
durchgehen, stellen wir fest, dass die
Richtung stimmt Wir erhalten also die
Anweisungen, die für die aktuelle Kachel
, die wir gerade überprüfen, angezeigt werden
sollten , und wir aktivieren sie. Wir sagen es ihnen
beim Kompilieren und Speichern
und lassen uns sehen, ob es funktioniert hat. Eigentlich haben wir es noch nicht
aufgerufen, sonst wird es nicht funktionieren. Gehen wir zum ersten Build
und nennen wir unsere Dekorationen, Dekorationsfunktion,
Event, Not Function
und all unsere Verbindungen, die nicht miteinander
verbunden sind. Nun, wenn ich spiele, so weit weg. Wir können sehen, dass es diese Kreuze
geschaffen hat. Nun, wir haben einige Sackgassen , die eigentlich
keine Sackgassen sein sollten, aber wir werden das dort reparieren, wo sie Sackgassen sein sollten
. Das haben sie gemeint.
Wie zum Beispiel hier, denn wenn wir versuchen, etwas
zu platzieren, aktivieren
wir den Pfeil. Das ist der Grund, warum das passiert. Es ist überall passiert, nicht. Also ja. Aber das erste Problem ist behoben. Das erste Problem besteht darin, dass
Dinge, die mit etwas
verbunden sind , immer einen Pfeil haben
sollten. Bevor wir nun weitermachen
und diesen Teil reparieren, zeigen
die Pfeile
nirgendwohin, als geprüft
wurde, ob etwas abgespielt werden kann. Lassen Sie uns die Ladeleiste erstellen. Lassen Sie uns weitermachen und
sehen, wie es aussieht. Also gehen wir zum Laden über. Wir werden die Cvas wählen
und sie wieder sichtbar machen. Kompilieren und speichern,
dann gehen wir zu unserem Labyrinth-Generator
und fügen unsere Wir haben unser festgelegtes Prozent und unsere
Funktion zum Laden von Culk Wir werden diesen Code hier
kopieren und einfügen. Wir werden hierher kommen
und ihn genau hier platzieren. Jetzt bringt es
nichts, es einfach zu platzieren , wenn wir es
nicht verbinden. Also lass es uns verbinden. Das kann ein
bisschen näher kommen und
lassen Sie uns tatsächlich einige
Dinge kommentieren. Auf dem Feld, buchstabierte das Labyrinth. Auf Akten. Haufen. Riesiger Kommentar. Macht keinen
Sinn. Sie können einen beliebigen
Kommentar abgeben. So hilft es mir. Kommentare sind persönlich. Das würde ich besser
verstehen. Lass uns weitermachen. Lasst uns anfangen zu spielen. Das ist genug. Lass uns kompilieren
und speichern und lass uns spielen. Und wir können sehen, dass unser
Laden aber zu
40% gefüllt ist , wenn die
Kacheln fertig sind. Lasst uns aufhören.
Gehen wir zurück zum Laden. Lasst uns diese
unsichtbare Höhle tatsächlich einrichten, kompilieren und speichern und damit
fortfahren, unsere Sackgassen zu reparieren. Was wir also brauchen, ist eine Funktion, die wir vielleicht Winds Sackgassen
nennen werden . Repariert falsche Ausgänge. Ja, repariere falsche Ausgänge. Also lass uns eine Funktion erstellen. Nennen wir es „Fehlausgänge reparieren“. Und lass es uns eingeben. A, das
brauchen wir.
Lassen Sie uns zunächst erklären, was
wir tun werden. Wir werden tatsächlich
das Gleiche tun, was wir hier getan haben. Also lass uns.
Das alles. So wie es hier ist. Aber anstelle von Kabeln werden
wir die Dungeon-Karte verwenden Und wir werden Schlüssel
holen. Schlüssel. Wir werden es
hier verbinden, also werden wir für die gesamte Karte
iterieren Ich habe die Yeah kopiert, ich habe die falsche Funktion Lösche das, lösche das. Ich habe das nebenstehende Feld „Get“ kopiert, aber wir wollten die festen Verbindungen, die keine
Verbindung herstellen. Also werde ich das kopieren, werde Schnellausgänge reparieren Wir werden den ganzen Mist durchforsten und statt
das Feld angrenzend zu bekommen, werden
wir einfach das leere angrenzende Feld bekommen Und hier haben wir noch
keine Koordinaten. Was wir also wirklich tun, ist das hier zu ändern,
und wir werden
mit der rechten
Maustaste klicken und Referenzen suchen, die uns
zu dem Ort führen, an dem wir es verwendet haben. Das ist hier im Build-Bereich, und wir werden die
aktuellen Kabel mit den Kabeln verbinden, weil
wir das hier brauchten, aber wenn wir es
an festen F-Ausgängen verwenden ,
brauchen wir es so Wir werden das hier
verbinden. Jetzt haben wir die
Schlüssel des leeren Nebens und statt t setzen
wir es auf False. Wenn ich Play kompiliere, hat
es nicht funktioniert. Und der Grund ist, dass
wir es nicht verbunden haben. Gehen wir also zurück zu General
May. Gehen wir zum Dekorieren zu VNGraf
und holen uns diese Funktion Repariert falsche Ausgänge. Kompilieren und speichern und los geht's. Es funktioniert irgendwie bei einigen auf einem, oder ich kann mir zwei vorstellen, vielleicht mehr, aber nicht auf allen Aber das ist ein Problem,
das wir im nächsten lösen werden. Ich werde
dich dann sehen. Auf Wiedersehen.
22. Fehlerbehebung und Dekorations-Blueprints: Oh Hallo, und willkommen zurück zum Game
Design Workshop und dem Kurs zur prozeduraler
Dungeon-Action-PCs mit
Re-Engine Five Dungeon-Action-PCs Zuvor, in der letzten Lektion, haben wir die Funktion zur Sichtbarkeit von
Pfeilen, bei denen keine
Verbindungen hergestellt werden, behoben . Diese
Funktion verwendet die Tasten des
gesamten Dungeons, genau wie all Sobald das angrenzende Feld
die Schlüssel aus dem angrenzenden Feld erhält die Schlüssel aus dem angrenzenden Feld und zwar basierend auf der Richtung, aktivieren
wir die
Sichtbarkeit der Pfeile Jetzt haben wir auch
die Funktion get filled adjacent
pure erstellt , die wir benutzt haben, mit der
wir die angrenzenden Felder ermitteln, wir prüfen, welche davon zum Dungeon
gehören, und so wird unsere
Liste Und jetzt haben wir als letztes versucht, die blassen Ausgänge zu
reparieren Also habe ich irgendwie
herausgefunden, warum es nicht funktioniert hat. Wenn wir nebenan leer sind, kriegt
es nur die, die sich innerhalb der Grenzen
des Kerkers befinden Also diejenigen, die sich
außerhalb des Kerkers befinden, nicht wirklich erfasst können wir also nicht nach Sackgassen Mit dieser Funktion können wir also nicht nach Sackgassen suchen,
wenn sie sich im
Randbereich Was wir tun werden, ist, dass es viele Lösungen
gibt. Wir könnten hier ein Buling erstellen , um das in Schach zu nehmen und es
vielleicht nicht zu kontrollieren Wir könnten eine neue Funktion erstellen , die diese Prüfung einfach nicht
hat, aber ich verwende gerne das,
was wir bereits haben Bei festen Fallausgängen bekommen
wir das leere Nebengebäude nicht Wir werden das
Feld tatsächlich wieder angrenzend bekommen. Und
was wir auf dem angrenzenden Feld tun werden, unterscheidet sich grundlegend von dem, was wir getan haben. Also
müssen wir eigentlich nicht viel löschen. Aber was wir brauchen, ist
der Akteur der aktuellen Koordinaten. Also werden wir den Akteur der aktuellen Koordinaten ermitteln, und wir
werden seine Anweisungen ermitteln. Im Grunde genommen werden auf der
Kachel,
in der wir uns befinden ,
die Anweisungen und anhand der Anweisungen die Schlüssel abgerufen. Also, wir brauchen das hier nicht, aber wir brauchen es hier. Anhand der Schlüssel werden wir
überprüfen, ob eine Richtung
hier steht. Hat die Richtung, die wir
überprüfen, eine gültige Nachbarrichtung? Wenn ja, ist alles gut. Wenn nicht, schalten
wir sie aus. Aber das könnte schief gehen. Das könnte hierher kommen.
Verbinde das hier. Das ist ein bisschen chaotisch. Lass mich hoffen. Wie können wir
das besser aussehen lassen? Wir könnten einige
Dinge zu Variablen machen. Ich werde es nur ein bisschen
entwirren. Es ist ein bisschen
klarer als das, was wir sehen. Von jeder Kachel
erhalten wir die Anweisungen. Wir ermitteln die Koordinaten
des Schauspielers. Wir finden es auf
der Gefahrenkarte. Wir holen uns die
Anweisungen des Schauspielers und überprüfen aus allen Richtungen, ob jede
Richtung einen gültigen Nachbarort hat. Das ist ein bisschen
schwerer, aber es ist in Ordnung. Wir kompilieren und speichern die ID,
verbinden die Summenpfeile miteinander, also müssen wir das verbinden Der Schauspieler, den wir überprüfen. Die Überprüfung des Akteurs erfolgt über die Pfeiltasten, die
Konformität wird gespeichert. Lassen
Sie uns überprüfen, ob es diesmal funktioniert. Scheint zu funktionieren. Nun zur reinen Überprüfung,
präzise, denn das Problem
waren die Ränder des Labyrinths Geben wir 202.000 2000
e Hundert an, was auch immer. Riesige Zahl,
es entsteht also eine Kiste. Also überprüfen wir nur die Kanten. Sie haben Pfeile und
jetzt sind sie weg. Und jetzt haben wir mit den Pfeilen
klarere Anweisungen , wohin wir
gehen können und wohin nicht. Ich denke, es ist an der Zeit
, damit anzufangen, das Ganze mehr wie einen
Kerker mit Wänden, Requisiten,
Zielen und allem
aussehen Requisiten,
Zielen und Also werde ich das schließen. Wir werden das auf 20
zurücksetzen. Wenn es okay aussieht,
denke ich, es sieht okay aus. Wir können ein paar Zimmer haben, wir können einen
Drehpunkt und einen Endpunkt Also, wie werden wir das machen? Es gibt viele Möglichkeiten andere Kacheln zu spawnen,
es gibt Möglichkeiten,
Räume innerhalb von Kacheln zu spawnen Wir werden einige Möglichkeiten
demonstrieren. Im Moment werden wir
zu unserer P-Kachel
gehen. Schließ diese Pfeile. Und ich werde hier einen Kinderdarsteller hinzufügen. U Ist es Schauspieler, was im Grunde bedeutet, dass wir diesem Plan
eine weitere Blaupause
hinzufügen können diesem Plan
eine weitere Blaupause Für unsere Zwecke
wird es verwendet, um
einen Blueprint zu haben , der
alle Dekorationen in
einem enthält, und wir aktivieren und
deaktivieren einige davon Irgendwann habe ich
über Referenzen,
harte Referenzen und
weiche Referenzen gesprochen harte Referenzen und
weiche Referenzen Eine kurze Erklärung
wäre, dass es um die Verwaltung von Abhängigkeiten
und die Speichernutzung geht. Eine harte Referenz zeigt
direkt auf
das Asset oder Objekt und
stellt so sicher, dass es immer in den Arbeitsspeicher
geladen wird. Es wird
diesen Speicherplatz belegen Gehen wir
zum Beispiel zu unserer Ebene. Gehen wir zu Sis Map. Wir können die Abhängigkeiten sehen , die für die Ausführung immer erforderlich sind. Es erfordert, dass ich nicht viel hinzugefügt
habe, aber wir können, es erfordert der Brick Clay
immer im Speicher
ist, es erfordert, dass sich die Vegetation, Skript-Engine im die
Skript-Engine im
Speicher befindet, basierend auf den
Assets, die wir verwendet haben, auf unseren Kacheln
referenziert Im Grunde. Hier der Boden, die Wände,
alles, was durch das Labyrinth
referenziert und in einer Variablen gehalten wird Wenn ich zum Beispiel hierher gehe
und das zu einem weichen
Hinweis auf den Spielmodus mache Das heißt, wenn ich
diesen Labyrinth-Generator auf
einer anderen Map ausführe diesen Labyrinth-Generator , die diesen Spielmodus nicht
hat Natürlich werden an den Stellen, an denen ich ihn verwendet habe
,
einige Fehler auftreten,
aber er wird nicht in den Speicher geladen also nicht alle Abhängigkeiten
des Spielmodus werden also nicht alle Abhängigkeiten
des Spielmodus in
den Speicher geladen , weil ich den Spielmodus nicht
aufrufe. Wenn ich innerhalb von DOA
in den Spielmodus
gecastet hätte, was wir am Anfang tatsächlich haben, würde
das alles negieren, weil Casting das
Laden in den Speicher zwingen würde Würde den Blueprint zwingen,
den Top-Down-Spielmodus in
den Speicher zu laden den Top-Down-Spielmodus in , weil ich ihn caste und
er ihn hält Aber wenn ich diese Besetzung nicht
hätte und das nur eine weiche Referenz wäre, würde
sie nicht geladen werden Softreferenzen
enthalten also im Grunde eine Referenz auf das Asset oder Objekt, ohne es sofort in den Speicher zu
laden,
bis es aufgerufen wird. Dabei werden viele
Optimierungen vorgenommen. werden wir nicht tun.
Es ist wie man so schön sagt, wenn Sie ein Problem haben,
schauen Sie im Profiler Das ist immer die
Regel. Erstellen Sie sie und suchen Sie dann nach den Problemen Für uns glaube ich nicht, dass
wir irgendwelche Probleme haben werden. Jetzt werden wir diesen Kinderdarsteller
brauchen. Und es wird alle Referenzen für
alle Artikel enthalten, die
wir benötigen, um sie
an einem Ort aufzubewahren und zu zeigen,
wie wir sie verwenden. Ein besserer Weg wäre es,
einfach zum Beispiel
alle darüber liegenden Requisiten zu besitzen , die
wir dann auch
in einigen anderen
Sonderwerten zeigen werden in einigen anderen
Sonderwerten Lassen Sie uns nun diesen Kinderdarsteller
kreieren.
Wir gehen zum Inhalt über. Wir gehen zu Blueprints, wir
klicken mit der rechten Maustaste und wählen
eine Blueprint-Klasse
und dann den Schauspieler aus Und wir werden das BP Decorations
nennen. Nennen wir es BP Decorations. Ich archiviere, ich werde
alles speichern und lass es uns öffnen. Ich werde
es jetzt hier neben die Kachel legen. Ich werde das schließen,
denn da wir eine direkte Dekoration
haben,
werden Fliesen ein Kinderspiel sein. Wir haben direkten Zugang
zueinander. Jetzt gehe ich
zur BP-Kachel und wähle die Dekorationen, BP-Dekorationen aus. Lass uns ein paar Wände hinzufügen. Zuallererst werde ich
einige statische Netze hinzufügen , eigentlich
alle Ich nenne
sie Wall, sagen wir Wall N North ist Wall for South, dann alles für Ost und Wall W für West. Und was ich tun werde,
ist, zum
Konstruktionsskript zu gehen und
jede dieser Variablen hierher zu bringen . Während ich
die Kontrolle behalte, werde ich
besser . Nur zur Erinnerung Und ich werde Ray machen. Speichern Sie sie als Informationen
in einem Array für die spätere Verwendung. Ich werde für
diese Variable werben, ich werde sie Wände nennen. Und ich werde das mit
dem
Konstruktionsskript verbinden . Kompilieren. Lass uns jetzt ein paar statische
Nachrichten an die Wände hängen. Ich werde sie alle auswählen. Und ich werde zu unserer Liste gehen. Ich werde kontrollieren und ein bisschen
reinzoomen und
warten, bis das verschwindet. Okay. Wir, das ist es. Kombiniert 67a9 67. Ich glaube. Ja, das
sieht so aus. Lass uns sie platzieren und sie voneinander trennen. Oh, wir können sie voneinander trennen. Wir können sie hier sehen. Wenn Sie zwei Bildschirme haben, ist das vielleicht
etwas einfacher für Sie. Aber ich werde das
so haben . Ich werde das haben. Das und ich werde sie
auf
die richtige Seite bewegen. Nehmen wir an, das ist
die richtige Seite. Ich werde die
Werte danach korrigieren. Ist wirklich die richtige Seite. Das ist die Nordwand, also wäre es hier irgendwo um
90 Grad. Das ist genug der visuellen Platzierung. Das stelle ich
wieder hier auf und überprüfe
die Koordinaten 0390 Runden wir es auf 400 auf. Wäre es nett minus E -400. Überprüfe Ja. Es ist in Ordnung. Dekorationen, und
ich werde diese Station auf
dieser Seite wechseln , glaube
ich, und der Standort wird das Gegenteil davon
sein. Ich werde den Ort kopieren und
einfügen nur entgegengesetzte Wege negieren Und ich werde zur Mauer gehen. Hundert 100. Das wären 100
oder Hundert-400. Nimm die Achse. Etwas stimmt nicht. Das sollte das
Gegenteil von 400, 400 Was sein. Jetzt haben wir Wände. Jetzt.
Oh, ich kompiliere und spiele. Jetzt haben wir Kanten, ein paar Wände. Ich denke, das ist ein guter
Haltepunkt für diesen. Im nächsten Fall werden
wir
den Weg frei machen. Wir sehen uns
beim nächsten.
23. Platzieren von Wänden auf der Grundlage von blockierten Pfaden: Hallo und willkommen zurück
zum Game Design Workshop, dem Kurs zur Real Engine Five Procedural Erstellung von
Real Engine Five Procedural
Dungeon Action RPCs Zuvor hatten wir als
Kinderdarsteller das
Dekorationsplättchen über unserem
Blupin-Plättchen hinzugefügt als
Kinderdarsteller das
Dekorationsplättchen über unserem
Blupin-Plättchen Wir haben
für diesen Kinderdarsteller die Klassen-BP-Dekorationen verwendet, und wir haben eigentlich
zuerst die BP-Dekorationen entworfen Wir haben einige Wände hinzugefügt
und es zu einem Array
im Bauskript hinzugefügt. Nun haben wir, um ehrlich
zu sein, auch
die große
Fehlausgangsfunktion debuggt, bei der wir uns entschieden haben, ein anderes System als das , das ich eingangs beschrieben
habe,
zu verwenden das ich eingangs beschrieben
habe,
zu Dieses Mal geht es nur darum die Richtungen der Kachel
der aktuellen Kachel zu ermitteln, die
wir überprüfen, aus den
Richtungen zu ermitteln, ob es
eine gültige Nachbarschaft
zu dieser Richtung gibt , und wir legen die Falsch zu sein, um in
der Darstellung von Pfeilen auszuschalten,
und wir verdoppeln Pfeile und wir verdoppeln Nun, und um ehrlich zu sein, können
wir
diese beiden Funktionen vor dem Dekorieren
hierher
verschieben diese beiden Funktionen vor dem Dekorieren
hierher Und lassen Sie uns auch die
Ladeleiste vorantreiben. Unser Geschmack Nehmen wir an,
das sind weitere 5%, also gehen wir zum Nullpunkt Das Leben. Und dann
gehen wir dekorieren. Wie Sie sehen können, werden
wir von nun an nur noch abschätzen, werden
wir von nun an nur noch abschätzen was eine Aktion ist und wie viel Prozent
des Ladevorgangs sie benötigt. Es liegt an uns. Es
liegt an unseren Tests. Wie gesagt, es gibt
kompliziertere Methoden zu tun und
es als Prozentsatz anzugeben, aber dafür wären viele
Berechnungen und viel mehr Code erforderlich . Gehen wir nun zurück zur
Reparatur unserer Dekorationen,
unserer Wände, um einen
Grundriss für unser Labyrinth zu haben Dazu gehen wir
zu unserem B-Labyrinth-Generator. Wir gehen zu Even Graph, gehen zu Dekorationen,
jetzt wo es leer ist, und lassen Sie uns
eine weitere Funktion erstellen Nennen wir das Basis-Layout. Nennen wir diese Funktion hier. Geben wir diese Funktion ein. Und was wir tun werden,
ist ziemlich einfach. Wir werden jeden Schauspieler anrufen , um jedes Kind zu
beauftragen, etwas zu tun, und das wäre, die Wände zu verstecken, basierend auf den Anweisungen, die
wir hier haben. Also werde ich diesen
Child Duct in Cors umbenennen. Und was ich tun werde
, ist, wie gesagt,
jetzt, wo wir wissen,
dass dieser Schauspieler
ein Kind dieses Schauspielers sein wird,
wir einen direkten
Bezug darauf haben können,
was bedeutet, dass
ich zu Beginn des wir einen direkten
Bezug darauf haben können,
was bedeutet, dass
ich zu Spiels Fork anrufen werde Ja. Schauspieler. Und dann werde
ich auf BP-Kachel casten. Nun, das schafft eine Abhängigkeit. Nun, diese Dekoration
muss den BP-Kachel
als Hauptdarsteller haben. Wenn nicht, dann wird
es nicht funktionieren. Das
sind Abhängigkeiten im Grunde. Oh, ich werde
das zu einer Variablen heraufstufen. Wir wissen, dass es kein Fehler ist. Es wird immer erfolgreich sein. Und tatsächlich
werde ich auch
eine Abhängigkeit von der BP-Kachel
des Labyrinth-Generators erstellen eine Abhängigkeit von der BP-Kachel
des Labyrinth-Generators Und ich werde
diesen Generator blau nennen, und ich werde
vom Typ Generator sein Oh, wie haben wir es
Maze Gen Mazen BP Maze
Gen Object Reference genannt Maze Gen Mazen BP Maze
Gen Nun, warum das
eigentlich keine Rolle spielt. Da wir
ein Plättchen spawnen werden und es durch den
Labyrinth-Generator
spawnen wird ,
dann erzeugt das Casting hier im Speicher nicht viel Aufhebens Es wird gecastet, was
eine schwere Last ist, weil es die
Klassenreferenz in der Klasse abfragt, aber sie wird bereits in den Speicher geladen Weil die Kacheln erscheinen bevor
die Dekorationen erscheinen Lassen Sie uns nun
diesen Generator erstellen. Lassen Sie
uns dafür sorgen, dass er tatsächlich
editiert und beim Spawn verfügbar ist . Wir müssen also nicht casten oder
so. Wir können einfach zu
unserem Labyrinth-Generator gehen, wir gehen zu unserem Event-Graph und wir gehen zu unserer
Spawn-Kachel, die hier ist Wir werden das zurücksetzen,
weil es nicht aktualisiert wird. Habe ich nicht kompiliert? Ja, ich habe nicht kompiliert. Und ich werde es
tatsächlich tun, da ist ein B. Jetzt, als ich das geöffnet habe, es einen Besitzer entdeckt. Ich könnte das selbst benutzen und
dann hier beim BP-Besitzer. Besitzer, dann könnte ich das auf den Generator übertragen und es so
machen. Aber ich bevorzuge die Art
der Enthüllung beim Spawn. B bis 4 Ich werde es
selbst löschen. Und wie Sie jetzt sehen können, wurde beschlossen, es zu aktualisieren. Also werde ich es
selbst mit dem Generator machen. Und jetzt haben wir eine direkte
Referenz, wenn es um Pfoten geht. Es gibt nur ein Plättchen
, das es nicht hat, und zwar ein Plättchen, das zuerst mit dem
Löffel beginnt Das muss also auch mit der
Zelle auf der ersten Kachel
und dann auf unserer erstellten Schleife
aktualisiert Zelle auf der ersten Kachel
und dann werden. Wir müssen
auch die P-Kachel von Son Actor P aktualisieren , um den Generator als eigenen zu haben. Gehen wir nun zurück
zu unseren Dekorationen, kompilieren und speichern, eine weitere Funktion
erstellen und diese Funktion aufrufen. Sagen wir, Wände verstecken. Ohne diesen zusätzlichen Teil. Okay. Jetzt holen wir
uns unsere BP-Kachel und wir werden Wegbeschreibungen
abrufen, und wir werden
die Schlüssel von den Schlüsseln abrufen, wir werden für jede Schleife eine
Schleife bilden. Dann werden wir
die einfache Frage stellen. Wir werden den
Wert von P herausfinden und fragen, bist du sichtbar oder nicht? Nun, das Problem tritt auf, wenn
wir unsere Wände angeordnet haben und wir sie alle
durchgehen werden. Und woher wissen wir
, welche Mauer welche ist? Okay, wir haben den Namen, wir haben sie in einer Reihenfolge. Aber was ist, wenn ich
sie in die falsche Reihenfolge gebracht habe? W Ich muss immer
die Reihenfolge der einzelnen Arrays überprüfen, und wenn sie übereinstimmen, nein. Es gibt noch einen anderen
wirklich einfachen Weg. Wir können zu jeder
Wand gehen und einen Zug anbringen,
etwas, das man Schlepper nennt Also suche ich ein
paar Details nach und drücke
auf das Ich gebe zum Beispiel
für die Wand N, N Tug ein. Und für die Wand S setze
ich den S-Zug für die Wand E. Ich werde den Zug setzen
und für die Wand W werde
ich den W-Zug setzen Warum habe ich diese Namen gewählt? Weil sie unserem String-Array entsprechen
, im Grunde unserem, tut mir leid, nicht String-Array
unserem Aufzählungs-Array Oh, ich werde
überprüfen, ob das hier
ist. Ich werde
diese ist. Ich werde Aufzählung im Grunde in eine Zeichenfolge
umwandeln Es gibt eine Zeichenfolge, und das gibt uns den Namen von de enumerator zu einem Und was ich tun kann, es gibt einen Knoten, der Component at
heißt Ich werde das hier verbinden. Es wird es automatisch in einen Namen konvertieren. Wählen Sie außerdem aus, ob das Bauteil den richtigen Zug
hat
, den wir überprüfen, Sie dann dessen Sichtbarkeit Eigentlich geht es um Gewinn,
nicht um die Sichtbarkeit. Denn wenn wir die Sichtbarkeit machen, dann ist es ein bisschen weniger optimal. Aber was wir zu neues
Verborgenes haben, wäre wahr. Was wir auch tun müssen, ist, ihre Kollision ebenfalls
einzustellen. Auf keine Kollision. Denn wenn wir das
nicht tun würden, hätten
wir unsichtbare
Wände, die uns blockieren würden. Was sind Tags? Im Grunde ist es ein System
zur Identifizierung von Objekten, um Identifier für Objekte zu erstellen das weniger schwer ist, zum Beispiel, dann ständig
zwei zu werfen, alle Schauspieler zu bekommen, und im Vergleich dazu, Schauspieler
zu bekommen oder wenn die Überprüfung eines
bestimmten Objekts ein Tag hat Es kann zu Komponenten hinzugefügt werden. Es kann sowohl zu Schauspielern als
auch zu Klassenvorgaben hinzugefügt werden. Sie können sehen, dass es ein Tag gibt , das für das Actor-Tag zählt Die Frage wäre also nicht
Komponente hat Tag, sondern Schauspieler hat Tag im Vergleich zu dem, was wir
gerade nach Komponenten suchen. Also, eine kleine Erklärung
für das, was wir wieder gemacht haben Wir bekommen jede
Richtungsliste , die beide Informationen enthält,
ob sie ein- oder ausgeschaltet sind, wir iterieren
die Liste Dann durchlaufen wir jede Wand für jede
Iteration der Liste Diese Schleife innerhalb einer Schleife wird im Grunde
eine verschachtelte Schleife genannt verschachtelte Schleife Also durchläuft jede Komponente
dieser Schleife
etwas anderes, und wir prüfen,
ob die Komponente der Wand
das Tag der Aufzählung hat ,
die wir in eine
Zeichenfolge umgewandelt haben Stimmt. Korrekt hier. Wenn es das Tag hat, existiert es. Und wenn der Wert wahr ist, denn wenn der Wert wahr ist, bedeutet das, dass es keine Mauer gibt, bedeutet das, dass unser
Pfeil sichtbar ist. dass unser Pfeil sichtbar ist, wir schalten die Wand aus. Wenn wir jetzt spielen, verbinden wir
zunächst diese Funktion. Wir haben uns
tatsächlich verbunden, nicht wahr? Ja, haben wir. Okay.
Das ist leer. Wir sind noch nicht durch unseren
ganzen Kerker gegangen, also Kerker Diesmal werden
wir die Werte bekommen, nicht die Schlüssel Also werden wir
jeden Akteur
durchgehen , nicht Wir werden eine Schleife machen. Dann
werden wir von der Vierschleife aus operieren, und das wird das letzte sein. Dann werden
wir uns von hier aus verstecken. Jetzt müssen wir casten. Jetzt siehst du, wir
müssen das,
was wir als
Dekoration bezeichnen, gießen ? PP. Sie sehen, jetzt kann ich nicht zwei BP-Dekorationen
gießen. Ich kann es nicht finden, weil
Decorations ein Kinderdarsteller ist. Es gibt eine Komponente für
Kinderdarsteller zurück. Also müssen wir
Actor als Kinderdarsteller finden. Also das ist eine Komponente und es ist eine Komponente
von Child Actor
, der zwei
BP-Dekorationen bekommen hat. Das ist also die Zelle, und das ist, was in der Zelle ist. Ich werde zu
einer reinen Besetzung konvertieren, diese hier, und ich werde Fledermäuse verstecken. Im Grunde ist es das. Es scheint also eine
einfache Funktion zu sein. Es ist schwer, weil es all diese Informationen
hat, es braucht den Schauspieler, dass es ein Kind braucht, dass wir
das Kind casten müssen,
um die Dekoration zu bekommen, und hier drinnen
machen wir auch noch viel mehr Dinge. Also etwas, das hier
und optimal aussieht , wird es am Ende vielleicht
nicht sein. Kompiliere und speichere
und lass uns spielen. Und jetzt haben wir eine schöne Gegend. Ich denke, das ist es für diesen. Ich sehe dich als Nächstes. Auf Wiedersehen.
24. Standardkorridormuster: Hallo und willkommen zurück
zum Game Design Workshop,
Real Engine Five, Procedural Dangon Action BZ In der letzten Lektion haben wir einige Referenzen
des Generators
zur Kachel und die Kachel zum Kinderdarsteller
hinzugefügt , also den BP-Dekorationen,
und wir haben die Funktion „Wand
verstecken“ entwickelt, die im Wesentlichen
die
BP-Kachel BP-Dekorationen,
und wir haben die Funktion „Wand
verstecken“ entwickelt, die im Wesentlichen
die
BP-Kachel Sie erhält die Anweisungen von ihr
und aus der Richtung, in der sie durch die Tasten
floppt,
findet heraus, welche Tasten sichtbar sind und blendet die Wände Und schließt auch die Kollision. Wenn wir
das Labyrinth so gestalten, können wir sofort feststellen, dass
es ein
bisschen flach ist. Es gibt keine Möglichkeit,
nach rechts und links abzubiegen. Es ist ein offener Bereich
, den
wir natürlich mit
einigen Räumen und einigen Requisiten dekorieren könnten, und er würde gut aussehen Aber lassen Sie uns ein bisschen komplexer machen, wohin der
Spieler gehen kann und wohin nicht Um das zu erreichen, werden wir
unsere bestehende Funktion
„Lasst uns aufhören
zu spielen“ ein wenig aufrüsten . Von fester
Verbindung ohne Verbindung. Im Moment nehmen
wir jeden Block und sagen, du blockierst, bist jeden Block und sagen, du blockierst, du
an irgendeinen anderen Block gebunden? Und wenn die Antwort ja ist, dann setzen wir
die Sichtbarkeit des Pfeils auf sichtbar
in Richtung des anderen Blocks. Was wäre, wenn wir fragen könnten, ob es noch einen Block
gibt und ich in
seine Richtung zeige, würde ich dann einen Pfeil erstellen? Lass uns zum Beispiel malen gehen. Antwort: Wenn unsere Blöcke das
hier drüben mit Pfeilen machen, dass sie nach dem nächsten Raum
suchen, dann erschaffen
sie das Gegenteil, sie
suchen nach dem nächsten Raum, sie erschaffen das Gegenteil, sie
suchen nach dem nächsten Raum. Und wieder
erzeugen sie das Gegenteil, aber jetzt bleibt uns nur noch das. Aber wenn wir
den Code ändern,
anstatt wenn Sie einen Block haben, dann
öffnet dieser Block einfach diesen Pfeil. Also verbinden wir alle Pfeile,
die die Labyrinthe darstellen, und versuchen herauszufinden,
ob es noch einen Block gibt Wenn hier zum Beispiel ein Block
wäre
und er dann
so weitergemacht hat und nie versucht hat, und er dann
so weitergemacht diesen Weg
zu gehen, sagen wir, er
käme von hier, haben wir hier einen weiteren Block Und dann hat es
versucht, diesen Weg zu gehen. Es hat nicht versucht, diesen Weg zu gehen, also gibt es hier keinen Pfeil. Also im Grunde behalten wir unsere schlangenwurmartigen
Muster der Ma bei. Um das zu tun, müssen wir hier
eigentlich nur ein paar Dinge
hinzufügen. Wenn wir also durch die
verfügbaren Nachbarblöcke
iterieren, werden
wir unserem ursprünglichen Block in diese Richtung
zeigen O-Block, den wir vom Dungeon
Mac aus testen. Landkarte. Dann müssen wir diesen Block
aus den gültigen Blöcken finden. Ich werde
diese Wertbasis ermitteln, den Wert, den ich überprüfe. Davon ausgehend werde ich den Kerker nutzen , um
den passenden Schauspieler zu finden Jetzt gehe ich in
entgegengesetzte Richtungen, weil wir wollen, dass der entgegengesetzte
Pfeil erscheint Und ich werde mich wieder
von den anderen Elementen abwenden. Diese entgegengesetzte Richtung. Ich werde mich hier verbinden. Anstatt es immer wahr
zu haben, werde
ich es einfach so machen
wie im Wegweisungsblock. Lassen Sie uns jetzt
die Zeilen hier klarstellen , weil
es zu viele sind. Mach das Original,
wir werden hier eine Verbindung herstellen. Vielleicht hast du hier auch weniger. Denn hier brauchen wir nur
einen, wir brauchen nicht zwei Vielleicht können wir das alles lokal
variabel machen. Angrenzend. Nun, das ist bei den
Dingen hier nicht
wirklich nötig. Hier. Hier. Ich
brauche keine Leitung mehr. Ich kann kaputtgehen. Hier. Jetzt ist es ein bisschen besser. Es könnte viel
besser werden, wenn wir
das so variabel bewerben und uns mit allem
verbinden würden. Aber ich finde es lesbar. Erstens, geh ein bisschen näher. Ich denke, es ist viel
lesbarer als möglich, als
es jetzt sein kann. Also, mal sehen, ob das funktioniert hat. Kompilieren. Lass uns zuerst. Jetzt können wir sehen, dass wir einige
Orte haben, die abgesperrt sind. Aber die meisten Orte sind es. Wir haben Korridore, das haben
wir wirklich, da muss ein
Irrtum vorliegen, denn sie sollten zugänglich sein Geben Sie mir eine Sekunde, um das zu überprüfen. Ja, das ist so, ich drehe
die Pfeile
nicht richtig Ich schalte die Pfeile im ersten
Prüfblock um. Ich schalte die Pfeile
im zweiten Prüfblock nicht um. Also wenn ich das
hier tatsächlich verbinde. Könnte behoben werden. Du wirst ein paar Höhlen
haben. Dieser Grund ist eine Aktion, die ich überprüfe. Oh ja, ich füge in derselben
Richtung hinzu, die ich überprüfe. Also werde ich die
Anweisungen von hier aus abrufen. Wir wollen, dass die Richtung zu
den Richtungen
des gegenüberliegenden Blocks hinzugefügt wird. Nicht der, den wir
gerade überprüfen, sondern derjenige, der auf diesen Scheck
reagiert. Dieses Add hat also die Richtungen des
Feldes neben dem Schauspieler. Kompiliere auch und V, es funktioniert. Das einzige, was nicht
funktioniert, ist die erste Kachel. Sei auf dem ersten Plättchen, wir schalten die Pfeile nicht um Also lass uns das machen. Wir gehen zu unserer
Funktion auf der ersten Kachel. Und wir werden es in den Bereich
ziehen. Und wir werden Schlüssel holen. Und jeder. Eigentlich können wir, wir
müssen sie nicht alle durchgehen. Wir brauchen eine For-Schleife. Wir können diesen einfach
als Kompilieren hinzufügen und erneut speichern. Und jetzt ist es viel
praktikabler. Lass es uns noch einmal überprüfen. Ja, wir haben ein schönes Labyrinth
und wir können sehen, dass es einige Wände
gibt , die einen
Pfad bilden Jetzt. Der nächste logische Teil
wäre, wenn wir unser Labyrinth haben, wir haben einige Horden,
einige Pfade, die
größtenteils blockiert werden können,
einige Teile, die nicht gesperrt sind, der nächste Schritt wäre,
einige Regeln für die acht Räume hinzuzufügen einige Regeln für die Aber da wir
wollen, dass ein bestimmter Raum ein Ausgang ist und einige
bestimmte Räume
zum Beispiel eine Truhe sind, in der sich der
Ausgangsschlüssel befindet Es wäre klüger
, den ersten Platz im Labyrinth zu nehmen. Wenn ich zum Beispiel hier einen Raum
einrichte, dann schränkt das stark ein,
wo ich die Schlüssel unterbringen kann Das heißt, ich habe gesagt, dass
die Schlüssel in diesem Feld sind, dann teilt der Raum diese
Bereiche plötzlich automatisch ein bisschen besser auf. Wenn ich also Blöcke
verteilt habe , die für Räume nicht geeignet sind, sollte ich mich mit Logik auskennen Die ganzen Räume erstellen.
Sie sind es jedoch. Sei es, dass sie mehr Platz draußen haben
können. Wenn Sie eine Karte
haben, auf der Sie Orte mit X haben, die
nicht hier platziert werden, wird dadurch stark eingeschränkt, wo
Räume gebaut werden können. Also so werden
wir es machen. Und ich denke, das ist vorerst ein guter
Haltepunkt. Im nächsten Schritt werden wir
den Bauplan für
den Aufzug
und die Truhe erstellen und dann
einen Weg finden, sie zu spawnen Das war's vorerst. Tschüss.
Sing dich beim nächsten.
25. Raumbau und Aufzug-Blueprint: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir
unsere Funktion für
den Pi, der keine
Verbindungen herstellt, aktualisiert , anstatt uns in jedem Block
nach einer gültigen Feldposition
umzusehen, einer
Position, die
zum Labyrinth
gehört, um zu überprüfen,
ob dieses Feld tatsächlich nach
den Feldpositionen sucht Position, die
zum Labyrinth
gehört , um zu überprüfen,
ob dieses Feld , aber wir überprüfen jetzt,
ob diese Feldposition, unser Block, den wir überprüfen, einen Pfeil darauf
hat, sollten
wir aktiviere den entgegengesetzten
Pfeil zu dieser Position Lassen Sie uns also im Grunde Farbe und zum
Beispiel gelbe Farbe von Neda
mitbringen Beispiel gelbe Farbe von Neda Wenn
unser Block zum Beispiel einen Pfeil
zu dieser Seite hätte, und sagen wir, einen Pfeil
zu dieser Seite, und der gegenüberliegende Block hätte einen Pfeil zu dieser
und dieser Seite, jetzt unser Block, der
von hier zu diesem Block prüft Das ist die Prüfung
, die gerade durchgeführt wird. Da steht, ich habe einen
Pfeil auf dich gerichtet. Hast du einen Pfeil auf mich gerichtet? Wenn nicht, dann
erstelle einen Pfeil. Außerdem, wenn er keinen
Pfeil hat
und dieser einen Pfeil hat, wird
er tatsächlich
ausgeschaltet, weil wir ihn gesetzt haben. Wir haben ihn hinzugefügt,
nicht gesetzt, weil AD
ein Setter für Maps ist , wenn
der Wert existiert Wenn ich also keinen Pfeil habe, dann haben Sie auch keinen Pfeil weil wir das Ergebnis
anhand unserer Anweisungen im
ursprünglichen Prüfblock erhalten anhand unserer Anweisungen im
ursprünglichen Prüfblock In diesem Fall
haben wir gesagt, dass wir
weiterhin
einige Blöcke in unserem gesamten Labyrinth bauen werden einige Blöcke in unserem gesamten Labyrinth , sodass wir keine Räume haben werden, so wie wir den
Aufzugsblock und den Kastenblock, die Kiste mit
dem Schlüsselblock haben Kiste mit
dem Schlüsselblock Es ist also einfacher, in
den Regeln zu sagen, dass, wenn wir, sagen
wir, zum Beispiel,
wir wollen, dass der Aufzug in den letzten Blöcken ist den letzten Blöcken Nehmen wir an, das ist die
letzte Kiste, setzen L hier ein, letzte Kiste, und wir wollen die
vorletzte, die drittletzte. Nehmen wir an, wir wollen, dass sich die
Box
, der Aufzug , in einem
dieser Räume befindet. Nun, wenn diese Räume erstellt
werden. Wenn diese Kacheln, nicht Räume,
zu einem Raum gemacht werden, dann
könnte unser Aufzug nicht in dem Raum sein und unser Code würde abstürzen. Es wäre also einfacher für uns, Orte
festzulegen , die im
ganzen Labyrinth keinen Raum bilden , weil wir dafür
Regeln haben und dem Rest des
Labyrinths
überlassen, Räume zu
erstellen, wann immer dies möglich Räume zu
erstellen, wann immer dies sehen Ich denke, wir werden diese Dinge jetzt klarer in
Aktion Oh, das Wichtigste zuerst. Lassen Sie uns die Baupläne erstellen , die wir
für den Aufzug verwenden werden Regale mit den Bauplänen. Also klicken wir mit der rechten Maustaste
auf unseren Blueprint-Ordner. Wir wählen
den Blueprint und wir wählen Actor aus Also werden wir
diesem Aufzug den Namen BP geben. Gehen wir in den Aufzug
und fügen ein statisches Netz hinzu. Und es wird jetzt sein, das ist nur zur Schau, also machen wir einfach was
auch immer. Lass uns einen Tisch aufstellen. Lass uns das hinstellen. Das ist groß. Wir wollen etwas Kleineres. Ja. Das werden wir vorerst gut
machen. Das wird für
unseren Aufzug stehen. Ich kompiliere und speichere und lass uns
einen weiteren Blueprint erstellen AEP-Test. Großer Test Okay. Öffnen wir es und erstellen wir ein statisches Netz. Habe dieses statische Netz gemacht. Ich
glaube, wir haben eine Truhe, die erste. Ordnung. Kompilieren und speichern Sie vorerst. Aber wir haben einige
Repräsentationen von ihnen, wenn
wir die Regeln im
Labyrinth festlegen, wo sie gebaut werden sollen Lassen Sie uns nun
mit unserer Dekoration fortfahren. Wir haben die grundlegenden Kacheln erstellt. Und da wir
die Basiskacheln erstellt haben, erhöhen
wir auch den Ladebalken etwas. Also werde ich dieses festgelegte
Prozent c
kopieren und einfügen , ohne dass das
c tatsächlich geladen wird. Aber ich werde
es danach löschen. Ab jetzt setzen wir
einen Wert, den wir im ersten Satz haben wollen
, und dieses Mal werden wir
5,0 0,5 sein, weil wir von 0,45
waren mit dem festen Verbindungsverbot
und dem festen FS-Ausgang Seien Sie jetzt ehrlich, denn das wird ein
bisschen schnell gehen Wir können hier einige
falsche Verzögerungen angeben. Setzen wir eine Verzögerung von 0,1 ein. Wir geben also die Illusion, dass
der Computer denkt. Jetzt
brauchen wir eine neue Funktion, und wir werden
diese Funktion im Aufzug aufrufen. Und dann werden wir diese Funktion aufrufen. Wir sind schon drin
Und was wir
als Erstes brauchen, ist unsere
variable Dungeon-Map Wir holen jetzt
die Schlüssel raus. Und um unseren Aufzug zu starten, werden
wir
den letzten Index verwenden Welches ist das letzte Plättchen, das im Labyrinth
platziert wurde. Also, wir werden
diese Kopie
des letzten Index besorgen , also haben wir unsere Verordnung, und wir werden
diese Koordinaten auf eine
Variable hochstufen , die wir Aufzugsstandort
nennen, falls wir sie brauchen Jetzt
holen wir uns unsere speziellen Kacheln, die Kacheln auf denen
nichts gebaut werden soll,
und wir werden ihnen diesen Aufzugsstandort hinzufügen weil wir nicht
wollen, dass etwas anderes auf den
speziellen Kacheln gebaut wird. Als Nächstes erstellen wir einen Umkreis
um den Also wird in der Nähe des
Aufzugs nichts auftauchen. Also wollen wir den Umfang
dieser Kachel tatsächlich zu
den Spezialkacheln
hinzufügen dieser Kachel tatsächlich zu
den Spezialkacheln Und dafür benötigen wir
eine neue Funktion. Und diesmal wird es
eine reine sein weil sie nur einige mathematische Operationen ausführen wird . Es wird eine Art
Kopie unserer Kreuzplättchen sein. Es wird nur die
Sichtplättchen auch bekommen. Also alle acht Richtungen
rund um eine Kachel. Also werden wir
dafür sorgen, dass das funktioniert. Lassen Sie uns eine Funktion erstellen. Nennen wir es in
einer einzigen Kachel im Umkreis. Es ist richtig. Habe ich nicht. Und lassen Sie uns diese Funktion eingeben. Wir sind schon drin. Machen wir es
von Anfang an zum ersten Fall. Und für die Eingabe benötigen
wir natürlich einige T-Punkte
, um die Koordinaten zu überprüfen. Der Name ist Two Ports. Gehen wir jetzt zu unserem
Windkreuz nebenan. Also werden wir das kopieren. Und lassen Sie uns
zu unserer Funktion zurückkehren. Wir fügen das ein,
das unten, und ich werde die
Kabel hier anschließen Jetzt haben wir das Kreuz. Was wir im Grunde brauchen, ist mehr, was im Moment eine Frage der
Organisation wäre. Würden wir
sie zum Beispiel im Nordosten
zwischen dem Nordosten,
im Südwesten zwischen dem Süden und
dem Westen platzieren sie zum Beispiel im Nordosten
zwischen dem Nordosten, , oder würden wir sie wie
zuvor beibehalten und sie unten hinzufügen. Vielleicht mache ich das. Behalte
sie wie zuvor und die neuen unten. Okay. Also brauche ich oder mehr,
und ich
brauche die Plus-Eins von X und
die Plus-Eins von Y.
Dann brauche ich die Dann brauche ich Plus-Eins für
das X
und die Minus-Eins das Y, dann die Plus-Eins Ops, nimm Plus eins von Y und die Minus-Eins von X. Und dann beide
auf Minus Eins. Hier, jetzt, es ist nicht wirklich wichtig, was
oder was wir tun wollen. Aber wir können es herausfinden. Aber jetzt nicht.
Lass uns das fortsetzen. Wir haben also den Spawn-Aufzug. Wir haben den Standort des Aufzugs hinzugefügt, und jetzt werden wir diese neue Funktion f
single
verwenden , aber ich habe keine Ausgabe
erstellt Lassen Sie uns also eine Ausgabe erstellen. Machen wir daraus ein Array. Nennen wir diese
Perimeter-Kachel ps. Und lassen Sie uns das hier verbinden. Lass uns zurück zum Aufzug gehen. Jetzt ermitteln wir den Standort
unseres Aufzugs. Wir gehen in einer Schleife
zu diesen Ordinaten, die den Umfang
dieser Kachel bilden Und jetzt fügen wir
sie der speziellen Kachel hinzu. Ich werde diesen
Code von hier kopieren und einfügen. Ich werde das hier und
das hier verbinden. Das einzige Problem
dabei wäre, dass, wenn ein Plättchen des Perimeters nicht im Dungeon
wäre, es
zu speziellen Plättchen hinzugefügt würde Spezielle Kacheln würden also Koordinaten
enthalten, die
sich nicht im Dungeon befinden Wir hätten
einige Regeln verwenden können, um zu sagen, dass, wenn sich
keine speziellen Steine im Dungeon befinden, etwas
dagegen unternommen werden muss,
aber wir können das auch
hier filtern, um das nicht zu haben Ich hole mir die Karte
des Dungeons. Ich werde es herbringen. Ich werde fragen, ob es
die Koordinaten enthält , die wir hinzufügen, und wenn es sie enthält, werde
ich einen
Zweig verwenden, um sie hinzuzufügen. Wenn nicht, füge sie nicht hinzu. Ich werde kompilieren und speichern. Und um zu sehen,
ob es funktioniert, werden
wir vorerst den Aufzug
spawnen Also werden wir
ihn danach löschen, weil
wir alle unsere
Requisiten an einem bestimmten Punkt spawnen werden Also, jetzt werde ich einen
Schauspieler aus der Klasse zum Debuggen spawnen
und wir werden
sehen, was passiert wenn er
in der letzten erzeugt wurde,
und wir werden diese Transformation aufteilen , wenn er
in der letzten erzeugt wurde,
und wir werden diese Transformation aufteilen. Ich werde den Standort des Aufzugs herausfinden. Und wir werden uns auch Dungeon Mp
holen. Und auf der Karte des Dungeons finden
wir den Schauspieler
auf dem Aufzug, auf der
Kachel Und daraus werde
ich den Standort des Schauspielers ermitteln. Ich werde das hier verbinden. Und für den Kurs
werde ich auswählen. Tor. Und wir können es vorerst
so lassen. Wir müssen es nicht löschen. Und ich werde das bei einem Ribal namens Elevator
bewerben Ribal namens Elevator Okay. Das ist in Ordnung. Kompilieren und speichern. Lass uns spielen. Und es gibt keinen Aufzug , weil ich die Funktion nicht
anrufe. Oh, rufen wir den Aufzug an. Auf unserer Eventgrafik
im Corting. Lass uns anfangen und spielen.
Wir haben unseren Aufzug und er ist auf unserer letzten Kachel. Also fangen wir hier an und wir haben hier unseren Aufzug ,
der uns zum nächsten Kerker führt Ich denke, das ist vorerst ein guter
Stopp. In der nächsten
werden wir uns die Brust putzen. Auf Wiedersehen.
26. Truhen-Schlüssel-Blueprint: Hallo und willkommen zum
Game Design Workshop N Real Engine Five Procedural Dungeon Action P
Z Creation Calls letzten Lektion haben wir begonnen
, unser Labyrinth
mit unserem Aufzug zu dekorieren Und in dieser fahren
wir mit
unserer Truhe fort , dass wir den Schlüssel
für den Aufzug fallen lassen
werden Also, was wir
im Aufzug gemacht haben , ist, dass
wir die Karte des Dungeons bekommen haben Wir haben die Schlüssel von
der Dungeon-Karte
und den
letzten Index bekommen, weil der Aufzug im letzten
Slot erscheinen wird Also haben wir den letzten
Platz zum Spezialplättchen hinzugefügt, sodass dort nichts anderes erscheint,
und wir haben eine
Funktion entwickelt, um
den Umfang eines einzelnen Feldes zu ermitteln den Umfang eines einzelnen Feldes indem wir im Grunde die acht Richtungskoordinaten addieren Danach haben wir
diese Koordinaten zu
den Spezialplättchen hinzugefügt und
herausgefiltert, den Spezialplättchen hinzugefügt und ob sie im
Dungeon enthalten
sind oder nicht, und dann spawnen wir den Jetzt werden wir
eine neue Funktion erstellen, um die Truhe zu
spawnen Aber wir werden
diese Funktion p est nennen. Wir
spawnen sie nicht wirklich, also sollte der Name vielleicht nicht Spawn
Elevator Es sollte „ds elevator“ lauten,
und das sollte „
create cords est Denn wie gesagt,
wir werden
den Code später aus dem
Aufzug löschen , diesen hier,
und wir werden all unsere Requisiten an einer anderen Stelle des Algorithmus
spawnen anderen Stelle des Gehen wir zurück zur Erstellung
der Kerne für die Truhe. Lassen Sie uns jetzt
noch einmal unser Eigentlich können
wir
den Code von hier kopieren und einfügen. Wir können uns die
Karte des Dungeons holen, die Schlüssel, und eigentlich brauchen wir nur die Also werde ich das hier einfügen. Und was wir brauchen, ist
wieder der letzte Index. Und wir werden das in zwei
Teile teilen. Also können wir die Hälfte haben, wo
die Mitte unseres Kerkers ist? Wir könnten auch
Mac-Stile machen, die durch zwei geteilt werden, und es wäre dasselbe Aber das ist auch ein netter Weg. Nur für den Fall
, dass wir das Labyrinth
später aufrüsten wollen , um
zum Beispiel neben dem
Hauptteil noch ein paar zusätzliche Kacheln zu haben zum Beispiel neben dem
Hauptteil Nehmen wir zum Beispiel an, wir
spawnen einige geheime Bereiche. Wir spawnen einige
zusätzliche Dinge außerhalb des üblichen Algorithmus
, der den Dungeon erstellt hat Oh, wir werden die Hälfte davon
bekommen. Und wir werden
das zu einer lokalen Variablen machen. Nennen wir das einen Schatzindex. Und warum werbe ich jetzt für
diese beiden Schatzindizes? Das liegt daran, dass ich anhand der Hälfte der Felder
und mehr
überprüfen möchte, ob es
einen Ort gibt , an dem
wir unsere Schatztruhe spawnen können Weil wir nicht wollen, dass
unsere Schatztruhe auf dem ersten Feld erscheint,
zum Beispiel auf den ersten
zwei, drei Kacheln zum Beispiel auf den ersten
zwei, drei Es könnte davon abhängen, wie sich
unser Labyrinth verzweigt, und das wäre eine der
Auslassungen, die passieren Aber wir sollten versuchen,
dass das ein bisschen weniger passiert. Also werden wir nach der Hälfte des Labyrinths
suchen der Hälfte des Labyrinths
suchen Und um das zu tun, werden wir
eine Wildschleife verwenden. Lassen Sie mich tatsächlich für eine Sekunde
Farben mitbringen. Also was wir gemacht haben, ist, wenn wir die Gesamtzahl der
Felder haben, unser Labyrinth, lassen wir das
unsere Dungeon-Map Also haben wir den letzten Index. Dieser letzte Index, und
wir teilen ihn durch zwei. Nehmen wir an, es sind 20, also gibt es
jetzt diese Zehn. Nun haben wir diese Zehn als
Beginn unseres
Schatzindexes festgelegt . Das sind zehn. Wir machen eine
Y-Schleife, die das überprüft. Wenn der Schatzindex dieser Hälfte
entspricht, weil wir ihn nicht exklusiv
haben werden. Wir wollen also über der
Hälfte des Labyrinths, nicht genau in dem
Block, sagen wir zum Beispiel in dem
Index, der das repräsentiert Da es aber den Fall
gibt , dass das endlos laufen
wird,
da Loops, Wi-Loops ein
bisschen sind, braucht das ein Ja. Aber Wi-Loops sind
ein bisschen fies, sagen wir, sie können deinen
Computer einfrieren, bis sie ihre Aufgabe
abgeschlossen haben,
weil sie laufen, wie wir sie gerade ausführen, es ist im Haupt-Thread, also
kann es deinen Computer komplett einfrieren. zu vermeiden, werden
wir also auch eine
Tres-Variable erstellen. Und wir werden sagen, versuche es
zum Beispiel 30 Mal. Was wir tatsächlich tun werden, ist
ja, so etwas in der Art. Mac-Stile sind im Grunde genommen
durch zwei geteilt. Wenn dieser Wert über dieser Zahl liegt, schneiden
Sie die Y-Schleife ab. Dort wurde
kein gültiger Standort gefunden. Also werden wir
manuell einen Ort einstellen, der genau die
Mitte sein würde Also ja. Das ist es, was ich
über Wi-Loops sagen wollte, dass sie knifflig sind und dass sie Laufzeit nicht wirklich
benutzt werden
sollten. Aber für uns ist diese
Laufzeit nicht gerade Laufzeit, weil wir auf dem Laden
aufbauen. Wir machen
es also nicht während der Laufzeit des Spiels, welche FPS
wichtig sind. Weg. Lass uns das machen. Lass uns den Wi-Loop mitbringen. Dieses gefährliche Ding. Nehmen wir als Bedingung an, dass Index der
Kennzahl gleich dem
letzten Index geteilt durch zwei ist. Wenn das stimmt,
wird der Body-Loop ausgeführt. Wenn dieser Begriff
fällt, wird er beendet. Es gibt auch einen Tooltip, es ein
bisschen besser
erklärt als ich Oh. Seitdem haben wir
keine weiteren Bedingungen die wir für spezielle Räume anbieten könnten. Dies wird normalerweise
auf die Hälfte plus eins sein, weil wir diesen
Wert um eins erhöhen werden. Aber zuerst sollten wir unseren
Fehler absichern. Wir werden eine
neue lokale Variable erstellen, wieder eine Ganzzahl haben
wird. Nennen wir diesen Preis. Lassen Sie uns diesen Wert zunächst um eins
erhöhen. Und lass uns eine Frage stellen. I R tris
entspricht dem letzten Index
geteilt durch zwei,
denn jedes Mal, wenn es
eins addiert, beginnt es bei Null Wenn das stimmt, bedeutet das, dass hier die
Hälfte unseres Labyrinths Wenn das also wahr ist, setzen
wir den
Schatzindex auf 20 und damit beenden wir unsere Schleife , nur in K, nun, für uns
werden es alle Fälle sein. Wenn Trice nicht 50% des Labyrinths entspricht
, bekommen
wir unseren Schatzindex, wir werden ein T addieren, und wir werden unsere Dungeon-Karte
bekommen, und wir werden den Schauspieler finden den Schauspieler und wir brauchen die Koordinaten Also werde ich die Schlüssel hier
holen. Ich hole mir eine Kopie
und verbinde das plus eins. Und dann werde ich
den Schauspieler finden. Nein, ich werde nachsehen. Eigentlich tut es mir leid, ich
brauche den Schauspieler nicht, um das zu überprüfen. Ich brauche nur die
Koordinaten, um das zu überprüfen. Wenn sie
in den speziellen Kacheln enthalten sind. Wenn es in
den Spezialplättchen enthalten ist, werde
ich nichts tun. Wenn es nicht in
den Spezialplättchen enthalten ist, setze
ich unsere
Schatzvariable Schatzindex. Schatz plus eins. Nun, weil ich
vor dem Zweig etwas hinzufüge, heißt das nicht, dass ich setze. Deshalb habe ich es
so gemacht, um das zu erklären. Wenn ich
etwas hinzufüge und die speziellen Kacheln überprüfe , im Grunde genommen, ob die Koordinaten Wenn ich
also vor dem Zweig etwas zu diesem
Index hinzufüge, heißt das nicht, dass
ich ihn festlege. Ich füge nur hinzu, um einen Wert,
eine Zahl, zu erhalten , und ich überprüfe anhand dieser Zahl,
etwas, das ich will. Und wenn das, was ich will, in diesem Fall
nicht wahr ist, dann setze ich diese Zahl in
den Schatzindex. Wie auch immer, lass uns weitermachen. Nun, diese Y-Schleife hat auf die eine oder andere Weise
geendet. Wenn sie mit
dem Schatzindex
Null geendet hat , müssen wir es wissen. Ich werde überprüfen, ob der
Schatzindex Null ist. Wenn das stimmt, werde ich
den Schatzindex auf die Hälfte
des Labyrinths setzen den Schatzindex auf die Hälfte
des Labyrinths Wenn es nicht stimmt, ist es nicht
wirklich wichtig, weil es bedeutet, dass dieser Zweig
ausgeführt wurde und er einen neuen Wert gefunden hat Als Nächstes werde
ich die
Koordinaten erneut abrufen. Ich werde von hier wegkommen. Ich werde es
zu den Spezialkacheln hinzufügen. Ich werde für diese PS werben. Der Get braucht den Altersindex. Andernfalls erhält es
den ersten Index Null, was der Startblock wäre. Ich werde das auch zu einer Variablen hochstufen und diesen Ort nennen. Lassen Sie uns nun zum Debuggen
unseren Telefonapparat BP Elevator
aus dem Aufzug mit acht Kabeln holen unseren Telefonapparat BP Elevator
aus dem Aufzug . Gehen
wir zurück, um Cords est zu
erstellen Statt des Aufzugs werde
ich
den größten Est wählen Anstatt den Standort des
Aufzugs werde
ich
hier nur den besten Standort angeben. werde das löschen und ich werde es
so variabel bewerben. Ja. Handeln. Um zu kompilieren und zu
speichern, und lass uns zuerst spielen. Und, aber ich habe vergessen, diese Funktion nochmal
aufzurufen. Erstelle die Kerntruhe nach der
anderen den Aufzug des Kerns. Wie durch ein Wunder funktioniert es
nicht wieder. Oh nein, ist es. Hier ist es. Wir haben die Truhe. Es ist in
einer Ecke. Es spielt keine Rolle. Es ist seit 20 Uhr auf der Nummer
11 und es ist zehn plus eins. Die Y-Schleife hat also korrekt funktioniert. Also, wenn wir bei Null anfangen würden, müssen
wir hier rüber gehen, den Schlüssel
holen und zurückkommen
und zu unserem Aufzug gehen. Lass uns noch
einen erstellen. Hier drüben, der Aufzug ist da. Ja, wo fangen wir an? Wir fangen hier an. Wir fangen hier an. Wir können das sehen. Wir wissen nicht, ob die Schlüssel hier sind, wir könnten
hier durchgehen, wir könnten gehen. Soweit ich das beurteilen kann, werden einige gültige
Gameplay-Szenarien
erstellt . Wir fangen hier an. Wir können sofort
den Aufzug sehen. Ja, gültige Szenarien hier
drüben. Okay. Ich denke, das ist es für diesen. Ich sehe dich
beim nächsten. Auf Wiedersehen.
27. Raum-Builder-Algorithmus: Hallo und willkommen zum
Game Design Workshop, dem Kurs zur Unreal Engine Five:
Procedural Dungeon Action-Rollenspielen Zuvor haben wir die Brust-Funktion „
Koordinaten erstellen“ im
Labyrinth-Generator
erstellt Brust-Funktion „
Koordinaten erstellen“ im
Labyrinth-Generator Wir haben die Karte Dungeon verwendet. Wir haben den letzten
Index der Schlüssel. Wir haben durch zwei geteilt
und das
in einer Variablen gespeichert, die wir Treasure Index
nannten. Nun haben wir eine
while-Schleife erstellt, die überprüft, ob der Schatzindex
zwar der Hälfte des Indexes
entspricht.
Dann fügen wir einer
Trice-Variablen, die bei Null beginnt, eins hinzu und wir werden überprüft,
ob diese Variable der halben Länge
entspricht der halben Länge
entspricht Wir sagten, wenn das stimmt, bedeutet das,
dass wir keinen gültigen Schatzindex finden können, also setzen wir den Schatzindex auf
Null und beenden die Y-Schleife, oder wenn sie nicht gleich ist,
versuchen wir, eine gültige Option zu finden , die
nicht in den speziellen Kacheln enthalten ist, für uns ist es plus
eins, da wir momentan
keine anderen speziellen
Gleichheitsregeln haben . wir dann die Schleife verlassen, wenn sie Null ist, was bedeutet, dass sie versucht hat,
einen zu finden und es nicht konnte, dann setzen wir die Schatzkacheln auf genau die Hälfte des Index, und wenn sie dann falsch war, haben wir den neuen
Schatzindex hinzugefügt. Wenn er falsch ist, bedeutet das,
dass er einen neuen Index gefunden hat. Wir haben diesen Index zu
unserer speziellen Kachelanordnung hinzugefügt
und die Koordinaten
zur Position der Truhe hinzugefügt. Und danach spawnten wir,
um eine Truhe zu debuggen. Jetzt ist es an der Zeit, diese
sogenannten Räume zu unserem Spiel hinzuzufügen. Wir haben also mehr Abwechslung und komplexere
Mechaniken in unserem Labyrinth Um das zu tun. Lassen Sie uns
zuerst Farbe mitbringen und
einige Dinge erklären , die für unsere Logik
erforderlich sind. Wenn wir zum Beispiel vier Blöcke
haben, vergessen wir
die speziellen Blöcke. Nehmen wir an, es gibt
vier Blöcke in unserem Labyrinth. Das Erste, was wir tun werden ist, wenn wir
zum Beispiel
von diesem Raum aus nachschauen, tut uns leid,
nicht von diesem Raum aus Fangen wir von unten links an, denn so werden
wir nachschauen. Wir beginnen mit
der Möglichkeit unten links. Und wir werden anhand
dieser Kachel nachfragen , ob
es hier oder hier eine Kachel gibt. Also auch nicht nach Norden und Osten. Gibt es auf diesen Koordinaten eine Kachel
darauf? Wenn es eine Kachel gibt,
werden wir dafür ein Array erstellen, und wir werden für Looping verwendet Eigentlich ist es nicht viel. Punkte. Mit dieser Verordnung werden wir
einen Kreis von vier Kreisläufen schaffen Mit dieser Verordnung werden wir
einen Kreis von vier Kreisläufen Wie dem auch sei, innerhalb dieser For-Schleife werden
wir nach einigen Regeln suchen und tatsächlich werden wir
jede Menge vier Schleifen haben , um nach jeder Regel spezifisch zu
suchen Wir wollen also
alles in einer für Schleife übertreiben.
Es wäre verwirrender, wenn wir hier einen Haufen von Regeln
und Verzweigungen und allem
haben es
dann getrennt haben Diese Vierer-Schleife macht das,
diese For-Schleife macht das,
diese Fo-Schleife macht das, dann hat sie alles in einem Und wenn das dann ausreicht, werden
wir es zu
einer neuen Variablen hinzufügen Nun, warum sage ich eine neue Variable? Denn dieses Mal
werden wir eine Struktur verwenden,
eine Variable, die Struktur genannt wird.
Was ist eine Struktur? Eine grobe Erklärung
wäre eine benutzerdefinierte Liste von Variablen unserer Wahl, um sie in einer Struktur zu
halten, um sie in einem Format zu halten, in dem wir all diese Arten
von Variablen zusammenfassen
können. Zum Beispiel haben wir einen Bolzen
für Asgun , zum Beispiel Wir haben eine Ganzzahl für Amo. Wir haben eine Ganzzahl für Mana. Wir haben einen Wagen fürs Leben. In unserem Fall wird es eine
Struktur sein, die aus Arrays besteht Und löschen Sie das alles, eine
Struktur aus Arrays , die die
Koordinaten der Räume sein werden Es wird also ein Array von 0,0 sein, dann wird es 0,1 sein, wird 11 sein, es wird 1,0 sein,
wenn y hier und hier ist. Wie dem auch sei, nein, wir werden diese Struktur
verwenden um alle
Möglichkeiten zu haben, denn nachdem diese für diese
zusätzlichen drei Koordinaten ausgeführt wird, wird diese
für die nächsten Koordinaten ausgeführt, und dann wird diese
für die nächsten Koordinaten ausgeführt, und diese wird für
die nächsten Koordinaten ausgeführt. Und es wird so lange weitergehen, bis es
sich anfühlt, als wäre das ganze Labyrinth, und wir haben eine Liste mit
den möglichen Räumen Jetzt werden unsere Zimmer natürlich zwei
mal zwei sein. Und
wenn wir für eine größere Anzahl von Räumen dieses System wählen würden, das
für größere Räume nicht sehr optimal ist, würden wir
zusätzliche Koordinaten hinzufügen , so
dass wir auch diesen Block überprüfen würden, wenn wir zwei mal drei wollen, oder wenn wir
drei mal drei wollen, überprüfen
wir die unten und
unten angegebenen Koordinaten. Lass uns das jetzt machen. Also zuerst etwas Vertrautes. Lassen Sie uns eine Funktion erstellen. Wir
haben eine Reihe von Funktionen. Irgendwann können wir
unsere Funktionen so kategorisieren , dass
wir zum Beispiel die reinen
Funktionen in die Kategorie P einordnen können. Wir haben hier die Kategorie
Pure erstellt Jetzt heißt es nicht
„rein“, sondern „Put“. Rein. Okay, wir können also
alle unsere reinen Funktionen auswählen und
sie
zum Beispiel zu dieser Kategorie hinzufügen . Lass es uns ganz schnell machen. Wir finden also all
unsere Funktionen, auf denen Pure steht, und
fügen sie der Kategorie Pure hinzu. Im Grunde haben wir im Moment also
viele reine Funktionen. Das sind unsere Bausteine. Sagen wir, und das
ist unsere Mathematik. Lassen Sie uns nun damit fortfahren, eine neue Funktion zu
erstellen, hier das Plus-Symbol zu
singen
und diese Funktion aufzurufen, und diese Funktion aufzurufen möglicherweise Räume
zwei mal zwei Räume zu
finden. T zwei mal zwei. Nun, das wird eine
etwas schwere Funktion sein,
da es ein Vielfaches als Nächstes für
eine Schleife geben wird. Also holen wir uns
die Kerkerschlüssel. Für jede Koordinate werden
wir
überprüfen, ob es sich um einen gültigen Raum handelt Um das zu tun, werde ich eine lokale Variable
erstellen und sie vom Typ b machen. ID ist ein gültiger Raum. Lassen Sie uns nur der Sache zuliebe das Gegenteil tun. Nehmen wir an, der gültige
Raum ist am Anfang aktiviert. Also der Standardwert hier, wir müssen ihn kompilieren, um den Standardwert
festzulegen. Der Standardwert für
den gültigen Raum ist also t. Nun, wir
bringen das mit einem Setter hierher
, und ich könnte
es hier einfach so einstellen, dass es wahr Ich brauche den Standardwert nicht, aber er könnte vom
Standardwert beim Speichern stammen Und jetzt
erstellen wir eine neue Variable namens R. Und sie wird vom Typ in Point sein Und der Typ Punkt ist,
weil es Koordinaten und es
ein Container-Array sein wird
, und wir werden es hierher bringen und wir werden es löschen. Der Grund, warum wir
tatsächlich löschen und
die Variable
hier auf true setzen , ist dass wir jeden Raum überprüfen
werden, ich werde
diese Informationen ausfüllen. Wir wollen, dass dieser
Teil der Vierschleife die Informationen zurücksetzt,
bevor wir unsere Prüfungen durchführen Denn wenn wir unsere Prüfungen durchführen, wenn wir die restlichen
vier Schleifen machen, weil hier unsere F-Schleife ist,
wird es nicht vier Schleifen für jede
Schleife geben, sondern für die
Nachbarkoordinaten dieser einen,
der Raumnachbar-Aufnahmen Wir müssen diese Funktion erstellen. Es wird wieder
eine reine sein. Also nehmen wir,
wie gesagt, beim Malen die nächsten
Koordinaten x dazu, plus eins,
X und Y plus eins, um
einen Raum mit zwei mal zwei Räumen zu erstellen. Und dann werden wir dafür sorgen, dass
sie nach einigen Regeln suchen. Lassen Sie uns nun diese Funktion erstellen. Aber bevor wir sie erstellen, benötigen wir im Grunde wieder einen Teil der Feinkoordinaten,
die feinen Nachbarkoordinaten. Gehen wir also zum reinen
, suchen wir das benachbarte. Ich überquere angrenzend.
Und lass uns kopieren. Lasst uns alles kopieren und löschen, was wir nicht brauchen. Oh, neue Funktion. Nennen wir es mach zwei mal zwei s. Machen wir es zu einem reinen Eins und ordnen es in
die Kategorie Pure ein. Natürlich brauchen wir als
Output den S. Ray-Endpunkt, natürlich wieder. Jetzt benötigen wir
eine Eingabe, das wären Kabel, und das
muss kein Array sein Es ist nur ein einziger Endpunkt mit Ipari-Koordinaten
. Und lassen Sie uns einfügen, was wir
von der anderen Funktion bekommen haben. Jetzt würden wir die Minuszahlen nicht
brauchen. Wir würden das Plus eins brauchen. Es ist x plus eins. Es ist y plus eins und es ist x und y plus eins. Jetzt benötigen wir die ursprünglichen
Raumkoordinaten. Also, wir werden das hier
verbinden. Wir werden
das löschen und wir werden das auch hier verbinden. Wir haben alle
Raumkoordinaten, die Plus-Eins auf X,
die Plus-Eins auf
Yund die Plus-Eins auf jeder von ihnen und die
Originalkoordinaten in einem Array, das wir als
Raumkoordinaten ausgeben. Gehen wir zurück zu unserer Funktion,
suchen nach möglichen Räumen und bringen wir diese
neue reine Funktion hierher, die ich der Kategorie nicht
hinzugefügt habe. Jetzt führe ich die falsche Funktion aus. Ich füge zwei mal zwei
Raumkoordinaten hinzu. Hier sind wir, und wir werden
sie durchforsten. Jetzt ist es Zeit für die Regeln, die wunderbaren Regeln. Und
die erste Frage sollte
natürlich sein, gehören
sie in den Kerker Also werden wir unsere
Dungeon-Variable hier kopieren
lassen Dungeon-Variable hier kopieren Und ich werde Sie fragen, ob
es diese Informationen enthält, die die Informationen aller Koordinaten
des Raums Nun, wenn es nicht enthält, gehen
wir zu dem gültigen Raum
False, weil das kein gültiger Raum
ist. All diese Koordinaten gehören
nicht zu einem gültigen Raum,
und das bedeutet, dass wir den Raum verlassen Wenn ja,
sollten wir sie zu
unserem neuen variablen,
lokalen Variablen-Raum-Array hinzufügen , at und lassen Sie uns eine Verbindung herstellen Falls dieser Trigger ausfällt, nur der
Optimierung halber ändern
wir das
nur der
Optimierung halber für jede Schleife auf jede
Schleife mit Pause. Was bedeutet das? Das
bedeutet, dass wir diese Anzahl an Körpern erhöhen können
, wann immer wir wollen. Wenn die Trigger das hier platzieren, bedeutet
das, dass es nicht die gesamten Koordinaten
durchläuft. Immer wenn es eine Koordinate findet , die sich nicht innerhalb des Dungeons befindet, wird diese Überprüfung beendet Wenn wir das also mit
1.000, sagen wir, Kacheln multiplizieren, das tatsächlich
einen Vorteil, wenn es
darum geht, wie oft
unsere Funktion ausgeführt wird darum geht, wie oft
unsere Funktion ausgeführt Lassen Sie uns nun
mit einer Sim-Frage fortfahren. Ist das Zimmer gültig Wenn das stimmt, sollten
wir
mit dem nächsten Test fortfahren. Wenn das nicht stimmt,
sollten wir nicht
alle anderen Gründe angeben, warum wir diesen Raum behalten
müssen. Ich denke, das ist ein guter
Haltepunkt für diesen. Wir werden mit den
nächsten Regeln für die nächste fortfahren . Auf Wiedersehen.
28. Finden möglicher 2x2-Räume: Hallo und willkommen zurück beim
Game Design Workshop Re Engine Five Procedural Dungeon Action ApS Creation Courts Zuvor hatten wir die
Möglichkeit, zwei mal zwei Räume
zu haben, die ersten Teile
dieser Funktion, die ersten Teile
dieser Funktion,
und wir haben auch das Zwei-mal-Zwei-Raum-Kabel erstellt. Dabei werden im Wesentlichen
die Kabel, im Wesentlichen
die Kabel die wir haben, plus eins
auf dem X plus eins auf dem Y und plus eins auf beiden verwendet, um zwei mal zwei zu erstellen Nun, dann machen wir weiter
und haben überprüft, ob sie
zur Dungeon-Karte gehören Wenn nicht, verlassen wir
unsere Nested-For-Schleife. Und wenn ja, fügen wir sie der Raumanordnung Wie gesagt, wir
werden zu
einer Struktur hinzufügen , die alle Raumanordnungen umfasst Lassen Sie uns jetzt mit einer
anderen Regel fortfahren. Lassen Sie uns
mit der Regel fortfahren, die in unseren Spezialräumen enthalten ist. Oh, wir
werden unsere Zimmer einrichten. Denn im Moment hatten wir
sie zwei mal zwei. Im Moment haben
wir es in der Raumanordnung gespeichert,
falls es wahr ist. Wir werden mit Pause
wieder den wahren Zweig
des gültigen Raums
übersehen wieder den wahren Zweig ,
denn wenn er gültig ist fahren
wir fort, wenn er nicht gültig ist, beenden
wir und verbinden
das Raum-Array Wir werden die speziellen,
speziellen Kacheln
mitbringen . Ja,
spezielle Fliesen. Tut mir leid. Wir werden fragen,
ob sie Artikel enthalten, irgendeinen der Artikel, die wir haben. Wir werden eine
Filiale einrichten, um das zu erreichen. Wenn es enthalten ist, legen
wir die
gültigen Werte fest
und dann legen
wir die
gültigen Werte fest brechen wir ab. Wenn es nicht enthalten ist,
ist alles gut. Wir müssen nichts tun. Das ist ein gültiges Zimmer. Und dann werden wir
erneut fragen, wann das abgeschlossen ist, ob es gültig ist, denn
wenn wir gebremst haben, wollen
wir aussteigen und nicht
zum nächsten Schritt übergehen Der nächste Schritt erfordert nun
einen weiteren Schritt als
das Eingeben von Code. Benötigt den ST-Raum
, über den wir gesprochen haben, die Struktur der Räume. Gehen wir also zum Inhalt. Gehen wir zum Ordner
Blueprints. Lassen Sie uns leicht klicken und einen neuen Ordner
erstellen. Und lassen Sie uns diesen Ordnern einen Namen geben. Und geben Sie diesen Ordner ein und klicken Sie erneut mit der
rechten Maustaste und gehen Sie zu Blueprints und wählen Sie
die Strukturvariable Jetzt werden wir
diesen ST Underscore Rooms nennen. Ja, ST-Zimmer. Warum nicht? Es ist in Ordnung. ST-Zimmer. Wir werden kompilieren und speichern und wir werden eine Variable
hinzufügen, die sie bereits hat. Es wird vom Typ
Tintenstrahldrucker sein. Und jetzt wird es vom Typ Array
sein. Nennen wir diesen Raum Kunst. Das ist im Grunde eine Möglichkeit,
eine Liste von Arrays zu erstellen. Wir haben eine Struktur mit
der Liste des Arrays, und dann erstellen wir ein
Array mit dieser Struktur Also werden wir
eine neue Variable in unserem Blueprint erstellen , die vom Typ S sein
wird, Räume, und es wird ein Array sein,
was es bereits ist Und wir werden das ST mes y
nennen. Nun, wir benötigen eine temporäre Variable
einer Struktur.
Wenn wir hier einen Index hinzufügen, können
wir sehen, dass der Index aus Raumcodes besteht , dass er seine eigenen
Elemente hat Um das hier hinzuzufügen, werde
ich es jetzt löschen. Es sollte keine Elemente enthalten Um das hier hinzuzufügen,
werden wir eine neue Variante
namens Ros Rom erstellen . Und was wäre hier der
Sinn von
This is a array. Es
sollte kein Array sein. Es sollte eine einzelne Variable sein. Wir sind verwirrt. Warum sehe
ich hier ein Array. Also Strukturen. Das ist eine Strukturvariable, und sie enthält dieses Array. Im Grunde
haben wir also ein Array mit einer
Struktur mit Arrays erstellt, falls das Sinn macht Was wir
in dieser Struktur tun müssen, ist, Mitglieder in ST-Räumen
zusammenzustellen Denn auf diese Weise
ändern wir Daten in unseren Strukturen. Wir können nicht, wenn wir Räume einrichten, keine Mitglieder schicken,
Räume über dem Knoten einrichten. Es gibt eine Gruppe von Räumen ST und es gibt eine Gruppe von
Mitgliedern in Raum ST. Wenn ich also die Räume
ST als Variable festlege, dann bedeutet das, dass Sie die gesamte Variable
ändern. Wenn ich Elemente festlege, kann ich die
Mitglieder der Struktur ändern. Wenn diese Struktur
zum Beispiel, wie ich zuvor beschrieben habe,
eine Gesundheitsvariable, eine Waffenvariable, eine Amo-Variable hätte, dann könnten wir hier die Mitglieder
von entscheiden lassen , was wir
von diesem Knoten wollen. Zum Beispiel haben
wir momentan Raumkoordinaten. Ich möchte die Koordinaten der
Mitgliederräume festlegen. Wir hatten einen anderen Wert. Gesundheit.
Ich hätte zum Beispiel einen Pin für den Gesundheitswert und den
Rest der Liste nicht aktualisieren können. Was wir brauchen, ist nicht
der reguläre Feststeller, wir müssen Mitglieder zusammenstellen Es ist ein einzigartiger Knotenpunkt
für Strukturen. Wenn der Raum gültig ist, werden
wir die Mitglieder
einstellen. Wir werden den Raum,
den wir gerade erstellt haben,
die Raumanordnung so einrichten , dass er das
Mitglied dieser Raumstruktur ist. Dann werden
wir unsere ST-Räume anordnen und Struktur hinzufügen. Wir haben also wieder eine Struktur mit
inneren Koordinaten. Wir speichern diese Koordinaten in
Form eines Arrays. Wir speichern sie in unserer Struktur, die ein Array
innerhalb der Koordinaten hat, und dann verwenden wir diese
Struktur, um
sie in einem Array dieser
Art von Struktur zu speichern . Ich hoffe, das ergibt Sinn. Nun, das wäre
es im Grunde genommen, wenn wir es so lassen würden, wie es ist, aber das würde eine Liste
mit allen Möglichkeiten ergeben. Lass es uns zum Beispiel löschen. Ich hatte ein Zimmer hier, ein Zimmer hier, eine Kachel, kein Zimmer, eine Kachel hier, eine Kachel hier, eine
Kachel hier, eine Kachel hier. Lass uns ein Raster erstellen. G. Wenn ich es bin, brauchen
wir mehr Fliesen. Ich überprüfe diesen, ich überprüfe und wenn ich diesen überprüfe, überprüfe
ich das. Aber dieser überschneidet sich. Es hat also eine Möglichkeit. Wir erhalten die Koordinaten von allem
, was uns im Grunde zur Verfügung steht. Wir brauchen weitere
Regeln, um das zu klären. Und da wir hier diese
wunderbare Struktur haben, Reihe von Strukturen, die wir gerade erstellt haben, können
wir eine weitere Regel erstellen,
bevor wir sie hinzufügen. Wir können fragen. holen uns diese Struktur, diese Anordnung von Strukturen, bringen sie her und
wir gehen wieder zu oder oder jeder Runde mit Pause. Und wir werden das verbinden. Das. Wir werden diese Filiale tatsächlich hierher
bringen. Und wir werden fragen
, ob irgendwelche
dieser Koordinaten unsere
Prüfkoordinaten sind, im Grunde genommen, ob sie sich auf
einer dieser Koordinaten befinden. Um das zu tun, können wir, wie wir sehen können, nicht einfach von hier aus
eine Gleichheit überprüfen. Wird die Verbindung trennen
, weil es vom Typ ST ist.
Es ist eine Struktur. Um nach einer Struktur zu suchen, müssen
wir sie durchbrechen. Denn wir haben mich Schauspieler mitbringen lassen. Wie bei The Spa Actor The
Transform, haben wir es aufgeteilt. Es ist der gleiche Weg aber das Gegenteil. Transformation
ist eine Struktur. Wir können es auch teilen, wenn wir wollen. Aber weil es in einer Viererschleife ist, können wir es sogar in einer Viererschleife machen. Wir können es hier aufteilen und direkt die Variable
abrufen. Aber ich wollte nur den Break-Knoten
zeigen. Lass uns rekombinieren. Wenn wir eine Struktur
haben, die aus
vielen Elementen besteht, wäre die
Aufteilung in der Vierer-Schleife visuell nicht so gut Wie dem auch sei, lassen Sie uns mit
der Viererschleife weitermachen .
Verbinde das hier. Und wir werden fragen, eigentlich brauchen wir hier eine Pause
für jede Schleife mit Pause. Pause. Verbinde das hier. Wir brauchen hier tatsächlich
eine Filiale, um zu
fragen, ob es noch ein gültiges Zimmer ist. Denn wenn es kein gültiges
Zimmer ist, sollten wir pausieren. Wir überprüfen hier
nichts, aber wenn wir hier kaputt gehen, brechen
wir auch hier ab. Ich werde
hier eine Filiale aufstellen und fragen, ob das in dem Raum
enthalten ist . Ich werde eine Verbindung herstellen. Wenn es eingedämmt ist, schlagen
wir Poldrum in Löcher und wir brechen zusammen Es ist falsch, wir brechen zusammen. Es versucht
erneut zu laufen, es ist falsch, wir brechen ab und dann brauchen wir einen anderen
Zweig, der gültig ist. Und wenn es falsch ist, brechen
wir wieder ab und
kehren zur ursprünglichen Schleife zurück, die mit den
nächsten Koordinaten beginnt. Der Grund, warum wir das hier
hinzugefügt haben, ist ,
dass dies die Koordinaten sind, die wir hier überprüfen. Und wir überprüfen, ob in einem
der Räume diese
Koordinaten enthalten sind. Wenn sie das tun, brechen sie ab, das ist kein gültiges Zimmer,
fahren Sie mit dem nächsten fort. Und jetzt können wir das hier
verbinden. Und wenn alles wahr ist, wenn alle unsere Prüfungen wahr sind, dann erweitern wir
die ST-Räume. Ich denke, das waren eine
Menge Informationen. Wir sollten
hier eine kleine Pause einlegen und mit der nächsten weitermachen. Tschüss.
29. Raumperimeterfunktion: Hallo und willkommen zum Game
Design Workshop Under Engine Five-Kurs zur Erstellung von prozeduralen
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Vorher haben wir die
Möglichkeit, zwei mal zwei Räume zu finden,
weitergeführt Wir haben die Struktur
der Raumanordnung erstellt. Und wir haben einige Tests gemacht. Wir haben überprüft, ob der Raum mit speziellen Fliesen bedeckt ist
, ob er kaputt ist, und wir fahren fort, den nächsten Raum zu
überprüfen. Wir haben auch überprüft, ob unser Raum in einem der Räume
enthalten ist ,
die wir bereits hinzugefügt haben, indem wir die
Struktur aufgebrochen haben,
die wir mit dem
ST-Rooms-Array
erstellt handelt es sich um ein Array
, das viele Strukturen mit unterschiedlichen Koordinaten
enthält haben. Dabei handelt es sich um ein Array
, das viele Strukturen mit unterschiedlichen Koordinaten
enthält. Und dann haben wir überprüft, ob sie
darin enthalten sind , dass sie einen
Teil unserer Prüfraum-Anordnung enthalten. Wenn sie das nicht tun,
fügen wir hinzu, dass
unser Zimmer gültig ist zu keinem anderen Raum gehört. Es gehört zu
keinem speziellen Plättchen
und es befindet sich in unserem Kerker Füge die Koordinaten zu unserem
System hinzu, Anordnung der ST-Räume. Nun, das einzige Problem mit dem
Problem. Es ist kein Problem. Es ist
eigentlich eine Designentscheidung, bei die Zimmer
nebeneinander stehen können Fügen wir zum Beispiel noch ein paar
hinzu. Gelbe Konsistenz wie bei meinen schlechten Zeichnungen.
Sie sind konsistent. Besteht schlecht. Wenn wir also
einen Raum in diesen Blöcken hätten, dann
könnte hier ein weiterer Raum erscheinen, was mir persönlich nicht
gefallen würde , weil dadurch
zwei Räume nebeneinander entstehen Sie haben vielleicht eine Tür,
sie haben vielleicht keine, aber sie werden immer
eine Trennwand haben, was ich nicht mag,
die Möglichkeit keine Tür zu haben. Wir könnten irgendeinen Code machen, wenn sich
zwei Räume überschneiden, zwei sich ändern, vielleicht immer
eine Tür auf einer Seite
oder welcher Seite auch immer Aber ich finde es
lustiger zu lernen, wie man einen Perimeter im
Raum oder das als Variable
erstellt Und dann können wir für den Perimeter tun, was
wir wollen. Zum Beispiel könnten wir andere Regeln
erstellen, wenn wir einen Raum
entdecken, durch den wir drei oder vier
gehen können, wir einen Korridor
zwischen ihnen einrichten oder wir werden das nicht tun Wir bleiben bei unseren
zwei mal zwei Räumen. Aber ich denke, es ist vielseitiger , die Umrisse der beiden mal zwei oder drei mal
drei oder zwei mal drei oder zwei
mal drei oder was auch immer wir entworfen haben
, zu kennen drei oder zwei mal drei oder zwei
mal drei oder was auch immer wir entworfen haben
, Nun, wie werden wir das machen? Wir werden eine Funktion
erstellen. Es wird unglaublich sein. Wir werden eine Funktion machen. Wir werden diese
Funktion Wind Room Perimeter,
Set Room Perimeter nennen Set Room Was sie
tun wird, ist, die
Raumbegrenzung zu finden Es wird es zu
den Sonderräumen hinzufügen und zu Aktionen spezielle Räume zu den Räumen mit Raumbegrenzung hinzufügen. Und wir werden eine neue Variable
benötigen. Und wir werden einige Wände
löschen müssen. Und warum ist das so?
Gehen wir zurück zum Malen. Wir werden brauchen,
wenn wir ein Zimmer haben,
die Wände, die
benutzt werden, sind diese Blockwände Das heißt,
wenn wir einen Raum haben, bleiben
diese Wände, wenn sie
an sind, auch bestehen Also müssen wir einen Weg finden, diese Wände
zu löschen und einfach die
Raumwände zu behalten, die wir wollen. Lass uns das machen. Neue Funktion.
Nennen wir es Set Perimeter Weil es alles festlegt. Wir, wir werden
eine Eingabe benötigen, und die wäre vom Typ Array, und das wäre unser
Zimmerraum-Array. Lassen Sie uns diese Funktion aufrufen
, denn wenn wir sie nicht aufrufen, ist
das ein Durchlauf. Finden Sie es am Ende möglich ,
zwei mal zwei Räume zu haben,
wo wir unseren Raum ST, unsere
Raum-Anordnung, zum Raum st hinzufügen
und dann diesen Raum ST zu den Arrays der Raum-STs Nun, am Ende haben
wir hier die Raumbegrenzung. Weil das das Ende ist. Wir sagten, dass der Raum gültig ist, also weil er gültig ist, ist
sein Umkreis Ich werde
unsere Raumanordnung mit
der Zimmeranordnung hier verbinden und zu unserer Veranstaltung
zurückkehren Nun, wir wissen, dass
von diesem Array der letzte Ort
der ursprüngliche Ort ist. Wenn wir also zwei mal
zwei Raumkabel machen, können
wir sehen, dass das dritte, das
letzte, das
wir eingerichtet haben, die Originalkoordinaten Also hier fängt
unser Zimmer an. Hier fängt es an. Aus diesen Koordinaten, wenn wir
den letzten Index bekommen ,
wissen wir, dass es drei sind. Für den letzten Index drei
hätten wir auch nur drei setzen können. Aber nur für den Fall,
dass wir die Räume größer einstellen wollen, zum Beispiel wäre es
besser, vier mal vier zu nehmen, um den
Raumumfang für den letzten Index Da wir wissen, dass der
letzte Index immer unsere ursprünglichen
Prüfkoordinaten für den Raum
sein würde unsere ursprünglichen
Prüfkoordinaten für den Raum
sein Weil die
restlichen Koordinaten die Koordinaten sind, nach denen
wir suchen. Das ist das Original Oh, was
machen wir daraus? Warum ist das wichtig? Weil ich das jetzt kaputt machen werde
. Weil es zwei mal zwei ist, werde
ich einfach eins
minus eins auf x und dann zwei
auf x. Das macht es irgendwie unbrauchbar
für größere Räume? Wir müssten diesen Betrag
ändern wenn er größer als zwei mal zwei wäre. Nun, was ist das für ein Betrag? Wenn wir zu unserer Farbe zurückkehren und das löschen. Oh, wieder wundervolle Zeichnungen. Das sind Zimmer. Wenn das 0,0 ist. Wenn ich bei x minus eins gehe, ist
das der X-Wert, das ist der Y-Wert. Minus eins ist -1,0, x, das ist Y. Wenn ich plus zwei
nehme, wäre es 01, zwei, dann 2,0 Ich mache dasselbe mit Y. Also hole ich diese Kiste
hier drüben, diese Kiste hier drüben,
diese Kiste hier drüben,
diese Kiste hier drüben, diese Kiste hier
drüben, diese Kiste hier drüben Eigentlich, weil ich es auf beiden
mache, hole ich diese Kiste hier drüben,
diese Kiste hier drüben, diese hier
drüben und hier drüben. Also das wäre
minus eins minus eins, das wäre plus zwei plus zwei. Wie werde ich das alles
durchstehen? Machen wir dasselbe mit y. Nun, bis jetzt
haben wir für jede Schleife eine Schleife verwendet, die ein Array erforderte. Diesmal verwenden wir geschachtelte Viererschleife, also
eine Vierer-Schleife,
wieder eine Vierer-Schleife
für Schleife mit Pause
und wieder eine Vierer-Schleife mit Pause, eine geschachtelte für zwei verschachtelte Schleifen
oder
sowieso wieder eine Vierer-Schleife
für Schleife mit Pause
und wieder eine Vierer-Schleife mit Pause, eine verschachtelte
Vierer-Schleife eine verschachtelte Vierer-Schleife Also werde ich das mit dem ersten Index und
diesem letzten Index und
diesem
ersten im letzten Index verbinden diesem
ersten im letzten Index Also, wenn
wir bei minus eins x beginnen, werden
wir das minus eins y überprüfen. Wenn wir
also
das minus eins x
überprüfen, werden
wir das minus eins y bis
hin zu plus zwei y überprüfen. Dann geht es zum nächsten Index. Dabei handelt es sich im Grunde um verschachtelte vier Schleifen, wie es bei
den übrigen vier Schleifen der Fall war , mit jeweils
vier Schleifen im Array Worauf werden wir
nun achten? Ich werde überprüfen, ob unsere Zimmereinrichtung es uns erlaubt, es mitzubringen. Oh, ich habe diese Variable
hier. Zimmer strahlen. Wenn ich Rooms Ray
eintippe, erhalte ich einen
Verweis auf diese Variable. Ich muss also kein Kabel ziehen. Darüber haben wir gesprochen. Es
geht um die Namenskonventionen und darum, dass sie nicht mit den variablen
identisch sein dürfen. Die lokalen Variablen, die
Eingabe- und Ausgabevariablen, sie sollten alle einzigartig sein. Oh, ich werde überprüfen, ob das diese Koordinaten enthält, was bedeutet, dass ich das kaputt machen werde
. Ich werde die
X-Werte aus der ersten
OR-Schleife und die Y-Werte
aus der zweiten Schleife hinzufügen . Und jetzt habe ich einen
achten Punkt auf der Grundlage
dieser Zwei-For-Schleife erstellt , wir brechen ab. Ich gehe abzweigen. Ich werde das hier
verbinden,
ich werde das hier hinstellen. Und wenn das wahr ist, werde
ich eine
neue lokale Variable erstellen, Olim, sie wird vom Typ eh Point
sein Und es wird ein Array sein. Ich werde hinzufügen. Welche Referenz, ich werde diese beiden Werte
zu diesem Array
hinzufügen. Kompilieren und speichern. Im Grunde genommen haben wir jetzt die
Grenzen unserer Zimmer. F oder Loop mit Pause wurde nicht benötigt, weil
wir hier eigentlich nicht brechen müssen Es gibt keinen Grund
für uns, das zu unterbrechen. Also lasst uns das auf „Nur Loop“ ändern
. Oder du kannst es
einfach so lassen, es ist nicht wirklich wichtig. Ist nur, dass es kaputt geht. Ich verschiebe Knoten auf diese
Weise, indem ich die Steuerung gedrückt halte, einfach ziehe und auswähle Und wenn ich die Taste gedrückt halte
, während ich an einer Stecknadel ziehe, wird das Kabel einfach bewegt Vielleicht sieht das
besser aus. Auf keinen Fall. Wenn Sie künstlerisch sind
und sich mit Tabellen auskennen, gibt es Möglichkeiten,
sie viel besser aussehen zu lassen. Kompilieren und speichern. Und ich denke, das ist ein
netter Zwischenstopp. Wir haben unseren Umkreis. Wir haben die Koordinaten
unseres Perimeters. Der nächste Punkt, das
nächste, was wir tun sollten ist die Wände vom
Umkreis zum Raum hin zu verengen Das nächste Mal
werde ich das tun. Tschüss fürs Erste. Ich schicke
dich beim nächsten rein.
30. Raumauflistung und Debugging: Hallo und willkommen zurück
zum Game-Design-Workshop
und zum Kurs zur Erstellung prozeduraler
Dungeon-Action-RPs
mit echter Engine Five Dungeon-Action-RPs Zuvor haben wir über die
Erstellung der Raumbegrenzung gesprochen. Also haben wir eine Funktion erstellt. Wir haben unsere Raumanordnung erhalten, nachdem wir
die Möglichkeit hatten, zwei mal zwei
Räume zu finden , als wir
entschieden haben , dass es in
Ordnung ist, diesen Raum zu erstellen Wir haben dieses Array hinzugefügt. Und weil wir wissen
, dass die letzte Option dieses Arrays
unser Prüfblock ist, haben wir einige Koordinaten erstellt, um daraus die gesamte
Verordnung zu überprüfen Gegen Ende, wenn es zum Raum
gehört, wenn es zum
Raum gehört, ist das ein Fehler Es sollte bei Stürzen sein. Wenn es nicht zum Raum
gehört, vergrößern wir
den Raumumfang, nicht wenn es zum Raum gehört Wenn es zum
Raum gehört, füge es nicht hinzu. Wenn es nicht zum Raum
gehört, fügen Sie es hinzu, denn wie gesagt, wir überprüfen alles
rund um den Raum, alle benachbarten Gänge, und wir suchen
auch nach internen Gängen. Also, die internen,
nein, es ist kein Perimeter,
es ist der Raum Und jetzt werden wir
die Wände vom
Umkreis zum Raum hin löschen die Wände vom
Umkreis zum Raum hin Weil sie vielleicht andere Bälle
haben, also sind sie nicht über dem Raum, und wir
wollen sie nicht löschen. Das Erste, was wir tun müssen,
ist die Raumbegrenzung zu ermitteln. Jetzt werden
wir es hier einfügen
und von hier aus
gehen wir für jede Schleife Von all dem werden wir ein Kreuz
nebenan finden. Wir wollen wissen,
was sich daneben befindet. Natürlich
werden wir von jeder Errichtung bis zu allen
benachbarten Nachbarn eine Schleife ziehen. Jetzt wollen wir wissen, welcher
dieser benachbarten Nachbarn tatsächlich ein Zimmer eins
ist. Was wir
tun werden, ist, hier einfach eine Menge
Code zu datieren und zu überprüfen, ob er in einem Raum
enthalten ist ,
und weitere Follower haben. Aber wir können
es nicht zu einer reinen Funktion machen weil wir
das ein bisschen
mehr verwenden werden das ein bisschen , um zu überprüfen, ob sich neben uns ein Raum
befindet. Also, eine neue Funktion, und diesmal wird es
eine reine sein. Ich werde eine Funktion erstellen. Ich werde das Find nennen Wir werden
es Find Room Index nennen. Denn später werden wir wissen
müssen, ob es sich um einen Raum handelt, aber auch um welchen Raum es sich handelt, da wir eine
Struktur von Räumen haben. Eine Struktur mit
den Informationen von Arrays, die alle
Koordinaten jedes Raums enthalten Dann können wir sagen, das ist Raum Nummer eins,
das ist Nummer zwei, Nummer drei, Nummer vier, dieses Array wird unsere Räume
aufnehmen, wie viele es sind, und
es hat sie nummeriert Lassen Sie uns nun
mit dem Print-Raum-Index fortfahren. Natürlich
benötigen wir Eingabekoordinaten,
und es wird ein Endpunkt sein, aber eine einzelne Typvariable Dann benötigen wir das
St-Rooms-Array. machen wir eine Schleife Diesmal machen wir eine Schleife
mit Pause, weil
es viele Koordinaten gibt. Ein Ort hier. Und wir werden das kaputtmachen , weil es Informationen
über unsere Struktur sind. Es gibt uns jedes Element, das eine Reihe von
Koordinaten für einen Raum
wäre . Wir werden überprüfen, ob
das mit unseren Koordinaten übereinstimmt. Denn wenn das
unsere Koordinaten enthält, bedeutet das, dass es einen Raum gibt Um das anzuzeigen,
verwenden wir eine lokale Variable. Da es sich um einige
Funktionen handelt, Erinnerung:
Lokale Variablen wirken sich
nicht auf einzelne Funktionen aus. Es wird vom Typ Pool sein und es wird
eine einzelne Variable sein. Wir werden es Zimmer nennen. Vollständige Funktionen werden
nicht empfohlen. Nun, es
widerspricht dem Sinn, externe Einstellungsvariablen
hinzuzufügen Aber wenn es eine interne
Variable ist, eine lokale Funktion, existiert
sie nur hier, sie hat keinen wirklichen Einfluss darauf Und wir werden
das auch auf eine lokale Variable übertragen. Der Index, der die Zimmernummer sein
wird. Wenn wir ein Zimmer gefunden
haben, gehen wir kaputt und jetzt brauchen wir Leistung. Unser Output
wäre also unser Fund. Rom wird von diesem Typ sein, und wir werden uns hier verbinden. Und für den nächsten wäre
es Raumindex. Jetzt siehst du, dass die Benennung
komisch ist , weil ich die andere
benannt habe. Es wird vom Typ Integer sein
. Ich habe dem anderen
eine Zimmernummer gegeben. Ich konnte diese
eine Zimmernummer nicht benennen , weil das alles durcheinander bringen würde. Also werde ich das
hier verbinden und kompilieren und speichern. Jetzt haben wir einen guten Raumindex und er gibt uns Auskunft darüber, ob wir
einen Raum gefunden haben, und wir können unseren
festgelegten Raumumfang fortsetzen ? Gehören also unsere Koordinaten
Nordost-Südwest zu einem Raum Finden Sie den Raumindex. Es ist keine reine Funktion. Machen wir daraus eine reine Funktion und setzen wir sie wieder in die Kategorie der
reinen Funktionen. Bringen wir einen Zweig mit. Und ich
werde das hier verbinden. Und jetzt haben wir ein Zimmer gefunden. Jetzt müssen wir uns an unseren Schauspieler wenden
, um zu überprüfen, ob der
Akteur, der für
diese Koordinaten verantwortlich , auf diesen Koordinaten liegt. Eigentlich die Handlung. Für uns ist es eine Spielfigur, aber es ist eine Blaupause. Jedenfalls. Also müssen wir den Schauspieler
finden, der
für diese Koordinaten verantwortlich ist. Also
holen wir uns unsere Punktkarte und unsere Karte
wäre unser Kerker Aber jetzt haben wir
Zugriff auf unsere Kachel. Daraus werden
wir unsere Wände bekommen, glaube
ich, Mauer, wie
haben wir sie benannt BP-Dekorationen. Wir werden uns Auszeichnungen besorgen, den Kinderdarsteller, den wir brauchen
, um Schauspieler zu bekommen
, den wir dann zu P-Dekorationen
besetzen. Lassen Sie uns das
in eine reine Besetzung umwandeln. So können wir all
diese wunderbaren Knoten
übereinander saugen diese wunderbaren Knoten
übereinander Daraus erhalten wir
Komponenten von s. Und die Klasse
wäre Pic Mesh Component. Tic Mesh-Komponente. Hier ist sie. Nun,
was bedeutet das? Für diejenigen, die neu sind, wenn
wir neu sind,
sind Komponenten alles, was wir dem Blueprint
hinzufügen Wir beziehen also
alle Komponenten
, die vom Typ statisches Netz sind, nicht von der BP-Kachel, von den BP-Dekorationen
, also all diesen Wänden Oder jetzt. Später, dass wir mehr Dinge haben werden. Es wird eine Liste
all dieser Komponenten erhalten. Wenn wir zum Beispiel
eine Mauer und ein Fass hätten , sagen
wir hier, und sie hätten dieselben Regeln
, die wir jetzt erstellen werden, würden sie beide verschwinden. Jetzt lassen wir
die Wände einfach verschwinden. Und was wir verwenden werden, sind
die Tags, die wir haben, das Tag-System aus S und W und E. Gehen wir
also zurück zu Maze Rufen wir die Komponenten nach Klassen und wir gehen zu oder zu einer Schleife
oder zu jeder Schleife von ihnen. Verbinde das mit „Wahr“.
Stimmt. Nun, was wir tun werden, ist der
Hash-Bug hat einen Komponentenfehler Wie bei der Funktion „Wände
verstecken wird
der Zug
durch den Index unseres Arrays bestimmt Wir können tatsächlich zu
unseren Dekorationen auf
Wänden wechseln , indem wir sie einfach kopieren und einfügen Aber jetzt
verwenden wir nicht die Wände, die
Dachboden-Mesh-Komponenten „
Alle Komponenten abrufen “. Ich gehe
zurück in unser Labyrinth. Ich werde dieses Jahr Tempo machen. Ich
brauche eigentlich nicht alles. Ich brauche diesen nicht. Ich gehe dieses Jahr, um mich zu verbinden,
um dieses Jahr eine Verbindung herzustellen. Wir müssen
eine benutzerdefinierte Auswahl erstellen. Und wir haben das Problem wieder. Ich werde
den letzten Ausgang mitbringen. Ich werde aus dem Index herausnehmen. Ich werde
den letzten hier verbinden. Ich werde das hier verbinden. Eigentlich ist das
der falsche Index. Wir wollen diesen Index
, weil dies der Index für Nein und Wet ist. Wir werden das hier
verbinden. Ich werde zwei
weitere Variablen hinzufügen, 32 weitere. Ich lösche das und es wird
North North, Ost-West sein. Und jetzt werde ich das hier
verbinden. Sie ist verbunden. Ja, es ist verbunden. Aber jetzt versteckt
es die Wände in unserem
Umkreis zu unserem Zimmer Jetzt
wollen wir nur zum
Debuggen demonstrieren, was wir Holen wir uns unser ST-Rooms-Array, und wir werden jede Schleife untersuchen sie mit
dem kompletten
Hier und dem Hier verbinden , das eigentlich nicht hier ist. Holt Dinge von hier.
Gehen wir zurück zu unserer Suche nach
zwei mal
zwei möglichen Räumen. Und hier fügen wir
unser ST-Raum-Array hinzu. Lass uns das hier verbinden. Und wir werden eine Pause einlegen. Ich gehe zu jeder Gruppe. Und wir werden uns den Kerker
holen. Und wir werden herausfinden, dass
wir jedes einzelne Loch finden, und wir werden Boden bekommen Davon ausgehend legen wir das
Material fest und wählen
ein anderes Material aus. Wählen wir diesen Holzsockel, dreckige
Ziegelwand oder
was auch immer Sie wollen. Sie wollen nur
sehen, ob es funktioniert. Es baut, und es
hat keinen Platz geschaffen. Machen wir sie ein
bisschen größer, um das zu überprüfen. Nehmen wir an, M gibt
50 in fünf Größen. Und überprüfe auch, ob ich die Create Rooms
miteinander verbunden habe. In Bezug auf die Grafik, das Tor,
nein, habe ich nicht. Suchen Sie nach Möglichkeit zwei mal zwei Räume, nachdem Sie
Kabel für die Truhe erstellt Spiel und wir haben ein paar Zimmer. Wir haben ein paar schöne Zimmer. Jetzt. Als Nächstes müssen wir einige
Wände in diesen Räumen bauen. Und zum Beispiel sollten
solche Dinge, die in diesem
Raum eine Sackgasse
schaffen, nicht passieren. Also werden wir das
in der nächsten Lektion beheben. Auf Wiedersehen,
Señor, bis zum nächsten.
31. Aufbau der Raumstruktur: Hallo und willkommen zurück zum Game Design Workshop
Andal Engine Five, Erstellung
prozeduraler Dungeon Action
ARPs Zuvor hatten wir
unsere Funktion zur Feinabstimmung der
Raumkoordinaten abgeschlossen unsere Funktion zur Feinabstimmung der
Raumkoordinaten und sie zusätzlich um einen
Perimeter erweitert Ähm, wie wir sehen können, gibt es da ein paar Fehler Beispiel können wir Räume
neben anderen Räumen einrichten, und wenn wir Stopp drücken und zu unserem Nachrichtendock
gehen, sehen
wir einen wiederholten Fehler. Gehen wir es also noch einmal durch und beheben wir
die Fehler dieses Mal. Nun, in unserem festgelegten Perimeterraum,
das Erste, was wir
ändern sollten, ist, dass ich
diesen Raumperimeter
für eine lokale Ganzzahl, ein lokales Array, eine
lokale Variable und ein lokales Array von Int-Punkten erstellt habe diesen Raumperimeter
für eine lokale Ganzzahl, ein lokales Array, eine
lokale Variable und ein lokales Array von Int-Punkten Dies sollte
zu einer Variablen heraufgestuft werden, und nennen wir es
alle Raumgrenzen Das werde ich löschen. Ich werde alle
Raumgrenzen hierher bringen. Ich werde diesen
auch ergänzen. Ich werde das kaputt machen
und y zu y und x zu x hinzufügen. Ich muss wirklich nichts
weiter tun weil das den Code
durcheinander bringt. Aber wir sollten eine Variable haben , die alle Perimeter hat Als Nächstes sollten
wir diesen Fehler überprüfen , diesen
Nachrichtenfehler Es heißt, dass Branch
nicht auf Non zugreifen kann. Access non ist normalerweise der
Versuch, auf etwas zuzugreifen, das es keine Variable gibt. Wenn Sie auf etwas klicken,
wird es zu einem konstanten Makro führen. Aber es sagt uns
, wo wir suchen müssen. In dieser Filiale auf Base Gen
auf festgelegtem Raumgelände. Auch hier
führt die Abzweigung zur Funktion. Aber es befindet sich im Umkreis des festgelegten Raums. Also lass uns auf Maze Gen
und Strom Perimeter gehen. Was es tatsächlich tut,
ist, dass
wir irgendwann versuchen, es auf der
Dungeon-Karte zu finden Aber wenn wir
den Umkreis des Raums verlassen,
besteht die Möglichkeit, dass sich der Umkreis nicht
innerhalb des Kerkers befindet Es hat keine Kacheln. Wir werden also
fragen, ob die Dungeon-Karte
, die wir anfordern,
der Schauspieler, den wir über die
Koordinaten
anfordern , gültig ist Und wir werden den zweiten Knoten
verwenden
, der uns tatsächlich eine Verzweigungsoption bietet Ich werde den Wert „true to is valid
“ mit
der XY-Schleife und den Wert „valid“ mit der
Fore−Schleife verbinden XY-Schleife und den Wert „valid“ mit der
Fore−Schleife Wenn es nicht gültig ist, ist es
uns egal, und das wird nicht passieren.
Der Fehler wird nicht auftreten. Also drücke ich
jetzt Play, j. Das tut es nicht. Wenn ich anhalte, dann sollte unser
Nachrichtenprotokoll übersichtlich sein, bring es mit und es ist
übersichtlich gestaltet. Nun, das nächste Problem, das wir haben, ist, dass
Räume neben anderen Räumen
entstehen , als ob der Perimeter nichts bewirkt Das liegt daran, dass ich den Code noch nicht
hinzugefügt habe. Also werden wir uns auf die Suche nach
möglichen zwei mal zwei Räumen machen. Und wenn wir
nach speziellen Kacheln suchen, werden wir auch nach
allen Raumgrenzen suchen, wir werden hier
eine Übersicht vornehmen. Wir werden
unsere Raumanordnung miteinander verbinden, und wir machen
ein Ende, kein Ende,
oder ein Bulion, weil
es entweder auf den speziellen Fliesen
oder auf den Räumen ist Wir wollen nicht, dass es
ein gültiges Zimmer ist. Wenn ich auf Kompilieren drücke.
Lass uns Play drücken. Räume sollten nicht
nebeneinander erstellt werden. Nun, vielleicht hier, das
konnten sie nicht. Lass es uns nochmal versuchen. Solideres Labyrinth.
Ja, solider Wie wir sehen können, liegen die Zimmer
nicht neben anderen Räumen. Es schafft diese
Distanz zwischen ihnen. Ein Kachel Abstand,
der Umkreis. Eine Sache, die
wir auch ändern sollten, wäre , nicht das Material zu ändern, sondern
es zu löschen Aber wir können alle Räume,
alle Koordinaten
zu einem Array hinzufügen . Also werde ich ein
neues Array erstellen, eine neue Variable. Ich werde das
alles Zimmerhorte nennen. Es wird vom Typ
Endpunkt sein. Und es wird ein Array sein. Und ich werde zu dieser Reihe
all die Raumkabel
hinzufügen, die wir am Ende durchbrechen , um
möglicherweise zwei mal zwei Räume zu finden Wenn wir endlich
die Haupt-Wortschleife verlassen, brechen
wir
die Anordnung aller Est-Räume auf
und fügen alle
Koordinaten hinzu, die wir innerhalb der
Strukturanordnungen
finden Das nächste, was wir jetzt
tun sollten , ist die Räume zu bauen Also, raten Sie mal,
wir werden wieder
eine Veranstaltung veranstalten, um die Räume zu
bauen. Lassen Sie uns am Ende diese Funktion
erstellen. Nennen wir es Räume bauen. Nennen wir es am Ende. Denn wenn wir testen,
werde ich vergessen, es hier hinzuzufügen, und geben wir diese Funktion ein. Aber bevor wir mit
der Programmierung beginnen, wollen wir erklären, was diese
Funktion tun soll. Lassen Sie uns also malen, um
ein paar tolle Zeichnungen zu erstellen. Das Erste,
was es
tun sollte , ist die Heilung der Steine, als ob wir vier Steine hätten. Aber im Grunde müssen sie ihre Wände so
umformen, dass sie
an den Rändern liegen Und basierend auf ihren Pfeilen wird
das nicht passieren Also, was wir brauchen, ist eigentlich an jeder Kachel
, die der Raum hat,
befestigt, welche Wände an und welche aus
sein sollten. Nein, das ist das
Erste, das Erste. Es wird nicht das Erste
sein, aber es ist eines der Dinge
, die unsere Funktion tun muss. Nun, die zweite Sache
wäre zu sagen, was für Wände die zweite Sache wäre, welche Art von Wänden bauen
wir in unserem Zimmer auf? Weil wir eine bestimmte Anzahl
von Wänden haben , verschiedene Wände. Wenn wir zu unserem statischen Chaos übergehen. Wenn wir
zur Übersichtskarte gehen,
gibt es noch mehr, du änderst auch
die Farbe der Karten Jetzt sind Karten rot, richtig. Wenn ich also auf die
Übersichtskarte gehe, um die Auswahl zu speichern können
wir sehen, dass wir ein, zwei, drei,
vier, fünf Kacheln und
verschiedene Wandsets
haben . Ausgehend von diesen Wänden sollten
wir also fünf
verschiedene Arten von Räumen haben. Deshalb wird diese
Funktion
auch dafür verantwortlich sein. Aber das ist ein weiterer
Teil, den wir haben. Funktion. Jetzt werden wir abschließend einen Randomizer
hinzufügen. Wenn wir also unser Zimmer haben, vielleicht zufällig, können wir hier oder hier
eine Wand bauen An einer beliebigen Stelle im Raum können
wir nach dem Zufallsprinzip
eine Wand hinzufügen oder nicht. Das Erstellen dieser
zufälligen Wand wäre also das dritte, was
diese Funktion tut. Wechseln wir jetzt zurück zu unserer Karte. Gehen wir zum Spiellevel und gehen wir zu
unserem Labyrinth-Generator in der Schlafzimmerfunktion Was wir brauchen,
ist das Ray-ST-Rooms-Array, und wir werden für
jeden Loop auf allen Loops eine Schleife machen Und das erste, was
wir tun werden, ist die Struktur zu
durchbrechen, um
die Koordinaten ihres Raums zu ermitteln. Wir werden
den Index auch auf eine Variable hochstufen, die lokal gesteuert
wird. Werben Sie für eine lokale Variable
und nennen wir das Raumindex. Und
verbinde das hier. Denn jedes Mal, wenn wir das für Loop
laufen lassen, laufen
wir im Grunde genommen in
einem anderen Raum. es zum ersten Mal ausgeführt wird, der erste Index dieser
Array-Struktur wird
der erste Index dieser
Array-Struktur
der erste Raum sein Das zweite Mal, wenn es läuft, wird es der zweite
Raum sein, und so weiter So können wir zum Beispiel eine
Regel haben, sagen
wir, da wir fünf verschiedene Räume
haben, würden
die ersten fünf immer ein anderes Aussehen
wählen. Oder um es noch
interessanter zu machen. Nehmen wir an, die ersten beiden werden ein
anderes Aussehen haben, und dann würden die anderen von irgendwelchen zufälligen Typen
sein. Dadurch wird
die Illusion erweckt, dass einige
Räume wirklich etwas Besonderes sind und andere eher üblich sind. Lassen Sie uns also eine weitere
lokale Variable erstellen, die wir All index nennen. Nennen wir es Wandindex. Das
wird wieder eine Ganzzahl sein und kein Array, es wird eine einzelne
Variable sein. Und speichern. Stellen wir diesen
Raumwandindex ein, diesen Wandindex. Lassen Sie uns also überprüfen, ob dieser
Wert größer als zwei ist. Also Null, Eins, Zwei ,
eigentlich wären die ersten drei
Räume anders. Und dann ab dem vierten
und danach würde
es „Rückgängig“ wählen. Oder wir würden Nummer eins wählen und es würde in
die ersten beiden Räume gehen. Aber lassen Sie uns tatsächlich drei machen. Also, ich werde einen Zweig
auswählen, ich werde ihn hier verbinden. Ich werde das auch verbinden. Wenn es also über zwei liegt, bedeutet das, dass
es mehr
als unser gewünschter Wert ist, und ich setze den Wandindex
auf eine zufällige Tinte im Bereich. Das wäre 0-4. Und der Grund, warum es
vier sind, ist,
dass wir fünf verschiedene
Räume haben 01234 besteht also aus fünf
verschiedenen Optionen. Von Null als Zahl
als Einheit zu zählen, ist am Anfang etwas schwierig
, aber man gewöhnt sich daran Nun, wenn es nicht
größer als zwei ist, dann haben wir den Wandindex genommen Sagen wir zum Raumindex. Es wird also immer
Raumindex eins,
Raumindex zwei, Raumindex Null sein. A: Ab Null zählen
, daran
müssen wir uns gewöhnen. Nun werden wir
hier nachlesen, wie wir diese beiden Knoten verbinden können. Hier. Ich finde, das ist ein netter
Punkt für diese Lektion. Da wir später etwas komplexere
Dinge
tun müssen später etwas komplexere
Dinge
tun und sie ein
bisschen mehr erklärt werden müssen. Auf Wiedersehen, ich schicke
dir den nächsten. Auf Wiedersehen.
32. Raumfunktion und Wandbefestigung: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon
Action Apes Creation Course Zuvor haben wir einige Probleme
behoben, bei denen es einige Fehler im
Labyrinth-Generator gab Und wir haben auch einige
Dinge über unsere gebauten Räume erklärt. Wir haben die Funktion
der gebauten Räume
damit begonnen alle
Räume mit einer Vier e l durchgegangen sind, und dann haben wir eine
Variable zum Speichern des Index erstellt, eine lokale Variable, um
den Index der Räume zu speichern. Wir haben eine Regel erstellt, um die Wandtypen zu
ändern, und jetzt ist es meiner Meinung nach an der
Zeit, fortzufahren. Nun, das Erste, was wir tun
müssen, das Erste. Eines der Dinge, die wir tun müssen, und das werden wir
jetzt tun, ist zu entscheiden, ob unser Zimmer
eine zufällige Wand haben wird, und wo würde diese Wand sein? Wenn ja, werden
wir später entscheiden,
aber für den Fall, dass es so ist, entscheiden
wir, wo diese zufällige Wand sein soll. Nein, ich werde
diesen zufälligen Ganzzahlbereich kopieren und einfügen
und die Variable auf
drei
ändern, weil unser
Raum zwei mal zwei ist, also Null, Eins, 23 führt
zu vier Optionen. Jetzt werde ich
das zu einer lokalen Variablen
heraufstufen und das als internen Wandindex bezeichnen
. Und außerdem werde ich aus dem Pausengefühl von Räumen wie diesem unsere
Raumkoordinaten zwei mal zwei holen, P ermitteln
und das auch
zu einer lokalen Variablen heraufstufen
und das Ganze dann und das auch
zu einer lokalen Variablen heraufstufen
und das Pile No nennen Gang der
Innenwand. Nun, das sind Koordinaten, aber das
können wir anhand des Variablentyps erkennen. Und ich werde das hier
verbinden. Zum Besseren werde ich die
Zufallsmenge verwenden. Auch hier gilt: Wenn ich
hier nach dem Zufallsprinzip eine Verbindung hergestellt hätte, wäre das wahrscheinlich eine andere Zahl
als diese, weil
dadurch eine neue Zufallszahl generiert würde Also wollte ich
es von der Menge her verbinden oder
die eigentliche Variable
hierher bringen und sie so verbinden, als ob
das so oder
so wäre Oh, jetzt. Als Nächstes
sollten wir berechnen,
wo sich unsere Wände auf
Basis unseres Raumindex befinden. Da uns diese Zeile hier den Break ST-Raum
bringt, all unsere Raumindizes Ich werde es hier aufwärmen. können wir für Loop.
Für jeden von ihnen. Und wir wissen, dass der letzte Index, glaube ich, der Nordwesten
ist Wir müssen das überprüfen,
wo wir die Räume erstellt haben. Nun, das ist die Möglichkeit, Koordinaten
zu erstellen , zwei mal zwei Räume zu
finden. Wir machen zwei mal zwei
Raumakkorde. Der letzte ist also
der Checkroom, und dann fügen wir einen auf X, einen auf Y, nicht Y. Das wäre
also der Nordraum Das wäre der Nordraum, der Nordwestraum. Dann addieren wir Y. Das wäre
also der Nordosten, Nummer zwei, und Nummer eins ist Da X gleich bleibt, können
wir es Südosten nennen, und der ursprüngliche Wert
ist Südwest. Wenn ich von Südosten, Südwest
spreche, spreche
ich natürlich von
den Wänden, die im Raum aktiv
sein werden . Als ob der erste Westen und Süden
sein würde. Der obige wäre West
und Nord, und es geht weiter. Wenn du es aufschreiben willst, wäre
das Nord und Ost, und das wäre
Süd und Ost. Im Grunde müssen
wir zwei Richtungen angeben. Unsere Anweisungen stehen auf der Kachel auf der Spielfigur
, der BP-Kachel. Was sind deine geschlossenen Seiten? Anfahrt mit dem W. Wie dem auch sei, gehen wir zurück
zu unseren gebauten Räumen. das zu tun, da
wir die Reihenfolge kennen, haben wir quasi
die Reihenfolge herausgefunden , in der diese eingerichtet sind Wir können tatsächlich auf int zugreifen und haben drei verschiedene
Ergebnisse, weil es ein Array mit vier Längen ist,
vier verschiedene Ergebnisse. Tut mir leid. Und lassen Sie uns die Standardeinstellung
entfernen. Nun, was ist der
Schalter? Wir haben
ein bisschen über Aufzählungen gesprochen ein bisschen über Aufzählungen Es ist das Gegenteil von einer Auswahl. Sie können Zeichenketten einschalten, Sie können Aufzählungen einschalten
und erhalten im Grunde genommen
eine andere Ausgabe, die Sie je nach Eingabeauswahl ausführen Für diese Koordinaten benötigen
wir nun die Ti-Sets Um das zu tun, holen wir
uns unseren Kerker und wir werden kämpfen Jetzt wollte ich etwas
über Pint und so sagen. Denken Sie nicht, dass Pint
nur eine Aktion ist , die sofort
passiert Dies sind nur
Funktionen,
die für uns bereit sind, die Variablen durchgehen und prüfen, ob die Variable der gewünschten Variablen
entspricht Es ist nicht so, dass ein Knoten wie
dieser
nicht so schwer ist wie
beispielsweise eine For-Schleife, die dieselbe
Anzahl von Variablen
durchläuft . Wie dem auch sei, lass uns weitermachen. Es ist ein bisschen besser. Es ist ein bisschen besser. Nun, da wir das gefunden
haben, brauchen wir die Anweisungen. Und wir müssen
es jedes Mal hinzufügen , weil wir
von zwei Wänden sprechen. Und tatsächlich müssen wir
das kopieren und einfügen. Es gäbe einfachere Lösungen , um dies mit einer Funktion zu
erreichen, aber im Moment
wäre das effizient. Jetzt werden wir
sie auch brauchen , um alle
anderen Wände auszuschalten. Wir werden duplizieren. Ich muss
die Leitungen wieder anschließen. Vielleicht versuche ich es ein bisschen zu
machen, lese hier die Notiz vor, geht so, Mama, geht so. Sieht besser aus. Beweg das, mehr runter. Wir klicken auch hier. Wir klicken auch hier. Wir erstellen einen Haufen
ausgelesener Knoten. Es gibt also keine Okta. Das hat es geschafft. Modi, abscheuliche Aufgabe könnte
ich sagen Nehmen wir an, die ersten sind
diejenigen, die durchgeschaltet
sind Es gibt eine Möglichkeit, sich zu bewegen, und die zweiten werden diejenigen
sein, die
Wände haben. Für den ersten Satz dreht man das
immer an. Der zweite Satz besteht darin, die
Wände einzuschalten. Also ist es aus. Lassen Sie uns nun die Anweisungen
herausfinden. Wie gesagt, die Zahl Null steht wieder für große Schmerzen
im Westen und Norden. Ost und Süd sollten also ausgeschaltet sein. West und Nord? Nein, ich sehe das Gegenteil, habe ich nicht Osten und
Südosten und Süden gesehen. Lass uns zuerst die ersten machen
und dann die zweiten. Nun, was das zweite Feld angeht, wäre
das erste in der Reihenfolge Nord und Ost. Ist
das das zweite? Hab ich schon wieder vergessen, ich muss nachschauen. Der erste ist einfach plus x, das ist
also der Nordwesten. Der zweite ist
nein auf x und plus y. Der zweite ist der Süden. Okay. Der
zweite ist dieser. Das sind zwei, das ist eins. Das sind drei und das ist Null. Nein, tut mir leid. Ich
gebe nicht meine eigenen Regeln auf. Das ist also Null. Das ist eins. Das sind drei, und das sind zwei. Es ist also nützlich, immer einen Outpad
zu haben , der einfache Dinge
wie diese erledigt. Nun, die zweite,
wir, die Ost-Süd-Richtung, also
Nord und West sollten geschlossen
sein, Nordwest. Die dritte Sekunde,
ein Drittel der Reihenfolge, Nummer zwei
wäre Nord und Ost. Das sind also West und Süd
, die sich auf der ersten Seite befinden, die letzte
wäre Nord und West. Das bedeutet also Norden und Osten. Hier werden wir
Südwest Nummer drei haben, Nummer zwei, wird Nord und Ost
sein. Und Osten. Lassen Sie uns überprüfen, ob
jede Zeile alle enthält. Da dieser
Norden und Westen ist, ist
dieser Süden und Osten und
dieser ist Ost und Süd, also ist es Nord und West. Duplikate, also ist es richtig. Wir werden es beim Testen
herausfinden. Das ist also der Teil unserer Funktion,
der die auf
die Kacheln
setzt neuen Pfeile auf
die Kacheln
setzt
, basierend darauf, dass es sich um einen Raum handelt. wirst du mir sagen, ja, aber wo stellen wir die Tür auf? Nun, das ist ein
anderes Thema denn wenn wir alle unsere Zimmer
schließen, wollen
wir in der Lage sein durch
den ganzen Kerker
zu navigieren Also werden wir das danach
machen. Also, ich denke, das ist
genug für diese Lektion. Und in der nächsten Lektion
wollen wir versuchen, unsere Innenwand hinzuzufügen. Auf Wiedersehen. Wir sehen uns beim nächsten.
33. Finalisieren von Raumfunktionen: Vorher haben wir unsere
Schlafzimmerfunktion um einige Dinge erweitert :
gebaute Räume bilden Räume Also Billroom-Funktion. Wir haben die Variable
Innenwandindex
und die Variable Kachel der
Innenwand hinzugefügt , sich um einen Tintenpunkt handelt Im Grunde verwenden wir eine
zufällige Ganzzahl für den Index und
speichern dann diesen Index, die Koordinaten dieses Indexes. Danach durchgehen wir jede unserer Raumanordnungen, die zur
Struktur der Raumanordnungen gehören, und legen manuell fest
, welche Wände welcher
Seite der Raumanordnung
entsprechen sollen welcher
Seite der Raumanordnung
entsprechen sollen Nun, wie gesagt, das nächste, was wir tun
sollten, ist, diese
Innenwand
tatsächlich hinzuzufügen oder nicht hinzuzufügen Nicht alle Räume müssen eine Innenwand
haben. Um das zu tun, schalten wir
weiter unten int ein. Und T durch diesen
Schalter von int. Wie Sie sehen können, habe ich es von
der kompletten FD-Schleife aus
angeschlossen . Der Grund dafür ist, dass wir uns immer
noch in dieser FD-Schleife befinden. A: Das ist verschachtelt für
jedes Index-Inkrement, im Grunde für jedes Array, wir haben das
im Switch auf int, und wir werden drei Variablen
hinzufügen Eigentlich werden wir vier
hinzufügen, weil, sagen wir
zum Beispiel, Null,
Eins , Zwei, Drei, wir speichern Variablen
für das tatsächliche Platzieren einer Wand, und vier wäre
nicht das Platzieren einer Und wie werden wir das machen? Wir werden int wählen. A, Peak A, wir gehen
zu einem zufälligen Pool. Also werden einige Räume eine Wand haben. Also werden Zimmer nicht haben. Aber wenn Gipfel A erreicht ist, wählen
wir
zum Beispiel Nummer vier, also keine Mauer bauen. Wir werden
diesen Hinrichtungs-Pin entfernen, den Standard-Pin, weil
wir ihn nicht wollen. Und auf B brauchen
wir tatsächlich einen zufälligen Index. Du hast es nicht zufällig genannt.
Wie haben wir es benannt? Interner Wandindex. Also, hier brauchen wir den
Innenwandindex. Toll. Also haben wir B für 0123 Aber welcher Raum ist welcher
nochmal, gerade jetzt müssen
wir
so etwas machen, um die Wände
der Räume festzulegen , denn dann
lass uns malen, um zu zeigen, dass Go to Löschen nötig Wir haben also unsere vier
Gänge, die unser Zimmer sind. Und wir wissen, dass es vorerst rundum eine Mauer
gibt Vielleicht
hätte es
etwas dicker sein sollen. Ticker-Zeile. Wir könnten eine
dickere Linie wählen. Ticket eins. Also haben wir unsere Wände rund um einen neuen
Zeichenstil eingerichtet, Wände mit Boxen. Oh. Also, wenn wir in
diesem Block hier drüben wären, könnten
wir hier oder hier
drüben eine Mauer haben, sie wäre immer noch
im ganzen Raum verfügbar. Und das gilt für jeden Block. Wir könnten beide
Seiten jeder Kachel haben, eine davon, aber wir können eine auf beiden
Seiten in jedem Gang
auswählen Oh, wie ich schon sagte, wir werden wieder ein
solches System machen Wir werden die Variablen manuell
hinzufügen. Aber wir müssen
herausfinden, welcher Raum welcher ist. Und basierend darauf, dass
dies auf unserer Struktur liegt. Wir hatten tatsächlich diese
vorherige Zeichnung. Lass es uns noch einmal malen. Ich gehe, damit es mir besser geht. Das ist mit Sicherheit der dritte. Das ist Null. Das sind zwei, und das ist eins,
und das sind zwei. Ich glaube, so
hatten wir es. Lass es uns noch einmal überprüfen. Ich werde mir eine Sekunde Zeit nehmen
, um die Funktion zu finden. Ich gehe zu den Funktionen,
finde sie, um Räume zu bauen, mache zwei mal zwei S. Das ist was wir wollen, weil
es rein war. Null ist p eins auf x, eins ist p eins auf y, eins ist Ost-Süd und das zweite ist eins. Dieser. Also ja,
das ist richtig. Toll. Gehen wir zurück in unsere Bauräume und kommen
hierher, um das Feld zu füllen. Nun, da wir wollen, dass eine
von zwei Wänden entsteht, werden
wir vier Zweige bauen weil es entweder die
eine oder die andere Wand ist. Und zu diesen Bedingungen werde
ich einfach eine Rechnung machen, an
alle Bedingungen geknüpft ist Was Nummer vier angeht, brauchen
wir diesen Schritt , weil er nicht alles
addieren wird Aber wir werden
das später mit
dem verbinden , was als Nächstes kommt, nämlich
der Wandmontage. Oh. Bringen wir einige Knoten mit
, die wir bereits haben. Wir benötigen
zwei für das oben Gesagte, zwei für das Folgende,
zwei weitere und noch zwei. Das wurde groß, aber es ist in Ordnung. Du musst sie nur voneinander trennen, damit es ein
bisschen mehr blau ist. Wenn Ihr Bauplan ein
bisschen komplex wird ,
gibt es zu viele Dinge Stellen Sie sich ihnen, das ist nicht
wirklich wichtig. Wir haben endlosen Platz,
endloses Scrollen. Punkt. Oh, holen wir uns das
Kerker, das wir brauchen,
das Plättchen, nein, tut mir leid, Dangon,
aus dem Kerker, das
Plättchen, das Also
holen wir uns die Dungon-Karte
und wir werden herausfinden, was wir finden Diese variable Kachel Innenwänden, die wir hier aufbewahrt
haben. Da wir die Fliese kennen. Wir wissen, was auf
den beiden mal zwei Ja steht, welche Platzierung auf den
zwei mal zwei Achtern. Wir können einfach Abschnitte finden
und abrufen, und jetzt müssen wir die
Wegbeschreibung mit der ganzen Anzeige verbinden Eins, zwei oder sie erweitern sich auch, sie werden zu einem noch größeren
Ärgernis auf dem Bauplan Stellt eine Verbindung zu False her. Ich weiß nicht, ob
einer von Ihnen
mit Musikredakteuren wie Reason gespielt hat . Es sieht sehr nach The
Connects to Reason aus. Jedenfalls. Stütze sie auf. Jetzt. Lass uns herausfinden
, welche Wände wir brauchen. F Null, wir sind im
Süd-Nord-Westen. Wir brauchen eigentlich die
entsprechenden Innenwände. Im Grunde haben wir das
Licht ein bisschen über uns. Aber da es ein
bisschen chaotisch ist, habe ich es nicht getan und weg,
lass es uns noch einmal machen Wir brauchen den Osten und wir brauchen den Norden, es ist Ost oder
Nord, Süd, tut mir leid Ost und Süd für den
ersten Platz. Der nächste. Der nächste ist hier
unten, also brauchen wir Norden und Westen. Nord und West. Der nächste ist Nummer zwei. Nummer zwei, hier ist die Farbe. Nummer zwei, wir brauchen
West und Süd. 02 ist dieser West-Süd. Für den letzten
brauchen wir Norden und Osten. Nora, es ist schon für uns
da. Episch Also, was
wäre der nächste Schritt? Zuallererst, da wir die
Informationen über die Pfeile so stark
geändert haben . Wir haben unser eigenes Pfeilsystem erstellt. Lass uns einfach die Pfeile zusammenfassen. Lass uns das einfach machen. Was
wir brauchen, sind ST-Raumkabel. Wir werden
es von überall her bringen und jede Schleife eingeben Und wir werden alles
mit E verbinden. Im Grunde genommen auf den Blöcken, die Räume
sind, auf den
Kacheln, die Räume sind, oder unsere Pfeileinstellungen
werden auf das zurückgesetzt, was wir wollen Jetzt müssen wir auch
diese Vier hier drüben,
die hier keine Innenwand
haben, mit den vier Schlaufen verbinden die hier keine Innenwand
haben, mit den vier Schlaufen verbinden Also behält es das alles. Und jetzt, wo wir
mit den vier Schleifen
durch die Koordinaten kreisen , suchen
wir den
passenden Akteur Eigentlich können wir das einfach
kopieren, weil es
das ist, was wir brauchen Wir holen den Mist, den Fund und wir stellen die
Verbindung zu dem Fund Und von hier aus besorgen
wir uns Dekorationen. Die Variable ist
immer unten, und wir werden zu Dekorationen
übergehen. PPG zuerst der Kinderarzt. Und daraus
werden wir Dekoration bekommen. Entschuldigung, wir werden
die Dekoration abschneiden. Und wir werden aus dem Schnitt einen reinen Schnitt machen
. Auch hier ist es schneller,
effizienter
und hilft beim Nicken, nicht bei Spaghetti
. Werde ein Turm. Lassen Sie uns nun Pfeile in all
diesen Dekorationen
umschalten Schalten Sie die Pfeilnachricht um, da es sich um unsere Blueprint-Schnittstelle Ich werde das hier verbinden. Wenn ich ja, habe
ich das diesmal mit
den Dekorationen in Verbindung gebracht. Ich glaube, das ist schon einmal im Unterricht passiert
. Aber ich denke, wir können jetzt testen und sehen, was wir mit Pfeilen geschaffen haben. Wir werden sehen, wie ein paar
Pfeile Räume erschaffen, ich glaube, wenn alles gut
gelaufen ist. Ich bin mir also nicht sicher. Möglicherweise ist das ein Zimmer. Vielleicht hätten wir das Debaking beim schnellen
Auswechseln
eines Tom-Generators nicht
entfernen schnellen
Auswechseln
eines Tom-Generators Gehen wir zum geraden Diagramm über. Gehen wir hier schnell zu der Suche nach
möglichen zwei mal zwei. Wir haben sie auf Kopie,
die Karte, die Dungin gefunden Wir werden das verwenden, um Bodenmaterial zu
verlegen. Ich werde tatsächlich das Wort für uns
wählen und auch das Material festlegen,
uns einen Knoten besorgen. Diesmal entscheiden wir uns für den Dreck. Kompilieren und speichern. Lass uns spielen,
irgendeinen Dreck essen, auswerfen. Okay. Also wir haben ein paar Zimmer, aber Teams hat nicht wirklich funktioniert. Warum ist das so? Lass uns jetzt Material
herausfinden, wir waren hier. Wir schalten die Pfeile auf
der Couch um. Pfeile sind
nicht auf Dekorationen Aus diesem Grund wird die Nachricht
gesendet, aber Dekorationen haben
keinen Code, der mit den Pfeilen zu tun Wir sollten die
Pfeile direkt auf die Kachel schicken, nicht auf die Dekoration.
Verbinde die Dekorationen. Die Art, wie es verbunden ist, habe ich benutzt, falls
du dich fragst. Ich habe Alt gedrückt und geklickt und die Leitung verbunden
, die Sie anvisiert haben. Also beim Kompilieren und Speichern sollte es
diesmal funktionieren, sollte es
diesmal funktionieren weil du
den richtigen Blueprint aktualisierst, nicht das untergeordnete Dekoelement Ja, hier sind wir, und wir haben auch einige Türen
, die nicht selbstverständlich sind Sie werden später kommen ps. Wie Sie sehen können, wurden die
Wände der Räume nicht aktualisiert, weil wir die Wände hier nicht
aktualisiert haben. Aber die Pfeile sind korrekt. Das brauchen wir gerade. Wir brauchen die Pfeile. Basierend auf den Pfeilen
in der nächsten Lektion werden
wir die Wände
verändern, und es wird endlich eine Wand mit einem Raum mit
Wänden und ohne Decke sein. Wir werden das
alles später reparieren. Auf Wiedersehen, wir
sehen uns beim nächsten Mal.
34. Randomisieren von internen Wänden: Hallo und willkommen zurück
zum Gang Design Workshop
und zum prozeduralen
Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine
Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine
Five-Action-Rollenspielen Zuvor haben wir unseren gebauten
Räumen noch ein paar weitere Dinge
hinzugefügt unseren gebauten
Räumen noch ein paar weitere Dinge
hinzugefügt Wir haben hier über
diesen Schalter hinzugefügt, welche Wand zufällig platziert
werden soll hier über
diesen Schalter und die Variablen
, die wir zuvor gespeichert haben, die Kachel der Innenwand, den Innenwandindex. Durch diesen Schalter haben wir uns für eine zufällige Zahl
entschieden, die platziert werden würde, oder wenn wir die Zahl
vier auf dieser zufälligen Ganzzahl wählen, wird nichts platziert. Und wir haben auch die Funktion „
Gesamtpfeile“ korrekt verwendet, nachdem wir ein paar Versuche hatten, die Pfeile so
zu bekommen, wie wir es wollten, also die Pfeile im Raum Lassen Sie uns nun damit fortfahren ,
festzulegen, welche Wände oben
sein
sollen und welche nicht Gehen wir zur
Dekorations-PP und erstellen eine neue Funktion, die dieser eigentlich
ziemlich ähnlich sein wird. Wir könnten das aktualisieren,
aber lass uns ein neues machen. Der Klarheit halber. Wir werden
diese Funktion Build nennen. Nein. Lass die Wände Platz haben. Wände der Zimmer. Und wir werden
eine Eingabe benötigen, weil wir sie
direkt hier
vom Labyrinth-Generator
aufrufen werden direkt hier
vom Labyrinth-Generator Wir haben also direkten Zugriff auf die Anweisungen von der Kachel aus Da wir von dort aus direkten
Zugriff haben, können
wir es direkt dort einspeisen. Das könnte aber, da
wir unseren Elternteil hier haben. Lassen Sie uns keine
Information weitergeben. Es ist effizienter
, es von
hier zu bekommen, um es von den
eigentlichen PP-Dekorationen zu bekommen, weil wir eine PP-Kachel haben. Oh, wir werden uns eine Wegbeschreibung
holen. Anhand der Wegbeschreibung holen
wir uns die Schlüssel. Wie Sie es erraten haben,
werden wir die Schleife
durch diese Tasten oder jede Schleife halten durch diese Tasten oder jede Schleife Dann werden wir die
Schleife auch von unseren Wänden aus halten. Und wir werden prüfen,
ob das Bauteil Stug hat, das ist das Element der Anordnung aus der
vorherigen oder der vorherigen Richtung Nun, wenn es gezerrt hat, werden
wir es tun, aber etwas hängt von dem Wert ab, den
wir für Richtungen haben Also werden wir den Wert finden, der
dem Array-Element
entspricht, der Mutter, dem Host oder
der Schleife Dies ist das Mutterschiff
, das den Rest steuert. Nun, um ehrlich zu sein,
in diesem Fall ist
dies das Mutterschiff, das das alles so oft
fährt. Aber wie Sie sehen können, dauert
es nur ein paar Sekunden. Das werden wir in
der Ladeleiste sehen. Was werden wir jetzt tun? Wir werden die
Sichtbarkeit einstellen.
Ich glaube, wir verstecken sie, die sich
darin versteckt haben. Lass uns beides machen. Ich habe sie wieder. eigentlich keine Rolle.
Wir wollen, dass sie sichtbar sind, und wir wollen auch, dass sie
nicht zu Gewinnen versteckt werden. Falls ihre
Kollision ausgeschaltet ist, sollten
wir auch Kollision einstellen. Das ist alles Dante und nett, aber was stellen wir hier ein Also für die Sichtbarkeit. Wenn das stimmt, wollen
wir, dass die
Sichtbarkeit ausgeschaltet ist. Also brauchen wir hier ein T. Kein Bulle. Nein, O, L. Wenn das wieder wahr ist, wollen
wir, dass es unsichtbar
und versteckt ist. Das gehört hierher. Und wenn das wahr ist, was bedeutet, dass es ein Vergehen gibt, wenn es wahr ist, bedeutet das, dass
du es durchziehen kannst. Wir brauchen hier eine Auswahl. Und wir müssen das hier
verbinden,
es ist einfacher, es zu finden,
wenn es keine Kollision gibt,
wenn es falsch ist,
kollisionsfähige Quaran-Physik Kompilieren und speichern, und das ist so ziemlich
alles. Lass es uns testen. Haben wir es
mit Nope verbunden, haben wir nicht. Also werde ich das lesen. Wir brauchen es nicht. Wir brauchen von
hier, wie haben sie es genannt? Wände dieses Zimmers. Also Wände ,
jetzt sollten wir
diese halben Wände haben , die wir rund um die Zimmer
haben. Nimm es nochmal. Nein, tun wir nicht Es gibt ein Problem.
Lass es uns herausfinden. Was könnte es sein? Lass uns das
vom Labyrinth-Generator aus überprüfen Lassen Sie uns von hier aus nachsehen. Wir führen diese
Instanz aus, die hier läuft, und ihre Instanz
setzt ihre eigenen Variablen. Dann fügen wir eine
falsche Wand einer Zimmerwand hinzu. All das sollte im Grunde
falsch sein. Denn wenn es wahr ist, sind
wir auf der Durchreise. Aber wenn wir falsch sind
, haben wir die Mauer. Mal sehen, ob das behoben ist. Die, die Wände, nicht das Okay, wir haben eine Mauer hier,
wir haben eine Mauer hier. Ich hatte nicht erwartet, dass die
eigentlichen Wände repariert werden. Warum entstehen die Wände nicht? V Frage. Lass uns
nachschauen. Hört auf damit. Gehen wir zurück
zum Labyrinth-Generator, zum Looping, bringen
den Dekorationsschalter hierher, wir wissen , dass Wände und Dekorationen für
jeden Loop einrichten ist ein Bestandteil der Operation. Ändert den Namen des Enumerators. Ja. Wir
wollen das nicht genau. Wir wollen den Frühling. Wir wollen diesen Knoten.
Dieser Knoten kehrt zurück, lassen Sie uns die Zeichenfolge für Sie drucken. Lassen Sie uns diese beiden miteinander verbinden, damit wir das richtig haben.
Und das Spiel kompilieren Jetzt wird es
einige seltsame Zahlen
und Namen haben . E-Richtung. Okay. E-Richtungen, Zähler eins, Zähler
zwei, Zähler drei Nun, wenn es einen sehr
generischen Namen beibehält, wie Sie sehen können. Um ehrlich zu sein, dachte
ich, es hätte die Byte-Nummer
zurückgegeben. Aber ja. Also das war das Problem. Schließ das, also
brauche ich das nicht. Hier. Vom Array-Element brauchen
wir um zu einer Zeichenfolge, und dann diese Zeichenfolge,
wir verbinden uns mit dem Zug. Und es konvertiert es automatisch in eine Textvariable,
eine Namensvariable Oh. Lass uns das noch
einmal spielen. Und wir sollten
in der Lage sein, Räume zu sehen. Geschlossene Räume. Ja. Sie
sind komplett geschlossen. Und ich denke, es ist an der
Zeit, die Zimmer mit echten
Wänden zu versehen. Oh, lass uns zu einer Dekoration gehen
und eine neue Funktion kreieren. Und wir werden dieser Funktion
einen Namen geben. Wände. Geben wir es ein.
Wir sind schon dabei. Aber bevor wir anfangen, das zu
programmieren , brauchen
wir hier ein
neues Dachbodennetz. Das liegt daran, dass das ein Raum ist. Wenn wir zwei Wände austauschen, sollten
wir auch
eine Decke einbauen , denn wenn es
keine Decke hat,
dann sind es nur vier Wände Es ist nicht wirklich ein
Zimmer, oder? Also, wir werden auf Hinzufügen klicken, wir werden
ein statisches Mesh hinzufügen. Und wir werden dieser Decke
einen Namen geben. So wird es buchstabiert. Ich bin mir nicht sicher. Noch ein
schwer buchstabierbares Wort. Dafür wählen wir
ein statisches Chaos aus. Ich glaube, es gibt ein ktisches Netz. Was das Material angeht, hat
es eine Steinmauer. Standardmäßig gehen wir
zu seiner Sichtbarkeit über. Und setze es auf unsichtbar. Und wir können die Kollision tatsächlich auch schließen
. Also gehen wir zu den Kollisionseinstellungen. Natürlich
werden wir später, wenn wir das Spiel entwickeln, viele
der Kollisionseinstellungen und -typen und Objekttypen
und
alles, womit sie interagieren, ändern der Kollisionseinstellungen und -typen und Objekttypen , aber das ist später. Kollisions-Voreinstellungen, lass es mich wissen. Wir wollen die
Kollisions-Voreinstellungen nicht. Wir wollen das H.
Setzen wir das auf
Kollisionsvoreinstellungen benutzerdefiniert
und Kollision aktiviert auf Keine Kollision setzen Aber wenn wir es sichtbar haben, sollten
wir auch die Kollision
aktivieren, um Kollision auszulösen Nun, ich denke, das ist ein guter
Haltepunkt für diesen Fall. Wir sollten diese
Funktion beim nächsten Mal ausfüllen, damit wir erklären können, wie unser Auswahlverfahren auch funktionieren
wird. Vorerst auf Wiedersehen, bis zum nächsten.
35. Hinzufügen von Raumwänden: Hallo und willkommen zurück zum
Game Design Workshop
und zur Engine Five Procedural Dungeon
Action Apes Kreation Curse Auf dem letzten. Wir haben es tatsächlich geschafft, die gebauten Räume
fertigzustellen. Wir haben noch eine Sache zu erledigen, und zwar jetzt. Aber lassen Sie uns sehen, was wir getan haben. Wir haben tatsächlich die Funktion „Raumwände
einrichten“ entwickelt
, eine Funktion
innerhalb der VP-Dekoration nimmt
die übergeordnete Kachel, nimmt die Anweisungen von
ihr, schaut durch sie hindurch
und durch diese Schleife schaut
sie durch die
Wandanordnung und prüft, schaut
sie durch die
Wandanordnung und prüft welche sichtbar sein sollen
und wo die Kollision sichtbar sein soll. Lassen Sie uns nun die
Wände austauschen, für die wir eine
Funktion erstellt, aber nicht fertiggestellt haben. Wir haben auch die Decke hinzugefügt. Und in dieser Funktion benötigen
wir zwei Eingaben. Wir werden vom Typ Integer sein. Es ist schon für mich erledigt. Sie werden den Typ hier
ändern, und lassen Sie uns den
einen Namen geben. Wie nennst du es? Es ist die Variable hier drüben,
nicht der interne Wandindex. Denn wie gesagt, wir haben fünf verschiedene
Wände für die Räume, also werden wir sie durchschauen. Keine Schleife, aber wähle
einen Typ von ihnen aus. Außerdem benötigen wir
die zweite Variable,
die Raumindex wäre, die
aber später verwendet wird, um unsere Decken ein- und
auszublenden wenn sich unser Spieler
durch die Räume bewegt. Also nenne ich die
erste Raumindex und die zweite Wandindex. Und ich werde den
Raumindex für Variablen bewerben. Es spielt keine Rolle, ob
es ein paar Mal läuft. Es wird immer
derselbe Raumindex sein. Und jetzt müssen wir eine
For-Schleife machen, um alle Wände anzuordnen. Eine Schleife, weil
wir
die statische Netzkomponente manipulieren werden, um ihnen
ein statisches
Netzelement zuzuweisen. Nein. Natürlich
werden wir Mesh fotografieren. Und für das statische Netz müssen
wir wählen. Um das ein
bisschen einfacher zu machen, kehren
wir jetzt zu
unserer Übersichtskarte zurück .
Wir haben alles. Und wir haben eins, zwei, drei, 45, lassen Sie uns fünf Optionen wählen. Eins, zwei, drei, vier, fünf. Und für das Wild C wollen
wir nur
den Wandindex verbinden. Wir nennen W-Index. Da wir uns in der
Funktion befinden, können wir das tun. Lassen Sie uns nun die Selektoren hierher ziehen. Denn wenn wir einen Wandtyp
auswählen, gibt es
im Grunde genommen drei Varianten und für jede eine
Türvariante. Oh, geh zurück. Ich füge
noch eine Stecknadel hinzu oder wir fügen sie zusammen ein. Dann werde ich einfügen. Eins, zwei oder fünf. Nun,
was den Platzhalter hier angeht, können wir einen zufälligen Bereich
auswählen, und es wäre 022, weil
wir drei Optionen haben Ich werde das überall verbinden
. Und ich werde es auch tun. Also, warum habe ich die Übersicht geöffnet? Es ist einfach, weil ich eine Wand auswählen
werde. Ich werde
es tatsächlich finden, ich werde einfach mit der rechten Maustaste klicken. Es gibt eine Option, Rose
zu finden, um zu schauspielern. Hat mir nicht viel geholfen. Hier ist es. Ich gehe
zum Asset und
ziehe es hierher. Ich gehe zur zweiten
Wand, Rechtsklick, cs zur Anlage. Ich würde ein bisschen mehr helfen. Ziehen Sie es hierher
und ich werde diesen Vorgang für
jedes Asset wiederholen. Beachten Sie, dass ich
die Türen nicht auswähle . Das ist mit Absicht. Türen werden später
per Code an ganz
bestimmten Stellen platziert . Holzwände, Embros an Objekt, Rosen Objekt. Ein anderer Erstaunlich, wie lange einige einfache Aktionen
dauern können. Fragen Sie mich nicht, warum
ich immer
den Inhaltsbrowser schließe , bevor
ich zu den Blueprints gehe Scheint eine Angewohnheit zu sein.
Ich sollte
direkt auf die Baupläne klicken direkt auf die Baupläne Vermögenswert. Da ist der
Vermögenswert. Da ist es. Diese 12, zwei weitere Sätze. Diese 12, durchsucht zwei Objekte
und verschiebt sie per Drag-and-Drop. Wir hätten all diese Informationen irgendwo
speichern können, von einer Reihe von ihnen und sie einfach
von dort abrufen, oder Datentabellen, für die es am schönsten
wäre, sie in einer Datentabelle zu haben Aber weißt du, du hast nicht
immer, was du willst. Die Arbeit wird etwas mühsamer. Vermögenswerten, Gleichungen ,
Inhalten auf der Rollbahn Überblick, Vermögenswert. Wir sind fast endlich fertig, aber noch zwei Wände zum Braten Hier ist es noch ein Braten. Ordnung. Nein. Bevor wir die Decken aktivieren, schauen wir uns an, ob es funktioniert. Aber zuerst
gehen wir zum Mz-Generator. Gehen wir zum Ende
der gebauten Räume. Lassen Sie uns die Dekorationen auswählen und wir
nennen die Swap-Wände. Ich tausche die Wände und
wir benötigen den Index. Und wir werden auch
einen Wandindex benötigen. Nein zu diesem Zeitpunkt. Derselbe Name und dieselbe Konvention
waren nicht wirklich wichtig. Von Raumindex zu Raumindex
und Wandindex. Der Grund dafür ist, dass sich
das alles in
einer anderen vollständigen Klasse
in einem anderen Bauplan befindet einer anderen vollständigen Klasse
in einem anderen Bauplan Das ist also in BP-Dekorationen enthalten, so wie sich diese Auflösung im
BP-Labyrinth-Generator befindet Das ist also kein Problem. kann es sogar hilfreich sein Manchmal kann es sogar hilfreich sein, denselben Namen zu haben, damit Sie wissen, welche Variable welcher
entspricht. Wo kompilieren und speichern. Kehren wir zu unserem
Kartenspiel-Level zurück. Speichern Sie alles, was spielen kann. Jetzt sollten wir
Wände in unseren Zimmern haben. Ja, das tun wir. Wir haben ein paar schöne
Wände in unseren Zimmern. Wir haben ein Holzzimmer,
wir haben ein Steinzimmer, wir haben ein moosiges Steinzimmer Es gibt hier und da ein
paar Lücken, aber das ist nur die Platzierung Wenn Sie sich etwas Zeit nehmen
und das beheben möchten , wäre das der Fall. Ich denke,
soweit ich das sehe, müssen
die Wände ein
wenig abgesenkt werden und das
wird meiner Meinung nach in Ordnung sein. Wie dem auch sei, lassen Sie uns die Decken
aktivieren. Was wir tun müssen, ist zu unseren VP-Dekorationen
zu gehen, in die
Wände zu wechseln, zu den Wänden zu wechseln. Wir werden unsere Decke bekommen und wir werden Sichtweite T
bekommen. Und wir werden
ECT-Kollisionen aktivieren. Aber dieses Mal werden wir
einen kleinen Trick anwenden. Mama, eigentlich von hier. Wir wollen die
vollständige Kollision ermöglichen. Wir werden Abfragen und
keine Physik aktivieren, da für die
Obergrenze
keine Physik oder
Kollisionsphysik erforderlich
ist , aber wir wollen Abfragen
wegen unserer Klickereignisse. Apropos Klickereignisse, jetzt beginnen wir mit dem Spielbereich. Wir werden eine Möglichkeit brauchen, unsere Decken
ein- und
auszuschalten , wenn wir einen Raum
betreten oder verlassen Und in diesem Fall spreche
ich nur
davon, wann wir den Raum
betreten Ich habe Farbe aufgetragen, genau das, was ich meine. Ich meine nicht, wenn
ich hier reingehe, ich spreche davon,
wenn ich schon
drinnen bin und von einem
Ort zum anderen gehe, werden
wir die Kacheln wechseln. Ein Befehl sollte also sagen, dass ich eine Kachel verschoben habe,
Comanul etwas sagen Und das Labyrinth, der
Raum selbst, muss wissen, ob ich das nächste Mal
ausziehe, ob ich nicht nach innen gehe, und es wird so sein , dass
der Code wissen
muss, ob
ich mich immer noch im Raum befinde
und nicht nach draußen gegangen bin Deshalb werden wir hier eine zusätzliche Kollisionsbox
verwenden Stellen wir es in eine
Kollisionsbox. Warum ich extra gesagt habe. Wir haben das noch nicht gemacht, aber wir benötigen ein Kästchen für das Plättchen selbst, damit
der Spieler weiß , auf welchem
Plättchen er sich befindet. Wir können also Dinge tun, wenn wir wissen,
auf welchem Spielstein sie sich befinden. Wir werden das erhöhen. Wollte mich an den
Rändern kaum anpassen. Ich denke, das ist in Ordnung.
Wir werden es im Gameplay sehen. Also, für diejenigen, die neu sind Kollisionsformen in allen Formen. Es gibt Kollisionsfelder, Kollisionserfassungen,
Kollisionskugeln sogar benutzerdefinierte
Kollisionsformen, die wir erstellen können. Aber Kollisionsformen werden
im Grunde verwendet, um zu bestimmen, was passiert, wenn etwas
mit etwas kollidiert Sie können Physik auslösen,
sie können alles auslösen, was mit Kollisionen
zu tun Wir haben
sie
zum Beispiel als Auslöser betrachtet, und je mehr man
sich an eine echte Engine gewöhnt, desto mehr gewöhnt
man sich an die
Art und Weise, wie wir sie verwenden Nein. Standardmäßig, da nicht jede
Dekoration ein Raum sein wird. Wir setzen diese Kollisionen erzeugen
Überlappungsereignisse in Stürze um Das macht also im Grunde nichts. Und wir
gehen zu unseren A-Wänden. Und wenn wir die Obergrenzen
aktivieren, werden wir auch die
Kollisionsereignisse aktivieren ,
die Überschneidungsereignisse erzeugen
, sodass sie jetzt aktiv sind. Bevor wir weitermachen, da wir eine Menge
Dinge mit dem Labyrinth-Generator gemacht haben, gehen wir zum geraden Diagramm, wir brauchen
nicht all diese
Funktionen geöffnet zu brauchen
nicht all diese
Funktionen geöffnet Ich verschiebe den
geraden Graphen nach links und schließe
den Tab einfach nach rechts Also, jetzt ist es hier
oben wieder klar. Mal sehen, was wir gemacht haben. Wir haben damit begonnen,
den ersten Stil zu
erstellen, das Laden zu erstellen
und alles andere Wir haben ungefähr die
Form unseres Labyrinths gebaut. Dann haben wir die Pfeile
ein wenig repariert. Lassen Sie uns nun
diesen eingestellten Prozentsatz kopieren und einfügen. Aber wir müssen
die Belastung etwas erhöhen, und wir haben angefangen zu dekorieren. Wir begannen mit einem Grundriss der Ziegel und Wände,
wie sie sein sollten. Und was wir
hier gemacht haben , war einfach die Wände zu verstecken
, die nicht notwendig sind. Und jetzt haben wir einige
Koordinaten für den Aufzug erstellt. Wir haben einige
Koordinaten für die Truhe erstellt. Wir haben die Zimmer gefunden und die
Zimmerwände gebaut. Jetzt erhöhen wir unsere Ladung. Zweitens, beim letzten Mal waren es
0,5, sagen wir 5%. Ein netter Wert. Wir
haben die Aktionen ausgeführt, vier davon sogar,
zwei davon gleich. Das wären also 65%. Lassen Sie uns den
Ladebildschirm voranschreiten und wählen Sie die sichtbaren Leinwände Es ist das Labyrinth. Und alles andere ist
wirklich sehr schnell. Aber selbst unser
Labyrinth-Generator wäre schnell. Wir hatten diese Verzögerung von 0,1 nicht. Also, lasst uns abnehmen. Das
dauert zu lange. Aber lassen Sie uns eine weitere
Null vor eine setzen. Lass uns Play drücken. Hier gibt es
Tassen, was wir wollen. Ordnung. Lass uns das wieder verstecken. Nun, was wir als Nächstes tun werden,
ist nicht die
Türen zu bauen, sondern was wir als Nächstes tun werden. Normalerweise sagen
wir, nachdem wir die Räume
erstellt haben, lassen Sie uns die Türen erstellen. Aber es ist noch nicht der richtige Zeitpunkt. Eigentlich sollten wir
die Verzögerung hier vorziehen. Wir sehen den Cup ein
bisschen besser. Es ist nicht die Zeit, die Türen zu
bauen, und der Grund, warum
es nicht an der Zeit ist Wenn wir ein Labyrinth erstellen. Im Moment haben wir
all diese Bereiche. Es ist fehlerhaftes Material, das
hier passiert. Wir werden sehen, was im nächsten vor sich
geht. Sieht aus, als ob
es zwei Materialien gibt. Ich sehe keine zwei Stockwerke. Lass uns auf dem Boden nachsehen,
was hier vor sich geht. Wir haben noch mehr. Warum haben wir? Das sollte nicht passieren. Was ist los? War die Decke? Ja, ich habe
die Höhe
der Decke nicht erhöht . Lass uns sagen. Das ist die Höhe unserer Wände, f hundert, etwas niedriger
als die maximale Höhe. Ja, es war die Decke. Ja, ich gehe rein, ich sehe nichts. Ich hätte eigentlich nicht
zurückgehen sollen. Ich kann hier einfach rein
und ich kann es einrichten. Und das Stockwerk Nun, vielleicht
ist die Decke ein bisschen niedrig. Aber es ist in Ordnung. Ordnung. Ich denke, das ist ein guter
Haltepunkt für diesen. Ich sehe dich
beim nächsten Mal. Auf Wiedersehen.
36. Raumtüren und Labyrinth-Segmentierung: Hallo und willkommen zurück zum
Game Design Workshop und Real Engine Five Procedural
Dungeon Action APs
zur Kreation von Real Engine Five Dungeon Action APs Zuvor waren wir endlich fertig mit der Platzierung von Wänden und der
Platzierung welcher Wandtypen und
der Darstellung der
Decke in den Räumen Wie sie in Räumen besser aussehen. Und wir haben sogar
eine Box erstellt, um
Überschneidungsereignisse zu erzeugen , wenn es sich bei
der Kachel um einen Raum handelt. Und ich fing an,
über die segmentierten Bereiche zu sprechen, aber wir wurden
durch die Decke unterbrochen , die nicht abgesenkt,
höher, nicht abgesenkt
wurde höher, nicht abgesenkt Es wurde
vor der Position eingeschaltet gelassen. Lassen Sie uns nun über
die segmentierten Bereiche sprechen , von denen
ich gesprochen habe Wie Sie sehen können, nehmen wir zum Beispiel an, wir
haben hier einen Raum, nur
mit diesem Bereich verbunden ist Dieser Bereich ist
im Vergleich zu den anderen Bereichen isoliert, wohingegen dieser Bereich durch drei Räume
miteinander verbunden ist. Dieser Bereich wurde durch zwei Räume
miteinander verbunden. Dieser Bereich verbindet wieder
zwei Räume. Und dieser Bereich hier drüben ist nur ein einziger Bereich
mit zwei Blöcken, und das ist ein Bereich, in dem ein
Block mit einem Raum verbunden ist. Was wäre, wenn wir eine Möglichkeit hätten, diese Bereiche
zu kategorisieren? Grundsätzlich werden
wir jeden Bereich
, der mehr
als einen Raum miteinander verbindet, als Korridor betrachten Wenn es zwei oder
drei Räume miteinander verbindet, ist es ein Korridor. Wenn ein Bereich ein einziger ist und
er mit einem Raum verbunden ist, dann ist es ein besonderer Raum, versteckter Raum, so
etwas Ähnliches. Und die andere Kategorie, die wir
haben können, ist die, wenn ein Bereich
zwei oder drei Gänge
hat und mit einem Raum verbunden ist Wir können es als einen
Balkon oder eine Kante oder
etwas Ähnliches betrachten , also als einen Bereich
, der größer als
zwei oder drei Blocks ist und
mit einem Raum verbunden Wir können es als
einen besonderen Bereich betrachten. Wie werden wir das machen? Nun, ich denke, Sie
alle kennen die Antwort. Wir werden eine Veranstaltung veranstalten. Also werden wir aufhören zu spielen. Ich werde
diese Funktionen schließen. Ich brauche sie nicht
mehr. Und wir werden diese neue Funktion erstellen. Nennen wir diese Funktion erweitert. Das sind
die Rechtschreibbereiche. Ich glaube aber, dass ich Bereiche
richtig buchstabiert habe und finde. Nein, habe ich nicht. Ich habe
ein Trennzeichen hinzugefügt. Was werden wir hier machen?
Wir müssen es erklären. Das wird wieder eine
große Funktion sein. Lass uns die Farbe tatsächlich öffnen. Ich werde ein bisschen einfacher sein. Nehmen wir an,
wir haben unsere Maske. Diese Reparatur hier hat
den ganzen Unterschied gemacht. In diesem Labyrinth haben
wir einige Zimmer Und dann haben wir einige Wände , die die Bereiche voneinander trennen Mach sie größer. Mach hier, hier, lass uns rauskommen und vielleicht hier oder
hier. Das ist ein ECT. Nun, wie gesagt, werden
wir
einige Bereiche in Korridore unterteilen Stellen wir das Grau dar. Also im Grunde
wäre das ein Korridor. Und das wäre ein Korridor,
weil er zwei Räume miteinander verbindet. Nun, der orange
wäre der geheime Bereich und der blaue
wäre ein Balkon. Und der lila
wäre ein besonderer Bereich,
weil er
nur mit einem Raum verbunden ist und größer ist als zwei oder drei
Boxen. Sagen wir drei. Oh. Wie werden wir das machen? Im Moment hat unser
Labyrinth, unser Kerker
, einige Wände Oh, was wir
tun werden, ist, diese Wände
zu benutzen Nehmen wir an, wir nehmen
zum Beispiel ein zufälliges Gebiet. Wir werden diesen nehmen. Polar ist nicht der
beste. Rund. Wir werden
zum Beispiel von hier aus beginnen und wir werden Line Trace verwenden,
was ist Line Trace? Eine Technik, die verwendet wird, um
Objekte entlang einer Linie im
Spielwort im Grunde zu erkennen . Es geht darum,
eine unsichtbare Linie
oder eine sichtbare Linie zu projizieren , wenn
wir sie von
einem Startpunkt bis zu einem Ende debuggen, und es einem Startpunkt bis zu einem Ende debuggen, und geprüft, ob es Kollisionen
mit Objekten Das wäre eine
grobe Erklärung. Also, was wir
tun werden, ist,
von unserem Punkt aus eine Linie zu ziehen. Keine Worte, unsere Kreuznachbarn. Ich denke oder etwas Ähnliches. Wir werden also
suchen, welche
der Nachbarn
direkt mit mir verbunden sind. Sie haben keine Mauer dazwischen, sie haben keinen Raum zwischen dem,
was uns
wirklich wichtig ist. Wenn wir das also tun, werden
wir sie zu einer Liste
hinzufügen. Aber dieser Nachbar ist okay, dieser Nachbar ist
okay, dieser nicht, dieser ist nicht, weil wir
hier gegen eine Wand stoßen, und hier stoßen wir tatsächlich
auch gegen eine Wand, das ist das externe Fandangon Nun, mit dieser Liste wiederholen
wir
den Vorgang und
spielen ein wenig mit
Variablen und fügen sie hinzu
und entfernen sie aus Listen, um , welche Bereiche miteinander verbunden
sind und mit wie vielen
Räumen sie Weil dieser Bereich vielleicht
kein leerer Bereich ist, sondern ein Raum, also müssen wir
diesbezüglich differenzieren. Nein. Im Grunde ist das
die Theorie
dahinter , was wir tun werden. Wir werden die Zeilenphrase möglicherweise
zweimal verwenden, einmal für eine erste Prüfung, ein zweites Mal für
eine zweite Überprüfung, aber wir werden es erklären,
solange wir eine lange erstellen. Fangen wir also an. Lass uns dieses Gameplay
platzen lassen. Und lassen Sie uns zu
unserem M-Generator in den
fein segmentierten Bereichen zurückkehren unserem M-Generator in den
fein segmentierten Bereichen Jetzt verwenden
wir natürlich wieder die Koordinaten des
Dungeons und holen uns die Schlüssel Dieses Mal werden wir sie in
einer lokalen Variablen
bewerben Wir werden diese
Variable Dungeon Keys nennen. Weil wir
sie vielleicht unterwegs brauchen und Kabel schleppen Es wird ein ziemliches Problem werden, da
diese Funktion
sehr umfangreich sein wird und auch
andere Funktionen beinhalten wird Nun, von diesen Dngon-Schlüsseln bekommen
wir P. Also werden
wir mit unserem ersten Index beginnen, der Index Null sein würde
, und von dort
aus mit der Überprüfung
beginnen Ich werde
diese Variable mit dem Namen
Study bewerben , eine lokale Variable Und verbinde das hier. Oh, das wird der
Ausgangspunkt des Studiums sein. Das ist der erste Satz. Wir müssen irgendwo anfangen. Warum nicht am Anfang anfangen. Wir werden überprüfen, mit
wie vielen Kacheln es verbunden
ist und
wie es eine Verbindung herstellt. Oh. Was wir tun werden, ist auch eine temporäre lokale
Array-Variable zu erstellen. Wir werden es nennen. Ray, O. Ich mag es nicht, wenn mir
das zu Cardy Cords wird Nennen wir diese
Studie Koords-Eins. Oh, ich werde
das mitbringen, sollte ein Array sein, und es sollte ein Inpoint sein Sehr nervig, wenn Sie etwas
auf eine lokale Variable Es bleibt nicht im
Speicher, weil sie einen anderen Variablenzähler
erstellt haben, den
Sie
zuvor verwenden sollen. Das ist ein
bisschen komisch passiert, glaube ich. Da wir es sind, werden
wir dieses Studienarray verwenden, um
den Studienpunkt hinzuzufügen . Weil dies das erste Array wäre
, würden
wir fühlen, und dann werden wir es mit einem anderen Array
testen. Im Grunde genommen werden wir
dieses Array jetzt fühlen, solange die Linienspuren zum Beispiel nicht gegen Wände stoßen Gehen wir
wirklich ein
bisschen zurück zum Malen. Die Art und Weise, wie es
tatsächlich
funktionieren wird , ist: Lasst
uns eine neue Farbe wählen, lasst uns hellrot wählen. Ja, es ist so, dass wir
mit dem Studium beginnen und die Nachbarn
überprüfen werden. Also das wird einer von ihnen sein. Das wird der
andere von ihnen sein. Das wird noch einer sein, und das wird noch einer sein. Diese beiden hier drüben, dieser und dieser,
werden der Liste
hinzugefügt , weil
sie richtig sind. Dann werden wir anhand dieser Liste
überprüfen, wo sich dieser und
dieser verbinden. Sie stellen also im Grunde eine Verbindung
zu diesem, diesem
und dem her, und wir
werden
jede Liste aufeinander übertragen und erneut
testen und testen,
bis nichts mehr hinzugefügt werden kann und diese beiden Listen identisch sind, und wenn sie identisch sind, fahren
wir mit dem nächsten Teil fort. Oh, lass uns weitermachen. Jetzt müssen wir nach den
ersten beiden Nachbarn suchen. Wir werden
studieren, Ackerbau studieren. Wir werden B nebenan finden und das werden wir
übersehen. Der Grund, warum wir die Studie hinzugefügt bevor wir das tun,
ist, dass wir die Studie mit einbeziehen wollen ,
was auch immer unser Ergebnis ist, denn wenn Sie sie nicht hinzufügen, dann werden wir jetzt einfach
anfangen, nach Nachbarn zu suchen Wir werden uns nicht wieder auf den Weg
zur ersten machen. Also haben wir es hinzugefügt, bevor wir
mit dem ganzen Verfahren beginnen. Gehören die Nachbarn zum Kerker? Also werden
wir eine Contain-Map erstellen. Und natürlich
wäre die Karte unser Kerker. Und weiter, und wir werden das hier
blanchieren und verbinden Jetzt bringen wir unseren Line Trace mit. O Line-Trace, nach Kanal. Was bedeutet „Kanal“? Jetzt haben wir die
Kanalsichtbarkeit und die Kamera. Dies ist ein Kollisionskanal. Das heißt, wenn
wir
zum Beispiel zu Dekorationen gegangen sind und das Kästchen
ausgewählt haben, wenn wir zu Kollisionen gehen
und die Voreinstellungen öffnen, können
wir den Objekttyp „Wort dynamisch“ sehen Und dann können wir die
Antworten auf diesen Objekttyp sehen. ist aber dieser Objekttyp, aber wie
reagiert diese Kollision auf den Rest
der Objekttypen? Objekttypen wie Sichtbarkeit, Objekte wie Kamera,
Objekttypen wie Wort statisch. Es hängt alles von den
Einstellungen hier ab? werden später, wenn wir
das Spiel machen, etwas
detaillierter darauf eingehen, welche Kollisionen bei Spuren
und allem anderen sehr
wichtig sein werden Spuren
und allem anderen sehr
wichtig Im Moment werden wir
nur
den Kamerakanal verwenden , weil die Sicht
von unserem Gameplay aus genutzt wird Und weil
wir einige Dinge Kollisionen mit
Sichtweite ausschalten werden und
dann eine
Kamera verwenden, die immer
eingeschaltet dann eine
Kamera verwenden ist,
also mit
der Spurlinie interagiert, auf die sie trifft, wenn sie sichtbar ist, werden
wir einige davon schließen. Lassen Sie uns nun weitermachen. Wir gehen zu
unserem Labyrinth-Generator. Wir wählen
die Basislinienkamera und brauchen einen Start
und ein Ende in diesem Knoten Also,
was wir für den Anfang tun werden, ist, dass wir die Koordinaten haben
müssen. Wir müssen den
Schauspieler im Kerker finden. Wir werden den Wind aufziehen und das hier
verbinden und ein
Schauspieler-Agent besorgen . Zu diesem Standort des
Schauspielers fügen
wir eine Z-Achse hinzu, also ist er ein bisschen
weiter vom Boden entfernt Lassen Sie uns das auf 25 setzen. Es ist ein bisschen
höher als der Boden, und jetzt brauchen wir ein Ende. In diesem Fall, weil die nächste
Wölbung anders sein wird. In diesem Fall
wird unser Ende unsere Studie sein. Weil wir aus
den Nachbarn der Nachbarn ziehen den Nachbarn der Nachbarn finden wir heraus, dass das die
Koordinaten eines Nachbarn sind. Das ist nicht unsere Studie. Also fangen wir
beim Nachbarn an und enden mit unserem Lernblock. Also werde ich es wieder finden,
ich werde das kopieren. Verbinde das, verbinde das, und ich werde handeln, werde die Höhe kopieren und einfügen,
um diese Kugel zu verbinden, und dann verbinde ich diese
Kugel mit dem Ende, und wir haben eine Linienspur. Wenn ich nun den
Typ des Bugs schreiben würde, diese Option hier drüben, die uns eine Zeile zeigt, und ich mache sie persistent und rufe diese
Funktion
tatsächlich hier auf. Segmentierte Bereiche
nach dem Laden. Wir müssen das Laden dann ja,
spielen, wir sollten diese
Zeile hier erscheinen sehen Nun, dieser hat nur
einen gültigen Nachbarn, also wirft er eine Zeile Es versucht, es von Anfang an
vom
Nachbarn zum Anfang zu werfen Anfang an
vom
Nachbarn zum Anfang zu Und wie wir hier sehen können, hat es hier einen Treffer gefunden. Es sagt uns, dass dieser
Block eine Mauer hat. In diesem Fall würden
wir
es also nicht zur Liste hinzufügen. Nun, ich denke, das ist ein guter
Ausgangspunkt für diese Lektion. Wir werden
später mit der Logik
und ein wenig unseren
Out-Heat-Ergebnissen weitermachen . Das ist
die Art und Weise, wie wir die Daten
erhalten, die wir gerade erhalten, und auch den Rückgabewert, der
angibt, ob es sich tatsächlich
erwärmt hat oder nicht. Das ist eher das, was es erwärmt hat. Weitere Erklärungen zum
nächsten. Vorerst auf Wiedersehen.
37. Segmentieren der Dungeon-Bereiche: O Hallo, und willkommen zurück zum
Game-Design-Workshop und zum echten prozeduralen
Dungeon-Action-RPG-Erstellungskurs für Engine Five Vorher. Wir haben mit unserer Funktion „Bereiche fein segmentieren“ begonnen, die unser
Labyrinth anhand einiger Regeln unterteilen, die
Korridore im Grunde
nach verschiedenen Arten von Bereichen verbinden nach verschiedenen Arten von Wir werden, wie gesagt, Korridore haben,
wir werden Balkone haben. Wir werden einige
verschiedene Arten von Bereichen haben. Also haben wir damit
angefangen, unsere Dungeon-Map hinzuzufügen, unsere Dungeon-Map-Schlüssel zu
bekommen und sie
zu einer Variablen hochgestuft Daraus haben wir den ersten
Index erhalten, weil wir entschieden haben, dass das ein guter Anfang ist, und wir haben ihn der Koordinatenanordnung für
Studien hinzugefügt Wir haben
das auch zu einer Variablen hochgestuft, was die erste
For-Schleife
sein wird, aus der wir die Nachbarn
abrufen werden. Über die Nachbarn, und wenn
wir sie hinzufügen, wird
es die
Studienleitung sein Und wie gesagt, wir
machen eine Schleife und machen ein paar Tricks, um nach der ganzen Gegend zu
suchen Die Art und Weise, wie wir nach den Kacheln
suchen , die sich in
diesem Bereich befinden und von
Räumen durch Wände getrennt sind , besteht darin, Linienbahnen zu erstellen , die wir vom
Nachbarn in Richtung
unserer Lernplatte projizieren . Und das wird uns sagen, ob
es etwas getroffen hat oder nicht. Wie wir beschrieben haben, war der
Beuteltyp
persistent,
als wir Persistent Draw verwendeten . Wir können es bei unserem ersten Stil sehen, aber ich muss Stil Null
finden. O. Ich glaube, zur gleichen Zeit,
als Ero ein Raum wurde. Möglich. Vorher Nr. Hürden. Ich bin ein bisschen blind Diese eine Kachel Null verbindet sich dieser und diese
mit einer Linienspur. Diesmal hatte ich keine Mauer. Ich werde es einfach sehr schnell
erstellen. Ich wollte eine Mauer haben, und sie hat zwei Wände. Also fangen wir beim Nachbarn an und
das
ist unsere Debabelinie,
die grün wird, wenn
sie auf etwas gestoßen ist Wenn wir dieses kleine
Kästchen bekommen und es grün wird, bedeutet das, dass
es etwas erhitzt hat und das Kästchen ist der Indikator Nun, darüber haben wir gesprochen
, als wir
einige Regeln verwenden , die auf unserem
Hutergebnis und unserem Rückgabewert basieren. Im Grunde werden wir
einfach den Rückgabewert verwenden
, der heißt, hat es
etwas getroffen oder nicht? Ich drücke B,
verbinde das hier und hier, wenn es etwas erhitzt hat, machen
wir nichts. Wir wollen nicht, dass es unsere
Koordinaten hat, die Koordinaten eins. Wir werden das herbringen. Drücken Sie und ich verbinde es mit False, denn
wenn wir etwas nicht haben,
bedeutet das, dass es sich im selben Bereich befindet, und ich werde
das mit dem Array-Element verbinden. Worüber ich nun
ein paar Dinge sagen möchte , ist
das Out-Heat-Ergebnis. Wenn wir das kaputt machen, weil
es eine Struktur ist, wenn wir mit der Maus darüber fahren, können
wir die Struktur des
Wärmeergebnisses sehen Wir können sehen, dass es ein
paar Informationen enthält. Es enthält tatsächlich
viele Informationen, nicht wenige Informationen. Als Wärmeaktor hat er
den Ort der Hitze, den genauen Aufprallpunkt. Es gibt die Entfernung von
unserem Start bis zur Hitze an, die Zeit, die vom Beginn
der Linie bis zum Rennen benötigt wurde, es hat sich etwas
erwärmt. Und Start und Ende,
es hat natürlich eine Menge Informationen. Das ist eine sehr nette Struktur man auch zum
Debuggen von Dingen verwenden kann, wenn man zum
Beispiel ein
Debugging-System hat, dass man einen
Zeilenverlauf ausgibt und Dinge auf etwas testen
möchte Dinge auf etwas testen
möchte Dies ist aus verschiedenen Gründen ein sehr guter Ausgangspunkt , um ein Debug-System
zu erstellen Wie dem auch sei, ich
wollte dem
im Grunde nur zeigen , dass es das gibt, das ist eine Struktur Es hat so viele Variablen
, die es uns geben kann. Lassen Sie uns nun mit unserem
Algorithmus fortfahren . Wie gesagt, wir werden
eine neue Reihe von
Lernschnüren benötigen , damit wir sie
miteinander vergleichen können Wenn wir
alle möglichen Koordinaten
des bestimmten Bereichs
, den wir überprüfen, eingegeben haben Ich werde
eine neue Variable erstellen. Ich werde vom Typ
Punkt sein. Sei hier. Ich werde den DS einen Namen geben Diese Namenskonvention
ist nicht die beste, aber wir tun es vorerst. Oh, unser nächster Schritt ist die
Werbung für unsere Study Cords eins, Two Cords zwei Ich werde das hier verbinden. Was wir tun müssen,
ist dem ähnlich. Ich werde das kopieren und
einfügen. Wir hier. Und was wir zuerst brauchen,
noch eins für Loop. Diese Wette, weil wir jeden
einzelnen, den wir gefunden haben, durchgehen
wollen Wie wir hier gesehen haben, gab es Fälle, in denen wir
einen hinzugefügt haben, wir haben zwei hinzugefügt, oder es könnte
Fälle geben, dass wir sogar vier Standorte hinzufügen. Wir wollen
all diese Standorte durchgehen und dann für jeden von ihnen nach den Nachbarn
suchen. Wir brauchen diese zusätzlichen vier Schleifen, und das wird zu einem Chaos von vier. Das wird. Jedenfalls. Jetzt müssen wir die Regeln
ein wenig ändern. Natürlich brauchen wir einen Anfang und Ende, genauso wie
vom Nachbarn zur aktuellen Studie. Und die aktuelle Studie ist die, bei der wir
das Ergebnis dieser
vier Schleifen hier drüben erhalten . Ich werde diesen
Punkt ein wenig verbinden. Nein. Wie gesagt, wir brauchen
ein paar zusätzliche Regeln, und die zusätzliche Regel
wäre, ob Studie eins irgendwelche
Nachbarn enthält, die wir überprüfen? Denn wenn es enthält, sollten
wir es nicht noch einmal hinzufügen. Also, ich frage,
Studie eins enthält m Das hier drüben. A, um es hierher zu bringen. Vielleicht werden wir hier reden. Machen Sie ein bisschen deutlich, dass die
Leitungen miteinander verbunden sind. Eins. Ja, es sind Spaghetti. Es ist immer ein bisschen Spaghetti. Sie können mehr Zeit damit verbringen, es sichtbarer und
klarer für das Auge zu
machen klarer für das Auge zu Aber ich denke, wenn wir die Logik
dessen, was wir tun,
verstehen, wird es einfacher sein. Nun, ich brauche hier
eine weitere Bedingung, keine Bedingung, einen Knoten, der
das M sein wird. Wir haben es schon einmal benutzt, was
bedeutet, wenn eins zwei ist. Eigentlich
wollen wir sie nicht hier haben. Wir wollen, wenn es im
Kerker ist, weitermachen. Wir brauchen
hier tatsächlich eine zweite Filiale , um Platz zu schaffen Der zweite Zweig wäre also wenn er schon zu
den Koordinaten gehört ,
mach nichts. Wir wollen den Puls von diesem. Ich gehe hier zum Puls. Ich werde diesen Impuls
abschalten und diesen verbinden,
weil
wir aus diesem Grund diese
Frage hier stellen wollen. Es ist in Ordnung. Diese Dinge sind seitenweise. Wie dem auch sei, wir werden
die Studienkoordinaten unverändert lassen, da sie bewerten, dass
wir etwas hinzufügen Und wenn der ganze
Kram fertig ist, werden
wir das überprüfen Wenn die Länge unserer Tagesschnüre eins der Länge der
Studienschnüre zwei entspricht. Nun, warum machen wir das? Denn wenn wir hier
etwas zu dieser Liste hinzugefügt haben und Ady Cords zwei
nicht vollständig Wir haben einige neue Stücke hinzugefügt. Nein, lass uns das machen. Ranch und frag, sind unsere Ady Coords zwei
gleich lang wie Study Cords eins? Oh, wenn es nicht gleich ist, gehen
wir zu diesem oder zwei Da nichts drin ist. Und was wir tatsächlich
machen werden, ist dieselbe Schleife. Wir werden die Schnüre eins
hinzufügen es bei den Schnüren zwei
belassen Dann werden wir prüfen
, ob wir zu den ersten
Koordinaten etwas hinzufügen können den ersten
Koordinaten etwas hinzufügen Und wenn wir etwas hinzugefügt haben, wird es immer und immer wieder gehen, bis es fertig ist Ich denke, das ist ein netter
Punkt für diesen. Ich sehe
dich am nächsten. Auf Wiedersehen.
38. Finalisieren der Segmentierungsmechanik: Hallo und willkommen zurück
zum Game Design-Workshop Real Engine Five Procedural Danson Action
ARPC In der letzten Lektion haben wir
mit unserer Funktion „
Feinsegmentierte Bereiche“ weitergemacht mit unserer Funktion „
Feinsegmentierte Wir haben das Programm Study
Cords Two Variable entwickelt, das wir mit
unserer Studie Cords bewerben Und dann haben wir für alle
unsere Study Cords eins. Sie überprüfen alle Bereiche
, die wir hinzugefügt haben. Nun haben wir diese Gebiete in Nordost-West-Süd-Richtung
durchsucht, alle Nachbarn, und wir haben gefragt, ob sie zum Dungeon
gehören oder ob sie bereits in Studie eins
enthalten sind Danach haben wir
unser Trace-Line-System erstellt , mit dem wir überprüfen, ob
wir gegen eine Wand stoßen oder nicht Und wenn nicht, haben wir
diese Kabel zu Studie eins hinzugefügt. Wenn die vier Schleifen, die ersten vier Schleifen, enden, was bedeutet, dass
alle Koordinaten von Studie eins abgeschlossen sind, überprüfen
wir, ob unsere Koordinaten
für
Studie zwei Studie eins übereinstimmen, denn bevor wir diese
Aktion zum Hinzufügen neuer Dinge ausgeführt haben, wir die Koordinaten der Studie
zu den Koordinaten von Studie Zwei hochgestuft Nun, wenn das damals war, wäre
das falsch, nicht wahr. Mein Fehler. Wir schließen Studie zwei ab und setzen sie auf
Studie eins zurück. Dann versuchen wir erneut, der Studie eine neue Koordinate hinzuzufügen ,
und wenn keine
neuen hinzuzufügenden Koordinaten vorhanden sind, fahren
wir jetzt
mit dem wahren Teil fort, d. h. wenn Studie zwei gleich Studie eins
ist
und das bedeutet, dass es
keine weiteren Koordinaten mehr gibt. Als Erstes müssen wir eine weitere Struktur
wie das
ST-Rooms-Array erstellen , das
die Koordinaten für
unsere segmentierten Bereiche enthält Aber da es
dieselbe Art von Struktur haben wird, wird
es nur
eine Struktur sein, die eine Reihe von Koordinaten hat , eine Reihe von Endpunkten Wir können dieselbe Struktur verwenden. Also kann ich einfach das
ST-Rooms-Array hinter mir lassen und
es ST all areas nennen . Und es wird vom
variablen Typ ST-Räume sein, die wir umbenennen können, aber lassen wir es ST-Räume,
was, wie gesagt,
ein Array von Koordinaten ist . Ich werde das hierher bringen
und auf Hinzufügen drücken. Jetzt werde ich es
mit verbinden. Lassen Sie uns
hier über diesen Knoten sprechen . Das braucht eine Struktur. Vorher haben wir eine Struktur erstellt
und gesagt, wir können sie tatsächlich teilen und die
Koordinaten hier hinzufügen. Im Moment
werden wir das machen. Wir werden es einfach
aufteilen und
so hinzufügen , weil es funktioniert,
aber es ist besser, den ganzen Weg zu gehen,
eine Struktur zu erstellen und ihr
Mitglieder hinzuzufügen , wenn Sie mit Strukturen
noch nicht vertraut sind. Wenn Sie Erfahrung
damit haben und wissen wann Strukturen funktionieren, können
Sie dies tun, wenn
es nötig ist. Ich
sage das aus dem Grund, Strukturen Probleme bereiten können. Wenn ich zum
Beispiel einige Dinge
an der Struktur ändere, müssen wir viele Knoten wie
diesen wieder verbinden Denn wenn ich es hier
aufgeteilt habe, die Variablen nicht immer
aktualisiert Ich rekombiniere, wir
haben die Struktur, und wenn ich der Struktur etwas
hinzufüge, gehe ich zur Variablen
der Struktur und füge weitere Variablen hinzu, und das könnte ein Problem haben Ich teile
es auf und bringe unseren Studienkoordinaten eine mit. Und ich werde
es hier verbinden, weil
Studienkabel eins und
Studienkabel zwei jetzt gleich sind Aber dabei wird im Grunde
eine Liste
unserer segmentierten Bereiche erstellt, wie
es bei den Räumen der Fall Als Nächstes
werde ich die ersten Studienkoordinaten löschen. Und jetzt müssen wir
mit der Suche nach den
restlichen Bereichen fortfahren mit der Suche nach den
restlichen Bereichen Denn wie jetzt haben
wir bei
Studienblock Null angefangen
und geprüft, wie viele der Kacheln mit Studienblock Null
verbunden sind. Zuerst haben wir überprüft, ob sie miteinander verbunden
sind, und wir haben
nach weiteren gesucht. Lass uns spielen, wenn
wir ein Beispiel bekommen. Bei S wurde
die gesamte Studie abgebildet, eins, alle Koordinaten
von Nullpunkten, die nicht miteinander verbunden
sind und nicht durch Räume,
Wände oder Räume blockiert
sind Wände oder Räume Nein, das müssen wir
für den Rest des Labyrinths machen. Um das zu tun, werden
wir die ganze Sache
hier noch einmal wiederholen Aber zuerst müssen
wir einen Checker erstellen. Ich habe noch mehr
Studienplätze übrig? Denn wenn alle
Orte kartografiert sind, dann sollte dieses Ding aufhören zu laufen. Okay,
lass uns das erstellen Das erste, was wir brauchen
, sind unsere Dungeon-Schlüssel, und wir werden sie in einer
Schleife durchgehen Eigentlich, weil das
eine Regel sein wird , wollen wir überprüfen, ob wir das noch einmal
ausführen oder nicht Das wäre und sollte
sein oder mit Pause. Weil wir hier der gleichen Logik
folgen werden. Wir werden eine Variable verwenden. Ich werde es lokal erstellen, es
wird Typ B sein, kein R, es
wird Single sein. Nennen wir das gehört. Wenn es hingehört,
wo gehört es dann hin? Wenn es zu den Regeln gehört
, die wir erstellen werden. Und jeder Scheck, den wir machen,
gehört zu den Dungeon-Schlüsseln, dann bedeutet das, dass wir fertig sind Das bedeutet, dass wir alle Bereiche
überprüft haben. Wenn es nicht dazu gehört,
wenn irgendein Check von hier
zu keiner unserer Regeln gehört, dann bedeutet das, dass wir es erneut ausführen
müssen, oder das C-A-Element,
die bestimmte Verordnung Nein, ich werde eine Verbindung herstellen,
die hierher gehört, und ich werde es auf Falls
setzen lassen , denn wenn wir
anfangen, alle
Variablen zu überprüfen, wollen wir, dass es an
dieser Stelle ausgeschaltet ist oder jede Variable Wir werden eine weitere oder
jede Schleife mit Pause benötigen ,
um sie hier zu verbinden. Und jetzt brauchen wir die
Variable, die den ST in allen Bereichen
erzeugt hat . Weil wir vergleichen werden, gehört
dieser Dungeon-Schlüssel zu einem der Gebiete Wenn er,
wie gesagt,
zu keinem der Gebiete gehört ,
werden wir ihn neu starten Wir nehmen
die Struktur, das sind
die ST-Räume, und wir werden fragen, ob eines dieser Arrays direkt
enthält, wir müssen nicht für
jeden von ihnen eine Schleife bilden und es dann
überspringen Wir können direkt fragen, ob dieses Array den ursprünglichen Wert
enthält Der aktuelle Studienwert. Vielleicht. Oh, ich werde
hier eine Filiale anlegen. Ich werde
hier setzen und hier setzen und dann setzen wir
gehört auf wahr. Das bedeutet, dass dieser
Wert, den wir überprüfen
, bereits zu einem Bereich gehört. Gehen wir kaputt? Und
mit einer Frage weitermachen ,
gehört sie dazu? Denn vielleicht finden
wir bei diesem Scheck am Ende alles Falsche. Das Ding,
das wir überprüfen, gehört zu keinem Gebiet. Es besteht nicht nur die Möglichkeit, zu einem Gebiet zu
gehören, sondern auch nicht dazu zu gehören. Das könnte ein Zimmer sein. Da wir alle
Schlüssel zum Kerker überprüfen Und wenn das ein Raum ist, löst
das immer
Stürze in alle Bereiche aus Also müssen wir fragen,
ob es zu einem Raum gehört. Und hier kommen alle
Raumkoordinaten , die wir in einem Array
gespeichert haben. Also müssen wir nicht gehen, wir
müssen das eigentlich nicht tun. Wenn wir alle Bereiche
auch in einem Array hätten, könnten
wir fragen, ob es
enthält. Aber ich finde es momentan
besser geeignet,
mehr Tutorial, also,
wenn Sie so wollen, es als Bake ST zu
haben und sich mit
der Verwendung von Strukturen
in einem Array vertraut der Verwendung von Strukturen
in einem Array Wir werden fragen,
ob es sich beschwert. Und wir werden einen Zweig anlegen, und wenn das falsch ist, stimmt es nicht Natürlich benötigen wir
die aktuellen Koordinaten.
Wir haben es getan. Und jetzt geht es uns nur noch
darum , dass, wenn
das nicht stimmt, wenn es nicht stimmt,
wir
es zur aktuellen Studie hinzufügen werden. Und wenn wir einen Block zum Studieren finden, sollten
wir unsere
Kerkerschlüssel knacken, um das Arbeitszimmer zu finden Und zwar ein bisschen runter. Ein Fehler, wir müssen
etwas korrigieren. Wir brauchen, dass das
Gehörte wahr wird. Dann
müssen wir es auch nicht verbinden. Wir müssen es nur durchdrehen denn wenn wir die Hauptschleife verlassen
, wenn wir unsere
Dungeon-Keys-Schleife verlassen, müssen
wir fragen, ob sie dazugehört Wir werden einen Zweig benutzen und wir werden zu Belongs gehen. Wenn es dazu gehört, B wenn es
nicht mehr dazugehört, wie gesagt, müssen
wir das Ganze neu starten. Und wie werden wir das machen? Wir ziehen
einen riesigen Zobel von s an den Anfang
unseres Hinzufügens . Füge die beiden Aufrufe hinzu, die ich von hier aus unterbrechen werde
, verbinde sie
einfach
so. Kompilieren und speichern Diese gesamte Schleife wird nun so
lange ausgeführt , bis alle Bereiche abgeschlossen sind. Lass uns testen, ob es funktioniert, fang an. Und alle Bereiche sind derzeit
segmentiert. Haben ihre eigenen Pfeile. Und wir haben Kategorien. Wir haben fast Kategorien.
Wir haben sie in einer Liste. Aber als Nächstes sollten
wir tatsächlich
einige Regeln aus dieser Liste erstellen ,
um unsere Bereiche zu definieren. Aber das ist etwas. Wir gehen
zum nächsten. Vorerst auf Wiedersehen.
39. Kategorisieren von Bereichen nach Größe: Hallo und willkommen zum
Game Design Workshop und dem Kurs zur echten prozeduralen
Dungeon-Action-Rollenspiels aus Engine Five Dungeon-Action-Rollenspiels Zuvor haben wir den Loop mit den
Segmentflächen aus Kiefernsegmenten erstellt mit den
Segmentflächen aus Kiefernsegmenten Wir haben den Teil erstellt, in dem
wir alle Bereiche
in einem Array von ST-Räumen speichern . Und wir haben einen
Mechanismus entwickelt, um zu überprüfen ob einer unserer Dungeon-Schlüssel zu einem der
Bereiche
gehört, die wir gerade erstellt haben, oder ob er zu einem Raum gehört Wenn nicht, bedeutet das, dass wir
immer noch Dinge überprüfen müssen, und der
gesamte Algorithmus wird erneut ausgeführt Das Neue, was wir jetzt brauchen, ist
, diese Bereiche zu kategorisieren. Und Überraschung, dafür brauchen
wir eine neue Funktion.
Lassen Sie uns eine Funktion erstellen. Nennen wir es Karrenbereiche. Nennen wir es tatsächlich
Find Segment Areas. Lass es uns eingeben. Jetzt
müssen wir als Erstes alle unsere Gebiete durchgehen. Also nehme ich
den ST oder die Gebiete und ich werde eine Schleife machen. Nehmen wir an, es ist eine Struktur, wir durchbrechen müssen. Machen Sie es uns jetzt einfach. Wir haben eine einfache Regel
, wie viele Blöcke, wie viele Kacheln jeder Bereich hat. Nein, wir können die
Länge dieses Arrays ermitteln,
die Raumkoordinaten
des Bereichs,
und wir können
den Raum tatsächlich
zu einer lokalen Variablen heraufstufen die Raumkoordinaten
des Bereichs, und wir können
den Raum tatsächlich , die
wir aufrufen werden. Und wir werden es hier
verbinden. Und aus unserer Länge,
unserer ganzzahligen Länge. Wir gehen zu welchem
Int, weil es
uns gibt , wie viele Kacheln dieser Bereich
hat? Oh, wir werden eine
Regel haben, nach der es keine Kacheln geben darf. Wir brauchen die
Null-Kachel eigentlich nicht. Wir brauchen für
einen, zwei oder drei. Und lassen Sie uns die Null entfernen. Eigentlich, um die Null zu entfernen, wodurch der Index bei eins beginnen kann. Und wir werden das
oder entfernen, wenn es über drei liegt, wie wird sich das dann
einschalten? Es wird das Standardkabel verlegen. Hier behalten wir
die Standardeinstellung bei. Wenn wir mehr spezielle Regeln wollten, hätten
wir auf int umschalten und hier die gewünschten ACs
angeben können. Zum Beispiel
würden wir nicht vier wollen, wir bräuchten acht, wir würden bestimmte andere Zahlen
wollen. Lassen Sie uns nun mit unseren
Regeln für Bereiche mit einer Kachel beginnen. Wir müssen also zunächst
prüfen, ob unser Fall, also ein Array, ist,
was keine Rolle spielt. Selbst wenn es eins ist,
werden wir die erste Kopie bekommen, die Null ist, was
die einzige Kopie ist , wenn wir eine Länge von eins
haben, und wir werden das kaputtmachen. Da es sich um einen Punkt handelt, handelt es sich um eine
Struktur aus zwei ganzen Zahlen, und wir werden prüfen,
ob sie gleich Null sind Hier
verwenden wir die Endkugel,
was bedeutet, dass beide wahr
sein müssen , damit sich das Ganze durchsetzt. Wir werden einen Zweig einrichten,
wir werden diesen verbinden und wir werden
den Zweig mit Nummer eins verbinden Wir nehmen der Libido Raum,
wir können die Körpergröße erhöhen, aber
wir können hier arbeiten Was sind nun die Möglichkeiten, einen
Block zu haben? Was könnte das sein? Also, das könnte Schmerzen bereiten.
Das brauchen wir nicht. Du. Bellen. Und nein. Nehmen wir an, wir haben einen
Block hier, eine Kachel hier, eine Kachel hier, eine Kachel
hier, genau das. Ich werde das
Wonder Grid erstellen. Nein. Nehmen wir an, wir haben hier
ein Zimmer. Dann haben wir hier ein paar Wände und wir haben ein anderes
Zimmer hier drüben. Dieser Stil hier könnte mit diesem
Raum verbinden Das ist ein Korridor. Der andere
Fall, den wir haben könnten, ist, dass
es zum Beispiel keine Verbindung zu diesem Raum herstellt. S. Das ist also eine Lüge hier. Also können wir das
einen versteckten Raum nennen. Lassen Sie uns es in einer speziellen
Option für sich haben, wie eine Kachel, die mit einem Raum
verbunden ist und mit nichts anderem
verbunden ist. Und die dritte Option
wäre die Startkachel, nichts miteinander verbindet und
wie ein versteckter Raum ist, dem wir nicht wollen, dass es
ein versteckter Raum ist. Es ist ein Startplättchen. Deshalb suchen wir hier
nach der ersten Kachel. Wenn es also die erste Kachel ist, sollten
wir sie
einer neuen Kategorie hinzufügen, einer neuen Anordnung von
ST-Raumstrukturen. Wir werden alle Bereiche duplizieren. Und ich gehe all
diese S-Korridore. Das sind ST-Korridore. Ich werde einen von ihnen löschen. SD-Korridore, und ich
werde es hierher bringen. Wenn das stimmt, füge ich
unsere Studie hinzu. Ich teile die Daten auf, bringe die Studie hierher und wähle Connected to True aus. Wenn wir jetzt loslegen, können
wir sehen, dass es
Blöcke gibt, auf denen Pfeile
zu den Räumen Aber der erste, in diesem Fall
nicht, denn von hier aus ging es weiter, also 012, das sind eigentlich sechs, rate
mal, wer hier ist mal, wer Ja. Fahren Sie auf
einer geraden Linie fort. Aber manchmal
zeigen die Pfeile in Richtung Raum Hier haben wir ein perfektes Beispiel. Diese Kachel verbindet beide Seiten. Es hat also beide Pfeile. Wenn es ein versteckter Raum wäre, hätte
er nur eine Kachel. Es wäre eher wie dieses. Der eine Pfeil zeigt
auf den Raum und es wäre ein Deaden.
Dann haben wir diese Pfeile,
wir können entscheiden, ob unsere einteiligen Fallstudien ein
Verbindungsstück oder ein versteckter Raum sind Nein. Hör nicht auf. Es gibt eine Fehlermeldung. Was war die Fehlermeldung? Bewegungseingabe hinzufügen. Controller von oben nach unten. Okay, das liegt daran, dass wir den Controller nicht für das
Gameplay und so
repariert haben . Wir werden das später beheben. Nun, was wir brauchen, ist
dieser Wert hier drüben, unsere Fallstudie, und wir brauchen
die Richtungen der Kachel. Oh, wir werden
ihn in unserem Kerker finden. Mistkarte. Und jetzt haben
wir den Schauspieler. Und vom Schauspieler
können wir unsere Anweisungen bekommen. Und ich verstehe die Werte. Gehen wir diesmal von der
Werte-Seite aus. Wir könnten es aus
beiden Richtungen machen. Was wir wirklich
brauchen, sind die Werte , weil es uns egal ist, ob es
Nordosten, Süden oder Westen ist. Es ist uns wichtig, wie viele
der Pfeile sichtbar sind. Es ist uns egal, in welche Richtung sie gehen. Oh, um zu zählen, wie viele Pfeile ich habe, benutze ich einen Zähler. Ich werde
eine lokale Variable erstellen, ich werde sie
Counter Local Counter nennen. Und es wird vom Typ Integer sein
. Und wenn ich
meine vier Schleifen mit den Werten durchführe, möchte
ich, dass sie bei Null beginnen. Ich werde es vor der Vierschleife auf
Null setzen. Ich werde es für jede Schleife tun.
Und verbinde das hier. Und die einfache Frage ist, wie viele davon und
wie viele nicht? Ich werde eine
Filiale einrichten, um eine Verbindung herzustellen, und ich werde meinen
lokalen Zähler auf zwei plus eins setzen. Nein, wenn das vorbei ist,
werde ich mit einer Filiale nachfragen. Ist meine letzte Begegnung eine. Denn wenn es
keiner ist, ist es ein Korridor. Ich werde
es verbinden, um einen Korridor hinzuzufügen. Wenn es einer ist, dann ist
es ein versteckter Raum. Ich werde
die Korridore duplizieren, die Variable und sie in
Räumen benennen Ich werde das herbringen
. Ich füge hinzu. Und ich werde dieser
Struktur eine Reihe von Arrays hinzufügen. Ich studiere Variable. Und jetzt haben wir
all unsere einstöckigen Räume
entweder in Korridore
oder versteckte Räume eingeteilt all unsere einstöckigen Räume
entweder in Korridore
oder versteckte Ich denke, das ist vorerst ein netter
Breakpoint. So wie du in der nächsten. Auf Wiedersehen.
40. Bodenaustausch nach Kategorie: Hallo und willkommen zum
Game Design-Workshop und den echten prozeduralen Engine
Five-Dungeon-Action-Creation BZ Zuvor hatten wir
unsere Kategorie der Räume mit einer Kachel abgeschlossen unsere Kategorie der Räume mit einer Kachel Wir haben die Studie verwendet, die wir zu Beginn
erstellt haben. Dabei handelt es sich um das D-Array von
Koordinaten innerhalb unserer STO-Bereiche. In diesem Fall hat diese Studie nur eine Kachel, da wir die Länge überprüfen
und zwischen ihnen wechseln. Und da wir diese Kachel haben, prüfen
wir, ob
es die erste Kachel ist. Wenn es die erste Kachel ist, fügen
wir sie
zu unserer Koordinate
zu unserem Korridor-Array, dem
Trakt-Array, Und wenn nicht, prüfen
wir, ob es sich um
einen Block handelt, der einen oder
mehrere Ausgänge hat Wenn es mehr als einen
Ausgang hat, ist es ein Korridor. Wenn es nur einen Ausgang hat, ist
es ein versteckter Raum. Fahren wir nun mit
den Strukturen mit zwei und drei
Längen fort, was bedeutet, dass diese Bereiche nur zwei oder drei Kacheln
haben. Wir sagten, wir werden
eine spezielle
Kategorie für diese Fliesen erstellen , die wir Balkone
nennen werden. Und es ist nicht nur so, dass es zwei oder drei Längen
gibt , weil wir
zum Beispiel beim Spielen Glück haben und dieses Beispiel
bekommen
könnten. Ch. Okay. Siehst du diesen. Dieser verbindet.
Tatsächlich tut er das nicht. Es verbindet nur einen Raum. Nein, es verbindet zwei Räume. Es verbindet eine Tür
hier und eine Tür hier, und das ist am Ende. Da es zwei Räume miteinander verbindet und es sich um eine dreifache Fliese handelt. Es sollte kein Korridor sein. Es sollte kein Balkon sein.
Es sollte ein Korridor sein. Hier haben wir einen geheimen Raum, und dein Balkon
wäre dieser,
wie ein Raum, der mit
zwei Kacheln und einer Tür verbunden ist, und sie sind mit nichts anderem
verbunden. In unserem Regelwerk für die beiden müssen
wir auch die
Frage stellen. Verbindet es
mehr als einen Raum? In diesem Fall würde dieser lokale
Zähler nicht ausreichen. Und wenn wir prüfen,
ob es das nächste Mal ist, lassen Sie uns es in Aktion
zeigen Was wir also
brauchen werden, ist ein neuer Zähler, nennen Sie ihn jetzt lokal. A. Und wir werden
damit beginnen,
dieses Array zu löschen . Es ist noch
kein Array. Wir müssen es hier auswählen,
zwei zu einem Array zusammenfügen. S ändere den Variablentyp. Stellen wir eine Verbindung zu n drei her. Warum wir löschen Weil wir jedes
Mal, wenn wir nach einem neuen SD-Bereich suchen , wollen
wir, dass dieser zurückgesetzt wird. Oh, wir werden
unsere Studie machen und wir werden bei jedem
Flop landen. Jetzt werden
wir ein
Kreuz nebenan finden Was ich vorher
sagen wollte, ist, dass wir,
wenn wir nach CSS nebenan
suchen, möglicherweise mehr als
einmal überprüfen denselben Raum möglicherweise mehr als
einmal überprüfen, also zwei Kabel Zwei Kacheln könnten
in denselben Raum passen. Oh, um das zu überprüfen. Was wir tun werden,
ist,
jede Schleife von den
benachbarten zu trennen. Also werden wir die Nachbarn
überprüfen. Wenn sie zu einem Raum gehören. Nein, wir werden es tatsächlich tun, wenn es gerade enthält weil wir es nicht
mit unseren All-Room-Ports machen können. Denn wenn ich hier einen
Container mache, Ray. Was enthalte ich hier. Ich möchte wissen, in welchem Raum es sich
befindet. Oh, ich brauche die Variablen Raum eins, Raum zwei, Raum drei. Und das ist unser ST, alles Zimmer. ST-Zimmer, Ray. Wir brauchen unsere Struktur, weil unsere Struktur besagt, dass
dies Raum eins ist. Das ist Raum zwei,
das ist Raum drei. Also machen wir eine Schleife. Von diesem hier. Ebenfalls. Wir schleifen uns nicht von den Zimmern
ab. Sie überprüfen das nebenstehende
, weil wir
dadurch nur alle vier Schleifen
hier viermal machen werden Wie bei jeder Studie wird auch
diese zu
zwei weiteren Berechnungen führen. Ich denke, wir werden
das kaputtmachen. Und jetzt können wir überprüfen, ob
diese Koordinaten
in einer beliebigen Anordnung
der ST-Räume enthalten sind . Oder wir werden eingedämmt werden. Ihnen gefällt das hier, sie können einen Zweig verwenden, um zu überprüfen,
ob das stimmt oder nicht. Jetzt
kommt der neue Teil genau hier. Wir werden
diesem Array nicht einfach den Index hinzufügen, der darauf verweist, um
welche Zimmernummer es sich handelt weil der Index 12345 unseren Räumen 12345
entspricht Was wir machen wollen, ist einzigartig. Das heißt,
wenn der Raum bereits in diesem Array
vorhanden
ist, wird er nicht erneut hinzugefügt. Ich werde das hier korrigieren. S für ein paar zusätzliche Informationen, wenn das ein Set wäre, was wiederum das ist,
hätte ich das vielleicht schon einmal gesagt. Wenn das ein Set wäre,
würde es nur Unikate hinzufügen. Das ist die Regel von Sets. Aber Arrays sind manipulierbarer. Wir brauchen nichts anderes. Aber wenn das alles erledigt ist, werden
wir eine Filiale fragen. Wenn die
Länge unseres lokalen Zählerarrays größer
ist, entspricht sie tatsächlich Eins. Denn wenn wir fragen, ob es eins ist, dann decken wir jedes andere ab. Möglichkeiten. Wenn es
einer ist, ist es ein Balkon. Es ist nur mit einem Raum verbunden. Wenn es mit mehr
als einem verbunden ist, ist es ein Korridor. Im vierten Zweig
werden wir ST-Korridore einrichten. Wir werden hinzufügen.
Wir teilen
uns das auf und bringen unsere Studie mit. Wenn es keine neue Variable benötigt
, duplizieren
wir die Variable im versteckten
Raum. Es ist in Ordnung. Die gleiche Struktur. Es ist eine
Reihe von Strukturen, ST-Räume. Wir werden
das ST Balconies nennen. Dann werden wir eine nächste Studie
hinzufügen. Und das wird unsere Gebiete definieren , die wir
nach unseren Herrschern Balkone nennen Jetzt werden
wir für den Rest der Gebiete genau das Gleiche tun Aber mit einem Unterschied: Wenn sie mit einem verbunden sind, sind es keine Balkone mehr. Es sind große Bereiche, die mit einem Raum
verbunden sind. Aber wir werden
sie isolierte Gebiete nennen. Ich werde das einfach unten kopieren und
einfügen, um
den Standard-Pin zu verbinden
, der mit allem
unter eins oder über drei läuft. Und wir werden
diese ST-Balkone löschen. Wir werden
einen variablen Balkon duplizieren, ihn ST oder verwandte Bereiche
nennen. Und wir werden das hierher
bringen. Also, die Bereiche, die nur mit einem Raum
verbunden sind, sind isolierte Bereiche,
wenn sie groß genug sind. Und diejenigen, die nicht unser Koordinator
sind. Aber alles, was wir gerade
getan haben, sind Daten. Wir haben visuell
nichts geändert. Wenn wir gehen und alles spielen. Wir werden keinen
Unterschied sehen, nichts wird sich ändern. Aber wir haben die Daten gespeichert, die wir benötigen, um Dinge zu verwirklichen. Die nächste Funktion, die
wir im Labyrinth-Generator benötigen werden, besteht darin,
die Bereiche zu
kategorisieren, Hinweise zu geben und
etwas mit ihnen zu tun Und das wäre an
uns, unsere Stockwerke hinzuzufügen. Wir werden
eine neue Funktion erstellen. Wir werden
es Stockwerke hinzufügen nennen. Mit dem Hinzufügen von Stockwerken meine ich, dass
wir das
Material ändern werden, das sie haben weil das statische
Durcheinander gleich bleibt Fangen wir zum Beispiel
mit den versteckten Räumen an. Wir werden
unsere ersten Zimmer bekommen. Wir gehen zu jeder Schleife. für jeden versteckten
Raum, den
wir haben, Schauspieler Mac Dungeon finden Y. Wir mussten das zuerst
kaputtmachen. Weil das die Struktur ist. Das ist ein Fraktur-Array, auch wenn es einen Raum hat, ist
es ein Array mit einem Index. Wir werden diesen einen Index in einer Schleife
durchgehen, oder wir können tatsächlich, da
wir wissen, dass es sich um einen Index handelt, Nullindex bekommen, dann können wir unseren Dungeon finden Dungeon, wir
bekommen State Floor. Wir haben es benannt. Und Material einstellen. Für Loop. Versuchen
wir es ein
bisschen, kompakt zu machen. Element Null, weil unser
Boden nur ein Element hat, und dieses möchten
wir ändern. Welches wäre für
die Heizräume. Welches könnte ausgewählt werden. Gehen wir zu unseren Dachgittern. Lasst uns nach einem suchen
, der gut aussieht für einen. Mit der Lava. Machen wir
Iden-Räume, die Lava abdecken. Ich muss tatsächlich das statische Netz
einstellen. Entschuldigung, nicht das Material. Nein, ich werde
Attic Mesh einstellen , weil wir
unterschiedliche statische Maschen haben. Nicht nur ein Material. Und ich werde das
hierher verschieben. Und jetzt lass uns spielen gehen. Habe einen Heilungsraum
, der nicht gelogen hat. Der Grund ist möglicherweise, wie immer, ich habe eine Anzeige, die hier ein Stockwerk hinzugefügt hat. Dann kompilieren und erneut speichern, und wir haben eine ID
, das ist der Aufzug. Nun, warum ist das passiert? Seien Sie die kategorisierten Bereiche. Wir waren nicht hier, ich habe
nach dem ersten Zimmer gefragt, aber der Ausweis fragt, ob Sie die speziellen Bereiche
enthalten. In unserem Aufzug sind unsere
Raumgrenzen, unsere Raumgrenzen keine speziellen
Bereiche Aber was wir
tun müssen, ist hier oder,
falls es der erste Raum oder das erste
Arbeitszimmer ist
, R A Kalbfleischbereiche,
Kalbskacheln hinzuzufügen falls es der erste Raum oder das erste
Arbeitszimmer ist
, R A Kalbfleischbereiche ,
Kalbskacheln Es sollte ein Korridor sein. Also lasst uns erneut kompilieren und speichern. Keine versteckten Räume. Noch ein Mal. Okay, hier haben wir zwei von ihnen, einen hier, der mit diesem Raum
verbunden ist, und wir haben hier auch einen
, der mit diesem Raum verbunden ist. Oh, ich denke, das ist ein
guter Ausgangspunkt für diesen. Im nächsten Fall
werden wir damit fortfahren
, die
Stockwerke nach jedem Stil
und einigen Dingen, bei denen es Probleme wie
dieses
gibt, auszurichten und einigen Dingen, bei denen es Probleme wie
dieses
gibt, und sie zu beheben Weil wir einige Dinge reparieren
müssen. Zum Beispiel müssen wir unserem Labyrinth
in diesem Teil hier etwas
hinzufügen .
Aber ich schweife ab Tschüss, wir sehen uns
beim nächsten.
41. Versteckte Zimmerkategorien: Hallo und willkommen zum
Game Design Workshop, echten Engine Five-Action-Rollenspiel-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Zuvor waren wir
mit unserem Generator fertig,
nicht mit unserem Generator, sondern mit unserer Funktion für
kategorisierte Bereiche Aber wir haben die
Balkonregeln hinzugefügt, indem wir überprüft wie viele Zimmer jeder
Stil zwei Cent hat, und wir haben ein Array
mit lokalem Zählerfeld erstellt, dem wir einen eindeutigen Wert hinzugefügt haben. Wenn der Index also bereits
hinzugefügt wurde, wenn beispielsweise Nummer eins bereits hinzugefügt wurde, er nicht
erneut hinzugefügt , wenn wir andere Kacheln
überprüfen. Wenn es nicht mit mehr als einem Raum verbunden
wäre, wäre
es ein Korridor, und wenn es
nur mit einem Raum verbunden wäre, wäre
es ein Balkon. Und wir haben dasselbe getan
, um
isolierte Bereiche und Korridore
für Räume zu kategorisieren isolierte Bereiche und Korridore , die
größer als drei Kacheln sind Wir haben auch die Funktion
zum Hinzufügen der Stockwerke gestartet und das
Dachbodennetz für den verdeckten Boden hinzugefügt Jetzt fahren wir mit den
nächsten fort Oh, fangen wir mit den Balkonen an. Wir werden
für jedes Tief nochmal brauchen. Wir werden
unsere Balkone noch brauchen. Und wir werden das Ergebnis
knacken müssen. Von diesem Ergebnis müssen
wir ausgehen,
weil es
nur eine Variable war, eine Koordinate, also bekommen wir Null, aber hier müssen wir das alles
durchgehen Also für jede Schleife,
wie diese hier, und dann werden wir herausfinden, dass wir in unserem T tatsächlich genau das
kopieren können Lassen Sie uns jetzt eine Verbindung herstellen. Lassen Sie uns für den Boden
wählen, ob wir
keine Balkone hatten. Wir hatten einen dreckigen. Ich denke, es ist gut für Balkone. Hier ist es, dieser
kombiniert A, B, drei, A, da6b. Unglaublich. Beim nächsten werden wir genau
das Gleiche
tun,
nämlich abgelegene Gebiete nehmen. Nun, was abgelegene Gebiete angeht, wären
wir nicht genau dasselbe weil wir nicht wollen, dass
sie Butter haben. Wir wollen sie ein
bisschen spezieller machen. Vielleicht am Ende in
einem Bus oder so. Was wir tun werden, ist
hier eine Auswahl zu treffen. Für den Index werden wir
einen zufälligen Bereich wählen. Sind es 23 Stockwerke? A. Ich denke, wir sollten hier etwas mehr von hier
verwenden. L Lass uns einfach den Boden legen. Wir
haben ein paar normale. Normalen und Flammen, wie normale Korridore,
aber es ist Apropos Korridore. Lass uns die Korridorböden bauen.
Ich werde sie mitbringen. Hier. Hier sind Korridore. In Ordnung. Wir beginnen mit
dem Bodenmaterial. Also überspringen wir diesen Schritt. Wir müssen keine Korridore bauen. Es gibt keinen Grund
, es erneut hinzuzufügen. Aber wir müssen die Zimmer putzen. Perimeter-Anschlüsse. Eigentlich könnten wir alle Koordinaten wählen, und wir könnten Das sind Koordinaten. Wir haben keine Pause. Wir können
das hier direkt kopieren und einfügen. Direkt rein. Für die Zimmer haben
wir einen Holzboden. Dieser Y. Also kombiniert BC D sieben oder drei Nukleare Codes. Und ich glaube,
wir sind fertig mit den Fußböden. Wir kompilieren Ave. Wir können
tatsächlich, wir wollen, wir haben es geschaffen, das ist zu Lava. Viel Lava. So viel. Wir haben weder hier noch hier einen
Balkon. Wir haben hier drüben einen Balkon. Okay. Wir
müssen auch die Basis schließen. Wir gehen also
zu einem Generator. Wir werden zu
Kategorien übergehen, Bereiche fein segmentieren. Wir gehen zu unseren
Linienspuren und dann weiter. Gehen wir zurück zu unseren Stockwerken. Wir machen die aus Lava. Oh, okay. Deshalb, weil
ich Null meine, M Null, aber mach die
Lava-Einsen weniger möglich. Fügen Sie ein Extra hinzu, um das Stockwerk erneut
auszuwählen. Hier ergibt sich 0-3. Die Level-Eins sind
etwas seltener. Ja, das sieht nett aus. Ja, was ist hier passiert? Oh,
das ist ein besonderer Raum. Das ist der Grund, und ich
glaube, unsere Fußböden sind es. Jetzt, wo dieser Teil
mit der Kategorisierung von Bereichen fertig ist, also Bereiche kategorisieren und die Stockwerke für sie
hinzufügen, sollten
wir mit unserer Lobbyarbeit fortfahren Nehmen wir an, das ist
eine weitere, ich weiß es nicht. Sagen wir 7,72. Nur so der Sache zuliebe. Und wir verzögern. Unser
Fortschrittsbalken in diesem Teil, 0,1 in diesem Teil, geht nach dem anderen. Verschiebt einen Prozentsatz davon. Wenn wir
visuell etwas ansprechender sein
wollten , hätten
wir einen Zeitplan für
die Erhöhung vom aktuellen auf den gewünschten
Prozentsatz festlegen können. Aber das sind Bilder um
der Optik willen. Lassen Sie uns also mit der
Erstellung einiger Türen fortfahren. Denn im Moment
können wir nicht wirklich
von einem Raum in einen wechseln. Wir können nicht einmal
von vorne anfangen. Es sind nur Türen. Nirgends. Wie gesagt, dafür
brauchen wir einen Code. Wir müssen definieren, wo unsere Tür unser Labyrinth
sein soll. Erster Raum? Ich dachte, es wäre ein
Versteck, das nicht den Boden bekommt, aber es ist die Toilette Oh, was wir verwenden werden ist die Pfeilrichtung, um
aus seinem Segment
eine Tür zu jedem Raum zu erstellen . Und
dieses Segment verbindet sich zum Beispiel viele Male mit
diesem Raum, aber nur einmal
sollte es eine Tür haben. Dieses Segment soll eine Verbindung
zu zwei Räumen herstellen, es sollte also zu beiden Räumen führen. Eine Tür. Das sollte geschaffen werden. Es ist auch mit diesem Raum
verbunden. Deshalb ist es
kein besonderer Bereich wo dieser
ein besonderer Bereich ist. Zu viel Feuer. Aber ja, einige Bereiche zu haben, wäre nur
Feuer, wäre auch okay. Oh. Lass uns unsere Funktion erstellen, um
die versteckten Türen zu erstellen. Die Türen des versteckten Raumbereichs. Du wirst eine
Funktion brauchen. Nennen wir es. Dann geht sie. Das Erste, was wir dafür brauchen,
sind die versteckten Räume. Wir werden uns das holen.
Ich werde alle vier Zoll durchgehen. Schleife. Wir werden die Struktur
durchbrechen. Wir müssen in unserem
Kerker Koordinaten finden. Ich hole mir eine Kopie von
Zero, weil es ein Le-Kachel ist. Um den Kerker zu finden. Und von hier aus werden wir uns Wegbeschreibungen holen Und von Directions aus holen
wir uns die Schlüssel. Und das zum Flow-Körper, macht ihn
etwas kompakter. Ich möchte wissen, in welche Richtung ich einen
Pfeil habe, der auf die Wand zeigt. Dieser Fall wäre einfach zu lösen, weil
wir nur
eine Richtung haben , die eine Wand hat, eine Raumwand, und alle anderen Richtungen
sind blockierter Schmutz, andere Dinge, die
nicht mit ihr verbunden sind. Also wiederholen wir das für jede Schleife. Wir werden den Wert mit dem
Index zusammenrechnen, wenn er wahr ist. Es bedeutet, dass es das
einzige ist, das einen Pfeil hat,
was bedeutet, dass wir einen Durchgang haben. Oh, es ist eine Tür. Wir werden das zu
einer lokalen Variablen heraufstufen . Nennen wir
diese lokale Variable Direction Und jetzt haben wir eine
Richtung, in der unsere Zimmerfliese
als Tür dient Oh, auf dieser Kachel wollen
wir, dass die fünf Nachbarn die Nachbarseite finden und
von dieser Nachbarseite aus wollen
wir die aktuelle Richtung
aus unserer Richtung sehen. Wir werden
diese Variable hierher bringen. Du wirst von der RA bekommen, welche ich falsch
gewählt habe,
wähle ich die Wildcard aus. Dieser, nicht dieser.
Dieser ist immer ein Tyrann. Das steht auch im Tooltip. Wählen Sie aus. Um das zu
verbinden, ist der Index,
und wir haben North Zero, 213. Nein, wir können direkt
den Nachbarn unseres Blocks auswählen den Nachbarn unseres Blocks , das ist der Raum
, der die Tür benötigt. Also werden wir unser Zimmer finden. Benutze wieder diese Dungeon-Karte
mit unseren Koordinaten. Ab hier werden
wir entgegengesetzte Aktionen durchführen. Wir werden das
aktuelle Gegenteil finden, das wir wollen. Wir
werden den werden Gegensätzen Raum geben es von
unserem Zimmer aus gefunden, wo Wir haben es von
unserem Zimmer aus gefunden, wo sich
unser Kreuz befindet. von unserem Zimmer aus in die
entgegengesetzte Richtung
und achten Sie darauf , dass
der Pfeil einschlägt. Das bedeutet also, dass unser Dungeon unser Spieler hat, ihn
durchqueren kann werden das mit
dem Ende dieser vier Lobs verbinden, das sind die Schlüssel
des aktuellen Plättchens, weil wir es am Ende nicht verbinden
wollen , nachdem alle Kacheln überprüft
wurden Wir wollen es mit
der aktuellen Kachel verbinden , die wir überprüfen Spiel Roots don't I. Schon wieder Hidden Room. Wir haben hier ein verstecktes Zimmer. Wenn ich hier reingehe, sollte
das
ein Pfeil in diese Richtung sein. Ich glaube, wir haben alle eine
Ahnung, warum das passiert ist. Wir müssen mit einem Diagramm arbeiten
und nach dem Laden sollten
wir die Funktion für versteckte
Türbereiche hinzufügen. Lass uns kompilieren und spielen. Kunst, hoffentlich ein versteckter Raum. Fangen wir nochmal an.
Schon wieder kein verstecktes Zimmer. Hier haben wir einen. Jetzt hat es wieder nicht funktioniert. Und der Grund ist einfach. Wir haben zu den Anweisungen
, auf denen das steht, hinzugefügt , dass wir
die Pfeile nicht umschalten Also werden wir umschalten. Dave, eigentlich aus einem
Heizraum. Jetzt
zeige ich uns sogar, dass
sie hier angebetet werden sollen. Und funktioniert auch,
der Rest stimmt. Irgendwelche anderen Heizräume. Viel. Ja, wir haben einen dritten. Ja, ich bin auch hier. Das bedeutet, dass es funktioniert. Ich denke, das ist
genug für diesen. Ich sehe
dich im nächsten. Tschüss.
42. Wand-zu-Tür-Swap-Funktion: Hallo und willkommen zurück
zum Game Design Workshop
und zum prozeduralen Kurs „
Dungeon Action A Psy“ zu Real Engine Five . In der vorherigen Version
haben wir also unsere Funktion zum
Hinzufügen von Stockwerken abgeschlossen Wir haben die Stockwerke
der Balkone hinzugefügt, wobei vier
die ST-Balkone in einer Schleife und zu den RA-Elementen aufgebrochen Dann durchqueren wir
die LA-Elemente
und fügen das statische Netz hinzu und setzen Danach haben wir es
für die isolierten Bereiche gemacht, genau den gleichen Code mit
der Änderung, dass wir
durch eine zufällige Ganzzahl ausgewählt haben , ob es
sich um einen Lavaböden
oder einen normalen Boden handelt, und wir haben
das Doppelte des normalen Stockwerks hinzugefügt,
damit es mehr
Chancen hat, zu Wir können
es tatsächlich noch einmal hinzufügen. Hier. Wir haben also drei
davon und zwei davon. Als Nächstes
haben wir
unsere Code-Funktion für
Bereiche mit versteckten Türen gestartet unsere Code-Funktion für
Bereiche mit versteckten Türen , um Türen in
den versteckten Bereichen zu platzieren. Wir haben unsere
Liste der versteckten Räume durchgesehen. Wir haben die Struktur geknackt
, um das Array zu bekommen. Wir haben den ersten Index bekommen, weil
es sich um einen Raum mit einer einzigen Kachel handelt, und wir haben diese
Kachel in unserem Kerker gefunden Wir haben die Anweisungen
und anhand der Anweisungen
haben wir herausgefunden, welcher aktiviert ist,
was bedeutet, dass er Zugang hat Nein, das heißt, wir haben eine Tür. Und als wir fertig waren, haben wir die Pfeile
des gegenüberliegenden Blocks, des Zimmerblocks, so angepasst dass sie den Pfeil
zum versteckten Raum aktivieren. Jetzt müssen wir innerhalb
der DP-Dekoration eine Funktion
einrichten, die
dafür verantwortlich ist, dass unsere Wände
anstelle der Tür die
Wand zur Türwand hinzufügen . Und wir werden das hier tun ,
weil wir bei der BP-Dekoration den Raumindex haben, anhand
dessen wir wählen
, welche Art von Wand? Eigentlich brauchen wir den Wandindex, den Raumindex. in der Funktion „Wände austauschen“ den
Wandindex also Lassen Sie uns in der Funktion „Wände austauschen“ den
Wandindex also auch zu einer Variablen heraufstufen. Nochmals, für diejenigen, die
suchen, wo wir sind, sind wir in den VP-Dekorationen vertreten. Wir werden hier
eine Funktion erstellen,
und bevor wir das tun, wollen
wir von der Funktion, dass wir bereits
Wände getauscht haben , auf die
Wandindex-Variable hinweisen Weil wir dies verwenden werden
, um zu entscheiden, welche Art von
Wandtür wir hinzufügen möchten Lassen Sie uns nun diese Funktion erstellen. Nennen wir es Tür hinzufügen. Nun, in dieser Funktion müssen
wir auch
überprüfen, ob unser
Einzelzimmer, das wir
erstellen, mit unserem Raum verbunden ist,
weil die Möglichkeit besteht, dass unser Einzelzimmer hier drüben ist, natürlich
gedreht, aber
es könnte so sein, basierend auf unseren Regeln, wird
das auch
als versteckter Raum betrachtet. Aber für diesen Raum wäre
keine Tür erforderlich. Hören Sie hier auf, gehen Sie zurück
zur Dekoration und fügen Sie eine Wandausgabe hinzu. Wenn wir die Tür öffnen, gehen
wir zurück zu
unserem M-Generator fügen aus
der Find Dunge-Map unsere Kachel-Referenz hinzu. Wir werden Wir brauchen
ein Kind. Dekorationen. Ja, das ist der Name. Und
von den Kinderdekorationen werden
wir Schauspieler. Und vom Kinderdarsteller werden
wir
zwei Dekorationen gießen
und das Ganze zu einem reinen Schnitzel machen. Und jetzt, wo wir die Referenz
haben, werden
wir es in die Länge ziehen Tür. Wir werden
es hier verbinden. Bring es so. Jetzt, wo wir einen Ausgang haben, wissen
wir, dass dieser
Ausgang einer Wand ist. Wir wissen, dass
wir, wenn
das läuft, als Nächstes die Frage stellen können, wir eine Wand gefunden
haben oder nicht. Und wenn wir keine Mauer gefunden
haben, fügen wir allen Türen unsere
Koordinaten hinzu. Aber lass uns das jetzt nicht tun. Wir werden das
danach machen. Beenden wir mit
unserer Funktion bei. Nein. Zuallererst benötigen
wir
die Wandanordnung. Weil wir sie alle
durchgehen wollen. Also werden wir es für jeden tun. Aber wie Sie wissen, brauchen wir, wenn wir durch alle Wände
gehen, eine Richtung, weil
wir das Zugsystem
haben, bei dem ein Element wie eine
Zugkomponente gezogen Und weil wir ziehen müssen,
brauchen wir eine Richtung. Also fügen wir unserer Tür
einen Eingang von E-Erektionen hinzu. Nennen Sie es Erektion. Denken Sie daran, das muss an die Schnur
gebracht werden, nicht um zu beißen, und das
werden wir hier hinzufügen. Dann brauchen wir eine Filiale. Gehen wir zurück zu
unserem PP-Generator. Und ausgehend von unserem gegenteiligen Ergebnis werden
wir das
hier verbinden, werden
wir das
hier verbinden weil wir
die Richtung unseres Stapels
testen , der den versteckten Raum hat. Für den Nachbarn tun wir das Gegenteil. Also Einkommen, und das gibt uns das Ergebnis des
Ich ist der Raum. Gehen Sie zurück zu den Dekorationen. Das ist also der Teil, bei dem wir uns fragen
müssen, ob es einen Krieg gibt. Aber was wir tun können, ist das
hier her zu ziehen und das Set ist sichtbar. Oder es ist eigentlich nicht
wieder versteckt, hi im Spiel und doch versteckt im Spiel. Wir werden einen
Zweig anlegen, wenn das wahr ist. Und wir
wählen hier einen aus oder b Ich ist nicht sichtbar oder ob
es versteckt ist in Gain. Wir müssen hier sichtbar sein. Nein b denn wenn es sichtbar wäre, würde
es wahr werden, und
dann würde es wahr werden. Aber wenn es um Gewinn versteckt wäre und es wahr wird, bedeutet das, dass wir
es nicht sehen können. Also brauchen wir das Gegenteil. Aber wir haben das. Wir müssen
eine lokale Variable erstellen. Nennen wir das wirklich Mauer. Weil wir hier
das Prinzip „Keine Mauer“ haben, und lassen Sie uns es auch hier
tatsächlich verbinden und es wahr machen, wenn unsere Frage wahr ist. Nun, es
ist schön zu wissen , dass wir zur Laufzeit
Tags hinzufügen können. Schauen wir uns zum Beispiel an,
ob ich alle Wände eines Raums
durchquere . Woher weiß ich,
welche die Türwand ist? Wir könnten zum
Labyrinth-Generator gehen. Lassen Sie uns tatsächlich beide Möglichkeiten zeigen. Wir könnten hierher gehen,
und das werden wir tun. Wir werden
diese Koordinaten
einem neuen Array hinzufügen , das heißt Let's duplicate s empty. Es ist ein Endpunkt-Array.
Das ist es, was wir wollen. Nennen wir das alles Unseres. Bring es her und lass uns die Koordinaten
hinzufügen. Vom Betreiber,
tut mir leid. Zum Array hinzufügen. Wenn das falsch ist,
wenn wir keine Wand haben, addieren
wir die Koordinaten
unserer Tür, was das Ergebnis unseres
Fundkreuzes nebenan ist. Gleichzeitig
könnten wir ein anderes Array haben. Nennen wir das alles
Türerektionen. Lassen Sie uns den
Punkt in die Richtung ändern. Aber zum Beispiel, wenn ich das auch hierher
bringe und die entgegengesetzte
Richtung
hinzufüge, die wir hier wollen. Nein, ich habe
sie so hinzugefügt, ich könnte zwei
entsprechende Anordnungen
haben alle Türen
und ihre Richtung Oder ich könnte auch eine andere
Kartenvariable mit T-Punkten haben, und der zweite Wert
würde acht Richtungen Aber wie gesagt, wir
können das mit Zwergschleppern machen. Wir können
uns im Handumdrehen um Komponenten, um Schauspieler,
um was auch immer wir wollen, erweitern Schauspieler,
um was auch immer wir wollen, Ich kann also auch aus der For-Schleife aus dem Array-Element,
der Wand, die wir hier
manipulieren,
ziehen der Wand, die wir hier
manipulieren, und G-Ziehungen hinzufügen,
was wir tun müssen, ist
ein bisschen komisch Wir müssen Tags abrufen, Komponenten-Tugs
abrufen und das Ganze
kommt als Und weil es sich dabei um eine
Variable handelt, können wir das ist unser direkter
Verweis auf diese Variable tatsächlich manipulieren und
ausdrücken und wir können den Bug
einbauen. wir nun
durch jeden von ihnen, jede der Wände,
und am Ende machen
wir eine weitere Vorderschleife. Und fordere die Tag-Liste an. Und die Wand, an der wir
das haben, werden wir tatsächlich ausdrucken. Aber lass es uns nicht testen. Es ist Zeitverschwendung. So ist es so
programmiert, dass es funktioniert. Als Nächstes müssen wir das statische Netz einrichten. Tic-Mesh. Das hätte anders werden können. Es ist sichtbarer,
was wir verbinden. Ja. Ich sehe, das ist jetzt geklärt. Welches statische Netz fügen wir hinzu? Wir werden wählen. Für unseren Index werden
wir unseren Wandindex wählen. Wir werden
insgesamt fünf Variablen hinzufügen. Gehen wir zu unseren
statischen Meshes und wählen unsere Türen
entsprechend Jetzt muss ich überprüfen, was für zwei es
waren. Wir gehen zu Evan Graph. Wir werden Zimmer bauen
gehen. Und von dort aus werden wir
zu Wänden wechseln, was eigentlich
Innendekorationen sind. Ich hätte
dort bleiben können. Und lass uns nachsehen. Nummer Null ist also dieser Typ. Wenn wir also zu einer Zahl Null gehen, sollten
wir diesen Wandtyp
zur Auswahl hinzufügen. Ich glaube, das ist es. In Ordnung. Kombiniert 85a1 9f8d. Unglaublich. Jetzt der
nächste. Gehen wir zu. Nein. Lass uns Mauern stoppen. Der nächste ist der aus Holz der leicht zu finden ist.
Der aus Holz ist meine große Klappe, leicht zu finden. Okay. Ja, es ist hier. In dieser Kombination b91xb. Ich bin mir nicht sicher. In diesem Jahr. Gehen wir zum nächsten
. Der Stein besteht aus Wänden. Das, das war einfacher zu finden. Kombinierter Null E CC 57. Ich denke, das reicht mit der Benennung. Die letzten
wären die Backsteinwände. Die Backsteinwände. Ich bin mir nicht sicher
, welches welches ist, aber ich glaube nicht, dass es wichtig ist. Ich wähle das
für den ersten. Kombiniert 025159 bla, bla. Und der andere
wäre dieser. Okay. Nun, basierend auf unserem
späteren System wie wir Wohnräume
betreten werden. Wir werden hier einige
zusätzliche Kollisionen benötigen, die wir
durch diese Funktion ermöglichen werden Gehen wir zu ihnen. Wir müssen zum Viewport gehen
und hinzufügen,
wir können die Kollisionsbox
duplizieren Bring es wirklich schnell
hierher und mach es kleiner. Ich denke, es ist in Ordnung, gute Größe. Vielleicht ein bisschen.
Ja, das ist in Ordnung. Ja, glaube ich. Ich werde das nochmal
duplizieren. Geh, um es zu drehen. Ich werde es überall
hinbringen, wo
eine Tür sein sollte. Es spielt keine Rolle,
ob es präzise ist oder nicht. Ich werde es
nochmal duplizieren, es rüberbringen. Und dann werde ich das
auch duplizieren und es hier rüberbringen. Alle, weil sie eine Kopie der Box
sind, haben
sie dieselben Einstellungen,
die wir hier hinzugefügt haben. Sie erzeugen also keine
Überschneidungsereignisse. Vielleicht ist das ein bisschen mehr. Aber es ist in Ordnung. Oh, das bedeutet, dass
wir
an unserer Tür ihre Läsion aktivieren sollten Und wir können tatsächlich einen einfachen Schritt
machen. Wir werden diese Wand auswählen. Wir werden diese Box
dieser Wand zuordnen. Aber wir geben dem auch immer wieder Namen. Dann werden wir
diese Kiste mit dieser Wand verbinden. Hier, diese Kiste an diese Wand und dann diese Kiste an diese Wand. Ich gehe zurück
zu der Funktion, und von unserem statischen Netz aus werde
ich dafür sorgen, dass Kinder die Komponenten für Kinder
bekommen, nicht von Box zwei, wie Sie sehen können Es wurden viele Optionen aufgezeigt. Eine davon war, eine bestimmte Kiste
mitzubringen. Manchmal echte Dinge, es kann vorhersagen, was Sie tun möchten. Aber wie dem auch sei, wenn
wir Kinder bekommen , werden wir, wir
werden jede Runde p machen. Dann werden wir
die Komponente überstürzen. Und überlappende
Ereignisse erzeugen, stimmt. Und warum ich casten musste. Der Grund, warum ich hier casten
musste
, ist , dass ich
alle Komponenten durchgehe , die
das bei Mesh hat. Und ich will für die Polizei. Es ist keine statische
Mesh-Komponente, es ist eine Box-Komponente. Es tut mir leid zu boxen. Bestandteil der Box. Das hätte nicht funktioniert, wenn es eine statische Karte
gewesen wäre.
Also ich weiß es nicht. Das ist der Grund, weil ich nicht weiß, welche Art von Zeichen. Es kann etwa 520 Kinder haben. Okay, es ist nicht gut, so viele Kinder zu
haben, aber du kannst es nicht tun. Und es wird ein bisschen schwerer
sein. Ich weiß nicht, um welche Art
von Komponenten es sich handelt. Ich möchte also sagen, Sie die Box-Komponente
sind, wenn Sie die
Überlappungsereignisse generieren. Ich muss
diese Komponenten nicht taggen. Ich muss
diese Komponenten nicht benennen. Ich weiß, dass sie zu den Wänden gehören. Ich denke, das ist vorerst ein nettes
Gesprächsthema. Ich sehe dich
beim nächsten. Auf Wiedersehen.
43. Tür- und Sigil-Platzierung: Hallo und willkommen zum
Game-Design-Workshop im Rahmen Lensing-Kurses zur Erstellung von fünf prozeduralen
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen der vorherigen
Lektion haben wir die Funktionen D und Türbereiche abgeschlossen und die Funktion Türen hinzugefügt,
die wir von BP Decorations nennen Und wir haben auch gezeigt, wie Informationen über die
Türen auf eine uns bekannte Weise
hinzufügen können,
indem wir ein Array erstellen und
die Variablen hinzufügen und
ein entsprechendes Array erstellen, auch dass sie gleichzeitig
gefüllt werden. Ihre Indizes
entsprechen also einander. Wir haben auch diese Funktion hinzugefügt, die Tür, die wir zu füllen
begonnen haben die Richtung , von der
aus
die Tür hinzugefügt werden soll Wir sind durch unsere Wände gegangen. Wir haben das Bauteil
gefunden, das das Etikett trägt, die Wand mit der
Markierung unserer Richtung, und wir haben eine Frage gestellt, ob unsere Wand
sichtbar ist oder nicht, nur für den Fall,
dass sichtbar ist oder nicht, nur für den Fall unser versteckter Raum irgendwo
herausgesucht wird Und wir fuhren fort und wählten „
Eigentlich ist das falsch“. wieder ein paar Fehler.
Als es wahr war, wollten
wir sie auf nein als wahr setzen und wenn es falsch war, wollten
wir der Komponente die
Kennzeichnung hinzufügen,
dass es sich bei dieser Komponente um eine Tür handelt. Wenn wir also die Anordnung der Wände
durchgehen wollen, können
wir leicht herausfinden
, welche Tür die Tür ist. Also, wir trennen
das jetzt und verbinden es mit
den Wasserfällen und alles ist in Ordnung.
Das ist richtig. Und dann haben wir
das statische Mesh hinzugefügt, das passende Mesh
ausgewählt und auch
ein paar Box-Komponenten oder
unsere Spielmechaniken hinzugefügt . Aber wenn die
Tür aktiviert ist, aktivieren
wir auch
die Überlappungseffekte für
unsere neuen Box-Komponenten. Jetzt gibt es noch eine
Sache, die wir hinzufügen sollten, und ich werde erklären, warum wir ein statisches Netz hinzufügen
müssen. Zeig, wo die Tür ist? Weil unsere Kamera aus einem 45-Grad-Winkel aufgenommen wird
. Ob die Tür in dieser
Wand ist, können wir nicht sagen. Wir können nicht sagen: Oh,
hier ist eine Tür. Also muss der Spieler
etwas für sich haben, wenn
wir von oben schauen, dass es hier eine Tür gibt. Um das zu tun, werden
wir ein paar Mädels einsetzen. Oh, ich werde nur eine neue statische Quest
hinzufügen. Es hat die Wand hinzugefügt, weil ich die Wand hier ausgewählt
habe, aber wir wollen die CGL Suchen wir das C l. Hier ist es, richtig? Das ist groß. Machen wir es ein
bisschen kleiner. Ich denke 0,3. Vielleicht ist das ein bisschen klein
oder 0,4 sieht gut aus. Denken Sie daran, alle Achsen zu fixieren, damit sie gleichmäßig skaliert werden, und bringen wir sie an die
Stelle, an der sie sich befinden würden Basis Die Höhe
unseres Wortes ist 400. 93 80, vielleicht ist das dort in Ordnung. Eigentlich werde
ich für die Cgels auch Schlepper benutzen Wir könnten
es einfach als Kind erziehen, mit der anderen
Welle
weitermachen, die wir gezeigt haben, aber gewöhnen wir uns an das Zerren Das ist also S. Das sind zwei, die
wir eingefügt haben. Dreht sie. Ich werde den negierten Wert
negieren. Das ist ein Norden. Ich erkundige mich bei der Wand. Y. Ich werde das nochmal rotieren,
kopieren und einfügen Ich werde
es um 90 Grad drehen. B West Position B. Ich werde das einfach kopieren
. Füge es hier ein. Ich halbwegs, also zwei Ja. Ja, tut mir leid.
Weil das in der Mitte ist. 380 Wu wieder 380 Wu. Richtung. Die negierten 400, es sind 400, und sie sind an der richtigen Stelle Was wir für alle tun müssen, ist
oder ist auch, das
versteckte Spiel wahr werden Weil wir
sie aktivieren wollen, wann wir wollen. Ich werde auch gehen
und wirklich, lass uns zu Bau
C
gehen . Bring sie her,
mach ein Array. Und bewerbe diese Variable, all diese C-Mädels. Fein Jetzt kann ich an die Tür gehen und die Cgals holen und jeden von
ihnen übersehen Auch
hier verwende ich diese Zeichenfolge mit
diesem Textnamen, da die Komponente gezogen wird diesem Textnamen, da die Komponente gezogen . Wenn ja, dann
sind wir bei Sichtbarkeit, dass das
versteckte Spiel falsch handelt. Sichtbarkeit und Verborgenes im Spiel
sind zwei verschiedene Dinge. Und sie sind entgegengesetzt.
Versteckt im Spiel, ja, das bedeutet, dass du nichts sehen kannst. Sichtbarkeit, ja, das
bedeutet, dass du es nicht sehen kannst. Wie dem auch sei, bevor
wir das tatsächlich tun, müssen
wir eine Frage stellen. Ist es möglich, dass
wir an einer Mauer stehen? Denn wenn wir in einer Wand sind und wir die CD
nicht einschalten sollten weil
eine CD
mitten in der Luft landen würde eine CD
mitten in der Luft Wenn es keine Wand ist, geh einfach raus,
ohne dass eine Wand durchkommt. Wenn es sich um eine Wand handelt, gehen Sie durch die Sea-Gels und
aktivieren Sie das richtige. Lassen Sie uns nun kompilieren und speichern. Und stürzt ab. Wir
mussten einen Absturz haben. Wenn wir zurück sind, lass uns
weitermachen. Lass uns testen gehen. Die Karte. Das Level. Gibt es einen geheimen Raum? Ja, es gibt ein geheimes Zimmer, Reste und
wir haben unsere Tür. Oh, das Einzige, was noch zu
tun bleibt, ist es für alles andere zu tun. Oh, das nächste, was
wir hinzufügen sollten,
wären die einzelnen Bereichstüren. Was ich mit einzelnen Bereichen wie
den Balkonen und den isolierten
Bereichen meine , ist eine gemeinsame Regel. Sie sind nur mit einem Raum verbunden. O Balkon hier,
Einzelbereich hier, isoliert, wir haben ein anderes Zimmer. Das ist eine nette Karte. Wie auch immer. Fügen wir die
einzelnen Bereichstüren hinzu. Wenn ich zwei verschiedene habe. Lassen Sie uns zuerst eine Funktion erstellen. Öffnen wir ein Diagramm, identifizieren Türbereiche und
fügen eine neue Funktion hinzu. Nein, Bereiche mit nur einer Tür. Wie gesagt, wir haben zwei
Anordnungen dieser Bereiche. Wir haben die Balkone
und die isolierten Bereiche. Nun ja, ich könnte für jeden eine
andere Anzahl an Loops machen und so damit klarkommen
. Es gibt aber auch
eine andere Option. Wenn zwei Arrays
denselben Variablentyp haben, können
Sie sie tatsächlich anhängen Das bedeutet, dass Sie sie zu einem
zusammenführen, weil ich diese beiden Arrays nicht
durcheinander bringen möchte Ich werde eine
neue lokale Variable erstellen. Ich werde
es zu einem Punkt machen. wird ein Array sein,
und ich werde es
Tal Array nennen . Ich werde es herbringen. Ich gehe zu einem Stift. Ich werde es
erneut einfügen, nochmal machen. Ich werde also sagen,
das sollte kein Endpunkt sein Das sollten SD-Räume sein. Keine Endpunkte ändern den
Variablentyp , da diese
Arrays Platz haben Nein. Lass mich die Verbindung trennen, lass mich den Stapel kompilieren und
wieder verbinden, und jetzt können sie hinzugefügt werden Nun, das erste Nein, der erste Pin ist das Array, dem
wir Dinge hinzufügen werden, und der zweite Pin ist das
Array, das wir hinzufügen Aus diesem Array ergibt
sich also die Summe dieser beiden. Wenn ich die Balkone
hier und die
isolierten Bereiche hier miteinander verbunden hätte , hätte
das
unsere Variable durcheinander gebracht Jetzt, da ich so viele Arrays
habe, kann ich sie löschen. Für jeden Loop für jeden Raum, denn was wir
machen werden, ist dasselbe Wir werden auch eine weitere Variable
benötigen. Es wird vom Typ Integer sein und es wird vom Typ Array
sein. Das liegt daran, dass es ein Array sein
musste. Aber ich möchte
Tastencode zeigen, als würde ich
etwas programmieren , anstatt es zu benötigen.
Ich zeige es dir gleich. Nennen wir diesen Ex. Mm. Oh, habe ich. Aber du hast irgendwo anders einen
Zimmerindex. Mir hat es nicht gefallen. Ich
nenne es Index. Es wird gut werden. Kompilieren und speichern. Und tatsächlich denke
ich, dass dies ein
guter Ausgangspunkt für diesen ist. Ich werde
Ihnen später
in der nächsten Lektion den Overkill
dieses Codes zeigen später
in der nächsten Lektion den Overkill
dieses Codes Vorerst auf Wiedersehen.
44. Funktionen des Einzeltürbereichs: Hallo und willkommen zurück
zum Game-Design-Workshop und zum prozeduralen
Action-PS-Creation-Kurs mit Real Engine Five . Vorher haben wir etwas kreiert, wir haben es tatsächlich mit
unserer Funktion „Tür hinzufügen“
abgeschlossen. Wir haben das Teil hinzugefügt, das
wir überprüfen, wenn das Schleifen der einzelnen
Wände abgeschlossen ist, und wir haben
unsere Box aktiviert. Unser Türkasten. Wir überprüfen, welche der C-Kiemen
die Komponentenbezeichnung hat , deren Richtung
wir haben wollen,
und wir stellen
sie so ein, dass sie zu gut sichtbar sind Beim Einstellen der neuen
versteckten zwei Stürze. Jetzt sind wir rausgegangen,
ohne Mauer oder ohne. Wir haben auch den Start
unseres Hauptgenerators für
unsere Bereiche mit nur einer Tür erstellt unseres Hauptgenerators für
unsere Bereiche mit nur einer Tür und ein wenig
über das Anhängen in einem Array erklärt über das Anhängen in Und jetzt werden wir damit
weitermachen. Und wie ich versprochen habe, werde ich Ihnen erklären, wie Sie mit dieser
Reihe von ganzen Zahlen ein wenig übertreiben Ich verwende dafür eine Reihe von
ganzen Zahlen, weil die Auswirkungen minimal
sein werden Es ist eine nette Gelegenheit
, einige Dinge zu erklären. Oh, fangen wir damit an, unsere
Aura zu durchbrechen. Also bekommen wir das Array
unserer Koordinaten
und dann eine Schleife
zu jeder von ihnen. Für jede Schleife. Jetzt haben wir
im Raumindex eine Funktion , die, wenn wir sie öffnen, Räume des St-Arrays
oder die Koordinaten der Räume
durchsucht alle Räume des St-Arrays
oder die Koordinaten der Räume
durchsucht und fragt, ob die Koordinaten, die wir eingeben, zu einem von ihnen
gehören Das gibt uns zurück, ob ein Raum gefunden wurde und um welchen
Raumindex es sich handelt Wir werden
diese Funktion schließen. Berücksichtigen Sie jetzt Bereiche mit einzelnen Türen. Jetzt machen
wir einen Brunch und verbinden ihn hier. Und sagen wir, wenn wir ein
Zimmer gefunden haben, was werden wir tun? Wenn nicht, tun wir nichts. Aber wenn das stimmt, machen
wir den Overkey
im Indexraum Also werde ich fragen, ob das
enthalten ist . Enthält einen Gegenstand. Und das Element
wäre der Raumindex. Denn wenn wir einen Raum hinzufügen, wenn einer der Koordinaten einen Raum
findet, wollen
wir nicht auch den nächsten Block
hinzufügen, der einen Raum findet
, sondern
wir haben einen Ort gefunden, an dem
wir eine Tür erstellen können Oh, wenn ich das mache, und ich weiß, dass ich möchte mein Zimmer
in Bezug auf diese Inhalte einzigartig ist. Wenn ich zu dieser Reihe etwas hinzufüge, können Sie von einzigartig hören. Das wäre übertrieben denn der Grund dafür ist,
dass es, wenn
es versucht, Unique hinzuzufügen , zuerst die
gesamten Indizes durchsucht
und dann entscheidet, ob es hinzugefügt wird oder nicht Nun, wie ich bereits erwähnt habe, haben
die Sets auch
diese Funktionalität, aber sie sind nicht so schwer
wie Arrays Sie können sogar die
Leistung beim
Hinzufügen einzigartiger Teile erhöhen Leistung beim
Hinzufügen einzigartiger Teile Sie würden die Speicherleistung
verringern, weil ihnen ein System zugrunde liegt. Der Mechaniker nannte SH-Tabellen. Es ist etwas Tieferes
in der Programmierung geht um Speicherverwaltung, schnell an Referenzen
zu kommen. Jedenfalls sind Sets besser
, um einzigartige Dinge hinzuzufügen. Index-Arrays sind besser
darin, einfach normal hinzuzufügen. Also hier würde ich
einfach Hinzufügen auswählen und es wäre schneller Nicht dass es jetzt
mit unserem Labyrinth zu tun hätte, aber ich denke,
das sind nette Informationen Ich werde den
Raumindex zum Array hinzufügen. Und wir haben die Türen
und alle Richtungen. Da wir gesagt haben, dass diese beiden gleichzeitig gefüllt
werden müssen . Wir werden dem hinzufügen, ich werde
die Koordinaten von hinzufügen. Ich werde das auch ergänzen. Um die Richtung zu ermitteln, wählen
wir einfach aus. Und wir kennen unser
Index-Array aus dem Bremsraum. Wir müssen den
Cheat hier nochmal machen. Also suche ich diese Auswahl aus anderen Funktion, für die
wir sie verwendet haben, und kopiere sie einfach von dort Ich glaube, wir haben es
in Feldräumen benutzt. Ich denke bei meinem
Eifer, das zu zeigen, habe ich einen Schritt vergessen Wir gehen zu, wir
überprüfen den Punkt. Wir bekommen all seine
Punkte. Ja, hier ist es. Für jeden seiner Punkte sollten
wir keine Nachbarn haben. Also mach das Kreuz nebenan. Warum und angrenzend überqueren, und dann müssen wir diese Punkte
für eine Schleife ziehen. Ich werde das verbinden. Und das ist der Raum, wie das Kreuz nebenan, wir überprüfen, es ist
ein Raum, nicht die Fliese. Nicht die Koordinaten der Kacheln
, von denen wir kommen, sondern das angrenzende Kreuz. Weil wir wissen, dass
es sich bei der
Fliese, von der wir kommen, um einen Korridor oder einen Balkon handelt, nicht um einen Korridor, einen isolierten
Bereich oder einen Balkon. Deshalb
brauchen wir das Kreuz nebenan und
vom Kreuz, das jetzt angrenzt. Bei dieser sollten alle Türen ebenfalls kreuzförmig
sein,
nicht an die Raumkoordinate. Oh, wir schauen uns
alle Balkone
und abgelegenen Bereiche an. Wir erhalten die Koordinaten
jedes segmentierten Bereichs. Wir überprüfen, ob es sich um Nachbarn handelt und wenn es sich bei dem Nachbarn um einen Raum handelt, fügen wir ihn dem Index hinzu Wir haben die Dinge hier erklärt. Jetzt können wir
tatsächlich die Richtung ermitteln, tatsächlich die Richtung ermitteln weil
wir aus
Nordost-Südwest die Richtung
der Mauer kennen. Also werde ich den
Trick mit einer Auswahl machen. Wie Sie sehen können, funktioniert
das nicht. Ich habe wieder die Möglichkeit,
alle Richtungen abzuwenden. Ich nehme
den letzten Ausgang. Ich werde von hier aus wählen. Ich werde die letzte Ausfahrt und
die letzte Ausfahrt verbinden und nach Nord-Südost-West,
Nord-Südost-West fahren . Seien Sie ehrlich, ich glaube nicht, dass
wir diese
Variable überhaupt verwenden werden, aber warum nicht? Wer weiß, wie Sie
denken werden, um dieses Programm zu aktualisieren. Jetzt müssen Sie nur noch die Türen erstellen. Und um das zu tun, benötigen wir
zwei lokale Variablen. Sie werden wieder den Endpunkt und
die Richtung haben. Aber die hier haben alle Informationen
über alle Türen. Der Grund, warum
wir die
lokalen erstellen werden, ist, dass
wir nur
nach dieser Kategorie filtern werden, was auch immer wir hier erstellen. Damit wir sie verwenden können. Um den passenden
Stil zu finden und die richtige Richtung der Tür und
der Pfeile zu bestimmen. Aber wir werden nach unten scrollen, um zu lokalen Variablen zu gelangen, und wir werden zwei neue
hinzufügen. Nennen wir die erste Tür. Es sollten Koordinaten
vom Typ Punkt sein und die anderen sollten Koordinaten sein,
sie sollten Richtungskoordinaten sein. Und wir werden
sie am Ende hierher bringen. Und füge genau die gleichen
Dinge hinzu, die wir hier hinzugefügt haben. Das sieht ein bisschen nett aus, dieses Paket definiert
Punkte, aber in Ordnung. Lass uns jetzt weitermachen. Wo werden wir „Neue Türen schaffen“ nennen
? Wir haben drei Möglichkeiten. Wir haben die Möglichkeit,
direkt nach dieser F-Schleife zu erstellen, wir haben die Möglichkeit, hier oder hier zu
erstellen. Das ist die FD-Schleife, die jede Kachel hat, es sind
Koordinaten, sagen wir
, jede Kachel,
die sich in diesen beiden Arrays befindet, die Arrays mit
vielen Koordinaten sind Sie haben Koordinatenlisten. Wenn wir es also an einer anderen
Stelle hinzufügen, bedeutet das am Ende, dass
es
ausgeführt wird und versucht die Nutzungsbedingungen so
oft
hinzuzufügen, wie es all diese sind. Wir haben es hier zu den
Koordinaten hinzugefügt, es wäre sogar noch schlimmer,
weil es das mit der
Anzahl der Karten multipliziert , die es tatsächlich hat. Ray, eigentlich haben wir ein Array benutzt. Also den geringsten Schaden, den wir
anrichten können, ist es, es hier hinzuzufügen, weil all das für jede
Schleife, die wir
erstellt haben , eine
Menge Berechnungen sind. Also bringen wir unsere Türen mit. Hier, lass uns weitermachen. Für jede Schleife. Jetzt können wir uns stellen. Es tut mir leid. Wir
müssen nicht nebenan schließen. Wir müssen es
im Kerker finden. Finden. Und wir holen uns eine Wegbeschreibung und fügen sie als wahr
hinzu, etwa so. Was wir als wahr hinzufügen werden,
ist die Richtung
, in der der Index abgerufen wird . Also werden wir die
Richtung beim Abrufen
des Indexes hinzufügen , weil
diese beiden Arrays einander
entsprechen Das nächste, was wir tun
müssen, sind Hundepfeile. Okay. Okay. Tiefer und auch an der Tür. Wie wir ein Kind brauchen, also besorgen Dekorationen im Vergleich
zu Pest
und so. Und für
diese Richtung werden
wir das oder noch besser verbinden Und das sollte es sein. Lass uns spielen gehen. Die Tür hier. Keine Tür hier. Ich vermute mal Sie verbinden das. Immer
das Gleiche, nicht wahr? In Türen. Ist es? In Türbereichen. Hier ist es. Fangen Sie nochmal an. Nein. Tür. Stimmt? Lass es uns herausfinden. Bitte. Oh,
lass uns unseren Code überprüfen. Also fangen wir an, wir fügen hinzu, dass
der Falke isoliert ist, wir machen einen Rückzieher, finden ein angrenzendes Kreuz,
wir fügen dem Indexraum etwas hinzu Das immer weiter zu vergrößern ist ein Problem, denn wenn
wir denselben Raum hinzufügen, ja, wenn wir derselbe Raum sind, hat
derselbe Raum
zwei isolierte Bereiche Nehmen wir an, es gibt einen isolierten
Bereich
und einen Balkon, und der Ausgang
hat drei Türen Dann wird es nicht hinzugefügt, aber wir müssen diesen Indexraum
zurücksetzen Also werden wir es uns anhören,
bevor wir einen neuen Bereich auswählen. Jetzt fügen wir der Exo hinzu, dass das Problem, das wir hatten, kein
Problem verursachen
würde. Sie erzeugen
Erektionen. Türen hinzufügen Hier bekommen wir die Türen, wir ermitteln die
Richtung der Tür. Dann schalten wir die Pfeile
um, damit die Pfeile funktionieren. Dieser sollte hier einen Pfeil
haben. Das tut er nicht. Die Pfeile sind es auch nicht. Okay. Siehst du, was
hier passiert ist, das ist also Norden. Das hat nichts mit dem Norden zu tun. Okay. Also im Grunde ist es hier. Wir haben nicht das Gegenteil , denn wenn wir den Nachbarn über eine
Richtung
kriegen , brauchen wir
die entgegengesetzte Richtung. Ja, natürlich, das macht Sinn. Ich kann sparen. Und dieses
Mal haben wir Hunde Ein abgelegenes Gebiet. Ja. Kein abgelegenes Gebiet. Es liegt daran,
dass wir das hier haben, das ist eine spezielle Kiste. Zwischen diesem und hält
sie es für einen Block. Also das ist ein isoliertes Gebiet, und das ist ein isoliertes Gebiet. Wir verwenden aber auch die
speziellen Blöcke. Also arbeite ich eng
an dem, was ich gesagt habe. Also haben wir überall Türen. Wir haben hier eine Tür. Wir
sollten hier einen haben. Wir haben die Verkäufe, die ein bisschen hoch
sind, ein bisschen innerhalb der Mauer. Wir können es schnell an unseren
Dekorationen anbringen, sie absenken. 340. 30. Das sind alles 30. Das 30. H. Ja. Wir werden
von oben schauen, also dieses Problem. Das ist zu viel. Ich
schätze mal für 20. H. Geh und speichere. Nicht schon wieder. Es sieht gut aus. Gut so. Aber wir haben Türen, und wir hatten eine in
der Mitte unserer. Ich denke, wir sollten im
nächsten. Ich sehe dich dann. Tschüss fürs Erste.
45. Dungeon-Wände verbinden: Hallo und willkommen zurück
zum Game Design Workshop
und dem Kurs zur Erstellung von Real Engine Five
Procedural Dungeon Action ARPs Zuvor waren wir mit
unserer Einzeltürfunktion fertig. Wir korrigieren auch einige Fehler
, die dabei passiert sind. Und was wir tatsächlich getan haben, war, unseren Raumindex in
der ersten vierten
Schleife zu löschen , bevor wir mit
den Koordinaten der
einzelnen segmentierten Bereiche beginnen den Koordinaten der
einzelnen segmentierten Bereiche Dann haben wir die Richtung umgekehrt , weil wir
die Nachbarn bekommen Und dann verwenden wir das
Türen-Array, das wir
hier erstellen , um die Richtung zu ermitteln und sie der jeweiligen Kachel hinzuzufügen Wir haben die Pfeile umgeschaltet und
unsere Tür hinzugefügt. Lass uns das nochmal machen,
aber diesmal für unsere Korridore, die eigentlich
fast identisch sein werden Wir gehen zu unserer
Funktion, Bereichen mit nur einer Tür, und wir werden
das duplizieren und es Bereiche nennen Was wir ändern werden, ist dass
wir diese beiden löschen werden. Wir werden den Tempel A
löschen und nur unsere Korridore
hinzufügen A. kompilieren und speichern Lassen Sie uns auch
den Van Gra hinzufügen. Korridorbereiche, Türen. Kompilieren und speichern
und los geht's. Jetzt zwei Türen hier, ein großer Moment, aber es funktioniert. Nun, warum wurden hier zwei Türen
hinzugefügt und das C hier nicht aktiviert? Weil der Unterschied zu
den Collidoren darin besteht
, dass wir eigentlich nur einen in jedem Korridor haben
wollen In jedem Korridorsegment, jedem Raum
, den es miteinander verbindet, wollen
wir nur eine Tür haben, wohingegen jetzt so
viele wie möglich hinzugefügt werden, bis sie zeigen, weil
wir diesen Teil so codiert haben Wie Sie hier sehen können, hat
es mit
der Kieme C einen Bug gegeben, aber wir
werden das beheben Lasst uns unser Gameplay beenden, zum Mai-Generator
gehen, in die Türen des
Korridorbereichs und uns die Regeln ansehen Raus. Jedes Mal rennen
wir zu einem anderen
Pausenraum, Korridor. Wir fügen eine Tür
und eine Richtung hinzu. Das Erste
, was passieren kann, ist , dass dieselbe Koordinate zwei Richtungen
hat. Was wir tun werden, um
das zu beheben , ist, dass
wir eine Verbindung herstellen und die Türen am Ende laufen lassen, wenn wir alles
hinzugefügt haben. Wir werden es hier drüben hinzufügen
, und zwar für jedes angrenzende Objekt. Spiel. Es hat unsere
Sachen ein bisschen repariert. Wir haben hier eine Tür, wir
haben hier eine Tür, aber wir haben hier eine CDL,
was das Problem ist, das wir zuvor entdeckt haben Ich schätze, da gibt es eine
bestimmte Richtung. Wir haben vielleicht nicht den richtigen Zug
angebracht. War ich es? West West Ost West. Also hat diese Seed, die
eigentlich im Osten sein sollte,
nicht das richtige Etikett und stürzt ab. Wieder zurück, und
jetzt ist es behoben. Und wenn wir Play drücken und Türen und Türen drücken. Und zu denken, weil es zerquetscht ist,
hat nichts gerettet. H-Generator, Türen haben das Hinzufügen hier nicht
gespeichert. Ich habe es wieder hinzugefügt. Deshalb sollten wir
immer ständig sparen. Jetzt haben wir Hunde, nur einen pro Korridor. Jetzt ist sie in Ordnung. Es scheint richtig zu sein. C hier. Das ist dieser Korridor hier. Wir haben überall Türen. Jetzt
sind alle unsere Labyrinthe und Räume miteinander verbunden und ein Spieler kann durch das gesamte
Labyrinth und alle Räume
navigieren Jetzt, wo wir mit den Türen
fertig sind, erhöhen
wir unsere Ladung Oben, und ich werde das
Ding hier drüben kopieren , Base. Sagen wir, 85 viel. Das sind auch vier Schleifen. Es sind wieder viele Aktionen. Nun, was wäre unser nächster
Schritt beim Bau unseres Kerkers? Nun, unser nächster Schritt
wäre, die Außenwände
herauszufinden , welche Außenwände und
welche Innenwände Damit meine ich also,
dass wir
bei diesen Wänden vergessen Und diese und diese
sind Innenwände, wohingegen diese oder diese
eine Außenwand ist Wir wollen, dass aus den
Innenräumen ein paar Requisiten, Kreuze, Tische, Stühle, Dolche,
eine riesige
Menge an Requisiten werden, die quasi den Weg versperren
werden quasi den Weg versperren
werden Aber mit allen, einigen von ihnen, können
wir so leben, wie Es wird ein
zufälliger Zufall sein. Geh, um das zu tun. Gehen wir zu unserem Labyrinth-Generator. Lasst uns das Gameplay beenden
und eine neue Funktion erstellen , die wir
Wind Exterior Walls nennen werden. Wir werden
herausfinden, dass das auch das Innere war, aber ja, das ist ein guter Name Nein. Nochmals, als Erstes benötigen wir all unsere
Dungeon-Koordinaten Und wir werden die Schlüssel holen. Natürlich
werden wir es von ihnen machen. Für jeden Loop. Und wir werden das Kreuz
neben jedem finden. Und wir werden uns eine Schleife
für jede Schleife
vom benachbarten Kreuz leisten . Nun wollen wir
fragen, ob das angrenzende Kreuz Teil des Kerkers
ist Also werden wir eindämmen,
fragen, ob es die Karte enthält Die Karte wird unser Kerker sein. Und wir werden einen Ast anlegen. Lassen Sie uns also mit
der Logik beginnen, dass wenn unsere Nachbarn, unser Nachbar, nicht
im Kerker sind,
es eine Außenwand ist es eine Außenwand die
in die Richtung
des Nachbarn zeigt, es ist eine Außenwand Um das zu tun. Wir werden im Grunde
die Wände brauchen. Noch nicht. Tut mir leid, finde
den richtigen Stapel, das ist das Plättchen
, das wir untersuchen. Es ist nicht der Nachbar. Es ist
die Kachel, die wir untersuchen. Das ist wichtig, weil
der Nachbar
der ungültige ist. Wir werden die Wände holen. Ein Array dafür. Wände. Dafür gibt es kein
Array. Es tut mir leid. Ich meinte,
wir brauchen das Kind. Die Dekoration hat die
Wände, nicht die Fliesen. Wir brauchen also ein Kind. Wir holen uns Dekorationen. Wir werden ein Kind bekommen. Und wir werden Dekorationen auf reinen Guss
umstellen. Und wir werden Wände bekommen, und jetzt haben wir die Wände. Aber neben den Wänden
brauchen wir auch die Richtung. Wir haben also dieses S EW und wir müssen das einschalten
, und wir werden
den Schalter finden. Das ist der entgegengesetzte Schalter. Wir können es hier umgekehrt machen. Hier. Ich verbinde das. Das sollte Nord sein, sollte Süd sein, sollte Ost
sein und Süd-West. Im Moment
wollen wir nicht das Gegenteil. Und wir werden jede Wand
durchbrechen. Wir werden
den falschen Zweig wählen , weil er dann
nicht zum Kerker gehört Und wir werden
ein Array erstellen. Nein. Um es auf variabel hochzustufen. Klicken Sie auf Variable heraufstufen,
wodurch diese Außenwände ausgeführt werden. Trennen Sie das und
bringen Sie die Außenwände mit. Ich werde diese Wand hinzufügen. Ich werde ein weiteres
Array mit dem Typ Directions erstellen. Also mache ich alle Richtungen. Ich gehe zur Montage der
Innenwand. Und ich werde auch diese Informationen
hinzufügen. Nur für den Fall, dass wir es brauchen.
Vielleicht wollen wir manipulieren. Vielleicht möchten wir das
statische Netz für alle Wände ändern. Vielleicht möchten wir einige davon
ändern. Vielleicht machen wir einen Zufallsgenerator, der einige von ihnen
so verändert dass sie
eine Form haben, die Va erzeugt, und dann werden wir prüfen, ob
diese Wand in einer Kachel
ist, die sich in einem speziellen Bereich befindet, oder
in einem isolierten Bereich, dem wir die Lavablöcke haben. Wie dem auch sei, ich denke, das ist
ein guter Haltepunkt. So bekommen wir
die Außenwände, und wir werden in der nächsten
Version weitermachen mit
ein bisschen mehr Code hier und dem Hinzufügen einiger weiterer
Grafiken. Auf Wiedersehen für heute Wir sehen uns beim nächsten.
46. Wanddekorationen: Hallo und willkommen zurück
zum Game Design Workshop,
Rail Engine Five, Procedural Dungeon Action at PS Creation Course In der letzten Lektion waren
wir bereits mit unseren Türen zum
Korridorbereich fertig Wir haben
die einzelnen Türen tatsächlich kopiert und eingefügt und nur ein paar
Dinge geändert. Eigentlich eine Sache Wir lassen die Türenanordnung
zum Hinzufügen von Türen laufen oder finden
jeweils benachbarte Türen heraus,
anstatt zu rennen, wenn
wir fertig sind, die ganzen Korridore zu durchlaufen Wir haben auch damit begonnen, die Funktion der
Außenwände zu definieren. Wir haben tatsächlich
alle Außenwände und deren Ausrichtung festgelegt
und sie zu einer Liste hinzugefügt. Und wie gesagt, wir
werden weiterhin ein paar weitere
Bilder zu unserem Labyrinth hinzufügen Oh, wir
gehen zu unserem Stapel. Wir gehen
zu unserem Viewport
und versuchen, diese
schreckliche Lücke hier zu verstecken. Tun Sie das Wir klicken einfach
auf eine Wand. Wir werden nur statischen Reis
hinzufügen. Netz. Eigentlich mussten wir nicht
auf eine Wand klicken. Wir mussten auf die Wurzel klicken. Wir machen es also nicht zu einer
Wurzel, sondern berühren es einfach. Diese Wände sollten
für die anderen Wände irrelevant sein. Es sollten keine Kinder sein. Sie sollten
Kinder der Wurzel sein. Nun, für dieses statische Netz gehen
wir zu
vegetationsähnlicher Vegetation über. Es ist, es ist dämonische Vegetation. Es ist ein bisschen ausgeglichen. Lass es uns neu skalieren. Mache die Rotation tatsächlich auch. Lass es uns irgendwo hier hinstellen, vielleicht ein bisschen vorne. Wir wollen nur diese Zeilen hier
verstecken. Oh, wir machen es ein
bisschen, vielleicht Lock's 1.1. Das ist ein bisschen weiter unten. Das ist der Teil, dass
es mehr Wimper, dicker ist. Ich werde näher an der Linie sein, also vielleicht sogar
über der Linie. Ja. Er. Wir werden
es kopieren und einfügen. Werde ich die Rotation ändern? Eins. Nochmals. Wie präzise es ist, liegt
an Ihnen, wann es gut aussieht, es ist minimal visuell, also werden wir nicht viel Zeit haben. Bildmaterial. Stimmt? Ich denke,
es ist gut genug. Geben wir ihnen jetzt ein paar Tags. Also diese Seite ist Osten. Also dieses E, diese
Seite, Nord-Süd. Also hat es ein S. Auf dieser Westseite. W, und diese Seite ist. In Ordnung. Gehen wir jetzt zu unserem MS-Generator und den
feinen Außenwänden. Da wir die Außenseiten haben, können
wir das einfach von unserer Kachel hier aus Wir müssen die Dekorationen nicht
machen, denn jetzt sind wir in Fliese Wir können, wir müssen es schaffen, um es zu
bekommen und wieder versuchen zu können. Wählen Sie das aus. als, nicht wofür. Ich bin mir nicht sicher, wie dieses Alter ist. Nein , ja West. Nein. Okay. Jetzt hacken Sie
auf allen herum. Gehen wir zum Drehbuch. Bringen wir sie, machen daraus ein paar Werte und
fördern eine Variable. Rufen wir sie auf D auf,
auch für Spurmüll. Und so behalten wir
den gleichen Fehler. Also das hier, gehen
wir zurück zu meiner
Generation und holen das weg. Am Ende. Es ist so und
wir werden und wir werden am Ende für. Die Wände, ich setze
das Spiel auf falsch. Ich gehe zurück zu einem Plättchen, sie wieder alle und
setze Hidden Game. Stimmt. Wenn wir jetzt spielen, sollten wir nichts
sehen, weil diese
Funktion nicht läuft. Also du weißt schon, die Übung. Jetzt haben wir unser Laub, aber wir haben es überall. Also der Grund ist, dass ich einfach alles auf
versteckt gesetzt habe, nicht wahr? Ja. Was wir tun wollen,
ist die Richtung zu und von dieser
Zeichenfolge herauszufinden. Lass uns gehen. Geh dieses Jahr, wie wir es
zuvor bei vielen Dingen getan haben. Ich werde
den Ast hierher stellen. Und wenn es wahr ist, dann zeig
nur das Laub. Jetzt ist es richtig. Unsere
Keule hat Laub Es ist viel mehr. Das ist der Grund , warum ich
das erzählen werde. Es wird gut werden. Wir sind mit diesem Detail fertig. Das nächste Detail, das wir tun
sollten, ist ,
die Innenwände durch Wände eines anderen Typs zu ersetzen. Oh, um das zu tun, gehen wir
zurück zu unserem Hauptgenerator. Gehen wir zu unserer Wars-Filiale. Bei uns finden Sie Ausgangswände. Die Wände, eigentlich unser
eigentlicher Zweig. Nicht unsere Stürze. Das heißt, das
gehört zum Kerker und wir werden eine weitere
Frage stellen Wenn es
zum Kerker gehört, ist es vielleicht auch ein Raum? Denn wenn es ein Raum ist,
wollen wir die Wand nicht verändern. Wir wollen die Wände des Raums haben. Nein, wir bringen die Alle Räume,
alle Zimmerrufe mit, was ein Endpunkt
ist,
und wir werden einfach sehen, ob er nicht dieses,
nicht die Nachbarn,
sondern dieses Element enthält , das ist der Schlüssel
, den wir testen. Also, das ist der Schlüssel für ein Zimmer. Wenn es ein Zimmer ist, machen wir
nichts. Wenn es kein Zimmer ist, holen
wir uns wieder
unsere Wände, die wir
hier haben . Wir gehen zu den Wänden, was ein Raum ist. Wir suchen
die richtige Wand in der Richtung, also sollten wir
das kopieren. Wählen Sie den Knoten. Oder hier. Das verbindet es mit dem Index der Futterschleife , die mit dem Nachbarkreuz
verbunden Und wir gehen zu
einem Cs u und diesen beiden und wir verbinden das
hier und wählen einen Zweig Jetzt
werden wir natürlich ein statisches Netz einrichten. Für das statische Netz werden
wir aus einer
zufälligen Ganzzahl im Bereich ect ableiten. wäre null bis
drei, weil wir
ein paar zusätzliche Dinge haben. Ich denke, einer wäre dieser
kombinierte Tisch. Das ist zu klein. Dieser 1938 A, drei, vier, benutze diesen. Als nächstes kombiniert 9d57 47a7. Ich bin mir ziemlich sicher, dass
wir noch mehr hatten. Okay. Hier sind wir
kombiniert 0d44 c17 Erinnere c17. Und wir werden einfach
die tatsächliche kombinierte
Wand verwenden , die wir haben Also von ihnen wird es nur eine Mauer sein. Nun, eine zusätzliche Sache,
die wir hier machen, aber wir werden es später erklären, wenn soweit ist, ist, dass wir,
wenn wir im Gameplay sind es soweit ist, ist, dass wir,
wenn wir im Gameplay sind
und unser Charakter hinter etwas
steckt, Lage sein sollten, eine
Figur unseres Charakters zu sehen. Und um das zu tun, werden
wir ein bisschen mit dem Wert
Atom Depth und all herumspielen, das nennt man im Grunde das Rendern
benutzerdefinierter Tiefe Deshalb werden wir jetzt nicht viel
darüber sprechen. Wir werden zu
gegebener Zeit darüber sprechen, aber wir sollten
die Optionen jetzt aktivieren , damit wir
nicht zurückkommen müssen. Wenn wir uns auf inneren Wänden befinden, wollen
wir im Grunde die
Unterseite unseres Charakters sehen, und einige der Vermögenswerte
sind etwas höher, sodass unser
Charakter durch sie verstummt Wenn wir das machen, holen wir
uns das statische Ich. Wir werden die benutzerdefinierte
Rendertiefe festlegen. Stimmt. Wir werden das hier
verbinden. Außerdem wollen wir den Wert für Schablonen
festlegen. Ich denke Null. Wenn nicht, werden
wir es später überprüfen Wenn die Zeit gekommen ist,
werden wir zurückkehren und diesen Wert
ändern. Wenn ich jetzt vorkompiliere und spiele, haben
wir unsere Boxen. Wir haben unsere anderen Boxen hier, die Innenwände wurden
etwas interessanter. Und unser Kerker hat ein paar Requisiten. Einige von ihnen überlappen sich ein
bisschen, und mir ist aufgefallen, dass das
auch mit den Ecken
einiger Wände passiert auch mit den Ecken
einiger Vielleicht müssen wir die
Wände etwas weiter nach außen schieben. Aber ich denke, es ist auch in Ordnung. Was wir tun könnten, um
dieses Problem zu beheben, ist einfach zu
unseren Dekorationen
und dem Standort zu gehen , zum Beispiel das auf X, das wäre vielleicht ein
Vier-oh-Fünf. Ja, dieser eine, vier oh fünf. Dieser. Warum? Ich habe diesen gemacht. Zu. Vielleicht behebt es das ein bisschen. Verdammt. Ja, die Ecke
ist nicht mehr sichtbar Hier ist sie der
hölzernen ebenbürtig. Gut, es ist in Ordnung. Hetils, ich denke, wenn wir
mit den Werten herumspielen, können
wir einen Wert finden, der für alles besser
ist Aber vorerst werden wir unseren M-Generator weiter
bauen. Es gibt noch viel zu tun. Wir werden mit dem nächsten
weitermachen. Wir sehen uns dann. Auf Wiedersehen.
47. Richtungspfeilanpassungen: Hallo und willkommen zurück zum
prozeduralen Kurs zur Engine Five von
Game Design Workshop Erstellung von Dungeon Action
Apes Zuvor haben wir
unsere wunderbaren Bilder
dieser Pflanzen
hier rund um unsere Blöcke hinzugefügt dieser Pflanzen
hier rund um Und wir haben den
Code für das Hinzufügen fertiggestellt, sie sichtbar
zu machen, wenn
sie sich an den Rändern befinden, wenn sie sich innerhalb der
Außenwände befinden, und wir haben tatsächlich die
Requisiten in den Innenwänden geändert,
auch um eine zufällige Variation
der Requisiten zu sein, auch um eine zufällige Variation
der Requisiten zu sein In diesem Fall werden wir
Folgendes tun: Ich drücke auf
Play, um das zu zeigen Wir müssen die
Begrenzungspfeile reparieren. Das bedeutet, dass einige
Pfeile hier korrekt sind, andere Pfeile nicht In diesem Fall
war fast alles richtig. Hier haben
wir zum Beispiel einen Pfeil, der nach hier
zeigt, aber wir können tatsächlich von hier aus
darauf zugreifen. Und das ist in diesem
Fall nicht oft passiert, aber es ist ein Problem. Wir sollten keine Pfeile haben
, die auf Orte
zeigen , zu
denen wir nicht gehen können. Wir reparieren das. Lassen Sie uns eine neue Funktion erstellen, die
das gesamte Labyrinth durchläuft und
testet, ob es zu Kollisionen
mit Line Trace Wir wissen also, ob es gehen kann
oder nicht. Da dies die
endgültige Form unseres DG ist, wird
sich auch das Layout
nicht mehr ändern. Lassen Sie uns also eine neue Funktion erstellen. Nennen wir das Dinge. Aros. Und tatsächlich werden
wir in dieser Funktion etwas anderes machen Nun, fast anders. Die Art und Weise, wie wir unsere Variablen
manipulieren werden, um unsere Richtungspfeile zu ändern. Wir werden ein
Bullionary und eine Richtungsmatrix erstellen, und weil das zwischen ihnen
korrespondieren wird, es eigentlich auch ein Punkt-Array Wir werden in der Lage sein, die Richtungen unabhängig
davon
festzulegen , wie viele
oder falsch bei einem Gleichstand sind Im Grunde ein bisschen das Gleiche
, was wir tun, immer
auf eine andere Art und Weise Es geht also momentan nicht um Optimierung
oder nicht. Es geht darum,
verschiedene Techniken zu zeigen. Oh, wir werden
unsere Dungeon-Variable bekommen. Wir werden unsere Schlüssel holen. Nur Schlüssel. Und wir werden jeden von ihnen
durchgehen? Weil wir den ganzen Kerker
durchgehen
und
Nachbarn finden werden, die direkt nebenan liegen Und wir werden
auch jeden von ihnen
durchgehen . So wie das hier. Hier kommt die erste Frage. Gehört dieser
Nachbar zum Kerker? A Wir werden dich fragen, ob
es darin enthalten ist? Der Kerker Und wenn nicht, dann werden
wir
eine lokale Variable erstellen, eine Buling-Variable, die ein Array sein
wird Ich rufe an, sagen
wir, diese Bullen. Und wenn das nicht der Fall ist, fügen
wir
natürlich Stürze hinzu . Falsch, weil es den Kerker
nicht enthält, also gibt es keinen Zugang dazu Aus dem Falschen. Wenn es wahr ist, werden
wir von Kanal zu Kanal suchen. Wir setzen auf
Kamera, nicht auf Sicht. Für den Startort werden
wir den Nachbarn
brauchen. Also werden wir
es im Kerker finden. Ein Ort. Wir werden tatsächlich etwas Z-Höhe
hinzufügen, S 25. Das ist unser Start und unser Ende ist der aktuelle
Block, den wir überprüfen. Ich werde das hier verbinden. Das haben wir schon einmal gemacht, noch einmal. Ich werde es einfach einfügen. Verbinde dich hier und
das ist das Ende unserer Leitung. Wir gehen zur Filiale. Ich
möchte das hierher bringen. Lies es vor. Hier draußen. Hier wird es
aus der Zweigstelle kommen. Wenn es auf etwas trifft, dann wiederum, wir haben keinen Zugriff, also wird dieses B ausgeschaltet sein, wenn wir nicht getroffen haben, ich habe es nicht getroffen, dann geht
es weiter, um an zu sein. Das ist der
Hauptunterschied, nicht wahr? Nein. Das nächste, was wir
brauchen, sind die Koordinaten. Aber wir werden ein anderes Array
erstellen. All diese Punkte oder
Anschlüsse oder was auch immer. Wird
vom Typ in Punkten sein. Okay. Und dann werden wir es von
beiden Ästen zu unseren Wänden hinzufügen. nicht wirklich wichtig, weil sie alle brauchen, auch
wenn es falsch ist, wir brauchen die Koordinaten,
um das auszuschalten. Und die Koordinaten
wären der Block, der wir sind, die Kachel, die wir überprüfen. Jetzt
brauchen wir endlich die Richtung. Wir werden
ein weiteres Array hinzufügen. Ich nenne es. Erektion. Wir
geben einfach einen E-Erektionstyp an und
fügen hinzu, dass Sie auswählen müssen Wir werden die
Auswahl von einem anderen Ort kopieren. Wir haben es hier. Finden Sie extern. Und wir werden den Index
davon für jeden Loop
für die Nachbarn
verbinden ? Denn basierend auf den Nachbarn haben
wir unseren Nordosten im Südwesten. Nun, das sind die
drei Variablen. Diesmal geht es anders
, aber wir haben eine Liste von Bionen, eine Liste von Punkten und
eine Liste von Richtungen Nein. Wie werden wir jedem Block sagen
, dass er die
richtigen Anweisungen geben soll? So wie wir es
jetzt eingerichtet haben ,
hatten wir keine eindeutigen, sondern viele Richtungen
in einem Array. Das bedeutet, dass
ich in jedem Block viermal die Linie als laufe. Das bedeutet, dass jeder Block viermal
denselben Endpunkt
erzeugt, aber das entspricht vier verschiedenen Richtungen
und vier verschiedenen Booleschen Also, lass uns das machen. Wir machen das, wenn
wir das alles hinter uns haben, also werden wir es
von den ersten vier Schleifen an aufrufen. Wir werden weitere vier
anrufen. Ups. Wir werden
unsere Endpunkte hier verbinden. Auf diese Weise ist es ein
bisschen einfacher. Ich denke, es sind mehr
Aktionen als andere Methoden. Wie dem auch sei, ähm, ich gehe in unseren Kerker, um unsere Kachel zu holen Nun, finde den ausgewählten
Schauspieler, den gespeicherten Schauspieler
, der in der Tabelle steht, und wir
werden uns eine Wegbeschreibung Und wir werden hinzufügen
Übrigens, wir werden es hinzufügen,
es ist sehr, sehr, sehr einfach. Wir werden unsere
Bionen-Variable bekommen, und wir werden unsere Variablen,
unsere Array-Variablen
Bulions und Directions, und wir werden eine Kopie davon
bekommen Und weil sie
unserem Array-Index entsprechen ,
trennen wir Ein bisschen Klippenüberquerung. Es ist in Ordnung. Und dann werden wir ROs zusammenzählen. Dies wäre die Funktion
, um alle unsere Richtungen festzulegen. Wir haben es angeschlossen. Nun, ich habe es natürlich nicht getan, ich habe es nicht getan. Repariere Pfeile. Kompilieren und speichern. Lass uns spielen und jetzt sind
die Pfeile repariert. Jede Richtung, in die
wir gehen sollen, hat einen Pfeil, jede
Richtung, in die wir nicht gehen können. Es hat keinen Pfeil. Großartig. Ich denke, das
ist es für diesen. Ich sehe
dich beim nächsten. Tschüss.
48. Ausblenden von Debug-Pfeilen und Erstellen von Fackeln: Hallo und willkommen zurück zum
Game-Design-Workshop und zum prozeduralen
Dungeon-Action-RPG-Erstellungskurs für
Real Engine Five Dungeon-Action-RPG-Erstellungskurs Zuvor waren wir mit
unserer Funktion mit festen Pfeilen fertig. Diesmal haben wir tatsächlich einen
anderen Weg gewählt. Wir haben einen Haufen Pulionen
und eine Menge Punkte
und Richtungen,
entsprechende Arrays und
unser Linienverfolgungssystem gespeichert und eine Menge Punkte
und Richtungen, , ob es einen Block gibt oder Und als wir damit fertig waren, haben wir unsere Punkte überprüft und
alle unsere Akteure dazu gebracht, die
entsprechenden Änderungen vorzunehmen Jetzt
sind wir quasi mit dem Informationsteil
der Einführung fertig Informationsteil
der mit
dem
Datenmanagement und allem. Eine letzte Sache könnte
sein, alle Pfeile zu verstecken. Gehen wir also zu unserer BP-Kachel. Gehen wir zu unserem Ereignisdiagramm klicken mit der rechten Maustaste und
erstellen ein Sturmereignis. Wir werden diesem Ereignis einen Namen geben. Alle Pfeile verstecken. Von hier aus nehmen wir
unseren Nordpfeil, wir nehmen
unseren Ostpfeil. Wir werden unseren
Westpfeil und unseren Pfeil nehmen. Eigentlich sollten wir die Kachelnummer
auch
bekommen , weil wir das verstecken
wollen. Nein, wir setzen ein und wir werden alles damit
verbinden. Und das Neue Verborgene wird wahr sein. Lassen Sie uns nun überprüfen, ob wir
in der Dekoration etwas Text haben. Glaube das nicht. Wir
müssen hier nichts verstecken. Wir werden kompilieren. Speichern und kompilieren. Immer
speichern und kompilieren. Dies ist das dritte Mal
, dass dies passiert. Und wir sind zurück und wir werden kompilieren
und speichern und kompilieren,
immer speichern und kompilieren ,
denn nur für den
Fall , dass es abstürzt, hätten wir speichern
sollen. Jetzt gehen wir zurück
zu
unserem Labyrinth-Generator erstellen eine neue Funktion, diese Holen wir uns unser Labyrinth. Dieses Mal werden
wir die Werte bekommen, weil die Werte
die Kacheln sind, und wir werden es in einer Schleife machen Für jede Schleife
werden wir Arrows aufrufen. Nennen wir
es jetzt in der Grafik. Pfeile. Kein Zurück und
Kompilieren. Lass uns spielen Und es muss Kinder verstecken. Und wenn wir es an Kinder weitergeben, werden die Text-Renderings
innerhalb der Pfeile ausgeblendet innerhalb der Pfeile Wir haben WS gesehen und
alles war übrig, und jetzt haben wir eher
eine Spielansicht Drücken wir die Taste LIT. Endlich ist es an der Zeit, Lit zu sehen. Jetzt fangen wir nicht mit der Sonne an, denn zuerst sollten wir das Labyrinth
beleuchten, denn wenn ich jetzt anfange,
mit
der Sichtbarkeit der Sonne zu spielen und
sie auf quasi eins einzustellen Wenn wir
uns dann das Labyrinth ansehen, werden
wir nicht viel sehen Es ist in Ordnung, aber
lassen wir es vorerst in einem, es ist dunkler, als es
sein sollte Stimmt. In dieser Lektion werden wir
jetzt damit beginnen, unser Labyrinth
mit einigen benutzerdefinierten Lichtern zu beleuchten
, auf die wir reagieren Wir gehen zum
Ordner Blueprints. Wir klicken erstellen einen neuen Ordner Nennen wir diesen Ordner Requisiten. Lassen Sie uns diesen Ordner aufrufen. Eigentlich können wir
den Aufzug auch hierher bewegen, und wir können die
große Truhe auch hierher bewegen. Und wir können das
BP-Intro auch hierher verschieben. Für die
Generation der Labyrinthe
sind das also die drei
Plättchen, die benötigt werden, und der Rest sind Requisiten, die
Dinge für uns erledigen Also klicken wir erneut mit der rechten Maustaste und
wählen Druckklasse Ich wähle Schauspieler aus. Es wird die BP-Veranda sein. Das wird eine Fackel
sein. Öffne sie, ich werde sie hier oben verankern Wir werden eine
strategische Suche brauchen. Wir werden
ein Punktlicht brauchen. Und natürlich werden
wir ein Partikelsystem benötigen. Für das Partikelsystem werden
wir die Kaskade verwenden,
weil unsere Partikel die
Kaskade für das Feuer sind Und das ist es von den
Komponenten, die wir benötigen. Ich gehe zu
den statischen Quests. Ich werde eine Veranda auswählen. Ich wähle die aus, die ich sehen
kann, weil es ist.
Das ist eine große Fackel,
ist eine kleine Fackel Ich werde
dieses Reihenbett-Rohr wählen. Reihe für Röhre. Alles klar? Also, wo ist es hier. Was wir brauchen, ist, das Partikel dem statischen Netz
zuzuordnen, also nur für den Fall, dass es
sich zusammenbewegt. Ich werde nicht
dasselbe mit dem Punktlicht machen
, ich werde dasselbe
auch mit dem Punktlicht tun. Und lassen Sie uns zuerst das
Partikelsystem auswählen. Lassen Sie uns die Vorlage verwenden. Wir wollen den P Fire. Es ist ein bisschen groß. Das sind vier. Stimmt? Ändere die Richtung, Stift. Ja. Ich habe 92 Achsen gewählt. Was ich für die Tonhöhe halte. Und dann gehe ich
zum Point Light. Eigentlich werde
ich es
so belassen, weil
wir später Code
erstellen werden , damit es so
aussieht,
als ob es flackert Moment wollen
wir es nur auf unseren Mist hinzufügen, darauf
in unseren Dungeon. wollen
wir es nur auf unseren Mist hinzufügen, darauf
in unseren Dungeon Gehen wir zurück
zum Mz-Generator und erstellen wir Nennen wir es P-Lichter. Und jetzt stellt sich die Frage, wo wir diese Lichter anzünden Der Ort, an dem
wir
sie spawnen werden , ist neben den Türen, links und rechts oder einer
von ihnen oder keiner von Manche Türen haben vielleicht
kein Licht. Also werden wir
die Raumfraktur brauchen. Also werde ich mir ein S-Zimmer nehmen. Ich werde mir ein Zimmer suchen. Und von dort aus
werde ich aufhören. Und davon werde ich ausbrechen. Von da an
werde ich weitermachen. Also machen wir das für
jede Raumkoordinate. Also müssen wir zuerst
den Schauspieler finden. Dafür brauchen wir unseren Kerker. Und von diesem Schauspieler brauchen wir
wirklich unsere Dekorationen. Schauspieler bekommen sogar Auszeichnungen. Und davon werden
wir Dekorationen bekommen und von hier aus werden
wir Dekorationen anfertigen Ich werde
einen reinen Schnitt daraus machen. Nun, F-Dekorationen, wir müssen
wirklich
T erstellen , ein paar Szenepunkte. Gehen wir zu unserem
Dekorationsplan. Gehen wir zu unserem Viewport. Ich werde hier
die Pfeile schließen
und eine Szene hinzufügen, die, wie Sie lesen können
, nur eine Komponente mit einer Transformation ist, die angehängt werden kann
, oder
es können auch andere Komponenten angehängt werden Es ist im Grunde nur ein Punkt, einen Punkt, den wir definieren können. Ich wähle die Szene und
verschiebe sie hierher. Vielleicht nach links nach rechts. Nur für diesen Fall werde
ich einfach in eine Tür ändern, um das zu finden, wähle ich die Szene erneut aus,
oder fast richtig. Ich werde es
hier platzieren, vielleicht hier. Fein. Ich werde
die Szene kopieren, duplizieren. Wir brauchen ein Kreuz und das
wird die Ostwand kennzeichnen. Das wäre Ostwand A. Links. Also EW L, und das
wäre dann alles in Ordnung. Also, lassen Sie uns
das zu dem machen, was es war. Ich wähle es hier aus, finde es im Browser, links hinter der Wand, und
ziehe es hierher. Ordnung. Ich hole
mir die Szenen. Ich werde sie duplizieren und ich werde sie
übertragen. Sie sind in der richtigen Position. Sie sind. Wenn wir spawnen, wird es
uns besser gehen. Ich
werde dem einen Namen geben R eins. Das wird W W L eins sein. Ich werde das Gleiche für
den Norden und Osten tun.
Ich werde hinzufügen. Um es hierher zu bringen. Und ich werde den
Offset auf dem anderen überprüfen
, der 140 war, für den nächsten war es 145. Es ist in Ordnung, wenn sie nicht symmetrisch
sind weil
einige von ihnen gespawnt
werden, andere
nicht Ich werde das Original wieder
auswählen, ist es. Hier ist es. Ich werde
140 hier hinstellen. Ich werde duplizieren, es ergibt 45. Und ich werde das North
nennen. Der Schlepper. Das ist Süden Das ist also die
Südwand, die Mauer links. Ich werde sie duplizieren. Und ich werde es tun und das wird die Wand eins links sein, die eigentlich entgegengesetzt sind. Das ist die richtige. Das ist der linke. Das ist auch passiert W. Der andere W. L. Nicht dass es wichtig wäre,
aber warum nicht? Oh, ich werde
kompilieren und speichern, und wir werden
es für diesen hier belassen. Wir machen eine Pause
und machen mit der nächsten weiter. Auf Wiedersehen.
49. Lichter-Fackeln: Hallo und willkommen zurück
zum Game Design-Workshop
und zum echten Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-ARPs für Engine Five prozeduralen
Dungeon-Action-ARPs Zuvor haben wir mit
unserer Lights Maze-Funktion begonnen. Wir haben den Anfang
des Algorithmus erstellt, welche Räume wir durchsuchen und wie wir die
Informationen von ihnen erhalten Und wir haben auch ein
paar
Punkte zu unserem Dekorationsplan hinzugefügt , um die Lichter anzubringen Gleichzeitig haben wir auch
unsere Pfeile versteckt und den Plan für
die Fackel erstellt Lass uns jetzt weitermachen. Gehen wir zu unserem Labyrinth-Generator und zu unserer
Funktion Labyrinth-Lichter Vielleicht lassen Sie uns vorher
noch einmal eine mühsame Aufgabe erledigen. Lassen Sie uns hier noch etwas hinzufügen , weil ich weiß, dass
es nicht die beste Zeit ist, aber es ist nicht die beste Zeit,
aber wir müssen es tun Und diese mühsame Aufgabe besteht darin, den Szenen das Zerren
hinzuzufügen. Nein. Das sind die Nordszenen. Also gehen wir an jedem Tag
ziehen. Wir werden hinzufügen. Wie Sie sehen können, kann ich beide
auswählen, und es wird es zu beiden
hinzufügen. Ich wähle
die südlichen aus,
ich füge einen Zug hinzu,
ich wähle S. Ich
wähle die östlichen aus,
füge den Zug E hinzu,
und die westlichen Teile auf dem Zug wählen W. In Ordnung,
die mühsame Aufgabe ist
vorbei, zurück zu
den interessanteren ich füge einen Zug hinzu, ich wähle S. Ich
wähle die östlichen aus,
füge den Zug E hinzu, und die westlichen Teile auf dem Zug wählen W. In Ordnung, die mühsame Aufgabe ist
vorbei, zurück zu
den zurück zu
den Nun, wie können wir feststellen,
wo die Tür ist? Wenn du dich erinnerst, wenn
wir unseren Wänden eine Eins geben und von jedem
von ihnen eine Schleife machen. Wir können die Schlepper holen. Und wir können überprüfen, ob der Artikel
darin enthalten ist. Dabei wird zwischen Groß- und
Kleinschreibung unterschieden Also, als wir diesen
Schlepper an den Türen angebracht haben, wie haben wir ihn hinzugefügt? Suchen wir diese Funktion, die sich in den Dekorationen
A
befinden würde und sie war groß D O R. Also gehen wir hier hin, Großbuchstabe D 00 R. Jetzt müssen wir nicht wissen,
wo genau die Tür ist, welche Richtung
oder was auch immer Wir können einfach nachschauen, welche
Tür ein Türschild hat. Und das,
weil wir wissen, dass der erste Schlepper unser
Nordost-Südwest ist Wir können P auf Null setzen,
was der erste Zug ist. Und dann brauchen wir eine
Reihe von Lichtern. Gehen wir also zurück zu den Dekorationen. Noch ein paar mühsame Aufgaben. Lassen Sie uns alle auswählen. Die Reihenfolge spielt keine Rolle, da wir mit Schleppern fahren,
ich glaube, das sind alle. Lass uns ein Array erstellen.
Kopieren. Er ist dieser. Ops. Und es sind acht, also ist es richtig, denn
vier Seiten, zwei auf jeder, acht, werden für diese beiden Libs
werben. Ts, oder vielleicht Türlichtschlitze, weil wir vielleicht
noch mehr hinzufügen könnten, wer weiß? Wir werden kompilieren und speichern. Gehen wir zurück zu
unserem Labyrinth-Generator und aus unserer Dekoration werden
wir
Türlichtschlitze Ich gehe zu jedem. Wenn es nicht ist, wenn es die Tür
enthält, werden
wir das Bauteil entfernen. H-Zug hat tatsächlich
einen Zug,
der der
Nullzug an unserer Tür sein wird Ich gehe zur Filiale, zur Station Loop. Und jetzt, weil wir das Licht drehen
müssen, weil das Licht von selbst eine
bestimmte Drehung hat. Wir könnten ein
ausgeklügeltes System mit Linienspuren und/oder
fett gedruckten Koordinaten verwenden. Aber nein, was wir machen werden,
ist, die
Werte selbst zu bestimmen, und was welcher
Drehung entspricht. Weil wir im Grunde nur vier
Rotationen haben. Jeder. Was wir also
tun werden, ist, basierend auf dem Namensschild zu
wechseln. Und das nur
, wenn das wahr ist. Wir werden vier Fälle haben. Ich werde
die Hinrichtungsnadel entfernen und die Fälle
wären unsere Anweisungen. All das wäre Nord, Süd, Ost und West. Speichern, speichern und kompilieren. Jetzt erstelle ich eine benutzerdefinierte,
eine lokale Variable, nämlich Licht, und sie wird vom Typ Rotator sein Dann stelle ich es so ein, dass
jeder von ihnen Südwest ist. Und die Werte sind
-90 für Nord, 0490 für Süd, Null für Ost und 180 für West Dann werde ich einen
Zweig aufstellen, denn wie gesagt, einige von ihnen werden ein Licht haben, andere werden
kein Licht haben, und ich werde es tun und ich werde Schauspielunterricht
geben werde den Löffel teilen Ich werde den Löffel teilen und
das Licht verrotten Zur Rotation.
Und für den Standort brauchen
wir nur den Ort, das Wort Ort unserer Szene. Also werden wir den
Standort ermitteln und ihn hier verbinden. Und wir sollten die Klasse wählen, die Klasse wäre Fackel Eine weitere Sache, die wir brauchen, ist etwas, das wir schon lange nicht mehr
benutzt haben. Wir brauchen die Schauspieler zum Zerstören. Wir werden
diese Liste um die Lichter erweitern, denn wenn wir
ein neues Labyrinth bauen, sind
die Lichter in der Leistung tatsächlich
teuer Also werden wir
sie löschen. Lass uns spielen gehen. Lass uns sehen, was eigentlich. Lass uns diese Funktion
am Ende dieser Zeile hinzufügen. Das Labyrinth leuchtet und
jetzt können wir spielen gehen. Und injizieren und wir haben Lichter. Sie sind zu weit weg. Einige von ihnen sind zu weit weg,
andere nicht. Das sollte gehen. 70, sie sind auch groß. Gehen wir zurück zu den Dekorationen. Lassen Sie uns sagen, um welche
Punkte es sich handelt. Das sollte 370 sein, das war in Ordnung, ich denke, 370 das Warum? -70. Das scheint intern zu sein Weg, lassen Sie uns sie zuerst ein
bisschen kleiner machen. Gehen wir also tatsächlich zum
Laichen von ihnen über. Wir müssen
sie hier nicht kleiner machen. Wir können sie einfach
kleiner machen, allgemein. Wenn das Männchen aufleuchtet,
wenn wir es spawnen, reduzieren
wir die Skala um 2,5 55. Lassen Sie uns
noch einmal überprüfen, wie sie aussehen. Sie sind ein bisschen niedrig und sie sind ein
bisschen weit weg. Wir können den Verwandten hier nicht sehen. Wir können den
Verwandten von hier nicht sehen. Natürlich können wir nicht,
wir werden zu den Dekorationen
gehen müssen und zwar
mit den Werten hier. Ich nehme 20,
die andere nasse. Gib alles für T.
Dieser hier ist für 20 drin. Welcher war der
Süd-Süd-Ort, ich glaube, er war zu weit weg. Ja, für 20. Und dieser hier auch 20. Es gibt welche, die wir nicht angerührt haben Sind da zu viel drin Vielleicht sollten wir hier
alles auf 30 ändern. 160 leicht mit niedrig, also ist es 81 25 oder 30 oder 25280, es ist in Ordnung Sind wir der andere? Es ist fünf. Das ist die schlimmste mühsame Aufgabe. Es gibt bessere
Möglichkeiten, dies zu tun. Aber das haben wir gerade
gewählt. Reparieren wir alles, alles ist repariert
und Südwasser. Fein. Kompilieren und speichern,
und lassen Sie uns erneut testen. Ich finde, das ist eine nette Menge. Auch wenn sie vielleicht
ein bisschen 425 sind. Wenn du willst, kannst du es auf 425
ändern, es passt vielleicht ein
bisschen besser, aber ich glaube nicht, dass es sichtbar sein
wird. Also, ich denke, das ist
es für diesen. Ich sehe
dich als Nächstes. Auf Wiedersehen.
50. Fackel-Flicker-Effekt: Hallo und willkommen zurück
zum Game Design-Workshop und den Entwicklungs-Cs der Engine Five
Procedural Dungeon Action APs. Zuvor haben wir unsere
Fackeln zu unserem Labyrinth hinzugefügt. Wir haben den Code in Maze
Lights erstellt, um unsere Lichter zu spawnen. Wir haben das Wall-Array verwendet
, um das Komponenten-Tag zu ermitteln, ob es sich um Nord-Süd- oder Wir haben auch geprüft, ob es
sich bei der Wand um eine Tür handelt, denn
wenn es keine Tür ist, zeigen wir ein anderes Licht. Und wir verwenden einige
voreingestellte Lichtrotationen
und auf der Grundlage eines Banns für ein Bleant, ein
Bleion, haben wir unser Licht
erzeugt Und dann haben wir die zu zerstörenden Schauspieler
hinzugefügt. Wir arbeiten ein bisschen
damit, wo es ist und
wie es ist , tut mir leid,
falscher Plan, die Dekoration,
durch unseren
Dekorationsplan, und wir verwenden die Szenepunkte, um diesen Ort festzulegen Lassen Sie uns jetzt ein
bisschen mit dem Licht spielen. Oh. Lass uns tatsächlich zu unserer BP-Fackel
gehen. Dave, weil es nicht gespeichert ist. Speichere eigentlich alles. Und lass uns zu unserem Point Light gehen. Nun habe ich einige
Werte im Kopf, die wir getestet
haben, und wie
sie im Labyrinth aussehen Ich werde sie benutzen. Die Intensität würde 258o4 betragen. Also 25.804. Und der Dämpfungsradius
wäre zwei oder 37437. Unsere
Lichtfarbe wäre nun x linear F F 58 Jetzt können Sie wählen
, welches Licht Sie möchten, aber für uns hat das funktioniert Und lassen wir die
Quelle 30 benutzen. Und wir werden die
Auswahl von Schattenwurf aufheben. Es ist also ein
bisschen optimaler. Wenn Sie möchten, wenn Ihr Computer damit umgehen
kann,
können Sie dies eingeschaltet lassen. Wir werden die Lichter nicht so
optimieren, unsichtbar sind, wenn wir zu weit weg
sind. Wir überlassen das einfach dem
Motor, was auch immer er braucht. Aber wir werden
den zitternden Schöpfer spielen. Wir werden anfangen zu spielen und wir werden eine Zeitleiste
hinzufügen Mit wem kann ich mit den Lichtern zusammen sein? Wer ist die Königin mit den Lichtern? War es Barbadi? War es Imbo? Wie dem auch sei, nur eine South
Park-Referenz, egal. Oh, was ist ein Zeitplan? Kurz gesagt, wäre
ein Tool, mit dem wir Variablen über
einen bestimmten Zeitraum
manipulieren können . Wie machen wir das? Nun, wir
doppelklicken auf die Timeline und wir können sehen, dass sie einige Optionen
hat. Was wir verwenden werden, ist die Spur
eines Floats. Die Trucks mit Vektoren und
Event-Tracks und Farbspuren. Aber was wir brauchen, ist ein Festwagen. Jetzt, in diesem Truck, werden
wir umschalten und
klicken und ein paar Punkte sammeln. Lastschrift. Ich denke, das sind
genug Punkte. Also unser erster und letzter Punkt also Zeit Null, sollten Wert Null
sein. Und wir werden die
aktuelle Zeitlänge verwenden, die fünf ist, und sie dort belassen, also bei Zeit fünf, der Wert
wird wieder Null sein. Hier gibt es noch andere Optionen, aber die Option, die wir
benötigen, ist die Looping-Option Das heißt, wenn
unsere Timeline abgespielt wird, wird
sie immer und
immer wieder abgespielt, was auch immer Nein. Was ist dieser Flow Track , den wir in diesen Punkten erstellt haben Diese Punkte sind also
im Grunde unser Alpha-Laufwerk, was bedeutet,
dass sie uns einen Wert von 0-1 geben Wir sollten nicht über
eins und zwei minus eins gehen. Aber es sollte nicht dieser Punkt sein. Lassen Sie uns diesen Punkt ändern. Lasst uns zwei Tiefpunkte haben. Und dann machen wir
die Lichter, andere Stellen,
machen es wie sie, als wäre es weitläufig, auch wenn es nicht
so ist,
ich weiß nicht, ob das gut aussieht Wir brauchen nicht wirklich
eins und minus eins,
und wir können es
überall haben, wo wir wollen, aber wenn wir harte, große Werte angeben, wird
das Licht exponentiell zu stark ansteigen usw. Nein, vielleicht ist das in
Ordnung. Vielleicht ist es das nicht. Wir werden sie alle auswählen und
mit rechten Maustaste klicken
und die automatische Funktion
verwenden, wodurch
sie ein wenig gekrümmt werden. Es wird also nicht sofort geschehen. Wir werden es so lassen, wie es ist, und wir werden es
überprüfen, wenn wir unsere Codierung hier
abgeschlossen haben unsere Codierung hier
abgeschlossen Also werden wir das Punktlicht nehmen und wir werden Licht einschalten. Wir werden auch
die Intensität festlegen. Und wir werden auch die Dämpfung der eingestellten Dämpfung einstellen Das sind die Variablen
, die wir auf der Zeitleiste
ändern werden , was ziemlich
aufwändig ist Aber für uns
wird es in Ordnung sein. Wir haben nicht so viele
Dinge in unserem Kerker. Oh, das ist die Rückkehr
unseres neuen Tracks. Wir haben es nicht geschafft, wir haben es geschafft. Den Namen und den Namen Alpha. Das ist unser leichtes Alpha. Wir lassen lineare Farben, wir lassen und noch eine andere
schweben. Was ist ein B? A oder
B geht von Wert
A zu B, basierend auf einem Alphawert. Alpha-Laufwerk, das wir erstellt haben. Verbunden. Hier hier. Und jetzt klicken wir auf eine Farbe, die wir tatsächlich auf das Punktlicht
kopieren können. Ich gehe einfach in die Nähe des Punktlichts und kopiere es hierher und füge es ein. Nun, für den zweiten, klicken
wir darauf und
tippen das F F O mit mehr Orange ein. Wir werden
sie vielleicht später ändern, wenn sie nicht gut aussehen. Wir werden sehen. Und was die Intensität angeht, überschreiben
wir diese 25.000 Um ehrlich zu sein, schien es viel zu sein. Es wird also von 5.000 steigen. Ich habe es auch auf
5000-6.000 gestellt. Und vom Set im Umkreis von
600-800. Diese überschreiben tatsächlich unsere Einstellungen
hier. Das müssen also die
richtigen Werte sein. Ich werde 600 hier hinstellen. Lassen Sie uns kompilieren und speichern. Lass uns spielen, wie sie aussehen. Zu viel Veränderung.
Eine zu große Veränderung. Gehen wir also zurück zu unseren Lichtern. Diese Farbe ist zu weit weg. Wählen wir einen in der Nähe. Vielleicht hat das Orange
Cancel hier seinen Sitz. Mal sehen, nein. Es wird ein bisschen zu gelb, zu sehr. Es ist auch ein bisschen zu schnell. Aber es ist in Ordnung. Ich
denke, es ist in Ordnung. Wenn du willst, kannst du dich an den Werten orientieren und es besser aussehen lassen. Weitere Dinge, die wir
in diesem Stil in diesem
Blueprint tun können , wären, zum statischen
Netz zu wechseln und die Option „Überlappungsereignisse generieren“ zu deaktivieren , da wir sie nicht benötigen Schalten Sie die Kollision
komplett aus. Wir wollen es nicht. Und von den Lichtern, ich glaube das war's mit
dieser Art von Licht denn jetzt werden wir noch ein paar andere Lichter
hinzufügen.
Lass es mich dir zeigen. Wir haben diese
wunderbaren Lichter hier, aber wir müssen im Labyrinth auf
den Korridoren laichen Lassen Sie uns also zunächst einen Plan
erstellen, um dieses statische Durcheinander hinzuzufügen . Wir
werden zum Inhalt übergehen Wir gehen zu den Bauplänen,
wir gehen zu den Requisiten und wir klicken mit der
rechten Maustaste und erstellen einen neuen Schauspieler
vom Typ Blueprint-Klasse und nennen ihn BP, Ich öffne das und füge ein statisches Netz hinzu, das als Flurlicht dienen wird Lass uns Mesh finden. Wir waren gerade dort.
Ich werde das benutzen und wir haben unser Licht. Um es hübscher zu machen, fügen
wir ein paar Dinge Fügen wir
noch etwas statische Asche hinzu, die keine
Laterne sein wird. Nennen wir das Schild. Und lassen Sie uns noch mehr hinzufügen. Sh. Nennen wir diese Art
ein anderes statisches Netz. Nennen wir das oder Unparent
,
weil es übergeordnet ist Nennen wir das Landposten. Ich glaube,
wir nennen es Schild. Ich werde es herbringen. Ich werde es wählen und
dann werde ich es
hierher bringen und ich
werde es ändern. 2.5 weil es zu groß ist, vielleicht ein bisschen größer. 7,7 ist fünf. Ordnung. Ich werde es ein bisschen aufhängen. Jetzt bringen wir die Schwerter. Wir werden
die statische Methode wählen. Ford Sword, nimm es raus. Es muss hier sein. Hier ist es die Waffe. Ich werde es hier hinzufügen. Wir
werden es auch auf 2.7 setzen. Gale dreht es ein bisschen. Ich bring es her. Gib es auf. Ich bin hier, ich hole
das zweite Schwert. Ich bin traurig. Ich habe die Netzwaffe nicht eingesetzt. Nochmals 0,7. Ich werde
es ein bisschen drehen. Ich will es nicht im Boden haben. Sagen wir es
so. Um es hier hinzuzufügen. Und in der VM-Grafik zu Beginn des Spiels werde
ich
auf jeden von ihnen
verweisen. Und ich werde sehen. Spiel oder jedes von ihnen separat. Ich
werde sie verbinden. Jeder von ihnen zu einem versteckten
Spiel, und ich werde ein Spiel machen. Nun, was ist eine Sequenz? Eine Sequenz ist eine Möglichkeit, unsere Aktionen ein
wenig zu organisieren. Aber wir müssen darauf achten,
dass selbst wenn dort Null steht, dann eins, dann zwei, das nicht heißt
, dass sie ausgeführt werden Es wird sie der Reihe nach ausführen, aber es wird nicht warten, bis
eine Ausführung abgeschlossen In dem Moment, in
dem
es die erste ausführt, wird es die zweite ausführen, und dann werden wir die dritte ausführen. Es wird nicht warten, bis die
Ausführung abgeschlossen ist. Ich wiederhole, denn wenn ich hier
ein bisschen Mathematik habe, zum Beispiel,
dass, sagen wir, Zeile
drei sie benötigt,
dann ist die Rechnung wahrscheinlich
nicht abgeschlossen, wenn
Zeile drei läuft Im neuen Modus „Verborgen“ wähle
ich „Zufall b“. Somit ist für jedes Licht eine zufällige Kombination
dieser Requisiten Ich denke, das ist es für diesen. Beim nächsten werden
wir sie der Karte hinzufügen. Tschüss fürs Erste, sie kümmern sich darum.
51. Korridor-Lichtsystem: Hallo und willkommen zurück zum
Game Design Workshop und dem Kurs zur aus Engine Five Erstellung eines
echten prozeduralen
Dungeon-Action-Rollenspiels In der vorherigen Lektion haben wir unseren
Ridor-Lichtplan hinzugefügt. Wir haben ihn geschaffen Wir haben das statische
Netz aus Licht,
Schild,
Schwert und so weiter hinzugefügt . Und zu Beginn das Spiel. Wir haben auch Code erstellt , um einige
der Requisiten sichtbar zu machen, andere unsichtbar.
Es wird zufällig sein Wir haben auch eine
Funktion mit einer Zeitleiste hinzugefügt, tut
mir leid, in der BP-Taschenlampe, im Startspiel,
einen kleinen Code mit dem wir im
Licht unserer Fackeln
spielen Es sieht also aus wie die
Knebel oder so. wir nun damit fort, dem Labyrinth
unsere Korridorbeleuchtung hinzuzufügen Labyrinth
unsere Korridorbeleuchtung hinzuzufügen Oh. Was wir tun werden, ist, zuerst die einfachen
Regeln aus dem Weg zu räumen, und dann werden wir
etwas komplexeres tun. Oh, wir werden
die Korridore brauchen , eine Reihe
von Strukturen Es sind also ST-Korridore. Okay, von da an gehen wir
für jede Schleife. Und das Erste, was wir brauchen,
ist die Struktur zu durchbrechen. Wir haben also unsere Koordinaten. Anhand unserer Koordinaten müssen
wir wissen, ob diese Länge größer als eins ist. Denn wenn es sich um eine einzelne Kachel handelt, sollten
wir kein Licht hinzufügen. Es wird nicht gut aussehen. Da wir nicht wissen,
wie viele Kacheln es gibt, können wir eine Viererschleife erstellen, nicht eine für jede Schleife, sondern eine Viererschleife mit
dem letzten Index als letztem Index
der vier Schleifen. So viele sie auch haben, es ist
das letzte Mal, dass
Sie diese vier Schleifen ausführen. Aber das wäre
unser erster Teil. Wir erhalten die
Korridorräume, die Koordinaten jedes Korridors, wie viele es sind,
und wir prüfen ob es mehr als einer ist, und wenn es mehr als einer sind, sind
wir dafür, von
Null bis zum letzten zu schleifen Als Nächstes sollten wir überprüfen, ob es sich um
einen speziellen Raum Also werden wir fragen, ob sich unsere aktuellen Positionskoordinaten in unseren Spezialräumen befinden. Um das zu tun, werden wir die gewünschten
Koordinaten kopieren. Und wir werden das tun
, indem wir diesen Index
verwenden
, der von Null bis zum
letzten Index dieses Arrays reicht. Aber das entspricht korrekt. Geht nicht, wenn es ein Array-Objekt
enthält, das ist der spezielle Raum. Besondere Kacheln. Das
wäre das Aufzugsplättchen, das wäre das Kastenplättchen, das Truhenplättchen
und das wäre. Das sind die Steckplätze.
Im Grunde wollen wir kein Licht spawnen Nein. Jetzt ist es Zeit für eine etwas kompliziertere
Regel. Lass mich Paint öffnen. Was wir haben werden, sagen
wir, in unserem Netz ein Labyrinth Mal sehen, ob wir hier drüben
ein Licht spawnen. Wir werden
eine Kiste darum herum bauen. Fragen Sie, gibt es
Licht in dieser Kiste? Bevor wir es spawnen, werden
wir uns fragen, ob in dieser Kiste Licht ist Denn wenn
in dieser Kiste ein Licht ist und wir hier sind, sollten
wir nicht irgendwo spawnen. Das wird uns helfen,
ein bisschen
besser abzugrenzen , wie unsere Lichter in unserem Labyrinth
erscheinen werden Also, lass uns das machen. Lass uns sehen,
wie wir das machen werden. Wir werden für unser Beispiel etwas verwenden , das Multi Baseline,
Multibox genannt , das Multi Baseline,
Multibox genannt wird. Lassen Sie uns wegen des
ersten Unterschieds anrufen. Nicht die Multi-Eins, sondern die Box Eins zwischen der
Spur und der Box. Die Box ist wie
die Kollisionsbox. Spuren können in
Kugeln, Boxen oder Linien aufgetragen werden. Und sogar wir können mit
ein wenig Aufwand
einige benutzerdefinierte Formen erstellen . Aber vorerst
werden wir eine Box verwenden. Und was ist das Mehrteilige? Es bedeutet, dass es viele Dinge essen und sie in einer Liste
festhalten kann viele Dinge essen und sie in einer Liste
festhalten Aus diesem Grund ist unsere
Ausgangsheizung vom Typ Array. Es ist ein Array-Container. Nein, wo fangen wir an? Im Grunde nehmen wir
nur den Schauspieler von hier, also
suchen wir ihn im Kerker Gin-Map, also bekommen wir die aktuelle
Kachel, die wir gerade testen. Ich werde den Standort des Schauspielers herausfinden. Diese Art von Kriegsschauplatz
vom Typ Dan. Der Grund dafür ist,
dass, wenn wir den Standort des Schauspielers ermitteln,
es immer in der Welt ist, weil der Schauspieler
ein Teil der Welt ist, wo wir, wenn wir
von einer Komponente ausgehen, Kriegsschauplatz wollen, oder
relativ zum Standort des Schauspielers wollen, weil eine Komponente dem Schauspieler
gehört, dass der Schauspieler zur Welt gehört. So
legen wir hier den Anfang fest, und das
wird auch das Ende sein weil wir es nicht
verschieben werden. Es geht nur um ein Häkchen,
schau mal, was um ihn herum ist. 00 die halbe Größe, wir werden
die Werte 800, 801 verwenden. Deine Orientierung ist in Ordnung. Sichtbarkeit, wir
werden die Kamera überprüfen und das war's
für unseren Multibox-Trace. von unseren Wärmeergebnissen gehen
wir nun zu jedem von ihnen. Aber bevor wir weitermachen, müssen
wir
eine lokale Variante schaffen, die quasi ein Verbot
sein wird. Nennen wir es. Ich nehme Typ B. Bringen
wir es her
und drehen es um , bevor
wir mit Loop anfangen. Nun, was wir tun werden,
ist unser Wärmeergebnis zu zerstören, jedes unserer Wärmeergebnisse,
weil dieses Sal-Array, wir brechen jedes von ihnen. Was wir tun werden, ist zum Wärmebildgerät zu
gehen und nach dem Kurs zu
fragen. Wir werden Unterricht nehmen. Und wir werden
prüfen, ob seine Klasse unseren Flurlichtern entspricht. Branch, korrigiere das. Ich werde das hier hinstellen. Bring das klein rauf. Ich kann das
schließen, damit es ein bisschen besser
aussieht. Und jetzt, wenn es ein Korridor ist, dann werden wir
die Lichtnote drehen, die gefunden wurde
: Das
könnte tatsächlich mit Pause gehen, jeder mit Pause, weil es
eine Aktion ist , dass, wenn wir
das Ding gefunden haben, das wir suchen, es kaputt gehen sollte. Nein, ich werde
das mit der Pause verbinden. Aus dem falschen Grund müssen
wir nichts tun. Und wenn es fertig ist, fahren
wir zum Bus. Eigentlich brauchen wir hier eine Filiale. Sonst macht das nichts, wenn
wir keinen Zweig benutzen. Wir werden
das Licht bringen, aber gefunden. Wenn das wahr ist,
werden wir das tatsächlich zuerst überprüfen, lassen Sie uns das Licht
auswählen. M-Licht, Pad-Licht. Und dann werden wir Licht
hinzufügen , das
funktioniert nicht so, aber wir müssen Schauspieler dazu bringen, es
zu zerstören und hinzuzufügen. Nichts, was wir spawnen,
sollte auf der Karte bleiben. Für die Transformation teilen
wir das auf und verbinden den
Standort unseres Schauspielers Jetzt haben wir die Lichter hinzugefügt. Lass uns sie in unserem Spiel sehen. Sie existieren nicht oder
etwas lief nicht gut. Lass es uns überprüfen. Lass uns zu unserer Veranstaltung
gehen. Die Korridore. Sie sind größer als eins, ja, oder Loop plus Index davon, und wenn es zu speziellen Kacheln gehört, wenn es nicht
zu speziellen Kacheln gehört, immer die kleinen Dinge Jetzt habe ich
winzige Lichter gesehen. Und lassen Sie uns das reparieren. Drücken wir Stopp. Gehen wir
zu unseren Flurlichtern und erhöhen wir die
Höhe auf zwei. Ich werde
den Schild wieder bewegen. Mein war vielleicht der
Richtige oder auch der Typ. Ich werde das hier hinstellen. Die andere Sorte. Leg
das hier hin, spare es dir. Wir werden kompilieren und speichern. Wir werden spielen. Das Licht sieht aus. Sieht gut aus. Wir müssen ein paar
Schwerter bewegen, aber das ist in Ordnung Dieser hat zwei Schwerter. Dieser hat sozusagen einen Schild. Löcher. Warum
gibt es jeweils zwei Löcher. Halte zwei. B, es ist
zufällig und es kann passieren Vielleicht können wir der zweiten Sorte einen
Zweig zuordnen. Verbinde diese zufällige Kugel hier, damit wir die zweite Sorte
etwas seltener machen. Kompilieren und speichern, die
Sohlen auch ein bisschen senken. Es ist zu hoch. In Ordnung. , ich finde
das in Ordnung, weil ich das ein bisschen rund
gesehen habe. Ich werde es ein
bisschen erhöhen. Neige es ein bisschen mehr. Wir wollen niedriger. Ich denke, niedriger ist vielleicht in
Ordnung, vielleicht auch nicht. Ich verstehe nicht, wir wissen es nicht. Die Lichter. Es sieht also gut aus. Ich meine, wir werden Pi
mit Aussicht haben, also fast in Ordnung. Ja, ich denke, sie sind okay. Aber das Einzige, was
fehlt, ist das Licht. Also lass uns das Licht hinzufügen. Gehen wir zum Bauplan. Gehen wir zum Laternenpfahl , weil sie
Kinder des Laternenpfahls sein werden, und ich werde auf Hinzufügen drücken Wir
wählen Punktlicht. Das ist ein riesiges Punktlicht Bringen
wir es hier auf die Lampe, ändern wir die Einstellungen auf Lumen und verwenden dann GS 500 Und die Farbe sollte für die 97 A sein. Sieht gut aus. Jetzt sollte das
Dämpfungsradio sein. 800 und der Quellenradius 50 und der weiche Radius 50 Und wir
lassen den Schattenwurf auf uns wirken, weil ich denke, dass das in Ordnung ist. Jetzt werde ich
dieses Licht duplizieren und es
hierher verschieben, wenn beide Lichter eingeschaltet sind. Ich werde kompilieren und
speichern und dann sehen wir es uns an. Ich. Wir haben
Licht in unserem Labyrinth, wird immer lebendiger,
sieht eher aus wie ein Spiellevel Richtig. Ich denke, das
ist es für diesen. Ich sehe
dich beim nächsten Mal. Tschüss.
52. Fallenmechanik und Schadensystem: Hallo und willkommen zurück zum Game Design Workshop
Real Engine Five Procedural Tangent Action
RBC Creation Course Zuvor haben wir Armas ein
paar Lichter hinzugefügt. Eigentlich haben wir
alle Lichter hinzugefügt, Mae. Ähm, sie sind ein bisschen kastenförmig, weil
sie Schatten werfen. Aber ich lasse es lieber
so, anstatt keine Schatten zu
werfen oder
sie ein paar Flüge zu platzieren Wir könnten dem
entgegenwirken, indem jeder
Seite
ein Punktlicht platzieren oder auf andere Weise. Aber vorerst lassen
wir es
so, weil wir noch ein paar Dinge
hinzufügen werden. Wir werden etwas Nebel hinzufügen. Wir werden
Nachbearbeitungseffekte hinzufügen. Nach all dem können
wir überprüfen, wie
wir die Lichter reparieren können. Jetzt
gehen wir zu
unserem Labyrinth-Generator und es ist an unserem Labyrinth-Generator und es ist Zeit,
etwas Requisitenhaut mitzubringen. Also werden wir eine Funktion
erstellen. Nennen wir diesen Requisitenbesitzer. Gehen wir zum
Hauptdiagramm und rufen es auf. Ich erinnere mich, als ich sagte, als wir den Aufzug
bauen, werden
wir ihn nicht dorthin verschieben Gehen wir zu unserem
Aufzug, um hier zu sein. Lass uns das von hier aus streichen. Gehen wir zu unserem
Posponer und fügen es ein. Das
Gleiche müssen wir auch für unsere Brust tun. Komm her. Ich hole mir diese Knoten, wir schneiden
sie aus, kontrollieren C und fügen sie mit
Kontrolle V ein. Jetzt. Lasst uns eine Requisite erstellen
, die wir auf den meisten
Kacheln des Dungeons
spawnen werden meisten
Kacheln des Dungeons
spawnen Wir werden in Korridoren
spawnen und es wird Wenn der Spieler darauf tritt, werden
wir Schaden nehmen Wir werden
zu unseren Inhalten gehen. Wir gehen zu unserem
Blueprints-Ordner und unserem Prop-Ordner, klicken mit der
rechten Maustaste und erstellen einen neuen Ordner, der BP p heißen wird
. Jetzt öffnen wir ihn.
Dafür hier drüben. Und bevor wir mit unserer Falle
weitermachen. Dies ist das erste
Mal,
dass wir unseren
Charakter ein bisschen berühren müssen . Also gehen wir zum Inhalt über. Wir gehen
zu unserem Top-Down, wir gehen
zu den Bauplänen und öffnen unseren PP-Charakter von oben nach unten Und wir müssen nur
eine sehr einfache Sache tun. Das Gleiche, was wir
mit den Ziehern an den Wänden gemacht
haben, müssen wir für die
Kapselkomponente des Players tun Also wählen wir die
Kapselkomponente aus, gehen zu ihren Details
und gehen zu den Ziehereien über. Und füge das Tag oder den Spieler hinzu. Und warum machen wir das? Der Grund dafür
ist, dass wir zum Beispiel, sagen wir, für unseren
Spieler
einen Ich-Me-Angriff haben werden , ich, ich. Ich denke, es ist eine korrekte
Aussprache. Also werden wir einen Ich-Angriff durchführen. Und dieser Ich-Angriff
würde zu einer Kollision führen. Aber wir wollen überprüfen, was auch immer in unserem Ich-Angriff
steckt. Wir werden es nicht tun, es wird
ein magischer Ich-Angriff sein. Es wird kein Schwert sein, das
wir in Schwung bringen könnten. Aber selbst wenn es ein Schwert wäre und wir es in
Schwung bringen könnten. Was wäre, wenn das Schwert den Boden
berührte? Würde es eine Falle auslösen? Nein, wir wollen nicht, dass
das passiert. Wir wollen also fragen können, ob die tatsächliche Kapsel
des Spielers diese Kollision berührt
hat ? Also machen wir es durch den Schlepper? Wir könnten das
Casting für den Spieler überprüfen
und die Kapsel holen
und dann die andere
Komponente mit Casting für den Spieler überprüfen
und die Kapsel holen der Kapsel vergleichen Lassen Sie uns das demonstrieren.
Lass uns in unsere Falle gehen. Was ist der Bauplan?
Hier ist er Es sollte am Ende genau
hier sein. Nein. Für jede Falle brauchen
wir eine Kollision. Und ich werde
eine Boxkollision verwenden. Denn lassen wir es so. Das Bild wird sich
je nach unseren Messungen ändern Gehen wir zur
Box-Kollision und wählen die Startüberlappung aus. Nein. Wir werden nicht alles durchgehen, aber wir werden die
beiden Pins durchgehen, die wir verwenden werden, den anderen Akteur und
die andere Komponente. Der andere Schauspieler bezieht sich
auf den Schauspieler, der sich mit der Box
zu überschneiden begann. Und das bedeutet, wie ich schon erklärt habe, dass das auch den
Angriff mit einschließen würde , wenn er in unserem Player
enthalten wäre. Wenn ich spawnen würde, lass
es uns hier platzieren, siehe Kollision. Nehmen wir an, ich habe es hier,
um nach vielen Angriffen zu suchen. Nun, wenn das aus irgendeinem Grund,
zum Beispiel hier drüben, und es Trigger wäre,
würde es die
Falle auslösen, wenn ich
den anderen Schauspieler fragen würde, ob der andere Schauspieler der
Top-Down-Charakter mit
einer Besetzung ist , zum Beispiel. Aber was wir gemacht haben, indem wir
dieses Tag hier drüben hinzugefügt haben, das P ist das von diesem
Knoten, andere Komponente,
was bedeutet, welche Komponente des Schauspielers,
die sich
mit mir überschneidet, überlappt Wenn es die Kugel ist,
hätte sie dieses Tag P. Wenn es die
Kollisionskapsel wäre,
tut mir leid, nicht die Kugel,
wäre das Tag P. Sie hätte das Tag P. Sie
hätte das Tag P. Wir können als ug fragen Wenn sie die Markierung P hat,
können wir tun, was wir wollen. Nun, was wir für den Charakter
wollen,
ist der Knotenpunkt für den anderen Schauspieler. Aber in unserem Fall wollen wir ein
bisschen erklären, wie unsere Falle funktionieren
wird. Lass mich Schmerz bringen. Es ist Zeit für die
tollen Zeichnungen. Wir sollten hier
Titelmusik reinstellen oder so. Wie dem auch sei, wir haben unsere Boxtrap-Schicksale irgendwo
hier auf dem Korridor, und wir haben unseren Spieler
, der sich bewegt Wenn er auf die Falle tritt, wollen
wir sie aktivieren Also die Schritte auf die Falle. Nennen wir dieses
Duplikat zuerst so. Hass. Richtig? Oh, wenn
der Spieler drauf tritt, nennen
wir das Phase eins. Dann ist das aktiviert. Jetzt, in Phase zwei
, werden wir den Schaden anrichten, der aktiviert wird
, aber angreifen oder vielleicht sollte
dieser größer sein
und dann aktiviert werden. Spielt keine Rolle. Das
heißt übrigens Angriff. Ich erkenne das
Wort nicht, wenn ich es mir ansehe, aber es heißt Angriff. Also sollten wir fragen, ob der Spieler immer noch in
der Falle ist oder ob er
nicht in der Falle ist. Wenn er immer noch kollidiert. Wenn er also kollidiert, fügen wir dem Spieler
Schaden zu Wenn er nicht kollidiert,
fügen wir dem Spieler keinen
Schaden zu Wenn ich das tun würde, gehen
wir zurück zu unserem Ereignis,
zu unserem Kollisionsüberschneidungsereignis Wenn ich beim Angriff aussteigen
würde, wenn ich
den anderen Schauspieler verbinde, habe ich einen direkten Bezug
zu dem anderen Akteur. Das würde also bedeuten,
was auch immer der andere Akteur ist, ein Angriff. Also brauche ich einen Scheck. Ist der Schauspieler wirklich hinter
mir her oder nicht? Es gibt viele Möglichkeiten
, das zu tun. Wir könnten sogar
sagen, dass es sich um Überschneidungen handelt, und einen Verweis darauf beibehalten und, wenn wir die
Überschneidung
beenden,
diesen Verweis löschen
und weitermachen Aber ich würde gerne einen anderen Knoten
demonstrieren. Wenn ich die Kiste kriege, frag den
überlappenden Schauspieler. Ich könnte die Klasse so filtern
, dass sie mein Top-Down ist. Schauspieler, ich könnte
eine direkte Referenz bekommen, das
erste Exemplar bekommen und fragen, sagen
wir, zum
Beispiel, Schaden anrichten. Ich würde diesem Schauspieler Schaden
zufügen. Aber wir werden den Charakter von
oben nach unten
auch für die KI verwenden . In diesem Fall werden
wir tatsächlich ein Copy-Pasting-Verfahren
verwenden Wir
werden kein Kind benutzen,
aber wenn es ein Kind wäre, bestünde die Möglichkeit, dass sich das wieder auf den Schauspieler
auswirken
würde Wir müssten also eigentlich
eine Schleife machen. Wenn es zum Beispiel
ein Multiplayer-Spiel wäre
und wir wollten, dass der Truck
nur dem ursprünglichen Spieler Schaden zufügt. Wir müssten vorab schauen und
prüfen, ob das unser Spielerdarsteller ist. Oh, wir werden ein Gleichheitszeichen bekommen. Wir müssen
zuerst casten, weil das eine
Actor-Objektreferenz
zurückgibt. Selbst wenn wir unserem Charakter von
oben nach unten
filtern, wird immer noch ein
A zurückgegeben, ein allgemeiner Akteur. Oh, wir müssten den Spieler
nach unten oder nach unten werfen . Und dann können wir das, wenn das
zum Beispiel unserem Spieler
entspricht. Und dann müssen wir auch von
hier aus casten. Das könnte eine reine Besetzung sein. Beide
können tatsächlich eine reine Besetzung sein. Es gibt keinen Grund für sie,
nicht in der Filiale zu sein. Wir könnten auch ziehen oder etwas anderes, wir könnten hier zum
Beispiel
eine Variable haben,
ein Mobbing, das wir bekommen
und überprüfen könnten , ob das Mobbing Wir könnten zum Teich selbst
ziehen. Es gibt viele
Möglichkeiten, das zu tun. Das ist eine davon, auch weil
es zwei Fälle gibt, aber es ist machbar und
wird
unser Gameplay nicht wirklich beeinflussen , weil es
nicht so kompliziert ist. Was wir nun
tun müssen, oder um das zu vervollständigen, ist,
dieses Array-Element tatsächlich zu verbinden oder es aus der Besetzung zu
holen. Es ist nicht wirklich
wichtig, Schaden anzurichten. Und was angerichteter Schaden
ist, ist im Grunde nur eine Botschaft, die real an jedes
Objekt sendet. Es ist ein System, das uns
Epics zur Verfügung gestellt hat. Jetzt
sollte der Grundschaden bei eins liegen. Und ich denke, wir haben in dieser Lektion
viel erklärt, und wir sollten das
alles verbinden und in der nächsten Lektion
alles fallen lassen. Auf Wiedersehen für heute.
Bis zum nächsten.
53. Fallenanimation und SFX: Hallo und willkommen zum
Game Design Workshop und dem Kurs zur prozeduraler
Dungeon-Action-RPGs
mit
Real Engine Five Dungeon-Action-RPGs Zuvor haben wir mit der Erstellung
unserer Falle begonnen . Gehen wir in eine Falle. Und wir haben eine Box-Kollision hinzugefügt, und wir haben auch hinzugefügt, dass wir von der Box-Kollision aus
aufgerufen haben , die Überlappung beginnen. Wir spenden die Überlappung. Und wir haben gefragt, ob es sich bei der
Komponente,
die die Falle berührt , um das Tag P handelt. Nun haben wir ein paar
Dinge über Überschneidungen gesagt und wie wir einen
Bezug zu dem Charakter und den
sich überschneidenden Akteuren herstellen können den
sich überschneidenden Das war der wichtige
Knotenpunkt, an dem wir jederzeit die
sich
überschneidenden Akteure ermitteln Und dann haben wir einen schweren Test gemacht , um zu überprüfen, ob es unser Charakter ist Und wenn es unser Charakter ist, haben wir mit
einem vorher festgelegten Knoten Schaden angerichtet , sodass Anil Mechanik anwenden
muss
, die Schaden anrichten kann Natürlich können wir
unsere eigene Mechanik entwickeln, aber warum sollten wir uns nicht darum kümmern Nutzen Sie das aus. Ich kümmere mich vielleicht nicht darum. Nutze den Vorteil. Oh, wenn unsere Falle aktiviert ist, schauen wir uns dieses Mal den Auslöser an. Wir würden es nicht
erneut aktivieren wollen , um
dem Spieler sofort immer wieder Schaden zuzufügen. Lassen Sie uns also eine variable Zahl erstellen. Nennen wir das ausgelöst. Bringen wir es her. Ich könnte
danach einen Zweig bk verwenden, wenn p ausgelöst wird, aber machen wir es ein
bisschen einfacher und setzen hier ein Ende Bion Wenn es ausgelöst wird, wenn es dort die Komponente P
hat. Wenn die Komponente, die uns
berührt, den Zug P hat und dieser nicht ausgelöst wird, dann brauchen wir einen hier. Nein, tu etwas anderes,
tu nichts. Nein. Das Erste, was wir tun sollten ist zu sagen, dass die Falle ausgelöst
wurde. Aber jetzt können wir einen Countdown
starten angeben, wann sie
angreifen wird , wann die Falle den Auslöser auslöst
und im Grunde angreift. Es wird eine Stachelfalle sein, also wird sie einen Stachel
nach oben drücken. Lass uns einen Warnton einschalten. Wir machen ein Geräusch, damit der Spieler weiß, dass
die Falle ausgelöst wurde. Nun, das Geräusch
wäre, lass uns Pfund abnehmen. Hier ist es. Ich habe das nicht überprüft
. Wie laut es ist, warnen Kopfhörer-Nutzer. Das klingt nach
dem größeren Teil, auf einem P hier. Das ist ein Sound, der
nicht wirklich ein Sound ist
, sondern im Grunde eine Klasse , die es dir ermöglicht, einige
Manipulationen am Sound Jetzt, nachdem der Sound abgespielt wurde, unmittelbar nach dem Moment, in
dem der Sound abgespielt
wird, warten Sie nicht mehr, bis der Sound zu Ende Wir werden eine Verzögerung vornehmen. Bis wir unseren T-Rap auslösen. Setzen wir den Nullpunkt Y. Seien wir großzügig zu unserem Spieler. Und danach müssen
wir ein benutzerdefiniertes Ereignis erstellen. Nennen wir das ausgelöst,
ausgelöst
vom Bleion, oder Angriff A ist in Ordnung.
Danach werden wir angreifen. B Wenn das keine
Pont-Falle wäre und wir rauskommen, könnte es sich
zum Beispiel um eine Pfeilfalle handeln, Attacke ist in Ordnung. Sie greifen beide an. Wir werden uns jetzt nicht angegriffen
fühlen. Wir werden mit dieser
Logik weitermachen, um es zu Ende zu bringen. Lassen Sie uns das noch weiter sagen. Und
lassen Sie uns nach dem Angriff den Angriffston
oder vor dem Angriff abspielen , das ist logischer
oder gleichzeitig. Wir könnten also eine
Sequenz erstellen und sagen, zuerst den Sound abspielen
und dann angreifen. Und nach dem Angriff werden
wir unseren Plop
hier verbinden, um den überlappenden
Akteur zu finden und den Schaden anzurichten Und weißt du was,
lass uns auch
unsere Falle zurücksetzen und ein
weiteres benutzerdefiniertes Event erstellen Nennen wir das Revert. Also, nachdem wir dem Spieler Schaden zugefügt haben, oder wenn kein
Spieler niemandem Schaden zufügt, werden
wir es hinauszögern Sagen wir 5 Sekunden. Und nach 5 Sekunden werden
wir die Falle wieder aufrüsten. Also rufe ich umgedreht an. Warum ich Revert nenne. Weil
wir für den Angriff eine Timeline
verwenden werden, um eine Animation
abzuspielen Und auf der Grundlage dieser Zeitleiste werden
wir sie rückgängig machen
und die Falle zurücksetzen Aber bevor wir
mit unserem Timeline-Code beginnen, brauchen
wir etwas zum Animieren denn die Timeline wird
verwendet, um die Falle zu animieren, und unser Animation wäre
eine separate Sache. Also
gehen wir zu unserem Viewport und wir gehen zu
statischen Messungen Dupliziere das. Dieser ganze Körper. Nennen wir das. Stacheln Finden wir unsere s meshes, das sollten
die Ordner meshes sein Ich frage mich wirklich, wie
das heißen würde. Die Think Tube von Find Spike. Fallenkörper,
hol das Fallrohr. Und für Stacheln gehst du
zum Fallrohr 7. Richtig? Wie Sie sehen können, ist
ihr Drehpunkt von Anfang an
korrekt, so wie unsere Standardposition des Schauspielers genau
hier oben in
der Mitte der Stacheln ist genau
hier oben in
der Mitte der Stacheln Sie werden also ein wenig aus dem Boden herausspringen,
weil wir sie auf dem Boden spawnen
werden Das bedeutet, dass der Boden an diesem Ort hier sein
wird. Und die Stacheln zeigen sich ein bisschen, was großartig ist Nun, was wir tun werden, wir werden unsere Spikes beim
Start-Play-Event bekommen Wir werden eine
Relativation durchführen,
das heißt, die Position mit
dem Koordinatensystem Kein Vergleich mit der Welt,
verglichen mit diesem Bauplan Aber wenn wir sie relativ bewegen oder eine relative Position
angeben, sprechen
wir von
dieser Entität hier drüben, von
diesem Bauplan, von allen X, Y
und Z dieses Bauplans
und Entfernungen, die auf
diesem Mittelpunkt dieses
Bauplans basieren , diesem Akteur Gehen wir jetzt zurück. Lasst uns diese Variable bewerben. Es hat es perfekt nach uns benannt. Wir hätten die Spitzen angeben
können, aber das ist in Ordnung. Lassen Sie uns nun eine Zeitleiste hinzufügen. Sie müssen es benennen,
und wir stellen die Verbindung
wieder her, um von Anfang an abzuspielen, und
kehren zu Vers Ferment Bei
der fertigen Version
wechseln wir je nach der Richtung, in die sich
die Timeline bewegt Wenn wir in den Südwesten einschalten und abschalten, ist
dies wieder ein Wechsel, der auf der Aufzählung
basiert Das ist eine
Aufzählung mit zwei Werten, vorwärts
und rückwärts, und wir
verbinden hier nicht das Datum, sondern das Ende Und wenn es rückwärts ist
und es fertig ist, werden
wir auslösen Wir werden das ausgelöste
ausschalten Das bedeutet also, dass unser
Truck reaktiviert werden kann. Denken Sie daran, dass der Revert 5 Sekunden
ausgeführt wird nachdem versucht wurde, das zu beschädigen,
was auch immer darauf war Jetzt spielen wir die Timeline ab, wir geben
die Zeitleiste ein, wir fügen
einen Truck hinzu, wir werden einen Flow-Truck hinzufügen Und lassen Sie uns zwei Punkte anführen. Der erste wäre
auf Null, der Wert Null, und der zweite wäre
auf 0,2 und hätte den Wert eins. Wenn Sie auf diese
beiden Zoomen klicken, fühlen Sie sich horizontal und vertikal
an, um unsere Linie sichtbar zu machen. Und dieses Mal
habe ich, wie Sie sehen können, einen Wert gewählt, der weit unter unserer Länge von fünf
Sekunden liegt. Nun, ich könnte das 2.2 ändern, aber ich kann auch einfach den letzten Keyframe
verwenden,
was bedeutet, dass der
letzte Punkt verwendet wird, den ich datiert habe Hätte ich mehr Trucks, würde
das den letzten
Punkt der längsten Zeit in Anspruch nehmen Gehen wir jetzt zurück zur NRA. Und hier müssen wir
einen sehr einfachen Code hinzufügen, um unsere Spikes und diese
relative Aation zu unsere Spikes und diese
relative Wir werden einfach von
Wert A nach B an einem neuen Ort lernen Wert A nach B an einem neuen Vektoren, und das A wäre unser relativer
Standort, der ursprüngliche. Das B wäre, dass wir es
tatsächlich hart codieren können. Wählen wir die Spitzen aus, und aus der Relativzahl ergibt das im Grunde
Null, Null, Null Wir
wollen wollen 20, 30, 30 wären acht 30 hier. Wir werden
Alpha mit unserem neuen Truck verbinden. Das nächste, was wir tun
sollten, ist, uns die Fallen
zu eigen Ihnen geht es gut, sie arbeiten. Wir haben noch keinen Charakter, aber unsere Fallen könnten uns schaden Aber ich denke, das ist etwas , wofür
wir das nächste Mal leben Du bist der Abschied.
54. Prop-Spawner-Funktion: Hallo und willkommen zum
Game Design Workshop Real Engine Five Procedural Dungeon Action Zuvor waren wir mit
unserer Komponente Begin
over Lap Event fertig unserer Komponente Begin
over Lap Event Wir haben überprüft, ob
die Falle ausgelöst wird, und wenn es unser Charakter ist,
haben wir gesagt, dass die Falle ausgelöst werden soll,
wenn sie nicht ausgelöst wird,
wir haben ein Geräusch abgespielt,
wir haben gewartet, wir haben ein
anderes Geräusch abgespielt und die
Animation des Angriffs abgespielt. Und wir haben vorausgesehen, um zu überprüfen, ob der Spieler
immer noch in der Falle steckt Wir haben eine Zeitleiste verwendet, um die Spikes
der Komponenten zu animieren. Dabei handelt es
sich um eine statische Mathematik, die wir hinzugefügt haben und die statische Berechnung der Basis
der Falle Und wir verwenden die festgelegte
relative Position, um die Spitzen durch den
Alarm und unsere Zeitleiste zu bewegen Wir haben auch einen Schalter verwendet, der
, wenn die Timeline rückwärts
läuft, beim Revert-Event rückwärts
läuft. Dadurch sollte die Falle
so eingestellt werden, dass sie nicht ausgelöst wird Gehen wir jetzt zurück in unser Labyrinth und
spucken unsere Falle aus.
Das Wichtigste zuerst Wir werden unsere
Dungeon-Koordinaten benötigen. Und wir werden
tatsächlich auch die Schlüssel benötigen. Ich werde
tatsächlich die Werte bekommen. Ich auch. Ich gehe zu den
Schlüsseln und den Werten, und ich werde das auf zwei Variablen hochstufen, lokale Variablen. Ich werde das Dungeon nennen. Das hier, mach
auch Dungeon-Wert daraus. Bevor wir weitermachen,
lassen Sie uns ein
wenig darüber sprechen , wie unser Wasserhahn funktionieren
wird Unsere Fallenspon-Falle, wir brauchen nur den Fallensponer Der erste Schritt wäre, unsere
Dungeon-Koordinaten durchzugehen Also werden wir
durch unseren Kerker gehen. Diesmal blau. Ich
weiß nicht warum. Also werden wir
unsere Dungeon-Koordinaten durchgehen. Und wir werden einige Regeln
erstellen, um zu
überprüfen, ob es zu
den gewünschten Kacheln gehört Im Grunde wollen wir
überprüfen, ob es sich um einen Raum oder um einen speziellen Raum handelt. Dann mach keine Fortschritte. Spawnen Sie die Falle nicht. Hier. Spawnen Sie die Falle nicht Was werden
wir dann tun? Lassen Sie uns das
nochmal Phase eins nennen. Das ist echt toll beim Zeichnen. Wie dem auch sei, wir
werden eine Funktion
erstellen, die eine unserer
Kacheln zu den Koordinaten bringt,
wir haben die Koordinaten und wir wissen, wenn
wir
die Koordinaten haben, können
wir unsere Kachel bekommen. Aber wir werden unsere Kachel bekommen. Und für diese Fliese werden
wir die
Position des Bodens ermitteln. Von diesem Standort aus werden
wir, wir werden eine Box erstellen. Denn wenn unser Kachel das ist, dann gibt es eine Entfernung, in der wir eigentlich
nicht wollen, dass ein Track
erzeugt wird , denn sagen wir,
wenn er hier spawnen würde, dann
könnte der Truck so aussehen Und wir wollen nicht
, dass das passiert. Dieser Umfang sollte
das also berücksichtigen. Diese Box,
mit der wir erstellen werden , werden wir sehen
, wann wir sie erstellen. Das ist also einer der Gründe. Es gibt viele Gründe, aber das einzige Problem mit
diesem System ist derzeit dass wir, wenn wir
eine Falle spawnen und sie
mit einer anderen Falle kollidiert, dies für gültig halten Nehmen wir an, es ist eine größere Falle. Das können wir.
Es ist ein Feature. Es ist ein Feature. Es
schafft größere Fallen. Also, ja, das einzige Problem
dabei ist, dass
das geschaffen werden kann Es gibt Möglichkeiten, dem entgegenzuwirken, Beispiel können wir überprüfen,
ob
ich, wenn die Falle erscheint, mit einer anderen Falle kollidiere Wenn ich mit einer anderen
Falle kollidiere, zerstöre ich mich selbst. Und dann können wir zu
diesem Fallen-Spawner gehen und sagen, minus eins zu den Fallen
, die Das erfordert natürlich
auch etwas, das ich nicht erklärt
habe Wir werden ein System haben
, das von
Null auf MC-Fallen zurückgeht Null auf MC-Fallen zurückgeht Und in diesem Teil, den MC-Fallen
, die wir erzeugen werden, werden wir Wir werden eine Variable
namens Generator-Level verwenden, die
angibt, wie viele Dungeons wir hintereinander gespawnt
haben Wenn das zum Beispiel eine ist, könnten
wir
maximal zwei Fallen spawnen Wenn das zwei sind, könnten wir zwei plus eins
spawnen, also maximal drei Fallen oder jetzt plus plus
drei, also gleich Ja. Jedenfalls wird das im Grunde
das sein, was wir tun werden. Wir dazu. Wir werden
dieses System so einrichten, dass wir es mit verschiedenen
Elementen verwenden können, nicht nur mit den Fallen Vielleicht wollen
wir die Summe erhöhen, aber vielleicht wollen wir das erweitern,
indem wir zum Beispiel ein paar
Bolzenmünzen
oder einen Beutel oder etwas anderes
hinzufügen, das zufällig spawnen kann, und es könnte auch in einer Falle spawnen Also werden wir
dieses System verwenden , wir werden diese
Funktion verwenden, um ein System zu erstellen, Lage ist
,
alles zu spawnen, was wir wollen, basierend
auf der Stufe unseres
Generationsgenerators
und einigen Regeln, die wir erstellen werden auf der Stufe unseres
Generationsgenerators
und einigen Regeln, die wir Lass es uns jetzt machen. Senken Sie das. Und der wichtigste Schritt
ist, wie gesagt, dass wir einige Regeln für
unsere Raps
erstellen werden , speziell wenn
wir wollen, dass sie sie spawnen,
weil die Regeln, wann wir das Objekt spawnen, ein anderer
Teil von
der Funktion sind ,
aber erkläre einfach die Funktion, die wir an dieser Stelle spawnen
werden Denn wenn wir
zum Beispiel Münzen spawnen, brauchen
wir vielleicht andere Regeln
als die Orte, an denen wir die Fallen Der erste Teil ist also für das Wir, wenn wir das Wir haben,
der zweite Teil ist, wie viele und vor
Ort wir sie spawnen werden Also nochmal, wir werden für jede Schleife vier Schleifen benötigen
. Wir werden
unsere Kerkerschlüssel holen
und fragen, ob diese Schlüssel enthalten sind Gehen Sie mit einem Array hier vor, um dieses zu
duplizieren. Die erste wären
die Raumkoordinaten. Koordinaten eines Raums. Wir
wollen es in keinem Zimmer haben. Wir wollen es nur
draußen haben, in Korridoren, auf
Balkonen, in speziellen Bereichen
und nicht in speziellen Es tut uns leid. Das zweite
wären Spezialgebiete. Also wir wollen es nicht oder keines von wenn wir sie nicht in
jedem von ihnen haben wollen, brauchen wir eine. Wir werden eine Filiale drücken, dieses Jahr eine
Verbindung herstellen, dieses Jahr eine
Verbindung herstellen, hier
machen, und
es ist schlampig, aber fertig Wir haben unsere Regel
, dass keine speziellen Felder oder
Raumkoordinaten erscheinen speziellen Felder oder
Raumkoordinaten Nun brauchen wir, wie gesagt,
unsere Kachel, und um unsere Kachel zu bekommen,
entsprechen
diese beiden Felder einander Wenn ich nur unsere Werte
erhalte und p erhalte und den Index
dieser vier Schleifen verwende Ich werde einen gültigen Index abrufen, den entsprechenden Index
vom Endpunkt bis zum Akteur. Lassen Sie uns nun unsere Funktion erstellen und sie Telefon nennen. Zwei Requisiten. Du weißt schon, interaktive Requisiten,
maßgeschneiderte Requisiten, so etwas Was wir für die Eingabe
benötigen, ist Variable namens Max Max Es wird
vom Typ Integer sein, und wir werden
eine Zielvariable benötigen, nämlich die Kachel,
die PPP-Kachel PPP-Kachel Das ist der Schauspieler, den
wir benutzen werden, um diesen ganzen Schauspieler
des T zu
bekommen , weil wir das von außen
bekommen Ich benutze den Pfeil. Sie können sehen, das ist
ein nettes SO-Feature. Wenn ich von einer Funktion
zu einer Funktion zu einer
anderen Funktion gehe zu einer Funktion zu einer
anderen Funktion und ich einfach zurückgehen möchte und mich
nicht erinnern kann, wo ich bin. Ich kann diesen Pfeil hier verwenden, und er bringt mich zur
vorherigen Auswahl, dem vorherigen Punkt, den ich habe.
Oh, was ich sagen
wollte, ist, dass Oh, was ich sagen
wollte wir
dieses Ziel,
diesen Wert von hier aus bekommen werden. Und verbinde es hier. Nun zu guter Letzt,
um alles spawnen zu können, benötigen
wir einen neuen Input Und dieses Mal wird
es vom Typ Schauspieler sein. Aber es wird keine Referenz
sein, wird vom Typ
Klassenreferenz sein,
was bedeutet, dass ich sagen kann, welche
Art von Klassenschauspieler ich haben möchte. Ich werde das demonstrieren. Wir werden das nutzen, um etwas
zu spawnen. Wenn wir also aus dem Unterricht
heraus spawnen, kann
ich hier tatsächlich eine Klasse
eingeben, aber wir
werden das
genau auf die Art
von Klasse einstellen , die ich Bevor wir dem Schauspieler antworten, brauchen wir
natürlich noch
ein paar zusätzliche Dinge Wir werden hier eine lokale Variable
erstellen. Ich werde das
Counter und Integer nennen. Der Grund dafür ist, dass
wir
mit diesen Mx-Requisiten den Zähler
und die Max-Requisiten verwenden können,
um eine benutzerdefinierte Schleife zu erstellen Wenn der Zähler also
unseren X-Requisiten entspricht , hören wir Wenn er nicht gleich ist, werden wir eine Spanne bilden Nun, das nächste, was wir brauchen ist, wo wir klein werden?
Wir brauchen einen Standort. Hier bekommen wir den Standort
unseres Schauspielers, das ist unser Standort der Gezeiten. Und jetzt müssen wir unsere Box
erstellen. Was wir verwenden werden, ist eine reine Funktion namens D
Point in Bounding Box Das bedeutet, dass an einem Punkt in diesem Feld Koordinaten mit halber Größe der
halben Größe der Box entsprechen Hier verwenden wir 300300,
O Z, wir
lassen es so wie es ist Ich werde
das verbinden. Um ehrlich zu sein, werde
ich ein
bisschen mehr Höhe hinzufügen Um auf Nummer sicher zu gehen, dass unsere Kastenfallen
etwas besser sichtbar sind Ich werde einen Vektor hinzufügen, ich werde hier eine Fünf hinzufügen Dadurch entsteht eine Box der Größe 600 hauptsächlich weil unsere
halbe Größe 300 ist, aber das, worüber wir gesprochen haben, wird nicht
berücksichtigt. Vielleicht machen wir es ein
bisschen kleiner. Lass es uns so machen, dass es passt. Ich glaube schon, dass unsere Falle zu 100 m lang
ist. Ich bin mir nicht sicher, wie wir überhaupt nach diesem M3D-Sachen
suchen sollen. Ich kann es nicht auf die
Welt bringen und Boxen
hier aufzählen , weil Box, ich finde, es ist gut,
momentan ist es auf fünf gesetzt, also habe ich es auf zehn,
eins, zwei, drei, vier, fünf,
sechs, sieben, acht gesagt eins, zwei, drei, vier, fünf,
sechs, , es ist
acht. Es ist in Ordnung, es ist in Ordnung 250 ist in Ordnung. Und
jetzt werden unsere Fallen nicht mehr an den Rändern auftauchen Es gibt eine automatische Option zum Überschreiben der
kollegialen Behandlung. Zum Beispiel immer
spawnen, auch nicht Cosans,
versuchen nur Colocation, aber Wir können es nicht ändern. Wir versuchen, den Standort anzupassen, spawnen
aber immer. Und das wird für einen
etwas besseren Abstand sorgen. Zum Schluss müssen wir diese Funktion
fortsetzen,
aber ich denke, das ist etwas, das wir für das nächste Mal
verlassen werden. Das Einzige, was wir jetzt ändern
müssen ist nur ein kleiner Teil der Optimierung. Wir gehen in die BP-Falle. Wir gehen zu unserer Box und wir werden zu
Kollisionen gehen, wenn es um Details geht Wir werden
eine benutzerdefinierte Kollision auswählen. Wir werden uns dafür entscheiden,
alles außer dem Pom zu ignorieren . Diese Kollision wird nur ausgelöst,
wenn sich ein Gedicht
überschneidet, mit ihm kollidiert und alles andere ignoriert wird
. Ich denke, das ist es für diesen. Ich sehe
dich beim nächsten Mal. Auf Wiedersehen.
55. Raumdekorations-Blueprint: Hallo und willkommen zum
Game Design Workshop, echten Engine Five-Kurs zur
Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Bisher haben wir mit
unserer eigenen Requisitenfunktion begonnen und speichern weiterhin die Dungeon-Map
als Schlüssel In lokalen Variablen. Und dann fuhren wir
mit den Regeln
fort wo wir unsere Fallen spawnen Und wir haben angefangen,
die Funktion zu entwickeln , die benutzerdefinierte
Requisiten erzeugt. Wir haben für die Eingaben
die maximale Anzahl an Requisiten,
das gezielte VP-Kachel
und die Klasse verwendet , die wir spawnen wollen Wir haben
in unserer Funktion einen Zähler erstellt, dem ich diesen und nur die maximale Anzahl der
Requisiten
abschalten werde , weil ich die
Linie einfach nicht sehen
möchte, und von hier aus trennen
wir
diesen Typ und den unteren,
und hier werde ich einfach zum Ziel
gehen Und der Grund, warum ich
das noch einmal machen kann, ist, dass es sich um eine Funktion
handelt
und
wir die Eingabewerte einfach als Variablen aufrufen
können Jetzt, nach dem Zähler,
wenn es wahr ist, werden
wir einfach aufhören,
nichts tun, damit die Funktion abgeschlossen ist. Vorher werden
wir auf der falschen Seite unsere Schauspieler hervorbringen Jetzt werden wir überprüfen, ob
der Schauspieler gültig ist. Falls dies
aus irgendeinem Grund nicht der Fall ist. Es spawnt nicht,
obwohl wir etwas erschaffen, versuchen uns
anzupassen und trotzdem kollidieren Wenn wir versuchen müssten, den Standort
anzupassen,
nicht anrufen, wenn es immer noch kollidiert,
dann bräuchten wir Aber wenn wir
versuchen würden, den Standort anzupassen, aber immer spawnen, brauchen wir das
eigentlich nicht Aber falls du experimentieren
willst, lassen
wir das
hier gültig , denn die Art und Weise, wie Kollisionen hier behandelt
werden, brauchen
sie ein bisschen
davon oben in den
Bauplänen und mit dem was sie kollidieren und
wie Oh, wir wollen das hier machen Was wir tun werden, ist
unseren Akteur hinzuzufügen, der reagiert,
unsere Falle, die wir an die Liste
der zu zerstörenden Schauspieler Also
müssen wir die Liste finden. Hier ist es, und lassen Sie uns den
Löffeldarsteller hinzufügen. Falls es gültig ist. Wenn es nicht gültig ist, sind
wir damit fertig. Als Nächstes bewerben wir das
Hinzufügen zu unserem Zähler plus eins. Und wir müssen auch den Zähler
einstellen. Denken Sie daran, Kontrolle ist
zum Einstellen da. Nur für den Fall
, dass wir den Löffel
in Pons Pone machen wollen, wenn er kollidiert, wollen
wir später
damit experimentieren Wir werden einfach eine neue Variable hinzufügen und sie y und trice
nennen Und wir werden auch
diese Zahl um eins erhöhen. Hol es dir auch. Seit
jeder Hinzufügung spielt
die Reihenfolge keine Rolle. Jetzt stellen wir die Verbindung
von hier aus her her, ist hier nicht gültig. Fügen wir zu den
ursprünglichen Regeln oder oder b hinzu und wir
erhalten Trie Plus Das Maximum ist hier, hier. Eigentlich kein Plus, mein Fehler ist größer als Mx Requisiten
multipliziert mit zwei Es fegt im Grunde zweimal. Es versucht, das
Doppelte der Mx-Requisiten hinzuzufügen falls die Requisiten
nicht spawnen Weil unser erster Zähler zählt, wie viele
sie Unser zweiter Zähler X zeigt wie es gab, etwas
zu spawnen Denn nach einem bestimmten Punkt, sagen
wir zum Beispiel
beim Generieren des Labyrinths
oder Level 25, könnte
diese Zahl auf
ein System zurückzuführen sein , das nicht
spawnt, wenn es kollidiert Es würde zum Beispiel fünf
Fallen an einem Punkt spawnen, oder es könnte nicht spawnen,
wenn es nicht kollidiert, könnte
es nicht . Es könnte so viele Fallen , dass es nicht möglich wäre Das würde also unendlich werden
und dann würde es unseren Ladevorgang
blockieren Es wird dort aufhören
und niemals weitergehen. Zerstöre im Grunde unser Spiel. Danach verbinden wir das hier drüben, am Anfang
des Abzweigs,
und es wird
unseren Loop mit einer
Ausfallsicherheit abschließen, die es wird
unseren Loop mit einer
Ausfallsicherheit abschließen doppelt so hoch ist wie die
Anzahl unserer Mx-Requisiten Nennen wir es jetzt
in unseren Requisiten Spooner. Wir werden dem Sohn konstante
Requisiten mitbringen. Wir werden das mit Masten verbinden
. denken ja, denn wenn
es unsere Koordinate ist, oder wenn es eine spezielle Kachel ist, wollen
wir nicht, dass etwas passiert.
Wir wollen, wenn es Jetzt verbinde ich die Dungeon-Werte mit dem Ziel,
das sind unsere Stapel, die
entsprechenden Für den Unterricht
wähle ich die Falle aus. P Eine Falle Lass uns die Max-Requisiten machen. Jetzt werden wir eine neue Variable
erstellen. Wir werden
es Anator-Ebene nennen. Haben wir eine Generatorebene? Kacheln, Max. Größe des Labyrinths, Max. Kacheln. Nein, tun wir nicht Also, wir sollten
ein Generator-Level haben und das bringen wir hierher. Was nun, lassen wir es auch
instanzieren und beim Spawn verfügbar machen , damit wir weitermachen können,
wenn wir das Labyrinth spawnen Lassen Sie mich Sie noch einmal daran erinnern, wir zum
Hauptmenü zurückkehren müssen, zu unserem Diagramm gehen müssen Kompilieren und speichern Sie die Karte, speichern
und kompilieren Sie zuerst das Labyrinth und gehen Sie zum
Hauptmenü und genau das Labyrinth. Jetzt haben wir das Generator-Level. Fangen wir mit Stufe eins an. Lass uns zurück in unser Labyrinth gehen. Mit diesem Generator-Level werden
wir es hinzufügen, sagen
wir, plus eins Machen Sie es einfach: Die erste
Ebene hat zwei Fallen, die zweite Ebene hat drei,
und es geht weiter und weiter Lassen Sie uns demonstrieren,
was wir geschaffen haben. Lass uns anfangen. Und lass uns hochspringen. Hier sind wir. Hier eine Falle, hier eine Falle, die
Mischung ist gut Von oben würden wir nicht viel sagen können
,
aber wir werden sie mit
etwas Nebel und etwas
zusätzlicher Beleuchtung verstecken etwas Nebel und etwas
zusätzlicher Beleuchtung Lassen Sie uns damit fortfahren, ein paar Requisiten für unsere
Zimmer zu
machen, denn momentan sind sie
beleuchtet ein
bisschen leer Lass uns das tatsächlich zeigen. Gehen wir zu unseren Dekorationen, wählen
wir unsere Decke aus
und stellen die Sichtbarkeit ein. Um ein sichtbares Spiel zu sein,
tut mir leid, ein verstecktes Spiel. Ich denke, das wird es
nicht verbergen. O. Wir sagten ein Spiel mit
versteckter Sicht, damit wir jetzt sehen können, was in unseren Zimmern vor sich
geht. Nun, wenn wir dieses Stationslicht nicht
hätten, wären
die Zimmer wirklich dunkel. Neben den Requisiten müssen wir auch in den Räumen Blitze
spielen Und dieses Mal wollen wir einen anderen
Weg finden. Fügen wir es nicht so hinzu, wie wir es
mit
diesen Requisiten gemacht haben , mit den Fallen Lassen Sie uns einen anderen
Weg finden, es zu tun. Wir haben also viele
Beispiele dafür, wie
man Blöcke
im Grunde in unserem Labyrinth füllt Dafür benötigen wir
einen neuen Plan. Geh zu den Requisiten. Klicken wir, erstellen eine
neue Blueprint-Klasse, geben Schauspieler ein, es wird
BP, Raum, Requisiten sein Lass uns jetzt die Raumrequisiten spawnen
. Wir gehen zu
unserem Labyrinth-Generator. Wir werden
das Gameplay tatsächlich beenden. Und das von
der kompletten Fort-Schleife aus. Wir werden
diese For-Schleife einfach für jede Schleife kopieren. Und für das Array werden
wir alle Raumkoordinaten
wählen Für all unsere Raumkoordinaten erhalten
wir unsere Werte Eigentlich werden
wir unseren Kerker bekommen. Das heißt, ich werde
den passenden Schauspieler finden. Das gibt uns allen den
Schauspieler, den ganzen Raum, Schauspieler. Im Grunde genommen alle Fliesen
, die zu Räumen gehören. Von da an werde
ich Actor Plus besitzen. Ich werde die Transformation
aufteilen. Ich werde es mit dem Standort verbinden und ich werde
es mit dem Standort verbinden. Für den Kurs werden
wir die Raumrequisiten auswählen. Um ehrlich zu sein, brauchen wir noch
eine Variable. Gehen wir zu unseren Zimmerrequisiten. Ich öffne es, öffne es, gehe zu Variablen und
erstelle Anweisungen Das wäre eine
Karte der Erektion. Und das zweite
wäre der Pulion, wie wir ihn auf unseren Kacheln haben, und wir werden ihn
essbar
machen und ihn beim Laichen auslegen Gehen wir zurück zum Labyrinth-Generator. Lass uns das mal aktualisieren, das ist
tatsächlich soweit. Und wir ermitteln die
Richtung unserer Kachel, das Richtungsarray
und verbinden es hier. Jetzt spawnen wir
Raumrequisiten auf jedem Feld,
das ein Raum ist, und wir kennen die Richtungen Wir wissen also, wo wir
eine Mauer haben und wo wir
keine haben Ich denke, das ist es für diesen. Im nächsten Schritt können wir also erklären, wie dieser Plan funktionieren
wird Vorerst auf Wiedersehen,
dann bist du der Nächste.
56. Grundlagen des Raumprop-Spawners: Hallo und willkommen zurück zum
Game Design Workshop und zum Kurs „R sine five prozedurale Dungeon
Action Zuvor waren wir mit
unseren Requisiten für benutzerdefinierte Requisiten fertig. Wir haben unseren Loop damit abgeschlossen, dass wir
unseren Schauspieler zu den
Schauspielern hinzugefügt haben, die zerstört werden sollen Wir haben überprüft, ob der Schauspieler
, den wir erzeugen, gültig ist Wenn er gültig ist,
erhöhen wir den Zähler Wenn es nicht gültig ist,
erhöhen wir die Anzahl der Versuche, was wir auch tun, wenn wir den Zähler
erhöhen Welche Versuche wir gesagt haben, es wird eine Variable sein. Nur für den Fall, dass wir
das ändern wollen, um die Position anzupassen, aber nicht zu spawnen, wenn
es kollidiert Wir haben mit der Erstellung
unseres A-Rooms-Arrays fortgefahren. Wir fuhren damit fort, für jeden Loop alle unsere
Raumkoordinaten zu verwenden, und wir haben den Plan erzeugt, den wir für die BP-Raumrequisiten erstellt haben. Dabei handelt es sich um einen Plan, für den wir eine Variable
namens Richtungen
erstellt haben, und wir haben
unsere Kachelkoordinaten
von unserem Raum auf den
aktuellen Akteur übertragen von unserem Raum auf den
aktuellen Akteur Nun, wie verwenden wir diesen Akteur und
wie werden wir diese wie werden wir Gehen wir zu diesem Schauspieler. Das Erste, was wir tun werden
, ist , dass, wenn der Schauspieler Pflug ist ,
wir
unsere Richtung bestimmen und wir werden unsere Werte
durchgehen Werte, und das werden wir
für jede Schleife aus Werten machen. Als Nächstes
werden wir fragen, ob der Wert wahr ist oder
nicht, wann er wahr ist. Das bedeutet, dass wir
durchgehen können, wenn es nicht
stimmt , dass es eine Mauer gibt. Oh, lassen Sie uns speichern, wie viele wir haben, wenn wir
keine Mauer haben, oder wie viele leere wir haben. Nennen wir diese Bar leer. Wir machen
daraus eine einzelne
Typvariable vom Typ Integer. Und wenn wir gehen können, werden
wir mehr, wenn
wir hindurchgehen können, wir werden das um eins erhöhen. Das zweite, was wir jetzt tun,
ist,
eine weitere Variable zu erstellen ,
diesmal NRA als Ganzzahl Dann nennen
wir das, ich weiß nicht, Walzer. Dann werden wir hier hingehen und die
Indizes hinzufügen, dass wir Mauern haben Jetzt haben wir also zwei
Variablen, die angeben, wie
viele leere Stellen Es gibt, wie viele
Eingänge, Ausgänge,
Durchgänge, was auch immer wir gehen können,
und wir haben auch eine Variable, die wie viele Wände
auf unserer aktuellen Kachel existieren Denkt daran, wenn wir das spawnen, jedem Plättchen eine davon Unser Zimmer hat also vier Kacheln. Das heißt, wir haben in jedem
Raum P-Raumrequisiten. Jeder Raum hat also
vier P-Raumrequisiten, eine in jedem Gang In der vorherigen Zeit
haben wir auf Fackeln gespawnt, weil das Erste, was
wir
laichen werden, unser Licht laichen Eigentlich werden wir
zwei Dinge gleichzeitig tun, aber wir werden es
mit einer Sequenz machen, im Grunde werden
sie gleichzeitig passieren Oh, als wir die Veranden erzeugt haben, die wir in unserem Viewport für
unsere Dekoration in einem
Deklarationsplan verwendet haben, verwenden wir einige Szenenpunkte haben, verwenden wir Das ist eine Art, Dinge zu tun. Eine andere Möglichkeit,
einen bestimmten Standort zu ermitteln, besteht darin, den Standort
tatsächlich zu kennen. Wenn wir wissen, dass der Mittelpunkt
unseres Bauplans Null ist, kennen wir
relativ einige Orte,
da wir wissen, dass unsere
Kachel 600 mal 600 groß ist Wir wissen, dass 300 auf halber Strecke
von der Mitte entfernt sind. Nun, lassen Sie uns unseren
neuen Plan für Torch erstellen. Nennen wir diesen Raum Fackel. Ich sehe sofort die alte
Fackel, die ich benutzt habe, als Mesh. Weil das die Zimmerfackel für mich
hätte sein sollen. Ich werde die
BB-Fackel öffnen und
das Netz gegen die große Fackel austauschen.
Das ist die richtige Fackel. Ich muss
den Pier wieder in Ordnung bringen , kompilieren und speichern und
dann gehen wir auf unsere Zimmerveranda Hier erstellt. Öffne es. Ich werde alles
retten, was ich seit langer Zeit gespeichert habe. Ich werde hinzufügen.
Weißt du was, ich kann zur großen Fackel gehen. Die BP-Fackel, einfach
kopieren. Diese Dinge. Füge sie ein. Ich stelle den statischen
Wert auf die kleine Fackel
um und setze den Partikel
auf einen niedrigeren Wert. In Ordnung. Und jetzt kann ich
das Verhalten auch aus
dem Ereignisdiagramm kopieren und einfügen . Derselbe Effekt. Spielen Sie das Spiel hier von Anfang an ab, spielt keine Rolle, da es sich um eine sich wiederholende Zeitleiste
handelt Das wäre es, wenn wir in
anderen Umgebungen wären. Jedenfalls. Ändern wir den Radius
der Lampe 4 bis 5 m. Ändern wir den Radius von 400 um zu kompilieren und zu speichern. Und jetzt haben wir unsere
eigene Zimmerfackel. Gehen wir zurück zu unseren Zimmerrequisiten. Und bevor wir irgendeinen Schauspieler vorschlagen, können
wir tatsächlich
etwas anderes machen Wir können es als Kind hinzufügen. Ich werde einen Kinderdarsteller hinzufügen. Ich werde es Zimmerfackel nennen. Und ich werde ihre
Klasse auf Zimmerfackel umstellen. Und wenn ich sicher bin, kann ich
jetzt in
den Bauplan hineinschauen. Nein. Frage oder erste Regel. Das wäre, wenn
wir irgendwelche Wände hätten. Ich hole mir
meine variablen Wände. Ich werde fragen, ob die
Länge größer als Null ist. Wenn es nicht größer als Null ist, werde ich diese Komponente
zerstören. Das brauchen wir nicht mehr. Dieser Raum hat keine Wände. Was wäre ein
Raum ohne Wände? Es wäre ein Raum, der im Grunde
eine Tür hat, weil eine Tür gibt und keine anderen zwei
Türen, eine, zwei Türen. Wenn du also malen gehst, wäre
das ein Raum, der hier drüben
eine Tür hat , und eine Tür. Hier drüben. Der Rest des Raumes hätte
also keine Wände dafür. Das wird offen sein und
die Seite wird offen sein. Es hat praktisch keine
Wände, um eine Fackel hinzuzufügen. Denn unsere Regeln
basieren darauf, ob der Spieler auf jede Seite
wechseln kann. Zurück zur Programmierung.
Jetzt brauchen
wir als Nächstes die Anweisungen. Danach holen wir
uns die Schlüssel. Eigentlich werden wir
hier eine zufällige Richtung
von Wänden bekommen. Zufällig. Wenn wir uns richtig erinnern, haben
wir den Index gespeichert,
von dem wir keine Wand hatten. Selbst wenn wir zwei
oder drei Wände haben, bekommen
wir eine zufällige Wand, die unsere Fackel
ersetzt. Wie gesagt, wir müssen die
relative Position dieses
Our
B festlegen Our , wir legen die Position auf der Grundlage der Koordinaten
des Bauplans Weil wir wissen, dass die Größe
des Raums hemmend
sein wird Jetzt habe ich einige Standorte
vorberechnet, von denen
ich denke, dass sie korrekt waren Sie können Ihre eigenen erstellen. Was wir verwenden werden,
ist ein SE für den Index, wir werden
die Anweisungen abrufen. Wir haben eine
Nordwand, eine Ostwand, eine Südwand und eine Westwand. Für die Nordwand
gebe ich 40, 150 und für die Ostwand gebe
ich -340, 50, 250 die Höhe ein
und x und y sind
die X- und Y-Achse -40 für Süden und 300 für X, Y und 250 für Z und 300
minus hundert 42 50. Lass mich hier weitermachen. Hundert 40 50. Nun, es an einem
Ort aufstellen, als würde man
es hin und her bewegen . Wir haben nicht immer
die richtige Drehung. Auch hier müssen wir überprüfen, welche die richtige
Drehung sein sollte, wenn sie hier wäre, welche die
richtige Drehung sein sollte, wenn sie hier wäre, und so weiter. habe ich schon gemacht, also haben wir die Werte, und wir werden auch die Zimmerfackel und
das Relativset besorgen . Dieser relative
Standort. Oh mein Gott. Ich will tippen und ungehorsam sein. Kein Standort, tut mir leid, relative Rotation
einstellen. Wie Sie sehen können, habe ich es
von der Hinrichtungslinie bekommen. Also kann ich jetzt die
Zimmerveranda wählen, weil sie quasi ein System
hat, das
mir einige Reset-Optionen gibt , sodass es mir passen könnte Und ja, das passt mir besonders gut. Und wieder
wähle ich Ich gehe zu diesem. Nun, da wir diese Variable
zweimal verwenden. Da ich hier eine Zufallszahl habe, wird
sie hier und hier einen anderen
Wert bekommen. Also muss ich
das als Variable bewerben. Hier. Ich gehe zu dieser
Variablen in zufälliger Richtung. Und ich werde hier eine
zufällige Richtung angeben. Hier, hier. Gut. Nun, was die Rotationen angeht, wir brauchen 90 nach Norden Wir brauchen 180 nach Osten,
brauchen minus neun. Süden und Null im Westen. Und das wäre es.
Jetzt hätten wir ein paar Lichter in unseren Zimmern.
Lass uns das überprüfen. Und wir haben einige
Lichter in unseren Zimmern. Wenn du verschiedene
Standorte haben willst, kannst
du natürlich mit den Zahlen experimentieren, ich sie finde oder nicht. Ich glaube, das
wird für diesen sein. Wir machen mit dem nächsten
weiter mit dem Rest des
Zwecks der Räume. Tschüss.
57. Raumrequisiten-Dekoration: Hallo und willkommen zum Game Design Workshop
Under Engine Five, Action-Rollenspiel „
Procedural Dungeon“, Entwicklungskurs Zuvor hatten wir unser Event „
Raumrequisiten beginnen mit dem Spielen“ ins Leben gerufen. Wir haben angefangen, es zu füllen. Aber wir haben unsere Werte
aus unseren Anweisungen erhalten. Wir haben vorausgesehen und
kategorisiert, wie viele Wände
leer sind , und wie viele wir
hinzugefügt haben, nicht wie viele, sondern die Indizes der
vorhandenen Wände in einer Reihe Dann haben wir unseren Plan
für unsere Zimmerfackel erstellt,
die sich genau hier befindet Wir haben das Verhalten kopiert und eingefügt, wir haben die Werte ein wenig
geändert
und wir haben auch die statischen Netze, die Lichter und alles andere kopiert und eingefügt die Nein. Danach haben wir hier drüben
eine kleine Funktion geschaffen, aber eine Funktion, eine Kette
von Ereignissen, wenn Sie so wollen. Aber wir überprüfen, wie
viele Wände wir haben. Wenn wir keine Wände haben, zerstören wir die Fackel des untergeordneten Raums
, die wir unserem
Bauplan hinzugefügt haben Wenn es dann stimmt und
wir ein paar Wände haben, dann haben wir die Richtung, wir haben die zufällige Richtung Wir haben eine zufällige Richtung blockiert
und gesagt, dass die relative
Position und Drehung
des Raums um einige vorberechnete Werte
abfackeln Lassen Sie uns nun dasselbe für
die restlichen Raumelemente tun. Dafür werden
wir einen Wechsel vornehmen. Dafür int. Der Int-Index
würde bei eins beginnen. Jetzt Standard-PIN, und wir werden Indizes bis zu vier
hinzufügen. Das liegt daran, dass
wir auf der Basis von leer
wechseln werden auf der Basis von leer
wechseln und
nichts leer haben kann Wir können einen leeren Raum haben, das ist ein Raum
, der so ist, und wir haben den anderen Raum
hier und den anderen Raum hier. Vielleicht hätten wir
den vorherigen löschen sollen, Space. Der nächste Raum wäre also hier und der nächste Raum
wäre hier, die Lücke hier. Also hier wäre einer leer, und fangen wir mit dem an. Was wir zu den statischen Maßnahmen
hinzufügen müssen. Nennen wir sie thatqu A und thatqu B oder A eins,
aber nennen wir es B. Wenn wir ein Mt haben,
dann lautet meine Regel, die ich
hinzugefügt habe, dass wir nicht zwei statische Maße
haben Wir werden eine haben und bei den restlichen Optionen zwei verwenden Oh, ich werde endlos darauf eingehen. Dann
holen wir uns unser statisches Mesh. A M. Und daraus werden
wir aus einer Liste auswählen, wir werden wählen. Und für den Index werden
wir
eine zufällige Reichweite haben. Der Bereich würde zwischen
Null und Fünf liegen. Und lassen Sie uns fünf Optionen hinzufügen.
Oh, für die Optionen. Wir haben tatsächlich
drei, aber wir werden ein bisschen mit ihren
Spawnchancen
spielen Also werde ich zum Inhalt gehen. Ich werde zu
unserem statischen Chaos übergehen. Ich werde diesen Tisch auswählen. Und es gibt noch einen Tisch. Und da ist auch dieser Tab. Ich glaube nicht, dass
es noch einen anderen gibt. Ich denke, das sind die
drei Varianten. Und lasst uns mit den Chancen spielen. Nehmen wir an, einer von ihnen hat mehr, viel mehr Chancen
als die anderen. Einer mehr hat eine zusätzliche. Das wäre es für diesen. Und dann müssen wir die relative Rotation einstellen
. werden wir tun. Aktion. Was wir
hier machen wollen, ist mit einer Masse, einem Iterator, wir
wollen nur das Ya ändern Jedes Mal dreht sich
der Tisch um. Wir werden es auf Distanz benutzen. Wir werden 600 bis 360 verwenden. Nun, warum
ändern wir nicht den Standort? Denn wenn wir diesen Gegenstand überspannen, wird er genau mittig sein, dann wird er hier sein. Aber was wir tun, ist
die Rotation zu ändern , nur um jedes Mal
eine zufällige zu haben. Nun, was machen wir, wenn wir zwei oder die Wände MT
haben? Wir werden uns den Weg
erklären lassen. Wir werden unsere Schlüssel holen. Und dann fahren wir
durch unsere Wände. Natürlich werden
wir, basierend
auf unserem A-Element, die
richtige Richtung finden. Bei unseren Wänden
müssen wir eines
dieser beiden statischen Maße wählen. Um das zu tun, gehen wir zu dem Index, der unser RA-Index wäre, weil wir
von zwei oder einer Wand ausgehen. Das wird also einen oder zwei haben. Ich habe das nicht angeschlossen,
wenn wir den dritten ausführen, wir werden
das statische Mesa,
das zweite statische Mesgan, das zweite statische Wie bei einem MT benötigen
wir nur ein Also tun wir das, wenn es
nur eine Wand gibt , im Grunde genommen , weil die andere ein Ausgang gewesen
wäre. Ich werde das
hier verbinden. Lass uns weitermachen. Wir brauchen diese beiden
statischen Maßnahmen. Falls es nur
eine Wand zu platzieren gibt. Damit wird
der zweite Index nicht ausgeführt, aber wir brauchen
hier kein „is valid “, da es wahrscheinlich keinen Fehler
geben wird. Als Nächstes sollten wir
Attic Me akzeptieren , auch
wenn A oder B über diesen
Index ausgewählt werden. Das nächste, was wir hinzufügen sollten, ist der Auswahlknoten, jetzt
haben wir tatsächlich eine Menge Auswahlmöglichkeiten. Nun, wieder sind es fünf, aber dieses Mal sind es
tatsächlich fünf. Ich werde das löschen. Ich
werde diese Auswahl mitnehmen, der es bereits fünf gibt. Ich werde das hier verbinden. Ich werde. Hier brauchen
wir ein zufälliges Ergebnis. Hier zufällig, null vor fünf. Ein zufälliger Index, und die ersten drei werden
diejenigen sein, die wir hinzugefügt haben Die ersten drei sind
einzigartig. Einzigartig. Für den Rest der drei
benötigen wir dieses
Kombinationsspiel mit den Boxen. Dann dieser mit dem Helm. Ich kann das Rot oben drüber sehen. Deshalb weiß ich, dass es
eins mit dem Helm ist. Davon gibt es noch eine, die mit den größeren Boxen. Das hat zwei kleine. Dieser hat einen größeren. Ich bin mir nicht wirklich sicher. Öffne es. Jetzt hat es drei Boxen. Okay. Blaupause Und jetzt bekommen wir einen von ihnen. Das nächste, was wir tun sollten,
ist an der entsprechenden Stelle. Auch hier benötigen wir
eine Auswahl. Mehrfachauswahl. Für den Index benötigen
wir diesmal die Richtung. Basierend auf der Richtung werden
wir
diese Werte auf 54 Nord ändern . A 54 Ost, aber auf y n, und minus auf den
entsprechenden X- und Y-Werten T wäre die
relative Drehung. R hier. Das ist hier verrottet. Wieder ein Wahlschalter, dreh ihn ein, wir geben nur Anweisungen Wir gehen mit -90 090180. Wenn wir kompilieren,
überprüfen wir das Level. Und überprüfe, ob unsere
Requisiten erschienen sind. Ja, sie sind erschienen.
Ihre Ecken, Kanten Jetzt haben wir ein paar Requisiten
in den Zimmern. Ich finde, das sieht gut aus. Ich scheine auf allen Seiten etwas
verstimmt zu sein. Versuchen wir also für eine Sekunde,
das zu beheben. Was ist, wenn wir sie
etwas größer einstellen? 1.2? Außerdem scheinen
sie momentan
viel besser zu sein. Sie fühlen sich dort
ein bisschen besser. Sie haben eine kleine Lücke. Die Tische funktionieren nicht,
aber ich finde, wir werden nicht in der Lage sein, unser Spiel wirklich
zu verderben. Wir werden sehen, ob es so ist,
wir werden es reparieren. Nein, was machen wir mit
der vierten Option? Die vierte Option wäre
die Option, Türen zu haben. Wir haben jetzt keinen von ihnen. Zum Glück, aber nehmen wir an,
wenn wir zwei Türen hätten, könnten
wir hier keine statische Mache
aufstellen. Wir werden ein paar Boxen erstellen,
wir
werden sie zu Boxen machen
und wir werden ihnen Physik einschalten, sodass der Spieler pushen kann, aber
das ist für das nächste Mal, ich werde dich dann vorbeigehen sehen
58. Hinzufügen von Physik-Elementen zu Räumen: Hallo und willkommen zurück
zum Game-Design-Workshop
und zum prozeduralen
Action-RBS-Erstellungskurs für echte Engine Five-Dungeon-Action-RBS Action-RBS-Erstellungskurs für echte Engine Five-Dungeon-Action-RBS Zuvor haben wir
Code für unsere Raumrequisiten erstellt. Wir haben den Code hinzugefügt , der darauf basierend auf
der Anzahl der leeren Wände Wenn wir eine leere
Wand, zwei leere Wände
oder drei leere Wände haben, passen wir unsere statischen Netze, das
S-Netz, an etwas anderes an Und wenn es nicht nötig war, haben wir in
der Sekunde, in der wir
es bekommen haben, zwei Koffer vernichtet Nun haben wir aus der
ausgewählten zufälligen Mesion
sowohl die Funktion als auch die Art
der Ereignisse ausgewählt sowohl die Funktion als auch die Art der Ereignisse Und im ersten Fall
haben wir nur eine Rotation festgelegt, weil es sich um ein Objekt Und beim zweiten legen
wir eine relative Position und
Drehung fest, legen
wir eine relative Position und weil wir sie
an den Rändern des Raums haben wollen. Als Nächstes sollten
wir,
wie gesagt,
die physikalischen Objekte hinzufügen . Um das zu tun, werden wir hier unser statisches Maß ermitteln. lassen ein Ra einen Drop hinzufügen,
und dann machen wir
das für jeden Loop. Wir werden uns verbinden.
Hier. Hier. Und wir durchforsten
unsere statischen Meshes Damit wir das nicht tun,
ist, dass das Statische eine der Boxen Hab ein paar davon hier.
Wir haben eine Kiste. Ich werfe es hier ab. Und das nächste, was wir tun
sollten, ist hier das hier vorzulesen,
dann diesen Ort. Nun, für das Wort Standort, gehe
ich zum
Standort des Schauspielers , da unser Schauspieler über unserer Kachel
steht, und ich werde nur ein
bisschen zu den festgelegten Achsen hinzufügen. Etwa 20. Es ist sogar ein bisschen höher als zuvor, weil
wir diesem Schauspieler bereits die Offset-Höhe
hinzugefügt haben , und dann mache ich einen zufälligen Punkt in der Begrenzungsbox Wie zuvor, und mit
den Größen 40, 40 und eins. Ich werde
das als Standort festlegen. Der Grund, warum ich
etwas mehr Höhe gebe, ist , dass ich das möchte, aber wir werden die Physik aktivieren
und sie haben die Schwerkraft. Sie werden jedes Mal an einer
zufälligen Stelle fallen und fallen, sodass sie nicht so
aussehen, als wären sie jedes Mal an
derselben Stelle platziert
worden. Das nächste, was wir
tun sollten, ist ein Charakter zu finden. Wir wollen nicht, dass unser Charakter
diese Boxen hochklettert. Wir wollen nur, dass sie herumgeschubst
werden. Und dann fügen wir noch einen Zug
hinzu. Wir werden. Nein. Diese Komponente zerrt, tut mir leid, und wir werden von hier aus ein
Array erstellen und
Tug von H als
Physik-Item setzen Tug von H als , weil
wir
diesen Zug brauchen werden, um sie mit unserer Meta
herumzuschieben Das nächste, was
wir tun sollten,
wäre vielleicht Physik Oh, nicht dieser. Ahme mir Aktiviere Physik nicht, emuliere mir. Ich will das. Machen wir jetzt ein
bisschen Platz. Da wir diesen Mechaniker haben
, obwohl wir keine Wände haben. Wenn dieser Bauplan besitzt, wenn er keine Wände hat, wird
er diese Mechanik ausführen und im Grunde zwei Boxen erstellen Was wir tun können, dauert ein
bisschen und wir haben bereits anderen Schauspieler zusätzlich
zu unserem Schauspieler
geschaffen Dadurch können wir
einen zusätzlichen Boxenraum einrichten. Um das zu tun,
gehen wir in die Räume, die
zwei oder drei leere Räume haben . Weil wir das nicht in einem Raum machen wollen, der
nur einen leeren Raum hat, wird
es zwei unübersichtliche Räume geben. Aber wenn wir zwei Möglichkeiten haben unsere Kachel zu
verlassen, oder drei
Möglichkeiten, eine Kachel zu verlassen,
dann
wäre es akzeptabler, zusätzliche Boxen zu haben Um das zu tun,
gehen wir also
zum Abschluss dieser vier Lassen Sie uns einen Wert von fast 30% vielleicht nicht 30%,
aber wir werden es versuchen. Also werden wir eine Umstellung vornehmen, es werden 30% sein. Schalte int ein. Und wir werden addieren
und Neun tatsächlich
bis Nummer Neun ergeben, weil Null das Alte entfernen
wird. Eigentlich
brauchen wir nicht so viele. Es? Weil es schneller ist,
als das zu löschen. Ich gehe zu nur drei von ihnen. Du brauchst oder neun. Aber wir gehen
einfach runter. Reichweite. Wir werden für all das tatsächlich
die Standardeinstellung verwenden. Fehlzündungen. Wir haben null bis neun und wir haben null, eins, zwei Alles über zwei
löst die Standardeinstellung aus. Was bedeutet eins, zwei und
drei P? Was machen sie? Sie sind tatsächlich
Spa-Schauspieler aus dem Unterricht. Der Schauspieler
wäre PP Room Plops. Die Transformation wäre der Standort
unseres Schauspielers. Zwei, eins. F aus unserer Richtung, wir werden es wieder gutmachen Wir
werden unsere Werte hinzufügen, Nord wäre geschlossen,
Ost wäre geschlossen, Süd wäre geschlossen, offen,
tut mir leid, nicht geschlossen, offen, also
wäre im Grunde alles offen. Wir verwenden das System, das wir geschaffen haben, wenn
alles offen ist, und dann würde
das eine zusätzliche, zusätzliche Physik,
Quadrate, ts, schaffen. Das einzige Problem
dabei ist, dass Maze, wenn
wir diesen Raum spawnen Wir werden tatsächlich
unsere Destroy-Schauspieler
und das Matroid hinzufügen unsere Destroy-Schauspieler
und das Wir haben die Referenz hier
und fügen sie bei der Auktion hinzu Was das Zerstören angeht, bring es her. Lass uns auflisten. Nun, wir können diesen Raum zerstören, aber wir haben keine Referenz zu diesem zusätzlichen Raum
, den wir erschaffen haben. Aber mach dir keine Sorgen. Wir haben eine Referenz zu diesem
Raum, der das bekommt und es gibt eine sehr
nette Verbindung, wie wir sie nennen. Es gibt Ereignisse, die
man binden kann, sie
hören weiter zu , bis diese Henne wenn das passiert, hören
sie weiter zu Sie bekommen eine Nachricht
, wenn das passiert. Oh, wir werden
von hier wegziehen und sagen:
Nein, nicht von hier, tut mir leid, von hier, von der Hinrichtungslinie. Ich würde sagen,
finden statt zerstören. Denn wenn dieser Schauspieler zerstört
wird,
nicht dieser Schauspieler. Wenn unser Schauspieler, diesen Schauspieler
hervorbringt, zerstört
wird Deshalb ein Entwurf von
hier und nicht vom Rückgabewert Wir müssen eine Veranstaltung veranstalten. Sagen wir mal zerstört. Wenn unser Schauspieler
zerstört wird, gehen
wir zu diesem Y-Schauspieler. Aber auf diese Weise stellen wir sicher , dass, wenn unser Schauspieler zerstört
wird, auch
dieser Plan zerstört wird Lass uns spielen. Lass uns sehen, ob unsere Boxen gespawnt sind. Reagiert, wir konnten ein
bisschen Bewegung sehen, also funktioniert die Physik Nun, sie sind keine
perfekte Physik. Wir haben nicht mit Werten
herumgespielt. Das ist nett, als würden wir
versuchen, den Raum zu betreten, und es wird sein
und dann blockieren wir ihn. Wir werden hier langsam
durchgehen. Wenn wir männlich sind, werden wir sie
herumschubsen. Ja. Apropos
perfekte Physik. Wir können nicht sehen, wie Kisten außerhalb unseres Labyrinths
alle davonfliegen,
auch nicht, wenn wir sie abspritzen. Das könnte passieren, weil die
Winkeldämpfung und die Masse nicht wirklich das sind,
aber ich denke, sie sind Das kommt nicht oft vor. Und wenn es passiert, ist es lustig. Du hast gesehen, dass dieser
fast den Raum verlassen hat. Wenn wir anfangen zu spielen, sind wir auf
dem Dach. Also
werden sie zumindest dort bleiben. Aber bei vielen Angriffen
und allem anderen könnten
sie von der Landkarte verschwinden. Sie werden trotzdem zerstört
, wenn wir das Level ändern. Oh, ich glaube, das ist
es für diesen. Ich sehe
dich beim nächsten Mal. Auf Wiedersehen.
59. Importieren von Revenant und Hellgate-Tower-Blueprint: Hallo und willkommen zurück zum
Game Design Workshop
und dem Kurs zur Erstellung von
Procedural Dungeon Action ARPs der fünften Generation Procedural Dungeon Beim letzten haben wir unsere Raumboxen,
die Physik-Boxen,
erstellt und sie über unseren
Code erzeugt. Wir haben ein Array erstellt, das wir mit
unseren statischen Meshes zu Schleifen Wir haben das statische Mesh auf eine Box gesetzt. Wir setzen das Wort Ort etwas höher als
das Wort Schauspieler, also fallen sie weg. Wir haben festgelegt, dass der Charakter
nicht auf ihn treten kann, und wir haben ihm einen Tack hinzugefügt, dem pH-Wert entspricht, sodass wir
ihn unseren Angriffen aussetzen können Wir haben auch Simulate
Physics auf True gesetzt, sodass sie Physik ausführen Danach haben wir einen
kleinen Cheating-Mechanismus hinzugefügt, Beispiel haben wir
unseren Code genutzt, um unserem Raum ein paar
zusätzliche Boxen hinzuzufügen Raum ein paar
zusätzliche Boxen um es für
unseren Spieler schwieriger zu machen, sich zu bewegen haben wir
die Vorderschleife
von den zwei leeren und drei
leeren Wänden in unseren Kacheln
benutzt von den zwei leeren und drei
leeren Wänden in unseren Kacheln ,
sodass es am Ende eine Chance von etwa 30% Verpfände denselben Schauspieler mit
bestimmten Anweisungen. Es lässt die
vier Wände immer leer laufen und
unsere Boxen werden wieder erscheinen Jeder Raum hat also die Möglichkeit, zusätzliche Boxen
zu haben, außer dem Raum, der
nur eine leere Wand hat Zerstören Sie nun diese Akteure Da wir in unserem Labyrinth keinen Verweis
auf sie haben, verwenden
wir bei Destroyed das
Bind-Ereignis,
das auf unseren eigenen Akteur verweist den
das Labyrinth zerstören wird Wenn dieser Akteur also zerstört
wird, zerstört er den
Akteur, den er erzeugt hat Lasst uns jetzt weiter
zusätzliche Requisiten in unserem Kerker bauen. Und das neue Requisit, das
wir bauen werden, wird das Höllentor
sein, der Turm, ein Plan, der den Spieler mit einem
automatischen
Angriff angreift, wenn er sich in der Nähe befindet,
und er wird mit und er wird Um den
Code für diesen Turm zu vervollständigen,
bräuchten wir die
KI und noch ein paar Also werden
wir vorerst nur die Grafik dafür erstellen. Wir werden zu unseren Inhalten
gehen. Wir werden zu den Bauplänen gehen. Wir gehen, lassen Sie uns
einen weiteren aus all diesen Feinden erschaffen einen weiteren aus all diesen Feinden Vielleicht sollten Fallen bei Feinden
sein. Aber du kannst das ganz einfach machen. Wir können zu Requisiten gehen,
unsere Fallen holen und
sie zu Feinden Wenn wir jetzt
etwas in der Engine bewegen, ist es
immer gut, zum Inhalt zu gehen, mit der
rechten Maustaste zu klicken und Weiterleitungen zu korrigieren Das ist auch der Fall, wenn wir
Dinge umbenennen. Das hilft der Engine
bei den Redirectoren. Nun, was sind Redirectors? Im Grunde genommen Links und Pfade
für Objekte in unseren Inhalten. Nochmals eine grobe Erklärung. Gehen wir jetzt zu
unserem Feindesordner, klicken mit der
rechten Maustaste und wählen
Blaupausen, Darstellertyp und wir
nennen das BP-Gate Jetzt. Fügen wir ein statisches Netz hinzu. Für das Netz wählen wir
die Decke aus. Das ist groß. Wir wollen nicht, dass es so groß ist. Wir werden
es auf Größe 0,5 drehen und wir werden es um 90 Grad
drehen. Dann werden wir es
kopieren und einfügen. Berühren Sie es mit sich selbst und drehen Sie
das
zweite Mal um 90 Grad diesmal auf der Y-Achse. Jetzt werden wir beide
auswählen. Und für das Element
werden wir das Mm verwenden. Aber die erste Instanz,
die ursprüngliche. Jetzt werden
wir ein Partikel verwenden. Wir werden zur
Wurzel und zu einem Partikel übergehen, das wird wieder
Kaskade sein, nicht Na Gara Für das Partikel müssen
wir
unseren Charakter Revenant herunterladen Wir gehen zum Epilencer. Wir gehen
in die Wanne unserer Bibliothek und wir
gehen in unseren Tresor In Vault werden
wir Revenant eingeben. Falls Sie das Vermögen nicht
haben. Wir gehen auf den
Marktplatz und suchen nach Revenant Aragon
Revenant, hier ist es, und wir werden es zum Projekt
hinzufügen, oder für euch könnte
es „Zur
Karte hinzufügen“ sein, denn zuerst müssen
wir es zur Karte hinzufügen und dann wird es in unserer Bibliothek erscheinen Wenn wir
es jetzt in unserer Bibliothek haben, drücken
wir auf Zum Projekt hinzufügen, wir werden den Namen
unserer Projektgenerierung eingeben und wir werden es zum Projekt
hinzufügen. Das kann eine Weile dauern, also werde
ich hier eine Pause einlegen
und danach weitermachen Wenn wir den Charakter „
Wiedergänger“ hinzugefügt haben, wird
ein neuer Ordner zu unseren Inhalten
erscheinen, der unser vorbildlicher Wiedergänger sein soll
. Aus diesem Paket heraus
müssen wir das Partikelsystem festlegen,
das für den Braten verwendet werden soll Nicht genug. Gebratener Kopf rot Rostrot. Es gibt kein Rot und
wir müssen es erschaffen. Kein Problem. Schauen wir uns
die an, die wir wollen. Ich glaube, es ist dieser. Und es ist ein bisschen klein. Wir müssen es skalieren und das war es auch. Wir haben es überall getötet.
Deshalb eins auf x, 30 auf y, 20 darauf und für
den Standort minus y. Wir müssen einige Änderungen vornehmen. Es wird ein, aber es
müssen einige Änderungen vorgenommen werden. Lass uns das Partikel öffnen. Und wir werden den Spawn
löschen
, der für dieses Leuchten verantwortlich ist Wir wollen dieses Leuchten nicht.
Lösch das nicht. Wir brauchen den Emitter nicht. Wir brauchen nur diese Flammen. Ich und spare. Ich, richtig? Irgendwie einseitig, überall. Und okay. Neben der Farbe müssen wir meiner
Meinung nach auch die Anfangsgeschwindigkeit
ändern. Also machen wir es einheitlicher. Lassen Sie uns zunächst die Farbe
ändern. Wir gehen zur ersten Farbwanne, wir wählen nicht Grün, nicht Blau, sondern Rot, sagen wir. Sendschreiben, lass uns hier dasselbe
tun, tun. Ist rötlicher Jetzt siehst du den
Unterschied, das ist
so , desto flammender Aber in unserem Bauplan ist
es strähiger. Der Grund dafür ist, dass ich die Skala auf 30 20
geändert habe. Deshalb habe ich die Skala gemacht, damit sie eher so aussieht. Ich kann sie verkleinern, aber
ich mag die fadenförmige Kunst. Wie dem auch sei, lass uns hierher gehen und die Anfangsgeschwindigkeit
ändern. Es breitet sich also
ein bisschen mehr aus. Oder Vertrieb. Wir brauchen keine einheitliche Strömung. Wir brauchen einen Vektor. Die
Uniform ist von bis max. Das ist eine Richtung. Dieser Weg, das ist eine Zeile. Aber was wir verwenden, ist ein Vektor. Ich konnte es sehen. Vektor. Ich bin auf Start Velocity Radio. Entschuldigung, ich möchte, dass es
auf Startgeschwindigkeit läuft. Ja, hier haben wir einen Vektor. Okay, das ist ein Vektor, aber er hat nur
eine Achse auf der Achse. Wir müssen die
Fähigkeit erhöhen, hier
und hier minus zehn minus zehn zu setzen . Wir haben also
von unserem Ausgangspunkt aus Hin und Her, wir machen drei,
im Grunde alle Seiten. Wenn wir also zu unserem Brunnen zurückkehren nichts tun,
habe ich das gerettet. Ja, funktioniert es? Lass uns einfach einen Velocity-Con hinzufügen. Um das zu tun, klicken wir
einfach mit der rechten Maustaste und gehen zu Velocity in Velocity, wir wählen Velocity
Con. Das wird es schaffen. Wenn wir zurückgehen, habe ich gespart. Er hatte es nicht einmal. Ich glaube, ich weiß, was passiert,
weil ich X auf eins setze, wir setzen das auf 30, 2015, 15 Looks A. Ich werde das auch verringern. 15 20 15 15 Ja. Es ist ein bisschen zu viel, glaube
ich, markiere es
ein bisschen niedriger. 15 es war zu viel. Und fünf. Und was die niedrige Acht angeht. Nein. Zehn, mit zehn war es in Ordnung. Zehn war in Ordnung. Lassen wir es einfach so
stehen. Ich habe auch gesetzt. Stimmt? Weiß nicht wirklich
, wer es nicht weiß. Reduzieren wir seine Lebensdauer, gehen wir auf Lebenszeit und gehen wir auf max. 1-2 0,8. Nein. Mein 0,5, lass es uns 22,5 haben. Oh, es ist noch schlimmer. Ich werde
ein paar neue Einstellungen finden und wir werden
sie bei der nächsten vornehmen. Auf Wiedersehen für heute.
60. 3D-Lektion 59 Hellgate-Turm-Visualisierungen und Labyrinth-Integration: Hallo, und willkommen zurück zum Game
Design Workshop Rail Engine Five Procedural Dungeon
Action Zuvor haben wir mit der Erstellung
unseres Höllentor-Blueprints begonnen. Und wir blieben bei dem Partikel
unseres Widergänger-Charakters. Also habe ich mit den Werten gespielt und fand
das akzeptabel Was ich gemacht habe, war das
Partikelsystem, ich habe eine Skala von zehn bis
alles ausgewählt, einheitlich. Und beim Partikel selbst habe ich die
Anfangsgeschwindigkeit auf
maximal fünf Minimum bis
minus fünf vom x-Wert geändert . Der Y-Wert wäre wieder fünf
bis minus fünf, und der Z-Wert
wäre konstant fünf. Jetzt habe ich für die gesamte Lebensdauer
0,4 in der
Minimalverteilung und 0,5 in der
Maximalverteilung hinzugefügt 0,4 in der
Minimalverteilung und 0,5 in , weil wir ein wenig
unausgewogen sein
wollen , aber
nicht so sehr wie zuvor Und für SPE habe ich bei der
Löffeleinstellung auf Rate von zehn
auf 20 umgestellt ,
sodass es sich auf Rate 20 erstreckt Und ich glaube, ich habe auch die
Sphäre verändert. Nein. Ich habe es auf Acht stehen lassen. Also, was sind die Änderungen?
Ich denke, das sollten Sie inzwischen
haben. Und das ganz schnell, Skala
von zehn bei einer Rate von 20, Lebensdauer von 0,4 und 0,5. Die ursprüngliche Größe lassen wir unverändert. Anfangsgeschwindigkeit ändern wir 00-55 von mindestens 00 auf
minus fünf und minus fünf
und auf der Z-Achse auf fünf Als Nächstes
haben wir die Farbe
von Co auf Rot geändert von Co auf Rot Und wir haben den Velocity-Code hinzugefügt. Jetzt, wo wir unser Teilchen haben, gehen
wir zu unserem Gate, und wir müssen noch ein paar
Variablen und Variablenkomponenten hinzufügen . Wir werden ein, ein Punktlicht hinzufügen. Wir werden es vorerst
so lassen, weil wir den Code manipulieren werden, wahrscheinlich den Code für die Veranda Wir werden eine Kapsel hinzufügen
und die Kapsel ist nur für
Kollisionen gedacht , damit wir sie
tatsächlich essen können Also werden wir es ein bisschen
skalieren. Ups, ich habe es ausgewählt. Und wenn wir nicht erschrecken müssen, können
wir einfach die Werte anpassen, sagen wir 100
und nehmen wir an, die
Kapselradios
wären es Ja. Hier werden
wir unseren Schauspieler treffen. Jetzt werden wir
das nutzen, um unseren Schauspieler zu schlagen. Wir gehen zu unseren
statischen Kennzahlen, wählen sie beide mit der Steuerung aus
und klicken auf sie, und wir gehen zu „Keine
Kollision“ und
erzeugen keine Überschneidungsereignisse, da dies
unsere Leistung erhöhen würde. Als Nächstes
fügen wir eine Komponente hinzu,
hier Kollision. Wir
lassen sie vorerst so, wie sie ist, weil wir sie
für die Programmierung von Angriffen
und ähnlichen Dingen verwenden werden. Aber das nächste, was wir
hinzufügen werden, ist eine rotierende Komponente. Rotierende Bewegung. Was ist rotierende Bewegung? Es ist eine Komponente, die Rotation
erzeugt. Es hat einige voreingestellte Einstellungen, aber wir werden statt 80 andere Einstellungen ändern Wenn ich auf Simuliert drücke, werden
Sie sehen, dass es sich
auf diese Weise dreht Und das liegt daran, dass der gesamte Schauspieler
rotiert. Was wir jetzt machen wollen, ist
einfach dieses Dachbodennetz zu drehen. Wir wollen nicht den ganzen Schauspieler
rotieren lassen. Das sind eine Menge zusätzlicher Informationen, die
nicht ausgetauscht werden müssen. Zum Beispiel die
Kapsel, das Licht und was und sogar die
Kugelkollision, bei der wir entscheiden, ob wir den
Spieler angreifen oder nicht Also wählen wir
die rotierende Komponente aus, gehen zum Ben-Graph, bringen sie hierher, wenn die Wiedergabe beginnt, und wählen Komponente aktualisieren Diese aktualisierte Komponente. Und wir werden es hier
verbinden, und für die aktualisierte Komponente werden
wir die Wurzel
der beiden statischen Meshes verwenden, was für uns momentan das statische Mesh eins
ist Ich werde es hier verbinden. Wenn ich zu den Viewports
und der Stimulation gehe, dreht
sie sich auch korrekt Es scheint also, dass ich
das statische Netz anders gedreht habe als in meinen Knoten Denn wenn ich es anders gedreht hätte ,
wäre es so gewesen. Tun. Ja, irgendwie habe ich es vermasselt. Es wird aktualisiert, es hat dieselbe Rotation, es
rotiert anders. Das sind tolle echte Momente. Das alles ist passiert , weil ich
die Rotationen hier geändert habe Ich werde einfach alles
zurücksetzen. Ein echter hat ein Problem, wenn
wir etwas erziehen. Ich werde es von hier aus einfach
abwechseln. Ich werde das als Elternteil übernehmen und ich werde das abwechselnd übernehmen. Wenn ich simuliere. Ich werde hier einfach 180
ändern. Ich denke, es wird
behoben. Ja, es ist behoben. Überprüfe beide Werte. Es hängt davon ab, wie wir uns
verbunden haben und mit welcher Rotation das
Kind zum Netz verbunden ist. Unser System
ändert die Rotationen anhand
der lokalen Koordinaten automatisch auf
Grundlage des untergeordneten Objekts Wie dem auch sei, jetzt haben wir
ein paar Bilder am Laufen, lassen wir es in unserem Labyrinth spawnen Oh. Wir haben diesem Pro-Spawner das
Spawnen unserer
Raumkoordinaten überlassen Spawnen unserer
Raumkoordinaten Und danach werden
wir es für jeden tun. Und wo
erzeugen wir dieses Heliat? Wir werden
eine neue Variable erstellen, eine
temporäre Variable, eine lokale Wir werden es DM Holes nennen. Es wird auf den Punkt gebracht. Und es wird ein Container-Array sein
. Ich werde es hierher bringen,
um das hier zu verbinden. Nun, was werden unsere
temporären Kabel sein? Das werden die abgelegenen
Bereiche und die Balkone sein. An diesen Orten
sollten wir Feinde haben. Ich werde die temporären
Kabel mitbringen und ich werde sie anhängen und dann wieder
anhängen Verbinde die Balkonreifen. Es sollte kein In-Punkt sein, ich sollte vom Typ Structure
S Room ST Rooms sein , ein Veränderungsvariablentyp, oder? Weil unsere Balkone das
verbinden, wieder miteinander verbunden. Weil unsere Balkone
und isolierten Bereiche im Grunde genommen
Koordinatenlisten
sind Also verbinde das hier,
verbinde das hier, trenne das und
schließe es für alle Fälle wieder an Und jetzt werden wir die Struktur
aufbrechen und für jede für jede
der Koordinaten Und wir brauchen ein paar
Regeln, wie
wir diese Elentore spawnen werden Nach welchen Regeln dürfen sie
spawnen? Die Regel wird einfach sein. Als wir unser Labyrinth gebaut haben
, ist das nicht passiert Wir haben einen hier. Wir haben einige Boxen, auf denen dieses
Symbol steht. Also werden wir fragen. Hat die Box irgendwelche Symbole, weil wir
eines haben, das zu stark leuchtet,
eines, das zu schwach leuchtet,
dieses, das an und aus leuchtet Also wählen wir diese Punkte, um unsere Höllentore
zu spawnen. Und wir werden
dieselbe Technik verwenden , die wir für die Lichter verwenden Sie spawnen also nicht sehr
nahe beieinander. Kehren wir nun
zu unserer Funktion zurück. Hören wir auf zu spielen
und holen wir uns Kerker und ziehen
unser aktuelles Plättchen Unser aktuelles Kachel,
wir werden den Boden bekommen. Unten, zuerst werden
wir Materialien besorgen. Wir werden eine Menge Dinge
von diesem Stockwerk bekommen, also werde ich es am Anfang einfach
vorlesen. Wenn wir nun zu unseren Stockwerken gehen, gehen wir
für den Inhalt auf unsere Stockwerke. Wir können sehen, dass das Element des CG
das Element Null ist, und das Gleiche gilt für
alle Materialien, die dieses CG als diesen
Schmutzboden, Element Null, haben
können Da wir
es so entworfen haben,
wo ist hier das Labyrinth,
und denken wir immer an Element
Null, dieses wo ist hier das Labyrinth, Material. Wir werden fragen,
ob dieses Material und unseren materiellen Instanzen
entspricht, das wäre GL, was
das CGL CGL in
einem und das G in
zwei einer dritten ist das CGL CGL in einem und das G in
zwei einer dritten Aber wie mir mitgeteilt wurde, wird
es in keiner
Standardsituation verwendet Du wirst einen Ast anlegen. Sie werden einen Knoten verwenden, und wir werden diesem eine zusätzliche PIN
hinzufügen und
diese drei verbinden. Selbst wenn es einer von beiden ist, werden
wir es wissen und unsere Kette von Ereignissen fortsetzen. Aber ich denke, das ist ein netter
Zwischenstopp für diesen. Ich werde
dich im nächsten sehen. Tschüss.
61. Element-Grundlagen und Datentabellen: Hallo und willkommen zurück zum
Game Design Workshop und dem Kurs zur Real Engine Five Procedural Erstellung von
Real Engine Five Procedural
Dungeon Action Apes Zuvor waren wir mit der Platzierung
unserer Höllentore fertig Platzierung
unserer Höllentore Und wenn wir anfangen, haben wir es auch
repariert. Mit einem Breakpoint. Eigentlich haben wir keinen Breakpoint verwendet
, um das Problem zu beheben,
aber wir haben den
Breakpoint demonstriert. Ich werde ihn entfernen. Setzen Sie die Stimulation fort und wir beheben das Problem mit dem leeren Material
und dem Nullmaterial. Wir haben ein paar Höllentore, wir haben so ziemlich viele. Hier liegt ein Fehler vor. Lassen Sie uns herausfinden, warum das passiert. Lass uns zurück in unser Labyrinth gehen. Und wir fragen nirgends Ja, wir fragen nirgends, ob es sich bei
den Koordinaten um einen speziellen Raum handelt Also geben wir
hier oder Null ein und fügen auch die Regel hinzu, dass
unsere Koordinaten
in den speziellen Räumen
enthalten sind . Besondere Fliesen. Das sollte jetzt nicht mehr
passieren, denn wenn es sich um ein spezielles
Plättchen handelt oder es sich neben einer Tür befindet, setzen
wir das
Material auf Null, leer und dann
wird es nicht mehr erscheinen. Lass es uns noch einmal überprüfen. Das ist ein versteckter Raum. Das ist der Grund, warum niemand, kein Tor. Also scheint alles richtig zu sein. Und als Nächstes
sollten wir anfangen den
Rest der
Dinge wie den Aufzug,
die Box, M ein bisschen
von unserer Funktionalität zu entfernen. Aber das zu tun. Aber ich brauche
noch eine Sache, um mich fertig zu machen. Wir müssen die Gegenstände
und die abwurfbaren Gegenstände erstellen, weil der Aufzug einen Gegenstand
benötigt, die Kiste Gegenstände abwerfen
muss und so weiter und so weiter Gehen wir also zunächst zu
unserem Blueprint-Ordner, klicken mit der
rechten Maustaste und erstellen einen Nennen wir diese Artikel. Rufen wir diesen Ordner auf, klicken mit der
rechten Maustaste und erstellen einen
Blueprint plus Schauspieler Und nennen wir diesen Artikel BP. Nun, dieser
Blueprint-BP-Artikel, lassen Sie uns ihn öffnen. Dieser Bauplan wird
zu allen Objekten. Und dafür werden
wir eine so genannte Datentabelle
verwenden. Für
Neulinge ist eine Datentabelle
wie eine Sammlung von
Daten in Zeilen und Spalten Es ist im Grunde einer
Tabelle ähnlich. Und deshalb braucht es
ein Format für die Spalten. Und um ein Format für die Spalten
zu verwenden, verwenden
wir eine Struktur. Lass uns
das wirklich schnell erstellen. Was wir zuerst
erstellen müssen, ist eine Struktur, damit wir unsere
Lumen in unserer Datentabelle definieren können Also werden wir eine Struktur
verwenden, wir werden sie ST-Elemente nennen Geben wir sie ein. Diese Struktur wird nun die Informationen
unserer Artikel enthalten. Zum Beispiel benötigen wir als
Erstes einen Artikelnamen: Playnam Der Artikelname ist in Ordnung. Die
zweite Sache, die wir benötigen, ist ein Gegenstand, bei dem
es sich um einen Apfel handelt. Okay. Und was
hat dieser Gegenstand für eine
visuelle Darstellung? Es wird ein statisches Netz haben, also brauchen wir ein statisches Netz. Der Elementname sollte vom Typ Zeichenfolge oder Name sein, aber Zeichenfolge ist besser, wenn wir
Elemente mit Bindestrichen
und anderen Dingen haben Elemente mit Bindestrichen
und anderen Dingen Also brauchen wir das Netz. Nennen wir es Mesh, und es wird von diesem
Typ sein. Statisches Netz. Einfaches statisches Netz, keine
statische Netzkomponente, und es wird eine
Objektreferenz sein. Als Nächstes benötigen wir
einen Sound für das Objekt. Zum Beispiel, welches Geräusch
dieser Gegenstand macht , wenn ich ihn
aufhebe, fallen lasse oder benutze. Wir könnten dafür zwei
Sounds haben, aber wir werden nur einen Sound
verwenden. Also werden wir den Sound des Gegenstands
haben. Und das nächste, was wir brauchen,
wäre ein Inventarbild. Also hätten wir I Mach. Ich werde zuerst die Namen
erstellen und dann die Variablen setzen. Es werden natürlich keine
statischen Nachrichten sein. Gegenstände klingen nach dem Bild eines Erfinders. Danach werden
wir einer Variablen
erklären, ob wir sie im Inventar auswählen
können oder nicht. Nennen wir es Inventar. Dann wäre der letzte tatsächlich vorletzte, wenn der Artikel es ist. Also nennen wir es Taxi. Ich glaube nicht, dass das die
Schreibweise ist. Ich brauche vielleicht ein K. Ich bin mir nicht sicher. Es ist
in Ordnung. Es ist in Ordnung. Und wenn es skalierbar ist, dann brauchen wir auch einen Betrag Oh. Nennen wir diesen Betrag. Nun der Fall, dass
es zum Inventar hinzugefügt wird. Wir werden Goldabholungen
haben. Gold wird
nicht in ein Inventar
aufgenommen, sondern in
einen Zähler auf unserem Bildschirm Oh, wählen wir dieses
Aban. Gehen wir zum Sound. Es muss von
und Bound Cube sein , weil
wir Soundwürfel verwenden Und das erfundene Bild
sollte vom Typ Textur sein. Eigentlich Textur zu D. Der Unterschied zwischen Textur
und Textur zwei D , dass Textur eine
allgemeine Kategorie ist
, zu der Tube-Maps,
zwei Erkennungen, Renderziele,
Volumentexturen und vieles
mehr gehören zwei Erkennungen, Renderziele,
Volumentexturen und vieles
mehr Wobei Textur für d ein von uns
verwendetes
Texturbild mit zwei De-Texturen spezifiziert ist ein von uns
verwendetes
Texturbild mit zwei De-Texturen Oh, ich werde das speichern. Ich werde
den Stru tatsächlich schließen. Wir müssen
Staab auf Goldbarren setzen, und wir müssen den
Betrag auch auf Ganzzahl setzen zählen also eins, zwei,
34, und Staab ist ja Ich werde
das speichern und schließen und zurück zu unseren Artikeln gehen Oh, für unseren Artikelplan. Nein, nein, nein, lassen Sie uns nicht zu unserem Artikelplan
zurückkehren. Du musst es herbringen. Wir werden das Rennen vor
dem Laufen beenden , weil das
Spiel nicht laufen muss. Als Nächstes
müssen wir,
wie gesagt, eine Datentabelle erstellen, diese Sammlung von Informationen über
Zeilen und Spalten. Oh, wir werden dorthin gehen,
wo Mizellen sind. Hier ist es, Millneous, und wir werden Wenn wir
eine Datentabelle auswählen, müssen wir
eine Zeilenstruktur auswählen Also müssen wir unsere Zeilen definieren. Aus diesem Grund haben wir zuerst
diese Struktur erstellt. Also werden wir unsere ST-Artikel
auswählen. A, ich werde die DT-Artikel
benennen. Lass uns das jetzt öffnen. Wie Sie sehen können, ist es momentan
so gut wie leer, aber wir könnten aus einer
externen Quelle importieren , wenn wir ein
CSV-Dokument oder etwas Ähnliches hätten. Ich denke, Json gilt auch. Aber für uns werden wir
nur einige Artikel erstellen. Wir werden
ihre Werte und Botschaften manuell platzieren . Und was ich meine? Wir werden
das hier drücken. Wir werden
es etwa sechsmal drücken, wir werden sechs Artikel haben. Und der erste Artikel wäre, sagen
wir, eins, und wir
werden ihn Gold nennen. Nun, wie lautet der Zeilenname? Der Zeilenname wird verwendet, um
die Informationen jeder
Zeile in ihren Spalten abzurufen . Wir werden in der
Praxis zeigen , wie es verwendet
wird, aber wenn wir
diese Datentabelle füllen. Oh, oder ein Netz, ich glaube,
wir haben einen Beutel. P, wir haben einen Beutel. Und für den Sound des Gegenstands haben
wir eine Münze. Hier haben wir eine Münze. Bild vom Inventar,
wir haben unseren Beutel. Es wird kein Inventar mit zwei Personen
sein. Es wird zu
einer Benutzeroberfläche in unserem Viewport hinzugefügt, also werde ich nicht auf die beiden Inventare
drücken. Und Saka-Blau, es wird nicht benötigt da es sich nicht um einen
Inventargegenstand Und für den Betrag wählen
wir gleich einen aus. Wir werden einen Code erstellen,
um diesen Betrag zu ändern, aber das
hängt vom Feind ab, der Truhe, davon,
wer sie fallen lässt. Lassen Sie uns nun
das zweite Objekt erstellen. Nun, das werde ich zwei sein. Das wäre unser HP-Pot-Trank. Eigentlich ohne s. Für das statische Meth
haben wir, glaube ich, eine Portion Du hast eine Menge Zaubertrank. Im Grunde ist alles ein
Trank. Nein, wir werden den Trank rot
machen. Für den Sound des Gegenstands haben
wir einen Flaschensound Ja. Für unser Inventarbild haben
wir einen roten Trank. Nun, das wird dem Inventar
hinzugefügt,
und das ist es, und es ist
von einem Arm von eins Jetzt wird unser Code unendlich viele Stapel
erstellen Aber wenn wir eine MC-Steuer wollten, sollten
wir sie als Variable
in unserem Strukturarray haben Es wäre also eine Option in
unseren Spalten hier. Nun, was den dritten Punkt angeht, werden
wir ihm einen Namen geben. Drei. Es wird
den Namen Speed tragen. Zaubertrank. Und für das Spiel haben
wir einen blauen Trank Und für unsere Artikel werden
wir die Flaschen wieder verwenden Und für das Inventarbild haben
wir den blauen Zaubertrank. Wird Inventar sein. Aber nehmen wir an, dass der Speed Potion stapelbar sein wird Er wird auf einem Inventar
stehen. Einmaliger Gebrauch. Nehmen wir an, dass
wir von
unserem Blautrank zwei
Schlucke nehmen wollen, um ihn zu beenden Ich kann also einen Betrag von zwei angeben. Das wäre der Standardwert. Wenn ich es
ins Inventar
habe, kann ich es zweimal verwenden. Unser vierter Gegenstand wäre ich vier. Und das wäre ein Trank
, der, wenn wir ihn trinken, explodiert und
eine Explo-Wut auslöst Sagen wir um uns herum, und es tötet alle
Zielpersonen Nennen wir es Wuttrank. Setzen wir sein statisches Netz auf diesen bräunlich-bräunlichen Trank Lass uns die Flaschen wieder benutzen. Und für die Inventur im März haben
wir Ocean Dark Red. Okay, dunkelrotbraun, es könnte auf der
Welt anders aussehen. Wir werden sehen. Also werden wir es
dem Inventar hinzufügen und es wird nur einmal von Nutzen sein. Nun, was unseren fünften Artikel
angeht, werde ich fünf sein. Und nennen wir das Trank. Weil es
unsere verfügbare Zeit
zum Weiterspielen erhöhen wird unsere verfügbare Zeit
zum Weiterspielen Wenn die Zeit abläuft, werden
wir sterben. Wir werden
den gelben Trank verwenden. Wir werden die Flasche benutzen. Und für das Inventarbild werden
wir
das Ozeangelb verwenden. Es wird
in unserem Inventar sein. Es wird eine Menge von eins und es wird
nicht stapelbar sein Oh, als letzten Punkt nennen
wir das I Und es wird den Namen
E tragen . Es wird das Schlüsselnetz haben und der Gegenstand klingt. Ja, Schlüssel fallen hier vor uns ab. Die Inventarkarte sollte auch der Schlüssel sein. Es wird bis zur Menge von eins hinzugefügt und ist nicht stapelbar Lass uns sparen. Lassen Sie uns unsere Datentabelle
schließen. Und ich denke, das ist
es für diesen. Wir werden mit dem nächsten
weitermachen, indem wir dafür sorgen , dass dieser Artikel-Blueprint zu allem
werden kann Vorerst auf Wiedersehen.
62. Artikelverhalten und Hover-Widget: Hallo und willkommen zurück
zum Game Design Workshop, prozeduralen
Dungeon-Action-Rollenspiel-Kurs zur Erstellung von
echten Engine
Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von
echten Engine
Five-Action-Rollenspielen Als letztes haben wir mit
der Erstellung der Datentabelle und der
Struktur für die Datentabelle Wir sagten, unsere Artikelinformationen
wären der Artikelname, das Netz, der Artikelsound, das Inventarbild, die
T-Inventarfrage, die wir haben, die Stapelfrage, die
wir haben, und eine Menge Und dann haben wir hinzugefügt, dass wir diese Struktur
verwendet haben, um unsere Datentabelle
für die Volumen zu erstellen Und dann haben wir
die Datentabelle
manuell mit den Werten gefüllt , die wir für Elemente haben möchten Und wir haben das
Blueprint-Element erstellt. Lassen Sie uns nun mit
dem Blueprint-Element fortfahren. In diesem Teil des Tutorials werden
wir die Komponenten
und den Construction Creep füllen Wenn wir also unseren Artikel bewerben, wird
er die gewünschten
Eigenschaften haben Oh, lassen Sie uns ein
wenig erklären, wie unsere Artikel funktionieren werden. Ich werde Paint öffnen. Nehmen wir an, der hier
drüben ist unser Schauspieler. Das ist unser Artikelplan. Zuallererst wird es
das Netz haben , das wir repräsentieren
werden Wenn das also ein Apfel wäre, ein grüner Apfel, würde er das Maschennetz des Apfels
verwenden. Da wir nun möchten, dass unsere Gegenstände etwas besser sichtbar sind, werden wir auch eine
Punktlichtquelle hinzufügen, lassen Sie uns das mit Blau machen. Das ist eine Lichtquelle.
Nun, lass uns korrigieren. Ich habe es korrigiert. Keine Kommentare. Das ist die Lampe, das
ist die Lichtquelle. Aber das Besondere an dieser Lichtquelle ist, dass sie nur dieses Netz anzündet und es den
Rest der Welt
nicht beeinträchtigt. Die dritte Sache, die wir brauchen
werden, ist etwas, das dem Spieler den Namen des
Gegenstands zeigt. Also werden wir ein
Widget erstellen, dem wir
zwei Elemente hinzufügen , denen wir den Namen geben. Und schließlich werden wir
eine Kollision um
den Gegenstand herum haben, damit wir erkennen können , ob
sich unser Spieler
außerhalb der Kollision oder innerhalb der Kollision befindet , damit wir
den Gegenstand auswählen können, der sich in Reichweite zwischen dem
Spieler und dem Gegenstand befindet. Befindet sich der Spieler also
innerhalb dieser Kollision, kann
er ihn auswählen. Wenn er es nicht ist,
kann er es nicht auswählen. Nein, lass uns das angehen. Wir werden bei Mesh brauchen. Nennen wir diesen Gegenstand Mesh. Du wirst
eine Bierkollision brauchen. Rund um unseren Artikel.
Gehen wir zu unserem Viewboard, damit wir ein
bisschen besser sehen können Du wirst ein Punktlicht
benötigen. Und wir werden
ein Widget benötigen. Ein Widget werden wir etwas später
machen. Wir werden Hide Debt besuchen. Und für das Dachbodennetz müssen
wir es auswählen. Wir gehen zu den Details
und gehen zur Kollision, und wir werden Atone auswählen Wir werden alles
außer der Sichtbarkeit ignorieren Ama Eigentlich überschneiden wir uns nicht,
wir werden blockieren. Als Nächstes
sollten wir nicht zulassen, dass es Schatten wirft, weil es sehr teuer
wird. Wir werden gehen,
um Schatten zu werfen. Wir werden es ausschalten. Jetzt ist es an der Zeit, die Sache mit dem
Blitzkanal zu machen. Wir wählen Kanäle aus, das sind die Lichtkanäle, welche dieser Kanäle
dieses Objekt beleuchten, und wir werden den Kanal auswählen,
der aktiv sein soll. Gehen wir
zu unserem Point Light? Dann haben wir Kanäle hier oben. Wählen wir die
beiden Kanäle zwei und wählen wir
den Kanal Null. Alles auf der Welt
ist also von Kanal Null betroffen. Aber dieses Licht wird in diesem Kanal nicht
emittiert. Es wird in Kanal zwei emittiert
, von dem unser Netz Licht empfangen
soll. Schließ das, schließ, verändere die Welt grundlegend und gehe zurück zu unserem Punktlicht. Ich werde
einige Einstellungen wählen, für die wir 1280 vorgegeben haben, Knes, Abschwächungsradius sieben, und der Rest wird so
belassen Abschließend wählen wir
die Kugel aus und setzen ihren Speerradius auf Aber das ist der Radius in dem wir den Gegenstand abholen können Und das ist ein
ziemlich einfacher Code. Was wir also tun werden, ist diesen
Code schnell und wirklich
auszufüllen. Beginne das Überschneidungsereignis, wir werden eine
Variable erstellen, eine Boulan-Variable,
Aufrufe, die in der Lage , einen Bereich oder
was auch immer auszuwählen Ich setze es auf
Ich habe Endüberlappung ausgewählt. Ich wollte „Überlappung
beginnen“ wählen. Aber ich brauche auch die Endüberlappung, also werde ich beide mitnehmen. Bei der Überlappung
am Anfang wird es wahr sein. Wenn es unsere andere Komponente ist, hat
es den Schlepper E, das ist unsere Spielerkapsel, und wenn es das Tag P hat,
dann ist es der Gegenstand, der abgeholt werden soll Und das Gleiche
werden wir bei der Endüberlappung tun. Beeilen Sie sich und stellen Sie
das Flugzeug zum Abholen ein. Und da wir wollen, dass diese Kugel nichts anderes
mit etwas anderem macht, können
wir ihre
Kollisionseinstellungen ändern Außerdem können wir standardmäßig
alles ignorieren, außer dem p,
das sie überlappen wird Denn wenn wir
alles auf dem Computer belassen, wird ständig berechnet,
ob sich die Sicht erwärmt, ob sich eine Kamerasturlinie erwärmt, ob
Hilfsgegner zu Wortspielen werden, also werden wir die Gegner
überprüfen Aber unsere Physik macht unsere Boxen kaputt. Wenn wir Fahrzeuge beschreiben würden, würde
sie all
diese Dinge ständig berechnen, auch wenn die Antwort nein lautet. Da es hier keine
physikalische Kollision oder so gibt, haben
wir nur statt
Querian-Physik haben
wir nur statt
Querian-Physik Aber das ist die Standardeinstellung. Nein. Das nächste, was wir
brauchen, ist das Widget. Lassen Sie uns also schnell dieses Widget
erstellen. Gehen wir zu unserem Y-Ordner und wählen Sie mit der rechten Maustaste auf die
Benutzeroberfläche, Widget-Blueprint Nennen wir das W G-Objekt. Antwort: Eigentlich Artikel-Widget. Dieses Wort. Wort des Artikels. Dieses Widget wird nicht
für viele Dinge benötigt. Also lass es uns ganz
schnell auffüllen. Lass es uns öffnen. Ist nur das von dem Widget,
das keine Convas benötigt Das liegt daran, dass wir
jemand auf der Welt sind,
und wir können sie nach unserem Bauplan
sterben lassen,
nach anderen Orten, dann nach den Aber was wir brauchen werden
, ist ein Knopf. Und für den Button brauchen
wir ein XT. Und was wir tun werden, ist ein bisschen zu
schummeln Wir wählen die Schaltfläche im Stil, einen ihrer Farben
und
dann Alpha-Null auf Normal, sodass wir nur
den Artikelnamen sehen können Und wenn wir den Mauszeiger bewegen, lassen
wir
den Farbton einfach auf 0,1 stehen Es ist ein bisschen sichtbar. Wir sehen etwas
hinter dem Namen. Nehmen wir an, wenn
wir es drücken, kehrt
es auf Null zurück. Alpha. Also, wir haben eine Schleife durch
diese drei, als ob ich mit der Maus drüber gefahren bin. Es war, ich kann es sehen. Ich habe den Mauszeiger darüber bewegt, und
als ich darauf geklickt habe, ist es wieder so
geworden, als ob ich mit der Maus
darüber gefahren bin Es fühlt sich also okay an. Nun zu dem, was
die Welt eigentlich will weil wir wollen, dass dieses Widget über der statischen Nachricht
angezeigt wird, über allem anderen,
im Grunde über dem selbst. Wir werden es tatsächlich auf dem Bildschirm
zeigen. Wir werden es nicht wirklich auf der
Welt erscheinen lassen. Und um das zu tun,
gehen wir zu unserem
Widget auf unserem Artikel. Und wo Top sagt, wo es sein sollte welchem Ort sollte es in der Welt
oder auf dem Bildschirm
platziert werden ? Nein, wir
wählen Bildschirm. Und ich habe einige
vorgegebene Zeilengrößen
, das wären 240. Für die Skala werde ich von allem einfach zwei
wählen. Es muss auch ein
bisschen höher sitzen. Sagen wir 112, es ist in Ordnung. Aber wir können
die Ergebnisse noch nicht sehen. Wir werden sie sehen können,
wenn wir die Artikel fallen lassen. Oh. Fahren wir mit den Informationen zum automatischen Ausfüllen
des Konstruktionsbildschirms fort. Dies ist das erste Mal, dass
wir unsere Datentabelle verwenden. Wir werden Daten abrufen. Und aus der Datentabellenzeile wählen
wir
für Datentabelle
unsere Daten-Tabellen-DT-Elemente aus, und das gibt uns hier eine Liste, die wir eigentlich
nicht verwenden werden, und wir werden
den Rohnamen zu einer Variablen heraufstufen. Der ganze rohe Name, der rohe
Name ist ein guter Name. Wenn ich jetzt kompiliere,
können Sie sehen, dass es seinen
ursprünglichen Wert von I One beibehalten hat. Aber wir werden das extern
ändern wollen, also werden wir es
instanzeditierbar machen und beim Spawn verfügbar Aber wenn wir
auf den Gegenstand antworten, können
wir den Namen des Gegenstands wieder von
dort aus ändern , wenn wir ihn spawnen Somit kann jeder der Schauspieler, die den Gegenstand
spawnen,
eine eigene Definition dafür haben , was
er spawnen wird Jetzt werde ich für die Veröffentlichung von Objekten auf der
Bibelliste werben. Daten. Dieser Artikel kennt seine eigenen Daten. Und wir werden die
Objekte und das statische Netz abrufen, eine Information, die
wir aus unseren Daten benötigen. Also werde ich die Struktur
durchbrechen. Und stelle die
Mesh-Informationen hier her. Ich werde das hier verbinden. Jetzt kannst du sehen, ob ich
zum Viewport gehe und kompiliere. Der kleine Beutel ist hier drüben
aufgetaucht. Weil unser
Standard-Zeilenname I One ist. Wenn ich I two auswähle, erscheint
der rote Trank Wenn ich I drei auswähle, erscheint ein
blauer. Schauen wir uns alle 56 an. Hey, schau, okay. Ich denke, das ist vorerst eine nette
Belastungsgrenze. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen.
63. Animieren der Truhe: Hallo,
und willkommen zurück zum
Game Design Workshop, dem und willkommen zurück zum
Game Design Workshop, Real Engine Five
Procedural Dungeon Action ARB Zuvor waren wir
mit unserem Artikel fertig. Wir haben den Code für
die Sortierung der Artikeldaten
anhand unserer Datentabelle fertiggestellt . Wir haben eine Variable verwendet,
um ihren eigenen Namen zu erhalten, und die auch
beim Spawnen angezeigt wird, sodass wir sie setzen können, wenn
wir das Objekt spawnen Und anhand dieser Daten
haben wir die Daten
auf dem Mesh verwendet, um
die statische Mesh-Komponente
unseres Blueprints festzulegen die statische Mesh-Komponente
unseres Blueprints Wir haben auch das Widget hinzugefügt
und das Widget erstellt, also Objekte, die wir
verwenden werden, um sie der Welt zu zeigen. Wir haben gesagt
, dass es
im Grunde auf dem Bildschirm angezeigt wird, sodass wir keine zusätzlichen Teile erstellen müssen Es wird über jedem statischen Netz angezeigt. Es gibt andere Möglichkeiten, das zu tun, aber dafür müssten
die
Materialien etwas
komplizierter durchgehen . Wir werden diese Domain
betreten,
damit unser Spieler durch Wände sichtbar
sein kann, aber wir wollen das jetzt bei
den Widgets machen. Oh, da wir schon bei den Gegenständen sind, denke
ich, dass es ein guter Zeitpunkt ist, um zu zeigen, wie wir sie spawnen werden Und ich denke, es ist an der Zeit, die Truhe
fertigzustellen, den Bauplan für
die Truhe, um das
zu demonstrieren Wir gehen zu unseren Requisiten, Ordner-Requisiten in
den Ordner-Blueprints, und wir werden unsere große Truhe
öffnen Wenn du dich erinnerst, haben wir in unserem Viewport unser statisches Mesh
für den Brustkörper hinzugefügt Aber wir brauchen auch eine Hülle, ich glaube, sie heißt auf
jeden Fall
den oberen Teil, den wir
animieren werden, wenn wir die Truhe
öffnen Ich werde
ein weiteres statisches Mesh hinzufügen. Und wegen seiner statischen
Netzeigenschaft werde
ich das Oberteil auf
der Brust wählen. Und ich werde
es direkt über der Brust positionieren. Wie Sie sehen können, befindet sich der Erbsentopf bereits am Rand
der Rückseite. Aber das hilft uns, wenn wir es hoppeln lassen
wollen. Ich bin Flip. Das hilft uns
, wenn wir es rotieren wollen. Und ich muss das besser auf
fünf Nickerchen umstellen besser auf
fünf Nickerchen Ja, ich denke, es ist in Ordnung. Da drüben. Ich werde
kompilieren und speichern. Nun, da wir es für den Gegenstand benötigen, ist
eine Kollision mit dem Gegenstand die Ebene im Wutbereich, genauso wie wir es für
die Truhe brauchen Also kopiere ich diese Kugel aus
dem Bauplangegenstand und füge
sie auf die große Ich werde es so einfach lassen, weil das die gleiche
Entfernung ist, in der wir sie verwenden wollen Und der nächste Teil,
den ich von hier kopieren werde, ist eigentlich das Widget, weil es dasselbe Widget sein wird, ich werde es hier einfügen. Und außerdem benötige ich den Code für
die
Kollisionen der Kugel Ich werde das kopieren und
ich werde es hierher bringen. Nun, diese beiden Variablen diese eine Variable,
existiert in unserem Blueprint eigentlich existiert in unserem Blueprint Also werde ich rechten Maustaste
darauf klicken und sagen, Variable
erstellen, in der Lage zu
wählen, wie sie geöffnet
werden soll Also um das zu ändern. Und dieser Teil ist erst dann möglich, wenn
wir mit ihm interagieren können. Und jetzt, indem wir „Interagieren“ sagen, öffnen
wir ein neues Kapitel. So werden wir mit unseren Gegenständen
interagieren. Unser Spiel ist ein Mausklick-Spiel oder es ist wie ein Daloclon Das bedeutet also, dass wir,
wenn wir klicken, mit dem interagieren möchten, was sich unter
unserer Maus befindet Da wir uns in der isommetrischen
Ansicht befinden und abgewinkelt sind, wird das
nicht sehr
einfach sein Wir werden ein paar Mathe
, ein paar Mathe machen müssen, dem Punkt zu kommen, den Aber nach all diesen
Berechnungen und Berechnungen
kommt es darauf an, dass wir ein Ereignis
senden und mit dieser Requisite,
der Kiste oder dem Gegenstand interagieren der Kiste oder dem Gegenstand Und das
werden wir tun, indem wir die
Blueprint-Schnittstelle verwenden,
eine Blueprint-Schnittstelle , die wir
für die Artikel entwerfen werden Da unsere Artikel unterschiedliche
Darsteller sein
werden , ist
das ein netter und
optimaler Weg, das zu tun Es gibt andere Möglichkeiten, das zu tun, aber in solchen Szenarien
werden häufig
Blueprint-Schnittstellen verwendet, werden häufig
Blueprint-Schnittstellen verwendet und sie sind irgendwie die
bessere Technik Gehen wir zu unserem Inhaltsbrowser. Gehen wir zu unseren Bauplänen. Gehen wir zu unserem BI-Ordner. Lassen Sie uns mit der rechten Maustaste klicken und
eine Blueprint-Schnittstellenoperation erstellen. Hier sind wir.
Nennen wir es Bi Item Cs. Lass es uns öffnen. Lasst uns eine
Veranstaltung namens Inter erstellen. Jetzt haben wir dieses Interface, fügen
wir es
unseren beiden Bauplänen hinzu, der großen Truhe und dem BP-Gegenstand Lassen Sie uns dazu mit
dem BP-Objekt beginnen. Gehen wir zu den Clus-Einstellungen. Gehen wir zu unseren implementierten
Schnittstellen und drücken auf Hinzufügen Wählen wir dann Ich interagiere Entschuldigung, der Artikel kommt. Jetzt
kompiliere und speichere ich, und ich mache
dieselbe große Truhe. Ich habe genau den gleichen Typ über Interact auf dem Artikel kommt gemacht. Lass uns kompilieren und speichern. Jetzt haben
wir unter unseren Funktionen unsere Schnittstellen. Ich öffne die Interaktion
und doppelklicke darauf , um ein Ereignis zu erstellen. Wenn wir also die
Nachricht zur Interaktion senden, die erste Frage:
Ist der Spieler in Reichweite? Ich lege einen Branch an und
wähle A aus, um den mit dem Branch
verbundenen zu öffnen. Wenn wir uns nun in Reichweite befinden, müssen
wir wissen, ob
wir bereits
interagiert haben , denn
seit der Animation wir abspielen werden,
um die Truhe zu öffnen, wollen
wir diese Animation nicht
zurücksetzen Wir erstellen einen weiteren Bullen,
eine Kopie, fügen sie ein, um sie zu öffnen und
benennen sie interaktiv Ich werde das
herbringen. Ich wähle ein T. Und ich wähle hier ein und notiere es mir. Das heißt, wir
müssen in der Lage sein, zu öffnen, und wir dürfen
nicht interagieren. Wenn das also wahr ist, wird Falsch zurückgegeben
und Falsch zurückgegeben. Das ist falsch, dann
wird es wieder falsch. Sie müssen beide wahr sein. Das nächste, was ich tun werde
, ist Interaktion zwischen Sets. Jetzt, wenn sich unsere Truhe öffnet, sollten
wir ein Geräusch spielen.
Ich werde Sound abspielen. Und wir haben ein Brustgeräusch. Und als Nächstes
müssen wir das Widget verwenden. Also werde ich das machen, damit
er dann das Widget erledigen kann. Eigentlich können wir
diese Komponente auch zerstören , weil
sie nicht mehr benötigt wird. Nachdem wir es unsichtbar hingesetzt haben. Und jetzt müssen wir unsere Brust
animieren. Also werde ich einen Zeitplan
mitbringen. Ich werde
es von
Anfang an mit der Wiedergabe verbinden und diese Timeline eingeben. Ich werde
einen Flow-Truck bauen. Ich werde der
Variablen zwei Punkte hinzufügen. Der erste wird Null und Null
sein. Der zweite würde, sagen
wir, 1 Sekunde dauern. Eine Menge, sagen wir
Punkt p 7 Sekunden, und der Wert wäre eins. Lass es heranzoomen. Lass uns den letzten Regen nehmen oder er tut nicht
die ganzen 5 Sekunden. Lass uns zum Update gehen. Oh. Wir
bringen unser Mesh-Modell mit, das ist das Oberteil der Box. Und wir werden die
relative Rotation einstellen. Jetzt müssen wir keine
Variablen oder so etwas speichern. Wir haben das fest codiert. werden
Theat oder Alpha alarmieren, wir werden den Truck benutzen Wir werden den
kürzesten Weg nehmen. Lass uns unsere Brust überprüfen. Sagen wir jetzt 91 x. Wir wollen -20. Minus t. Ich möchte von 90 ausgehen. Auf 20. Nun, ein paar Dinge, die
wir tun müssen auch zu unserem aatischen
Netz des Wurzelkörpers zu gehen sind
auch zu unserem aatischen
Netz des Wurzelkörpers zu gehen
und zu seiner
Kollision zu gehen und es zu verändern Wir werden den benutzerdefinierten Reset auswählen
. Ich werde
alles auf Ignorieren stellen, außer der Sicht,
der Kamera
und dem Teich, weil wir
wollen, dass die Truhe uns den Weg
versperrt. Wir sollten nicht in der Lage sein, es
zu passieren. Oh, ich lasse das Dach stehen,
ohne dass es zu Kollisionen kommt. Wenn wir
es so belassen, dass es keine Kollision
gibt, besteht
die Möglichkeit , dass wir es nicht
anklicken können. Aber wir sehen. Ich möchte nicht, dass der
Spieler
durch die offene Truhe blockiert wird . Aber wir werden sehen,
wie es funktionieren wird. Nun stellt sich die Frage, was passiert, wenn
ich die Truhe öffne? Die Sache, die wir passieren
, ist, dass wir die Gegenstände spawnen werden. Wir können immer
eine Anzahl von Objekten als Präfix festlegen , sodass sie immer auf diese
Weise telefonisch erreichbar sind. Aber wenn wir unsere
Labyrinth-Informationen haben, können
wir den Level
unseres Labyrinths ermitteln und ihn entsprechend anpassen Also werde ich eine neue
Variable erstellen. Ich werde es Labyrinth nennen. Ich werde es vom Typ
Labyrinth-Generator machen. Sein Generator. Oh.
Okay. Hier war Objektreferenz, der
Basisgenerator, und ich werde ihn
auf Sone und Instance Edit veröffentlichen Eigentlich die erste Instanz bearbeiten denn wenn die
Instanz nicht editierbar ist, wird das zu einem Fehler führen. Wenn
ich zum Kompilieren zum Kompilieren zum Kompilieren
darauf klicke, wird es angezeigt, es wird angezeigt,
es wird auf
Son verfügbar sein, aber es wird nicht instanziert es wird auf
Son verfügbar sein, aber es wird nicht Es muss von der Instanz editierbar sein. Auch hier gilt: Wenn wir
einen Blueprint in die Map übernehmen, handelt es sich um eine Instanz
des Wenn wir also möchten, dass der Wert für jede Instanz
unterschiedliche Zahlen
hat, muss er für jede Instanz editierbar sein Gehen wir nun zurück zu
unserem Labyrinth-Generator. Finden wir heraus, wo wir die Truhe
spawnen,
die meiner Meinung nach für Requisiten funktioniert Der Anfang war eine große Truhe. Das werde ich auffrischen. Kein Kompilieren. Dave. Ich werde mich
nochmal auffrischen. Und hier haben wir es.
Also für den Mz-Generator werden
wir Gesundheit verwenden Jetzt haben wir einen Hinweis auf unseren
Me-Generator in unserer Truhe. Ich denke, das ist ein guter
Haltepunkt für diesen. Ich sehe
dich im nächsten. Auf Wiedersehen. Oh.
64. Brustmechanik und Item-Drop-System: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Zuvor haben wir unsere Kette
von Ereignissen für unsere Interaktionen gestartet von Ereignissen für unsere Wir haben eine Blueprint-Schnittstelle erstellt , die wir item coms nannten Und innerhalb dieser Schnittstelle haben wir eine Funktion
namens interact erstellt Wir haben diese Schnittstelle für
unsere große Truhe und
unsere Baupläne für Gegenstände implementiert unsere große Truhe und
unsere Baupläne für Gegenstände und die Kette
der Ereignisse gestartet, die große Truhe Also
haben wir nach der Event-Interaktion gefragt, ob wir uns in Reichweite befinden,
und wir interagieren
derzeit nicht Und wenn die Bedingung zutrifft, haben wir
Interact weiterhin auf true gesetzt, einen Sound
abgespielt, das Widget
ausgeblendet und es
auch zerstört. Dann haben wir
eine Zeitleiste erstellt , um unseren Test-Stopp zu
animieren Wir haben auch eine Variable
namens Maze Generator erstellt, die den
Verweis auf unseren Generator speichert, den, der die Truhe gesät Lassen Sie uns nun das
Play-Event starten und
eine Variable erstellen , die wir diese maximale Anzahl von Objekten
nennen Lassen Sie uns das Startspiel so einstellen
, dass es einen zufälligen Bereich hat. Zufällig im Bereich. Fangen wir
damit an, dass es eine große Geste ist. Es sollten mindestens, sagen
wir, drei Gegenstände wegfallen. Wenn etwas Platz, und
das Maximum sollte ein Labyrinth-Generator-Level Generatorstufe
unseres Labyrinth-Generators sollte der Stufe
unseres Generators plus Beim ersten Mal
würde es also 3-4 Gegenstände fallen lassen. Weil unser
Hauptgenerator nicht Null
startet, sondern bei Eins. Wenn wir zum Hauptmenü gehen, können
wir sehen, dass wir beim
Klicken auf die Schaltfläche Start den ersten Generator starten, wir haben die
Generatorstufe auf eins Es ist endlich soweit. Gehe
zu unserer Timeline, dem fertigen Event
und zu unserem ersten Artikel. Wir werden den
Spawn-Darsteller aus dem Unterricht benutzen. Wir werden
die Transformation aufteilen und einen Standort für den
Anruf ermitteln Zur Verwendung als
Spawnpunkt für die Ortung. Das bedeutet, dass unser Gegenstand
tatsächlich in unserer Truhe erscheint , wie in der Null, Null, den lokalen Koordinaten
dieses Bauplans
, also dass wir hier sind Aber das ist kein Problem,
denn wir werden eine Mechanik einrichten in unseren Gegenständen eine Mechanik einrichten, um einen
Platz neben unserer Truhe zu finden Aber dieser Code
wird auf unseren Artikeln stehen. Nein. Wir antworten auf den ersten Artikel. Es wird der Artikel
der Klasse P angezeigt. Und wir haben unseren Zeilennamen
, der I sechs ist, was eigentlich
unser Schlüssel ist, nicht wahr? Weil I six die
Standardeinstellung ist und es der Schlüssel ist. Und das ist der einzige Ort , an dem
wir den Schlüssel
erzeugen werden Wir werden ihn in sechs behalten und wir werden ihn zu unserer
To-Destroy-Liste hinzufügen Um das zu tun, holen wir uns unsere MA-Generator-Referenz. Wir werden die
Schauspieler dazu bringen, es daraus zu zerstören, und wir werden zu
diesem Array den Rückgabewert
des erzeugten Schauspielers hinzufügen diesem Array den Rückgabewert
des erzeugten Schauspielers hinzufügen Für den Rest der Artikel kopiere
ich einfach den BP-Artikel mit
dem Telefondarsteller Ich werde den Standort
des Darstellers verbinden und wir werden eine benutzerdefinierte Schleife
erstellen. Oder wir können es sogar in einen
For-Loop-Act zu Tom oder Loop umwandeln. Und siehst du, was passiert ist? Wenn ich diese beiden so
verbunden habe,
aber ich wollte einen Knoten
hinter diesen beiden haben . Also ziehe ich einfach von hier, ich mache den Knoten oder loope, und schon hat es automatisch verbunden,
was ich tun wollte. Aber es ist immer gut zu
überprüfen, ob die
Verbindungen korrekt sind. Für den letzten Index verwenden
wir nun die
maximale Anzahl von Elementen. Für den ersten Index verwenden
wir die
Nummer eins, da wir
bereits ein Objekt erzeugt Wenn wir also drei Objekte
spawnen wollen, sollte
es bei einem beginnen Denn wenn es bei Null anfangen würde, würden
wir
einen zusätzlichen Gegenstand spawnen Jetzt müssen
wir für jedes gespawnte Objekt erneut Schauspieler hinzufügen, um eine Kopierbasis zu zerstören.
Dieser zusätzliche Nicken Wir werden diesen
Wert hier hinzufügen und den Schauspielern zur Zerstörung zur Verfügung Gegenüber diesem Weg. Und der Grund, warum ich es
umgekehrt machen muss , ist, wenn ich eine Verbindung herstelle, das ist ein Wildcard-Knoten. Also, mit was auch immer ich mich verbinde, das Erste, womit ich mich verbinde, wird
es den
Datentyp des Dings ermitteln. Hier geben wir den
Objekttyp VP-Objekt zurück,
wohingegen unsere Liste der zu
zerstörenden Akteure Schauspieler sind. Ein Akteur steht in der
Hierarchie des VP-Elements ganz oben. Ich kann also nicht zu
etwas in den unteren Teilen
eine obere Hierarchie hinzufügen . Als ich das verbunden habe, wurde
daraus ein
VP-Items-Objekt , bei dem das
Artikelobjekt kein Akteur sein kann, aber der Akteur ein Artikelobjekt
sein kann. Also werde ich das trennen, ich werde es
hier verbinden und dann das verbinden. Alle unsere Schauspieler, die
wir hervorbringen,
werden zu den zu zerstörenden
Schauspielern hinzugefügt Nun, welche Elemente ich
anhand der Roh-ID und des Namens werde
ich auswählen
und für die Wildcard,
für Objekte die Wildcard nach dem
Zufallsprinzip Es wird 0-4 sein,
drei bis vier Cos 01234. Und fangen wir mit dem Gold an,
das ich gewonnen habe. Wissen Sie was? Da wir wissen, dass unsere
Tabelle mit I beginnt, kann
ich ein Klingeln verwenden, wenn
ich es richtig tippe. Was bedeutet eine Zeichenkette? Bedeutet, dass wir eine ausstehende
Zeichenfolge A mit Zeichenfolge B sind. Wenn ich hier I einfüge und die
ganze Zahl verbinde und ich habe I und eine Zahl,
und ich kann das hier direkt
verbinden, anstatt
das Gefühl zu haben und ich kann das hier direkt
verbinden, anstatt , dass alle diese
Liste auswählen Und das wäre der Stein unserer Gegenstände wenn wir auf unsere
Brust klicken Wir werden
das alles später überprüfen
und
alles, was benötigt wird, debuggen Aber vorerst werden wir es so lassen
, wie es ist. Der einzige Teil, der
momentan
fehlt, ist der Name der
Truhe auf dem Widget. Weil wir hier ein Widget haben. Wenn es erscheint,
müssen wir ein Name sein, und die Widget-Klasse ist nicht. Bin bei dem Artikel.
Ja, es ist dasselbe. Ich habe die
Widget-Klasse für diese beiden Widgets nicht ausgewählt. Du wirst es jetzt tun.
Wir werden es W G. Item World nennen. Das ist ein Widget. Pi Spare auf einem Stapel, und hier die gleiche Welt. Speichern und kompilieren. Oh mein Gott. Es ist eine Standardbewegung
, weil sie hier und hier ist. Und geht automatisch. Wie dem auch sei, lass uns zum Widget gehen und eine Funktion erstellen. Im Graph-Event natürlich das Event-Diagramm des Designers. Nennen wir diese Funktion. Das ist jetzt, das ist wieder ein
bisschen überflüssig. Ich werde eigentlich zuerst zum
Designer gehen. Ich werde den Text auswählen
, weil er keine Variable ist. Es sollte eine Variable sein,
damit ich eine Engine erstellen kann. Benennen wir es auch nach
dem eigentlichen Textelement. Und ich könnte
auf unserem Blueprint sein und es einfach aus dem Widget
holen, diesen Teil und den Text einfach
ziehen Auch hier bereit. Nun, wie Sie
sehen können, ist es neu gemacht, es ist im Grunde dieselbe
Funktion. Aber ich muss
das T-Element nicht auf diese Weise aus dem
Widget ziehen . Nein, es wird die
Dinge ein bisschen verbessern. Nun, um den
Text auf unsere Brust zu legen. Wir müssen unser Widget mitbringen. Und wie bei der untergeordneten
Komponente müssen wir herausfinden, was
sich in
der untergeordneten Komponente befindet ,
was ist der Schauspieler? Was ist der Kinderdarsteller
der untergeordneten Komponente? Das Gleiche müssen wir für das Widget
tun. Dies sind Komponenten,
Widget-Komponente, Child-Actor-Komponente,
statische Mesh-Komponente, auch hier dasselbe, wir
mussten hinzufügen, welche Art von statischem Mesh. Es sind Zellen, die die Informationen
enthalten, aber sie wissen nicht, was sie enthalten. Wir
müssen sie fragen. Um danach zu fragen, holen wir
uns ein Widget. Und dann müssen wir sehen,
ob das Widget, das wir bekommen haben,
unsere WG-It-Artikelwelt ist ,
etwa so. Also werde ich in die WG-Artikelwelt casten. Wir wissen, dass das alles ist, was
uns gelingen wird. Ich werde
es in Pure Cast umwandeln. Selbst wenn nicht,
haben wir Erfolg, aber wir müssten etwas Code
implementieren. Aber von hier aus werde ich nur eine SMS schreiben. Jetzt ist es so hier, einfacher. Weniger Knoten. Je mehr Notizen Sie haben, desto
mehr kann der Turm nach einem Punkt zu einer echten
Turmverteidigung werden. Also für den Text,
wir nehmen Truhe und das war's. Kompilieren und speichern. Und was die Programmierung
angeht, ist
unsere Truhe bereit. Wir werden jetzt nicht
damit spielen können . Wir
werden es nicht sehen können. Das ist schade, aber wir werden wenn unser Charakter aktiviert ist, und wir werden all das taggen können , nur für den
Fall, dass es nicht funktioniert Auf Wiedersehen, sing
dir den nächsten.
65. Versteckte Zimmertruhen: Hallo und willkommen zum
Game Design Workshop und zu den prozeduralen Call für die Erstellung von
Action-PZs für
echte Engine
Five-Dungeons Action-PZs für
echte Engine
Five-Dungeons In der vorherigen Lektion haben wir mit der Erstellung
unserer großen Truhe für VP abgeschlossen Wir beginnen mit dem Speichern einer Variablen die die
Anzahl der Elemente
angibt, die wir verschieben, und wir finden einen Zufallswert
zwischen Drei und Mx, was der
Generatorstufe plus drei entspricht Dann setzen wir Text in unser Widget. Und schließlich haben wir
die Spawn-Darsteller-Funktion
am Ende unserer Timeline hinzugefügt die Spawn-Darsteller-Funktion
am Ende unserer Timeline Wir haben das erste Objekt als Schlüssel hinzugefügt ,
den wir
immer löschen möchten, und dann haben wir diesen Akteur
zu dem Array hinzugefügt, das zerstört werden soll Dann haben wir eine Viererschleife mit
der maximalen Anzahl von
Elementen als letzten Index
und dem ersten Index erstellt der maximalen Anzahl von
Elementen als letzten Index , so wie sie sind, da wir den ersten
Schlüssel, das erste Element
erzeugt haben , und dann fuhren wir fort indem wir die restlichen Elemente erzeugt und sie
der Liste der zu zerstörenden Akteure
hinzugefügt Wir haben einen Pend
aus I plus einer zufälligen
Ganzzahl 0-4 erstellt , um ein zufälliges
Element über den Rohnamen zu erhalten, weil unsere Datentabelle I und eine Zahl
heißt und dieser Teil
einen kleinen Fehler enthält. Wir beginnen bei Null, wenn
wir bei
eins beginnen wollen, und enden bei Punkt fünf. Auch hier haben wir einen Bereich von vier, weil unsere Datentabelle zu den Elementen
unserer Datentabelle gehört. Wir beginnen bei I eins, zwei, I sechs, aber wir wollen
zufällige Elemente 1-5 Jetzt, da wir die große Kiste haben. Wir können
es tatsächlich duplizieren und die
kleine Kiste daraus machen. Ich gehe zu den Requisiten. Ich gehe
zu unserer großen Truhe und ich werde sie duplizieren
und sie PP-Truhe nennen.
Wir machen das große. Lass uns das jetzt öffnen. Lassen Sie uns ein paar Einstellungen ändern. Lassen Sie uns die Mindestanzahl auf eins und den Generator auf
eins plus eins setzen. Es werden also ein bis zwei
Gegenstände und jedes Level mehr hinzugefügt. Und da
wir
es in den versteckten Räumen spawnen werden ,
sollten wir die Regel aufstellen, dass dieser
immer einen Zeittrank erzeugt, unserer
Datentabelle
die I Five ist Geh zurück zur Truhe
und setze die beiden auf I
Five statt Jetzt lassen wir
den Rest gleich, sodass du vielleicht
zwei Zeitportionen abzapfen
kannst ,
das ist nicht wirklich wichtig Und wir gehen
zu unserem Labyrinth-Generator. Wir gehen zu Proponer. Wir werden diesen Teil kopieren, der
die Zimmer hat, aber wir brauchen die Räume nicht Wir brauchen nur all die. Wir brauchen keine Anweisungen, aber wir werden sie ändern.
Lass es uns hier einfügen. Für das Array
brauchen wir die Räume, ich glaube, wir benennen sie. Nimm unsere Arrays. Biden-Zimmer. Aber es ist ein ST, also werde ich das abschalten Ich werde das hier verbinden. Ich hier, ich werde eine Pause machen und ich werde das Tempo der
For-Schleife
kopieren und es so verbinden. klassisches Setup, und hier müssen
wir den Blutdrucktest durchführen Wir brauchen die Anweisungen nicht. Wir müssen diese
beiden Pins hier verbinden. Und wir werden hier noch
eine weitere Regel aufstellen, die besagt, dass unsere aktuellen Koordinaten nicht in der Anordnung
der speziellen Gänge
enthalten sind in der Anordnung
der speziellen Gänge
enthalten Also nur für den Fall, dass
einer unserer Spezialgassen als
versteckt gilt.
Wir werden nein sagen. Wir werden es nicht spawnen. Ich werde das hier
auf der kompletten Seite verbinden. Dies könnte auch in einer Reihenfolge
erfolgen. Jede Sequenz sollte
eines dieser Segmente ausführen. Aber wir werden
es vorerst so belassen. Wenn wir Compile spielen, schauen
wir mal, ob wir die kleine
Truhe in den versteckten Räumen spawnen Truhe in den versteckten Räumen Während wir im versteckten
Raum sind, haben wir es hier. Es gibt keine Truhe. Aber wir sehen das Widget, aber es gibt eine Truhe. Welche Truhe ist das, schätze
ich
, das ist die Endtruhe.
Lass uns sie finden Ende der Truhe. Da ist die Truhe. Da ist sie. Es sieht
ein bisschen klein aus. Es ist eine große Truhe, aber sie
sieht ein bisschen klein aus. Wie dem auch sei, lasst uns herausfinden,
warum die kleine
Truhe nicht in den versteckten Räumen Des Gameplays. Es wird wieder etwas
Einfaches sein, wahrscheinlich ein falscher Zweig. Ja, ich habe gefragt, ob es enthält und ob es enthalten
muss, nein. Das sollte nicht falsch sein. Lass uns spielen. Ich sehe hier ein verstecktes Zimmer und es hat eine Truhe, die genauso aussieht. Lassen Sie uns das jetzt reparieren. Lass uns zu unserer neuen Truhe gehen. Ich glaube, wir haben
eine andere Truhe. Ich werde nicht so
suchen,
ich gehe
zum Meshes-Ordner, hier gibt es statische Meshes, wir sind da und da
ist noch eine
Truhe wir sind da und da
ist noch eine Nein. Jetzt schauen wir
nochmal nach und es ist da. Es ist nicht so, dass wir eine Kamera
hinzugefügt haben. Wir haben zu viel für
Gap gebetet und es wurde hinzugefügt. Ich werde das für die
Unterseite und das für die Oberseite verwenden. Ich werde sie
ein bisschen näher bringen, nach vorne. Und es sieht gut aus. Nun, sie sahen
ein bisschen klein aus. Was wir tun können, ist zur großen Truhe zu
gehen und ihr E auf 1,5 zu
setzen. Wenn das zu viel ist,
1,25. Von dem Stück Okay. Nein, es ist überhaupt nicht okay. Jetzt ist es besser. Lass uns das auch für
diese Truhe machen 1,25 Ordnung. Während.
Drücken wir Play. Ich schaue nach und sehe kein verstecktes Zimmer. Das ist ein verstecktes. Wir haben unsere kleine Truhe und
irgendwo ist die große. Finde das auch Hier ist es. Wie wir sehen können,
erscheint es neben einer Tür. Wir müssen auch die Regel für
die Türen dieser Truhe hinzufügen auch die Regel für
die Türen dieser Truhe Und es ist immer noch
ein bisschen klein. Es ist nicht so beeindruckend. Der Truhenschlüssel sollte größer sein, also mache ich
ihn 1,5 unter 1,5. Aber in der
Größe der kleinen Truhe sah es ziemlich gut aus. Das war's, lass uns in unser Labyrinth gehen. Gehen wir zu der Stelle, an der wir die Anweisungen
für die Truhe
verwenden, was gleich
am Anfang bei der Erstellung von Kernen für die Truhe steht am Anfang bei der Erstellung von Kernen für die Truhe Wir haben die Regeln hier. Wir prüfen, ob es in den speziellen Kacheln
enthalten ist. Wir müssen
das funktionsfähig machen, wir haben es nebenan
gemacht. Wir werden
die Koordinaten hier verbinden. Setze oder rein, denn wenn
es ein spezielles Plättchen oder wenn es neben der
Tür liegt, spawnen Sie es nicht Füge den Schatzindex nicht hinzu. Kompilieren speichern. Wir werden nur spielen
, um die Größe zu überprüfen Wir wissen, dass die
Regel funktioniert. Hier ist es, und es ist ein
bisschen klein. Es ist zu klein. Also
gehen wir bis zum Äußersten
und setzen die Skala auf zwei, und das wird zwei sein,
egal ob es zwei ist, es sei denn, unser Spieler kann nicht aber wir werden
es wieder ändern. Jetzt ist alles in Ordnung. Nur
um es mir anzusehen. Unsere Brust. Hier ist es, richtig. Das ist jetzt eine große Truhe. Das können wir leicht in
den Korridoren finden und erkennen. Dieser steht neben
einem Turm, auch Höllentor. Wie dem auch sei, in der nächsten Lektion sollten
wir damit beginnen, den Mechanismus zu entwickeln , mit
dem die Gegenstände fallen können Aber lassen Sie mich vorher
eine ganz kurze Erklärung geben. Wir wissen also, was
wir als Nächstes tun. Wir wissen, was wir
programmieren werden. Ich werde
Farbe mitbringen. Und lassen Sie uns bedenken, dass dies wieder unser Block
ist. Das ist unser Haufen, und unsere
Truhe spawnt irgendwo hier. Wenn wir unseren Gegenstand spawnen, wird
er genau
hier in der Mitte zersägt Wenn wir drei D V sehen, nehmen wir an, dass
wir das abheften, es geht so runter und wir haben unsere Truhe
hier, die ist offen Ich würde das nie abdecken, aber wie dem auch sei, und unser
Gegenstand erscheint hier. Wir werden
ein System entwickeln, bei dem
wir an der Stelle
, an der der Gegenstand erscheint, einen zufälligen Punkt
in der Luft bekommen, der polarisiert wird. Und von diesem Punkt an werden
wir mit Linienverfolgung
in Richtung Boden
beginnen Aber wir werden die Linienverfolgung
in einem Radius um die Box herum durchführen. Wir werden
durchgehende Linien erhalten, aber viele Punkte, viele
Punkte rund um das Feld, sodass wir den Radius definieren werden. Und wenn wir die Stelle gefunden haben
, an der wir den Gegenstand landen können, und er wird auf dem Boden liegen, werden wir sagen, dass das
der Ort ist, an den du gehen musst. Und um das zu tun,
werden wir eine Animation machen , bei der der Gegenstand von
hier bis zu diesem Punkt geht. Aber das
werde ich beim nächsten machen? Das ist vorerst genug.
Auf Wiedersehen. Wir sehen uns dann.
66. Objekt-Drop-Animation in der Nähe der Brust: Hallo und willkommen zum
Game Design-Workshop
und zum echten Engine
Five-Procedural Dungeon-Action-RPG-Erstellungskurs Dungeon-Action-RPG-Erstellungskurs Zuvor haben wir die
kleine Truhe hinzugefügt und
einige Fehler behoben , die
während des Spiels aufgetreten Wir haben sie sogar vergrößert
. Und eine Sache, auf die wir nicht eingegangen sind, war, dass
wir beim Spielen tatsächlich das Widget mit
der großen Box und der großen Box gesehen haben. Große Kiste. Hier ist es. Was passiert ist
, ist, dass die große Kiste
tatsächlich in unserer ursprünglichen Ansicht war . Sie können sehen, dass es gerade
erschienen ist. Wenn ich Poss wieder auswerfe, spielen Sie
das Spiel. Sie können sehen, dass es tatsächlich an der Stelle
ist
, an der es sein sollte Aber wenn ich das verschiebe,
verschiebe ich die Kiste erneut, du kannst sehen, dass sich der
Truhe-Tooltip darüber befindet Und jetzt können wir tatsächlich
sehen, wie es aussehen würde. Es ist ein bisschen
groß, aber in Ordnung. Wir werden es dann einfach
so einstellen, dass wir es standardmäßig nicht sehen können. Also
gehen wir zu unseren Widgets, dem Blue-Print-Element, dieser
Sichtbarkeit, unsichtbar. Und das
machen wir für die Box, die große Truhe, das
Widget, die Sichtbarkeit. Sichtbar und auch für die
kleine Truhe. Wir sorgen für unsichtbare Sichtbarkeit. wir nun zu unserem Artikel zurück
und erstellen wir die
Mechanik, die wir erklärt haben Mechanik, bei der wir einen Punkt
über dem Gegenstand auswählen, einige Spurenlinien
werfen, eine leere Stelle
finden und den Gegenstand spawnen Wir werden das so
machen, dass wir einfach eine
Begrenzungsbox verwenden Und finde den Punkt in
diesem Begrenzungsrahmen. Der Nachteil dieser
Technik ist, dass
die Linie vielleicht durchbohrt und
zeigt, dass sie dorthin geht, aber das Objekt stoppt aufgrund Kollision oder
irgendwas auf der Kiste,
oder es könnte sogar eine Linie
finden, die auf die Kiste trifft,
und es würde sagen,
dass das akzeptabel ist und es würde sagen,
dass das ,
und es dort belassen Ähm, es könnte Möglichkeiten
geben
, eine Funktion zu erstellen , die
wir wie
einen Kreis erstellen , und dann gehen
wir
zu diesem Kreis, wir geben dort einen Prozentsatz von Plus oder Minus an. Oder wir könnten einen Code erstellen
, um zu überprüfen,
ob es sich um einen
Punkt
handelt , den wir gefunden haben, als
ob ich
eine Zeile von hier aus werfe und sie hier wegfällt. Gehört es
zum Beispiel zu den Koordinaten
von der Mitte bis hierher, erzeugen wir eine tote Zone, in der
keine Gegenstände abgeworfen werden. Aber wir werden diese Dinge nicht
tun. Wir werden einfach eine Kiste platzieren
und einen Punkt in der Kiste bekommen. Das würde jetzt
reichen. Nein, lass uns zu unserem
Gegenstand gehen, wenn wir mit dem Spielen beginnen. Also, vor einiger Zeit
habe ich darüber gesprochen, warum
Loops und warum wir sie nicht im Gameplay verwenden
sollten. Nun, für jede Regel
gibt es eine Ausnahme. Es gibt einige Gründe
, warum wir im Gameplay Il Loops
verwenden müssen , die
das Spiel ruinieren, wenn sie es nicht tun. Zum Beispiel haben wir eine Spielmechanik, die
das Spiel kaputt macht,
wie zum Beispiel unseren aktuellen Key, wir wollen zu
100% sicher sein , dass er verloren geht. Es wird nicht außerhalb der Karte fallen, es wird nirgendwo anders fallen, es wird fallen und wir
werden es aufheben können Unser System deckt das nicht
wirklich ab, aber es ist eine Ausnahme,
dass wir für
diese Berechnungen einen Wile Loop
verwenden könnten für
diese Berechnungen einen Wile Loop
verwenden Ich finde den richtigen Ort. Wir müssen unsere Regeln neu definieren, wenn das lange dauert, wenn das unser Spiel durcheinander bringt, wenn das
andere Dinge tut, denn
wenn wir es andere Dinge tut, denn nicht tun,
würde es das Spiel kaputt machen Jetzt gibt es natürlich noch
andere Gründe, Loops im
Gameplay zu verwenden Einige fortgeschrittenere Methoden wären
die Zuweisung von Ressourcen
und Speicher, aber allgemein gesprochen könnten Mechanismen, die
das Spiel brechen Schleifen
verwenden, um das Ergebnis
sicherzustellen Oh, was wir
jetzt tun werden, ist eine
Variable vom Typ Vektor zu erstellen,
was wir, glaube ich, noch nie zuvor
erstellt Das ist ein
Drei-Punkt-Vektor, drei ganze Zahlen, und wir werden das Get Location nennen Denken Sie daran, dass dies
in jedem Artikel vorkommt. Wenn ein Objekt erscheint, wird
dieser Code ausgeführt Wir holen es uns für jeden
Zielort. Es ist gleich Null, was unsere ursprüngliche
Standardvariable ist. Dies wird unsere Bedingung
für eine Wildschleife sein. Das werde ich hier verbinden. Die zweite
Variable, die wir
erstellen werden , ist unsere Variable is, die vom Typ Integer sein
wird. Wir müssen sie nicht
als Bedingung angeben, weil
wir uns
innerhalb der Körperschleife aufgrund
der Zielposition ändern, sodass unsere Schleife unterbrochen wird. Nein. Als Erstes
fügt der Körper 12 ts hinzu. Und jetzt
werden die komplexen Dinge beginnen, ein bisschen komplex.
Es ist nicht so komplex. Wir werden ein Tempo machen. Höllen ist wichtig. Ja. Pass mein Gel Kein Rennen mit mehreren Sphären, nur ein Kugelrennen,
denn beim ersten wollen wir nur
ein einziges Heat-Ergebnis Wir wollen keine Liste von ihnen haben. Nein. Der Ausgangspunkt. Wir werden den Standort
unseres Schauspielers ermitteln. Und wir werden Z hinzufügen, sagen
wir 200. Ein bisschen
hoch, aber es ist in Ordnung. Aber jetzt haben wir
diesen Punkt hier drüben geschaffen. Nun, für unser Ziel werden
wir einen zufälligen
Punkt in der Begrenzungsbox bekommen. Nein. Denn wie Sie sehen können,
ist das etwas ganz anderes. Dies erfordert Navigation. Wie wir sehen konnten, war
es auf der
Tab-Navigation, die sich auf der Registerkarte KI befindet. Wir wollen das nicht an einem zufälligen
Punkt in der Gründungsbox haben. Jetzt werden
wir für die halbe Größe das
Doppelte der Größe 600 verwenden. Es ist größer. Aber
das könnte es intern auf andere Kacheln werfen. Nehmen wir also die halbe Größe von 300
, einhunderteins Z. und wir bekommen einen Punkt. Im Grunde genommen bekommen wir auf dieser Ebene einen Punkt im
Boden. Nun, wenn wir hier oben sind, wie zielen wir dann auf diesen Punkt ab? Nein, wir nehmen oder oder, was eine
Richtung ist , und wir werden das mit unserer Reichweite
multiplizieren. Wie hoch, wenn wir x sind, fangen
wir von hier an, wie weit steigen wir? Denn wenn es eine
Richtung von 0,1 ist,
dann nehmen wir an,
alles andere ist Null, dann bedeutet das auf der
X-Achse, geh 0,1, multipliziert mit der Zahl
wäre diese Richtung So weit weg. Um das zu tun, werden
wir
das in eine Ganzzahl ändern und ich werde mit einer positiven Zahl
multiplizieren. Wir werden mit Minus
multiplizieren, sagen wir mit 500. Also statt nach oben gehen
wir runter. Und wenn wir das
zu diesem Punkt hinzufügen, erreichen
wir diesen Punkt als
Ziel. Ich werde das mit
n verbinden . Ich werde den
Radius auf sagen wir n setzen. Es ist
also ein
bisschen ein großer Ball, nicht nur eine Linie, denn
wenn wir das Kästchen treffen wollen, sollten
wir es ein bisschen wissen. Das nächste, was wir brauchen, ist eigentlich, was werden
wir treffen? Nicht, wenn wir zuschlagen. Also können wir hier keinen Zweig anlegen, sagen wir, wir hassen es,
wenn etwas dort entsteht müssen wissen, ob das, was wir heizen, das ist, was wir
wollen, nämlich den Boden Und wenn wir das machen,
ziehen wir einfach an unserem Boden. Wir gehen zu unserer Etage, der BP-Kachel
, gehen zum Viewport, wählen unsere Etage aus, gehen
zu Trugs, Tug, und Jetzt h. wieder zurück. Jetzt, wo wir den Schlepper F hinzugefügt haben, kommen
wir zurück zu unserem Artikel. Lassen Sie uns unser Wärmeergebnis überprüfen. Ich werde
diese Struktur durchbrechen. Ich werde zur
Wärmekomponente gehen und fragen, ob sie gezerrt hat. Ich werde hier einen Ast anlegen. Und jetzt ist es nicht
die einzige Frage, die wir stellen
wollen, ob es F ist, sondern wir wollen fragen,
ob unsere Versuche
auch, sagen wir, gleich sind . Versuchen wir es 30 Mal.
Hier keine Verbindung herstellen. Nun, es wird sein, ob es
F hat oder die Tags
über 30 oder gleich 30 sind. Dann legen wir
den Zielort
auf unseren Aufprallpunkt fest, was der Punkt ist, der
tatsächliche Aufprallpunkt. Und wir könnten uns auf den Ort festlegen auch nicht wirklich wichtig wäre. Aber warum nicht
den Aufprallpunkt nutzen? Jetzt, nur zur Demonstration,
schließen Sie diesen Zustand an. Verbinde einfach, dass
30 gleich 30 ist. Was auch immer passiert,
es versucht es 30 Mal, und lass uns zu unserem
Spiel gehen und lass uns spielen Wir werden den
Inhaltsbrowser auswerfen. Du wirst
einen Gegenstand auf die Welt bringen. Mach es. Schon wieder ein
Gegenstand in die Welt. Oh, nur für den Fall, dass Sie die Punkte außerhalb der Kamera nicht
sehen. Ich hätte vielleicht das
Zeichnen des Bugs aktiviert. Das muss also
dauerhaft sein, um die Linien zu sehen. Jetzt können wir sehen, dass es 30 Mal
versucht hat,
den Boden um ihn herum zu finden. Aber das ist ein bisschen
zu nah am Gegenstand. Also lasst uns gehen und
die Größe der Ochsen erhöhen, lasst uns hunderte, 600 ziehen. Schon wieder er. Wir werden noch
einen Gegenstand mitbringen. Okay, jetzt sind sie
etwas weiter verteilt. Hey, dupliziere das. Ich habe es hier dupliziert und bin hierher gezogen. Zu Beginn des Spiels können Sie
die zwei verschiedenen Punkte sehen. Ich denke, das ist in Ordnung. Vielleicht können wir es
etwas größer machen , weil die Truhe hier nass
ist. Hunderthundert. Oh, es ist zu groß. Ich habe das weit weg gebracht. Außerdem siehst du, dass sie unter dem Artikel
richtig runter gehen . Das liegt eigentlich daran, dass
ich die Reichweite erhöhe. Seien Sie ehrlich, ich wollte nur eine Erhöhung der Reichweite
zeigen. Das könnte tatsächlich einfach so
funktionieren. Sei es, dass wir einen
Punkt zu dem Artikel bekommen, und dann
gehen wir einfach von hier nach dort. Also lass uns nochmal spielen. Das geht viel zu weit. Dieser Wert ist völlig falsch. Wir werden den 300 verwenden. Ich denke, 300 war in Ordnung oder die 600 war die 600, nicht
wahr? Bring das her. Jetzt fließt es, das Spiel fließt. Okay, also wir brauchen das, eigentlich nicht so
viel, ich brauche es auf, sagen
wir 50 oder ja, lassen wir es auf 500. Und der Grund dafür ist
, dass der Grund
, warum ich mich beeilt habe, darin besteht, dass
das nicht lief Das war es tatsächlich. Aber als es 30 Tri erreichte, war
das nicht gültig, das erhitzte nichts,
denn lass uns zu Schmerzen übergehen. Wenn wir von oben anfangen und genau dort hingehen. Das heißt nicht, dass
wir uns dort berühren. Das bedeutet, dass wir dort angekommen sind. Hinzu kommt, dass
diese Entfernung B
größer ist als diese, tut mir leid. Diese Entfernung, 300. Von hier aus bis zum Boden. Wir brauchen diese zusätzliche Reichweite. Ich habe die
Erklärung vielleicht ein bisschen benutzt, aber wir brauchen die zusätzliche Reichweite, um den Boden zu erreichen, weil
wir an einem Hang sind und weil wir durch
den Boden gehen müssen, um den Boden zu berühren, nicht zu draufgehen.
Lass uns das gut verbinden und lass uns tatsächlich den Bereich 600
verwenden. Ich glaube, es sah besser aus. Nur noch ein Test, ob es
zerquetscht, und ich lasse es hier. Ich glaube nicht, dass man niemals
nie sagen sollte. Ich bringe das her. Ich sehe nichts. Das bewegt sich immer noch und ich bewege mich,
also ist es nicht abgestürzt. Könnte
den Artikel ausgeschaltet haben, hier ist er. Ja, ich habe
die Debug-Leitung ausgeschaltet. Oh. Lass es uns nochmal versuchen. Der Artikel. Absturz, weil ich es
in der Mitte der Luft platziert habe, damit es nicht wieder
den Boden erreicht. Wenn ich jetzt auswerfen könnte, würdest
du sehen, dass
der Schlüssel sehr,
sehr weit vom Kerker
entfernt ist sehr weit vom Kerker
entfernt Okay, wir werden hier aufhören. Wir werden es im nächsten
noch einmal testen. Auf Wiedersehen. Wir sehen uns dann.
67. Finishing-Element-Animation mit Timelines: Hallo und willkommen zurück zum
Game Design Workshop und zum prozeduralen Kurs zur Erstellung von
Dungeon-Action-Psy
mit
R Engine Five Dungeon-Action-Psy In der vorherigen Lektion
haben wir gezeigt, wie wichtig es ist,
endlose und unbegrenzte
Wile-Loops zu verwenden und warum wir sie
nur für Kernmechaniken verwenden sollten Jetzt versuche ich etwas zu
debuggen. Ich versuche, einige
Dinge sehr ausführlich zu zeigen,
wie zum Beispiel das Hinzufügen solcher Elemente zur Laufzeit,
und vor allem, wenn
sie mit
einer Wi-Schleife beginnen , ist es eine sehr schlechte Idee Ähm, Selbstüberschätzung
vielleicht. Aber ja, es kann
viel passieren Also, wenn ich wieder spiele, lass es uns beruflicher machen und ich gehe
neben den Boden. Ich werde
den Gegenstand hierher bringen. Die Linien werden tatsächlich den Boden
berühren. Lass uns unseren Drop finden. Keine Artikel. Bring es her und ich habe die
Gepäckschlangen nicht angemacht. Dave, denn wenn du abstürzt,
verlierst du deine Arbeit Wenn du abstürzt, musst
du das Löschen kontrollieren
und das Projekt beenden. In der Nähe
hat
er eine Zeile gemacht, aber wir können es nicht wirklich sagen, also habe ich dir viel gehofft. Ich denke, das ist in Ordnung. Lass uns aufhören. Gehen wir
zurück zu unserem Artikel. Das ist das Widget. Artikel. Wir haben einen Punkt gefunden, an dem wir
unseren Schlüssel fallen lassen können, um unseren
Artikel fallen zu lassen, egal welchen Gegenstand. Was kommt als Nächstes? Als Nächstes sollten unseren Artikel sichtbar
machen,
denn seien wir ehrlich,
ein Objekt, das so lange da steht, bis
es herausfindet, wo es hingehört, dann einfach eine
Animation macht und an
einen Ort geht , sieht nicht
wirklich gut denn nehmen wir an, die 30 ts dauern
vielleicht nicht eine halbe Sekunde, sondern 0,1 Sekunden. Kein Auge wird das auffangen, wir werden den Gegenstand sehen, auf dem
sie sitzen und sich dann plötzlich bewegen. Also machen wir unseren Gegenstand
sichtbar oder verstecken ihn im
Spiel, dann ist es wahr. Das ist auf dem Item-Mesh. Und nach unserer I-Schleife erstellen
wir ein benutzerdefiniertes Ereignis. Lass es uns wo anders machen. Objekt animieren. So werden wir diese Veranstaltung
nennen. Denn jetzt werden
wir die Animation abspielen. Unvollendet. Um das Objekt zu animieren. Und das Erste, was
wir tun werden, ist unser Chaos sichtbar zu machen Sichtbar. Lass es dann falsch sein. Als Nächstes müssen wir
unseren ursprünglichen Standort des Schauspielers speichern , also holen wir uns den Schauspieler. Wir werden
es bei einer Vielzahl bewerben. Ich nenne es originell ,
weil wir
von hier nach dort animieren müssen von hier nach dort animieren Das ist von hier. Jetzt müssen wir nur noch
die Zeitleiste hinzufügen. Jetzt werden wir
es von Anfang an verbinden, um zu bezahlen. Wir werden unseren Zeitplan einhalten einen Flow-Truck
erstellen. Wir werden
Punkte brauchen. Wenn sie krank sind. Der erste Punkt
wäre Null, Wert Null. Der zweite Punkt
wäre 0,25 und eins. Eins. Der dritte Punkt wäre 0,5 zu schnell. Ich denke, es ist in Ordnung. Der Wert
wäre eigentlich Null, also kehren wir zur Bodenbasis zurück. Und das wäre unsere Bewegung. Lass es uns ein bisschen besser sein. Nun, da ich diesen
ausgewählt hatte, versuchte
er, nur diesen an
den Vorgänger
anzupassen , weil ich auch den
Vertikalen Zoom gedrückt habe. Wenn wir
einige Punkte ausgewählt haben und Zoom-Punkt auf Vertikal drücken, wird
er versuchen, die Punkte, die wir haben
, plus
den vorherigen Punkt zu machen wir haben
, plus
den vorherigen Jetzt werden wir sie tatsächlich alle
auswählen. Klicken Sie mit der rechten Maustaste. Das ist zu automatisch. W, um auf den obersten zu klicken. Vielleicht mach das C ein
bisschen mehr so. Der erste auch. Das ist in Ordnung. Das ist ein bisschen höher
als das , was wir berechnen werden. Was wir bis
zu diesem Punkt wollen, ist , dass der Artikel gerade
nach oben geht
und dann in
die Richtung geht, und dann in
die Richtung geht in der
wir das tun wollen. Wir müssen das zurücknehmen, um zu handeln. Wir müssen den Schauspieler bewegen, nicht
nur den Gegenstand, und das wird bis heute funktionieren. Also wollen wir Vector diese Bewegung
erzeugen lassen. Also das ist unser Alpha. Nennen wir das „Strike to Movement“, das ist
unsere Bewegung Alpha. Wir sagten,
im Grunde bis zu 50%, weil es
025 ist, und das wissen wir Bis zu 50% wollen wir steigen,
also wenn dieser Wert unter 0,5 liegt. Wir wollen
eine bestimmte Richtung einschlagen. O B, unser Ziel, müsste sich ändern. Also können wir hier eine Auswahl treffen. Die Bedingung ist, dass dieses Ion weniger als die Hälfte
unseres Alpha-Werts ist. Wenn wir hochgehen wollen, sollte
es unser
ursprünglicher Standort sein. L. Nehmen wir an, 200 m hoch. Und wenn nicht, dann sollten
wir zum Ziel gehen. Wir werden auch
den Zielort verbinden. Lassen Sie uns jetzt einen Moment
darüber nachdenken. Was macht unser Alpha? Weil
wir seitdem 0-1 verwendet haben Aber jetzt verwenden wir
0-1 und wieder Null. Das heißt, wenn
diese Zeitlinie endet, wäre
Alpha kein Alpha s A.
A wäre der letzte Punkt
wäre das Ende dieses Leerps,
weil dieses Alpha wieder auf Null zurückgehen
wird Wir wollen das also nicht in B. Wir wollen es eigentlich in A weil unser Ziel eigentlich A
ist. Also muss sich auch dieses ändern Das wäre unser eigentliches
B von unter 50%. Wir gehen 0-1 0-1
wäre das Plus 200. Was wäre das Alpha, das Wahre oder Niedrigere Nun, das wäre
der ursprüngliche Standort. Lassen Sie uns noch einmal alles durchgehen. A Wenn wir unter 50% des Alpha-Werts liegen, müssen
wir 0-1 von A nach B gehen. müssen
wir 0-1 von A nach B gehen.
Wenn der Wert unter 50% liegt, gehen
wir vom ursprünglichen Wert
zu unserer Körpergröße Liegt der Wert über 0,5%, gehen
wir von B nach A, das wäre unsere Körpergröße, und wir gehen von A, was unser
Zielort wäre Ich hoffe, das
war nicht zu verwirrend, aber so habe ich es geschafft. Aber genug davon, lassen Sie uns hier noch etwas
tun. Lassen Sie uns einen weiteren Flow-Track hinzufügen. Dieses Mal wird es
ein sehr einfacher Flow-Track sein. Außerdem funktioniert das Mausrad hier nicht wirklich, weil
es rein- und rauszoomt Sie müssen Ihr
Mausrad hier haben,
damit es funktioniert Wenn Sie
es bereits hier haben, können
Sie einfach klicken
und es herunterlassen Nein. Das wird
ein einfacher Flow-Track sein. Wir werden zwei
Punkte vom Nullwert Null haben. Wir gehen
zu 0,5, Wert eins, und vergessen wir nicht, unseren letzten k-Frame zu
verwenden weil beide auf 0,5 — 0,51
liegen Und was wir tun werden, ist, unsere Artikel auszuwählen. Wir werden es auf Null setzen
. Wir werden es
hierher bringen und drei
D einstellen . World Scale Three D. Lassen Sie uns diese Dinge aufzeichnen. Eigentlich ist es ein
bisschen weiter. Diese beiden Leitungen werden nicht benötigt. Wir können es hier nachlesen.
Ich kriege eine Zeile. Jetzt in der neuen Skala werden
wir Vector vermieten. Ich denke, wir können alle sehen
, wohin das führt. Wir werden den
neuen Truck für Alpha oder B benutzen, wir werden 111 einstellen. Oh, der Gegenstand wird größer
, je mehr er sein Ziel erreicht, und er wird
seine ursprüngliche Größe erreichen. Also ich denke, das
wäre für diesen. Ich werde
dich im nächsten sehen. Auf Wiedersehen.
68. Artikel- und Inventar-Widgets anzeigen: Hallo und willkommen zum Game
Design Workshop im Rahmen Engine Five-Action-Rollenspiels zur Erstellung von prozeduralen
Dungeon-Action-Rollenspielen Erstellung von prozeduralen
Dungeon-Action-Rollenspielen Bisher haben wir
unseren Drop-Gegenstand im Grunde animiert. Weil es also beim Start des Spiels
läuft, es auch bei Drops von Truhen, wenn es vom
Monster fallen gelassen wird Oder wenn Höllentürme
auch etwas fallen lassen, dann
werden die Gegenstände auf
diese Weise fallen gelassen Deshalb haben wir ein benutzerdefiniertes
Ereignis namens animate item erstellt. Wir haben das Objekt Mesh verwendet, um es nicht auszublenden, da
es zunächst ausgeblendet wird Wir haben unseren ursprünglichen Standort gespeichert. Wir haben einige seltsame Methoden angewendet wir erklärt haben, um den Standort
festzulegen. Außerdem haben wir das Netz
auf 0:1 vergrößert, sodass es größer aussieht, je mehr es aus der
Brust herauskommt Als Nächstes
sollten wir uns unser Widget besorgen. Eigentlich könnte das zu zwei
verschiedenen Zeiten passieren. Es könnte passieren. Es könnte passieren, nachdem
der Artikel gelöscht wurde, also könnten wir Fertig
aus der Timeline oder davor verwenden. Nein, ich werde es tun bevor der Gegenstand tatsächlich verloren
gegangen ist
, weil das normalerweise
in allen
Alo-Spielen passiert . Im Grunde
konnte man im Mehrspielermodus nicht zusehen, wie die Gegenstände fallen. Jeder hob
sie in der Luft auf. Also werden wir es
dabei belassen. Wir werden das Widget im Grunde in
dem Moment zeigen , in dem es die
Animation startet. Auf diese Weise war
es
von dem Moment an auswählbar , in dem wir auf das Widget
klicken können Ich denke, in Diablo sind
sogar die Widgets animiert, aber das werden wir nicht tun Wir werden das ein benutzerdefiniertes Ereignis
nennen. Widget. Aber wir müssen hier
einige Informationen eingeben. Aber zuerst nennen wir
das Show-Widget-Event. Wir werden hier weitermachen
, dass wir
animiertes Objekt nennen , wenn es fertig ist. Wir werden eine Sequenz machen. Und das erste
wäre ein animiertes Objekt. Das zweite
wäre Widget anzeigen. Oh. Holen wir uns zunächst unser Widget. Also hol dir das Widget. Wie gesagt, das ist ein Container
und der Container, wir müssen das Widget bekommen
und dann müssen wir fragen, welches Widget du bist? Also in die Artikelwelt geworfen. Eine Welt mit zwei Gegenständen und dieser Text. Für unseren In-Text benötigen
wir unsere Artikeldaten. Wir müssen die Struktur aufbrechen
und den Artikelnamen verbinden. Oh. Als Nächstes brauchen
wir etwas, um unsere
Widgid-Sichtbarkeit ein- und auszuschalten Also werde ich eine Funktion
erstellen. Und nennen wir es starr. Es wird
eine Eingabe von y benötigen. Nennen wir das. Und hier werde
ich die
Widget-Referenz abrufen. Ich werde sehen, was
auch immer dieser Pin ist. Abgesehen davon, dass ich
überlappende Ereignisse generieren muss. was auch immer die
Sichtbarkeit ist, und ich nenne Sichtbarkeit tatsächlich
so, aber erinnere daran. Außerdem müssen wir hier eine Kollision mit einer Auswahl
beenden, und der Selektor wird im Grunde
so sein Es ist also wahr. Wir brauchen nur eine Abfrage. Wenn es falsch ist,
brauchen wir keine Kollision. Warum wir
diese beiden Schritte ausführen müssen denn selbst wenn ein
Widget unsichtbar ist, besteht die Möglichkeit, dass seine Interaktionseinstellungen immer noch Eingabeereignisse zulassen. Damit meine ich, ich die Sichtbarkeit der Komponente
des Widgets ausschalte , aber Widgets haben tatsächlich einige andere Sichtbarkeitseinstellungen
. Wenn wir zum Beispiel
hier die Sichtbarkeit einstellen, können
Sie sehen, dass es
sichtbar, zusammengeklappt,
versteckt und nicht thermisch testbar ist versteckt und nicht thermisch testbar Das bedeutet, dass es sichtbar
und hitzetestbar ist , wenn es möglicherweise angeklickt werden
kann Warum also nicht
einfach die Kollision ausschalten, auch um sicherer zu sein Könnte ein
bisschen übertrieben sein,
obwohl es mit Sicherheit ein Overkill ist, besser als Nachsicht Es trägt nicht viel dazu bei,
macht es sogar weniger Berechnungen Und im Grunde könnte sogar dieser
Akteur, selbst wenn er unsichtbar ist, die Eingabe empfangen und an das Widget senden, sodass das Widget
möglicherweise nicht einmal dafür verantwortlich ist. Wie dem auch sei, es gibt viele
Gründe, warum man manchmal zusätzlichen Code
einfügt , nur um ein paar zusätzliche Grundlagen
abzudecken. Anstatt zu suchen, welche
Einstellung wäre ausgeschaltet gewesen. Manchmal
ist es besser,
einige Root-Einstellungen zu schließen , als nach Untereinstellungen zu
suchen. Also schweife ich ab. Gehen wir zurück zu dem,
was wir tun. Wir zeigen also Widgets an, und jetzt haben wir eine Möglichkeit, unsere Sichtbarkeit
ein- und
auszuschalten Aber wann möchten wir, dass unsere
Sichtbarkeit für unsere Artikel in unserem Artikel-Widget
oder für uns für
unser Projekt ein- und ausgeschaltet Artikel in unserem Artikel-Widget
oder für uns für
unser Projekt Was wir verwenden werden,
ist unsere Maus über Ereignisse zu bewegen. Aber wenn wir über etwas sind, senden
wir ihm eine
Nachricht, wenn Sie mit der Maus über Ihnen fahren. Und wenn wir das Objekt verlassen, senden wir eine Nachricht. A, wir haben nur die Maus
, die gerade über dir übrig geblieben ist. Und das wird eine unserer Möglichkeiten sein , die Sichtbarkeit
des Widgets zu erhöhen. Also die Maus schwebt. Die andere Art, wie wir es verwenden werden, ist, dass
wir einen Knopf haben Wir werden links haben bei. Aber wenn wir darauf drücken, zeigen wir alle Objekte, die sich in
unserem Viewport befinden Und wir
werden das
tun, indem wir einen
sogenannten Event-Dispatcher verwenden Event-Dispatches funktionieren in
einer groben Umgebung so ,
dass sie eine Nachricht
an alles senden, und wenn das alles darauf
wartet,
wird es etwas tun U Es ist vielleicht eines der Dinge, es ist eine der
schwierigsten Arten
der Kommunikation mit Blaupausen der Es sollte nicht für konstante Dinge verwendet
werden. Es kann nicht verwendet werden, aber ja, es ist der schwerste Teil der
Blueprint-Kommunikation Lass es uns einfach dabei belassen. Nein, wie machen wir das? Gehen wir zu unserem Controller , denn jetzt müssen wir
unser Controller-Gebiet betreten. Also Charakter von oben nach unten, Ordner von
oben nach unten, Blueprints und PP, Top-Down-Controller Nein. Wir werden das
noch nicht vermasseln. Wir werden eine Eingabe erstellen, die weggelassen wird. Und das wird ein stetiger Input
sein. Wir werden keine verbesserten
Beiträge in dieses Projekt einfließen lassen. Und hier unten unter
den Funktionen, Makros und Variablen
haben wir die Event-Dispatcher Wir klicken auf Event Dispatcher und Vielleicht. Nein, werde kompilieren. Und ich muss die Eingabe ergänzen. Nennen wir dieses eine
Element Sichtbarkeit. Und nennen wir das andere
Alt-Drücken. Das wird ein
bisschen überflüssig Alt gedrückt werden. Wir könnten einfach einen verwenden, aber
machen wir es mit zwei, um es
etwas übersichtlicher zu machen Wenn ich also Alt drücke, möchte
ich alle Objekte googeln So
versenden wir ein Ereignis. Wir haben es erstellt, wir machen unsere Eingaben
und rufen
es auf, und rufen wann immer wir wollen in
der Ausführungszeile. Aber wenn ich die Taste drücke, möchte ich, dass die Elemente
sichtbar sind und die Alt-Taste gedrückt wird, wird
ein Kopieren/Einfügen losgelassen,
und wenn diese beiden gelöscht werden, wird
das auf Falsch gesetzt Wir werden kompilieren und speichern. Wir werden
den Gamecontroller schließen. Wir werden
es in naher Zukunft nicht brauchen. Lo, wir können viel schließen. Wir können das Hauptmenü schließen. Und fangen wir an, das zu schließen. Was wir jetzt
tun müssen, ist eine Referenz auf
unseren Event-Dispatcher zu bekommen, damit wir etwas dazu finden können Um eine Referenz
darauf zu erhalten, benötigen wir den Akteur, das Objekt, das ihn enthält Also werde ich
ihren Controller holen. Und ich werde darum bitten, den Controller von
oben nach unten zu verwenden,
weil unser Spielmodus unser
Get-Pair-Controller allgemein ist
und wir von oben nach
unten
spezifizieren wollen, um den Dispatcher zu bekommen Event an Go binden, also
nennen wir es Hogle Items. Ereignis an die Gesamtzahl der Elemente,
dadurch wird ein Ereignis an unsere
Dispatches gebunden Wir werden das hier
verbinden. Bringen wir es hierher und erstellen wir ein benutzerdefiniertes Ereignis aus dem Event-Knoten der Bindung. Nennen wir das Elemente. Oder die Gesamtzahl der Artikel. Spielt keine Rolle. Lass uns das hier
verbinden. Lassen Sie uns die
Sichtbarkeit hier verbinden und
sie zu einer Variablen heraufstufen. Donnie, in manchen Dingen ist
es schon nach uns benannt. Machen wir Platz, weil wir zu
nah beieinander Wenn wir mit der Wiedergabe beginnen,
führen wir das animierte Element aus
und zeigen das
Widget an, indem wir seinen Text festlegen und das Ein-
oder Ausblenden auf Alt binden Als Nächstes müssen wir die Hover- und Hover-Bindungen vornehmen. Nun, keine Bindungen. Was
wir tatsächlich verwenden, sind einige zusätzliche Funktionen
auf unseren P I Item Coms Oh, ich werde
eine zusätzliche Funktion hinzufügen. Ich nenne das Start. Vorbei. Ich werde noch
einen Anruf tätigen und immer wieder. Gehen wir zurück zu unserem Artikel. L Gehen wir zu unserer Oberfläche, klicken wir auf „Hover beenden“ und
doppelklicken Sie auf „Hover starten Wir haben diese beiden.
Das wäre einfach. Wir werden die Sichtbarkeit
mit der Sichtbarkeit auf „Wahr“ erhöhen, die Sichtbarkeit auf „Falsch“
setzen. Nun, warum war die
Alt-Taste überflüssig? Der Grund dafür ist, dass wir es
nicht wirklich brauchen um das Ende der Maus
zu ändern, um zu fragen, ob die Alt-Taste gedrückt ist, und ob sie nicht gedrückt ist, und die Sichtbarkeit auszuschalten Weil wir nicht wollen, dass Ed
den Mauszeiger bewegt, wenn wir Alt drücken
müssen, um die Sichtbarkeit zu
beenden Und die andere Art, es zu tun, die eigentlich
besser ist, wäre, die Steuerung des
Spielers zu nehmen und nach einer Eingabe zu fragen. Und hier können wir
Alt wählen oder unsere eigenen
Tasteninformationen verwenden,
was den Zweck
, diese Alt-Taste drücken zu lassen, zunichte machen würde. Wie dem auch sei, das
wäre für diesen. Ich werde
dich am nächsten sehen. Auf Wiedersehen.
69. Gegenstände aufheben und zum Inventar hinzufügen: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon
Action Arbis Creation-Kurs Zuvor waren wir
mit der Erstellung
unserer Show-Widget-Events fertig unserer Show-Widget-Events Wir haben den Text zu unserem Widget hinzugefügt, was der Name unseres Artikels ist. Wir haben auch ein Ereignis
von unserem Gamecontroller, einen Event-Dispatcher, eingebunden und erklärt,
wie es funktioniert Und wir haben die Funktion der
Widget-Sichtbarkeit entwickelt , die auch die Kollision
der Widget-Komponente von
summiert , und dann haben wir den Start und das
Hover-Ende des Events erstellt und sie
mit der Perückensichtbarkeit codiert Und am Ende des Events
haben wir die Ost-Eingabe-Taste
gedrückt, haben wir die Ost-Eingabe-Taste um zu überprüfen, ob
unsere Alt-Taste gedrückt ist. Wenn wir
also mit der Maus über ein Objekt fahren
und den Hover beenden, Wenn wir
also mit der Maus über ein Objekt fahren
und den Hover beenden wir nun mit
unserem anderen Interface-Event fort, dem Oh, ich werde es
näher an den Anfang bringen. Zimmer. Du brauchst beiden nicht. In Ordnung. Also, das Erste, was
ich jetzt tun werde bevor wir anfangen,
die gesamte Eventkette zu erstellen, was wir tun müssen
und mit dem Spielen beginnen müssen, unsere Widgets
holen, Widgets
aus unserer Widget-Komponente abrufen. Und lassen Sie uns das
Objekt wt in die reine Besetzung umwandeln. Und wir werden Button bekommen. Wir haben es nicht, weil ich es noch nicht zu
einer Variablen gemacht habe. Also gehen wir zu
unserem Widget. Wir
wählen unsere Schaltfläche aus, und Schaltfläche 31 wird Elementschaltfläche genannt, und wir machen sie zu einer Variablen. Jetzt kann ich es
innerhalb des Elements aufrufen. Schaltfläche „Artikel abrufen“. Und
wir werden weitermachen. Wenn wir also
auf unser Widget klicken, führen wir tatsächlich
den Event Intell Act Selbst wenn es sich um eine
Blueprint-Schnittstelle
handelt, hat sie immer noch diesen
Output-Delegaten , den wir mit unserem Bind verbinden können erste Frage sollte nun lauten, sind wir in Reichweite und in der Lage zu wählen? Und das wäre Interaktion. Wir werden
es auf variabel hochstufen. Und wenn es wahr ist, werden
wir
Interacting auf true setzen. Machen Sie vielleicht ein
bisschen mehr Platz. Vielleicht geht
dir der Platz
in einem endlosen Raum aus, wenn du das weiter vorantreibst. Immer fantastisch. Jetzt müssen
wir eine
Funktion ausführen, die auf unsere Spielstimmung abgestimmt ist. Aber wir werden diese
Funktion jetzt nicht vollständig ausfüllen. Gehen wir also zu unserem Holder von
oben nach unten. Gehen wir zu unseren
Ordner-Blueprints und kommen wir zu unseren Spiel-Stimmungen Wir werden eine Funktion
erstellen, das
gesamte Inventar, und es wird die Eingabe
eines Namens beinhalten Anspruch, und das Ergebnis
wäre ein Ben
, der ausgewählt wird. Zum Beispiel, ob wir ihn
ausgewählt haben oder nicht. Wir lassen es so, wie es ist wenn wir das Inventar erstellen, wir werden
anfangen, es zu füllen. Nun, lasst uns
zu unserem Gegenstand zurückkehren und von der Interaktion unseres Sets aus gehen
wir los und wir brauchen
die Gad in Bezug auf GM Alle GM des Down-Game-Modus. Wir werden auf Pure Cast
umsteigen. Und wir werden das Inventar
aufstocken. Jetzt werden
wir für den Rohnamen unseren Rohnamen verwenden. Und danach
werden wir uns verzweigen, je nachdem, ob wir
den Artikel auswählen oder nicht. Fangen wir mit dem an. Oh, was passiert, wenn wir einen Artikel nicht auswählen? Wir werden wieder
eine Animation abspielen, wir werden sie online hinzufügen. werden diese Zeitleiste Wir werden diese Zeitleiste
aufrufen und einen
Flow-Track erstellen. Die Variablen. Die erste wäre 00. Der zweite wäre
0,27, sagen wir dieses Mal, und dieser wäre eins, und der dritte wäre 0,6, das wäre wieder Null Warum nun länger als
der vorherige Zeitplan? Weil wir den Artikel seitdem
nicht abgeholt haben. Wir sollten den
Spieler darauf hinweisen, dass es sich nicht um einen neuen Gegenstand handelt, nur für den Fall, dass wir etwas töten. Ich weiß es nicht. Designwahl, denken Sie über die Designentscheidung nach. Ich denke, es sollte
eine längere Animation haben , weil
es nicht aufgenommen wird, es ist etwas, das dem Spieler angezeigt werden
soll,
das ist nicht üblich. Wenn du
ständig Gegenstände fallen lässt und plötzlich
nichts mehr
aufheben kannst , sollte es nicht
die übliche Animation sein ,
die du siehst, auch wenn ein bisschen länger dauert, denke ich,
würde das eine Wirkung haben. Jetzt
wäre die Bewegung wirklich einfach durchzuführen. Wir gehen zu diesem Ort. Wir werden Vector alarmieren. Ich benutze diesen neuen
Track für Alpha und unseren. Dieser endgültige Standort
sollte nicht da sein. Unser Zielort
wäre der Alpha, der A und der
Zielort Plus. Wie, sagen wir 150, wäre RB. Von dort, wo wir sind, gehen
wir hoch und dann runter. Und wenn das erledigt ist, werden
wir uns der Interaktion zuwenden. Nun, wenn es stimmt, wenn wir den Artikel abgeholt
haben, werden wir einfach zu niedrig dargestellt. Und das wäre es. Und damit ist unser
Code für unsere Artikel abgeschlossen. Das ist der gesamte
Code für die Artikel. Jetzt könnten wir
mit dem Inventar beginnen, aber wir müssen ein wenig
Vorarbeit leisten, um das
Inventar in unserem Spielmodus zu starten. Wenn wir also
das R-2-Inventar ausführen, das ich jetzt klicke, um in den Spielmodus zu gelangen
, müssen
wir einige
Variablen bereit haben. Eine dieser Variablen
wäre unser Gon-Level. Dungeon-Level auf Generator-Ebene. Ja. Es wird vom Typ Integer
sein. Um diese Tangentenebene zu füllen, gehen wir
zu unserem Generator und beginnen mit dem wo wir den Spielmodus einstellen Beweg das Stück hierher. Und wir werden den
Dangon-Level auf unseren
Generator-Level setzen Dangon-Level auf unseren
Generator-Level Bringen Sie es her, stellen Sie eine Verbindung her
. Jetzt. Das nächste, was wir brauchen. Es ist fehlerhaft, weil
es nicht kompiliert wurde. Wir sind mit den
Artikeln fertig, kompilieren Sie die Tabelle. Ich werde ein paar Wannen schließen. Es gibt viele Requisiten. Das brauchen wir nicht mehr. Wie dem auch sei, jetzt kann ich es sehen. Also suchen wir nach
dem alten Spiel. Hier sind wir. Die nächste Variable, die wir brauchen, wird im Grunde genommen
eine Landkarte sein. Mit der ersten
machen wir daraus eine Karte. Der erste Schlüssel wäre Name, was unseren Artikel bedeutet. Und der zweite
wäre eine Ganzzahl, was der Betrag sein wird. Ich werde diese Variable benennen. Spiel. B Wir müssen
nichts anderes für unsere Artikel speichern. Wir müssen nur
wissen, um welchen Artikel es sich handelt und wie viele Artikel ich habe? Jetzt sind wir bereit, diese Funktion
auszufüllen , die wir
in der nächsten Lektion ausführen werden. Vorerst auf Wiedersehen. Sing
dich beim nächsten.
70. Münzzähler und Pickup-Widget: Hallo und willkommen zurück
zum Game Design Workshop
und dem Kurs zur Erstellung von 95 Procedural
Dungeon-Action-ARPs Zuvor waren wir
mit unserem BP-Gegenstand fertig. Wir haben unser
Interact-Event beendet, sodass wir es auch
binden, wenn wir auf
unser Widget Wood Item World klicken. Wenn wir jetzt interagieren, fragen
wir, ob wir auswählen
können, ob wir uns in
Reichweite befinden und ob wir
bereits interagieren. Wenn wir nicht interagieren, setzen
wir Interact auf True. Wir fügen unseren
Artikel zum Erfinder hinzu. Wir versuchen, den Artikel zum Inventar
hinzuzufügen, weil wir den Rückgabewert ausgewählt haben . Auf dieser Grundlage spielen wir eine Animation ab, wenn
wir den Artikel nicht auswählen konnten , und wenn wir den Artikel auswählen, zerstören
wir unseren Schauspieler. Danach sind wir in unseren Spielmodus gegangen
und haben Level
des Dungeons in
unserem Labyrinth-Generator
gespeichert des Dungeons in
unserem Labyrinth-Generator Lassen Sie uns das tatsächlich kompilieren. Und wir haben den
Dungeon-Level zu Beginn des Spiels gespeichert und ein
variables Inventar erstellt,
das ist eine Karte mit
Namen und ganzen Zahlen,
Namen für die Zeile
der Datentabelle und
Ganzzahlen für wie
viele haben wir das ist eine Karte mit
Namen und ganzen Zahlen, Namen für die Zeile
der Datentabelle und ? Fahren wir damit fort,
unsere Anzeige in das Inventar zu füllen. Was wir zuerst brauchen,
ist unsere Datentabelle. Also werden wir Daten abrufen. Und für ihren eigenen Namen
werden wir ihn mit einem Namen verbinden. Für die Datentabelle
werden wir unsere DT-Elemente verwenden, und für unsere Out-Row werden
wir
das als lokale Variable heraufstufen. Nennen wir es Data. Jetzt werden wir dieses Theta
knacken. Und wir werden
eine einfache Frage stellen. Gilt dieser Artikel, kann ich ihn dem Inventar hinzufügen? Wenn ich ihn nicht
zum Inventar hinzufügen kann,
bedeutet das , dass er Gold ist, weil es unser einziger Artikel ist, der nicht zum Inventar
hinzugefügt wurde. Das bedeutet, dass wir berechnen müssen wie viele Münzen
wir hinzufügen werden. Nein. Als Erstes müssen wir
entscheiden, wie viele Münzen
wir hinzufügen werden. Oh, wir werden
unser Dungeon-Level erreichen. Wir werden
eine zufällige Reichweite bekommen. Ich fange mit eins an
und Dungeon Level plus eins. Wir werden die
Münzen in diesem Spiel nicht wirklich verwenden. Was wir tun könnten, ist, dass du
, wenn du willst, vielleicht
einen Laden aufrüsten und ihn
irgendwo spawnen oder eine Benutzeroberfläche zwischen den Levels öffnen und einige Upgrades
auswählen und diese Münzen
ausgeben Jetzt werden wir für diese Variable
werben. Wir werden Münzen benennen und das mit Wasserfällen in
Verbindung bringen. Das nächste, was wir tun müssen, ist , wenn wir unser
Widget haben, um es zu aktualisieren. Nein, fangen wir an,
unser Gameplay-Widget zu erstellen. Wir gehen
zu I. Lass uns klicken und Benutzerschnittstelle,
Widget-Blueprint, äh Widget auswählen Widget-Blueprint, äh Widget und nennen wir es W G, Gameplay Ich werde es öffnen. Ich
werde es hier drüben andocken. Das erste, was ich
hinzufügen werde, ist eine Leinwand. Lass mich für eine Sekunde heranzoomen. nun unsere Münz-UI angeht, wird
das, was
unsere Münzen repräsentieren wird ,
ein horizontales Kästchen sein. Und in dieses horizontale
Feld werden wir den Text
Und hinzufügen . Das Bild wäre
für unser Beutelbild
und unser Text würde darauf stehen, wie viele Münzen wir haben. Wir
wählen beide aus und
stellen beide so ein, dass sie den Unterschied ausgleichen, dass und vertikal in Cent ausgerichtet werden soll der Text horizontal
mittig . Wählen wir für unser Bild den Beutel aus. Lass uns ein bisschen mehr machen. Stimmt? Machen
wir das jetzt ein bisschen größer. Wo unser Bild
aussieht und es nicht viel zu sehen ist. Ich glaube, diese Stecknadel. Lass uns unseren Textblock auswählen und 30 darauf
setzen. Ein Fo, passen vier hinein? Ja, vierstellig ist in Ordnung. Sogar eine fünfstellige Zahl ist in Ordnung. Lass uns nur drei Ziffern nehmen. Lasst uns jetzt die Anker benutzen
, um es hier zu verankern. Wir könnten es später
im Vergleich zum Rest der Benutzeroberfläche ändern , aber im Moment haben wir es hier. Und lassen Sie uns den
Textblock zu einer Variablen machen. Nennen wir es Punkte. Gehen wir jetzt zurück zum Spiel. Und wir müssen dieses Widget tatsächlich
spawnen. Also gehen wir wie in den vorherigen Widgets zu Even Graph Wir werden
eine Kundenveranstaltung erstellen. Wir werden
es Show Game Play nennen. Wir werden ein Widget erstellen. Wir werden das Gameplay
wählen. Der Besitzer eines Spielers ist ein
Spieler-Controller. Wir werden es als Variable
bewerben. Nennen wir es W-Gameplay. Und wir werden es zum Viewport
hinzufügen. Gehen wir jetzt zurück zum
Inventar und holen uns
unsere Referenz zum Inventar und holen uns
unsere Referenz WG-Gameplay und den
Punktetext Lassen Sie uns den Text festlegen. Für den Text werden
wir die Münzen verwenden. Unser nächster Schritt besteht jetzt erneut darin , darauf hinzuweisen, dass unser Spieler etwas
abgeholt hat. Auch hier benötigen
wir ein Widget. Wir werden dafür wieder das
Gameplay-Widget verwenden. Wir werden diese horizontale Kugel duplizieren,
aber nicht in ihr, um sie im Canvas
zu verwurzeln. Und ich werde
es ungefähr so groß machen. Sie haben ungefähr die gleiche Größe. Und ich werde es hier drüben
platzieren. Ich werde ein paar
Anker darum herum anbringen. Du kannst die Anker
draußen anbringen, also hier. Was ich tun werde, ist
, das rückgängig zu machen. Ändern Sie das von 000
zu ausgewählt zu Punkten. Das ist ein bisschen groß. Vielleicht brauchen wir ein niedrigeres
Format oder eine niedrigere Größe. Acht. 28 passt gut, und wir werden das animieren Um zu animieren,
gehen wir jetzt zu Animationen über. Wie Sie sehen können,
habe ich es ausgewählt, das vertikale Feld, nicht
etwas darin Ich drücke
plus zwei Animationen. Ich rufe diesen Artikel auf, wähle
ihn aus
und gehe zum Titel. Da ich das ausgewählt habe, kann
ich
es tatsächlich als Element auswählen. Oh, ich werde
das horizontale Feld auswählen. Und ich drücke Plus
und es transformiert sich zurück, und jetzt kann ich
seine Transformation im Laufe der Zeit manipulieren. Also bei Null, Null, fangen
wir hier an. Nehmen wir an, in einer halben Sekunde stelle
ich meine
Bar auf eine halbe Sekunde um. Ich möchte die Übersetzung x hier
auf 61 erhöht haben hier
auf 61 Lassen Sie uns das auf bis zu eingrenzen. Ich werde diesen
Standort auf, sagen wir, 0,8 belassen. Ich werde
dieses Glas hier drüben platzieren und das wird eine weitere Markierung hinzufügen. Vielleicht ist 0,8 auch. Lass es uns auf
einen legen. Ändere das. Ich werde das einfach ziehen,
und ich werde auch
das ziehen du brauchst, um
diese erste Aktion zu ziehen. Wir haben nur den
Punkt gezogen und das würde es schaffen. Ich würde beide fallen lassen. Jetzt, danach,
muss ich noch einen weiteren
Wert hinzufügen, das wäre unsere Y-Achse. Ich möchte, dass
dieser Wert auf 1,5 gesenkt wird. Wie viel viel mehr. Nehmen wir an, es ist nicht wirklich wichtig, weil wir es auch verblassen werden. Aber lassen wir es
hier, sagen wir 60. Jetzt möchte ich einen PA-Track hinzufügen. Wenn das passiert, ist dieser Teil der
Maulwurfspitze vielleicht in Ordnung. I.
0.9. 0.9 F 0.9, ich möchte eine neue Spur
hinzufügen, das wäre Render-Opazität Wir gehen von 120 aus. So
animieren wir unser Widget. Aber wir möchten, dass es immer dann
abgespielt wird , wenn wir etwas in die
Hand nehmen Dafür benötigen wir
eine Funktion. Aber wir werden das in der nächsten Lektion fortsetzen
. Bis dahin auf Wiedersehen. Wir sehen uns dann.
71. Fixieren der Coin-Counter-Funktionalität: Und willkommen zum Game
Design-Workshop und zu den prozeduralen Aufrufen zur Erstellung von Real Engine Five Dungeon
Action BZ Zuvor haben wir in
unserer Spielmodus-Funktion damit begonnen,
unsere Anzeige für das Inventar zu erstellen in
unserer Spielmodus-Funktion damit begonnen,
unsere Anzeige für das Inventar zu Wir verwenden also die Datentabelle, um unseren temporären Wert aus dem eingehenden
Zeilennamen zu ermitteln
, der aus unserem BP-Artikel stammt. Nun haben wir mit
einer Filiale begonnen und gefragt, ob es sich um
einen Artikel handelt, der dem Inventar
hinzugefügt wird, oder ob er
in unserem Fall nur Gold gilt Weil es das einzige
Pable ist, das wir haben,
und wir haben einen Code erstellt, und wir haben einen Code erstellt Zufallsprinzip
zu bestimmen, wie
viele Münzen Und wir setzen diesen
Wert auf unser Widget,
was eigentlich
falsch ist, weil wir
eine Variable für die Gesamtanzahl der Münzen benötigen , um sie zu unserem Gameplay-Widget
hinzuzufügen, nicht die
temporäre, die wir bekommen Also werden wir für diese Variable
werben. Machen Sie die Gesamtzahl der Münzen daraus. Und wir verbinden das. Ich
werde die Verbindung trennen und
die temporären Münzen holen und sie zur Gesamtzahl der Münzen hinzufügen. Ich werde diesen
Wert auf die Gesamtzahl der Münzen setzen. Und dann werde ich die
Gesamtzahl der Münzen verwenden , um
sie dem Widget hinzuzufügen. Wir hätten diesen Teil
für den nächsten Teil verwenden können, den wir entworfen haben. Wir haben auch das
Gameplay-Widget erstellt. Und im Gameplay-Widget, wo wir die Gesamtanzahl der Münzen festlegen, ist dieser Wert hier drüben, dieser Text hier drüben,
der unsere Gesamtanzahl an Münzen angibt. Jetzt, und es hat
dieses Beutelsymbol. Dann sind wir weitergegangen und haben dieses Widget hier
kopiert , die Reihenfolge der beiden
umgedreht und den Münzen einen Namen gegeben, wir haben sie ausgewählt stehen lassen. Wir fügen ein Symbol hinzu. Wenn
wir hier eine Zahl hinzugefügt, eine Zahl ausgewählt
und dann das Symbol ausgewählt hätten, hätten
wir unsere
Coins-Variable hier drüben verwenden können, hätten
wir unsere
Coins-Variable hier drüben verwenden um anzugeben,
wie viele Münzen wir gesammelt haben. Aber da wir
nur ein Bild verwenden, ist das in Ordnung. Wir werden diese Variable
dafür nicht verwenden. Wir werden es nur verwenden,
um es zur Gesamtzahl der Münzen hinzuzufügen. Nun, um
mit dieser Funktion fortzufahren. Als Nächstes benötigen wir ein
Update, das im echten Zweig und
im falschen Zweig üblich sein wird, um das im echten Zweig und
im falschen Zweig üblich sein wird, um dem Spieler zu zeigen
, dass wir etwas gefunden haben. Und wir haben die Animation
im Animations-Tab erstellt. Wir arbeiten hier ein
bisschen schnell. Das ist also der Teil, der die Animationen
für diejenigen
enthält, die neu sind. Und wenn wir
auf eine Animation klicken, erhalten
wir ihre Trucks, die Elemente, die wir animieren
werden Und das hier ist
der Lauf der Zeit, und wir legen fest, was auf jedem Truck
passieren soll , auf
jedem Element, das wir wollen, auf der spezifischen
Kategorie, die wir wollen Hier gibt es viele
Kategorien. Weit weg. Also, wir haben das animiert, aber um es abzuspielen,
brauchten wir Funktion. Wir brauchen keine Funktion.
Wir würden ein benutzerdefiniertes Ereignis erstellen oder es
sogar von einem anderen Ort aus ausführen. Aber warum nicht unser
Leben ein bisschen einfacher machen und es in einer Funktion haben, die wir mit einigen Eingaben aufrufen können. Dann immer wieder programmieren, wenn es nötig ist. Oh, wir werden eine neue Funktion
erstellen. Nennen wir dieses Funktionselement. Abholung. Lassen Sie uns von
der Ausführungslinie aus zeichnen und sie spielen eine Animation ab. Wir müssen eine Animation spezifizieren. Wenn ich hier klicke, werden wir keine
sehen, weil sie in diesem Tab
hier drüben
sind, auswählen und auswählen. Hol dir diese Animation,
C ist hier angeschlossen. Und noch etwas
müssen wir tun, bevor wir die Animation
abspielen, denn das ist so ziemlich alles. So
spielen wir eine Animation ab. Gehen Sie zur Designer-Wanne, wählen Sie das Bild aus, unser
Artikelbild hier, und das Set ist variabel. Nennen wir dieses Objekt Bild und gehen zurück zum
Diagramm unserer Funktion, holen uns dieses Artikelbild und verlassen die Textur. Wir müssen nicht
viel auf die Größe klicken, weil wir
die gewünschte Größe beibehalten wollten. Und das ist unsere Textur
, die wir brauchen , aber sie wird die Eingabevariable
sein. Ich werde es hier verbinden. Ich werde die
Texturvariable hier für uns erstellen. Ich kompiliere und speichere und lass uns zu
unserem Top-Town-Spiel zurückkehren. Wir holen uns unsere Wood
You Gameplay-Referenz. Ich werde Artikel abholen sagen. Wir werden es hier verbinden. Und für die Textur brauchen
wir etwas mehr Platz. Wir werden
unsere Term-Daten abrufen, das sind die Artikeldaten, die
wir am Anfang gespeichert haben. Ich werde das aufteilen und
unser Inventarbild abrufen und es
hinzufügen, um den Artikel abzuholen. Wenn die
Animation jetzt abgespielt
wird, wird von jedem Artikel das passende
Bild angezeigt. wir nun
mit unserem nächsten Teil fort,
dem eigentlichen Zweig, wenn das Objekt auswählbar
ist, also auswählbar ist. Wir können es ins Inventar aufnehmen. Die erste Frage sollte lauten, lassen Sie uns unser Inventar hierher holen. Existiert es in unserem Inventar. Also werde ich fragen, ob es so malt wie wir es mit dem
Dungeon so oft gemacht haben Und was es enthalten wird
, ist der Rohname, den
wir eingeben. Also Zeilenname hier. Ja. Aber ich benutze ein paar. Lass sie hier ein
bisschen besser aussehen. Lassen Sie uns nun mit einem Zweig beginnen , den er nicht
im Inventar enthält. Und die nächste Frage, die wir
stellen sollten , ist unser Artikel, ist
unser Inventar voll? Für unser Inventar
werden wir vier Steckplätze haben. Also werde ich diesen Zweig
kopieren
und fragen, ob
die Länge des Inventars gleich oder weniger
oder gleich drei
ist. Wenn es drei sind, können wir
immer noch einen hinzufügen. Wenn es vier sind, dann
wird es falsch. Hier in Falsch, es wird sehr einfach
sein, es zu vervollständigen. Wir rufen einfach unseren Rückgabeknoten ab
und sagen, dass das Objekt nicht ausgewählt wurde, es wird unsere Animation abspielen. Der Artikel wurde nicht ausgewählt. Wenn das stimmt, holen
wir uns einfach unser Inventar. Wir werden unseren Artikel hinzufügen, das wäre der Zeilenname. Und wir müssen das
vorübergehend herausbringen. Unsere temporären Daten.
Wir haben den Betrag. Der nächste Schritt
sollte wieder die Abholung des Artikels sein.
Ich werde das verbinden. Hier, ich werde das
herbringen . Ich denke, es ist in Ordnung. Fahren wir mit
dem echten Zweig , falls er bereits enthalten ist. Nein, wir werden fragen,
ob der Artikel stabil ist. Ich werde
das herbringen. Denn wenn es nicht stabil ist, dann hat es keinen
Sinn, es in die Hand zu nehmen. Also werden wir das
herbringen. Und wieder meldet der
Rückgabeknoten „Nicht ausgewählt“, sodass der Artikel abprallt Wir sind voll von diesem Artikel. Wir wollen es nicht mehr. Wir wollen es vielleicht, aber
vielleicht ist es ein einziger Lagerartikel. Was können wir tun? Oh,
was passiert, wenn es so ist und wir einige
davon im Inventar haben. Wir werden das Inventar besorgen ,
weil
wir es damit zu tun haben. Wir werden unseren
Reihennamen herausfinden. Welches ist unser Artikel. Davon ausgehend werden wir für unsere lokale Variable
werben und sie brauchbare, rissige,
schreckliche Namen
nennen Das scheint ein
Thema bei diesem Pferd zu sein. Wenn du mit
mehr Leuten als mit Klo zusammenarbeitest, sollte
jeder Name beschreiben,
wofür er im Grunde genommen ist. Es sollte
immer Aktualisierungen der Variablen darüber geben, was
erstellt wurde und allem. Es ist ein feines Gleichgewicht,
ohne es zu übertreiben. Wie dem auch sei, jetzt
holen wir uns unsere Zeltdaten, die Menge. Nun ja, die Artikelmenge, Sie sehen die Tem-Daten, verwirren mich Die Artikelmenge
stammt aus unseren Tem-Daten, wir akzeptieren
also Plus. Wir werden diese
Artikelvariable zu diesen temporären Daten hinzufügen, und wir werden
unsere Karte unseres Inventars hinzufügen Ihr eigener Name. Ich werde es nicht noch einmal hinzufügen. Ich werde es einfach aktualisieren, und
die Summe dieser Ergänzung. Das nächste, was wir
tun sollten, ist die Abholung des Artikels. Zwischen
diesem Vorgang und der Abholung des Artikels
sollte jedoch ein Schritt liegen , der für
keine dieser Aktionen erforderlich ist. Eigentlich ist
auch diese Aktion notwendig, weil wir
dem Inventar etwas Neues hinzufügen, nämlich den visuellen
Teil des Inventars zu aktualisieren. Oh, lassen Sie uns in der nächsten Lektion unser
Inventar erstellen, und das wäre für diese. Ich werde
dich dann sehen. Auf Wiedersehen.
72. Inventar-Visualisierungen im Gameplay: O Hallo und willkommen zum
Design-Workshop und zum Kurs „Real Engine Five“, „
prozedurales Dungeon“, „
Action-Rollenspiel“
und „Kreation Zuvor haben wir unsere Funktion, das Inventar
zu erweitern,
fortgesetzt zu erweitern, Wir haben die Variablen für Münzen und
Gesamtpunktzahl,
die benötigt wurden, korrigiert Variablen für Münzen und
Gesamtpunktzahl,
die benötigt wurden, und weiterhin
eine Funktion
für die Abholung von Gegenständen entwickelt. Wir haben eine Textureingabe erstellt. Wir haben den Pinsel in unserem
Artikelbild anhand der Textur unseres Artikels so
eingestellt , dass er von unserem Objekt stammt
, und wir haben die Animation abgespielt. Nun haben wir weiter die tatsächliche Filiale
überprüft, einige Regeln und Bedingungen hier, ob sie bereits enthalten ist, ob unser Inventar voll ist oder nicht. Wenn die Bedingungen
nicht zutreffen, geben
wir „Falsch“ zurück Wenn die Bedingungen zutreffen, erweitern
wir unser Angebot oder
ändern unseren Betrag. Auch hier, indem wir einfach etwas hinzufügen, weil es sich um eine Karte handelt, weil es sich um eine Karte handelt, und dann spielen wir weiter mit
der Artikelabholung. Eine bessere Version
von Item Pickup
wäre es nun, es
in einem separaten Widget zu haben und während es abgespielt wird, verschwindet es
plötzlich und bringt
ein neues hervor , wenn du zu oft
wählst Oder ein anderes Upgrade. Das könnte ein viel
detaillierterer Code sein mit Regeln und allem
und dem Erstellen von Dingen, dem Erstellen
von Entitäten im Grunde. Aber jetzt ist es an der Zeit, ein kleines Inventar zu
erstellen. Also werde ich wieder eine
horizontale Box verwenden. Ich werde
es gleich hier drüben platzieren. Eigentlich. Bringen wir es her. Dann bringe ich mit, dass wir die Voreinstellungen verwenden
können,
immer einfacher Und lassen Sie uns das diesmal
richtig einschätzen. Es wird Inventar sein. Es wird detaillierter sein. Oh, für die Größe X wählen
wir hundert, oder für die Größe wählen wir 150 Und für die Platzierung wählen
wir O. 50 und Y O -100 Weil ich denke, das
ist ein netter Ort, um das Inventar auf unserem Bildschirm auszuwählen Natürlich werden
wir es auch animieren. Das soll eine sehr
einfache Animation sein. Gehen wir zu den Animationen. Lass uns einen Truck hinzufügen.
Nennen wir diesen Erfinder. Ich habe ein Wort und trete ein. Lassen Sie uns eine Spur zu
diesem horizontalen Feld erstellen. Ich kann es so auswählen
, weil ich es ausgewählt habe. Wenn Sie sich nicht sicher sind, welcher welcher ist,
können wir sie jederzeit umbenennen. Du weißt,
wann es das sein wird. Horizontale Kiste,
und das wäre die horizontale Kiste der Münzen. Dies wäre das horizontale Feld für das
Inventar. Kehren wir zu unseren Animationen zurück. Wir können sehen, dass wir den richtigen
haben, und wir werden einen Truck hinzufügen
, der umgebaut wird. Die Sache, die
wir machen werden, ist der Erste, Erste, der
Sekunde nach Null. Wir werden auf X Null sein. Nehmen wir an, eine Zeit von p fünf. P 0,5 wäre großartig. Das wären 900, glaube
ich, -900. Und es bringt es hierher. Ich denke, das ist in Ordnung genug. Wenn es zu weit weg ist. Ich bin mir nicht sicher. Ich denke,
es ist ein guter Ort. Sie können es platzieren,
wo immer Sie wollen, aber für uns reicht das jetzt. nun für den internen Teil Lassen Sie uns nun für den internen Teil die Animation zurücksetzen unser
horizontales Inventarfeld
auswählen. Fügen wir vier Schaltflächen hinzu. Eins, zwei, drei, vier. Nennen wir sie auch. Warum nicht? Das B in einem. Und lass uns eins mit n zwei nehmen. Drei und vier. Jetzt werden wir sie alle
auswählen und auf Datei setzen. Wir wählen die
erste aus, um den Stil festzulegen, und dann
kopieren wir diese Basis auf
die anderen Schaltflächen. Auf unserem Bild. Gehen wir zu unseren Texturen. Und wir haben ja diesen
Artikel, Rahmen eins. Lassen wir den Farbton
S stehen, das Quadrat ist in Ordnung. Tönung für den normalen
, lassen wir es so. Wenn Sie mit der Maus darüber fahren, lassen Sie uns das
Bild auch kopieren und probieren. Für das verdeckte
Bild
wählen wir also einen gelblichen Farbton und
fügen das Bild dann erneut Wählen wir für das gedrückte Bild einen grünlichen Farbton aus. Ordnung. Und jetzt lasst uns diesen Stapel
kopieren, einfügen, kopieren, die Schaltfläche auswählen,
einfügen und einfügen. Letzte Schaltfläche, Einfügen. Jetzt haben wir ein paar Bilder. Jetzt, für das Innere der Tasten, verwenden
wir eine Skalierungsbox und
fügen sie in die Tastenseite ein, es ist ein untergeordnetes Element des Buttons In der Skalierungsbox werde
ich
ein Overlay verwenden . In diesem Overlay werden
wir
ein Bild und einen Text haben Nun, ganz schnell, warum
wir jeden Teil verwenden. Bild, das wir für
das Artikelbild benötigen. Text, den wir für die
Menge brauchen, und Overlay, wir mussten die Karte
hinten und den Text vorne haben Nein, das heißt, es ist tatsächlich erledigt. Nein, es ist nur das Gegenteil. Ich glaube, ich brauche den Text oben .
Ich sollte den Text haben. Mit diesem Bild kann ich es für eine Sekunde
ändern. Wählte den Text aus.
Ja, es heißt Collect. Also sollte der Text das zweite Objekt
innerhalb des Overlays Die Skalierungsbox, wir verwenden die Skalierungsbox für den Fall, dass
unsere Bilder
in der Box groß sind , oder um das zu machen,
was eine Maßstabsbox macht, sie passt in das Innere des
Containers, in das sie eingespeist wird Sie skaliert sie so, dass sie in den Behälter
passt. Lassen Sie uns also
das Skalierungsfeld mit seinen
untergeordneten Elementen auf alle Schaltflächen kopieren und einfügen . Lassen Sie uns eigentlich den ersten
korrigieren, ich werde
den eingefügten löschen Korrigieren Sie zuerst visuell, denn
wenn wir die Grafiken korrigieren und dann kopieren und einfügen, werden
auch die Also werden wir das
Overlay so einstellen, dass es alles ausfüllt, und wir werden das Skalierungsfeld
einstellen Es ist auch schon gefüllt. Dann stellen wir das
Bild so ein, dass es alles ausfüllt, und der Text wird
unten rechts angezeigt. Dann wählen wir hier unten
eine weitere Option aus, nämlich die Ausrichtung,
bei der der Text Mitte
beginnt und endet. Und wir wollen natürlich, dass der
Text vorerst Null ist. Und natürlich sollten wir das Telefon auf
etwas wirklich Kleineres
umstellen. Die Acht ist nicht so groß, sie reicht nicht bis zur Spitze. Ich finde, das ist ein nettes
Verhältnis für die Zahl. Gehen wir für das Bild zu unseren Texturen. Und ich finde es lustig
Ich finde es lustig, es sieht irgendwie okay aus. Wenn ich die CGL- oder
sogar die HP-Textur auswähle, die erste Textur,
scheint sie gesperrt zu sein oder so Wie auch immer, du kannst
etwas wählen, das sich anfühlt. Es gibt jedoch einige
spezielle Regeln. Siehst du, wir haben einen
Abstand zwischen unseren Texturen. Es passt sich also gut dem
Hintergrund an. Wenn ich zum Beispiel den roten Trank
mitbringe, kannst
du sehen, dass er sich korrekt füllt,
wohingegen, wenn ich,
sagen wir das hier oder hier, den
Hintergrund verdeckt Also, vielleicht ist
der Gesundheitsteil in Ordnung. Das ist auch cool, aber die Spieler werden denken dass es
hier etwas gibt, auf das sie klicken können, und sie werden versuchen, darauf zu klicken. Nun, das sieht eher
so aus, als ob es gesperrt ist. Wie dem auch sei, ich werde
das auswählen. Ich werde dir jetzt unser
Skalierungsfeld kopieren, weil wir die Attribute
festgelegt haben ,
ich werde es einfügen. Ich werde es auch
in drei, Nummer vier, einfügen. Lassen Sie uns nun
all diese Bilder auswählen und sie
zu einer Variablen machen. Eigentlich
müssen wir sie benennen. Eins, zwei, drei, die Hauptstadt, seit ich mit Hauptstädten
angefangen habe Vier. Als Nächstes müssen wir
zu unserem Graphen gehen und
eine neue Funktion erstellen , die
wir Update nennen werden. Und natürlich
wird es eine Eingabe benötigen, und es wird ein Name sein, und es wird eine Karte sein. Die zweite Variable
wird
eine Ganzzahl sein , weil das unser Inventar ist. Inventar. Ich denke, das ist der Abschluss, wir müssen nur als Nächstes wir müssen nur als Nächstes
in
unseren Top-Down-Spielmodus wechseln und von unserem WT-Gameplay aus unser Inventar
aufrufen. Jetzt können wir
es gleich hier aufrufen oder wir können es am Ende
anrufen. Das ist nicht wirklich
wichtig, denn da unsere Punkte
nichts im Inventar aktualisieren, wird
es einfach aktualisiert,
ohne etwas zu ändern. Aber wir hätten es hier haben können, aber das ist,
sagen wir, optimaler. Ist es nicht. Es ist nicht
wirklich wichtig. Aber es macht weniger Operationen. Wenn wir ein sehr großes Inventar hätten, würde
es langsam wichtig werden. Wir werden das
Inventar hierher bringen, wir werden es hier verbinden und wir haben es betriebsbereit. Und das wird
es für diesen sein. In der nächsten Lektion werden
wir diese Funktion abschließen. Dann auf Wiedersehen, C.
73. Aktualisieren von Inventarvisualen: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Beim letzten
haben wir damit aufgehört, unser Widget
für unser Inventar zu
entwerfen, das in unserem Widget-Gameplay, dem
aG-Gameplay, enthalten ist Also haben wir einige Bilder hinzugefügt. Wir haben einen Text hinzugefügt, angibt, wie viele Artikel
des jeweiligen Artikels wir haben. Wir haben sie zu einem Overlay hinzugefügt,
sodass sie sich überlappen, und wir haben das
zu einem Skalierungsfeld hinzugefügt, das zu den
Schaltflächen gehört, die wir hinzugefügt haben Und wir haben das
Skalierungsfeld hinzugefügt, damit der interne Teil
die Schaltfläche korrekt ausfüllt Wir haben unser Inventar mithilfe
einer sehr einfachen
Übersetzungsspur animiert , indem wir nur den X-Wert
verschoben haben,
und wir haben damit begonnen, unsere Funktion zum
Aktualisieren des , indem wir nur den X-Wert
verschoben haben, Inventars zu erstellen. Das ist im Spielmodus, falls ich ihn hier
finden kann, in unserer A-Inventarfunktion. Fangen wir also an, das zu füllen
. Was wird das bewirken? Lassen Sie uns das besprechen,
während wir es bauen. Das Erste, was das tun
wird, ist unsere Schlüssel zu bekommen. Im Grunde genommen sind unsere Artikelreihen. Und danach benötigen
wir auch
unsere Werte, um die Beträge zu erhalten , weil wir auch die Beträge aktualisieren müssen
. Wir holen uns unsere Schlüssel aus unseren Daten,
den Artikeldaten. Also werden wir
jede für eine lokale Variable heraufstufen, nennen
wir die Schlüssel. Lassen Sie uns das
auch auf eine Variable hochstufen. Nennen wir diese Werte. Oh. Wir werden alle Schlüssel
durchgehen. Ich werde
die Schlüssel für Loop mitbringen. Und ich werde die Tabellenzeile der
Datenzeile aus
den Elementen der Datentabelle D abrufen. Eigentlich werde
ich einen Strahl machen. Ich werde
das als lokale Variable bewerben. Nennen wir diesen Artikel Daten. Ich werde diese
beiden löschen und Artikeldaten hinzufügen und die Ausgangszeile hier verbinden. Ich habe also auch einen Strahl mit
meinen Artikeldaten. Jetzt hole ich mir
meine Inventarbilder. In einem bin ich zwei,
drei und vier. Ich werde ein
Array erstellen. Jetzt kann ich alle unsere Knöpfe mit 14 Schleifen bearbeiten. F zwei. Für jeden von ihnen werde
ich eine
sehr einfache Frage stellen. Ist der Artikel aca? Komm her, verbinde dich mit dem
Index, ich werde ihn kaputt machen. Warum mache ich das und
wie mache ich das? Da unsere Artikel in einer bestimmten Reihenfolge zu unserem Inventar
hinzugefügt werden in einer bestimmten Reihenfolge zu unserem Inventar
hinzugefügt und diese Reihenfolge in unseren Arrays
beibehalten wird Also, bis auf eins, sortieren wir bis zum Index Null unseres
Inventar-Arrays und so weiter Also, ob unsere Artikel stabil
sind oder nicht, fangen wir an, wenn
sie nicht stabil sind Ich brauche den Text, lass uns zurück zum Designer gehen. Wählen wir unsere Texte aus. Ich mache sie zur
Variablen T, in einem. Der nächste wäre en zwei. Das Zimmer wird T in drei sein. Nun zu den Variablen, ich kann sie in
der bestimmten Reihenfolge wieder hierher bringen ,
eins, zwei, drei, vier. W, um ein Array zu erstellen.
Möchte sie zu diesem Array hinzufügen. Da diese Arrays
übereinstimmen, kann
ich einen gewünschten Index
für das gewünschte Muster abrufen und ihn
unsichtbar machen Eigentlich versteckt. Ich werde
das auf falsch stellen. Als Nächstes muss ich
unser Array-Element abrufen. Das
wird ein bisschen sein. Das ist Pinseltextur. Hier angeschlossen, und
für die Pinseltextur
werde ich sie
aus unseren Artikeldaten holen, hier ein
Inventar erstellen, das nicht verbunden ist, und dieser Teil ist fertig Wir stellen
das kleine Holz
auf der Unterseite so ein, dass es unsichtbar ist, und wir stellen das
Texturbild für unseren Artikel ein Oh, wenn es sichtbar ist, erhalten
wir
einfach unsere Werte
unseres Inventars, also
die Mengen Und wir werden unsere
Textur der Textur bekommen, tut mir leid. Wir holen uns den
Text, um den Betrag auszufüllen. Ich werde Text sagen. Ich werde unsere
Werte hier abrufen, ich werde eine Kopie abrufen, der Wert wäre der
Index, den wir ausführen. Natürlich müssen wir ihn
sichtbar machen, nur für den Fall,
dass er unsichtbar ist. Ich meine, den Text, dem
wir eine Zahl hinzufügen,
und dann werden wir
die Pinseltextur einstellen. Das wäre. Das wäre unsere Funktion, die das Inventar
aktualisiert. Es ruft unsere Werte ab und gibt unsere
Schlüssel und Werte und erstellt dann eine
Liste unserer aktuellen Artikel. Es geht über unsere Schaltflächen und wendet die Zahlen und Bilder
an oder legt
sie unsichtbar Ich denke, nach all dem sind
wir mit
unserem Inventarsystem fertig Ich denke, nachdem wir all diese Dinge
gegessen haben, ist
es an der Zeit, unseren Charakter zu
spawnen Wir können anfangen,
einige dieser Mechaniken zu testen. Um das zu tun, müssen wir
einige Dinge erstellen , um die
Transaktion ein wenig reibungslos zu gestalten. Denn wie gesagt, wir
haben das Laden. Beim Laden werden wir eine Animation erstellen
,
einen Truck mit mehreren Animationen. Aber wir werden es Fade Load
nennen. Das erste, was wir
hinzufügen werden, ist unsere
Ladeleiste, die für mehr Sichtbarkeit sorgt. Zum Lkw, zum Lastwagen mit Ladestange und einer anderen Art von Lkw,
nämlich Sichtbarkeit. Jetzt wird es versteckt. Wir wählen
jetzt den Ladetext unserer Animation am
Truck oder dem Element aus. Und jetzt fügen wir den Truck hinzu,
um das Element zu manipulieren, wieder
Sichtbarkeit, also versteckt. Zuletzt wählen wir
unser Bild aus. Wir kehren zur Animation
zurück, fügen es als Truck hinzu und fügen den
Truck zu seinen Eigenschaften hinzu. Wir werden die
Render-Opazität einstellen. Geben wir es Sagen wir, 2 Sekunden halb, 25, machen wir den Unterschied, und hier wird er Null sein. Also eins zu Null. Wir haben diese Acht
unserer Ladung und unseres Bildschirms. Lassen Sie uns kompilieren und speichern. Gehen wir zurück zu
unserem Labyrinth-Generator. Gehen wir gegen
Ende. Wir sind bei 0,85 Stellen wir die falsche Paste ein. Ich habe Prozent gesetzt. Warten wir
auch einen Bruchteil einer Sekunde. Lass es uns auf eins setzen. Nennen wir jetzt Pain Loading. Lass uns in der Animation mitspielen. Lassen Sie uns jetzt hier einen Zweig erstellen. Verzweigen Sie hier tatsächlich, dass dieser Zustand auf
Generatorebene sein soll. Das entspricht eins. Wenn das das erste Level ist, machen
wir die
Play-Animation des Ladens Da wir es aus dem Elternteil
entfernen werden. Also was wir jetzt brauchen. Nennen wir es ein Ereignis. Ich werde
einen Event-Player machen. Nennen wir es hier drüben. Spieler. Und holen wir uns unsere
Animation und Zeit. Aber wir wissen, wie lange
diese Animation dauert, und lassen Sie uns das klarstellen. Aber wir können warten, bis
die Phase abgeschlossen ist, und lassen Sie uns eine Schicht auf
Troll und deine Nein, fertig. Maus. Und das wird
unser Gameplay ermöglichen. Aber es stellt sich die Frage, haben wir unseren Mund versteckt? Ich denke, das haben wir
nicht. Nein, lass uns gehen. Der Start am Anfang wird abgespielt
, wenn wir das Laden anzeigen. Wir wollen unsere Maus verstecken. Bevor die Show geladen wird, setzen
wir die
Show-Maus auf False. Gehen wir zu unserem
Ladebildschirm und dem Widget. Lassen Sie uns unsere Leinwände auswählen
und sie auf sichtbar setzen. Wenn alles in Ordnung ist, nein, oder nicht. Dadurch muss
das Ziel mit dem Widget verbunden , da Animate
Target ein Benutzer-Widget ist Es bedeutet, wo
spiele ich diese Animation ab. Das ist die Animation, die
ich gerade spiele, aber wem gehört sie?
Das ist es, was es brauchte. Datei speichern und Spiel starten drücken. Das Spiel beginnt. Wunderbar. Ich denke, das ist es für diesen. Beim nächsten Fehler. Bringen wir es hierher, wo es ist. Es ist eine Kunstbewegung. Wir haben
diese Dinge noch nicht programmiert. Deshalb
mag es es nicht. Controller runter. Wir werden es später reparieren. Aber das ist es für diesen. Wir werden mit
dem nächsten fortfahren. Auf Wiedersehen.
74. Spawnen des Spieler-Zoom in der Kinobearbeitung: Zuvor waren wir mit
unserer Funktion zum Aktualisieren des Inventars fertig , mit der unser Inventar abgerufen wird Sie fügt unsere Schlüssel und unsere Werte zu separaten
temporären Werten hinzu. Wir gehen unsere Schlüssel durch und fügen sie zu unseren
Inventardaten hinzu. Wir gehen die Tabellennamen unserer
Schlüssel durch und fügen sie zu den Inventardaten hinzu. Dann schauen wir uns unsere Bilder an, quasi
die Buttons, und wir fühlen uns die
Statistiken entsprechend an. Und danach gingen wir
zu unserem Ladebildschirm. Wir haben eine einfache Animation
mit vielen Eingaben und vielen
verschiedenen Elementen erstellt . Wir haben unser
Hintergrundbild zum Ausblenden gebracht. Wir verwenden das Laden und unseren
Textblock, um sie nicht zu verwenden. Wir haben sie zu
Beginn der Animation auf versteckt gesetzt, also verschwinden sie und dann wird
sie ausgeblendet In unserem Labyrinth-Generator haben wir unseren
Ladeprozentsatz aufgefüllt Und wenn sich der Generator auf Stufe eins
befindet, bedeutet
das, dass wir uns
auf der ersten Ebene befinden Wir spielen also die
Überblendanimation
unseres Inventars in
unserer Ladeleiste ab und dann spawnen wir unseren Spieler Wir haben eigentlich
nur eine Funktion gemacht. Wir haben den Spieler noch nicht wirklich
gespawnt. Aber danach haben wir die
Endzeit unserer Animation erreicht. Wir haben verzögert und die Maus
so grob eingestellt. Und als Nächstes sollten wir
eigentlich unsere Ladung besorgen. Wir ziehen um. Nein, laß uns jetzt unseren Spieler spawnen. Das Erste, was
wir brauchen werden, stell das vor, es werden die Koordinaten des Dungeons
sein Wir werden unseren Kerker holen. Wir werden unseren
ersten Block finden, um ihn zu teilen. Standardmäßig heißt es 00
und wir werden den Standort ermitteln. Wir werden dem Song
etwas mehr Höhe hinzufügen, auf Hundert hinzufügen klicken, und das ist der Spawnpunkt Jetzt werden wir Actor Plus
verwenden. Der Schauspieler wäre der Schauspieler. Wir werden die Transformation an
dieser Transformationsstelle
aufteilen . Wenn wir so spielen, werden
wir wahrscheinlich den Pom sehen. Und in großer Entfernung auch. Das liegt daran, dass wir
keine Kontrolle darüber haben,
denn wir spawnen auf, es ist wie bei jedem anderen Schauspieler wir auf diese Welt gebracht Wir haben also einen neuen Fehler. An Ort und Stelle bei Max's Items. Was war der Fehler? Warum versucht
es, den Maze Generator zu Oh, wahrscheinlich im Labyrinth. Wir haben nicht das, was
unsere große Brust bei
Requisiten, Spa, maßgefertigten Requisiten ist unsere große Brust bei
Requisiten, Spa, maßgefertigten Requisiten Nein. Nein. Ich gehe einfach raus und
gehe direkt zu SP und unsere große Truhe ist da,
Labyrinth-Generator selbst? War es unsere große Truhe oder
war es unsere kleine Truhe? Lass uns die kleine Truhe finden. Ja, es war eine kleine Truhe. Ich selbst. Aber die große Truhe. Wahrscheinlich habe ich
diese oder die große Brusttruhe nicht verändert. Wir brauchen hier eine Truhe. Hier. H. Warum kann ich nicht nochmal, ich kann nicht die Standardeinstellung sein. Ich wähle es so aus. Ich weiß nicht, warum
es mir andersherum nicht gefallen hat. Und hier brauchen wir eine Generation. Hier spawnen wir also im Grunde
die kleine Truhe. Ich habe die Klasse nicht geändert. Ich weiß nicht, warum Andel so ein großes Problem
hatte. Oh, weil ich
den Rückgabewert richtig angeschlossen hatte. Ja, das ist der Grund. Gehen wir also zurück zu unserem Spawn-Charakter
und schauen wir uns an, warum wir nichts
spielen, nichts tun können Wenn wir einen anderen Schauspieler spawnen, wir
den anderen
Schauspieler immer noch nicht bewegen oder Jetzt haben Pfoten und Charaktere eine besondere Fähigkeit, die man
Besessenheit nennt Und um etwas zu besitzen, brauchen
wir den Spieler-Controller Und vom Player-Controller ziehen
wir, was,
wie Sie im Tooltip sehen können, an der Spieler-Steuerung befestigt
ist und
diese
Pfote von diesem Controller aus in Besitz Das bedeutet, dass du
diese Pfote im Grunde bewegen kannst. Besitzen bedeutet noch viel
mehr. Wir werden das jetzt nicht machen. Aber wenn ich es so lasse,
bedeutet das, dass ich
meinen Charakter bewegen kann , während das
Ausblenden stattfindet. Wir werden hier eine Verzögerung einbauen. Und wir werden den Kern
der Animation verwenden. Drücken wir jetzt Play
und Sie werden sehen, dass sich auch hier die
Kamera geändert hat. Die Kamera hat sich ein wenig verändert und wir können uns tatsächlich bewegen. Unsere Stacheln durchbohren uns also nicht, sie machen uns nur verrückt. Lass uns das reparieren. Gehen wir zu unserer Falle,
gehen wir zu unseren Stacheln. Da das nur visuell ist, sollten
wir es physisch so einstellen, dass es keine
Kollision gibt Das ist etwas
Visuelles, das passiert. Wir wollen nicht, dass es zu
Überschneidungen bei Ereignissen kommt. Außerdem
muss der Fallenkörper nicht kollidieren. Lass uns zur Kollision gehen.
Keine Kollision. Generieren Sie keine
Over-Rap-Events, kompilieren und speichern Sie sie. All diese kleinen Dinge
übernehmen wir einfach , weil es viele Fallen
gibt, und es wird
noch viele geben. Und wir lassen die Zeit aus
und wir können spielen. Die Animation ist irgendwie komisch
. Ich werde nachschauen, was es ist. Wir können Räume betreten. Wir werden das
Ding reparieren, weil die Kamera gerade komisch ist. Und wie Sie sehen können,
klicke ich hier drüben, also geht es nicht richtig. Dies sind Probleme mit
einem Verstärkungsregler, und es gibt viele
Probleme, die wir beheben müssen. Was diese Fackel betrifft, lässt sie sich
zum Beispiel leicht ausschalten. Lass mich mal sehen. All die Fackeln? Alle Fackeln. Also
lass uns anfangen, Dinge zu reparieren Fangen wir mit dieser Fackel an, wir alles sehen, was wir finden. Wir sollten es sofort reparieren. Wir gehen also zu
den Flurlichtern. Wird direkt gehen. Also Requisiten, Raumrequisiten. Gehen wir dahin, wo
wir unsere Fackel spawnen. Eine Fackel ist eigentlich das
Erste, was wir tun. Also muss ich es sein. Roo Fackel. Lassen Sie uns diese
Werte wieder ändern, wir sind bei der
Blaupause, den Raumrequisiten, diesem ersten Teil
der Kette von Ereignissen Was war das Problem hier? Ich denke, das sind die drei, 320. Lassen Sie uns bei
320 und allem nachfragen. Stapel spielen. ist noch weiter. Lass mich es einfach auswählen. Ich gehe zu dem Kind. Es ist das Kind eines Kindes, also kann er das nicht wirklich tun. Was ich tun kann, ist die Zimmerfrucht zu
finden. Und von dort aus die Fackel. Also 20 war die falsche Richtung. Das sind 375. Schauen wir uns eine andere Richtung an. Das ist. Was ist das? Okay? Aber das ist dieselbe
Richtung. Dieser. Ich habe es in
Sly gefunden, indem ich darauf geklickt 375. Ja, im Grunde ist
das der Wert. Okay, also 375, 375 minus 375 -75. Das sind die neuen Werte. Oh, lass uns weitermachen. Lassen Sie uns das zuerst überprüfen. Aber ich denke, jetzt
wird es okay sein. Diese Fackeln sind okay,
sie sind in der Wand, aber das macht nichts, sind schon besser Das ist ein bisschen
innerhalb der Wand. Aber es ist in Ordnung. In Ordnung. Nein. Lass
uns mit unserem Besitz des
Gedichts weitermachen . Was wirklich passiert. Was wir sehen können ist
auch, dass ich, wenn
ich spiele, ein anderes
Licht habe als wenn ich besessen bin und den Charakter
besitze Wenn ich zum Beispiel auswerfe, wird
das Licht plötzlich fantastisch, wenn ich es nicht auswerfe, das Nein. Lassen Sie uns das beheben, denn
es ist sofort ein Schnäppchenstopp. Wir können
so nicht testen. Es ist wirklich hässlich. Gehen wir zu unserem
Op-Down-Charakter, Bauplänen, dem
P-Down-Charakter, der ECT-Kamera Beginnen wir mit dem Hinzufügen
der Belichtung. Das heißt, je länger
wir dem Licht,
unserem Auge, ausgesetzt sind, wird es übernommen, sodass die Kamera
einen Effekt wie diesen erzeugt. Also werden wir nach
Haltung suchen. Wir werden den
Mittelwert auf maximal 2,1 setzen. 0,1 könnte etwas niedriger sein. Stellen wir es auf eins und prüfen, ob wir es bei der Wiedergabe verringern
müssen. Und es ist schon ein bisschen dunkler geworden. Wenn ich auswerfe, können wir sehen , dass die Farbpalette
irgendwie gleich bleibt, die Beleuchtung, was sie erzeugt All das ist behoben. Der Grund, warum es
hier so funktioniert
, ist , dass wir keine Spieleinstellungen
verwenden. Ich klicke darauf, es gibt keinen großen
Unterschied, und E V Null, wo es dunkler wird, wenn ich
es auf eins setze, und wenn ich es auf minus eins setze, wird
es heller. Jetzt setze ich es wieder auf Null. Und das ist
der Expositionsgrad. Das ist es, wofür
E V meiner Meinung nach steht. Was wir auch tun müssen,
ist ein kleines Intro zu erstellen , weil es wirklich
abrupt zum Charakter geht Also werde ich aufhören. Ich werde etwas
hinzufügen. Schnell zum Projekt hinzufügen. Ich gehe zur Kamera. Schauspieler, ich werde
diese Position bis auf 000
setzen und weißt du was? Ich werde das Bild tatsächlich nach
oben bewegen, auf Play drücken. Ich werde ablehnen. Finde die Kamera.
Ich glaube, das ist es. Cera. Nein, das liegt daran,
wie Sie sehen können, das ist 1520, während
unsere Kamera auf 300 war Ich hole mir diese Kamera. Ich werde darauf klicken, ich werde die Kamera steuern. Vielleicht, um es in eine allgemeine
Position zu bringen. Hier, ich weiß es nicht. Das wird unsere Intra-Kamera sein
, die zu unserem Spieler geht. Vielleicht mit dem Gesicht zum Spieler. Und Winkel. Ja, okay. Jetzt drücke ich A
und die Position wird gespeichert. Wenn ich also Stopp drücke, befindet sich die Kamera an dieser Position. Jetzt gehe ich zum Level-Blueprint. Oh, wir hatten eine Kamera. Das hab ich vergessen. Ich werde die erste Kamera löschen. Ja, es sollte
die Verbindungen unterbrechen. Und der Level-Blueprint. Ich habe es gerade zuletzt geöffnet. Ich werde die Kamera wählen. B das Level und
erstelle eine Referenz. sehe jetzt, dass es aktualisiert wurde
, weil es vor der eingestellten Kamera nicht aktualisiert Das ist nicht bekannt, da ich die vorherige Kamera
gelöscht habe. Ich werde das verbinden.
Wir werden das löschen. Wir werden kompilieren und speichern. Und hier, wo wir Spawnerspieler sind, werde
ich
vor der Verzögerung eine Sequenz machen Und ich leihe es dir und wir klicken auf
kontextsensitiv , weil
wir es nicht Also wähle ich eine langweilige Ansicht mit einer
langweiligen Ansicht, ein Ziel mit einer langweiligen Ansicht, ein Zielbild mit langweiligen Ansicht Nun, warum ist es nicht erschienen? Das liegt daran, dass es sich nicht um eine
wirklich übliche Funktion handelt
und dass sie eine Anforderung hat. Die Voraussetzung ist
der Play-Controller. Wenn ich also von hier aus zeichne und das Ziel „Überblendung anzeigen“
erhalte, lassen wir „Überblendung mit Ziel anzeigen“. Sehen wir uns Target
mit fad Raising an
und verbinden das hier. Ihr seht, wir haben es sofort ohne
Kontextsensitivität
bekommen , weil es
zum Player gehört , der Controller hat im Grunde
diese Funktion Es ist in der Kategorie Player. Die Überblendzeit
wäre also wieder unser Laden, unser Nichtladen, unsere
Auszahlung nach dem Laden,
und vielleicht -0,1
Sekunden, und vielleicht -0,1 wenn sie vorbei ist, haben
wir eine Sekunde Zeit, bis wir einen Punkt haben, das ist meine Ansicht Und zu guter Letzt müssen wir
unser neues View-Target
mit unserem Charakter verbinden unser neues View-Target , denn das ist das Ziel, das
wir uns ansehen werden Es nimmt
unser aktuelles Ziel, unsere Kamera, und geht
zu einem anderen Ziel. Lass uns das Spiel testen. Und es funktioniert irgendwie. Ich denke, das ist
genug für diesen. Wir werden beim nächsten
alles reparieren weil wir einige Einstellungen
korrigieren müssen, viele Einstellungen, die repariert werden müssen.
Wir werden dich dann sehen. Auf Wiedersehen.
75. Kollisionsbehebungen und Spielerkachelerkennung: Hallo und willkommen zum
Game Design Workshop und dem Kurs zur mit
Real Engine Five Erstellung prozeduraler
Dungeon-Action-RPGs Zuvor hatten wir unsere
Kameramechanik entwickelt, bei der wir „
Ansicht“, „Abrufen“ und „Mischen“ eingestellt bei der wir „
Ansicht“, „Abrufen“ und „Mischen unsere ursprüngliche Kamera in unserem Level, das wir platziert haben, und wir haben eine Referenz
innerhalb des Level-Blueprints erstellt, die wir vorher hatten, aber wir haben eine neue erstellt, die eigentlich
keine Rolle spielt Außerdem haben wir beim Spawnen den
Code vervollständigt, um zwischen den Zielen zu wechseln und den Spieler in Besitz zu nehmen,
wenn die Fade-Out-Animation Jetzt haben wir auch ein bisschen gespielt und ein paar Dinge gefunden, während
wir uns bewegt haben Zum Beispiel verhält sich die Maus unseres Spielers seltsam,
wenn
wir uns im Raum befinden . Und als wir es tatsächlich waren,
hatten wir dieses Beispiel nicht, aber als wir
durch
die Felder gingen, machte der Charakter
eine seltsame Bewegung, besonders zwischen den
Verbindungen der Steine. Lassen Sie uns nun darüber diskutieren, warum diese
Dinge passieren. Zuallererst kann
ich beim Auswerfen immer noch Dinge aus
dem Show-Menü auswählen Aber wenn ich Kollisionen auswähle, können
wir sofort sehen,
was vor sich geht Zum Beispiel sind unsere Büsche
hier auf unsichtbar gesetzt, aber ihre Kollision ist aktiviert Das Gleiche passiert
mit unseren Siegeln,
die wir als unsichtbar bezeichnen, aber die Kollision dauert immer noch Und das beweist, dass wenn im Spiel etwas unsichtbar
oder versteckt
machen, das nicht
bedeutet, dass wir die Kollision tatsächlich
schließen Ein weiteres Problem ist
, dass wir zu Beginn des Spiels anderen Lichteinwirkung ausgesetzt sind als die Spielkamera. Also, lasst uns diese Dinge reparieren. Lassen Sie uns mit einem Wort unsere
Kamera auswählen. Suchen wir nach der Belichtung, hier ist sie, und stellen wir die
minimale und maximale Belichtung auf eins ein,
so wie es bei unserer Kamera im Spiel der Fall ist. Ich werde speichern. Gehen
wir nun als Nächstes zu unserer
DP-Kachel und wählen die NS aus. Wenn wir die Vines auswählen, gehen
wir zum Standardverhalten über, da sie keine Überschneidungsereignisse
erzeugen müssen Sie müssen nicht vom Charakter
betreten werden. Sie müssen keine Kollision
haben. Es ist nur eine visuelle Sache. So können wir alles so einstellen
, dass es keine Kollision gibt. Wir werden speichern und kompilieren. Nun, manchmal stürzt es
ab, wenn wir Dinge mit den Reben machen. Ich hoffe, wir haben
das bei der Veröffentlichung behoben .
Es gibt ein Problem. Lass es mich dir zeigen. Ich
wähle ein Asset aus. Ich werde Explorer
zeigen. Und im Explorer gehe ich
zum Dungeon Jin-Kurs und ich gehe
zum Beispiel zu „Gespeichert“ und protokolliert uns ein Eilprotokoll. Wenn
wir in unserem Crash-Log sehen können, dass es
einen wiederholten Fehler gibt , falls
du einen Absturz hattest, um
die Vines
geht , dass derzeit nur opake
oder maskierte Blend-Mods unterstützt
werden, und wir haben
Blend-Mods ein Problem mit Durchsichtigkeit Wie wir an den Pinienblättern sehen können, handelt es sich um Ich denke, wir werden das
bis zum Projekt behoben haben ,
aber wenn es passiert, ist
es nur so, dass die Engine abstürzen
könnte, wenn
sie verschoben oder die
Einstellungen an ihnen geändert Als Nächstes würden
wir zu
unseren Dekorationen gehen und unsere CDLs
auswählen Sie wählen sie alle aus,
eins, zwei, drei,
vier, wählen sie alle aus, und ich gehe
auch zur Kollision und aktiviere das Häkchen bei Generate over Piens to no und Charakter
step on no and no Collision, weil das wiederum etwas Visuelles
ist Wir sollten uns das nicht ansehen. Wir sollten nicht damit
kollidieren. Nun, wenn ich jetzt auf Play drücke, werden
diese Probleme behoben Wenn ich also durch die Kachel gehe, siehst
du eine viel
gleichmäßigere Bewegung, und wenn ich neben Türen gehe, werde ich nicht
durch eine Kollision blockiert Ich glaube nicht, dass uns das sowieso
versperrt hat. Wenn ich jetzt aber einen Raum betrete, versuchen
wir, einen Raum zu betreten.
Sie können sofort sehen, dass die Maus hier einige Probleme hat. Ich ziele sowohl auf meinen Charakter auch der Charakter bewegt
sich nach unten. Warum ist das so? Auch hier haben wir die Decke so eingestellt
, dass sie unsichtbar ist. Es ist tatsächlich hier. Wir können es nicht sehen,
aber es ist hier, eine Abzweigung von Kollisionen Und wenn Sie es wieder einschalten,
können Sie sehen, dass es aktualisiert wurde, um zu zeigen, dass
unsere Decke da ist. Um Kollisionen auszuschalten
und
unser System zum Ein- und
Ausblenden der Decke in einem Raum zu starten unser System zum Ein- und
Ausblenden der Decke in einem Raum Aber bevor wir das tun, nur eine kleine Änderung
an unserer Kamera Lass uns zu unserer Kamera gehen. Wir gehen eigentlich zu unserem Charakter,
zu unserem Frühling, nicht zur Kamera. Der Frühling ist wie ein Boomstick. Es ist wie ein Stock, der die Kamera
hält, und er hat seine eigenen
Regeln. Wir werden die
Zielarmlänge auf 2.500 ändern. Wir haben also eine gewisse Distanz
zu unserem Charakter. Und dann ändern wir die Drehung auch nicht absolut sein
muss, relativ von -50, wir behalten sie bei -50,
und zur Z-Achse, der blauen Achse, fügen
wir 45 hinzu, um
unser Spiel isometrisch Das nächste, was wir ändern
werden, ist, wir Lag eingeben werden, es gibt eine aktivierte Kameraverzögerung
, die wir
deaktivieren werden, weil wir wollen, dass
unser Charakter
immer zentriert ist , die wir
deaktivieren werden, weil wir wollen, dass und nicht die Kamera
den Charakter verändert. Denn wenn wir jetzt spielen gehen
, gibt es eine kleine Verzögerung auf unserer Kamera, wenn
wir uns bewegen. Ups. Ich glaube, ich habe mich in Bezug auf den absoluten
Standort geirrt Ja. Ja, es muss
in absoluter Rotation sein. Also
wählen wir Welt 45. Und jetzt gehen wir zurück. Jep. Musste absolut sein Man kann sehen, wie sich unser Charakter bewegt, aber unsere Kamera hat eine Verzögerung. Es steht nicht wirklich im Mittelpunkt
unseres Charakters. Es wird verzögert, bis die Kamera
zum Charakter gebracht wird. Also lasst es uns ohne diese Verzögerung eher wie ein
Pablo-Spiel machen. Wir werden
zu einem Charakter gehen. Ich werde wieder Lug wählen. Ich werde Camera Lug deaktivieren. Also
sollte unser Charakter jetzt in der Mitte bleiben. Wir haben viel mehr Kontrolle,
also hör hier auf, hör hier auf. Wir wissen, was wir vor
uns haben. Richtig. Nun, um mit dem
System für die Zimmer zu beginnen. Als Erstes müssen
wir
eine Variable für unseren Charakter erstellen , um zu
speichern, wo sich unser Charakter befindet. Ich gehe
zu unserem Charakter. Ich werde auf Variablen klicken und eine neue Variable
erstellen. Nennen wir es ds, und das wird ein gutes Beispiel
sein. Um unserem Charakter
zu sagen, was unsere Koordinaten sind, müssen
wir auch zu
unserem Kachel-Blueprint gehen und hier einen weiteren Wert
erstellen Rufen wir uns an. Lassen Sie uns auch diesen
Punkt ändern. Das beste Spiel, um
diesen Endpunkt zu speichern , wäre,
wenn wir das Plättchen spawnen Wir machen daraus Weihrauch,
bearbeiten und veröffentlichen unseren Spawn,
kompilieren, speichern und kompilieren und gehen dann zu unserem
Generator zur Generierung von
Labyrinthen Gehen wir in Phase eins zum
Anfang, aber wir spawnen gerade unsere Kacheln und das müssen wir aktualisieren Wir haben Fliesenschnüre. Und für Kachelkabel verwenden
wir einfach
die Curr-Koordinaten Jetzt sind die Informationen auf die
Kachel übertragen worden. Wie geben wir es an den Spieler weiter? Nun, bei Dekorationen haben wir eine Kollision, die wir vielleicht für etwas anderes genutzt
hätten, aber jetzt werden
wir sie dafür verwenden. Aber wir müssen auf „
Überlappungsereignisse
generieren“ klicken , um wahr zu sein. Und für Kollisions-Presets haben
wir es auf Atom Ignoriere im Grunde alles außer dem Spieler-Pon, dem
Teich Das ist unsere Kartonkollision
in unserer Dekoration. Ab dieser Kollision beginnen
wir mit der Überlappung der Komponenten. Wir werden überprüfen, ob die
andere Komponente Ug Tug hat, das ist der Ziehspieler, wir werden einen Ast anlegen
und wenn sie den Tug hat, werden
wir die Besetzung
von einem anderen Schauspieler Charakter von oben nach unten. Und von unserem Charakter von oben nach unten gehen
wir zu den
aktuellen Koordinaten. Und um unsere
aktuellen Koordinaten zu erhalten, werden
wir als BP-Kachel
die Referenz der Kachel, zu der
die Dekorationen gehören, und die Koordinaten der Kacheln ermitteln. Und wir werden das hier
verbinden. Also, wann immer wir einen Block
betreten, weiß unser Spieler
jetzt, wo er
in welchem Stil er hintritt. Nun, ich denke, das ist eine gute
Überwindung für diesen Fall. Ich sehe
dich im nächsten. Tschüss.
76. Raumdecken-Mechaniker: Hallo und willkommen im
Game Design Workshop, echten Engine Five
Procedural
Dungeon-Action von Bz Zuvor haben wir
unsere Koordinaten gespeichert, die Koordinaten unserer Spielsteine Und dafür haben wir eine
val-Variable in unserer BP-Kachel erstellt. Da ist sie. Hier ist es, P-Kachel, was als
Kachelkoordinaten bezeichnet wird, und wir haben diese
Variable erstellt, als wir unsere P-Kachel aus
den aktuellen Koordinaten
spawnen Dann erstellen wir
eine weitere Variable für unseren Charakter,
bei der es
sich um eine weitere Variable für unseren Charakter,
bei aktuelle Koordinaten handelt, und mithilfe der Box-Kollision
unserer Dekorationen ändern wir einige
Einstellungen für die Kollision Wir haben ein
Startüberlappungsereignis erstellt, dem
wir überprüfen, ob die Komponente
den Tag „Spieler“ hat, und wenn ja, geben wir
die Koordinaten des Plättchens an. Und jetzt
verwenden wir diese Informationen weiter , um unser System zum Verbergen unserer Decken
zu erstellen. Nein. Wir sind auf den Koordinaten des
Bauplans. Lasst uns gehen und uns daran erinnern,
was wir geschaffen haben. Wir haben hier einige
Kollisionen hinzugefügt, anhand derer erkannt wird , ob der Spieler
einen Raum betritt Wir gehen zu
ihren Kollisionseinstellungen. Wir werden dazu übergehen, Over-Events zu
generieren. Ja. Wir ändern
den Step-on-Modus, lassen Ja
und Kollisions-Preset stehen, setzen wieder Benutzerdefiniert und ignorieren alles
außer der Spielerumfrage. Als Nächstes wählen
wir jeden von
ihnen aus und wählen das Ereignis „
Beginn über der Runde“ und die Komponente „
Ende über der Runde“. Für beide benötigen wir eine Überlappung am
Anfang und eine Überlappung am Ende. Es könnte eine
einfachere Lösung , indem wir
diese Aktionen verbinden könnten. Aber machen wir es ein paar Mal und gewöhnen uns daran
, Kabel hinzuzufügen. Wir haben alle Anfangs- und
Endüberlappungen. Lassen Sie uns sie trennen. Wir haben also, dass sich das Ende
überschneidet und der Anfang
überlappt. Die Reihenfolge spielt eigentlich keine Rolle. Nochmals, was fragen wir? Lassen Sie uns die Anfangsüberschneidungen machen. Wir fragen, ob die andere
Komponente der Player ist. Also holen wir uns das
Stag-Tag P und unseren Zweig. Und wir werden
das in jede Funktion übernehmen. Siehst du, ich hätte fast
den Fehler gemacht,
ich hätte fast eine Verbindung zum Schauspieler hergestellt. Das ist das Problem mit
unverbindlichen Maßnahmen. Aber wenn Sie sich nicht irren, können
Sie es in einer
der sich wiederholenden Aktionen tun Das, warum funktioniert West nicht? Dann schauen wir uns an,
dass West nicht funktioniert, weil er mit
dem Schauspieler verbunden ist. Fein. Die nächste Frage wir stellen sollten, ist, dass unsere
Decke sichtbar ist. Aber das ist eine Frage
für alles, sodass wir sie mit allen verbinden können. Ich werde
die Filiale hier hinstellen. Ich werde hier alle
T-Zweige verbinden. Und anhand unserer variablen Obergrenze
, die ich von hier mitgebracht habe, werden
wir uns sichtbar fragen Für den nächsten Teil benötigen wir unsere Tangentenreferenz,
wir werden unsere Kachel abrufen
und wir werden
Gon, ihr benannter Generator, loslegen O Generator-Referenz, und wir müssen eine weitere
Funktion auf unserem Generator erstellen Gehen wir zu unserem Labyrinth-Generator und erstellen wir eine neue Funktion Wir nennen
diese Funktion room filling hydrom sep. Sie benötigt die
Eingabe einer Ganzzahl, die der Raumindex
sein wird, weil jede Kachel weiß,
ob es ein Raum ist und
sie einen Index weil jede Kachel weiß hat Wenn wir also hier Platz nehmen, müssen wir, wenn wir hier Platz anrufen, auch unser Zimmer bekommen X. Kein Raumindex, wie? Es tut mir leid, der Zimmerindex ist in den Dekorationen
gespeichert. Er wird gespeichert, wenn
wir die Wände hinzufügen. aktivieren wir tatsächlich der Türen aktivieren wir tatsächlich die Kollision auf der Kastenkomponente Beim Hinzufügen
der Türen aktivieren wir tatsächlich die Kollision auf der Kastenkomponente. Welche Box-Komponente
ermöglicht die Kollision. Wände R A, Chaos auf dem Dachboden,
Kinder von Wänden. Also aktivieren wir
die Box-Komponente, das die
Eingänge. Macht Sinn. Aber wenn wir sie hier aktiviert hätten, würde das ausgelöst, auch
wenn es kein Raum wäre, und es würde die
Antwort Raum Null geben. Deshalb schließen wir das
Ereignis „Überlappung generieren“ dieser Boxen. Also mein Fehler. Es ist das riesige Programm, das
nicht lügen wird. Und bei all unseren Zwischenboxen müssen die Wände geschlossen sein, um Überlappungen
zu erzeugen. Also feuern sie nur
, wenn es sich um einen Raum handelt. Jetzt werde ich den
Raumindex hier verbinden. Weißt du, es sieht vielleicht nicht so
aus weil wir uns auf Bauplänen befinden, aber wir haben ein paar tausend
Codezeilen und noch mehr Arbeitsspeicher ist also ein großer
Vorteil für einen Programmierer. Persönliches Gedächtnis, biologisches
Gedächtnis, kein Computerspeicher. Nun, Computerspeicher an sich ist
auch ein großer Vorteil. Gehen wir jetzt los und verstecken den
Raum C-Funktion. Lassen Sie uns diese grundlegende
Funktion abschließen. Aber auch hier benötigen wir
etwas Zusätzliches, um diese Funktion zu
vervollständigen. Das wäre ein
Blueprint-Schnittstellenkern. Also lass uns unsere
Labyrinthkämme öffnen und eine neue Funktion hinzufügen. Nennen wir das D. Nun,
das hängt im Grunde an
unserer Decke, weil unser Befehl, die Decke zu
verstecken, von den Dekorationen kommt Wir haben zu einem zentralen Punkt geschickt. Sagen wir unser Labyrinth, weil wir dort die Raumkoordinaten
haben Wir verstecken die Decken dieses Zimmers. Und dann sendet unser Labyrinth jetzt
eine Nachricht an jeden Raumindex,
um seine eigene Decke
zu verstecken Es ist also ein bisschen
Hin- und Her-Information. Wie dem auch sei, lass uns in unser Labyrinth gehen. Nein, tut mir leid, in unser Labyrinth, und wir werden für
den Raumindex von Variable werben ,
nicht für eine lokale Variable, sondern für eine echte Variable, permanente Variable, real.
Permanente Variable Nennen wir das Raumindex. Der Grund, warum wir
das brauchen, ist wir,
wenn
wir die Decken verstecken , wissen müssen welchem Raumindex wir die Decke verstecken
müssen. Oh. Jetzt brauchen wir auch eine
Spielerreferenz, und da
wir die Referenz in
diesem Diagramm irgendwo hier veröffentlichen. Verschwinde auf magische Weise,
lass es verschwinden, lass es
aussehen, als wäre es aus dem Nichts
erschienen, nein Lass es verschwinden, im Grunde
den Fehler, den ich hier hinterlassen habe Wie dem auch sei, um
diese Variable zu bewerben, klicken
wir mit der rechten Maustaste
und heben die Variable hervor. Ich werde das nennen. Jetzt haben wir also einen
Hinweis auf unseren Spieler. Gehen wir zurück zu
unseren Spielergrenzen und holen wir uns unsere
Spielerreferenz. Was wir fragen müssen,
ist ziemlich einfach Ist unsere aktuelle Zeit?
Aktuelle Akkorde Ja. Das sind unsere aktuellen
Koordinaten , der Spieler, der darauf steht. Gehört nicht zu dem
Raumindex, in dem wir uns befinden. Aber dafür benötigen wir
unser ST-Raum-Array, das ist ein Array mit unseren
Raumkoordinaten mit allen
Räumen und ihren Koordinaten. Wir werden uns eine Kopie besorgen. Ich hole mir den Raumindex. Und wir werden fragen,
ob das eingedämmt ist. Ray ist in einem
Array enthalten, tut mir leid, das Gegenteil. Das passiert, wenn
du vorausschaust, wir müssen
den Raum nicht verlassen. Wir müssen nur überprüfen, ob unsere
Co-Koordinaten da drin sind. Eigentlich müssen wir es bekommen. Und wir müssen
die Koordinate verbinden , das
muss kaputt gehen. Nun, weil das
ein Array enthält , ist das im Grunde der Grund, und wir überprüfen, ob
das enthaltene Array in den Raumkoordinaten ist. Ich werde
hier auf einen Zweig drücken, um einen Zweig zu setzen. Und als Nächstes müssen wir von unseren Raumkoordinaten ausgehen
und wie gesagt, wir werden die Decke verstecken. Und jetzt habe ich es mit Falsch verbunden. Warum habe ich es mit False verbunden? Der Grund dafür ist, dass dies ausgelöst
werden
sollte, wenn wir einen Raum betreten. Wir sollten nicht nachdenken, während
wir uns im Raum befinden, da unsere Räume aus vier davon
bestehen. Und das bedeutet, dass wir vielleicht eine weitere Tür
haben , sodass die Kollision in den Raum
geht. wir
diese Kollisionen durchmachen, wollen
wir sie nicht noch einmal
auslösen Das sollte also
nur von außen
nach innen ausgelöst nur von außen
nach innen Natürlich hätten wir
mit einer solchen Kollision konfrontiert werden
können, aber warum nicht
Umstände schaffen, unter denen wir aber warum nicht
Umstände schaffen, unter denen wir mithilfe von Code überprüfen können,
wie wir Regeln anwenden können Nein, holen wir uns unseren Kerker. Lass uns unsere
Koordinaten finden, unseren Schauspieler. Von diesem Schauspieler, der im Grunde unser Titel
ist. Holen wir uns unsere Dekorationen, das ist der Behälter
unseres Dekorationsschauspielers. Wir brauchen einen
Schauspieler und aus diesem Grund werden
wir eine Nachricht einreichen. Ich sende die Nachricht, die wir gerade in unserer
Blueprint-Oberfläche
erstellt Denn wenn ich es
direkt an die Kachel schicke, heißt das nicht, dass
der Kinderdarsteller es bekommt Und auch wenn ich es an die
Corans schicke, ist das ein Container. Es ist nicht der eigentliche Schauspieler. Also brauche ich den Kinderschauspieler. T wir testen und
wir haben einen weiteren Absturz. Mal sehen, was
das Problem ist. Offen für den Absturz. Das ist Gehe zur G-Datei. Wir haben von hier aus angefangen. Wird auf nicht statischen,
maschinengeeigneten Materialien verwendet. Das Material hat also ein Problem. Ja, das waren die
gleichen Probleme wie zuvor. Es hat die Optionen Mischen und Undurchsichtig und der Mischmodus
wurde angegeben, durchscheinend, und
dann ist es kein Also, wir werden das beheben, senden und neu Und wie Sie sehen können, habe ich es nicht getan, ich habe es nicht gespeichert,
bevor ich kompiliert und gespeichert habe. Also werde ich das
nochmal ganz schnell mit Camera
Alla machen, und fertig. nun, bevor wir testen, Lassen Sie uns nun, bevor wir testen,
einen sehr einfachen Code erstellen , um die Obergrenze
zu verbergen Gehen wir zu unserer Dekoration
und fügen wir
unser Interface hinzu, und fügen wir
unser Interface hinzu weil die
Dekorationen es nicht haben Also werden wir Mize, Pi,
PI hinzufügen . Ich habe es implementiert Wenn Sie es nicht implementiert haben, fügen Sie
einfach I Maze Comes Here hinzu. Von dort aus gehen wir zur Benutzeroberfläche und
wählen die Höhen Lass uns erst einmal ins Spiel kommen. Wir werden immer noch das
Problem mit der Kollision haben, aber die Decken sollten
versteckt sein, wenn wir den Raum betreten. Lasst uns auch zu unserer Decke gehen
und ihre Sichtbarkeit finden, die Verborgenen im Spiel, und lassen wir das oder es ist nicht mehr im Spiel
versteckt. Es muss versteckt werden
, wenn wir spielen. Wenn wir einen Raum betreten. Lass uns spielen. Hoffentlich ist alles in Ordnung. Die Truhe braucht die Regel. Wir stoßen an die Decke, aber nicht glücklich werden,
denn die Truhe braucht die Regel, dass sie nicht vor einer Tür spawnen Lass uns das schnell hinzufügen. Lass uns zu unserem Labyrinth-Generator gehen. Gehen wir dahin, wo
wir das Nest spawnen, wo wir die
Koordinaten für die Truhe festlegen Und wir haben diese Regel, die neben der Tür
steht. Landkarte. Wir bekommen die Koordinaten. so oft versucht
, dass es gescheitert ist und es gehalten, vielleicht weil
wir diese Regel haben und diese Regel richtig ist. Wir haben es mit den Lichtern überprüft. Vielleicht habe ich das schon oft versucht und es konnte es nirgends
platzieren. Vielleicht war es das.
Also lass uns nochmal spielen. Jetzt ist manchmal die Perle
geschlossen, wo ist eine Truhe. Es ist nicht vor einer
Tür, vielleicht war es nur eine.
Toll. Toll Für diesen werden wir
hier aufhören. In der nächsten werde ich
dich singen. Tschüss.
77. Deckenmechaniker ein- und ausblenden: Hallo und willkommen beim Design Workshop
und dem
Kurs zur Erstellung von
Action-RPGs mit echtem Engine Five,
Procedural Dungeon Action-RPGs Zuvor haben wir mit
unserer Mechanik zum Verstecken von Decken begonnen. Wir haben die Funktion ym
in unserem Labyrinth-Generator eingerichtet
, der unseren aktuellen Raum speichert
und überprüft, ob unsere aktuellen Spielerkoordinaten in dem Raum
befinden, den
wir betreten möchten Wenn nicht, verstecken wir
die Decke. Und danach
haben wir, um die Decke zu
verbergen, ein Blueprint-Interface erstellt das wir in unseren
BP-Dekorationen verwendet haben Eine Minute. Das ist es nicht. Das ist es, aber wir machen
unsere Decke vorerst unsichtbar. Oh, lassen Sie uns das animieren. Lassen Sie uns eine Animation erstellen, damit sich
die Decke versteckt, und dieselbe Animation wir verwenden werden, damit
sie erscheint Lassen Sie uns zunächst eine Variable
erstellen, damit wir den
Zustand der Decke ermitteln können. Wir werden das die Höhle anrufen. Am Abend sagen wir, wir werden
ihm sagen, dass es wahr ist. Nein. Wir brauchen das nicht mehr. Wir benötigen die
Referenz für die Obergrenze, aber später, nachdem wir die Option „Ausgeblendet“ festgelegt
haben, fügen wir eine Zeitleiste hinzu. Und wir
geben die Timeline und erstellen einen Flow-Track ab 01, mit Zeit Null, Null oder
Null und Zeit 0,3 oder Eins. Wir werden
das letzte Schlüsselbild verwenden. Es läuft nur bis hier, und wir wählen
unsere Decke und setzen den Sturm ab Wir werden es
verbinden, um es zu aktualisieren. Wir werden Vektoren alarmieren. Wir werden unseren Alpha,
unseren Truck Flow Truck,
anschließen unseren Truck Flow Truck, und dann fahren wir 111-001 Am Ende müssen
wir das Set natürlich verstecken Wir gehen zu einem Spiel, wo
wir die Auserwählten finden werden, wo sind die Auserwählten? Für unseren Index verwenden wir
die Richtung. Wenn es vorwärts geht,
wollen wir, dass es versteckt ist, wenn es rückwärts geht, wollen
wir, dass es nicht versteckt Und da wir wissen, dass dies zu
einem Kollisionsproblem führen wird, gehen
wir
zu unserer Decke und
wählen „Keine Kollision Es ist schon erledigt.
Aber wenn nicht, weil ich einen Unfall hatte. Ich bin mir nicht sicher,
ob wir
das schon einmal gemacht Wir müssen verhindern, dass es
tatsächlich zu Überschneidungen haben. Wir müssen verhindern, dass es
tatsächlich zu Überschneidungen kommt und die Kollision wieder auf unsere Decke fällt. Wenn wir jetzt spielen, können
wir uns
diese Animation ansehen. Y. Jetzt geht es nicht zurück. Aber wir werden die Swaps reparieren. Da gab es einen
Frame-Lag. Sie können jetzt also die Bewegung
ohne Kollision sehen, und wir haben sie sogar
animiert, damit sie nicht hier Eine Kollision wäre im Moment nicht
wirklich wichtig. Wir können jetzt tatsächlich
korrekt in den
Räumen innerhalb der Räume laufen . Fahren wir also mit der Erstellung unserer Funktionen zum Verbergen der Decke fort. Lassen Sie mich das für eine Sekunde überprüfen. Warum gab es so ein Rahmenprotokoll? Hey, ich glaube, nur mein Computer. Hab da ein paar Probleme. Ich kann die Spitzen hören. Oh ja. Nein. Es war nur Schluckauf,
weil ich das Projekt geöffnet habe,
nachdem Stimmt. Lass uns im Grunde unsere
Decken reparieren. Lasst uns dieses Mal von der anderen Seite beginnen. Gehen wir zu unserer
Blueprint-Oberfläche. Fügen wir die Funktion hinzu. Nein. Funktion Decke,
Decke. D-Zeichen. Wir sagten, dass es diesmal das Thema
ist, das schlecht benannt ist. Wir rufen an,
was unsere Botschaft ist. Wir setzen
das Verborgene auf Falsch und
kehren vom Ende zurück. Einfach rückwärts, nicht vom Ende, denn wenn wir in
dem Moment ausgehen, in dem wir eintreten, wollen
wir nicht, dass es am Ende
beginnt,
wir wollen, dass es umgekehrt
wird, wo auch immer es ist. Und das Gleiche gilt für Play, und aus diesem Grund haben wir es nicht von Anfang an mit dem Spielen
verbunden. Also, wann passiert das? Nun, wir haben die
Endüberschneidungen. Machen wir sie kompakter. Aber wir haben unsere
sich überschneidenden Ereignisse. Wir werden uns diese Frage stellen
müssen, wenn das, was sich am Ende überschneidet, unser Charakter
ist Wir kennen das Verfahren, wir
kopieren und fügen diese Zweige ein. Auch hier wäre es besser
gewesen, sie zu binden. Wir würden es so machen, dass
wir ein Array erstellen werden. Wir holen uns unsere Boxen und finden
bei Beginn eine Überlappung in einer For-Schleife, die
alle Boxen enthält, und erstellen ein benutzerdefiniertes Ereignis, das diese Dinge
tut. Lass uns weitermachen. Wir werden
das hier verbinden. Und wir werden das hier
verbinden. Und dann müssen
wir zu unserem Labyrinth-Generator gehen. Erstelle eine neue Funktion.
Nennen wir das Idee. Nein. Roh Schritt Wir werden keine Eingabe benötigen
, weil wir die Variable
des aktuellen Raums gespeichert
haben, und nach all dem werde
ich herausfinden, was hier die
Generator-Referenz ist,
ich werde die Referenz hier kopieren und einfügen,
und
das Raumset, wenn all das wahr Gehen wir nun zum Showroom-Set. Lassen Sie uns unser
Funktions-Hydrom-Set finden. Wir werden es so kopieren,
wie es ist, ohne die Menge
der Ganzzahl, und fügen es hier Oder wenn die Verbindung unterbrochen
wurde, brauchen
wir unsere aktuellen
Stäbe. Anstatt uns zu verstecken, müssen
wir sie zeigen I. Also, lass uns kompilieren und speichern. Lass uns zu unserem Spiel gehen und
schauen, ob es funktioniert. Ich habe mich versteckt und es ist aufgetaucht. Aber es erschien sofort. Und jetzt hat es nicht einmal funktioniert. Ich gehe rein und ich gehe. Ich bin reingegangen, was ist passiert? Wir müssen es debuggen. Eingetragen, vielleicht habe ich
zu viel eingegeben und bin dann gegangen. Nein? Jedenfalls scheint es zu funktionieren. Was ist dort wirklich passiert? Bin ich immer noch
an der Kollision beteiligt? Ja, wahrscheinlich bin ich bei
der Kollision geblieben und
habe es nicht bemerkt. Also lass uns die Animation sechsfertig machen. Lass uns in unser Versteck gehen
und nachschauen, was los ist. Ein Zimmer so bald. Entschuldigung, nicht. Ich gehe hierher. Setzen wir einen Breakpoint. Sie gehen so, gehen so. Hat das Spielzeug S. Seltsam. Oh. Oh, warum passiert das? Es passiert, weil ich am Ende
die Sichtbarkeit festlege. Es spielt also die Animation ab, aber am Ende wird die Decke angezeigt. Also im Grunde gehen wir das
so an, wie es ist. Hat keine Reifen Kommentar. Wir lassen das so und gehen hier hin und
verbinden das hier und machen es unwahr Jetzt können wir die Decke
vor der Animation sehen. Verstecken, Verstecken, Y, und wir sind
fertig mit unserer Decke. Oh, das ist es für diesen. Ich werde
dich am nächsten sehen. Auf Wiedersehen.
78. Blaupause mit Aufzugsvisualisierungen: Hallo und willkommen bei den
prozeduralen
Aufrufen zur Erstellung von
Dungeon-Action-Pz im Game Design Workshop für
echte Engine Five Erstellung von
Dungeon-Action-Pz Zuvor waren wir mit
unseren Funktionen zum Ein- und Ausblenden von
Decken fertig unseren Funktionen zum Ein- und Ausblenden von
Decken Wir haben unsere
Decken mit unserer Zeitleiste animiert. Wir haben die eingestellte Weltskala verwendet,
um diese Animation zu erstellen, und dann haben wir das
Show-C-Blueprint-Interface-Event erstellt Und wir haben die ID und den Wert auf Falls gesetzt. Wir haben die
Obergrenze für das Verbergen
so eingestellt, dass wir die Animation sehen können, da wir uns
auf I verstecken . Am Ende von Forward, am Ende des Ding-Events. Und dann haben wir
die Ereignisse zu unseren
Endüberlappungsereignissen verknüpft . Wir haben überprüft, ob es unser Spieler ist
, der sich am Ende überschneidet, und wir haben in
unserem Labyrinth-Generator die Saudecke,
also Raumdecke, erstellt , was genau derselbe Code ist wie bei der Decke verstecken Aber dieses Mal
zeigen wir die Decke. Der einzige Unterschied besteht
darin, dass wir die aktuellen
Raumkoordinaten
verwenden, wohingegen
wir beim Verbergen der Decke tatsächlich
diese Koordinate anpingen. Lassen Sie uns nun mit dem Bau unseres
endlosen Brunnens fortfahren, nicht wirklich endlos ist, wie wir am Anfang
besprochen haben. Aber es gibt
unendlich viele Möglichkeiten. Und lasst uns die Schöpfung in ein Labyrinth verwandeln. Lassen Sie uns unseren Aufzug fertigstellen. Habe viele Tabs geöffnet. Ich fange einfach an, sie alle zu
schließen. Bae, je mehr Tabs
Sie geöffnet haben, niedriger wird Ihre FPS tatsächlich wieder, wenn Ihr Computer
nicht so stark Ich werde den Aufzug öffnen. Ich gehe zu
den Bauplänen, ich gehe zu den
Requisiten und ich werde unseren
Aufzug wählen Ich werde es herbringen. Und außerdem werden wir einen neuen Plan
brauchen. Nennen wir das
BP-Aufzugsmechanismus. In Ordnung. Also, dieser Aufzugsmechanismus sollte eigentlich unser
Spinnenrad hier drüben haben. Ich werde das kopieren und ich werde es hierher bringen. Jetzt müssen wir den Maßstab
ändern bei. Ich werde
das entsperren und hier 0,4 und hier 0,3
und in Z 0,4
setzen . Es ist also ein bisschen kleiner
und es ist ein bisschen. Jetzt werden wir hier ein
bisschen kreativ sein und zwei weitere statische
Meshes
hinzufügen, eigentlich drei Bei den ersten beiden gehen
wir zu unseren Meshes, und da ist ein
X-Foltergerät Hier ist es, und wir
werden es auf
dieses und noch eins einstellen dieses und noch eins Also im Grunde
werden wir das hier haben und
hier drüben, das muss
gedreht werden. Oder in der Nähe. Kettenbewegung, es ist alles, es sieht so aus, als ob es etwas ist
, das funktioniert. Ja, das ist in Ordnung. Dann
nutze ich das Chaos, das wir
leer haben, und hole mir eine Kiste. Ich werde es herbringen. Um es ein bisschen dünner zu machen. So, um es hierher zu bringen. Und tatsächlich werde ich
es polarisieren. Lassen Sie uns eine von der
anderen Seite nehmen, ebenfalls metrisch. Mir gefällt dieses Rad hier. Machen wir es nicht symmetrisch. Ich sehe das gern. Wenn du willst, kannst
du es symmetrisch machen. Ich denke,
aus der obigen Sicht werden wir es für okay
halten. Vielleicht können wir das
ein bisschen größer machen. Diese Achse. Auch dieser. Es ist in Ordnung. Es ist in Ordnung. Wenn du willst, kannst du mehr
damit
herumspielen und
es sichtbarer machen. Was wir tun werden
, ist eine rotierende Komponente, eine rotierende Bewegung. Und wir werden zum
geraden Diagramm gehen, es hierher bringen und wir werden
unser Rad nehmen, das, glaube
ich, das Pflanzennetz ist . Wenn du willst, kannst du das machen, und wir gehen zu der
Komponente, zu unserem Rad. Lass uns zu unserem Viewport gehen. Gehen wir zu unserem rotierenden. Wenn wir simulieren, können wir
sehen, wie alles rotiert. Lass es mich in das
Bauskript schreiben. Oh, ich habe nichts geändert. Oh, sieh mal, du kannst
diesen simulierten Teil ausschneiden. Lass uns von hier aus weitermachen. Gehen wir jetzt zurück
zu unserem Aufzug und lassen Sie uns
dieses statische Netz unsere Aufzugsplattform ersetzen. Dafür haben wir ein Meth. Wir sind hier und essen Elevator Cube. Das ist es. Jetzt fügen wir einen Kinderdarsteller hinzu
, der als
Aufzugsmechanismus dienen wird. Jetzt wählen wir eine
Site aus, um das zu platzieren. Ich werde diese
Seite auswählen und sie rüberbringen. Ich wohne hier. Ja, ich denke, es ist in Ordnung. Und jetzt brauchen wir
noch ein paar Dinge. Wir werden einige
Dinge brauchen, um unseren Spieler zu blockieren. Natürlich werden wir
auch ein lokaler Spieler sein , um uns nicht bewegen zu können. Aber warum
erlauben wir ihm nicht, sich zu bewegen? Es ist unsere Wahl, ob wir das aktivieren
wollen oder nicht und einige Wände haben, die den Spieler daran
hindern, sich zu bewegen. Also werde ich
weitere statische Maßnahmen hinzufügen. All diese Stifte. Erstens, und es wird so
sein, dass wir diese
Aufzugsfläche oder das statische Netz brauchen. Wir werden das rotieren
und es hierher bringen. Vielleicht muss es
ein bisschen größer sein. Ich denke, das ist in Ordnung, lass uns das hier
kopieren und einfügen, lass es uns wieder einfügen
und drehen , es hierher
bringen, wir werden
das holen und einfügen, es hierher bringen. Wir haben alle Seiten eine Mauer. Wir
werden nämlich, wenn der Spieler
in den Aufzug kommt, diesen
hochziehen. Wenn wir jetzt
das nächste Stockwerk erreichen, werden
wir
ein weiteres statisches Netz benötigen. Ich werde
kein Flugzeug sein, es wird der Elevator Cube
031 sein , bevor wir den 026 benutzen Das wäre also unsere ausziehbare
Plattform, weil wir vom
Aufzug bis zu unserer Kachel einen Raum zum Gehen
haben werden vom
Aufzug bis zu unserer Kachel einen Raum zum Gehen
haben Also werden wir
eine solche Plattform auf der
Grundlage der Seite erweitern , die von unserem Labyrinth aus
zugänglich ist, das wäre der Nullblock, und wir werden
diese Plattform zu dieser Seite hin erweitern diese Plattform zu dieser Seite hin Lassen Sie mich seinen Standort zurücksetzen. Und das nächste, was wir brauchen
werden, ist eine Kamera. Und wir werden diese Kamera
platzieren. Ich bleibe zwei E. Wir werden diese
Kamera über dem Aufzug platzieren. Stellen wir sie auch ein
bisschen zur Seite oder zur Seite. Diese Seite und vielleicht ein bisschen tiefer. Das ist in Ordnung. Also wenn wir hochgehen, können
wir das sehen und wir werden es
durchlarpen, sodass wir
das Labyrinth nicht mehr sehen können Wir können nicht links und rechts sehen. Wir sehen nur den Aufzug. Hier neigen wir ihn auch ein bisschen. Wir werden sehen, wann wir die Animation
machen, wir werden sehen, wie sie aussieht. Als Nächstes
müssen
wir eine Kollision hinzufügen,
eine Boxenkollision, aber wir wissen,
wann der Spieler in die Mitte
gekommen ist eine Boxenkollision, aber wir wissen, . Und wir werden es tatsächlich so lassen, wie es ist
, weil wir
sichergehen wollen
, dass der Spieler reingekommen ist. Wir wollen nicht, dass du
es auslöst, wenn der Spieler hier ist, wir wollen, dass du es auslöst, wenn der Spieler in der Mitte ist. Vielleicht machen wir es sogar
ein bisschen kleiner. Vielleicht bewegen wir es in Richtung des
Knopfes mit dem Mechanismus, ein bisschen hier. Ja, das scheint in Ordnung zu sein. Oh, eine weitere Sache, die wir
tun sollten , ist, die
notwendigen Komponenten wir wollen, dem Körper zuzuführen. Lasst uns mit diesem Körper kommen, denn
der Körper wird steigen. Aber wir wollen nicht, dass die
Kollision zunimmt, zum Beispiel mit dem Körper. Wir wollen nicht, dass
das mit dem Körper steigt. Aber da wir
es sein werden, ist es nicht wirklich
wichtig, um ehrlich zu sein, weil wir den Standort des Schauspielers
verwenden werden. Aber weißt du was?
Lass es uns auf die harte Tour machen. Lasst uns den Körper verwenden, nicht den Standort des Schauspielers, weil wir beide Möglichkeiten zeigen werden. Wenn wir den Standort des Schauspielers verwenden, sollten
wir
diesen untergeordneten Schauspieler abtrennen Dieser Teil ist also am Boden, und dann könnten wir den Schauspieler nach oben
bringen Aber lassen Sie uns ihn abnehmen, nur
um zu zeigen, wie wir ihn abnehmen. Und dann lass uns die Leiche nach oben bewegen. Aber wenn wir den Körper nach oben
bewegen wollen, müssen wir die Dinge,
die wir mit dem Körper
bewegen wollen, auch erziehen. Also das wären die Zäune. Das wäre nicht die Kiste. Wir wollen die Kiste nicht.
Das wäre die Kamera. Die Kamera
, die wir mitnehmen wollten. Das wäre das
Aufzugsflugzeug und auch der Zaun dafür. Ja. Also
müssten diese Dinge im Aufzug untergebracht
werden. Ich denke, wir müssen
das etwas reduzieren. Ja. Ja, es hat sich
irgendwie überlappt Oh. Das ist der Aufbau unseres
Aufzugs, und ich denke, das ist eine
gute Überwindung, und wir werden mit
dem nächsten weitermachen, um den Code zu konkretisieren. Tschüss. Wir sehen uns dann.
79. Spawn Next Labyrinth-Mechaniker: Hallo und willkommen zum
Gain Design Workshop, einem Kurs zur Erstellung eines echten
Action-Rollenspiels mit Engine Five prozeduralem
Dungeon-Action-Rollenspiel Zuvor haben wir die
Grafik unseres Aufzugs erstellt. Wir haben auch den
BP-Aufzugsmechanismus entwickelt, bei dem es sich um ein Bild handelt, Rad dreht und sich vom Aufzug
löst Jetzt haben wir nur
das statische Netz aktualisiert, das für
das Rad mit unserer
rotierenden Bewegung verantwortlich ist , und wir haben unsere
Struktur mit
unserem Körper und den Komponenten geschaffen unserem Körper und den Komponenten weil wir unseren Körper tatsächlich
bewegen werden. Lassen Sie uns nun damit beginnen, was passiert, wenn wir mit dem E
kollidieren.
Mit dem Kollisionswürfel Nein. Eine Komponente beginnt sich zu überschneiden Stellen
wir die erste
Frage. Ist es ein Spieler? Oh, hat einen und hat einen Zweig angelegt. Wenn das stimmt,
müssen wir überprüfen, ob unser
Spieler den Schlüssel hat. Wir werden den Spielmodus bekommen. Wir werden zu GM wechseln, um den Top-Down-Spielmodus
zu aktivieren. Wir werden
es in eine reine Besetzung umwandeln. Und wir werden
eine Bestandsaufnahme machen. In unserem Inventar
werden wir I six finden, was der Rohname
unserer Datentabelle oder unseres Schlüssels ist. Jetzt werden
wir einen Zweig verwenden und ihn
verbinden mit, ob er ihn gefunden
hat oder nicht? Oh, wir werden es mit
true verbinden , weil es ein Player ist und wir ihn nicht gefunden haben, dann ist es ziemlich einfach. Wir spielen einen Sound und das war's. Der Sound, den wir spielen
werden, hat etwas mit dem Aufzug zu
tun. Aufzug ist ausgefallen. Aufzug fällt aus
Q, weil wir Warteschlangen wollen Ja, das ist es. Wenn es wahr ist, werden
wir es einmal tun. Denn was auch immer danach
passiert, wir wollen es nicht
wiederholen. Es passiert. Es sollte keine Chance geben
, dass es wieder passiert. Oh, das Erste, was wir tun
würden, ist die Bewegung
des Spielers zu deaktivieren. Aber da wir diese Dinge noch nicht
erstellt
haben, werden wir sie später hinzufügen. Als Nächstes sollten
wir unseren Kinderschauspieler besorgen, das ist unser
Fahrstuhlmechanismus und wir werden einen Kinderschauspieler bekommen, und wir werden vom Schauspieler. Wir werden die Welt behalten. Aber der Standortmaßstab und die
Rotation bleiben gleich. Das nächste, was
wir tun werden, ist, Mechanismus zu deaktivieren Wir werden
es in eine reine Cust umwandeln. Ab hier wollen wir die
rotierende Bewegungskomponente, und wir gehen zu
dieser Rotationsrate Zwei -60. Es fängt an, das Rad zu drehen, und ich werde die Y-Achse M 62
einstellen Lassen Sie uns das tatsächlich testen. Lass uns unseren Aufzug finden.
Das heißt kompilieren. Lassen Sie uns tatsächlich das
Hauptmenü öffnen und unsere Ms
etwas kleiner machen . Hauptmenü. Hier sind wir. Und
wir gehen zu den Kacheln und
setzen das auf zehn. Sagen wir vorerst zehn. Ich werde kompilieren.
Lass uns Play drücken. Eine wirklich kleine Karte.
Ich habe einen Raum geschaffen. Interessant. Auch hier können
Sie sehen, dass es keinen Ort finden
konnte, an dem
es platziert werden kann, also entschied es sich, sich
neben einer Tür zu befinden. Unser Charakter ist
wirklich, sehr klein. Jedenfalls. Also ich gehe nach Evert. Das sollte nicht
von Anfang an rotieren. Gehen wir also zum
Aufzugsmechanismus und setzen die Rotationsgeschwindigkeit auf Null. Lass uns kompilieren und speichern. Lass uns nochmal spielen. Es
hat das Santo gespielt. Das liegt daran, dass wir den Artikel oder das Recht nicht
haben. Aber es rotiert
jetzt nicht. Gut zu wissen. Lass uns ein bisschen schummeln und diesen Artikel in unser Inventar aufnehmen Lass uns zu unserem Datenhalter gehen, lass uns zu unseren Bauplänen gehen Gehen wir in unseren Spielmodus. Wählen wir unsere
Inventarvariable und addieren wir sechs mit einer Menge von
eins. Unsere Kompilierung wird gespeichert Ich denke, wir leben von Quantität bis Null , wenn es keine Menge gibt Gehen wir auf jeden Fall zu den Artikeln, Artikeln dt, der Schlüsselmenge eins. Wir haben für alles eins. Das Gute ist, dass
ich hier einen hinzugefügt habe. Kompilieren und lass uns spielen, und jetzt haben wir den Schlüssel Das erfordert auf jeden Fall einen
anderen Kameraalarm. Ein hier. Hier ist es. Und es fing an,
das Rad zu drehen. Das ist gut. Lassen Sie uns nun diesen
Schlüssel aus unserem Inventar entfernen. Gehen wir zurück zu ihrem Aufzug. Wir holen uns unsere
Inventarnummer , die wir von hier
haben, ich werde sie weiter leiten Und dann werde ich auch hierher
umleiten. Ich werde die sechs entfernen. Jetzt ist es entfernt, aber wenn wir unser Inventar
geöffnet haben, wird dieses Holz aktualisiert. Wir müssen unser
Bildmaterial im Inventar aktualisieren. Aus unserem Spielmodus ziehen
wir hier raus
und holen uns das
Gameplay, unsere Widget-Referenz,
das Widget-Gameplay , und
wir gehen zum Inventar Und das Inventar wäre
von hier aus so. Denn selbst wenn wir es hier
nur entfernen, wurde
diese Variable aktualisiert. Lassen Sie uns jetzt auch einen Sound abspielen. Lass uns das kopieren. Lass uns
Let Unlock machen . Ich denke, das ist es
, was wir hier spielen. Ja, Aufzug entriegeln. Und jetzt ist es an der Zeit, das
nächste Labyrinth vorzuschlagen. Also, was wäre der
Standort unseres nächsten? Nun, das hängt
wirklich davon ab, was wir wollen. Im Moment habe ich nur den Ort
festgelegt und den Standort des Schauspielers ermittelt. Und davon habe ich
dem Z 2.500 unreale Einheiten hinzugefügt. Oh. Wir werden diese Variable
bewerben. Nennen wir dieses neue Zentrum.
Und warum neues Zentrum? Weil unsere Labyrinthe immer weiter gebaut
werden, werden
immer mehr Dungeons gebaut vom Zentrum aus in
jede Richtung Nein, wir rufen
einen Polizeikurs an und
wählen unseren Generator Gen. Labyrinth. Und wir teilen den
Standort auf und verbinden das Nun, wir haben hier
eine Reihe von Optionen
, die wir abschließen müssen. Um sie zu vervollständigen, müssen
wir wissen , welches Level der
vorherige Generator hatte und einige
Informationen daraus. Was wir tun werden, ist
wieder eine G-Referenz zu erstellen. Wir werden dafür sorgen, dass
es Me Gen eintippt. M. Natürlich wieder Objektreferenz, und wir
werden sie hierher bringen. Das erste, was wir brauchen,
sind unsere Mac-Styles. Denn auf dieser Grundlage fügen wir,
sagen wir, einen zufälligen Ganzzahlbereich
hinzu. Das wäre, sagen
wir, eins,
zwei, lassen Sie uns unsere
Generatorstufe berechnen. Eins, zwei
Generatorstufen plus eins. In diesem Fall eins, 22, dann wären es eins, zwei, drei, eins, 24, eins, fünf und so eins. Also werden wir das hier
verbinden, und die Stilgröße
sollte 600 sein, das bedeutet, dass sie standardmäßig 600 sein
sollte. Ich bin verwirrt. Wir haben den
richtigen Wert im Hauptmenü. Es ist 800. Warum komme ich bei
600 nicht weiter? Ich weiß es nicht. M-Größe F Ma-Größe, wir bekommen Ma-Größe. Und weil wir
einen erhöhten Betrag hinzufügen, sollten wir ihn immer nur
um eins erhöhen. Aber machen wir das nur, wenn unsere Mac-Styles
nicht zu unserer Mac passen. Also als hätten wir das Maximum
erreicht. Wir werden
weniger machen und wir werden das mit t
multiplizieren . Das ist also im Grunde, wie viele
Steine wir zu unserem Labyrinth hinzufügen können Und wenn das niedriger ist
als das, was wir platzieren können, dann ist alles in Ordnung Also machen wir
eine bestimmte Größe für das Labyrinth, ich verwende das
für eine Bedingung,
und wenn es stimmt, wenn das weniger ist als das, was wir passen können, dann wählen wir die
May-Größe. Wir behalten es beim Alten Wenn wir nicht können, fügen
wir einfach einen hinzu. Bringen wir es hierher,
damit es klarer ist. Wir fügen dem
gesamten Umkreis einen hinzu. Das könnte in Ordnung sein. Jetzt brauchen wir natürlich
eine Generatorstufe, also nehmen wir Generatorstufe und
addieren eins zu acht. Und verbinde das hier. Unser Generator ist jetzt aktualisiert. Lass es uns in Aktion sehen. Haben wir einen wunderbaren Absturz oder
funktioniert alles perfekt? Gehen wir also zum Aufzug. So winziger Charakter. Und wir zeigen Ladezeit und
Bildschirm. Das ist nicht gut. Und wir haben einen Frost. Ich werde das Löschen kontrollieren. Das ist wahrscheinlich
ein Wild für Loop. Das ist eine Endlosschleife. Ich werde
den Task-Manager verwenden , um das Projekt
erneut zu öffnen Das passiert oft bei Loops. Sie können das,
was du machst, komplett zerstören. Aber es besteht die Möglichkeit, dass das nicht so war, weil
wir unsere Ladung haben, und ohne Laden funktionieren manche
Dinge vielleicht nicht. Gehen wir zurück. Ich denke, das ist ein guter
Haltepunkt für diesen. Wir werden das beim
nächsten reparieren. Machst du es dann?
80. Fortgesetzte Labyrinth-Generation aus der ersten Kachel: Und willkommen zum
Game-Design-Workshop unter prozeduralen
Dungeon-Action
- oder Pz-Erstellungsaufrufen für
Engine Five - oder Pz-Erstellungsaufrufen Bisher haben wir mit
unserem
Überschneidungsereignis „Aufzugsbeginn“ begonnen , bei dem wir beim
Betreten unseres Aufzugs überprüfen, ob es der Spieler ist Und dann überprüfen wir, ob der Spieler den Schlüssel
hat, den er haben
sollte. Wenn er ihn nicht hat,
spielen wir einen Sound wie Fail. Du kannst nicht weitermachen. Wenn er den Schlüssel hat, wollen
wir die Ereignisse
, die folgen werden. Wir sind uns also nicht sicher, also sind wir sicher, dass
sie nicht wieder stattfinden. Zunächst haben wir damit begonnen, unseren Kinderschauspieler
abzunehmen, das ist dieser
Mechanismus hier drüben, und wir haben seine rotierende
Bewegungskomponente, die wir
dem Aufzugsmechanismus hinzugefügt haben, so eingestellt ,
dass sich
um -16 in der Y-Achse dreht Dann fahren wir fort, indem wir
den Schlüssel aus dem Inventar entfernen und unser Inventar aktualisiert haben Wir spielten ein Geräusch, das
der Aufzug entriegelte, und wir starteten unser neues Labyrinth,
bei dem es einige Probleme gab Und um ehrlich zu sein, gab es
natürlich einige Probleme. Zuallererst haben wir
nicht auf Weiter geklickt. Ich habe nicht auf Weiter geklickt
, weil ich den Kurs mache. Es war also diese
Schaltfläche „Weiter Chef“ hier drüben, auf die wir klicken
müssen, um diesem Generator mitzuteilen, dass wir fortfahren
werden. Wenn das nicht das erste
Teil ist, bauen Sie weiter. Wir hätten auch
überprüfen können, ob
die Generatorebene die Nummer eins
war. Oh, das haben wir
dann auch gespeichert . Dann levele ich später in den
Dungeon, in den Spielmodus Wir hätten
es aus dem Spielmodus nehmen anstatt nur dafür eine
Referenz zu erstellen, aber wie dem auch sei, was wir
tun müssen , ist das
Kontinuum mit dem ersten Stil zu verbinden Weil wir keinen Inventarbildschirm
anzeigen wollen. Ich wurde aus dem Elternteil entfernt. Also jedes Mal, wenn das aufgerufen
wird, wird
es wahrscheinlich
einen Fehler geben, aber das ist uns egal, weil
wir wissen, warum es da ist. Wenn wir den Fehler nicht sehen
wollen, könnten
wir einen Knoten setzen, der gültig ist. So vor
dem eingestellten Prozentsatz, und wir werden es
hier verbinden. Wenn es gültig ist, legen
wir Prozent fest, wenn
es nicht gültig ist, gehen
wir zum nächsten Knoten. Aber das werden wir nicht tun. Wir werden
es einem Fehler überlassen, einem kontrollierten Fehler.
Nennen wir es. Wenn es aufgerufen wird, es ungefähr 5 Stunden. Es ist in Ordnung. Jetzt, bei unserem ersten Spawn-First-Stil, müssen
wir den Code für das
Spawnen des ersten Stils hinzufügen Und warum ist es anders? Lass uns malen gehen. Oh. Wenn wir spawnen, sagen wir mal,
das ist zu stark vergrößert. Das ist raus. Das ist
einfach perfekt. Hier. Nehmen wir an, das ist
unsere Kachel, die beginnt. Das ist unsere Kachel mit dem Aufzug, das ist
also unsere Plattform
für den Aufzug. Wenn wir hochgehen. Wenn wir das nächste
Labyrinth spawnen und nach oben gehen, erscheint
es direkt über uns Also, wenn das das erste Plättchen ist und wir
es in eine bestimmte Richtung verschieben müssen Und sagen Sie diesem Stil , dass wir die Richtung, in die wir
sie verschoben haben, entgegengesetzt zu
der Richtung, in die wir sie verschoben das Intro nennen, dem wir tatsächlich
unsere Kiste haben , aus der später
der Ballon kommen wird Indem wir das also ausgleichen, machen
wir den Mittelpunkt unseres Dungeons, den Intro-Block
von nun an Also lass uns gehen und das ganz schnell
machen. Wir werden eine neue lokale Variable
erstellen. Aber wir werden
Offset Direction Direction nennen. Es wird vom Typ
Direction sein. Dann setzen wir ein
zufälliges Objekt aus einem Array. Und wir werden ein
Array erstellen , um eine
Richtung auszuwählen, das ist bei vier,
das wird
Nordost-Südwest Nord-Südwest sein, und das wäre unser Offset. Das nächste, was wir
brauchen, ist ein neuer Ausgang. Also machen wir wieder einen wilden
Loop und werden wild. Für die Bedingung verwenden
wir, unser letzter Ausgang nicht gleich
zwei der eingestellten Richtung ist. Auf diese Weise ist das Gleiche
nicht der Operator. Das ist zwar wahr, aber
wir wollen nicht weitermachen. Wir müssen einen
neuen zufälligen Ausgang finden. Was wir also tun werden, ist dieser letzte Ausgang zu einem beliebigen
Wert, den er zuweisen kann. Das braucht
keine. Lass uns das machen. Wie dem auch sei, lass uns weitermachen. Also, um ehrlich zu sein, das eigentliche Labyrinth wird seine
Mitte nicht verändern Wir haben es einfach ausgeglichen. Das heißt nicht, denn
was wir
jetzt ausgleichen werden , ist der tatsächliche Schauspieler. Was wir also tun müssen,
ist der Standort des Schauspielers. Wir werden die Kachel nicht
verrechnen. Wir werden den Generator
einstellen. Wenn die Kachel also erscheint, wird
sie verschoben Das ergibt Sinn. Und wir wählen Ich füge zwei weitere
Pins hinzu, und der Index wäre
unsere Offset-Richtung. Bringen wir es mit. Und jetzt müssen wir einen
Offset zu unserem Standort machen. Das wäre, sich ein Zitat holen. Das wäre auch erforderlich um es von hier aus zu schaffen oder Teilen wir das auf. North würde einfach
die Kachelgröße Kachelgröße
zu x hinzufügen die Kachelgröße Kachelgröße und der Rest
würde gleich bleiben. Das wäre
Nordosten, würde die Kachel bis zum
Y
addieren und der Rest würde gleich
bleiben, x und ad. Tu würde das
minus XY-Größe negieren und
der Rest das S.
Das sind tolle Spaghetti,
das ist Albonaa-Level U und das Gegenteil für den Westen, Kachelgröße hier oder Y und
X und dasselbe einstellen,
und das und das Jetzt haben wir
das durch unseren Schauspieler ausgeglichen. Jetzt kopieren wir einen Teil des Codes, den wir unten haben
, weil wir ihn brauchen. Wir brauchen die BP-Löffelfliese. Tile Cords,
teilen wir das auf 00 auf. Wir müssen es hinzufügen, um es zu zerstören. Wir müssen es zur
Dungeon-Map hinzufügen, die aktuellen Kabel. Wir brauchen das Besondere, um es zu speziellen Kacheln
hinzuzufügen, und den Rest brauchen wir nicht Wir bringen das her. Unsere Standard-Stromkabel
sind 00, also ist es in Ordnung. Lassen Sie uns einfach schnell
die aktuellen Kabel
durchgehen . Das ist in Ordnung Gut, nah angrenzend,
Nordost-West, gehen
wir zu jedem von ihnen, damit wir die Nachbarn kriegen. Nehmen wir an, der
Index ist gleich. Ich möchte einfach die Offset-Richtung
zur erzwungenen Leertaste hinzufügen . Ich werde hier abzweigen. Wenn es gleich ist, dass Nord Null ist, zwei, Dou ist eins, West ist drei, A, und wir werden zwei R hinzufügen und das Array wird der Schlauch
I sein . Und jetzt
brauchen wir einen Verweis auf
unseren eigenen Aufzug, den Aufzug, der dieses Labyrinth
hervorgebracht Wir haben irgendwo eine Referenz für
den Aufzug, wir haben die Referenz
des Spawn-Aufzugs Dupliziere das. Nennen wir es Owner Elevator. Sehr schlechte Benennung hier. Also, was wir tun werden, zu unserem Aufzug
gehen und
einen Vari erschaffen, nennen wir es Action Wir werden mit von der Partie sein. Weil wir
es später brauchen werden. Lassen Sie uns die
Spa-Elevator-Instanz
editierbar machen und sie beim Spawn verfügbar Der Bactor Elevator ist wieder
da, ich werde das aktualisieren. Wir haben den Spon-Aufzug, ans Telefon bringt. Der Spon-Aufzug, der uns
hervorgebracht hat und der Spawn-Aufzug, der das Gehen wir zurück. Ein Generator. Ein kleiner erster Stil. Am Ende nehmen wir
unseren Spawner-Aufzug und geben die Richtung vor. Schließen Sie ihn an, um den Vorgang abzuschließen, und lassen Sie uns die
Offset-Richtung verbinden Jetzt haben wir unseren
ersten Style-Salon. Jetzt, wenn ich spiele, fange ich bei Null an Ich treffe viele Fallen. Ich
werde Hopfen auswerfen. Stimmt? Das wurde erwartet. Wir werden Al kontrollieren,
löschen und dieses Programm schließen. Und das dritte Mal ist der Reiz. Wir werden in
der nächsten Lektion sehen warum es nicht weiterging. Vorerst auf Wiedersehen.
81. Aufzug-Animation und Soundeffekte: Hallo. Und willkommen zum
Game Design Workshop und echten Engine Five-Kurs zur prozeduralen Dungeon-Action-LPG-Erstellung Zuvor hatten wir
unser Event mit dem ersten Spawn-Plättchen abgeschlossen unser Event mit dem ersten Spawn-Plättchen Wir haben den Offset
auf der Grundlage einer zufälligen Auswahl
unseres Labyrinth-Standorts hinzugefügt auf der Grundlage einer zufälligen Auswahl
unseres Labyrinth-Standorts Dann haben wir angefangen, das erste Plättchen zu
spawnen. Wir haben es zu unseren Listen hinzugefügt, und das auch wegen
der abstürzenden PD. Okay. Also lass es mich nochmal
ganz schnell hinzufügen. Wir gehen zum Aufzug. Ich habe die Anweisungen hier aufbewahrt. Oh, lass unseren pro
Aufzug spawnen, nicht den Spawnen. Das haben wir auch behalten. Also werden wir Richtungsrichtung
ermitteln und die
eingestellte Richtung auf
unsere Offset-Richtung setzen. Jetzt, danach, haben wir versucht
zu spielen und es hat gebuggt. Lassen
Sie uns zunächst überprüfen, wo wir den Aufzug
spawnen, welcher Proponer.
Als Erstes tun wir das,
und wir haben nicht Wir klicken auf
unsere Generatorvariable, machen
sie instanzeditierbar
und machen sie verfügbar, wenn sie in unserem Aufzug erscheint. Wir werden kompilieren und speichern, und ich werde das aktualisieren Tor, und für Generator setzen
wir Self ein. Das deckt bis zu einem gewissen Punkt ab. Gehen wir zu unserem Event-Graph. Lass uns zu unserem
Built-Event gehen, glaube ich. Oder nicht das Gebaute. Ich habe
wieder die erste Kachel genommen, weil hier ein Fehler vorliegt. Wir wollen das Gegenteil davon. Wir haben die
Offset-Richtung hinzugefügt und ich habe
die 02 verwendet , basierend auf unserem
schmalen Kreuz nebenan. Wir brauchen das Gegenteil davon. Das wäre also einer. Also Süden wäre Null. Das wären drei,
und was wären zwei. Nun, das sollte bedeuten, dass
Schweine ein Problem sind. Ich weiß nicht, ob wir am besten eins mit der Truhe und dem Wein
spielen. Was ist der Aufzug? Weit weg. Wir haben etwas.
Sie sind oben gespawnt, aber wir bewegen uns nicht Wie Sie sehen können, hat
alles
einen Schatten geworfen, um das Problem zu beheben Wir werden
ein bisschen schummeln und wir werden unsere Kachel öffnen
und wir werden unsere Hauptwände
auswählen
und sie so einstellen, dass sie
keine Schatten werfen Und wir werden
das auch für den Boden tun. Und die Reben. Ich kompiliere und speichere das Spiel. Ein bisschen Rahmen da. Gehen wir. Vielleicht sollten wir diese
Boxen etwas kleiner machen
und die Landwirtschaft
ein bisschen größer machen. Wo ist der
Aufzug da drüben? Oh, übrigens, ich habe
meine Ma-Größe
wieder auf 20 statt auf zehn geändert . Ich bin quasi eine Kamera. Wir haben also nicht diese
riesigen Schatten, die wir hatten, aber wir haben ein Leuchten. Ich schätze, das Leuchten kommt von Lava
hier unten. Also werden wir wieder
ein bisschen schummeln. Wir werden wieder dorthin gehen
, wo Kachel ist. Wir werden den Boden
duplizieren. Ein Stockwerk,
etwas tiefer,
damit sich dort Lava verbirgt. B nochmal. Es war ein netter Glanz, dabei zu
sein. Ich war der Affe. Das Leuchten der Dämonen. Was der Boden ist, ist Lava, also müssen
wir die Lava verstecken. Und ja, ich gehe in die
richtige Richtung. Und jetzt
haben wir dieses Leuchten nicht mehr. Wir sperren den Spieler nicht. Weil die Maus hier
tatsächlich zuschlägt. Ich kann mich nicht bewegen Oh, es ist Zeit,
den Aufzug hochfahren zu lassen. Ich überprüfe nur, ob es an der richtigen Stelle
gefunden wurde. Ja, wir haben D hier, also schätze ich, der S & P ist
ein nettes erstes Stück, zwei Optionen hier
für links oder rechts Aufzug und die Kiste sind beide
rechts Der Aufzug und die Kiste sind beide
rechts. Etwas Zeit dort haben. Gehen wir jetzt zurück
zu unserem Aufzug. Und Sie haben diese Referenz. Und jetzt
müssen zwei Dinge passieren. Oh, wir werden
eine Sequenz und wir werden ein Ereignis
erstellen. Nennen wir das Event Stations und nennen wir es The One. Und wir werden das
danach abschließen. Nun, die zweite Sache , die als
Erstes passieren
muss, ist , dass wir
unseren Player-Controller bekommen. Also können wir die
Notiz ziehen, die wir wollen, nämlich Land View
Target Space, irgendwas. Ziel mit Pflanze ansehen. Oh, die Planzeit würde
3 Sekunden
betragen, und den Rest werden wir
uns einfach gönnen. Nachdem wir mit dem Abspielen
der Animationen begonnen
haben, werden wir das um 2 Sekunden
verzögern. Und dann werden wir
einen Bulion in den Variablen erzeugen. Nennen wir diese Bedingung und wir setzen
diese Bedingung auf wahr Nun, was wird diese
Bedingung bewirken? Wir werden das
Tick-Event verwenden, um unsere Animation zu steuern. Wir werden diesen
Zustand hier haben. Das ist Qualitätszustand.
Ein etwas besserer Name. Auf der Grundlage dieser Bedingung werden
wir die
tatsächliche Höhe unseres
Aufzugs bestimmen. Und natürlich war es ein
Witz, als ich sagte, wir werden es auf
die harte Art machen, indem wir
den Körper bewegen und nicht den Schauspieler Wir werden den Schauspieler
bewegen. Es ist viel, viel besser,
seit wir auch den Kinderdarsteller
getrennt Aber wir werden erklären, wie es ohne den Schauspieler ablaufen
würde und ob wir
den relativen Körperraum verlagern würden Oh. Wenn sich unser Aufzug bewegt, wollen
wir ein Geräusch hören. Zu diesem Zeitpunkt
wollen wir nur Ton abspielen. Wir werden
ein Geräusch machen, weil unser Aufzug für eine Sekunde weitermachen könnte. Wir werden den Aufzug entsprechend
bewegen, so wie es der
Ladeteil tun würde.
Er würde warten, bis das Labyrinth fertig ist,
um sein Ziel zu
erreichen Denn wenn wir das nicht tun, besteht die Möglichkeit, dass der
Aufzug hochfährt und das Ziel erreicht , ohne dass
das
Labyrinth vollständig gebaut ist Und das wollen
wir nicht. Also werden wir einen Alpha-Drive
haben, wie wir es auf den Lerbs gemacht haben,
wie wir es bei den Timelines gemacht haben, um das zu kontrollieren Oh, fangen wir mit dem Sound an. Was wir tun müssen,
damit der Sound ihn kontrollieren kann. Ich mache einen Lay-Sound. Ich habe
keine Kontrolle über. Ich habe keine Kontrolle darüber. Ich habe nur die Kontrolle
über Lautstärke, Beach, Startime und Parallelitätseinstellungen. Das ist so
, als ob man Regeln wie die Hallgröße festlegen
kann, wo es ein
bisschen vollständig ist Wie dem auch sei, ich habe keinen echten
Verweis auf den Sound, wenn ich den
Create-Sound D verwende. Dann habe ich diesen Rückgabewert
, der ein Verweis auf
den Sound ist, den ich gerade spiele
, aber tatsächlich
erstelle, aber noch nicht abgespielt Denn wenn ich einen Sound
erstelle, muss
ich ihn so anordnen, dass er
macht, was ich will Er erzeugt einfach eine
Soundvariable, einen Audiokanal Basic. Also werde ich dafür
werben, lassen Sie uns den Sound an die erste Stelle
setzen,
etwas erhöhen. Ich glaube, es ist die
Aufzugsmaschine. Ja. Ja, das Stichwort der
Aufzugsmaschine. Das werde ich
so variabel bewerben. Nennen wir das Lift Bound. Und jetzt werden wir anfangen, es zu
spielen. Ich werde drücken. Spiel. Und ich denke nur
an diesen Sound. Wir haben es so eingerichtet, dass es sich wiederholt. Das ist also endlos. Es muss gestoppt werden, wenn
wir aufhören wollen, es zu spielen. Oh, geh und rette
alles. Justin Case. Und fangen wir mit
unseren Animationen an. Aber lassen Sie uns das
in der nächsten Lektion tun. Das ist
vorerst ein guter
Haltepunkt . Wir sehen uns
im nächsten. Auf Wiedersehen.
82. Kamera-Kino für Aufzug: Hallo und willkommen zum Design-Workshop und
zum Action-RPG-Erstellungskurs „Engine Five,
Procedural Dungeon Action-RPG-Erstellungskurs Zuvor haben wir
die letzten Teile
unseres Beginning Overlap
Events in unserem Aufzug erstellt unseres Beginning Overlap
Events in unserem Wir haben das View-Target mit
unserem Ziel platziert , welches eigentlich unser Selbst hier
braucht. Es würde sich durch
kein Ziel einfügen , wenn es kein neues Ziel
hätte. Also haben wir die Mischung mit unserem neuen Ziel vorgenommen und das
Startanimationsereignis erstellt , das wir in dieser Lektion spüren
werden Wir haben die Verzögerung genutzt, um
die Dinge, unsere Animationen und
alles andere einzurichten, und danach haben wir die T-Bedingung
auf true Wir haben den Sound kreiert, ihn in einer Variablen gespeichert
und ihn so eingestellt, dass er abgespielt wird. Und wir haben ein paar Dinge darüber erklärt wie unsere Aufzugsbewegung funktionieren
wird. Lassen Sie uns mit der
Erstellung der Animation beginnen .
Lass uns mit der Animation beginnen. Das Erste, was wir brauchen
werden, ist ein Zeitplan. Also werden wir einen Artikel hinzufügen und einen neuen Flow-Track eingeben und
erstellen. wird
wieder ein sehr kleiner
Flow-Track-Flowtrack sein, Zeit Null, Wert Null, und
0,3, 0,3 ist fünf. 0,3. Wäre einer. Lass uns klicken. Verwenden Sie auch das letzte
Schlüsselbild. Geh wieder her. Jetzt kriegen wir unsere Fans. Werden wir machen? Ich werde
das verbinden. Ich werde. Ich werde
das zum Update verbinden. Und jetzt verbinden wir
das, um c zu bekommen. Ich werde teilen. Ich werde handeln. Und ich werde das teilen. Ich werde x und y addieren. Nun, was unser T angeht, werden wir hier lernen. Wir werden schwimmen lassen und den neuen Truck
benutzen. Wir wollen sie von dem,
was sie
gerade sind, auf Null
bringen . Um das zu tun, werden wir anfangen
zu spielen. Lösche diesen Akt, das
ist egal, und wir werden
den ersten Zaun nehmen, den
relativen Standort ermitteln. Ich werde das teilen. Ich werde für
das B werben und so
regional bleiben und es hier verbinden. Das ist jetzt gespeichert. Ich gehe zurück
zur Timeline und wähle dies für Alpha aus, und B wäre Null
für A, nicht Alpha. Alpha ist immer noch unser neuer
Truck, unser Flow-Truck. Lassen Sie uns sehen, dass das funktioniert. C abspielen. Objekt. Schnapp dir meinen Charakter , weil ich da nicht rüber
laufe. Ich werde den
Charakter herbringen. Ich nehme es wieder in Besitz. Das Kommando macht viel, aber der Zaun geht hoch und ja, es funktioniert Der nächste Schritt ist also,
den Aufzug hochfahren zu lassen. Und dafür
werden wir E benutzen. Jetzt haben wir unseren Zustand. Wenn die Bedingung zutrifft, gebe
ich Gas. Wenn wir hier
relativ angeben würden, würden
wir einen
relativen Ort angeben und den
Körper als Referenz benötigen. Und das würde
alles andere mit uns nehmen. Aber lassen Sie uns einfach einen Standort festlegen. Oh, für den neuen Standort müssen
wir
zwischen dem aktuellen Standort
und unserem Zielort wechseln . Also müssen wir wieder
los, um mit dem Spielen zu beginnen. Ich denke, es steht über allem,
und das werden wir tun. Wir werden für
diese beiden Originale werben. Als Nächstes fügen wir
unsere Größe hinzu, sodass wir
das nächste Labyrinth
spawnen wollen, das wären plus 2.500 Da wir aber
ein bisschen höher gehen müssen, würden
wir das auf 2.900 machen Wir müssen fallen, wir
müssen etwas Platz haben, um nach unten zu fallen Wir werden jetzt
dafür werben. Das wäre unser
Verwandter Pat. Eigentlich nicht relativ. Tut mir leid. Ich werde geduldig. Jetzt haben wir diese beiden Werte. Gehen wir zurück zu unserer Tiki-Ecke. Oh, wenn wir eine Zeitlinie haben, haben
wir einen Vektor und wir gehen zu
unserem Ursprung und unserem Ziel Das ist unser Ursprung und
das ist unser Ziel. Und das Alpha
wird normalerweise von unserem
Timeline-Flow-Truck festgelegt. Jetzt müssen wir
diese Variable, die Max Alpha genannt
wird, bewerben . Weil wir das von
unserem Labyrinth-Generator aus einstellen
werden , wie wir
es beim Laden getan haben Und auf dieser Grundlage wird der
Aufzug versuchen
, diese Höhe zu erreichen, bis dieser Alpha
die Nummer eins Es geht also komplett
von A nach B. Um das zu tun. Wir werden es ständig benutzen. Was, wie der Tipp schon sagt,
versucht, ein Ziel mit konstanter
Geschwindigkeit zu erreichen. Wir haben also einen Strom
und wir haben ein Ziel. Für unsere aktuelle Ausgabe
werden wir eine Kation bekommen. Und unser Ziel wäre das Erb, das Ergebnis des Für unsere Delta-Zeit werden
wir momentan Delta-Sekunden verwenden, was sie ein
bisschen framesicher macht Es gibt eine Formel, die dafür
sorgt, dass sie nicht von der Framerate abhängig ist. Die Bildrate würde die Bewegung nicht
beeinflussen, aber das werden
wir jetzt nicht tun. Für C werden
wir in Terp-Geschwindigkeit
, also der Schrittgeschwindigkeit
dieser Vene B, 350 verwenden Als Nächstes
sollten wir eine Frage stellen. Haben wir unser Ziel erreicht, weil Sie unser Ziel
erreicht haben, dann sollten wir aufhören und unsere Animationen
rückgängig
machen, die Zäune fallen lassen Nein, es gibt viele
Möglichkeiten, das zu tun. Wir könnten tatsächlich
speichern, dass unser Alpha-Wert eins entspricht, aber wir sollten sichergehen, dass unser Zielort mit unserem
aktuellen Standort übereinstimmt Wir werden das Gleiche tun,
tut mir leid, fast das Gleiche. Für diejenigen, die nicht gesehen haben, dass
es hier unten ist, nicht exakt gleich, fast gleich, und wir geben es, sagen
wir, 1010 und reale Einheiten
, also ich zehn Zentimeter Jetzt können wir auch unseren
Zustand ändern. Dieses Stick-Event
würde nicht mehr laufen. Das nächste, was wir
tun sollten, ist, hier ein
Längenziel festzulegen . Anstatt für
das neue Ziel zu verkaufen, von unserem Play-Controller werden
wir
von unserem Play-Controller aus
gesteuert, und das wäre
unser neues Ziel. Von der Kamera des Aufzugs kehren
wir zum Spieler zurück. Wir setzen hier eine 52
in die Verschmelzungsexponentialzahl ein. Sie bestimmt die Form der
Kurve, wie Sie
im Tooltip nachlesen können , wie sie verläuft Als Nächstes müssen wir in den Labyrinth-Generator gehen
und eine neue Funktion erstellen Nennen wir das so. Und wir werden
unsere Schauspieler dazu bringen, alles zu zerstören. Wir sind Paul, schau mal. Wir werden überprüfen,
ob es gültig ist. Der Grund, warum wir
prüfen, ob es gültig
ist, ist, dass wir sogar
Artikel hinzufügen , die
wir abholen werden. Wenn wir den Artikel abgeholt haben, ist er nicht mehr gültig. Also sollten wir das überprüfen. Dann der Schauspieler, falls
der Schauspieler gültig ist. Dann bauen wir unseren eigenen Aufzug
, der der Aufzug
der vorherigen Ebene ist. Da ist er? Da ist es. Dieser Aufzug sollte nicht
zerstört werden , wenn wir das neue Labyrinth
schaffen, denn wenn er zerstört wird,
wenn wir ein neues
Labyrinth schaffen, fallen wir ins Nichts, eigentlich
in
die endlose Also müssen wir prüfen, ob
das auch gültig ist. Wir müssen das überprüfen,
denn wenn es das erste Labyrinth ist , dann hat es
keinen Aufzug Schließlich werden wir uns
einfach selbst zerstören. A. Lassen Sie uns kompilieren. Dave und kompiliere. Dave eigentlich alles. Mal sehen, ob es funktioniert.
Um einen Charakter zu bekommen. Ich werde den Charakter bewegen
und mir den Charakter holen. Der Aufzug ist da. Ich bin also beschäftigt und
der Schauspieler bewegt sich nicht. Das liegt daran, dass wir die PA nicht eingestellt
haben. Was wir tun müssen,
ist in unserem Labyrinth-Generator, wo auch immer wir sind
... Prozent
unserer Ladung
unterscheiden zwischen diesen beiden und setzen Prozent
auf unseren Anleihenlift Oh. Das werden
wir beim nächsten Mal tun. Dann sehen
wir uns, auf Wiedersehen.
83. Beheben von Mischproblemen in der Kameraansicht: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Zuvor waren wir mit
unseren Aufzugsanimationen fertig. Wir haben die Animation
für die Zäune mithilfe
einer Zeitleiste und einer For-Schleife abgeschlossen , um alle Zäune zu
durchlaufen, und wir haben die relative Position auf der
Grundlage der ursprünglichen Z- und Nullwerte festgelegt auf der
Grundlage der ursprünglichen Z- und Denn in unserem ursprünglichen
Z, dort unten. Dann haben wir mit
unserem T-Ereignis weitergemacht , dass, wenn
unsere T-Bedingung erfüllt ist,
was bedeutet, dass wir anfangen können, uns zu bewegen. Wir haben den
Standort des Schauspielers zwischen dem
Original und dem Ziel verschoben Original und dem Ziel an den Zielort sollten
wir gehen Und wir benutzen den Max Alpha , um die Entfernung
zwischen diesen beiden Und dann verwenden wir die Konstante „Bay
Interpret“ von Position
unseres Schauspielers
zum Ziel mit einer Schrittweite von 350 Dann überprüften wir mit einer Verzweigung ob wir unser
Ziel erreicht haben, und falls doch, mischen
wir die Sichtkamera und
schalten unseren T-Zustand aus wir nun mit
unserem Labyrinth-Generator fort, wo auch immer wir den festgelegten
Prozentsatz der Ladung haben um zu erstellen, wo der erste
ist Hier ist der erste. Dieser
ist auf Null gesetzt. Null, wir fangen an, das müssen wir
nicht tun. Aber wir müssen beim Build
differenzieren. Hier
haben wir tatsächlich das Gültige eingegeben, was uns
im Grunde den Zweig gibt . Machen wir etwas Platz. Wir werden mehr Platz brauchen. Ich denke, das ist genug,
mehr als genug. Also werden wir es hier
herauslesen und tatsächlich könnte
das Laden noch
gültig sein, könnte
das Laden noch
gültig sein weil wir die Variable nicht
leeren. Das Gültige ist nicht gut
genug. Wir brauchen eine Filiale. Aber wenn es weitergeht, aber wenn es das ist,
machen wir das Neue, wenn es falsch ist,
machen wir das festgelegte Prozent. Und das neue Ding wird den Sponer-Aufzug bekommen. Und dieser Alpha. Ich
denke, das ist 0,4, wir steigen auf 40%. Ja. Also setze Max Alpha auf 0,4. Nikki, das kleine Ding hier, es
fast nicht gesehen, und ich würde mich fragen,
warum sich das nicht bewegt Ein Kopierzweig und der Setter und die zweite
Ladung sind hier oben Wir können diesen Akt überspringen. Gehe direkt auf 0,5. Gehen wir zur Filiale, die Falschen gehen zur alten. Das Wahre ist das Neue, das 2,5. L Lass uns weitermachen. Lass
uns ein paar davon behalten. Lassen Sie uns hier 2.7 einstellen. Hier fällt das
alte auf das neue Gewicht. Das ist richtig. Ab Alpha gehen
wir vom eingestellten Prozentsatz genau zum
nächsten über. Klar, klar genug. Behalten wir 85 und machen
wir eins. Eigentlich
muss das hier keine Verbindung herstellen. Wir verpfänden keinen Spieler, wir spielen
keine Animationen ab Wir machen nichts davon. Das kann hier also tatsächlich
mit einem enden. Also können wir
0,7 ändern, setzen wir 0,8. Und das wäre genug. Sollen wir noch einmal darüber
nachdenken? Nein, lass uns spielen. Fangen Sie an. Würden wir es uns
noch einmal überlegen? Nein. Lass uns spielen. Zu. Lass uns das All in der Nähe finden. Holz. Und ich kriege wieder
DZ. Wir ziehen um. Wir ziehen um und das
zweite Labyrinth ist gebaut. Und wir erreichen das zweite Labyrinth. Und das erste Labyrinth
ist nicht zerstört. Die Musik hat nicht
aufgehört zu spielen. Wir können immer noch damit interagieren. Das Wichtigste zuerst.
Lasst uns die Interaktion beenden. Was wir hier tun, ist,
es unserer Kollision auszusetzen. Nachdem wir die Einsen gemacht haben, holen wir uns unsere Box und es
ist
so eingestellt, dass keine Kollision auftritt, was der Standardwert ist. Die zweite Sache. Lassen Sie uns
diesen Schwindel mit der Kamera beheben. Mir
wird wirklich schwindelig. Lass uns die Kamera
ein bisschen näher bringen. Lass uns in Rotation schicken, um Dios in diesem Fall zu machen, wie es scheint Nein. Ich glaube, die erste Null
war der erste Tag Lass uns das raussuchen. Da ist der Aufzug.
Oh, komisches Labyrinth. Ein bisschen besser. Was ich sehe, fange ich
von der anderen Seite an. Oh, warum fängt es so komisch an? Dort. D Die ganze Kamera geht
einfach direkt
über, sagen wir, 800. Sagen wir, 600. In Ordnung. Lasst uns die Patienten rauslassen. Hui. Ich werde mich nur um die Kamera
kümmern. 98 99. Ich kann es
etwas einfacher in diese Richtung bewegen. Auf Rotation. Du hast wieder 108. Ich lasse es bei 9000600 stehen, damit wir nicht mehr Du kannst es hinstellen,
wo immer du willst. Ich denke, das wäre in Ordnung. Charakter. Aufzug, den Charakter habe
ich nicht verstanden. Aber der Boden. Ich habe das bewegt,
der Charakter ist gefallen. Wo ist der Aufzug? Richtig? Oh, es ist noch schlimmer als je zuvor. Das ist unglaublich. Acht ist, wie
empfohlen, 60-90 18. Werte, die wir brauchen, um auch diesen zu
korrigieren. wie ich
es bin. Also habe ich ein bisschen
nachgeforscht, was vor sich geht. Es ist ein Problem damit, wie
das langweilige Sichtziel
mit etwas
namens Kimbal Lock funktioniert , das den Bildschirm
in Kurven verwandelt
, im Grunde genommen auf
Bildschirmen, die weit über
Nordost-Südwest liegen,
und über Nordost-Südwest liegen,
und Was passiert? Lass uns nachsehen. Gehen wir jetzt mit dem
Spieler neben den Aufzug. Wieder auf dem Boden. Jetzt können wir im Grunde 123
Kreise machen. Wie Sie sehen können, steckt es
fast dreimal. Das hat mit den Wurzeln, den
relativen Rotationen
und allem zu tun relativen Rotationen
und Was wir
tun werden und es wird
funktionieren, ist, dass wir unsere Kamera
nehmen und sie
23-mal um den vollen Kreis
drehen den vollen Wenn wir jetzt kompilieren und spielen gehen, reparieren
diese das Kardanschloss
in unserem Aufzug Aufzug und fast repariert. Dieses Auf und Ab der Kiste
, Aufzug in diese Richtung, überprüft den Spieler. Und es ist behoben. Ja. Aber das Gleiche müssen wir für das Startspiel tun. Also, wir sind Halbkreis, lass es uns einmal so Oh, es war das Gegenteil Ich werde die
Drehung in umgekehrter Richtung rückgängig machen. O. Auf Vollendung des Kreises. Hilfe. Was genau ist hier los? Und ich werde die Kamera
auswerfen. Ich habe von hier aus geschaut,
das sind die Spieler. Die Kamera ist falsch, sie sollte eher
auf dieser Seite sein, was unsere ursprüngliche Kamera ist. Mal sehen, was
ich habe. Ich habe es nicht nochmal gemacht, ich werde es auf diese Seite verschieben. Ich werde
K, David-Position drücken. Ich werde das pilotieren. Ich sehe richtig aus, unser Spieler. Et, ich werde Kate
drücken und wieder spielen. Ja, im Grunde genommen haben wir
nur die Kamera mitgebracht , um mehr von der
Seite des Spielers zu sehen. Hat funktioniert. Du kannst
mit Rotationen spielen, bis du eine Bewegung hast, die
für dich und die Position in Ordnung ist Wir belassen es so Lassen Sie uns überprüfen, ob der
Aufzug noch funktioniert. Aufzug. In Ordnung. Endlich sind unsere Kameras repariert. Ich glaube, wir haben uns für
diesen entschieden, bei dem es um die Reparatur des Loses ging. Das war wirklich entscheidend. Und lassen Sie uns hier aufhören und mit dem nächsten
weitermachen.
84. Aufzug-Animation und Inventar-Eingabe: Hallo und willkommen zum Game
Design-Workshop unter prozeduralen Dungeon
Action Z Creation Calls von
Engine Five Zuvor haben wir endlich
die Rotationen der Kameras korrigiert die Rotationen der Wir können tatsächlich
einen reibungslosen Ablauf haben und nicht diese Spülmaschine Ich weiß nicht, worin wir drin waren. Und der Aufzug ist auch ja. Und wir können die nächste Etage erreichen. Aber der Ton spielt weiter und die Wände fallen
nicht. Also lass uns diese Probleme beheben. Und noch eine Sache, die
ich erwähne, ist, dass unser vorheriges Labyrinth
keine ID bekommen hat. Also fangen wir damit an,
weil
wir den Code dafür einfach nicht aufgerufen haben Wir holen uns
unsere Referenz. Und wir werden Destroy Maze
anrufen. Vorheriges Labyrinth, wie wir es
für
das Labyrinth nennen , das zerstört werden
soll, also
wäre Destroy Maze Und lass uns testen. Also, gut. At ist nicht darüber hinweggekommen. S. Es ist eine kleine Lücke in Ordnung, und unser vorheriges
Labyrinth-Rufen wurde zerstört, aber nicht unser aktueller Aufzug Das ist gut. Wir wollen nicht, dass das zerstört wird, weil wir sonst nirgendwo hinfallen
werden. Lassen Sie uns damit fortfahren,
den Rest der Dinge zu reparieren. Das Erste, was wir reparieren
werden, ist die Animation. Oh, wir müssen die Zäune fallen lassen. Ich werde das Auto fahren. Fragen Sie Ben. Wir werden es Fence
nennen. Oh. Das Erste, was wir
tun müssen, ist das Geräusch des Aufzugs. Wir werden die
Audiovariable beenden. Jetzt werden wir das
rausnehmen, weil wir den Stoppsound
abspielen wollen. Und es ist
irgendwie Fahrstuhl,
Aufzug , Q, und dann spielen
wir Sound. Spiel einfach. Und dann werden wir das Reverse-End
verbinden. Und das wird
sie untergehen lassen. Aber wir sind noch nicht fertig. Wir müssen unsere Plattform erweitern. Nein, wir
werden die Richtung wechseln. Und wir werden das
am Ende der Timeline verbinden . Space, Pakete oben, das ist
hier, ich denke, es ist in Ordnung, und jetzt brauchen wir eine
neue Zeitleiste von hinten, eine Zeitleiste Das rückwärts, weil
der Grund dafür ist , dass wir rückwärts zahlen, den
Zaun abbauen, nicht die Plattform erweitern Und wir werden unser
Liftflugzeug nehmen, das unsere Plattform ist, und diesen relativen Standort Denken Sie daran, dass wir eine
Variable namens Direction gespeichert haben. Und diese Variable haben wir
gespeichert, als wir
den ersten Stil
unserer Labyrinth-Generation erstellt haben den ersten Stil
unserer Labyrinth-Generation Der erste Stil wurde fortgesetzt. Und diese Richtung war
der Offset, den wir dem ersten
Stil im Grunde genommen entgegengesetzt
haben. Wir haben also diese Richtung, in die wir im Grunde genommen unseren Ausgang nehmen
. Richtung sollten
wir also unseren ersten Stil ausweiten? Und genau das werden
wir mit dem neuen Standort machen. Aber zuerst müssen wir die Äh, aus,
nicht die Normalen schlürfen, tut Ert Und wir müssen einen Zeitplan hinzufügen Nehmen wir an, es sind zwei
Sekunden,
es dauert 2 Sekunden 00 und eins, lassen Sie uns einlesen und auch das letzte Schlüsselbild
verwenden Nein, wir verbinden
diese Alpha, und für B wählen
wir Bedingung
die Index-Wildcard . Für Alpha benötigen wir nun den ursprünglichen Standort
der Plattform. Also gehen wir
zur Startplatte. Wir werden unsere Plattform bekommen, wir werden den
relativen Standort ermitteln und wir werden sie auf
eine Variable hochstufen. Wir werden sie mit
relativer Position benennen. Vielleicht spielt die ursprüngliche Plattform
Re keine Rolle. Wir werden das hier besorgen, wir werden es
mit Alpha verbinden und dann
werden wir es erweitern. Nun, wir werden
für Ost,
Nord und Nord und West hinzufügen , wir werden entfernen,
sodass es
300 auf X oder Nord sein wird , das
duplizieren, wird
Null auf X
und 300 auf Y oder Ost sein , dann werden wir diese beiden
duplizieren. Ich werde die
Plattform mit der ersten verbinden
und das X negieren, das mit dem Süden
verbunden ist,
negieren, den Westen
mit dem Westen verbunden Damit ist unser Aufzug quasi abgeschlossen. Und ich sage irgendwie,
weil wir einige Zustände des
Charakters ändern
müssen , damit
er im Grunde genommen so steht, er sich nicht bewegen kann,
solange er im Aufzug ist Als Nächstes sollten
wir unsere Benutzeroberfläche in unser Spiel integrieren Wir haben
die Funktion dafür bereits
in unserem Spielmodus erstellt , bei
dem es sich um ein Gameplay handelt. Und das Einzige, was wir
tun müssen, ist zu unserem Charakter zu gehen. Öffnen wir diesen Plan
und finden wir heraus, wie wir spielen können. Und hol dir den Spielmodus. Was Down angeht, Spielmodus, in Pure Cast umwandeln, Modus diese Variable,
verbunden mit Gain Play, das als Variable, kein Gameplay. Und das würde R U
Y bringen, wenn wir das Spiel starten. Jetzt können wir die Münzen sehen. Das ist das einzige, was wir noch
sehen können , weil wir keinen Schlüssel haben , der das Inventar mitbringt. Lassen Sie uns jetzt eine schnelle Lösung finden
, um das zu beheben. Lass uns unser Inventar mitbringen.
Ich werde fliehen. Ich werde unseren Controller von oben nach
unten öffnen , wo wir
die Alt-Taste verwendet haben, um Gegenstände zu kleben. Jetzt verwende ich die Option Das ist
die Unterseite
, um Das ist
die Unterseite unser
Inventar zu öffnen und zu schließen. Was wir tun müssen, ist gedrückt. Wir werden uns in Scharen versammeln. Wenn wir auf A sind, werden
wir ein Inventar eröffnen, also holen wir uns unsere Inventarreferenz
und machen das Ich gehe in den A-Modus. Cast-Top-Down-Gain-Modus, Umstellung auf Pure
Cast, und von hier aus werden
wir
die A.-Perücke aktualisieren. Inventar. Wir holen
uns unser Inventar. Und dann, ausgehend von unserem
Wood-You-Gameplay ,
nennen
wir es Animation und wir
spielen Animation ab. Brauche etwas Platz. Für eine Ausfallsicherheit. Lassen Sie uns auch Animation nennen. Setzen Sie eine Verzögerung ein. Und dann bekommen wir. Und lass uns zu unseren Gameplay-Widgets
gehen. Und wir brauchen eine horizontale Box
dieser horizontalen Box. HB. Wir müssen
es zu einer Variablen machen. Gehen wir zurück zu unserem Controller. B, Inventar und aktiviert, wenn wir schließen, werden
wir es löschen. Stimmt nicht. Dann müssen wir die Animation nochmal
abspielen. Lassen Sie uns die Animation verbinden, und wir müssen das Ziel
verbinden, nämlich das Widget-Gameplay. Gehen Sie wieder, und
diesmal geht es
rückwärts, nicht vorwärts. Jetzt haben
wir theoretisch einen Fehler. Also wenn wir das Gameplay nicht
kompiliert haben. Das ist der Grund.
Dave-Datei. Lass uns spielen. Ich habe ein Presse-Eins. Wir haben unser Inventar, die Knöpfe sehen
nicht gut aus. Oh, ich denke, das ist
für das nächste Mal behoben . Ich
werde dich dann sehen. Auf Wiedersehen.
85. Minimap-System: Und willkommen zum
Game-Design-Workshop und zum prozeduralen
Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Real Engine Five-Action-Rollenspielen Zuvor waren wir mit
unserer Aufzugsmechanik fertig ,
fast Wie gesagt, es gibt
noch ein paar Dinge, die wir tun müssen, um
den Status des Charakters zu ändern. Aber wir sind mit unserer
Kehrseite des Zauns fertig geworden. Wir haben die Musik gestoppt, das
Geräusch des Aufzugs angehalten, wir haben ein neues Geräusch ausgelöst, und dann fahren wir fort das Geländer mit dem gleichen Code in umgekehrter Reihenfolge herunterzufahren. Und dann haben wir eine neue Zeitleiste erstellt , die
auf dem Rückwärtskanal
der vorherigen Timeline basiert , wie wenn die vorherige
Timeline rückwärts endet , dann führen wir das aus
und fügen die
relative Position
unserer Plattform hinzu, die auf
einigen hutcodierten Werten basiert ,
und die relative,
die ursprüngliche relative die ursprüngliche Außerdem haben wir unser Gameplay
zu unserem Bildschirm hinzugefügt und den Schlüssel zum
Spawnen des Inventars erstellt,
das sich tatsächlich im
Top-Down-Controller befindet Jetzt haben wir angefangen, mehr
Dinge auf
dem Controller zu machen und
bald noch viel, viel mehr Und wir nutzten die Nummer eins auf der Tastatur, um zwischen A und B
umzuschalten,
was A bedeutet, das Inventar zu aktualisieren und
die Animation vorwärts abzuspielen Und mit einer Verzögerung der
Endzeit wird sie aktiviert, und B würde das Gegenteil
tun,
sie wird deaktiviert und die Animation wird rückwärts abgespielt Aktivierung und Deaktivierung erfolgt
, weil wir nicht in der
Lage sein wollen , Tasten zu drücken, während die
Animation noch abgespielt wird Lassen Sie uns nun mit der
Behebung eines der
Fehler fortfahren, die wir gerade gesehen haben, eines der Probleme, die auftreten,
wenn wir keine Bilder haben, genau das gleiche Prinzip. Wenn wir kein Bild haben und
dieses zurückkehrt, gibt die Textur unseres
Elements Null zurück, dann wird ein weißes Bild erzeugt. Was wir also
tun werden, ist eine Auswahl auf
der Textur des Hetect-Objekts. Und dann werde ich eine Verbindung herstellen. Das Inventarbild hier, wir müssen es vielleicht trennen. Aber für den Index
für das, was
wir brauchen, sollten wir prüfen, ob dieses
Bild nichts bedeutet. Wenn es gleich nichts ist, wählen wir etwas anderes aus. Wenn es nicht gleich nichts ist, wählen
wir das Inventarbild aus. Etwas anderes wäre das
Bild, das wir hier ausgewählt haben. Ich gehe hierher, um es zu finden. A, und dann gehe ich zurück zur Grafik. Und ziehen Sie es hierher. Nun, das sollte unser Problem
behoben haben. Wie ich repariere es die Bilder
und wir haben unseren Schlüssel, weil wir unseren Schlüssel
zum Inventar hinzugefügt haben. Wir können einen kleinen
weißen Kasten um ihn herum sehen, was nicht sehr angenehm ist. Oh, lass uns das auch reparieren. Wir gehen zum Gameplay über. Wir werden zum Designer gehen. Wir gehen zum ersten Button
und um
das Kästchen
herum gibt es ein Unentschieden. Wenn Sie G drücken, wird
die Spielansicht angezeigt, und wir wählen erneut die
erste Taste aus. Wenn ich das in Bild ändere, wird das Problem behoben. Also werde ich das auf alles ändern,
auf alles. Aber das Schweben, das Niedergeschlagene und das Normale, kein
nerviger Logger manchmal Also als Bild auf alles gemalt. Und ich werde diese Kachel kopieren und in alles
einfügen, kopieren und diesen
Button holen, werde einfügen. Ich werde hier einfügen
und ich werde hier einfügen. Und es ist behoben. Wir
haben keinen weißen Rand mehr. Um Play zu drücken. Ich werde Inventar mitbringen. Beim ersten Mal kommt das
Inventar, nicht deaktiviert, wohingegen es
beim anderen Mal eingereicht wird. Lassen Sie uns das auch beheben.
Lass es mich noch einmal testen. Klar. Ja, wenn es das erste Mal
kommt, ist es nicht eingereicht. Standardmäßig sollten wir diese Leiste
deaktiviert haben. Endlich deaktiviert, müssen wir im Grunde
genommen auf aktiviert klicken. Kompilieren und speichern, und
dieses Problem ist ebenfalls behoben. Da wir gerade dabei sind, das Inventar zu
reparieren, fügen
wir auch unser Minimum hinzu. Nein, wir werden ein Overlay
benötigen. Lass es uns irgendwohin bringen. Lass es uns bis zur
oberen rechten Ecke aufklappen. Gehen wir für Position minus 370, Position y 50, Unentschieden
wäre 32020 Es macht also eine Kiste. nun in diesem Overlay wir nun in diesem Overlay ein I hinzu. Das sind zwei Bilder, die
sie fühlen
werden. Zweites Bild Lassen Sie uns die zweite
Bildreihenfolge benennen und sie zu einer Variablen machen. Lass uns das erste
Bild machen, ich nenne es Minima. Machen Sie es zu einer Variablen. Für unsere Grenze, Verlust ist sie, haben
wir unsere
Fantasie-Orderkarte, Mindestgrenze. Für unsere Minimap
haben wir, glaube ich, ein Material. Nein, haben wir nicht. Keine schlichte Grenze. Wir haben
das gerenderte Ziel. Was bedeutet das gerenderte Ziel? Nein, wir gehen zu
unserem Charakter und fügen der Komponente Is the Capture hinzu. Nun, das ist im Grunde eine Kamera, aber es ist keine Kamera. Eine Kamera mit sehr
spezifischen Regeln, auf die sie abzielt. Nun, nicht die Ziele.
Es kann bestimmte Dinge
rendern und andere Dinge nicht. Aber es zeigt
es nicht im Viewport. Es ist keine Kamera
, aus der wir schauen. Eine Kamera, die
ihre Geschwindigkeit einem
sogenannten
Render-Textur-Renderziel zuführt . Das ist also unser Kunstminimum. Wir werden es im
Texturziel
der Kamera auswählen . Und lassen Sie uns
die Höhe tatsächlich sehr hoch einstellen. Setzen wir es auf 3.000 303.000. Es kann eine große
Entfernung entlang uns zurücklegen. Lassen Sie uns jetzt
noch einmal überprüfen, ob wir
das Material nicht haben. Haben wir. Ich glaube, wir müssen wieder für das Spiel
beten. Also, um das zu schließen, und jetzt werden
wir es wieder öffnen oder vielleicht weiterentwickeln, dass es hier ist. Und jetzt haben wir das
Material-Minimap-Renderziel. Aber wir werden für eine Sekunde
öffnen und eine Sache
ändern Wir werden
unser Texturmuster auswählen, wie es bereits auf Minimap eingestellt ist, und jetzt
verbinden wir , ich glaube, die
Opazitätsmaske, oder sie verbindet sich Das sollte eins sein, die
Form die Form des Kreises, sollte eins sein, und
wir werden speichern Lass uns jetzt angeblich das Material auf
unserer Minimap
auswählen , mindestens
rendere ich , und es funktioniert Nun, das ist ein Minimum von drei D, was bedeutet, dass es teuer ist Aber wir können ein
bisschen dabei bleiben. Wir werden das reparieren, indem wir uns nach links und rechts
bewegen. Und wir haben aber ein Ergebnis. Wir können nicht sehen, was um uns herum ist. Der Grund, warum wir keine traditionelle Technik anwenden
und Texturen und
Koordinaten und alles andere verwenden können,
ist, dass unsere Karte zufällig generiert wird. Wir werden also drei D-Minima
benötigen. Es gibt auch andere Möglichkeiten, das
zu tun, aber für uns wäre das in Ordnung Ich denke, das ist ein
guter Ausgangspunkt für diesen Fall. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen.
86. Abschließende Minimap-Berührungen und Inventar-Tooltip: Hallo und willkommen
bei Design Workshop,
Real Engine Five, Procedural Dungeon Action-RPG Zuvor haben wir einige Probleme
mit der Darstellung unseres Inventars behoben mit der Darstellung unseres Inventars Wir haben sie in unserem
Stil verwendet , um
die weißen Kästchen
um die Schaltflächen herum zu entfernen , und wir haben das Problem behoben eine Nullvariable enthält dass diese Textur
eine Nullvariable enthält, wenn wir
das Bild des Inventars festlegen. Wir brauchen also einen Zweig
, der, wenn er Null ist, wenn er nichts ist, unser Bild einfach umsonst
benutzt. Im Code-Update-Inventar. Nein. Dann haben wir unserem Bildschirm
unsere Mindestelemente
hinzugefügt ,
nämlich ein Overlay
und zwei Bilder Die beiden Bilder sind
eins für den Rand, wir haben das De
Fantasy-Hintergrundbild ausgewählt dass wir ein Randbild haben, und für das Material wir das Material M
minimum I gewählt, ein Material, das wir hergestellt haben und einige Dinge
innerhalb des Materials verändert Tatsächlich ändern wir eine Sache, dass die Form Kreis der Standardwert eins
sein sollte,
sodass das Material lbs ist, um den Kreis auszuwählen ,
weil er für ein
Quadrat oder ein Minimum von Kreisen entworfen wurde Lassen Sie uns jetzt nicht noch einmal speichern. Wir haben unseren Charakter erweitert, rendern, das ist
nicht unser Charakter. Nein, es ist ein Charakter. Okay? Also haben wir unsere
aufgenommene Komponente hinzugefügt
, eine spezielle Kamera
, die bestimmte Dinge rendert Und wir haben das
Texturziel auf das RT-Minimum festgelegt, das der
Kamera-Feed projiziert wird, sagen
wir, ungefähr das Lassen Sie uns nun ein
wenig filtern , was die Kamera aufzeichnet. Denn gerade jetzt,
wie wir sehen können. Es zeichnet alles auf. Wir
können den Spieler sogar sehen. Wir können den Spieler nicht wirklich sehen, aber wir können den Spieler sehen.
Der Spieler ist hier. Mir gefällt, dass es das aufzeichnet. Aber auf jeden Fall sollte es keine
Gedichte aufnehmen. Nein, gehen wir zurück
zu unserem Charakter. Wählen wir die Kamera aus. Gehen wir zu unserer Kategorie
Szenenaufnahme. Klicken wir auf Erweitert. Nehmen wir an, wir wollen keine
atmosphärischen ESPs aufnehmen. Wir benutzen das eigentlich nicht.
Wir wollen den Nebel nicht. Oder wir tun es. Ich weiß es nicht. Wenn du die Kugel
in der Atmosphäre
im Nebel haben willst , kannst du sie behalten. Was wir sicherlich nicht
wollen, sind Skelettnetze. Vielleicht Partikel, die die He-Gates
löschen, aber das macht nichts, sie halten die Maschen
von den Heiltoren Und alles andere
lassen wir locker liegen Wenn es zu
viel Rechenleistung beansprucht, können wir
vielleicht
ein paar Blitze entfernen. Aber wenn Ihr Computer damit umgehen
kann, können Sie es so lassen. Wenn nicht, überprüfe die Dinge einfach
weiter. Wahrscheinlich die Beleuchtung.
Auch die versteckte Beleuchtung, Transluzenz. Ja. Jedenfalls, oder Sie können
die
Skalierbarkeit Ihrer Engine jederzeit auf niedriger einstellen . Und das würde die
meisten Probleme lösen , wenn
Sie einen niedrigen Computer haben. Als Nächstes sollten
wir wieder zu unserem Charakter gehen, zu unserem Viewport
gehen und
das Drehen der Kamera korrigieren Also werden wir unsere Scene
Capture-Komponente
hierher
bringen, um mit dem Spielen zu beginnen Wir bleiben absolut,
was ein Knoten ist, der der Komponente mitteilt
, ob sie Weltkoordinaten
oder lokalen Koordinaten folgen
soll . Und wir wollen der absoluten
Rotation der Welt folgen, damit sie gleich bleibt. Also werden wir das verwenden und jetzt sollte unsere Minimap fertig sein Ja. Stetig, aber es geht in
unsere falsche Richtung. Gehen wir zu unserer Kamera und
wählen hier 45 Grad. Kompiliere und speichere
und lass uns spielen. Und jetzt geht es in die
richtige Richtung. Wir könnten das Minimum in
dem Moment erscheinen lassen , in dem das Larp
der Kamera endet Aber das wird vorerst in Ordnung sein. Wir werden es ruhig lassen. Und es wäre schön, wenn wir die Minima
schließen würden , wenn
wir zum Aufzug kommen,
weil wir sehen können, wie das Labyrinth
des vorherigen Labyrinths Wie dem auch sei, das ist lustig, wegen der
Abstrahlung der Truhe,
des emittierenden Materials hier, können
wir dieses Wasser auf dem Boden sehen. Ich weiß nicht, ob sie
sehen können, dass es ein Treffen ist. Wie dem auch sei, wir werden bald ein Modell
ändern. Also lass uns damit koppeln. Jetzt, wo wir dieses
System hier haben. Setzen wir Punkte, damit der
Spieler den Spieler auch sieht. Nun, lass uns zu unserem Charakter gehen. Lass uns ein Paper Sprite hinzufügen. Oh, lass uns zu unserem Charakter gehen. Lass uns ein Paper Sprite hinzufügen. Und für das Paper Sprite. In unseren Texturen können
wir eigentlich einfach
das Papier-Sprite auswählen und es einfach von hier aus auswählen Raus. Drehen wir es korrekt so, dass das Gesicht
korrekt ist, sodass
der Zeichenpfeil
auf das Zeichen zeigt, und setzen wir seine Höhe auf
2.900 und die Skalierung auf 2,1 Lassen Sie uns in allem
kompilieren und speichern. Jetzt lass uns spielen. Wir haben ein Minimum. Wir haben zumindest einen Papiersprite , der uns unsere Richtung
zeigt Warte. Und da wir sehen am Anfang
ein großer Teil der Truhe
gespawnt wird und wir
keinen
Ort zum Spawnen finden können, gehen
wir zu unserem Labyrinth-Generator
in unserer Create Lass uns das nochmal durch
zwei teilen und das Ganze dann einfach dann einfach neu nach Division
zur ersten Division
hinzufügen Also kommen wir auf 75%
und lassen Sie uns das hier verbinden. Lass es uns auch hier verbinden. Und das wäre es. Ist eigentlich auch hier. Und jetzt laichen
wir hoffentlich besser. Drücken Sie den Aufzug. Oh, das ist eine sehr schöne Säge
im Vergleich zu dem, wo wir sind. Vielversprechend, sehr vielversprechend. Jetzt, wo wir
beim UI-Thema sind. Lassen Sie uns etwas
mehr zu unserem Inventar hinzufügen. Fügen wir etwas hinzu, das uns,
wenn wir mit der Maus über
diese Schaltflächen fahren,
Informationen darüber gibt , worüber
wir den Mauszeiger Also werden wir es ganz
einfach machen. Wir werden einen
Text-Textblock hinzufügen. Wir werden
es hier irgendwohin bringen. Lassen Sie uns das anhand der Animation überprüfen. Irgendwo in
der Mitte unseres Inventars. Das könnte hier sein, glaube ich. Das können wir uns jetzt
einfach ansehen. Es muss nicht perfekt sein. Hier ist es in Ordnung. Ich werde seinen Anker auch
reinbringen. Das Zentrum ist hier oben. Also bringen wir einfach
den Anker hierher und stellen die
Ausrichtung auf 2,5 und 0,5 ein. Entschuldigung, sollte Null sein
und das s minus sein. Nein. Eigentlich richtig. Großartig. Spielt keine Rolle. Größe 200, weil das
die Größe ist, die wir brauchen, und lassen Sie uns die Begründung in der
Mitte setzen . Warum gefällt sie mir nicht? Warum glaube ich, dass
es A ist, es ist vollständig. Das ist die Position auf X und Y und dann die Ausrichtung 5.5, wir haben nicht gesehen, dass das nicht stimmt. Lassen Sie uns jetzt weitermachen. Es ist ein bisschen seltsam
, aber es ist in Ordnung. Wir werden das alles machen. Wir werden das G nennen, aus dem wir eine Funktion machen werden. Lass uns eine neue Funktion erstellen. Sagen wir über den Tipp, und wir werden einige Eingaben
benötigen. Wird vom Typ Fähigkeit sein. Sichtbarkeitsprüfung. Ja. Ja, genau das brauchen wir. Das
nenne ich Sichtbarkeit. Und wir werden eine weitere Eingabe
benötigen, Ganzzahl, und sie wird in sein. Jetzt werden wir in
den Schwulenmodus wechseln. Wir gehen zu GM. Machen Sie einen Gasmodus. Wir werden auf Pure Cast
umstellen und wir werden Ing bekommen. Jetzt werden
wir aus dem Inventar die Schlüssel holen. Wir werden sie hier machen. Und anhand des Schlüssels holen wir
uns den Inventarplatz. Dann werden wir
eine Frage stellen. Existiert unser Artikel? Dazu verwenden
wir
die Länge unseres Inventars und
vergleichen es mit Plus, einem der eingehenden Artikel
. Ich mache plus eins, denn
wenn ich sie anrufe, nenne
ich sie
Taste Null, Taste eins, Taste zwei, Taste drei, und die Länge beginnt mit eins. Deshalb bin ich also plus eins. Ich könnte einfach nicht Null, Eins, 23 und 1234 machen. Aber gewöhnen wir uns daran, diese Unterschiede zwischen
Nullzählung und gleichzeitigem
Normalzählung mit
Schneiden bei Eins zu
haben Nullzählung und gleichzeitigem . Nun, wir werden prüfen,
ob das größer oder gleich ist. Und das, ich werde
es hier verbinden. Also, wenn es größer oder gleich ist, wenn es nicht wirklich so ist, brauchen
wir diesen Text. Wir werden es
herbringen. Ich werde den Text einstellen. Und wir werden
sagen, ich werde Bbility
auf die eingehende Sichtbarkeit
einstellen . Was passiert nun,
wenn es wahr ist? Nun, wir holen uns einen Tisch. Reihe. Und für die Reihe werden
wir diesen Get verbinden. Für diese Tabelle
werden wir Items verwenden und wir werden die SD kaputt machen. Wir werden
diesen Code hier kopieren und einfügen. Und wir werden den Namen hier
auswählen. Eigentlich brauchen wir den Rest nicht, und die Sichtbarkeit
wird hier verknüpft, das ist die Eingabe-Sichtbarkeit,
die wir von hier übernommen haben. So haben wir den Tooltip gemacht,
die Funktion, die ihn
sichtbar oder unsichtbar Nun, wo nennen wir es? Auch hier wird es ziemlich einfach
sein. Wir gehen
zu unseren Buttons und wir
gehen auf der Liste runter und da ist, wie wir sie variabel machen
müssen. Also brauchen wir sie auf
Hover und auf Hover. Machen wir das für jede Taste. Variabel beim Hover. Schweben Sie mit der Maus Gehe zur dritten
Taste, ist variabel. Gehen wir zur vierten
Taste, die variabel ist. Gehen wir von der Grafik aus. Lectm hier, es geht viel schneller Mauszeiger bewegt und die
dritte Taste bewegt Lass uns eine nette Liste daraus machen. Um sie
danach in Ordnung zu bringen. Y. Also haben wir die Tasten
eins, zwei, drei, vier und wir haben die Hover-Taste
eins, zwei, drei, Jetzt bringen wir die
Hover-Funktion in jedes Muster. Gehen wir von Null, eins auf drei und
sichtbar umgekehrt N
wäre wäre der eine dann ich. Springt zu und versteckt sich Und versteckt. Lass uns kompilieren und speichern Lass uns spielen gehen. Ich hätte es am
Anfang unsichtbar machen sollen. Aber wenn ich zu anderen
Dingen gehe,
gehe ich und wenn ich zum Schlüssel gehe, gehe ich zum Schlüssel. Wenn ich schließe, verschwindet es. Wenn ich öffne, erscheint es. Es erscheint
erst über etwas. D. Lassen Sie uns nun als Standard festlegen , dass es unsichtbar sein
soll (
Standardsichtbarkeit Gehen wir zu Sichtbarkeit und setzen wir es auf ausgeblendet. Und jetzt haben wir unsere. Wir
haben in dieser Lektion viel gemacht. Lassen Sie uns mit der nächsten fortfahren. Vorerst mal vorbeischauen, wir sehen uns dann.
87. Spielergesundheitssystem und Widget: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Erstellung von
Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Zuvor haben wir ein
wenig die Einstellungen
unserer D-Render-Komponente
in unserem Charakter eingerichtet unserer D-Render-Komponente
in unserem Also gingen wir zu unserer
Kamera und sagten, was gerendert werden sollte und was nicht. Wir haben auf die Kamera geklickt. Ich wollte auf die
Sinusaufnahme der Komponente klicken. Wir verwenden die erweiterten Einstellungen der Sinuserfassung, um zu
unseren allgemeinen Showflags zu gelangen, und wir haben BSP-Partikel
und Skelettmaße deaktiviert Und wie gesagt,
wir können auch andere
Dinge auswählen, wenn wir nicht möchten sie in unseren Mindestwerten bei der
Erfassung von Sünden auftauchen Jetzt haben wir auch
Papier-Sprite hinzugefügt , um unseren
Charakter so gut wie möglich darzustellen Wenn wir also spielen,
können wir sehen, in welche Richtung wir uns bewegen und wo wir zumindest
hinschauen Wir wissen also, wohin
wir schauen. Wie dem auch sei, dann haben
wir weitergemacht und
unsere Regel in unserer Labyrinth-Generation
geändert unsere Regel in unserer Labyrinth-Generation Herstellung von Schnüren
für die Anstatt das halbe Labyrinth zu verwenden, haben wir ungefähr 75% des Labyrinths verwendet und geprüft,
wo wir unseren Schatzindex platzieren sollten Um das zu erreichen, haben wir
die bereits durch den letzten
Index geteilte Division wieder durch zwei und diese Division
zur ersten Division hinzugefügt Oh. Danach haben wir unserem Gameplay-Widget
ein Textfeld
hinzugefügt , das den Namen
des
Hobart-Gegenstands in Um das zu erreichen, haben wir tatsächlich
unsere Hover- und
Un-Hover-Events auf unseren Buttons verwendet und wir haben eine
Funktion entwickelt, die den Inventarplatz auf der Grundlage der Schaltfläche belegt , über
die der Und wir haben einige gemacht, wir haben
im Grunde
eine Kette von Ereignissen geschaffen , indem wir
das Inventar aus dem Spielmodus genommen , indem wir
das Inventar aus dem Spielmodus seine Länge
überprüft haben, ob es, ob es größer oder
gleich dem angeforderten Gegenstand ist,
denn denken Sie daran, die Länge beginnt bei Null, was bedeutet, dass kein Gegenstand ist und eins, was gewinnt, dass wir
einen Gegenstand haben. Und dann haben wir eins zum
Inventar hinzugefügt, denn wenn wir sagen, welche
Schaltfläche wir verwenden, haben
wir eigentlich Null
verwendet, um zu beginnen. Ich benutze Null, um zu beginnen. Also Null plus Eins bedeutet Eins, und wenn wir eine Länge
von Eins haben, geht es uns gut. Nein, was wir berechnet haben, habe ich hier gemacht. Wie dem auch sei, wenn wir
kein Objekt haben, sagen
wir nichts, der Text sagt nein und wir legen seine Sichtbarkeit fest, und wenn wir ein Objekt haben, wir den Namen
des Elements ab und setzen
es in unseren Tooltip Lassen Sie uns nun mit der
Erstellung der Verwendung der Elemente fortfahren. Wenn ich zum Beispiel auf ein
Objekt klicke, passiert etwas. Und dadurch werden wir in der
Lage sein,
einige Mechaniken unseres Charakters auszufüllen. Fangen wir zum Beispiel
mit dem Gesundheitsteil an, und wenn wir einen
Gesundheitsteil verwenden, müssen
wir unserem Charakter etwas
Lebenspunkte hinzufügen. Dazu benötigen wir ein Gesundheitssystem, mit dem wir Gesundheit hinzufügen oder entfernen
können. Und eine Visualisierung
davon für unseren Spieler. Nein, fangen wir mit
dem visuellen Teil an. Wir haben unser System für
den visuellen Teil so
eingerichtet , dass wir mithilfe
eines Materials einen internen
Parameter
ändern, um
das Material auf seinen
Maximalwert oder auf seinen Nullwert zu füllen . Oh, lass uns zeigen, wie wir das machen. Wir werden ein Bild bekommen. Wir
bringen es her. Machen wir es zum
Gegenteil des Minimums. Also Position, ich
werde 50,
50 oder y mal x 256 setzen . 256. Vielleicht reduziere ich
das etwas weiter. Hier sind die Anker
auch sicherheitshalber, vielleicht noch ein bisschen tiefer Vielleicht mach es auch ein
bisschen kleiner. Ja, das ist der Grund. Ja? Es steht nicht in der Reihe,
aber es ist ein Problem. Unser Material, wir werden
das M U I HP verwenden. Dieses Material lässt uns das Material
öffnen. Hat diesen HP-Parameter
, der 1-0 ist und das verändert,
wie unser Gesundheitsbalken aussieht Das ist also ein Wert, den
wir anhand
unseres Entwurfs
manipulieren werden anhand
unseres Entwurfs
manipulieren Kehren wir dazu zu unserem
Wood-Gameplay zurück. Lassen Sie uns das realisierbar machen. Nennen wir das P-Bar. Nein, es ist ein Bild und
lass uns zu unserem Diagramm gehen und wir werden
eine neue Funktion erstellen. Nennen wir dieses Datum HP. Sollte hier ein E sein. Jetzt benötigen wir
eine Eingabe, die vom Typ Float sein
wird weil wir den Wert
Null zu Eins haben, und wir werden das HP nennen. Das nächste, was wir tun
werden, ist unsere Gesundheit im Grunde genommen, ein Element, und wir werden
dynamisches Material bekommen. Das ist ein Knoten, der es
uns ermöglicht, auf das Material
des Materials zuzugreifen und es zu
manipulieren des Materials egal was wir wollen,
dynamisch im Gameplay. Was wir tun werden
, ist ein Parameter nach dem anderen, und wir werden den Wert hier
verbinden. Das sind tatsächlich p Prozent. Weil es nicht der
tatsächliche HP-Wert ist. Es ist ein Skalarwert 0-1
und es ist ein Prozentsatz Es ist nicht so, dass
wir, wenn du 300 HP hättest, 300
von 50 HP zurückgeben würden , also geben wir die Mathematik
nicht zurück Wir werden den Prozentsatz
direkt zurückgeben. Der wichtige Teil hier
ist der Parametername. Dieser muss genau
wie im Material eingegeben werden. Gehen wir in das Material ein,
ich denke, es ist der HP-Wert. Y. Um immer auf Nummer sicher zu gehen, können
wir den
Parameter wählen und ihn einfach kopieren und
hier einfügen Ups, kopieren. Kopieren und einfügen. Was ich eingefügt habe,
war eigentlich Code , weil die Steuerung hier nicht
funktioniert hat Als ich Strg C gedrückt habe, hat
es aus irgendeinem Grund nicht funktioniert Vielleicht habe ich es nach vorne verfälscht. Sekunden Fragment von Sekunden. Meine Tastatur ist ein bisschen
klebrig, alte mechanische. Nun, wo
aktualisieren wir diesen Wert? Wenn du dich daran erinnerst, wann wir
die Falle gebaut haben, lass uns zu den Requisiten gehen. Lass uns die Falle öffnen.
Ist es nicht hier drin? Korridor sollten es Feinde
sein. In unserem Ordner Feinde haben
wir also die BP-Falle. Als wir unserem Feind nun
Schaden zugefügt
haben, haben wir den Knoten Schaden anwenden verwendet. Wenn wir also zu unserem Charakter gehen, geben wir Schaden vom Typ A ein. Es gibt ein Ereignis, irgendeinen Schaden. Dies wird also ausgelöst, wenn
wir Schäden jeglicher Art und Art von Schaden anrichten. Wir könnten
Kurse zum Erstellen einrichten und so, aber das werden wir nicht tun. Davis, geh zurück zu unserem Charakter, und wir haben
etwas Schaden erlitten. Lass uns eine Funktion erstellen
, um Gesundheit zu entfernen. Also werde ich es Gesundheit nennen. R und es werden
zwei Eingaben benötigt, hier Eingaben, O wird ein Bullion sein, was Addieren
bedeutet, wenn es zwei sind, addieren
wir, und einen
Float, was Schaden bedeutet. Antwort: Als Nächstes benötigen
wir zwei Variablen Sie werden vom Typ Float sein
, und eine wird die aktuelle Gesundheit und die andere die Mx-Gesundheit sein. In MCs Health geben wir einen Standardwert
an, und dieser Standardwert wäre Jetzt setzen wir
den aktuellen Wert auf Max'
Gesundheit bei Spielbeginn Gehen wir also zu Beginn des
Spiels über, nachdem wir den Wert auf Absolut gesetzt haben.
Wir werden den aktuellen
Wert auf Max' Gesundheit setzen. Und dann verbinden wir unsere Funktion und entfernen
Gesundheit mit unserem Schaden. Und lassen Sie uns unsere Funktion eingeben. Das Erste, was wir
wissen sollten, ist, dass wir Schaden hinzufügen
oder abziehen, denn
Schaden könnte auch Heilen, wir werden ein Minus oder ein Plus
machen. Minus sollte
unten sein, weil wir Maxel bekommen werden , also Maxel
abzüglich des Schadens und dann Max Health Schaden wäre die Ferse. Wir werden eine Auswahl treffen. Wir werden unsere Anzeige hier
verbinden. P A, wir fügen hinzu. Wenn es nicht P A ist, ist es Peak B, also subtrahieren wir Wir werden diesen Wert erhöhen. Aber Achse, Klammer schweben. Weil wir Max meinen wollen. Wir wollen im Grunde nicht, dass es
über unseren
MAC-Status oder unter unseren
Wert unter Null geht. Wir werden
unseren MAX-Zustand abrufen und ihn
mit Mx verbinden, und der
Mindestwert wäre Null. Wir sollten nicht unter Null
subtrahieren. Und wir werden
unseren aktuellen Gesundheitszustand einstellen. Als Nächstes sollten wir unsere aktuelle Gesundheit durch die maximale Gesundheit
teilen. Und das würde uns einen
Prozentsatz unserer Gesundheit geben. Jetzt
holen wir uns unseren Schwulen-Modus. Wir werden
unser Widget-Gameplay bekommen. Davon ausgehend sagen wir
HP Update HP. Wir werden dieses Jahr
eine Verbindung herstellen, und wir werden unseren Prozentsatz
hier
verbinden . Datei, lass uns drücken. Sie speichern und kompilieren
eigentlich alles. Lass uns. Lass uns sehen, ob es funktioniert. Wir werden in eine Falle tappen. S. Aber im Moment sind
wir uns nicht ganz sicher , welcher Teil dieser
Aktionen nicht funktioniert. Fangen wir mit unserer Falle an.
Gehen wir zu unserer Falle. Was wir überprüfen wollen, wenn
wir Schaden anrichten. Ich werde von hier aus mit der
Überprüfung beginnen. Gehen wir davon aus, dass alles
andere korrekt ausgelöst wird, und wir wollen sehen, ob
es Schaden anrichtet. Wir erreichen diesen Ort, also richten
wir Schaden an. Ich werde aufhören,
weil es eine Verzögerung und um den
Breakpoint von hier zu entfernen. Ich gehe zu unserem Charakter von
oben nach unten und setze bei jedem Schaden einen Breakpoint
. Lasst uns jetzt die Falle finden. Mützen spawnen nicht in Räumen. Das ist etwas Gutes. A, wir fügen Schaden zu.
Wir hatten entfernt. Dieser Wert ist neun. A Wir haben einen Schaden erlitten. 0.9 HP aktualisieren. B. Wir aktualisieren HP, indem wir den Wert auf 0,9 setzen. Wir haben das Richtige
, weil eingefügt. Was? Okay, es wird keine
Vorschau angezeigt, weil ich gerade spiele. Ich sollte unsere Gesundheit senken. Punkt streichen. Macht es das, und ich sehe es nicht. Die Tasse hat ein falsches Geräusch. Die Tasse gibt beim Angriff ein falsches
Geräusch ab. Gehen Sie zum Angriff über. Wir
spielen den Sound hier nicht ab. Okay, wir spielen
den Sound hier. Das ist ein korrekter Sound. E ernten. Gehen wir zurück zum Material. Wir verbinden
das, wenn das 0,9 ist, sollte
es so aussehen, wenn das 0,8 ist,
sollte es so sein. Null. Lass uns testen, ob der Standardwert Null
ist. Wird es aktualisiert? Ja, tut es. Aber
danach tut es das nicht. Ich gehe immer auf 0,9. Geh zu unserem Charakter.
Sie können sehen, dass wir auch während der Laufzeit
debuggen können auch während der Laufzeit
debuggen Ich kann zu meinem Charakter gehen, ich kann einen Charakter auswählen Dieser hat nur einen Knoten. Wir werden es nicht leicht sehen, aber wenn ich es hierher bringe, ist es sichtbar. Wir können
es tatsächlich während der Laufzeit sehen. Aber es läuft, was es macht. Es geht voran. Ich werde hier einen
Breakpoint setzen. Ich werde den Wert 0,9 sehen. Jedes Mal
kommt der Wert 0,9. Okay. Das werde
ich beim nächsten Mal lösen. Ich werde es hier lassen. Auf Wiedersehen für heute.
88. Inventargegenstand Usability-Gesundheitstrank: O Hallo und willkommen zum Game Design-Workshop
unter den
prozeduralen Aufrufen zur Erstellung von
Dungeon-Action-Pz von Engine Five prozeduralen Aufrufen zur Erstellung von
Dungeon-Action-Pz Zuvor haben wir mit dem
Aufbau unseres Gesundheitssystems begonnen. Wir haben unser Bild zu
unserem Widget hinzugefügt, dessen
skalaren Parameter wir manipulieren HP-Wert erhält die
dynamische Instanz, was hier der HP-Wert ist Lassen Sie uns das wieder auf eins setzen. Und dann fuhren wir fort,
indem wir in unserem Charakter das Any Damage Event und die Funktion zum
Hinzufügen und Entfernen von Gesundheit hinzugefügt haben, was ich hier tatsächlich
sehr falsch gemacht habe. Ich subtrahiere und
füge einen Wert zu der MAX-Gesundheit hinzu, anstatt
der aktuellen Jedes Mal, wenn wir
0,1 Schaden zufügen, reduzieren
wir tatsächlich
unsere maximale Gesundheit, sodass sie immer bei 90% liegt Lassen Sie uns nun
die aktuelle Gesundheit
anstelle der MAX-Gesundheit verbinden . Wenn wir nachschauen, und
das sollte funktionieren. S hier. Stimmt? Ja. Ja, es funktioniert. Gesundheit zu verlieren, auch
viel Gesundheit. Und wir haben endlich das richtige
Geräusch auf der Falle. Wir ändern den Spielsound hier, nach der Verzögerung, das ist die Zeit, in der der Charakter
beschädigt wird. Es wird vor
dem Trigger-Teil
und dann der Teil mit
dem Spike-Angriff abgespielt und dann der Teil mit
dem Spike-Angriff Lassen Sie uns mit
unserem Gesundheitsteil fortfahren. Um das zu tun, müssen wir zu unserem Gameplay-Widgit
zurückkehren. Und wir werden unsere Knöpfe
brauchen. Wir werden Taste eins
auswählen. Lassen Sie uns das
eigentlich von der Grafik aus machen. Wir müssen
die Knöpfe jetzt nicht machen. Wir wissen, dass
es sie hier gibt. Gehen wir also zu Taste eins
und drücken wir auf
Los geht's, wenn geklickt wurde Und dann auf Taste zwei geklickt
und auf Taste drei geklickt und Taste vier t. Nun, wir haben das Als Nächstes
müssen wir
eine Funktion erstellen , die wir use
aufrufen, und sie wird eine
Eingabe vom Typ Integer haben Nennen wir das Plot. Gehen wir also zurück
zu Ihrem Ben-Diagramm. Verwenden wir in unseren Schaltflächen diese Use-Funktion. Lassen Sie uns diese Use-Funktion verwenden und alles verbinden, angefangen bei 0-1, zwei und drei Im Moment, wenn wir eine unserer Tasten
drücken, führen
sie diese Funktion aus.
Verwenden Sie eins, zwei, drei 0-3 Lassen Sie uns nun die Funktion aufrufen. Und wir werden unser Inventar brauchen. Also wir haben es auf Hover gespeichert, nicht gespeichert, aber wir haben
diesen Code hier benutzt , um unser Inventar
zu bekommen Also
kopiere ich das, was gerade benutzt wird, und ich werde wieder zu
reiner Besetzung konvertieren und ich werde wieder zu
reiner Besetzung konvertieren,
weil beim Kopieren und Einfügen die reinen Besetzungen wieder
normal werden Jetzt haben wir Zugriff
auf unser Inventar und werden unsere Schlüssel holen Und wir werden
sie zu unserer lokalen Variablen machen. Nennen wir diese Schlüssel. Und wir werden unsere Werte
bekommen. Und wir werden
das zu einer Variablen heraufstufen. Ebenfalls, Colle-Werte. Jetzt haben wir Zugriff auf unsere Artikel
und auf unsere Werte. Jetzt
werden wir
diesen Artikelindex verwenden , um
von unseren Schlüsseln abzurufen. Wir werden bekommen.
Und wir gehen zu Index, s. Wir holen uns unseren
Platz, nicht Artikelindex. Im Grunde genommen,
und wir werden wechseln Basierend auf diesem Namen
müssen wir die
Namen für unsere Suiten festlegen. Ich gehe zu den Details, wir entfernen
die Standard-PIN
und die Gegenstände, die wir verwenden sind, glaube ich, zwei für die Portion, die für Zeit und ich
fünf für die Zerstörung. B war dieses Material kompiliert und gespeichert und lassen Sie uns
unsere Artikel für eine Sekunde überprüfen. Ich erinnere mich, dass ich
für Gesundheit war. Da sind es Gegenstände. Hier ist es. Die Artikel. Gesundheitstränke, Haustiertrank,
Zaubertrank war vier
und fünf Okay. Aber Nummer eins, was
wir gerade machen, was
eigentlich Nummer zwei ist, sind die Zaubertränke. Gehen wir zurück zu unserer Pam
P. Und wenn es ein Zaubertrank ist, müssen
wir überprüfen, ob unser
Spieler bei voller Gesundheit ist oder Denn wenn der Spieler
volle Gesundheit hat, sollten
wir ihm nicht noch mehr Lebenspunkte
hinzufügen Aber selbst wenn wir das tun,
sollten wir die Möglichkeit haben , zu unterscheiden, ob wir
etwas hinzufügen oder nicht. Nun, wir werden
eine Filiale anlegen. Wir werden den Spieler dazu bringen. Dadurch bekommen wir direkt das
kontrollierte Telefon, das wir sind und das unser Kontrolleur
kontrolliert, ist besessen Wir gehen über den Charakter
hinaus, der eigentlich
die
Klasse unseres Teiches ist, und
holen uns die Variablen, die wir wollen Wir verbinden
das hier, hier,
und wir werden überprüfen, ob unsere aktuelle Gesundheit unserer
Mx-Gesundheit entspricht, nicht gesetzt, wenn diese gleich sind, dann
sollten wir nichts tun weil der Charakter
volle Gesundheit hat. Wenn diese nicht gleich sind, sollten wir Gesundheit hinzufügen
und auf Anzeige drücken. Und jetzt wollen wir unseren Zaubertränken einen
Wert geben. Nehmen wir an, sie heilen gesund. Wenn wir bei voller Gesundheit
Zaubertränke trinken wollen , verbinden
wir
das einfach hier. Oder wenn wir genau wissen wollen
, dass zwei Lebenspunkte fehlen, um einen Trank zu verwenden, könnten
wir hier mehr
Regeln aufstellen Für uns werden wir
genau diese Regel beibehalten, und als Nächstes werden
wir unsere Werte ermitteln
, also wie viele Zaubertränke
wir in unserem Inventar haben Hier drüben, und ich hole
mir unsere Werte. Ich hole unser Grundstück, weil das ein
Inventar ist. Und wir
nehmen einen Minus-Eins, das ist der Trank, den
wir gerade benutzt Jetzt werden wir überprüfen, ob dieser niedriger oder gleich Null
ist, und einen Zweig verwenden Wenn es nicht niedriger als Null ist, werden wir
unser Inventar erneut abrufen. Wir machen
das wirklich variabel, aber das ist nicht wirklich wichtig. Erneut in Pure Cast umwandeln, kommentieren. Besetzung. Wenn es nicht Null ist, bedeutet das, dass wir noch Portionen haben Wir werden
unseren Slot-Artikel hinzufügen. Und das Minus eins
von unseren Werten. Aber das wird um
eins abgezogen. Ich weiß, dass es verwirrend sein kann
, dass wir etwas hinzufügen, aber das Hinzufügen aktualisiert nur den
Wert, der bereits existiert Jetzt aktualisieren wir das Inventar für unser Inventar, das
Sie verwenden werden. Inventar. Es spielt keine
Rolle, dass wir dieselbe Variable verwenden
, die wir aufrufen da diese Knoten
zwei verschiedene Dinge sind. Aber das bedeutet tatsächlich
, dass es auch Eis werfen wird. Heraufstufen dieser Variablen
würde sie also ein
bisschen optimaler machen, vielleicht
fördern wir diese
Variable und halten sie, damit wir
sie nicht jedes Mal aufrufen. Aber das hat
momentan nur minimale Auswirkungen auf unser Spiel. Oh, als Nächstes müssen
wir unseren Tooltip aktualisieren Was nicht als
Update-Tooltip bezeichnet wird, sondern als Over-Tooltip Wir werden versuchen, es auf
sichtbar und den Slot auf unseren Slot zu setzen. Der Grund, warum das funktionieren
wird, ist,
dass wir bei der Eingabe prüfen, ob
dieser Artikel existiert. Falls wir ihn
in unserem Inventar haben. Wenn wir es
nicht in unserem Inventar haben, schicken wir auch keins. Gehen wir zurück zu Now, was passiert, wenn
wir bei Null sind? Oh, was passiert,
wenn wir bei Null sind, müssen
wir
aus dem Inventar entfernen. Oh, ich hole nochmal
unser Inventar. Auch hier spielt es keine Rolle,
dass ich diesen Code kopiere und einfüge denn selbst wenn ich ihn
daraus ziehe, würde er es wieder tun. Jetzt werde ich umziehen. Und für unseren Umzug werden
wir
unsere Schlüssel in den Schlitz stecken. Wir werden
unsere Schlüssel in den Schlitz stecken. Und dann werden wir einfach
das Inventar aktualisieren. Nein, lass uns das testen. Gehen wir in unseren Spielmodus, wählen
wir unser Inventar und fügen wir einige Portionen hinzu, ich zwei,
und fügen wir zwei Zaubertränke Lass uns verletzt werden. Potion funktioniert hier, also ich. Es passiert nichts, und
lass uns eine Falle suchen Ich werde einen benutzen. Aber
Narr, lass dich wieder verletzen. Zu klein, 90% zeigen nicht wirklich und 80%
zeigen zu viel. Wie dem auch sei, nehmen wir den
Trank und er ist weg. Ein Problem, der Scherz hier
drüben , dass wir die
beiden Portionen haben, wurde nicht angezeigt Schauen wir uns das an. L Lass uns zu unserem Gameplay gehen. Gehen wir zu Ben Graph und bewegen den Mauszeiger nicht mit der Maus über das
Update-Inventar. Wir können direkt von
der Funktion d Inventar aus gehen, und wir wollen, wenn ich
es auf versteckt setze, wo es sichtbar sein sollte Aber jetzt haben wir
die beiden Möglichkeiten. Nichts passiert, man setzt
auf eins, eins links, links. Warum war der so groß? Ich denke, wir haben es ein
bisschen zu groß gemacht. Es ist ein bisschen ausgeglichen. Also lass uns diese beiden reparieren. Also, du fragst dich, wie ich die Sache mit
dem Vollbildmodus gemacht habe. Ich habe F 11 gedrückt. Und wenn Sie
tatsächlich Shift N F 11 drücken, wird es komplett im
Vollbildmodus angezeigt. Es deckt sogar die Fensterleiste ab
, die Sie hier nicht sehen können. Aber ja, Shift F 11
deckt es komplett ab. F 11 macht es einfach im Vollbildmodus
ohne die Fensterleiste. Wie auch immer, lassen Sie uns
das visuelle Problem beheben. Ja, es sieht nicht gut aus. Der Grund dafür verschwindet
aufgrund der Rendering-Regeln. Das würde also ein
bisschen nach links gehen. Ich glaube, das ist es. Ja.
Also werde ich schummeln und die Translation
Rendering Transform benutzen Nicht sehr optimale Verwendung, aber wir machen es
vorerst minus drei Also hier. Und lass es uns hier einfügen. Sie können sehen, wenn ich klicke, weil es sich um denselben
Elementtyp handelt. Auch wenn ich auf die
Schaltfläche klicke, auch weil sie irgendwie die
gleichen Arten von Elementen haben. Ich bin unten geblieben. Das wird nicht zurückgesetzt, was ein sehr nettes Feature ist. Sagen wir auch hier Minus. Ich glaube, jetzt
wollte ich sagen, dass sie
besser aussehen, aber der Großteil. Ja, weil der Typ
Ort fett gedruckt ist. Also lass uns das so ändern, dass
es nicht so ist. Ich mag kein normales. Ja, normal normal ist
besser. Lass uns benutzen. Wir können damit aufhören, die Grafik und
alles andere zu
optimieren. Es ist in Ordnung Es ist in Ordnung, ist in Ordnung. Nun, ich
denke, das ist es für diesen. Ich sehe
dich als Nächstes. Auf Wiedersehen.
89. Spielzeitleiste und Zeittrank: Hallo und willkommen zum
Game-Design-Workshop, zur
echten Engine Five, zum
prozeduralen Dungeon, Action-Rollenspiel und zum Kreativkurs In der vorherigen Lektion haben wir mit unserer Nutzungsmechanik
begonnen. In unserem B-Gameplay haben wir das On-Klick-Ereignis für
die vier Tasten verwendet und eine Nutzungsfunktion
erstellt, wir anhand
einer Ganzzahl bestimmt haben,
welche Taste,
also im Grunde, welcher Slot im
Inventar wir drücken In dieser Funktion haben
wir unser Inventar abgerufen, dass wir aus unserem Spielmodus heraus die Schlüssel und
Werte in separaten
lokalen Variablen gespeichert haben . Danach erhalten
wir, basierend auf unserem Slot, aus unseren Schlüsseln
den Namen des Schlüssels, was unser eigener Name ist, und wir wechseln
auf der Grundlage dieser Gegenstände, die wir haben. Ich zwei, ich drei, ich
vier und ich fünf. Ich zwei ist der Heiltrank. Also haben wir überprüft, ob unser
Spieler gesund ist. Denn wenn unser Spieler voller Gesundheit
ist, sollten
wir den Trank nicht trinken Und wenn die Lebenspunkte nicht voll
sind, verwenden wir die Funktion „
Gesundheit entfernen“, um unserem Spieler zwei HP hinzuzufügen Dann haben wir die Werte
des aktuellen Slots, also der Heiltränke
, überprüft des aktuellen Slots, , um zu sehen, ob minus eins
Null oder weniger als Null ergibt Ein Wert unter Null
sollte eigentlich niemals ausgelöst werden. Und ob wir im Grunde genommen
Zaubertränke haben
, überprüfen wir das hier. Wenn wir Zaubertränke haben oder wenn
die Zaubertränke bei der Einnahme
gleich Null werden, haben wir unser Inventar
entsprechend aktualisiert, indem wir denselben Schlüssel
entfernt oder dem Inventar hinzugefügt Und dann haben wir
unser Inventar aktualisiert und auch
den Hover-Tipp aktualisiert Nur für den Fall, dass es
Null wird, heißt es nein. Nun, die Reihenfolge sagt uns, dass wir den
Schnelltrank sofort einnehmen sollten,
aber ich möchte jetzt nicht
genau
mit der Charaktermechanik beginnen genau
mit der Charaktermechanik Da wir uns also
im Gameplay-Widget befinden, erstellen
wir den Zeittrank
, der praktisch
nur aus zwei Variablen besteht Wir werden eine
Float-Variable verwenden. Wir werden diesen Elternteil anrufen. Wir werden
es duplizieren und es Max nennen. Wir werden der aktuellen Zeit einen Wert
hinzufügen. Nehmen wir an, unser
Einmaltrank gibt uns 60 Sekunden, weil wir in Sekunden unterwegs sind , und darauf sollten wir unsere aktuelle Zeit
einstellen Aber wir werden einfach
festklemmen, die Achse festklemmen. Entschuldigung, klemmen Sie den Schwimmer fest. Wir werden das hier
verbinden und unser Klumpen
wäre unsere maximale Zeit. Und geben wir die maximale
Zeit als Standardwert an. Dafür müssen wir kompilieren. Und das wären, sagen wir, 220. Nehmen wir an, es sind 220, und wir
fügen jedes Mal eine Minute hinzu. Wir trinken einen Zeittrank. Und lassen Sie uns das mit fünf verbinden. Das nächste, was passieren
sollte, ist jetzt schon erledigt. Wir werden
das hier mit dem Branch verbinden, und es wird prüfen, ob der aktuelle
Wert-Slot genug hat, und es wird entfernt oder hinzugefügt, wenn es Sable ist, was nicht Sable ist Ich denke, Zeittränke
werden nur einmal verwendet. Ich habe alles
einmal verwendet, außer
den Zaubertränken und
dem Schnelltrank Lassen Sie uns also den
Indikator für die Uhrzeit erstellen, so wie wir ihn in der Benutzeroberfläche brauchten Wir gehen zu p. Wir verwenden dieselbe Technik
wie das Material wie
der Gesundheitsbalken. Wir werden also ein Bild verwenden. Wir setzen den Anker in
die Mitte und nach oben. Setzen wir Position x -300, Position y 50 Größe x 600, das ist y 60. Und ich denke, es ist
eine gute Zeitleiste. Und jetzt zum Auftritt. Wir werden putzen und wir werden das Mer benutzen. Material für Exemplare. Jetzt haben
wir unsere Zeitleiste. Programmieren wir es so, dass es etwas tut , denn wenn wir es haben,
heißt das nicht, dass es etwas bewirkt. Also gehen wir zu
unserer Grafik. Wir gehen
zu unserem Event-Graph. Wir gehen zum
Event-Konstrukt, was so etwas wie Start
Play oder Blueprints ist Und jetzt verwenden wir a.
als Zeitangabe für jedes Ereignis. als Zeitangabe für jedes Ereignis Für
Neueinsteiger ist ein Timer im Grunde ein
Knoten, der verwendet wird, um ein zeitgesteuertes Ereignis zu erzeugen , das nach
einer
bestimmten Dauer
eine Aktion auslöst . Wenn wir auf Lupin klicken
, kann auch so eingestellt werden, dass sie sich
in regelmäßigen Intervallen wiederholt Und so wie wir ihn verwenden, erstellen
wir ein benutzerdefiniertes Ereignis, und wir binden
dieses Ereignis über den Delegierten
hier Wie viele zusätzliche Informationen
wären, dass es eigentlich
egal ist, wie oft Sie sie haben und wo
Sie sie haben. Es ist wichtig, wie viele Aktionen sie ausführen, weil
sie hinter dem Code quasi als Einzeiler
betrachtet werden, hinter
allem, was sich ansammelt,
einfach
grob erklärt, nicht genau so, aber sagen wir,
es sammelt die Aktionen der Zeit Lassen Sie uns nun in unserer Theorie einige Werte angeben. Also wird unser Timer in einer
Endlosschleife laufen. Er wird sich alle
1 Sekunde wiederholen. Das bedeutet, dass der erste Stick 1 Sekunde nach dem Start
des Spiels
läuft Also werden wir unsere aktuelle Zeit
einstellen. Alle 1 Sekunde zwei
aktuelle Uhrzeit minus eins. Und dann werden wir fragen, ob diese Zeit gleich Null ist. Eigentlich gleich oder kleiner
als Null. Weniger oder gleich. Bestell hier kurz was rein
, wenn ich eine kurze Notiz haben will. Wenn es weniger als Null ist, werden
wir im Grunde genommen
unser Spiel beenden. Was wir noch nicht so genannt
haben, das machen wir später. Jetzt nur noch eine Information. Wir werden nicht pausieren
oder ich stelle diesen Timer ein,
aber um das für Timer zu tun, haben
wir ein System namens
Handles, haben
wir ein System namens
Handles Wenn ich diese Variable hochstufen
und sie
Timer ble und I nennen würde, wenn ich dieses
Handle irgendwo aufrufen müsste, wenn ich Zugriff darauf hätte, kann
ich den Timer pausieren oder die Pause aufheben und auch fragen, ob
der
Timer gestellt ist kann
ich den Timer pausieren oder die Pause aufheben und auch fragen, ob
der
Timer Das ist die Art, wie
wir das machen. Und es gibt auch einen
eindeutigen und einen ungültigen Artikel. Es gibt noch ein paar weitere Optionen. Ich wollte das nur hinzufügen. Ich werde diese Variable nicht
verwenden. Ich werde sie löschen. Jetzt haben wir einen Timer
, der rückwärts zählt, und wenn wir unseren
Gegenstand verwenden, verlängern wir unsere Zeit Jetzt wird es nicht sofort
aktualisiert, aber es wird
im Grunde sofort aktualisiert ,
weil es jede Sekunde, jede Sekunde aktualisiert und es aktualisiert Gehen wir zurück zu unserem Timer. Wir werden eine Funktion benötigen. Und die Funktion wird sehr
ähnlich sein die,
die wir bei HP aktualisieren wollen. Ich werde das duplizieren. All diese Updates. Und statt der Bar werde
ich die benutzen. Es gibt eine Bar. Es ist
keine Variable. Gehen wir zum Designer.
Lass es uns auswählen. Machen wir es zu einer Variablen. Wir werden es hierher bringen. Aber das gibt uns einen Prozentsatz gegenüber dem Zeitpunkt, an dem wir
die Gesundheitsberechnungen durchführen. Aber für die Zeit müssen wir die
Berechnungen hier durchführen. Wir müssen die aktuelle Uhrzeit angeben,
ich benötige die X-Zeit. Wir werden diese beiden teilen. Wir bekommen den Prozentsatz und wir werden das
hier verbinden . Wir werden das löschen. Und aus irgendeinem Grund bin
ich mir sicher, dass dieser Wert derselbe
wäre. Aber lass uns nachsehen. Lass uns nachschauen. Wir öffnen die Instanz. Also ja, dieser Wert ist der P-Wert. Das ist also unsere
Parametervariable. Wenn wir das Hauptmaterial öffnen, können
wir sehen, dass dies
der Parameter ist , den wir
füllen, und seinen P-Wert. Wir füllen also
das P des Timers. Nein, sie wollen anderen die Schuld für Benennung von Konventionen geben,
um ehrlich zu sein. Aber wie dem auch sei, wir brauchen
diese Eingabe nicht mehr, weil
wir hier aktualisieren. Und lassen Sie uns diese Funktion
vor unserer Filiale verwenden. Wir werden
diesen Aktualisierungs-Timer einstellen. Wenn wir nun
wirklich, wirklich präzise sein wollen, könnten
wir bei
der Einstellung der aktuellen Uhrzeit für uns und er würde sofort aktualisiert werden. Es ist kein großes Problem,
aber ich glaube nicht, dass es auch wichtig
wäre Wir benutzen den Trank, wie das nächste Stäbchen, das sich anfühlen würde Weg. Gehen wir schummeln,
um unseren Zaubertrank zu testen Wir werden dem Inventar einen neuen
Gegenstand hinzufügen. Wir werden das I Five nennen. Ich glaube fünf, und ich
werde eins sein. Und ich werde
kompilieren und spielen. Lass uns alles speichern,
bevor ich Play drücke. Das wäre uns egal.
Wir würden damit nicht abstürzen. Wir haben keinen Code gemacht. Oh, und es
funktioniert schon nicht. Oh, weil wir
die aktuelle Uhrzeit auf nichts eingestellt haben. Also benutze ich das tatsächlich. Wir können sehen, dass es
funktioniert. Aber wir müssen die aktuelle Zeit auf
die maximale Zeit im Konstrukt setzen . Oder die andere Sache, die wir tun können, aber dann
müssen wir es jedes
Mal ändern , wenn unsere maximale Zeit 2:20 ist Wir können die
aktuelle Zeit auf 220 setzen. Wir verwenden einfach die eingestellte maximale Zeit bis zur aktuellen Uhrzeit und beginnen mit dem
Spielen oder Konstruieren, sodass wir nicht jedes Mal
beide Werte ändern müssen. Wie dem auch sei,
lassen wir es einfach so einfach. Ich denke, das ist es für diesen. Ich sehe dich das nächste Mal. Auf Wiedersehen.
90. Geschwindigkeitstrank und Partikel-Effekte: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir unseren
Timer zu unserem Viewport hinzugefügt. Wir haben die Timer-Leiste hinzugefügt und das
Event-Konstrukt hinzugefügt. Dabei handelt es
sich um den Beginn des Spiels der Blueprints,
das für
jedes Ereignis festgelegt wird. Dabei handelt es sich um ein Ereignis, das zu einer bestimmten Zeit stattfindet Und wir haben ein benutzerdefiniertes
Ereignis erstellt, das wir zu einem Ereignis zusammenfügen. Und wir haben dieses benutzerdefinierte Ereignis verwendet , um die aktuelle
Zeit auf -1 Sekunde einzustellen. Dann haben wir unseren Balken anhand
unseres
skalaren Parameterwerts aktualisiert , dem HP-Wert entspricht, und wir haben den Prozentsatz unserer aktuellen Zeit
zu unserer maximalen Zeit berechnet. Dann fuhren wir
mit unserem Use-Event , um den Vorgang abzuschließen. Wir verhalten
uns andersherum Wir haben
zuerst das Use-Event erstellt, aber trotzdem, also haben wir das Use-Event erstellt, indem wir, wenn wir
das I-Five-Objekt verwenden, was ein Timer-Teil ist, 60 zu unserer aktuellen
Zeit hinzufügen, also 60 Sekunden Ja, im Grunde 60 Sekunden. Wir schalten zu unserer maximalen Zeit und dann
aktualisieren wir unsere Timer, das ist
also ein sofortiges
Update und es wird
nicht ein Tick und eine Sekunde gewartet Und dann verwenden wir den Code, wir für die Portionen haben. Ebenfalls. Es ist ein allgemeiner Code. Für all diese Aktionen
wird es einen gemeinsamen
Code geben, um zu überprüfen, ob wir noch andere Teile
im Inventar haben und ob wir sie nicht aus
unserem Inventar entfernen und den Tooltip aktualisieren müssen , über den der
Mauszeiger bewegt Gehen wir jetzt und machen
den Geschwindigkeitsanteil. Ich drei. Nein. Mir gefällt, dass ich das schleppe. Das Fehlklicken ist unglaublich. um das zu tun Gehen
wir nun zu unserem Charakter
und zu unseren Partikeln, . Nun, eigentlich Sets
für ein Partikel. Ich habe mich schon darauf eingestellt. Wir werden den P
Revenant Frosting Headport benötigen. Wenn das Sinn macht, ist
das der Partikel
, den wir brauchen Wir werden es auswählen und
dann auf Hinzufügen klicken
und wir wählen das
Kaskaden-Kaskadenpartikelsystem,
und es wird zu unserem Charakter hinzugefügt Jetzt werden wir es ein
bisschen größer
machen . Wir werden es
auf zwei setzen. Und das ist in Ordnung. Und
lass uns unser Partikel öffnen. Nehmen Sie ein paar Änderungen vor. Ich werde
das Partikel herbringen. Wir wollen dieses verkohlte MC und wir werden
die Lebensdauer von eins auf 2,5 ändern Ich werde dir gleich sagen, warum. Und im Grunde ist das so, wie lange der Partik, dieser
Teil des Teilchens
, hält . Wenn wir ihn schließen, können
wir sehen, dass es sich um die
eigentlichen Flammen Dieses Ding. Und wir werden auch
nicht die Größe von Leben zu Leben ändern Ja, die Größe von Leben zu Leben, wir werden es deaktivieren. Es ist immer eine Größe. Andernfalls, wenn wir das nicht tun, lassen Sie mich das hier aufheben Vielleicht bevorzugen wir es so, aber ich nicht Es scheint, als ob wir mit Gas betrieben
werden. Wir wollen nicht mit Gas betrieben werden. Wir wollen Buchmacher werden. Ich weiß nicht,
etwas anderes. Also werden wir es nicht
löschen, sondern deaktivieren, indem wir dieses X hier
drücken, sodass es deaktiviert wird, und jetzt ist es eher wie eine Aura, mehr wie eine tatsächliche
Spur, auf der wir leben Wenn wir statisch sind,
zeigt das auch , dass wir das aktiviert haben Das wäre von
der Partikelseite. Lass uns das programmieren. Eigentlich noch eine
Einstellung zum Artikel. Gehen wir zurück zum Partikel. Wir wollen nicht, dass
es automatisch aktiviert wird. Also werde ich
prüfen, ob es aktiviert ist, und ich werde
die automatische Aktivierung deaktivieren. Wir wollen
das aktivieren. Wir wollen nicht, dass es ein konstanter Zustand ist. Ich kompiliere und speichere und lass uns
zu unserem Gameplay zurückkehren. Nicht unser Gameplay.
Schon wieder mein Fehler, wir müssen
beim Charakter bleiben. Gehen wir zum Ereignisdiagramm und erstellen wir irgendwo benutzerdefinierte
Ereignisse. Ich werde hier ein
benutzerdefiniertes Ereignis erstellen. Und nennen wir es,
ich weiß es nicht. PD. PD ist ein guter Name. Holen wir uns also unseren P Revenant
Frosting Headport und lassen Sie uns ihn aktivieren müssen wir auch, Das
müssen wir auch,
wir müssen es nicht aktivieren. Wir brauchen nur. Das ist nur ein Aktivierungsknoten. Wir müssen ihn nicht auf aktiv setzen, und wir werden ihn auch
zurücksetzen Jetzt machen wir auch
ihre Sichtbarkeit, Iden, und lassen Sie uns sie einschalten, nur für den
Fall , dass diese Sichtbarkeit hier ist. Nur für den Fall, dass es nicht endet und
nicht richtig startet, also nicht abrupt startet Es sieht besser aus. Was ich zum Beispiel meine,
sind technische Details. Lass uns wieder malen gehen. Ich meine, wenn wir
unseren Charakter haben und unsere
Wirkung hier endet. Nur für den Fall, dass die Aktivierung
nicht von hier aus beginnt. Für einen Frame sehen wir das. Wir wollen das nicht sofort sehen
, wir
wollten, dass es
sich nach und nach erweitert. Deshalb spielen wir
mit der Sichtbarkeit, setzen sie zurück und schalten sie
dann und dann
müssen wir unsere
Charakterbewegung verwenden Was ist die
Bewegungskomponente eines Charakters? Es ist spezifisch für
Charakter-Blueprints. Dieser Bauplan
hat mich zum Beispiel sichtbar gemacht. Gehen wir zu den Klasseneinstellungen. Und sehen Sie,
die übergeordnete
Klasse ist der Charakter , und
wenn wir einen Plan erstellen, fragt
er mich, ob es ein Schauspieler ist Ist es eine Stecknadel? Ist es ein Charakter? Nun, Charaktere und
einer unter Teich, in dieser Liste in der Hierarchie
nicht aufgeführt, weil Charaktere Teiche sind, aber Teiche sind nicht
alle Bei einigen Teichen
kann es sich um Charaktere handeln. Es ist wie bei der Sache mit dem Van-Diagramm, was bedeutet, dass der
Charakter im Grunde vom Teich erbt
, Pond nicht Und das Besondere an dem Charakter ist
die Bewegungskomponente
des Charakters, die im Grunde dazu dient,
die
Bewegungslogik von
drei
D-Charakteren zu handhaben zu Es kann für zwei D verwendet werden, aber es wird ziemlich schwierig
sein, vielleicht ein paar
Plug-ins benötigt. Jedenfalls. Also, das, was für
unsere Charakterbewegung
verantwortlich ist ,
hat eine Menge Einstellungen, unendlich viele
Einstellungen, wenn man so will. Wirklich. Wie dem auch sei, was wir von all diesen Einstellungen erwarten, ist
unsere maximale Gehgeschwindigkeit. Standardmäßig haben wir also 600, und ich finde, es ist eine nette Geschwindigkeit. Aber wenn wir schnell sind, sollten wir es auf
etwas Größeres einstellen Also lassen wir Max laufen. Geschwindigkeit. Sagen wir bis 900. Dann setzen wir in der Regel einen Aufschub ein. Wir
könnten zum Beispiel eine Verzögerung festlegen, und nach, sagen
wir, 14 Sekunden, setzen wir die maximale Bewegungsgeschwindigkeit auf 600 zurück und setzen die Sichtbarkeit
des Partikels auf zwei zurück. Wir könnten auch festlegen,
dass wir deaktivieren oder den anderen Knoten, den wir nicht verwendet haben, deaktivieren oder
verwenden, act auf negativ
setzen und ihn
dann zum Beispiel zurücksetzen. Wir könnten aber auch nichts tun, aber mit diesem Partikel würden
nur sehr wenige Ressourcen zur Verfügung stehen. Hängt auch vom Partikel ab. Also lass uns deaktivieren. Nur um ein paar Ressourcen zu sparen. Nun, diese Verzögerung hier
würde als Tor dienen. Als ob wir
das durchmachen, setzen wir auf 900. Wenn die Verzögerung läuft, wird sie erst weiterlaufen, wenn
die Verzögerung beendet ist Dann kann sie erneut ausgeführt werden. Wenn wir jedoch eine verzögerbare
Verzögerung verwenden, fügen wir sie auf 14 ein. Das heißt, wenn
wir einen Trank trinken, löst
die Verzögerung den Countdown erneut aus. Also lass uns das machen. Also im Grunde, wenn wir immer wieder festgelegte Zaubertränke
finden, lösen
wir diesen
14-Sekunden-Countdown immer wieder neu Wir werden keine zusätzliche Zeit hinzufügen, wir werden nur die 40 Sekunden erneut
auslösen Lassen Sie uns dieses
Ereignis nun von unserer Seite aus aufrufen. Oder hier. Wir werden von der
Besetzung zwei BP-Spieler runter bekommen, wir werden schnell und wir werden
Speedy hier mit der Gruppe verbinden Wir werden kompilieren und speichern und dann Cheaten übergehen Lass uns in unseren Spielmodus gehen und einen Inventargegenstand
ändern. Lassen Sie uns zwei auf drei setzen, und I drei hat standardmäßig zwei
Verwendungszwecke. Lass uns spielen. Und ich
bewege mich normal. Ich öffne Inventar, Eis, blaue Flasche, ich benutze eine und ich habe Speedy 13 Sekunden, 14 Sekunden. Lassen Sie uns das Ganze sogar erneut auslösen.
Ich benutze es wieder und jetzt sollte es für Sekunden sein Was ist der Aufzug? Oh, Mäuse. Gleich hier drüben, Aufzug hier. Mäuse labyrinthen Dungeon. Oh. Das war's für diesen. Das nächste werde ich dir vorsingen. Auf Wiedersehen.
91. Wuttrank und Partikel-Effekte: Hallo und willkommen im Game
Design Workshop, ihrer echten Engine
Five-prozeduralen Dungeon-Action-Bz-Schöpfung Zuvor haben wir unserem Charakter unser
schnelles Event hinzugefügt. Ein Ereignis, durch das sich unser
Charakter schneller bewegt. Zu diesem Zweck haben wir unserer
Charakterklassenkomponente,
dem
Revenant Frosttor, ein Partikel
hinzugefügt unserer
Charakterklassenkomponente,
dem
Revenant Frosttor, . Und wir haben ein paar
Dinge am Partikel geändert, wir haben die Lebensdauer geändert und wir haben die Größe nach Leben
deaktiviert Es macht also eher den Effekt , dass es sich mit uns bewegt,
dass wir eine Spur hinterlassen Danach haben wir weitergemacht und eine Kette von Ereignissen erstellt Wir haben das Partikel aktiviert, weil wir es in den Details so eingestellt haben, dass es nicht automatisch aktiviert wird. Dann haben wir die Sichtbarkeit auf
true gesetzt, genauso wie wir sie auf false gesetzt haben, weil wir nicht wollen, dass wir zum Beispiel
im letzten Zustand des
Partikels
einen Frame sehen wollen, der von der
vorherigen Aktivierung stammt,
wie er nicht aktiviert wird , der von der
vorherigen Aktivierung stammt,
wie er nicht aktiviert . Jetzt haben wir die
Bewegungsgeschwindigkeit unseres Charakters auf 900 geändert und dann mit einer
verzögerbaren Verzögerung,
was bedeutet, dass wir einen
weiteren Trank trinken und die Zeit hier
neu einstellen können weiteren Trank trinken und die Zeit hier
neu einstellen Wir haben die Geschwindigkeit
nach der Verzögerung wieder auf 600 geändert, was die Sichtbarkeit auf eingestellt Es sollte falsch sein, mein Fehler, und wir haben das Partikel
deaktiviert Danach gingen wir zu
unserem Gameplay-Widget und riefen das Speedy-Event über unsere Charakterreferenz auf
und verknüpften die
Funktion mit dem Rest dem Code, der die Anzeige verwaltet und aus
dem
Inventar entfernt und unsere Widgets
aktualisiert Nun, eine Sache, die mir aufgefallen ist, ist, dass unser Speedy
sogar zwei Ladungen hat, aber nicht so viele. Und basierend auf unserem Code würde
es nicht funktionieren. Wenn wir es zum Beispiel auf Vorrat
setzen würden, könnten wir
mehr Zaubertränke auswählen und sie
endlos verteilen Und wenn wir tatsächlich einen benutzerdefinierten Code erstellen müssen, erstellen müssen der besagt
, dass,
wenn es der Artikel I drei ist,
dann die Bestände anzeigen, dann die Bestände anzeigen, was wir nicht tun werden, wir werden es
einfach so belassen Oder wenn du willst, können
wir auch zu
unserem Speed-Trank in
unseren Dt-Items gehen unserem Speed-Trank in und
die Menge auf eins setzen, und das wäre alles Es ist behoben. Wir
müssen keine Zahl sehen. Und jetzt nehmen wir
die I Four,
das ist der Trank
, der alles zerstören wird Nun, es wird tatsächlich Schaden anrichten, aber der Schaden wird so
groß sein , dass er alles um uns herum
zerstören wird alles um uns herum
zerstören Und mit allem meine ich
nicht die Karte. Wir haben keine Detracti-Karte. Ich meine, alle
Feinde und die Türme zu töten, was wir Höllentor nennen Um das zu tun, brauchen wir
ein weiteres Teilchen. Wählen wir die Karte diese nette Explosion,
bringen wir sie her. Wir haben diese nette Explosion. Sie ist im Grunde genommen für
eine andere Skala, aber wir werden sie vergrößern und sie wird
für unsere Zwecke in Ordnung sein. Also gehen wir
zu unserem Charakter. Und während wir ausgewählt sind, wir eine Kaskade hinzu Ops. Was ist los? Ja, du solltest nicht Anzeige auf Anzeige
tippen. Es funktioniert einfach nicht
und wir werden
es automatisch aktivieren. Lassen wir
die automatische Aktivierung eigentlich stehen. Wir rechnen mit Größe und Größe. Lassen Sie uns die
Skala auf drei ändern. Wir wollen, dass es ein großes Gebiet
betrifft. Lassen Sie uns das tatsächlich
mit einem Schlüssel testen. Was wir also tun werden, lassen Sie uns ein weiteres benutzerdefiniertes Ereignis
erstellen. Diese ganze Bandbreite. Und holen Sie sich unseren Artikel oder diesen,
einen und sagen Sie aktivieren und setzen Sie das auf wahr. Jetzt gehen wir
zu einem Controller, klicken mit der
rechten Maustaste und verwenden, sagen
wir, die Basistastatur. Base Bar, da sind wir. Holen wir uns unsere
Charakterreferenz. Wir haben keine. Egal, geh nach Hause. Charakter von DW in pure Besetzung oder Wut
umwandeln. Und lass uns kompilieren und spielen. Und wir wollen,
dass unser Partikel k die Größe einer Kachel hat. Aber wenn ich die Leertaste drücke. Ja, das sieht aus und über d. Das sieht nach der
Größe aus, die wir wollen. Nun zur Reichweite, zum Schadensbereich, zum
Beispiel, wie
wir Schaden anrichten werden. Wir werden
eine Kollisionskugel verwenden. Also eine Kollisionsangst. Sphärenkollision. Nein. Nein. Ich werde es verstecken,
um das Spiel zu stürzen. Und dann werde ich
den Radius auf, sagen wir, 400 erhöhen . Ja, 400 scheint besser zu sein. 500 scheint besser zu sein. Aber wir können das überprüfen, da wir
die Sichtbarkeit ausgeblendet haben. 500 sind ein
bisschen zu viel. Also lass es uns auf 400 ändern. Lass uns nochmal spielen. Ja,
ich denke, visuell sind
wir innerhalb dieser Grenzen Es spielt jedoch keine Rolle
, wie weit wir vom Kreis entfernt sind, sondern von der Läsion, wir werden überall den
gleichen Schaden anrichten Das scheint also in Ordnung zu sein. Aber wir werden es nicht so
stehen lassen. Wir werden es nicht so verwenden, wie es ist. Wir wissen, dass der
Geschwindigkeitsradius 400 ist. Wir werden ihn auf 0-400 ändern. Wir können
die Entfernung sogar von der Stelle aus erhöhen, an der wir geheizt haben Wir werden diesen Code nicht machen, aber
er kann leicht gemacht werden. Wenn wir eine Kugel haben
, deren Größe zunimmt. Jetzt werden wir ihre Kollision
einstellen. Um einige Dinge zu ignorieren. Wir werden es kundenspezifisch machen. Wir werden Sichtbarkeit,
Kamera, Weltstatik,
nicht Weltdynamik
ignorieren . Physikkörper,
lassen wir den Physikkörper auch aktiviert und zerstörerisch sein. Lassen Sie uns eigentlich
auch die Weltdynamik schließen. Was ist unser Höllentor? Lass mich mich daran erinnern. Wir gehen zu Blueprints. Wir werden zu
Requisiten für Feinde gehen. Wir gehen zum Höllentor und suchen uns eine eigene Kapsel Ist eine Damas-Kollision. Wir gehen zu den
Kollisionsvoreinstellungen. Es ist eine Weltdynamik. Wir wollen also die Weltdynamik nicht
ignorieren. Also werden wir es überlappend
belassen. Was die Physik angeht,
lassen wir die Boxen mit unserem Wutanteil
bewegen Das Einzige, was wir jetzt ändern
müssen, ist von der Abfrage zur Kollision. Fangen wir ohne Kollision an. Und als wir kurz
davor sind, es zu erweitern, sagten
wir, es wäre dann Kollision. Sagen wir Radius, sagen
wir mal eins, nicht Null. Lass es uns auf eins setzen. Und jetzt gehen wir zurück zu
unserem Code und fügen eine Zeitleiste hinzu. Keine Zeitleiste. Tut mir leid. Zuerst müssen wir
die Kollision aktivieren. Jetzt
holen wir uns die Kugel. Lassen wir es bleiben, um Trank Collision zu
bekommen. Und Kollision aktiviert. Und entscheide dich dafür,
nur in Bezug auf die Physik zu variieren. Bei, wir wollen Physik, weil wir beschlossen haben,
die physikalischen Dinge darauf zu legen, und jetzt brauchen wir eine Zeitleiste. Also Zeitleiste. Lass uns reingehen. Lassen Sie uns einen Flow-Track von
0,31 und Null, Null
erstellen 0,31 und Null, Null Natürlich, dass wir den letzten Keyframe
verwenden. Das nächste wäre, zu Event Graph, Update zu
gehen. Lassen Sie uns unsere Kugelkollision, den
Bewertungstopf und den Kugelradius ermitteln. A ist mit dem Update verbunden. Lasst uns mit
dem Alpha unseres neuen Trucks von 12400 lernen. Jetzt, wenn wir fertig sind, werden
wir diese
Kollision wieder haben,
dass die beiden im Grunde keine
Kollision hatten Und wir werden auch den
Kugelradius einstellen. 21. Was passiert nun, wenn unsere
Wuttrank-Kollision kollidiert Lassen Sie uns zu unserem Anfang über die Runde gehen, unserem Wuttopf. Lasst uns etwas Platz schaffen. Nimm das hier. Hinterlassen Sie
einen Kommentar dazu. Lass uns Pot wüten. Lasst uns einen Kommentar zu
diesem Colli schreiben. Und das war's vorerst. Oh. Lass uns unseren
anderen Komp auswählen und fragen, ob es eigentlich nicht der andere Spieler
ist, der andere Schauspieler Denn jetzt werden wir
nach KI suchen. Wir sind uns also sicher, dass KI nur die Kollision für ihren
Körper
hat und sonst nichts. Nun, die Kapselkomponente. Also werden wir nach einem Schlepper
suchen. Wenn der Schauspieler zerrt hat, gehen
wir in die Verzweigung, um das Wenn zu machen, und dann holen
wir
unseren Schauspieler und fügen Schaden zu . Und Schaden werden wir
anwenden, sagen wir zehn. Wir werden
die anderen Knoten nicht verwenden,
und das wäre unsere
Zaubertrankkollision, Zaubertrankkollision. Lassen Sie uns dieses Ereignis nun in
unserer Use-Funktion aufrufen. Oder ist vier. Wir rufen von
oben nach unten auf, die H-Funktion hängt
eigentlich nicht von der Funktion und verbinden sie dann hier drüben. Lassen Sie uns einen Cheat erstellen, indem wir vier von eins
setzen. Gehen wir zu unserem Controller
und löschen unseren Demag. Um ehrlich zu sein, gehen wir zu
unserem Höllentor und gehen zu unserem Schauspieler Tug of Defaults
in Hell Gate Tug,
und lassen Sie uns den Tug und lassen Sie uns Aber wir haben kein
Gesundheitssystem auf unserem Turm. Wir sollten das nächste Mal machen. Lass uns einfach unseren Teil testen. Ein Questtrank. Es explodiert, es verschwindet und alles hat
seinen Sinn Das ist voll. Das
war's für diesen. nächste Mal sehe ich dich
. Auf Wiedersehen.
92. Kampfmusik und Hellgate-Kampfmodus: Hallo und willkommen zum Design-Workshop und zum Kurs
„Real Engine Five“, „
prozedurales Dungeon“, „
Action-Rollenspiel“
und „Kreation Zuvor haben wir die Funktion „
Wuttrank“ hinzugefügt. Wir haben unserem Charakter die Wutkollision
hinzugefügt Dabei handelt es sich um eine Kugel, die
mit einer Zeitleiste
vergrößert wird mit einer Zeitleiste
vergrößert Wir haben die Restmarkierung hinzugefügt und ein Teil, den wir ebenfalls
vergrößert haben, ist toto-aktivierend Ja, es sollte nicht automatisch aktiviert,
kompiliert
werden und dann haben wir
die Funktion abgeschlossen, das Ereignis
Wut, das
unser Partikel aktiviert,
sagt, dass die Kollisionsaktivierung für den Wuttrank aktiviert
wird, verwendet eine Zeitleiste, um
die Kugel zu vergrößern, und dann schalten wir es wieder aus dann die Kugel
kollidiert, wenn sie mit einer Kugel kollidiert, verwenden
wir den Tag E für Feind Wenn der andere
Tag-Akteur die Markierung E hat, verzweigen
wir uns und fügen Schaden zu. Danach gingen wir
zu unserem Gameplay über, nannten dieses Ereignis, wenn
vier Gegenstand vier verwendet wurden, und verknüpften
es mit unserer Funktion, unserer Ereigniskette, aber wir haben den Trank aus dem
Inventar entfernt Danach sind wir zu unserem Haupttor
gegangen und haben das Etikett E angebracht. Aber wir haben
entschieden, dass wir das Höllentor nicht
benutzen können. Wir können
das Höllentor noch nicht testen , weil es keinen Code hat Also fangen wir an, etwas
Code auf dem Haupttor einzugeben. Aber bevor wir das tun, wollen wir noch einmal erklären, was wir hier
haben, was wir geschaffen haben. Wir haben also zwei statische Durcheinander, die den visuellen
Teil des Haupttores repräsentieren, und ein Partikel das auch
den visuellen Teil repräsentiert Und ein Punktlicht, um das
alles ein
bisschen leuchtender zu machen das
alles ein
bisschen leuchtender zu Wir könnten einige
Einstellungen am Punktlicht ändern, lassen Sie uns das in Lumen speichern Sagen wir es auf 150. Sagen wir es zu einer rötlichen Farbe. Sagen wir es zu einem rötlichen
Sendschreiben. Es macht 1011. Mal sehen, wie es
aussieht. Große Veränderung. B. Die Reichweite des riesigen Sortiments. Reichweite 600. Oh, ich habe die Farbe nicht geändert. Was ist hier passiert? Oh, was bin ich? Ich sitze
in einem riesigen Terrassenlicht. Ja, das passiert jetzt nicht. Ja, kannst du diesen Teil löschen? Wenn ich ein Sendschreiben in Licht
ändere, sehe ich oft wie Nein aus. Ja, lassen Sie uns die Dämpfung
auf ein Hundertstel reduzieren
und ein Licht auf etwas anderes einstellen und ein Licht auf etwas 0,1 grün und 0,1 blau. Testen. I. Die Wände
leuchten auch rötlicher. W Ich sehe es auf Dreck, sieht
vielleicht besser aus. Nochmals, wir haben es. Könnte ein
bisschen intensiver sein, aber ich denke, es ist in Ordnung. Gehen wir jetzt zurück zum Höllentor. Lass uns auswählen. Aber
bevor wir mit dem Programmieren beginnen, sollten wir uns daran erinnern,
was wir hier gebaut haben. Wir haben ein statisches Netz mit einem statischen Netz als Kind
und ein Partikelsystem. Das ist unser visueller Teil. Was darstellt, ist der visuelle
Teil des Höllentors. Dann haben wir ein
Punktlicht, dessen Optionen wir ändern sollten , sagen
wir, einen
Generationsradius auf 700 Sagen wir das zu uns und 150 und ändern wir die
Lichtfarbe auf dunkelrötlich Mit einer in der Wand, also bitte. 05, richtig. Und ich denke, das
wäre für das Licht. Und dann haben wir eine Kapsel. Das Licht, wir müssen es rund um den
Begriff etwas leuchtend machen rund um den
Begriff etwas leuchtend In der Kapsel befindet
sich unsere Wärmebox, aber wir können den
Spieler treffen, weil wir beide so
eingestellt haben , dass es keine
Kollision Und die Kapsel hat Kollisionen,
weil sie eine Kapsel ist, und das testen wir. Wir können das Bit optimieren, tut es
aber nicht. Dann haben
wir eine Kugelkollision, aber wir haben ihre Größe noch nicht
erhöht. Bei dieser Kollision
wird
erkannt, ob sich der Spieler
in Schussreichweite befindet oder nicht. Wir optimieren die
Kollision und lassen das Set unwichtig, weil
wir uns überschneiden. Setzen wir es auf Benutzerdefiniert und
ignorieren wir alles außer Home. Lassen Sie uns nun auch
diese beiden statischen Netze so einstellen ,
dass sie keine Schatten werfen Wir wollen nicht, dass sie
Schatten werfen. Und wir haben das Spiel so eingestellt, dass unsere rotierende Bewegung auf den statischen Wellen
aktualisiert, sodass sie sich drehen. Wenn wir nun kompilieren und speichern, beginnen
wir mit unserer Kollision. Als erstes müssen wir den Kugelradius
berechnen. Lassen Sie uns dafür sorgen, dass Hidden
Game nicht wahr ist. Lass uns kompilieren. Lassen Sie uns den Standardradius
auf, sagen wir, 100 setzen. Wie groß das ist. Außerdem sollten
wir auf unseren Spieler zu unserer
Wut Pot Collision gehen, dass das versteckte Spiel
wahr ist, weil ich es nicht gedreht habe. Wir schalten es auf die Größe aus, aber wir haben es
nicht eingeschaltet, um es wieder zu verstecken. Oh, ich werde den Charakter kompilieren
und speichern. Lass uns spielen gehen. 700 scheint
ein bisschen übertrieben. Es erwischt uns nicht, wenn wir spawnen, aber wenn wir uns bewegen, fängt es an Nun, es könnte damit beginnen, dass die
Sicht ein Problem sein wird, aber es wird anfangen, uns anzugreifen Nun, sagen wir es ein
bisschen kleiner. Wir wollen eine Kachel
und vielleicht 600. Kachel plus ein bisschen von einer Kachel. Fast 550,
glaube ich, werden der Schlüssel sein. Also 550 spielen ect. Das scheint nett zu sein. Aber es wird
uns dadurch nicht angreifen. Es ist ein netter Ring.
Lass es uns dabei belassen. Geh zurück. Und lass uns etwas
mit dieser Kollision machen. Wir wählen die
Anfangs-Überlappung. Wir werden
die andere Komponente fragen , nämlich P für unseren Spieler. Ich werde einen Ast anlegen. Stellen Sie die Frage und dann
erstellen wir eine Variable. Nennen wir das Feuer. Und ich werde es
für wahr erklären. Jetzt
brauchen wir natürlich eine Endüberlappung von der Kugel. Und wir werden dasselbe fragen und es wird falsch sein. Als Nächstes sollten
wir unser Material für beide statischen Nachrichten
ändern. Ordnen Sie das Material so
an , dass es das ist, was wir tatsächlich auf dem Boden
haben und es leuchtet
und wieder normal CM-Instanz. Ich glaube
, es ist der dritte. Und wirklich die Hölle. Das werden wir im Spiel sehen. Aber ja, ich denke, das ist es. Wie dem auch sei,
das nächste, was wir tun sollten,
ist zu einer Überschneidung zu
übergehen und
das wieder zur Normalität zu bringen, das wäre der G M. Jetzt wollen wir
auch die Musik ändern. Wenn wir uns im Kampf befinden, sollten
wir
darüber informiert werden. Das ist Kampf o. Also lasst uns zu unserem
Charakter gehen und
eine Audio-Audiokomponente erstellen eine Audio-Audiokomponente Lass uns Eis schneiden. Dafür wollen wir die
Variablenschleife dafür. Diese goldene Lightning-Tiger-Schleife. Wir wollen nicht, dass
es automatisch aktiviert wird, also werden wir die automatische Aktivierung
deaktivieren. Und wir werden ein benutzerdefiniertes Ereignis erstellen. Und wir werden
das Play-Action-Autyp nennen. Action-Musik. Etwas Platz. Nun, die erste Frage
ist, läuft die Musik? So viel darüber. Wenn
es dann nicht läuft, werden
wir einblenden. Lass uns hier Pings benutzen. Lassen Sie uns eine Pad-Dauer von 2 Sekunden und die Startzeit bei zwei Das ist eine Zwei, weil
es ein langes Intro hat und wir ein
bisschen weiter anfangen wollen Jetzt werden wir
eine Gala veranstalten und Durchbruch mit dieser
Verzögerung verbinden Also, wann immer wir kollidieren, und wenn wir tatsächlich angegriffen
werden, wir dieses Ereignis ausrufen Wenn es
läuft, wird es einfach erneut ausgelöst, zum unsere Abklingzeit, um den
Kampf zu beenden Stellen wir diese beiden auf 15 Sekunden ein. Und ich werde
diese beiden Namen umbenennen: N braucht ein N, vielleicht ein großes A. Oh, was machen wir nach der Verzögerung? Wir werden unseren
Actionfilm ausblenden. Action-Musik. Es war ein Film, der so einfach war. Es wäre toll, nicht wahr? Ich werde
hier zwei hinzufügen, ohne Dauer. Ich werde kompilieren und speichern, und das ist so gut wie fertig. Oh, lass uns
zu unserem Haupttor kommen. Und jetzt brauchen wir einen Hinweis auf den Charakter
, den wir haben. Es ist der andere Schauspieler hier drüben. Ich werde zum Pop-Charakter. In reine Besetzung umgewandelt. Ich werde Action-Musik spielen. Ich werde das hier verbinden. Jetzt können wir testen, wann wir
in Reichweite sind und wann nicht. Oh, lass uns
das überprüfen. Wir haben keine Musik. Wir suchen das
Höllentor hier drüben. Oben drauf. Es ist in Ordnung. Es
spielt unsere Musik. Testen wir es jetzt
etwas schneller, denn 15 Sekunden, ich will jetzt nicht warten, und das wäre Zeitverschwendung. Gehen wir also zu unserem Player. Lassen Sie uns den gesetzlichen Wert auf sagen
wir 3 Sekunden einstellen. T. Es gibt kein Höllentor. Ich spann mich auf andere Weise. Einer da drüben. Richtig? Das Material hat sich geändert. Lass uns die Musik überprüfen. Eins, zwei, drei, aufgehört.
Lass uns rein und raus gehen. Ständig. Jep. Also, unser
Mechaniker arbeitet Und ich denke, das ist ein guter
Haltepunkt für diesen. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen.
93. Hellgate-Gesundheitssystem und Tod: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir
die Ereigniskette erstellt, um zu
überprüfen, ob sich unser Charakter
in Reichweite unseres Turms befindet Nein, wir haben geprüft, ob es die Komponente P
hat, wir prüfen, ob es sich um eine
Kapselkollision unseres Charakters handelt, und wir haben eine Variable
darauf gesetzt, die wir Feuer genannt haben Dann haben wir das Material durch
ein Material ersetzt, das
von leuchtend zu normal wechselt , und dann haben wir das wieder rückgängig gemacht Und wir haben die Spielmechanik für
Action-Musik
in unserem Charakter eingeführt, die mit
einem Fading zu spielen beginnt oder
ausgeblendet wird, wenn eine Zeit Setzen wir das auf 15 zurück
. Könnte lang sein. Setzen wir es zurück auf zehn. Und dann werden wir ausgeblendet, da
10 Sekunden vergangen sind und wir nicht getroffen wurden, also wird es ausgeblendet Lassen Sie uns nun mit unserem
Gesundheitssystem Health Gates weitermachen. Wie wir für den
Charakter verwenden, ist jeder Schaden angesagt. Lassen Sie uns das kommentieren. Eine Musik. Wie wir jedes
Schadensereignis für unseren Charakter verwenden, werden
wir auch für unseren Turm verwenden, da wir
Schaden zufügen, wenn wir den Trank
verwenden und wenn
wir anfangen zu schießen Ein Schadensereignis, und
wir benötigen
natürlich zwei Variablen, nämlich die aktuelle
Gesundheit und die Mx-Gesundheit, sind ganze Zahlen Keine ganzen Zahlen. Ich meinte Floats Dieser Dezimalpunkt ist wichtig und erleichtert
die Divisionen Jedes erlittene Schadensereignis. Wir müssen die Schäden
aus unserer aktuellen Gesundheit entfernen, nicht aus unserem M. Wir
werden ein Minus machen Wir werden uns
verbinden. Das hier und das hier, weil wir von
unserer aktuellen
Gesundheit etwas abziehen Ich werde die Ladung zusammenpacken. Ich werde
unseren aktuellen Gesundheitszustand einstellen und die Klemme
wäre natürlich minimal auf Mx. Bei Spielbeginn. Stellen wir MC ein. Lassen Sie uns aktuell auf Mx setzen. Lassen Sie uns einen Wert für den MC-Zustand festlegen. Sagen wir mal fünf Gesundheit.
Wir müssen kompilieren. Von Gesundheit. Als Nächstes. Wir werden nur eine Frage stellen. Gehen wir zurück zu unserem Schaden. Wir werden einen Zweig anlegen
und
prüfen, ob dieser gleich
oder kleiner oder gleich Null ist . Weil wir unsere Wut haben und unser Medienangriff
mehr als einen Schaden anrichten wird. Unser Schießen wird einen Schaden anrichten. Wir wollen auch prüfen, ob
weniger als Null vorliegen,
auch wenn wir klemmen, was das überflüssig macht. Aber wie dem auch sei, wenn
wir nicht klemmen, sollten wir zuerst A machen. Wenn wir nicht null Gesundheit haben, tm. Nein, wir werden es einmal tun. Nein, tut mir leid, ich komme voran. Das werden all unsere
Feinde sein, die Hunde. Bevor wir es einmal tun,
denn wir machen eins. Machen wir etwas kniffliges
mit unserem Helgate. Wir werden
die Größe unserer Maschen
reduzieren Es scheint also, dass es immer
kleiner wird , wenn
wir es angreifen Wir werden uns für
diese beiden Schlamassel entscheiden. Eigentlich brauchen wir nur das
übergeordnete, das ist Mesh One. Wir löschen
das andere und wir werden alle auf drei D D setzen
, weil
wir mit 0,5 beginnen. Lassen Sie uns das tatsächlich
als Variable speichern und mit dem Spielen beginnen. Als Wandwaage. Wir werden für
diese Variable werben. Wir werden sie Original nennen. Hier. Nun, was wir für
das Set Healing World tun werden, werden
wir larpieren Warum lassen wir,
weil wir Original
durchschauen werden, was in unserem Fall B wäre, und ein Fünftel davon Wir werden uns
teilen. Wir werden daraus eine Ganzzahl machen. Wir werden es durch 555 teilen. O Alpha wäre der Prozentsatz unserer
Gesundheit und unseres aktuellen Gesundheitszustands. Wir werden diese beiden teilen. Da wir also
mit dem vollen Prozentsatz beginnen, würde
das von B nach A gehen, weil jeder Schaden
den Alphawert reduziert. Und jedes Mal
wollen wir ein Fünftel
der ursprünglichen Skala ändern. Und die, die
werden wir
für später verlassen , wenn wir etwas KI haben. Nun, was machen wir wenn wir das erreicht haben,
um ein maßgeschneidertes Event zu erstellen. Wir werden das Tod nennen und wir werden es von hier aus
nennen. Lasst uns jetzt den Tod fühlen. Was wir machen werden, ist
auf einem Messgerät vor Ort. Und der Standort wäre
unsere Lücke am Standort P. Das P-Meter wäre eine Explosion. Wir haben also die P-Explosion und es wird
eine B-Skala nach oben sein, fünf. Bleiben wir bei der automatischen Zerstörung
und automatischen Aktivierung. Als Nächstes müssen
wir unseren Fliesenboden
holen und sein Material
neu einstellen, nicht sein Material. Wenn wir zu unserer Fliese gehen, wenn wir ein Tor haben, haben
wir ein Alter auf dem Boden Wir wollen den Sage
verschwinden lassen. Dazu benötigen wir
eine Kachelreferenz. Also werden
wir an unserem Haupteingang eine
Tile-Variable erstellen, um sie Pile zu nennen. Es wird vom Typ P-Kachel sein. Ich werde eine
Objektreferenz kompilieren und speichern, und wir werden in unser Labyrinth
gehen, das wir erzeugen. W ist unser Hier ist er, der Labyrinth-Generator. Wenn wir die
Vordertore an unseren Requisiten spawnen, Besitzer, das ist ja,
dieses, das komplexe Wir müssen die
Variableninstanz
editierbar machen und sie beim Spawnen verfügbar machen. Also, das ist nicht unser Labyrinth,
die Requisite, in der wir
spawnen, Habe ich das kompiliert, als wir das
Höllentor spawnen? Ich habe nicht kompiliert. Wir
wollen das aktualisieren, und jetzt haben wir unsere Kachel. Also, was
verbindest du für die Kachel? Nun. Wir haben es hier drüben, dass wir die Koordinaten
nehmen. Also werde ich das hier
verbinden. Und wir werden
kompilieren und speichern, und jetzt haben wir unseren
Verweis auf unsere Kachel. Also holen wir uns unsere Kachel, die Kachel, wir
bekommen den Boden und Material oder Element Null,
denn auf Element Null haben
wir das C und wir
werden es auf leer setzen. Es wären weitere
Maßnahmen in Bezug auf die KI erforderlich. Aber wenn wir unsere KI haben, werden
wir fertig sein. Wenn wir das T angreifen,
setzt die KI
es im Grunde die KI automatisch auf Angriff, sodass sie nach dem Spieler sucht und den
Spieler angreift. Und wenn der Tod eintritt, werden wir
es quasi freischalten. Wir werden ein Verhalten erzeugen,
dass sie weglaufen, und vielleicht ändern sie
dich
irgendwann zurück und oder sie fangen an, zufällig irgendwo zu
patrouillieren, aber wir werden sehen, dass wir
seit unserem Tod Wir müssen tatsächlich
auch Schauspieler vernichten. Denn wenn wir den Schauspieler nicht
zerstören
, ist unser Tor immer
noch da. Jetzt kompilieren und speichern. Wir haben einen Schadensbereich
, der dieses Tor zerstören kann. Lass es uns testen. Bum.
Ja, funktioniert. Ja, großartig. Ich denke, das
wird für diesen sein. Ich sehe dich das nächste Mal. Tschüss.
94. Hellgate Bullet-Animations- und Targeting-System: Hallo und willkommen zum Game
Design Workshop im Rahmen der Engine Five Procedural Dungeon Action Pz Zuvor waren wir mit
unserer Hell Gates Health-Mechanik fertig unserer Hell Gates Health-Mechanik Wir haben das Ereignis „Jeder Schaden“ hinzugefügt und zwei Variablen erstellt MX Health und Carrier Health Wir haben das Verfahren befolgt, um Zustand
abzustrahieren und zu überprüfen,
ob wir tot sind oder nicht. Wenn wir tot sind, starten wir
unser benutzerdefiniertes Death-Event, das einen E-Meter erzeugt, das Material des
Bodens auf Null bis Null
setzt, das CG-Material, und
dann unseren Schauspieler zerstört Wenn wir nicht tot sind,
reduzieren wir unsere Größe um ein Fünftel
, was wir nicht überprüfen können,
weil
wir es eigentlich nicht überprüfen können, wenn
wir den Schaden
an unserem Erbteil ändern , wenn
wir den Schaden
an unserem Erbteil Wenn ich also den Schaden mit beziffere,
wie viel Gesundheit haben wir? Wir haben fünf Lebenspunkte. Wir
machen einen Schaden daraus und setzen
die Verzögerung auf 2 Sekunden. Wir werden das
ein bisschen endlos machen. Aber wir können
die Spielzeit jederzeit unterbrechen , wann immer wir 2 Sekunden dafür haben
wollen. Lasst uns ein Höllentor finden. Es gibt kein Höllentor. Es ist gut, dass es manchmal ohne Höllentor
anfängt. Eine Portion Salbei auspressen. Holen Sie sich Nein, tut es nicht. Weil das nicht ratsam ist. Lassen Sie uns vorübergehend für diese
Verbel werben. Nachdem wir nach der Filiale gesucht haben. Sonst steht da nichts. Ich gehe hier so hin. R. Lass uns 12, drei überprüfen. Ja, es wird immer kleiner
und enger. Also funktioniert es. Kehren wir zu unserem Charakter
zurück. Lassen Sie uns diese Variable löschen.
Verbinden wir das mit. Lass uns das verzögern. Lassen Sie uns die Variable
auch aus Variablen zusammensetzen, kompilieren und speichern und
zurück zu unserem He-Gate. Machen wir jetzt weiter mit dem Haupttor. Jetzt fange ich an zu spielen. Wir werden ein paar Sachen erledigen
müssen. Aber zuerst müssen wir die Kugel
erzeugen , die das L-Gate
hervorbringt. Wir gehen zu Blueprints, wir werden einen neuen
Ordner erstellen. Nennen wir das Labor B. Geben Sie es ein und erstellen Sie
einen neuen Blueprint. Geben wir Schauspieler ein, dann BP
, L Gate Bullet. Lass es uns jetzt öffnen.
Lass es uns hier zur Sprache bringen. Dave, das Erste, was wir hinzufügen
müssen, ist das Artikelsystem. Oh. Gehen wir zum Inhalt, suchen
wir nach Schiene. Was wir für diesen Hauptweg
verwenden werden. Lassen Sie uns das tatsächlich duplizieren. Wir haben also den ersten Primärweg. Lassen Sie uns diesen
ersten Primärpfad eingeben. Lassen Sie uns die
Farbskala ändern. Gehen wir zu Ionen, konstanten
Kurvenpunkten, und ändern wir alles etwas gelbliches, rötliches Machen wir es zu einem Sendschreiben. Das ist eine Kopie von diesem , Kopieren und Einfügen möglich. Was ist eigentlich, wenn wir
es in eine Vektorkonstante ändern und es rötlich machen ist besser,
von allen Tangenten zur
Vektorkonstante zu wechseln , es
wird ein bisschen
konstanter sein , es wird
sich nicht viel ändern, aber es wird in Ordnung sein Und 11 hier. Und lass uns die ursprüngliche
Farbe ändern oder etwas Rötliches. 55 ein bisschen. R. Ja, das ist gut. Wir werden sparen. Wenn
wir das schließen, kehren wir
zu unserer Hell-Gate-Kugel zurück und wir fügen
Kaskade hinzu, und hier ist es Jetzt brauchen wir eine
Kollisionskollision, hier brauchen wir. Vor der Kollision. Lass uns die Party ein
bisschen runterholen. S. Collision sollte
kein Kind des Teilchens sein. Pro Kollision sollte
ein untergeordnetes Element der Standardfäule sein. Das ist in Ordnung. Ich glaube, geh hier hin. Lass es uns in Bewegung bringen. Nein, wir müssen zuerst ein
bisschen von der Kugel optimieren. Gehen wir zu den Kollisionen
der Kugel. Schauen wir uns das Atom an
und
ignorieren alles außer Teichen. Kompilieren und speichern Lass uns jetzt loslegen, um es in Bewegung zu bringen. Was wir brauchen, ist ein Ziel, denn wir
werden einen Zeitplan von
unserer Position zum Ziel haben,
das wir
im Tempo des Schießens oder
Reisens haben werden. Und wir ermitteln den Standort
unseres Schauspielers. Aber der Schauspieler, wir
wollen nicht, dass es wir selbst sind. Wir wollen die Pfote des Spielers, also werden wir den Spieler dazu bringen Verbindung herzustellen, um
den Standort des Schauspielers
zu ermitteln Und was wir
erstellen werden, ist eine Kiste
um den Spieler herum Bei einigen Schüssen
wird der
Spieler zum Beispiel mit Absicht verfehlt. Ich schieße nach links und rechts, einige davon
gehen an den Spieler, aber die meisten
gehen nach links und rechts. Oh, wir machen
ein Minus, sagen wir 100, sagen
wir, wir
zielen auf den Boden. Und dann bekommen
wir
einen zufälligen Punkt in der Bounding Box Ein Bereich um unseren Spieler herum. Stellen wir das auf 200 201 und wir werden eine Auswahl treffen. Denn wie gesagt, einige
davon würden
an unseren Spieler gehen. Und wir werden das
auf den Schauplatz des Schauspielers setzen. Hier werden wir nach dem Zufallsprinzip ziehen, einige von ihnen
zielen auf unseren Spieler, andere
zielen woanders, und das wird unser Ziel sein. Also werde ich es auf
variabel hochstufen und es Target nennen. Ich werde
das bei Spielbeginn verbinden. Die anderen beiden brauchen wir nicht,
ich werde sie löschen. Ich verstehe das etwas niedriger. Und jetzt brauchen wir den
Originalschauplatz des Schauspielers. Also werden wir den
Standort des Schauspielers ermitteln. Ich werde es an einem
variablen Originalort bewerben. Und jetzt brauchen wir die
Zeitleiste, also fügen Sie eine Zeitleiste hinzu. Zu diesem Zeitpunkt werden
wir etwas anderes machen. Wir werden
zwei Strömungsbahnen verwenden,
eine davon, um die Entfernung zu
kontrollieren, und die andere, um
die Höhe unseres Projektils zu kontrollieren die Höhe unseres Projektils Geben wir also die Zeitleiste ein. Fügen wir zwei Flow-Tracks hinzu. Wir könnten es mit
einer Vektorspur machen, aber lassen Sie uns einfach
zwei Flowtracks verwenden. Ich denke, es ist klarer
, was die einzelnen tun, und es ist einfacher, sie einzustellen. Aber die erste
wäre 00,0 und der Wert Null, und die zweite wäre wie lange sollte
sich unsere
Kugel bewegen? Sagen wir irgendwo hier, egal ob es 0,85 ist Vielleicht ist das zu viel 0,8. Nullpunkt 0,8. Ich
möchte fast 75 erreichen, also hört sich 0,8 gut an, und Wert eins. Lass uns das
hier einbauen. Für den nächsten Titel fügen
wir die Punkte hinzu. Der erste
wäre Null, Null. Die zweite
wäre zur Halbzeit, nennen
wir die Halbzeit
von 0,8 0,4 0,4. Das wäre einer. Und der letzte Punkt
wäre 0,8 bei Wert Null. Füllen wir das jetzt aus. Was ich sagen wollte, ist, dass
dieser die Entfernung vom
Ursprung zum Spieler
kontrolliert,
und dieser wird
nur die Z-Achse von der Höhe
des Ursprungs
bis zur ursprünglichen Höhe kontrollieren Z-Achse von der . Gehen wir jetzt hierher. Was wir
machen werden, ist die Location. Wir werden Vector vermieten. Wir werden den
ursprünglichen Standort mit A verbinden und wir werden unser Ziel erreichen. Und wir werden die Höhe
hinzufügen, die wir
von unserem zweiten Gleis aus steuern werden. Ich werde es tun. Wir werden
das Gleis zwei hier verbinden, wir werden
das Gleis eins hier verbinden, wir werden das hier
verbinden. Und für die Werte addieren wir
einfach 100 zu Z. Wenn wir mit
unserer Zeitleiste fertig sind, werden
wir ein
Messgerät am Standort aufstellen. Y t. Das ist Y. Auf einem
Messgerät am Standort. Wir werden uns für
die Partikelexplosion entscheiden. Wir werden es so skalieren,
dass es tatsächlich 2,5 — 0,55 ist. Was den Standort angeht,
werden wir unser Ziel erreichen. Und dann machen wir diesen Auftritt. Nun, es besteht
die Möglichkeit , dass wir vorher
zerstört werden
, also wenn wir mit dem Spieler
kollidieren Nein, lass uns das machen. Machen wir unsere Kugelkollision,
fangen wir an, das
Start-Over-Lap-Event zu starten. Fragen wir die Komponente. Wenn die Komponente den Tack P hat, fügen
wir der anderen Komponente, dem Spieler,
Schaden zu Ich werde, sagen
wir p, einen Schaden anbringen und dann
das Messgerät an Ort und Stelle kopieren Oder hier. Wir werden das Ziel nicht benutzen. Wir werden vom anderen Schauspieler
aus am Standort des Schauspielers sein. Wirklich, wir können das
Sweep-Ergebnis verwenden und es aufschlüsseln, und wir können den Standort verwenden, den Standort
des Aufprallpunkts So können wir es genau
dort erzeugen, wo wir wollen, weil der andere Akteur
das Zentrum unseres Oh, wir werden den Ort
des Einschlags verwenden und dann werden wir
den Schauspieler zerstören, und das ist uns egal weil der Schauspieler
bereits zerstört ist Ich denke, das ist ein guter
Haltepunkt für diesen. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen
95. Hellgate Bullet-Shooting und Licht SFX: Hallo und willkommen zum Design-Workshop und zum
Kurs „Real Engine Five“, „
prozedurales Dungeon“, „
Action-Rollenspiel“
und Action-Rollenspiel Ernsthaft, wir sind
mit unserer Hell-Gate-Kugel fertig. Wir haben einen Partikeleffekt hinzugefügt , bei dem wir einige
Einstellungen geändert haben. Im Grunde genommen ändert sich
die
Farbe im Laufe der Lebensdauer, was wir zu einer Konstante gemacht haben, und dann haben wir
auch die ursprüngliche Größe geändert. Als Nächstes erstellten wir
unseren Blueprint Gate Bullet
, bei dem wir eine Schauspielerklasse verwendeten, und wir fügten diese Partikel-
und eine Sphärenkollision hinzu, die wir als Akt verwenden Wenn wir
mit dem Spieler kollidieren, erhalten
wir das Sweep-Ergebnis dieser Kollision, wir erhalten den genauen
Einschlagspunkt und den Spawn-Pimter, und wir haben dem Spieler einen
Schaden zugefügt,
0,1 Schaden, und dann haben wir den Akteur 0,1 Schaden, und dann Die Art und Weise, wie sich dieser Akteur bewegt,
ist, dass
wir zu Beginn des Spiels einen Zielort
über unseren Spielerstandort plus
einen zufälligen Punkt an
den Füßen des Charakters speichern über unseren Spielerstandort plus einen zufälligen Punkt den Füßen des Und dann speichern wir den
ursprünglichen Standort und verwenden eine Zeitleiste
mit einem sehr schnellen
Punkt von Null bis 0,8, um das Ziel
zu erreichen, und wir haben die
verschiedenen Serien verwendet, wir haben zwei verschiedene
Flowtracks verwendet, eine davon, um
die Entfernung zu ändern und die andere
, um die Höhe zu kontrollieren. Wir verwenden die festgelegte
Position des Schauspielers, um den Schauspieler zu bewegen. Wenn wir dann unser Ziel nicht
erreicht
haben, haben wir den
Spieler nicht getroffen, sondern wir haben unser Ziel erreicht. Wir verwenden die Position der Spawnanzeige
, um eine Explosion auszulösen, und dann haben wir den Schauspieler zerstört Fahren wir nun mit unserem
Höllentor und dem
Event „Start Play“ fort, um mit der Entwicklung
der Schießmechanik zu beginnen Also werden wir wieder
ein Zeitereignis verwenden. Und es wird alle 0,3 Sekunden
suchen. Der schnelle Schießmechanismus. Ich werde
ein benutzerdefiniertes Ereignis erstellen. Nennen wir es Pflicht. Lassen Sie uns anhand eines Zweigs entscheiden, wann tatsächlich
geschossen wird oder nicht. Und wir haben den Zustand, wir nennen es Feuer. Wir werden diese
Bedingung hier anwenden. Wir wollen
aber nicht immer schießen. Dann können wir schießen,
wenn der Spieler in Reichweite ist, aber ist der Spieler
in Sichtlinie? Das ist auch eine Frage. Machen
wir eine Linienverfolgung? Per Kanal oder Tamela-Kanal. Und wir werden den Standort des
Schauspielers für Kunst nutzen. Eigentlich werden
wir das Gegenteil tun. Wir werden die Position
oder das Ende
des Schauspielers verwenden und nicht nur
die Position des Schauspielers,
die statische
Mesh-Position, weil sie
etwas höher ist als die Position, an
der der Blueprint-Löffel Wir fangen hier an. Wir enden dort, wir
fangen nicht an, wir werden uns
Sorgen um den Standort machen , weil es eine Komponente ist. Wir brauchen die Wortposition
der statischen Metapher? Ich werde aufstehen
und vom Teich abholen,
wir werden den Standort ermitteln,
weil der Teich ein Schauspieler ist Ich werde
das von Anfang an benutzen. Aber wir
checken tatsächlich vom Spieler bis zum Turm, ist das sichtbar? Können wir etwas treffen? S. Werden
wir das überprüfen? Das ist die Komponente, die wir erhitzen, machen wir das kaputt. Das Ergebnis ist ein Treffer. Das ist die Komponente, mit der wir den Schauspieler
heizen, also haben wir unseren Turm beheizt? Das ist nur möglich, wenn wir etwas
erhitzt haben. Erste Frage, sind wir
tatsächlich auf etwas gestoßen? Wenn wir etwas erhitzen,
hat es dann das G E? Wenn ja,
gehen wir alle in die Klasse. Wir werden eine Split-Transformation durchführen. Wir werden das statische Maß noch einmal abrufen
. Ort des Wortes. Sponse etwas höher, und jetzt müssen wir Sound bezahlen Nun, was den Sound angeht, wir
haben keinen Sound dafür, aber es gibt einen Sound in Unreal , den ich für diesen Einsatz
okay finde, nicht den besten Wir werden zum Inhalt übergehen. Und wie Sie sehen können, gibt
es keinen Engine-Inhalt. Wir gehen zu den Einstellungen und
wählen keinen Engine-Inhalt aus. Wir werden einen neuen
Ordner haben, der Engine heißt. Es wird nicht empfohlen, diesen Inhalt
zu ändern oder
etwas daran zu tun diesen Inhalt
zu ändern oder
etwas daran wenn Sie nicht
genau wissen, was Sie tun. Weil es
den Motor durcheinander bringen kann, aber wir können kein
Geräusch von dort gebrauchen. Und wir werden
das Tischfenster benutzen. Der nahe dran. Ja, der hier. Gesprächsfenster schließen. Und jetzt haben wir unser Feuer bereit. Lass uns kompilieren und speichern. Ich habe keinen
Kurs gewählt, P Bullet. O hier, wir wählen einen Schauspieler, nämlich P H Gate Bullet. Lassen Sie uns kompilieren und speichern. Weg. Die Boxen sind riesig. Und es erschießt uns nicht. Warum erschießt es uns nicht? Gehen wir zu Ich kann diese
Musik ausstehen. Viel zum Testen. Wir gehen
zu unserem Haupttor. Jetzt haben wir ein paar Eingangstore. Nehmen wir an, wir hatten mehr. Wir können das tun, indem
wir diesen auswählen. Lassen Sie uns ablehnen, diesen auswählen und wir können hier hingehen
und sehen, dass er ausgewählt ist. Mal sehen, was es läuft. Es trifft auf etwas. Wir können nicht E, hat diese
Klasse ein Etikett? Sie muss einen AT-Tag haben. Ja. Weil unser Paar es auch nicht tut. Lassen Sie uns diesen Trace debuggen , um den Spieler zu Bringen wir den Spieler
neben ein Höllentor. Wir treffen den Spieler. Das ist eine Weile
, weil es okay sein kann. Das Gegenteil
hat also nicht wirklich funktioniert. Also werden wir das Gegenteil
tun. Wir werden wie normale Menschen mit
dem Netz beginnen. Wir werden nur zeigen,
dass das Gegenteil
normalerweise auch in Ordnung ist .
Diesmal ist es das nicht. Wir
ändern den Schauspieler und lassen Sie uns nachholen .
Jetzt trifft es den Spieler,
aber es wird trotzdem nicht geschossen. Lass uns nachschauen. Was? Da wir nach dem Schauspieler
suchen, müssen
wir nach der Komponente als T
suchen .
Wir
benötigen
einen Wir
benötigen Ton, damit wir überprüfen können, ob der
Aufnahmeton abgespielt wird. Wir haben Feuer gespuckt. Richtig, lassen Sie uns das
ganze Debugging entfernen, damit wir es
etwas klarer sehen können .
Gehen wir zur Sphäre Lasst uns im Spiel verstecken. Zwei. Was wir sonst noch brauchen, um
Debug-Leitungen auszuschalten. Und
lassen Sie uns einfach so zu unserem Charakter gehen und eine Audiokomponente
hinzufügen Lass uns dieses Ambiente schaffen. Wählen wir es so, dass es ein
gutes Ambiente hat. Ich glaube, das ist es. Ich bin mir nicht sicher. Ja, das ist es. Ambience, das Q, nicht der Sound, und es wird automatisch
aktiviert, um es zu aktivieren. Lass uns nachsehen. Ein Ambient P.
Wir haben kein Höllentor. Ordnung. Hab Speed Fire. Es bleibt ein bisschen auf dem
Boden
und dann explodiert es Vielleicht könnten wir einen Code
dafür eingeben, aber lass uns das nicht tun. In Ordnung. Als Nächstes sollten wir das tun. Mir fällt auf, dass die
Beleuchtung etwas
statisch ist , diese leichten Schwankungen. Das Viewport wurde verschoben. Dieses Licht hier ist
ein bisschen statisch, und wir haben einen Code für
Licht, damit es flackert Es ist in unseren Fackeln. Gehen wir zu unseren Fackeln. Die Polizei holt die Fackel. Ich werde
diesen Code hier benutzen. Geh zurück zu unserem
Höllentor. Die Kugel. Ich schließe die Kugel, wir werden sie
nicht mehr brauchen. Hell Gate und das hier hinstellen. Ich werde eine Sequenz erstellen. Ich setze es vor das Zeitereignis, also können wir diese
Aktionen einfach nacheinander ausführen. Stimmt. Jetzt gehe ich
zur Ampel. Ich werde die Farbe holen. Ich gehe zu A, Paste. Ich werde es einfügen und ein bisschen
ändern, richtig. Und vielleicht mehr Orange hier, und das Licht
wird von der Dichte Wir haben 100 150, sagen wir zufällig. Nein, im Update kann ich zufällig
wählen, das wird d sein.
Der Bereich wird 700-800 sein Machen wir es größer und lassen Sie uns einige Punkte entfernen Lassen Sie uns das behalten.
Ja, das ist in Ordnung. Und lass uns nachschauen. Es gibt kein Tor. Wir werden einen haben. Und ja, momentan ist das Licht natürlich viel
besser. Es macht etwas. Lesen. Ich denke, das
ist es für diesen. Ich sehe
dich beim nächsten Mal. Tschüss.
96. Benutzerdefinierte Maus-Widgets und Revenant Mesh: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor waren wir
mit unserem Höllentor fertig. Wir haben unser Schießereignis abgeschlossen, bei dem eine festgelegte Zeit für jedes
Ereignis verwendet wird und
das Schießereignis ausgelöst wird. Dann fragen wir, ob
wir schießen können. Wenn wir es finden können, werfen
wir eine Spurlinie vom
statischen Netz zum Spieler. Das Gegenteil hat bei uns nicht
wirklich funktioniert. Und dann fragen wir,
ob wir etwas erhitzt haben. Nun, wenn es stimmt, wenn wir etwas erhitzt haben, dann fragen
wir , ob das der Spieler
ist. Und wenn ja,
erzeugen wir eine Hell-Gate-Kugel und wir spielen ein Geräusch ab Wir haben auch geschaffen, was wir nicht geschaffen haben. Wir haben den
Code unserer Fackeln kopiert und eingefügt, was das Leben zum Zittern bringt Wir haben den Zeitplan ein
bisschen geändert, und wir haben die Werte ein
bisschen geändert Also, unser Licht
von unserem Höllentor im Grunde
auch eine Animation. Oh, das werden wir speichern. Ich denke, es ist an der Zeit, mehr
spielerbezogene Dinge zu
machen. Oh, fangen wir mit der Maus an. Wir werden zwei Widgets
erstellen. Eines für sie,
damit sie mit der Maus über Feinde fahren können, und eines, damit sie normal sind. Also
rufen wir das Benutzer-Widget auf. Wir werden
Widget-Blueprint,
Benutzer-Widget und W G normale Maus auswählen Benutzer-Widget und W G normale Maus Ich werde es kopieren, einfügen
und es W G mouse nennen. Jetzt gehen wir zu unseren Projekteinstellungen
und suchen oder den Cursor. Und hier haben wir unsere
Software-Cursor, die wir
mit einigen Widgets überschreiben können Wir werden zwei davon hinzufügen. Eigentlich können
wir keinen zweiten hinzufügen weil dieser einzigartig sein muss. Aber der erste
wäre der Standard und der zweite
wäre ihr Kreuz. Wie Sie sehen können,
wählen wir aus der Setliste. Standard wählen
wir jetzt die normale W G-Maus, für das Fadenkreuz wählen
wir die W G. Attack-Maus, glaube ich Angriffsmaus. Hier ist es. Wir werden
die Projekteinstellungen schließen. Wir brauchen sie nicht mehr. Sie speichern automatisch den Moment, in dem
wir einige Änderungen vornehmen, und lassen Sie uns
unsere beiden Widgets öffnen. Wir öffnen die normale
Maus und bringen sie hierher. Lass uns auch die
Angriffsmaus öffnen. Für die normale Maus platzieren
wir eine Leinwand. Und wir werden ein Bild verwenden. Und wir gehen zu unserem
Magier und setzen seine Größe auf 90. Wir möchten, dass es eine Box ist, und für den Pinsel Ema wählen
wir UI-Maus. Es sollte eine UI-Maus geben. Es scheint, wir haben
genug gespielt und es ist erschienen. Also lass uns die UI-Maus wählen. Jetzt könnten wir einen
komplexen Code erstellen und ihn rot machen. Aber was wir
tun werden, ist die Leinwand zu öffnen, zu unserer
Angriffsmaus
zurückzukehren und sie hier einzufügen und die Maus auszuwählen
und zu ihrem Farbton zu wechseln Wir werden
es hellrot machen. Und jetzt haben wir eine rote Maus
zum Anvisieren, anstatt irgendeinen Code zu
erstellen. Nein. Im Grunde genommen, das ist
es von diesem Teil. Was programmiert werden muss,
ist der Teil, der
die Farbe ändert, wenn wir
über einem Feind schweben Aber dafür müssen wir zuerst einen Code
auf dem
Player-Controller ändern zuerst einen Code
auf dem
Player-Controller Also lass uns das noch nicht tun. Was wir tun sollten,
ist endlich zu
unserem Charakter überzugehen und das Modell zu ändern. In unserem Charakter von oben
nach unten gehen
wir also zum Viewport Wir vergrößern
einen Charakter und
wählen unser Mesh Jetzt werden wir nicht
zu detailliert
auf Animationen und
Meshes eingehen Animationen und , weil wir nur dafür sorgen
werden, dass es für uns funktioniert Es wird
den Paragon-Charakter verwenden
, der
für etwas ganz anderes bestimmt ist für etwas ganz anderes Also werden wir einfach
dafür sorgen, dass der
Paragon-Charakter
für unsere Fähigkeiten und unsere
gewünschten Fähigkeiten und unser Gameplay funktioniert für unsere Fähigkeiten und unsere
gewünschten Fähigkeiten und unser Gameplay Für unser Mesh werden
wir unseren Wiedergänger auswählen. Und wie Sie sehen können, befindet er sich in
einer sehr seltsamen Lage. Das liegt daran, dass wir
das My Set of Money C verwenden, das wir auf die Blaupause von Reverend My ändern müssen Und wie Sie sehen können, hat sich
eindeutig alles geändert. Wenn wir nun kompilieren
und auf Play drücken, werden
wir ein Problem mit
dem Umsatzcharakter feststellen. Öffnen wir den
Umsatzcharakter. Hier gibt es einen Code, der heutzutage veraltet
ist. So wie es aussieht existiert das in
den Projekteinstellungen
nicht mehr. Also werden wir diese
Ereignisse löschen, die ein Problem darstellen. Und wir werden
diesen Blueprint kompilieren und speichern
und dann auf Play drücken Jetzt haben wir also unseren
Revenant-Charakter in unserem Spiel. Aber unsere Waffe wird
ständig erweitert
, was nicht sehr
nett ist . Also lass uns das reparieren. Ich werde auch den Ton
leiser weil wir
viel testen werden. Oh, lass uns unseren Entwurf für die
Charakteranimation öffnen. Wir werden den
Revenant Skeletal Mesh Act eröffnen weil die Persona Sie haben alle
Stubs hier drüben, denen wir zum Animations-Blueprint oder
zur Level-Bühnenmontage oder
zum Skelett-Mese
gehen können Animations-Blueprint oder
zur Level-Bühnenmontage oder
zum Skelett-Mese von
denen wir zum Animations-Blueprint oder
zur Level-Bühnenmontage oder
zum Skelett-Mese
gehen können. Wir können zu jeder Kategorie gehen. Ich gehe jetzt
zur Blaupause,
aber ich will nicht, dass
BP Revenant Ich will den Animationsplan von Revenant
. Ich werde
das auswählen und öffnen. Moment
befinden wir uns in der Fortbewegung, also im
Animationsdiagramm, das bestimmt, welche Animation abgespielt werden soll Bevor wir mit der
Einstellung der Animation beginnen, gehen
wir zu Evenra Der Grund, warum wir bei einem Charakter, den wir
nicht verwenden, einen
Fehler bekommen haben, ist,
dass es all
diese Besetzungen hier auf dem
Event-Blueprint gibt, die mit der Animation
für den Charakter
Wiedergänger dass es all
diese Besetzungen hier auf dem
Event-Blueprint gibt initialisiert wurde Besetzungen Da es also eine harte
Referenz gibt, ein Casting, eigentlich
keine harte Referenz, verweise
ich darauf. Wenn wir
also auf Play drücken, wird geprüft, ob das
kompiliert wird geprüft, ob das
kompiliert Und das war es nicht. Also
werde ich das löschen, weil wir
die initialisierte Animation nicht benötigen die initialisierte Animation Wir brauchen das nicht, wenn das Auto BP blabla,
blah sendet. Wir brauchen das nicht Und wir tun das nicht und wir machen nicht die einfache
Montage am Anfang,
was die Intramontage ist,
und ich denke, wir brauchen die
Animationsnotifier von einer Montage nicht Wir werden wahrscheinlich unsere eigenen erstellen. Ich werde das auch löschen. Und die Art und Weise
, wie wir animieren werden, ist Montagen zu
spielen Wir werden tatsächlich
ein riesiges Animationsdiagramm mit vielen
Funktionen erstellen ein riesiges Animationsdiagramm mit vielen
Funktionen also in unserer Fortbewegung, Gehen wir also in unserer Fortbewegung,
im Animationsdiagramm, zur Fortbewegung über Wir haben die
Basislokomotion, die sich dann so aufteilt, dass sie sich
versetzt zum Oberkörper bewegt,
und sie macht einige seltsame Pläne die wir nicht oft nutzen
werden Dann durchläuft sie
all das und gibt uns die Und wir gehen
in Bodenbewegung und
ändern den Leerlauf vom Leerlauf. Das ist diese Animation, bei der das Geschütz nach
hinten gestreckt Wir brauchen diesen Leerlauf also nicht
bei ausgefahrener Waffe,
wir brauchen den Leerlaufschleife ohne Kampfmodus Und wir müssen es spielen. Wir werden es hier hinzufügen und wir werden es kompilieren, und jetzt ist unser Idol mit einer Waffe am Boden Dann gehen wir zurück
und starten unseren Jogstart Jetzt haben wir unseren
Jog-Forward-Start, aber wir brauchen wieder
den Nicht-Kampf-Start Also machen wir den Jog-Forward
ohne Kampf, das ist FWD-Start, und wir wählen Play aus,
was, wenn wir
darauf klicken, dieses Nun, das ist unser Jogstart. wir jetzt zurück und gehen
wir zu unserem Jog-Stopp, den wir wieder brauchen, dem Non-Combat Also bekämpfe Jog W und
wir werden spielen. Und diese Animation hat diese
tolle Animation. Es wird manchmal ausfallen
, weil wir kein vollständiges System
haben,
aber es ist in Ordnung Lassen Sie uns zum Schluss noch etwas laufen, und hier
sehen wir einen Blend Space, eigentlich
multidirektional ist
für
die Auskleidung und alles andere Da wir das alles nicht brauchen werden
. Lass uns zurückgehen. Wir
werden das löschen. Auch hier werden wir das Joggen vorwärts,
kein Hund vorwärts, kein
Kampf, zwischen den Spielen
verwenden kein Hund vorwärts, , also diese ständige
Animation Lassen Sie uns jetzt speichern und zu unserem Spiel
zurückkehren. Lass uns Play drücken. Wir
haben auch die neue Maus. Und Sie können sehen, dass wir
jetzt
eine bessere Animation für das Gehen und Laufen von
Adlern haben . Ich verwende eine Portion Fledermaus.
Ich habe keins. Ich denke, das
wäre für diesen. Ich sehe
dich beim nächsten Mal. Tschüss.
97. Physik-Impuls- und Nahkampfanimation: Hallo und willkommen zum
Game Design-Workshop und zur Real Engine Five-prozeduralen Erstellung von
Real Engine Five-prozeduralen
Dungeon-Aktionen Zuvor haben wir unsere
Widgets für unsere Maus erstellt. Wir haben das
Mausangriffs-Widget
und das normale Maus-Widget erstellt und das normale Maus-Widget und sie in
unseren Projekteinstellungen zu unserer Cursor-Software zu
unseren Software-Cursorn hinzugefügt Cursor-Software zu
unseren Software-Cursorn Also haben wir unserem Charakter unser Aragon-Modell
hinzugefügt Und wir haben die
Animationsklasse so geändert, dass sie der Plan für die Animation des Wiedergängers ist,
und die Klasse Skelettnetz wurde zur
Animationsklasse des Wir haben einige
Änderungen am das Animationsdiagramm Wir haben das Animationsdiagramm innerhalb
der Bodenbewegung übernommen und
die Animationen Jog-Start, Jog-Stop
und Run auf die Animationen geändert, die nichts mit
dem Kampf zu tun haben die nichts mit
dem Animationsplan vorgenommen. Wir haben das Animationsdiagramm innerhalb
der Bodenbewegung übernommen und
die Animationen Jog-Start, Jog-Stop
und Run auf die Animationen geändert, die nichts mit
dem Kampf zu tun haben. Lassen Sie uns jetzt weitermachen und mich angreifen lassen. Aber bevor wir das tun, mir aufgefallen, dass wir, wenn wir mit dem Wuttrank
Schaden anrichten, keinen
Impuls auf die physikalischen Gegenstände ausüben. Da wir dafür gesorgt haben, dass sich
die physikalischen Gegenstände durch
die Wutkollision überlagern, sollten wir das auch tun Also, vor diesem Zweig hier werden
wir eine Sequenz platzieren Und wir werden einen Zweig einrichten und wir werden
tatsächlich kopieren,
wir wollen nicht, dass der Schauspieler zerrt. Es ist eine Komponente.
Unsere physikalischen Objekte, die Boxen, sind Komponenten. Also gehen wir
zur Komponente und lassen eine Komponente ziehen. Und das Tag wird H
sein. Wenn ja, holen
wir uns das Bauteil, und zwar am Wenn es wahr ist. Wir werden
etwas mehr Platz brauchen. Etwas höher.
Für unseren Impuls müssen
wir eine Zahl angeben. Wir werden diesen Vektor in X, Y und Z
aufteilen. Wir erhalten eine
zufällige Ladung im Bereich. Und wir werden das zweimal zweimal duplizieren . Tatsächlich werden
wir zwischen den ersten beiden anhand einer zufälligen Zahl auswählen. Das wird eine
Verbindung in X und Y herstellen. Das wird eine Verbindung in Dead herstellen. Für die Werte setzen
wir nun minus 220. Und tatsächlich
muss das minus 260 sein, sagen
wir, und das
sollte minus 220 sein, weil das Maximum näher an Null
liegt. Dieser Wert sollte also niedriger sein,
da
wir bei minus stehen . Und lassen Sie uns hier das Positive machen, das wären
mindestens 220 und maximal 260. Und für den Höhenimpuls setzen
wir 200 auf 300. Und jetzt
wollen wir theoretisch auch die
Geschwindigkeitsänderung überprüfen Was es macht, ist im Grunde so, als würde man
die Masse eines Objekts aufhäufen, falls das Sinn macht, denn
physikalische Gegenstände Aber es ist ein bisschen
komplizierter als das,
aber lassen Sie uns grob davon ausgehen, dass es genau das tut Also lass uns spielen gehen. Findet ein paar Kisten
aus unserem Inventar. Ja. Sie bewegen sich,
sie bekommen einen Impuls. Jetzt werden wir
diesen Code auch für
unseren männlichen Angriff verwenden . Aber wir werden ihn in dem Moment kopieren und
einfügen. Nun, um einen AM-Attacke zu
starten, müssen wir zuerst etwas
Vorarbeit leisten. Was wir tun werden, ist, zu unserem
Blueprints-Ordner in
unserem Aufzählungsordner zu gehen und eine weitere Aufzählung zu
erstellen, die der Spielerstatus sein
wird Jetzt werden wir die
meisten Staaten haben,
alle Staaten sind quasi aufgezählt Es wird jedoch empfohlen
, mehr als einen zu haben. Wir werden
diesen Spielerstatus nennen. Wir werden es öffnen.
Bring es her und ich füge zwei Staaten hinzu. Ich denke genau. Nennen wir den ersten Staat so. Nennen wir den zweiten Staat. Normal, der ganze dritte Zustand
A oder wenn wir zielen, nennen
wir den fünften,
den vierten Zustand. Stan, denn wenn
wir getroffen werden, wollen
wir, dass ein Mini-Stan entsteht, und nennen wir den letzten Zustand M. Wir
werden das hauptsächlich nutzen, um Dinge nicht zu tun,
während wir uns in einem anderen Zustand befinden. Als Nächstes gehen wir
zu unserem Charakter
und erstellen eine Funktion, um den Zustand
zu ändern. Also werden wir es Change Eight
nennen. Für die Eingabe wird es einen
E-Player-Status haben. Dieses Datum. Lassen Sie uns eine Variable
vom Typ Spielerstatus erstellen. Nennen wir das auch
Spieler Acht. Pastete. E-Spielerstatus. Und wir
werden das duplizieren. Und wir werden
es Spielerstatusalter nennen. Oh, wir müssen
diese Dinge hier einstellen. Als erstes
sollten wir
unseren Spielerstatus auf
den vorherigen Status setzen . Und als Nächstes setzen wir unseren Spielerstatus auf den
Wunsch, der eingeht. Ich glaube nicht, dass
wir
den vorherigen Status verwenden werden,
aber warum nicht? Als Nächstes sollten
wir
den Status tatsächlich zu unserem
Top-Down-Controller hinzufügen . Und weil
wir
die Controller-Referenz häufig verwenden werden , beginnen
wir mit dem Spielen. Und hier speichern wir
den Downgame-Modus. Lassen Sie uns X und Maro dasselbe
für den Player-Controller tun. Nein, wir
holen uns Spieler und Darsteller. Bis es zu einer reinen Besetzung wird. Werben Sie für diese Variable. Verbinde das und jetzt
haben wir einen Verweis
auf unseren Controller. Gehen wir nun zu unserem Controller
und erstellen eine Variable. Nennen wir diesen Spieler acht. Spieler acht. Der Status des B-Spielers ist
bereits eine Variable. Der Typ wird der Spielerstatus E sein. Kompilieren und speichern. Gehen wir zurück
zu unserer Funktion und unserem Status. Wir holen uns unsere Controller-Referenz von oben
nach unten und gehen dann zu den Spielern. Acht unser Bundesstaat. Oh, wir sind damit fertig. Und das nächste, was
wir erstellen sollten ist unsere
Animationsmontage für M Montage. Oh, wir setzen auf st,
das ist die Animation, die
wir verwenden wollen, und wir klicken mit der
rechten Maustaste darauf
und achten auf die Animationsmontage. Nun, was ist eine
Animationsmontage? Wir malen für eine Sekunde. Oh, nehmen wir an, wir haben unseren Charakter und unser
Charakter läuft. Das ist eine Animation. Jedenfalls. Also läuft unser Charakter
ständig. Und plötzlich
wollen wir einen Angriff spielen. Und nehmen wir an, wir wollen den Charakter nicht von vorne nach unten
ändern. Wir wollen, dass dieser Teil
derselbe ist. Dann können wir ein anderes System
namens Slots verwenden. Dann geh zu groß. Aber wir können ein anderes
System verwenden, das als Spielautomaten bezeichnet wird, und wir können sagen, wir
können sagen, dass wir einfach
eine Animation über diesen Teil abspielen eine Animation über diesen Teil oder ihn mit dem unteren Teil mischen können. Und hier, wo Montagen sind. Wie wir schon sagten,
spiel diese Animation ab. Nennen wir Angriff eins, und er streckt zum Beispiel
seinen Arm so aus, um zu schlagen. Jetzt werden wir bis
zu diesem Teil für uns verwenden, aber Montagen haben die Fähigkeit , zum Beispiel
danach
auch einen Angriff auszuführen und diesen Schlag auszuführen, wenn der Spieler weiter
drückt oder nicht Und im Grunde ist es
ein Tool, das uns hilft, leistungsstärkere und
nicht nur leistungsfähigere Animationen zu
erstellen, sondern es ermöglicht uns auch, komplexe Animationen zu
steuern Zum Beispiel Angriffskombinationen, Spezialbewegungen, die durch das Gameplay ausgelöst
werden können Wie dem auch sei, lass uns da rein gehen. Also erstellen wir unsere Montage. Lassen Sie uns unsere Montage öffnen. Oh, wir wollen
hier irgendwo spielen, zum Beispiel, um
ein Partikel zu erzeugen oder um eine
andere Animation abzuspielen. Was wir tun würden, ist etwas mit dem Namen
Wir werden mit der rechten Maustaste klicken zu
erstellen. Eigentlich müssen wir hier
auf Benachrichtigungen klicken. Das ist die Notifier-Leiste. Und was ist ein Notifier? Im Grunde ist es eine Markierung, die wir an
bestimmten Punkten innerhalb
der Animation platzieren können , um bestimmte Ereignisse
auszulösen Platzieren wir also einen
Animationsmodifikator. Irgendwo hier.
All das hier, eine Benachrichtigung, und wir
werden eine neue Benachrichtigung aufrufen. Nun, es ist kein
Partikel. Es ist eigentlich eine Blaupause für mich
, die wir erstellen werden, aber nennen wir es Partikel Nun, wenn ich eine andere
Animation hier drin hätte, könnte ich diese hier reinbringen Ich kann eine weitere Animation mitbringen. Das war ein schlechtes Beispiel. Was wir hier drinnen machen werden. Und was wir
hier drinnen tun werden , ist, einen Melder
zu erstellen,
was eigentlich ein Zeichen ist,
ein Punkt, an dem wir Ereignisse
auslösen können , von denen wir
wollen, dass etwas passiert Es könnten Geräusche sein. Es
könnte eine weitere Animation sein. Zum Beispiel, wenn ich eine Animation
mitbringe. Das ist jetzt dieselbe Animation. Aber wenn ich sogar
die gleiche Animation mitbringe und ich sagen will, mach es nochmal. Ich bräuchte etwas zum Notifier, um zu erklären, wann
wir in welche Animation gehen Was wir tun werden, ist,
irgendwo hier einen neuen Notifier zu erstellen Rufen wir es früh an. Tee. Und jetzt haben wir
diesen Notifier hier. Wenn diese Animation
hier platziert wird, löst sie das aus Es gibt eine Möglichkeit, ihn hier
tatsächlich zu finden. Ja, nicht hier. Das ist
das Animationsdiagramm. Es tut uns leid, das Ereignisdiagramm soll im Ereignisdiagramm
im Programmierteil sein, nicht im Animationsteil.
Sei es, das ist ein Ereignis. Es ist eine Programmiersache, also
melde ich mich bei einem Angriff. Und das würde
in diesem Moment ausgelöst werden. Da wir jedoch nur einen Notifier
haben, gibt es eine andere Möglichkeit, ihn aufzurufen Und nur um
das vorerst zu demonstrieren, werden
wir
es in der nächsten Lektion verbinden Gehen wir in
unserem Spielercharakter zu Pen gra. Lassen Sie uns die Leertastatur erstellen. Wir werden die Leertaste auf der
Tastatur verwenden . Wir machen den M-Angriff. Also, wenn wir spielen diese Benachrichtigung über den Beginn
und dann über das Ende
haben, und wir bekommen unseren Namen,
sodass wir hier weitermachen können. Es gibt viele Möglichkeiten
, Animationen zu erstellen. Wir werden bestimmte auswählen, nur damit unser Charakter funktioniert. Nun, ich denke, das ist ein
guter Ausgangspunkt für diesen Film. Wir werden
mit dem Aufbau unserer Space
and Play-Montage und der
gesamten Logik
unseres My-Angriffs fortfahren and Play-Montage und der
gesamten Logik
unseres und auch
einen Plan erstellen , der
unser My-Angriff in
der nächsten Lektion sein wird unser My-Angriff in
der nächsten Lektion Auf Wiedersehen. Wir sehen uns dann
98. Nahkampfangriff-Blueprint-Kollisionen und Effekte: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural Dungeons Action-RPG-Erstellungskurs Zuvor haben wir mithilfe von Nummerierung
und Angabe unserer
Bundesstaaten ein benutzerdefiniertes Datum für unsere Spieler
erstellt mithilfe von Nummerierung
und Angabe unserer
Bundesstaaten ein benutzerdefiniertes Datum für unsere Spieler Und wir haben
einen Änderungsstatus für unsere
Charakterfunktion erstellt einen Änderungsstatus für unsere
Charakterfunktion Das heißt Change State, und wir speichern den
vorherigen Status in einer Variablen Wir setzen den neuen Status,
den Status des neuen Spielers
auf den Status, und wir geben
diese Information auch an unseren Top-Down-Controller weiter, mit dem wir den
Spielerstatus
erstellt haben , eine weitere Variable. Wir haben auch den
vorherigen Status und
den Spielerstatus in der
Spielercharakter-Variablen erstellt . Dann haben wir unsere Animationsmontage
erstellt
und einen Animationsmodifikator erstellt Das wird unseren Ich-Angriff benachrichtigen,
wenn wir unser Partikel einbauen sollen, was wir gesagt haben, es
wird kein Partikel sein Das wird ein Plan sein
, der eine gewisse Logik haben wird. Lassen Sie uns nun diese Montage schließen. Lass uns unseren Ich-Schauspieler kreieren. Wir gehen zum
Ordner Fähigkeiten, klicken mit der
rechten Maustaste und erstellen
eine neue Blueprint-Klasse Wir werden Schauspieler
und nennen es BP. Wir werden es jetzt nicht
programmieren. Wir werden direkt
zu unserem Sammler gehen. Wir gehen
zu unserem Weltraum-Event, Bace Ball Event, und wir werden
je nach Zustand wechseln Wir werden
das auf der Presse verbinden. Das ist der Zeitpunkt, an dem wir in der Lage
sein werden, einen Geruchsangriff durchzuführen. Und der einzige Ort, zu dem wir in der
Lage sein wollen , ist, wenn wir normal sind Nein, das nächste, was
wir von der Normalität aus
tun werden , ist den Zustand zu ändern. Wir werden unsere
Change-State-Funktion einsetzen. Ich werde es mir einrichten.
Das ändert also meinen Zustand. Wenn ich jetzt weiter die
Leertaste drücke, wird es nicht erneut ausgelöst. Jetzt
sollten wir als Nächstes ein Geräusch machen. Wir werden Sound Two D spielen und als Sound
den Fort-Effort-Swing
wählen . Anstrengend. Wir werden die Mühe nutzen, zu
singen. Wir
werden das benutzen, weil
es viele
verschiedene Flügel hat . Was ist dieser
Dialogdialog auch? Ah. Ja, es wird
jedes Mal anders klingen, wenn wir angreifen. Gehen wir jetzt zu unserem Player und nach unserem Sound sollten
wir unsere Montage abspielen. Und um Armonta spielen zu können, benötigen
wir eine Skeleton-Mess-Komponente
. Das ist notwendig. Denn wer spielt diese
Montage? Das ist wichtig. Aber wir werden uns hier verbinden. Und für die Armontage wählen wir
unsere letzte Montage. Nun, bevor ich gesagt habe, dass wir den Notified
Begin oder einen beliebigen Notifier verwenden
können, wird
er immer dann ausgelöst, wenn ein
beliebiger Notifier verwendet wird Und da wir
einen haben, können wir ihn einfach ohne irgendeinen
Notifier-Namen verwenden und sagen, Acto-Klasse, und das
wäre unser Oder die Transformation, wir teilen uns
auf und brauchen einen Standort Wir werden unser Netz holen. Standort ermitteln. Fußballstandort,
was bedeutet das? Ich glaube, wir verwenden
dieses Skelettnetz , weil wir von hier aus
einen Fußballstandort ermitteln können. Wenn wir zu unserem Skelett
gehen, gehen wir zurück zur Persona und
lassen Sie uns zu unserem Skelett gehen Wir können sehen, dass es eine Menge zusätzlicher Dinge gibt wie: Was
ist eigentlich ein Slot Ich meine Buchse, kein Steckplatz.
Also, was ist eine Steckdose? Wir können zu dem Punkt gehen, wo wir sind, und die Schnauze zwei nehmen Sie können sehen, dass es hier auch eine
Steckdose gibt
, an der wir etwas anbringen
können,
wie ein Schlitz, in dem wir Dinge platzieren
können Und es muss nicht exakt auf der Waage
sein. Wie Sie sehen können, ist
diese Steckdose hier weit weg, was für uns reichen könnte. Aber ich denke, das ist der falsche
Arm mit und r, um
die Buchse und R auf unserer Montage zu finden . Ja, es ist das andere R, der rechte Arm, nicht der linke. Also brauchen wir R und R, Waffe R. A, hier sind
wir auf oder rechts, und R Zle eins Nehmen wir diesen Maulkorb. Socket-Name hier drüben. Muskelwert eins. Ich gehe zurück
zu unserem Charakter und verwende den Socket-Namen. Was ich nicht richtig gemacht habe. Manchmal will
Steuerung C
einfach nicht funktionieren. Schnauze eins Das gibt die
Wortposition an , an der sich unser Socket in diesem Zustand
befindet Als Nächstes werden wir unseren Meacor
an unsere Festplatte anschließen Also
folgt unser Selbstangriff ein bisschen h. Wir werden eine Berührung
machen. Zum Schauspieler. Weil wir
einen Schauspieler hervorbringen und ihn unserem Schauspieler zuordnen
wollen Und wir werden das Wort halten. Das heißt, wenn wir uns wenden, dreht sich
unser Ich-Angriff auch, und das wäre ein Nebendarsteller. Vielleicht können wir unseren Angriff,
unseren Angriff ein
bisschen missbrauchen und
einfach umdrehen, wenn wir angreifen und viele Feinde
treffen. Oh. Jetzt müssen wir nur
noch eine
Abklingzeit
dafür schaffen, wie oft wir mich treffen können. Oh, lassen Sie uns
hier nach 1 Sekunde den Status ändern. Also möchte ich eine Verzögerung einlegen. 1 Sekunde. Und lassen Sie uns
den Zustand auf normal ändern. Das wäre ein
Problem, wenn wir zulassen während eines E-Mail-Angriffs noch
etwas anderes passiert,
denn nehmen wir dass
während eines E-Mail-Angriffs noch
etwas anderes passiert,
denn nehmen wir an,
ich befinde mich beispielsweise im AM-Status und
drücke auf E-Mail-Angriff,
und dann gehe ich sofort wieder in den
AM-Status zurück. Nach einer Sekunde wird mein AM-Status auf normal
geändert. Aber wir werden sehen, wie sich
das entwickelt, und wir werden die entsprechenden Änderungen vornehmen. Lassen Sie uns unseren Plan, der hauptsächlich auf
Angriffe ausgerichtet ist,
und unsere Fähigkeiten öffnen und unsere Fähigkeiten Lasst uns eine Kollisionskugel hinzufügen. Pro Kollision. Machen wir 100 draus und haben einen Radius. Außerdem müssen wir es
ein bisschen voranbringen. Äh, vielleicht wäre das hier in Ordnung. Nun, warum wir
es weiterbringen, weil es in
der Mitte des
Bauplans erscheinen würde Also brauchen wir das hier, damit es nicht hier ist, denn das würde
sich mit unserem Charakter überschneiden Überschneidungen
mit einem Charakter sind uns egal. Irgendwo hier
wäre also herrlich. Also, das nächste, was wir brauchen,
ist ein Kaskadenteilchen. Für das Partikelsystem werden
wir das
Revenant-Primärsystem verwenden Jede Menge Vorwahlen von Revenant. Wir wollen, dass der
Hauptcharakter von Revenant ist. Richtig? Machen wir es ein bisschen
größer, nicht alles. Ich werde dieses
X über eins und über zwei sprechen. Oh, das wird ein Artikel sein. Punkt. Größer. Wir werden sehen,
wie es auf der Karte aussieht. Das nächste, was wir hinzufügen
werden, ist ein Punktlicht. Sorgen Sie dafür, dass es
etwas mehr Licht erzeugt. Macht das Gebiet locker, wenn
wir nur angreifen. Naja, hat den Boden im Grunde ein bisschen
beleuchtet. Wir nehmen das Punktlicht stellen
den Radius zwei ein. Und wir werden
es etwas niedriger platzieren. Hier. Es beleuchtet unsere Gegend und
ein bisschen nach vorne auch. Nicht zu sehr, weil du unseren Charakter nicht sehen
willst,
etwas, das hier anfängt und
dann auch hier anfängt. Du willst sehen, als ob
es vom Becken aus beginnt. Wir müssen die Farbe auch
auf etwas Rötliches ändern , gut Und gehen wir zum Programm,
das angreifen könnte. Jetzt verwenden wir normalerweise Destroy Actor, wann immer
wir etwas wollen. Aber das ist auch ein anderer Weg. Wir gehen zur Standardklasse. Das ist lebenslang. Wir können sehen, dass wir hier eine
Variable haben, wie lange dieser Schauspieler lebt. Ero ist für immer.
Aber wenn wir zum Beispiel 0,3 eingeben, stirbt
dies in 0,3 Sekunden. Diesen Schauspieler
müssen wir nicht zerstören. Wir müssen Destroy niemals
anrufen. Wir müssen
in unsere Sphäre gehen. Welche Kollision, wähle Benutzerdefiniert. Ich werde alles
außer dem Pon und
dem Physikobjekt ignorieren . Aus dynamischen Gründen dürfen wir das
nicht ignorieren, es ist auch unser Höllentor. Auf der Kapsel. Das
ist unsere Kollision. Eine Dynamik. Oh. Nun, unsere Sphäre muss etwas
tun, wenn sie
anfängt, sich zu überlappen. Wenn wir Schauspieler erzeugen, selbst wenn sich der andere Akteur
innerhalb der Kugel befindet, löst
dies das Ereignis
Begin Overlap aus. Wir müssen einen anderen Schauspieler fragen
und fragen, ob die andere
Komponente eine Sequenz macht. Tun Sie das getrennt.
Eins ist für Feind. Der andere ist
für physische P H. Zwei Filialen. Wir können die Rolle des
Feindes noch nicht wirklich spüren , weil unser Männchen dem
größeren Rückschlag auf unsere Seite keinen Schaden zufügen
würde. Aber wir können die Physik machen. Wir werden es tun, denn Physik wird von unserem Charakter abhängen. Wir werden beschichtet. Hier. Wir müssen nur
Impuls und zufällige Floats hinzufügen Wir gehen zurück,
damit ich das hier mache. Es ist wahr. Ein gültiges
Objekt. Überprüfe das auch. Nur für den Fall, dass es
zerstört ist oder so. Wir werden uns
hier verbinden. Und das wäre. Eigentlich müssen wir das Ziel auch
verbinden, wem kaufen wir? Und das wäre
unsere andere Komponente. Lass uns testen, weil
ich denke, wir werden
ein Problem mit der Rotation
unseres Geruchs haben . Bin ich. Nichts passiert, weil wir die Eingabe
in unserem Charakter aktiviert haben. Am Ende von Beg Play holen
wir uns unsere
Player-Controller-Referenz
und sagen wir, vielleicht verbinde
ich die
Controller-Referenz dem Player-Controller, Ziel wäre ich selbst. Lass uns vergleichen. C,
es passiert nichts. Lass uns nachschauen warum? Ich
glaube, ich weiß warum. Da der Status
standardmäßig tot ist, setzen
wir ihn auf Normal,
weil es unser erster Zustand ist. Die Variable wurde erstellt,
aber kein Spielerstatus angegeben. Lass uns nochmal testen. Ich habe Sound. Ich
habe keine Montage. Oder lass uns aussteigen. Ich denke nochmal nach, ich
kenne den Grund. Gehen wir zu unserer
Cast-Montage und lassen Sie uns hier, wie ich bereits sagte, einen Slot verwenden. Im Moment ist es auf
dem ganzen Slot und es ist sozusagen so, dass es für
den ganzen Körper gilt. Geh und sieh in unserer
Animationsgrafik nach. Wir werden sehen, dass das
nicht reicht
, weil der ganze Körper im Grunde
keine Handlung hat. Aber wir müssen
den Oberkörperschlitz machen. Wir machen Fontage und planen Tam. Könnte einfrieren, aber wir
kompilieren und speichern. Es wird einfrieren. Hat es nicht getan. Tun. Wenn ich aufhöre zu spielen. Oh. Wie auch immer, lass uns
zu unserem Spiel gehen. Ich denke, dieses Mal wird
es funktionieren. Ja. Ich kann mir vorstellen, die
Animation richtig zu erklären. Auch wenn die Vorschau eingefroren ist
, bedeutet das nichts Es gibt einige Probleme
beim Ändern von Dingen. Aber wir erzeugen
das Partikel nicht. Liegt es daran, dass das nicht
auslöst? Es besteht eine Chance Lass uns hier den Breakpoint nehmen, oder vielleicht die
Position von Mcle One? Oh, auslösend. Machen Sie ein bisschen
Seelenforschung
und finden Sie heraus, was das Problem ist Als ich eine Benachrichtigung erstellt
und eine neue Benachrichtigung hinzugefügt habe, handelt es sich dabei um einen
elementaren Notifier
, der sich von der Planmontage
unterscheidet Unser Knoten hier. Das
im Tooltip, es funktioniert nur mit
Lay-Montage-Notify und nicht mit Skelett-Montagen. Wir werden diesen M-Angriff ändern, löschen, und wir werden ihn verwenden Montage modifizieren. Wir
werden M Attack nennen. Jetzt würde es funktionieren. Ja, wir können sehen, wie
wir unseren Artikel haben. Aber wie gesagt, wir haben ein
Problem mit der Rotation. Nein, um das zu beheben, gehen
wir zu unserem PPM. Wir werden
zu unserem
ersten Theaterstück gehen und wir werden die Schauspielerrotation einstellen. Für die neue Rotation. Wir werden uns mit dem Warum einer Rotation befassen. Und der Anfang
wäre Spieler Po. Wir machen einen Ich
werde auch den
Vorwärtsvektor bekommen. Das ist ein Vektor, uns im Grunde
sagt, wohin wir
schauen. Start wäre also
die Punktposition
und n wäre die Position, an der wir uns befinden, plus der
Vorwärtsvektor, um ihm eine Richtung zu geben Eine weitere Drehung
sollte behoben werden. Ja, es spricht. Ja, ich mag den
Ort nicht, an dem es laicht. Aber ich mag es in manchen. Lassen Sie uns zunächst zu unserer Spielrate
gehen. Okay, ich habe es bereits geändert. Wir sollten zwei wechseln, vielleicht
zwei , um uns abzukühlen. Acht. Lassen wir die
Feindquote bei einem Punkt stehen. Fünf und eins. Wählen wir die zweite Position der
Schnauze. Ich glaube, es war ein
bisschen vorwärts. Auch wenn es zu dem Zeitpunkt,
zu dem wir die Animation
abspielen, in der falschen Hand ist. Oh nein, nein. Schnauze eins war Aber machen wir es
etwas später für unsere Hand. Lass uns vielleicht. Dave. Das ist besser. Das Leben ist ein
bisschen zu intensiv. Würde es ein
bisschen niedriger machen. Machen wir uns auf den Weg. Stimmt? Lass uns. Ja. Sieht gut aus. Wenn es die Boxen bewegt, sollte
es Boxen bewegen können. Schon wieder Boxen in diesem Raum. Zimmer. Ist die Kiste. Das gibt es, oder? Perfekt. Wir bewegen Kartons. Großartig. Ich denke, das
ist es für diesen. Ich sehe dich
beim nächsten. Auf Wiedersehen.
99. Statische Ziel- und Schießmechanik: Hallo und willkommen zum
Gain Design Workshop,
einem Kurs zur echten Action-Rollenspiels mit Engine Five Erstellung eines echten Action-Rollenspiels mit Engine Five und
prozeduralem
Dungeon-Action-Rollenspiel Zuvor waren wir
mit unserem Selbstangriff fertig. Wir haben eine
Animationsmontage erstellt, die wir Notifier-Montage „
Notify“ benachrichtigt haben,
wenn wir unseren
Ich-Angriff verschieben wollen Außerdem verwenden wir sie im
Charakter-Blueprint und beim Ereignis mit der Leertaste um zwischen
den Spielerzuständen zu unterscheiden,
sodass wir nur angreifen können, wenn wir Unmittelbar danach ändern wir den Status. Wir haben einen Sound
abgespielt, wir haben die Montage abgespielt und
beim Start über die Montage informiert. Wir haben unseren VP kann angreifen gestartet und ihn dem Schauspieler zugewiesen Dann haben wir 0,8
Sekunden gewartet und den Status
wieder geändert In unserem Plan Mein Angriff haben wir zunächst die Drehung
des Schauspielers in die Richtung festgelegt ,
in die die Pfote schaut Und dann haben wir
die Komponente Beginning Overlap
Event mit einer Kugel erzeugt , die
auf unserer Kugelkollision basiert und prüft
, ob dem Akteur um ein physikalisches
Objekt handelt oder ob es sich um einen Feind handelt Wie gesagt, der Feind
wird später gefüllt, und das war's. Und unser möglicher Angriff besteht
aus einem Licht,
einem Teilchen
und einer Kollisionskugel. Lassen Sie uns nun mit der
Herstellung unseres Schießmechanismus fortfahren. Aber dafür müssen
wir zuerst aus mir
einen Zielmechanismus machen. Aber dafür müssen wir
einen Zielmechanismus einrichten. Wenn unser Charakter
also noch lernt, zum Beispiel die Schicht
durchläuft, können
wir sagen, dass der
Charakter zielt, sodass der Sammler schießen kann. Lassen Sie uns jetzt hier einen Kommentar hinterlassen. Nennen wir das M und lassen Sie uns eine Panik auslösen. Wie gesagt, wir werden
die Shift-Taste benutzen, also werden wir die
linke Umschalt-Taste auf Tastaturen benutzen Und wir werden einen Bolzen
herstellen , damit wir wissen, ob die
Shift-Taste gedrückt ist oder nicht Wir werden
Setting und Freunde sein. Als Nächstes werden
wir den Spielerstatus einschalten. Oh, welcher? Bei beiden. Wann werden
wir zielen können? Nun,
wenn wir normal sind
oder
schon zielen, oder
schon zielen weil die
Animation noch nicht abgeschlossen ist, sollten
wir wieder zielen können. Was wir aber tun werden, unseren Charakter bewegen
und eine Sache ändern. Bei unserer Charakterbewegung gibt es eine orientierte
Hier ist es eine Orientierung von
Rotation zu Bewegung, was bedeutet, dass sich
der Charakter unserer Bewegung
orientiert Wenn wir zielen, wollen
wir nicht, dass
das passiert Wir wollen, dass es dorthin zielt, wo
unsere Maus hinzielt. Also müssen wir das ausschalten. Wir wechseln zu
Bewegungen und
ändern dann unseren Zustand. Nun, ich werde mich nicht sicher
sein, weil wir zuerst die Montage abspielen
müssen und dann das Ganze starten,
das einschalten, wohingegen
wir hier das auslösen einschalten, wohingegen
wir hier und dann die Montage abspielen müssen Wir setzen den Zustand auf a. Für unser Zielen
verwenden wir die Pose, die wir am Anfang
hatten, bei der das Geschütz ausgestreckt ist Wir werden daraus
eine Montage erstellen. E Patientenmontage BE Montage. Das müssen wir
eigentlich nicht, wir müssen. Wir müssen den Slot,
den Standardslot, auf „Oberkörper
“, „Name“, „Oberkörper“ setzen. Wenn wir das jetzt zurücksetzen wollen, können
wir einfach wiederholen, dass Sie gearbeitet haben. Es macht manchmal Backups. Und jetzt, wenn ich
woanders hingehe und dorthin zurückkehre, funktioniert
es, und unsere
Cast-Montage funktioniert auch. Wie Sie sehen können, brauchen wir von hier aus eigentlich diesen Teil , der von unten nach A. Oh. Gehen wir zurück. Lass uns eine Seite einblenden. Jetzt gibt es auch einen
Player in Montage, dem es sich um einen Sortierknoten
mit weniger Optionen Aber wir verwenden das , weil es am Ende viel mehr
Optionen hat Jetzt werden wir
das Skelettnetz verwenden. Für die Montage wählen wir
den inaktiven aus. Was die
Senkung des Ziels angeht, wirst
du ein bisschen
schummeln Benutze diese Montage. Normal, und unsere Rate
wäre minus eins. Das wird es also zwingen, rückwärts
zu spielen. Und danach
werden wir unseren Zustand ändern, nachdem wir unsere Waffe gesenkt Wenn wir die Waffe
senken, setzen
wir sie auf normal. Als Nächstes
sollten wir
unsere Bewegung nach hinten richten, weil wir uns in einem normalen Zustand
befinden Jetzt, hier später, wenn wir die Maus so
einstellen, dass sie rot wird, wenn wir auf einen Feind zielen Wir werden
sie auch so einstellen, dass sie rot wird, wenn wir zielen, und normal wird
, wenn wir nicht zielen. Wenn wir also zielen, leuchtet unsere
Maus ständig rot,
was bedeutet, dass
wir können und bereit sind zu schießen. Lass uns das testen.
Lass uns Play drücken. Ich drücke Shift, wir
können unsere Waffe sehen. Aber im Moment zielen wir nicht. Also fing es an, sich zu bewegen und zielte
einfach auf die Waffe. Aber wie Sie sehen können, ist es zu laut, wenn wir
den Ton schließen. Wie Sie sehen können, hat unser Ziel bei der Rotation so funktioniert, als würden wir uns momentan
nicht in Richtung
Bewegung drehen. Aber wenn ich sie ausschalte,
drehen wir uns wieder in Richtung
unserer Bewegung. Jetzt sind wir quasi strafend, was nicht schlecht ist, aber das
ist nicht das, was wir wollen Wie dem auch sei, damit das behoben werden kann, müssen
wir auf
den Player-Controller gehen und unsere Bewegung korrigieren Aber das werden
wir jetzt nicht tun. Wir werden mit
unserem Schießmechanismus weitermachen. Oh, lass uns das machen.
Geh zu deinem Charakter Lass uns das hier hinstellen. Hallo. Lassen Sie uns die linke Haustaste verwenden, um
unser Angriffsereignis zu erstellen. Das erste, was wir
tun werden, ist zu wechseln und den Status zu ändern. Eingestellt. Wenn wir
angreifen wollen, zielen wir. Oh, wir werden eine
Frage stellen. Ist eine Filiale. Greifen wir schon an? Ich werde für
diese Variable werben
und sie als Angriff bezeichnen. Denn wenn wir
bereits angreifen, sollten
wir nicht noch einmal angreifen, das sollte eine Abklingzeit sein,
sonst schlägt unser Geschütz wie ein
Maschinengewehr, so schnell wir klicken können Oh, wenn wir nicht angreifen, dann
setzen wir den Angriff auf wahr Als Nächstes spiele
ich unsere Montage ab. Diesmal
haben wir bereits eine Montage, sie heißt Primarifier
made montage
und einige Notifier , die wir
nicht verwenden werden, aber es ist Und bringen wir unser Mesh mit. Hier. Nun, das nächste, was wir tun werden
, ist unsere Kugel abzufeuern. Und bevor wir das tun, lassen Sie uns einfach eine
Funktion namens Spa erstellen. Kugel. Wir benutzen das. Aber wir werden
das jetzt nicht benutzen. Wir werden unsere Mechanik
fertigstellen. Oh. Wenn wir
Montage spielen, werden wir Spa machen. Kugel. Oh, als Nächstes müssen wir den Reset
machen, wer Ba angreift. Wir brauchen eine
Abkühlung. Wir setzen also eine Verzögerung von, sagen wir mal Punkt, ein. Und wir müssen einen Reset durchführen. Ich werde
eine übliche Veranstaltung organisieren. Und dieser Reset. Zieh es her. Das muss sich
je nach Spielerstatus ändern,
weil
wir zum Beispiel
etwas anderes machen wollen, wenn wir zielen und etwas anderes
, wenn wir normal angreifen. Wenn wir zum Beispiel Maus über einen Feind fahren
und auf „Klicken“ drücken, endet
das anders, als wenn wir die Umschalttaste drücken und
mit dem Schießen beginnen wir nun Wechseln wir nun. Natürlich müssen wir
in beiden Zuständen nicht angreifen Aber wenn wir
normal angreifen, wir das auch auf
Statistik setzen , denn wenn wir während eines Angriffs
betäubt werden, sollten
wir in der Lage sein, unseren Angriff
zurückzusetzen Nun, wenn wir normal
angreifen oder
wenn wir anfangen, wollen
wir unser Geschütz senken , falls wir
nicht wieder angreifen Wenn
ich zum Beispiel den Mauszeiger über
einen Feind halte und schieße
und dann den Schwebeflug mache, kannst
du die Hand
in der Schussposition lassen,
sie sollte Und um das zu tun,
werden wir wieder
ein bisschen cheaten und uns für ein benutzerdefiniertes Event mit niedrigerem Geschütz
entscheiden Und wir werden
es mit dieser Kette von
Ereignissen verbinden , weil wir
genau das wollen. Wenn das wahr ist, ist es
nicht wirklich wichtig. Es wird schon
gehen Wir werden es wieder aushärten lassen. Oh. Wir werden Lower Lower Gun
anrufen. In beiden Situationen normal. Und das wäre ein Teil unseres
Schießangriffs mit dem linken Druckknopf Aber lassen Sie uns mit
der Kugel weitermachen , was der nächste Teil
ist Bei unserer nächsten Lektion. Auf Wiedersehen.
100. Player-Bullet-Blueprint und Visuals: O Hallo und willkommen zum Game Design
Workshop und dem Kurs zur Erstellung prozeduraler
Dungeon-Action-Rollenspiele mit Real Engine Five Zuvor haben wir mit
unserer Schießmechanik begonnen. Also haben wir das
AM-Event mit Links-Shift erstellt. wir
drücken und loslassen, legen wir das Ziel fest oder Wenn wir
drücken und loslassen, legen wir das Ziel fest oder
AM ist nicht ausgeschaltet. Wir wechseln
basierend auf dem E-Status. Wir stellen Orient
auf Bewegung aus, und wir ändern den Status auf
AM und spielen eine Montage ab, die zum Beispiel
unsere Waffe auf unsere Seite bringt. Wenn wir jetzt loslassen, spielen
wir zuerst die Montage ab,
um das Geschütz
abzusenken, und dann ändern wir
den Status wieder. Bevor das Set uns den Rücken
zudrückt, wissen
wir, dass wir zumindest
damit begonnen haben, unser Geschütz herunterzufahren. Nun, um ehrlich zu sein, dieses
Set, die Rotation
an der Bewegung ausrichten , ist hier irgendwie
dekorativ,
nur um zu zeigen,
was es bedeutet, dass wir,
wenn wir
uns
anhand der Bewegung orientieren, der
Charakter sich tatsächlich umdrehen nur um zu zeigen,
was es bedeutet, dass wir,
wenn wir
uns
anhand der Bewegung orientieren, können,
wo, wenn wir es nicht sind, der Charakter ruhig bleibt
und es eher wie ein Beschuss ist. Lassen Sie mich den
Ton etwas leiser stellen. Das ist der Unterschied
zu dieser Variablen. Die eine ist im Grunde genommen ein Angriff. Die andere ist, der
Orientierung der Bewegung zu folgen, Rotation der Bewegung zu
folgen Nun, für uns werden
wir ständig rotieren, wo sich unsere Maus befindet. Also das ist eigentlich
nicht nötig. Aber wenn es hier bleibt, hat
es keinen Einfluss auf unseren Code. Als Nächstes wollen wir
unsere linke Maustaste benutzen. Um wieder eine Kette von
Ereignissen zu erstellen , die auf dem Status
unserer Spieler basiert. Danach haben wir eine Frage gestellt,
ob wir angreifen, und wenn wir bereits angreifen, wenn wir schießen, werden
wir nichts tun. Aber wenn wir nicht schießen, werden
wir schießen. Also sagten wir, Angriff sei wahr, und wir haben die Montage von
Shooting abgespielt, die wir erstellt haben. Eigentlich haben wir nicht
geschaffen, dass es existiert, dass es ein Shooting ist. Und dann fahren wir mit unserer Funktion Spawn Bullet fort
, die wir nicht gefüllt Und dann, nach einer Verzögerung von 0,65, setzen
wir den Angriff zurück, sodass
wir erneut schießen können Aber wenn wir im Visier sind, lassen wir das
Geschütz nicht fallen, was ein Ereignis ist Wir haben
einen neuen Code erfunden und uns irgendwie
gehackt, um ihn zu erstellen , und ihn in der
veröffentlichten Schicht verwendet, was unser unteres Geschütz ist Lassen Sie uns nun mit dem
Ausfüllen dieser Funktion fortfahren ,
und dafür müssen wir
einen neuen Blueprint erstellen, wir werden zu den Blaupausen übergehen Wir werden zu Fähigkeiten übergehen. Wir klicken mit der rechten Maustaste und erstellen eine neue Blueprint-Klasse Nun, das ist nicht
gerade eine Fähigkeit, aber Hel Gate Bullet
war auch keine Fähigkeit Also werden wir
das PP-Schichtgeschoss nennen. Ich werde das öffnen. Das Erste, was wir brauchen
werden, ist ein Partikel. Also werden wir eine
kaskadierende Partikelkomponente hinzufügen, und sie wird aus Template und Mark bestehen, es gibt viele Markierungen Mark il. Es gibt zwei. Der ist Zuckerguss, wir
wollen den normalen. Wir, wir haben eine schöne
Kugel hier drüben. Ein Effekt für unsere Kugel. Als Nächstes
brauchen wir eine Kollisionsröhre. Eine Kollisionskugel ist
eigentlich kein Würfel. Lassen wir ihren Radius bei 32,
geben wir viel zu, um die Fläche
beheizen zu können , spielt keine Rolle,
ob wir direkt heizen. Seien wir nett zu unseren Spielern. Das nächste, was wir brauchen,
wir haben es tatsächlich in unserem BP ML
eingerichtet, ist dieser Punkt hier drüben , dass wir den Boden beleuchten wollen während sich die Kugel bewegt. Gehen wir zurück zu unserer Kugel
und fügen dieses Licht ein. Vielleicht ist es ein bisschen groß, dass der
Sühne-Radius 200 beträgt Bringen wir es näher an die Kugel
heran, und ich denke, das ist in Ordnung Schließlich benötigen wir eine Komponente zur
Projektilbewegung. Nun, diese Komponente ist genauso die Bewegungskomponente wie
die Rotationskomponente, eine Komponente
mit vielen Optionen Und das Einzige, was wir
ändern müssen, sind eigentlich zwei Dinge. Die Rotation
folgt der Geschwindigkeit, aber wir wollen, dass der Akteur immer seiner Geschwindigkeit
zugewandt ist. Außerdem wollen wir Schwerkraft-Skala
der Projektile auf Null setzen Vielleicht 0,1, unsere Kugeln neigen
nach unten, vielleicht 0,1 Aber wenn es zu viel ist
und wir sehen können, dass unsere Kugeln sehr
schnell in den Boden fliegen, sollten
wir
es wieder auf Null Nun, diese Komponente der
Projektilbewegung hat einen Vektor, der Geschwindigkeit genannt
wird, was bedeutet, in
welche Richtung und wie schnell fliege ich? Das
werden wir später berechnen. Aber wir werden zu unserem Ereignisdiagramm
gehen, um das Spiel
zu
beginnen, unsere Projektilbewegung und eine Geschwindigkeit Ich gehe zu diesem Pin
und erstelle eine neue Variable, nenne sie Geschwindigkeitsgeschwindigkeit Was es sein sollte. Also machen
wir daraus einen Vektor. Wir werden das so aufteilen wir
nur x und verwenden werden. Wir werden
diese Variable machen, Weihrauch bearbeiten und auf SP veröffentlichen R Der Grund dafür ist dass wir isometrisch arbeiten
und eine geneigte Kamera Und das bedeutet,
die richtige Drehung zu wählen und zu
schauen, um unsere Geschwindigkeit zu ermitteln, wo unsere
Kugel landen sollte. Das ist nicht so einfach wie ein Pop-down-Spiel Für den Moment verwenden
wir hier also X und Y. Aber ich denke, diese wenigen Informationen werden für später nützlich sein. Wie dem auch sei, als Nächstes sollten
wir unsere Kollision überprüfen. Also haben wir einen Feind getroffen? Wir werden die Kugel
auswählen. Wir werden anfangen, mit den sich
überschneidenden Veranstaltungen zu beginnen. Und wir werden
zuerst überprüfen,
ob der andere Schauspieler gültig ist. Denn wenn wir
zum Beispiel
auf einen sterbenden Feind schießen , der zerstört
wird, sollten
wir nichts tun. Als Nächstes sollten
wir uns fragen,
ob an der anderen Komponente gezerrt wurde? Das Etikett wäre ein Feind, und wir erstellen einen Zweig Und wenn es ein Feind ist, sollten
wir tatsächlich Schaden anrichten. Lassen Sie uns einen Schaden von eins anrichten. Vergiss nicht,
den Schadensverursacher anzuschließen. Dann werden
wir handeln. Dieser Fehler. Ein T, wahrscheinlich. Und was wir verwenden werden,
ist wieder die Markierung Ende, wie wir es bei der Explosion getan haben. Aber dieses Mal werden wir es viel kleiner
machen, 444. Und der Ort
wäre unser Schauspieler-Standort. Und wenn wir keinen Feind getroffen haben, spawnen
wir einfach Dmter Wir werden keinen Schaden anrichten,
es sei denn, wir hatten
zerstörbares Terrain und gehen
dann zum Schauspieler Wir treffen also einen Feind,
wir fügen Schaden zu, wir
erzeugen ein Partikel Wir treffen keinen Feind, wir
erzeugen nur ein Partikel
und zerstören Es gäbe also ein Problem mit dieser Konfiguration, dass, wenn
wir eine Kugel spawnen sie nichts trifft, sie einfach
für immer und ewig weitergeht Nun, eigentlich nicht, aber ja. Was wir tun werden, ist
zu unseren Klassenstandards
zu gehen und zu unserer Lebensdauer gehen
und sie auf Ich
weiß nicht, 5 Sekunden einzustellen Ich denke, das ist genug. Jetzt,
nur um unsere Kugeln zu testen Wenn wir fertig sind, denke ich,
das wäre für diesen. Ich sehe
dich beim nächsten Mal. Auf Wiedersehen.
101. Spielerschießen und VFX: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon
Action at PS Creation Course Zuvor haben wir
unseren Bullet-Blueprint erstellt. Oh, wir haben einen Partikel verwendet um den Trail-Effekt
und den Bullet-Effekt zu zeigen Und wir haben die Kugel verwendet, um Kollisionen zu
erkennen, wenn
wir mit der
Umgebung oder einem Feind kollidieren Und wir verwenden das
Punktlicht, um
ein wenig rotes Licht
auf dem Boden zu zeigen ein wenig rotes Licht , während sich die
Kugel bewegt Wir verwenden die Projektilbewegung,
um unsere Schwerkraft-Skala festzulegen, und sie wird
für die Steuerung unserer Bewegung, unserer Geschossgeschwindigkeit und
unserer
Geschosse verantwortlich sein Geschossgeschwindigkeit und
unserer
Geschosse den Einstellungen haben wir die Schwerkraftskala
ausgeschaltet und
die Rotation entsprechend der Geschwindigkeit eingestellt. Unser Schauspieler
schaut immer auf die Geschwindigkeit. Jetzt, wenn das Spiel beginnt,
nicht wir haben es gespeichert. Wir setzen die Geschwindigkeit der
Projektilbewegung auf eine Variable, die wir als Sollgeschwindigkeit
erzeugt haben, und wir verwenden
X und Y daraus Wir haben Weihrauch
editierbar gemacht und beim Spawnen sichtbar gemacht. Wenn wir die Kugel spawnen, geben
wir Danach haben wir
das Überschneidungsereignis abgeschlossen , bei dem wir gefragt haben, ob unser Akteur, mit dem wir
kollidiert sind
, gültig ist . Wir
prüfen im Grunde, ob der Akteur, mit dem wir kollidiert sind, muss? Wenn also die
Zerstörung noch aussteht ,
tun Sie nichts damit Und dann haben wir bei
einem Zweig nachgefragt, ob er das Tag E hat, was bedeutet, dass es sich um einen Feind handelt. Also fügen wir Schaden zu,
wenn es kein Feind ist, wir nur ein Partikel, was wir auch tun
, wenn
wir Schaden zufügen, und dann zerstören wir den Akteur Schließlich ändern wir die
Lebensdauer auf, glaube ich, auf
5 Sekunden, also auf 5 Sekunden, damit unsere Kugeln nicht
ewig verschwinden , wenn
wir sie abschießen Lassen Sie uns jetzt
unser Spa-Bullet-Event abschließen. Eigentlich eine Spa-Bullet-Funktion. Das Erste, was wir tun müssen, ist einen falschen Maulkorb herzustellen Und der Grund dafür ist, dass wir, wenn
wir zu unserem Skelettnetz gehen, Schnauze suchen Wir können sehen, dass sie
an sehr seltsamen Positionen platziert sind. Das liegt daran, dass sie
mit bestimmten Fähigkeiten, bestimmten Timing und einer ganz
bestimmten Art, eingesetzt zu werden, verbunden sind. Also werden wir das nicht benutzen. Wir werden ein
bisschen schummeln und in
einer bestimmten Position einen Muskel aufbauen , den
unsere Waffe erreichen kann Und wie werden wir das machen? Wir werden
unserem Bauplan eine Sinuskomponente
hinzufügen und ihre Position
verwenden, nennen
wir diesen Muskel. Jeder Ort, an dem unsere
Effekte für unser Schießen erzeugt werden. Gehen wir also zu unserem
Viewport und dem Standort. Eigentlich habe ich einen
Standort im Kopf, ich getestet habe und der okay aussieht Es wird 128 auf X sein, wird -28 auf Y sein, und es wird oder
tatsächlich E acht auf Z sein Das ist
also der Punkt, an
dem unsere Waffe reicht und es ist
mit der Waffe,
dass es darum geht, wo sich
unser Muskel befinden sollte Gehen wir also zurück zu unserem Spam-Bullet und verwenden
diese Muskelvariable, wir werden die Position ermitteln,
die Position des Wortes ermitteln Und wir gehen zu einem
Meter an dieser Stelle. Lassen Sie uns diese beiden Standorte verbinden. Für das E-Meter verwenden
wir Last Shot Muzzle Flush.
Davon gibt es jede Menge. Aber ich glaube, es gibt nur
einen mit diesem Namen. Die anderen sind lokal, das heißt lokale Koordinaten
und der Zuckerguss. Also ja Letzter Schuss: Schnauzenspülung. Wenn wir jetzt
einfach damit spielen, sehen
wir sofort ein
Problem mit der Ze-Spülung Auch hier ist es die Rotation , bei der
unsere Charaktere rotieren sollten , weil sie
momentan genau das Gegenteil ist Und es ist auch ein bisschen groß. Ich wollte auch die Größe testen. Also lass uns zurückgehen. Lassen Sie uns die Skala auf 0,3 setzen. Und die Rotation.
Wir werden unsere Kapsel rotieren lassen, denn das ist es, worauf wir achten. Aber jetzt
sollte das gut funktionieren. Wir ziehen um, nachdem
wir geschossen haben. Aber das liegt daran, dass wir die
Bewegungseinschränkungen nicht
eingehalten haben und der Spieler
im Grunde genommen die Steuerung im Controller übernimmt. Weil all unsere Steuerungen im Grunde die Maus
sind. Die Maus benötigt also ein bisschen Code, um zu entscheiden, was sie tut. Lasst uns jetzt das
Gameplay beenden, lasst uns zurückgehen. Und das nächste, was
wir
tun werden, ist wieder einen Meter zu spawnen Aber dieses Mal angehängt. Und dieses Mal werden wir den Muskel
dazu benutzen. Ein Ort, dem er folgt,
weil diese Punkte, sind Berührungspunkte, das sind die Sockelnamen
des Skeletts, von dem wir gesehen haben, dass der Bewegung des
Skeletts
folgt, wo sie sich befinden. Aber wir werden es noch einmal auf die Stelle der Schnauze Und wir werden die Wortposition
beibehalten. Ja, behalte einfach die Wortposition. Die Rotation spielt
eigentlich keine Rolle. Und für den Artikel wählen
wir
den letzten Punkt Lush aus. Und ich werde es ein
wenig
modifizieren , weil wir nicht das eigentliche
wollen Finden
wir es zuerst,
lokal, zuletzt. Ich glaube, das ist es. Ich will, dass es verschlossen ist. Gibt es einen
entsperrten? Ja, das gibt es. Ja. Muskel angeschossen und blockiert. Das ist es, was wir brauchen.
Gehen wir zu diesem Partikel. Was wir ändern werden,
ist ein sehr kleines Detail. Wir werden zum Medikament übergehen und den Wert
von zwei auf, sagen wir, 0,5 ändern . Es ist ein bisschen mehr, nicht so viel Luftwiderstand. Wir werden
dieses Partikel schließen. Lass uns zurückgehen.
Könnte ein bisschen groß sein. Lass es uns überprüfen. Wir sollten uns vielleicht ein bisschen niederlassen. Iss nicht mal. Lass uns das debuggen.
Gehen wir zurück zu unserem Bauplan Mal sehen, was los ist. Okay, ich habe es nicht
an die Komponente angehängt. Wir legen fest,
welcher Knochen gesperrt werden soll, welcher Knochen befestigt werden soll, aber wir legen nicht
fest, welches Netz. Also werden wir dieses Netz verwenden. Compp speichern. Also lass uns
zurückgehen und testen Ich denke, die Größe wäre groß. Schicht. Ick. Wir haben Rauch. Ordnung. In Ordnung. Es funktioniert in allen Richtungen korrekt. Dies ist eine weitere Möglichkeit, etwas
Ihrer Rotation folgen zu lassen. Du fügst es deinem Charakter hinzu. Fahren wir nun mit dem
Spawnen unserer Kugel fort. Wir werden vom Unterricht aus anrufen. Wir werden die Transformation
aufteilen. Wir werden unsere Kugel
auswählen. Das Wort Standort
sollte wieder unser Muskel sein. Und jetzt brauchen wir eine Schussgeschwindigkeit. Jetzt nutzen wir vorerst nur
, um unsere Kugeln
zu sehen Wir werden den tatsächlichen
Vorwärtsvektor der Kapsel verwenden Vorwärtsvektor der Kapsel Lass mich die Kapsel herbringen. Lass uns weitermachen, Vektor. Multiplizieren wir das mit einer Geschwindigkeit, die ich nicht habe, und 101.000 Stellen wir eine Verbindung zur
Geschwindigkeit her. Lass uns schießen gehen. Wir schießen unabhängig davon
, wo sich unsere Maus befindet, wir schießen und
unsere Kugel explodiert Zu guter Letzt brauchen
wir natürlich ein Geräusch Gehen wir also hierher, und nachdem wir unsere Kugel spawnen, spielen
wir Sound D und verwenden den
Sound als Pistolensound Jetzt sollten wir beim
Schießen Ton hören. Kann ich bitte überprüfen,
ob es das beschädigt, was meiner Meinung nach nicht der Fall ist. Es sollten fünf
Puls sein, nicht wahr? Also lass uns das überprüfen. Und ich glaube, ich
weiß schon, was es ist. Wir sollten eigentlich
zuerst zum Höllentor gehen. Der Teufel zerrt. Siehst du? Wir haben Schauspieler, der
Es in der Kugel zerrt, ich frage nach dem Komponenten-Tag Ich sollte also nicht nach einer Komponente fragen.
Sollte nach einem Schauspieler fragen. Als Tag E der Komponente. Aber jetzt sollten wir in der
Lage sein , etwas zu drehen.
Falls wir es schaffen, drüben
gibt es zwei Höllentore. Lass uns gehen. Ja. Wir können
Höllentore nicht zerstören. Wir kommen dorthin. Oh, ich denke, das wäre ein guter
Zwischenstopp für diesen. Ich will dich beim nächsten sehen. Tschüss.
102. Spieler-Todesanimation und Mechanik: Hallo und willkommen zurück zum
Game Design-Workshop und zum prozeduralen
Dungeon-Action-Rollenspiel-Kurs zur
Erstellung von
Real Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur
Erstellung von
Real Engine Five-Action-Rollenspielen Im letzten Teil haben wir das
Spawnen unserer Kugel abgeschlossen Spawnen unserer Kugel abgeschlossen Wir sind fertig. In Zitaten , weil wir
die richtige Geschwindigkeit benötigen Also haben wir einen E-Meter
an einer falschen Wir haben vor
unserem Charakter einen falschen
Ort geschaffen, den wir Maulkorb
nennen werden , und wir spawnen dort einen Und wir verwenden die Rotation der Kappe,
um diesen um einen Meter zu drehen Das ist zum Beispiel der Meter, unsere Schnauze
blinken
lässt Oh. Dann spawnten wir einen Emitter, an dem auch das Netz im
Sockelmuskel
befestigt war Wir haben also unseren Rauch, der
ein bisschen unserer Waffe folgt. Unsere Bewegung in unserer Waffe. Dann
spawnten wir unseren Junghennendarsteller wobei die Position des Spawns
das Wort Position
der Schnauze war, und dann haben wir
eine falsche Geschwindigkeit zur Vorderseite unseres Charakters
erzeugt eine falsche Geschwindigkeit zur Vorderseite unseres Charakters Und dann haben wir ein Geräusch abgespielt. Nun, bevor wir weitermachen und Bewegung
unseres Charakters festlegen und darauf,
wohin er eigentlich zielt, sollten
wir die letzte Bewegung abschließen. Lassen Sie uns hier einen Kommentar hinterlassen. Haustier. Schießen Sie tatsächlich. Ich wäre korrekter. Das Letzte, was wir
brauchen, ist unser Gesundheitssystem. Wir haben
es bis zu einem gewissen Punkt geschaffen. Aber wir haben nicht
entworfen, was passiert. Wir haben unseren
Stan nicht. Wir haben nicht viele Dinge, die passieren,
nachdem wir Schaden erlitten haben. Lassen Sie uns also
mit dieser Logik weitermachen. Als Erstes haben wir gesagt, dass wir
unseren Charakter als Star markieren werden , wenn
wir Schaden erleiden. Und das bedeutet, dass
dies
auch eine Gnadenfrist
sein sollte auch eine Gnadenfrist wir nicht
betäubt werden, sonst werden
wir den Stand
gesperrt, wenn wir zum Beispiel kontinuierlich
Nonmag haben, für den Turm, der ununterbrochen
feuert, oder wenn uns viele
Gegner gleichzeitig Wir werden hier
einen Ast aufstellen
und fragen, ob wir angestarrt werden
können werden für diese Variable werben Wir werden für diese Variable werben
und sie C B nennen. Also, das
ist eigentlich ein sehr schlechter Name Nennen wir es Cool Down. Wenn Sn im Cooldown ist, tun wir das, wenn S nicht im Cooldown ist, machen
wir etwas anderes. Als Erstes
setzen wir Stan auf Cooldown. Aber wenn es wieder
losgeht, ist es von Anfang an. Zweitens sollten
wir unseren Zustand ändern. T. Als Nächstes sollten wir ein
Hitzesound abspielen. Ein Ton zwei D. Der Grund, warum wir es nur auf
Stun
spielen , ist, dass wir nicht wollen, dass
bei jeder Hitze ein Geräusch entsteht, sondern dass bei jeder Hitze, die
uns betäubt, der Aber wir werden die
Hitze nutzen. Ich Herm. Wir werden einen Hert Mel benutzen. Und dann werden wir
eine Frage stellen, ob wir tot sind. Denn wenn wir nicht tot
sind, werden wir etwas anderes
tun. Wenn wir tot sind,
werden wir den Tod spielen und den Tod spielen, wenn
wir für diese Sendung werben. Das alles ist tot.
Nennen wir das tot. Lassen Sie uns ein benutzerdefiniertes Ereignis erstellen. All dieser Tod und
nenne ihn unwahr. Wenn wir jetzt nicht tot sind, wollen
wir einen Hitzeeffekt spielen Es zeigt also auch visuell
, dass unser Charakter Hitze bekommen hat. Wir machen das. Lassen Sie uns
eine weitere Montage erstellen. Nun, es ist auf Hitze eingestellt. Eigentlich müssen wir ein Vorbild sein. Wir haben also diese
Hitzereaktions-Front. Wir werden
eine Montage daraus erstellen. Wir
geben die Montage ein, wobei die Gruppen-Slots zum
oberen Steckplatz gehören. Oberkörper. Gehen wir zurück zu unserer Figur
und spielen ihre Montage. Wählen wir unser Skelettnetz aus. Und unsere Montage. Es reagiert von vorne. Und was wir jetzt tun werden
, ist, diese Kette
von Ereignissen nicht mehr zu
durchlaufen , das heißt,
wenn wir aufhören, die Montas zu spielen, die nächsten Dinge tun, werden
wir uns für das
komplette und unterbrochene entscheiden Wenn also etwas das unterbricht
oder das abgeschlossen ist, dann werden wir etwas anderes
tun Wir werden unseren Spielerstatus ermitteln,
welchen Spielerstatus, weil dieses Ergebnis
je nach Spielerstatus variieren wird, ein bisschen, nicht sehr Und wenn wir auf
Normal-A oder ich wären, wollen
wir zu
einer normalen Position zurückkehren. Wir werden den Zustand wieder
ändern. Zu normal. Wenn wir normal wären, wenn wir
zielen würden , weil es unser Zielen
unterbricht Wenn wir versuchen zu schießen und etwas auf
uns schießt und es uns trifft, unterbricht
es unser Ziel,
also sollten wir erneut zielen, und das auch einfach genauso Und was wir danach
tun werden, wird sich ein bisschen
verzögern Sagen wir 2,5 Sekunden. Und dann stellen wir
den Non-Cooldown ein. Ich mag
dieses Geräusch nicht und s. Ich bin nicht
cool, vielleicht war es ein C. Wie dem auch sei, kompiliere und speichere. Aber im Grunde ist das unser Countdown, wann wir wieder fassungslos werden
können Nun, für den Fall, dass wir fassungslos sind. Wenn wir unsere Schicht nicht verlassen würden. Wenn ich ziele
und schieße, werde ich fassungslos. Schlecht, das ist der Fall, wenn
wir uns abkühlen. Wir können nicht in diesem
Fall sein, wenn wir
fassungslos waren , was hier passiert ist. Ich habe eine Verbindung hergestellt, ich habe
die falschen Dinge angeschlossen. Lu, während es passiert ist.
Das ist hier. Also, wir sind jetzt Star, wir sind dabei, uns auf den Stand und wir ändern den Zustand. Wenn wir also den Staat ändern, können
wir nicht zielgerichtet sein, also werden
wir standhaft bleiben. Aber wenn wir schon
stehen und zielen, dann sollte das
unser Ziel unterbrechen, was auch immer passiert Aber wenn wir fassungslos
sind und immer noch auf Shift drücken, sollten
wir zu unserem Ziel zurückkehren Aber wir werden hier
eine Filiale einrichten. Und wenn es falsch ist, werden
wir
hier eine Verbindung herstellen, und wenn es wahr ist, werden
wir hier eine Verbindung herstellen, und die Bedingung ist, wenn
wir immer noch zielen, also nach unten zielen, wenn wir
immer noch Shift drücken. Wenn wir fassungslos sind, werden
wir im Grunde nicht vom Schießen
unterbrochen Aber wenn wir zielen und
bereits fassungslos waren, dann werden wir unterbrochen uns das zweite Mal etwas
angreift, brechen
wir tatsächlich unser Ziel, was eine versteckte
Mechanik im Spiel wäre Wie dem auch sei, lasst uns
mit unserem traurigen Teil weitermachen, unserem Tod, wenn wir verlieren.
Was auch immer passiert, muss einmal passieren Also zwei einmal. Als Nächstes sollten wir den Death Sound spielen,
also Sound für D abspielen. Eigentlich sollte
es nicht das Erste sein, aber lassen Sie uns diesen schrecklichen
Sound von Anfang an rausholen Ich glaube, das nennt man
Schmerz. Schmerz zwei. Nun, wir können uns für
Anstrengung, Schmerz oder wahrscheinlich entscheiden, dieser ist
aggressiver, tödlicher. Nun, wir sollten die Bewegung hier
beenden, aber wir haben
den Controller-Teil noch nicht gemacht, also werden wir ihn
später machen und natürlich unseren Zustand auf Tod
ändern, was die Standardeinstellung ist. Und jetzt müssen wir eine Animation
abspielen. Also werden wir
unsere Todesanimation finden, also wird es Tod sein. Als Tod rückwärts
und Tod vorwärts denke
ich, dass der Vorwärts in den meisten Fällen besser
ist , weil der Rückwärtsgang in einigen Fällen
seltsam aussehen würde, aber wir werden daraus eine
Animationsmontage erstellen Wir werden den Schlitz auf den
Oberkörper umstellen. Nochmals, R, richtig? Gehen wir zurück zu unserem
Charakter und spielen eine Montage. Wählen wir unser Skelettnetz aus. Wählen wir die Montage aus. Und lassen Sie uns unser
Gameplay-Widget von unserem Bildschirm entfernen. Es gibt also keine
Gesundheitsteile mehr oder so. Spielmodus von oben nach unten. Hier sind wir. Spielweise. Vom Elternteil wegziehen. Das wird sofort geschehen. Wir werden nicht auf das Ende der Montage
warten oder etwas benachrichtigen. Was wir tun müssen, ist ein Spiel über den Bildschirm zu
erstellen. Aber lass uns das
beim nächsten machen. Tschüss fürs Erste. Wir sehen uns dann.
103. Mauserkennungssystem: Hallo und willkommen zurück zur Game Design Workshop-Engine Five Erstellung von Curse mit der
Game Design Workshop-Engine Five der
Procedural Dungeon Action
APs Zuvor hatten wir mit
unserem Death Function
Death Event aufgehört . Und wir haben gesagt, dass wir
ein Spiel brauchen , das im Grunde
zeigt, wann wir sterben. Aber lassen Sie uns
von Anfang an beginnen. Wir haben die Fortsetzung
unseres Event-Events geschaffen , bei dem wir Gesundheit hinzufügen und entfernen
mussten. Wir haben gefragt, ob wir
schon auf Stun sind, ob wir auf Stun Cooldown sind Wenn wir nicht auf Stun Cooldown sind,
dann schalten wir, dass
wir uns auf Sun Cool Down befinden, und wir stellen
unseren Modus auf Betäubung Und dann spielen wir ein Geräusch ab, das dem
Spieler anzeigt, dass wir Wenn wir auf Stun-Cool Down sind, dann stellen wir einfach gleich die
Frage, ob wir tot sind? Wenn wir tot sind, machen wir weiter,
wir sind ein Todesfall. Wenn wir nicht tot sind, spielen
wir eine Animationsmontage ab, um zu
zeigen, dass wir getroffen wurden, aber sie kann durch Gehen,
Bewegen oder was auch immer
unterbrochen werden und sich verändern. Und ob vollständig oder ununterbrochen, wir wechseln je
nach Zustand. Was tun wir? Im Grunde haben wir also
eine versteckte Mechanik entwickelt , bei der wir beim ersten Mal, wenn wir zielen und schießen, zu unserem Zielen zurückkehren,
sodass wir wieder schießen können Aber wenn wir beim zweiten Treffer sind,
was bedeutet, dass wir bereits
zielen, weil er seinen Zustand nicht geändert hat, weil
wir blockiert waren, dann kehren wir zur Normalität
zurück und
unterbrechen unseren Angriff Als Nächstes haben wir 2,5
Sekunden gewartet, um die
Betäubung einzuschalten und die Abkühlung auszuschalten. Das ist
also unsere Gnadenfrist, um nicht betäubt
zu Bei unserem Event Tod haben
wir es einmal gemacht, wir haben den Todessound gespielt, ein schreckliches Geräusch, und wir haben den Zustand auf Tod
geändert, und wir haben unser Todesmoa gespielt Lassen Sie uns nun unser Widget erstellen Wir entfernen auch
das Gameplay-Widget aus dem übergeordneten Element, sodass wir den
Gesundheitsteil oder so etwas nicht mehr sehen Oh, lassen Sie uns nun im Grunde
unser Widget für
unser Spiel über den Bildschirm erstellen . Lass uns zur Benutzeroberfläche gehen. Lass uns klicken. Gehen wir zu Benutzer-Widgets,
Benutzer-Widget-Blueprint und lassen Sie uns das Spiel mit G beenden. GEH. Lass uns das öffnen. Lasst uns einen Cvass reinbringen. Und eine SMS. Schreiben Sie das Spiel über. Verankern wir es in der Mitte. Lassen Sie uns Position
x zwei minus 175 verschieben. Lassen Sie uns die Position y ändern, um zu fliegen. Sagen wir Größe x
drei und Größe 89. Stellen wir nun unsere Größe auf sechs ein. Es sieht etwas größer aus. Ich lasse es fett gedruckt. Geben wir Text ein, Spiel ist vorbei. Ich
glaube, das ist eigentlich ein Wort. Es liegt an Game over oder Game
over um ein Wort oder zwei Wörter. Ich mag es mit zwei
Wörtern, sieht besser aus. Es ist ein bisschen festgelegt, das
auf dem R basiert, aber es ist in Ordnung. Ich glaube nicht, dass es auffallen
wird. Als Nächstes müssten
wir nun unseren Punktestand beschreiben. Bringen wir einen Text mit
und wickeln wir ihn in ein horizontales Feld ein. Lassen Sie uns diesen Text duplizieren. Geben wir für den ersten Text vier Grundpunkte ein. Und der nächste Text
sollte sagen wir eins,
zwei, drei, vier, fünf, 50 sein. Lassen Sie uns nun das vertikale Feld so gestalten , dass es dies umschließen kann Verankern wir es also
auch in der Mitte. Lassen Sie uns den Offset minus 125 setzen. Einhundert, es sollten zwei sein. Es ist groß, aber es ist in Ordnung. Was wir tun können, ist einfach beide auf dem Feld
festmachen zu
lassen. Diese Ausrichtung auf der rechten Seite ist zu mittig. Falsche Ausrichtung nach rechts. Ja, das sieht schon besser aus. Ja, das wird für uns sein. Machen wir aus unserem 00-Text eine Variable und nennen wir sie Score
Underscore Score Ist eine Variable. Wir können es auf etwas setzen, und jetzt brauchen wir ein
weiteres horizontales Feld. Bringt es in die Cavas. Stellen wir die Krawatte visuell fest. Wir wollen, dass es hier unten ist. Vielleicht in diesem Teil des
Bildschirms bis hier oben. Stellen wir die Offsets ein.
Alles passt hierher. Also, was wir hier
hineinlegen werden, wird
eine vertikale Kiste sein. Und zwei Leerzeichen. So können wir das
vertikale Feld dort kontrollieren, wo es verläuft, und das Leerzeichen
sollte eins am Anfang eins unter dem vertikalen Feld sein. So können wir alles überprüfen. Und wir werden die
beiden Leerzeichen auf 0,1 ändern. Also haben wir diesen leeren
Raum an den Seiten gegeben. innerhalb des vertikalen Lassen Sie uns innerhalb des vertikalen Felds auch zwei Leerzeichen und wieder
ein horizontales Feld
zwischen den beiden Leerzeichen platzieren , und wir werden
festlegen, dass dieses Feld tatsächlich das Feld sein
wird, in dem sich
die Tasten befinden. Wobei auch einige Leerzeichen benötigt werden. Bringen wir die Knöpfe
und die Abstandshalter mit. Wir brauchen zwei Knöpfe, eins, zwei. Bringen wir wieder ein paar Abstandshalter mit. 12, drei, und wählen wir
alles aus, was wir fühlen möchten. Stimmt das? Jetzt ändern wir die
Seitentasten auf 0,1 p. Ich denke,
das gibt uns standardmäßig ein schönes
Becken für unsere Buttons. Lassen Sie uns nun entscheiden, hier
O und hier einen Text zu schreiben. Nennen wir das Hauptmenü. Und das andere,
nennen wir das Quid-Spiel. Eigentlich habe ich einfach gekündigt. Was wir tun
werden, ist,
zu diesen beiden Tasten
A und dann zu gehen und
auf jeder von ihnen auszuwählen. Das Ereignis, auf das geklickt wurde. Lassen Sie uns diese Muster benennen , weil ich keine
Ahnung habe, was welches ist Also das ist das B-Menü
und das ist das B-Qui Jetzt sind Ereignisse benannt, also das ist das Qui, das wir spielen. Und das ist das
Hauptmenü, das wir auf der Ebene öffnen. Erinnern Sie sich an den Loop,
über den wir am Anfang gesprochen haben. Das wäre unser Levelname. Lass uns das kopieren und einfügen,
es ist Spiellevel. Durch Drücken wird alles neu geladen und wir gelangen zu unserem
Hauptmenü und beenden unser Spiel Was wir nun konstruieren
wollen, unser T-Score und ein Xt Lass es uns hier verbinden. Unsere Punktzahl, die
wir für eine Punktzahl verwenden werden. Lass uns unsere Münzen für eine Punktzahl verwenden. Also werden wir uns einen Modus besorgen. Wir werden von oben nach unten werfen. Wir werden auf
Reinguss umstellen und unsere Münzen holen. Gesamtzahl der Münzen. Lass uns das hier
verbinden. Unser Punktestand sind also unsere Münzen. L Lass uns kompilieren und
lass uns unser Todessystem testen. Eigentlich bevor wir unser Sterbesystem
überprüfen. Gehen wir ganz
schnell zu unserem Charakter und ändern unsere
Mx-Gesundheit auf eins. Wir sterben also sofort aus einer Falle und warten nicht auf zehn Treffer. Lasst uns eigentlich nebenan sterben. Wir sterben nicht. Lassen Sie uns gestalten, was vor sich geht. Das liegt daran, dass wir hier nach dem Tod
suchen, der Variablen tot. Wir sollten überprüfen
, ob unser Leben dem Tod entspricht, unser aktuelles Leben gleich
oder weniger als Null
ist . Wenn dem so ist, sollten wir auch die
Wahrheit sagen. Jetzt sollten
wir
sterben können. Wahrheit sagen. Jetzt Die Falle hier. Oh, er ist gestorben, aber wir können uns
immer noch bewegen, wie du siehst. Aber wir können
keinen weiteren Schaden einstecken. Aber wir sterben. Jetzt können wir uns
bewegen, weil wir eine Stop-Move-Funktion
einrichten müssen . Aber damit eine
Stop-Motion-Funktion funktioniert, müssen
wir kontrollieren, wie wir uns bewegen. Außerdem
erscheint das Widget nicht , weil wir es
nicht aufgerufen haben Gehen wir also in unseren Tod. Gehen wir zuerst zu unserem Spiel, unserem Bereich zur Widget-Erstellung. Lassen Sie uns eine benutzerdefinierte Lüftungsöffnung erstellen. Nennen wir dieses Ereignis GO. Lass uns diesen Teil von
hier und vom Play-Controller kopieren. GEH hierher. Wir werden für diese Variable
werben. Eigentlich
müssen wir sie nicht bewerben. Weil wir
das Spiel danach einfach zurücksetzen werden. Wir öffnen einfach wieder das
Hauptmenü. Also addieren wir uns zum Viewport und dann gehen wir in
unseren Spielmodus und rufen GO auf. Jetzt haben wir also Death Screen. Ja. Alles
ist ein bisschen versetzt. S. Aber es ist in Ordnung. Wir können sie
etwas versetzt lassen. Dies ist kein Endprodukt. Also ich denke, das ist
es für dieses. Im nächsten Fall
korrigieren wir unsere Bewegung, bei der wir die ganze
Tasche die ganze Zeit haben. Im Grunde
ist es so, dass ich, wenn ich außerhalb der Karte ziele,
jetzt, wo wir
diesen Ort erreichen, ihn anmale. Wenn ich das
Nachrichtenprotokoll hierher bringe, Nachrichtenprotokoll zwei,
Fenster A, Nachrichtenprotokoll. Lass es uns löschen. Wie wird das werden. Sie können sehen, dass es keinen Fehler,
keinen Fehler, keinen Fehler gibt. Wenn ich die Maus irgendwo hinbewege
, wo sie auf nichts trifft. Es sollte
den Fehler erzeugen, ist es aber nicht. Wo ist dieser Fehler? Ich dachte wirklich,
es wäre das.
Was ist jetzt los? Warum haben wir das nicht, hier ist es. Okay, so war es, wenn ich klicke,
lass uns den Fehler lesen. Es ist besser, zuerst die Fehler zu lesen. Eine Bewegungseingabe BP oder ein Zugriff, der nicht versucht, eine Eigenschaft
zu lesen, nennen wir Spaß Get P. Also im Grunde haben
wir
unser Telefon noch nicht besessen. haben
wir
unser Telefon noch nicht besessen Das ist der Grund, warum das passiert , denn wenn wir mit dem Spielen beginnen
und das Telefon spawnen, haben
wir
es noch nicht besessen. In Ordnung. Nun, eine weitere Sache,
die ich erwähnen möchte ist, wenn Sie diesen
Textur-Streaming-Pool über 9 K haben, könnte das Ihre Grafik an manchen Stellen ein
bisschen schlecht machen . Nun, wenn Sie einen
starken Computer haben, liegt
der Grund darin, dass
dieser Charakter Texturen mit einer Auflösung von
vier K hat , und die Standardeinstellung Wir und die Standardeinstellung Wir
haben noch viele andere Dinge
, die eine hohe Textur Wie Sie sehen können, ist dieses
Symbol hier dieses Mal etwas
durcheinander
geraten Das liegt am
Textur-Streaming-Pool. Also, wie kann man das beheben? Wir drücken die
Kacheltaste, inx auf eins, und wir
drücken R Punkt M.
Punkttextur . Nein. Ich lasse es einfach den Befehl
suchen, Texturen, Streaming ist Textdampfpool Unsere Größe des Streaming-Pools. Wenn wir dies
beispielsweise auf 3.000 setzen , ist
unser Fehler behoben. Unsere Texturen werden ebenfalls klar. Aber das bedeutet, dass es unseren Texturen
drei K Ram widmet. Denken Sie daran, dass
dies V Ram ist, also der
Grafikkartenspeicher Es ist nicht der Computerspeicher. Wenn Ihre Grafikkarte
nicht so viel RAM hat, würde
ich nicht empfehlen, die Größe zu
erhöhen. Weit weg. Das
wäre für diesen. Ich werde dich
beim nächsten Mal sehen, wie du diese Fehler behebst und die Bewegung
und das
Schießen mit der Maus unterbrichst Wir sehen uns dann, auf Wiedersehen.
104. Erweiterte Mausinteraktion für Elemente: Hallo und willkommen zurück
zum Game Design Workshop, dem Kurs zur mit
Real Engine Five Erstellung prozeduraler
Dungeon-Action-RPGs Zuvor waren wir
mit unserem Spiel über den Bildschirm fertig. Wir haben unseren Game Over-Text,
einen Text für die Weltrangliste
und einen Text für unseren Punktestand hinzugefügt einen Text für die Weltrangliste . Das ist ein bisschen
versetzt zwischen ihnen, aber es macht nichts,
ob Sie
einige Zeit damit verbringen möchten , die
Positionen zu korrigieren, seien Sie mein Gast. Jetzt haben wir zwei Tasten für
unser Qi und für das Hauptmenü verwendet , wodurch unser Spiel neu gestartet wird Um unser Spiel neu zu starten, verwenden
wir den Namen des geöffneten Levels, der das
Ganze neu startet, wie wir es besprochen haben, und es zeigt wieder das Hauptmenü an und löscht
alles, was wir Das vorherige Ich.
Für unser Pfund haben wir einfach ein
Pfundspiel benutzt, und das war's. Für unseren Punktestand in
Begin Construct haben
wir unsere Gesamtanzahl an Münzen
berechnet und den Text festgelegt. Lassen Sie uns nun mit
etwas Interessanterem beginnen. Gehen wir zu unserem
Top-Down-Player-Controller. In diesem Controller finden
wir
unter dem Cursor eine Funktion namens Standort abrufen. Am Anfang hatte ich es hinter mir.
Es ist dieser hier drüben. Wir können ihn auch hier finden. Das ist tatsächlich unter dem Finger. Das wollen wir unter dem Cursor haben. Wir werden es nicht unter dem Finger verwenden, also können wir es löschen, und was auch immer verwendet wird. Wo es benutzt wurde. Wir
brauchen das Touch-Event also auch nicht, bis es auch in Ordnung ist. Also, was macht unser „Standort
unter dem Cursor abrufen“ bisher? Es verwendet
also das Wärmeergebnis
unter Cursor für Kanal, und der Kanal ist Sichtbarkeit
und Spuren für komplex, und er gibt uns das Wärmeergebnis. So funktioniert es hinter den Kulissen, es erzeugt tatsächlich eine
Spurlinie von unserer Kamera bis zur Position unseres Cursors auf unserem Bildschirm und berücksichtigt die Tiefe und ob er auf etwas trifft oder nicht. einem ersten Schritt
wollen wir das also In einem ersten Schritt
wollen wir das also duplizieren, aber
mit einer Spurenkugel, sodass wir
den
Mauszeiger bei unserem Klick ein wenig vergrößern können . Ein weiterer Grund, wir
das
verwenden werden, ist, dass wir Lage sein
wollen,
eine Liste zu erstellen in der Lage sein
wollen,
eine Liste zu erstellen, deren Zeichen wir
ignorieren. Zum Beispiel unser Spieler. Und wenn wir darüber sprechen, gehen
wir zu unserem
Top-Down-Charakter über. Lassen Sie uns eigentlich zuerst eine
Variable auf Controllern erstellen. Nennen wir diese Referenz. Wie Sie sehen können, ist
es für mich bereits auf dem VP-Top-Down-Charakter. Wenn du es auf einen P-Charakter
von oben nach unten ändern musst. Eine Objektreferenz. Das liegt daran, dass ich einige Dinge
getestet und die letzte Variable hier belassen
wurde. Nun, da wir
unsere Spielreferenz haben, wir sie zu Beginn des Spiels in unseren Charakter
von oben nach unten Lassen Sie uns dem Spieler eine Chance geben. Stellen wir die Play-Referenz und stellen wir eine Verbindung
zur Play-Referenz her. Und jetzt ist es bevölkert. Unsere Referenz ist gefüllt. Und gehen wir zurück
zum Controller, und von unserer Play-Referenz erhalten
wir. Kamera, wir werden
einen weltweiten Standort ermitteln. Es gibt noch einen anderen Weg, wie wir unsere Kamera
für unseren
Spielerplan irrelevant
hätten machen können Wir hätten
den Kameramanager benutzen können. Und daraus
hätten wir den Standort der Klimaanlage ermitteln können
, der uns den
Standort unserer Kamera gibt. Aber dieser Weg ist auch in Ordnung, er macht unseren Spieler nur zuverlässig
. Und das ist unser Anfang. Jetzt bringen wir eine Kugelspur mit. Großer Kanal. Lassen Sie uns
den Radius auf 20 setzen. Unser Ende sollte unser Standort sein, unser Wärmestandort der Maus. Aber was ist, wenn die Maus
nicht auf etwas trifft? Was ist, wenn wir mit der Maus auf nichts
zielen? Also, lassen Sie uns eine Filiale einrichten
, um das zuerst zu fragen. Hassen wir? Wenn wir heizen, dann
erschaffe die Kugel. Wenn wir nicht heizen,
werden wir etwas anderes tun. Ich werde diese
Dinge hier abschalten, weil
wir die
Heizwerte an unsere Bedürfnisse anpassen werden. Nun, was machen wir, wenn
wir nichts hassen? Nun, was wir machen,
ist die Mausposition, und wir werden auch
bei Geburt B zur Welt gehen Die Verlagerung in den Wortraum. Der Grund, warum ich das tun
werde, ist dass wir,
wie wir gerade sehen können,
einige Dinge wieder verbinden müssen, wenn
wir auf
nichts stoßen wie wir gerade sehen können,
einige Dinge wieder verbinden müssen, wenn
wir auf Stimmt? Wie wir gerade sehen können, wenn ich auf nichts klicke, bewegt sich
unser Charakter nicht
und wir können sehen, dass der
Standort hier drüben ist. Wir können sehen, wo es tatsächlich
denkt, wir heizen. Die Musik muss leiser werden. Denn wenn es falsch zurückgibt, es tatsächlich Null zurück. Das müssen wir ändern. Wir müssen in der Lage sein, uns auf unsere Maus
zuzubewegen. Wir werden also diesen Ort hinzufügen,
das Wort Standort ist ein Vielfaches
, kein Addieren. Das ist die Anzeige. Es hat dieses
Basssymbol, das macht es zu einer Werbung. Jetzt werden wir
uns aber vermehren. Wir werden die Richtung
multiplizieren. Und wir werden
das in eine Ganzzahl ändern und dieser Richtung einen
Bereich geben. 3.300. UM 3.000. Nehmen wir die Reichweite unserer
Kamera etwa zwei k beträgt. Wir möchten
also, dass sie mindestens
niedriger ist als die des Charakters, zumindest auf derselben
Bodenhöhe. 3.000 wären also ungefähr in Ordnung. Und was wir tun werden
, ist
diese Variable, eine lokale Variable, zu bewerben . Und nennen wir das Zitat. Wenn ich zum Beispiel eine Verbindung herstellen soll, trennen
wir die Verbindung ein wenig
von der Trace-Leitung. Wenn ich
das mit den Wasserfällen verbinde
und es dann auch hier anschließe
und unsere
Wärmeposition oder den Ausgang ermitteln soll und es dann auch hier . Wenn wir das hier verbinden, sollten wir
jetzt in der Lage sein, zu den Klippen zu
laufen. Im Moment klicke ich hier, nein, warum passiert das? Macht keinen Sinn. Das ist
nicht der Controller. Was ist der Originalcode? Es passiert nicht,
weil der Standardcode bal ihm sagt, dass er sich
nur bewegen soll, wenn wir einen Hitzedurchgang
haben. Also wenn ich das auch verbinde, dann sollten wir
zur Klippe gehen. Ja, wir gehen
unserem Untergang entgegen. Es funktioniert Ich kann sehen, wie der Boden hier kodiert. Wir werden das später reparieren, oder lassen wir es so stehen ? Spielt eigentlich keine Rolle. Es geht nur darum,
die Wände der Fliese zu positionieren. Das ist also nicht der Controller. Jetzt haben wir gerade
das Problem behoben , dass
wir uns immer noch dem Nichts
zuwenden können, wenn
wir nicht zuschlagen . Aber das ist nur
eines der Probleme. Lassen Sie uns das trennen, und lassen Sie uns das wieder verbinden und die Verbindung trennen Wenn wir also nicht
auf etwas treffen, stellen
wir die Position der Hitze
auf die Position der
Maus und darunter ein Und jetzt fahren wir
mit dieser Logik fort. Was wir noch einmal fragen werden, wir auf etwas gestoßen? Lassen Sie uns das auf
Kamera umstellen, auf den Trace-Kanal. Wenn wir etwas nicht getroffen haben, bedeutet das, dass die
Maus etwas erhitzt, aber wir sollten nicht
darauf achten , weil wir uns auf einem anderen Kanal
befinden. Oh, das bedeutet, dass unser Standort
ein Maus-Wärmestandort werden sollte. Also werden wir
unseren Wärmestandort
auf unseren Maus-Wärmestandort ändern . Also, wie Sie sich vorstellen können, werden
die Spaghetti hier
wunderbar sein oder ein kompletter
Familienkurs Versuchen wir, es
so sauber wie möglich zu halten. Lass uns weitermachen. Wie wir sehen können, haben
wir eine Heizleistung. Benennen wir das in Enemy Heat um. Nein, denn so wie unser
System funktionieren wird, ist es egal, ob es vom
Feind getroffen wird oder nicht, wir werden uns trotzdem bewegen,
nicht unabhängig, egal. Nein. Was wir tun werden, ist diese Variable zu
bewerben, lokale Variable, nenne das. Es. Feind ist Aushilfe Weil wir wissen, dass
wir ein Problem mit demselben Namen Wir stellen sicher,
dass der Feind nicht getroffen wurde. Das wäre es, wenn wir keinen AM
hätten und wenn wir
nicht schießen würden. Jetzt lass uns später schießen. Gehen wir
davon aus , dass wir
nichts getroffen und es kein Feind ist. Wir klicken nur
auf den Boden. Fragen wir, ist das Ding, auf das
wir stoßen, ein Objekt? Um das zu tun, werden
wir eine Sequenz verwenden. Denn was auch immer passiert,
01 ist eine gleichmäßige Ausgabe, und unsere Null ist
eigentlich eine gerade Ausgabe, und unsere Eins
wäre etwas anderes. Nun, das sollte hier nicht
wirklich verbunden sein. Dieser wäre hier
angeschlossen, weil wir unseren Wärmestandort nicht
ändern wollen, aber wir wollen die Temperatur unserer
gegnerischen Hitze ausschalten, die standardmäßig ausgeschaltet ist Selbst wenn wir ihn hier anschließen würden, wäre das nicht wirklich wichtig,
denn standardmäßig Aber lass uns fair sein. Das ist also weg. Wenn wir nach einem Gegenstand
suchen, sollten
wir überprüfen, ob unser
Heizkörper gültig ist. Ich werde
unser Wärmeergebnis ändern. Ich werde es herbringen
und fragen, ob der andere
Schauspieler gültig ist. Das wäre der Beginn
unserer Reise zur Erkennung von Gegenständen. Eine Sache, die wir tun sollten, ist,
bevor wir mit dem Code weitermachen, zu unseren interagierbaren Objekten
zu unserer Truhe zu unserer großen Truhe
gehen ,
p die Truhe auch hier drüben. Womit
interagieren wir noch? Die Raumrequisiten. Ich
denke, das ist es, und zu den Gegenständen gehen
wir natürlich zu den
Artikeln und dem BP-Artikel Gehen wir zu Big Chest plus
Defaults und suchen dort nach Tug. Setzen wir das Tag I ein.
Ich werde das speichern
und es auch in die Truhe legen Ich für Item for
Interactable, ich weiß es nicht. Interferenz, das
ist der Schlepper, den ich gewählt habe. Sie können natürlich Ihre
eigenen Schlepper auswählen. Denken Sie
nur daran, sie
richtig zu platzieren. Gegenstände und Truhen
des Tags I, weil wir sie als Gegenstand
anklicken können Nun, ich denke, das ist ein guter
Haltepunkt für diesen. Wir
fahren mit dem nächsten mit unserem Code für vier Artikel fort. Auf Wiedersehen.
105. Mausinteraktionssystem und Eingänge: Hallo, und willkommen zurück zum Game
Design Workshop Real Engine Five Procedural Dangon
Action A BZ Zuvor haben wir die Position der Maus unter
Cursor beibehalten Position der Maus unter
Cursor Funktion, im Grunde ist
unser Maus-Wärmeergebnis das benutzerdefinierte
Maus-Wärmeergebnis, das wir erzeugen,
und wir haben damit begonnen,
unsere Hitze unter dem Cursor zu platzieren. Wir haben überprüft, ob wir etwas
binden, ob wir etwas erhitzen, und wenn wir das nicht getan
haben, ermitteln wir unsere
Mausposition, werfen ihren Ring
zur Weltposition
ab
und erhalten einen Punkt in diese
Richtung,
3.000 sind ihren Ring
zur Weltposition
ab und erhalten einen Punkt in diese
Richtung, tatsächlich in Reichweite zu dieser Richtung und haben
das als Wärmeposition festgelegt Wenn wir nun auf etwas treffen, erzeugen
wir ein
Kugelrennen mit einem Radius von 20, das bei unserer Kamera
beginnt und bei der Wärmeentwicklung unserer Maus endet Wir fragen, ob wir erneut
etwas getroffen haben , weil
wir dieses Mal nach Kameraspuren suchen. Wenn wir etwas getroffen haben, stellen
wir die Hitze ein, wenn
wir nichts getroffen haben, wir überprüfen die
Position, wir setzen die Position auf das Ergebnis des
Mauszeigers, das Ergebnis und wir stellen ein,
dass wir keinen Feind getroffen haben. Dann müssen wir noch ein paar andere Dinge
tun, und wir bekommen den Rücksendeschein. Aber das nächste, was wir tun sollten, und wir haben damit angefangen,
war unser System um zu überprüfen, ob wir
über etwas schweben oder nicht Und die erste Maßnahme in dieser Hinsicht besteht darin, unser Wärmeaktor-Ergebnis zu Außerdem fügten wir unserer
Truhe, unserer Kiste,
unserer Truhe, unserer großen Truhe und
unseren Gegenständen, den Zug, hinzu Kiste,
unserer Truhe, unserer großen Truhe und
unseren Gegenständen, den Zug, Oh, das ist das nächste,
was wir überprüfen, nachdem wir überprüft haben
, ob der Schauspieler gültig ist Hat der Schauspieler den Zug I.
Also einen Zug und den Ast und den Buchstaben I, und wir haben auch diese
Frage beantwortet Lassen Sie uns nun mit
einem Ast beginnen, was der Fall wäre, wenn
das, was wir
treffen, kein Gegenstand ist Was wir brauchen, ist eine Funktion. Also werden wir eine Funktion
erstellen. Nennen wir diese
Funktion Ear em Elect. Denn wenn wir
damit nicht auf etwas treffen, dann haben wir kein Ziel. Um diese Funktion zu füllen, benötigen
wir zwei Variablen. Keine lokalen, normale. Wir werden sie
machen und das wird die Art von Handlung sein. Das wäre
unser vorheriges Ziel. Nehmen wir an, wir bewegen den Mauszeiger, weil
wir den Mauszeiger über den Objekten bewegen. Lassen Sie uns den anderen
Elternteil benennen. Also, was machen wir
mit diesen Gegenständen? Denken Sie daran, dass wir
bei der Erstellung des PP-Elements diese beiden
Start-Hover- und Ende-Hover-Nachrichten erstellt
haben ,
also Nachrichten auf der Blueprint-Benutzeroberfläche Wenn wir also mit der Maus
über unser Objekt fahren, sollten
wir den Mauszeiger auf alle
Objekte, die wir gerade in der Hand hielten, beenden Also werden wir unsere
Vorschauen bekommen und wir werden Und wenn unsere Vorschauen gültig
sind, hier, dann über das Ende der Hover-Meldung Dann werden wir überprüfen, ob
der aktuelle Hover gültig ist. Und wir werden
eine Verbindung herstellen, ob der Hover mit dem Bus nicht
gültig ist und natürlich auch
der Endehover Wir werden das
Gleiche für diesen machen. Wir werden dieses Jahr
Copybase kopieren. das etwas näher bringen beenden
wir Hover mit dem, worüber
wir gerade schweben Und dann
setzen wir das aktuelle Over
und das vorherige Over auf Null, sie sind nicht mehr gültig Wir werden das
ungültige auch hier verbinden. Nur für den Fall, dass das gültig ist
und es nicht gültig ist oder
wir alle unsere Grundlagen abdecken. Kehren wir nun
zu unserer Funktion zurück und rufen wir
diese neue Funktion auf. Autoartikel auf „Falsch“ ausgewählt. Wenn wir also
etwas abdecken und es sich nicht um einen Artikel handelt, löschen
wir die Artikelauswahl. Wenn wir jetzt über
etwas schweben, benötigen wir eine Frage. Ist unser aktueller Hover
derselbe wie der Headactor? Entspricht das dem aktuellen Hover? Das ist der Schauspieler. Und wenn es wahr ist, tun wir nichts. Wenn das nicht stimmt, werden wir
unseren aktuellen Hover
nehmen
und wir werden rüber fahren,
weil das bedeutet, dass
wir etwas Neues bekommen und wir werden rüber weil das bedeutet, dass
wir etwas Neues Aber nur wenn das gültig ist, wenn unser letzter nicht gültig war, dann müssen wir
überprüfen, ob es gültig ist Denn wenn es gültig ist, müssen
wir den
Vis-Hover auf den aktuellen Hover setzen Wenn es nicht gültig ist,
dann dieser Hitzefehler, ich würde sagen, Sie versuchen, Null auf Null
zu setzen Ich würde es nicht mögen. Was wir jetzt tun müssen, ist unseren aktuellen
Hover ein wenig auf Hitze zu stellen Hover ein wenig auf Hitze zu Ich weiß nicht, ob du es
geschnitten hast. Ich habe dieses Jahr versucht,
eine Verbindung herzustellen, und
du hast mich nicht gelassen. Und der Grund dafür ist, dass
es ein Schauspieler ist, aber das ist eine Figur von oben
nach unten. Veränderung. Akteurreferenz, Variablentyp
ändern. Großartig, keine Abstürze. Sind Hover und Previous
nicht beide Schauspieler. Car Hover sollte nicht der Charakter von oben nach
unten sein. Macht Sinn, denke ich. Ich
werde das herbringen. Wenn unser aktueller
Hover nicht gültig war, bedeutet
das natürlich, dass
wir ihn direkt an unseren aktuellen Akteur weitergeben Und wir müssen den
Start-Chover auf diesen Schauspieler setzen. Aber der Schauspieler weiß, dass
es schwebt. Du fängst an zu interagieren. Wir brauchen eine andere Funktion. Aber machen wir es einfach
hier und rufen es unter an. Und wir werden es später auffüllen. Gehen wir zunächst
zu Event Graph und dann zu unserer
erweiterten Eingabe,
einem von der KI festgelegten
Action-Ziel-Klick. Jetzt werden wir
die Beratung nicht verwenden,
also werde ich die Verbindung trennen Was wir für
unsere Interaktion verwenden werden, ist das Komplette. Das bedeutet, dass ich geklickt
habe und es gibt im Grunde einige Regeln, wie man
auf denselben Frame klickt und loslässt Aber im Grunde funktioniert es so, dass es passiert,
wenn du klickst. Wir werden Click Hold
und weitere Details nicht verwenden . Eigentlich sind wir es, weil
es hier benutzt wurde, und wir werden einen Teil davon behalten, aber später, nicht jetzt. Was wir jetzt tun werden, ist
zu überprüfen, ob unser A,
unser Spieler, gültig ist. Damit wir nicht den lästigen
Fehler bekommen, den wir die ganze Zeit hatten. Ich will das komplette. Wenn du
etwas abschaltest, verschwindet es. Der Grund dafür ist, dass wir dieses R hier
haben das die restlichen Optionen
anzeigt
, weil sie sich verstecken. Wir müssen also fertig sein. Lass uns hier eine Verbindung herstellen.
Lassen Sie uns am Anfang tatsächlich
kopieren und einfügen. Trig löst
diesen lästigen Fehler nicht aus. Und wir werden auch keinen Schauspieler
einsetzen. Wir werden
den Stop Moving benutzen, aber wir werden unseren eigenen
machen. Unser Schauspieler ist gültig, und lassen Sie uns das weiter verbinden. Was wir tun werden,
ist jeweils den Spielerstatus, weil wir den
Spielerstatus hier drüben haben
und wir
nur interagieren wollen, wenn wir normal sind. Wir wollen nicht
interagieren, wenn
wir hacken oder so, wir wählen nicht zufällig Gegenstände aus Und lassen Sie uns tatsächlich
diesen Schwellenwert verwenden , den wir haben.
Lass uns hier einen Ast anlegen. Also, wenn unsere verstrichene Zeit unter dem Schwellenwert
liegt Wir stellen eine Verbindung zum Normalzustand her. Das heißt, wenn ich für eine bestimmte Zeit
auf
ein Objekt
klicke und es nicht loslasse, passiert das nicht. Interact wird nicht stattfinden. Also muss ich nur klicken und loslassen, damit die
Interaktion stattfindet. Wenn ich nur
mit der Maus auf „Rest“ klicke, sollten
wir keine Artikel auswählen
können Nun, auf diese Weise sollten
wir eigentlich nicht in der
Lage sein, Artikel auszuwählen Wenn wir diesen Knoten nicht verwenden, können
wir auf
Elemente klicken, z. B. den Mauszeiger über das M bewegen und entscheiden, wann wir ihn
freigeben und ihn einfach pixen Aber lassen Sie uns dafür sorgen, dass Sie
keine Artikel auswählen können, wenn Sie sie in der Hand haben Also, wir werden hier zwei Zweige verwenden und wir werden
diese Interaktionsfunktion einführen. Wenn wir es nun so belassen, wir
jedes Mal, wenn
wir klicken, versuchen wir
jedes Mal, wenn
wir klicken, zu interagieren. Aber was ist, wenn wir umziehen wollen? Wie unterscheiden wir zwischen
diesen beiden, wenn ich klicken und mich bewegen möchte und wann ich klicken
und etwas aufheben Nun, das wäre einfach. Wir haben unseren aktuellen
Hover hier drüben. Wenn das gültig ist, dann interagieren
wir. Wenn das nicht gültig ist, bewegen wir uns oder greifen an. A:
Bringen wir das her? Ansi brate die Dinge ein
bisschen. Ist das auch? Lass uns hier eine Verbindung herstellen.
Fügen wir noch eine Sache hinzu, wir sollten diese Frage hinzufügen
, d. h. wir bewegen den Mauszeiger über
ein Objekt in
den französischen Zweig und dann in
den Trigger-Zweig Basieren Sie dieselbe Frage, die wir stellen
möchten, auf den Auslöser. Schweben wir über einem Gegenstand? Wir schweben nicht mit der Maus über einem Objekt. Wir werden sehen, was später passiert. Wenn wir mit der Maus über ein Objekt fahren, werden
wir nichts tun,
weil wir überprüfen
möchten , wie lange
wir die Maus gedrückt halten Im Grunde handelt es sich um ein
On-Release-Event mit einem Begriff. Nun, nicht bei der Veröffentlichung, sondern
bei einem Presseereignis mit einem. Irgendwas dazwischen. Und das könnte zu dem Schluss kommen unser
Interaktionssystem
fast abgeschlossen ist. Wir müssen interagieren. Aber wir müssen zuerst ein paar
andere Dinge erledigen. Also, lasst uns mit
dem nächsten weitermachen. Ich denke, das ist ein
netter Höhepunkt für diesen. Ich
will dich dann sehen Auf Wiedersehen.
106. Minimalbereich-Interaktionssystem: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Erstellung von
Real Engine Five
Procedural
Dungeon-Action-Rollenspielen Zuvor waren wir
mit unserer Interaktionssequenz fast fertig. Wir haben eigentlich
mit unserer Suche nach
Artikeln geendet , wenn wir Artikel als
Teil der Funktion haben. Aber wir haben geprüft, ob es gültig ist. Wir haben überprüft, ob der Schauspieler
gegraben hat, um den Schauspieler nicht zu verbinden. Ja, wir müssen den Schauspieler
verbinden. wenn es Duck hat, und wir haben bei einer Filiale nachgefragt. Wenn es sich nicht um einen Schauspieler mit I handelt, löschen
wir unsere
gesamte Auswahl auf eine Funktion, die das Bewegen der
Maus in aktuellen oder vorherigen
Hoverelementen in beiden beendet Maus in aktuellen oder vorherigen
Hoverelementen Und dann haben wir anhand des echten Zweigs
überprüft, ob unser aktuelles Ziel das Ziel ist, das wir
erreichen Wenn ja, tun wir nichts. Ist dies nicht der Fall,
setzen wir unseren aktuellen
Hover auf „Hover beenden Wir setzen unseren aktuellen
Hover auf den vorherigen Hover
und dann setzen wir das Objekt, über das wir
den Mauszeiger bewegen, auf unseren aktuellen
Hover
und unsere Mitarbeiter setzen den Mauszeiger darauf Für den Fall, dass unser aktueller
Mauszeiger nicht gültig war, wir
also nichts also Wir setzen
unseren aktuellen Hover nur auf den Zielakteur Dann gingen wir
zu unserer KI-Verbesserungsaktion A über und klicken auf Ziel Das ist schrecklich. Okay. Wir haben den fertigen Zweig
der Aktion verwendet
, der einige eigene Regeln hat. Und im Grunde haben wir die Regel
beibehalten, dass
wir nicht interagieren, wenn es an einem
bestimmten Schwellenwert gedrückt wird . Und wir haben die Interaktion nicht beendet , weil wir
einige zusätzliche Dinge benötigen. Und eines der zusätzlichen Dinge ist , dass wir den Stop-Moving gelöscht haben, also werden wir einen eigenen
erstellen. Oh, lassen Sie uns ein individuelles Event erstellen. Nennen wir das Stopp. Wir bewegen uns. Und lass uns ein Bleion erschaffen.
Nennen wir es Bleion Wir bewegen uns. Und lassen Sie es uns zu Freunden machen, denn wenn wir aufhören, uns zu
bewegen, würde das verschwinden. Wenn wir aufhören, das zu verschieben, wollen
wir, dass das wahr
wäre Und dann werden wir nachschauen. O überprüfe, ob die Kontroll-P
gültig ist , weil wir keine
Pacer wollen, bevor das Spiel beginnt Und wir werden eine
Eingabe hinzufügen , die
Null wäre, wenn der
Controller-Punkt gültig ist Aber dadurch hören wir auf, uns zu bewegen. Und warum brauchen wir diese Variable? Nun, wir haben diese
Move-Two-Funktion hier drüben. Wir werden sie nicht benutzen. Wir werden bei Tick Event unsere eigene
Funktion einrichten. Aber ich schweife ab. Wir
sind noch nicht da. Es gibt also neben der Interaktion noch einige andere
Punkte, bei denen wir
aufhören müssen, uns zu bewegen. Und das wäre,
wenn wir zielen, wenn wir weitermachen. Ich glaube, wenn wir Schaden
nehmen. Gehen wir also zurück
zu unserem Charakter. Gehen wir zu unserem Ziel. Wir brauchen hier die
Controller-Referenz, bringen
wir den BP-Controller mit. Gehen wir ein bisschen weiter. Lasst uns umziehen. Was uns hierher
führt. Nun, Charakter, wir bestehen,
wollen, dass das
bei jedem Schaden passiert, und zwar nach dem
Entfernen einiger Lebenspunkte. Und das Letzte, wo wir es brauchen
, ist natürlich nach unserem Tod.
Lege es, nachdem wir den Ton abgespielt haben. Okay. Ja, nachdem wir uns jetzt
platziert haben, ist alles in Ordnung. , spielt keine Rolle, denn
dadurch wird
unser Mobbing ausgeschaltet und wir werden es nicht wieder einschalten
können Oh. Wir haben unseren Stopp hinzugefügt,
wo immer es nötig war. Das ist der Ort, über den wir
angefangen haben zu sprechen, dass wir ihn hinzufügen werden, und das wäre die
Interaktionsfunktion. Oh, was macht unsere
Interaktionsfunktion? Sie prüft, ob unsere
aktuelle Version gültig ist. Und dann senden wir eine Nachricht. Korrekt. Und hier hör auf dich zu bewegen. Also im Grunde können
wir jetzt mit unseren
Dingen in der Welt interagieren. Aber auch weil wir diese Funktion
durcheinander gebracht haben, werden wir uns
wahrscheinlich nicht bewegen können Lassen Sie uns das ganz schnell überprüfen. Ja, wir können
uns gerade nicht bewegen. Aber wir können schießen und uns
bewegen, solange wir fantastisch sind. Und dann können wir uns nicht bewegen. Unglaublich. Es funktioniert nur
draußen, innerhalb des Labyrinths, es funktioniert nicht wirklich
, aber draußen bekommen
wir einen Punkt, den
wir bekommen sollten Wie dem auch sei, spielt es eine Rolle weil wir bereits die
Tools haben, um das zu beheben Wir brauchen nur ein
bisschen zusätzlichen Code. Wir haben die Ressource.
Ich meine, wir brauchen. Nein. Was wir
tun werden, ist te Eigentlich brauchen
wir einen Zweig,
aber wir brauchen nur einen Lass uns einfach den folgenden löschen. Wir brauchen das Folgende
nicht. Wir brauchen das Cast-Ziel
und nur False. Denn wenn wir
keinen Feind treffen
, dann laufen wir. Und wir wollen in keiner Situation
laufen. Wir wollen laufen, wenn wir uns im Normalzustand
befinden. Lasst uns ihren Staat erreichen. Lass uns eine normale Verbindung herstellen. Wenn wir jetzt normal sind und
einen Feind treffen, werden
wir schießen.
Das ist leicht zu bewerkstelligen. Dafür gehen wir zu unserem
Schießmechaniker Das Shooting hier drüben. Und natürlich werden
wir wieder ein bisschen schummeln. Wir werden
diesen Teil
hier verwenden, weil diese
Frage
über unseren Game-Pod-Controller gestellt wird , und wir werden ein benutzerdefiniertes Event
durchführen Nenn es. Zwei und wir verbinden uns einfach
hier drüben. Jetzt können
wir vom Player-Controller aus von der
Spielerreferenz aus anrufen, Shot. Wenn wir jetzt
über etwas hinwegfahren, können
wir darauf schießen Aber auch hier gilt: Um auf
etwas zu schießen, sollten wir in der Lage
sein, uns zu bewegen Wenn wir also ein
Cache-Ziel gespeichert haben, wenn wir unser
Cache-Ziel gespeichert haben, dem es sich eigentlich um unsere Heat - oder Cursorposition handelt, können
wir das Verschieben einstellen. Und wie werden wir
weiterziehen, nachdem wir die Verschiebung nach
gelöscht haben , wodurch
kein einfacher Verschiebeort hinzugefügt wird. Ich denke, die vorherige Version fügt
nur die Eingabe der Anzeigenbewegung hinzu. Eigentlich in der Funktion folgen. Ja, ich hatte die Eingabe „
Bewegung hinzufügen“. Nein. Lassen Sie uns diese Funktion verwenden, aber ein wenig aktualisiert. Weil wir
sie aufrufen werden, und das würde
unserem aktuellen Standort
ständig eine Bewegung hinzufügen . Lassen Sie uns die Position unseres Teiches auf X und
Y überprüfen. Also lass uns das hier kaputt machen. Lasst uns den Ort aufschlüsseln
, von dem sie kommen. Dieser Vektor
hier drüben
ist natürlich der
Standort des Spielers, unser Teich. A: Wir werden prüfen, ob
das fast gleich ist, y ist für x y mit dem X und Y
unseres Eingangsortes. Nehmen wir eine Toleranz von 15, wobei
dieser Wert richtig denn was wir später
tun
werden, bedeutet, dass unser Charakter aufgrund der Waffe den Arm sehr ausgestreckt haben
kann. Wenn wir unsere
Maus in diesen Bereich bringen, wird das ein Problem sein denn wenn wir versuchen,
hier zu zielen und unsere
Muskelwaffe da ist. Und das schafft ein Problem. Es wird versuchen, nach innen
zu schießen, und sagen wir, nein,
das ist nicht möglich Wir werden also einen
Bereich um den Spieler herum erstellen, den
die Maus tatsächlich,
wenn sie diesen Bereich betritt, zu dieser
oder dieser Seite
bewegt, basierend auf einigen Regeln oder dieser Seite
oder aufgrund einiger Regeln Wir werden
quasi um unseren Charakter herum eine tote Zone haben. Lassen Sie uns nun überprüfen,
ob das für beide gleich,
fast gleich ist , denn wenn einer von
ihnen es nicht ist, bewegen Sie sich. Aber wenn sie gleich sind, sollten
wir festlegen, dass man sich zweifach bewegt. Wir haben unser Ziel erreicht. Zurück zum Event-Graph.
Nennen wir arktisches Ereignis. Das wird Perfram heißen, und wir werden es tun, ist gültig Unser Charakter, die
Charaktere hier. Und dann machen wir
eine Sequenz, weil
wir diesem Tick-Event ein paar Dinge
hinzufügen werden. Lassen Sie uns nun hier einen Zweig platzieren, Rest der Sequenz und
fragen, ob wir weiterziehen. Wenn wir uns bewegen,
dann folgen wir. Für den Standort, das
Cache-Ziel. Kompilieren und speichern.
Theoretisch können wir jetzt laufen Nein. Sogar der vorherige. Und geh. Ich kenne den Grund, weil unser Clear-Status
absolut normal ist
, der nicht aktualisiert wird, weil wir den
Standardstatus des Charakters nicht aktualisiert
haben, und der Standardstatus
des Charakters ist normal,
weil wir ihn geändert haben. Aber das tut es nicht, dann aktualisiert es
den Controller nicht. Jetzt können wir also Nein bewegen, und der Rückkehrpunkt, immer die Mitte
des Charakters, die sich außerhalb befindet, ist es nicht. Natürlich, weil wir diesen Teil
der Funktion noch nicht abgeschlossen haben. Dieser Teil unseres Ganzen ist eher so. Wir haben den
Teil der Funktion noch nicht abgeschlossen Wenn wir ein Ziel treffen und es kein
Feind ist, was tun wir dann? Also lass uns das
beim nächsten machen. Und ich verlasse dich vorerst. Tschüss.
107. Finishing statischer Aufnahmen und Zielen: Hallo und willkommen zum
Game Design Workshop und zu den prozeduralen Aufrufen zur
Erstellung von
Dungeon-Action-PZs mit der
Real Engine Five Erstellung von
Dungeon-Action-PZs Zuvor haben wir mit
unserer Interaktionsfunktion begonnen, sind
aber mit der Bewegung fertig
geworden Ich hoffe, wir haben auch die
Interaktionsfunktion fertiggestellt. Wir werden schauen, wann wir uns bewegen können und eine Truhe oder einen Gegenstand auswählen. Als Nächstes
haben wir die
Stopp-Move-Mechanik entwickelt, die unseren
Bewegungsbarren in Stürze umwandelt und eine Bewegungseingabe von
Null
hinzufügt , wenn unser
Spieler-Controller gültig ist Wenn die Spielfigur unseres Spielers gültig ist. Es tut uns leid. Dann haben wir mit unserem Auslöser weitergemacht, das heißt, wenn wir
anfangen zu klicken, läuft
er weiter, während
wir den Klick gedrückt halten Dann lass es uns noch einmal durchgehen. Zuerst überprüfen wir, ob
unser Spieler gültig ist, und
dann, ob unser Ho gültig
ist, denn wenn
wir mit der Maus über einen Gegenstand fahren, sollten
wir uns nicht
auf diesen Gegenstand zubewegen Wenn wir uns diesem Gegenstand
nähern wollen, wenn wir uns zum Beispiel nicht in Reichweite
befinden, könnten
wir hier einen Code eingeben, wenn wir uns nicht in
Reichweite des Gegenstands befinden, ob wir uns auf den Gegenstand zubewegen, wenn nicht, was wir damit machen wollen Oh, dann haben wir überprüft, ob sich unser
Player im Normalzustand befindet. Wenn sich unser Charakter also im Normalmodus
befindet, überprüfen
wir, ob wir mit dem Cursor auf einen Feind treffen, oder wenn nicht, setzen
wir die Position unseres Heats
auf unser Ziel und wir setzen
Moving auf True. Wenn wir nur drehen
, haben wir hier in Shoot from
the Branch ein benutzerdefiniertes Ereignis
erstellt from , weil
wir das nicht benötigen und es
der gleichen Logik folgt. Nun zurück zu unserem Controller.
Der Grund, warum wir den Zug auf True
setzen
und wir das
Wurfziel setzen, ist, dass unsere Bewegung
durch unser Tick-Event gesteuert wird, dem wir gefragt haben,
ob der Spieler gültig ist, ob unsere Referenz
des Spielers gültig ist, und dann überprüfen wir,
ob wir uns bewegen oder nicht. Wenn ja, verwenden wir die Follow-Funktion,
die uns areal zur Verfügung stellt, die dem Paar
den kontrollierten Teich zuweist, es erhält seinen Standort, es erhält einen eindeutigen
Richtungsvektor von zwei
und es bietet diesen, um Bewegungseingaben hinzuzufügen. Wir haben diese Funktion aktualisiert, indem wir anhand der X- und Y-Werte
des Ziels und
unseres aktuellen Standorts
überprüft haben, ob wir
unser Ziel erreicht X- und Y-Werte
des Ziels und
unseres aktuellen Standorts
überprüft haben, ob wir
unser Ziel Und wenn das stimmt, dann bewegen wir uns nicht mehr weil wir
unser Ziel erreicht haben. Und wir haben herausgefunden, dass wir uns noch
nicht bewegen können,
denn wenn wir mit der Cursor-Funktion zu
unserem Standort um get gehen , können
wir sehen, dass unser
Zielort nicht
gesetzt ist , wenn wir mit unserer Trace-Linie auf
etwas stoßen. Nun, diese Logik ist es einfach nicht. Was wir tun werden, ist unser
Wärmeergebnis hier zu
ermitteln, weil wir daraus Werte
benötigen werden. Aber wir
müssen uns fragen, ob es der Schauspieler
ist, mit dem
wir einen Feind verärgert haben. Also als Markierung e. Aber wenn es
nicht die Markierung E hat, dann treffen wir keinen Feind. Wir werden die Logik, einen Feind
zu treffen, später anwenden. Aber vorerst
werden wir
das Falsche mit dem Hier verbinden . Vielleicht müssen wir
das etwas weiter voranbringen. Das ist in Ordnung. Das wird langsam zu Spaghetti in
Portionsgröße für Familien. Aber ich denke, es ist in Ordnung. Aber wenn wir ins Spiel gehen, können
wir uns tatsächlich bewegen, wir können Ida erschießen. Aber das Problem
liegt beim Zielen. Wir können nicht zielen. Ich kann die Umschalttaste drücken und
mit dem Schießen beginnen, aber ich kann nicht zielen, wo ich schieße. Lass uns das reparieren. Wir werden fragen, warum das
Fortbestehen der Bewegung
ist Ich werde hier einfach ein „ist gültig“
eintragen Hoffentlich wird das Problem dadurch behoben. Ja, kein Fehler mehr. Endlich. Jetzt müssen wir darauf zielen,
wo wir schießen. Und dazu müssen wir
tatsächlich
das System schaffen, von dem wir gesprochen haben, dass
es zwischen einer bestimmten Reichweite unseren Vorwärtsvektor und unser Zielen,
unsere Rotation ausgleichen wird . Gehen wir einfach los und
fügen ganz schnell zu unserer Zielposition
unter dem Cursor hinzu, pure. Wir müssen
diesen Namen sowieso ändern. Fügen wir dem Rücksendeschein zwei Variablen
hinzu. Einer von ihnen wäre ein Vektor. Nennen wir das Vorwärtsstreben. F, nicht wahr? Vielleicht. Und dann brauchen wir einen anderen Vektor, aber diesmal einen
Rotator Nennen wir das Fation, was eigentlich die normalen Variablen
einschließt,
aber wie dem auch sei, lasst uns diese
beiden Variablen in lokale Variablen umwandeln Nennen wir sie
nach dem
Over-Dame-So-FA und von Anfang nach nach Set Over-Dame-So-FA und von Anfang nach nach Lassen Sie uns sie auf etwas einstellen. Machen wir uns daran,
das Problem zu demonstrieren Was hier vor sich geht , für unseren Offset für A bekommen
wir
unseren Charakter. Eine Referenz, wir
werden einen
Vorwärtsvektor als Vorwärtsvektor verwenden. Und für die Rotation. Lassen Sie uns den Standort des Schauspielers ermitteln
und unser Heat-Ergebnis abrufen, das heißt, es zu kopieren, hier ist es, holen wir uns unser Heat-Ergebnis, und wir werden es tatsächlich
vom Schauspieler herausfinden. Rotation. Kein Verwandter, tut mir leid. Rotation, und es wird bei unserem Charakter
beginnen und es wird bei unserem Heat-Ergebnis enden
. Damit das funktioniert, brauchen
wir etwas Code. Wir müssen
irgendwo die Rotation festlegen, und wir werden zu unserem E-Event gehen und von
da an gehen wir zu einem aus unserer Sequenz. Also werden wir den Spielerstatus
einschalten. Weil wir
manchmal unsere
Charakterrotation nicht ändern
wollen. Im Grunde gibt es
nur zwei Fälle, in denen wir
die Charakterrotation ändern möchten. Entweder von der normalen Route oder von der A. Re-Route her. Ich
kann beide verbinden und wir bekommen
unsere Spielreferenz und diese Rotation. Drehung des Autos. Wir werden hier etwas Platz
brauchen. Ein bisschen mehr. Ich
denke, das ist in Ordnung. Oh, was wir tun werden,
ist, in unser Internatsstudium zu gehen. Wir werden es konstant machen. Das bedeutet, dass wir
mit einem konstanten Wert rotieren ,
der auf einem Tempo basiert auf unserem Delta T basiert. Für Delta T verwenden
wir das Tick-Event. Das macht es zwar
rahmenrelevant, aber es ist in Ordnung. Und aus Geschwindigkeitsgründen
werden wir 100 verwenden. Und was ist unser derzeitiger? Nun, wir holen uns
unsere Spielerreferenz. Wir werden eine Rotation bekommen. Wir werden das oder das Aktuelle
verwenden, aber das Ziel, wir
ändern X und Y nicht. Wir werden das Gleiche beibehalten,
also machen wir das hier. Wir werden das kaputtmachen. Roll und Pitch
bleiben gleich. Yo, das sich umdreht, wird das Einzige sein
, das sich verändert. Lassen Sie uns also die Position unserer Maus
auf der Funktion „Vorkommen“ ermitteln. Mach das kaputt. Lass uns das verbinden. Und noch etwas,
bevor wir fertig sind. Kehren wir zu unserem
P-Top-Down-Charakter zurück. Gehen wir zu unserem Spawn-Geschoss und ändern den Vorwärtsvektor , den wir von der Kapsel hatten, also den Vorwärtsweg
, den
wir Holen wir uns unsere
Player-Controller-Referenz. Lass uns
ohne den Git weitermachen. Nein. Das ist nicht der Name. muss ich bekommen, um
Patienten zu bekommen Patienten Ich muss das Ergebnis unter Kersor herausfinden Das ist unsere Funktion. Aber dieser. Gehen wir zu unserem
GT-Standort unter der Kursor-Funktion.
Lass uns das überprüfen Diese Funktion ist standardmäßig durch
einen Zugriffsbezeichner geschützt, was bedeutet, dass sie
von nichts anderem aufgerufen werden kann .
Machen wir es öffentlich Wir können darauf zugreifen. Ich werde den
Standort unter dem Mauszeiger ermitteln, hier sind wir, und
wir werden
unser Offset-Vorwärtsziel abrufen und hier eine Verbindung herstellen. Lass uns spielen gehen. Das wird uns
eine Art Rotation geben. Und wie Sie sehen können,
drehen Sie sich in Richtung meiner Maus. Aber sehen Sie, dass die Kugel
im Vergleich zu der Stelle, an der ich klicke,
einen kleinen Versatz hat? Das liegt daran, dass wir uns
auf einer Drei-D-Welt befinden
und versuchen, auf eine Zwei-D-Welt zu
zielen. An manchen Stellen ist es also in Ordnung, es ist direkt, wenn
wir zum Beispiel in diesen Winkel gehen, können wir sehen,
dass es direkt auf
der Kugel auf der Maus ist, o Es gibt einen Winkel, der fast direkt ist, und jeder andere Winkel, fängt
er an, sich zu verschieben. Lassen Sie uns nun die erforderlichen
Berechnungen durchführen, um diesen Offset zu ändern, damit er richtig ausgerichtet wird. Gehen wir also zurück zu unserer
Zielposition unter ers Pure, und wir werden eine Menge
Platz benötigen , um diesen
Weg hierher zu ziehen. Vielleicht ist es genug Platz und wir werden diese beiden
trennen Lassen Sie uns damit beginnen,
die Richtung unserer Schnauze zu berechnen. Wir holen uns
die Spielerreferenz und wir besorgen einen Maulkorb Aus unserer Schnauze holen wir
uns die Welt-Action. Wir brauchen
hier eigentlich nur das Z , ich werde das kaputtmachen Die Richtung zwei
wäre unser Wärmestandort. Lassen Sie uns unseren Wärmestandort ermitteln. Lasst uns auch das kaputtmachen. Warum machen wir das? Warum
müssen wir die Richtung finden? Weil wir die
Richtung von der Waffe zum
Ziel kennen müssen , auf das die
Maus zeigt , um das Ziel
entsprechend einzustellen. Lassen Sie uns die Subtraktion durchführen, um die Richtung zu finden, in
der das Minus Jetzt müssen wir
die Richtung von der Kamera
zum Maus-Git berechnen , da
die Kameraperspektive aufgrund
unserer isometrischen Ansicht
beeinflusst, wie wir Ziele sehen und darauf
zielen aufgrund
unserer isometrischen Ansicht
beeinflusst, wie wir Ziele sehen und darauf
zielen Was wir wirklich tun, ist, den
Standort in den Weltraum umzurechnen Lassen Sie uns auch das Y verbinden. Es ist irgendwie wichtig. Und der nächste Ort, wir brauchen, ist die Kamera,
damit wir unseren Player holen. Wir haben unseren Spieler hier. Wir holen die Kamera. Holen wir uns den Standort des Wortes.
Subtrahiere diese beiden Ermitteln Sie die Richtung von der
Kamera in Richtung der Mauswärme, der Position des Mausworts Der nächste Schritt wäre die
Normalisierung dieser Skala. Normalisieren wir nun
die Z-Komponenten
dieser beiden Unterschiede, um den Richtungsvektor anzupassen die Höhenunterschiede
zwischen der Kamera und der Waffe und
dem
Ziel
berücksichtigt , da all diese drei unterschiedliche Z-Achsen Nun, für diejenigen, die neu
in Mathe sind , was ist Normalisierung Nun, es ist der
Prozess, bei dem
Werte, die auf verschiedenen
Skalen gemessen wurden, an eine gemeinsame Skala angepasst werden, falls das Sinn macht So wie wir das machen
, werden wir dieses Ergebnis knacken. Wir werden uns teilen. Ist das Ergebnis durch das Z, die Richtung des Ergebnisses
der Richtung
von unserem Muskel zu unserer Wärme im Vergleich
zu unserer Wärme und der Richtung, das Ergebnis unserer Kamera und unserer
Maus auf dem Bildschirm. Und was wir tun müssen, wir
müssen daraus einen Vektor machen. Es ist eine elementweise Einteilung. Also werden wir
diesen Ausgangspin in einen Vektor umwandeln. Wie Sie sehen können,
wurde aus dieser Division eine elementweise Division
, also ein X geteilt durch x,
A, also sind all diese
Werte identisch. Und das wird unsere Algen ausgleichen. Wir müssen diesen Faktor
auf den Unterschied zwischen Kamera und Maus skalieren Unterschied zwischen Kamera und Maus skalieren Multiplizieren
wir
das mit dem Ergebnis der Subtraktion im Grunde in dieser Richtung und passen es dann an unseren
Wärmeort Also werden wir hier
unseren Wärmestandort hinzufügen. Da wir unseren Muskel benutzen. Lassen Sie uns wieder unsere Schnauze benutzen, um die Rotation
mit dem neuen Offset zu finden Wir werden eine
Weltrotation bekommen. Wir werden uns mit Kunst verbinden. Dann verbinden wir das, um zu finden, und lassen Sie uns das hier
verbinden und wir holen uns die Welt. Zu und es hier verbinden. Aber wir sind noch nicht fertig, aber
schauen wir uns an, was wir geschaffen haben. Du siehst, wo ich klicke,
ich ziele tatsächlich. Hier wird die Kugel
hinfliegen, wo ich klicke. Aber wenn ich meinem Charakter
zu nahe komme, kann
man sehen, dass plötzlich eine
Kugel von hinten kam. Dieser kollidiert tatsächlich
mit einem Charakter. Wir erschießen uns selbst. Ich glaube, ich kann es wieder dazu bringen, von hinten zu
schießen. Hast du gesehen, dass das unglaublich war? Außerdem läuft unsere Animation langsam ab. Kannst du sehen, dass die
Animation stark nachlässt weil wir zu
nah an der Schnauze sind In diesem Fall hat also
die Priorität des
Modells Vorrang, die Drehung
des Modells hat mehr Priorität als die Schnauze,
weil wir zu nah dran sind Wenn ich ein bisschen weiter
weg gehe, ist alles in Ordnung. Wenn ich zu nah rangehe,
fangen wir an zu zittern und unser Schießen
wird sehr schlimm Nun, ich denke, das ist
genug für diesen. Wir werden
das beim nächsten reparieren. Auf Wiedersehen.
108. Unter dem Cursor feindliche Mechanik: O Hallo
und willkommen zum Game
Design Workshop, und willkommen zum Game
Design Workshop echten prozeduralen
Dungeon-Action-Rollenspiel-Kurs zur
Erstellung von Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur
Erstellung von Engine Five-Action-Rollenspielen Zuvor waren wir mit
der Mathematik für
unseren Zielversatz fertig der Mathematik für
unseren Zielversatz Wir haben unsere Richtung von unserem Muskel zu
unserer Wärmerichtung
berechnet, und wir haben unsere Richtung
von unserer Wortposition zu unserer Kameraposition zu unserer Maus zu einer
Bildschirmposition berechnet. Wir haben die Richtung ermittelt,
wir haben
die Z-Achse anhand dieser beiden Werte normalisiert und ihr
die Richtungsskala gegeben, und ihr
die Richtungsskala gegeben die auf der Normalisierung hier
basiert, und wir haben
die Wärmeposition angepasst,
um den Offset der
Waffen zu berücksichtigen Also haben wir die Wärmeposition zu
diesem Ergebnis hinzugefügt , diese
Skalenrichtung Nun, aber wir
müssen das Problem lösen , dass,
wenn wir zu nah dran sind, das Ziel sehr, sehr versetzt
ist. Wir müssen nur
für die Entfernung überprüfen, ob unser Ernährungsergebnis im Grunde genommen
größer als eine Entfernung
oder weniger als eine
Entfernung im Vergleich zu
unserem Charakter ist größer als eine Entfernung
oder weniger als eine
Entfernung im Vergleich zu . Bilden Sie einen
kleinen Kreis über den
wir gesprochen haben,
um unseren Charakter herum. Und ich habe einen Wert im Kopf. Also lass uns hier einen Ast anlegen. C dann Verbinde das mit
dem Zweig, fällt hier hin. Lassen Sie uns hier als Vertreter arbeiten. Und was werden wir
tun, um Sie um weniger Entfernung bitten. Wofür ist es weniger? Ich
hole mir einen Vektor. Hier werde ich 107 machen. Das ist der Wert, den ich herausgefunden habe,
ich höre auf zu wackeln und es stellt sich heraus, Grunde falsche Werte habe Erster Vektor, wir
brauchen unseren Muskel. Vektor zwei, wir benötigen
den Offset an einer Position. Und wenn das zwei ist, wenn der Abstand größer ist, also sind wir näher
an unserem Charakter, diesem Kreis unter dem Charakter, weil das im Grunde der
Radius ist Lassen Sie uns zuerst hier eine Verbindung herstellen. Wir werden die Knoten benötigen
, die wir hier haben. Wir brauchen den Standort nicht. Wir brauchen nur den Fund, schauen wir uns das an. Und das wird hier beginnen. Das wird ein Vorwärtsvektor sein. Lass uns das
Gegenteil von unten bringen, das wird hier sein. Stimmt? Wir werden das
verbinden und unser Ziel ist
wieder die Offset-Wärme. Wir werden uns mit dieser Heizung hier verbinden
. Und das behebt es. Lass uns gehen, Clay. Und wie wir sehen können,
können wir nah an
unseren Fuhrpark schießen und er
wird geradeaus schießen. S. Wir haben geschossen, jetzt können wir zielen, wohin wir wollen. Wir müssen die
Zielgröße erhöhen. Es ist klein, es hat eine
Zeichenlänge und das ist eine riesige Sache. Aber jetzt können wir uns
bewegen und schießen. Aber wir können nicht schießen, wenn
wir über einem Ziel schweben. Wir sollten vielleicht hierher
ziehen können. Wir haben die
Plattformerweiterung vielleicht nicht gemacht. Wir haben es
eigentlich nicht getestet. Wir haben es geschafft. Wir haben es getan, sind nicht gegangen. Wir gehen später zu Deb. Wir sollten damit weitermachen,
was passiert, wenn wir über einem Feind
schweben Das ist ziemlich wichtig. Wir wollen einfach nicht nur
schießen
, Shift-Taste drücken und dann schießen. Wir wollen in der Lage sein, auch mit
Picking zu schießen , also 100 Spiele. Wir haben also einen
neuen Wärmestandort. Wir haben jetzt den Wärmestandort
eines Ziels. haben es nicht auf dem Boden, das ist die Maus. Wenn wir eine
spezifischere Hitze haben wollten, wäre
dies der Aufprallpunkt. Dieser Ort wäre zum Beispiel der Ort, an dem
wir das Ziel treffen würden. Hatte einen Körper. Aber für uns ist es nicht
wirklich wichtig, aber machen wir das
zu unserem Wärmestandort. Also werde ich den Standort
der Heizung ermitteln. Und ich werde es
auf den Aufprallpunkt einstellen. Bevor wir anfangen zu
schießen oder so, müssen
wir überprüfen, ob
wir uns verirrt haben, im Grunde genommen, ob wir in Sichtlinie sind, weil man nicht durch Wände
schießen kann. Also, okay, die Position des Hutes kommt von unserer
Kamera zu unserer Maus. Aber es weiß nicht,
ob unser Spieler
eine Mauer zwischen sich und
der Maus und dem Gegenstand hat . Also, was wir tun werden, Klammern
setzen, wir suchen die Gegenstände trotzdem durch
Wände Das sollten wir nicht
für unsere Dreharbeiten tun. Also werden wir
eine Zeile für Kanal erstellen. Und der Standort der Statistik
wäre Maulkorb. Finden wir den Standort der
Mündungsstation. Wo wäre das Ende dieses Stücks, Fino Cut, Rotation Ziel ist Standort. Starts sind Schnauze, Vektor. Fügen wir diesen Vorwärtsvektor
zu unserer Phase der Ortsbestimmung hinzu. Wir müssen ihm eine Reichweite geben. Also lass uns das multiplizieren. Ganzzahl, was ein Bereich von 2000
ist. Dann fügen wir es zu
unserer Board-Position hinzu. Fard in diesem Bereich und an der
Quelle , weil
das im Grunde ein Punkt ist Also ein Entfernungspunkt, wo auf der Welt diese Entfernung
zurückgelegt werden sollte Es hat natürlich
auch eine Richtung, weil es vorwärts geht,
und das ist es, wie weit. Eine Spur könnte
ein bisschen einfach sein. Vielleicht können wir das, egal. Lassen wir es bei Line
Trace. Ich würde sagen , wir machen daraus eine Kugel
mit einem Radius, damit wir nicht
durch sehr kleine Lücken schießen können, aber gut, vielleicht kollidiert die
Kugel Wenn es nicht kollidiert, sollten
wir aber einen Akteur ignorieren. Also geh zu, und der Schauspieler, den wir
ignorieren, ist unser Spieler Ich erhalte unsere Spielerreferenz
und verbinde sie hier. Nun, ob wir heizen oder nicht, wenn
wir heizen, heißt das im Grunde, wir nicht treffen bedeutet, dass
wir keinen Feind getroffen haben, also sollten wir
den Feind ausschalten. Eigentlich müssen wir es nicht ausschalten.
Geh wieder rein. Dann ist unser Herz unser
unheimlicher Ort. Nun, wenn wir unsere
Hitze auf unser neues Ergebnis zurückdrehen,
das wäre der
neue Einschlagspunkt, von unserem Geschütz von unserem
Muskel zum Feind Wenn der Akteur ein
Ziel hat, hat er einen Schlagzeuger, hier ist es, als G E. Wir werden
es entsprechend setzen ,
weil wir vielleicht
andere Dinge treffen, keine Feinde. Wir könnten gegen Wände stoßen. Und eigentlich sollte unser
Trace-Kanal die Kamera sein, nicht
die Sicht, denn so
haben wir die
Labyrinthkollisionen eingerichtet Was wir jetzt tun wollen,
ist die Elementauswahl zu löschen. Denn an diesem Punkt wir
bei der Überschreibung von Aufnahmen
nicht darauf klicken, möchten wir
bei der Überschreibung von Aufnahmen
nicht darauf klicken, um mit Objekten zu
interagieren Wir wollen, dass es schießt. Und was übrig bleibt, ist, unsere Over-Vektoren
und Offsets zu setzen, und wir brauchen den Return-Node auch, weil das ein anderer
Punkt am Ende der Funktion ist Wiederhole die Kopie und füge sie ein,
wir brauchen eine feine Glucaroation. Wir brauchen eine, die wir nachbauen können. Hier hier. Und für unsere Rotation wir unseren Standort des Schauspielers an, unseren Spielort des
AM-Controllers. Und für unser Ziel benötigen
wir natürlich unseren Standort. Und für unseren Offset-Arm brauchen
wir unseren Muskel.
Lass uns unsere Schnauze holen Was wir brauchen, ist auf das zu
zielen, was wir erhitzt haben. Oh. Das ist kein
Leitungsspurenwärmer. Das ist eine Spurenwärme in einer Kugel, wir zuerst erhitzen. Oh, das werden wir uns holen, A. Aber wir müssen dort
eine Richtung einrichten. Um das zu tun, machen wir
es noch einmal, wir machen eine C-Rotation, das Ziel wäre
dieser, dann einen Vorwärtsvektor. Ermitteln Sie den Vorwärtsvektor
aus diesen Rotationen und wir werden ihn
mit
unserem Offset verbinden . Und
das wäre es Lass uns die Dinger erschießen. Und wir können
die Dinger noch nicht erschießen. Der Grund, warum unser Klick-Event noch nicht
abgeschlossen ist. Nein. Eigentlich ist das nicht der Grund. Der Grund ist, dass
wir
die Änderung des Maustyps de noch nicht abgeschlossen haben, wofür wir verantwortlich sind, ob wir
einen Feind treffen oder nicht, aber lassen Sie uns mit dem
Klick-Event beenden, weil wir noch sehr wenige Knoten übrig
haben. Nun, ein Punkt, den
wir tun sollten, ist, dass die Bewegung abnimmt, wenn unser
Schwellenwert niedriger ist. Das heißt, wir
können treten und uns bewegen. Wahr gegen Wahr, Falsch und Falsch. Das wird also
den kleinen Bug, den wir gesehen haben, tatsächlich beenden. Aber ich habe geklickt und es hat angefangen,
sich zu bewegen, ohne zu enden. Wenn ich jetzt die
Maustaste loslasse, bewegt sie sich nicht mehr. Und wenn ich klicke, vorher, als ich mit der
Maus geklickt und sie losgelassen habe, bewegt sich
der Charakter weiter Aber lassen Sie uns
mit unserem Angriff fertig werden. Das war eine kleine Klammer. Betrachten wir das als
Klammer für den Angriff. Wir müssen den Cursor verwenden , um von
Normal zu Crosser zu wechseln, und gleichzeitig
unseren Charakterstatus so ändern, dass Ausgehend von unserem Tick-Event muss
das ständig
passieren die Maus bewegen, müssen wir sofort wissen, ob
etwas unter uns liegt. Ich bin Feinde unter uns. Wir
werden eine Filiale machen. Wir werden unsere Funktion Standort ermitteln unter Cursor platzieren. Und wir werden es verbinden. Zimmer. Dann machen
wir es einmal. Beides oder Stürze, denn was auch immer passiert,
muss einmal passieren, und beide setzen sich gegenseitig zurück. Wir werden eine Sequenz erstellen, beide kopieren und einfügen
und als Erstes setzen sie andere zurück. Also, was machen sie
als Nächstes? Sie ändern die
Beweglichkeit , wenn wir
einen Feind durchschlagen, wir überqueren ihre,
das ist die Maus, die wir entworfen haben Wir haben es
mit unserer roten Maus übertrieben. Ist das. Hier haben wir ein Problem. Wenn wir zielen, sollten wir den Cursor nicht
ändern, also wollen wir auswählen. Wir werden prüfen, ob
unser Spielerstatus gleich, gleich gleich
ist. Zwei a. Wenn das stimmt, behalten wir das Fadenkreuz Wenn nicht, kehren wir
zur Standardeinstellung zurück. Wenn ich es so belasse, gibt es ein Problem damit, dass
das echte D nicht konkurriert. Was funktioniert. Arbeitet. Alles klar? Ich denke, wir
werden das nächste Problem lösen. Ich sehe
dich dann, auf Wiedersehen.
109. Korrekturen an der Nachprozess-Schablone und Feinderkennung: Hallo und willkommen zurück zum
Game Design-Workshop und zum prozeduraler
Dungeon-Action-RPs
mit
Real Engine Five Dungeon-Action-RPs Zuvor hatten wir den Teil
unseres „Das ist
kein Gamecontroller“ damit abgeschlossen , dass unser
Charakter
von oben nach unten zielt , dass unser
Charakter
von .
Das ist ein Charakter. Das ist ein Controller. Wir sind also mit unserem Teil der G-Ortung unter der Sor-Funktion
in unserem Gamecontroller
fertig. Aber wenn wir einen Feind
ins Visier nehmen, dann schauen wir nach. Wir
werfen tatsächlich eine Spurlinie von unserem Trefferpunkt aus, dem Einschlagspunkt. Gehen Sie
von unserem Muskel aus gut in Richtung des Wärmeeinschlagpunkts. Also, wenn diese Linie etwas
Hitzespuren enthält, bedeutet das, dass wir vielleicht einen Feind haben, wir könnten gegen eine
Wand gestoßen sein. Wir wissen es nicht. Wenn es nichts trifft,
was wahrscheinlich
nie der Fall ist, dann stellen wir unsere Wärme wieder auf
unsere normale Hitze um und dann passieren die
nächsten Dinge. Aber wenn wir etwas treffen, prüfen
wir, ob
es ein Feind ist oder nicht. Das setzt den
Hitzefeind also temporär variabel. Dann gingen wir los
und löschten die
Objektauswahl , denn wenn wir
einen Gegenstand in unserer Auswahl hätten, sollten
wir ihn nicht haben,
weil unser Klick interagieren
würde, anstatt zu schießen. Und dann fuhren wir mit der
Einstellung der Rotationsversätze
und der Entfernung zwischen unserem Muskel
und unserem Wärmeaktor Wir haben den Vorwärtsvektor der feinen blauen Rotation verwendet, um den Vorwärtsvektor
festzulegen, und wir gehen von unserem Spieler zu unserer Wärmeposition, um die Rotation zu finden, auf die wir schauen
müssen Jetzt hatten wir einige Probleme. Außerdem haben wir
unser Klick-Event
als kleine Klammer beendet unser Klick-Event
als kleine Klammer die Bewegung
zu stoppen, wenn wir den Klick
loslassen, weil
er sich ständig bewegt hat Und dann haben wir den Mauszeiger
geändert je nachdem, ob wir einen Feind
treffen oder nicht, sodass wir unsere Events auf der Grundlage
dieses Zweigs hier drüben ausführen müssen, und sie setzen sich
gegenseitig zurück, und wir setzen Was ich nun zeigen
wollte, was nicht
unbedingt
jedes Mal passiert, ist, dass die Maus
ihre Position zurücksetzen kann , wenn wir das Widget
ändern Es kann einige Probleme geben. Aber wir haben es nicht
geschafft, das zu zeigen, weil es ein
Problem mit der Ausrichtung gab. Ich vermute, es ist
ein Kollisionsproblem. Wir werden nachsehen. Aber was wir als Workaround
tun sollten, könnte jetzt behoben sein. Aber wir werden eine Position
einrichten. Und die Position, an der
wir
die Maus einstellen werden, ist die Mausposition. Also werden wir eine Position
bekommen. Und Gate. Es rundet diesen Wagen ab. Es macht es automatisch,
wenn Sie
versuchen , es mit Integer zu verbinden, und dadurch wird unsere
Position im Grunde beibehalten. Oh. Lass uns herausfinden,
was vor sich geht. Warum konnten wir es nicht? Lassen Sie uns diese Situation nachstellen. Wir hatten ein Haupttor
, auf das wir nicht
schießen konnten . Es gibt ein Höllentor. Bringen wir den Charakter
der Kachel mit, den Charakter. Neben dem Höllenbop. Hier schießt es auf uns. Ich werde
den Sound wieder schließen. Und ich werde alles
wieder in Besitz nehmen. Wenn ich ein Tor auswähle, passiert
nichts. Schauen wir uns also an, was bei unserem Targeting
passiert. Ich hole
den BTN-Controller, trenne ihn ab und
bring ihn her. Das dockt es an. Ich bin mir nicht sicher. Vielleicht abdocken. Ich gehe zur Position der Funktion
t unter Cursor. Das ist die Funktion, die wir überprüfen
wollen. Und was uns interessiert,
ist dieser Zweig
hier drüben , ob er
einen Feind findet oder nicht. Und jetzt, um zu zeigen, was vor sich geht. Wir müssen hier darauf klicken. Es könnte heißen, dass es nicht der Bug ist, aber es könnte hier auch automatisch sein. Jetzt können wir die Fehlerzeile sehen. Also werden wir es hierher
bringen. Wenn ich nichts anstrebe, läuft
es richtig. Aber wenn ich zum Ziel gehe,
ja, passiert nichts. Ich glaube nicht, dass es daran liegt, dass
wir eine kleine Kollision haben. Ich glaube, das liegt daran, dass ich die Kollision erst später
erklärt habe. Aber wir haben
einige Erklärungen abgegeben. Lass uns zur Kapsel gehen. Was wir
eigentlich tun müssen, ist
die Kollisionsvoreinstellungen auf Benutzerdefiniert zu ändern , und wir wollen die Kamera blockieren Wir können uns mit
allem anderen überschneiden, aber wir wollen die Kamera
blockieren Der Kollisionskanal der Kamera, der für das,
was dort steht, keine Rolle spielt. Wir haben gerade entschieden, dass
diese Reaktion auf
das Rennen für uns blockiert wird und
wir werden unsere Treffer darauf aufbauen. Es spielt keine Rolle,
deshalb haben wir uns für Kameras entschieden , weil es egal ist,
was hier steht. Es ist wichtig, wie wir uns entschieden haben
, das System zu verwenden. Das sind nur die Sets
, die Unreal eingerichtet hat, aber es ist klug, sie so zu verwenden, wie
sie beschrieben sind da viele Mechaniken die Engine überfordern
, die mit dieser Logik arbeitet Aber auch hier gilt: Wenn du deine eigenen Dinge
kreierst, kannst
du
programmieren, was du willst Zumindest funktioniert es und
andere Leute können es lesen. Lass uns Play drücken. Ich denke, das wird das Problem beheben. Eine Maus sollte
rot werden, wenn wir feststellen dass
L Gate nicht in dieser Karte enthalten ist, also
werde ich es erneut versuchen. Wir werden hier jede Menge haben. Der Teufel mit der Wahrheit, die Maus wird rot. Es ist wie das Tor
und ich kann lesen. Ich kann dort öffnen. Ich habe keine Gesundheit mehr
und ich tappe in eine Falle. Wo ist die
Gesundheit meines MCs? Fangen Sie an zu spielen Hier sind wir. Max' Gesundheit, sagen
wir es zurück auf zehn. Also sterben wir nicht sofort. Wenn du wirklich
grausam sein willst, kannst du sofort sterben. M-Spieler können
sofort sterben, wenn sie auf eine Falle
treten und
sie haben eine Gesundheit. Das Letzte, was
wir für
unseren Charakter tun sollten , wäre, zu den Projekteinstellungen zu
gehen. Das ist für Tencel Aston
Depth Stan Sil Pass, und statt
es mit Schablone aktivieren Das nächste, was wir tun werden, ist zu unserem Level zu
gehen und
eine Nachbearbeitung falsch eine Nachbearbeitung C. Nach der Bearbeitung des Volumens wollen wir Wortwelt
auswählen. Wie lautete der Name? Wonach wir suchen, ist unendlich zu sein. Ja, ungebunden in dieser
unendlichen Ausdehnung. Das nächste, was wir tun
müssen, ist
zu unseren Prozessmaterialien überzugehen zu unseren Prozessmaterialien überzugehen Findet sie. Fügen wir diesem Array ein Material
hinzu. Wäre unser Prozessal . Mein Postprozess. Ich denke, es gibt einen Fall. Mein Posenprozess besteht darin,
das wäre es. Und dann sollten wir
zu unserem Charakter oder zu
unserem statischen
Mesh-Custom gehen unserem statischen
Mesh-Custom Mesh-Custom Wir müssen das aktivieren. Suchen wir also nach der benutzerdefinierten
Rendertiefe. Ja, wir wollen das und
wir werden das auf 21 setzen. Jetzt können wir theoretisch unseren Spieler hinter Mauern
sehen. Ja, hier ist es. Und so funktioniert es
so, dass unser Material, lass uns für eine Sekunde nur das
Material Ich weiß. Das wurde mir erklärt. Das ist der Fall, das. Es
versteckt sich also zwischen der Grundfarbe und der
Farbe, die hinter
dem Ziel erscheinen soll B ist das Ziel Und das wird durch eine
Maske wie diese hier entschieden. In diesem Teil geht es
darum, das Material selbst zu verändern, und hier geht es darum, welches
Material sie im Grunde zeigt Weil wir also
den Wert Eins haben, wo wir
viele Eins-Werte haben, aber ich denke trotzdem, ist dieser, wenn das ein anderer
Wert wäre, würde das, glaube ich, beeinflussen, welche
Schneckentiefe wir gesagt haben, wenn ich
das richtig verstanden Wenn das also eine
Zwei für unseren Charakter wäre , dann sollten
es zwei sein Und weil alles
andere auf der Welt Null ist, würden
wir zum Beispiel die
beiden sehen. Oder ich denke, es funktioniert einfach mit
dem Einen und was auch immer auf der Welt
sonst noch so ist. Ja, ich glaube, das ist es. Ich glaube, alles auf der Welt ist Null. Weil das eins geworden ist, können
wir es hinter den Wänden sehen. Und im Grunde ist
es das für unseren Charakter. Wir haben unseren Charakter fertiggestellt. Jetzt hat Turn also ein Ich und all die
Debugging-Dinge, die wir tun müssen Lass uns noch eine Sache testen. Okay, der Aufzug
funktioniert nicht, aber funktioniert die Truhe? Ich habe das nicht getestet?
Können wir irgendwelche Artikel abholen? Ich habe ein, das ist das Inventar. Lass mich das benutzen.
Gibt es hier eine Truhe? Nein. Wo ist die Truhe? Hier ist es, ich klicke darauf. Jetzt kann ich nicht. Lassen Sie uns für eine Sekunde
sehen, warum. Wenn es etwas Einfaches ist, können
wir es jetzt vielleicht einfach debuggen Controller, wir sind
bei unserer Funktion. Warum ist es wieder eine Kollision? Lass uns spielen. T. Lass uns die Figur
direkt zur Brust
bringen. Und ich denke nicht,
ich schätze, du
kollidierst nicht mit dem Ich denke, es ist wieder ein Kollisionsproblem .
Lass uns zu unserer Brust gehen. Fingerabdrücke, große Brust. Wir haben keine Kollision. Wir haben nur diese Truhe hier
drüben und wir haben sie auf den unteren
Teil der oberen gelegt. Unsere Masse wird
den oberen erreichen, nicht
den unteren. Also vielleicht habe ich es auf den Boden
gestellt. Ich werde das kopieren. Wie Sie sehen können, können
Sie sogar
ganze Gruppen anhand dieser Daten kopieren . Und funktionierende Arbeit,
kopiere, weil es nur
diese Gruppe PZ hat Ich muss vielleicht die
ganze Kollision kopieren. Eigenschaften, als Eigenschaften. Es funktioniert, es ist nicht,
es spielt keine Rolle. Lassen Sie uns diese
Kollisionen einfach wahr machen. Also wollen wir einfach
alles blockieren, um
die Kombination von Sichtbarkeit und
Bom-Kollision zu blockieren die Kombination von Sichtbarkeit und , als ob es sich um eine
Kollision handelt Wenn nein, wird es keine Kollision geben,
und es werden keine Überschneidungsereignisse
erzeugt. Ich denke, das behebt es. Wenn nicht,
werden wir es einfach bei den Kollisionen tun. Charakter neben der Box, was
bei näherer Musik sehr nett ist Hier. Oder tut es nicht. Hier nicht einmal unten, ich klicke unten, macht
aber eigentlich nichts. Also, lasst uns diese
Kollisionseinstellungen kopieren und so machen, dass wir die Kamera
blockieren. Du blockierst O,
es funktioniert nicht. Fakt ist, in beiden Fällen ist es möglich. Wo es funktionieren sollte. Ich schaue von hier aus noch einmal nach. Um hierher zurückzukehren. Bringen wir
den Charakter zur Truhe. Nochmal, es funktioniert nicht. Aber jetzt müssen wir auch
die Trace-Linie testen. Das müssen wir debuggen. Also werden wir auswählen. Sagen wir für einen Frame. Mal sehen, ob wir mit der Kiste auf
etwas stoßen. Ich werfe an meiner Schauspielerbox aus. Es ist ein h. Die Idee, ich habe den Charakter
verschoben,
ich bin von Tile weggezogen Also ja, wir
treffen hier genau das Richtige. Ich überprüfe. Wir treffen hier auf den Punkt. also die Frage, was wir verlangen, damit
Schauspieler Die große Brust hat
gezerrt gezerrt Läuft es bis hierher, mal sehen I. Fangen wir mit der Kiste an Wo ist die Kiste? Okay. Nein,
diese Filiale wird überhaupt nicht betrieben. Ich habe ein bisschen getestet, und aus irgendeinem Grund, wenn ich es umgekehrt verbinde, stelle ich zuerst eine Verbindung her, dann Null
runter und dann funktioniert eins, was keinen Sinn ergibt. Ich vermute, es geht um
das Objekt, das wir alle
sind, das hier ist, nach dem
wir testen Ich bin mir nicht sicher
, warum es nicht funktioniert. Normaler Weg, aber ja, das hat es zum Laufen gebracht. Also dann sollte Null runter gehen und dann eins von diesem linken Teil. Ich vermute, weil es
diesen tatsächlich gibt. Denk drüber nach. Dieser existiert und dieser nicht es zu debuggen, könnten
wir also im Grunde eine Kette von Ereignissen erstellen,
aber ich denke, das ist Da es funktioniert. Ich
denke, das ist der Grund, warum ich denke, weil dieser
beendet wird und dieser nicht irgendwie
sicherstellt, dass vor
diesem Ausgang läuft Ich denke, das muss die Logik sein. Wie dem auch sei, lass uns spielen gehen. Eigentlich habe ich gespielt und getestet. Wir haben noch einige andere Probleme, die
wir in der Lektion beheben werden, und dann werden wir
mit der KI beginnen. Der Charakter wirft Wände, nett, wo ist die Kiste. Ich kann den Tooltip nicht sehen und wir werden nachschauen, warum Aber wenn ich darauf klicke, öffnet es sich und die
Elemente werden alle an einer Stelle angeordnet Wir werden
das beim nächsten herausfinden. Auf Wiedersehen.
110. Fehlerbehebungen für Artikelverteilungen und Brust-Widget: Hallo und willkommen zum Game Design Workshop im
Rahmen von Engine Five, Erstellung von
Action-Rollenspielen in
prozeduralen Dungeons Zuvor waren wir
mit unserem Charakter fertig und haben im Gameplay einige
Bugs entdeckt Lasst uns jetzt anfangen
, diese Fehler zu beheben. also zunächst Gehen
wir also zunächst zum BP-Artikel. Und in unserem IOP testen wir, wenn wir nach
Wörtern suchen, die
Sichtbarkeit. B-Kamera Lassen Sie uns jetzt unsere Kollisionen testen. Nun, unsere Gegenstandskollision
wäre Atom, Sperren der Sichtweite, Sperren der Kamera und Kriegsdynamik, und das alles nur ohne Physik Gehen wir nun zu unserer Sphäre und wieder zu unseren Einstellungen
oder Kollisionseinstellungen Das sollte also einfach alles
ignorieren, keine Physik haben und sich
mit dem Charakter überschneiden , denn
das ist unser Bereich Gehen wir zu unseren Widgets, die keine Kollision haben. R Das hat eine Benutzeroberfläche, aber lass uns
das ändern, keine Kollision. Es spielt keine Rolle, da
wir es auf den Bildschirm bringen. Generiert keine überlappenden Ereignisse. Ordnung. Kompilieren. Und lass uns zu
unserer großen Truhe gehen. Lass uns das zuerst reparieren. Lassen Sie uns
unsere beiden Meshes auswählen und sie werden,
sagen wir , physikalische Ereignisse erzeugen, falls es tatsächlich etwas weiß Lassen wir es einfach an. Lassen Sie uns zu Kollisionen aktiviert
übergehen Wir wollen, dass beide nur keine Physik haben, beide statisch, und sagen wir, beide blockieren alles Gehen wir nun zurück zu unserem Artikel und erhöhen auch die Zahl Hundert. Also geben wir ihm ein
bisschen Reichweite. Lass uns nisten gehen. Bei der Kiste. Öffne es. Näher. Die Position auf dem
Bildschirm mag sein, aber wir können die Objekte nicht einmal
sehen. Sind sie alle hier drin? Sie
sind immer noch alle hier drin. Das hat es nicht behoben, es könnte liegen,
dass wir
die Elemente auf unserer
Timeline hierher verschieben die Elemente auf unserer
Timeline hierher und die Objekte grafisch darstellen Wir bewegen uns mit Teleport. Nein. Das ist kein vollständiges Inventar. Das willst du nicht
auf dem animierten Objekt haben. Oh, hier drüben. Ja, Teleport
wird hier nicht angeklickt Könnte das sein, denn
wenn es eine tut, Kollisionen
berücksichtigt Und die große Kiste hier,
als hätte ich gesehen, wie sich die Gegenstände bewegen. Es scheint, dass sie sich bewegen, aber am Ende kehren
sie zu o zurück. Gehen wir
also zu unserer Zeitleiste, aber wir animieren das Objekt erneut Und wenn wir fertig sind,
legen wir einfach den Standort des Schauspielers fest. Nicht aktualisieren, fertig
zum endgültigen Ziel, dessen Standort ich habe. Mal sehen, ob das funktioniert. Vielleicht gibt es etwas
, das es zurücksetzt. Das ist neben uns. Ja, hat funktioniert. Also bleiben sie dort. Nett. Okay. Der Text
ist ein bisschen groß. Lass uns auf klicken. Einer von ihnen. Ich kann kein Gold abholen. Nein, ich kann. Aber es wird
nicht zerstört. Ich kann endlos Gold sammeln. Wenn ich es zum ersten Mal in die Hand nehme, wird die Animation
des gesamten Inventars abgespielt. Interessant.
Lassen Sie uns jetzt einen Trank auswählen Ich habe einen Trank, lass uns ihn benutzen. Warum in Bewegung bleiben? Wuttrank. Ich habe ihn abgeholt, er bleibt da. Es scheint also, dass sie sich nicht selbst
zerstören. Lassen Sie uns das Widget
für eine Sekunde reparieren. Lassen Sie uns all diese
Spurlinien entfernen, weil sie schön zu sehen sind. Unsere Trace-Linien
befinden sich also in unserer Wi-Schleife. Und auf der Linse, Dave. Lassen Sie uns herausfinden, warum sie
nicht zerstört werden. Wenn ich sie auswähle, ist
das der Spielmodus. Becherinventar, wenn es herunterfällt und die Stecknadel hierher gehört. Und am Ende nicht
abgeholt zurückkehren. Weil wir bei
den anderen Optionen keine Spitzenwerte
zurückgeben , wenn es abholbar ist und wir feststecken
oder das Inventar voll ist Wir kehren zurück, weil
wir es nicht abholen können, aber wir sind nicht so, dass wir es
abholen können, wenn wir es abholen Also das sollte das beheben, lass uns das Widget für eine Sekunde
reparieren. Lass uns zu I
gehen und zum alten Artikel gehen. Lass uns die Größe auf 21 ändern. Mutig. All das mutig. Es gibt noch andere. Lass es uns als besser löschen und standardmäßig
verteilen. Jetzt sollten sie besser aussehen. Zeile, die Sie hier sehen, liegt daran, dass ich
den Ladebildschirm nicht habe. Wirklich, ich glaube nicht, dass es das ist. Aber lassen Sie uns den
Ladebildschirm hinzufügen, also öffnen wir den Ladebildschirm. Ebenfalls. Was könnte sein.
Oh, es ist sichtbar. Sie haben den
Ladebildschirm. Ja, das tun wir. Ja, wir werden überprüfen, welche
Zeilen hier stehen. Lass uns die Gegenstände suchen. O ist die Truhe da draußen. Wenn du auf der
Truhe herumhackst, fallen Gegenstände herunter. Man kann sehen, wie sie zurückgehen. Aber im Moment ist es in Ordnung. Ich kann sie abholen,
ich werde zerstört. Gab es Gold? Wir haben ein geheimes Gebiet. Das hast du überprüft. Warum nicht. Ein Weg. Kopieren wir dieses Set auch auf
eine kleine Truhe. Gehen wir zur kleinen Truhe. Beides. Ich
gehe eins nach dem anderen. Ich werde einfach
Collision und das hier kopieren und einfügen. Ich arbeite. Ich werde arbeiten. Eile nur darüber hinaus. Das sollte die
Kategorie dieser Gruppe sein, aber sie tut es nicht Wie auch immer, einer nach dem anderen. Wir sollten
alles ignorieren, Kamera und Sichtbarkeit blockieren,
p blockieren und korrigieren. Immer nur Jack fragt, beide fragen weiter, richtig?
Das wäre es. Lass uns nach Punkten suchen. Sie werden
zerstört. Ich glaube ,
sie werden
zerstört werden. Was ist das für eine Linie?
Es ist sehr nervig. Ein Wutanfall wütet wie eine Münze. Die Münze muss fallen gelassen werden. Halte. Hier sind wir.
Stimmt? Ich habe Gold verloren. Ich hab's. Großartig. Hol die Dinge, benutze sie. Hol den Rest. Ich habe
schon einen Schlüssel. Deshalb kann ich den Schlüssel bekommen. Das taucht ein
bisschen schnell auf, nicht wahr? Ich will es ein
bisschen langsamer haben. Ich kann sehen, wie das Widget auftaucht, aber es ist so schnell Das ist in Ordnung. Beim zweiten Mal läuft
es ein bisschen schnell. Etwas ich. Ein bisschen schnell. Zuallererst
gibt es auf
der Truhe nicht das Widget, das anzeigt,
wenn ich mit der Maus darüber fliege Also lass uns das auch auswählen. Was fehlt, ist
der Code dafür. Sie werden also den Code aus dem BP-Artikel kopieren und
einfügen , indem Sie mit
dem Mauszeiger über den Mauszeiger fahren
und den Mauszeiger über das Ereignis Wir werden das kopieren.
Es hat diese Funktion. Lassen Sie uns zuerst
die Funktion kopieren und einfügen. Also Widget-Sichtbarkeit, gehen
wir zur Truhe, gehen wir zu den Funktionen, fügen sie ein. Alle Variablen existieren,
alles ist gut. Ops. Wir müssen es schließen. Gehen Sie zur großen Truhe, fügen Sie es auch hier ein, alle Variablen sind
gut, fertig. Gehen wir zu unserem Artikel. Kopiere das. Fügen Sie es im Vent Graph hier ein. Oder sieh gut aus. Auch in der Truhe, sogar in der Grafik, werde es hier korrigieren, jetzt sollten
wir GS
über der Brust haben. Etwas, wenn sich die
Kamera verändert, ich glaube, wenn ihre Linse das mit der Brust
erzeugt Dann mach es oder erschaffe ein paar
ziemlich tolle Szenarien. Also hier ist das Widget. Und ich klicke auf das
Widget und nichts passiert. Wenn ich auf die Truhe klicke, passiert
etwas. Oshion. Welt Oh. Problem. Der Klick so. Ich verstehe es. Manchmal bedeutet es
einen zweiten Klick. Ich schätze, es hat mit dem Fokus
zu tun. Das solltest du
auch reparieren. Lass uns aufhören. Der Haufen Fehler. Füllen wir sie aus. Welche Sichtbarkeit ist
Bekanntheit , welche Sichtbarkeit Es. Denn wenn ich den Artikel
abhole und das
Widget verschwindet, brauchen
wir hier ein gültiges. Wenn wir es abholen müssen, wird
es zerstört, sodass das Widget nicht existiert. Es versucht sich zu verstecken. Kein Problem. Lass uns das nächste Mal
hier hingehen. Widgets-Eigenschaft, nicht gültig. Ich schätze, das ist
das, ist dasselbe. Ich vermute, dass für
dieselbe Sichtbarkeit,
Widget-Sichtbarkeit, Kollision, das Widget Das war ein Knaller, denn als wir einen Gegenstand
abholten, wurde
er zerstört,
und wir baten darum, all das
zu tun Also, ich denke, das ist ein
netter Zwischenstopp. Wir werden mit dem
nächsten weitermachen. Auf Wiedersehen.
111. Artikel-Widget-Korrekturen und Aufzug-Code: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon Action-Kurs zur Erstellung von
Arbsic Zuvor haben wir
einige Dinge im Spiel debuggt, und jetzt werden wir damit
weitermachen Wählen wir nun unsere Kamera aus. Und was wir
ändern sollten , ist die Beschränkung
des Seitenverhältnisses, denn diese grüne kleine Linie , die hier erscheint, ist
darauf zurückzuführen, dass sie versucht Seitenverhältnis
einzuschränken, und die Nachbearbeitung mit dem Stand-Sil passt nicht
wirklich dazu Also ja, wir werden das
einfach deaktivieren und
das
Sichtfeld auf 55 ändern, was unsere Kamera
für den Spieler ist, 55. Wenn wir jetzt spielen, sehen
wir hier nicht mehr die Linien, die das Bild
einschränken,
machen es wie in einer
Filmsequenz und das machen es wie in einer
Filmsequenz Pop, und lass uns diese
Spurlinie vor dem Haus verstecken. Suchen wir die Position
unter dem Cursor
im Optan-Controller
und setzen sie auf den Bug Und mir ist aufgefallen, dass
es ein Problem gibt. Wenn ich auf
Artikel klicke und nicht aufhöre und die Box die Box ist die Box. Nehmen wir an, ich ziehe und der Polizist möchte
einen Gegenstand haben. Nein, ich habe aufgehört. P. Das Problem, das wir haben
, ist, dass
es nicht passiert, wenn wir das erste Mal auf das Widget
klicken, und wenn der Scroll
das zweite Mal ausgeführt wird, er schneller läuft. Also, lass uns das reparieren. Zuallererst das Problem mit der Truhe, nicht wirklich darum, dass
die Truhe
keinen Code hat, der geöffnet werden kann,
wenn wir darauf klicken Das Objekt tut es,
wenn wir zum Beispiel zu dem Objekt gehen, können
wir sehen, dass wir die Interaktion mit
Widgets gebunden haben Schaltfläche. Lass uns das kopieren. Lass uns zu unserer Brust gehen und uns
mit dem COVID auseinandersetzen. Machen Sie daraus eine reine Besetzung. Ist ein benutzerdefinierter
Zoom-Button mit Bind-Funktion . Ich bin hier verbunden. Kopiere das hinter dir. Eigentlich müssen wir zuerst los, um mit dem Spielen zu beginnen. Lass uns die Taste anrufen. Jetzt haben wir das hier drüben
kopiert. Und lass uns zur Truhe gehen. Lassen Sie uns dieses Jahr auf reine Besetzung
umsteigen. Lassen Sie uns dieses Jahr eine Verbindung herstellen und wenn wir
mit dem Spielen beginnen, rufen wir die Verbindung auf. Bindon. Lassen Sie uns jetzt das
Fokussierungsproblem beheben. Wir machen das, wir beginnen mit dem
Spielen des Controllers. Wo ist das? Direkt auf der Karte im
Kontext, beginnen Sie mit dem Spielen. Was wir also tun wollen, ist eine Selbstreferenz auf
uns selbst, also den Controller,
und Ode und UI eingeben. Beide können sich jederzeit konzentrieren. Das einzige, was wir tun müssen, ist , während der Aufnahme
auf SO zu klicken. Wenn wir also auf eine Benutzeroberfläche klicken, verschwindet
das SO nicht Oh, der Haufen. Lass uns das testen. Es gibt keine Testräume. Endlich hat es ein Ende, es
wärmt, geh zur Musik. Hey, bringen wir das her.
Ich habe es einfach nicht gesehen. Hat sofort funktioniert. Nun, wir wollen, dass das sofort
funktioniert, also klicken Sie. Nein, es hat nicht sofort funktioniert. Funktioniert jetzt sofort, aber beim ersten Mal
hat es nicht funktioniert. Warum können sie nicht so
kalt werden, weil ich
auf den Wutteil klicke ?
Ich habe die Erkältung bekommen. Nun, das Problem sind
die Artikel selbst, sie werden nicht sofort
angeklickt Lassen Sie uns herausfinden warum.
Lass uns noch einen Test machen. Vielleicht habe ich etwas
falsch gemacht. Ich glaube nicht. Ein Klick auf die Truhe öffnet sich. Ich habe keinen Zeittrank, bleiben
wir beim Zeittrank. Ich klicke und es verschwindet
und nichts passiert. Hier. Schieß. Beim zweiten Mal funktioniert es, auch wenn ich Alt gedrückt habe oder einfach
versuche, normal
auf das Objekt zu klicken und dann
zum Widget zu wechseln, es funktioniert immer noch. Beim ersten Mal geht es nicht. Ich möchte beim ersten
Mal versuchen, vom Element zum Widget zu wechseln, um mir
die Dinge klarer zu machen. Aber ich denke schon, dass es etwas mit unserem Code zu tun hat und
das ist die Truhe. Hey, lass uns
vom Objekt zum Widget wechseln. Schneller. Wenn ich es zum ersten Mal
so anklicke, funktioniert es. Wenn ich es
so anklicke, verschwindet es. Wenn ich also drücke, klicke ich. Beim ersten Mal verschwindet es. Es muss irgendwelche Operationen mit
falscher Reihenfolge gegeben haben.
Wir gehen nachsehen.
112. Artikel-Widget-Anpassungen und Aufzug-Funktionalität: Hallo und willkommen zurück
zum Game Design Workshop, echte Engine Five
Procedural Dungeons Action-PS-Creation-Kurs Führe einige gründliche Tests durch. Mir ist irgendwie klar,
was passiert. Es ist ziemlich offensichtlich. Aber wenn wir auswählen, wenn wir die Sichtbarkeit festlegen
und wir den Fokus haben, legen
wir nicht fest, welches Objekt wir fokussieren möchten. Also holen wir uns den Controller, den wir
aus unserem Widget-Lot holen, welche Komponente unsere Widgets sind, wir werden das Widget bekommen. Denken Sie daran, das ist eine Komponente. Dies ist das eigentliche
Entitätsobjekt, und wir geben Y ein und
legen den Fokus darauf. Eine weitere Sache, die mir aufgefallen ist ist, dass die Timeline nicht
richtig abgespielt
wird , wenn wir bereits einen Gegenstand
in unserem Inventar haben. Weil wir dieses Spiel
miteinander verbunden haben. Es muss während des Spiels
von Anfang an verbunden sein , denn wenn
wir einen Gegenstand erneut auswählen, passt
er nicht in unser Inventar, wenn er fällt, oder
wir ihn aus
irgendeinem Grund sowieso nicht auswählen können Es beginnt beim Spielen, und wenn es
das erste Mal beendet ist, wird es nie wieder abgespielt,
weil es fertig ist Aber wir brauchen dieses
Spiel von Anfang an. Jetzt müssen
wir noch in unseren Spielmodus wechseln, und ich denke, wir haben das eingestellt. Ich denke, wir haben das schon einmal
eingestellt, den Eingabemodus, das Spiel und die Benutzeroberfläche eingestellt
und mit dem Spielen begonnen, ohne den Cursor zu verstecken. Auch nicht mein Cursor im
Objekt. Haben sie darauf geklickt? Hab ich nicht getan. Also auch kein Cursor. Wenn wir die Sichtbarkeit der
Perücke einstellen. Das wäre, glaube
ich, Lass uns spielen gehen. Da drüben ist die Truhe? Ieal ist nicht hingefallen, gut. Tigertypen, angegriffen werden. Oh, was ist hier los? Ist das
von Anfang an sichtbar? Das liegt daran, dass
ich es auf die Brust abgesehen habe. Okay. Ja, weil es langsam wird, wenn ich das
eindämme. Okay. Ja. Also lass uns die Truhe öffnen. G, der Schlüssel. Also, es funktioniert jetzt
von Anfang an. Das, ich mache dieses Shooting und ich hole die Gegenstände wieder, schieße und es funktioniert. Nett. Spielt. Als Nächstes müssen wir das Gameplay-Widget überprüfen. Wenn wir die
Animation zum Abholen eines Gegenstands abspielen. Lassen Sie uns also mit Ihrem Gameplay fortfahren. Lassen Sie uns die
Animation, den Animations-Tab , die
Artikelauswahl und die Referenzen finden. Okay, nimm den Pinsel zur
Einstellung der Objektgröße, vorwärts. Lassen Sie uns den Status wiederherstellen, da er
jedes Mal von Anfang an
abgespielt werden sollte. Dies ist erforderlich, um den Status wiederherzustellen. Drücken wir, das
wählt den Status aus. Es geht schnell. Ist der Charakter, das ist er. Der Charakter hier drüben
tippt auf ein paar Fallen. Jetzt müssen wir
Gegenstände in einer Reihe auswählen. Lass uns das auswählen und
lass uns das auswählen. Und es spielt meins. Hier ist ein Charakter, der
sich ständig bewegt. Wann passiert das? Wenn ich ein Ziel nicht erreichen kann
, weil es es ständig versucht. Richtig? Ich denke, wir werden das so lassen, wie es ist, ist eigentlich egal. Wir werden den Aufzug reparieren müssen
. Denn im Moment lässt der Aufzug die Plattform
einfach nicht platzen, ? Wir haben einen Schlüssel. Wir gehen zu unserem Aufzug. Geh schnell hierher. Ort. Aß. Was passiert als Nächstes? Nein. Okay. Ich denke, das
ist ziemlich einfach. Wir gehen zum Aufzug
und ich habe den Pence nicht angerufen Ich nenne Pence das Ende der Veranstaltung, die der Aufzug in der
Nähe des Aufzugs erreicht. Nähe des Und sie. Zerquetschen. Oh, ich hoffe, ich habe dich nicht vernichtet, aber es gibt einen Grund
für diesen Absturz. Wenn ich Fence Down hinzugefügt habe, muss
es
nach diesem Zweig noch einmal gemacht werden, sonst wird die
Animation immer wieder abgespielt. Es läuft das immer
und immer wieder, sehr schnell pro Frame, und es bricht das aus. Und eine weitere Sache, die mir aufgefallen ist, ist, dass wir, wenn wir ein Labyrinth
erstellen, den Charakter spawnen Und wir behalten die
Referenz so bei. Aber wenn wir ein neues Labyrinth
erstellen, haben
wir diese Referenz nicht Also, was wir tun werden, ist zum
Startplaneten zu gehen, richtig? Und wenn es weitergeht, kommen
wir
von unseren Spielmodi zurück Wir haben hier eine Referenz zu einem
Spielmodus. Jetzt tun wir das nicht. Aber wir haben auf dem
Controller, ich glaube, ein Controller ist nicht mehr
da, hier ist er. Auf dem Bildschirm. Wir
haben also eine Spielerreferenz. Wir wissen, dass
diese Spielerreferenz für den Gamecontroller bereits gefüllt
ist, wenn wir zu Level zwei gehen, dem
Bactor-Labyrinth-Generator, wo ist Hier ist er und wir werden uns einen
Player-Controller besorgen. Als von oben nach unten. Haustier umrechnen. Wir werden zahlen. Und wir werden
unsere Spielreferenz
hier auf diese beziehen Geh spielen. Alles sollte in Ordnung sein. Der Aufzug ist geschlossen. Wir haben schon einen Schlüssel.
Dann nochmal zerquetschen. Okay, nach
einigem Suchen wurde
mir klar, dass zwei Dinge falsch
sind. Erstens spawnen wir im Labyrinth, wenn wir das Labyrinth erstellen, wenn wir das Labyrinth erstellen, den Spieler
und
wir halten die Referenz in der Hand Aber wenn wir ein Labyrinth wiederbeleben, haben
wir keine Möglichkeit, die Referenz a weiterzugeben . Wir setzen
diese Referenz nicht Das neue Labyrinth weiß also nicht, wer der
Spieler ist. Also, um das in Ordnung zu bringen, werden
wir
am Anfang hierher kommen. Fangen Sie an zu spielen. Wenn wir „Weiter“ sagen, aber wenn du das Labyrinth
fortsetzt, legen
wir
die Spielerreferenz wir holen uns unseren
Player-Controller Wir werden runterkommen. Wir werden eine reine
Besetzung daraus machen. Ich werde eine Verbindung herstellen. Eigentlich werden
wir uns eine Spielreferenz holen. Und wir werden diese
Spielerreferenz mit unserem Player
verbinden . Jetzt
weiß das neue Labyrinth also etwas über einen Spieler. Also, das nächste Problem
, das ein Problem hat,
ist hier drüben. Interessant. Zu
Beginn des Überschneidungsereignisses, wenn wir
das neue Labyrinth spawnen Ich habe hier einen Fehler gemacht. Wenn ich nach
der doppelten Größe des Labyrinths frage, wie viele Kacheln es eigentlich hineinpassen
kann Ich frage mit dem Plus eins. Also wenn ich plus eins hinzufüge, kann das passen, und dann mache ich weiter und füge nicht
plus eins hinzu, weil es füttert. Also sollte ich fragen,
ob das aktuelle Labyrinth, und was mich darauf
hindeutete ist,
dass ich beide Male einen Absturz hatte,
es daran lag, dass das Labyrinth, in dem wir diesen Fehler
hatten, wir
geschaffen Das ist der einzige Fehlercode, den
wir tatsächlich erstellt haben. Erstaunlich, dass sich das
aus Versehen erhitzte. Also, wir haben dieses Labyrinth, mehr
können wir nicht bauen. Und als wir beide feststellten
, dass es abgestürzt
ist, gab es dieses Problem Also ja, das war die Sache. Es hat mehr gebaut,
als es verkraften konnte. Ich kann mit mehr nicht umgehen, und einige unserer Regeln
hier drüben haben vielleicht besagen, dass wir nichts bauen
können, vielleicht ist eine Peitsche
eingefroren. Lass uns jetzt ein letztes
Mal testen . Und der Aufzug. Wir können hier immer noch einziehen, aber ich denke, es ist in Ordnung, wenn wir
am Anfang nicht versehentlich entkommen , wenn wir
eintreten. Das wäre in Ordnung. Also, sehr helles Licht. Sie ändern die Kameraeinstellungen. Ich gehe ins zweite
Labyrinth, ich hole den Schlüssel. Lass uns noch etwas Zeit hinzufügen. Lasst uns sehen, wie dieses endlose
Ding passiert. Das ist das nächste Labyrinth. O. Beim Auswerfen wurde das Labyrinth
darunter zerstört Etwas ist geblieben. Die große Truhe wird
nicht zerstört. Wahrscheinlich sollte
das hier sein, wenn es hinzugefügt wird. Es sollte eine Truhe geben.
Hier ist eine Truhe. Die großen Truhen müssen zur Liste der
Zerstörer
hinzugefügt werden , und wir haben das dritte
Labyrinth und das immer größer werdende und größer
werdende .
Gehen wir zur Seite Hier. Der Schlüssel. Eine Zeit auch zu der Zeit. Was ist der Aufzug? Hier. Möglicherweise sollte die nächste Phase größer
sein als diese. Das ist tatsächlich kleiner. Verkleinern wir? Verkleinern wir? Oder ist es größer? Ich habe nur,
dieser hat drei Zimmer. Wir haben zwei. Lass uns hier den Kick bekommen. Größer, ich weiß nicht. Und es sieht genauso aus. Eins. Ist der Look. Der Schlüssel
des Schauspielers hier. Drei Zimmer. Wie viel fügen wir jedes Mal hinzu? Ich denke, wir fügen jedes Mal drei
Blöcke hinzu. Zwei. Nein, es wird zufällig
sein, nicht wahr? Eins, zwei, drei, vier, fünf oder sechs, sogar acht, sogar 12, 13 ,
14, in 21. Zwei, 22 und Blöcke.
Schauen wir uns den nächsten an. Habe das von
Anfang an gemacht, zähle die Blöcke. Mit dem Schlüssel. Jederzeit. Nehmen wir uns etwas Zeit. In Ordnung. Im Player sieht
es jetzt größer aus, eins, zwei, drei, vier,
fünf, 1012, 14, 15. 2021, 23, 24, 26, 27, 29 und acht e, f. Oh, wir fügen Boxen hinzu Wir fügen sie langsam hinzu. Wir können es erhöhen, wenn wir
wollen, zum Beispiel Generatorstufe
plus drei pro Level, und es wird immer größer. Jetzt ist unser Hauptteil fertig. Das einzige, was wir hinzufügen
müssen, ist unsere KI und wählt ein wenig
unsere Farben und Lichter aus. Oh, das wird ich für diesen sein. Ich werde dich
am nächsten sehen. Auf Wiedersehen.
113. Morigesh Charakterimport und KI-Gesundheitssystem: Hallo und willkommen zurück zum
Game Design Workshop und zum Action-Peg-Erstellungskurs Rail Engine Five
Procedural Dungeon . Zuvor waren wir
mit unseren Bugs fertig. Eigentlich sind wir mit unseren Fehlern noch nicht
fertig geworden. Ich bin mir ziemlich sicher, dass wir noch mehr finden
werden. Aber sobald wir sie finden, werden
wir sie reparieren. Jetzt ist es an der Zeit, unsere KI zu starten, was bedeutet, dass wir auch ein paar Dinge
erklären müssen. Aber lassen Sie uns damit beginnen einen Ordner in
ihren Blueprints zu
erstellen All diese KI. Lass
uns diesen Ordner aufrufen. Und lass uns auch herunterladen. Äh, nein von hier. Unser Paragon-Charakter
Morgue Mies, Marie, ich bin mir nicht sicher, wie er buchstabiert wird, wie er ausgesprochen wird, was in unserer
Bibliothek sein wird Du hast es nicht, du kannst es kostenlos auf dem Marktplatz finden, genauso
wie wir
es gezeigt haben kostenlos auf dem Marktplatz finden, genauso
wie wir
es gezeigt oder unseren anderen
Paragon-Charakter Oh. Lass es uns zum Projekt hinzufügen. Ist hier. Das wird eine Weile dauern. Oh. Jetzt, wo wir unseren
Paragon-Charakter haben. Gehen wir zurück zu unserem Lass uns
überprüfen, ob wir ihn haben. Charaktere aus Hypotheken,
Audio. Ein Held. Richtig. Ja. Alles
scheint in Ordnung zu sein. Ich habe gerade die Animationen in
den restlichen Ordnern überprüft , aber gehen
wir zu unserem Ordner
A, der nicht existiert. Ich werde es erneut erstellen. Ich dachte wirklich, ich hätte es getan. Jedenfalls. Gehen wir in diesem Ordner
zu unserem Charakter Morgs. Charaktere, sagt Mig. Lasst uns diesen
Mortgage-Spieler duplizieren. Ziehen wir
es per Drag & Drop in den Ordner AI. Oh, zuallererst
haben wir unseren Charakter. KI braucht einen Charakter. Das zweite, was eine KI
braucht, ist ein Controller
, der dem Spieler entspricht. Aber wir werden auf AI Controller
klicken. Da können wir hin,
Lue-Print und KI. Und wir werden AI Controller
auswählen. Lassen Sie uns den Namen sehen , weil wir möglicherweise unterschiedliche Controller für
verschiedene Feinde haben. Und lass uns den Charakter
in I One umbenennen . Kurz gesagt, was ist
der KI-Controller? Er wurde entwickelt, um
das Verhalten der KI zu steuern,
denn für unseren Charakter entscheiden
wir über die Eingaben
oder unseren Charakter, wir entscheiden, was der
Spieler
tatsächlich drückt, und die Steuerung
übersetzt das auf den Charakter oder auf
das Ich oder was auch immer Aber das Gleiche gilt für den
Controller für die KI. Es deckt das Verhalten ab. Nun, das nächste, was wir brauchen, ist ein KI-Verhalten t. Nennen wir
es I-AIP-Verhalten Und was ist ein
Entscheidungsbaum, ein KI-Verhaltensbaum? Nun, es ist eine
Entscheidungsstruktur. Wir können es so
etwas nennen. Es ist ein Baum, der verschiedenen Knoten besteht, die anhand der Regeln festlegen,
was die KI tun soll . Und zu Bäumen können
auch andere Bäume gehören. Sie können sich dafür entscheiden, andere Bäume zu bearbeiten und komplexe Aufgaben ehrlich zu erledigen und sie auf
einfache Weise zu debuggen Der Verhaltensbaum
enthält nun eine weitere Funktion
, die so genannte Tafel, die
für die Speicherung der Werte zuständig ist Es ist eine Vorlage mit Werten
für den Verhaltensbaum. Es speichert die Daten
und es ist effizient
, mit dem Baum und
den Daten
, die wir gespeichert haben, zu kommunizieren . Aber um ehrlich zu sein, ist
es auch ein bisschen
übertrieben für unseren Umfang an KI, aber wir werden es
nur verwenden, um zu zeigen, wie wir sie einsetzen Es ist eher für
sehr komplexe KI-Aktionen konzipiert. Nun, nennen wir das. Mein Sohn. Und die nächsten Dinge, die
wir brauchen werden, ein Service und einige
Aufgaben. Was ist ein Service? Es handelt sich um einen speziellen Typ von
Decorator-Knoten im Verhalten drei, die in
regelmäßigen Intervallen Aufgaben ausführen , wie
diese in dieser Zeitspanne Zum Beispiel werden wir hos verwenden, um einige Attribute von
unserem Charakter zu erhalten und
sie an den Black Ward weiterzugeben Und Aufgaben sind die Dinge , die
für Verhaltensbäume von grundlegender Bedeutung sind. Sie stehen für jede Aktion oder Reihe von Aktionen,
die die KI ausführen kann. Zum Beispiel werden
wir ein
vorgegebenes T verwenden , das an den Ort verschoben wird
, Ort verschoben wird
, aber wir können eine Aufgabe erstellen Wir könnten eine Aufgabe, die viel komplizierter
wäre, an einen Ort
verschieben, als ob sie
viele andere Regeln haben könnte Aber wenn wir sie erstellen
, werden
wir uns eingehender mit
Aufgaben und Diensten befassen. Denn vorerst sollten wir unseren KI-Charakter
eingeben. Und lass es kompilieren. Um das zu tun, ist
das ganz einfach , alles auszuwählen
und zu löschen. Wir werden auch
die Accountanzahl löschen, den Angriff ist angreifend, den
Save-Angriff,
den Base-Look , den Base-Turn, und natürlich werden
wir
die Polo-Kamera
und den Kameraboom löschen . Aber wir werden später
einige Dinge hinzufügen. Nun, wir hätten dafür
die
Third-Person-Vorlage verwenden können,
aber das Duplizieren
und Löschen vieler Dinge wäre
zeitaufwändiger Oh, Datei ablegen und speichern. Mach das alles. Wir werden sofort
alles schließen. Nimm das KI-Zeug. Lassen Sie uns außerdem
den feindlichen KI-Controller öffnen , um sogar Grafiken zu erstellen. Das einzige, was wir
hier brauchen werden, ist das Verhalten t. Das Verhalten t
wäre unser t. Savors. Nun, das ist der einzige Code
, den unser Controller
rund um den Baum benötigt . Ich
werde das schließen. Wir werden
den KI-Baum öffnen. Tafel Jetzt können wir auf
die Tafel zugreifen,
den KI-Baum auf diesen
beiden Spitzen hier drüben Wir
brauchen die Tafel eigentlich nicht öffnet den KI-Baum nicht Gehen wir zurück zu unserem KI-Feind und lassen Sie uns
etwas Einfaches erschaffen Nehmen wir an, jedes Mal, wenn wir
Schaden oder irgendeinen Schaden erleiden. Wir werden unsere Gesundheit reduzieren. Oh, lassen Sie uns zwei Variablen erstellen. Eine wäre b wäre Floats und die andere
wäre inhärente Gesundheit Und der nächste
wäre M Health. Oh, wir werden unser C und Gesundheit
bekommen. Wir werden
subtrahieren. Der Schaden. Wir klumpen den
Float auf Null und erhöhen die Lebenspunkte. Und lassen Sie uns tatsächlich einige Standardwerte kompilieren
und festlegen. Nehmen wir an, MC Health
wäre Wie viele Heats sollte KI bekommen? Sagen wir drei. Oh, lassen Sie uns drei angeben. Gesundheit. Lassen Sie uns den Fallwert
des aktuellen T auf drei setzen. Oder wir können mit dem Spielen beginnen
und die maximale Gesundheit
auf die aktuelle Gesundheit setzen. Oh, wir werden
überprüfen, ob das
kleiner oder gleich Null ist ,
und wir werden uns verzweigen. Es wird kein Geräusch abgespielt. D, das wäre etwas Dieses. Bananen
greifen Guo Cup an Es ist also ein weiblicher Angriff, ich weiß es nicht. Es
klingt wie ein Hit. Und dann werden wir zwei
Kundenveranstaltungen organisieren. Und wenn man das wiederholt,
wird einer Tod heißen. Und der andere wird
Betäubungscharakter heißen, wenn wir
getroffen werden und immer noch Gesundheit haben, wir werden betäubt oder betäubt Und wenn nicht, wird er den Tod
sterben. Jetzt haben wir ein System oder eine KI , um beschädigt zu werden
und/oder betäubt zu werden Ich denke, das ist
genug für diesen. Wir werden mit dem nächsten
weitermachen. Tschüss.
114. Retargeting von Wiederkehrenden Animationen zu Morigesh: Hallo und willkommen zurück
zum Game Design Workshop
und zum echten Engine Five-Kurs zur Erstellung von
prozeduralen
Dungeon-Action-Rollenspielen . Zuvor haben wir
unseren NI-Feindentwurf erstellt. Wir haben unseren KI
Enemy Controller,
unseren Verhaltensbaum
und unsere Tafel erstellt unseren Verhaltensbaum
und unsere Tafel Dann haben wir weitergemacht und Code
erstellt. Wir haben tatsächlich
zuerst den Code gelöscht, der bereits hier
war, und
einige Komponenten. Und dann haben wir
ein Schadenssystem geschaffen , um unsere Gesundheit zu verringern,
wenn wir Schaden nehmen. Und wenn unsere Gesundheit Null ist, werden
wir sterben oder
wir werden nicht sterben, und wir werden
ein Geräusch spielen und fassungslos Jetzt machen wir
mit unseren Mechaniken weiter. Wir brauchen wieder
eine Zustandsmaschine. Also gehen wir
zu unserem AI-Ordner, wir schreiben Click,
wir gehen zu Blueprints und erstellen eine
Enumerator-Aufzählung Und wir nennen
es E AI One States. Geben wir es ein und fügen
wir ein paar Rebellen hinzu. Nehmen wir an, unsere Staaten patrouillieren. Falls das die Schreibweise korrekt ist, aber egal ist, Attacke. Sagen wir mal. Nehmen wir auch eine Position ein. Benutze die Schreibweise, um anzugreifen. Viele Wörter in diesem. Jetzt, wo wir die Staaten haben. Gehen wir zurück zu
unserer KI und steigen sie auf. Wir werden die Variable
datieren, wir werden sie KI nennen. Es wird
vom Typ E acht sein, heißt es in einem. Lassen Sie uns jetzt mit
unserem Stanevent abschließen , denn
es wird einfach sein. Wir werden fragen, ob
unser aktueller Status Stat übereinstimmt, und wenn ja, werden
wir nichts tun. Wenn nicht, schalten
wir unseren Status und spielen Amontage Lassen Sie uns nun eine Montage erstellen. Geh und finde unsere Animation, Mote. Mortgage und ich werde
danach suchen. Eigentlich müssen wir
eine Montage daraus erstellen, Montage mit
acht Animationen, und ich gebe die Montage ein und überlasse
den Zustand dem Oberkörper, den Slot dem Oberkörper Weil wir an
diesem Animationsplan nicht wirklich viel tun
müssen , weil er für diesen
Charakter vorgesehen ist .
Das ist falsch Jetzt, wenn es
das falsche öffnet, können
wir es von hier aus ändern, die drei Punkte hier drüben, gehen zu dem, den wir wollen. Also, wir
verwenden schon das, was
wir wollen, in Gramm, alles. Und in Event Graph ist alles
für Morigs Player eingerichtet Wir werden die
Angriffe nicht einsetzen oder so, aber wir werden auch keine Fehler haben Nein, lass uns zurückgehen, ich werde
das löschen, das schließen. Ich werde
die Montage auch schließen. Für die Montage wählen wir
die Wärmefront. Die beiden. Ich ziehe das hier hin und lege es ab. Ich bin mir nicht sicher, warum es zwei gibt. Das andere
muss das Vorbild sein. Jedenfalls. Also, das ist
die Spielmontage. Die Montage Mooch One. Und wir müssen
das Skelettnetz verbinden, und ich werde Montage
wieder einsetzen Und warum brauchen wir jetzt
die fortgeschrittenere? Denn wenn wir fertig sind,
wollen wir,
dass das abgeschlossen ist, also zurück zum Angriff. Denn was auch immer
passiert, auch wenn die KI nicht bemerkt, dass sich ein Spieler in ihrer Nähe
befindet, wenn ein Spieler sie abschießt, ändert
sie sich
und greift den Spieler an. Schießen Sie quasi auf den
Spieler zu. Lasst uns jetzt unseren Tod
beenden. Zuallererst muss alles, was
passiert, einmal passieren. Mach es einmal. Nur für den Fall, dass es
wieder beschädigt wird und das ausgelöst wird, brauchen
wir eine Variable, um zu
wissen, dass wir tot sind. Wir haben ein B.
Nennen wir das Tod. Wir werden es wahr machen. Als Nächstes werden
wir einen Sound abspielen. Ja. Für den Sound brauchen
wir Scream Frau schreit, hier ist es. Es ist ein gutes Todesgeräusch. Ich gehe zu einer Schauspielerkollision , um sie zu deaktivieren Kollision aktivieren,
um Motte zu deaktivieren. Wie dem auch sei, stellen wir den Schauspieler ein. Pi ist deaktiviert. Packen wir die Bewegung unseres Charakters , denn sie ist
wie in der Luft. Setzen wir Walk auf Null. Lassen Sie uns eigentlich auch die
Geschwindigkeit auf Null setzen. Der Grund, warum wir das tun, indem wir Geschwindigkeit und
Max auf Null gehen lassen ist nur für den Fall, dass unser
Animationsdiagramm, das
von diesen Variablen beeinflusst wird, in
der letzten Sekunde einen falschen Befehl
erhält ,
vielleicht etwas. Wenn wir sterben,
setzen wir den Wert auf Null und sonst
ändern wir die Animation nicht. Als Nächstes sollten
wir eine Montage abspielen. Nun, lasst uns den Tod finden. Diese Animation ein bisschen. Wenn wir ein Partikel
oder so hätten und sie verschwinden würde, wäre
das in Ordnung. Aber lass uns etwas
mehr auf einmal tun. Ich glaube, eine Bar, wie heißt er? Wiedergänger? Als besserer Tod Wir haben es hier tatsächlich benutzt. Also gehen wir zu
unserem Inhaltsbrowser. Tod, das ist eine
Todesanimationssequenz aus Revenant. Das werden wir duplizieren. Schmieren. Hier ist es Verschieben wir es in den Ordner AI, damit wir übersichtlicher arbeiten können. Ich habe es jetzt verloren. Ziel von hier nach A. Hier. Nein, ich klicke
auf Ziel, wodurch es auch dupliziert wird, aber das Ziel
wäre , lass uns das Arti Manan machen Und ich brauche Revenant. Ich wäre Mota. Hier sind wir bei
einem Pressetarget. Mal sehen, was wir mit der KI
geschaffen haben. Es wurde hier nicht erstellt. Ich denke ja, es ist
inhaltlich. In Ordnung. Das scheint in Ordnung zu sein. Das Skelett ist etwas
gedehnt, aber es ist in Ordnung. Ich denke, es ist ein bisschen. Sieht okay aus. Oh, Dave. Nun, Retargeting von Animationen ist
normalerweise nicht so einfach, aber Paragon-Charaktere
sind damit einverstanden Die meisten von ihnen, wie Mortgage
und wie heißt er, Revenant. Ich sollte es nicht in den Ordner AI
oder jetzt legen, weil die
Ordner von es nicht getan haben Existiert bereits. Oh, lass uns das umbenennen. Zielt auf den Tod. Oder es ist ein gezielter Tod,
und wir können ihn verschieben. Und lassen Sie uns die Acht
als Montage daraus machen. Lassen Sie uns bei Claim in Ordnung anrufen. Rufen wir die Montage auf, ändern den
Gruppenschlitz auf den Oberkörper. S, kompilieren. Gehen wir zurück zu unserem
Feind und spielen Montage. Ton wird unser Mesh sein, und die Montas werden
das sein, was wir gerade erstellt Jetzt müssen wir einige Elemente löschen, für
die
der Code bereits existiert. Unsere Codes könnten
Komponenten sein, der Code bereits existiert. Unsere Codes könnten
Komponenten sein aber das Kopieren und
Einfügen tun wir vorerst Nicht auf unseren Gegenständen, Tropfen auf unserer Brust Ich gehe zu unserer Brust. Und ich gehe zur Inventur. Das ist unser Code, um Artikel fallen zu lassen. Okay. Ja, wir hätten uns dazu äußern
sollen. Nun, der Teil, den wir brauchen, ist hier
im Grunde der Flop. Ich brauche den Generator, aber wir haben keine Referenz.
Lass uns das einfach kopieren. Es sind x Anzahl Artikel. Machen wir es zu einer statischen
Variablen von zwei. Stellen wir das hier ein. Und Reichweite 1—2. Die beiden hier einzustellen war nicht
wirklich wichtig, aber trotzdem. Und für einen Labyrinth-Generator erstellen
wir einfach eine Variable, sie
darauf und bearbeiten die Instanz Wenn wir auf die KI antworten, können
wir diese Referenz weitergeben Der Grund, warum wir den Generator brauchen ist
natürlich das Hinzufügen statt Zerstören. Wir haben die Truhe offen. Wir haben gesagt, dass es
nicht hinzugefügt wird, um zerstört zu werden. Aber lassen Sie uns das in
einem anderen Debug-Pass beheben. Weg. Das Letzte, was wir
tun sollten, ist, nachdem wir es von unserem
Controller bekommen könnten. Tun Sie das, wir gehen. Ja. Größer Wir werden einen KI-Controller besorgen Wir sind kein Spieler mehr. Wir sind ich. Wir gehen nach Bs. Wir hinterlassen uns einen
Haufen KI-Controller
, die nichts tun. Aber wir könnten ein System entwickeln die KI, die danach einsteigt, einen Controller
verwendet, der nicht besessen Oh. Wir
lassen die Leiche sterben weil sie
zerstört wird, wenn die Mutter sie löscht. Wenn wir zur nächsten Ebene gehen, wird
es egal sein, dass die Körper
in der vorherigen Ebene zurückgelassen wurden. Sie werden damit
zerstört werden. Ich denke, das ist ein
guter Haltepunkt. Wir werden mit dem nächsten
weitermachen. Von A
115. KI-Reichweiten-Check und Hellgate-Wächter: Hallo und willkommen zurück
zum Game Design Workshop, Kurs zur R Engine Five Procedural Dungeon Erstellung von
R Engine Five Procedural Dungeon
Action APs Zuvor waren wir
mit unseren Ereignissen und dem Tod fertig. Wir haben einen Status für KI
und Datumsaufzählung geschaffen
und gesagt, dass es so sein soll,
wenn der Charakter nicht
verstaubt ist, dann sei er stehengeblieben, und wir haben eine Montage abgespielt und
diese Montage abgeschlossen Wir haben den Status auf Angriff geändert. Jetzt, nach unserem Tod, tun
wir das einmal, wir setzen eine Variable
auf tot. Wir spielen ein Geräusch. Wir setzen die Kollision, das Häkchen und die Bewegung im Grunde
auf Null
und spielen eine Montage ab, die wir von der anderen
Paragon-Figur entfernt Aus irgendeinem Grund
denke ich immer noch, dass der Name Cabal ist. Vielleicht erinnert es mich sehr an den Charakter
von Blood One,
Caleb, weil ich weiß, dass
es nicht Caleb ist Vielleicht kommt mir Cabal in den Sinn. Ich weiß es nicht. Weg.
Nachdem wir unsere Montage abgespielt haben, legen wir stattdessen die maximale Anzahl
von Objekten nach dem Zufallsprinzip auf 1—2
fest und gehen zu unserem
Mechaniker, um Gegenstände fallen zu lassen Und wir haben hier unseren Stift, der
ein zufälliges Objekt 1—5
auswählt Und dann haben wir den
Controller, von dem wir gesagt haben,
dass ein paar
Controller nicht gelöscht werden, aber er gibt uns die Möglichkeit, ein System
zu erstellen jede neue KI
einen unbenutzten Controller besitzt. Lassen Sie uns nun mit unserem
Spielererkennungsmechanismus fortfahren. Dazu
benötigen wir eine Kugelkollision. Gehen wir zu unserem Viewport. Wir sehen
es tatsächlich, wie groß es ist. Stellen wir die Zahl
zwei ein, etwa 900. Ich denke, das sollte
ein netter Bereich um uns herum sein. Diese Kollision wird unsere
Reichweite und Erkennung des Spielers bestimmen. Das ist eine nette Gegend. Oh, bei dieser Kollision geht es wieder
nur um eine Sache. Gehen wir also zu unseren
Kollisionseinstellungen. Ändern wir es auf Benutzerdefiniert, ignorieren wir alles außer Teichen. Aber es kennt auch
die anderen KIs, sie überschneiden sich. Sie erschaffen. Sie könnten den
Code um etwas erweitern. Vielleicht kommunizieren sie
miteinander. Ich weiß es nicht. Einer hat schlechte Gesundheit, ein anderer kommt und
heilt ihn. Wir werden sehen Es liegt an deiner Fantasie. Nein. Lass uns etwas
mit dieser Kugel machen. Wir benötigen
ein Startüberlappungsereignis und ein Endüberlappungsereignis. Fangen wir mit dem Anfang an. Zunächst fragen wir, ob die andere Komponente die Kollision
des Spielers ist. Insbesondere die Kapsel. Also zerre ich an der anderen Komponente. Das haben wir so oft gemacht. Als Nächstes
sollten wir
eine Variable im Bereich erstellen und sie auf den Wert setzen, wenn dies der Fall ist. Danach
werfen wir eine Zeile für Kanal. Haben wir Sicht
auf den Spieler, oder ist es so, dass der Spieler hinter einer Mauer war und mit der Kugel kollidiert Also
fangen wir am Standort an. Ich werde bei unserem Spieler enden. Also ein Ort. Ich werde
das mit dem Ende verbinden. Ich werde die
Sichtweite auf Kamera stellen und wir werden unser Wärmeergebnis verbessern. Wenn der andere Schauspieler,
der Gas gegeben hat, haben
wir eigentlich keinen
Schauspieler für den Tag. haben wir, aber
wir können tatsächlich
einen gleichwertigen Schauspieler machen und wieder weitermachen. Schauen Sie einfach nach, wer der andere
Akteur der Figur ist. Wenn es der Bauer oder gut ist,
wenn es nicht der Bauer ist, tu nichts, und wenn es ein Bauer ist, werden
wir
den Staat auf Angriff einstellen Und jetzt, wo wir das Telefon haben, können
wir den Spieler tatsächlich von oben nach unten fragen, was Charakter
und Actionmusik Also beginnt unsere Aktion. Jetzt haben wir Schluss mit Überschneidungen, es wird ziemlich einfach sein Wir werden überprüfen,
ob die Endüberlappung
der Charakter oder die Umarmung
P ist der Charakter oder die Umarmung . O der Gegner hat eine Umarmung P.
Wir werden einen Ast setzen, und wenn das wahr ist, werden
wir
die Reichweite auf Kumpel setzen Ein System, das wir hier zur Erkennung
geschaffen haben. Alles könnte auch innerhalb
des Verhaltensbaums
erstellt werden , mit einem
komplexen System wie EQ S
, einem
Umgebungsabfragesystem und anderen Methoden, die wir hier für
Zeilenspuren abgleichen
könnten oder nicht Wie gesagt, die Verwendung der Tafel und das Hinzufügen von Schlüsseln, Entfernen von Schlüsseln und das Aktualisieren von Schlüsseln ist
für eine so einfache KI etwas übertrieben Also werden wir eine Mischung aus
beidem machen und als Nächstes über
die Umwelt sprechen Nächstes über
die Wenn wir uns im Angriffsmodus befinden, gerät der
Spieler
plötzlich außer Sichtlinie. Wir brauchen einen Mechanismus,
mit dem wir erkennen können, ob der Spieler
jetzt in
Sichtlinie ist, und wir angreifen können. Weil die Spieler es sich
leisten können, weißt du, sie können sich einfach
hinter Ecken verstecken, sie können sich verstecken, sie können eine Menge Dinge
tun. Unsere KI sollte also
wissen, wann sie
direkt sichtbar ist oder ob sie sich bewegen muss
, um das zu tun. Wir werden
zu unserem Startspiel gehen. Und wir werden einen Primer Pi
machen. Das
könnte zum Beispiel ein Dienst sein,
wir denken, der
zu einer bestimmten Zeit läuft und eine bestimmte Sache erledigt. Aber lassen Sie uns das auch tun, weil wir einen Dienst nutzen werden,
um unsere Informationen,
unseren Gesundheitszustand und unseren Zustand zu aktualisieren . Lass uns das so machen, weil wir schon früher mit Zeiten
gespielt
haben, wir haben früher Stufen benutzt. Dann schauen wir, wie wir sie starten
und beenden können, wann immer wir wollen. Wir werden für dieses Paket
werben. Wir haben über das
Handle gesprochen. Bit ist das Ding, das
mit der Zeit umgeht, und nennen es Handle wie Zeit Und sofort
werde ich es unterbrechen. In dem Moment, in dem es
geschaffen ist, wird es posiert. Setzen wir eine Zeit auf 0,3. Stellen wir es so ein, dass es aussieht. Lassen Sie uns eine benutzerdefinierte Lüftungsöffnung erstellen. Nennen Sie diesen Look nach Spieler. Was es tun
wird, wird eine Spurlinie werfen. Aber wir werden von hier aus kopieren. Das ist genau das, was
wir tun wollten. Wir brauchen das auch und das entspricht einem. Wir
werden das alles kopieren Das ist es, was diese Veranstaltung bewirken wird. Wir werden eine
Spur vom Schauspieler zum Charakter ziehen, werden prüfen,
ob es unseren Spieler erhitzt hat. Nun, was passiert, ob
es ein Spieler ist oder nicht, wir werden eine Variable brauchen, alles ist drin, es wird eine
Millionenvariable sein Ich werde es auf wahr setzen, und wenn nicht,
werde ich es auf falsch setzen Wenn es wahr ist, werden wir überprüfen
, ob wir fassungslos sind. Wenn nicht, werden wir unseren Staat
zum Angriff veranlassen. Das wäre also unser Mechanismus
, um den Spieler zu schützen. Das nächste, was wir jetzt tun müssen,
ist unsere KI zu verwenden. Dafür
benötigen wir auch ein paar Variablen. Wir werden einen
Hoststandort benötigen , weil wir sie
vor den Toren spawnen
werden Also, das ist unser Gastgeber. I. Und die KIs sollten
wissen, ob der Host tot ist. Wenn der Spieler also das Höllentor
tötet, sollte
er etwas tun. Lassen Sie uns eine weitere Variable erstellen. Es wird Goldbarren sein, der
ganze Wirt ist tot. Jetzt können wir den
Code für unsere kontrollierten Tore fertigstellen. Gehen wir unsere Eingangstore suchen. Gehen wir zu Ben Graf und fangen an zu spielen. In der Sequenz
werden wir einen weiteren Knoten hinzufügen. Lass uns dieses Mal hochgehen.
Und wir werden eine
Ford-Schleife bauen. Nicht für eine F-Schleife. Nein, wir brauchen eine zufällige Menge
KI, um zufällig zu spawnen. Zufällig in der Reichweite. Jetzt fangen wir
mit einem Generator-Level an. Holen wir uns unsere
Generator-Referenz, die wir nicht haben. Lassen Sie uns dafür einen erstellen. Lass uns vom Typ P. P Maze Gen Lass es uns auf dem Löffel zeigen. Lass uns zu seinem Telefon gehen, das in unserem Generator ist,
druckt, Labyrinth-Generator Das Höllentor ist hier drüben. Das Hallentor ist hier eine
große Sache. Das Pflaster habe ich kompiliert, aber das Labyrinth. Das ist die Reislinie. Das ist der Hall Gate Sponer. ich also nicht fand falsch Wir werden das überprüfen. Also lassen Sie uns das auf Hell Gate
zurücksetzen. Und jetzt machen wir uns
an den Generator. Bator kompilieren, das
Gate, Gate Lass uns das Level erreichen. Ab mindestens Generator
maximal Eins. Setze das auf einen zufälligen Wert. Wählt zufällig. B plus eins oder die
Generatorebene. Jetzt müssen wir alle
Charaktere aufrufen und Plus aufrufen. KI-Charaktere. Bei der Transformation habe ich den
Host-Standort am Generator nicht angegeben. Ich habe den Generator nicht gemacht.
Lass uns das hier verbinden. Ich muss aufdecken. Dies dient dazu, den Standort
des Hosts offenzulegen. Acht. Und für den Standort des Gastgebers werde
ich den Standort ermitteln. Spawnen wir sie? Nun, erinnere dich an den zufälligen
Punkt in der Begrenzungsbox. Das werden wir verwenden. Dom-Punkt im Begrenzungsrahmen
mit einer halben Größe von 300, eins, und das Zentrum sollten
unsere Darstellerpositionen sein , also
b der Körpergröße plus 40, sagen
wir, wäre unser Mittelpunkt Jetzt holen wir uns
die Generator-Referenz, Troy, ich gehe zu Bei der KI Wir brauchen auch noch eine Liste davon und bewerben
diese Sorte Ändere es wirklich
vom Schauspieler zum anderen, das wird kein ACA sein, seien
die Zombies, unsere KI. Ich werde das hier verbinden. Wir müssen es nur ergänzen. Füge diesen Schauspieler hinzu. Nun, welche Schauspieler sollen vernichtet werden? Nennen wir das meine Zombies. Nein, es ist keine KI, nicht
der Name unserer KI. Das nenne ich
schon die Zombies und ich mag es. Was machen wir mit diesen Zombies? Wenn wir sterben, wenn das Tor stirbt. Du denkst, der Tod ist hier. Wir wollen alle Zombies
, die wir gestorben haben. Also, bevor wir den Schauspieler zerstören, werde ich das M-Zombies-Array
verwenden. Diese Zerstörung sollte
abgeschlossen sein und von hier aus verbunden sein. Und zu meinen Zombies, wir
gehen zu dem Gastgeber, Papa, all die Zombies, all die Feinde, wir wissen,
dass das Höllentor gestorben ist. Und das wäre ein. Ich denke, das
reicht für diesen. Wir werden mit dem nächsten
weitermachen. Tschüss.
116. KI-Kugelschießen und Knockback-Mechanik: Hallo und willkommen zurück zum
Gamedesign-Workshop im Kurs zur echten prozeduralen
Dungeon-Action-RPs
aus Engine Five Dungeon-Action-RPs Zuvor haben wir ein
System entwickelt, das unseren Spieler erkennt. In unserer KI haben wir diese
Kollisionsröhre hinzugefügt, die
dafür verantwortlich ist, dass sich Start und Ende überschneiden, um zu überprüfen, ob sich der
Spieler in Reichweite befindet. Bei der Startüberlappung gingen
wir dann zu und durch
eine Linientase, um zu
sehen, ob unser Ziel der Spieler ist Können wir den Spieler direkt sehen oder gibt es
etwas dazwischen? Und wenn ja, dann machen
wir uns an den Angriff und haben unseren
Actionfilm gestartet, unsere Action-Musik. Wenn es sich nicht überschneidet, haben wir einfach den Bereich von festgelegt. Dann haben wir bei
Spielbeginn
einen Timer erstellt , den wir gestellt haben dafür verantwortlich
ist
, ein System einzurichten , das ständig überprüft, ob der Spieler in einem Bereich befindet oder nicht Wenn ja, wenn wir nicht
Stan sind, greifen wir an. Und dieses System ist ein Mechanismus
, der im Laufe der Zeit abläuft, wie ein Dienst, wann wir es
wollen und wann wir es wollen, können
wir es über unseren
Timer-Handle auf der Handle-Seite platzieren, im Grunde für die
Verwaltung der Timer zuständig ist Dann haben wir
unseren Spawnmechanismus in unseren Kopftoren für
unsere KI fertiggestellt , wir haben eine For-Schleife
mit unserem zufälligen
Genre-Bereich
unseres Generator-Levels verwendet Genre-Bereich
unseres ,
zufällig eins hinzugefügt,
auf dem Level plus eins, und
dann haben wir einen zufälligen
Zeiger auf einen zufälligen Punkt in der
Begrenzungsbox verwendet , um
unsere KI um unser Höllentor herum zu spawnen . Wir haben sie zu einer Reihe
von Schauspielern hinzugefügt, die auf Me zerstört werden sollen, und wir haben sie
zu einem anderen Array hinzugefügt um Mysombies zu sein,
wie wir es nannten. Wenn also das When
the Heal Gate stirbt, ist
das kein Tod.
Entweder hier ist der Tod. Und das Heal Gate stirbt. Es geht durch jeden
der Zombies, jede unserer KIs. Das hey, ich bin gestorben. Es legt fest, dass die Variable
Host tot ist, und dann reagiert es von selbst. Oh, fahren wir mit dem
eigentlichen Dreh fort. Und die eigentliche
Schießerei wird durch den Baum gerufen. Und dafür
benötigen wir ein Blueprint-Interface, es für jede KI aufrufen kann
, die der Baum verwendet Wir gehen
zu unserem Ordner AI. Wir werden
eine Blueprint-Schnittstelle erstellen. Nennen wir das B I
AI. Lass es uns öffnen. Es ist eine Funktion. Das
nennt man Tack Nennen wir es eigentlich Shooting. Kompilieren Sie die
Einstellungen von Dave Bator A I an dieser Schnittstelle. A Ai und jetzt haben
wir unsere OT-Schnittstelle Doppelklicken
wir auf das Ereignis. Als Erstes
sollten wir fragen, ob wir
tot sind , denn wenn wir
tot sind, schießen Sie nicht. Und wenn wir nicht tot sind, spielen
wir eine Montage. Lassen Sie uns diese Montage erstellen, gehen wir im Browser zu. Gehen wir ins Leichenschauhaus,
Leichenschauhaus und suchen nach Marie B. Es gibt einen langsamen
Montage-Primärangriff Es gibt einen langsamen
Montage-Primärangriff
. Schauen wir es uns an. Hier sieht es gut aus. Wir
werden das benutzen. Wenn wir nicht
tot sind, werden wir den Advance Node montieren. Wir werden
das Askelettnetz verwenden. Lass sie wieder hier fallen. Als Nächstes müssen
wir unsere Kugel abspritzen. Lass uns unsere Kugel kreieren. Gehen wir zu unseren
Ordner-Blueprints. Gehen wir zu Fähigkeiten. Lass uns mit der rechten Maustaste klicken. Lass uns Blueprint, Klassentür
und P AI-Kugel gehen. Oh, lassen Sie uns zunächst
ein Partikelsystem AD hinzufügen ein Partikelsystem AD Mein Benzin. Projektil. Da sind wir Ist das Leuchten des Dolches. Das nächste, was wir brauchen
werden. Das statische Netz wäre Dolch. Dieser Perng hat A M LP verkauft. Wir müssen es ein
bisschen rotieren. Dreht das Partikel. Die Klinge muss gedreht werden. Es ist kleiner und partikelförmig, also schneiden wir es auf
1,5 ein. Das scheint richtig zu sein. Und braucht ein Material. Das ist ein magischer Tiger. Hier haben wir einen magischen Tiger. Im Moment sieht es besser aus. Wir können es ein bisschen bewegen. Diese Linie, aber sie ist in Ordnung. Wir werden es nicht sehen können. Wir sehen
nur ein Leuchten und einen Dolch Jetzt müssen wir nur die Kollision
dieses Dolches
ausschalten, weil wir eine
Kollisionskapsel verwenden
werden, um die Kollision durchzuführen Es wird keine Überlappung erzeugen. Es wird keine Kollision geben, und das ist eine Kapsel. Es ist eigentlich elternlos. Frau sollte dabei sein. Lass es uns rotieren. Es ist kleiner. Ein bisschen. Ich denke, das ist in Ordnung. Schreiben in dieser Kapsel
sucht nur nach Pon, einer Kollision. Tatsächlich sucht es auch
nach Wänden,
alles außer protisch,
blockwanddynamisch Überlappung aktiviert. mir bei dem
Wort Dynamik nicht sicher, ob wir es wollen, weil wir vielleicht
durch die Höllentore gehen wollten. Lassen wir es so einfach. Es ist einfacher. Und das Letzte, was wir hinzufügen müssen, ist eine
Projektilbewegung Wir müssen die Schwerkraft
ausschalten. Lassen Sie uns die Geschwindigkeit auf Null setzen. Und das Letzte, was wir
tun müssen, ist mit dem Spiel zu beginnen, unsere
Projektilbewegung auf Geschwindigkeit zu
bringen und sie zu einer Variablen hochzustufen , die wir
auf Swan exportieren Und machen Sie es zu Weihrauch,
bearbeiten, kompilieren und speichern. Gehen wir nach unserer Montage zurück zu unserer KI und zu Plus Natürlich wäre der Schauspieler unsere KI-Kugel.
Es ist keine Kugel. Es ist ein Tagger, aber es ist in Ordnung. Nein, wir spawnen es und
was ist die Geschwindigkeit? Zum Glück tut es mir leid, wenn wir zu
dem Verhalten übergehen. Zu unserem Skelett. Es gibt
einen Socket namens Pon Pon R. Wir können ihn benutzen.
Ein netter Ort. Gehen wir zurück zu unserer KI und
ermitteln unseren Mesh-CKT-Standort. Hier sind die ganzen Geschwindigkeiten. Wir machen einfach weiter. Wir werden wieder zur Rotation zurückkehren. Wir werden uns die Rotation
ansehen. Wir werden den
Faktor voranbringen. Genau da. Wir werden uns vermehren, was im Grunde unser
Kopf der Kugel sein wird. Machen wir also eine Ganzzahl, sagen
wir 200, ein bisschen
schneller als die Spieler. Das wäre es. Das
wäre unsere Schießerei. Nun, das Event-Shooting
wird, wie gesagt, vom Baum
angetrieben. Deshalb ist es eine Schnittstelle. So kann der Baum an
irrelevante Personen senden. Der Schauspieler braucht nur
die Zwischennummer. Wir können tatsächlich ein paar Telefonate
überprüfen. Wenn wir also spielen gehen, bekommen
wir eine Menge Fehler in Mortgage and Blueprint
und Mortgage Oh, das liegt daran, dass es
einige Fehler gab. Weil ich
den Charakter und
dann das Casting im
Morgmention Blueprint dupliziert habe, wird
es tatsächlich einige Fehler geben,
weil ich den Charakter dupliziert habe Ja. Also lass uns das reparieren. Besorgen Sie sich den Bauplan für das Leichenschauhaus,
Ihren Originalentwurf. Diese schlechte Art, danach zu suchen. Charakter, Helden,
Morges, Morgue-Spieler,
lösche das alles Gehe zum Bauplan. Lass uns das sehen. Lass uns das sehen. Das und das. Jetzt ist es in Ordnung. Nein, wir können spielen. Lass uns nach einem Höllentor
suchen. Und wir haben drei
KIs. Oder wir haben drei. Wir sollten eins oder 21 haben
, weil es auf O basiert. Ja, weil unsere For-Schleife auf
Null basiert. Lass uns das reparieren. Lass uns zurück zu unserem Höllentor gehen. Ein sehr grundlegender Fehler, der
trotzdem passiert ist. Torgegner. Null vor eins bedeutet zwei. Wir machen
das bei minus eins. Wir werden Null bis
Null sein, was eins bedeutet. Und jetzt haben wir kein Höllentor. Auch hier haben wir ein Höllentor. Diesmal will sie uns nicht. Hey, wir haben ein Höllentor und wir haben dort einen Feind. Hab ich recht? Lass uns es drehen.
Lasst uns versuchen, es zu töten. Eigentlich schlage ich es, aber es hat nicht wirklich Geld. Es hat einen Sound. Ich
möchte nur den Sound schließen. Es gibt keinen Schlepper. Ich gehe nach Atifs,
wir werden zu Schleppern gehen und Schlepper
E hinzufügen, glaube ich, nicht ich.
Ich war für Gegenstände, Schnittstelle, Away E steht für Feind. Wir haben den Schlepper, wir sollten in der Lage
sein, einen zu töten. Sie sterben. Sie stehen wieder auf, aber sie sterben. Die Gegenstände werden in Null, Null, Null
gespawnt. Lass uns p ist es jetzt. Gehen wir zurück zu unserer KI
und holen uns das ganz schnell. Tod, hier ist ein Tod, Flop. Natürlich waren das 000, weil wir noch keinen Standort
festgelegt haben Standort wäre einfach. Aber sie werfen Gegenstände. Also das ist cool. Ja, es gibt eine KI Twittere und töte sie und
sieh zu, dass sie Gegenstände
direkt am Gate fallen lässt, egal Nun, wenn ich darauf klicke
und die Maus bewege,
gehe ich wieder hoch, aber
es werden Objekte geworfen. Das nächste Ereignis,
das von unserer Schnittstelle
gesteuert wird ,
ist das Knockback-Ereignis, das wir auch bereits testen
können Das können wir spielen,
wir können in
die medizinische KI gehen und es kriegt Knoba Oh, ich gehe zu
unserer blauen Oberfläche, I KI, und zu einer Funktion namens Weil das auch
eine universelle Botschaft ist Wir werden
es von unserem Mi-Angriff aus senden, und es muss für jede KI gelten, nicht nur für diese bestimmte. Oh, es wird
eine Gruppierungsschnittstelle sein um es an jeden beliebigen Akteur zu senden Aber ich denke, das ist ein guter
Ausgangspunkt für diesen Moment. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen.
117. Knockback und Betäubungsmechanik: Hallo und willkommen zurück
zum Game Design-Workshop, Real Engine Five Procedural Dungeon Action
ARPZ Zuvor haben wir das KI-Geschoss
nach dem Muster entwickelt, dass
es aus einem Partikel eines
statischen Netzes oder unseres Wutnetzes,
einem Partikel, um es zum Leuchten zu bringen,
einer Kapsel,
die Hitze erkennt oder nicht, und einer Projektilbewegung benötigt statischen Netzes oder unseres Wutnetzes,
einem Partikel, um es zum Leuchten zu bringen,
einer Kapsel, die Hitze erkennt oder nicht, . Um seine Geschwindigkeit zu kontrollieren. Wir haben uns nicht
um die Kapsel gekümmert, aber wenn du einen
Spieler triffst, tun wir etwas ,
wenn wir ein Runden-Event beginnen ,
geben wir die andere Komponente. E, eigentlich brauchen wir das auch, aber wir brauchen im
Moment einen Spieler. Und wir brauchen Filialen. Zuerst müssen wir fragen,
ob der andere Schauspieler
gültig ist . Ist der andere Schauspieler gültig? Weil es vielleicht de sein könnte, es
könnte zerstört werden
oder so. Also ist der andere Schauspieler gültig? Ist der andere Schauspieler dann ein Spieler? Wenn nicht ein anderer Spieler, ist
der andere Schauspieler ein Feind. Und wenn es unser Spieler ist, fügst
du dem anderen Akteur
Schaden zu. Schaden von einem.
Nennen wir article, meter, location.coin
wäre Rede. Für den Emeter
verwenden wir Dot Mortgage Do Impact
, eine Jetzt, kleine grüne Wolke. Wenn der andere
Schauspieler ein Feind ist, sollten
wir nichts tun. Ich sollte es einfach durchgehen. Aber wenn nicht, werden wir
einfach diese Wolke bilden. Natürlich werden
wir zu guter Letzt einen Schauspieler vernichten. Wenn
es zum Beispiel kein Feind ist, sondern eine Mauer, wirst du zerstört. Nach unserer BP-KI-Kugel. Wir haben unsere BI KI
entwickelt
, unsere Blueprint-Schnittstelle für KI, und zwei Events erstellt:
den Dreh, den wir abgeschlossen haben, und den Rückschlag, den
wir jetzt durchführen werden Nun, was das Shooting angeht, das ist nicht
das Shooting. Das ist ein Shooting. prüfen, ob der
Charakter tot ist. Wenn nicht,
spielen wir eine Montage ab
und wir erzeugen diese
Kugel, die wir erzeugt haben,
naja, eher Pingdolch Und wir entscheiden uns
für den Standort, die Netztasche Entschuldigung, ich flicke. Der Massensocket-Name ist
Waffe R und für die Geschwindigkeit zwischen diesem und der Position des Schauspielers mit
der Geschwindigkeit, die wir gewählt haben Lassen Sie uns nun
mit unserem Back-Event fortfahren. Nein, lass uns Pack mitbringen. Nein, wir
doppelklicken hier ins Gesicht. Wir bekommen das Ereignis und setzen den
Charakterstatus auf eins. Dann werden wir
den Standort ermitteln und ihn vorübergehend
halten, weil
wir zu
diesem Ort in Richtung
eines anderen Ortes wechseln werden. Wir werden diesen
temporären Standort abschotten. Zurück. Und dann möchte ich eine andere Variable
machen. Lass es uns tatsächlich erstellen. Ich werde vom Typ
Integer dieses Bereichs sein. Nun, unser Rückschlag könnte manchmal ein bisschen fehlerhaft
sein und durch Wände gehen,
kann durch Orte gehen So
könnten wir das mit Trace-Linien und einigen teureren und detaillierteren
Regeln machen, aber das wird in Ordnung sein Ich werde unseren
zufälligen Flug in der Reichweite machen, aber in der Reichweite. Und sagen wir 100-150. Was wir tun müssen,
ist eine Montage abzuspielen. Spielen Sie eine Montage ab und
lassen Sie uns eine Montage erstellen. Du gehst zu
unserem Ordner Hypothek. Das ist Mack. Das hier. Und wir werden eine Animationsmontage
erstellen, wir werden den Slot für
den Oberkörper öffnen. Speichern Sie s und gehen Sie zurück zu unserem Y. Ich kann die Montage
und dieses Skelettnetz fallen lassen, und jetzt haben wir eine Animation. Jetzt, wo diese Animation passiert, spielen
wir eine Zeitleiste ab. Und beim Update
werden wir den Standort festlegen. Ich werde alarmieren. A
wäre unser temporärer Knockba Für B brauchen wir eine Richtung
, die wir mit unserem Rückenbereich
multiplizieren werden mit unserem Rückenbereich
multiplizieren Konvertiere diese Ganzzahl,
im Grunde muss die Richtung intern kommen Was wir tun werden,
ist, unserer
Druckschnittstelle NBA
einen Eingabefaktor hinzuzufügen . Diese Richtung. Compiler Dave Wenn wir jetzt zu unserer KI zurückkehren, haben
wir sie hier, und wir können sie hierher bringen nun für unser Alpha-Laufwerk Lassen Sie uns nun für unser Alpha-Laufwerk die Zeitleiste eingeben. Wählen wir den Ski-Rahmen aus, den wir verwenden möchten. Lassen Sie uns einen Float-Truck hinzufügen. Fügen wir zwei Punkte hinzu. Nehmen wir an, die Zeit
wäre 000, der erste Punkt wäre 000, zweite Punkt wäre
0,5, sagen wir eins. Und das wäre unser Alpha. Nun, wenn wir packen, sollte
das nächste, was
passieren sollte, sein, dass wir nach dem Rudel den
Status ändern , um anzugreifen. Und wir fügen uns selbst
Schaden zu. Wenn wir es wirklich
wollen, tun wir es. Wenn wir wollen, dass die Männer
keinen Schaden anrichten, fügen
wir uns einfach keinen Schaden
zu. Das wäre es. Wir haben einen
Rückschlag. Oh, teste es Geh, um Level zu erreichen. Wir müssen
es unserem Geruch hinzufügen. Gehen wir zu unserer Ich-Fähigkeit über. Fähigkeiten, wo ist das Ich. Nun, wenn wir anfangen, uns zu überschneiden und der andere Schauspieler E ist, der andere Schauspieler,
und wir schlagen zurück Als Richtung nehmen wir den Vorwärtsvektor
des Schauspielers. Da dieser
je nach Charakter rotiert. Lassen Sie uns nun den
Test fortsetzen, es gibt eine KI. Da ist O Es ist wirklich weit weg
gegangen. Er ist gestorben. Ich bin
durch den Boden gegangen. Ich fand das zu laut. Okay, also wir müssen das reparieren. Lass uns eine Pause machen, Optily. Wenn man da nicht versucht zu lesen und einen Stift zu besitzen, ist das okay Lassen Sie uns das
hier tun. Wenn es nicht gültig ist, versucht
es es zu tun. Vielleicht, weil wir es nicht besessen
haben. Ja. Ja, was stimmt nicht mit dem Klopfen, das mit einem
Schauspieler, einem Patienten zu tun hat. Schauspieler, einem Patienten Wenn wir es an den Player anhängen, öffnen
wir den
Player-Blueprint für eine Sekunde Gehen wir zu den Bauplänen,
zu unserem Top-Charakter. Antworte mir, wir hängen es an. Schauspieler selbst, also nein. Moment, es scheint an zu sein. Doch Schauspieler. Wir spielen, also sollten wir von Anfang an pingen .
Okay. Ja, ich füge
den temporären Standort nicht zur Richtung hinzu. Es gibt eine Richtung aus diesem
Grund zurück zum
Anfang der Karte? Deshalb ist es wieder zum ersten Feld zurückgekehrt,
wenn ich Mack klopfe ersten Feld zurückgekehrt Hat sich hier auf das erste Plättchen
geworfen , weil ich hier war und sich
hierher geworfen Es hat also eine Richtung, aber wo auf der Welt. Ich habe nicht angegeben
, wo auf der Welt. Wir haben wieder das
Problem mit der Texturierung. Also unser Streaming in voller Größe 200. Sie können sehen, dass die
Karte hier schlecht
strukturiert ist , gut Und lass uns eine KI suchen. Hier gibt es keine. Okay.
Hier gibt es eine KI. Neben ihr. Und jetzt funktioniert
Knock Back Wir unterstützen KI. Es ist sehr nervig
, wenn wir aufstehen, aber wir werden das reparieren sollten sie. Es scheint nervig zu sein. Ich werde das später herausfinden
. Machen wir weiter mit der KI. Kein Rücken funktioniert, unsere Schießprobleme, aber unser Rücken, der funktioniert
, richtet auch Schaden Nun zu guter Letzt, was wir tun müssen bevor wir unsere Entscheidung
T eingeben, all diese Optionen aktivieren Wir müssen zwei
weitere Ereignisse auf unserer BI,
I, KI, erstellen , sodass ich
tatsächlich für eine Sekunde
malen kann. Wir haben das schon
lange nicht mehr gemacht. Oh, sagen wir, unsere KI ist hier drüben und da ist eine Mauer. Und unser Spieler ist
hinter dieser Mauer. Wenn die KI nun versucht, den Spieler
zu finden, bewegt
sie sich irgendwo hier, sagen
wir, sie erreicht diesen Punkt. Ihre Richtung wäre
eigentlich nicht nach oben,
sondern zum letzten Ort zu dem
Ort, an den sie sich bewegt. Aber wir wollten uns dem Spieler
zuwenden. Also werden wir ein bisschen schummeln
und die Rotation verwenden, das ist ein R, komisches R, aber es ist ein R. Die Rotation
basiert auf Bewegung, also die Drehung verwenden, um sich in Richtung Bewegung zu drehen Und wenn wir
das dann ausschalten und
die Controller-Rotation verwenden , wird sie auf den Spieler ausgerichtet Denn die KI bewegt sich zu einem Punkt und sie wird sich
dem Spieler zuwenden. Und wir legen die
Abspielgeschwindigkeit fest und alles der Entscheidung und der
Entscheidungsfindung zu tun hat. Das Verhalten t. Wie dem auch sei, lassen Sie uns zu unserem Projekt zurückkehren. Und lassen Sie uns diese beiden Ereignisse hinzufügen. Gehen wir zu B I AI. Funktion. Nennen wir
das Controller. Lass uns noch
eins machen, die Bewegung rotiert. Lasst uns zur KI gehen und diese beiden Ereignisse
nennen. Um zu kompilieren. Dave.
Controller-Rotation, Bewegungsrotation, wir bekommen die Bewegung unseres
Charakters, gewünschte Rotation. Was? O Das orientiert
Rotation an Bewegung. Das sind die beiden. Das wird aus sein und das
würde auf der Grundlage der obigen Werte geschehen. Verbinde die Bewegung des Charakters und das wird aktiviert
und das wird ausgeschaltet sein. Und das wäre
es. Unser Code hier, er ist so ziemlich innerhalb der KI
gemacht. Lass uns das hier ansprechen. Auch hier ist es alleine, und das wäre es. Lass uns kompilieren und speichern.
Und im nächsten beginnen
wir mit
unserem dritten Verhalten. Tschüss.
118. Blackboard-Variablen und Verhaltensbaum-Setup: Hallo und willkommen zum
Game Design Workshop und zum Real Engine Five Procedural Dungeon Action LPG Zuvor hatten wir unsere Veranstaltungen zum Thema KI, unsere BI-Veranstaltungen und
unsere
Nachrichtenveranstaltung abgeschlossen BI-Veranstaltungen und
unsere
Nachrichtenveranstaltung Wir sind mit Knock Back fertig. Wir haben unseren Charakter auf Betäubung eingestellt, wir haben einen temporären Ort festgelegt,
eine temporäre Rückstoßreichweite. Wir spielen eine Animation ab, und während
die Animation läuft, spielen wir eine Zeitleiste von Dabei handelt es sich um den
Zeitpunkt der Animation und entsprechend um den
Standort des Darstellers
, den wir bei unserem E-Mail-Angriff als Richtung
verwenden und den
übergeordneten Standort hinzugefügt haben. Am Ende habe ich
es vergessen, die Taste Run zu drücken
und die Richtung vorzugeben, wo auf der Welt, und wir gehen durch den
ursprünglichen Ort, an dem wir sein sollen. Jetzt, wenn es fertig ist, stellen
wir unsere KI in den
Modus mit zwei Angriffen ein und sie bekommt einen Schaden
, der eigentlich
entgegengesetzt sein sollte . Der Grund ist nun ja, das
ist nicht wirklich wichtig. Denn wenn wir einen Schaden bekommen, werden
wir fassungslos sein Also ja,
deshalb ist es wichtig, denn wenn wir zuerst
Schaden anrichten und dann zu dem
Schadenereignis übergehen? Hier ist es, wir bekommen einen Schaden
und wir werden fassungslos sein. Und wenn wir schon fassungslos sind, macht uns das nicht wieder weh Danach
wechseln wir zum Angriff. Deshalb ist diese
Reihenfolge wichtig. Nun, es ist
ein kleiner Bug, weil das nicht bedeutet, dass es bis zum Ereignis warten
wird,
denn es ruft dieses Ereignis auf. Es nennt angewandten Schaden. Ich glaube nicht, dass es warten wird. Wir können hier keine kleine Verzögerung einlegen. Von 0,1. Dann sei
sicherer, um anzugreifen. Jedenfalls. Dann haben wir zwei weitere Events , bei denen wir
statt orientierter
Bewegung auf unser
Ziel, unseren Spieler, zielen. Und all das wird
im dritten Verhalten der KI passieren. Jetzt sollten wir zuerst
die Tafel wirklich füllen. Aber bevor wir das tun, lassen Sie mich einige Dinge erklären Durch die Wurzel. Dies ist der erste Knoten, der
ausgeführt wird, wenn wir
den Verhaltensbaum ausführen Wir haben einige Optionen. Wir haben den Selektor,
die Sequenz und die einfache Parallele Was wir
verwenden werden, sind Selektor und Sequenz, nicht optimaler In einigen Fällen hätten wir eine einfache Parallele
verwenden können, aber das sind die
beiden häufigsten Aber lass uns einen Selektor mitbringen und lass uns auch eine Sequenz mitbringen Sie beide können
diese Pfeile hier sehen. Wenn ich die Verbindung
zum Stamm zwei herstelle, verbinde ich
leider nur einen. Aber bring
einfach so einen anderen Selektor mit. Sie können sehen, dass wir die
Reihenfolge der Operationen 012 haben. So läuft es. Also wenn ich das
herbringe, dann werden daraus zwei. Also
laufen sowohl die Selektoren
als auch die Sequenzen von links nach rechts, um ihre Aktionen
abzuschließen Der Unterschied zwischen
Selektor und Sequenzen , dass, wie es im Tooltip steht,
die Ausführung beendet wird, wenn
eines seiner untergeordneten Elemente erfolgreich ist.
Wenn dies das Gegenteil ist, wird
es von links
nach rechts fortgesetzt, wird
es von links
nach rechts fortgesetzt bis eines der Was wir für den ersten Knoten
verwenden ist Elector Ich gehe hierher. Wir hätten eine Sequenz gebrauchen können. Das ist nicht wirklich wichtig,
denn in diesem Knoten, Selektor-Sequenz oder in dieser Parallele können
wir diese Dekorationen platzieren, was bedeutet, wie die
Bedingungen für diesen Selektor Ich schweife ab. Fangen wir mit dem Einstellen unserer Variablen
in unserer Variablen werden hier Schlüssel genannt, und im Grunde sind es
dieselben Variablen Aber um sie zu aktualisieren, müssen
wir es
auf eine bestimmte Art und Weise tun. Aber fügen wir sie zuerst hinzu. Lass uns b erstellen, wir brauchen
eigentlich drei Bs. Eins, zwei, drei. Wir
brauchen zwei Vektoren. Wir brauchen auch eine
Aufzählung von acht. Sagen wir diese Acht. Sagen wir, P
eins wäre tot. P zwei wäre am besten tot. Drei wäre in acht. Wir brauchen die Reichweite nicht
, weil sie bestimmte andere
haben wird ,
wir brauchen die Reichweite. Warum nicht? Lass uns
auch in Reichweite haben. Wir können es benutzen. In gewissem Sinne. Oh. Die Vektoren sollten Wirte sein. Der Standort und der andere
sollten an den Standort verschoben werden. Jetzt brauchen wir endlich einen Schauspieler. Wir brauchen den Feind, als
ob er gegen den Feind ist. Was werden wir also
tun, um ein Objekt zu erstellen. Der Unterschied besteht darin, dass Objekte in der Hierarchie
höher
stehen als die Akteure. Wir können hier keine bestimmten
Akteure als Variable verwenden. Wir können keinen Schlüsseltyp haben, wie zum Beispiel das Objekt in
diesen Case-Akteur
zu
ändern , aber wir
hätten es so ändern können, dass
es etwas Spezifisches ist. Aber es ist besser, es
so allgemein wie möglich zu halten. Wir müssen nur den Überblick
behalten wir sollten
den Schauspieler oder das Objekt nicht
auf etwas setzen, das nicht
korrekt ist, weil dadurch Dinge rückgängig gemacht werden den Schauspieler oder das Objekt nicht
auf etwas setzen, das nicht könnten Das kann zu Abstürzen führen. Also lasst uns das speichern und zu unserem
Verhalten zurückkehren. Wir hätten einfach in
diese Wanne gehen und abstürzen können.
119. Einrichten von Blackboard-Variablen und KI-Verhaltensbäumen: Hallo und willkommen zum
Game Design Workshop in Real Engine Five Procedural Dungeon Action PZ Manchmal mag es nicht, wenn du draußen eine
Tafel editierst und sie darin geöffnet
hast, was zu einigen Abstürzen
führt Zurück zu unserem Baum. Das Erste
sollte der Lektor sein, aber das ist nicht wirklich
wichtig,
weil er nur einen Dienst
ausführen wird Lassen Sie uns auf dem neuen Dienst arbeiten. Nennen Sie diesen Dienst
ES, PT Service. Am zum PD-Dienst, hol uns. Öffne es, öffne es, Seite. Was wir brauchen, ist dass Sie Tick AI erhalten Lassen Sie uns zunächst
eine Sequenz erstellen, weil wir nicht möchten, dass
sie jedes Mal ausgeführt wird Und das wäre, den
Schauspieler des Spielers als Referenz zu bekommen. Wir haben unsere Variable
in unserer Tafel
, und wir haben ein Objekt Nennen wir diesen Spieler oder Feind. Das Paar ist der Feind des
Ich-Feindes, was auch immer du willst. Oh, wir werden hier eine Variable
erstellen. Es wird eine
Tafel sein, Selector. Nennen wir diesen Selektor
jetzt Enemy. Lass es uns hierher holen Lass uns fragen, ob es gültig ist. Wir werden den p-Wert sichern. Als Schauspieler ist dieser
Wert an der Tafel ein Schauspieler. Wir kennen es von Blackboard, was Objekt ist, aber Akteur der
Basisklasse
spielt keine Rolle Und das ist wichtig, wenn
wir
Blackboard
Blackboard-Schlüssel hinzufügen , um zu wissen, um welche Art von Wert es
sich handelt , welche Art von Wert, welche Art von
Akteur Um welche Art von Variablen handelt es sich, welche Art von Variablen es
sich handelt. Nein. Wir werden prüfen,
ob das gültig ist. Ich werde es hier verbinden. Denn wenn ich nach diesem Wert fragen
würde und ich würde ihn als Vektor
fragen
und es wäre ein Schauspieler, dann würde das nicht funktionieren. Aber es gibt auch
etwas, das uns
sagen wird , worauf er basiert. Lassen Sie uns den Service hier hinzufügen
, um diese gute Chance aufzuzeigen. Also klicke ich mit der rechten Maustaste, ich füge den Dienst hinzu, und der Dienst, den ich
hinzufügen werde, wird gestartet. Wenn ich nun diesen Dienst auswähle, habe ich die Variable nicht verfügbar gemacht. Das ist auch etwas
sehr Wichtiges. Wir müssen die
Blackboard-Tasten sofort editierbar machen. Sie sollten freigelegt sein, sonst kann
der Baum sie sehen. Jetzt haben wir also den
BB-Feind hier, und wir müssen ihm
eine Referenz geben , unsere
Blackboard-Tasten, wie Sie sehen können Also welcher Schlüssel ist das? Dieser Schlüssel wäre also Feind, von
dem wir wissen, dass es sich um ein
Objekt vom Typ Schauspieler handelt, und wir korrelieren diesen
Wert auch mit der Tafel Wenn nun eine dieser Änderungen der Ereignisse nicht korrekt ist, wird
das nicht funktionieren Deshalb sage ich, dass es etwas
übertrieben ist,
Tafeln für einfache Aufgaben zu verwenden , aber es ist auch
eine nette Möglichkeit, Tafeln anzuzeigen Lass uns weitermachen. Wenn
er nicht gültig ist, möchten
wir diesen
Schlüssel erneut an der Tafel Als Objekt. Weil wir
versuchen, es als Schauspieler darzustellen. Sie können sehen, dass es nicht existiert. Das ist also nur eine
Möglichkeit, es zu umgehen. Im Grunde speichern
wir es als Objekt und wir wissen
irgendwie, speichern
wir es als Objekt und wir um welche
Art von Objekt es sich handelt. Lass uns das hier verbinden.
Und was den Wert angeht, werden
wir es schaffen. Also, das ist das
Einzige, was läuft. Die zweite Sache, die
wir tun müssen, ist alle unsere Werte
zu aktualisieren. Um das zu tun, müssen
wir eine Blueprint-Schnittstelle hinzufügen, wir werden eine Funktion hinzufügen, alle
Get-Ts aufrufen und es wird eine Menge Ausgaben
haben Aber wir brauchen unseren Bulin. Wir müssen tatsächlich
unsere Blackboard-Schlüssel kopieren. Also ist einer tot, der andere, geführt Der andere ist in
und ist in Reichweite. Dann brauchen wir noch einen Wert von E M, nein. Ein EA habe ich angegeben. E Ein Staat. Nennen wir dieses Datum. Zu guter Letzt brauchen wir noch einen
, der Typ ist oder der Standort des
Gastgebers sein wird. wir nun zu
unserem Charakter zurück, nur um diese letzte Funktion zu
erfüllen. Oben unten befindet
sich ein Charakter, der KI-Charakter, eine Kugel. Es ist geschlossen oder wir öffnen es erneut. Wahrscheinlich durch den Absturz. Es ist hier nicht geschlossen. Ist es. Das ist dieses Ding
, das es sehr
klein macht . Verbannen wir es hier drüben. Gehen wir jetzt zu unserer Benutzeroberfläche, gehen
wir zu Starts
und lassen Sie uns die
richtigen Ankünfte verbinden. In Reichweite für Reichweite, drinnen für den Einblick,
tot für tot, Host-Standort für Host-Standort, acht für Status, und Host
ist tot oder Host ist tot. Gehen wir zurück zum Service. Lassen Sie uns eine Reihe von
Black-Port-Schlüsselwerten erstellen. Die Acht. Holen Sie sich den Staat Suts. Also hol Stuts Und wir können sehen, was
was ist? Wir brauchen einen Toten. Wir brauchen einen toten Posten. Sie sollten alle BB
vor sich haben, Blackport Key. B innerhalb des B-Bereichs. Als zusätzliches R duplizieren wir noch
zweimal B 8 und B. Jetzt müssen wir
all diese Werte angeben. Fangen wir also damit an,
dass wir Blackward Kias öfter kopieren und einfügen
müssen Und wir kriegen die Bullen,
Dad, die Bion die Keys Range Verbinden wir das und lassen Sie uns
eine Verbindung zwischen tot und
Host zu Insight
und Reichweite Lassen Sie uns abschließend diese
schwarze Taste in Aktion setzen. Ich werde den Staat herholen. Geben Sie den Back-Portkey als Vector ein und verbinden Sie das
hier und das hier. Also, alles ist vorbereitet. In unserem BTT BT-Service. BTT BT-Aufgabe. Weit weg. Schließen wir den Dienst.
Wir brauchen es nicht mehr. Gehen wir zurück zu drei
und wir müssen los. Ich habe sie nicht posieren lassen, geh zurück zum Gottesdienst. Lassen Sie uns das alles aufdecken. Wir können dieses I hier drüben anklicken. Wir müssen nicht
wirklich darauf klicken, aber wir können hier auf
das I klicken. Jetzt zurück zu drei. Lassen
Sie uns den Dienst auswählen. D sie kompilieren und jetzt können
wir sie alle einstellen. Aber tot ist tot. OS tot ist Host tot. Drinnen ist drin,
I-Bereich entspricht Reichweite, AD-Status und
Host-Standort ist Host-Standort. Dadurch werden unsere Statistiken,
unsere Tafel, aktualisiert , da wir alle 0,5 mit einer
Abweichung von eins
sehen können alle 0,5 mit einer
Abweichung von eins
sehen Ich denke, das ist ein
bisschen niedrig. Aber vielleicht sollten wir es
ein bisschen schneller machen. Um das zu tun, setzen wir
es auf 0,4 und die Abweichung auf eins, und
es läuft alle drei, zwei, 5 Sekunden
statt vier bis sechs. Oh. Die nächste Sache ist, was machen
wir mit all diesen Informationen? Nun, ich denke, das ist ein
guter Ausgangspunkt für diesen. Wir haben unsere Referenzen übergeben, wir haben unsere Variablen
an unsere Tafel Und beim nächsten Mal fangen wir an zu
programmieren, was
mit diesen Informationen passiert
120. KI-Patrouille-Verhalten und Panikmodus: Hallo und willkommen zum
Game Design Workshop, echten prozeduralen Engine Five-Kurs Erstellung von
Dungeon-Action-Rollenspielen Zuvor haben wir unseren Service
eingerichtet, um unsere Informationen zu aktualisieren Und dafür haben wir Funktion in unserer
Blueprint-Oberfläche
verwendet, die als Get Stats bezeichnet wird In dieser Funktion haben wir einige Ausgaben
hinzugefügt und in unserem KI-Charakter haben wir diese Funktion gefüllt,
um unsere Starts weiterzugeben In unserem Service
haben wir dann den entsprechenden
Code verwendet, um die
Tasten auf der Tafel zu setzen , indem wir von unserem gesteuerten Pon
aus gestartet Jetzt haben wir auch festgelegt, dass das Pon des
Zahlers nur einmal ausgeführt
wird, wenn der
Blackboard-Schlüssel nicht gültig ist Lassen Sie uns jetzt weitermachen. Lassen Sie uns einen
Selektor-Lektor erstellen , wie Sie sehen können Wenn wir die Route verlassen, erhalten
wir viel mehr Optionen Dies kann beispielsweise passieren, wenn EQuS nach dem ersten Knoten
ausgeführt Und wir werden nicht
ins Detail gehen. Aber der erste Selektor sollte
nur einen Dekorateur haben, und das wäre ein
Blackboard-Decorator,
was einen Blackboard-Zustand bedeutet Wenn wir also
auf den Decorator klicken, was im Grunde eine Regel ist,
um damit fortzufahren, wir die Regel verwenden.
Lass uns auf die Regel klicken Und wir werden unsere Abfrage so
einstellen, die
Blackboard-Taste, die nicht gesetzt ist, die Blackboard-Taste ad wäre Wenn wir tot sind, werden wir das nicht
weitermachen, und es wird den Anruf abbrechen Das bedeutet,
dass alles, was da passiert, wir hier weitermachen, was in unserem Fall bedeutet,
nichts zu tun Nun, für unseren ersten
Wähler, benutzen wir ens. Das könnte das
Beste sein, was
unser Selektor zuerst versucht, weil er aufhört, wenn die ersten
Kinder Unser erster Versuch ist also erfolgreich, wenn
wir uns
im Patrouillenmodus befinden Und das erinnert mich daran, gehen
wir zurück zu unserer KI und setzen unseren Status
auf Standardpatrouille. Das ist es standardmäßig. Das ist sehr wichtig, denn
wenn das nicht Patrouille ist, dann läuft unsere Sequenz
nicht, ich werde nicht spielen. Wir werden
den Korridorschlüssel hinzufügen. Wir werden
den schwarzen Portschlüssel
auf den Aufzählungsstatus setzen , und das ändert die Schlüsselabfrage und entspricht dem Schlüsselwert Oh ja. Wir müssen
zur schwarzen Tafel. Für die A
müssen wir einen Typ wählen, das wären KI-Staaten. Alle Einzelheiten. Lassen Sie uns nun den
E-Wert auf Patrol setzen. Dies ist die Voraussetzung
für die Ausführung der Sequenz. Wenn dies fehlschlägt,
wird mit dem nächsten Schritt fortgefahren. Der erste, der
erfolgreich sein wird, wird eintreten. Das ist der Selektor. Jetzt
machen wir die Sequenz,
was zwei Dinge bedeutet, bis eine davon ausfällt Nein. Das erste, was
wir tun müssen, ist eine Aufgabe auszuführen, die einen zufälligen Punkt
erhält. Lassen Sie uns eine neue Aufgabe erstellen. Nennen wir es BT-Aufgabe. Lassen Sie uns zwei zufällige Standorte ermitteln. Und wir geben es ein. Jetzt. Wir werden KI ausführen, das heißt wann, habe nicht so viel
erklärt. Hier haben wir eine Empfangs-Tick-KI bekommen, die der Tick tatsächlich
anhand unserer Timeline bestimmt hat. Hier haben wir hier ein Häkchen gesetzt , bei dem dieser ausgeführt wird. Unser Exute wird diese Aufgabe hier
nennen. Nennen wir es also tatsächlich. Wir können hier bei Aufgaben die zufällige Position von
DT Tsk sehen zufällige Position von
DT Tsk Aber lassen Sie uns den Code eingeben. Also das ist der Ex, der KI empfängt. Empfangen Sie das Ereignis „KI ausführen“. Dafür benötigen wir drei Variablen aus
den Blackboards Lassen Sie uns drei Variablen erstellen Blackboard Value
oder But I have or selector Der Rest von ihnen.
Schlüsselwähler. Schlüsselwähler Der erste
wäre unser Umzug nach Key. Der zweite wäre Gastgeber. Der dritte wäre
unser Root, Root-Host. All diese müssen
vor ihnen liegen, nur um korrekt zu sein. Das Wort Schlüssel wird nicht benötigt. Wir werden
unseren Kontrollpunkt bekommen. Wir werden den Standort des
Schauspielers ermitteln
und auswählen. Der Wert wäre,
wenn unser Host tot wäre. Der Wert als Bann, weil
unser Host tot ist, ist ein Verbot. F B, wir werden den
Host-Standort ermitteln, genau genommen Host-Standort, und
wir werden
einen Port als Vektor bekommen .
Verbinde es hier. Als Nächstes zeigen
wir
auf den erreichbaren Radius und setzen
den Radius auf 800. Was macht das? Es sagt
uns, wenn unser Gastgeber tot ist, bekommst du einen zufälligen
Punkt gegenüber dem Spieler. Wenn er nicht tot ist, bekommst du einen
zufälligen Punkt in der Nähe des Wirts. Und dann gehen wir zu dem Film, den
bemerkenswerten Filmen. Wie auch immer, Luck ist ein Vektor, und das ist ein Ergebnis Wenn wir jetzt eine Aufgabe ausführen, müssen
wir die Ausführung beenden Nun, nicht immer, aber hier muss man wissen,
dass es ein voller Erfolg ist Ich verstehe schon, weil wir hier
keine Bedingungen stellen Ob das fehlschlägt oder erfolgreich ist, spielt für uns keine Rolle Wir werden sagen, dass
es erfolgreich war. Unsere Sequenz kann die nächste Aufgabe
ausführen, was wir nicht
komplizieren werden. Wir werden nur zwei verwenden. Denn für die Blackboard-Taste verwenden
wir Zug zwei,
A, dann C. Jetzt ist es Standort, nicht Standort. Nein. Was wir tun müssen,
ist unserer Aufgabe nachzugehen und zu
überprüfen, ob wir das getan haben. Ich habe das
nicht veröffentlicht. Sie müssen immer öffentlich sein, und wir können den Umzug
auf unseren Standort, unseren Host-Standort auf
unseren Host-Standort festlegen , und der Host ist tot für
den Host ist tot. Lassen Sie uns von hier aus eine weitere
Sequenz machen. Geben Sie einen Decorator und einen
Blackboard-Wert und die Bedingung wäre:
Root ist tot, Host ist Und wenn es nicht gesetzt ist, gehen
wir rein. Und was wir tun werden,
bitte warte 5 Sekunden. Also, wenn es patrouilliert
und der Host nicht tot
ist, warte ich 5 Sekunden. Wenn es patrouilliert
und der Host tot ist, läuft
er einfach
zufällig durch unseren Wir haben zum Beispiel einen Panikmodus geschaffen. Der Host ist gestorben, wir rennen
endlos los. Dies wird ein Panikmodus sein. Wir werden ihn nicht im Panikmodus haben. Wir werden einfach wieder patrouillieren und es wird von selbst in Panik geraten. Um es noch einmal
zu wiederholen, wir fangen an
und prüfen, ob wir nicht tot sind. Wenn wir nicht tot sind,
versuchen wir herauszufinden, ob
wir patrouillieren Wenn wir nicht patrouillieren, werden
wir etwas anderes tun Wenn wir patrouillieren, wählen
wir einen zufälligen Ort um uns herum Wir ziehen an diesen Ort. Wenn unser Gastgeber nicht
tot ist, warten wir. Wenn unser Host tot ist, wählen
wir einen anderen
Ort und rennen herum. Nun, eine letzte Sache sollten
wir
noch einmal tun, die Abtreibung selbst Wenn sich das ändert, bricht
das ab, s. Und wenn der Host tot ist,
wenn der Host tot ist, das ab, wir brechen das ab, wir brechen das Gewicht Eine einfache Sache ist die CVI-Pass-Sequenz hier drüben Hier wird es der
letzte sein, denn zwischen ihnen wir schießen. Und anstatt nach Patrouillen zu
suchen, werde ich nach Betäubung suchen Und wenn wir fassungslos sind, tun
wir nichts
, was es wäre Wir sind fassungslos. Ich weiß, vielleicht bist du auch fassungslos, aber so funktioniert es Dieser ist einfach. Und wir werden es uns selbst überlassen, wenn wir den
Zustand ändern von. Nun, ich denke, das
könnte eine nette Überwindung sein. Im nächsten Schritt werden wir die Schießlogik anwenden, denn wenn wir nicht patrouillieren müssen wir überprüfen,
ob wir schießen Und zuletzt überprüfen wir, ob
Betäubung vorliegt . Und dann werde ich
dich sehen Auf Wiedersehen.
121. KI-Angriffsmodus und Sichtlinien-Checks: Hallo und willkommen zum Game
Design Workshop Under Engine Five Procedural Dungeon Action-RPG Creation Zuvor haben wir eine
BT-Aufgabe zur Auswahl eines Standorts erstellt. Wir haben drei Variablen erstellt, die Black Port Keys, und eine davon ist
der Host-Standort. Die andere ist der
Umzug zum Standort, und die andere ist, dass
der Host tot ist. Wenn der Host also tot ist, wählen
wir einen Standort in der
Nähe unseres Spielers. Wenn er nicht tot ist,
wählen wir einen Standort in der
Nähe des Hosts. Und wir legen diesen
Ort fest, an den wir umziehen werden. Dann beenden wir die
Ausführung mit einem vierten Erfolg. In unserem Baum haben wir es
nach der Frage hinzugefügt , ob
der Spieler tot ist. unserem Selektor überprüfen wir als
Erstes,
ob sich unsere KI auf Patrouille befindet Befindet sie sich im Patrouillenstatus, wählen
wir diesen
zufälligen Ort der Aufgabe Wir verwenden diese Aufgabe, es sich um
die Auswahl eines
zufälligen Standorts handelt. Wir ziehen an diesen Ort. Wenn der Host tot ist, warten
wir 5 Sekunden. Wenn er nicht tot ist,
laufen wir weiter im Panikmodus. Und dann haben wir
eine weitere Bedingung hinzugefügt, eine weitere Sequenz, falls das fehlschlägt. Es wird versuchen zu überprüfen,
ob wir betäubt sind, und wenn wir betäubt sind, wird
es nichts tun Nein. Lass uns sofort unseren
Angriff starten. Aber auch dieses Mal brauchen
wir einen Selektor. Weil wir zwischen
zwei Dingen suchen werden , um zu überprüfen, ob wir das eine oder das andere
eingeben, weil der Selektor stoppt wenn eines seiner
untergeordneten Elemente erfolgreich ist, sodass er nicht
zum nächsten übergeht Lassen Sie uns nun tatsächlich eine
Sequenz verwenden. Geben wir den
Blackboard-Wert für den Decorator ein. Wählen wir den Decorator aus
, der Blackboard Key wäre, unser Status entspricht Angriff Natürlich wird es sich von selbst abtreiben. Oh. Holen wir uns unsere Sequenz. Als Erstes sollten wir überprüfen, unser Schauspieler in Reichweite
ist. Lassen Sie uns hier die
Bereichsvariable auflisten. Stellen Sie einen Dekorateur auf, Tafel. Reichweite. Das ist eigentlich nicht festgelegt. Wir sind nicht in Reichweite, wenn wir uns
in einem Angriffszustand befinden, und wir sind nicht in Reichweite Gehen wir in Reichweite. Um das zu tun, benötigen wir
eine weitere Aufgabe. Stellen wir das auch auf
Surfbrett ein. Wissen Sie was,
lassen Sie uns eigentlich nicht vorwärts gehen. Wenn wir nicht in Reichweite sind, werden
wir versuchen, in
Reichweite zu kommen, was auch immer passiert. Selbst wenn der Spieler
plötzlich in unsere Reichweite kommt, sollten
wir trotzdem zu der
Position gehen, für die wir uns entschieden haben. Es wird so aussehen lassen, als würde die KI etwas tun,
wir werden Angst erzeugen. Lassen Sie uns jetzt unsere Aufgabe erstellen, nennen
wir sie
Schritt zum Ziel. Neue Aufgabe, im Tempo, nennen wir das
Wards und treten ein. Wir werden das Event
Execute erneut verwenden. Strahlt KI aus Und das Erste, was wir tun
sollten, ist für den
Fall, dass wir bereits angegriffen haben
und rotieren, die Rotation so Fall, dass wir bereits angegriffen haben eingestellt haben , dass sie
sich zum Controller dreht Wir müssen auf
Bewegungsrotation umstellen. Wir senden an
unseren KI-Blueprint. Das ist die Kugel, mit der wir uns gerade bewegen werden, und wir müssen die
Orient-Rotation zur Bewegung nutzen Denn wenn wir angreifen, verwenden
wir die
Orient-Rotation zur Steuerung. Nein, Bacor Service,
diese Bactor Task. Das nächste, was wir
tun sollten, ist eine Frage zu stellen. Also werden wir eine Filiale anlegen Nun, die Frage wäre, können wir einen Punkt
neben unserem Spieler erreichen? Wir finden einen Punkt Im Grunde werden
wir wieder eine
mathematische Formel erstellen, um einen Kreis
um unseren Charakter zu
bilden. Und wenn wir einen
Punkt in diesem Kreis erreichen können, wird
es wahr sein. Wenn nicht,
wird es falsch sein und wir werden die
Ausführung ohne Erfolg beenden. Also das wird
wieder laufen. Es wird scheitern. Wenn also der erste fehlschlägt, bricht er ab, und dann laufen alle drei erneut und versuchen, einen anderen Punkt
zu finden Oh, wie machen wir das? Nun, fangen wir mit
unserer Kreisformel an. Also werden wir Pi holen. Wir werden
es mit zwei oder einem Maximalwert multiplizieren, und wir
erhalten einen variablen Bereich. Und das Minimum wäre Pi, und das Maximum
wäre I-Quadrat, im Grunde Pi-Quadrat, tut mir leid, zwei Pi, ergibt Pi-Quadrat, wir
müssten mit italf multiplizieren Und daraus werden
wir lernen. O Sinus, stellen Sie sicher, dass es
ein Strahlvermögen und Grade sind, und dann bekommen wir einen Sinus. Die Ausstrahlung
muss dauerhaft sein Wir werden das mit 500
multiplizieren. Das wäre also im Grunde die
Reichweite. Und dann müssen wir es zu
unserem Spielerstandort hinzufügen ,
um den Spieler zu bewegen, einen
Zielort zu bekommen. Und wir werden bremsen. Split ist der Zeitpunkt, an dem wir uns hier
dafür entscheiden. Bremse wählt es mit dem Stift aus. Und von Z aus gehen wir zu einem
zufälligen Punkt im Radius. Das wollen wir nicht für den Radius. Das wollen wir. Eigentlich
ist das ein Radius, nicht der 500. Es ist auch für x, wir werden
das verwenden, für,
wir werden das verwenden und für y werden
wir das Zeichen verwenden. Jetzt verbinden wir
das mit der Bedingung,
dem Rückgabewert, ob wir
ihn gefunden haben oder nicht, ob er erreichbar ist
, und das ist es, müssen
wir dem Controller
der Verbindung mitteilen, Brunch anzusehen kann manchmal
schwierig sein, sich
die Knoten
und den Code Wir müssen uns diesen
Controller besorgen und den
Schwerpunkt setzen . Das ist in diesem Jahr
richtig. Und natürlich benötigen wir
einen Blackboard-Schlüsselwert, also Black Board Key Selector Alle diese sind bis hierher MB
und haben hier keinen Wert als Vektor Wir müssen dies tatsächlich
zu
einer Variablen heraufstufen , denn
wenn wir es zweimal verwenden, erhalten wir
zweimal nach dem Zufallsprinzip zweimal. Und dann werden wir fertig
sein. Zugriff. Das wäre Ask Save. Lass uns den BD-Schlüssel machen. Der Wert ist öffentlich, ob
die IP-Adresse verfolgt oder bearbeitet werden soll. Gehen wir zurück zu unserer Tabelle und von unserer Reihenfolge der
PTs zum Ziel Wir werden das
auswählen. Habe ich jetzt
eingereicht,
wählen wir dies als
unseren Standort aus. Dann müssen wir nur noch zu. Wir ziehen zu einem Ort, dem wir die Patrouille haben, also kopiere ich hier, wo
die
Variable bereits gesetzt ist. Hier. Und das wäre
es von der Seite. Wenn wir also angreifen
und uns nicht in Reichweite befinden, wir uns einen zufälligen Ort. Wir versuchen,
einen zufälligen Ort in der Nähe
des Spielers zu finden und uns dorthin zu bewegen. Bis wir ihn finden,
stecken wir in dieser Schleife hier drüben fest. Fahren wir nun
mit dem nächsten fort. Es wird wieder
eine Sequenz sein. Es wird
auf der Grundlage von zwei Dekoren laufen. Der eine, die Reichweite
wäre in Reichweite. Fügen wir noch eins hinzu oder k. Und dieser
wäre auch überraschend, wir brauchen hier eine weitere Aufgabe. Aber ich denke, das ist ein
guter Ausgangspunkt für diese Aufgabe. Wir werden mit dem nächsten
weitermachen. Auf Wiedersehen.
122. KI-Navigationsvolumen und Pathfind-Optimierung: Hallo und willkommen zurück zum Game-Design-Workshop
und zum
prozeduralen
Action-Action-Kurs „Real Engine Five “. Zuvor haben wir
damit begonnen, dass ein Teil unseres Zustands einem Angriff
auf unseren Verhaltensbaum gleichkommt Angriff
auf unseren Verhaltensbaum Wenn es also Angriff entspricht, prüfen
wir, ob sich unser
Charakter in Reichweite befindet oder nicht. Wenn es sich nicht in Reichweite befindet, versuchen wir, einen
Schritt in Richtung des Charakters zu finden, bewegen uns zu einem Ort
in Richtung des Charakters und wir bewegen uns zu diesem Ort. Wie erreichen wir das? Nun, wir stellen unsere
Bewegung auf Rotation um. Der Charakter bewegt sich also
entsprechend seiner Rotation. Und dann
sind wir dabei, einen Punkt in Bezug
auf den Charakter zu bekommen. Wir rechnen hier, um einen Kreis
um die Figur herum zu bilden, und wir überprüfen einen
Radius von
200 um den Punkt mit 500 Radius , an dem wir den Kreis erstellen,
wir bilden den Kreis
und von diesem Punkt aus erhalten wir im Grunde einen weiteren
Radius von 200. Nein, der Grund, warum wir das tun. Ich habe nicht so
viel erklärt, weil wir nicht wirklich einen Punkt
gegenüber dem Spieler nehmen wollen und einfach hier hingehen wollen. Nimm diesen Punkt und einen
anderen Radius von 200 vielleicht entfernen wir uns ein
bisschen weiter
vom Charakter. Es gibt mehr Chancen
, dass das passiert. Es könnte
kompliziertere Methoden geben
, mehr mathematische
Formeln, mehr Bedingungen Aber ich denke, das ist eine nette
Lösung für ein schnelles Ergebnis. Wenn es danach nicht wahr ist, geben
wir execute false zurück. Also unser Tetrac läuft hier in
einer Schleife, bis es einen richtigen Punkt
findet Und wenn nicht,
wenn es den richtigen Punkt findet, setzt
es den
lokalen Mausfokus, und wir setzen den
Blackboard-Schlüsselwert
und beenden die Ausführung Also können wir zu diesem Ort gehen. Dann haben
wir damit angefangen, was passiert wenn der Carter in Reichweite ist
und auch dicht dran ist. Nun, wie das
ausgehen wird , wie wir vorgehen
werden, eine Aufgabe erstellen, eine Aufgabe zum Warten, eine Aufgabe zum Schießen
und
eine Aufgabe zum Zurücksetzen des Schießens. Fangen wir also mit der Arbeit am, der neuen Aufgabe und der Druckbasis an. Nennen wir das natürlich Am, wir benötigen die Quittung. Achten Sie darauf, dass
Sie die KI ausführen und
nicht nur ausführen wählen Wir schicken die Nachricht, dass wir die Controller-Rotation brauchen ,
also
die Controller-Nachricht Und wir werden den
Punkt vom Punkt aus festlegen. Und wir werden aufstehen und
wir werden Aufmerksamkeit bekommen. Wir verwenden also die
Controller-Rotation. Wir legen den Schwerpunkt fest
und er wird sich
dorthin drehen. Wir werden also die
Ausführung beenden. Jetzt sprechen wir über
die Drehung
des Controllers
, was der Punkt ist. Es gibt eine Möglichkeit,
die Drehzahl zu steuern. Wenn wir also zu
unserem KI-Charakter
gehen, zu Charakterbewegung
und Typrotation gehen, gibt es hier bestimmte Einstellungen, und es gibt eine davon, die Rotationseinstellungen für
die
Charakterbewegung, die momentan bei 40 ist, reduzieren
wir sie auf 360. Aber das ist im Grunde die Geschwindigkeit
, mit der sie rotiert. Wie Sie sehen können, wird die Änderung der
Rotation pro Sekunde verwendet wenn die Steuerung die gewünschte Drehung oder die Ausrichtung an der Bewegung eingestellt hat. Damit wird jedoch in beiden Fällen die
Drehung oder die gewünschte Drehung
oder die Ausrichtung der
Drehung an der Bewegung gesteuert . wir nun zu unserem BT zurück
und wenn wir mit der Ausführung fertig sind, sollten
wir den Erfolg erzwingen. Gehen wir zurück zu unseren
Dreien und nennen wir diese Aufgabe. PTT A. Als Nächstes sollten
wir warten. Jetzt werden wir die
Gewichtseinstellungen
ein wenig ändern Gewichtseinstellungen
ein wenig haben hier eine Wartezeit, also
warten wir 0,2 Sekunden. Wir geben Ihnen eine
zufällige Abweichung von 0,1. Wir können also 2,3
Sekunden oder 0,1 Sekunden warten. Und das erzeugt
ein
zufälliges Gefühl , wann die KI angreift. Und hier kommt der nächste Teil
, den wir drehen werden. wieder eine neue Aufgabe. Sei Printbase. Nennen wir das BT Task Shot. Lass uns das hinrichten lassen. KI. Das ist sehr einfach. Was wir tun
müssen, ist unsere Kontrollnachricht
und die Nachricht zu bekommen , weil wir den
Code für das Schießen bereits erstellt
haben. Jetzt können wir eine
Gewichtsaufgabe machen,
oder wir können hier eine
Verzögerung einbauen. Denn nachdem wir gedreht
haben, sollten wir noch warten. Warten wir auf einen zufälligen Bereich. Zufälliger variabler Bereich, tut mir leid, von 1,4 bis 1,1 0,6. Lassen Sie uns die Ausführung beenden. Ich mache das so und nicht konsequent, weil
ich zeigen möchte, dass es viele
Möglichkeiten gibt, Dinge zu tun. Es gibt keinen einzigen Weg, und es macht auch
keinen Unterschied, ob ich das Gewicht hier
lege. Dann
besteht der Unterschied im Grunde darin, dass es vielleicht abbricht,
wenn ich es selbst abbreche. Aber die Aufgabe wird
auch abgebrochen, wenn ich mich selbst abbreche. Es gibt also viele
Möglichkeiten, Dinge zu tun. Es muss einfach funktionieren. Oh, lass uns Shoot nennen. T ist Task Shooting. Und jetzt setzen wir das Schießen zurück, also brauchen wir eine neue Aufgabe, um das
Basis-Reset-Shooting zu starten. Und was wir
tun werden, wir werden
es uns anschauen, weil wir die Variablen setzen werden
, gehen
wir zum
Baum und zeigen das Wir werden diese
Variablen auf „Falsch“ setzen. Damit sie auf wahr gesetzt werden. Das Häkchen muss erneut ausgeführt werden. Er
muss alle
0,3 oder 0,5 dieser Zahlen überprüfen 0,3 oder 0,5 dieser Zahlen sie wieder auf
„Wahr“ setzen. Das ist also eine weitere
Möglichkeit, eine kleine Verzögerung zu erzeugen. Gehen wir jetzt zum Reset Shooting. Lasst uns Signale empfangen. Wir müssen nur zwei Variablen
erstellen, Blackboard-Tasten oder Schwarz Blackboard keys elector,
und eine davon wird Bp sein. Der andere wäre PB-Bereich. Dies bietet die Möglichkeit auch dann, wenn sich der Spieler außerhalb der Reichweite
bewegt Diese Verzögerung, diese
Verzögerung, zum Beispiel, wenn wir zwischen den
Sekunden außer
Reichweite geraten, gibt uns die Möglichkeit komplexere
Aktionen durchzuführen, wenn wir wollen. Kehren wir also zu diesem Thema
und dem Zupfwert zurück. Werte und fertig ausführen. Was die Tatsache angeht, dass wir
diese beiden Fallstricke festlegen, und wir sollten sie veröffentlichen. Wir können sie zu unserer KI machen. Drei hier kompilieren. Ich Ich glaube, ich wähle
die falsche Veranstaltung. Ja, das muss
es sein, also sei zu diesem Set. Und hier sind
sie natürlich hier. Eng in der Reichweite. Im Grunde ist das für.
123. Navigationsvolumen und Optimierung: Hallo und willkommen zurück
zum Game Design-Workshop
und zum prozeduralen AR
Phys-Erstellungskurs für echte Engine
Five-Dungeon-Action AR
Phys-Erstellungskurs für echte Engine
Five-Dungeon-Action Nun, um es in Bewegung zu bringen und
all unsere wunderbaren Sachen zu machen. Wie Sie bei jeder
Aufgabe sehen konnten, für die wir
einen zufälligen Punkt oder eine Bewegung
benötigten , benötigen wir Nervendaten, die wir eigentlich nicht benötigen,
weil sie automatisch abgerufen werden können. Aber was wir
tun werden, ist, ein riesiges Volumen zu
erstellen. Das. Also brauchen wir ein weiteres
Mesh-Bounce-Volume Setze seinen Standort auf 00. Setzen wir es überall auf
vier K. Wir können die Höhe
um ein Vielfaches erhöhen , weil wir
bei 00 beginnen , also vielleicht. Ja, das sind 30 k. Wenn das Null ist. Das
ist der Grund, warum wir vielleicht nicht
unendlich sein können , weil wir die
Volumenpläne für
die Navigation nicht verschieben können Volumenpläne für
die Navigation Wie Sie sehen können, versucht es,
das Navigationsvolumen zu vergrößern, auch wenn es nichts enthält Aber wir müssen
einige Änderungen vornehmen. Ich werde bauen. Wir werden danach weitermachen. Und lassen Sie mich zeigen, warum
wir diese Einstellungen benötigen. Das ist ein riesiges
Navigationsvolumen. Zuallererst
zeigen wir, dass wir
irgendwann zu einem Projektumfeld
übergehen müssen , das
ist ein nationales Umfeld, und wir wollen, dass es dynamisch ist. Wenn ich „Letzte Sache“ drücke, müssen
wir
die Schaltfläche „Neufassung“
auf „Ist es
Laufzeitgenerierung“ ändern auf „Ist es
Laufzeitgenerierung , dann bin ich okay Ich habe es aus den
Projekteinstellungen. Wenn ich jetzt auf Play drücke, wird es ein bisschen stämmig angezeigt Und wenn ich Nation wähle, also wenn ich
Navigation wähle, kannst du es sehen Es ist ein großes Gebiet. Es ist eine Navigation, sogar
auf den Dächern. Also ja, es ist ein großes Gebiet, und je größer der Arm wird desto mehr Bereiche haben wir, und es wird chaotisch Es wird wirklich Rahmen bekommen und all diese KI, die
sich um ihn herum bewegt Um das zu ändern,
werden wir etwas verwenden. Man sollte nicht ehrlich
sein, es wie
dieses Gebäude an Land in einem riesigen Navigationsbereich zu tun . Aber jedes andere System
würde eine
Menge Zeit und Arbeit erfordern , um
fertig zu sein, und dazu noch mehr Aber fairerweise muss man sagen,
dass es
durch Blaupausen
und so ein bisschen optimiert werden kann ein bisschen optimiert durch Blaupausen Was wir für uns tun werden,
ich werde die
Navigation verlassen ist, dass wir wieder zu den
Projekteinstellungen gehen werden Wir werden nach
Anrufern suchen. Okay. Also werden wir diese
Einstellung verwenden, um die Navigation
nur um den Navigationsaufrufer herum zu generieren nur um den Navigationsaufrufer herum Und was ist
Navigation in Okers? Im Grunde
sind sie also ein Tool, ein Tool, das
zur dynamischen
Generierung und Verwaltung von
Navigationsmaßnahmen verwendet wird , also im Grunde genommen in großen
oder offenen Umgebungen. Lassen Sie uns das demonstrieren. Lass es uns zu unserem Charakter
hinzufügen. Gehen wir zu unserem
Top-Down-Charakter. Fügen Sie Voker hinzu, Navigation in Vocer Lassen Sie uns das ein wenig optimieren,
weil ein Radius von 3.000 groß ist, also mache ich einen Entfernungsradius von
200 Sie möchten, dass der Entfernungsradius etwas größer ist
als die Generierung, sodass er wie eine
Spur entsteht, weil er entfernt wird Also lass uns jetzt auf Play drücken. L, lass uns auswerfen. Und
jetzt kannst du sehen, das Chaos in der Navigation, was
nur um unseren Charakter herum berechnet wird Also werden wir
dasselbe mit unseren KIs machen. Was ist das für ein Fehler
bei der Suche nach Spielern, weil die KI
vor dem Spieler existiert. Das ist ein Problem. Das ist nicht wirklich wichtig.
Es ist ein Nullfehler. Du konntest den
Spieler eine Sekunde lang nicht finden. Lass uns noch einmal spielen. Lassen Sie uns eigentlich zu unserer KI
zurückkehren.
Fügen wir den Aufrufer hinzu. L legen wir den
Titelradius 2200—400 fest. Lasst uns tatsächlich KI sehen. Wie kann ich? Nein, tun wir nicht. Aber wir haben einen Schlüssel. Gehen wir zu den obigen Ausführungen über. Schon wieder dunkel. Mein paar Schatten. Wir müssen den Eingang
zum Aufzug wechseln. Besser. Gibt es hier auch
keine KI? Es gibt KI. Okay. Jetzt können wir
KI verwenden, falls sie irgendwas tut. Im Moment
scheint es zu bleiben. Oh, um es leicht zu sagen,
lass uns zum Baum gehen. S. Und kann es nicht finden, ich weiß Wir haben unseren Kindern nicht gesagt, dass sie im Grunde genommen
dadurch kontrolliert werden. Denn wenn wir unseren Pon nicht
darauf einstellen, dass sie KI
haben, werden sie es nicht wissen.
Findet es sinnvoll. Also im Detail b, in der Standardeinstellung b,
werde ich im Grunde nach einem KI-Controller
suchen Anstelle des
generischen KI-Controllers A werden
wir unseren
AIC-N-Controller verwenden , und jetzt werden
sie gesteuert Fangen wir noch einmal an, und
wir haben hier eine KI. Aber auch hier tut sie nichts. Diesmal aus einem
anderen Grund. Ich kann wieder nicht viel finden. B. Aber ich tue es? Oh, das ist der Charakter. Mein Fehler.
Gehen wir zurück zur KI. Hier muss es sein. Also
muss die KI sie kontrollieren lassen, nicht der Charakter. Also lass uns spielen gehen. Ha.
Lass uns nochmal spielen. Du hast KI. Großartig.
Und es tut nichts. Und immer noch viel Fundstück. Nun, es macht Sinn. Es tut mir leid. Ich
vergesse immer wieder die Grundlagen Wie Autoposse A über
dem feindlichen KI-Controller, das ist ein Ort in der Welt, an dem wir die KI
nicht platzieren Wir würden platzieren, wenn wir einer anderen Karte debuggen würden,
aber im Moment
wurden wir platziert oder gespawnt, weil
wir Wir kompilieren und speichern, drittes Mal, viertes Mal, Zeit ist
krank Und lassen Sie uns sehen, dass es
sich nicht bewegt, es bewegt sich. Großartig. Bewegt sich, aber die
Animation wird nicht aktualisiert. Fantastisch. Gut, lassen Sie uns
das im nächsten beheben. Dann rufe ich dich an. Auf Wiedersehen.
124. Finishing des Aufnahmeverhaltens und Debugging: Hallo und willkommen zurück
zum Game Design Workshop, Rail Engine Five
Procedural Dungeon at Pred Zuvor waren wir mit unserer KI
fertig und haben auch die Lautstärke für die Reaktion der
Navigation hinzugefügt. Außerdem haben wir unsere
Navigations-Revoker hinzugefügt Wir haben auch unsere
BTT-Aufgaben abgeschlossen. Ich denke, sie wurden gut genug
erklärt. Jetzt mussten wir ein paar Fehler beheben. Gehen wir zunächst
zu unserer KI hier drüben,
wo all diese
KI-Animations-Blueprints wo all diese
KI-Animations-Blueprints Wenn all diese Informationen vom
Pfandbesitzer stammen,
versuchen Sie, den Pfandbesitzer zu Aber dieses Mal ist unser schlechter
Besitzer kein Spieler. Also das könnte fehlschlagen. Aber was wir tun werden,
ist auf Blueprint mit dem Spielen zu beginnen. Wir werden versuchen
, den Besitzer von Pw zu kriegen. Und wir werden KI und KI
bitten, diese beiden Charaktere rein
zu besetzen und zu bewerben Eigentlich werde ich
es als
KI bezeichnen, der
Charakter wurde übernommen. Und das werden wir ändern. Nun, a. Der Grund, warum wir das tun, ist dass wir hier etwas ändern wollen, was wir durch die Art und
Weise, wie wir es hier
verbinden, durchbrechen , das gehört hierher. Anstatt den aktuellen Acceler abzurufen was ist das für eine Suche hier Um das hier zu löschen und den Charakter mit unserer Charakterbewegung
zu verbinden Und was wir
bekommen werden, ist die Geschwindigkeit. Was am Ende sein wird, und wir werden das hier
verbinden. Der Grund dafür ist, dass die
Beschleunigung mit der Art und Weise, wie sich
unsere Charta entwickelt, nicht wirklich funktioniert hat. Also, wir werden kompilieren, wir werden spielen, und jetzt
soll sich unsere KI bewegen. Wir tun nichts.
Nein, nein, es bewegt sich. Großartig, und es baut
mehr Navigation auf, wie Sie sehen können,
es kann sich überall anders bewegen. Versuchen wir es jetzt anzugreifen. Es sieht uns, sieht uns an. Und er hat nichts getan,
was uns umgedreht hat. Machen Sie diesen Fehler und
sehen Sie, was vor sich geht. Öffne das Spiel. Dieser Tab. Ich werde von hier auswerfen, ich werde
es auswählen, die KI auswählen Denn um es hier,
hier zu finden , musst du es ausgewählt
haben Es sollte ausgewählt stehen,
nun ja, tut es nicht. Okay. Versuchen wir herauszufinden,
welche KI welche ist, denn hier gibt es
zwei, oder Züge. Gewichte. Beide warten. Ich glaube, dieser ist dieser. Dieser hat sich komplett zurückgezogen, weil dieser ständig in Bewegung ist. Also muss man sagen Null. Ja, was
eigentlich nichts bewirkt. Warum
tut es nichts? Bei der Rückkehr. Ich habe versehentlich geschossen und es ist eine ständige Überprüfung der KI des ausgewählten Bundesstaates oder haben wir? A ist ein Lassen Sie mich versuchen, es zu debuggen Okay. Nach
einigem Debuggen finde ich heraus, dass ich dieses Handle hier
erstellt, es
aber nie benutzt habe Nein, was
wir im Grunde tun müssen, ist, wenn wir anfangen, uns hier zu überschneiden. Und wenn wir den Spieler treffen, sind
wir in Reichweite, wir sollten unsere Zeit beginnen. Wir machen die
Pause mit einem Griff aus, wenn die Reichweite erreicht ist, fangen
wir an, nach unserem Spieler zu suchen Und natürlich, was Tod
bei Tod angeht, hier ist es,
gleich nach dem Tod, lassen Sie uns das
wieder in die Hand nehmen und es löschen
und für ungültig erklären Es läuft nicht mehr,
nicht einmal in der Pause. Oh, der nächste Ort
wäre, zu
unserer PT-Aufgabe zu gehen, Schritt für Schritt
zum Ziel. Auch hier habe ich einen Fehler gemacht. Ich habe den Standort der
Spieler-Punts nicht hinzugefügt. Das sind die Grundlagen wie dieser
Bereich im Vergleich zu wo. Ich werde nur hinzufügen. Füge hinzu und das x das. Sei, wenn du nicht ganz Unrecht
hast, musst du ihm sagen
, wo auf der Welt. Wir haben das besprochen. Natürlich wäre der nächste
Ort, an dem
wir auch etwas getan haben. BP AI-Kugel. Ich frage, ob das
Bauteil Zugkraft E hat
, also ob der Schauspieler
gegraben hat , weil wir
es am Schauspieler haben und nicht am Kollisionsrohr,
der Kollisionskapsel Ich glaube, ich habe das Problem verstanden wir nicht schießen konnten, wir gehen zu unserem
BP-Top-Down-Charakter über, und wenn wir beschädigt werden
und wir fassungslos werden, und dann sind wir noch sind sie. Wir
schalten den Staat ein. Und wenn wir schon fassungslos sind,
dann gehen wir, wenn wir
Sift drücken. Wenn wir nicht Shift
drücken, gehen
wir zurück in den Zustand, um den Zustand in den Normalzustand zu
ändern Wenn wir jedoch die Schicht bestehen, schalten wir auf Verzögerung und
warten nicht auf Abkühlen,
was wir auch nicht wieder in den AM-Modus zurückkehren Um das zu erreichen,
gehen wir zu unserer AM-Mechanik, erstellen ein benutzerdefiniertes Ereignis, AM Also, wenn wir
die linke Shift drücken, brauchen
wir das nicht zu tun,
weil sie bereits ausgefallen ist, und wir werden das hier
verbinden,
weil wir diesen Test nicht
machen wollen Für die Todesanimation unseres
Feindes, den
er aufgestellt hat, müssen
wir also unseres
Feindes, den
er aufgestellt hat, unsere Montageseiten für die
Montageanimation finden unsere Montageseiten für die
Montageanimation Montageanimation , und wir brauchen Da ist Eigentlich haben wir es hier angesiedelt. Diese Animation benötigt
dort, wo sie diese Option hat, automatische Überblendung
aktivieren. Das wollen wir nicht. Wenn wir
wollen, dass es dort bleibt. Das Gleiche tun wir für einige andere, ebenso wie für die
Knockb-Animation Gehen wir also zu unserer
Knockback-Animation und wählen die automatische
Überblendung als falsch aus Und bis zum Tod
unseres Charakters. Gehen wir also zu Revenant. Finde den Tod. So wie der Tod hier, so verschmilzt er nicht mit unserem Hauptfeuer. Wir wollen nicht, dass es verschmilzt. Und jetzt können wir testen gehen. Okay. Hast du es mir gesagt? P den Turm. L der Turm. Er ist auf mich gerichtet. Also ein bisschen muss
es der
Rotation folgen. Eine Sache noch. Auch beim Projektil
der Kugel gehen
wir zur Projektilbewegung über, wir folgen der Rotation Ich habe ein bisschen Sound gemacht. Mal sehen, was da los ist. Trainiere. Bitte. Es ist in den Portionen. Große Truhe. Den Schlüssel
habe ich schon. I. Nächstes Level. Ich sehe bei der Mara 50 Gramm. Wir haben eine Menge
Angebote offen und geschlossen. 60 PS, richtig? Ich denke, das liegt an der KI und der
Navigationslautstärke. Zur Laufzeit
wäre es ein bisschen besser,
vielleicht viel besser. Feinde, die auf Fallen treten,
eine weitere KI eine weitere Nervig,
was hier vor sich geht? Ich versuche hierher zu ziehen. Ich treffe den Stand richtig. Aber ich heize
und es versucht, mich dorthin zu bewegen, wo ich heize. Wenn ich klicke, gehe ich trotzdem
weiter. Aber ich sterbe, ich
kriege eine Punktzahl, richtig. Aber wir haben ein Problem mit
Bewegung und Heizung. Aber ich denke, wir werden
einen anderen Boden brauchen. Also lassen wir
das für dann. Tschüss. Wir sehen uns dann.
125. Endgültige Fehlerbehebungen und Gameplay-Polieren: Hallo und willkommen zurück
zum Game Design Workshop und dem Kurs zur Erstellung eines echten Engine
Five-Action-Rollenspiels im
Procedural
Dungeon-Action-Rollenspiel im
Procedural
Dungeon-Action-Rollenspiel Endlich, zu unserer letzten
Lektion zum Debuggen. Lassen Sie uns zunächst das
endlose Labyrinth reparieren, das eigentlich nicht endlos ist, sondern das Rauschen des Motors Was also passiert ist , dass
ich, wenn wir die erste Kachel verschieben,
die falsche Frage stelle, nämlich die Richtung von
der anderen Seite, und nicht gleich
dem letzten Ausgang ist Aber weil wir Labyrinth auf der Grundlage
der Offset-Richtung Unsere Offset-Richtung wird
im Grunde das Gegenteil. Unser letzter Ausgang sollte nicht
das Gegenteil unserer
Offset-Richtung sein das Gegenteil unserer
Offset-Richtung denn nehmen wir an, wir
bewegen uns zum Beispiel nach Norden, dann ist die
O-Offset-Richtung Norden, aber Süden wird das t
, das nicht gleich sein sollte. Aus Süden wird
die Kachel ,
von der wir kommen, der Aufzug. Da der Süden also zur
Aufzugskachel
wird, sollte der letzte Ausgang nicht der Aufzug sein. Denn wenn das passiert, entsteht ein
Labyrinth der Größe eins bringt
das System komplett zum Erliegen und
der Motor stürzt ab Was wir also tun werden, ist die Auswahl
zu wechseln. Und lass uns
hier den letzten Ausgang nehmen, damit wir das bekommen können. Und dann werde ich
die Verbindung trennen. Aus dem Norden brauchen wir den Süden, Osten, wir brauchen den
Westen aus dem Süden, wir brauchen den Norden und vom Westen her brauchen
wir den Osten für das Gegenteil
der Richtung von Orosit Der letzte Ausgang
sollte nicht dem Gegenteil entsprechen. Aber wenn wir den Stil
verlassen, sollte es nicht der Aufzug sein Also das war es, was
den Motor zum Absturz brachte. Es hatte eine von vier Chancen, es ist ein ziemlich schlimmer Bug. Aber wie dem auch sei, einfach logisch, es lag einfach daran,
dass wir in diese Richtung ausgleichen. Weg. Nun, der nächste Bug, der passiert, ist, dass manchmal ein
Labyrinth entsteht, dass man beim nächsten Labyrinth, dann weitermachen,
den ersten Block nicht verlassen kann Und das liegt daran, dass wir den letzten Ausgang
festlegen, aber wir legen nicht die Ich gebe nicht die Richtung vor. Im Grunde genommen geben
wir bei der ersten Ausfahrt die
Richtung so vor, dass sie wahr ist. Aber das machen wir nicht, ich hatte das Debuggen hier.
Kommentar debuggen Wir machen das hier nicht. Ich werde das hier hinstellen. Ich werde das
etwas weiter vorantreiben. Aber jetzt müssen wir den Stil
darüber informieren, dass Ihre Richtung bis
zum letzten Ausgang offen ist, und lassen Sie uns den letzten
Ausgang nehmen, ihn hier. Das hat also diesen Fehler verursacht. Jetzt haben wir mit
einigen Bewegungsproblemen beim Schießen
und Bewegungsproblemen aufgehört . Gehen wir also zuerst
zum Player-Controller. Ein Fehler, den ich gemacht habe. Nun, es gibt eine Menge
, die ich nicht entdeckt habe, aber bei einer Projektgröße muss man den
Standort
natürlich unter Kursor angeben In unserer Funktion Standort ermitteln“ unter „Kursor“ überprüfe
ich die Sichtbarkeit, um ihn unter „Kursor-Standort“
zu Wenn es also
auf nichts trifft und wenn es die Kugelbeschleuniger nicht berücksichtigt, gibt es falsche Werte zurück,
die auf anderen Kollisionen basieren ,
die auf unserer Karte existieren Also werde ich das auf die Kamera stellen
und
das wird das Problem beheben Und als nächstes kommen die Probleme mit den
Schießereien. Wenn wir also schießen, sollten
wir nicht mehr abhören. Also, wenn wir schießen, wenn wir die
Eingabeerkennung verbessern klicken und es wird ausgelöst Und wir schweben
über einem Ziel, wir befinden uns in einem normalen
Zustand, und wir bewegen den Mauszeiger über einem Ziel
und wir schießen Wir sollten die Bewegung stoppen. Denn wenn wir die Bewegung nicht
stoppen, dann wird sie von früher eingeschaltet und wenn sie aktiviert ist
, bewegt sie sich weiter. Also sollten wir die Bewegung
stoppen. Und noch etwas, das mir auffällt ist hier drüben, wenn wir das
Fadenkreuz untersuchen Im Fadenkreuz prüfen
wir also, wann genau jetzt die Änderung vorgenommen werden
muss Wir
überprüfen also, ob wir unter einem Feind stehen,
unser Hursor unter einem Feind steht, und dann ändert sich das Aber wenn wir durchhalten,
wenn wir uns in einem Zustand befinden, ändern
wir das Ziel nicht Wir setzen es nur auf ein
Fadenkreuz, ein rotes Ziel. Das sollte nicht der
Fall sein, um ehrlich zu sein ,
denn wenn wir angestarrt werden, eines der Dinge, die
passieren können, dass ist
eines der Dinge, die
passieren können, dass, wenn wir Stan bekommen, AM vorübergehend zu Stan Also das wäre ein Fehler. Also
was ich tun werde, ist das zu löschen und zur ersten Frage zu
gehen
und einfach die Spielerreferenz zu holen, bin unten und mache eine Also, wenn wir den
Feind treffen oder am Boden ist, dann haben wir Kreuzfluch. Wenn nicht, dann haben
wir einen normalen Cursor. Das sollte also die Änderung sein, und das sollte ein
zentraler Kontrollpunkt sein. Das
ist besser, als
das hier als Option zu haben, ob die erste Frage
die ist, die die Dinge ändert. Gehen wir also zu
unserem Charakter von oben nach unten über. Und wenn wir zielen, sollten
wir auch die Bewegung
unterbrechen. Nach links verschieben, zielen, und so weiter, und so weiter, und so weiter. Hier drüben, bevor wir unsere Montage
abspielen, lassen Sie uns die Bewegung tatsächlich unterbrechen, noch vor diesen beiden Dingen Wir holen uns unsere
Player-Controller-Referenz, ich werde aufhören, mich zu bewegen. Jetzt gibt es eine
Stop-Bewegung für die Navigation, die nicht unsere ist, nur für den
Fall , dass Sie klicken und stattdessen diese
verwenden. Es heißt „Stopp Moving“,
nicht „Stopp Movement“. Hör auf, dich zu bewegen. Falls ich den anderen
anrufe. Stoppen Sie die Bewegung. Siehst du, es ist eine
andere Funktion. Das Ziel ist der
Controller, wenn das Ziel der
BP-Top-Down-Controller ist. Die Logik dahinter bezieht sich auf KI, und um ehrlich zu sein, erstellen
wir unseren
Charakter normalerweise so, dass er eine KI ist, die nur den Status ändert, aber das ist ein
bisschen fortschrittlicher. Das nächste, was wir
tun und das
Spiel ausbügeln sollten , ist hier, wenn wir den Angriff zurücksetzen,
wenn wir den Angriff zurücksetzen, senken wir das
Geschütz Wenn wir also das Geschütz herunterfahren, was auch immer passiert, bedeutet das, dass es in den
Normalzustand wechselt, auch wenn wir
das Geschütz senken, weil wir
unterbrochen wurden oder weil wir
geschossen haben unterbrochen wurden oder weil wir und der Angriff zurückgesetzt werden muss Hier ist also eine Frage: Senke
ich meine Waffe oder nicht? Und das ist unser Ziel. Wenn wir nach unten zielen und
es stimmt, sollten wir das Geschütz nicht senken. Wenn es nicht stimmt,
dann niedrigeres Geschütz. es darum geht, über
diesen Zweig hier drüben zu reden, verwenden
wir ihn an einem anderen Ort, das ist unser Schaden. Wenn wir also Schaden erleiden, wenden
wir uns der Betäubung zu, und es besteht die Möglichkeit, dass wir uns
nicht der Betäubung zuwenden Danach, wenn
wir nicht tot sind. Wenn wir tot sind,
machen wir einfach die Dinge mit dem Tod. Aber wenn wir nicht tot sind, spielen
wir die Heat-Montage und ändern uns je nach
Spielerstatus. Wenn wir betäubt sind
und wir gehen und zielen ist runter, stellen
wir nur die Verzögerung und die Statistik auf Abkühlen und ändern
nichts Das heißt, wir
bleiben bei State Stun. Das wollen wir nicht.
Wir wollen uns an das Ziel des Staates halten. Wenn wir den Zustand nicht umkehren, dann bleiben wir standhaft,
und aus diesem Grund können wir uns im
Kampf gegen die KI an manchen Stellen nicht bewegen Wir bleiben einfach in Stan, während Shift
drücken, und
nichts passiert Wir bleiben einfach für immer Stan,
bis wir wirklich wechseln, und
das läuft zum anderen Zweig. Im Grunde genommen bedeutet das, dass
unsere Staaten gesperrt sind, solange
wir die Umschalttaste gedrückt haben, und das behebt das Problem hoffentlich.
126. Großes Gameplay-Bug-Patching: Hallo und willkommen zurück
zum Game Design Workshop, dem Kurs zur mit
L-Engine Five Erstellung prozeduraler
Dungeon-Action-APs Als Nächstes hat
unser Aufzug ein
Problem mit unserer Kamera habe noch andere Probleme, aber
das offensichtlichste ist
eine Kamera, weil wir den
eingefügten Nachbearbeitungsvorgang kopiert haben, aber sie hat es
auf eins und eins gesetzt, aber das hat sie nicht aktiviert Also sollten wir die Belichtung bei 11 auf Min Max auf 11 einstellen,
um die zu intensive Beleuchtung
zu korrigieren Das Letzte, was wir
tun sollten, ist unseren Nebel hinzuzufügen. Wir werden
Dinge hinzufügen, exponentiellen Acht-Nebel. Wir wollen das.
Lass uns das vorlesen. Wenn wir hier anfangen, wollen wir, dass der Nebel
etwas niedriger ist. Lass uns eine Sekunde spielen. Jetzt habe ich die Dinge noch nicht festgelegt. Lassen Sie uns die
Einzelheiten der Leute festlegen. Setzen wir es auf -700. Ich werde das erhöhen,
sichtbarer sein, weil
das so nervig ist Lass es mich dafür schließen.
Okay. Hier gibt es keine Dinge mehr. Also, Standort, -700,
setzen wir die FK-Dichte auf zwei. Ich weiß, dass der Wert
bei 2,5 liegt, aber mal sehen. Ich habe Alo getroffen, sagen wir 22. Und das wäre es. Lass uns auch einstellen. Ich lege etwas Rötliches
ins Bett. Der Nebel hat also eine rötliche
Farbe. Und ich denke, das wäre es. Ja. Ja, ich spiele jetzt bitte. Es ist ein bisschen verrückt und es ist ein bisschen und das wird traurig. Oh, und lassen Sie mich
die Pfeile wieder umschalten , weil
wir die Pfeile sehen können Ich habe das eigentlich vom
Debuggen weggelassen. Gehen Sie zu den Umschaltpfeilen,
wo sind Sie die Umschaltpfeile. Ich debugge, hier sind wir. Okay? Es hängt damit zusammen
, weil ich
sehen wollte, was
beim Debuggen vor sich geht Es ist ein bisschen
dunkler als ich erwartet hatte, aber dadurch werden die Lichter auch ein bisschen freundlicher Aber um den Charakter
ein bisschen besser zu sehen, gehen
wir zu dem Charakter
im Viewport,
weil der Charakter nicht so dunkel sein
sollte Lassen Sie uns hier ein Punktlicht setzen. Nennen wir dieses Zeichen Licht das
Radiuszeichen Radius. Und lassen Sie uns das tatsächlich
in Lumen ändern. 100 ist viel,
sagen wir 50 der Radius 50. Wir könnten zum Beispiel
Gegenstände haben, die diese Blodosis erhöhen. Als Radius 70, vielleicht 100 ist er nicht
von unserem Charakter abgeschattet, 100 vielleicht außerhalb der Quelle 50 oder Länge 70 ein bisschen zu weit von
den Zeichen von 100 entfernt Wenn Sie eine falsche
Ansicht haben, könnten
Sie die
Werte ein wenig übersehen. E. Der Schuh wird einige Schatten
erzeugen.
Es ist in Ordnung. Es ist in Ordnung. Nein. Ist immer noch
ein bisschen komisch. Ich meine, ich habe mich wirklich
auf das Zentrum konzentriert. Lass uns die Farbe
ein bisschen zu etwas Fleischigerem ändern. Hier. Acht. Vielleicht
setzen wir das Licht ein bisschen nach oben. Benutze diese 70. Weißt du was, lass uns nicht
die Figur damit beleuchten , sondern den Boden
um die Figur herum
beleuchten. Was wir tun werden, ist
zum Lichtkanal zu gehen. Lass es Kanal
zwei anzünden, nicht unseren Charakter. Und schnell, lass uns zu unseren Kacheln
gehen. P-Fliese und geh auf deine Etage. Kanal wird auch von Kanal eins
beleuchtet, grundsätzlich nicht von Kanal zwei, weil
er auf Null basiert, Kanal eins. Mal sehen, wie das aussieht. Ja, wir haben einen Lichtradius und wir können den
Lichteinfall auf unserer Karte etwas vergrößern . Gehen wir zu den Details 1-4 über. Wenn wir ein bisschen viel verkaufen, aber alles ist
viel sichtbarer. Und wenn wir das nächste Mal Schatten sehen, können
wir unser Licht sehen. In Ordnung. Nun, nein, sei ehrlich, es ist zu leicht. Lass uns das 23 angeben.
Aus Licht drei. Ich bin vielleicht ein bisschen zu klein. T zwei, die den Trick
zu machen scheinen .
Viel viel besser. Wenn ich jetzt mit dem Aufzug in
eine andere Etage gehe. Hier auf der anderen Seite haben
wir die wichtigsten Pops. Der Charakter ist hingefallen, aber das
ist nicht wirklich wichtig. Ich gehe nur zur
Höhe oder zum Standort. Zeichen nach unten drücken, hier sind
wir und fügen ein. Wir haben auch den
Aufzug aktiviert. Ich gehe runter, es wird ein
bisschen heller, weil der Nebel nicht wirklich folgt. Aber was wir tun. Gehen wir zurück zum Aufzug und
fangen an, mit dem Aufzug zu spielen, wo das immer in Ordnung ist. Da sind wir. Ps. Hier sind wir. Wir werden alle
Hintertüren des Unterrichts bekommen. Wir holen uns den Nebelnebel, wir holen uns
die erste Kopie, die wir finden
, weil wir nur eine haben.
Wir
werden sie zu einer
Variablen hochstufen, die wir Variablennebel nennen. Auf unserem Tickvn, wenn wir den Standort des Schauspielers
festlegen. Wir werden den
Standort des Schauspielers für den Nebel festlegen. Wir werden
etwas mehr Platz brauchen. Wir werden konstant ins
Inter gehen, wir werden
das gleiche Tempo beibehalten. Wir werden den Standort des
Schauspielers herausfinden. Das Elternteil Delta T, wir werden Delta benutzen. Vom Ziel aus werden wir das
tatsächlich genau
so
verwenden . ' Wir werden ein neues
Original und ein neues Ziel brauchen. Also werde ich
dieses Survival zum Original machen. Der letzte, den ich bekommen kann. Das stellen wir auf, wenn
die Zäune gebaut werden. Um jetzt ganz sicher zu gehen. Ich glaube,
bei dieser Startanimation die Zäune hochgezogen Also holen wir uns unseren Nebel, ich suche mir einen Standort Ich werde die ursprüngliche
Nebelposition auf diesen Wert einstellen. Und fügen wir hinzu,
was die Höhe des Labyrinths ist. Wir fügen 2900 hinzu. Nr. 2500. Das ist der
Aufzug, nicht wahr? Ja, das ist der Aufzug,
er sollte fahren, und das Labyrinth geht nach oben,
wenn wir auf das Labyrinth reagieren Das könnte eine
Variable bis 2500 sein. Das ist der Nebelstandort, 22500. Ich werde das
Plus von hier nach hier kopieren. Das, ich werde den
Zielort darauf setzen. Ich verbinde mich dieses Jahr,
verbinde mich dieses Jahr. Und das war Spiel für Spiel. In Ordnung. Und der Nebel kommt mit uns. Sieht nicht wirklich nach Nebel aus, aber er verleiht
Farbe und Schatten Oh, da waren riesige
Rahmenbeine. Ist passiert. Siehst du? Das ist das Problem mit s. Wir haben das nicht behoben. Lassen Sie uns das für eine Sekunde
beheben. Ailes. Ich sehe es wirklich nicht
gern Wo ist es hier. Ich nehme das Stockwerk, verschiebe es
nur ein bisschen. In Worten, erscheint von
nirgendwo anders. Es ist behoben. Was unser Nebel macht, ist
im Grunde genommen hier
nicht sichtbar, aber er ist in Richtung hier sichtbar, sodass wir das
Ende dieser Kacheln nicht sehen können. Und das Gleiche
wird sein, wenn wir in
die nächste Etage
gehen, in die nächste Etage gehen. Ich sehe, dass dasselbe in der nächsten
passieren wird. Zuallererst wird das ein bisschen
ausgeblendet. Jetzt können wir den
Rand des Schnitts sehen, aber wir gehen hier hin. Siehst du, es gibt keinen Kantenschnitt. Es gibt hier ein Problem, wir können Dinge verschieben, und ich schätze, es gibt noch andere
Probleme, die behoben werden können Diese Truhe? Ich bin nicht in Reichweite.
Wie auch immer, wie Sie sehen können, gibt es viele Bugs.
Bereit, in Reichweite zu sein. Ich denke, wir haben die
Tools zur Verfügung gestellt, um all diese Fehler zu beheben. Jetzt. Außerdem habe ich meine FPS
ein wenig erhöht, wie Sie sehen können.
So habe ich das gemacht,
ich habe die Lautstärke des Labyrinths und
die
Navigationslautstärke jetzt auf 1.000 reduziert die
Navigationslautstärke jetzt auf 1.000 Das ist nicht nur nicht optimal, sondern verursacht auch eine
Menge Probleme, ein riesiges Navigationsnetz Ich würde für diese Menge an KI
kein Navigationschaos gebrauchen. Vielleicht hätte ich eine benutzerdefinierte Bewegung
für sie geschrieben , um sie zu bewegen und sie in der Achse zu
fixieren und sie nicht auf der Z-Achse zu
bewegen, oder selbst wenn sie sich auf der Z-Achse bewegen, nur eine einfache Bewegung
ohne Navigation ,
wie bei einigen Linienspuren,
können Sie dorthin gehen und
dann dorthin gehen,
so etwas, ein System wie das. Nun, eine andere Möglichkeit, das
zu tun, habe ich nicht wirklich getestet, aber wir hätten ein Level
erstellen können, ein Streaming-Level,
das wir laden, das ein Navigationsvolumen hat, und wir ändern die vielen
Techniken, um im Grunde genommen ein benutzerdefiniertes
Navigationsvolumen in spl plus zu
schreiben, vielleicht eine benutzerdefinierte Klasse dafür, es in einer anderen Klasse zu verwenden das können Sie verschieben, weil Baupläne nicht die
Möglichkeit bieten, dieses Volumen zu verschieben Sie könnten auf diese Weise auch einzelne
Bände verteilen, denn wenn wir einen
Navigationsband schreiben, gehen wir Telefonakt plus, es gibt eine Neufassung von Nav Me, es gibt noch andere Dinge, aber wir können keine Navigationslautstärke erzeugen Also das ist gut, in
Seps zu schreiben, plus einer Klasse, die man mit einem
Navigationsvolumen spawnen
kann, vielleicht oder auch wieder, es gibt grundsätzlich verschiedene Arten, Dinge zu
tun,
aber der endlose Teil, etwas Endloses
zu haben, ist aber der endlose Teil, etwas Endloses
zu haben, mit den Tools,
die wir haben, nicht wirklich möglich Wir haben irgendwie geschummelt und
dieses Navigationsvolumen erstellt, und das war es Danke, dass ihr uns bei diesem echten Engine
Five-Blueprint-Abenteuer begleitet dem wir einen kompletten
Triebwerkgenerator
für ein Top-Down-Spiel
mit Feinden, Sammelgegenständen und
mehr gebaut für ein Top-Down-Spiel
mit Feinden, Sammelgegenständen und
mehr Wir hoffen, dass dir der Kurs gefällt und du dabei viel lernst Ihr Feedback bedeutet uns
die Welt. Wenn Sie also eine Bewertung hinterlassen
und uns Ihre Gedanken mitteilen könnten, würde uns
das wirklich
helfen, uns zu verbessern und weiterhin die
bestmöglichen Inhalte zu liefern. Nochmals vielen Dank für Ihre Unterstützung und wir können es kaum erwarten zu
sehen, was Sie erstellen.