Transkripte
1. Türsysteme und interaktive Portale – Einführung: Willkommen bei Unreal Engine Five Blueprint Mastery Türsysteme und interaktive Portale,
dem einzigen umfassenden
Workshop, der sich ausschließlich
der Entwicklung fortschrittlicher
Türmechaniken
und interaktiver Portale widmet fortschrittlicher
Türmechaniken
und interaktiver Blueprint Mastery Türsysteme
und interaktive Portale,
dem einzigen umfassenden
Workshop, der sich ausschließlich
der Entwicklung fortschrittlicher
Türmechaniken
und interaktiver Portale widmet. Es gibt wirklich
nichts Vergleichbares da draußen. Ein umfassender Workshop, in
dem Sie lernen, eine Vielzahl von
Türsystemen an einem
strukturierten, praktischen Ort
zu entwerfen, zu bauen und zu animieren an einem
strukturierten, praktischen Ort Zu oft
stoßen Spieleentwickler bei dem Versuch, interaktive Systeme zu
entwickeln, die über
die Grundlagen hinausgehen, an eine Wand interaktive Systeme zu
entwickeln, die über
die Grundlagen hinausgehen, Synchronisieren von Animationen
für Doppelpuppen, Entwerfen komplexer Rätsel oder Implementieren von
Teleportationsmechaniken kann Dieser Workshop löst all das, indem er alles, was
Sie brauchen, in einem Kurs
vereint Stellen Sie sich vor, Sie lernen
Schritt für Schritt mit allen Tools, Ressourcen und Anleitungen, die
Sie für Ihren Erfolg benötigen Von kollisionsbasierten Triggern bis hin zu mehrstufigen Teleportationssystemen du wirst
das volle Potenzial der Looping-Programmierung von Unreal Engine Five In diesem Workshop erhältst du
Zugriff auf 41 Lektionen und über 8 Stunden exklusive Inhalte, die du sonst nirgendwo finden
wirst Du beginnst mit den Grundlagen wie Looping-Benutzeroberflächen und Einrichtung des
Spielmodus,
bevor fortgeschrittenen Techniken wie
synchronisierten Animationen,
Sperrmechaniken und
komplexen Rätselsystemen
zuwendest Sperrmechaniken und
komplexen Rätselsystemen Wir werden mit
den Grundlagen
wie den Benutzeroberflächen
und dem Gamo-Setup beginnen wie den Benutzeroberflächen
und dem Gamo-Setup , bevor wir
zu fortgeschrittenen Techniken übergehen, darunter synchronisierte
Animationen, Sperrmechaniken
und komplexe Rätselsysteme und Am Ende beherrschst du sogar die
Teleportationsmechanik und
dynamische visuelle Effekte, um sicherzustellen, dass
deine Türsysteme ausgefeilt und dynamische visuelle Effekte, um sicherzustellen, dass deine Türsysteme Was diesen
Workshop jedoch wirklich auszeichnet, ist der exklusive Sci-Fi-Schlüssel auf
modularer Ebene, mit dem können Am Ende dieses Workshops werden
Sie die Kommunikation mit Konzepten
für erweiterte Interaktivität beherrschen , immersive
Türsysteme von
einfachen Animationen bis hin zu komplexen Übergängen auf
mehreren Ebenen
erstellen , sichere Zustände
implementieren, um
sicherzustellen, sichere Zustände
implementieren, um dass Ihre Mechanik über alle Ebenen hinweg
bestehen bleibt und
professionelle Feinschliffe
wie Soundeffekte und dynamische Partikelsysteme hinzufügen wie Soundeffekte Ganz gleich, ob Sie
Ihr erstes Projekt entwerfen oder Ihr Portfolio erweitern, dies ist Ihre Chance, Fähigkeiten
zu erwerben, die Sie in keinem anderen
Kurs finden
werden Nehmen Sie am einzigen verfügbaren Workshop für komplette
Türsysteme und lassen Sie uns Ihre Ideen mit Real Engine Five,
Blueprint Mastery-Türsystemen
und einem interaktiven Portalkurs zum
Leben Blueprint Mastery-Türsystemen und einem interaktiven Portalkurs
2. Einführung in Unreal Editor und Hinzufügen der Third-Person-Vorlage: Hallo und willkommen bei den Portalen Real
Engine Five Blueprint Mastery, Door Systems und
Interactive Beginnen wir mit dem Extrahieren
unseres heruntergeladenen Doors klicke mit der rechten Maustaste
darauf und verwende WinRAR und
entpacke
zwei Doors Resource Packs Wenn Sie jetzt WinZip haben, ist
der Vorgang ziemlich derselbe Sie wählen ein Ziel aus
und es wird extrahiert. Für mich hat es es jetzt hier
auf den Desktop
extrahiert , auf den ich die Datei heruntergeladen
habe. Und bevor wir weitermachen, überprüfen
wir in der Unreal Engine
Library auf der Registerkarte Unreal Engine , ob wir 5.4 0.4 haben, was die Projektversion ist Wenn Sie sich in der obigen
Version befinden, sind es fünf. Gehen wir jetzt zu unserem Projekt. Ich doppelklicke
und öffne das Projekt. Dies kann
je nach Geschwindigkeit Ihres Computers eine Weile dauern, aber wir haben
den Cache für abgeleitete Daten und
den Zwischenordner hinzugefügt , denen sich Dateien befinden, die
diesen Vorgang vereinfachen. Dateien wie Shader, die
bereits geladen wurden, als wir
das Projekt erstellt nun für diejenigen, die neu sind Lassen Sie uns nun für diejenigen, die neu sind, erklären, was
wir hier sehen. Zuallererst ist dieses
Bild unser Viewport. Wir können uns bewegen, indem wir
die linke Maustaste benutzen und die Maus nach oben, unten, links nach
rechts
bewegen und uns mit WSAD wie in einem Videospiel im Weltraum bewegen Q und E erhöhen
und verringern ebenfalls die Höhe. Ich bin mir nicht sicher, welches Wort
das ist, aber egal, unser Charakter, unser
Nicht-Charakter, unsere Kamera Nun, wie Sie sehen können,
ist das ein bisschen langsam. Wenn ich also das Mausrad benutze,
während ich die rechte Maustaste gedrückt halte, kann
ich mit geöffnetem Mausrad
schneller und
mit gedrücktem Mausrad langsamer fahren. Dies kann
hier anhand der Kamerageschwindigkeit angezeigt werden. Ich kann es auch ändern, indem ich den Wert hier
ändere, aber das Mausrad scheint etwas einfacher zu
sein. Jetzt. Auf viele Buttons werden wir nicht
näher eingehen. Ich werde einige erklären, aber ich werde es tun, wenn
wir unsere Karte öffnen. Um das zu tun, gehen
wir hier runter, das ist der Inhaltsbrowser. Und hier können wir die Karten und Sounds unserer
Ressourcen sehen. Diese sind in
unserem Doors-Ressourcenpaket enthalten. Was nun die Ressourcen betrifft,
können wir einige Ressourcen sehen, aber wir werden sie
später auf der richtigen Karte zeigen. Bei Sounds können wir
einige Sounds sehen , die wir in diesem Tutorial verwenden
müssen. Und im Ordner Maps können
wir die vorgefertigten Karten sehen. Wenn wir sie wirklich
schnell bearbeiten, öffnen
wir die Karte von Tutorial zwei. Es ist ein kleiner Raum, den wir später als Transferraum
nutzen werden , und wir gehen zur Karte des
Tutorials ohne Nummer. Und hier können wir unsere Ressourcen und
unser Level
sehen , mit dem wir unsere Türen bauen werden
. nun als Erstes damit beginnen, Lassen Sie uns nun als Erstes damit beginnen,
die Erklärung dessen fortzusetzen , was
wir auf diesem Bildschirm sehen. Wie wir sehen können, handelt es sich um eine Menge Informationen, aber haben
Sie keine Angst. Es sind sehr einfache Dinge. Hier haben wir den Outliner, der
, wie Sie sehen können, so ziemlich
aus Level eins, Level zwei, Level drei
und einigen zusätzlichen Gegenständen Dabei handelt es sich um Ordner, in denen wir die Elemente
, die wir in
diese Ressourcentasche und in die nächsten Ordner aufnehmen, kategorisiert
haben , die wir in
diese .
Wir kategorisieren sie
auf der Grundlage der Ebenen, auf denen wir die
Türen erstellen werden Sie können auch einen Ordner für
Beleuchtung sehen, der
die Lichtrequisiten enthält, und wir können hier einige neue Ordner
sehen, die eigentlich nichts enthalten, und den
Ordner Playground , der zurückgelassen wurde Also, lassen Sie uns damit beginnen, diese leeren Ordner
zu erklären. Wenn ich nun einen Ordner
habe, der etwas enthält, hat
er
zuallererst einen Pfeil und wir können in seinem Inhalt
sehen, wo diese Ordner
nichts enthalten. diesen Ordnern befindet sich auch Neben diesen Ordnern befindet sich auch
ein Auge,
das geschlossen ist. Wenn ich versuche,
sie anzuklicken, passiert nichts. Diese Ordner
sind also irgendwie leer. Wir können sie löschen,
wir brauchen sie nicht. Als Nächstes müssen wir also unseren Ordner für zusätzliche Artikel
sehen. Ich werde darauf klicken und ich werde auf das Auge
klicken. Jetzt können Sie sehen, wie die Elemente aus unserer Ansicht
verschwinden. Das bedeutet nicht, dass sie
nicht im Spiel geladen sind. Wenn ich auf Play drücke, könnten wir die Gegenstände
deutlich sehen. Ich drücke Play und das Spiel
läuft zur Laufzeit und die Gegenstände sind da. Das Auge hier
zu schließen bedeutet also nicht, dass wir sie im Spiel
verlieren. Es bedeutet nur, dass wir
arbeiten können, ohne sie anzusehen. Im Moment werden
wir bei jedem Level außer Level eins die Augen
schließen , weil wir
sie benutzen werden, während wir redaktionell vorankommen. nun für die zusätzlichen Gegenstände Lassen Sie uns nun für die zusätzlichen Gegenstände das Auge öffnen und
schauen, was wir hier haben. Die Geschwindigkeit ist ein bisschen hoch. Okay. Repariere es mit einem
Mausrad und wir können es jetzt sehen. Wir haben eine Doppeltür und können mit verschiedenen Maßnahmen
die Änderungen rückgängig machen. Wir haben einen Rahmen, das
Gleiche gilt für die Tür. Ich glaube, das ist die Tür
, die sich in diese Richtung bewegt, und wir haben ein Licht darüber, paar Dreiecke, die
wir für Gegenstände verwenden werden, eine Salontür, die wir für
unseren Physikladen verwenden werden, einen Schalter, den wir animieren
werden Eine Taste, die
wir animieren werden, eine Auslösetaste, die ebenfalls
aus zwei Maschen besteht, wie der Knopf, ein
Portal, einige Boxen und einige andere Arten von Türen, ein Glas, das ist ein Regal. Nun, es ist eine Treppe. Ich
denke, es ist eine Treppe, einige Wände, einige Stockwerke, und das ist eine kleine
Demonstration all der Vorzüge. Ja, es sind separate Teile. Aber auch
das haben wir auf unserer Ebene. nun weiter zu
erklären, was wir hier sehen
: Wie wir gesehen haben, wird
die Play-Taste
benutzt, um das Spiel zu spielen, um alles
zu starten, was
wir erstellt haben, und Escape benutzt, um es zu beenden. Als Nächstes
möchte ich darüber sprechen, was wir
verwenden werden
, ist, wenn ich hier
etwas auswähle, wir haben einen detaillierten Stub Wenn ich also etwas auf
die Welt bringe und mir seine eigenen Details
ansehen möchte, dann ist das ein Beispiel, weil ich zwei Stockwerke haben
kann Wenn ich
Alt benutze und dieses R hierher
ziehe. Das dupliziert also den Boden. Wenn ich diesen Boden
und
diesen Boden verwende, handelt es sich um dasselbe Netz, aber das sind Instanzen Sie haben unterschiedliche Details. Beispielsweise ändert sich die Position
dieser beiden Blöcke. Das ist Y 600 und das ist Y 980. Und wenn ich das ändere
, wird es zu
dieser einzigen Instanz. Das sind also die Details der Instanz,
die ich auswähle. Es gibt verschiedene Details, die
auf dem basieren, was wir ausgewählt haben. Alles für Details
zur ausgewählten Instanz
finden Sie hier. Nun, eine weitere Sache,
die in
Outliner passiert , ist, dass, wenn ich
hier etwas auswähle, es tatsächlich
die Instanz auswählt Und wenn es weit weg ist
oder ich nicht
wirklich weiß , wo sich das Objekt befindet,
das ich hier ausgewählt habe, kann
ich F drücken. Dadurch
wird unser Mesh
jetzt
so weit wie möglich vergrößert unser Mesh
jetzt
so weit wie möglich , weil ich dieses Mesh
ausgewählt habe Wenn ich einen anderen Schauspieler ausgewählt habe, wird dieser Schauspieler vergrößert. Seien Sie vorsichtig, denn wenn
ich
zum Beispiel die Himmelskugel ausgewählt und F gedrückt habe, verlasse ich
die Himmelskugel, um sie
zu spüren verlasse ich
die Himmelskugel, um sie
zu spüren und alles auf dem Bildschirm zu sehen. Gehen wir nun zu einem Punkt zurück. Wir gehen in die Vergangenheit. Und ich glaube, wir haben
ein paar Dinge über
das, was wir sehen, erklärt . Wir können Unreal
vielseitiger einsetzen. Und bevor wir
noch etwas vergessen, gehe
ich zum
Content Browser und ich
gehe hier
zur AT-Schaltfläche. Weil ich ein
Feature oder ein Inhaltspaket hinzufügen möchte. diese Weise können wir die
Funktionen und Inhaltspakete hinzufügen, die Area kostenlos anbietet, wenn
wir ein Projekt erstellen. Und der Inhalt,
die Funktion, die ich jetzt hinzufügen
möchte , ist die Vorlage für
Dritte. Wir haben also einen Charakter
, in dem wir uns bewegen können und ein paar andere Dinge , die wir in der nächsten Lektion erklären
werden. Also werde ich vorerst
auf Projekt hinzufügen klicken. Das könnte eine Weile dauern. Wenn es fertig ist,
öffnet es ein Fenster. Hier ist es,
ein Inhaltsbrowser-Fenster zu öffnen ,
das wir nicht benötigen, wir können es schließen und wir können
dieses schließen und jetzt können wir hier neue Ordner
sehen, den Charakterordner,
den Level-Prototyping-Ordner und den Ordner für Dritte Aber wir werden das beim nächsten Mal untersuchen
. Vorerst auf Wiedersehen. Wir sehen uns dann.
3. Blueprint-Benutzeroberflächengrundlagen Gamemodus, Charakter-Spawning und Level-Blueprint-Setup: Willkommen zurück bei
Unreal Engine Five,
Blueprint Mastery, Door Systems Beim letzten Mal haben wir also mit dem
Herunterladen unseres Charakters
aus der dritten
Person aufgehört Herunterladen unseres Charakters
aus der dritten
Person unserem Projekt
die Vorlage für eine dritte Person hinzugefügt die Vorlage für eine dritte Lassen Sie uns nun untersuchen, was wir in der Vorlage für die dritte
Person
haben. Wir haben einen Ordner mit Bauplänen. Wir haben einen Ordner mit Eingaben
und einen Ordner mit Karten. Die Karten haben die Vorlage für die dritte
Person Wenn ich sie öffne
und auf Play drücke, kann
ich den Charakter der dritten
Person sehen. Ich kann einige Boxen verschieben. Ich kann springen und das ist so
ziemlich alles. Wenn wir jetzt auf Unsere
Karte gehen und auf Play drücken, gibt es nichts davon. Wir können keinen Charakter
herumspringen sehen. Wir haben nur eine Kamera, die sich bewegt. Nun, warum ist das so? Der Grund dafür ist ,
dass
wir
im Inneren des Third-Person-Halters die
zusammengeklappten Baupläne sehen können, denen der Charakter der dritten
Person zu sehen ist auf
denen der Charakter der dritten
Person zu sehen ist, den wir benutzt
und gesteuert haben, und er hat den
BP-Third-Person-Spielmodus Was ist ein Spielmodus? Ein
Spielmodus ist ein spezieller Plan , dessen Regeln pro Level
festgelegt Auf dieser Ebene werden
wir zum Beispiel einen Spielmodus haben Auf der
Kartenvorlage für die dritte Person haben
wir einen weiteren Spielmodus. Nun, wir werden
dasselbe haben, aber im Moment haben
wir hier keinen Spielmodus, also ist es ein Standardspielmodus. Es ist kein
Template-Spielmodus für Dritte. Wie ändern wir also den
Spielmodus auf unserer Karte? Neben den Details hier können
wir die Welteinstellungen sehen. Wenn Sie nun die Welteinstellungen nicht
sehen können, können
wir zu Windows gehen und sie hier aktivieren,
Welteinstellungen, und sie werden irgendwo im Layout
so erscheinen
oder sie werden hier
angedockt angezeigt,
was Sie sehen können, Sie können sie überall
andocken, wo Sie wollen Sie können es sogar hier andocken. Aber das ist der
nutzbarste Ort. Wie auch immer, wie
ändern wir die
Welteinstellungen, den Spielmodus? Wie überschreiben wir
es? Nun, hier gibt es
diese Option,
den Spielmodus, bei dem wir Spielmodus überschreiben und unseren
BP-Third-Person-Spielmodus
auswählen
können , und das ist
es im Grunde auch schon. Wenn ich jetzt auf Play drücke, erscheint der
Charakter. Ich werde so aussehen, als würde ich
fallen und sterben. Nun, warum ist es nicht
erschienen, wo immer ich wollte? Nun, ich kann das
zuallererst mit meiner Kamera steuern. Ich kann hier auf Play drücken und
der Charakter erscheint hier. Aber warum
erschien auf der anderen Karte immer an
einem bestimmten Ort, auch wenn wir
die Kamera nicht dort hatten? Nun, der Grund dafür ist Spielmodus einige
zusätzliche Funktionen hat, dass der
Spielmodus einige
zusätzliche Funktionen hat,
einige Funktionen, die wir später im Tutorial
überschreiben werden . Bei dieser Funktionalität geht es jedoch
darum, den Charakter zu spawnen. Und welcher Charakter, das
hängt von einer anderen Funktion ab, die
als Standardbauerklasse bezeichnet wird Und hier können wir sehen, dass
die Standardbauernklasse der BP-Third-Person-Charakter
ist Wenn ich das zu niemandem gesagt habe, drücke Play, fast nichts.
Ich kann mich nicht mal bewegen. Ich ändere das wieder in
den Charakter der dritten Person und wir müssen
einen Spielerstart festlegen. Wie machen wir das? Ein neuer
Button hier erscheint. Nun, es erscheint nicht, aber wir werden es gleich
erklären. Also werde ich darauf klicken
und das ist die
Schaltfläche, mit der
Sie schnell etwas zu Ihrem Level hinzufügen können , etwas zum
Viewport, im Grunde genommen, weil später der
Viewport mehrere Ebenen hat Wie du in meinem Unreal sehen kannst, gibt es hier einen Level-Tab
, der Unterebenen genannt wird,
aber darauf werden wir nicht näher eingehen Gehen wir jetzt hierher und fügen
wir einen Spielerstart hinzu. Das ist unser Spielstart.
So sieht es aus. Es hat einen Controller und eine
Flagge und diese Kapselform, was eine Kollision ist, eigentlich eine Capture-Shape-Kollision. Ich werde dieses
Paar irgendwo hier starten lassen. Ich drücke Ende, damit es auf den Boden fällt. Und ich werde auf Play drücken. Siehst du, wir haben
unseren Charakter hier, und unsere Kamera spielt keine
Rolle, wo sie ist. Es könnte sein, dass wir hier drüben Play
drücken und der
Charakter ist da. Nun, wie das gesteuert wird, werden
wir später in den nächsten Tutorials sehen , weil
wir
seine eigene Funktionalität
in der Funktionalität, wie der Spielmodus den Start
eines Spielers
auswählt, außer Kraft setzen seine eigene Funktionalität
in der Funktionalität, wie der Spielmodus den werden. Jetzt haben wir
einen Spielerstart erstellt. Wir haben unseren Spielmodus hinzugefügt
und es sponsert den Charakter , den wir spielen
und unseren Code testen werden. Aber bevor wir
in die erste Tür eintauchen, wollen wir noch einmal
alle Level schließen. Es scheint nicht zu sparen. Dies scheint eine
vorübergehende Einstellung zu sein. Es gibt andere Möglichkeiten, die
Sichtbarkeit durch
Code und Assets zu verbergen , aber das werden wir jetzt nicht tun. Bevor wir uns also mit
Blueprints befassen und mit der Codierung beginnen, wollen wir ein
wenig erklären, was Blueprints sind Nun, Blueprints ist das eigentliche Visual
Scripting-System der Engine Und was ist ein Skriptsystem,
ein visuelles Skriptsystem ein visuelles Stellen Sie sich vor,
Codeblöcke mit
fertigem Verhalten zu haben und diese
Logik einfach in der Reihenfolge zu
verbinden , in der
Sie verwenden möchten. Code
wurde so oft umgeschrieben und es ist nicht immer effizient, das Rad neu
zu erfinden, den Code, der so oft geschrieben
wurde,
neu zu schreiben URL bietet ein Blueprint-System, das aus fertigen Codeblöcken in
einer visuellen Darstellung besteht ,
die bestimmte Dinge tun, und wir ordnen sie in einer
speziellen Reihenfolge
an, damit die Maschine
weiß, worum wir sie bitten. Das bedeutet, dass wir auch viele verschiedene Arten
von Bauplänen Zum Beispiel gibt es einen
Level-Blueprint, anhand dessen wir unsere erste Tür steuern werden unsere erste Tür steuern Darüber hinaus gibt es Widget-Blueprints
, die die Benutzeroberfläche steuern Es gibt Schauspieler-Blueprints , die bestimmte
Dinge in unserem Spiel tun Zum Beispiel
wird unser Switch ein Schauspieler sein. Es gibt
Charakterpläne, das ist unser Charakter, den wir
benutzen und kontrollieren Es gibt
Animations-Blueprints, die die des
Charakters
steuern Es gibt den
Spielmodus Blueprint, die spezielle
Blaupause für das Level darstellt. Was sind zum Beispiel
die Regeln des Levels? Es kann eine gewisse
Multiplayer-Logik beherbergen. Es hat eine spezielle Anfrage. Deshalb ist es der
Spielmodus Blueprint,
der Spieler-Controller-Blueprint der Spieler-Controller-Blueprint Ich weiß, dass das für jemanden, der neu ist,
beängstigend klingen mag, aber es ist nur ein System zur
Kategorisierung Wir haben das System
für die Widgets, wir haben das System
für die Charaktere Wir haben das System
für die Animationen, System für
den
Mehrspielermodus und das Gameplay. Es ist alles
in bestimmte Systeme unterteilt, ein sehr gut optimiertes
System, das echte Angebote bietet. Lassen Sie uns nun damit beginnen,
unseren ersten Blueprint zu öffnen, dem es sich um den
Level-Blueprint handeln würde,
einen Plan, der dieser Ebene gewidmet ist Ich gehe zu diesem
Button, einem neuen Button. Aber wenn ich darauf drücke,
sehen wir einige Optionen zum Erstellen
einer neuen Blueprint-Klasse, um Auswahlen
in eine Blueprint-Klasse umzuwandeln Aber wir wollen den Level-Blueprint
öffnen. Dies ist kein typisches Bild, das
wir auf einem Bauplan sehen, typisches Layout, aber es
reicht aus, um ein paar Dinge zu erklären Genau hier haben wir
das Ereignisdiagramm, das die Funktionalität
unseres Blueprints enthält Dies ist der Ort, an dem wir einen Großteil unseres Codes
schreiben. Daneben sehen wir
das Detailfenster, dem gerade die Standardklasse
ausgewählt wird. Hier sehen wir den
Debug für unseren Blueprint, den wir verwenden werden
, wenn
wir den Code
debuggen werden
, den wir gerade Code
debuggen werden
, den wir Und auf der linken Seite sehen
wir meinen In anderen Blueprints würden
wir hier
eine Registerkarte „Komponenten“ und
einige andere Registerkarten sehen eine Registerkarte „Komponenten“ und ,
ein Konstruktionsskript, das zum
Posten von Code und Logik verwendet wird wenn wir
den Blueprint im
Editor vor der Map ausführen den Blueprint im
Editor vor der Map Wir werden
ein wenig von dieser Logik demonstrieren. Und der Aussichtspunkt
, wo wir sie
uns tatsächlich ansehen wollen. Über sie zu sprechen,
ohne
sie zu sehen , ist kein gutes Argument. Ich klicke mit der
rechten Maustaste auf die
Inhaltsdatei und
erstelle einen neuen Ordner. Und ich werde
diesen Ordner Blueprints nennen. Außerdem werde ich diesen Ordner
farblich kennzeichnen. Ich
klicke mit der rechten Maustaste darauf, diese
Farbe, und setze sie auf Blau. Und in diesen Blueprints klicke
ich mit der rechten Maustaste
und gehe zum Blueprint-Kurs Und hier können wir
die verschiedenen Arten von
Bauplänen sehen die verschiedenen Arten von , über die wir zuvor gesprochen haben Der Schauspieler, die Spielfigur,
der Charakter, der Spielercontroller, der Spielmodus,
die Schauspielerkomponente, die
Synchronisationskomponenten Anders, es gibt
viele Klassen von Bauplänen, die wir erstellen können Was wir
jetzt auswählen werden, ist nur ein Schauspieler. Ich werde diesen Test PP nennen. Und lass es uns öffnen. Wie Sie sehen können, ist dies der Unterschied zur Tutorial-Map. Hier haben wir
nur das Invent-Diagramm und meinen Plan und die Details Hier dagegen haben wir
die Registerkarte „Komponenten“, den Viewport, das
Konstruktionsskript und das Invent-Diagramm. Das hat sowieso Anspielungen, um
einige Funktionen zu demonstrieren. Und hier haben wir
die Registerkarte „Komponenten“. Ich wollte damit
erklären, dass
wir im Viewport Dinge
zu unserem Blueprint hinzufügen können Zum Beispiel können wir einen Würfel hinzufügen, und wir werden
diese Röhre in diesem Blueprint so programmieren , dass
sie In der Level-Map dagegen Level haben
wir
diesen Viewport-Hub nicht,
weil es um das Und der Grund dafür ist
, dass der Viewport der Tutorial-Map im Grunde dieser Viewport
ist Alles auf dieser Ebene
ist im Grunde eine Komponente. Ist es nicht, aber es kann
ein Bestandteil davon sein. Um das zu sagen, bringen wir
ein Duplikat einer Tür mit. Ich glaube, das ist
die Tür mit einem Griff. Ich werde diese Tür mitbringen. Ich werde Alt drücken
und es hierher bringen. Und ich werde es rotieren lassen. So wie das hier. Nein, ich will es von
der anderen Seite. So wie das hier. 90 Grad. Gehe zu den Details -90. Es ist in Ordnung Nun, wie Sie sehen können, funktioniert das nicht besonders gut Aber was ich hier machen werde
, ist, dass
wir den
Fangpunkt um zehn haben Ich entscheide mich für fünf und
senke es. Und ich finde, es hat gut geknallt. Ja, nun. Jetzt gehe ich zur Tutorial-Map und klicke mit der rechten Maustaste
und erstelle einen Verweis auf Prop Pack EU Six oder Six Du meinst? Nun, das ist so
, weil ich ausgewählt hatte. Wenn ich etwas ausgewählt habe, sagen
wir, für
dieses Wandbeispiel, kann
ich mit der rechten Maustaste klicken und
im Level-Blueprint einen Verweis
darauf im Level-Blueprint einen Verweis
darauf Wir brauchen die Wand eigentlich nicht. Ich werde das löschen.
Wir brauchen nur das Requisitenpaket Das ist die Tür, nennen wir
es ab jetzt die Tür, und das ist Tür eins Ich habe die Wand umbenannt. Deshalb ist es in Level eins. Es
sollte nicht in Stufe eins sein. Das wähle ich. Das sollte in zusätzlichen Artikeln enthalten
sein. Ich werde es
von hier auf Ebene eins verschieben
und es hierher ziehen und dort ablegen. Wäre
vielleicht einfacher
, die Datei zu schließen und sie
hier umzubenennen, damit die Tür so gut ist. Das ist die falsche Wand. Und wir haben die Tür hier. Und jetzt haben wir es umbenannt. hier kompilieren, können Sie sehen dass der Name auch hier geändert wurde. Was wollen wir also mit
dieser Tür machen? Wir haben es hier. Wir werden es so
programmieren, dass es geöffnet und
geschlossen wird , je nachdem, wie
nah der Spieler ist. Nein, wie cool. Eigentlich wird
der Spieler sich ihm
nähern, die Tür wird sich öffnen Der Spieler wird
an eine andere Stelle gehen und die Tür wird geschlossen. Wie dem auch sei, ich glaube, ich habe zu
viele Dinge für diese Lektion gesagt. Wir sehen uns in der nächsten. Aber mein
4. Grundlagen der Blueprint-Programmierung für Anfänger: Wo wir aufgehört haben, ist das
Hinzufügen dieser Tür hier drüben. Wir haben es von der Tür kopiert, wir haben es herausgedrückt und gezogen
und dann haben wir es hierher gebracht Wir haben auch einen Verweis
darauf erstellt, unseren Level-Blueprint. H. Lasst uns anfangen,
etwas mit dieser Tür zu machen. Und mit etwas tun meine ich, im Grunde drehen,
um es zu öffnen. Ich habe das gemacht, indem ich die Tür
ausgewählt E
gedrückt habe, und wie wir sehen können, wurde der Rotator aktiviert Durch Drücken von R
wechselt sie zur Skala Imo, und W bringt die Bewegung Wir können diese
Auswahl auch hier oben sehen. Wir müssen diese
Tür bewegen, sie quasi drehen, und das ist ein statischer Akteur,
Schauspieler ist das Schlüsselwort Warum ist das so? Weil, wie gesagt, in Bauplänen ein bestimmtes Verhalten
vorgeschrieben ist. Ich ziehe ein Kabel von
unserer Referenz an
der Tür ab und frage nach Was wir ändern wollen, ist
die Rotation, also Rotation. Sie können sehen, dass wir einige
Optionen zur Rotation haben. Holen Sie sich die Schauspielerrotation, wir können die Schauspielerrotation festlegen. Wir können die relative
Position und Drehung festlegen. werden wir über
Relativ und den Unterschied späteren Lektion werden wir über
Relativ und den Unterschied
zwischen Relativ und
Welt sprechen. Aber im Moment
verwenden
wir einfach die Rotation der festen Schauspieler, was eine Weltrotation ist. Ich werde diesen
Knoten für die Rotation festgelegter Schauspieler wählen. Nun, dieser Knoten hat eine
Ausführung und für die Ausgabe ist
unser Rückgabewert rot, rot ist Blütenstaub, wir werden
später darüber sprechen. Eine Rotation, Eingaben und
eine Teleport-Physik. Lean kann sehen, dass Dinge farblich gekennzeichnet
sind, und das bringt uns
zu einem neuen Thema Was sind Variablen? Variablen sind wie kleine
leere Informationszellen. Welche Art von Information
ist der Variablentyp. Wir haben den
M-Blueprint erklärt. Also, was hostet mein Blueprint? Mein Blueprint enthält
Informationen über unseren Code. Wie Sie sehen können, zeigt es Ihnen Elemente, die
zu Blueprint gehören,
Variablen, Graphen, die hier sind, wir haben die Kategorie Wenn wir zu gehen, gehen wir zu Graphen. Siehst du, es gibt
bereits einige Ereignisse, dieses ausgegraute Ereignis für uns. Wenn ich darauf doppelklicke, kann
ich zu jedem Event geleitet werden. also ein Ereignis in unserer Grafik existiert, können
wir von hier aus direkt
zu ihm navigieren. Wir können auch neue Graphen
für Dinge erstellen, zum Beispiel das Konturdiagramm oder
das Bewegungsdiagramm oder ein beliebiges
anderes Diagramm, das wir wollen Wir könnten also verschiedene
Graphen mit unterschiedlichen Ereignissen haben, aber ich kann nicht
dasselbe Ereignis mit Graphen haben Klicken Sie mit der rechten Maustaste und starten Sie
das Startspiel. Ich kann es hierher bringen und
ich kann es auch hier haben. Es wird aber nicht funktionieren. Ich ziehe von hier und
tippe print string ein, das ist ein Knoten, der nur eine Zeichenfolge
ausgibt und sie hier
verbindet und auch
mit dem anderen Graphen verbindet. Ich versuche zu kompilieren,
Sie werden sehen, dass ich bei mehr als einer
Funktion mit demselben Namen eine Fehlermeldung erhalte. Wir können nicht dasselbe
Ereignis in beiden Diagrammen haben. Sie müssen
einen anderen Namen haben. Sie brauchen
den Blueprint-Test eigentlich nicht,
aber es ist nett, das zu zeigen. Das nächste, was wir brauchen, ist die Funktionskategorie.
Was sind Funktionen? Nun, in North gibt es wiederverwendbare Blöcke zur Kodierung von
Logikblöcken , die
Rückausgänge haben können . Eingänge können mehrfach
von verschiedenen Orten aus
aufgerufen werden . Der Bauplan aus
anderen Bauplänen. Sie eignen sich ideal für die Ausführung
bestimmter wiederverwendbarer Aufgaben. Sie haben einige spezifische
Regeln, obwohl die Funktion die Logik vervollständigen
muss,
bevor sie zurückkehren kann. Sie müssen abschließen,
was auch immer hier passiert , oder sie haben einen Ausgang. Und wenn ich hier für Ausgaben klicke, möchte
ich diesen Wert erhalten. Was auch immer hier
drinnen passiert, muss zu Ende gehen oder es läuft weiter. Wenn ich zum Beispiel
diese Funktion hierher bringe und sie
hier verbinde, muss sie
ihren Betrieb beenden , damit
der Code weiterläuft. Der nächste. Die
nächste Kategorie Makros, die wir zunächst nicht benötigen,
also
werden wir uns nicht
mit ihnen beschäftigen. Sie sind quasi Funktionen, die,
wie gesagt, Funktionen ähneln,
aber vielseitiger sind,
wir können mehrere
Ausführungseingaben also
werden wir uns nicht
mit ihnen beschäftigen. Sie sind quasi Funktionen, die,
wie gesagt, Funktionen ähneln, aber vielseitiger sind, haben Und das bringt uns zum Punkt
der Ausführung. Wie Sie bereits gesehen haben, habe ich dieses Kabel hier
angeschlossen. Als ich über die Rotation von
Set Actor sprach, sagte
ich, dass es hier
eine Ausführungseingabe
und eine Ausführungsausgabe gibt. Diese Ausführungen müssen
miteinander verbunden werden, damit unser Code ausgeführt werden kann. Das würde nicht laufen
, weil es leer ist. Und wie Sie sehen können, haben Ereignisse wie begin play nur
eine Ausführungsausgabe Sie können also als
etwas tun betrachtet werden. Mach etwas, beginne zu spielen, mache etwas auf Tick
, was wir hier gesehen haben, mache etwas auf
Schauspieler, beginne mit der Überlappung. Wir haben auch benutzerdefinierte
Ereignisse, die wir
selbst erstellen und in
unserem Code aufrufen können . Oh, jetzt müssen wir unsere Tür
mit der Rotation unserer festgelegten Schauspieler bewegen. Also unsere Türdrehung, gehen
wir bei -90 ins Detail Runden Sie das von
89,999 auf -90 auf. Nehmen wir an, wenn
wir mit dem Spielen beginnen, löschen
wir die Funktion Nehmen wir an, wir wollen, dass
die Tür auf Null geht. Wenn ich jetzt also auf Play drücke, ist
die Tür nicht Null. Und wenn ich Stopp drücke, kann
ich den Grund Y
im Fehlermeldungsprotokoll sehen, nämlich die Mobilität der
Tür nicht auf beweglich gesetzt ist. Also werde ich auf die Tür
klicken. Ich bin ihm auf den Fersen, werde zur Mobilität übergehen
und Mobility einsetzen. Wenn ich jetzt also Play drücke, ist
die Tür offen. Ich denke, das ist es für diesen. Ich werde mit dem nächsten weitermachen
5. Zeitleisten für reibungslose Animationen in Unreal Engine: Hallo und willkommen zurück
zu Real Engine Five, Blueprint Mastery Door Zuvor haben wir mit OD
OpenRdor aufgehört. Wir haben unsere Door-Referenz
oder unser Begin-Play-Event verwendet, wir verwenden die voreingestellte Logik
der Rotation festgelegter Schauspieler Und wir haben die
Schauspielerrotation auf 000 gesetzt. Und wenn wir auf Play drücken, können
wir sehen, dass die
Tür jetzt offen ist. Ich wollte
es in die andere Richtung öffnen, ich könnte zwei -180 eingeben und
es würde sich in die andere Richtung öffnen Was wäre, wenn ich es jedes Mal
ändern möchte, aber ich möchte, dass das auch
passiert.
Ich habe zum Beispiel vier D-Referenzen
und ich möchte, dass sie alle dieselbe Rotation
haben Was ich
hier bräuchte, ist eine Variable. Dazu kann ich die Plus-Schaltfläche
überhören,
oder ich kann
direkt mit der rechten Maustaste hier klicken und
das zu einer Variablen heraufstufen, was als neue Rotation bezeichnet wird Ich könnte sie umbenennen, indem ich die Variable
hier
verwende und die
Drehung der Tür ändere Nun, wie Sie sehen können, wurde
es hier in
meinem Blueprint-Tab im Abschnitt Variablen Lassen Sie uns die Entstehung
auf die andere Art zeigen. Ich werde das löschen und ich werde auch
diese Variable löschen, und ich werde eine Variable hinzufügen
und sie zur Rotation ziehen. Wenn ich
hier per Drag-and-Drop nach dem Abrufen oder
Setzen gefragt werde, bedeutet das, dass
wir den Wert erhalten
, den diese Variable hat. Das bedeutet, dass wir der Variablen einen neuen Wert geben werden. Wenn ich zum Beispiel Set auswähle, sehen
wir ein paar Eingangs- und
Ausgangspins. Wir können auch sehen, dass es
farbig ist , weil diese Variable vom Typ boolean
ist Ich klicke und sehe eine Reihe
von Variablentypen. Die
gebräuchlichsten sind Boolesche Werte, also ja oder nein, was im Grunde genommen Begriffe
kodiert, es können Nullen und Einsen sein Also ein boolescher Wert, das ist es. Eine Null und Eins, wahr oder falsch. Als Nächstes werden wir ganze Zahlen
als Ganzzahlen haben. Zum Beispiel eins, zwei,
drei, vier, fünf, sechs oder minus eins, zwei,
drei, vier, fünf,
sechs, unbegrenzte Menge Nun, nicht unbegrenzt.
Sie haben ein Limit. Ich denke, das Limit
liegt bei
den Quintillionen und Flüssen, das wären Zahlen
mit Dezimalstellen, im Grunde sind
das die realen Dann haben wir Name, Zeichenfolge
und Text. Zeichenketten sind alle Zeichen, und Name und Text
haben spezifische Regeln. Vektoren, Vektoren sind hier im Grunde genommen
Drei-Punkt-Gleitkommazahlen Wenn ich einen Vektor mitbringe, wenn
ich hier einen Vektor erstelle, ändern
wir den Variablentyp Wir können sehen, dass es XY
Z hat. Es ist ein Dreipunkt. Ich kann direkt hier teilen, rechten Maustaste auf den Knoten auf
dem Pin hier drüben klicken und teilen kann quasi drei Floats sehen Das ist ein Vektor. Es kann eine Farbe werden. Es
kann eine Bewegung werden. Es kann alles werden, wofür
drei Punkte stehen. Es kann ein Ort werden. Und was wir hier haben,
ist ein bestimmter Vektor
, der Rotator genannt wird Wenn ich hierher gehe und einen Rotator
auswähle, unter
dem Vektor befindet, und den Variablentyp ändere Ich möchte es nicht einstellen. Ich will es haben. Nun, eine schnelle Abkürzung
wäre, wenn ich mit
gedrückter Strg & Drop hierher ziehe , werde ich besser Wenn ich
mit gedrückter Alt-Taste hierher ziehe und dort
ablege, erhalte ich einen Setter Wenn ich das hier verbinde, kompiliere
ich, ich muss immer
kompilieren und speichern, und ich gehe zu
der Variablen und ändere das auf, sagen wir, -60 Jetzt stapeln und Play drücken
und wir können sehen, dass die
Tür halb offen ist Wenn ich mich
ihm nähere, passiert natürlich nichts. Und jetzt haben wir eine Variable, um die
Drehung der Tür zu ändern. Wenn wir zum Beispiel viele
Türen hätten, könnten
wir diese Variable hier verwenden, könnten
wir diese Variable hier verwenden um
die Drehung zu ändern. Wenn wir wollen, dass
das
passiert, können wir hier
eine Verzögerung einbauen. Das ist ein Knoten, der
einen Zeitstil in unserem Code erzeugt. Es wartet zum Beispiel auf den Betrag, den wir in der
Dauer festgelegt haben
, bis der Code abgeschlossen ist, und fährt dann mit dem Code
fort Nehmen wir an, wir
warten 2 Sekunden, bevor
das passiert Gehen wir zurück zur Karte. Lass uns spielen. Schauen wir uns die Tür an.
Und in 2 Sekunden bewegte
sich die Tür und öffnete sich. Das ist also ein Verzögerungsknoten
, der mit Zeit zu tun hat. Da unser Code also in
Blöcken läuft, wie wir anhand der Logik sehen können, es logisch, hier eine
kleine Verzögerung einzufügen wäre es logisch, hier eine
kleine Verzögerung einzufügen, die Rotation
ein wenig zu ändern, eine kleine Verzögerung
einzufügen, die Rotation zu
ändern, aber zum Beispiel einige kleine Verzögerungen einzufügen , die
das Auge nicht
auffangen konnte. Nun, es gibt ein
skriptbasiertes Verhalten. Dafür gibt es für uns
bereits ein schriftliches Verhalten. Wie in vielen
Programmiersprachen und Bauplänen haben großartige Programmierer Tools entwickelt,
sodass uns diese Verhaltensweisen leicht
fallen Was wir tun würden, um den Effekt zu
erzielen, dass jede
Zeitspanne ein bisschen bewegt,
würde als Zeitleiste bezeichnet werden Wir
suchen nach einer Zeitleiste und klicken auf Zeitleiste hinzufügen. Wie Sie sehen können, ist dies ein
komplizierterer Knoten im Vergleich zur einfachen Verzögerung oder sogar im Vergleich zur Rotation des
eingestellten Schauspielers. Er hat viele Eingänge. Abspielen, von Anfang an abspielen, Stopp, Rückwärts, Rückwärts
vom Ende,
neue Zeit einstellen , den Betrag
, den wir einstellen, und aktualisieren und beenden
und eine Richtung angeben. Die Richtung hat eine neue Farbe, und diese Farbe
haben wir hier nicht gesehen. Es sieht aus wie der Biss Biss übersetzen
könnte, um ehrlich zu sein. Deshalb
haben sie ähnliche Farben. Aber das ist, wie wir beim Abdecken
sehen können, eine E-Zeitrichtung AM. Das E am
Anfang steht für EAM, was die Abkürzung für Enumeration ist Im Grunde ist es eine
voreingestellte Liste, die wir erstellt
haben und die sich während der Laufzeit nicht
ändern kann Es ist eine Liste von allem, was wir wollen. Es ist klar, dass der spezifische Knoten Richtung heißt, und wenn, dann machen wir einen gleichwertigen Knoten. Bei Equal Enum können wir hier sehen welche Optionen es
vorwärts und rückwärts hat Es gibt viele
Möglichkeiten, Nums zu verwenden. Am gebräuchlichsten ist
ein Schalter, bei dem Sie sehen können, dass er in Richtung der
E-Zeitleiste wechselt.
Der gleiche Name ist wie die Aufzählung
hier, Der gleiche Name ist wie die Aufzählung weil sie
aufzählungsspezifisch sind Ihnen muss dieselbe
Aufzählung zugeordnet sein, die einen Vorwärts- einen
Rückwärtsgang hat Das könnte
zum Beispiel mit dem Update verbunden sein,
was bedeutet, solange die Zeitleiste
läuft, etwas tun,
oder sie könnte verbunden werden,
um zu beenden, wenn
die Zeitleiste fertig ist oder sie könnte verbunden werden,
um zu beenden, wenn , was auch immer sie
tut, sind sie vorwärts fertig geworden oder
haben sie aufgehört, rückwärts zu
gehen? Wir werden das ziemlich bald
benutzen. Oder jetzt werden wir das einfach löschen, weil wir es
nicht benötigen werden. Was wir brauchen werden, ist wenn wir die Timeline
aktualisieren, die Rotation der festgelegten Schauspieler miteinander zu
verbinden. Lass uns löschen.
Lass uns eigentlich nicht löschen. Lassen Sie uns einfach eine Verbindung von
abgeschlossen zum Abspielen herstellen. Wenn die Verzögerung
abgeschlossen ist, spielen Sie die Timeline ab und bewegen Sie
unseren Schauspieler, drehen Sie unseren Schauspieler. Aber was spielen wir jetzt? Es gibt nichts. Wir haben nichts zum Spielen
eingestellt. Wir werden uns nicht mit
dem Set „Neue Zeit“ und „
Neue Zeit“ befassen , weil es
ein bisschen weiter fortgeschritten ist als das, was wir
gerade tun. Was wir also tun müssen,
ist die Zeitleiste einzugeben. Wie Sie sehen können, ist dies
ein ganz besonderer Knoten. Wenn ich also darauf doppelklicke, öffnen
wir es hier
und genau hier haben
wir das
Ereignisdiagramm, und hier ist die Zeitleiste, der spezifische Port. Wir haben einen Truck, wir
werden sehen, was es ist. Es wird so etwas wie
ein Tessian-System
hinzufügen ,
wie zum Beispiel
einen Flow-Truck.
Wir werden
verwenden, was ich tun werde , ist, die Umschalttaste zu drücken und hier zu klicken, um einen Punkt zu
erstellen,
und dann die Umschalttaste drücken und hier einen Punkt erstellen Diese beiden Punkte
haben nun eine Zeit und einen Wert. Wenn ich die Zeit auf
Null und den Wert Null setzen würde, wäre
dies die Mitte
unseres kartesischen Systems Wenn ich zum nächsten
gehe und drücke, sagen
wir, wie lange es dauern würde, bis sich die
Tür Nehmen wir an, Punkt 0,5
und der Wert Eins, wir können sehen, dass das in der Zeit 0,5 auf den
Wert Eins ging. Jetzt haben wir eine Steigung, mit der wir etwas fahren
können. Wie Sie sehen können,
handelt es sich bei den restlichen Schaltflächen um die Längentaste Wenn ich
die Ansicht in 5 Sekunden
verkleinere, stoppt
sie die Timeline. Ich könnte diesen Wert auf 2,5 einstellen, und dadurch wird
die Zeitleiste hier gestoppt. Aber hier
drüben gibt es noch eine weitere Schaltfläche, Letztes Keyframe verwenden Selbst wenn ich in 5 Sekunden einen
größeren Truck hinzufüge, würde
es feststellen, dass
der letzte Keyframe bei
0,5 steht , und es würde
die Timeline hier stoppen Wenn es jetzt wieder
mehr Titel gäbe, würde
es das letzte
Keyframe vom längsten Track nehmen Jetzt gibt es natürlich
einige Optionen wie Autoplay, Loop und andere
Dinge, die wir im Moment nicht
benötigen werden Das Einzige,
was wir
tun müssen, ist diesen neuen Titel zu benennen, hier auf F zwei zu
klicken und zu drücken, und ich werde
diese Türdrehung Alpha ziehen Wir werden speichern. Ich
werde die Timeline schließen, weil wir sie
nicht mehr benötigen. Stellen Sie sicher, dass wir
den letzten Keyframe verwendet haben, wenn
Sie 5 Sekunden Zeit haben, und ich werde das schließen Jetzt haben wir hier also einen neuen Stift, die Türrotation Alpha Das ist der Wert
0-0 0,5 Sekunden 0-1. Dieser Vorgang dauert 0,5 Sekunden. Es wird
für diesen Betrag aktualisiert, und das entspricht in diesen 0,5 Sekunden einem
Wert von 0-1 Nun, wie kann ich das hier
verbinden? Es gibt keine grüne Stecknadel. Nun, was ich verwenden kann, ist wieder
ein neuer Knoten mit präskriptivem
Verhalten, der Alert Node genannt Das ist ein mathematischer
Knoten, ein LARP, was
im Grunde eine Interpolation
von A nach B ist, und ich kann das B hier
verbinden,
was mein Ziel ist, und meine ursprüngliche Rotation, die, glaube ich, war Dann kann ich diesen Alpha hier verbinden. Ich kann bei Bedarf auch den
kürzesten Weg wählen, aber das kann
manchmal die Dinge durcheinander bringen. also anhand Ihrer Rotationen wählen, Sie können also anhand Ihrer Rotationen wählen, ob Sie dies
überprüfen möchten oder nicht Ich gehe zu Mar
Map und drücke Play. Und das ist bis -60. Setzen wir es auf minus 180, weil wir
nach innen öffnen wollen Aber es hat funktioniert.
Wir haben gesehen, dass es funktioniert hat. Ja, die Tür
öffnet sich von selbst, wartet 2 Sekunden, und diese Zeitleiste
animiert unsere Tür Ich denke, das ist
genug für diesen. Wir sehen uns
im nächsten. Auf Wiedersehen.
6. Interaktive Türöffnungen mit Kollisionsauslösern erstellen: Hallo und willkommen zurück
zu Unreal Engine five, Blueprint Mastery Door Systems
und Zuvor haben wir einige Dinge
über die Zeitleiste
und ihre Funktionsweise
erklärt über die Zeitleiste
und ihre Funktionsweise Wir haben es zu unserem Kartenplan für das
Tutorial hinzugefügt. Wir verwenden das Begin Play-Event. Wir verwenden das Delay und haben die Timeline
abgespielt, um
die Schauspielerrotation
auf der Grundlage des Larps eines Rotators einzustellen die Schauspielerrotation
auf der Grundlage des Larps eines Rotators Wir haben eine Variable
für unsere neue Rotation erstellt, und innerhalb der Timeline haben wir innerhalb von 0,5 einen Flow-Truck
0-1
erstellt Außerdem haben wir auf den Keyframe „Letztes Bild
verwenden“ geklickt, sodass die Länge der Timeline für ihre Dauer
irrelevant ist Dauer
irrelevant Es wird der letzte Keyframe benötigt. Das passiert jetzt,
wenn wir anfangen zu spielen. Aber wir
wollen, dass das passiert,
wenn sich der Spieler
der Tür nähert. Wie würden wir das machen? Wir haben dieses Kollisionserkennungssystem, was bedeutet, dass wir
ein System haben , das versteht,
wann ein Objekt , sagen
wir zum Beispiel
ein Spieler, mit etwas kollidiert Zum Beispiel die Mauer, warum können wir diese Wände nicht verlassen Es ist nicht so, dass sie
solide sind oder so. Wir sagen dem
Programm im Spiel, dass sich das für unsere Spielfigur, für diesen Charakter,
genauso solide verhält,
zum Beispiel, dass es
mich daran hindert, mich zu bewegen Also, wie passiert das? Gehen wir zu unserer Schaltfläche „Schnell
zum Projekt hinzufügen “ und
suchen nach einem Auslöser. Triggerbox.
Bringen wir es her und überprüfen wir die Details. Ich habe es etwas größer gemacht, damit wir einige Dinge
sehen können. Wenn wir nach den Details suchen, gibt es eine spezielle Registerkarte namens
Kollisionen. Hier ist es Und auf dieser Registerkarte können wir
diese Kollisionsvoreinstellungen sehen. Jedes Objekt in Unreal,
wie die Wand, der
Kollisionsauslöser,
die Kapsel, der Spieler, wenn
sie erscheint,
hat also wie die Wand, der
Kollisionsauslöser, die Kapsel, der Spieler, wenn
sie erscheint, seine eigenen Wir haben eine Möglichkeit, einen Objekttyp zuzuweisen definiert, welcher Objekttyp das ist, was der
definiert, welcher Objekttyp das ist, was auch immer wir für ihn festgelegt haben, siehe, dieser ist das
Wort dynamisch Lassen Sie uns das auf Benutzerdefiniert setzen. Also können wir das ein
bisschen ändern. Benutzerdefiniert, ich kann ändern,
wie sich dieser Trigger über seine
ursprüngliche Voreinstellung hinaus
verhält Als ob das ursprüngliche
Preset Trigger war, ist es
meiner Meinung nach Trigger Und bei Benutzerdefiniert kann ich
sagen: Nein, weißt du was? Du wirst die Statik der Wände
blockieren, oder du wirst Spielfiguren blockieren Wenn ich auf „
Pfoten blockieren“ oder „Play“ drücke, finden
wir hier oben das,
oh ja, hier Siehst du, ich komme nicht daran vorbei.
Es blockiert den Teich. Wenn es dagegen den Teich
überlappen würde, würde ich es einfach durchqueren Lass mich sehen, wo
die Kollision ist. Lassen Sie uns das sichtbar machen. Wenn ich hierher gehe und
auf Sichtbarkeit drücke. Nein, eigentlich versteckt im Spiel. Wenn ich das hier deaktiviere, kann
ich es auf der Karte sehen Du
arbeitest also zufällig zur gleichen Zeit. Das haben wir noch nicht programmiert. Eine weitere Sache mit Kollisionen ist, dass sie normalerweise unsichtbar
sind Sie sind immer im Spiel versteckt. Also zum Beispiel vor unserer Tür, wir haben diesen Auslöser
davor. Und er wird
für das Öffnen verantwortlich sein, und eigentlich, für das Öffnen der Tür, machen wir sie
einfach ein
bisschen größer. Lass es uns hierher verschieben. Vielleicht ein bisschen
größer, breiter. Ja, ich finde, das ist
ein netter Ort. Also lass uns diese Kollision nutzen. Ich habe den Auslöser ausgewählt, ich gehe zum
Level-Blueprint Ich klicke mit der rechten Maustaste und erstelle einen Verweis
auf die Triggerbox Ich werde kompilieren. Nun, wie benutzen
wir diese Triggerbox? Nun, wie wir bei den
Kollisions-Presets gesehen haben, gibt es drei Hauptreaktionen:
Überlappung, Blockieren und Ignorieren Lassen Sie uns dies zurücksetzen, um bereits die Standardwerte für Kollisionen
auszulösen Was wir also wollen, ist
nicht beim Ignorieren, nicht beim Blockieren, weil uns
diese Kanäle egal sind, und sie sind quasi ausgelastet Aber wir wollen, dass wir, wenn
wir uns überschneiden,
etwas tun, wenn sich der
Spieler wahrscheinlich damit überschneidet Wir können überprüfen, ob sich der Spieler
überschneidet. Gehen wir zurück zu
unserer Triggerbox und geben Drawable und Overlap ein Und dafür können wir eine Reihe
von Befehlen sehen. Wir können überlappende Schauspieler haben. Wir können überlappende
Komponenten haben, was anders ist als Wir können sich überschneidende Akteure haben. Wir können fragen, ob es sich bei unserem Spieler
überschneidet. Aber wir können hier noch ein paar andere Dinge
sehen , die
zugewiesen werden, wenn der Akteur beginnt, überlappt, der Spieler hat sich überschneidet, auf die Überlappung des Bindungsereignis wird auf die Überlappung des
Akteurs und das Ereignis
auf der Überlappung der Akteurseite Es gibt nicht wirklich einen
großen Unterschied zwischen Zuweisen und Binden. Beide verwenden grundsätzlich Bind. Rufen wir zuerst assign auf. Zuweisen bei Beginn der Überschneidung des Akteurs. Und rufen wir auch Bind an. Binde also Überlappung. Bindet das Ereignis an die tatsächliche
Startüberlappung. Wie Sie sehen können, rufen
beide Bind auf. Der Unterschied besteht darin, dass ein Zeichen auch für uns ein Ereignis auslöst. Nun, wenn wir Bind aufrufen, müssen
wir
das Event selbst erstellen. Und um das zu tun, ziehen
wir einfach aus dem Event und machen ein benutzerdefiniertes Event. Warum wir aus einem Ereignis ziehen Weil Bindung an eine Triggerbox bestimmte Eingaben
erforderlich sind. Dies ist nicht
irgendein benutzerdefiniertes Ereignis. Es wird als benutzerdefiniertes Ereignis bezeichnet, ist
aber kein benutzerdefiniertes Ereignis. Sie können
hier sehen, dass es
diese beiden Eingänge hat, da es auch diesen hat. Wenn ich selbst ein benutzerdefiniertes
Ereignis erstelle, werden
Sie feststellen, dass es nichts enthält. Ich muss
diese Eingaben selbst erstellen. Aber wenn ich diese Eingaben erstelle
, also zum
Beispiel zwei Eingaben hinzufüge, sollten
sie vom Typ
Actor Object Reference sein. Sie werden sehen, dass ich es
jetzt hier verbinden kann. Ich kann kompilieren und es
funktioniert, denn das erfordert im Grunde diese
beiden Akteur-Objektreferenzen. Also, seit ich
sie erstellt habe, ist das alles in Ordnung. Wenn ich sie entferne, lass es einige tun. Also ja, siehst du, es hat keine Eingaben, also kann es nicht delegieren Es ist nicht kompatibel. Wie dem auch sei, lassen Sie uns
weiter erklären , was diese beiden
Akteur-Objektreferenzen sind. Als Überlappungsaktor bezeichnet man
unsere Triggerbox, im Grunde genommen die
Triggerbox-Kollision, die wir verwendet haben. Ein anderer Akteur ist der
Akteur, der sich überlappt hat. Was wir jetzt tun müssen, ist das alles zu löschen und den Spielbeginn
etwas weiter zu verschieben Wir werden das abschalten. Ich werde Alt drücken und
klicken, um die Verbindung zu trennen, und ich werde das hier
verbinden. Wenn das Spiel beginnt, binde
etwas an dieses
Triggerfeld, wenn es anfängt, sich zu überlappen. Also das ist etwas.
Was sollte es sein? Zuallererst müssen wir fragen, ob der andere Schauspieler der Spieler
ist. Um das zu tun, um zu testen, ob der
andere Schauspieler der Spieler ist. Es gibt verschiedene Möglichkeiten. Im Moment werden wir es mit einem Casting-Knoten
machen, was etwas
teurer ist als andere Methoden, aber es ist eine gute Möglichkeit, Casting
zu zeigen. Also, was ist Casting? Nennen wir es zuerst. Ich rufe die
Besetzung der dritten Person an. Charakter. Im Grunde
fragt es, bist du das? Das Objekt, das eintrifft ist das Objekt, nach dem
wir fragen. Also machen wir es uns zunutze. Der Grund, warum wir darauf casten, ist normalerweise, dass wir einige Informationen
von diesem Objekt haben wollen. Auch hier gibt es andere
Möglichkeiten, die besser sind als das
Casting, um das
in größerem Maßstab zu tun ,
aber für uns
wird das im Moment kein Problem darstellen. Wenn
ich also zum Beispiel die Geschwindigkeit
des Charakters haben wollte, könnte
ich hier
Geschwindigkeit bekommen,
und ich würde die Geschwindigkeit des Charakters aus
der dritten Person
oder etwas Spezifischeres ermitteln. Als ob ich die Kapselkollision
überprüfen wollte .
Apsu-Komponente Hier kommt com,
ein charakterspezifisches Zeichen. Wir wissen, dass jeder
Charakter eine Kapsel hat, also kann ich diese Informationen
von dem Charakter bekommen. Wenn wir nun etwas
Spezifisches
an diesem Charakter hätten , zum Beispiel eine HP, könnten
wir die HP dieses Charakters von hier aus ermitteln. Wenn wir das nicht tun würden, könnte
ich,
sagen wir, nicht nochmal eine Kapsel bekommen. Es gibt keine
Kapselkomponente, weil der andere Schauspieler ein beliebiger Schauspieler
sein kann. Aber beim Casting
bitten wir um die Besetzung in der dritten Person. Bist du ein Charakter aus der dritten
Person? Und wenn ja, also wenn
die Besetzung erfolgreich ist, dann können wir einige
Informationen daraus gewinnen Wenn die Besetzung scheitert, bedeutet das, dass es nicht das ist, wonach wir fragen Also werden wir fragen,
ist das, was mit
dem anderen Charakter kollidiert, der Charakter der dritten Person Falls ja, dann spielen
wir einfach die Timeline ab und das wäre alles Lass uns kompilieren. Gehen wir in die Nähe der Tür und
die Tür öffnet sich. Ich denke, das ist
genug für diesen. Beim nächsten
machen wir das Schließen der Tür. Wir werden
hier etwas hinstellen, um hierher zu treten, wir öffnen die Tür, treten
hierher, schließen die Tür. Aber das ist für diesen. Ich werde
dich am nächsten sehen. Auf Wiedersehen.
7. Fortgeschrittene Kollisionstechniken in Unreal Engine: Hallo, willkommen zurück bei
Andrea Engine Five,
Blueprint Mastery, Door Systems
und In der letzten Lektion haben wir damit
aufgehört,
diese Kollision zu erzeugen , sodass sich
die Tür öffnet, wenn sich der Spieler
nähert Und dazu haben wir
den Level-Blueprint verwendet
und das Bindungsereignis an unsere Triggerbox
beim Start Overlap erstellt an unsere Triggerbox
beim Start Wenn sich unser Spieler also
überschneidet, lösen
wir dieses Ereignis aus Wir prüfen, ob es unser
Spieler ist, weil es etwas anderes
mit unserem Cast-Knoten
gewesen sein könnte , und dann
lösen wir Lassen Sie uns das jetzt ein
wenig in Ordnung bringen. Und lassen Sie uns ein ähnliches
System erstellen, um die Tür zu schließen. Also werde ich unseren Auslöser
wählen. Ich werde es kopieren und einfügen, Steuerung C gut. Und ich werde es hierher
verschieben. Eigentlich hätte ich dasselbe
tun können, indem ich einfach das T
benutzt und von einem Pfeil aus
gezogen Kopieren, Einfügen oder Alt und
Ziehen wäre also dasselbe. Jetzt werde ich
das etwas kleiner machen. Ich werde es ein bisschen vorziehen. Und jetzt erstelle ich
einen Verweis darauf , indem ich es im Viewport
auswähle und zu unserem
Level-Blueprint zurückkehre Ich klicke mit der rechten Maustaste und erstelle einen Verweis
auf Triggerbox zwei Jetzt müssen wir wieder das Bindungsereignis für
Actor Begin Overlap verwenden Bindungsereignis für
Actor Begin Overlap Also werde ich dieses
Ereignis verwenden, es hier kopieren und einfügen. Ich werde
die Triggerbox anschließen , weil das das Ziel ist. Target bezieht sich darauf, an
wen
ich beispielsweise dieses Ereignis
binde, und von dem Ereignis aus werde
ich
ein benutzerdefiniertes Ereignis erstellen. Nennen wir das „Close
Close“, also Tigger. Ich werde es herbringen. Ich werde die Besetzung auf den Charakter
der dritten Person übertragen. werde es hier platzieren und ich werde
diese beiden Reverts miteinander verbinden Also lass uns spielen gehen. Und wenn wir uns der Tür
nähern, öffnet sie die Tür. Wenn ich hierher gehe,
wird es die Tür schließen. Vielleicht ist
ein Auslöser etwas größer, aber es ist in Ordnung.
Ja, es funktioniert Was wir also tun,
ist im Grunde dieselbe Zeitlinie, wir kehren von dem
Moment an um, in dem die Zeitlinie Wenn wir zum Beispiel
direkt zu dieser Box gehen , wird
nichts passieren Es ist eine nette Art, auch etwas zu
demonstrieren. Wenn ich die Alt-Taste drücke, werde
ich im Viewport ausgeworfen Achten Sie darauf, dass dies nur in diesem
Viewport funktioniert. Wenn ich ein eigenständiges Spiel starte, wenn ich im neuen
Editor Window Pie spiele Alts drücke, funktioniert
es nicht Ich kann von hier aus nicht auswerfen, aber ich kann aus einem Viewport auswerfen Spielen wir also einfach im
ausgewählten Viewport, richtig. Jetzt gehe ich zu Alts und
Eject aus diesem Viewport
und bringe die
Tutorial-Map hierher, den Bauplan der Tutorial-Map Tutorial-Map Eigentlich ein bisschen größer, richtig.
Wir brauchen das. Und das ist eine echte
Debugging-Methode , um die Blueprints visuell
zu debuggen Sie wählen aus, welchen Blueprint
Sie arbeiten sehen möchten. Denn wenn ich zwei
dieser Pläne auf unserer Karte hätte, könnte ich
jetzt keine Pläne mit
zwei Ebenen haben, aber wenn es eine andere
Art von Bauplan wäre und ich zweimal oder 100 Mal davon
hätte, sie
alle hier erscheinen Also muss ich wissen, welchen
ich debugge,
welchen ich zum Debuggen sehe Also werde ich die Tutorial-Map auswählen
. Und lassen Sie uns den
Code ein wenig herauszoomen, ihn hierher
bringen
und ich gehe zurück
zu unserem Spiel
, indem ich F 8 drücke. Nun, ich
musste nicht wirklich auswerfen, aber es war eine nette
Gelegenheit, Auswerfen zu zeigen Wie dem auch sei, F acht, zurück
zu unserem Charakter. Jetzt bewege ich den Charakter. Und ich werde das durchgehen. Sie können sehen, dass es auslöst. Es überschneidet sich. Es läuft, aber es passiert nichts Es passiert nichts, weil
es schon am Ende ist. Das löst also für den Bruchteil
einer Sekunde
einen Frame aus, um einfach zu überprüfen
, ob es am Ende ist. Wenn ich hier hingehe, wird es für die ganze Zeit ausgelöst. Wenn ich jetzt hierher gehe,
löst es für die ganze Zeit aus. Und auf diese Weise können
Sie Ihren Code sehen, wie er läuft,
wo er stoppt, wo es Probleme gibt. Manchmal lohnt es sich, dafür
zwei Bildschirme zu haben, und derselbe Bildschirm kann ein bisschen
umständlich sein , aber es ist machbar Wie dem auch sei, wir werden
das wieder hier hinstellen, auf Stopp drücken. Das nächste, was wir tun werden ist, dem
Spieler irgendwie zu sagen, tritt hier her, tritt an diese Stelle,
um die Tür zu schließen. Um das einfach zu machen, könnte
ich einfach einen Text
hierher bringen, nur Text,
Texturer, Schauspieler hier, wir werden ihn
irgendwo
hinbringen, wo ich ihn sehen kann, ich muss ihn um 90 drehen und ihn vielleicht hierher
bringen Und wenn ich zu den Details gehe, wie gesagt,
hat jedes Element seine eigenen Jetzt hat der Text
sein eigenes Detail, das als Text bezeichnet wird. Was auch immer ich hier
eintippe, wir können es auf der Karte sehen. Also tretet her, um die Tür zu schließen. Wenn ich das
in eine andere Zeile setzen wollte, lassen Sie uns weiterhin jeden
Buchstaben groß schreiben, jeden ersten Buchstaben Was ich tun könnte, ist hierher zu gehen, ich kann einfach die Eingabetaste drücken und wir gehen zur Zeile darunter Es tut mir leid, das
lenkt ab. Ich muss
das größer machen horizontaler Ausrichtung und
vertikaler Ausrichtung kann also auch unser Text manipuliert werden. Ich werde es in der Mitte belassen
und den Text unten. Ich
finde, es sieht gut aus. Ich werde
es einfach so verschieben und es vielleicht ein bisschen kleiner
machen 24. Nun, 20, 20 scheint in Ordnung zu sein. Und ich werde
es bewegen. Nein, es war in Ordnung. Also das ist eine Möglichkeit, Text zu
sehen. Tretet her, um die Tür zu schließen. Aber wenn ich den
Text
in einer bestimmten Zeit über der Tür erscheinen lassen wollte , bräuchte ich dafür
immer noch eine
Kollisionsbox. Jetzt könnten wir
die Welt mit
Triggerboxen füllen und sie anhand des Levelplans kaufen. Aber was wäre, wenn ich
nur eine Triggerbox haben wollte , mit der ich viele Dinge machen
kann, und je nach meinen Bedürfnissen könnte
ich ihre
Funktionalität ändern Hier kommt ein
Schauspieler-Blueprint ins Spiel. Das ist der Unterschied
zwischen dem Level-Blueprint, dem es sich um einen Plan handelt, der
für die gesamte Ebene verantwortlich ist, und dem Schauspieler-Blueprint, für sich selbst verantwortlich ist und die Dinge tut, die
er Gehen wir also zu unseren Entwürfen über. Lass uns
einen neuen erstellen, keinen Test verwenden. Lassen Sie uns die Blueprint-Klasse wählen. Wählen wir einen Noctor und nennen
wir ihn PP-Plottext. Geben wir diesen Bauplan ein. Wie gesagt, der Level-Blueprint ist für
das gesamte Level verantwortlich Seine Bestandteile
könnten also theoretisch die gesamte Ebene sein. Aber dieser Plan hat diesen Standpunkt, und
wie wir beschrieben haben, können wir hier
visuell einige Teile
unseres Bauplans sehen , woraus unser Bauplan zum Beispiel
besteht Und wo wir sie platzieren, ist der Bauteil-Stub hier
drüben. Für diesen Entwurf benötigen
wir also eine Triggerbox In Bauplänen wird eine Triggerbox
jedoch nicht
als Triggerbox bezeichnet Sie wird
Kollisionsbox-Kollision
oder Kapselkollision
oder Kugelkollision genannt oder Kapselkollision
oder Kugelkollision Dies sind die
Standardklassen, die wir zur Verfügung haben. Sie sind zu 99% fast identisch. Sie sind fast gleich, aber sie sind nicht dasselbe. diesem Grund werden sie Triggerboxen
genannt, und diese werden
Box-Kollision genannt. Wie dem auch sei, lassen Sie uns weitermachen,
indem wir eine Box-Kollision wählen. In diesem Fall, in dem wir uns in
diesem Blueprint-Blueprint befinden, muss
ich nicht irgendwie auf
die Box-Kollision verweisen irgendwie auf
die Box-Kollision weil sie sich innerhalb
des Blueprints befindet, wohingegen
ich im Level-Blueprint auf diese
Triggerbox von der Welt aus verweisen muss Wenn ich diesen
Plan jetzt in die Karte einfüge, können
wir die Box-Kollision sehen Aber ich muss hier nicht darauf
verweisen, weil es
zu diesem Bauplan gehört Wenn ich
es in meinem Event-Graph aufrufen muss, kann
ich es einfach per Drag &
Drop von hier ziehen oder ich kann es aus
Variablen und Komponenten ziehen und dort ablegen Denken Sie daran, dass Variablen auch Komponenten Variablen
sind. Und da uns
das Verhalten
der Triggerbox
sehr nahe ist, wollen wir das Verhalten
der Box-Kollision untersuchen. Wie Sie sehen können, gibt es hier
ein ganz anderes
Detail Und wenn ich zum Viewport gehe
und es auswähle, hat
es mehr Ähnlichkeit mit
dem anderen, mit ein paar Unterschieden, wie zum Beispiel
diese Ereignisse
hier, bevor wir Bind on Event aufrufen
mussten Also können wir das auch
von hier aus machen. Also bei Überlappung binden. Und wir können sehen, dass diese
Ereignisse, die es hier gibt auch beginnen, sich zu
überschneiden und alles andere. Aber da es in
der Blaupause enthalten ist, gibt uns
Areal diese Ereignisse
, die wir direkt nutzen können Ich möchte zum Beispiel, dass eine
Komponente anfängt, sich zu überlappen. Ich kann darauf klicken und
es erstellt das Ereignis, sodass ich es nicht binden muss. Ein paar zusätzliche Informationen, wenn ich es von einem anderen
Blueprint aus
aufrufen würde,
wenn ich zum Beispiel einen Verweis
darauf hätte, sagen wir, ich habe dieses Feld ausgewählt, ich bringe
hier einen Verweis auf dieses Feld Jetzt kann
ich aus dieser Box meinen aus
diesem Blueprint abrufen, ich kann die Box-Komponente abrufen Ich gehe die Liste durch, hole die Box, ich kann sie hier binden, denn wenn ich hier klicke, können
wir sehen, dass es keine Ereignisse gibt,
wie es im Blueprint war Wenn ich also von
einem anderen Ort aus eine Verbindung zu dieser Box herstellen möchte, muss
ich immer noch auf diese Weise binden Lassen Sie mich die Demonstration beenden. Also werde ich bei Überschneidungen eine Bindung und dann würde ich ein benutzerdefiniertes Ereignis
erstellen. Und wie Sie sehen können, hat es mehr Optionen als
die Triggerbox. Deshalb sage ich, dass
es nicht genau dasselbe ist. Wie dem auch sei, das sind nur
zusätzliche Informationen. Gehen wir zurück zu unserem Entwurf und ich werde dieses Feld
löschen Wir brauchen es nicht
, weil wir
diese Veranstaltung für uns vorbereitet haben diese Veranstaltung für uns vorbereitet Und in der Klammer können
Sie sehen, um welches Feld es Zum Beispiel hatten wir
fünf weitere Boxen, die
besagen, dass dies Box
15 ist, 15 weitere Wir können sehen, dass dies Box 15 ist. Nun, ich denke, das ist ein guter
Haltepunkt für diesen Fall. Ich sehe dich
beim nächsten Mal. Auf Wiedersehen.
8. Text und Licht mit Blueprint-Programmierung steuern: Hallo und willkommen zurück
zu den fünf
Blueprint Mastery Türsystemen
und interaktiven Portalen von Unreal Engine Blueprint Mastery Türsystemen haben wir bereits damit begonnen, unseren Blueprint-Schauspieler mit geringem Text
zu entwickeln Wir haben diesen
Blueprint zur Map hinzugefügt und einen Kollisionswürfel,
eine Box-Kollision
innerhalb des Viewports,
innerhalb der Komponenten
des Blueprints hinzugefügt eine Box-Kollision
innerhalb des Viewports,
innerhalb der Komponenten
des Und wir haben ein bisschen gezeigt die Komponenten gegenseitig
überlappen, Feld 15, und das Nicken
der Triggerbox, was ein bisschen einfacher war Lassen Sie uns nun mit der
Erstellung dieses Entwurfs fortfahren. Die nächsten Komponenten, die
wir benötigen, sind ein Punktlicht und ein Text Rendern von Text. Nun, die Punktlinie, wir
mussten den Text
etwas sichtbarer machen, unabhängig davon,
ob er versteckt war oder nicht, ob er versteckt war oder
nicht, ob er für Beleuchtung nicht
sichtbar war. Und nun, lass es ein bisschen besser
hervorstechen. Und die Textausschreibung
wäre der Text , den wir zu unserem Text hinzufügen, genauso
wie wir hier eine
Stufe hinzugefügt haben, um die Tür zu schließen, was wir eigentlich mitbringen sollten. Ich werde Alt verwenden und eine Oberfläche hierher
ziehen. Und okay. Leg es vielleicht etwas niedriger. Damit der Spieler weiß,
wo er hingehen soll. Lass uns das auch ein
bisschen kleiner machen. Es ist in Ordnung. Es ist in Ordnung hier. Ja. Und jetzt müssen wir
diesen Text über der Tür platzieren um zu sagen, dass du näher an
die Tür kommst, damit sie sich öffnet. Da wir
das oft verwenden wollen, werden
wir das
Konstruktionsskript verwenden, das wiederum
nur in der Blueprint-Klasse verfügbar ist Nun, für die meisten Blueprint-Klassen gilt, wie wir bereits gesagt haben, dass sich die Ebene, Blueprint, von einem einfachen Blueprint unterscheidet Die meisten Blueprint-Klassen haben
das Konstruktionsskript. Construction Sprint wird verwendet um Dinge im Editor Es eignet sich sehr gut für die prozedurale Generierung
und Randomisierung Anpassung von Assets Zum Beispiel müssen
wir jetzt unseren Text anpassen Wie jedes Exemplar
dieses Entwurfs, den wir der Welt
zur Verfügung stellen werden, wenn ich ihn dupliziere Wir wollen, dass der Text in einem Fall
andere Dinge sagt in einem Fall
andere Dinge und in
dem anderen Fall andere Dinge Das ist also derselbe Entwurf, aber wir haben zwei Instanzen
mit unterschiedlichem Text Eine Möglichkeit, dies zu tun, wäre die Verwendung dieses
Konstruktionsskripts Wir werden unseren
Text-Trender hierher bringen, ziehen ihn
einfach per Drag & Drop Ein kurzer Tipp dafür wäre, dass ich besser werde, wenn ich Strg-Taste
gedrückt halte und Drag-and-Drop die Strg-Taste
gedrückt halte und Drag-and-Drop verschiebe. Wenn ich durchhalte, kriege ich einen Setter Wie du gesehen hast, ziehe ich es von hier
und lege es ab,
es ist dasselbe Es ist unser Text-Trender. Wenn ich diesen Textnder in M umbenenne, können
Sie sehen, dass er auch hier
umbenannt wird Also Registerkarte „Komponenten“,
Liste der Komponenten in Variablen. Wir werden uns nicht um
einen Setter kümmern, ja. Wir werden nur den einen Getter
verwenden und wir werden den Text einstellen Der Unterschied zwischen
diesem festgelegten Text und diesem festgelegten Text-Rendering M wäre, dass sich das auf den Wert
bezieht Lassen Sie mich das Text-Rendern wählen Der Wert von Text, wobei
sich dies auf die Entität
des Text-Renderings bezieht. Das würde sich also ändern,
wenn ich Variablen mit Text-Renderings voreingestellt hätte, ich könnte es so ändern Wie auch immer, ein bisschen verwirrend. Im Moment rendern wir
nur den Wert des Texts. Auch hier unterschiedliche
Details, wenn ich hier bin, andere Details, wenn ich es
von hier aus auswähle. Ich muss nicht auf
dem Viewpod sein ,
wäre dasselbe, aber verschiedene Details aus einer variablen Perspektive und unterschiedliche Details aus einer
Komponentenperspektive Lassen Sie uns nun weitermachen. Konstruktionsskript, wir
müssen unseren Textwert ändern. Also werde ich
das zu einer Variablen heraufstufen. Und es hat
es bereits nach unserem Wert benannt. Wir werden den
Text davor hinzufügen. Textwert. Und was wir tun werden, ist diese Schaltfläche hier drüben zu
benutzen, Instanz editierbar oder
sie hier zu finden und
das I hier drüben zu benutzen Sie können sehen, wie es automatisch funktioniert.
Klicken Sie hier mit dem E auf Instanz editierbar. Wir werden
es auch beim Spawn verfügbar machen, nur für den
Fall , dass wir diesen Blueprint spawnen. Nun, wir
werden ihn nicht spawnen, aber wenn ihr diesen Bauplan
spawnen wollt, aber wenn ihr diesen Bauplan
spawnen wollt,
müsstet ihr ihn offenlegen. Jetzt kompilieren
und speichern und zurück
zu unserer Map gehen und zeigen,
was wir Wir haben diesen Textwert und
was auch immer wir hier als Wert angeben, wäre unser Text. Im Moment ist es leer.
Wenn wir also zu unserem Viewport gehen, können
wir sehen, dass
es keinen Text gibt Es ist tatsächlich verschwunden.
Wenn ich hier eins, zwei, drei drücke,
sehen wir eins, zwei, drei. Was auch immer wir dieser Variablen als
Wert hinzufügen, wir können es tatsächlich
entsprechend unserem Text-Rendern erzeugen, und das geschieht
mithilfe eines Konstruktionsskripts. Das bedeutet, dass es passiert bevor das Spiel läuft,
bevor ich auf Play drücke. Und eine weitere Sache ist, dass wir auf Instance Edit
und Expose auf Span
gedrückt haben . Wenn wir also auf
diese Baupläne klicken und
zu den Details hier gehen, lassen Sie mich sie
etwas vergrößern Wir können in der
Standardeinstellung der Kategorie einen Textwert sehen. Um sicherzugehen,
geben wir meinen Textwert ein. Und wir können sehen, dass dadurch der Namenswert
geändert wurde. Das ist also unsere Variable. Also, was auch immer ich
hier schreibe, hallo ,
hallo, es wird der neue Text
werden. Und hier können wir die
Definition von Instanziierung sehen, als ob ein Blueprint Hallo sagt, der andere
Blueprint Und tippe Hallo und
dieser sagt Hallo, und dieser also die Variable öffentlich machen
oder sie tatsächlich instanzeditierbar verfügbar machen, haben wir die Möglichkeit,
die Variable hier zu ändern. Nun, die Standardkategorie, das
ist eine andere Sache. Wenn wir zur
Variablen selbst gehen, können
wir sehen, dass es hier eine
Menge Details gibt. Eines der Details
ist die Kategorie. Wir können unsere Variablen kategorisieren und so tun, als ob es sich bei diesen Variablen um Komponenten handelt
. Sie befinden sich auf Komponenten wie Listen. Wenn ich diesen zu einer Kategorie hinzufüge, die sagen wir Text
heißt, können wir
jetzt sehen, dass er zur Kategorie Text
gehört. Wenn ich
hier nach draußen gehe und tatsächlich kompilieren muss, um diese Änderung
zu sehen, können
wir sehen, dass dort statt
der Standardeinstellung Text steht. Wir könnten
hier eine Reihe von Einstellungen vornehmen , um die Position
des Punktlichts,
des Textes und der Box festzulegen , aber wir werden nicht so
weit ins Konstruktionsskript gehen. Was wir aber tun können,
und zwar so, als ob wir
das Punktlicht einsetzen
und die Intensität einstellen würden . Nehmen wir an, wir geben ihm einen
Standardwert von 1.000 und machen daraus eine Variable. Gehen wir
mit einer neuen Intensität fort. Lassen Sie uns die
Kategorie auch auf
Licht ändern und auch die Farbe festlegen. Möglicherweise möchten Sie eine andere Farbe
einrichten. Lassen Sie uns den
Standardwert auf Weiß setzen. Ja, weiß, weiß,
nein. Und lassen Sie uns das
in eine variable, neue Lichtfarbe und eine Instanz umwandeln, die auch
bearbeitet werden kann, und eine Kategorie Anstatt
die Kategorie hier zu ändern, kann
ich sie einfach
per Drag-and-Drop
hierher ziehen und sie wird in
diese Kategorie aufgenommen Bringen wir das jetzt hierher. Eigentlich kann ich das einfach
duplizieren. Jetzt ist es auch gültig, diese
Option anstelle von
einer zu haben und ein anderes
Kabel zu ziehen Es stellt kein Problem dar. Es macht es sogar ein
bisschen klarer darüber, was was ist. Die andere Sache, die ich erklären
wollte, ist, warum ich hier
einen Standardwert gedrückt und
dann zur Variablen hochgestuft habe. Nun, wenn ich das auf diese Weise mache, wenn ich kompiliere, behält die
beworbene Variable, die
neue Intensität
, den Wert bei, den ich als Standard hatte, und die Farbe
wäre auch weiß. Wenn ich jetzt gehe, ich nicht darauf geklickt,
um die Instanz editierbar Lassen Sie uns sie beim Spawn verfügbar machen, vielleicht für eine fortgeschrittenere
Verwendung, und kompilieren und speichern Gehen wir zu unserer Karte,
und jetzt können wir hier
die Textkategorie und die
Lichtkategorie sehen . Wir
brauchen eigentlich nicht beide. Wir brauchen vorerst nur einen und lassen Sie uns die Positionierung ein
wenig festlegen. Was wollen
wir hier also erreichen? Wenn ich es ausgewählt
habe, kann ich die Komponenten
dieses Blueprints auswählen Wenn ich diese Tür wähle, kann
ich die Komponenten
dieses Bauplans auswählen Wenn ich mich für die Wand entscheide, kann
ich im Detail
die Komponenten
dessen auswählen , was auch immer ich wähle Was ich tun werde,
ist die Box auszuwählen. Wenn sich der Spieler also auf die Tür
zubewegt , weil es
keinen anderen Ort gibt, an den er sich bewegen kann, wird diese Box ausgelöst. Ich denke, das ist ein
schöner Ort, um es zu platzieren. Der Spieler könnte springen. Also lass es uns ein
bisschen größer machen. Also werden sie diese Kiste
durchgehen. Holen wir uns den Text. Lass uns springen. Ich werde mir
das von hier holen Eine rotierende 90, und
lassen Sie uns einen Text festlegen. Sagen wir auch, kommen Sie näher, um die Tür zu öffnen. Nichts hat sich geändert. Okay, mein Fehler. Das darf
ich beim Rendern des Textes nicht machen. Ich muss das mit dem Blueprint machen, meinen Textwert schließen,
um die Tür zu öffnen Ordnung. Und lassen Sie uns
diesen Text über die Tür legen Und lassen Sie uns den Satz
etwas kürzer machen. Nennen wir es einfach
Approach to Open. Nochmals, es ist ein Fehler. Es
sollte auf dem Blueprint stehen, nicht auf dem Text-Rendering, weil wir dieses
Text-Rendering von hier aus
überschreiben Also nicht gerade der
Nein-Ansatz zum Öffnen. Ich denke, Offenheit braucht ein
P. Also Herangehensweise an Offenheit. Lassen Sie uns den
Text später erneut auswählen. Platziere ihn ein bisschen besser. Und lassen Sie uns auch
das Licht darüber bringen. Es bringt den Spieler dazu,
auf den neuen Lichtpunkt zu schauen , den er anvisiert. Ich denke, es einzurichten. Mal
sehen, wie es aussieht. Großartig. Das nächste, was wir tun sollten ist ein bisschen
Funktionalität, aber ich denke, das ist ein
guter Ausgangspunkt. Wir haben es eingerichtet. Wir haben die anderen Komponenten erstellt, wir haben sie auf der Karte eingerichtet, und ich denke, das ist ein
guter Ausgangspunkt. Wir sehen uns
beim nächsten. Auf Wiedersehen.
9. Programmierinteraktionstipps mit Blueprints: Willkommen zurück bei
Unreal Engine five, Blueprint Mastery, Door Systems Zuvor haben wir
unseren BP-Flow-Text erstellt. Wir haben sogar noch ein paar
weitere Komponenten hinzugefügt und das
Konstruktionsskript
erstellt, das den Text,
die Farbe und die Intensität steuert . Wir haben es zu unserer Map hinzugefügt und die
Komponenten selbst verwendet. Wir haben den Bauplan ausgewählt und dann anhand der Details die gewünschten Komponenten
ausgewählt und
sie an den gewünschten
Ort verschoben sie an den gewünschten
Ort Lassen Sie uns mit dem
Codierungsteil fortfahren. Wenn sich der Spieler überschneidet, fragen
wir noch einmal, ob es unser
Spieler ist, wenn der andere Schauspieler Dieses Mal werden wir
es ein bisschen anders machen. Wir gehen zu
unserem Inhaltsbrowser, wir gehen zu einer dritten Person,
und wir gehen
zu unseren Ordner-Blueprints
und öffnen unsere BP-Third-Person Bei der dritten Person gibt es
den Code, mit dem sich der Spieler bewegt Es gibt das
Konstruktionsskript und das Viewboard. Das Viewboard besteht aus dem Figurennetz, der Kapsel, einer Kamera Boom **** und der Kamera sowie einer Komponente zur
Charakterbewegung Nun wollen wir
die Kapsel verwenden und zu den
Details gehen und nach
Tug suchen und Tug P
hinzufügen Was sind Tags Bei Tags handelt es sich um einfache Beschriftungen oder
Bezeichner,
die auf Wunsch Akteuren oder Komponenten
eines
Blueprints zugewiesen werden können. Sie die auf Wunsch Akteuren oder Komponenten
eines
Blueprints zugewiesen werden können helfen dabei, Objekte
in der Spielwelt zu kategorisieren und zu identifizieren,
sodass es einfacher ist, bestimmte Verhaltensweisen im Code zu filtern und finden oder auszulösen Was wir jetzt zum Beispiel tun werden, speichern und
kompilieren .
Gehen wir zurück zu. Wir werden fragen, ob
nicht der andere Schauspieler,
sondern die Komponente, die wir überschnitten haben Hat es das Etikett?
Hat tatsächlich ein Etikett. Die Komponente hat ein Tag,
und wir werden es wählen, weil das das Tag ist
, das wir hier eingegeben haben. Ich werde das schließen. Wir
brauchen es nicht mehr. Und wenn die Komponente , die sich mit
der Box überlappt hat, das Tag P hat, dann verwenden wir einen Zweig
, der ein I-Knoten ist Also im Grunde, wenn
das stimmt,
wenn es wahr ist , die Bedingung,
unsere aktuelle Bedingung, ist es die Komponente ein Tag hat, dann geht
es von wahr Wenn nicht, geht es von falsch über. Es ist also eine IS-Aussage
mit einer Bedingung. Und natürlich
braucht es die Ausführung. Wenn wir das Komponenten-Tag P haben, feuern wir den True-Branch ab. Wenn nicht, feuern wir
den falschen Zweig ab. Wenn das stimmt, brauchen
wir
den Text-Renderer und wir brauchen
das Point Light Wir werden
eine festgelegte Sichtbarkeit zeichnen. Nun, das ist ein
Knoten,
der die Sichtbarkeit einer Komponente steuert der die Sichtbarkeit einer Komponente Wir sollten ihn
auf true setzen und zu
unseren Details im Text-Rendern gehen und nach Sichtbarkeit suchen. Und das wird zum Puls, und das Gleiche machen wir
mit dem Punktlicht. Wie Sie sehen, habe ich die Entität
geändert, die Komponente, auf die ich klicke, und das Tag wurde hier beibehalten. Das ist also sehr hilfreich. Ich versuche Licht auszuschalten, zu
rendern, zu kompilieren und zu speichern. Dadurch wird die
Sichtbarkeit von beiden auf wahr gesetzt. Lass es uns testen. Wenn ich
spielen gehe, kann ich nichts sehen. Ich gehe hier vorbei, nähere mich, um zu öffnen. Perfekt. Schritt hier zum
Schließen, Herannahen zum Öffnen. Machen wir unsere zweite
Ebene sichtbar. Ich werde auf der zweiten Ebene auf das
Auge klicken und jetzt ist es sichtbar. Und lassen Sie uns tatsächlich, wenn wir diesen Raum
betreten,
das duplizieren. Ich wähle das einfach aus
und ziehe es hierher und wähle
auch das untere Ding aus und ziehe es hierher, vielleicht ein bisschen
weiter hierher. Ich könnte den Text auch
kopieren, drehen und mit Alt werde
ich ihn duplizieren
und hierher ziehen. Also ja, ich denke, es ist in Ordnung. Lass uns unseren neuen Trigger auswählen, zu unserer Tutorial-Map
gehen, die Referenz
mitbringen
und ihn hier verbinden. Das wäre es also. Jetzt binden wir diesen Trigger auch an dieses Ereignis. Also, wenn ich spielen will, kann ich hier
hingehen, mich nähern, um zu öffnen. Nähern Sie sich dem Öffnen, und ich werde
hier rübergehen und schließen, öffnen, schließen. Toll. Unsere nächste Tür wird die
sein, bei der wir E drücken und sie öffnet sich. Bringen wir also unseren
Kollisionsdarsteller her. Eigentlich werde
ich einen neuen mitbringen. Fließtext hier. Stellen wir ein, dass Text gedrückt , um D zu öffnen. Fügen wir hier Leerzeichen ein. Auch hier könnte ich, wenn ich das Aussehen,
den Text,
ändern wollte , einen Text-Renderer
auswählen. Ich könnte die Optionen hier ändern. Ich könnte die Farbe ändern, und wir haben nicht
all diese Variablen angezeigt. Wir haben nur enthüllt, wie
der Text aussehen würde. Wo wollen wir kollidieren? Nehmen wir an, der Spieler hat den halben Raum durchquert, sagen
wir irgendwo hier. Nochmals, um das zu verschieben, wähle ich
es einfach aus den Details aus. Lass uns das Licht
irgendwo hier hinstellen. Und bringen wir den
Text mit. Was ist der Text? Oh, es ist nicht sichtbar. Deshalb kann ich nichts sehen. Also gehe ich zur Suche
nach Sichtbarkeit in den Details des Textes. Wird wahr werden. Und jetzt habe ich den Text. Mir gefällt das irgendwie nicht, also werde ich einfach ein paar Einstellungen
ändern. Ich werde es in die Mitte und
neben die Mitte schicken . In Ordnung. Ich finde, das sieht besser aus. Ja, der Ort ist in Ordnung. Ja, wir können
es ein anderes Mal groß malen. Lassen Sie uns jetzt überprüfen, ob ich es wieder auf
unsichtbar setzen muss, die Sichtbarkeit. Stimmt das? Lass es uns testen. Gehen wir zu dieser Tür
und es gibt keinen Text. Ich schließe die Tür.
Und das sah toll aus. Das Einzige, was wir jetzt tun müssen,
ist zu öffnen, um diese Tür herzustellen. Lassen Sie uns also mit der
Erstellung des Entwurfs beginnen. Klicken Sie mit der rechten Maustaste, gehen Sie zur Blueprint-Klasse und
wählen Sie unactorblueprint aus, weil wir es nicht
besitzen müssen , wir müssen es nicht Es ist nur eine Entität mit einigen Funktionen. Also Schauspieler Blueprint,
nenne es PP Einwegtür. Hoppla. Vielleicht ein Weg dazu. Öffnen wir also diesen Bauplan. Lassen Sie uns tatsächlich
einen Ordner für die Türen erstellen. Lassen Sie uns in den Bauplänen einen Ordner namens
Türen haben, und ich werde ihn hierher ziehen
und dort ablegen Und bringen wir es der Welt näher. Wir werden
es danach einrichten. Eine weitere Möglichkeit, den Blueprint zu
öffnen neben einem Doppelklick hier
, besteht darin, im Outliner den Blueprint
auszuwählen, den ich
bearbeiten möchte . Wenn ich ihn zur Welt
gebracht habe, kann
ich einfach hier klicken, Blueprint
bearbeiten, oder ich kann einfach Blueprint-Editor
öffnen auswählen,
indem
ich das Asset auswähle und dann hier drüben Blueprint
bearbeiten, oder ich kann einfach Blueprint-Editor
öffnen auswählen,
indem
ich das Asset auswähle Blueprint-Editor
öffnen auswählen,
indem
ich das Asset auswähle indem
ich das Also werde ich ihn öffnen. Und für diesen Entwurf benötigen
wir
drei Komponenten Fügen wir eine Kollisionsbox hinzu. Dadurch wird erkannt , ob sich der Spieler in Reichweite
befindet oder nicht, sodass die Tür geöffnet werden kann oder nicht. Und wir werden auch einen Pfeil
benötigen damit wir wissen, wohin
die Tür zeigt, was die Vorderseite
und welche die Rückseite ist, und wir werden ein statisches Netz
benötigen Also eigentlich für das statische
Netz, weil ich die Assets
nicht durchsuchen möchte Da wir es hier haben, kann
ich einfach
diesen Browse bis zum
Sorry wählen , nicht diesen Pfeil. Die Details hier, ich
gehe aus dem Sichtfeld und wähle die
Tür aus. Und auf dem statischen Netz kann
ich sehen, welches statische Netz die Entität
des statischen Netzes
ist. Ich gehe hierher und
hier ist die Tür. Jetzt gehe ich zurück zu meinem Blueprint und
füge statisches Mesh hinzu, und es hat die Tür bereits für mich
ausgewählt Großartig. Nun, es ist ein
bisschen P-Boot. Es ist nicht wirklich wichtig.
Ich werde es einfach
herbringen. Und den Rest können wir
von der Karte selbst aus verschieben , indem wir den Bauplan
auswählen Dieser ist um 90 Grad
gedreht , sodass die Bewegung im relativen Raum stattfinden wird Nun, was bedeutet das? Wenn ich hier die Tür drehe, drehe ich
zuerst
den ganzen Bauplan Selbst wenn ich die
Tür auf eine andere Weise drehen würde, wäre
sie im lokalen
und weltweiten Raum Das heißt, ich drehe sie auf der
Grundlage der Koordinaten und des kartesischen
Kartensystems Das basiert auf
der XY-Z-Achse der Karte und
den Orten, an denen
wir alles sehen können Position und Drehung
wären also relativ zu den
Koordinaten dieses Systems. Aber was wir tun werden, ist , diesen Teil zu
drehen, ich eigentlich
dem
Pfeil zugeordnet Sie nun sicher, dass diese
Dinge nicht übergeordnet sind, und wenn das passiert, haben
sie hier keinen
Pfeil, wir ihn
einfach per Drag-and-Drop zur Wurzel Wir hängen es an. Wir machen
keine neue Wurzel. Also ist alles eine
Einheit für sich. Wenn ich zum Beispiel den Pfeil an
der Tür
befestige und
die Tür verschiebe, dann bewege ich
den Pfeil mit. Wenn ich es abnehme,
kannst du das auch tun. Wenn zum Beispiel etwas angehängt ist, wenn du es per Drag-and-Drop
auf sich selbst ziehst, löst es Wenn ich jetzt die Tür bewege, bleibt
der Pfeil, wie Sie
sehen können, dort Jetzt werde ich diese Tür an
einer relativen Position, einer
relativen Drehung,
bewegen . Anders als bei der Rotation
festgelegter Schauspieler. Wie Sie sehen konnten, war der Dreh- und Angelpunkt, als
ich
den Schauspieler hierher bewegte , das Zentrum,
das Zentrum des Schauspielers. Dagegen möchte ich
die Tür auf der Grundlage
ihres eigenen Drehpunkts auf
der Grundlage der relativen Drehung
im Bauplan bewegen ihres eigenen Drehpunkts auf der Grundlage der relativen Drehung
im Bauplan Aber ich glaube, ich schweife ab. Ich denke wir sollten es in Aktion sehen, und wir würden es für den nächsten Kurs,
die nächste Lektion belassen .
Also
werde ich dich dann sehen. Auf Wiedersehen.
10. Grundlagen für die Spielerinteraktion mit Türen: Willkommen zurück bei
Unreal Engine five,
Blueprint Mastery, Door Systems Zuvor hatten wir die
Einrichtung unseres BP-Flow-Textes abgeschlossen und Code hinzugefügt, der besagt, dass, wenn der überlappende andere Akteur eine Komponente
hat, die
das Tag P hat,
und das ist es, was sich überschneidet,
die Sichtbarkeit aktiviert wird der überlappende andere Akteur eine Komponente
hat, die
das Tag P hat,
und das ist es, was sich überschneidet,
die Sichtbarkeit aktiviert wird. Zu diesem Zweck haben wir unserer
Charakter-Kapselkomponente ein Tag hinzugefügt unserer
Charakter-Kapselkomponente Also in der dritten Person,
der Blueprint dritte Person BP BP Charakter dritter
Person In der Kapselkomponente suchen
wir nach einem Tag. Und wir haben das Tag
P hinzugefügt. Ein weiterer Ort
, an dem Tags hinzugefügt werden könnten, haben wir
besprochen, ist auch Schauspieler. Wir haben es nicht demonstriert, aber wenn wir die Standardwerte der Klasse mit C verwenden
und erneut nach einem Tag suchen, können
wir feststellen, dass der Akteur
einen eigenen Tab für Tags hat, in dem wir auch die
Tags anderer Komponenten sehen können Also lass uns das schließen. Dann haben wir den BP-Flow-Text
für den nächsten Raum
eingerichtet
und mit der
Erstellung der neuen Tür begonnen, bei der es sich den BP-Flow-Text
für den nächsten Raum
eingerichtet
und mit der
Erstellung der neuen Tür begonnen, bei der die BP-Einwegtür handelt In diesem Entwurf
haben wir die Rotation also etwas
versetzt gelassen Ich kann es sehen. Das sollte Null sein. Nicht minus Null, sondern Null. Wir haben die Position ein
wenig geändert weil der Drehpunkt etwas versetzt ist
, und wir haben erklärt, dass wir
die Tür auf der Grundlage des kartesischen Grundrisses bewegen werden , der den lokalen
relativen Raum
und nicht
das kartesische
Weltsystem den lokalen
relativen Raum
und nicht
das und nicht
das Also Rotation und Skalierung der Weltlage. Ja, das ist ein sehr
großer Unterschied. Die Weltposition und
die relative Position, die Weltrotation und
die relative Rotation. Diese sind natürlich sehr skalierbar und es ist
wichtig, zwischen ihnen zu unterscheiden, denn
wenn wir zum Beispiel ,
sagen wir, richtig,
die Tür im Wort Position drehen würden , sagen
wir,
sie wäre
korrekt ,
könnten wir die Tür bewegen Auf diese Weise dreht sie sich
mit dem Akteur richtig und sie öffnet sich auf diese Weise und
nutzt die Nun, das würde bedeuten, dass sich diese Tür nur so
öffnen würde Wenn ich es so machen wollte, würde
es immer noch nicht funktionieren. So würde es nicht funktionieren. Es würde von der
Weltrotation abhängen, die wir festgelegt haben. Es ist also wichtig
, das zu unterscheiden. Also lass uns hierher zurückkehren. Lass uns das
irgendwo in der Mitte platzieren. Es ist in Ordnung. Also, was werden wir tun, um diesen Laden zu
animieren Wir gehen zu
unserer Tutorial-Map. Wir werden von hier aus
die Timeline stehlen. Wir werden es kopieren und
eigentlich nur eine Zeitleiste, und wir werden zu unserem Diagramm
gehen und es hier einfügen. Da wir es kopieren und einfügen, liegen unsere Werte
innerhalb von 0-0 0,5 0-1 Das ist also unser Alpha-Laufwerk. Nun, um die relative
Position im Vergleich zur Welt zu ermitteln, und aus diesem Grund
habe ich das nicht kopiert, was festgelegte Schauspielerrotation ist, und wir setzen ein Ziel als Akteur und
geben eine neue Rotation vor, wir müssen unsere Tür bekommen, das ist Requisite Hintertür eins
und relative Drehung einstellen Es ist ein sehr ähnlicher Knoten. Wie ihr sehen könnt, hat er sich
auch teleportiert,
da dieser nur teleportiert ,
aber das bedeutet, dass er weht,
wenn er sich nicht teleportiert Und wir werden das hier verbinden. Im vorherigen Fall haben wir durch einen Rotator gelarpt Aber in diesem Fall möchte ich einfach mit der rechten Maustaste hier klicken
und den Rotator teilen, und ich werde
einfach über Wasser larpen Also ich werde hier ab 02
larpen,
ich glaube, lass uns Lass es uns drehen.
Ich glaube, es ist -90 Öffnet nach innen -90. Okay. Wir hätten
den Pfeil auch hier sehen können. So originell, also von
Null auf -90 von A nach B. Nun, wie nennen wir das Im anderen Plan nutzten wir einfach die
Kollision hier drüben und riefen die offene Tür Also nochmal, wir hätten die Kollision
nutzen können. Bringen wir es nochmal in eine Kiste damit wir auch bei
Kollisionsbeginn Überlappung herstellen können. Und das könnten wir einfach sagen
, wenn der Charakter P
hat. Dann setzen wir wieder
einen Zweig. Ich habe
den Zweig so schnell ich B ausgewählt und geklickt habe. Das bringt einen Zweig. Also, wenn es wahr ist, dann spiel. Und dann haben wir wieder eine
Kollisionstür. Aber wenn wir
damit kollidieren, sollte sie sich öffnen. Wir wollen das nicht tun.
Wir wollen E drücken. Da wir
also
kein ganzes System für Eingaben erstellen werden , um Bindungen zu ändern, um Bindungen hinzuzufügen
und so, werden
wir nur
E verwenden, um Türen zu öffnen,
was wir tun können, ist
den Player-Controller zu benutzen Also werde ich mir den
Player-Controller holen. Ich werde das gleich erklären
und die Eingabe
vom Player-Controller aktivieren. Das Ziel sollte man selbst sein und der Player-Controller
sollte sich auf dem Player-Controller befinden. Nun, ich bewege das, indem ich Troll
gedrückt habe und
es einfach per Drag-and-Drop an die gewünschte Stelle gezogen habe Wenn ich Alt drücke und klicke,
wird die Verbindung unterbrochen. Wenn ich etwas mit der Steuerung
verbunden
habe, kann ich es woanders verbinden Nun, was ist ein Player-Controller und was ermöglicht die Eingabe? Ein Spieler-Controller in
Unreal Engine ist ein Teil des Spiels, der
Spielereingaben wie
Tastatur-Controller-Aktionen verarbeitet und sie
in Befehle für
den Spielercharakter
oder ein anderes Objekt im Spiel übersetzt in Befehle für
den Spielercharakter oder ein anderes Objekt im Spiel Es fungiert im Grunde genommen als Bindeglied zwischen dem Spieler und dem
Spielwort Normalerweise
würde der Controller nur direkte Eingaben erhalten, aber wir können Eingaben andere Akteure ermöglichen, damit sie auf bestimmte Aktionen
reagieren können. Hier werden
wir zum Beispiel darauf warten, die Aktion E die Tür öffnet. Um das zu erreichen, werden
wir unsere
Kollision hier nutzen. Ich werde die Verbindung
mit dem Drücken und Klicken auf diese Dinge unterbrechen. Eigentlich brauche ich das, also werde ich es ausschneiden und einfügen. Und ich werde das hier
verbinden. Also wenn unser Spieler mit einem Würfel
kollidiert ist, dann werden wir die
Eingabe hier aktivieren, Ops, Fehler Das sollte hier sein. Das Ziel sollte ich selbst sein. ermöglichen diesem Akteur den Zugang zu dieser Tür und der
Spieler-Controller ist der Spieler-Controller. Aber wenn wir dieses Feld verlassen, wollen
wir die Eingabe nicht aktivieren,
um sie grundsätzlich zu deaktivieren. Also werde ich das Feld auswählen. Ich werde auf die Überlappung der
Komponentenenden klicken. Geh schnell klicken. Ich werde das kopieren und einfügen.
Ich werde das hier verbinden. Und ich werde
auch den Controller kopieren und
einfügen und Disable Input aufrufen. Ich werde das Ziel auf
Selbst setzen und den
Player-Controller anschließen. Also, wie
aktivieren wir E, wenn wir
E drücken? Nun, das ist einfach. Wenn ich klicke und Tastatur eintippe, können
wir sehen,
dass es im Grunde
alle Tastaturtasten gibt Wenn ich E rufe, suchen
wir E. Hier ist es. Ich nenne es, es erzeugt von selbst
ein Ereignis. Da wir also die Eingabe aktiviert haben, wird
das etwas bewirken. Demonstriere das für eine Sekunde. Lassen Sie uns hier eine Druckzeichenfolge einfügen. Da steht Hallo. Also
werde ich auf der Karte spielen. Wenn ich
jetzt E drücke, macht das nichts. Wenn ich neben
die Tür gehe und
diese Kollision betrete und E
drücke, heißt es Hallo. Wenn ich gehe, tut es wieder
nichts. Das funktioniert also nur,
solange die Eingabe aktiviert ist. Wenn wir nun andere
Ausführungen mit E hatten, haben
wir die
Override-Parent-Bindung, die alles überschreibt, was
EE in anderen Dingen tut, und auch Eingaben verbraucht Es gibt auch Modifikatoren, wenn man zum
Beispiel
Shift und E gleichzeitig haben möchte, hat das sowieso eine Menge zu bieten Aber das ist im Grunde
ein Eingabeknoten. Um unsere Tür zu animieren, könnten
wir das hier einfach direkt
verbinden Aber dann könnten wir nur
unsere Tür öffnen. Wenn ich so gehe und E drücke, kann
ich es nur öffnen.
Ich kann es nicht schließen. Aber ich denke, das ist ein guter
Haltepunkt für diesen. Ich werde
dich im nächsten sehen. Auf Wiedersehen.
11. Programmierung des Spielerinteraktions-Türsystems: Hallo und willkommen zurück
zu Unreal Engine Five,
Blueprint Mastery, Door Systems
und Zuvor
haben wir ein wenig
über die relativen Rotationen gesprochen und wir haben
unsere Zeitleiste fertiggestellt und die
relative Rotation festgelegt, indem eine Runde auf einem Schwebekörper
verwenden da sich X und
Y Nur die Z- und
Yo-Achse lernen von
Null bis -90, um die
relative Drehung einzustellen Und das wird immer bei dieser Rotation
sein. Wir haben also den Pfeil, der
uns sagt , wo sich die Vorderseite befindet und wohin sich die Tür
öffnet. Wenn wir sie auf diese Weise
öffnen wollten, müssten wir nur diese Einstellung von -90
auf 90 ändern
und sie würde sich dann
in Richtung 90 Grad öffnen Als Nächstes haben wir die Eingabe mit
dem Player-Controller
über diesen Blueprint
aktiviert dem Player-Controller
über diesen Blueprint und sie deaktiviert, wenn wir Überlappungen beginnen
und beenden, wenn unser
Spieler beginnt, und
Überlappungen beenden , indem wir das Component-Tag
P verwenden . Dann haben wir
einen Eingabeknoten demonstriert, die E-Taste, die funktioniert, wenn wir
sie drücken , während wir uns in
der Kollisionsröhre befinden, und sie
öffnet unsere Tür. Fahren wir damit fort, dafür zu sorgen, dass sich
die Tür öffnen und schließen In einigen Lektionen vor
Kurzem haben wir ein wenig
über Aufzählungen gesprochen, dass es vordefinierte Listen gibt, die während der Laufzeit nicht
geändert werden Lass uns eine davon erstellen weil die
, die wir gezeigt haben, bereits in
der Engine von Unreal existiert, und es geht Wir könnten das verwenden, aber
lassen Sie uns es auch für
einige andere Benutzer
etwas fortgeschrittener machen auch für
einige andere Benutzer
etwas fortgeschrittener Wir klicken
und gehen
zu Blueprint und von Blueprint aus wählen
wir Aufzählung Jetzt nennen wir
das E-Door-State, und ich werde es Hier drüben haben wir die Schaltfläche
, die Aufzähler hinzufügt. Wie gesagt, es ist
im Grunde eine Liste, und wie Sie feststellen können, werden sie unterschiedlich benannt, weil
es nicht zweimal
denselben Wenn ich das auf Null setze,
wird ein Fehler angezeigt. Zähler Null, der neue Enumerator
Null wird bereits verwendet. Lass uns öffnen. Schliessen. Eröffnung. Eigentlich
ein P und Schließungen. Jetzt werde ich speichern und
ich werde das schließen. Nun, ich habe diese Liste hier drüben, aber wie füge ich
den Bauplan Ich kann es nicht einfach per
Drag-and-Drop ziehen? Aus dieser Art von Asset kann kein Knoten erstellt
werden. Um das zu tun, gehe
ich zu
unserem Variablen-Stub und drücke die
Plus-Taste hier drüben, um
eine neue Variable zu erstellen , gehe dann
zum Variablentyp und suche nach E D state Ich wünschte, ich hätte getippt und hier ist es in der Kategorie
IAM-Aufzählungen,
es ist unsere Aufzählung es ist unsere Ich werde darauf klicken
und die Variable auch Türstatus nennen Variable Ich habe es gemacht,
indem ich hier geklickt oder Sie können jederzeit F zwei drücken
und es wird umbenannt. Bringen wir das hierher
und erkunden wir einen neuen Knoten. Dieser Knoten ist der Switch-Knoten. bereits erwähnt, muss
der Switch-Knoten einer
bestimmten Aufzählung,
der
Switch-On-Aufzählung,
verbunden werden, da es Switches gibt, die
beispielsweise auf Ganzzahlen
basieren und
auf vielen Dingen basieren Wenn wir switch on eingeben, können
Sie sehen, dass alles, was
ein E enthält, eine Aufzählung ist Viele Niagara-Dinge, aber es gibt viele
Variablen zum Einschalten Am nützlichsten ist eigentlich
der Switch On String. So können wir unsere Hüllen individuell gestalten. Als ob der Fall offen sein könnte. Als ob wir
es mit Schnüren haben könnten, und wir könnten wie offen haben. Und dann würde es davon abhängen was von einer Zeichenfolge eingeht. Auch hier ist eine Zeichenfolge ein variabler
Typ, der
im Grunde genommen Text, beliebigen Text aufnehmen kann . Das kann eine Zahl sein,
es kann ein Buchstabe sein, es kann ein Symbol sein,
alles, was ein Text ist. Es gibt auch eine Textvariable, aber sie ist für eine
andere Art der Verwendung konzipiert, eher für die Lokalisierung von Inhalten Es ist für die Anzeige
verschiedener Arten von Texten optimiert ,
wenn diese für
verschiedene Sprachen übersetzt
und formatiert werden müssen für
verschiedene Sprachen übersetzt
und formatiert Aber für uns ist
das momentan nur ein Beispiel, ist
das momentan nur ein Beispiel weil wir eine Aufzählung
verwenden Wenn ich also E drücke, möchte
ich, dass dies je nach
Zustand der Tür etwas anderes Jetzt müssen wir dafür einen
Standardwert festlegen. Bundesstaat. Der erste Wert, den wir
in unserer Aufzählung haben, ist offen, was wir nicht wollen Wir wollen, dass es geschlossen ist. Also werde ich es sagen, um es zu
schließen und erneut zu kompilieren. Der Standardstatus, wenn
es gedrückt wird, ist also geschlossen. Wenn also die Tür geschlossen ist, spielen
wir von Anfang an. Wenn die Tür geöffnet ist,
fahren wir vom Ende aus rückwärts. Während wir spielen, könnten
wir den
Status hier ändern und sagen, wenn wir es hier
verbinden könnten
und dann hier drüben, und dann werde
ich das duplizieren und es
hier und hier verbinden, und das würde schließen
und das würde sich öffnen. Wenn wir also E drücken und uns im geöffneten Zustand befinden, schließen
wir die Tür und kehren
die Animation Wenn wir auf Schließen sind, öffnen
wir die Tür und spielen die
Animation korrekt ab Aber ich möchte
den Do Once-Knoten demonstrieren. Also, wie gesagt, dieses Update aus der
Timeline läuft ständig. Das bedeutet, dass dies im Grunde
jeden Frame ausführt. jedem Frame wird ausgeführt, was auch immer am Ende der Ausführung
herauskommt. Wenn ich
es hier einmal mache, bedeutet das, dass es diese Ausführung durchführt, und wenn es diesen Punkt erreicht hat, wird
es einfach hier aufhören,
nachdem es es einmal getan hat. Um es noch einmal zu tun, müssten
wir einen Reset durchführen. Und wenn ich hier drüben auf die Schaltfläche „
Start Schließen“ geklickt habe, bedeutet das, dass es
zurückgesetzt werden müsste , bevor es es einmal tut, was auch immer wir
hier draußen haben und abschließen können. Das heißt also, wenn wir
zum Beispiel etwas
ändern wollen, lass mich das streichen. Beim Öffnen wird vom
Ende zum Rückwärts gewechselt und beim Schließen wird von Anfang
an abgespielt. Es öffnet sich also
und es wird geschlossen. Ja. Jetzt füge ich
das hier ein. Wenn ich das ändern möchte,
während die Timeline läuft, müsste
ich das einmal machen, und ich müsste es zurücksetzen wenn die Timeline fertig ist. Also werde ich hier einen
Ausleseknoten platzieren. werde auch
hier einen Ausleseknoten platzieren Ich werde auch
hier einen Ausleseknoten platzieren und ihn hier
verbinden Jetzt kann ich diese
Aufzählung anstelle
dieser verwenden , um einfach festzustellen wo sich die Tür
schließt oder öffnet Also werde ich eine Zeitlinie
wechseln. Und wenn es vorwärts geht, heißt das, dass wir die Tür
öffnen. Wenn es rückwärts ist,
bedeutet das, dass wir die Tür schließen. Und das würde einmal ausgeführt werden, und wenn die Zeitleiste
abgelaufen ist, wird
sie zurückgesetzt, sodass Sie es
beim nächsten Mal wieder tun Lass uns das testen.
Lass uns spielen gehen. Wir nähern uns der
Tür. Wir ziehen hierher. Drücken Sie es, um es zu öffnen,
drücken Sie es, um zu schließen, und nichts passiert. Und der Grund ist ziemlich
einfach, denn am Ende
haben wir nicht angegeben, ob wir mit dem Öffnen oder Schließen
fertig sind. Ich werde also
zu einem Sequenzknoten gehen . Nun, was ist ein Sequenzknoten? Es hört sich so an
, als würde er einige Dinge in einer bestimmten
Reihenfolge ausführen, was auch der Fall ist, aber das bedeutet nicht, dass er wartet, bis eine Zeile fertig ist,
und dann zur nächsten übergeht. Es werden alle
Pins in einer Reihenfolge gleichzeitig ausgeführt, aber sie werden
fast gleichzeitig ausgelöst Also, wenn ich hier eine
Zeichenfolge hätte, auf der Hallo steht. Und ich hatte hier auch eine gedruckte
Zeichenfolge. Das heißt eigentlich,
lass es uns nummerieren. Eins, zwei. Lass uns das ein
bisschen höher bewegen. Ich werde hier einen Aufschub hinlegen. Und ich werde hier
noch eine Schnur anbringen. Nehmen wir an, das sind drei
und das wären vier. Was wir
hier also sehen sollten , wäre eins,
zwei, drei, vier. Aber was passieren wird, ist, dass
wir eins, zwei, vier,
drei sehen werden, weil es bei den Drei hier
eine kleine Verzögerung gibt. Machen wir das für eine Sekunde. Eigentlich war 0,2 vordefiniert
, ich habe
keine genaue Zahl,
aber stellen Sie sich vor, ein Frame benötigt
16 Millisekunden zum Rendern und er führt die gesamten
Berechnungen des Stellen Sie sich vor, wie schnell
jeder Knoten läuft. 0,2 ist also viel Zeit. Lass es uns testen. Lass uns Play drücken und ich muss zur
Tür gehen, um es zu testen. Man sieht eins, zwei, vier, drei. Sie können es wieder im Protokoll sehen, eins, zwei, vier, drei. Das sagt uns, dass
es nicht darauf
wartet , dass eine Ausführung
abgeschlossen ist, um die nächste,
dann eine, dann zwei, dann drei auszuführen . Ich werde das alles löschen , weil es nicht wirklich benötigt wird. Und ich werde
einige Hinrichtungsnadeln entfernen .
Wir brauchen nur zwei. Und lassen Sie uns diesen
mit dem Reset verbinden und diese
Funktionalität hier duplizieren. Lassen Sie uns auch
die Richtung mit
dem Schalter verbinden und vorwärts wechseln, es wird offen sein, und rückwärts, es
wird geschlossen sein Jetzt sollten wir also
sehen können, wie sich die Tür öffnet und schließt. Jep. Es
fehlt jedoch etwas Ein Spieler sollte darüber informiert werden , dass er die Tür öffnen
und schließen kann. Und um ehrlich zu sein, wir sind sehr nah an der Tür, um mit dem Öffnen
zu beginnen. Als ob die Kollision sehr klein
ist. Also wenn ich hier bin, passiert das. Also ich denke, diese beiden Dinge
werden in der nächsten Lektion
behandelt, und dann werde ich
dich sehen. Auf Wiedersehen.
12. Ein einfaches UI-Widget in Unreal Engine entwerfen: Hallo und willkommen zurück zu
Unreal Engine, fünf Blueprint Mastery Door Systems Zuvor waren wir mit dem Öffnen und
Schließen
der Tür fertig Öffnen und
Schließen
der Wir haben einen Staat geschaffen. Wenn wir also E drücken, wechseln
wir basierend auf dem Zustand der Tür und verwenden dabei
die
Aufzählung E für den Türstatus
, also öffnen,
schließen, öffnen und schließen Und wenn die Tür geschlossen ist, kehrt
sie die Zeitlinie um,
oder wenn sie geöffnet ist, sie von Anfang an wiedergegeben Wir haben einem Knoten gezeigt,
dass
wir diese
Aktion einmal ausführen und
sie zurücksetzen, wenn die Timeline abgeschlossen ist wir diese
Aktion einmal ausführen und ,
und wenn
die Timeline beendet ist, setzen
wir den Türstatus auf „Offen“ oder „Geschlossen Wir sagten, dass die
Kollisionsbox hier ein bisschen klein ist Anstatt zu jeder Tür zu
wechseln, gehe
ich einfach hier
rüber und wähle dieses Feld aus, und ich werde
es ein bisschen erweitern. Das scheint in Ordnung zu sein. Vielleicht ein bisschen mehr weil ich nicht möchte, dass das zu viel wird, denn
wenn es zu viel ist, kann
der Spieler die Tür aus größerer
Entfernung als gewünscht
öffnen. Wir könnten das von anderen
Mechanikern überprüfen lassen, aber für den Moment reicht das. komplexere Mechanik
würde also Linienspuren
und Entfernungsmesser
von bestimmten Punkten beinhalten und Entfernungsmesser
von bestimmten Punkten Betrachten wir das als behoben. Als Nächstes sollten
wir eine Möglichkeit haben, dem Spieler
mitzuteilen, dass Sie Reichweite
sind, und die Tür zu öffnen
oder zu schließen. Was wir also verwenden werden, ist ein Widget. Wir werden
ein Blueprint-Widget erstellen , das wir
zu unserem Viewport hinzufügen Wenn sich der Spieler in der Nähe einer Tür
befindet, wird
es
je nach Türstatus entweder geöffnet oder geschlossen Beginnen wir also damit, einen neuen Ordner im Inhaltsordner zu
erstellen ,
den wir UI nennen werden Und ich werde es hellblau farblich
codieren. Großartig. Nun, hier drinnen werde
ich klicken, ich werde nicht zu Blueprints
gehen weil es hier keinen
UI-Blueprint gibt In einer anderen Kategorie gibt eine einzigartige Kategorie
namens Benutzeroberfläche
, in der wir Schrift,
Schiefer, Pinsel und andere Dinge sehen können Schiefer, Pinsel und andere Aber was wir wollen, ist
ein Widget-Blueprint. Wie bei den anderen Blueprints
gibt es viele Klassen, die wir voreinstellen können und aus denen
wir wählen können Aber was wir wollen, ist
das Benutzer-Widget. Wir werden darauf klicken
und es
WG door W JD nennen , ich
denke, das ist der Grund. Und ich werde es öffnen. Jetzt können wir sofort erkennen, dass es sich nicht um eine übliche
Blueprint-Schnittstelle Das ist etwas anderes. Nun, nicht genau, weil
wir uns auf der Registerkarte Designer befinden. Hier drüben gibt es einen Grafik-Tab
, der vertrauter ist als im Vergleich
zum Designer. Wir haben jedoch einen Unterschied zwischen den Ereignissen. Wir müssen vorkonstruieren und
konstruieren, anstatt mit dem Spielen zu beginnen. Wenn wir zum Beispiel hier hingehen,
überschneiden sich Beginn des Spiels
und Beginn des Event-Akteurs,
und das Häkchen ist dasselbe Also, Preconstruct ist so etwas wie das Konstruktionsskript Es ist, als würde man das ausführen, aber nicht genau so. Ich glaube, zu viele Details. Konzentrieren wir uns vorerst auf den
Designer-Tab, und wir werden etwas später
zum Code übergehen. Also, was sehen wir hier? Hier sehen wir im Grunde
eine visuelle Darstellung der Auflösungen und wie unser
Widget auf ihnen aussieht. Es funktioniert
momentan nicht , weil wir
nichts im Widget haben. Als zweites sehen wir den
Detail-Stummel und eine Palette. Eine Palette hat einige
UI-Elemente wie einen Rahmen, wie eine Schaltfläche, wie eine Checkbox Dies sind die
gängigsten, Slider-Text. Es hat auch einige fortgeschrittenere Funktionen
wie die
Eingabe von Textfeldern, Kombinationsfeldern, Listen und Möglichkeiten, die Grafiken
tatsächlich einzurichten Eine davon ist die Leinwand. Was ist eine Leinwand? Kurz gesagt, es ermöglicht uns,
eine Position und einen Maßstab
im Viewport in der gewünschten
Bildschirmgröße festzulegen eine Position und einen Maßstab im Viewport in der gewünschten
Bildschirmgröße Das bedeutet nicht, dass es
unbedingt
den gesamten Bildschirm einnehmen sollte unbedingt
den gesamten Bildschirm einnehmen sollte Es könnte eine Leinwand sein, bei der es
sich um ein kleineres Widget handelt, aber es ist eine Referenz, die auf dem Speicherplatz
basiert. Nehmen wir zum Beispiel an,
wenn ich einen Button hierher bringe, kann
ich sagen, wo er sich befindet
und wie groß er ist. Wenn ich dagegen
die Leinwand nicht hätte und nur einen Knopf
mitbringe, dann gibt es keinen
Bezugspunkt dafür. Das ist nur eine Lösung, die rückgängig gemacht werden muss. Ich werde den Button löschen. Im Grunde ist
das eine Leinwand. Es hat viel mehr Details
und Eigenschaften, aber kurz gesagt, genau
das ist es In unserem Fall werden wir
neben der Leinwand
etwas sehr Einfaches verwenden neben der Leinwand
etwas sehr Einfaches Wir werden keine
Knöpfe oder so etwas benutzen. Wir werden nur etwas Text verwenden. Und um diesem Text
eine bestimmte Form zu geben, verwenden
wir ein horizontales Feld weil wir
zwei Textelemente einfügen möchten, eines könnte die
Taste sein, die gedrückt werden muss, und eines , das den Text mit der
Aufschrift Öffnen oder Schließen sein könnte. Selbst wenn wir sie getrennt haben hilft es, wenn wir
die Schaltfläche ändern,
und natürlich den Text schließen oder
öffnen, während wir jedes Mal
tippen müssen , um
Öffnen, Schließen einzugeben. Jetzt müssen wir nur noch Öffnen oder Schließen
eingeben. Kleiner Unterschied, aber
in größerem Maßstab würde
es einen Unterschied machen. Jetzt, wo ich
die horizontale Box habe
und
sie an einer bestimmten Stelle verankern möchte, habe ich
das hier wie eine Blume, die dem Motor sagt, versuche es irgendwo hier zu platzieren. Anker bieten viel mehr
Funktionalität,
ich könnte zum Beispiel den Anker in der Mitte
setzen und dann der Box einen Offset
geben, dass
sie in der Mitte platziert ist Es gibt die Größe der
Box, wie wir wollen. Im Moment werden wir uns mit
diesen Dingen nicht beschäftigen. Wir werden dafür sorgen, dass
es irgendwie okay aussieht. Das wäre es, lassen Sie uns die Auflösung etwas
korrekter
machen, weil ich
eine zufällige Auflösung
eingegeben hatte , die nicht jedes Mal sehr gültig
ist. Also werde ich es hier platzieren. Es ist die Auflösung. Ich denke, wenn man bedenkt, dass der Spieler irgendwo hier
ist, denke
ich, wenn er eher links in der
Mitte erscheint . Ja, ich denke, der
Ort ist in Ordnung. Und ich werde diesen Anker
bewegen. Ich werde
den Anker auch in
Ecken aufbrechen und ihn
hier drüben platzieren. Ja, das ist in Ordnung. Das ist in Ordnung. Wo
es erscheinen sollte, das Öffnen oder Schließen und die
Schaltfläche, die wir verwenden. Wir haben unser horizontales Feld, in das wir
einige Elemente einfügen müssen. Ich werde einen Text auswählen. Ich werde ihn
dem horizontalen Feld hinzufügen und ich werde einen weiteren
hinzufügen. Der erste Text wäre einfach. Ich würde nur E sagen. Beim zweiten Text sollten wir auch dieses Symbol hier
drüben platzieren und ein Leerzeichen und
ein Leerzeichen vor dem Symbol. Ja,
mit diesem Symbol sieht es besser aus. Nun, als Nächstes sollte
es öffnen oder schließen heißen. Sagen wir also öffnen und schließen. Es sieht okay aus. Wir
können es nicht so lassen, wie es ist, aber lassen Sie uns ein bisschen
damit herumspielen. Nehmen wir an, ich möchte, dass die
Nähe
etwas weiter links ist. Anstatt die Größe
zu ändern, um die Füllung
und die horizontale Ausrichtung
und so weiter
zu ändern, gehen
wir einfach hier runter, das ist die Render-Transformation
und verschieben sie einfach ein
wenig nach links, um 20,
20 scheint in Ordnung zu sein, vielleicht 15 Renderings Das ist die Option,
und das verschiebt sie ein wenig nach links
oder rechts, nach oben und unten Sie können es skalieren, Sie können es
versiegeln, Sie können es winkeln. Das winkelt eigentlich alles , weil ich mir das nicht ausgesucht habe. Das muss 15 ändern. Ja, ich finde, es sieht okay aus. Lass es uns in Aktion sehen. Gehen wir
es tatsächlich zu unserem Viewboard hinzufügen. Ich werde kompilieren und speichern
und dann sehen wir uns unser Widget an. Die Frage ist natürlich, wie bringe ich ein
Widget in mein Viewboard
, das
nur aus ein paar Notizen besteht und schon ist es da Die andere Frage
, die sich stellt, ist, wo füge ich diesen Code ein Wo verwende ich einen Code, der ein Widget ins Spiel
bringt? Nun, wir könnten
es an die Tür hängen. Das bedeutet, dass für jede Tür ein Widget erstellt
werden muss. Kein sehr optimales Verhalten. Ich könnte es auf
den Level-Blueprint setzen. Das bedeutet, dass dieses Widget auf dieser Ebene existieren
würde und nur hier
erstellt werden würde Aber wir werden
eine Ebene haben, zu der wir
übergehen ,
und wir brauchen dieses Widget, um es dort zu halten,
da es sich um beide Ebenen Also könnte ich die Spielinstanz verwenden, die über
das ganze Spiel läuft Aber wenn ich Hauptmenüs hätte, wenn ich andere Levels hätte, würde
ich dieses Widget nicht verwenden, würde das bedeuten, dass
dieses Widget immer in der Instanz
wäre. Der gemeinsame Nenner
, den ich im
Moment zwischen
zwei Levels verwenden kann, ist also , den ich im
Moment zwischen
zwei Levels verwenden kann der Spielmodus, denn dieses Level
wird diesen Spielmodus verwenden, die Übergangsebene
wird diesen Spielmodus verwenden Es macht also Sinn, den Code für dieses Beispiel
jetzt hier einzufügen Also werde ich in den Welteinstellungen zu unserem Spielmodus wechseln unserem Spielmodus wechseln.
Es
ist die dritte Person. Wir könnten es auch hier finden. Also im
Third-Person-Modus, Blueprints
, Third-Person-Spielmodus, wenn es sich so öffnet,
ist das kein Problem Das sind im Grunde genommen die Standardeinstellungen des
Spielmodus-Blueprints Wenn wir zum Beispiel zu
unserer Tür gehen und zu
unseren Klasseneinstellungen gehen, können
wir diese Details hier sehen Da wir den Blueprint also nicht
geöffnet haben,
handelt es sich hier nur um einen Daten-Blueprint handelt es sich hier nur um einen Daten-Blueprint Wir haben
nichts anderes damit gemacht. Es werden nur die
Standardwerte angezeigt. Wir können hier drüben klicken, kompletten
Blueprint-Editor
öffnen und heute können wir das
Konstruktionsskript und den Viewport sehen
, der im Spielmodus
sehr spezifische Verwendungszwecke hat und uns
nicht weiter beschäftigen wird Und was wir brauchen, ist das Event-Diagramm. Und was wir tun werden, ist
das Event Begin Play, das läuft, wenn
das Spiel beginnt, und wir werden
ein Widget erstellen. Für die Klasse wählen
wir nun die Widget-Tür aus
und für den Spieler, der das Spiel besitzt, besorgen wir uns den
Spieler-Controller Wir könnten zum Beispiel verschiedene Widgets verwenden,
die einem Polizisten vor Ort gehören , und ihr Besitzer würde sich
je nach Spielerindex ändern Wenn ich es bei e belasse, können
wir das Widget nicht sehen
, weil wir es gerade erstellt haben. Wir haben gerade eine
Variable daraus gemacht. Unserer Meinung nach wurde es nicht
genannt. Dazu müssen wir etwas zum
Viewpot hinzufügen , damit
unser Widget sichtbar wird Also kompiliere und
speichere ich gehe zu Tutorial
Lock und drücke Play Und hier können wir unser Widget sehen. Im Grunde
prüfen wir, ob es sich in einer guten Position befindet, wenn wir die Tür öffnen und schließen wollen
. Ich denke, wenn es
genau dort knallt, ist es in Ordnung. Du kannst es
irgendwo anders platzieren, wo du willst. Und ich denke, das ist
es für diesen. Ich werde Sie beim
nächsten Mal sehen, dass wir die Mechanik zum
Ein- und Ausblenden des Widgets
implementieren werden Mechanik zum
Ein- und Ausblenden des Widgets
implementieren Auf Wiedersehen.
13. Programmierung UI-Widget-Sichtbarkeit basierend auf Spieleraktionen: Hallo und willkommen zurück
zu Unreal Engine five,
Blueprint Mastery, Door Systems
und Zuvor hatten wir den Designteil unseres Widgets
fertiggestellt
, den ich Also nein, ich habe das nicht hier. Wir haben einen Widget-Blueprint erstellt. Wir haben es WG Door genannt. Wir haben unserer Hierarchie ein Canvas-Panel
hinzugefügt. Nun, das ist ein Punkt
, den ich nicht gut erklärt habe. Hier drüben haben wir
die Hierarchie, die uns zeigt, welche Elemente
sich im Widget befinden. Es ist wie die
Registerkarte „Komponenten “ in Blueprints,
aber für Widgets, und die Hierarchie hier sagt
uns, welches Widget an erster Stelle steht, an
zweiter Stelle, welches im Grunde wem gehört Außerdem habe ich das horizontale Feld nicht
viel erklärt. Ich denke, es ist irgendwie
selbsterklärend. Es ermöglicht die horizontale Anordnung von Widgets. Wenn wir den Mauszeiger darüber bewegen, können Widgets horizontal
in einem Fluss angeordnet werden, wenn wir etwas verdecken, wenn wir etwas auswählen
und mit der Maus
darauf zeigen, erhalten
wir einen Tooltip dazu Komm schon, mach das Ding. Ich will einfach nicht. Also ja, im Grunde ist
es
in der Palette einfacher, die Tooltips hier zu sehen. Es muss auf dem Symbol selbst sein. Wir haben das Widget erstellt. Wir haben es zu unserem
Viewport hinzugefügt, indem wir es im Spielmodus
erstellt und
zum Viewport hinzugefügt Zu Beginn des Events haben wir das Widget erstellt
und
es dann dem Viewpod hinzugefügt Jetzt haben wir es
im Spielmodus gehostet, weil es von allen Levels
gemeinsam genutzt werden soll, und wir möchten, dass dieses Widget
in jedem Level vorhanden Aber wir wollen das Widget nicht zum Viewport hinzufügen ,
wenn das Spiel beginnt Wir wollen es zum
Viewport hinzufügen, wenn wir es aufrufen. Wir werden dies in eine Variable
umwandeln, die unsere Widget-Referenz ist Wenn wir etwas erstellen,
erhalten wir einen Rückgabewert, eine Referenz auf
das ist
, was wir erstellt haben. Und ich werde
das WG Dot Rep nennen. Wie Sie sehen können, ist das Thema
mit den Referenzen
beim Programmieren
ein bisschen wichtig Referenzen aufrufen, Möglichkeiten haben, etwas
zu verweisen,
so wie wir es
im Level-Blueprint hatten , dass
wir auf
die Triggerboxen verwiesen haben, wenn wir den Verweis auf
die andere Komponente haben, die wir fragen, ob sie ein Tag hat Referenzen sind eine Sache. Referenzen sind,
wenn man so will, das
A und O der
objektorientierten Programmierung. Jetzt haben wir eine
Referenz des Widgets gespeichert. Also werden wir ein benutzerdefiniertes Ereignis
erstellen. Ich werde das Widget nennen. Ich werde es mit
dem Out-Viewport verbinden, und ich werde
die Referenz
hierher bringen und
sie mit dem Ziel verbinden Denn wenn wir das Viewport einfach
verlassen würden, würde
es wahrscheinlich
einen Fehler auslösen oder nichts tun weil es kein Ziel gäbe,
weil Ziel selbst einen
Spielmodus bedeutet Es ist kein Widget, also
kann es nicht zum Viewport hinzugefügt werden. Aber die Widget-Referenz in Cam wurde dem Viewport hinzugefügt und
das wird korrekt funktionieren Als Nächstes erstellen
wir ein weiteres benutzerdefiniertes Ereignis und
nennen dieses Widget zum Entfernen von Punkten Ich ziehe ein Kabel aus
der Widget-Referenz und
sage „Aus übergeordnetem Element entfernen“. diese Weise entfernen wir Widgets aus dem Viewport,
eine der Möglichkeiten Lassen Sie uns also
diese beiden Funktionen nutzen. Gehen wir zu unserer Einbahntür. Gehen wir zum Event-Graph. Gehen wir zu unserer Kollision. Wenn wir also kollidieren
und beginnen, uns zu überlappen, sollten
wir unser Widget anzeigen Um das aufzurufen, benötige ich
Zugriff auf den Spielmodus, also benötige ich einen Verweis
auf den Spielmodus Zum Glück hat Unreal Engine eine nette Möglichkeit, den Spielmodus zu bekommen Es heißt G-Spielmodus. Dies gibt jedoch
einen generischen Wert zurück. Wir haben einen bestimmten Spielmodus. Wir haben den
Third-Person-Spielmodus oder wir haben den Doors-Spielmodus oder wir können jede
Art von Spielmodi haben. Dies gibt nur eine
generische
Objektreferenz für den
Spielmodus zurück, die auf dem Spielmodus basiert. Um zu überprüfen, ob es unser Spielmodus ist, müssen
wir casten. Also werden wir auf Game Out aus der
dritten Person casten. Wie gesagt, die Besetzung
fragt etwas Bist du dieses Ding,
ist dieses Objekt im Grunde ein Objekt dieser
Art von Objekt? Also werde ich in einen reinen Cast
umwandeln
, der nur
den Ausführungsstift entfernt und es ein
bisschen einfacher macht. Wenn wir erfolgreich sind und unser
Spielmodus der Spielmodus ist,
weil der Erfolg so ist,
als es unrein gecastet wurde, war
es wie Cast
Fail, Cast Jetzt haben wir einen BolLont, der
uns sagt, ob es erfolgreich war oder nicht. Wenn es uns also gelungen ist, können wir
einige Informationen einholen Wir können einige Funktionen und
Ereignisse aus dem
Third-Person-Spielmodus abrufen . Das Ereignis, das wir
gerade wollen, ist das Hinzufügen des Widgets. Hier drüben, und ich kann einfach ein weiteres Kabel
ziehen und sagen: Entferne das Punkt-Widget und
verbinde es hier drüben. Ich kompiliere und
speichere und lass es uns testen. Ich gehe zur ersten Tür, sie öffnet sich, zweite Tür, wir haben ein Widget und
es wird entfernt. Nett. Aber die Sache ist, dass
unser Widget nicht dem entspricht, was
es sagen sollte. Zum Beispiel sollte
es im Moment offen und im Moment geschlossen
heißen, was richtig ist, aber es ist nur zu 50% richtig. Es ist
nicht immer richtig. Also lass uns das reparieren. Und um das zu tun, gehen
wir unseren Third-Person-Spielmodus und wir werden eine Funktion
erstellen. Was ist also eine Funktion? Im Grunde ist es eine Reihe
von Aktionen oder Logik, wenn Sie so wollen, die wiederverwendbar sind. Es kann mehrfach verwendet und
viele
Male gleichzeitig
aufgerufen werden , und es führt jedes Mal bestimmte
Aufgaben aus. Wie bei einem Ereignis, wenn
es erneut aufgerufen wird, sind
sie in der Regel
der neue Aufruf, wohingegen Funktionen einfach wieder ausgeführt
werden. Ein
praktisches Beispiel dafür
wären Kollisionen mit mehreren Überschneidungen, wie
wenn Sie zum Beispiel
viele Kugeln auf dasselbe
Bruchteil einer Sekunde treffen wenn Sie zum Beispiel
viele Kugeln auf dasselbe
Bruchteil einer Sekunde Das wird in der Reihenfolge angezeigt, welche zuerst getroffen wurde und
welche als zweites, usw.,
wenn es Funktionen wären, würden
sie alle sofort würden
sie alle Sie werden gestapelt und
sofort ausgeführt. Im Grunde
hätten wir also ein Ereignis erstellen können, aber für dieses Szenario haben wir eine Funktion erstellt Eine weitere Sache mit
Funktionen ist, dass
sie natürlich Eingaben haben, wie wir in ihren Details sehen
können, aber sie können auch Ausgaben haben. Wenn ich zum Beispiel wissen
wollte, ob es erfolgreich war oder nicht, könnte
ich eine Ausgabe von einem
Bollian haben, und wie Sie sehen können, hat
es einen Rückkehrknoten erstellt Und dieser boolesche Wert könnte wahr oder falsch
sein,
zum Beispiel, ob etwas, das ich nicht gehört habe, erfolgreich
war oder nicht Ich werde das löschen
und ich werde
den Rücksendeschein löschen , weil
wir ihn nicht benötigen Wir werden
vielleicht noch ein Detail
über Funktionen kompilieren und speichern vielleicht noch ein Detail und
das war's. Funktionen, sie können keine
Zeitdinge in sich haben. Sie können
extern Dinge der Zeit nennen, aber sie können hier keine Verzögerung haben
. Wir können hier keinen Zeitplan haben, können keine Timer haben Zeit ist also etwas, das
nicht in einer Funktion sein kann. Nun zu unserer Funktion,
was sollten wir tun? Nennen wir das
Update, Widget, Text. Und wir benötigen eine
neue Eingabe vom Typ Zeichenfolge. Ich nenne
es mit Jet-Text. Nun, was das bewirken wird, wir werden unsere
Widget D-Referenz abrufen. Ich werde es mir hier holen
und ich werde Text bekommen. Gehen wir eigentlich zu unserem Widget. Gehen wir zu unserem Designer. Jetzt wollen wir
diesen Text hier ändern, den Text, der „Schließen“ sagt. Wenn wir ihn über den Details sehen,
gibt es einen Namen, den wir eingeben können, oder
wir können ihn tatsächlich hier platzieren, aber ich werde mich
dafür entscheiden, hier zu sein. Nennen wir das
Widget-Text. Mein Widget-Text. Jetzt befindet sich daneben eine Schaltfläche
namens Ist variabel. Wenn es nicht angeklickt
wird, bedeutet das,
dass es statisch ist Es kann nicht geändert werden Wenn ich
dagegen auf variabel klicke, kann
es durch Code geändert werden Es gibt viele Gründe dafür dies
hinter den Kulissen passiert, aber lassen Sie uns nicht
zu sehr ins Detail gehen. Gehen wir im
Funktions-Widget-Update wieder zu
unserem Spielmodus, nicht zum Ereignisdiagramm in nicht zum Ereignisdiagramm in unserem Spielmodus, und wir werden meinen Widget-Text
abrufen. Und von hier aus werde
ich den Text so einstellen, wie wir es bei
den Text-Renderings
im BP-Flow-Text getan haben den Text-Renderings
im BP-Flow-Text Ich verbinde das mit, das ist ein Text Wir können diese
Zeichenfolge in einen Text ändern. Und kann direkt eine Verbindung herstellen. Wenn ich die Zeichenfolge stehen lassen würde,
wäre das egal. Ich würde
es automatisch in eine Textzeichenfolge übersetzen. Aber warum nicht diesen Teil
etwas klarer machen, und ich werde ihn
einfach in
Text ändern und ihn hier verbinden. Wir haben also eine Funktion
, die unseren Text ändert. Ich muss das Widget kompilieren , weil wir diese
beiden Variablen ändern. Ich musste kompiliert werden, es ist auch gespeichert und
jetzt ist es in Ordnung. Ich denke, das ist ein
netter Zwischenstopp. Wir werden
im nächsten Schritt mit der
Implementierung dieser neuen Funktion fortfahren . Vorerst auf Wiedersehen.
14. UI-Widgets mit externen Blueprint-Inputs aktualisieren: Hallo und willkommen
zurück bei Unreal
NginFB Blueprint
Mastery Door Systems und den interaktiven Portalen. Zuvor haben wir
die Funktion hinzugefügt, das hinzuzufügen
oder das Tür-Widget zu entfernen,
je nachdem, ob wir mit der Türkollision kollidieren Dazu haben wir
zwei benutzerdefinierte Ereignisse erstellt
und das at viewpod verwendet, aus dem übergeordneten Element
entfernt und sie
mit der Referenz des Widgets verknüpft der Referenz des ,
das wir
in der Startphase gespeichert haben. Dann gingen wir zu unserer
BP-Einwegtür und bei den Ereignissen der Kollision am Anfang und
am Ende der Kollision fügten
wir das Ador-Widget hinzu und entfernten
die Tür entsprechend Indem wir den Spielmodus erhielten und unseren
Third-Person-Spielmodus wechselten. Als Nächstes haben wir
im Third-Person-Spielmodus eine Funktion erstellt , die wir „Widget-Text
aktualisieren“ nannten. Diese Funktion hatte nun
eine Eingabe von Widget-Text, und sie legt den Text anhand der Referenz
des Tür-Widgets fest, und wir haben meinen
Widget-Text daraus erhalten. Lassen Sie uns nun mit
der Erstellung des Systems fortfahren , das den Widget-Text
aktualisiert. Gehen wir dazu zu unserer
Einbahntür und erstellen wir eine weitere Funktion
, die wir
erneut als Update-Widget aufrufen . Text. In dieser Funktion
erhalten wir unseren Spielmodus, und wir können den Spielmodus und den
Spielmodus ausführen,
und wir könnten zwei
Third-Person-Spielmodi casten und
in den reinen Modus umwandeln. Aber was wir tun können, weil wir es
in diesem Bauplan so oft
verwenden, können
wir zu unserem Spielstart übergehen Wir können diesen Code von hier kopieren. Eigentlich
schneide ich diesen Code einfach von hier aus, fange
an zu spielen und füge ihn hier ein. Diesmal werde ich ihn
als Casting-Knoten verbinden. Und ich werde
das zu einer Variablen heraufstufen. Und wie Sie
sehen können, hat Area es
bereits als BP Third Person
Game Old bezeichnet , sehr praktisch. Ich werde kompilieren und es
heißt, dass es nicht kompilieren kann , weil das Ziel dieser beiden Funktionen
unterbrochen wurde Das habe ich vorhin auch gemeint , dass sich das Ziel darauf bezieht, wer das tun
soll Und selbst hat im Moment keine
Ador-Widget-Funktion. Selbst wenn dies der Fall wäre,
wäre
das
Ziel , das vorgegebene Ziel dieser Funktion, die dritte Person von BP. Selbst wenn ich ein
benutzerdefiniertes Event erstelle, füge ich den Jet hinzu. Sie können sehen, dass es
immer noch zu einem Fehler kommt, weil das Ziel P ist. Wir haben
das aus dem Spielmodus heraus aufgerufen. Um den Fehler zu beheben, bringen
wir einfach unsere Referenz
aus unseren Variablen
hierher und wir werden das hier
verbinden und das hier
verbinden. Und ich denke, diese
Zeichenkettenvariable wird nirgends verwendet. Wir können immer Referenzen finden. Mein Name. Nein, es wird
nirgends verwendet, also werde ich es löschen und erneut kompilieren, und jetzt ist der Fehler weg. Kehren wir zu unserem
Widget-Update-Widget-Text zurück. Jetzt brauchen
wir das nicht. Wir können
nur unsere Spielmodus-Referenz mitbringen nur unsere Spielmodus-Referenz weil darin
im Grunde der Spielmodus,
diese Instanz des Spielmodus, gespeichert wird, und wir werden den starren Text
aktualisieren. Jetzt haben wir unsere
Funktion hier, wir müssen angeben, welche Art von Text sie erscheinen wird Um das zu tun, werden
wir den Türstatus abrufen Wir werden den
Dor-Status einschalten, weil das die
Steuerung ist , und wir können
uns tatsächlich einen anderen Knoten anzeigen lassen. Das wäre viel besser. Lass uns das hier verbinden. Es gibt einen anderen Knoten, an dem wir Text erstellen und
dann den Text dort hinzufügen
und diesen Text festlegen
könnten . Wir könnten im Grunde eine
Zeichenfolge oder diesmal einen Text machen. Und wir könnten eine Reihe von
Setter haben, die auf dem Switch basieren. Also könnten wir diesen für
diesen Fall haben , diesen
für diesen Fall, diesen für diesen Fall, und dann Text hier drüben
verbinden Nun, die andere Sache, die wir tun können, ist
ein weiterer Knoten
, den wir für
bestimmte Variablen verwenden können , der als Select bezeichnet wird. Ausgewählte Knoten haben
einen Platzhalterindex, was bedeutet, dass sie zu
bestimmten Variablentypen werden können Wenn ich also hier drücke, können wir sehen, zu welchen
Variablentypen es werden kann Und wie Sie sehen können, kann daraus eine Aufzählung
werden. Das bedeutet also, dass ich das hier
verbinden kann, und das gibt mir im Grunde die Wahl für jedes Element für jeden
Enumerator Also, wenn der Enumerator
geöffnet ist, gibt er mir diese Wahl. Wenn er geschlossen ist,
gibt er mir diese Wahl. Lassen Sie uns nun herausfinden, was
wir für jeden Fall benötigen. Für „Öffnen“ brauchen wir „Schließen“. Für Schließen brauchen wir Öffnen
und für die anderen beiden brauchen
wir nichts, weil wir diesem Zeitpunkt
nicht mit
der Tür interagieren. Also werden wir es kompilieren, speichern und dann testen wir es. Eigentlich nein, wir müssen es
zuerst codieren, denn nur es zu erstellen
bedeutet nicht, dass wir es codieren. Wann sollte das Widget aktualisiert werden? Natürlich bevor wir es zum Viewport
hinzufügen. Also werde ich einfach
aus den Funktionen springen, ich werde es hierher ziehen
und dort ablegen und es hier verbinden Ich kopiere es, füge es ein
und verbinde es auch unten. Und das Widget sollte
auch dann aktualisiert werden, naja, die nächsten Punkte, die wir
aktualisieren sollten ,
sind immer dann, wenn wir den Status ändern, da unser Status das Widget
beeinflusst, was das Widget sagen
soll. Also ziehe ich es hierher
und lege es dort ab und ich werde
beide Kabel hier anschließen. Und wie Sie sehen können, kann ich zwei Ausführungen
mit einem Knoten verbinden Jetzt werde ich dasselbe tun. Ich werde das kopieren und hier in diese beiden Hinrichtungen Eines wäre das Update
und das andere
wäre das Ende. Lass es uns jetzt testen. Kein Drücken von Play öffnet sich. Wir haben das E da drüben, das macht nicht genau das,
was wir wollen. Es verschwindet nicht. Aber, ähm ja, lass uns das reparieren. Also, was wir
tun werden, ist ziemlich einfach. Anstatt das Widget
beim Timeline-Update zu aktualisieren, werden
wir das Widget entfernen Also werde ich
diesen Code hier drüben kopieren, BP Third-Person-Spielmodus, die Tür
entfernen und ihn am Ende
der Timeline
des Timeline-Updates einfügen der Timeline
des Timeline-Updates Als Nächstes müssen wir diesen Widget-Text nach der Aktualisierung auch zum View-Portagym
von Cypress Paste hinzufügen zum View-Portagym
von Cypress Ich drücke auf Kopieren und füge das hier ein und verbinde es
hier Und das sollte
funktionieren. Lass uns testen gehen. Und es funktioniert. Fantastisch. Ich denke,
das ist es für diesen. Ich sehe dich
das nächste Mal. Auf Wiedersehen.
15. Programmierung eines Zweiweg-Schwingtürsystems: Hallo und willkommen zurück
zu Unreal Engine, fünf Blueprint Mastery Türsystemen Zuvor waren wir mit
unserem Widget-System fertig, das „
Schließen“ oder „Öffnen“ anzeigt ,
je nachdem , ob sich unsere Tür öffnen oder schließen
muss Also haben wir diese Funktion erstellt, Widget-Text in unserer
VP-Einwegtür
aktualisiert , die die Funktion
aufruft, die wir
in der vorherigen Lektion erstellt haben, den Widget-Text aus dem Spielmodus
aktualisiert und
den Text
entsprechend dem Türstatus gefüllt . Jetzt. Da wir dieses lästige E
hier auf dem Widget haben, wir am Ende Code hinzugefügt das
Tür-Widget
zu entfernen, während sich die Tür öffnet oder schließt, und es
auch hinzuzufügen, wenn die
Tür geöffnet oder geschlossen ist, wenn die Animation in der Timeline
beendet Gehen wir jetzt also weiter
zur nächsten Tür. Also werde ich
die dritte Ebene
sichtbar machen und hier drüben gehen. Diese Tür sollte sich
gegenüber
der Stelle öffnen , auf die der Spieler schaut. Um das zu tun, werden
wir
unsere aktuelle Tür duplizieren. Aber lass uns auch speichern. Du hast dieses kleine
Sternchen hier gesehen, dieses weiße Sternchen.
Lass mich eine Änderung vornehmen Wo ist die Tür,
hier ist die Tür. Du gehst hier hin. Das Sternchen erscheint also. Sie sehen, dass dieses Sternchen hier
drüben bedeutet, dass sich
etwas
im Blueprint geändert und dass es gespeichert werden muss, dass dieses Asset nicht gespeichert wurde Das bedeutet dieses
Sternchen. Ich werde erneut speichern, Strg
Shift S, um alles zu speichern, und ich werde diesen Blueprint
duplizieren Ich nenne es BP und widersetze es von Spieler D. Schreibweise mag
korrekt sein, vielleicht auch nicht Wir werden es nie erfahren. Also werde ich das öffnen
und das ist derselbe Plan Dies ist eine duplizierte Version
des Entwurfs, den wir hatten. Aber bevor wir anfangen,
einige Änderungen vorzunehmen, die nicht viel sein werden Gehen wir zur Tutorial-Map und bringen einen neuen Float-Text mit. Und lassen Sie uns
unser Punktlicht auswählen. Lass es uns
hierher bringen, hierher. Ich finde, hier ist alles in Ordnung. Außerdem wird die Kollision der
Kollisionsbox immer größer. Das ist in Ordnung. Und zu
guter Letzt der Text. Aber lassen Sie uns zuerst den Text füllen. Lassen Sie uns den Blueprint auswählen. Gehen wir zu meinem Textwert. Diese Tür öffnet sich
gegenüber dem Spieler. Ordnung. Und jetzt wählen
wir den Text aus. Ich kann den Text nicht sehen. Das liegt daran, dass es unsichtbar ist. Ja, anstatt
das jedes Mal zu tun, ändern
wir einfach eine Sache am Entwurf. Lass uns den Plan
öffnen Lassen
Sie uns zu Beginn der Wiedergabe den Text übernehmen und die Sichtbarkeit auf False
setzen Und lass uns zu meinem
Text-Rendern gehen und Sichtbarkeit herstellen. Stimmt. Lassen Sie uns kompilieren und wieder auf unserer Karte
speichern. Jetzt können wir den Text sehen, und wenn das Spiel beginnt,
wird er verschwinden. Jetzt bring ich das her. Ich gehe zurück
zum Bauplan,
gehe zum
Text, um ihn zu formatieren Lassen Sie uns die Größe
hier ein wenig erhöhen. Also Shift Enter hier. Shift Enter hier, und
Tada ist wieder ausgewählt. Ja, das ist in Ordnung. Vielleicht
ein bisschen kleiner. Nun, da das zu einem Segment
skaliert, quasi zu einem Fangpunkt, kann
ich das von hier
oben aus deaktivieren und einfach
das tun und es wieder aktivieren, um die Fangpunkte zu
aktivieren Bringen wir also auch unsere neue
Tür hierher. Also gegenüber Spieler,
geh und bring es her. Auf welche Seite soll ich
es drehen oder auf diese,
auf diese Richtung. Behalten wir den gleichen Bot. Ja, das sieht okay aus. Ja. Ja, es ist in Ordnung.
Gehen wir also zur Funktionalität. Es wird sich nicht viel ändern. Lass uns die Tür finden. Wir werden
die anderen Baupläne schließen , die wir nicht mehr benötigen. Das brauche ich nicht.
Speichere den Spielmodus. Ja, nur die gegenüberliegende Tür, und das wird es sein. Nun, was wir ändern wollen, bezieht
sich hauptsächlich auf die Timeline, ob dieser Winkel -90
oder 90 ist , je nachdem, wo
der Spieler steht Wir könnten mehrere
Kollisionen haben und
von jeder Seite aus überprüfen , ob der Spieler auf dieser oder
jener Seite befindet Aber es gibt einen anderen, schnelleren und
einfacheren Weg , dies zu tun Wir werden eine Funktion
zur Berechnung der Richtung erstellen. Und in dieser Funktion werden
wir den Standort
unserer Schauspieler ermitteln, also ermitteln wir den Standort. Und wir brauchen
auch den Standort des Spielers. Um den Spieler
in dieses Szenario zu bringen, können
wir den Spieler einfach
nach Hause bringen und von dort aus können
wir das auch einfach duplizieren und uns hier verbinden. Wir haben also zwei Standorte, den Spieler und den Ort
an der Tür. Jetzt hat die Tür eine Vorderseite
, weil wir den Pfeil haben. Und wenn wir den Spieler öffnen, hat
der Spieler auch eine Vorderseite. Gehen wir nun zurück zu
unserer Berechnungsrichtung. Von diesen beiden Orten müssen
wir die Richtung
von der Tür zum Spieler herausfinden . Ist es hinter mir oder ist
es vor mir? Um also aus zwei
Richtungen einen eindeutigen
Richtungsvektor zu erhalten. Dies führt zu einem Vektorergebnis, was bedeutet, dass
je nachdem, wo ich
gerade stehe, Y und X und Z minus oder plus sein können. Lassen Sie uns das demonstrieren. Ich
werde eine Zeichenfolge drucken. Ich werde das
hier verbinden und lass uns spielen gehen. Lass uns das hier hinstellen. Lass uns jetzt durch die
Tür gehen. Dieser öffnet sich. Ich habe vergessen,
diese Funktion anzuschließen. Lassen Sie uns es tatsächlich verbinden,
indem wir E drücken. Also werde ich die
Richtung berechnen. Hier. Wenn ich also drücke, siehst
du, dass alle Variablen
außer Z minus sind. Aber wenn ich hierher gehe, sind
sie wieder minus. Nun, jetzt ist das X positiv, weil ich
auf der anderen Seite bin, wenn wir die Mittelpunkte
berücksichtigen, genau hier ist das X Plus, während es hier minus ist. Ich kann also nicht wirklich sagen
, was es sein sollte. Wenn ich von der anderen Seite gehe, wird sich auch
das Y ändern. Wenn ich diesen Laden hier drüben hätte, würde das Y minus bekommen, das Y würde hier plus bekommen. Damit ist der Job also wirklich nicht
beendet. Was wir tun müssen, ist ein Punktprodukt zu
kreieren. Und was ein Produkt zurückgibt. Das
erklärt nicht wirklich so viel. Was
ist also im Grunde ein Punktprodukt? Es ist eine Möglichkeit,
zwei Richtungen zu vergleichen. Wir haben hier die Richtung
unseres Schauspielers, und die nächste Richtung
wäre der Vorwärtsvektor. Vorwärtsvektor ermitteln. Hier ist es. Nicht dieser. Tut mir leid. Der Schauspieler vorwärts, hier ist er, bringt den Schauspieler vorwärts. Also im Grunde ist
das die Vorderseite der Tür. Wir haben also diese
Richtung und wir haben die Richtung von der
Tür zum Spieler. Wir haben also diese Richtung
und die Vorderseite der Tür. Basierend auf diesen
Richtungen, dem Punktprodukt, sagt uns
das Punktprodukt, wie stark
diese beiden Vektoren, diese beiden Pfeile,
in dieselbe Richtung zeigen. Wenn das Punktprodukt eine
hohe positive Zahl ist, zeigen
sie in
eine ähnliche Richtung. Wenn es sich um eine negative Zahl handelt, zeigen
sie in die
entgegengesetzte Richtung. Und wenn es Null ist, zeigen
sie im rechten Winkel
zueinander. Im Grunde
berechnet es den Kosinus
des Winkels zwischen ihnen Genau das macht das Punktprodukt, und es gibt uns eine Gleitkommazahl als negative oder
positive Rendite Und das
werden wir verwenden, um zu überprüfen, ob es größer oder gleich Null ist. Und wenn es größer
oder gleich Null ist, werden
wir
eine neue Variable erstellen. Ich werde das als offenen Winkel bezeichnen. Wir werden
es in einen Float umwandeln. Wir werden einen
Setter herbringen. Und wieder machen wir
einen Select Node, wählen Float. Nun seht ihr, wenn
ich das Kabel ziehe, wähle ich, ich erhalte diesen
, wähle Float und ich erhalte diesen einen Select. Dieser hat standardmäßig die weiße Karte, während der andere standardmäßig
ein Goldbarren hat Also werde ich das hier
verbinden. Ich werde
das Ergebnis
unseres größeren Fehlers gleich
Null mit unserem Punktprodukt verbinden . Und das wäre,
ich glaube, A wäre
-90 und B wäre
90 ° vor der Tür, wenn die
Tür positiv ist, also sie sich gegenüber öffnet Ja, ich glaube, das ist es. Nun, wo wir diese
berechnete Richtung verbinden werden. Wenn wir es hier mit
dem
Anfang verbinden ,
werden wir das nicht tun. Ich werde jedes Mal die
Richtung berechnen. Wenn ich also gegenüber
der Tür gehe, um sie zu schließen, wird
sie ausbrechen. Ich werde die Richtung ändern. Aber wenn ich es erst verbinde,
wenn die Tür geschlossen ist, schließen
wir es an, um
von Anfang an zu spielen, und
bringen den Winkel natürlich hierher. Auf diese Weise wird nur
berechnet, wann
die Tür geschlossen ist, und wenn es
vom Öffnen zum Schließen wechselt, wird derselbe Winkel verwendet
, den es zuvor berechnet hat. Jetzt lass es uns testen. Wir könnten den
Spieler zum Start mitnehmen. Okay, es öffnet sich
auf diese Weise und schließt korrekt. Es öffnet sich auf diese Weise,
es schließt korrekt. Jetzt haben wir also eine Tür
, die sich öffnet und schließt. Okay, ich gehe
es durch die Spielphysik. Jetzt haben wir eine Tür
, die sich öffnet und schließt, so wie der Spieler
hinschaut. Okay, ich denke, das
ist es für diesen. Wir fahren mit
der nächsten Doppeltür fort. In der nächsten Lektion wird es dasselbe sein, aber
doppelt so viel. Vorerst auf Wiedersehen.
16. Doppeltüren mit Bauplänen erstellen und synchronisieren: Hallo und willkommen zurück zu den Portalen Unreal Engine Five
Blueprint Mastery, Door Systems Zuvor waren wir
mit unserer Doppeltür fertig,
quasi das Gegenteil davon, dass der Spieler die Tür
öffnet Im Grunde
haben wir
eine berechnete
Richtungsfunktion erstellt, mit der wir auf der Grundlage der Position des Schauspielers
und der Position des Spielers eine Richtung der Einheit ermittelt haben. Wir haben das Punktprodukt
mit unserem Vorwärtsvektor des Schauspielers berechnet und verglichen, ob
es größer oder gleich Null ist, um
den neuen Winkel zu berechnen. Dann haben wir diesen neuen Winkel zu
unserem LARP in unserer
Timeline als Ziel hinzugefügt unserem LARP in unserer
Timeline als Ziel Jetzt machen wir die gleichen
vier an der Doppeltür. Lassen Sie uns die vierte
Ebene sichtbar machen. Und lassen Sie uns tatsächlich mitbringen, ich kann diesen mitbringen. Ja, den kann ich mitbringen.
Bringen wir es her. Lasst uns das Licht
diesmal so bewegen. Und auch der Text. Lassen Sie uns den Text umbenennen. Wählen wir den Blueprint aus.
Ich kann nichts sehen Ich habe den Blueprint nicht ausgewählt.
Ich habe das Stammverzeichnis ausgewählt Das ist also ein Doppelgesetz. Nein. Lass es uns ein bisschen bewegen. Wir müssen auch die
Enter-Sache machen. Wir sind eine Variable. Oh,
ich habe mich vor mir versteckt. Also ich denke, das ist in Ordnung. Und lassen Sie uns unseren neuen
Türentwurf für Türen erstellen, und wir werden das
Gegenteil von Player duplizieren Nennen wir das jetzt BPW-Tür. Und lass es uns öffnen,
kompilieren und speichern. Was wir
hier tun müssen, ist also ziemlich einfach. Wir werden
dieses Netz hier duplizieren. Ich werde klicken
und duplizieren oder ich könnte kopieren und einfügen,
und das wäre alles. Und dann werden wir dieses Netz hierher bringen. Wir werden etwas Platz brauchen. Also werde ich das hier drüben verlegen
. Ich werde das relative
Set Relative Rotation
und das LARP duplizieren und wir werden
es hier verbinden. Und wir brauchen den Alpha. Wir müssen das Ziel verbinden, das ist das neue Mesh. Und was wir auch tun müssen,
ist das mit minus
eins zu multiplizieren , weil wir
die Rotation negieren Also müssen wir auch die
statischen Meldungen hier korrigieren
und es ist Zeit, die neue Tür
auszuwählen Also werde ich
kompilieren und speichern. Ich gehe zurück zur Karte. Ich gehe zu
unserer Tuggle-Tür hier drüben . Ich werde
den ersten Teil auswählen Ich werde es
im Condat-Browser über
diese statische
Mesh-Option hier finden im Condat-Browser über , diese Taste
drücken
und da ist es Ich gehe zurück
zu unserem Blueprint, wähle die erste Tür aus und
verwende das ausgewählte Asset
aus dem Inhaltsbrowser Jetzt machen wir
dasselbe beim nächsten. Und wähle das nächste
Geschäft aus und importiere es. Nun, soweit ich
sehe, gibt es hier quasi Gegensätze. Also das wäre dieser
und das wäre dieser. Ich denke, sie sind gut voneinander entfernt. Jetzt verschieben wir sie in die
Mitte des Bauplans. Ja, das ist in Ordnung.
Lassen Sie uns auch die Größe der Kollision erhöhen. Das ist gut da drüben. Und lass es uns testen, weil ich denke, das
muss vielleicht das Gegenteil sein. Gehen wir also zurück in unser
Zimmer und bringen die neue Tür
rein , damit wir sie drehen. Es besteht eine große Wahrscheinlichkeit
, dass wir
lustige Animationen sehen werden , weil
ich die Türen vertausche. Aber wenn wir nicht
testen, wissen wir es nicht. Also werde ich die
Spieler von vorne beginnen lassen, damit wir nicht
das ganze Level durchqueren. Was ist der Laden?
Oh, ich muss das
versehentlich
gelöscht haben, bring es her. Ordnung. Wie dem auch sei,
fangen wir hier an. Lass uns spielen. Das ist eine
Doppeltür, offen, geschlossen. Ja, es öffnet sich gegenüber. Es öffnet sich zu mir hin
statt von mir weg. Ja. Also könnten wir es so lassen oder wir könnten diese beiden
einfach austauschen. Ich bin mir ziemlich sicher, dass es einen Weg gab, es schneller
zu machen. Weniger Klicks. Aber wie dem auch sei, ja. Und wir haben eine Doppeltür. Nun, es ist in Ordnung, dass wir eine Doppeltür
haben, aber fangen wir an, unseren Türen
ein paar Geräusche hinzuzufügen. Fügen wir ein Öffnungs
- und Schließgeräusch hinzu. Wir wollen also vom Öffnen aus Sound
auf
D abspielen . Das ist ein Node , der einen Sound abspielt, den
wir definieren können, aber wir können
ihn danach nicht manipulieren. Er hat keinen Ausgang
, um den Sound zu speichern. Also hat es hier nur sehr
wenige Einstellungen. Wir werden
den Tonhöhenmultiplikator verwenden und für den Sound
werden wir feststellen, dass die Tür offen Tür auf für, diesen. Also, was wir mit der Tonhöhe machen werden
, wir werden einen
zufälligen Float in der Reichweite
machen, um die Tonhöhe der
Öffnung etwas höher zu machen, normal bis höher. Und je höher wäre
ein Punkt, sagen wir 15. Und wir werden diesen Code
duplizieren. Ob ich es nach der
Berechnung oder davor
einfüge, ist wirklich egal, aber ich werde es danach
einfügen. Lass uns hier etwas Platz schaffen. Und anstatt die Tonhöhe
mit zufälligen Gleitkommazahlen
von eins bis 1,5 zu
multiplizieren , nehmen
wir einen niedrigeren Also 0,8 bis, sagen wir,
0,99, wodurch
es sich im Grunde schwerer, also nach einer niedrigeren Tonhöhe,
anhören würde einer niedrigeren Tonhöhe Lassen Sie uns das also testen. Jep. Ja, wir haben ein
Geräusch in unserer Tür Brot. Ich glaube,
das ist es für diesen, beim nächsten fangen
wir mit
unserer kurzen Tür an.
Vorerst auf Wiedersehen.
17. Eine Abkürzungstür für schnelleren Zugang programmieren: Hallo und willkommen zurück
zu Unreal Engine Five, Blueprint Mastery Türsystemen
und Letztes Mal sind wir also
mit unserer Doppeltür fertig geworden. Lassen Sie uns jetzt das nächste Auge öffnen. Hier sind wir an unserer
Abkürzungstür, die eine Tür sein wird, die sich von
einer Seite nicht öffnet. Es steht verschlossen. Und
wenn du von der anderen Seite gehst, kannst du es entsperren. Um das zu tun, müssen wir eine sehr kleine Vorarbeit
machen. Wir müssen zu unserer
Aufzählung im Dor-Zustand zurückkehren und
einen Enumerator hinzufügen, den wir bezeichnen. Aber da es an
den vorherigen Türen nicht wirklich etwas
ändern wird, macht es
nichts , weil diese
Tür nicht abgeschlossen werden kann. Aber selbst im Update-Widget
tippt es hier nicht non ein. Ich hatte erwartet, so etwas
nein zu sagen, aber es scheint,
dass es leer bleibt. Es hat sich also nicht wirklich ausgewirkt. Aber vielleicht ist es in anderen Systemen nicht empfehlenswert, Enumeratoren
hinzuzufügen,
nachdem Sie sie
verwendet haben Enumeratoren
hinzuzufügen,
nachdem Sie sie
verwendet Jetzt haben wir die gesperrte
Kategorie zu einem Enumerator hinzugefügt. Gehen wir zum Türordner und duplizieren wir erneut das
Gegenteil vom Spieler Nennen wir das „BP
Shortcut Door“. Lass es uns öffnen. Auch hier müssen wir ein
paar Dinge ändern, aber nicht viel. Das erste, was wir tun werden, ist also den Animations- und
Soundteil von einem
eigenständigen Ereignis zu
trennen , damit wir es aufrufen können. Ich will das nur hier hinstellen. Und ich werde ein benutzerdefiniertes Ereignis
erstellen und es Türanimation nennen. Und verbinde es mit dem Switch. Wir möchten auch den
Standardstatus der Tür auf gesperrt ändern. Kompilieren und speichern. Und jetzt müssen wir einen Mechanismus erstellen, um zu überprüfen, ob die Tür verriegelt ist. Und das ist ziemlich einfach. Wir werden
unsere Aufzählung mitbringen. Wir werden einen Gleichheitsoperator verwenden, nicht Gleichheit, weil
wir daraus ein Byte machen
und wir wollen, dass es eine gleiche Zahl ist,
sodass wir aus
den Aufzählern wählen können. sodass wir aus
den Aufzählern wählen können Also werde ich gesperrt wählen. Ich werde
wieder einen Zweig mit B einfügen und klicken. Und wenn es gedrückt wird, werde
ich überprüfen,
ob es gesperrt ist. Wir brauchen etwas Platz hier
drüben. In Ordnung. Wenn sie dann nicht verschlossen ist, animieren
wir
einfach die Tür Animation der Tür. Wir werden die Türanimation
abspielen. Aber wenn es verschlossen ist, müssen
wir eine
Mechanik oder die Schlossregeln erstellen Also werden wir
eine Kundenveranstaltung organisieren. Nennen wir es Shortcut
Dog Lock Mechanic. Schon. Und wir
müssen es hier anrufen. Also abkürzen, Schlossmechaniker. Wenn wir jetzt E drücken, überprüfen
wir, ob es gesperrt ist Wenn es gesperrt ist, spielt die
Mechanik Lassen Sie uns überprüfen, ob der Spieler auf der Vorderseite
ist. Und was wir verwenden können, ist im Grunde
die Richtung berechnen. Wir brauchen im Grunde nur den
Knöchel, der berechnet wird. Aber ich möchte
etwas anderes demonstrieren. Ich möchte diesen
Code hierher kopieren
, der uns sagt, dass wenn er
über oder gleich Null ist, er vorne ist, wenn er kleiner ist, ist er auf der Rückseite. Und was ich tun werde, ist eine weitere Funktion zu
erstellen. Und ich
nenne diese Funktion auf der Vorderseite, Fragezeichen. Und ich werde
diese Funktion rein machen, und reine Funktionen benötigen
immer eine Ausgabe. Und ich werde
diese Ausgabe in Vorderseite umbenennen. Ich werde den
Code einfügen, den wir kopiert haben. Und verbinde diesen Operator mit
diesem Ergebnis hier drüben und wir haben diese Funktion. Rufen wir nun
diese Funktion auf. Ich gehe zu unserem Mechaniker für
kleinere Türen und bringe die Vorderseite Wie Sie sehen können,
unterscheidet es sich wirklich von den anderen Funktionen Sehen wir uns die
Berechnungsrichtung an. Es hat eine Ausführungseingabe
und eine Ausführungsausgabe. Dieser ist einfach grün. Es ist genau wie der Get
Player-Controller. Es ist, als hätte die Komponente ein
Tag. Sieht so aus. Das liegt daran, dass reine Funktionen nur einige Operationen ausführen ohne etwas darin setzen, hier eine Variable oder
etwas anderes zu setzen. Wie Sie sehen können, handelt es sich nur um eine reine mathematische
Ausdrucksfunktion, und sie hat die Ausgabe
eines booleschen Wir legen nichts fest. Wir könnten
lokale Variablen setzen, weil Funktionen diese
lokalen Variablen hier haben , die nur in
der Funktion existieren, während sie ausgeführt wird, und dann verschwinden sie fast, aber jedes Mal, wenn
die Funktion ausgeführt wird, erstellt sie diese neuen Variablen
und jedes Mal, wenn sie sie verwendet, gibt
sie sie danach wieder frei, was sehr optimal ist. Reine Funktionen
sollten also keine Dinge enthalten , die gesetzt werden, es sei denn, es handelt
sich um lokale Variablen. Dies ist die Zusammenfassung davon. Und natürlich müssen sie
nicht ausgeführt werden, und sie haben das Ergebnis
einiger Maßnahmen. Also werde ich hier auf eine Abzweigung
drücken, das hier verbinden, und wir fragen, ob wir vorne
sind. Auch das wäre möglich,
wenn die Winkel -90 wären, dann wären
wir auf
der Vorderseite gewesen Also wollte ich nur
diese reine Funktion demonstrieren. Und wir können hier auch
ein „Nicht“ und kein „
Bullan“ und „Negativ“ setzen hier auch
ein „Nicht“ und kein „
Bullan“ und „Negativ Das Wahre bedeutet also Entsperren, und das Falsche bedeutet,
dass nicht entsperrt wird Wenn es falsch ist, sind wir
auf der Vorderseite. Wenn es wahr ist, sind wir
nicht auf der Vorderseite. Wir sind auf der Rückseite, weil
wir es hier nicht platzieren, was dieses
bullige Gegenteil ausmacht Wenn das stimmt, wollen
wir den Türstatus einstellen. Und das wäre geschlossen , weil
die Tür nach dem Entriegeln geschlossen bleibt. Dann können wir einen Sound abspielen. Sound abspielen Ich glaube, er
heißt Dog and Lock. Jep. Und da diese Tür verschlossen sein
soll, gehen
wir zur Tür und wir müssen es
dem Spieler irgendwie vorführen Ich wähle eine Tür aus und ändere das Material
so, Ich wähle eine Tür aus und ändere das Material
so dass ich glaube, Tür eins verschlossen ist. Ja, hier ist es. Tür
eins ist verschlossen, also rot Und wenn wir es entriegeln, sollte
es seine Farbe ändern. spielen
wir das entsperrte Geräusch ab Wenn wir es auf „Schließen
“ stellen, und wir gehen zu unserer Tür. Wir werden Material einstellen. Und dann wählen wir
Tür eins aus. Und wie Sie sehen können, gibt
es einen Elementindex. Wenn DR mehr Materialien hätte, könnte ich den
entsprechenden Index auswählen, um ihn zu ändern. Aber wir haben nur ein Material, also ändern wir einfach den
Elementindex auf Null. Das nächste, was
passieren sollte, ist das Widget zu aktualisieren , da es im Grunde genommen von
gesperrt zu geöffnet wird. Und wir müssen hier auch einstellen
, dass es gesperrt heißt. Wenn die Tür verriegelt ist, sagt
das Widget gesperrt. Aber was ist, wenn ich auf
einer Seite stehe, von der ich sie entsperren kann? Da sollte „Entsperren“ stehen. Um das zu tun, werden
wir eine Auswahl treffen. Ich werde einen ausgewählten Text schreiben. Wie Sie sehen können, hatten wir
bereits diese Option, die mit einem
Bleian, wenn B, wählen Sie A, wenn A wahr ist, und die
Option Select, die den Wildknoten hat Stellen Sie sicher, dass Sie die mit
einem booleschen Wert verwenden. Ich nehme wieder die
Ostfront. Ich werde es hier verbinden. Und wenn es auf der
Vorderseite ist, sagen wir, es scheint von
der anderen Seite aus verschlossen zu sein. Und wenn wir auf der anderen Seite sind, sollte
es „entriegelt“ heißen. Lassen Sie uns nun kompilieren und speichern. Also was wir korrekt aktualisieren. Was noch zu tun bleibt, ist etwas zu tun, wenn der
Spieler versucht, sie zu öffnen , E
drückt, die Tür verriegelt ist und sie
von der falschen Seite steht. Was wir also erstellen werden,
ist eine Animation zum Klappern der Tür. Aber
das werden wir in der nächsten machen. Ich denke, das ist
genug für diesen. Ich sehe dich dann. Auf Wiedersehen.
18. Visuelle Effekte zu einer Abkürzungstür hinzufügen: Hallo und willkommen zurück
zu den fünf
Blueprint Mastery Türsystemen
und interaktiven Portalen von Unreal Engine Blueprint Mastery Türsystemen
und Zuvor haben wir
mit unserer Schnelltür angefangen. Wir haben einen Enumerator hinzugefügt, einen neuen Enumerator zu unserem
Türstatus, dem verschlossenen Zustand Wir haben festgestellt, dass sich dadurch nichts an unserem
Code
geändert hat , da es nicht
empfehlenswert ist ,
neue Enumeratoren hinzuzufügen nachdem Sie
ihn bereits an einer Reihe von Stellen verwendet haben,
aber das war für
uns egal, weil wir
einen sehr kleinen Code haben,
und wir haben das
Widget so aktualisiert, dass es weil wir
einen sehr kleinen Code haben,
und wir haben das
Widget so aktualisiert, sich
nicht in der Doppeltür in der Wir haben das Update so aktualisiert, dass
es gesperrt zu
sein scheint, wenn es sich auf der
Vorderseite des Players befindet, und wenn es sich auf
der Rückseite befindet, freigeschaltet zu sein. Und wir haben diese reine
ES-Front-Side-Funktion
mit dem Code erstellt , den wir
bei der Berechnung verwendet haben. Außerdem haben wir die Animation
der Tür vom Drücken von E getrennt , wodurch überprüft wird,
ob die Tür verriegelt ist. Wenn sie verriegelt ist, spielt sie
unsere Tracetlock-Mechanik ab. Wenn nicht, wird die Animation
abgespielt. Wenn wir uns auf der
Rückseite der Tür befinden, öffnen wir die
Tür und ändern weil wir
das Material so eingestellt
haben dass
es rot leuchtet, aber jetzt, wenn wir es entriegeln, ist es normal Aber wir haben es weggelassen, ohne ein Klappern zu
erzeugen. Lassen Sie uns also die Rassel kreieren. Lassen Sie uns ein neues benutzerdefiniertes Ereignis erstellen. Nennen wir dieses benutzerdefinierte
Event Door Rattle. Und hier brauchen wir wieder
einen Zeitplan. Ich werde einfach
diese Timeline hierher kopieren und von Anfang an auf
Play drücken. Aber ich glaube, wir haben
einen Sound für eine Rassel, also werde ich zuerst Sound mit
Di
abspielen und dann
vom Start bis zur Timeline abspielen Und ich glaube, das Geräusch
heißt Rassel. Ja, Türklappersignal. da sind wir. Lassen Sie uns jetzt etwas
herausfinden. Wie lange sollte die
Tür klappern? Ich denke 0,5 ist in Ordnung. Lass es uns ein
bisschen mehr machen. Sagen wir 55. Nicht 0,55, nicht nur 55. Ich würde 55 Sekunden lang rasseln. Nun, hängt von der Person ab
, die versucht, es zu öffnen. Sagen wir 0,55 und
setzen den Wert
auf Null, weil er sich am
Anfang und am Ende an
derselben Position befinden sollte Als ob der Spieler versucht, es zu
öffnen, es aber wirklich nicht kann. Nun, wie werden wir
die Verlosung erstellen? Nun, für mich ist die Lösung im
Moment ziemlich einfach, aber die Rassel wird
nicht wirklich perfekt sein, aber es wird eine Rassel sein Ich werde einfach weitermachen und einfach
zufällige Punkte unter eins und über minus eins
anklicken zufällige Punkte unter eins und über minus eins und sie vielleicht
ein bisschen näher heranrücken Nehmen wir an, er drängt. Und mal sehen, er
macht hier einen Zug
und dann macht er einen großen Stoß. Und es drückt weiter diese Richtung und dann lässt es
los und dann zieht es wieder und dann drückt es
wieder, ein letztes Mal Ich weiß nicht,
so etwas. Du kannst viel damit spielen. Was wir tun können, um es ein bisschen
flüssiger zu
machen , könnte
die Auto-Funktion verwenden, und wie Sie sehen können, macht
es dadurch flüssiger Aber meiner Meinung nach könnte ein
hartes Hin
und Her für jemanden, könnte ein
hartes Hin
und Her der
versucht, eine Tür zu öffnen, besser
aussehen Ich werde es
so lassen. Wenn du willst, kannst
du sie alle auswählen
und das automatische Ding machen, sie
auswählen und
automatisch machen , um
zwischen den Punkten zu interpolieren Nun, was machen wir mit dem
Update mit dieser Alpha? Nun, natürlich werden
wir larpen. Ich werde larpen. Das
wird Alpha 0-1 0,5 sein Das ist ein Komma 1,5. Y Null bis 1,5. Das sind also die Grade
der Rotation. Ich kopiere einfach
auch
den Rotationsknoten und diesen, das Türgitter, und auch
die Türreferenz. Jetzt werde ich das hier
verbinden. Nun, da ich
hier
negative Werte verwendet habe , minus ab Null, wird
diese 1,5 auch
als
negativer Minuspunkt gezählt , wie ein imaginärer Sollwert für
den negativen Wert Also das wird von hier aus hin
und her gehen. Und wenn es mehr Abschlüsse gäbe, würde es
meiner Meinung
nach nicht so gut aussehen, nicht dass es jetzt
sehr gut aussehen würde, aber es ist normaler, hier
kleine Abschlüsse zu haben. Nun, eine letzte Sache,
bevor wir zum Testen gehen, lassen Sie uns das
Türklappern hier drüben anschließen Nennen wir es Rattle und dann kompilieren und
speichern wir und los geht's zum Spielen Ich habe die
Tür nicht auf der Karte hinzugefügt. Es sollte
etwas fehlen. Fügen wir es der Karte hinzu. Also,
das ist die Doppeltür. Das ist die kurze Tür. Wo ist der
Vorderpfeil hier drüben. Wir könnten die Pfeilfarbe ändern, sodass sie nicht zu dem Gizmo passt,
diesem Gizmo hier drüben, oder sie ein bisschen größer
und dicker
machen, aber es ist und dicker
machen, aber Gehen Sie dazu einfach zu
den Komponenten des Blueprints, wählen Sie den Pfeil aus und gehen Sie zu seinen Nun, für mich wurde
dieses Setup
für etwas anderes geschaffen Ich werde
es nur ändern, um das Gameplay zu verbessern. Eine kurze Tür
ist sinnvoller. Ich werde das alles auswählen. Ich werde sie hierher schubsen. Es wird
sie ein bisschen
größer machen und sie nach oben drücken Ich werde
das löschen. Ich werde das
herbringen. Vielleicht hier drüben. Daran musst
du nichts tun. Es ist nur für mich,
es ist sinnvoller, eine Abkürzung
zu verwenden , um den Spieler zu nerven, wenn er Dinge
umgeht Es ist also größer, diese Entfernung im Vergleich zu dieser
Distanz zurücklegen Also denkt der Spieler: Okay, vielleicht sollte ich
die Tür abschließen, weil es sich
wirklich lohnt , die
Tür aufzuschließen, von hier nach hier zu gehen, sofort und dann den
ganzen Weg herumzugehen Wie auch immer, Entwicklungsprobleme. Lasst uns vorankommen. Lasst uns den Spieler
herbringen. Lass uns die Tür testen.
Okay, es klappert Scheint von
der anderen Seite verschlossen zu sein. Ja, ich gehe diesen Weg. Wenn wir den ganzen Weg gehen,
kann ich dann von hier springen? Nein. Okay, ich schalte es auf. Ich mache das nie wieder so. Ich gehe einfach direkt
ins nächste Zimmer. Eigentlich
ist gerade alles freigeschaltet, also kann ich das Spiel nicht gewinnen. Aber wie dem auch sei, ich denke,
das ist es für dieses Spiel. Wir werden mit
dem nächsten Schritt fortfahren und
einen Schalter und eine Tür erstellen , die
sich mit diesem Schalter öffnet. Vorerst auf Wiedersehen. Wir sehen uns dann.
19. Einen Hebelplan aufbauen, um Türen zu entsperren: Willkommen zurück bei
Unreal Engine five, Blueprint Mastery, Türsystemen Zuvor waren wir
mit unserer Schnelltür fertig. Wir haben ein benutzerdefiniertes Event erstellt,
dann haben wir einen Sound abgespielt, dann haben wir eine neue Timeline erstellt und auf der Grundlage dieser Timeline erneut die relative
Rotation festgelegt. Und wir nennen dieses
Ereignis hier. Jetzt ist es an der Zeit,
etwas tiefer in dieses Projekt einzusteigen. Wir werden Level sechs öffnen
und es ist Zeit für unsere Tür, und es ist Zeit für unsere Tür die
mit einem Schalter kommuniziert,
nur ein paar zusätzliche Informationen,
bevor wir weitermachen. Alles, was wir
geschaffen haben, sind Objekte. Und als wir
einen neuen Plan erstellten, wählten wir eine Klasse aus Das ist die Tür der Klasse BPW. Dies ist die Einwegtür der Klasse
BP usw. usw. Das Gleiche gilt auch dafür, nicht für die Die Aufzählung ist
nur eine Variable. Es ist eine Aufzählung. Warum spreche ich dann
über Unterricht? Eine intelligente Definition wäre
, dass es sich um Objekte mit bestimmten Eigenschaften
und Verhaltensweisen handelt, die es Entwicklern ermöglichen, mehrere Instanzen zu
erstellen. Das würde bedeuten, dass wir zwei dieser Türen haben
können. Sie haben das gleiche Verhalten, sie haben die gleichen Eigenschaften und sie sind völlig unterschiedliche
Instanzen dieser Klasse. all das zu sagen, was
wir bis jetzt gemacht haben, , wir
zum Beispiel
am Anfang die Klassenreferenzen benutzt um etwas im
Level-Blueprint zu tun Wir haben die Türklasse
hier benutzt, um diesen Schauspieler zu wechseln. In anderen Fällen haben wir
wirklich keinen anderen Schauspieler angerufen. Aber auch hier wäre ein Beispiel das Casting, das wir für
den Spieler bei den Kollisionen durchführen Eigentlich machen wir kein Casting. Wir haben hier am Anfang
gecastet. Auch das erfordert den Kurs. Es fragt nach der Klasse. Gehörst du zur BP-Charakterklasse in der dritten
Person? Wenn du zu dieser Klasse gehörst,
erhalte ich einige
Informationen von dir. Was für den nächsten Schritt benötigt wird, diese Tür ist etwas, das wir ein Blueprint-Interface
nennen Ich komme,
klicke und gehe zu
Blueprint und gehe zu Blueprint Ich werde das BI Ds nennen. Nun, was ist eine
Blueprint-Schnittstelle? Im Wesentlichen ist es eine Möglichkeit,
Funktionen in verschiedenen Klassen auszuführen Funktionen in verschiedenen Klassen , die
ihren eigenen Code implementieren können Nicht gerade üblich, aber ich
kann sie zu jeder Klasse aufrufen , die sie implementiert. Ich
denke, es wäre besser, sie als Beispiel zu zeigen. Eine Sache noch, es ist eine der optimalsten Möglichkeiten für
die Kommunikation mit
Blaupausen Als ob ein Blueprint mit einem
anderen Blueprint
kommunizieren muss mit einem
anderen Blueprint
kommunizieren und sie sich nicht genau
kennen Sie wissen nicht, um welche
Klasse es sich handelt. Lassen Sie uns unsere verschlossene
Tür duplizieren, unsere kurze Tür. Ich werde das duplizieren und
diese Schalttür anrufen. Gehen wir jetzt zurück zu
unseren VI-Türen und öffnen sie. Und wenn ich es öffne, siehst
du, dass es
wie ein Blueprint aussieht, aber es hat auf der anderen Seite die Registerkarte M Blueprint und Details Das liegt daran, dass wir hier nur eine Funktion
sehen können, nämlich
die, die sie uns geschaffen hat Wenn ich weitere Funktionen hinzufüge, können
wir eine weitere Funktion sehen. Und das einzige Diagramm
, das
hier existiert , sind im Grunde diese
Funktionen. Welche, wie Sie sehen können,
keine Ausführung haben. Die Ausführung wird
in dem Blueprint erstellt , der sie hosten
wird Also werde ich diesen löschen. Ich werde das Tür entriegeln nennen. Nun, was wir hier tun können,
außer eine Funktion zu benennen, könnten
wir Eingaben
und Ausgaben eingeben und sagen , dass diese Funktion immer so
läuft. Sie hat immer diese
Ein- und Ausgänge. Lass uns speichern, kompilieren und
gehen wir zu unserem Switch,
Switch, diesem. Also, wie implementiere ich die
Schnittstelle hier? Wir gehen zu
unseren Klasseneinstellungen. Wir werden zu Interfaces gehen. Wir drücken
AD und
suchen nach BI-Punkten. Jetzt kompiliere ich,
und wie Sie sehen können, wurde
in den
wichtigsten Benutzeroberflächen von My Blueprint
eine neue Kategorie angezeigt in den
wichtigsten Benutzeroberflächen von My Blueprint Und wenn ich das öffne,
können wir die Schleusentür finden. Und wenn ich darauf doppelklicke, erstellen
wir ein Event dafür. Wenn das nun eine Ausgabe hätte, würde
es eine
Funktion daraus machen und ich würde die Funktion
eingeben. Nun, was passiert, wenn
wir die Tür aufschließen? Nun, wenn du die Tür aufschließt, haben
wir den Code
irgendwo hier. Ja. Wir werden
all diese Mechaniken nicht brauchen, also werde ich einfach
diesen Teil löschen, die Tastensperre. Wir brauchen das Türrasseln, um
die Position der
Schnellschlossmechanik einzunehmen , die es nicht mehr gibt Und wir brauchen diesen Code. Lass es uns ausschneiden und hier
einfügen. Und das Material
ist die Korrektur. Was die Codierung angeht, ist
diese Tür bereit,
denn wenn wir E drücken, passieren
zwei Dinge: Entweder die Tür wird entriegelt und sie
wird geöffnet oder geschlossen, oder die Tür wird verriegelt und sie würde klappern Wie ihr seht, rufen wir
aus dem Nichts dieses Ereignis „
Unverschlossene Tür Das liegt daran, dass wir
es über den anderen Blueprint
über den Switch aufrufen es über den anderen Blueprint
über den und dabei den Schnittstellenaufruf
verwenden Lassen Sie uns nun
diesen Blueprint-Switch erstellen. Wir gehen
zum Content Browser. Wir gehen zu
unserem Blueprint-Ordner. Wir klicken mit der rechten Maustaste
und erstellen einen neuen Schauspieler. Ich werde es
BP-Switch nennen. Und lass es uns öffnen. Fangen wir mit den Komponenten an. Fügen wir natürlich eine Schachtel oder eine Läsion Fügen wir einen Text hinzu. Eigentlich rendern, nein. Wir brauchen keine Ausschreibung. Wir brauchen zwei statische Netze. Also werde ich statisches Mesh
auswählen und das duplizieren nun für das erste statische Mesh Lassen Sie uns nun für das erste statische Mesh kompilieren, speichern und zu unserer Map
zurückkehren. Gehen wir zu unseren Requisiten und wählen wir
diese hier aus, nämlich die für den Requisitentopf. Lass es uns binden. In Ordnung, gehen
wir zurück zum
Schalter und setzen ihn ein. Nun, für das zweite statische Mesh machen
wir
dasselbe, löschen sie, wählen das zweite aus, binden es, gehen zurück zum Switch
und fügen es hier hinzu. Lassen Sie uns eigentlich einen Pfeil hinzufügen,
denn ja, das dachte ich mir. Die sind irgendwie falsch gedreht. Also drehe ich sie um 90 Grad und stelle fest, dass es sich um einen Hebel
handelt, nicht um einen Schalter Jedenfalls. Und außerdem werde ich es auf diese Weise um 90 Grad
drehen. Es schaut also nach oben
, weil wir es animieren werden,
nach unten zu gehen Lassen Sie uns vergleichen und speichern. Und jetzt brauchen wir einige
Funktionen von den Türen. Also ich gehe zu jeder
Tür, das ist eigentlich egal. Ich gehe jetzt zur
Doppeltür. Ich suche Start Play und kopiere diesen Cap-Spielmodus und
mache ihn zu einer Variablen. Und ich gehe zur
Box zum Switch und füge es hier ein. Und diese Variable existiert, wie Sie sehen
können, nicht. Wenn eine Variable nicht
existiert, ist sie grau. Um sie existieren zu lassen, können wir
hier einfach eine Variable
erstellen und ihr einen Namen geben oder wir können einfach mit der rechten Maustaste darauf klicken
und eine Variable
als
Third-Person-Spielmodus erstellen und fertig Als Nächstes
werde ich diesen Pfeil
aus
dem statischen Netz Aber das wollte
ich nicht sagen. Was ich sagen wollte,
war, dass ich das statische Mesh
wählen werde , das ist der Hebel, den
wir drehen werden. Und im Startspiel werde
ich
es hierher bringen und eine
relative Drehung vornehmen. Also werde ich nichts
berechnen müssen. Ich werde einfach
diese Variable von
Movaiable speichern und
sie hier verbinden. Also werden wir
diese Variable jetzt verwenden, um den Schalter, die Leber, zu drehen Aber bevor wir mit der Animation beginnen, wir damit fertig sein,
das gewünschte Verhalten zu kopieren Wir wollen auch das
Kollisionsverhalten. Also werde ich das
alles hier rüberbringen, ich werde es kontrollieren und ich werde
sie hier einfügen. Sehen Sie, aktualisieren Sie den Widget-Text.
Wir brauchen die beiden. Also werde ich einfach eine
passende Funktion erstellen, bestätigen. Aber diese Funktion
ist irgendwie leer. Aber es spielt keine Rolle, weil wir diesmal etwas anderes
brauchen, um
verschiedene Dinge zu tun. Es ist keine Tür. Wir werden also
im Grunde eine Variable
erstellen, sie verkauft
nennen und
einen Zweig hierher bringen. Wenn wir das Problem gelöst
haben, werden wir in unseren
Third-Person-Spielmodus wechseln und das Widget Door Widget
entfernen. Im Moment ist es ein
Leber-Widget, aber wir haben es Door Widget genannt. Ist egal. Und wenn es nicht gelöst ist, werden wir den Text aktualisieren. Und tippe use ein. Der Spieler weiß also,
dass er den Auslöser benutzen kann. Und diese Funktionalität wird
jetzt kopiert, und wir haben gleichzeitig auch
den Text
des Update-Widgets kopiert . Eine kurze Erinnerung. heißt, wenn wir uns mit dem Spieler
überschneiden, ermöglichen
wir die Eingabe
in diesem Blueprint Wir aktualisieren das Widget und fügen es dem Viewport hinzu,
oder
wir entfernen es und deaktivieren die
Eingabe, wenn wir Ich denke, das ist
genug für diesen. Ich sehe
dich im nächsten. Auf Wiedersehen.
20. Remote-Türenentriegelung mit Blueprint-Kommunikation implementieren: Willkommen zurück bei
Unreal Engine five,
Blueprint Mastery, Türsystemen Zuvor waren wir
mit unserer Switch-Tür fertig. Wir haben eine Blueprint-Schnittstelle erstellt , von der wir erklärt haben, wie
Blueprints kommunizieren können,
wenn sie nicht
wissen, wer der andere Blueprint ist,
was für Blueprints kommunizieren können,
wenn sie nicht
wissen ein Plus der
andere Blueprint ist, und wir haben es in
unsere BP-Switch-Tür implementiert, indem wir
zu den Klasseneinstellungen gegangen sind
und
es auf implementierte Schnittstellen implementiert es Wir haben auf Werbung geklickt und
sie implementiert. Dann haben wir das Ereignis „Tür
öffnen , das wir in der
Blueprint-Oberfläche erstellt haben, und wir haben die Kette von
Ereignissen verknüpft , die
beim Entriegeln der Tür stattfinden sollen Nun, jetzt ist es keine Tür. Nun, es ist eigentlich eine Tür. Und dann haben wir
das Drücken
so geändert, dass es immer klingelt, wenn
es gesperrt ist,
und wenn es nicht gesperrt ist, und wenn es nicht gesperrt ist schalten
wir die Entsperrung frei und spielen
die Entsperranimation Die Animation öffnen. Dann haben wir weitergemacht und
den BB-Switch erstellt, bei dem wir die Funktionalität
der Überlappung
der Box-Kollision kopiert haben . Wir haben die Box-Kollision hinzugefügt. Wir haben auch zwei statische
Maße und einen Pfeil hinzugefügt. Und soweit ich sehen kann, ist
der Pfeil falsch gedreht Ich werde es auf die
Standardeinstellungen zurücksetzen. Jetzt ist es richtig. Fahren wir mit der
Animation des Schalters fort. Also werden wir das E von
der Tastatur aus verwenden. Und das Erste, was
wir fragen werden, ist der Switch
Shot? Ist der Schalter? Hat sich der Schalter tatsächlich gedreht? Wenn nicht,
werden wir sagen, dass dies ist, da dies nur einmal passiert und die Animation abgespielt
wird. Jetzt, hier drüben,
werden wir das Widget aktualisieren. Es zeigt also nicht mehr
den verwendeten Text und wir spielen den Ton ab. Dass wir wieder
mit dem Spielfeld herumspielen werden. Wir werden eine
zufällige Ladung in Reichweite machen. Und wir werden von 0,8 auf eins
gehen. Und das Geräusch wäre, ich glaube, da ist ein Schalter. Nein, es heißt Lever
Ever Q. Hier sind wir. Und jetzt brauchen wir einen Zeitplan. Also eine Zeitleiste. Wir werden
diesen Zeitplan eingeben. Wir werden
einen neuen Flow-Truck bauen. Setzen wir uns hin, klicken und zwei Punkte
erstellen. Eins wird mal 0,15 sein, und es wird eins sein, und das andere
wäre Null, Null Jetzt drücke ich
diese beiden Tasten so, dass es horizontal und
vertikal
passt , und ich drücke
als Tastenfeld. Außerdem
werde ich dieses Mal beide auswählen und die automatische Kurve
verwenden. Die Bewegung ist also
etwas glatter. Nun, wenn die Timeline abgespielt , brauchen wir
zunächst
ein bisschen Platz Wir müssen die Drehung
des Hebels ändern. Wir werden uns also
unser statisches Mesh-Modell holen. Wir werden die
relative Rotation einstellen. Ich werde das
hier verbinden und ich werde Alarm auslösen und ich werde die
relative Rotation verwenden, die wir haben. Ich werde
den Alpha hier anschließen. Und was das B angeht,
werde
ich den Rotator bauen Ich werde auf -90 gehen und den Rotator
kaputt machen Keine Achse, tut mir leid. Und ich werde Kern, Rolle
und Tonhöhe nehmen, damit das Gleiche bleibt, weil wir es gedreht haben,
um in Richtung des Pfeils zu schauen. Im Moment wird es also die
gleiche Drehung beibehalten, die wir hatten, und es wird die Z-Position auf -90 ändern Ich werde auch
die sortierte Stelle so auswählen , dass sie eine
kleine Bewegung ausführt Als Nächstes holen wir uns wieder das statische Netz und legen das Material fest. Wenn wir also fertig sind und die Animation beendet
ist, werden die Requisiten auf das Material gesät, wodurch dieses
Gelb zu Grün wird Nun der interessante Teil, wie schicken wir die
Nachricht an die Tür Nun, wie gesagt,
wir haben diese
Blueprint-Schnittstelle, die eine Nachricht an jeden
Akteur
senden kann , der sie hat Es kann im Grunde genommen eine Nachricht an
jeden Akteur senden. Aber wenn der Schauspieler die
Blueprint-Schnittstelle hat, wird er etwas damit anfangen Wenn nicht,
wird es nichts tun. Also werde ich hier eine
neue Variable erstellen, und ich werde
sie vom Typ Schauspieler haben. Das bedeutet also, dass es jeder Schauspieler sein
kann. Jeder Akteur, den ich
auswählen und mit
dieser Variablen füllen kann , kann
das Objekt werden , an das ich die Nachricht
sende Ich werde
diesen Türschauspieler nennen. Und erinnere dich an die editierbare
Instanz. Ich werde sie anklicken und beim
Spawn anzeigen. Natürlich werde
ich kompilieren
und sagen, jetzt werde
ich den Schalter
und die Tür in das Level bringen und die Tür in das Level Bringen wir den Schalter hierher und bringen wir auch die Tür Das war nicht der beste Ort. Lass es uns hier drüben hinstellen. Ich finde, das ist eine schöne
Höhe, ein netter Ort. Du kannst es platzieren,
was immer du willst. Jetzt wähle ich die Box-Kollision aus und werde sie
ein bisschen vorziehen. Mach es ein bisschen größer. Wenn der Spieler also hier drinnen
ist, kann
er
mit dem Schalter interagieren. Also, wie kommen wir an
diese Referenz? Hier drüben werden wir nichts
finden. Entschuldigung, ich habe Blueprint
ausgewählt. Ich hatte die Box ausgewählt. Also zurück zum Bauplan. Hier bei den Details, wir können diesen Türspion finden. Ich kann diesen
Pick-Schauspieler von SN gebrauchen. Und ich kann
jeden Schauspieler auswählen, den ich will. Wie jetzt habe ich die Wand
ausgewählt. Ich kann diese Geschichte auswählen, aber sie wird nichts bewirken. Wir werden diesen Code senden
, den wir implementieren werden. Lassen Sie uns das im Grunde codieren. Du rufst einfach den Schauspieler und sagst Türöffnernachricht. Und wie Sie sehen können, ist da drüben ein kleiner
Umschlag. Das heißt, es sendet
diese Nachricht. Jetzt könnte ich fragen, ob dieser Akteur
die Schnittstelle implementiert. Ich könnte die
Schnittstelle wählen, die ich wollte, vidor, und wenn es keinen Zweig hier platzieren
könnte, und wenn es die Schnittstelle nicht
hätte, dann würde es
die Nachricht im Grunde nicht senden Ich könnte auch fragen, ob es ein
gültiger Schauspieler ist, falls ich
zum Beispiel vergesse ,
einen Schauspieler auszuwählen und diese
Variable leer ist Ich könnte hier eine Zeichenfolge
drucken, Zeichenfolge drucken, Switch
hat keinen Schauspieler. Es ist kein Schalter. Es ist eine Leber. Vielleicht sollte ich
dieses Blubrid umbenennen. Lass uns gehen. Also werde ich
das Lebertor nennen. Ich werde hierher gehen und diese beiden Leber
nennen. Okay. Das würde es also
ziemlich sicher machen, dass wir
einen Schauspieler haben und wir haben auch die Schnittstelle für diesen Schauspieler
implementiert. Wir können hier eine weitere
Fehlermeldung haben besagt
, dass der Schauspieler
keine Schnittstelle hat. Implementiert keine Schnittstelle. Und jetzt können wir
zwei Fehlercodes haben. Ich werde kompilieren und speichern.
Ich werde hierher gehen. Ich werde diese Tür zur
Sammelstation drehen und
sie platzieren , ist das okay? Vielleicht ein bisschen höher
und es ist in Ordnung. Bringen wir nun auch den Text mit, in dem wir die Türen
beschreiben. Wir haben hier auch keinen platziert. Also lass uns das machen. Bringen wir einen neuen Tieftext. Lasst uns die Botschaft setzen, diesen Weg
gehen und irgendeinen
Pfeil haben, manche fragen. Und lassen Sie uns den Text drehen. Ups, kein Bauplan,
der Text selbst. Und bring es her. Ich mache es ein
bisschen kleiner. Und bring auch das Licht mit. Ordnung, und jetzt die Kollision Drücken
wir Play. In Ordnung, es funktioniert. Geht in diese Richtung. Ich verschließe die Tür, wenn ich
in diese Richtung komme. Und der Schalter geht an unsere
falsche Stelle, wir werden das reparieren, und die Tür öffnet sich nicht,
weil
ich zuerst die Tür
am Schalter nicht ausgewählt habe. Also wähle ich dieses Mal
diese Tür und lass uns zum Hebel gehen, nicht umschalten und das ändern. Also ist es nicht Ya, das wir wollen, und es muss Pitch sein. Also werde ich
das hier und S -90 hier verbinden. Lass uns das auch hierher bringen. Also, schon wieder falsch. Nicht der richtige Weg.
Es sind also nicht 90. Es ist 180 und es ist plus 180. Das dritte Mal ist der Reiz. Juhu. Animation verbinden Jetzt ist die Tür unverschlossen
und wir können weitermachen. Jetzt, wo
er funktioniert, bringen wir den
Text hierher . Bringen wir einen neuen. Ich werde einen schwebenden Text mitbringen. Und ich werde Text schreiben. Benutze den Hebel, um
die Tür zu öffnen. In Ordnung. Und in der Shift-Taste drücken
, um eine Zeile tiefer zu gehen. Ich werde den Text auswählen.
Ich werde es hierher bringen. Dieses Mal werde
ich
das Licht über die Leber bringen . Also dieser Ort leuchtet auf. Der Spieler sieht,
wohin er gehen muss. Ein bisschen Spieldesign, auch wenn es nicht benötigt wird.
Es ist immer gut, es zu haben. Und ich werde das hier
erhöhen. Ich werde es herbringen.
Ja, hier ist es in Ordnung. Dieser Raum ist fertig. Jetzt fahren wir mit dem nächsten
fort, zwei Hebel
benutzen, um eine
Tür zu öffnen, aber auf eine andere Art und Weise Im Moment sendet der Hebel eine Nachricht an die Tür
mit der Aufschrift „Entriegeln“ Der nächste wird das Gegenteil
sein. Die Tür wird die
beiden Hebel fragen: Bist du gelöst? Dann werde ich dich sehen. Vorerst auf Wiedersehen.
21. Multi-Button-Puzzle-Mechaniken für Türsysteme erstellen: Hallo und willkommen zurück zu den Portalen Unreal Engine Five
Blueprint Mastery, Door Systems und
Interactive Zuvor waren wir im Grunde mit
unserer Leber Door fertig. Ich glaube, wir haben es am
Ende Hebel genannt. Ja, Lebertür. Es wurde hier nicht aktualisiert, weil
es Namen nicht automatisch datiert. Damit wir es aktualisieren können. Eine Sache,
die mir aufgefallen ist, ist
, dass im Text des Update-Widgets nicht stehen sollte, dass
es freigeschaltet scheint. Ich werde
das löschen, ich
sage nur gesperrt. Und
das könnte es sein. Und jetzt sind wir
mit der Lebertür fertig. Wir haben auch ein paar Texte
hinzugefügt und sind mit dem
animierten Teil der Leber fertig geworden. Und wir haben einige Fehlermeldungen hinzugefügt auch für den Fall, dass der
Türaktor nicht eingestellt ist. Fahren wir nun mit
dem nächsten Teil fort. Lasst uns unsere Stufe
sechs, glaube ich, sieben,
unsere Stufe sieben sichtbar machen , und das ist der
Wendepunkt danach, wir gehen langsam runter. Beginnen wir mit der Aktualisierung unserer
Blueprint-Oberfläche für Hunde Wir werden eine neue
Funktion namens SOD hinzufügen. Für diese Funktion
werden wir eine Ausgabe verwenden und sie SOD nennen Diese werden wir für unsere Leber verwenden. Also gehen wir zu unserer Leber und gehen
zu den
Klasseneinstellungen und fügen eine
Oberfläche hinzu, die aus BI-Punkten besteht. Jetzt gehen wir zu
den Schnittstellen. Wir werden den Entwurf für die
Kollision des
ersten Schnittstellennamens kompilieren Entwurf für die
Kollision des
ersten Schnittstellennamens da der boolesche Nennen wir das „Boolean ist verkauft“. Ja, man kann
dieselbe Namensvariable nicht zweimal verwenden, und wenn sie zur
Schnittstelle gehört, gehört
sie auch zum Blueprint
und das schafft ein Problem Ich muss das zuerst kompilieren und jetzt das hier, und es heißt Äh, lassen Sie uns auf gelöst doppelklicken und das Ich habe gelöst
und verbunden hierher
bringen Also, wann immer Solved kalt ist, geben
wir
unsere Variable Ich gelöst zurück. Wie nennen wir das „Ich habe gelöst“? Gehen wir zu unserer neuen Tür. Also werden wir die Lebertür
duplizieren. Ich nenne das
Multi-Puzzle-Tür und wir werden es öffnen. Hier
wird sich nicht viel ändern. Das einzige, was wir
ändern werden, ist, dass
wir eine neue Funktion erstellen werden. Nennen wir das
Scheckrätsel-Antworten. Und es wird auch eine boolesche
Ausgabe haben oder Rätsel gelöst haben. Okay. Wir werden als Nächstes bauen. Was wir jetzt tun werden, ist dieses Event Unlock Door zu
verwenden,
was, weil wir
es kopiert haben, zu einem normalen Event geworden ist. Gehen wir zur Benutzeroberfläche. Nennen wir die Schnittstelle eins. Das ist passiert, weil wir den Plan
dupliziert haben. Also werden wir zu
unserer Veranstaltung gehen und Tür freischalten, und wir werden
die Scheckrätsel-Antworten mitbringen Und wenn sich das als wahr herausstellt, werden
wir die Tür aufschließen. Wenn nicht, werden wir hier drüben so
scheppern. Und anstatt es von den Schaltern aus
anzurufen, rufen
wir es an, wenn wir E
drücken und die Tür verriegelt ist Wenn es also vorbei ist, hieß
es
Unlock Door Event. Also, wenn ich es
im Bauplan
Cedar nenne, hat es nicht
diesen Umschlag hier drüben, aber das Ziel ist
in einer anderen Farbe Das passiert, wenn Sie
intern einen Blueprint aufrufen. Eine Blueprint-Schnittstellenfunktion. Um nun mit
unserer Funktion zur Überprüfung der
Antworten auf die Rätsel fortzufahren , müssen
wir zunächst einen
Verweis auf die Rätsel erstellen, so wie wir es für den Schalter hier getan haben, wir müssen es für die
Tür und die Rätsel tun Also, wie machen wir das? Wir werden
eine neue Variable
vom Typ Actor Object Reference erstellen vom Typ Actor Object Reference und sie Puzzles
nennen. Nun, warum Puzzles? Bisher haben wir einzelne Variablen
verwendet,
was bedeutet, dass sie einen
einzigen Containertyp haben. Und warum dieses Wort Container sagen? Weil wir drei weitere
verschiedene Arten von Containern haben. Wenn wir die variablen
Rätsel auswählen und hier weitermachen, können
wir sehen, wie wir diesen
variablen Container als Array, Set oder Map erstellen, was die anderen drei verschiedenen
Arten von Containern sind. Ein Container
ist also ein einziger. Das zweite ist ein Array, das
dritte ist festgelegt und mit jeweils spezifischen Regeln versehen. Die grundlegende Funktionalität
bleibt jedoch dieselbe, wobei im Grunde eine Liste von Elementen, eine Liste von Variablen, geführt wird. Wir werden ein Array verwenden, das einen
Variablentyp enthält. Map kann zwei
Arten von Variablen enthalten, und es ist festgelegt, dass jede Variable in der Liste
grundsätzlich eindeutig sein
muss. Jetzt wählen wir den ersten
Listentyp aus, den Array-Typ,
und eine weitere wichtige
Sache bei diesen Listen ist Annahme, dass jede Variable, die sie in der Liste
enthalten,
eine bestimmte Reihenfolge hat. Wenn ich das zum Beispiel kompiliere, können
wir Rätsel
und Array-Elemente sehen. Und wenn ich auf ein
Array-Element klicke, habe ich hier ein Array-Element. zweite, das dritte, und diese sind
in einer bestimmten Reihenfolge. Das ist Null, das
ist eins, das ist zwei. Das Gleiche gilt für den Rest der Liste,
auch dass sie
eine bestimmte Reihenfolge beibehalten und diese Reihenfolge immer beibehalten,
sofern wir sie nicht ändern. Wenn ich nun gesagt habe, dass die Schauspieler ein einzigartiges Element
haben müssen, bedeutet das, dass das erste
Element nicht dasselbe sein
darf wie das zweite. Wenn
das zum Beispiel ganze Zahlen wären, wären
es eins, zwei,
drei gewesen, es hätte nicht eins, eins, eins
sein Lassen Sie uns
das für eine Sekunde demonstrieren. Lassen Sie uns den
Variablentyp auf Integer ändern. Und lassen Sie uns kompilieren, sehen
, wie die Elemente zurückgesetzt wurden. Also habe ich Null hinzugefügt. Wenn
ich erneut versuche, etwas hinzuzufügen, kann
ich nicht, weil
Null bereits existiert. Wenn ich daraus
eins mache, kann ich hinzufügen. Wenn ich versuche, aus Null
eins zu machen, lässt es mich nicht. Wenn ich versuche, eins auf
Null umzudrehen, lässt es mich nicht. Also muss ich das
zum Beispiel auf zwei drehen und dann hat
es wieder Null hinzugefügt. Wenn es so weitergeht, ist es sehr kontraproduktiv, Sätze manuell zu
füllen Wie dem auch sei, gehen wir
zurück zu unserem Array, das
mehrere Male aufnehmen kann, zum Beispiel muss man dafür
kompilieren Zum Beispiel ein Vielfaches von
Null, und es sollte vom Typ
Akteur ohne Typ sein. Okay, also eine Reihe von Schauspielern. Also haben wir diese kleine
raffinierte Liste von Schauspielern, die nicht gefüllt ist Wir werden Weihrauch
editierbar machen und wir werden es auch beim Spawn veröffentlichen, und wir müssen es kompilieren
und dann auf unsere Map gehen und unsere neuen Schauspieler mitbringen Bringen wir zwei Lebern mit, eine hier drüben und
eine hier drüben Und bringen wir die neue Tür
auch mit mehreren Puzzletüren. Ich werde
sie später besser ersetzen. Ich werde das Rätselfeld füllen. Also werde ich diesen
Knopf hier drüben noch einmal drücken, und ich
werde
den ersten als diesen und den zweiten
als diesen auswählen . Wenn nun die Reihenfolge wichtig wäre, wäre
es wichtig,
wie wir sie auswählen. Aber in unserem Fall werden wir nur prüfen, ob beide gelöst sind Nun, wir mussten
die Schauspieler jetzt nicht wirklich bauen, weil
der Code eigentlich die Schauspieler jetzt nicht wirklich bauen, weil lauten würde: Lasst uns den Code
erstellen. Schauen wir uns das
Rätsel Acers an und jetzt
bringen wir unser neues Rätsel-Array Jetzt werden wir einen neuen Knoten
entdecken
, der
für jede Schleife der richtige wäre Jetzt
gibt es neben den jeweils vier Schleifen auch eine Vierer-Schleife und
eine Vierer-Schleife mit Pause und eine
Vierer-Jeder-Schleife mit Pause. Und natürlich gibt es für jede Operation
eine Umkehrung. Nun, was ist ein Loop? Weil das gebräuchlichste Wort, wie wir hier sehen können, eine Schleife ist. Mit einer Schleife können Sie Aktionen
mehrmals so
schnell wiederholen , wie sie ausgeführt werden kann. Wie wir sehen können,
hat sie eine Ausführung in einer Hauptschleife und einen abgeschlossenen
Knoten als Ausführungsknoten. Und hier sind alle gleich,
mit Ausnahme der Pause. Pause bedeutet, dass wir
irgendwie anrufen können , um zu stoppen,
was auch immer das tut. wir zum Beispiel nach etwas
suchen und es finden, können wir aufhören, wenn
wir
es gefunden haben, und die Schleife abschließen. Und der andere Unterschied besteht darin , dass
wir jeweils
für diese beiden und für jede Schleife mit Pause einen Array-Eingang haben, während
wir diese manuell
so einstellen , dass sie eine
bestimmte Anzahl von Malen ausführen. Wenn wir zum Beispiel zweimal passieren
wollen, könnte
es eine Schleife 0-1 sein,
weil Schleifen und Arrays ebenfalls
wichtig sind und die anderen Container
mit Null als dem ersten Index beginnen, der ersten Zahl
der Elemente Wir werden Element Null haben, und dann werden wir
Element eins und Element zwei haben Das ist also auch wichtig. Lassen Sie uns das jetzt löschen und unsere
For-Schleife zum Laufen bringen. Also, was wir tun werden, ist, und hier kommt die
Botschaft, dass sie gelöst ist. Wir werden fragen, ist gelöst. Nein, wir nannten es gelöst. Ja, Nachricht gelöst. Nun, das gibt uns zurück, ob
es gelöst ist oder nicht, das Rätsel, nach dem wir fragen. Und außerdem nur eine Erinnerung daran, warum wir einen Schnittstellenaufruf
verwendet haben , weil
dieser vom Typ Actor ist. Es bedeutet also, dass es wieder alles
werden kann. Es kann ein Schalter und
ein Hebel und ein Schalter werden. Es kann ein Knopf werden
und ein Schalter kann zu einer Tür und einem Schalter oder etwas anderem werden.
Es kann alles werden. Wenn wir hier
den Klassentyp
statt Schauspieler hätten , hätten
wir P-Hebel, P-Hebel. Wenn wir diesen hätten,
könnten wir nur dieses Array würde nur
Lebertüren enthalten und wir könnten Informationen
direkt für sie abrufen. Dadurch ist es jedoch in der
Lage, jeden Akteur zu finden , der diese Art
von Blueprint-Schnittstelle implementiert Lassen Sie uns nun
die Logik dazu vervollständigen. Wir werden hier einen Zweig platzieren denn wenn wir nur eine Verbindung herstellen würden, den Rückgabeknoten hier drüben, würden
wir ständig für jeden Körper zurückkehren, ob
er gelöst ist oder nicht. Aber mit dieser Funktion werden alle Rätsel
überprüft, nicht nur eines. Der Rückknoten sollte also am Ende
passieren. Was wir nun tun werden, ist, dass wir, wenn
wir zum
ersten Mal ein
Rätsel finden, das nicht gelöst ist ,
diese Variable bewerben, diesmal
aber eine lokale Variable. Sie existiert also nur
in dieser Funktion, und wir werden sie tatsächlich
trennen. Wenn einer von ihnen falsch ist, werden
wir
die Viererschleife unterbrechen. Ja, benutze die Schleife
jeweils für Loop mit Pause oder mit Pause. Okay. Mit der Kontrolle
verbinde ich gerade alle Pins wieder. Okay, wenn wir also ein
Rätsel finden, das nicht gelöst ist, schalten
wir es aus und wir
werden die vier Schleifen durchbrechen Also
müssen wir ihm auch den
Standardwert True geben. Wenn das also nie kaputt geht, wird
diese neue Variable zurückgegeben. Geben wir ihr eigentlich
auch einen Namen. Nennen wir alles gelöst. Und das wird es vervollständigen. Lassen Sie uns nun
noch einmal kurz
von
Anfang an erklären , was wir tun. Wir gehen
unsere Rätsel durch. Wir haben eine
Standardvariable, eine lokale Variable, festgelegt. Das bedeutet, dass es
jedes Mal, wenn
es ausgeführt wird, als gelöst beginnt. Selbst wenn wir es bei der
nächsten Ausführung ausschalten, wird es als abgeschlossen beginnen,
da es sich um eine lokale Variable handelt. Jetzt lösen wir unsere
Rätsel mit einer For-Schleife. Wir prüfen, ob sie gelöst sind. Wenn sie nicht gelöst sind, schalten
wir diese Variable aus und
wir unterbrechen die Schleife und geben
das Ergebnis Also lass uns diesen Laden testen. Lasst uns die Schalter stellen. Platziere sie in der Wand.
Nun, nicht in der Wand, aber. Ist das nur drinnen? Nein, es ist auch das Gegenteil. Also drehen wir es. Und die Tür ist auch gegenüber. Ja, ich denke, es ist in Ordnung.
Vielleicht ein bisschen. Auf diese Weise. Okay, ich
lasse die Spieler anfangen. Ich werde es hierher verschieben. Kein Spiel. Willst du
die eine Rede benutzen? Oh, lass uns zuerst die Tür klappern. Es klappert. Zweiter
Schalter, und es ist entriegelt Großartig. Also sind wir auch
mit dieser Tür fertig. Angeblich können wir nicht schließen. Oh, vielleicht
sollte sich diese Tür nicht auf diese Weise öffnen. Vielleicht und geh einfach zur Stiftgrafik. Oh, es öffnet sich
gegenüber dem Spieler. Okay. Weißt du was? Wir lassen es
bei E. Wenn du willst, kannst
du mit dem Winkel spielen. Wir können das
einfach abschalten und auf 90 gehen, glaube ich. Ja, ich werde es nicht bei E.
belassen. Ich kann nicht, tut mir leid. Ich
kann nicht mit einem leben. Ich mache das. Ja, es
funktioniert korrekt. Denn wenn Sie den
Winkel immer 90 angeben die
Berechnungsrichtung grundsätzlich
deaktiviert Wie dem auch sei, wir sind fertig und wir haben den Zeitpunkt
erreicht, an dem wir die physikalischen Gegenstände herstellen
werden Ich schicke
dir den nächsten.
22. Einen Druckschalter für die Türaktivierung programmieren: Hallo und willkommen zurück
zu Unreal Engine Five, Blueprint Mastery, Türsystemen
und Zuvor hatten wir unser Multi-Puzzle,
Multi-Puzzle, abgeschlossen . Wir haben zwei Switches
hinzugefügt
und
ihnen eine Schnittstelle hinzugefügt, eine neue Schnittstellenfunktion, die wir SLP nannten, und
wir haben implementiert, dass, wenn SLT aufgerufen wird
, weil es sich um wir haben implementiert, dass, wenn SLT aufgerufen wird eine Funktion
mit einem zurückkehrenden Knoten handelt, es den
ESL-Status des Switches zurückgibt Benannt wurde auch nach E Salt die
gelöste Variable, die wir hatten ,
weil ich SL benannt habe, auch die
Variable der Schnittstelle, was zu einem Fehler führte, weil
wir nicht
zwei Namen haben können , zwei Variablen mit
demselben Namen, eine zurückgebende und eine
Variable des Blueprints. Dann haben wir weitergemacht und Lebertür
ein bisschen
modifiziert Am Ende haben wir tatsächlich
den offenen Winkel entfernt und
90 auf die Zeitleiste gesetzt Auf diese Weise haben wir
den berechneten Abschnitt umgangen und er öffnet sich zu uns hin und
nicht zur Treppe hin Wir haben auch die Tür zum Entriegeln des
Events geändert , um nach Antworten auf die Rätsel zu suchen Jetzt haben wir in
unserer Interaktion auch
die unverschlossene Tür aufgerufen unserer Interaktion , weil die Schalter die Tür
nicht aufrufen. Aus diesem Grund haben wir auch
diese Funktion zur
Beantwortung von Rätseln entwickelt , die das
Rätsel-Array von Akteuren
benötigte Das war
die neue Variable, die neue Container-Variable, auf
die wir gestoßen sind. Das ist im Grunde eine
Liste in einer bestimmten Reihenfolge. Um das aufzufüllen, haben wir
den Akteur zur Map hinzugefügt
und dann aus den Standarddetails des
Akteurs, und dann aus den Standarddetails des
Akteurs dass wir diese Variable verfügbar machen, zwei mit einem
Plus-Symbol hier drüben hinzugefügt, Array-Elemente, und wir haben
sie als diese beiden Schalter ausgewählt sie als diese beiden Schalter Wenn wir also überprüfen,
ob das Rätsel gelöst ist, verwenden
wir eine
Schleife mit vier Zeitpunkten — einen neuen Knoten, mit dem wir
die Liste der
Rätsel durchgegangen sind Liste der
Rätsel durchgegangen und gefragt haben,
ob sie gelöst sind Wenn sie nicht gelöst sind, haben
wir eine lokale Variable,
was bedeutet, dass, wenn
die Funktion ausgeführt wird, immer auf die
Standardvariable zurückgesetzt wird, und die Standardeinstellung war wahr Wenn sie also von gelöst ausgeht
und sie nicht gelöst ist, fällt
sie wieder ab und
unterbricht die Futterschleife Jetzt ist es an der Zeit, die
Umstellung vorzunehmen. Also lass uns unsere neue Karte öffnen. Stufe acht. Oh, wir haben
den Text nicht hier reingestellt und die Kollisionen sind etwas größer geworden und die Kollisionen sind etwas größer geworden
. Lassen Sie uns zuerst die
Kollision beheben Lassen Sie uns die Schalter auswählen und die Box ein wenig nach
draußen
bewegen , damit es leichter ist, mit dem Spieler
zu kollidieren Wir wollen dasselbe
für die andere Box tun. Ja, das ist in Ordnung, denke ich. Und lassen Sie uns auch den Rahmen
der Tür etwas vergrößern, denn wenn die Tür geöffnet ist, sollte
ich sie nur ein bisschen
weiter
schließen können und sie vielleicht wegen der Treppe
höher machen Ja, ich denke, das ist in Ordnung. Ja
, lass uns eine SMS mitbringen. Lassen Sie uns das tatsächlich duplizieren. Es ist in Ordnung, wenn wir das tun.
Lass uns den Text schreiben. Wenn ich auf den Text doppelklicke
oder wenn ich es schaffe, einen Text auszuwählen während ich
den Blueprint ausgewählt habe, kann
ich einfach auf den Text klicken Ich konzentriere mich sofort auf den Text und bringe ihn hierher. Und lassen Sie uns den Text so ändern
, dass beide verwendet werden können. Beides. Hebel zum Entriegeln der Tür Ordnung, bringen wir auch das Licht mit.
Wo ist das Licht Und die Kollision, lassen Sie uns
das ein bisschen so drehen. Vielleicht irgendwo hier. Ja, ich denke, das ist in Ordnung. Also, wenn wir reinkommen, äh ja. Ich denke, wenn ich
aus K käme, wäre das in Ordnung. Ich glaube, ich gehe einfach rein. Ja. Benutze beide Flüsse
, um die Tür aufzuschließen. Oh, hier
drüben gibt es zwei Flüsse. Großartig. Nun, neues Zimmer, fangen wir
mit den physikalischen Dingen an. Lasst uns diese Dinge bewegen
, weil das lustiger ist. Wählen wir sie also alle aus. Und es ist ziemlich einfach. Wir können einfach zu den Details gehen. Wir werden nach Physik suchen. Simulieren Sie Physik und
wir lassen die Einstellungen unverändert weil
sie
perfekt für das sind, was wir tun wollen. Wenn ich jetzt also zu ihnen gehe, sollten wir
vielleicht
den Vorsprung verschieben. Jetzt kann ich
diese Boxen herumschieben. Toll, aber wir sollten das
kleine Puzzle mit den Boxen machen. Das ist nicht genug. Was wir also tun werden, ist,
zunächst einen Switch zu
erstellen, indem wir dieses Mesh hier verwenden. Also lass mich zurück ins Zimmer gehen. wir zum Inhalt und gehen
wir zu Blueprints, klicken wir mit der
rechten Maustaste auf den
Klassentyp Neuer Blueprint Und nennen wir das BP-Schalter. Ja, weil das der Schalter
ist. Der andere war der Hebel. Der eine verwechselt die beiden. Öffnen wir nun den BP-Schalter und fügen wir etwas zu Srtic Mesh Es wird das
duplizieren. Wählen Sie den ersten aus. Ich werde es hier verankern. Gehen wir zu den Schaltern. Einzelheiten. Physik. Wir werden nach diesem statischen Netz suchen. Und wir werden es tatsächlich bis zur
Nummer eins implementieren. Das ist also dieser und der ohne Nummer
wäre die Basis. Suche es nochmal
hier und implementiere es. Ordnung. Als
Nächstes benötigen wir natürlich einen Kollisionsknotenpunkt. Also Kollisionsbox. Und wir werden
es auf die Größe
des internen Bricks skalieren und
es so weit nach oben schieben, dass es die Box nicht berührt,
weil wir nicht wollen es
vom statischen Netz selbst ausgelöst wird. Also werden wir es auch so dünn
machen. Vielleicht ein bisschen dünner. Ich werde deaktivieren. Ich kann es
tatsächlich von hier aus machen. Ich werde es 2.2 machen. Nein, 0,16. Ja, ich
denke, das ist in Ordnung Also muss etwas so nah dran sein,
um zu glauben,
dass es auf dem Switch liegt. Dafür
werden wir es verwenden. Das ist es, was wir zu diesem Plan
sagen werden , dass der Switch heruntergefahren werden
muss . Da ist
etwas an dir Also ich denke, diese Größe, nah an der Schachtel, ist in Ordnung. Okay, gehen wir zum Ereignisdiagramm
und wir benötigen
die beiden Überlappungsereignisse, die diesem Feld überschneiden
,
beginnen und beenden. Also werden wir die Anfangsüberlappung ermitteln und wir
werden die Endüberlappung ermitteln. Diesmal
werden wir das Casting nicht machen
oder die andere Komponente hat ein Tag, weil wir zwei Schalter
haben werden. Wir müssen zurück in unser Zimmer
gehen. Bringen wir sie
auf die Spielebene. Ein Schalter wird also
zum Beispiel hier sein, und sagen wir, der andere
Schalter wird vielleicht hier sein. Ja, lass es uns hier hinstellen. Ja, auf den einen
müssen wir eine Kiste stellen
und auf dem anderen
müssen wir auf uns selbst stehen, und dann geht die Tür auf. Und wenn wir den Auslöser
verlassen, wird
die Tür herunterfallen. Wir werden also eine
gewisse
Zeit haben , um durch diese Tür zu gehen. Also, wenn wir hier anfangen, ist die
Wahrscheinlichkeit größer, dass wir scheitern. Aber im Grunde entwickeln
wir hier gleichzeitig eine kleine
Spielmechanik Da es also die Möglichkeit
gibt ,
dass sich der Schauspieler
auf dem Switch befindet
und sich gleichzeitig eine Box auf dem Schalter befindet, können
wir dieses Mal etwas
anderes verwenden Gehen wir zurück zum Schalter wir uns unsere Box
und
holen uns überlappende Schauspieler. Das gibt uns eine Liste
mit allem, was die Box
überlappt,
allem, was sich mit
dieser Kollision hier überschneidet Es gibt einen
Klassenfilter, falls wir
nur nach einem bestimmten Typ suchen müssten , und dieser würde nur eine
Liste dieser bestimmten Klasse zurückgeben Aber für uns kümmern wir uns um
so ziemlich alles. Was wir also tun werden, ist, wie Sie sehen können,
dieses Symbol hier drüben,
auch ein Array-Symbol zu verwenden . Das zeigt uns an, ob wir zur Tür mit mehreren
Rätseln
zurückkehren . Siehst du, wir haben dieses Symbol hier, wohingegen wir es hier
mit einem leeren Feld in der Mitte haben. Im Grunde ist dieses leere Feld
nur ein Verbindungssymbol. Wenn ich also
zum Beispiel hier vorlese, können
wir sehen, dass das Feld gefüllt wurde, aber das ist leer. Ich will nur sagen, dass das
mit nichts zusammenhängt. Was wir tun werden,
ist,
die Länge dieses Arrays zu ermitteln. Und wenn es gleich Null ist, dann tun wir etwas
oder wir tun
nichts Unwahres oder Falsches Grundsätzlich erstellen
wir bei einer Überlappung,
falls sie nicht Null ist, eine Zeitleiste , auf der wir die Animation abspielen Wenn die Endüberlappung Null ist, kehren
wir die Animation um. Aber ich denke, das ist ein guter
Haltepunkt für diesen Fall. Ich werde
dich das nächste Mal sehen. Auf Wiedersehen.
23. Eine Tortür mit Blueprint-Systemen entwerfen: Hallo und willkommen zurück bei Unrealisierung der fünf Bluepin
Mastery Türsysteme Unrealisierung der fünf Bluepin
Mastery Türsysteme und interaktiven Portale. Zuvor waren wir
mit den Kollisionen der Multi-Puzzletür
fertig . Der Laden, der
diese beiden Puzzles annimmt, diese beiden Schalter,
um es zu öffnen Jetzt haben wir auch diesen Text hinzugefügt,
diesen Flow-Text-Entwurf, dass
wir diesen Text beleuchten werden, und wir sind weitergegangen und haben die Physik
auf diesen Boxen
aktiviert und
den Schalter-Blueprint erstellt, dem wir zwei
statische Maße hinzugefügt haben, um den unteren Teil und
den oberen Teil des Schalters
darzustellen , und eine Boxkollision, dass wir
ihn zu einem Drei-D-Parallelogramm
über dem unteren Teil gemacht haben ,
eine sehr dünne. Dann fuhren wir fort und
nutzten die Startüberlappungs - und
Endüberlappungsereignisse dieser Box-Kollision. Wir haben einen Zweig erstellt
, bei dem die Frage, die Bedingung
ist, dass wir diesmal alle
überlappenden Akteure Und wenn das eine Länge von
mehr als eins ist, dann fragen wir, ob das
im Grunde wahr oder falsch ist, mehr als Null oder weniger als
Null, weil es gleich ist Wenn es also weniger wäre, ist es
unmöglich, weniger zu sein, aber wenn es weniger wäre, würde
es immer noch wahr als falsch sein. Wenn wir
Null und höher sein wollten, könnte
es auch darunter liegen,
also gleich Null. Das würde
den Wert unter Null abdecken. Fügen wir also den Zeitplan hinzu. Gehen Sie zu Kabel zeichnen und
drücken Sie auf Zeitleiste hinzufügen. Geben wir nun die Zeitleiste und erstellen wir einen Flow-Truck. Lassen Sie uns zwei Punkte erstellen. Der erste ist
natürlich Null, Null und der zweite,
sagen wir, 0,5, zwei, eins. Ich passe es mit
diesen beiden Tasten an und verwende den La-Schlüsselrahmen und
kompiliere und speichere. Was werden wir nun im Update tun? Nun, ähnlich wie bei
der Änderungsrotation , die wir dieses Mal verwendet haben,
stellen Sie die relative Rotation ein. Dieses Mal verwenden wir die Option
„Relative Position festlegen“. Wir werden das
erste statische Netz bekommen. Wir werden die
relative Position festlegen. Wir werden es
verbinden, um es zu aktualisieren. Und wir werden
diesen Vektor aufteilen , weil wir
nur Zen ändern wollen. Deshalb werden wir Larp spielen und den Alpha hier
verbinden Nun, für den Wert brauchen wir von 02 vielleicht minus zehn Ja, minus zehn ist in Ordnung. Also geh zum Rückgängigmachen. Also minus zehn. Und das würde dazu führen,
dass es untergeht. Wenn wir es testen wollen, drücken
wir Play. Wenn ich darauf getreten bin,
ist es runtergegangen. Nun, es geht nicht nach oben,
vielleicht sollten wir
es ein bisschen
tiefer in den Boden legen , weil der Charakter nicht einfach hochgehen
zu können scheint. Ich vermute also, dass diese
Kiste auch schwer sein wird. Ja. Also schnappen
wir uns das. Wir werden es
hier runterdrücken und wir werden
die gleichen Reifen machen Gleiche gilt für diesen. Wir
werden es einfach so pushen. Ja. In Ordnung. Gehen wir jetzt zurück
zum Plan und lassen Sie uns die
entgegengesetzte Richtung erstellen Also werden wir
dieselbe Frage verwenden. Wir werden es kopieren und
einfügen und hier drüben,
und dann werden
wir es umgekehrt verwenden. Also werden wir
kompilieren
und speichern und es testen. Lass uns kompilieren und
lass uns Play drücken. Und geht runter, es kommt hoch. Es geht runter, es
kommt hoch. Großartig. Nun, da wir eine Goldbarre
in der Leber haben , von der behauptet wird, dass
sie gelöst ist, brauchen wir
dasselbe
für diesen Schalter Erstellen wir also, dass diese
Variable gelöst ist, und bringen wir sie hierher. Nun, wenn die Zeitleiste
fertig ist und es vorwärts geht, also schalten Sie die Richtung der Zeitleiste ein,
wir werden sie einstellen. Es ist zu zweit gelöst. Und tatsächlich können wir auch das Material
ändern. Wir nehmen das
statische Mesh, das ist unser Requisitenpaket, die Triggerbox, dieses
, das orangefarbene Und wir werden
Material festlegen . Wir
brauchen nicht zwei Referenzen, festes Material, und
das ist, glaube ich, Druckplatte auf
Druckplatte Und wir werden das auch
kopieren und es
auslösen, wenn wir die
Triggerbox verlassen. Nun ja, wenn auf der Triggerbox nichts
steht, müssen
wir auch verkaufen, es ist
gelöst. Wenn wir aussteigen. Wir werden nicht warten, bis der
gesamte Zeitplan abgelaufen ist. Nun, das ist eigentlich
eher ein Gameplay-Design. Wenn Sie zum Beispiel
warten,
bis die Timeline fertig ist, und sie dann ausschalten, oder wenn Sie sie
direkt ausschalten, wenn Sie sie verlassen, ist
es die Wahl des Entwicklers. Das ist nicht verpflichtend. Wir machen es also, wenn wir sofort aussteigen, anstatt zu warten, dass der
Knopf hochgeht Und das sollte der Plan für die
Druckplatte sein, nicht aktiviert. In Ordnung. Also lass uns das testen.
Wird grün, wird normal. Wird grün, wird normal. Siehst du, wenn ich zu schnell trete, dreht es sich schneller weil es von dort
weiterspielt, wo es war. Jetzt bringen wir ein Kästchen auf einen Knopf und schauen
, dass es nicht funktioniert. Der Grund, warum es nicht
funktioniert, ist, dass in
diesen Feldern in ihren
Kollisionseinstellungen standardmäßig die Option „
Überlappungsereignisse generieren“ deaktiviert ist. Wenn ich das aktiviere, bedeutet das, dass dieses Feld diese Kollision nicht
ignoriert. Aber wir wollen nicht, dass
das in jeder Box passiert. Wir wollen nur dieses Kästchen, das mit den Farben
und da steht Push. Also die anderen machen nichts, und bei diesem machen wir etwas. Also lassen Sie uns das einschalten,
um Überlappungsereignisse zu generieren. Lass uns kompilieren, lass uns Play drücken und lass uns dieses
Feld drücken, und es hat funktioniert. Und wenn ich hier sitze, funktioniert
das auch. Und der nächste Schritt wäre,
dafür zu sorgen, dass alles
zusammenpasst und die Tür entsteht. Lassen Sie uns das nun weiter vorantreiben, nur um zu zeigen, dass
es nicht funktioniert. Ja, es funktioniert nicht, aber wenn ich trete, funktioniert es. Fahren wir also mit dem Duplizieren
unserer Multi-Puzzle-Tür fort. Gehen wir also zu unserer
Multi-Puzzle-Tür
, um sie irgendwie zu finden Ich kann
hier drüben drücken. Nein, ich brauche es eigentlich im
Inhaltsbrowser. Und die Art, wie ich manuell vorgehe. Oh ja, dieser Knopf hier drüben. Wenn ich diesen Knopf drücke, führt
er mich dorthin. Also, wenn wir das
duplizieren, nennen wir
das BP-Multischaltertür. Lass es uns öffnen Und was wir nicht brauchen werden, wir werden keinen Input brauchen. Diese Tür öffnet sich von selbst und wir werden kein Klappern brauchen Das wird nicht benötigt werden. Wir müssen die Tür unverschlossen haben. Und wir brauchen nicht
den Anfang, wir tun es tatsächlich, wir können
ein Widget für diesen Laden machen, Beispiel etwas tun,
um diese Tür zu öffnen. Gehen wir also im Grunde zum Update des Widgets über. Dieser Laden wird zwei Staaten haben. Es wird geschlossen sein. Lassen Sie uns standardmäßig Schließen und dann Öffnen, einfaches
Schließen und Öffnen einstellen. Aber lassen Sie uns schließen und
öffnen einstellen. Ist eigentlich egal. Also, wenn es geschlossen ist, werden
wir sagen, aber beide Schalter
müssen gedrückt werden. Lassen Sie uns die ersten groß schreiben. Eigentlich nicht unter Druck gesetzt, wir
müssen in jedem anderen Fall sein, wir müssen nichts sagen Also beim Kompilieren von save haben wir einen
Fehler, weil wir
Rattle aufrufen , obwohl es kein Rattle gibt Und natürlich
brauchen wir die Vorderseite nicht. Wir müssen keine Richtungen
berechnen. Es spielt keine Rolle, ob es benutzt wird. Wir werden es dort löschen
, wo es verwendet wird. Wir brauchen also, wann es
geöffnet ist,
bis es geöffnet ist, wann
es kurz vor dem Öffnen ist, wann es geöffnet ist, um zu schließen. Und wir müssen nicht wirklich von Anfang bis Ende dabei
sein. Wir brauchen es, um dort weiterzumachen
, wo es war. Also das wird abgespielt
und das wird rückwärts gehen, weil diese Tür heruntergeht, wenn die
beiden Schalter aus sind, und wenn sie beide
an sind, wird sie hochgehen. Wir wollen
aber, dass es ein Geräusch abspielt,
wenn es das tut. Also werden wir Sound abspielen. Und Ton abspielen. Der erste
wäre ein Türlift und der andere wäre
auch ein Türlift. Aber wir wollen, dass
der, der
nach unten geht ,
etwas tiefer klingt, also wird er auf 0,8 Zoll steigen. Es klingt also tiefer. Und das wird uns glauben, und das war's dann auch
schon von den Klängen. Als Nächstes müssen
wir dieses Modell tatsächlich
ändern. Also werden wir unser Modell hier
suchen, nicht ganz
sicher sind, welches hier es ist. Das soll
ein Requisitenpaket sein. Ich werde es von hier aus finden. Ja, wir haben es gefunden. Und lass uns hierher
gehen und es hineinlegen Es ist falsch gedreht,
aber das spielt keine Rolle. Wir werden nur die Seite nicht
mögen. Oh, es hat das falsche Material. Ja, weil ich die Tür
gewechselt habe, aber das Material
ist gleich geblieben. Jetzt kann ich das
hier drüben drücken, um es auf die Standardeinstellung zurückzusetzen. Und das ist etwas
, das passiert ist. Wenn Sie das Netz ändern, bleibt
das Material des vorherigen Netzes
unverändert es
sei denn, Sie haben
ein Standardmaterial, das es in das
Standardmaterial des neuen Netzes ändert. Wenn Sie
das Material im vorherigen Netz jedoch überschrieben haben , wird
das überschriebene Material beibehalten Wie dem auch sei, lass uns
weitermachen, lass uns
die Tür etwas
weiter in die Mitte bringen die Tür etwas
weiter Ich denke, das ist ungefähr in Ordnung. Ich werde ein bisschen Druck machen. Okay, kompilieren und speichern. Und lass es uns auch
in die Karte aufnehmen. Gehen Sie zu den Bauplänen, gehen Sie zu den Türen und zur Tür mit mehreren Schaltern Wir hätten
es anders nennen können. Ist die Vorderseite
die Vorderseite, richtig? Cook könnte
etwas größer sein. Wir könnten es ein bisschen schaffen. Es dehnt es ein
bisschen aus, aber ja, ich mache es, ich mag
es ein bisschen größer. Es ist jetzt zu groß. Wie Sie sehen können, machen Sie das
niemals auf dem Bauplan denn wenn Sie
es mit dem gesamten Schauspieler machen, machen
Sie auch weniger
als die Kollisionen Also, selbst wenn es gut aussieht, funktioniert
es vielleicht nicht richtig Also, wenn ich das machen wollte, musste
ich zur Requisite
selbst gehen und es dann machen Ja, ich denke, das ist in Ordnung. Ich mache es ein bisschen größer
und ein bisschen kleiner. Ich kann das auch innerhalb
des Loopings machen. Ich kann all diese Änderungen rückgängig machen
und es einfach hier machen. In Ordnung. Machen wir die Kollisionsbox auch
ein bisschen größer. Ordnung. Also das wird auch
ein bisschen höher sein. Er. Nun, diese Tür lässt sich
nur auf diese Weise Wenn wir also auf diese Weise angefangen hätten, wären
wir blockiert worden Es spielt keine Rolle. Ich
glaube, das ist es für diesen. Beim nächsten werden
wir die Kodierung vornehmen, um die beiden
Schalter zu aktivieren und die Tür zu öffnen. Auf Wiedersehen.
24. Cheats für die Türmechanik von Torschaltern: Hallo und willkommen zurück zu den Portalen Unreal Engine Five
Blueprint Mastery, Door Systems Zuvor waren wir
fast fertig mit der Optik unserer Schiebetür, die sich mit der
Multischaltermechanik nach oben schiebt Jetzt waren wir mit der Timeline
fertig und haben von Anfang an
abgespielt, mit den sich überschneidenden Endereignissen
abgespielt oder umgekehrt Start Und als es fertig war, sagten
wir, dass es gelöst ist Aber als wir die Überschneidung beenden, haben wir gesagt, dass es nicht sofort
gelöst ist. Wir ändern
auch das Material und verwenden die
festgelegte relative Position. Wir haben auch
unsere Tür mit mehreren Rätseln dupliziert und einige Dinge gelöscht, und wir haben die
Türanimation, den Schalter, beibehalten Wir haben ein Wiedergabegeräusch hinzugefügt und
es mit dem Abspielen und dem
Rückwärtsgang verbunden, anstatt von
Anfang an und Rückwärts vom Ende abzuspielen Wir haben auch den E-Eingang gelöscht. Was wir löschen müssen,
ist das Widget „Tür hinzufügen“. Eigentlich
müssen wir das Addo-Widget nicht vollständig löschen Addo-Widget nicht vollständig Lass mich rückgängig machen. Okay, wir müssen es zu geschlossen
hinzufügen, weil
wir wollen, dass das Widget nur angezeigt wird,
wenn die Tür geschlossen ist . Wenn ich darüber nachdenke, muss
es überall einen Bug geben. Also lass uns spielen und
es ein bisschen testen. Ich glaube, es gibt einen
Fehler, dass
ich das Widget zeige, wenn wir die
Tür schließen und weggehen .
Also schließe ich es. Ja. Weil wir das Widget
hinzufügen, egal ob wir uns
in der Kollision befinden oder nicht. Um das zu beheben, müssen
wir also ein paar Dinge ändern. Aber das werden wir später
machen. Fahren wir jetzt
mit der Tür fort. Was wir korrigieren werden, ist hier ein paar Regeln hinzuzufügen, und in jedem Plan werden
wir nur einen
Verweis auf den Schauspieler schicken. Lassen Sie uns nun mit der
Reparatur der
Multischaltertür fortfahren und sie fertigstellen Was wir tun müssen, ist
zu unserer unverschlossenen Tür zu gehen. Lassen Sie uns zunächst eine
Schnittstelle erstellen, weil
wir sie duplizieren. Also werde ich auf Unlock Door
doppelklicken und das Interface-Event
erstellen. Ich werde es hierher bringen
und dieses löschen. Jetzt müssen wir überprüfen, Widget-Text aktualisiert
und geändert
wird , um das Widget zu entfernen. Also werde ich
den Code von hier kopieren. Ich werde ihn hier einfügen. Wenn wir also die Tür
aufschließen, wird
das Widget immer entfernt, auch wenn es in der Ansicht ist Und natürlich nennen wir
Türanimation, weil wir
beim Entriegeln diese Animation aufrufen müssen Das nächste, was wir
brauchen, ist eine Schleusentür, die gleiche, aber zum Verriegeln Also gehen wir
zurück zu unseren BI-Türen und wir werden ein neues Ereignis, eine
neue Funktion
erstellen , und wir werden
das Schleusentür nennen. Und wir
gehen zu unserer Tür und rufen
das Interface-Event auf. Und was wir von hier aus brauchen, das
muss eigentlich geschlossen werden, ja. Wenn das also geschlossen
ist und die Türanimation ausgeführt wird, wird
es geöffnet. Also brauchen wir das Gegenteil davon. Wir brauchen den
Sound hier nicht, weil wir hier schon
einen Sound abspielen. Wir brauchen die
materielle Änderung auch nicht. Es gab also ein paar Dinge
, die wir entfernen mussten, aber alles andere brauchen wir. Nun, eigentlich
brauchen wir das Entfernen-Widget auch nicht. Es muss also geöffnet
werden, und dann starten wir
die Hundeanimation. Wenn sie fertig ist, wird sie geöffnet sein, sodass
sie
den geschlossenen Ton abspielt und von wo auch immer sie sich gerade befindet,
rückwärts geht. Nun müssen wir diese Ereignisse
einberufen. Wir brauchten das eigentlich nicht,
also beschäftige ich mich damit, wie
wir diese Ereignisse nennen Nun, ziemlich einfach auf dem
Switch, den wir erstellt haben. Wenn wir mit dem
Drücken der Taste fertig , rufen
wir an, naja, wir brauchen
einen Verweis auf die Tür, also werden wir eine Variable
erstellen. Wir werden
es vom Typ Actor machen und wir können es vom Typ Actor machen weil wir das
Blueprint-Interface haben Lassen Sie uns diese Tür nennen und sie als Instanz
editierbar machen und sie beim Spawnen sichtbar sodass wir sie im Editor bearbeiten können und auch,
wenn wir sie von einem anderen Blueprint aus Editor bearbeiten können und auch starten Ich wähle das aus und wähle die Tür aus
und wähle dies und das
aus und wähle auch die Tür
aus Jetzt haben wir also einen
Hinweis auf unsere Tür. Wo ist der Schalter hier? Und wir werden
diese Türreferenz
und die Nachricht über die unverschlossene Tür bekommen . Schicken Sie die
Nachricht an die unverschlossene Tür hierher. Und dann müssen wir
die Lognachricht hierher schicken. Also beenden wir die Überlappung. Wir senden, dass
das Problem ungelöst ist, wir geben ungelöst und wir senden Lock Und wenn wir
beginnen, uns zu überschneiden, wenn die Zeitlinie abgelaufen ist, senden
wir Unlock Door Nun, theoretisch sollte das
funktionieren. Lass es uns überprüfen. Wir müssen zuerst auf dieses Feld drücken. Ordnung. Ich habe den Sound abgespielt, er hätte ihn nicht abspielen sollen. Also eine nette Situation
, den Debugger zu benutzen. Mal sehen, was los ist. Also werde ich die
Tür finden, den Schalter für mehrere Türen. Ich werde auswerfen. Ich werde
das herbringen Ich werde
es abdocken, den Zoom reparieren. Mach das ein bisschen kleiner. Mach das ein bisschen
größer, ein bisschen mehr. Hier ist es. Wählen Sie die
Multischaltertür davon aus. So nochmal.
Zurück zum Tutorial. Mal sehen, was es läuft. Eine Acht, die man wieder in Besitz nehmen muss. Also das war okay, zuallererst, es
macht Rotation, was es nicht sein sollte Aber warum
läuft es, um wieder zu injizieren. Also, das Problem ist hier vorbei, es ist so, dass das
Rätsel gespeichert ist Nun, im Moment sollte es gelöst
sein, weil wir das
haben. Aber hier ist
es so, als ob es gelöst ist, was nicht wahr ist. Wir haben kein Reihenrätsel, deshalb passiert es. Es sagt, dass es wahr ist
, weil es keine ausgewählten Puzzleteile gibt. Das ist eine interessante Tasche. Also vielleicht wäre dort ein Code notwendig, der besagt,
dass
er, wenn er Null ist , nicht geöffnet werden
sollte. Lass uns das auf den Switch verschieben. In Ordnung, ich habe nicht geöffnet. Ich ziehe hierher, aber das tut es immer noch nicht. Das hat den
Puls ausgelöst, also ist es in Ordnung. Okay, lassen Sie uns zunächst die Sache mit der Rotation
ändern. Es sollte sich nicht drehen. Außerdem habe ich das vergessen. Wir sollten nicht die
relative Rotation festlegen und das im
falschen Schema tun. Ich werde auch zurück
zum Switch gehen. Also die relative
Position löschen, die Lerche behalten, den offenen Winkel
löschen, die relative Position
festlegen Hier verbunden, hier verbunden, den neuen Standort
geteilt, hier
verbunden. Der ursprüngliche
Standort der Tür ist also vorbei. Das ist ein bisschen komplex, also sollten wir
es
zu Beginn des Spiels speichern, die relative Position als Promo zur Variablen hinzufügen und
es hier verbinden. Begin speichert die Variable. Und wir werden diese Variable
mitbringen. Wir werden Split Break machen. Wir werden X hier verbinden. Wir werden Y hier verbinden , weil wir wollen
, dass sie gleich bleiben. Und von Z aus wollen wir,
dass es zwei bis 13 wird. Nehmen wir an, 260
Rackley scheint okay zu sein. Wir werden später 60 in
Wordspace sehen. Also, jetzt sollte die Tür nicht,
ähm, zumindest nicht rotieren. Es geht nicht hoch, weil es gelöst werden
muss. Aber ich glaube, es gab einen Fehler, der sowieso
nicht aufgetreten ist. Okay, eine neue Klammer. Lassen Sie uns einen Code erstellen, um
diese Röhre an diese
Position zu bringen , wann immer wir wollen Wir werden diese
Position der Röhre kopieren. Wir werden zu dem
Level-Blueprint gehen, für den wir diesen Code
hier
erstellt haben, und wir wählen Tastatur eins Und wir werden auf dieses Feld
klicken und
einen Verweis darauf erstellen ,
weil ich es ausgewählt habe Und ich werde den Standort festlegen. Ich muss das hier einfügen. Eigentlich werde ich das
zu
einer Variablen hochstufen und es kompilieren
und hier einfügen. Nun, sehen Sie, ich könnte
diesen ganzen Vektor einfügen , weil
das im Grunde ein Vektor ist. Ich kann ihn von hier kopieren und einfach in eine neue Variable einfügen. Ich konnte es hier nicht einfügen, es gibt keine Möglichkeit, es hier
einzufügen. Ich kann es mit dem X einfügen, aber es fügt
alles in ein Feld ein. Also einfach das verbinden, nennen
wir dieses Feld Standort. Und lass uns das hier verbinden. Also im Grunde, wenn ich dieses Kästchen bewege und eins
drücke, eins
drücke, geht
es wieder nach oben. Toll. Jetzt könnten wir
einige Codes erstellen, um es
genau dort einzufügen, wo wir es haben wollen. Also lass uns das für Nummer zwei machen. Wie macht man das? Ich
werde es dort platzieren. Ich werde auswerfen.
Ich werde es auswählen Ich werde diesen Ort
erneut kopieren denn wenn ich dieses Feld jetzt verschiebe, ändert
es immer noch seinen Standort. Es wird live aktualisiert. Also werde ich aufhören zu
spielen und gehe zu Tutorial Map und
drücke Tastatur zwei. Und ich werde einen
neuen Vektor mit variablem Typ erstellen. werde kompilieren, den neuen Wert
einfügen, ihn Box, Trigger,
Speicherort
nennen und ich werde diesen Code
einfach duplizieren. Und es ist eine nette Gelegenheit
, dir etwas anderes zu zeigen. Wenn ich einen solchen Vektor habe, kann
ich mit der rechten Maustaste auf
den Vektor klicken und sagen, die Variable
durch die Position des
Box-Triggers ersetzen. Wenn ich hier also
auch andere Vektoren hätte , fügen wir weitere hinzu, zwei weitere. Ich könnte sie durch sie ersetzen. Wenn es sich also um
dieselbe Typvariable und Sie sich im
selben Blueprint befinden, können
Sie diese
Option hier haben. Also die Position des Triggers und Wirbelsäule müssen
das Ziel verbinden , denn für wen stelle
ich die Position ein? Lass uns spielen, und ich bin
super darin, Boxen zu schieben. Ordnung. Ich denke,
das reicht für diesen. Wir werden es in
der nächsten Lektion debuggen . Ich
werde dich dann sehen Auf Wiedersehen.
25. Fehlersuche und Optimierung des Torschalter-Türsystems: Hallo und willkommen zurück
zu Unreal Engine Five, Blueprint Mastery Door Systems Zuvor waren wir mit
unserer
Tür mit mehreren Schaltern, die nach oben gleitet,
fast fertig unserer
Tür mit mehreren Schaltern, die nach oben gleitet, Jetzt weiß ich irgendwie,
was falsch passiert ist. Bei den Switches haben wir nicht,
ich habe die Schnittstelle nicht eingebaut, also müssen wir die
I ViDoR Schnittstelle einsetzen Und wenn die Funktion gelöst ist, müssen
wir eine Verbindung herstellen, die
gelöst ist und es scheint,
als ob ich versehentlich auf die Tür geklickt habe
und einige Aktionen rückgängig mache, ich entferne die Puzzleteile, also füge ich sie wieder hinzu Der erste ist dieser
Schalter hier drüben und der zweite ist
der Schalter hier drüben. Stellen Sie sicher, dass Sie die Schalter
ausgewählt haben und nicht den Boden oder eine Wand. Also, theoretisch sollte es
jetzt funktionieren. Also, wenn ich zwei drücke, ist
das Telep da, und wenn ich hier stehe,
geht es sehr, sehr schnell hoch Es geht also sehr, sehr schnell runter. Also das gibt
mir nicht genug Zeit zum Laufen. Und das Widget ist ein
bisschen, wie Sie sehen können, es ist die Rückseite, auf der es
nur angezeigt wird, auch wenn ich mich nicht überschneide
, was wir später korrigieren werden Jetzt sagt es
auch nichts solange die Tür geschlossen ist Also lasst uns diese Kiste reparieren. Fangen wir mit dem Widget an,
das E anzeigt, wenn ich es
überschneide Und lassen Sie es uns tatsächlich auch
ein bisschen größer machen. Da es
sich bei dieser Geschichte also nur um diese Art handelt, werde
ich sie einfach hierher
bringen und sie ein
bisschen kleiner machen. Und das ist in Ordnung. Nun, warum sagt das
Widget nichts? Im Grunde genommen sagen
wir nichts, weil die Standardeinstellung geschlossen und nicht geschlossen
ist , und ich ärgere mich
beim Öffnen, um etwas zu sagen Das ist also ein Fehler. Da steht E,
aber wir werden uns nicht die Mühe machen
, das
E zu reparieren . Beide Schalter müssen eingeschaltet sein. Also drücken Sie zwei, jetzt sollte
es nur E sagen. Nein, sollte es nicht,
weil es geschlossen ist. Also, was wir
tun werden, ist
den Zeitplan etwas
größer zu machen den Zeitplan etwas . Ist das das Richtige? Nun, das ist nicht
die richtige. Tür mit mehreren Schaltern. Hier ist es. Gehen wir zur Timeline. Stellen Sie diese beiden ein.
Geben wir ihm etwas Zeit. Sagen wir 5 Sekunden. Aber das würde 5 Sekunden
für den Aufstieg und 5
Sekunden für den Abstieg bedeuten . Das wäre also eine langsame Tür. Also werde ich zwei drücken. Das ist eine langsame Tür, langsam rauf und
langsam runter. Ordnung, jetzt reparieren wir die
Tasche, dass, wenn ich hochgehe, der Ton abgespielt
wird Was wir tun werden, um das zu beheben, und wir werden dafür
einen neuen Knoten verwenden Wir gehen zu unserer Tür, der Tür mehreren Schaltern da drüben. In der Nähe. Nein, offen. Also im Grunde genommen, wenn wir die Tür schließen, bekommen
wir
den Zeitplan selbst, was wir noch nie gemacht haben. Die Zeitleiste ist auch eine Variable. Wir können es im
Komponenten-Stub finden. Wir können es selbst
als Variable finden. Das ist also ein Verweis
auf die Zeitleiste. Und wenn wir
unserer Timeline einen Namen geben , weil
dieser auch verfügbar ist, können
wir
auf der Timeline F zwei drücken und Animations-Timeline sagen. Wie Sie sehen können,
ändert sich das auch hier. Wenn wir also
mehrere Zeitpläne hätten, könnten
wir sie hier finden Also nehme ich das
als bessere Variable und ich nehme die Layback-Position Also, was macht Get
Clayback Position? Im Grunde genommen ruft es
die aktuelle Uhrzeit der Timeline ab,
wenn es abgespielt wird, es hat eine aktuelle Uhrzeit und das gibt sie zurück Was wir also tun werden, ist
, einen Zweig zu verwenden. Wir werden hier
einen ähnlichen Ton angeben. Wenn das Null ist, dann spiel nicht. Spielen Sie den
Sound grundsätzlich nicht ab. Lassen Sie uns das hier verbinden und false wird hier angezeigt, weil
es bereits abgespielt wird. Wenn es nicht abgespielt wird, machen
wir den Rückwärtsgang. Es gibt keinen Grund Es gibt einen
Grund, den Vorgang rückgängig zu machen, weil wir den Status
auf „Schließen“ setzen , weil wir
hier auf „Öffnen“ setzen. Also lass es uns testen. Kein Ton. Es funktioniert also. Es ist ein Ton zu hören. Es ist Ton zu hören. Wenn ich das wieder anziehe, ist
kein Ton zu hören. Also funktioniert es. Nett. Bringen wir das Textfeld mit. Bringen wir ein neues mit, weil
diese zu stark modifiziert sind. Fangen wir mit
dem schwebenden Text an, wo wir ihn hinstellen sollten,
sollten wir ihn hier platzieren. Was wird es sagen? Lassen Sie uns zunächst sagen, dass es sich um eine Schiebetür
handelt. Ich habe das nicht ausgewählt. Das ist eine Schiebetür. Ordnung. Lass es uns da drüben
hinstellen. Machen wir es auch für
eine Schicht in der Mitte. Vielleicht mache ich es
auch ein
bisschen kleiner . Ja, das ist in Ordnung. Bringen wir auch das Licht mit. Ich denke, das ist in Ordnung. Und die Kollision. Wann sollte der Spieler damit kollidieren? Hmm. Was auch immer du willst Ich mache einfach so
etwas. Und ich denke, es ist in Ordnung.
Vielleicht eher so. Ja, das ist in Ordnung.
Also lass uns telefonieren. Das ist ein Rutschversuch. Wir sehen das, wenn wir von hier aus reinkommen
, wir sehen das, es ist
eine Schiebetür, und wir lösen das Rätsel. Großartig. Nun, um
zusammenzufassen, was wir getan haben: Wir haben einen Switch-Blueprint erstellt, wir
die
Schnittstelle von BI-Türen hinzugefügt haben Im Ereignisdiagramm haben wir eine Animation
mit einer Zeitleiste
erstellt, und wir lösen die Ereignisse am Anfang und Ende der Überlappung aus,
sodass
sie auf der Grundlage der Regeln eine Nachricht
an die Tür senden, dass ich gelöst
bin, und versuchen, die Tür aufzuschließen
oder ich bin nicht gelöst
und die Tür
zu verriegeln Dann haben wir den
Bauplan der Tür erstellt, bei der es sich um
die Tür mit mehreren Schaltern handelt Und basierend auf der Nachricht,
die es sendet, entriegelt
es entweder die Tür,
wodurch versucht wird, sie zu öffnen , indem die
Türanimation abgespielt wird, oder wenn es verriegelt wird, kehrt
es die Animation um
und es wird die Tür verriegelt Gehen wir nun weiter
zum nächsten Raum. Wir werden
das kleine Auge öffnen. Also stimmt hier wahrscheinlich
etwas nicht. Also werden wir beide Augen
öffnen. Stufe neun und Stufe zehn.
Im Grunde ist es in Ordnung. Stufe neun, Stufe zehn,
ist nicht wirklich wichtig. Also hier, was werden
wir kreieren? Wir werden quasi den gleichen Mechanismus entwickeln, aber mit zwei Türen, die hoch und runter gehen, und wir hätten drei Knöpfe , die nacheinander
gedrückt werden müssten. Außerdem werden wir
einen separaten Plan haben, der
entscheidet, ob das Rätsel gelöst
ist oder nicht Und die Tür wird mit diesem Manager
kommunizieren, und der Manager wird mit der Tür
kommunizieren Die Tasten selbst werden also keine Interaktion
mit der Tür selbst haben. Dies ist ein weiteres Beispiel für einen Mechanismus
, der eine Tür öffnet. Aber ich denke, bevor wir weitermachen, sollten
wir diesen Fehler beheben, der erst nach dem
Schließen der Tür
aktiviert wird, und den
Rest beheben, weil es in
jedem Bauplan
mehr Arbeit bedeutet, dies
gegen Ende zu tun Also hier drüben erscheint der
Bauplan. Das Widget wird angezeigt. Und das
werden wir in
der nächsten Lektion tun. Vorerst auf Wiedersehen. Wir sehen uns dann.
26. Grundlagen für eine Knopf-Puzzle-Schiebetür: Willkommen zurück zu
Unreal Engine Five, Blueprint Mastery, Türsystemen Vorher waren wir
mit unserer Schiebetür fertig, unserer Multischaltertür, wir sagten, bevor wir
auf die Knopftür und den Manager gehen ,
das
Widget in allen Türen zu reparieren Also werde ich
hier oben alles
schließen , nur fast
rechts oben nach rechts, und ich werde gehen und
jede Tür in ihrer eigenen
Reihenfolge öffnen . Spielt keine Rolle. Wir wollen nur,
dass sie alle da sind. Und ich werde sparen. Und außerdem werden
wir den
Third-Person-Spielmodus benötigen
, den wir im
Third-Person-Blueprints-Spielmodus finden Wir haben also dieses
Tür-Widget bei Door Widget. Und von diesem
Tür-Widget aus können
wir tatsächlich
überall Referenzen finden, können
wir tatsächlich
überall Referenzen finden indem wir mit der rechten Maustaste klicken, Referenzen nach Namen
suchen und dann diese beiden
Umgangssprachen verwenden wir das benutzen,
öffnet sich eine neue Suche , die
uns überall zeigt , dass diese Funktion existiert, dass dieses Ereignis Was wir also tun können,
ist hier eine Eingabe
zu erstellen , die wir aufrufen werden. Es wird die
Typ-Box-Kollisionskomponente sein. Ich denke, diese Box-Kollision
wäre , lassen Sie mich sehen,
Kollisionskomponente. Jetzt schätze ich, dass die
Box-Kollision gut funktionieren wird. Also werde ich dieser Box einen Namen geben. Collider braucht vielleicht L, um ehrlich zu sein. Ich bin mir nicht sicher Ich werde es lassen,
weil es egal ist. Ich werde mir
überschneidende Schauspieler
von diesem Collider holen überschneidende Schauspieler
von diesem Collider Und ich werde bei der Klasse
für den Charakter in der dritten Person
nachfragen , ob das
natürlich Länge ermitteln ist, nur Länge,
nicht Länge Und wenn das über Null ist,
werde ich einen Zweig mitbringen. Ich werde Viewport hinzufügen. Hoffentlich
wird das Problem dadurch behoben. Jetzt
müssen wir nur noch zu
jedem Bauplan gehen und
die Werbetüren finden, die wir tatsächlich im Suchfeld finden
können.
Wo ist das Suchfeld geblieben? jedem Bauplan gehen und
die Werbetüren finden , die wir tatsächlich im Suchfeld finden
können Suchfeld Wo ist das Suchfeld geblieben Sie schließen es. Ich hätte es vielleicht
geschlossen. Hier ist es. Wir können also einfach auf jeden von
ihnen
doppelklicken und einfach den Box Collider aufrufen und auf den
nächsten klicken, um den Spielmodus Also werde ich auf diesen kommen und den Box Collider auswählen Also auf diese Weise werden wir keinen von ihnen
verpassen. Wir müssen nicht
wirklich manuell suchen. Wir können einfach zu jeder Veranstaltung gehen. Nun, das wird nicht empfohlen. Es könnte bessere
Möglichkeiten geben, dies zu tun. Aber es war eine gute Möglichkeit, die Suche oder
die Baupläne hinzuzufügen. Als ob es einen
Grund dafür geschaffen hätte. Nun, das ist keine
sehr gute Option, aber ich hoffe, es funktioniert. Das ist nicht viel, aber es
ist eine beachtliche Menge. Habe ich
den richtigen angeschlossen? Ja. Schließlich diese beiden, und es gibt nichts
anderes auf der Liste. Ja, das ist der letzte. Also ich schätze, dieses Mal testen
wir den zweiten Bezirk hier drüben,
eine weitere Tür mit
Tos, eine weitere Tür mit
Tos, und die Widgets wurden nicht hinzugefügt,
weil ich nicht hier drin war Also ich schätze,
wenn ich hier drin bin,
ja, es wurde aktualisiert Toll. Soweit ich sehe, zeigt
es beim Öffnen oder Schließen immer noch das E an, was ein Verhalten ist, das wir
nicht wollen. Um noch ein paar Probleme zu lösen, gehen
wir zur
Multischalter-Tür über. Das ist der eine. Also wenn es mir gut geht. Also, wenn ich schließe, sollten
wir das vielleicht überall
hinzufügen. Aber es ist in Ordnung. Was wir tun müssen, ist diesen Schalterstatus
hier
hinzuzufügen und zu sagen, ob sich die
Tür schließt oder öffnet, eigentlich nur zu diesem, glaube
ich, nicht zu allem. Wir müssen das Widget nicht einblenden
oder schließen. Spielt keine Rolle. Lass uns mit der nächsten Tür
weitermachen. Lassen Sie uns nun damit beginnen,
die Elemente für die neue Tür zu erstellen. Also brauchen wir einen Plan für
einen Schauspieler , den wir
PP-Button nennen Ich rufe an,
ich benötige auch einen Darsteller-Blueprint
, den wir PP Puzzle
Manager nennen Und dann werden
wir eine neue Tür brauchen. Also
gehen wir zu unseren Türen und duplizieren die Tür mit mehreren Schaltern. Ich nenne es
Knöpfe, Puzzletür. Lassen Sie uns jetzt automatisch speichern,
da es aufgetaucht ist. Die Art und Weise, wie
das funktionieren wird, ist, dass
wir zuerst
die Tür haben werden, die es nicht sein wird, aber nicht wirklich Das wird sich später ändern. Wir werden
die Tür haben,
wir werden das speichern. Also werde ich alles speichern,
was ich vergessen habe zu sagen. Diese Schaltfläche sagt alles, aber wir können auch Sichtungen steuern. Und wir können hier auch überall
Save finden. Wir werden also drei
Knöpfe benötigen. Lass uns zurückgehen. Lasst uns drei Knöpfe mitbringen. Eins, zwei, drei, eigentlich zwei, drei, und wir werden
auch den Button-Manager brauchen ,
den Puzzle-Manager. Ich werde
das herbringen. Das kann überall auf dieser Karte sein,
das ist nicht wirklich wichtig. Aber ich werde es hier
haben,
damit wir wissen, dass das der Manager ist. Nun, es
wird so funktionieren, dass die Knöpfe
über
den Manager Bescheid wissen und der Manager
über die Tür Bescheid weiß. So wird
es eigentlich funktionieren. Lassen Sie uns diese Referenzen erstellen. Also werde ich
hier alles schließen und einfach die Knöpfe,
den Manager und die Tür öffnen . Knöpfe rätseln ab. Okay, ich
muss sie hier einsperren. Kein separates Fenster. Ordnung. Und nicht
zur Tür zu den Knöpfen. Wir müssen eine
Manager-Referenz erstellen. Also eine neue Variable, du
wirst BP Manager anrufen. Ich werde nach BP Manager suchen. Eine Objektreferenz,
und wir werden das Puzzle-Manager
nennen. Das nächste, was wir brauchen
, ist , dass der Manager von der Tür
weiß. Im Manager werden
wir also eine neue Variable erstellen. Wir werden es nennen. Wir werden einen Bereich finden
und wir werden eine Objektreferenz aufrufen. werden es zu einer
Objektreferenz machen und wir werden
es von PP nennen. Beachten Sie, dass
ich hier einen Schauspieler verwendet habe, ich
hier
den Manager selbst verwendet habe. Der Grund dafür ist, dass wir
keine
neuen Schnittstellen oder ähnliches
für den Manager erstellen müssen neuen Schnittstellen oder ähnliches . Es ist
nur ein Manager. Wenn ich
viele Manager haben und ihnen ihre eigenen Nachrichten
schicken wollte , hätte
ich das als Akteur erstellen und
eine Schnittstelle einrichten können, um
Nachrichten an Manager zu senden. Wir müssen
diese Variablen auch editierbar machen. Da wir eine
Referenz im Editor benötigen. Und lass uns zum Editor gehen. Und jetzt, wo wir sie sichtbar
machen, warum sehe ich das nicht? Weil ich nicht kompiliert habe. Okay, jetzt, wo ich
kompiliert habe, hier ist es. Also werde ich den Manager
auswählen, und hier werde ich den Manager
auswählen, und hier werde ich den Manager
auswählen. Und der Manager
sollte die Tür kennen, also wähle ich die
Tür aus und speichere. Gehen wir jetzt auf den Grund. Lass uns den Plan öffnen. Wir benötigen zwei statische Meshes. werden das duplizieren,
und für den ersten suchen
wir unseren
Button. Hier ist es. Ich werde
den unteren Schalter wählen. Ich muss es im Browser finden und es dann hierher weitergeben. Und für den anderen habe ich sie umgekehrt
gemacht.
Spielt eigentlich keine Rolle. Ich finde es im Browser
und platziere es hier drüben. Gehen wir jetzt zur Tür. Wir werden ein
zweites statisches Netz benötigen. Ich werde dieses duplizieren. Und lass uns den ersten
auswählen und zu unserer Karte gehen. Finde heraus, dass sich die Tür öffnet. Finden Sie
es so und suchen Sie es im Browser und gehen Sie zur Tür
und geben Sie es hier weiter. Holen Sie sich den nächsten, suchen Sie
ihn im Browser, gehen Sie zum Blueprint und
geben Sie ihn hier weiter. Hoppla Ja, das sind die
richtigen Materialien, oder? Und ich werde
sie etwas
höher nach links bewegen . Und dieser ein bisschen kleiner. Und vielleicht hier und ein bisschen länger. Ordnung.
Lass uns die Tür überprüfen. Es ist ziemlich okay, ein bisschen nach links.
Ich denke, das ist in Ordnung. Vielleicht ein bisschen vorwärts,
ein bisschen weiter. Wie dem auch sei, ich denke, es ist in Ordnung
da drüben und die Knöpfe
müssen sich drehen. Dieser und dieser werden sie alle auswählen und
sie ein bisschen höher platzieren. Vielleicht sind diese ein bisschen ausgefallen. Das auch und ich denke, wir sind
bereit, mit der Programmierung zu beginnen. Aber wir werden
es in der nächsten Lektion machen. Also
erstmal auf Wiedersehen. Wir sehen uns dann.
27. Knopf-Puzzle-Mechanik für interaktive Türen: Willkommen zurück bei
Unreal Engine Five, Blueprint Mastery, Door Systems
und Zuvor waren wir
mit dem visuellen Teil,
dem Aufbau unserer Szene und der Gestaltung der Grafik
und der Botschaft
unserer Entwürfe für die neue Tür fertig dem Aufbau unserer Szene und der Grafik
und der Botschaft
unserer Entwürfe für die unserer Entwürfe Lassen Sie uns nun mit der
Programmierung des Managers fortfahren. Lassen Sie uns den Manager öffnen. Gehen wir zum Event-Graph. Und was wir hier brauchen,
sind zwei benutzerdefinierte Ereignisse. Und sagen Sie Taste auf einer anderen
benutzerdefinierten Biegetaste auf. Jetzt werden wir etwas kniffliges,
aber auch nicht viel Notwendiges
tun , aber es ist eine gute Möglichkeit, einen anderen
Variablencontainer zu demonstrieren. Wir werden den Map-Variablencontainer verwenden. Also werden wir dieses Gr BIP
duplizieren und es Puzzleteile
nennen Also gehen wir zu Containern und wählen
Kartencontainer Wie Sie sehen können, hier
ein zweiter Variablentyp
aufgetaucht
, den wir
auf Mobbing setzen Was haben wir hier eigentlich
geschaffen? Was ist dieser Kartencontainer? Nun, der Kartencontainer folgt der Regel, der der eingestellte
Container folgt. Das bedeutet, dass er keinen
doppelten ersten Variablentyp haben kann. Damit meine ich, der zweite Variablentyp mehrfach
derselbe
sein kann , egal. Aber der erste Variablentyp muss immer anders
sein,
kann nicht derselbe sein. Und diese Liste
entspricht natürlich der Art und Weise, wie
Dinge eingegeben werden Im Moment
haben wir es zum Beispiel sofort bearbeitet
und beim Spawn verfügbar gemacht und wir werden drei Variablen hinzufügen Ich muss es von hier aus tun,
weil ich jedes Mal, wenn ich eine hinzufüge, weitere hinzufügen kann, weil non-variable“
die erste Variable ist und sie als
etwas Einzigartiges betrachtet Ich kann also keine zweite hinzufügen. sehen können, kann ich also Wie Sie sehen können, kann ich also kein zweites
hinzufügen, aber wenn ich eine
der Schaltflächen
wähle, ist die Reihenfolge hier wichtig. Die erste Schaltfläche ist also die linke, so wie
wir sie gerade betrachten. Also werde ich
eine zweite Variable hinzufügen. Die zweite wäre die mittlere und die dritte Variable, die dritte
wäre die richtige. Da wir nun eine
Reihenfolge von eins, zwei, drei haben
und wir eine
entsprechende Schaltfläche haben, können
wir einen Code festlegen,
der die korrekte Funktionsweise dieser
Tasten angibt. Gehen wir also zurück zu
unserem Rätselmanager. Lassen Sie uns eine weitere
Variable erstellen, die wir als korrektes Passwort bezeichnen
werden Und es wird nicht vom Typ Map
sein, es wird vom Typ Array sein
,
und es wird vom Typ Boolean,
Container-Array
und Typ Boolean sein Container-Array
und Wir werden kompilieren und speichern. Wir werden
drei Elemente hinzufügen. Nehmen wir an, das erste und das
letzte sollten aktiviert sein, und das ist das
richtige Passwort. Wir könnten es auf
einem Spawn verfügbar machen und es editierbar
machen, sodass wir von hier aus
jedes beliebige Passwort festlegen können aus
jedes beliebige Passwort Denken Sie jetzt daran, so viele
Puzzleteile wir haben, so viele passwortkorrekte
Array-Elemente sollten Für diese Art von Puzzle
, die wir machen, so wie wir es machen. Gehen wir jetzt zurück
zum Puzzle-Manager. Und was wir tun müssen, ist
einen Schauspieler als Input
für diese beiden Ereignisse hinzuzufügen . Also werden wir
dieses Plus hier drüben platzieren. Wir werden Schauspieler hinzufügen und hier werden
wir auch einen Schauspieler hinzufügen. Und nennen wir es Puzzle und kopieren es und fügen es auch
in das andere Ereignis ein. Was wir also tun werden, ist, wenn wir einen Knopf
einschalten, werden
wir dieser Karte etwas
hinzufügen. Nun, warum werden
wir etwas hinzufügen? Weil Karten
die einzigartige Eigenschaft haben , dass, wenn wir etwas hinzufügen,
das bereits existiert
, nur der Wert aktualisiert wird. Wenn wir also eine Taste
einschalten, wir etwas hinzu. Wir werden den
Akteur hinzufügen, der bereits existiert, und wir werden
sein Goldbarren einschalten Wenn wir den Button entfernen, wenn
wir ihn ausschalten, wir den
gleichen hinzu, schalten ihn aber Das wird also unseren Wert
aktualisieren. Der nächste Schritt
wäre nun,
einen Zweig zu haben , den wir mit beiden
verbinden werden. Und hier werden wir die Bedingung haben , dass
wir eine Funktion erstellen, aber lassen Sie uns sie noch nicht erstellen. Als Nächstes sollten wir
unseren Dor-Blueprint abrufen,
sagen wir, eine Entsperrnachricht
oder eine Protokollnachricht Und stellen Sie eine Verbindung zu Wahr oder Falsch her. Denn wenn das Rätsel
gelöst ist, öffnen wir es. Wenn das Rätsel falsch ist, schließen
wir die Tür ab. Lassen Sie uns nun die Bedingung erstellen. Für die Bedingung
werden wir eine Funktion erstellen. Wir werden
es Rätsel lösen nennen. Eigentlich nur das Rätsel gelöst. Braucht kein Fragezeichen. Ich mag es nicht,
Fragezeichen
in Variablen oder Funktionen zu haben . Und dieser wird eine Ausgabe
haben, und sie wird rein sein weil wir hier nichts einstellen
werden. Das Ergebnis wäre, wenn
Tyrannen sagen, das Rätsel
auch gelöst und dann kompilieren und
speichern und was wir
hier machen werden, es ist ziemlich einfach Wir werden
unsere Puzzleteile holen. Nun gibt es zwei Möglichkeiten
, Werte und Schlüssel abzurufen. Den ersten nennen wir Kuss, den zweiten Wert. Also haben wir den Kuss bekommen, den Kuss bekommen
und wir haben die Werte,
eigentlich nur Werte. Wie Sie sehen können, bekommt dieser
einen Kuss, den ersten Teil, und dieser kriegt die Werte, was der zweite Teil
ist. Jetzt werden wir
einfach unsere Werte herausfinden. Und wir werden
unser korrektes Passwort bekommen und wir werden die Arrays
vergleichen Wie Sie sehen können, habe ich das Gleiche
gewählt. Ich habe gleich gedrückt,
aber es bringt
das auch identisch.
Das wollen wir. Diese beiden Arrays, da es
sich um eine Array-Ausgabe handelt, möchten
wir, dass sie identisch sind Wenn sie identisch sind, bedeutet
das, dass das
Passwort korrekt ist Wenn sie nicht identisch sind, bedeutet
das, dass das Passwort falsch ist. Lassen Sie uns kompilieren
und speichern, und so ziemlich
bringen wir die Funktion auch
hierher, das ist so
ziemlich der
gesamte Code des Managers. Das wäre es. Fahren wir nun
mit dem Button fort. Ich kompiliere
und speichere diesen. Und bevor wir nach unten gehen, ja
, lassen Sie uns zuerst
mit dem Button weitermachen. Drücken wir auf die Komponente
und fügen einen Doppelpunkt hinzu, mit dem
wir überprüfen müssen,
ob der Schauspieler vorne ist. Bringen wir es hierher, damit wir es
nicht extern skalieren müssen Machen wir es ein bisschen
größer als den Button. Ja, ich denke, das ist
ein guter Abstand, kompilieren
und speichern. Gehen wir zum Event-Graph. Gehen wir nun zum DR-Puzzle
und kopieren
diese Ereignisse hierher, und kopieren
diese Ereignisse hierher sie uns
das Widget zeigen
und die Eingabe ermöglichen. Wir gehen zurück zur Schaltfläche und fügen
sie hier ein. Das Update-Widget, wir werden eine
passende Funktion erstellen, bestätigen und wir
werden in
diese Funktion gehen , kompilieren und speichern. Es hat dieses Problem mit dem
Fehler im Spielmodus. Wir brauchen das Spiel
von Anfang an. Bringen wir das schnell. Also fangen wir an zu spielen. Ich werde tatsächlich alles
kopieren, zurück zur Schaltfläche gehen und sie hier drüben zeigen und diese Variable
erstellen, und jetzt wird sie kompiliert. Nun zurück zum Update-Widget Wir haben diesen
Code quasi in unserer Leber. Wenn ich also die Leber öffne
und zum Widget gehe, kannst
du das einfach kopieren und zurück zur Schaltfläche
gehen. Und füge es hier ein, verbinde es hier
und dann habe ich es gelöst, wir werden es benutzen oder
ob es gedrückt ist oder nicht. Also werde ich
es als Variable erstellen
und es in EEO umbenennen Und lassen Sie uns ändern in „
Lass uns“ oder weißt du was? Lass es uns ein
bisschen hübscher machen. Lassen Sie uns dieses
Update mit dem Text duplizieren
und das einstellen, wenn es aktiviert ist, schalten wir Und das wird eingeschaltet. Jetzt wissen wir genau, was es macht, wenn
wir es drücken. Und vergessen wir nicht,
den
Third-Person-Spielmodus zu verbinden , zu kompilieren und zu speichern. Zurück zum geraden Diagramm. Und lassen Sie uns unseren Input
E erstellen. Ich werde ihn hier drüben platzieren. Wir brauchen etwas Platz. Also
werde ich es hier drüben hinstellen. Also, Bolt E, hier ist er. Und das Erste, was wir brauchen
werden, ist der Zeitplan. Also werde ich eine Zeitleiste hinzufügen. Ich erkläre es dir gleich. Der Grund, warum wir
zuerst die Timeline benötigen, ist, dass wir
fragen müssen, ob sie bereits läuft. Also werde ich die
Timeline-Komponente hierher bringen. Ich werde beim Spielen fragen. Denn wenn es schon läuft, wollen
wir den Knopf nicht noch einmal drücken können
. Also werde ich einen Zweig platzieren, ihn hier verbinden,
ihn hier platzieren. Und wenn es falsch ist, bedeutet das, dass die Animation
der Schaltfläche beendet ist. Das ist also die Zeit
, um einen Sound abzuspielen. Ton abspielen. Und der Sound, den wir spielen
werden, ist Button. Nun, die nächste Frage, die nächste Frage wäre, ob eine Taste ein- oder ausgeschaltet ist. Also ich werde mich hier
verbinden. Und wenn es an ist, stelle
ich
es auf Es ist nicht an. Und wenn es aktiviert ist, stelle ich
es so ein, dass es an ist. Und dann werde
ich es mit
der Timeline verbinden, um es abzuspielen und umzukehren. Dafür bedarf es jedoch einiger
Erklärungen, da
diese Zeitleiste
einen anderen Ablaufverlauf haben wird. Also lass uns das
für das nächste Mal
lassen, dann sehe ich dich. Auf Wiedersehen.
28. Fertigstellung der Button-Puzzle-Schiebetür mit Blaupinen: Hallo und willkommen zurück
zu Unreal Engine Five,
Blueprint Mastery, Door Zuvor haben wir unseren Manager
erstellt und unseren Button gestartet Unser Manager besteht also aus
einer Puzzleteil-Map
,
in der wir in einer Variablen die Schaltflächen
haben, die in
einer bestimmten Reihenfolge sein müssen , und die zweite Variable
, die ein boolescher Wert ist, wir ein- und
ausschalten
, indem wir sie hinzufügen Und wir fügen es hinzu,
weil als Karteneigenschaft, wenn wir
dasselbe Element hinzufügen, es nur den Wert ändert Das Gleiche tun
wir nun, wenn wir den Wert entfernen, nicht entfernen, ihn
ausschalten, den zweiten
Wert,
den booleschen Wert, indem wir ihn wieder
hinzufügen, aber ihn wieder hinzufügen In einer Funktion
namens Rätsel lösen wir die Werte der Map
und
wir überprüfen, ob die Arrays vorhanden sind, und wir haben überprüft,
ob die Arrays mit dem richtigen Passwort-Array
identisch sind identisch Vergewissere dich, dass du jede Schaltfläche in
der richtigen Reihenfolge
ausgewählt hast , als du sie zu den
Karten-Puzzleteilen
hinzugefügt hast sie zu den
Karten-Puzzleteilen
hinzugefügt Nun, dann haben wir
etwas Code in unsere Schaltfläche kopiert, im Grunde das Verhalten
der Box, dass wir, wenn wir die Box
übersperren, Eingaben aktivieren und
das Widget aktualisieren und es zum Viewport hinzufügen und
es aus
dem Viewport entfernen Und wir ändern auch das
Update-Widget dahingehend, dass es „ausschalten“ und „
einschalten“ heißt und „
einschalten Lassen Sie uns nun mit
unserem dringenden Ereignis fortfahren , bei wir überprüfen, ob die
Timeline abgespielt wird. Wenn es nicht abgespielt wird, spielen
wir einen Sound und schalten die
Taste ein und aus. Nun, ich habe gesagt, dass
diese Zeitleiste
ein paar Erklärungen benötigt , warum wir aus der
Wiedergabe und umgekehrt abspielen. Und um ehrlich zu sein, selbst
wenn ich sie so hätte, wäre das nicht wirklich wichtig denn was wir innerhalb
der Zeitleiste tun
werden , ist,
einen Flow-Truck zu erstellen , der
bei Null anfängt, in Eins hoch und dann wieder auf Null zurückgeht. erste Variable
wäre also Null, die zweite Variable, sagen
wir, für eine Schaltfläche, sagen
wir, die Summe
sollte eine
Viertelsekunde sein, es ist eine Schaltfläche. Also 0,12 irgendwo da, 0,12. Sagen wir 0,12, der Wert ist eins. Und dann ist der
Wert bei 0,24 wieder Null Lass es uns auf den Bildschirm übertragen. Siehst du, ich habe es nicht ganz
hingepasst , weil ich dieses ausgewählt hatte. Um sie
alle einzupassen, wähle ich
sie alle aus, passe sie und wähle „Letztes Bild verwenden“. Nun, da wir
das rauf und runter gemacht haben, ist es eigentlich egal, ob
ich es rückwärts oder von vorne
spiele. Es ist wirklich wichtig, ob es das erste
war,
das ist es, was zählt. Beim ersten Mal
sollte es nicht umgekehrt sein. Es sollte im Spiel sein , denn wenn es das erste
Mal hier wäre, würde
es tatsächlich spielen wollen. Also ja, das erste Mal ist wichtig, das erste Mal ist wichtig, aus dem Spiel
zu kommen. Also bei Stürzen schalten wir
es ein und wir spielen. Was die Bewegung angeht, holen
wir uns unser Top Mesh und bringen es
hierher. Ich ziehe es per Drag & Drop. Ich werde den
relativen Standort festlegen. Wir werden das aufteilen. Lass uns den Standort überprüfen. Es ist Null, Null, Null, also wenn ich es so bewege, -1,6 Ich denke, das ist ein bisschen niedrig. Es wird nicht viel zeigen. Also vielleicht mindestens
drei minus drei. Ja, ich denke, minus
drei ist in Ordnung. Also zurück auf Null und wir werden in der weiten Richtung lauern Von 02 -0,3. Und für die Alpha
werden wir das verbinden. Und jetzt, weil wir
diese Folie hier oben haben, bedeutet
das, dass wir von Null
auf -0,3 und wieder auf Null gehen Jetzt müssen wir
dem Spieler anzeigen, dass der
Button ein- oder ausgeschaltet ist Also bekommen wir das statische Netz
und wenn wir fertig sind, werden wir das Material
ändern. Also legen wir das
Material fest und
verbinden es, bis es fertig ist. Und aus dem Material wählen
wir aus und die Auswahl wird
auf ISO basieren, und wenn es falsch ist, wird
es das
Material sein, das es jetzt hat, nämlich dieses. Und wenn es an ist,
müssen wir Requisiten an haben. Also Props, hier ist es. Also setzen wir Requisiten auf Wahr
und Requisiten auf Falsch. Was wir jetzt
tun werden, ist unser Widget zu aktualisieren. Also geht es an. Es heißt, einschalten oder ausschalten. Und wieder, basierend auf seiner
eigenen, bringen wir es wieder. Wir werden in die Filiale
gehen und unseren Manager holen,
und wir werden
sagen, Knopf an, wenn es
wahr ist , und Knopf aus,
wenn es nicht wahr ist. Und für das Puzzleteil brauchen
wir einen Verweis
auf diesen Schauspieler. Also, um das zu tun,
ziehen
wir einfach ein Kabel und rufen uns an. Und so beziehen wir
uns auf den Schauspieler, der etwas
tut. Es muss auf sich selbst verweisen. Rückblickend könnten diese
beiden also dasselbe Ereignis sein. Wenn wir zum Beispiel ein
Ereignis hätten und es würde hinzufügen oder entfernen und statt nach dem Puzzleteil zu
suchen, würden
wir einen booleschen Wert senden, und dieser boolesche Wert ist aktiviert,
würde genauso gut funktionieren, aber wir hätten die Map-Variable nicht
verwendet,
was eine nette Demonstration für diese Variable war Also alles Variablentyp, das ist auch v. Ich denke, wir können Also lass uns spielen. Lass uns
die Spieler bewegen, fangen wir hier von vorne an. Und zumindest glaube ich, dass
wir Knöpfe drücken können. Es schaltet das Widget aus,
wenn wir es drücken Nach ein bisschen
Seelensuche
finde ich heraus, was passiert,
und was passiert, ist,
dass wir die Tür kopiert haben. Wenn ich also die Tür verriegeln
und entriegeln anrufe wir zum Türcode gehen, entfernen
wir das Widget. Das wird also behoben
, wenn wir die Tür reparieren. Unser Knopf ist also so
gut wie fertig. Wir drücken, es wird grün, wir drücken
wieder, es dreht sich Und lass uns keine Zeit verschwenden. Fangen wir an der Tür an. Lassen Sie uns also den
Türplan öffnen. Wir brauchen in diesem Laden eigentlich
kein Widget, also brauchen wir nicht einmal
eine Kollisionsröhre, damit der ganze Code verschwinden kann Und auch der
Spielmodus wird nicht benötigt, aber die relative
Position wird nicht benötigt. Also werden wir das auch
löschen. Lassen Sie uns die Variablen erstellen. Wir brauchen eigentlich
keine dieser Variablen. Wir können sie alle sicher löschen. Lassen Sie uns offen halten
, dass wir es
umbenennen werden . Das brauchen wir nicht. Wir brauchen die dritte Person nicht. Wir brauchen im Grunde nur die
Tür und den Türwinkel, und wir brauchen auch nicht
die Funktionen. So gut, was die Funktionen angeht. Lassen Sie uns also die Türanimation entfernen und einfach das Ereignis
Tür entriegeln
lassen , weil wir die Ereignisse und
das Schloss kopiert und gelöscht haben. Und im Grunde
brauchen wir diesen ganzen Code auch nicht. Wir brauchen eine Filiale, und am Ende werden wir die
Position ändern. Wir brauchen das Widget nicht und wir brauchen die
Türanimation nicht. Also werden wir
diese beiden Ereignisse mitbringen und wir werden den Zeitplan
und den Code, der damit einhergeht,
beibehalten . Jetzt ist uns
der Status wirklich egal, weil es eine
Direktnachricht ist, Sperren oder Entsperren. Wir werden diese Filiale nicht brauchen. Wir werden diesen behalten, der
den Code hat : Wird die
Timeline schon abgespielt? Bringen wir es her. Und der Grund, warum wir diesen Zweig
wollen ist, dass wir die Sperranimation nicht noch einmal abspielen sollten,
wenn die Timeline wieder auf Null
steht , wenn
wir
die Tür verriegeln. Wir sollten
nicht einmal den Sound abspielen. Also werden wir
die Forts mit dem Sound verbinden, und ich werde
das mit dem Sound verbinden, und wir müssen einen Sound wählen Und das Geräusch ist ein
Schiebetürrohr. Also werden wir es auswählen. Und natürlich werden
wir für
die Sperrseite den Multiplikator auf 0,8 ändern Wenn wir entsperren, wollen wir spielen. Und wenn wir sperren, wollen
wir rückwärts fahren. Hier gibt es einen Code, den wir nicht brauchen. Und lassen Sie uns
das zur Seite legen, weil wir etwas Platz
brauchen
, um fast das Gleiche oder den zweiten
Teil der Tür zu machen. Also werde ich das hierher bringen. Ich werde den eingestellten Verwandten kopieren und einfügen
. Ich werde das
hier verbinden, das hier verbinden. Und ich werde
das LARP duplizieren und es mit Z
verbinden und auch Alpha verbinden Und dieser offene Winkel, nennen
wir ihn Open Displacement Und bringen wir es
hierher und
verbinden es hier und hier mit B. Das ist
also unser Ziel. Nun, eigentlich muss
einer von ihnen minus eins multipliziert werden Schauen wir uns also an
, welcher welcher ist. Tür Nummer eins
ist also der untere Teil. Also das wird untergehen. Und die Verdrängung
ist da, nein, nein, nein. Das ist auch eine Menge. Also gehen wir auf minus zehn, weil es nicht von
vorne angefangen hat. Also ja, minus zehn von 124. Also 130, wenn ich 130 plus 130 addiere, sind
das 230 plus 130. Nein, tut mir leid, ich habe es falsch gemacht. Ich muss am
Ende 130 hinzufügen. Ja. Also 254. 130 scheint der
Trick zu sein. Also lass uns hierher gehen. Nehmen wir an, die Verschiebung, die wir kompilieren
müssen, ist 130. Und der zweite
ist der erste. Ja, der erste ist der
, der das Gegenteil sein muss. Also multiplizieren wir das mit minus
eins, um es negativ zu machen, und wir verbinden das hier. Ich denke, das ist es und
wir können es testen. Lass uns spielen. Lass uns zuerst
unseren eigenen Mantel anziehen. Nein. Nein. Ich habe etwas wirklich Seltsames gemacht. Also, und um ehrlich zu sein, macht
es Sinn, weil
die Werte nicht Null sind. Wir haben diese Werte nicht
auf Null gesetzt. Und das ist mein Fehler. Das sollte die Schiebetür
sein, und ich habe die offene
Auf- und Ab-Tür hinzugefügt. Ich weiß nicht, wie ich es erklären soll. Also werde ich tatsächlich den zweiten Teil
löschen und einfach
die richtige Tür einbauen. Ich werde den ersten Teil auswählen. Und ja, weil das die Schiebetür
ist. Ich wähle das aus, finde
es im Browser und stelle es hier hin. Repariere auch die Waage. Jetzt ging es sehr
langsam voran, weil wir
aus der Timeline durch die
Schiebetür kopiert hatten , das Umdrehen. Es sind also 5 Sekunden. Wir können das auf 0,5 ändern. Und das wäre es. Und das
zweite Türset brauchen wir nicht. Also verbinden wir das hier wieder
und löschen das zweite LARP
und die Verschiebung, die
wir gleich sehen werden Das sollte auf Y sein, nicht auf Z. Wir gehen nicht auf und ab, wir gehen nach links und
rechts, also das wäre es Wenn das auf Null, 00 steht, nehmen wir an, es bewegt sich hierher. Also minus 140. Also setzen wir hier minus 140 ein, minus 140 und kompilieren speichern Lass uns spielen gehen. Es ist nicht
richtig positioniert. Ja, ich denke, das ist
in Ordnung. Lass uns spielen. Ordnung. In Ordnung,
es funktioniert Nun, wie Sie sehen können,
weil diese beiden Schaltflächen sehr nahe beieinander
liegen
und wenn ich sie auswerfen sollte und
es zu Kollisionen kommt, habe ich
beim Verlassen dieser diese bereits eingegeben, sodass das Widget entfernt wird Lassen Sie mich das noch einmal demonstrieren. Wenn ich hier bin und hierher gehe, wird ein Widget entfernt und wir können es nicht sehen. Was wir also tun können, ist
das ein bisschen weiter zu verschieben, vielleicht hier, es
ein bisschen weiter zu bewegen. Und das würde das Problem beheben. Eine andere Möglichkeit,
das Problem zu beheben, wäre, ein System
zu entwickeln, das dies
überprüft. Ich höre beim Entsperren nicht wirklich einen
Klangunterschied. Vielleicht sollte das ein Rohr mit
niedrigerem Punkt sein. Das ist eine Menge. Also lassen wir es bei 0,7
und ich denke, es wird alles gut werden. Und vielleicht
sollte die Tür etwas langsamer sein. Also lass uns eine Sekunde draus machen. Ich denke, die Lautstärke
des abgespielten Tons sollte der Menge entsprechen, in der sich die Tür bewegt. Ja, vielleicht 1,2, aber lassen wir es so wie es ist und wir sind
bereit für den nächsten Raum. Welches wäre die Tür
, die mit einem Gegenstand geöffnet wird. Wir werden kein
ganzes Inventarsystem einrichten. Wir bringen das auch her. Und wir
brauchen hier tatsächlich einen Text. Ich werde das hier drüben kopieren
. Und so ziemlich ist es gut. Wir werden einfach die Boxgröße
ändern und sie so einstellen. Das ist in Ordnung. Und lassen Sie uns den Text auch so
ändern, dass das Rätsel so , dass die Tür geöffnet wird. Und es ist in Ordnung so wie es ist. Vielleicht einen
Doppeltritt, etwas
weiter bewegen . Okay, es ist in Ordnung. Also, nebenan, die nächste Tür
wird Inventar benutzen, und was ist eigentlich
Inventar? Im Grunde ist es eine
Liste, sonst nichts. Dann hast du in dieser
Liste einige Elemente. Und aus diesen Elementen zeigst du sie
entweder in der Benutzeroberfläche oder du manipulierst sie in deinem Spiel
mit anderen Dingen Wir werden keine Benutzeroberfläche erstellen
, die diese Liste repräsentiert, aber wir werden wissen, ob wir das Objekt
haben oder nicht Also werden wir
diesen Ball das nächste Mal verlassen .
Wir sehen uns dann. Auf Wiedersehen.
29. Ein Inventarsystem mit auswählbaren Artikeln erstellen: Hallo und willkommen zurück bei
Area Engine, fünf Blueprint
Mastery Türsystemen und Beim letzten Mal haben wir die Tür mit
unseren Knöpfen fertiggestellt , die
sich durch Schieben öffnen lässt Nun haben wir drei Schaltflächen
erstellt
und einen Manager erstellt, in dem
wir die Informationen
der Schaltflächen speichern. Der Manager hat auch
ein korrektes Passwort. Wenn sich die Tasten also
in der richtigen Reihenfolge
oder im richtigen Zustand befinden , kann
die Tür entriegelt werden. Im Grunde wird die Tür entriegelt. Wenn sie falsch sind, schließen sie die Tür
wieder ab. Lassen Sie uns nun
mit unserer Bestandsaufnahme fortfahren. Wie wir bereits sagten, ist ein
Inventar nur eine Liste. Also, was wir tun werden, gehen
wir zu unserem Charakter aus der
dritten Person in den Blueprints des
Third-Person-Ordners, Charakter in der
dritten Person, und zu unserem Charakter in der
dritten Person, und
wir werden
eine neue Variable erstellen Und wir werden sie Erfinder
R
nennen . Diese Variable wird vom Typ Zeichenfolge
sein und es wird ein Array sein Es gibt viele
Regeln darüber, um welche Art von Behälter es sich bei
dem Inventar handeln sollte. Aber für uns reicht eine Zeichenfolge aus, da
wir unseren Artikeln nur
eine ID geben. Lassen Sie uns also mit der
Erstellung unseres Artikels fortfahren. Wir gehen zu Blueprints. Wir werden mit der rechten Maustaste klicken. Wir werden einen neuen
Plan erstellen: Klassentyp Schauspieler, Klassenschauspieler, und wir
werden ihn BP-Gegenstand nennen Ich werde es öffnen.
Ich werde all diese Dinge schließen, wir
brauchen den Charakter auch nicht, wir haben nur das Inventar erstellt. Wir werden nichts weiter
tun müssen. Das wäre unser
Inventar, diese Liste. Eine
Benutzeroberfläche zur Darstellung dieser Liste wäre der visuelle
Teil des Inventars. Aber abgesehen davon ist es
im Grunde eine Liste, und diese Liste
könnte Statistiken
über die Artikel aufrufen. Aber wir werden jetzt nicht auf
Datentabellen und
so weiter eingehen . Gehen wir also einfach zurück zu unserem Artikel und
fügen wir seine Komponenten hinzu. Zuallererst benötigen
wir also ein statisches
Netz, um das Objekt darzustellen. Wir werden es jetzt nicht
einrichten. Das nächste, was wir
brauchen werden, ist eine Kugelkollision. Nun, warum eine Kugel kein Würfel,
keine Kiste ist Weil es für Gegenstände ein
bisschen einfacher ist , sphärisch
zu kollidieren. Bei Wänden
mit Al
erkennt der Spieler zum Beispiel das Muster nicht. Es gibt viele Hypothesen darüber, warum es sich um eine
Kugel oder nicht oder um eine Kiste handeln sollte. Ich persönlich bevorzuge
eine Kugel für Gegenstände. Das dritte, was wir benötigen
werden,
wäre eine rotierende
Bewegungskomponente. Wenn ich darauf klicke, werden
wir sehen, dass
es ein bisschen
von der Hierarchie abhängt. Wenn ich das schließe,
gehört es nicht zum Standard-Root Nun, das liegt daran, dass dies eine unabhängige Komponente
ist, ein Verhalten, das an
einen Blueprint angehängt werden
kann und wir unsere eigenen
Blueprint-Komponenten
erstellen können unsere eigenen
Blueprint-Komponenten
erstellen Lass es mich dir ganz schnell zeigen. Gehen Sie zum Blueprint-Kurs
und wir können aus
einem Blueprint eine Schauspielerkomponente machen einem Blueprint eine Schauspielerkomponente Nennen wir das meine
Schauspieler-Komponente. Ich habe die Leertaste gedrückt,
anstatt dies zu tun, und lassen Sie uns mein
C bearbeiten. Wie Sie sehen können, handelt es sich bei diesen Komponenten um separate
Entitäten und sie gehören
nicht zur fehlerhaften Wurzel Lösche das nicht, weil
wir es nicht brauchen. Und hier könnten
wir ein gewisses Verhalten für alle Schauspieler programmieren lassen Zum Beispiel
hätte das
Widget-Verhalten so sein können, dass wir die Kollision und
alles mit dem Schauspieler nicht wiederholen müssten die Kollision und
alles mit dem Schauspieler nicht wiederholen Darüber sprechen, diesen Code
wiederholen. Lassen Sie uns die
Tür mit mehreren Schaltern öffnen, ist wirklich egal. Eine Tür, die das
Verhalten des Widgets hat. Also werden wir das kopieren. Wir gehen zum Artikel und
fügen ihn hier ein. Ich werde
eine passende Funktion
für das Widget-Update erstellen , die wir jetzt
einfach ausfüllen. Ich gehe zu der
anderen Funktion hier drüben. Ich werde das kopieren
und hier einfügen. Promote ist weiterhin verfügbar , da dies der
Third-Person-Spielmodus ist. Ich sage hier, wähle Kompilieren und die Box muss zur Sphäre
wechseln, hm Jetzt haben wir ein Problem. Das ist eine Kugel und
das ist ein Box Collider. Das könnten wir einfach ändern. Aber was wir tun werden,
ist einfach diese Funktion einzugeben statt
Box Collider in Actor Component zu
ändern Box Collider in Actor Component zu Eine Objektreferenz. Ich werde das abschalten. Ich werde
einer Komponentenbox vertrauen. Ich denke, das ist eine Box-Komponente. Konvertiere es in eine reine
Besetzung. Lass uns einen Ast anlegen. Eigentlich nein. Lass es uns
einfach so lassen, wie es ist. Lass es uns hier verbinden und dann werde ich
auf Sphere casten. Die Sphäre ist nicht so verteilt. In eine Kugelkomponente umgewandelt. Ich werde es drunter bringen. Also wenn es das ist, werden
wir das tun. Und kann ich das auch tun? Okay. Also müssen wir
es in eine reine Besetzung umwandeln. Ich werde
diese Dinge abschalten. Ich werde
das in Pure Cast umwandeln. Ich werde das
auch mit einer reinen Besetzung verbinden. Und ich werde eine Auswahl treffen. Ich werde das hier verbinden. Also, wenn es wahr ist, wenn es falsch ist, machen
wir diesen Zweig, und ich werde ihn hier
verbinden. Also zurück zu unserem Gegenstand, wir können den Speer anschließen Also, was habe ich gerade gemacht? Was ich getan habe, war zu unserer Veranstaltung
im Freien zu gehen. Ich habe mich verändert. Lass uns trotzdem die Box
auch Collider benutzen. Der Typ von der Box-Komponente von der Box-Kollision zur
allgemeinen Akteurkomponente Dann ging ich weiter und fragte: Ist diese Komponente eine Box? Wenn es eine Box ist, dann alles gut,
überlappende Schauspieler. Wenn es sich um eine Kugel handelt, dann ist alles
gut, wenn sich die Schauspieler überschneiden. Ich denke, das ist ein
bisschen übertrieben, aber lassen Sie uns überprüfen, ob es funktioniert Ich gehe also zurück zu einer Tür, wo ist der Anfang Lass uns Play drücken. Es scheint nicht zu funktionieren. In Ordnung. Also habe ich gute Tests gemacht. Es hat funktioniert. Wenn ich jetzt bete, muss
ich nur
diese Pläne neu kompilieren Ich habe quasi die Lebertür geöffnet
und das wurde nicht kompiliert. Es gab eine Warnung,
weil sich die Dinge geändert haben, aber sie haben sich nicht viel geändert, aber sie haben sich auch geändert. Wenn wir also zu jedem
Blueprint gehen und kompilieren
, können wir meiner Meinung
nach einfach alles speichern Wir sagen alles, kompiliert es alles? Hab einen Absturz. Ja, siehst du, weil
das nicht kompiliert wurde. Area mag es wirklich nicht, das in Bauplänen zu
machen. Weder in SE Plus Plus
noch in einer anderen Programmiersprache müssen
Sie Dinge wirklich
kompilieren Das Kompilieren von Blueprints
ist jedoch viel schneller. Sie drücken einfach die
Kompilierungstaste und es passiert sofort Aber aus diesem Grund
sagen sie auch , dass es nicht
viele Änderungen am Code geben sollte. Wenn Sie zum Beispiel einen Kerncode haben, sollten
Sie ihn nicht wesentlich ändern. Ich denke, das ist es. Ich glaube,
ich habe alles zusammengestellt. Großartig. Jetzt werde ich
alle Ups nach rechts schließen. Ich werde den Artikel einfach behalten. Und lassen Sie uns die anderen Fehler beheben. Der andere Fehler ist nun
, dass wir nach
einer Box-Überlappung suchen , bei der wir die Kugelüberlappung
haben. Also
klicke ich auf die Kugel,
gehe zu den Überlappungsereignissen und
beginne mit der Überlappung und der Überlappung. Es sind im Grunde
dieselben Ereignisse, nur für die Kugel
und nicht für die Box. Also werde ich diese Kabel hier steuern und
anschließen. Stellen Sie sicher, dass Sie
es an die richtigen anschließen, andere Komponenten und an
nichts anderes. Ich werde das
hierher bringen, das hierher bringen, und vielleicht
hätte ich den Code
von Anfang an schreiben sollen ,
aber wir müssten das trotzdem
ändern. also funktioniert zu haben, dies in eine
allgemeine Schauspieler-Komponente zu ändern und auf die
Speer-Komponente und die Box-Komponente scheint also funktioniert zu haben, dies in eine
allgemeine Schauspieler-Komponente zu ändern
und auf die
Speer-Komponente und die Box-Komponente umzusteigen Und jetzt können wir im Grunde jeden Collider
zwischen diesen beiden
haben, oder wir können diesen Wert erhöhen oder hier im Grunde ein anderes
System
oder einen vorherigen Schritt
machen oder einen vorherigen Jetzt, wo wir
das Update-Widget haben, brauchen
wir eigentlich noch einen letzten Teil Wir brauchen den Spielmodus. Nein, tut mir leid, nicht dieser
Spielmodus und die Besetzung an GM. Nein, in den Third-Person-Spielmodus, konvertiere in Pure Cast. Und ich bringe einen
Setter mit und stelle das jetzt Lass uns unsere
statischen Maße festlegen Um das zu tun, gehen
wir zu
Construction Script und lassen uns ein
Mini-Artikel-ID-System erstellen Nennen wir es Artikel-ID-System. Wir werden also eine neue Variable haben. Es muss eine Zeichenfolge sein, und nennen wir es Element-ID. Jetzt machen wir es
instanzeditierbar
und werden es beim Spawn verfügbar Jetzt werden wir
unser statisches Mesh bekommen. Wir setzen statisches Mesh, weil das
nicht dieses festgelegte statische Mesh ist, setzen statisch die Funktion
set static mesh, das ist die Komponente. Wir wollen die Funktion einstellen. Warum also die Funktion? Weil es sich um ein statisches
Komponentennetz handelt
und wir das
Netz dieser Komponente festlegen möchten. Wir werden eine
Auswahl treffen, die wir mitbringen. Wir können nicht eine
Auswahl und eine Zeichenfolge machen. Wir werden also
die Zeichenfolge einschalten. Ich werde diese Auswahl löschen. Ich werde das duplizieren und das hier
verbinden. Nehmen wir zwei Fälle und gehen wir hier zu Fall Null und
hier zu Fall eins. Gehen
wir nun für die statischen Maße zu unserer Karte. Wählen wir unser leeres Dreieck aus,
nicht unser Kragendreieck. Ich werde das Spiel auch schließen. Wir brauchen es nicht. Ich muss es
finden und hier hinzufügen. Das gleiche gilt für
das nächste Dreieck. Wir werden es finden
und hier hinzufügen. Lassen Sie uns nun die Argumente vorbringen. Also werde ich
das sagen lassen, um eins zu identifizieren. Ich bin hierher gekommen, indem ich
die Schalter-On-Zeichenfolge ausgewählt habe,
und
auf der zweiten steht ID zwei. Und ich werde
den Standard-Pin entfernen. Die Verbindung wurde unterbrochen
, weil ich den Namen geändert habe. Unser richtiger Artikel ist also ID zwei. Lassen Sie uns eine Standard-ID festlegen, ID eins. Und wenn ich jetzt kompiliere
und zum Viewport gehe, können
wir sehen, dass wir
hier
dieses Dreieck haben und dass unsere
Kollision sehr klein ist Lassen Sie uns also die
Kollisionskugel vergrößern. Stellen wir einen Radius von
150 ein. Vielleicht ist das eine Menge. Stellen wir es auf 120100 ein. Ja, 100 scheinen okay zu sein. Lass uns kompilieren und speichern und lass uns unseren
Artikel in unsere Welt bringen Wir haben einen Artikel hier
und einen Artikel hier. Jetzt möchte ich diesen
Artikel so ändern, dass er der richtige ist. Ich gehe
hier zu ID und wähle ID zwei aus. Und tada, es wurde
der andere Gegenstand. Ich denke, das ist
genug für diesen. Ich sehe
dich beim nächsten Mal. Auf Wiedersehen.
30. Grundlagen für eine Sci-Fi-Tür, die wichtige Elemente erfordert: Hallo und willkommen zurück zu den Unreal Engine Five
Blueprint Mastery, Door Zuvor haben wir damit begonnen, unsere Gegenstände
zu erstellen, und wir starten den Spielmodus
bei Spielbeginn als Variable. Wir haben diesen Code für
den Anfang, die Überlappung und das Ende
der Box kopiert die Überlappung und das Ende
der und
ihn in eine Kugel umgewandelt Jetzt haben wir auch
die
Funktion „Tür-Widget hinzufügen“ in „Event“ geändert . Anstatt ein Box Collider
zu sein, ist es eine Schauspieler-Komponente. Und dann verwenden wir diese
Schauspieler-Komponente für die Besetzung, um zu überprüfen, ob es sich um eine Box oder
eine Kugel handelt , und um die sich
überschneidenden Das ist das falsche
Konstruktionsskript. Wir wollen das
Artikelkonstruktionsskript. Wir haben eine Artikel-ID erstellt und basierend auf
der ID, basierend auf der Zeichenfolge, gewechselt. Und im Fall einer mit ID eins setzen
wir das statische Netz des Objekts
auf das Dreieck. Und im zweiten Fall
setzen wir das statische Netz auf das Dreieck, das
eine bestimmte Farbe hat. Lassen Sie uns nun mit
dem Code zum Hinzufügen
zu einem Inventar fortfahren . Was wir tun werden, ist
genau das Gleiche. Wenn wir E drücken,
interagieren wir mit diesem Gegenstand. Also werden wir die E-Tastatur
mitbringen. In Ordnung. Und was wir tun wollen, wir
wollen, dass es nur einmal passiert. Also das, was
wir mit der Presse machen, ist, einmal zu machen. Und das Zurücksetzen ist
uns egal, weil wir kein
Inventar haben, das voll wird oder so. Jetzt brauchen wir einen Hinweis
auf den Spieler. Und nicht nur der Spieler, lassen Sie mich das Spiel beenden. Wir brauchen es nicht,
nicht nur den Spieler, sondern auch die Instanz des Charakters
, der sich in der Welt der Vorlage für
die dritte Person befindet , der Charakter aus der
dritten Person. Also werden wir uns das Spielerfenster
besorgen. Dies gibt uns die
aktuelle Instanz dessen, was
der Spieler besitzt Dann werden wir für einen Charakter aus
der dritten Person casten. Im Grunde genommen bekommen wir die aktuelle Pfote
und fragen,
bist du der Charakter der dritten
Person? Da wir das in unserem Spiel wissen, wird
das immer der Fall sein Ich habe es auf einen Purecast umgestellt und werde eine Bestandsaufnahme machen Und das ist das
aktuelle Inventar des Charakters, der auf der
Karte herumläuft Um hier etwas hinzuzufügen, drücken
wir einfach auf Hinzufügen, weil das eine Array-Funktion
ist, aber sie funktioniert nicht
wie die Kartenanzeige. Wenn es in diesem Fall
ein Element gäbe, das die ID gemeinsam hat, würde
es dieser Liste auch als
weitere Entität hinzugefügt. Wenn ich also
zwei von ID eins hätte , dann würde diese Liste mit zwei
Versionen von ID eins
aufgefüllt werden . Also das wäre es im Grunde. Das würde bedeuten,
unser Inventar zu aktualisieren, und wenn wir das tun, zerstören wir
einfach Actor. Und das würde
den Schauspieler auf der Karte zerstören, sodass der Gegenstand verschwinden würde. Und das war's. Das ist das Ganze, nimm einen Gegenstand, hol einen Gegenstand ab, den wir erledigen. Also lass es uns testen. Gehen wir zu unserer Map und
bringen die Spieler zum Start. Zurück hier, und wir können das abholen und
wir können das abholen. Nun, nur um es zu demonstrieren, gehen
wir zu unserem Artikel. Und von hier aus, lassen Sie uns,
bevor wir zerstören, eine For-Schleife machen. Für jede Schleife und
für den Loop-Body wir eine Zeichenfolge aus, geben
wir eine Zeichenfolge aus,
die das Array-Element darstellt, also die ID, die wir
gerade hier hinzugefügt haben. Ich glaube, ich habe das im Stillen gemacht, aber ich glaube, du hast es verstanden Also, wenn ich den ersten Artikel auswähle, wird
es ID eins sein,
wenn ich den zweiten auswähle, sollten
es beide sein Ja. Also funktioniert unser
Inventar. Lass uns das wieder hier verbinden. Lassen Sie uns dieses Debugging löschen
und kompilieren und speichern. Für die Tür
werden wir nun die Tür mit
mehreren Schaltern kopieren Wir gehen zur Multischaltertür von Blueprint
Doors und wir werden sie duplizieren Und nennen wir es Punkt D. In
Ordnung. Nun, vielleicht ist Item
Door kein guter Name. Nennen wir es Schlüsseltür
, weil dafür ein Gegenstand erforderlich ist. Betrachten wir diesen Gegenstand als Schlüssel. Also Schlüsseltür. Bringen wir die Schlüsseltür auch
auf die Ebene. Und lass es uns öffnen. Und dieses Mal werde
ich die richtige Tür benutzen,
die, die wir wollten. Ich wollte es vorher benutzen, und das ist dieser Teil hier drüben. Ich denke, der untere
Teil sollte einer sein. Jetzt sollte der obere
Teil eigentlich eins sein. Also finde das und platziere es hier und ich werde auch seinen Standort
zurücksetzen. Und ich
wähle das nächste aus, finde es und dupliziere es, Control C, Control V, und stelle es auch hier ein. Also werde ich jetzt auch die
Rotationen korrigieren. In Ordnung. Eigentlich nein, die
Rotationen waren korrekt. Das ist der Pfeil hier drüben. Das ist also die Vorderseite. Also werde ich es hier ansprechen. Bewege es ein bisschen in diese
Richtung und repariere das auch. Ich denke, dieser, Oh nein, wir haben das Verhalten
des Widgets. Es ist okay. Kompilieren und speichern. Lassen Sie uns unsere
Animations-Timeline so aktualisieren , dass sie die zweite Tür enthält. Also werde ich
das hierher verschieben. Es ist ziemlich einfach. Wenn man es in
der Hand hat, was macht was, was ist wo, ist es einfacher den Code
zu manipulieren und die entfernten Dinge
hinzuzufügen. Also werden wir die
Position
des eingestellten Rotationssatzes duplizieren, weil es sich um des eingestellten Rotationssatzes bewegliche Puppen
handelt. Es sind keine rotierenden Puppen. Und ich werde die
zweite Tür herbringen. Und wir brauchen diesen
LARP-Knoten wieder für die eingestellte Achse. Wir müssen ihn
mit Alpha verbinden. Und was die Werte angeht, haben
wir hier einen relativen
Standort. Lass es uns einfach löschen. Es wird nicht benötigt. Also fangen wir
an zu spielen, löschen auch das und die Variablen und die Rätsel,
wir brauchen sie nicht. Und den offenen Winkel brauchen
wir nicht. Ich denke, diese Variable
wird nicht benötigt. Ja, war es nicht. Wenn ja, würde
es es sagen und
das wäre es. Lassen Sie uns die Bühne auf
gesperrt setzen und zu
den Werten zurückkehren. Also Werte. Dieser beginnt bei Lass uns sie auf 51 25
aufrunden. Und dieser ist wieder
bei 51 25. Okay, sie sind ein bisschen
gestreckt. Also lass uns das reparieren. Ordnung. Also das ist 115. Ist das das
Richtige? Es reicht für 115. Es wird reichen. Okay,
also fangen wir 51 15 an. Also das ist Tür Nummer zwei. Das heißt, y ist 50 und das ist 115. Und der nächste ist 51 25. Auch hier wäre Y 50 und a wäre 125. Nun, wo sie hingehen, geht
dieser auf 20. Also 20, und der untere Wert geht auf minus vier minus fünf. Minus fünf. Großartig. Wir haben unsere Animation abgeschlossen. Als Nächstes werden wir den Code löschen, da diese Tür nicht von einem anderen Ort aus geöffnet oder
verriegelt werden kann. Wir werden erneut die Taste E drücken, um zu überprüfen,
ob der Spieler den Schlüssel hat. Wir brauchen also keine
Check-Rätsel für Antworten, und wir brauchten
diese beiden Funktionen nicht, diese beiden Ereignisse auch nicht. Die Ereignisse, die ich gerade gelöscht habe, waren das Ereignis „Tür gesperrt“ und
das Ereignis „Tür entsperrt stammen von
der Benutzeroberfläche, die wir
kopiert haben, und von der
Check-Rätsel-Funktion. Ordnung. Also sind wir bereit
zu gehen und mit dem Codieren zu beginnen Aber ich denke, das ist etwas
für die nächste Lektion. Ich werde
es vorerst hier lassen. Auf Wiedersehen.
31. Türen ver- und entriegeln mit einem artikelbasierten System: Hallo und willkommen zurück
zu Unreal Engine Five,
Blueprint Mastery, Türsystemen Zuvor waren wir
mit unserer Türanimation fertig. Wir haben das neue statische Netz hinzugefügt. Wir haben die Zahlen festgelegt
, die gesetzt werden müssen, und wir haben auch den Code
der Schlüsseltür gelöscht , weil wir
ihn von der Multischaltertür kopiert haben . wir nun
mit der Taste E fort. Also gehen wir zur Tastatur E und beginnen mit der Programmierung. Als Erstes müssen wir überprüfen, ob unsere Tür verschlossen ist. Also werde ich einen Ast mitbringen. Ich werde
es hier verbinden. Ich werde den Türstatus
überprüfen und prüfen, ob IAM
gleich gesperrt ist Wenn nicht, animieren wir
die Tür. Also nennen wir Türanimation. Wenn wir es nicht sind, wenn es verriegelt ist, dann müssen
wir
den Schließmechanismus überprüfen. Lassen Sie uns also ein
Kundenevent erstellen. Und nenne es Sperrmechanismus
, den wir hier nennen werden. Und unser E ist komplett. Lassen Sie uns jetzt
den Schlossmechanismus programmieren. Was wir zuerst brauchen, ist eine neue Funktion, die
einen booleschen Wert ausgeben wird Und nennen wir das Keybound. In dieser Funktion werden
wir die
Ebene Paw aufrufen und wieder in die dritte Person
werfen, also bekommen wir unser aktuelles Inventar Wir werden
Inventar von unserer Besetzung abrufen. Nun haben
wir bei Arrays, mit Ausnahme von AD, einen weiteren speziellen
Knoten namens Point
, der ein Element,
ein Element des Arrays innerhalb des Arrays finden und
den Index dieses Elements zurückgeben kann ein Element des Arrays innerhalb des Arrays und
den Index dieses Elements zurückgeben Welches wird das
Objekt sein. Wir werden diese beiden Variablen bewerben. Wir werden
diesen Artikel als erforderlich bezeichnen. Wir werden
es instanzeditierbar machen. Wir werden
es auch auf Span veröffentlichen, kompilieren und speichern, und
wenn ich eine Filiale mitbringe, brauchen
wir irgendwie einen Goldbarren Wir brauchen ein Wahres oder ein Falsches. Die Frage
hier wäre also, der Index größer
oder gleich Null
ist? Denn wenn es
negativ ist, bedeutet das, dass
es nicht gefunden Wenn es auf minus eins fällt, bedeutet das, dass der Artikel nicht gefunden wurde Und ich werde
diesen Zustand hier verbinden. Wenn der Artikel gefunden wird, werde
ich ihn
aus dem Entfernungsindex entfernen. Stellen Sie jetzt sicher, dass Sie
den Index entfernen und
nicht das Element entfernen auswählen nicht das Element entfernen , da diese beiden
völlig unterschiedlich funktionieren. Wie Sie sehen können, werden dadurch alle Instanzen von item
eines Elements aus dem Array entfernt, wobei dadurch nur
der Index entfernt wird, den wir aufrufen. Ich werde
das mit true verbinden. Und jetzt haben wir einen Rückkehrknoten. Wie machen wir das? Nun, wir
können zwei Rückknoten haben. Das ist die Magie, und wir verbinden das hier und
sagen, der Schlüssel wurde gefunden, und wir können das hier verbinden
und sagen, dass der Schlüssel nicht gefunden wurde. Und natürlich verbinden Sie
den Index hier drüben. Wie dupliziert das ist, kontrolliere ich
C-gesteuertes Kopieren und Einfügen. Lassen Sie uns also im Grunde diese beiden
hier in Pure Cast kopieren und
einfügen Wir haben also nicht so
viele Querkabel, und es kann ein
bisschen sinnvoller sein. Also, was machen wir? Wir besorgen das Inventar und prüfen,
ob wir den Artikel finden können. Wenn wir das nicht können, kehren wir zurück,
wir haben keinen Schlüssel gefunden. Wenn ja, entfernen wir ihn und geben zurück
, dass wir einen Schlüssel gefunden haben. Und nennen wir diese
Funktion Check oder Key. Und bringen wir es
hierher zu unserem Schließmechanismus. Dann brauchen wir eine Filiale. Wenn wir einen
Schlüssel gefunden und ihn entfernt haben, sollten
wir den
Zustand der Tür so einstellen, dass die Tür geschlossen wird. Wir sollten Widget aktualisieren, aber wir haben die Texte nicht gesetzt, und wir brauchen eine Variable, die „
gesperrt“ sagt und sie
auf „falsch“ setzt, eigentlich brauchen
wir diese Variable nicht. Ich weiß nicht, warum wir
es brauchen. Es besteht keine Notwendigkeit. Wir haben den Staat. Und wo wir über
Status und Widget sprechen, lassen Sie uns unser Widget-Update korrigieren. Und wir brauchen den Türstatus. Wir brauchen einen Schalter. Und wir brauchen diese Auswahl nicht. Wir werden es einfach
dreimal kopieren, wenn es gesperrt ist, es wird gesperrt angezeigt. Wenn es geschlossen ist, heißt
es offen. Und wenn es geöffnet ist, heißt
es geschlossen. Lass
es uns sogar zum vierten Mal machen. Das würde nichts aussagen. Im schlimmsten Fall sehen
wir das E. Also wissen wir, dass es beim
Öffnen und Schließen fehlerhaft Sie sehen, Dinge wie
diese sind nur ein paar Knoten, im Grunde genommen ein zusätzlicher Knoten Aber wenn du
spielst und
einen Bug siehst , den du
entworfen hast, um ihn zu beheben, Beispiel, oh, es zeigt ein
Widget an, während es geöffnet Warum? Und es macht
deutlich, was der Fehler ist. Es ist also immer gut, ein paar Debug-Hinweise
für Sie zu haben. Lassen Sie uns nun weitermachen. Nun, wir müssen
dem Spieler zeigen , dass die
Tür aufgeschlossen wurde Machen wir es einfach,
indem wir hier draußen einen Ort hinzufügen. Lass uns nicht beim Unlocked-Sound bleiben. Ich mag den
entsperrten Sound dafür nicht wirklich nicht. Ich meine, es ist
so ein Schlüsselsound. Also vielleicht klingen die Tasten. Lass uns den Tastensound verwenden. Wir haben also eine Möglichkeit, dem Spieler
mitzuteilen, dass die
Tür entriegelt wurde. Er sollte es erneut versuchen und
dieses Mal wird es geöffnet. Jetzt, wenn wir stürzen, sollten
wir an der Tür rütteln,
aber diese Tür kann nicht
wirklich klappern aber diese Tür kann nicht
wirklich klappern Sie ist sehr falsch platziert. Was war das? Nach dem, was ich gesehen habe, geht
der unterste Teil
bis 115. Ordnung. Lass uns
alles richtig platzieren. Stimmt? Es scheint keine enge Tür
zu sein. Ich meine, es hat diese
Stellen, an denen man vielleicht schießen kann. Ich weiß es nicht. Also platzieren
wir es hier. Wir entriegeln
es mit unserem Schlüssel. Wir sollten
hier ein Geräusch spielen, es sollte kein Lift sein. Es sollte die Science-Fiction-Tür sein. Hier ist es. Also
Science-Fiction-Tür hier, Sif-Tür hier drüben Und auf Kleidung,
Multiplikator 0,8 Pitch. Es ist in Ordnung. In Ordnung. Nun zurück zur Rassel. Diese Tür
klappert im Grunde nicht. Diese Tür sollte
etwas anderes tun und
etwas anderes, wir tun werden, ist, diese Farbe zu
ändern und wahrscheinlich ein Geräusch
zu machen Aber lassen wir das
für das nächste Mal. Dann werden wir uns mit
dir treffen. Auf Wiedersehen.
32. Visuelle Effekte hinzufügen, um die Interaktionen mit Sci-Fi-Türen zu verbessern: Hallo und willkommen zurück zu den Portalen Unreal Engine Five
Blueprint Mastery, Door Systems Zuvor waren wir mit dem Code fertig, mit dem wir mithilfe
der E-Taste und einer Abzweigung überprüfen können, ob unsere Tür verriegelt
ist oder nicht Und wenn sie verriegelt ist,
lösen wir den Schließmechanismus aus, und wenn nicht,
lösen wir die Türanimation Für unseren Schließmechanismus
haben wir nun eine Funktion zur Überprüfung der
Tasten verwendet , sodass
wir das Inventar des Spielers abrufen Wir finden heraus, ob
es den benötigten Gegenstand gibt, und wenn ja, entfernen
wir ihn
aus dem Inventar. Wenn nicht, geben wir zurück,
dass wir keinen Schlüssel gefunden haben, und wir haben den Schlüssel gefunden, wenn wir ihn gefunden haben. Dann haben wir eine Filiale eingerichtet, und auf dieser Grundlage verwenden wir
die Tür, die geschlossen geblieben ist. Wir haben das Widget aktualisiert
und ein Geräusch abgespielt, um dem Spieler mitzuteilen, dass
die Tür entriegelt wurde. Und wir haben darüber gesprochen,
unsere neue Rasselmechanik zu entwickeln. Nennen wir es Custom
Revent und nennen wir es Rattle, was kein Rasseln sein wird,
aber es wird interessant aber Was wird nun der interessante Teil sein? Der interessante Teil ist, dass
wir einen neuen Knoten namens
D N verwenden werden und er ist ein
bisschen schwer zu finden. Ich glaube, ich habe ihn bestanden, hier, das Do N. Wie wir den Do Once
haben, ist
das ein Knoten,
der die
Ausführung mehrere Male passieren lässt und dann stoppt sie. Dies ist beispielsweise nützlich, um zu
begrenzen, wie oft eine Aktion während des
Spiels ausgeführt werden kann. Im Moment wechseln wir bei unserem Klappern viermal das Material der Tür Ich werde beides
besorgen, Material setzen Material festlegen, Material festlegen und
beide hier verbinden und von hier aus das Material auswählen Was werde ich für den Index verwenden? Nun, ich
verwende einen Flip-Lock-Knoten und wähle A aus.
Und dann werde ich beide
hier
verbinden, weil ich möchte, dass
die Ausführung des
Flip-Flops dieselbe ist Und dann werde ich beide
hier
verbinden , weil ich möchte, dass die Ausführung des
Flip-Flops dieselbe Ich möchte nur unterscheiden
zwischen A und B. Wenn es von A läuft und
wenn es von B abläuft. Und
für das Material für die Falten wollen
wir das Original, also die Tür vertikal,
vertikal Und dann schätze ich, das
wird türvertikal sein. Rot. Jep Nun, wenn ich dieses
Flip-Flop direkt mit dem D N verbinde, wird
das so schnell passieren
, dass ich es nicht zu sehen bekomme Also werde ich hier eine
Verzögerung einbauen. Vielleicht etwas mehr Platz und verbinde das Delay mit
dem Flip Flop Nun zum Delay, 0,2
ist ein bisschen groß, also werde ich es auf 0,1 stellen Um das D N erneut anzurufen, rufe
ich Rattle an Also Rattle wird hier genannt. Es läuft und ruft sich selbst auf, und es wird
insgesamt viermal laufen Da ein Spieler es nun viele Male versuchen
kann, müssen
wir es zurücksetzen. Also werde ich ein benutzerdefiniertes
Ereignis erstellen und es Reset nennen. Mach rasseln. Und wir werden jedes Mal
zurückgesetzt, wenn der Spieler versucht, die Tür
zu öffnen Also zurücksetzen, klappern. Lass uns
auch ein Geräusch abspielen, nachdem wir eigentlich schon vorher angefangen haben zu rasseln,
lass es uns hier abspielen Ton auf D abspielen und der Ton würde verweigert werden Ja, Genehmigung verweigert. Lass uns spielen. In Ordnung. Wir haben ein Problem
mit den Widgets, aber ich glaube, das liegt daran, dass sie sich
alle überschneiden. Also werde ich das
etwas weiter wegnehmen, vielleicht hier. Ja, es funktioniert gut, den falschen
Artikel
zu bekommen, funktioniert nicht, den richtigen Artikel
zu bekommen Es funktioniert immer noch nicht. Und das liegt daran, dass wir der Tür kein erforderliches Objekt
gegeben haben . ID zwei ist also der erforderliche Artikel. Lass uns den falschen
nehmen. Es funktioniert nicht. Holen wir uns den richtigen
. Es öffnet sich. Großartig. Es ist ein bisschen langsam. Das ist die langsamste
Tür, die jemals gebaut wurde. Ich schloss langsam.
Also lass uns das reparieren. Lass uns zu unserer Timeline gehen. Lass uns das auf,
ich weiß nicht, 1 Sekunde einstellen. Mit dem letzten Keyframe, alles gut. Und lassen Sie uns auch
das Material der Tür ändern , wenn wir sie aufschließen Machen wir es grün.
Also gehe ich hier drüben zu unserem Open, wir spielen Sound. Die Tür ist entriegelt
und ich nehme den oberen Teil. Dieses eine Set Material. Das könnte vertikal offen sein. Kompilieren und speichern.
Was ist dort passiert? Ich denke, es muss Loaden
Shader oder so sein. Es ist also offen. Es schließt. Wenn es mit dem Öffnen fertig
ist, wird mir das Widget nicht angezeigt. Wenn es geöffnet ist und okay, also lass uns zur Schlüsseltür gehen. Aktualisiere den Widget-Text und die
Tür, wenn sie geschlossen ist. Ich bin ich überschneide mich nicht. Okay, das ist also das Problem. Der Code ist korrekt.
Er ist da. Es ist nur so, dass die Kiste ein bisschen klein
ist. Eigentlich werde ich es von hier aus
ändern. Ja, ich denke, das ist in Ordnung. Ja, ich hole den Schlüssel wieder. In Ordnung. Nein, das Widget wird immer noch nicht angezeigt
, wenn die Tür beim Öffnen geschlossen
ist. Okay. Also werde ich das hier einfach verbinden. Und beide fügen das Tür-Widget
wieder hinzu. Ich möchte das
Negative wieder sehen. Ah, ich mag das Negative wirklich. Richtig. Es funktioniert
richtig. Großartig. Und jetzt stoßen wir gegen eine Mauer. Ich schätze, es ist an der Zeit, die Teleport-Tür
zu machen
, dafür werden wir diesen
tollen Teleporter verwenden
, der auch einen Partykleber hat Um das zu tun, werden wir einen neuen Plan
erstellen. Gehen wir zu den Ordnertüren. Lasst uns eine neue
Blueprint-Schauspielerklasse erstellen und sie BP-Teleporter nennen Lassen Sie uns kompilieren und speichern
und beginnen wir damit, und beginnen wir die Komponenten
des Teleporters
hinzuzufügen Natürlich
brauchen wir eine Kollisionsbox. Die Boxkollision
wäre also eine Komponente. Wir benötigen ein statisches Netz
für unser Teleporternetz und wir benötigen ein Partikel Ich glaube, es ist ein Niagara-Partikel. Hier ist es eine Niagara-Komponente. Fügen Sie ein Niagara-System hinzu. Und wir brauchen auch einen Pfeil. Wählen wir nun unser Mesh , das das
Teleporter-Mesh sein soll Lass es uns binden und
hier drüben platzieren. Und wir müssen es
rotieren, oder? Und für die Niagara-Partigi wählen
wir die Partige Wir werden es auch finden
und hier hinzufügen. Lassen Sie uns das jetzt rotieren.
Ja. Ich glaube, das ist es Und unsere Box sollte ein
bisschen größer und breiter sein, ein bisschen weiter vorne. Ja, das ist in Ordnung. Und bringen wir
unseren Teleporter auf die Karte Richtig? Und lassen Sie uns auch den
nächsten Raum sichtbar machen. Vielleicht verschiebe es ein bisschen hierher. Und lassen Sie uns es auch
hier duplizieren und es so drehen
, dass es in die richtige Richtung zeigt. Es gibt einen Grund dafür, dass es in
die richtige Richtung zeigen muss. Aber damit werden wir in der nächsten Lektion weitermachen
, und damit
werden wir es diesmal belassen. Auf Wiedersehen, wir sehen uns
bei der nächsten.
33. Einen Teleporter für Level-Übergänge erstellen: Hallo und willkommen zurück
zu den fünf
Blueprint Mastery Türsystemen und interaktiven Portalen von Unreal Lensing Blueprint Mastery Zuvor waren wir mit der Tür fertig, für die der Schlüssel erforderlich ist,
und haben
unseren und Wir haben ein paar
Komponenten und Netze hinzugefügt,
und wir haben das
Niagara-Partikel und die Kollisionsbox hinzugefügt Fahren wir mit der
Programmierung des Teleporters fort. Wir verwenden das
Startüberlappungsereignis der Kollision und wir werden
zwei Charaktere aus der dritten Person ,
weil sich nur unser
Charakter bewegen soll und wir auch einen Verweis auf
den Charakter haben wollen Nun, wie bewegen wir unseren
Charakter von hier nach hier, wo wir den
Standort des Schauspielers festlegen könnten Aber es gibt eine spezielle
Notiz namens Teleport. In Unreal Engine gibt
es uns zwei Eingaben, Ziel und
Zielort und
Zielrotation, was gut ist, denn
wenn wir teleportieren, wollen
wir den
Charakter auf eine bestimmte Weise drehen Es teleportiert sich also nicht
und schaut zurück, zum Beispiel
zur Teleporter-Tür Aber bevor wir weitermachen und
herausfinden, wo das sein sollte, lassen Sie uns auch einen Sound abspielen,
nämlich den Wir haben diesen Sound, aber
ich mag diesen wirklich, den VR-Teleport-Sound Dieser ist jetzt in der
Engine enthalten. Falls Sie
ihn in den Einstellungen nicht in Ihrer Inhaltsleiste
sehen können , können
Sie Engine-Inhalte aktivieren Irgendwo Engine-Inhalte anzeigen. Ich habe es nicht angeklickt, aber das sollte es sichtbar
machen Lassen Sie uns nun mit
unserem Zielort
und der Zielrotation fortfahren unserem Zielort
und der Zielrotation Was wir dafür verwenden werden ist,
hier ein System mit einer Szene zu
erstellen hier ein System mit einer Szene also werden wir eine
Szene hinzufügen, was ist eine Szene? Im Grunde ist es nur ein Punkt. Wir sprechen also diesem Punkt, an dem wir uns nach links
bewegen können, und wir können einen Bezug
darauf herstellen, denn wir
nennen ihn die Wurzel der
Teleportationskapsel Das wird die Wurzel der
Teleportationskapsel sein, und wir können sie dort
referenzieren, wo sie ist,
wo sie hin
gedreht ist Aber nur das werden wir nicht
tun. Wir werden eine
Kapselkollision hinzufügen. Das wird vor
Ort erzogen. Wenn wir also die Szene bewegen, verschieben
wir auch die Kollision Da sie nicht
an der richtigen Stelle hinzugefügt wurde, setzen
wir einfach ihre Position zurück, transformieren sie und sie wird an der Wurzel
ausrasten. Jetzt werden wir das auch
an die Spielergröße anpassen. Ich glaube, Spieler ist, dass ich mich
an nichts erinnern kann, was ich gesehen hätte. Ich öffne den
Player und wähle die Kapsel aus. Ja, halbe Größe der 90er. 90 ist halbe Größe
und der Radius ist 35. Das wird schlank sein. Also Radius 35. Und im Moment
wissen wir genau, wo die Spielerkapsel spawnen wird Und lassen Sie uns auch einen Pfeil hinzufügen. Ich wähle
erneut die
Stammkomponente aus, weil ich nicht möchte, dass
sie zur Kapsel hinzugefügt wird . Ich möchte, dass es zur Stammkomponente
und
zum Pfeil hinzugefügt wird und auch seine Position
zurücksetzt. Und jetzt können wir deutlich sehen , wo sich der Spieler befindet und
wohin er schaut. Also werde ich das hier drüben hinstellen
. Vielleicht ist es hier mehr vorne. Ich glaube, es kommt
raus und es fällt hier. Jep. Vielleicht mehr durch die Luft Ordnung. Lass uns weitermachen. Nun, wir wollen uns nicht die
Kapsel und die Wurzelkomponente nehmen. Wir wollen die Ziele, Kapsel und die Wurzelkomponente. Also werden wir
eine weitere Variable erstellen, wir
werden
sie target, the port, the nennen und
wir werden sie verfügbar machen eine weitere Variable erstellen, wir
werden
sie target, the port, und sie so machen, dass sie beim
Spawn verfügbar ist, auch insens editierbar ist, und sie wird vom
Typ P Teleporter sein Wir werden kompilieren
und speichern und aus den Details zu Teporter gehen, wir werden
den anderen Teleporter auswählen und für den anderen Teleporter werden
wir
dasselbe mit diesem machen. Vielleicht ist es ein
bisschen weit weg. Also werde ich die Wurzel auswählen. Ja, ich denke, das ist
eine gute Entfernung. Und jetzt kompilieren wir in unserem
BPA-Reporter. Und für das Ziel
werden wir diesen
Zielreporter verwenden Wir werden Arrow holen
, denn das brauchen wir. Um ehrlich zu sein, brauchen wir
weder die Kapsel noch die Flecken. Arrow wird den Job machen. Stellen Sie sicher, dass es Pfeil
eins
ist, da der Pfeil für den
ursprünglichen Entwurf verwendet wird Also werden wir uns transformieren lassen. Aber wir werden die Welt transformieren
lassen , weil wir wollen, dass sie an
einem Ort und in Rotation stattfindet. Diesmal verwenden wir weder die
lokale relative Position Rotation, weil wir nicht wollen, dass sie
relativ zum Bauplan Wir wollen, dass es
relativ zur Welt ist. Wenn ich also zum Beispiel hierher gehe und diesen Teleporter
auswähle und die Wurzel
auswähle und sie drehe, dann möchte
ich, dass sie nach hier
gedreht wird, basierend auf der Welt, nicht nach hier, basierend
auf dem Bauplan Was ist nun auch Transformation? Nun, eine Transformation ist im Grunde eine
Struktur von Elementen aus
drei Vektoren. Und wenn ich es kaputt mache, können
wir sehen, dass es eine Position,
eine Drehung und eine Skala
hat . Also werde ich
den Standort mit dem Zielort und
die Drehung mit der
Zielrotation verbinden Zielort und
die . Und damit ist
unser Teleportal abgeschlossen. Bringen wir unsere
Kapsel her. Lass uns Play drücken. Und
wir teleportieren Ordnung. Ich denke, das
ist es für diesen. Ich sehe dich im nächsten. Auf Wiedersehen.
34. Eine physikbasierte Tür mit Blueprint-Programmierung entwerfen: Hallo und willkommen zurück
zu Unreal Engine, fünf Blueprint Mastery Türsystemen Zuvor waren wir
mit unserer Teleporter-Tür fertig. Wir haben ein System geschaffen das aus einer Kapsel und einer
Wurzelsünde-Komponente und einem Pfeil besteht Eigentlich
brauchten wir nur den Pfeil, aber wir haben die Kapsel,
um die Kollision
unseres Spielers zu beobachten , und die
Wurzelkomponente, um sie von Anfang an zu bewegen. Nun verwenden wir diesen Pfeil, um die Transformation
, die wir in
die drei Vektoren aufgeteilt haben, zu ermitteln und
anhand der Position und Drehung den Teleportknoten als
Ziel und
Rotationsziel
zu verwenden Ziel und
Rotationsziel Und dann spielen wir den Sound ab. Und all das wurde
durch die Überlappung der Box
des Teleporters ausgelöst .
Das ist so ziemlich alles Jetzt ist es an der Zeit,
den Physikspeicher einzurichten. Wir gehen zu
unseren Ordnertüren. Wir werden mit der rechten Maustaste klicken.
Wir werden
eine neue
Blueprint-Klasse vom Typ Schauspieler erstellen eine neue
Blueprint-Klasse vom Typ Schauspieler Ich werde
es PP Physics Door nennen. Und wir werden es öffnen. Nun, für diesen Entwurf benötigen
wir
zwei statische Meshes Und lassen Sie uns die Nachricht auswählen. Eigentlich ist es nur einer. Es wird beide bevölkern und wir werden nur einen von ihnen
abwechseln Und beweg es ein bisschen. Diese Türen sollten sich
nicht berühren. Verschieben wir sie ein wenig in die Mitte des Bauplans Sie sollten eine
Lücke zwischen ihnen haben , denn da sie
ein Physiklager sein werden, wird
es sie abhören, wenn sie
sich berühren Lassen Sie uns jetzt kompilieren
und speichern und unseren
Schauspieler zur Welt bringen Ich denke, es muss
hier ein bisschen umgezogen werden. In Ordnung. Als Nächstes werden wir die Physik für
diese Gegenstände aktivieren. Also werde ich sie beide
auswählen. Ich gehe zur
Registerkarte Physik. Wo ist die Physik
hier und wähle Physik
simulieren. Aber das wird uns nicht viel
helfen, denn
wenn ich jetzt spiele, können
wir sehen, wie sie einfach
herumstoßen Das ist es ganz und gar nicht.
Das ist nur Schutt. Das ist es also, was wir wollen. Zum Glück gibt es
etwas, das Physik genannt wird. Einschränkung, die
wir jetzt verwenden werden. Laut Tooltip handelt es sich dabei praktisch um ein Gelenk, mit dem
Sie zwei
starre Körper miteinander verbinden können . verschiedenen
Parametern dieser Komponente können Sie verschiedene Arten von
Verbindungen erstellen Mit den
verschiedenen
Parametern dieser Komponente können Sie verschiedene Arten von
Verbindungen erstellen. Okay, das Schlüsselwort hier, es erzeugt so etwas wie
ein Gelenk, wie ein Scharnier. Es ermöglicht uns,
die Rotation und die
Bewegungsgrenzen zu kontrollieren , wie zum Beispiel mechanische
Arme oder das Verhalten von Stoffpuppen
in fortgeschritteneren Umgebungen. Aber für uns werden wir es
nur verwenden, um die Grenzen
festzulegen, um eine dynamische Tür zu
schaffen. Fahren wir also mit der Frage fort, wie
wir physikalische Einschränkungen verwenden? Zuallererst müssen
wir die Türen benennen. Und dann benötigen wir
zwei physikalische Einschränkungen. Also werden wir einen haben. Fügen wir einen Pfeil hinzu. Wir wissen also, wo die Front ist. Okay, die Vorderseite des
Bauplans ist so, aber das ist uns wirklich
egal Wir
drehen einfach den Pfeil und
lösen ihn aus
dem statischen Netz Geh einfach, um das zu drehen.
In Ordnung. Und nenne diese Tür
und diese eine DR. Also das wäre eingeschränkt L, und das wäre eingeschränkt Und kompilieren, sie sind
in entgegengesetzter Reihenfolge, aber das ist egal Was wir tun werden, ist Beschränkung für den ersten
Besuch
auszuwählen. Und ich
gehe zu den Einstellungen und sage den Namen der Komponente eins. Hier werden
wir die Tür L benutzen Stellen
Sie sicher, dass diese Tür L genau
dieselbe ist wie diese. Keine zusätzlichen Leerzeichen, Großschreibung
könnte wichtig sein. Ich bin mir nicht wirklich sicher, denn wenn nicht, wird es nicht funktionieren Wie Sie sehen können, hat
es jetzt bereits
die Form unserer Tür angenommen. Im Grunde zeigt es uns
die Grenzen des Netzes, aber es zeigt uns auch mit dieser Linie hier,
wo unser Dreh- und Angelpunkt ist Also gehen wir zu
dieser Ecke hier drüben, und das ist unser Dreh- und Angelpunkt Als Nächstes sehen wir
die runden Kreise
um den Drehpunkt. Was wir hier
etwas weiter vorantreiben sollten. Okay. Also, was
sind diese Kreise? Nun, lassen Sie uns tiefer gehen und wir
werden einige Winkelgrenzen sehen. Jetzt
brauchen wir nur noch eine Bewegung, also sperren wir die zweite und wir werden die Drehung fixieren. Außerdem wollen wir, dass es
nur in dieser Rotation ist,
und wir werden für die
erste Umdrehung ein Limit festlegen, und das Limit wäre 90
45, das ist ein bisschen klein. Und Sie können sehen, dass es uns
die Grenzen der Rotation zeigt. Jetzt
machen wir dasselbe für Dor R. Lass uns das hier drüben machen. Lass uns R nennen. Lass uns das auf gesperrt setzen und das ist Limit und 90. Aber es ist das Gegenteil. Wir müssen es rotieren lassen. Ops. Okay. Und lass es uns um 180
drehen. Also lass es uns testen. Es wird nicht perfekt funktionieren, aber es ist ein guter Anfang. Bringen wir es hierher, wir sind auf der Durchreise und die Tür dreht sich wie verrückt
um Nun, es gibt viele
Optionen, um das zu beheben. Wir werden mit ein
paar einfachen Einstellungen spielen. Zum Beispiel
müssen wir zuerst eine Einstellung korrigieren. Hier drüben werde
ich beide auswählen. Wir haben den Winkelmotor
, und wir haben den
Winkelantriebsmotor. Es verwendet gerade Slurp,
was, wie es beschrieben wird, Warnung zwischen Strömung und Geschwindigkeit und
Zielausrichtung Aber was wir wollen, ist
eine Drehung und ein Schwung, die
den Pfad ein wenig zersetzt Als Nächstes wählen
wir also jede der Türen aus und gehen zu
den physikalischen Einstellungen,
wo wir Masse aktivieren werden Wir werden sie zu einer Masse von 80 machen. Sie können
mit den Werten herumspielen, und wir werden auch die
Winkeldämpfung erhöhen Das wird hoffentlich A mit
dem Schwingen reparieren . In Ordnung. Nun, das einzige Problem ist, dass
sie so zurückgelassen werden. Sie kehren nicht zu
ihrer ursprünglichen Position zurück. Das hätte also durch Swing and Twist
behoben werden müssen. Aber wahrscheinlich, ja, ich habe verpasst, dass ich nicht auf
die Swing-Option geklickt habe, es
verpasst, dass ich nicht auf
die Swing-Option geklickt habe,
also hat sie keine
Zielausrichtung, weil
sie durch Schwung
und Drehung eine Zielausrichtung hat. Das heißt, wohin
versuche ich zurückzukehren? Wir könnten mit der
Zielgeschwindigkeit spielen und so, aber das ist es, was wir brauchen, damit sie wieder in
dieselbe Position zurückkehren. Also werde ich kompilieren
und speichern und auf Play drücken. Wenn es geöffnet wird und
zur gleichen Position zurückkehrt. Jetzt könntest du ein
bisschen spielen, aber die Werte machen es realistischer. Ich weiß es nicht. Wenn
es zwei Türen gibt, das auch ein bisschen hängt das auch ein bisschen
von der Geschwindigkeit des
Spielers ab. Anschlüsse, aber ich denke, es ist in Ordnung. Eine Tür ist zu einfach. Nein, eine Tür ist in Ordnung, zwei Türen sind ein
bisschen zu schwer. Also das wird für
den Physikladen sein. Wir sehen uns in
der nächsten Lektion, in der wir uns auf ein anderes Level
teleportieren
werden Vorerst auf Wiedersehen.
35. Eine Levelwechseltür mit Übergangseffekten programmieren: Hallo und willkommen zurück
zu den fünf
Blueprint Mastery Türsystemen und interaktiven Portalen von Unreal Lenzing Blueprint Mastery Türsystemen Zuvor waren wir mit unserem Physikladen fast fertig
. Ich habe wohl vergessen
, die Sounds hinzuzufügen. Lass uns den Physikladen öffnen, und es war eine gute Gelegenheit, ein weiteres Kollisionsereignis
zu zeigen. Diesmal, weil sich diese Tür nicht wirklich
mit dem Spieler überschneidet. Ich blockiere den Spieler. Wir werden die Wärme der Komponente
nutzen. Ich erhalte also
Komponentenwärme von dieser Tür und ich erhalte die
Komponentenwärme von der anderen Tür, und wir spielen
einfach Ton ab. Und verbinden wir sowohl mit dem
Displaysound als auch mit dem Sound, wir verwenden
den Physik-Punkt Q. Und wir spielen wieder
mit der Tonhöhe Wir werden einen
zufälligen Float im Bereich erstellen und er
wird zwischen 0,8 und eins Und jetzt haben wir ein schreckliches Geräusch, weil
es zu oft auftritt Ich vermute also, dass dieser Sound einige
Parallelitätseinstellungen benötigt Was sind Parallelitätseinstellungen
? Sie sind hier drüben. Diese Einstellung steuert,
wie viele Instanzen des Sounds
gleichzeitig abgespielt werden können, und ermöglicht es uns, überlappende Sounds zu begrenzen oder zu
verwalten Außerdem, wenn ein Sound gestartet und gestoppt werden
kann
und es dort eine Menge Einstellungen
gibt, mit denen wir spielen können, aber unsere Hauptanwendung wäre das Also gehe ich in
den Ordner Sounds
und ich werde
es so machen, und ich werde als ob wir sie
bereits erstellt haben. Also hier ist es Physis do C, das einige Einstellungen
bereits für uns voreingestellt hat Zähle maximal, wie
oft es abgespielt werden soll. Erneute Auslösezeit,
zu der
es wieder abgespielt werden soll auf Besitzer
beschränken, wie Limit auf Besitzer. Damit ist im Grunde der Bauplan gemeint, der
es abspielt. Wenn Sie also zwei Baupläne hätten, sie bei
der maximalen Anzahl würden
sie bei
der maximalen Anzahl
von einem nicht identisch sein Sie würden
doppelt so viele Sounds abspielen. Ja, hier gibt es eine
Menge Einstellungen. Ja, das werden wir verwenden. Also, wenn ich das
hier drüben hinzufüge, jetzt, ja. Der Sound ist viel besser. Nun, eine weitere Sache,
die mir aufgefallen ist
, ist , dass ich die
Rotationskomponente der Gegenstände wirklich
nie
erklärt und auch nie benutzt habe. Es funktioniert, aber wenn wir das
Spiel abspielen und Kollisionen zeigen, werden
Sie feststellen, dass sich
die Kollision auch bewegt,
was momentan kein großes Problem ist, aber
wenn wir viele davon hätten, würde das zu einem
riesigen Rahmenmangel führen Was wir tun werden, ist, den Bauplan für
den Gegenstand einzugeben und zum Konstruktionsskript zu
gehen und diese rotierende Bewegung so zu machen , dass sie ist. Lassen Sie uns das erklären,
da wir es nicht getan haben Es ist eine Komponente, die den Akteur rotieren
lässt. Es macht die Rotation auf
der Grundlage der Regeln und Einstellungen
, die wir hier eingegeben haben. Standardmäßig dreht es sich im
lokalen Raum und um 180 Grad. Nun gibt es eine Möglichkeit, dies so
zu gestalten, dass es für eine
bestimmte Komponente
verantwortlich und nicht für einen ganzen Akteur. Und dieser Knoten wäre
eine aktualisierte Komponente. Also werden wir beide
hier
verbinden und wir werden das statische
Netz hier
verbinden. Eigentlich kopieren wir es einfach
und fügen es ein. Diese rotierende
Bewegung
dreht jetzt also nur die statische Netzkomponente und nicht den Rest des Schauspielers. Wenn wir also spielen und auswerfen, können
wir sehen, dass es nicht funktioniert Habe einen Live-Test gemacht. Es ist unglaublich. Was ist der Gegenstand? Hier ist die aktualisierte
Komponente des Artikelsatzes, statisches Netz. Oh, ich glaube, das
liegt daran , dass ich es mit
dem Bauskript verknüpft habe. Es sollte bei Spielbeginn sein. Lass uns auffrischen. Jep. Sie können also sehen, dass sich das Dreieck nur bewegt Ja. Die aktualisierte Komponente funktioniert also nicht wirklich im
Konstruktionsskript,
weil das Spiel
ausgeführt werden muss, um etwas zu tun. Da das Spiel also im
Konstruktionsskript nicht läuft, die Update-Komponente
nicht wirklich etwas. Aus diesem Grund mussten wir es
zum Starten des Spiels bringen und nicht zum
Befehlsskript ,
weil dieses inaktiv ist Es ist im Editor. Wir können sehen, dass es sich nicht dreht. Wie dem auch sei, lass uns weitermachen. Wir werden den Bauplan für
den Teleporter duplizieren Bauplan für
den Teleporter Und nennen wir das
Level Changer. Und lass es uns herbringen. Und nach dem, was Sie vermuten, hat
es so ziemlich
den gleichen Aufbau Wir benötigen dasselbe Setup , weil wir ein- und
ausportieren werden, also benötigen wir all
diese Funktionen Bevor wir mit der
Programmierung beginnen, wollen wir einfach auch ein einfaches
Widget mit einer Animation erstellen. Wir
klicken mit der rechten Maustaste in den
Widget-Ordner und erstellen einen Widget-Blueprint
und ein Benutzer-Widget Ich werde es W You Fade nennen. Denn wenn wir die Welt betreten
und verlassen, sollten
wir ein- und
ausgehen, damit sie nicht schlecht aussieht Wir werden eine Leinwand hinzufügen
und wir werden ein Bild hinzufügen
. Wir werden das Bild so verankern, dass es im
Vollbildmodus angezeigt wird
, und wir werden die Offsets auf Null Und die Farbe sollte schwarz sein. Nun, wie mache ich Animationen? gibt es hier eine Registerkarte Wenn ich mich im
Widget-Blueprint befinde Wenn ich es nicht bin,
ist der Tab nicht mehr da, wie Sie sehen können, aber
im Widget-Blueprint erscheint hier
ein neuer Tab
, der Animationen genannt wird Lass uns eine neue Animation hinzufügen. Nennen wir das Fade. Animation. Nennen wir
es meine Fade-Animation. Es sollte keine Leerzeichen enthalten. Meine fette Animation und lass uns
doppelklicken, um sie aufzurufen. Hier haben wir den Tab
mit allen Animationen. Und wenn wir hier eine Animation
auswählen, haben
wir die Einstellungen, um sie zu verwenden. In den Einstellungen wählen wir die Schaltfläche Hinzufügen und
fügen Bild hinzu, da ich
das Bild ausgewählt habe. Wenn Sie
das Bild nicht ausgewählt haben, müssen Sie es grundsätzlich
auswählen und dann auf Hinzufügen
klicken. Für dieses Bild haben wir
hier unsere
Animationsspur, in der wir 0,5 verwenden, also 02,5, vielleicht
reicht das für Animation Wir werden diesem Bild einen neuen
Truck hinzufügen, und er wird farbig und
undurchsichtig sein Lassen Sie uns
eigentlich einfach die Opazität rendern. Warum die Dinge komplizieren. Jetzt beginnt es standardmäßig
mit Eins, wo wir
wollen, dass es Null ist, und in 0,5 Sekunden wollen
wir, dass es eins Also 0-1. Und damit ist
unsere Animation Lassen Sie uns kompilieren und speichern und dann den Fade schließen. Widget wir werden es noch nicht brauchen. Lassen Sie uns die
Artikel und den Physikladen tatsächlich schließen. Und der Charakter und die
Schlüsseltür und der Teleporter. Lass uns den Levelwechsler öffnen. Da wir das Level wechseln
werden, brauchen
wir den
Teleporter nicht mehr Wir benötigen den Standort
des anderen Schauspielers nicht, aber wir müssen dieses Widget
erstellen, wie wir es zu Beginn
des Spiels im Spielmodus getan haben Öffnen wir es, um es zu zeigen:
Wir haben das Widget erstellt und dann später
entschieden, wann wir
es zum Viewpod hinzufügen oder wann wir es aus dem Viewpod
entfernen möchten Jetzt wollen wir es einfach erstellen Besitzer-Stufe sollte
der Taer-Controller sein, und die Klasse sollte
bezahlt sein und wir werden sie sofort zu Viewport hinzufügen Das einzige Problem ist, dass wir es tatsächlich
wieder öffnen müssen. Also öffne ich das Widget
und suche nach Opazität, dann nach Opazität
und setze den
Standardwert auf Null Denn wenn ich es
so lassen würde, wie es war, würde ich in dem Moment,
in dem ich es hinzufüge, einen schwarzen Bildschirm sehen, auch wenn die Animation
nicht angezeigt wird , selbst wenn die Animation direkt danach
abgespielt wird, dann würde ich einen schwarzen Bildschirm sehen und dann würde ich den Fade sehen Es wäre also nicht
der gewünschte Effekt. Lassen Sie uns nun die
Fade-Animation abspielen. Wie würden wir das machen? Wir rufen von
diesem Widget aus Fade auf, holen meine Fade-Animation und spielen von dort
aus Animation ab. Mit dieser Animation machen
wir Get und Time und fügen der Animation
ein paar Sekunden hinzu. Fügen wir also 1 Sekunde hinzu. Vielleicht ist eins viel, vielleicht 0,5. Und wir werden eine
verzögernde Anzeige machen und das verbinden. Was auch immer passiert
, passiert, nachdem die Animation
der Fälschung beendet ist Also, verbinde den Sound und wir
öffnen Level nach Namen. Und der Name
sollte der Name des
nächsten Levels sein , Tutor Map Two Es sollte genau hier
kopiert oder eingetippt werden, aber es muss genau übereinstimmen Jetzt müssen wir das Widget mit
dem Ziel verbinden ,
da es eine Animation abspielt Okay, es spielt
diese Animation ab, aber wer spielt es?
Die Animation. Kompilieren speichern. Lass uns
testen, was wir erstellt haben Es wird nicht wirklich
vollständig funktionieren. Lass uns spielen. Und wie Sie bemerkt haben, okay, natürlich,
zuallererst haben wir kein Mikrofon, wir haben keinen Player, aber
der Sound hat nicht wirklich abgespielt Der Grund dafür ist, dass wir nur einen Zwei-D-Sound
abspielen,
wie wir es normalerweise tun, und das ist
für diese Situation nicht genug Weil wir die
Ebene wechseln, diese Entität, dieser Spielsound
existiert nur auf dieser Ebene. In dem Moment, in dem wir versuchen, ein anderes zu
öffnen, beginnt ein Vorgang , der die
Dinge auf dieser Ebene zerstört. Wie können wir einen
Sound spielen, den wir durch das ganze Level hindurch beibehalten
werden Level hindurch beibehalten
werden Was wir tun müssen,
ist Sound in D zu Wie Sie sehen können, gibt es hier einen
größeren Tooltip. Diese Funktion ermöglicht es Benutzern , Audiokomponenten mit
Einstellungen zu erstellen , die speziell für nicht
räumlich oder distanziert sind. Wie dem auch sei, es gibt eine
Reihe anderer Regeln. Aber was uns wichtig ist,
ist, dass, wenn wir es öffnen, es einen dauerhaften Übergang auf allen
Ebenen Also werde ich
darauf klicken und Teleport-Sound verwenden Ich werde den
Teleport-VR-Modus verwenden. Ich mag den wirklich.
Aber dieser Sound wird nicht sofort abgespielt. Es ist gerade erschienen. Das heißt nicht
, dass es abgespielt wird. Wir haben es auf die Welt gebracht, aber sonst ist nichts passiert. Um das zu tun, gehen
wir einfach vom Rückgabewert aus,
das ist ein wichtiger Teil,
dass es einen Rückgabewert hat da Play Sound to D
keinen Rückgabewert hat. Das gibt uns eine
Entität, die wir
manipulieren, für eine Variable werben und Dinge mit ihr machen können. Aber was wir
jetzt tun wollen, ist einfach nur spielen. Und dann verbinden wir
die offene Ebene. Und jetzt, wenn wir versuchen zu spielen, hören
wir ein Geräusch. Aber um ehrlich zu sein,
sollte der Sound vor der Verzögerung abgespielt werden. Und dann öffnen wir das
Level. In Ordnung. Also, wir werden
diesen Knoten eigentlich nicht benutzen. Wir werden nicht nur
einen Open-Level-Knoten verwenden. Wir werden ein System schaffen, bei dem
das System weiß, dass es,
wenn du
von Punkt A aus eintrittst weiß,
dass es zu
Punkt B führt und von geht
es zu Punkt C,
und vielleicht haben wir ein System, das
dem Spiel mitteilt , dass ich mich dorthin
zurückteleportiere, wenn
ich es von hier teleportiere Vielleicht werden wir es im
nächsten Spiel besser
erklären , weil ich denke, das ist ein netter
Ausgangspunkt für dieses Spiel Vorerst auf Wiedersehen.
36. Dynamisches Wegpunktsystem für interaktive Levels: Hallo und willkommen
zurück zu den
fünf Blueprint
Mastery Türsystemen
und interaktiven Portalen von Unreal Engine fünf Blueprint
Mastery Türsystemen . Zuvor haben wir mit
unserer Teleportationstür, unserem Levelwechsler,
angefangen unserer Teleportationstür, unserem Levelwechsler, Jetzt haben wir ein kostenpflichtiges Widget hinzugefügt , das, wenn wir es mit
der überlappenden Box auslösen, zum
Leben erwecken Wir erstellen es und
fügen es dem Viewport hinzu Dann spielen wir die Animation ab
und spielen einen Sound ab, den wir erzeugen,
und der bleibt auch beim Levelwechsel erhalten
. Und nach einer kleinen Verzögerung haben wir das neue Level geöffnet Und das bringt uns dazu,
über drei neue Dinge zu sprechen , denen wir begegnen werden. Das erste ist
die Spielinstanz, bei der es sich um eine globale Klasse handelt, eine Klasse, die erstellt wird,
wenn wir das Spiel zum ersten Mal ausführen, und sie wurde zerstört,
wenn wir das Spiel beenden. Ich meine, beende das Spiel, indem du die
Anwendung beendest. Das wird also verwendet, um
im Grunde globale Variablen zu speichern. Es ist im Grunde eine gute Möglichkeit, es zu
demonstrieren und darauf zuzugreifen,
während des Spiels, wann immer wir
wollen. Es gibt viele Möglichkeiten,
diese etwas
komplexeren Daten wie Spielerstatus zu speichern , und für uns wird das ein gutes Beispiel
sein. Die andere Sache, über die ich
sprechen wollte, ist eine Struktur. Wir sprechen ein bisschen
über Strukturen , die eine Struktur transformieren Wenn
ich zum Beispiel eine
Transformationsvariable erstelle, ist das eine Struktur aus
im Grunde drei Vektoren. Und wenn wir sie zerbrechen, können
wir diese drei Vektoren sehen. Nun, eine Struktur
ist
per Definition ein benutzerdefinierter Datentyp, der
es uns ermöglicht, verschiedene Variablen zu gruppieren, oder? Nun, diese Struktur hatte drei verschiedene Variablen
desselben Typs. Unsere wird auch zwei
Variablen desselben Typs haben, aber es ist eine eigene Struktur
,
eine Variable, die die Informationen enthält , die wir
normalerweise enthalten möchten Also gehen
wir zunächst zu Blueprints Wir werden klicken.
Wir gehen zur Registerkarte
Blueprint und
wählen Struktur aus Ich werde diese Änderung auf
ST-Level benennen. Und es gibt uns selbst eine
Variable, und lassen Sie uns eine weitere erstellen, und sie
werden vom Typ einer Zeichenfolge sein. Eigentlich könnte es vom Typ Name
sein, aber lassen wir sie als Zeichenfolge stehen, und wir werden
diese aktuelle Ebene
und die andere nächste Ebene nennen . Und das ist im Grunde
eine Struktur. Wir könnten zum Beispiel eine
andere haben, in der steht, dass
Spieler die Gesundheit laden, und eine andere , die besagt, dass der Spieler springen
kann oder was auch immer wir wollten. Es ist unsere Struktur,
unsere Art von Variablen. Also speichern wir das
und dann
erstellen wir, gehen zu Verschiedenes
und gehen zur Datentabelle. Und hier ist die
Pick-Arrow-Struktur erforderlich. Wir wählen unseren
ST-Level-Wechsel und drücken Okay. Ich werde
diesen DT-Levelwechsel nennen. Und lass es uns öffnen.
Was ist eine Datentabelle? Es handelt sich um eine Sammlung
strukturierter Daten,
die die von uns erstellte Struktur verwenden ,
die die von uns erstellte Struktur , die wir für die Verwendung ausgewählt haben. Sie ist in Zeilen und Spalten angeordnet, sodass
wir
diese Art von Daten einfach speichern, verwalten und darauf zugreifen Jede Zeile
entspricht einer Instanz
der Struktur und hat
ihre eigenen Variablen Lassen Sie uns ein paar Zeilen erstellen. Eigentlich brauchen wir mehr
und für diese Namen werden
wir exit verwenden. A, eigentlich Ausgang A, Tutorial. Nehmen wir an, beenden Sie ein Tutorial. Das wäre Exit, B, Tutorial und das andere
wäre Exit. A, Transfer, und der
andere wäre Exit, B, Transfer. In Ordnung. Und ich habe einen Fehler gemacht. Wir wollen kein aktuelles Niveau. Wir wollen zur Struktur zurückkehren, bevor
wir viele weitere Änderungen vornehmen. Wir wollen, dass das heißt, dass im Grunde zwei
Spieler beginnen. Spielerstart, denn was
wir ändern werden ,
ist, welcher Spielerstart gewählt
wird. Wenn ich zum Beispiel von Spieler-Start A
weggehe, gehe
ich zu Spieler-Start B oder
Spielerstart A. Wenn ich von
Spielerstart B gehe, gehe
ich zum nächsten Level, spiele Start B und hin und her. Wir werden also eine Schleife erstellen, in der
ich von einer Tür aus gehe, zu
derselben Tür
zurückkomme, von der ich gekommen bin, und eine nächste Tür auswähle, zu der ich
zurückgehe, ist im Grunde besser, sie
zu zeigen. Wir werden von dieser Tür aus
eintreten. Wir werden diesen Laden
verlassen. Wenn wir diesen Laden betreten, gehen
wir
durch die letzte Tür raus. Ups, nicht diese, diese hier Lassen Sie uns diese Informationen in unsere
Datentabelle eintragen. Wird Spielerstart sein. Wenn wir jede Zeile auswählen, sehen
wir hier unten
den Zeileneditor, wir
die Informationen hinzufügen können. Das nächste Level
wird üblich sein. Aber für mehr Karten wird
es nützlich sein. Unser nächstes Level ist also
Tutorial Map Two. Also alles
hätte Tutorial Map Two. Eigentlich nicht alles. Diese hätten ihnen nur eine Anleitung gegeben, was das erste
ist. Anleitung. Gestoppt.
Von diesem Level gehen
wir zu Tutorium zwei von Tutorialm-Karte zwei kommen, kehren
wir zur Tutorialm-Karte
zurück Nun, was ist dieser
Spielerstart, auf den ich mich beziehe? Füllen wir es zuerst aus und dann
werden wir es erklären. Für die erste Zeile wird
es also Exit a Transfer sein. Ich werde das kopieren. Der nächste Transfer
wird Ausgang B sein. Und ich werde
tatsächlich die Namen kopieren, die ich diesem Exit B-Tutorial und diesem Exit A-Tutorial und
diesem Exit B-Tutorial gegeben habe. Ordnung. Also, genauso wie wir Tags für den Spielerbauern verwenden, genauso wie wir
Tags für die Spielerstarts verwenden können Und wenn wir uns die
Details des Starts des Spielers ansehen, können
Sie sehen, dass er ein ganz
besonderes Objekt hat können
Sie sehen, dass er ein ganz
besonderes Objekt hat, das sich von
den Markierungen unterscheidet , die wir bereits gesetzt
haben Das wäre also der
Start des Startspielers. Lassen Sie uns das jetzt duplizieren. Lass uns hier eins hinzufügen. Lass uns das mit dem hier überschneiden, was der Ausgang ist. In Ordnung. Ich denke, das ist in Ordnung. Dann haben wir noch
einen hier drüben. Und wir brauchen hier einen
Teleporter. Also werde ich das
einfach duplizieren und so drehen
und es hierher bringen Also gut. Lassen Sie uns die
Spieler überlappen, fangen wir mit dem Ausgang an. ,
spielt der Ausgang keine ehrlich
zu sein,
spielt der Ausgang keine Rolle. In Ordnung. Und lassen Sie uns dasselbe auch für
die Tutorial-Map tun. Ich werde die Auswahl speichern. Für diese Karte müssen wir nun auch die Überschreibung des Spielmodus einstellen. Also Third-Person-Spielmodus, und wir werden
einen Spieler starten lassen. Das sieht ziemlich riesig aus. Ja, ich bin weit weg von
dem, wo ich sein sollte. Ja, also wir brauchen auch
Teleporter hierher. Also gehen wir zu Bauplänen,
Türen, Levelchangern, nicht zu Teleportern .
Das hier drüben. Ordnung. Lass uns das
alles duplizieren und rotieren. Okay. Lassen Sie uns kompilieren und
speichern und dann zu unserer Map zurückkehren. Nein, wir haben die
Tags nicht zu den Karten hinzugefügt, also haben wir das erste ausgewählt. Der erste wäre so. Holen wir uns das Etikett. Das
Tag ist Exit A Transfer, und das andere wäre Exit B Transfer und
Copy Paste der Namen, damit keine Fehler passieren Und ich denke, das
wäre für diesen. Und wir werden
beim nächsten Mal
weitermachen und all das zusammenbinden. Also fängt es an, Sinn zu machen. Dann sehe ich dich. Auf Wiedersehen.
37. Überschreibung des Gamemodes zur Anpassung der Spieler-Spawn-Funktion: Hallo und willkommen zurück
zu Real Engine Five,
Blueprint Mastery, Door Systems Zuvor waren wir mit
unseren Datentabellen und
Strukturen fertig unseren Datentabellen und
Strukturen Wir haben auch das Hinzufügen von
Tags zu unseren Spielerstarts abgeschlossen. Wir haben Spielerstarts
überall dort platziert, wo wir die Türen betreten
und verlassen möchten , und wir haben
den Spielerstarts die Markierungen hinzugefügt, die diesem Start
entsprechen , ich sollte nicht sagen, Start nett. Ein früher Fehler wurde entdeckt, das sollte heißen, ein Tutorial beenden. In Ordnung. Also lassen wir den
Spieler gleich hier starten. Vorerst haben wir auch
das zweite Level gemacht, das Tutorial zwei Level. Wir haben den Spieler beginnt
hier und die entsprechenden Tags hinzugefügt . Ich überprüfe auch, ob Fehler vorliegen. Transfer Ausgang B. In Ordnung. Und jetzt lass uns weitermachen und unsere Instanz
erstellen. Also werde ich mit der rechten Maustaste klicken. Ich werde zum
Blueprint-Kurs gehen. Ich werde zum Beispiel
suchen. Und ich will die
Spielinstanz. Hier ist sie. Ich werde
es auswählen. Ich werde es GI Doors Tutorial nennen. Und dann müssen wir zu den Projekteinstellungen gehen
. Und suche zum Beispiel. Und statt einer Spielinstanz wollen
wir, dass es ein
GI-Tür-Tutorial in der Instanzklasse des Spiels ist. Jetzt werde ich die Einstellungen
schließen. Sie müssen nicht
gespeichert werden. Das automatische Speichern bei jeder Änderung, die wir vornehmen Und ich werde
die Spielinstanz öffnen. Und hier werden wir
eine sehr einfache Veranstaltung erstellen. Wir werden ein
benutzerdefiniertes Ereignis erstellen, es
Leveltransfer nennen und einen Input dafür
erstellen. Es wird
vom Typ Zeichenfolge sein. Es wird von kommen. Wir werden
das zu einer Variablen heraufstufen. Und wir werden mit Get Data TB
beginnen. Rufen Sie nicht die Zeilennamen der Datentabelle ab, Datenzeilenebene. Und das ist der
Knoten, der
uns die Informationen aus
unserer Datentabelle abruft uns die Informationen aus
unserer Datentabelle Wir könnten hier eine Variable
mit den gewünschten Datentabellen haben , aber wir werden sie einfach manuell verwenden, sie von
hier aus manuell
auswählen, DT-Ebene ändern Nun, der eigene Name, woher das kommt,
wird unser Zeilenname sein. Wie Sie anhand der Zeichenfolge sehen können, sie automatisch in einen Namen übersetzt. Als Nächstes werden
wir Levelwechsel
durchbrechen. Wir werden
das zu einer Variablen
heraufstufen und sie aktive Ebene nennen. Fangen wir
an und dann öffnen wir die Ebene „Mein Name und wir werden die
nächste Ebene mit hier verbinden. Also, was haben wir getan? Wir haben
ein Leveltransfer-Event ins Leben gerufen. Wir haben mit „kam“ gestartet, was der Name
unseres aktuellen Spielerstarts sein wird, und dann haben wir
die entsprechende Zeile
in der Datentabelle gefunden . Das
wäre zum Beispiel Exit A-Tutorial und der nächste
Spielerstart, den wir speichern, ist Exit A-Transfer. Hier drin
speichern wir also den Transfer eines Spielers
zum Start eines aktiven Spielers, und dann
öffnen wir
das Level , das wir öffnen sollen. Wenn wir nun
das nächste Level öffnen, diese Informationen hier so
geblieben , wie sie sind,
denn wie gesagt, die Spielinstanz ist
ein globaler Plan , der Informationen
über Leveltransfers speichert Gehen wir zurück zu
unserem Levelwechsler
und ändern wir dieses offene Level und ändern wir dieses offene Um von der Instanz aus
die neue Funktion, das neue Event aufzurufen die neue Funktion, das neue Event Also werden wir eine Spielinstanz
bekommen. Und so finden wir die Spielinstanz, wie wir
es im Spielmodus getan haben. Wir werden das Tutorial
zu GI Drs casten. Wir werden
es zu einer reinen Besetzung machen. Und jetzt, wo wir wissen, dass
dies der Fall ist, können
wir einige Informationen abrufen, und zwar das Transferereignis
auf Transferebene. Aber wie Sie sehen können, muss das für dieses
Ereignis herkommen. Also werden wir
es zu einer Variablen hochstufen, und wir
werden es beim
Spawn verfügbar machen und es in InstAnseable machen Wir müssen diesen Player an den
Start anschließen und ihn so kopieren, dass er aus dem
Teleporter kommt Und tatsächlich
brauchen wir den Ziel-Teleporter nicht, also können wir ihn getrost löschen Und um ehrlich zu sein, brauchen
wir weder die Kapsel noch den Pfeil noch die Wurzel Ja, sieht schon besser aus. Und zu guter Letzt, denkt daran,
dass
ich zu Beginn gesagt habe, dass wir
die Funktionalität außer Kraft setzen werden, bei unser Spielmodus
eine voreingestellte Funktion für die Suche
nach Spielerstarts hat eine voreingestellte Funktion für die Suche
nach Spielerstarts Wir werden
dieses Verhalten überschreiben und ein
eigenes
erstellen, um ein Verhalten zu überschreiben, das
bereits vorgeschrieben und in einem beliebigen Blueprint
vorcodiert ist vorcodiert Wir können zu den
Funktionen gehen, ohne die Plus-Taste zu drücken, aber hier erscheint
es als Override-Symbol also darauf drücken, können Sie in diesem Blueprint die Funktionen
sehen, die wir
überschreiben können Wir können den
Spielerstart auswählen, hier ist er. Die Logik, wie das funktionieren
wird alle
Spielerstarts zu
bekommen, die wir finden können. Sucht nach dem Start des
aktiven Spielers. Wenn Sie ihn nicht finden können,
wählen Sie den Startort. Wir werden auch einen Code erstellen , um nach dem
Startort zu suchen. Im Grunde wäre es das. Nun, wie machen wir das? Gehen wir zurück zur
dritten Person, Gao. Zuerst werde ich
eine lokale Variable erstellen, die vom
Start des Tapullan- und
Colli-Spielers abhängig ist und Und wenn wir mit dem Entwurf
beginnen und mit der Reihenfolge der Operationen beginnen, werde
ich ihn auf true setzen Dann hole ich alle Schauspieler
plus und der Kurs
könnte der Spielerstart sein Nun, das ist ein Knoten, der ein
bisschen schwer ist , weil er
alle Akteure des
Levels durchläuft , die geladen sind. Aber da es gerade passiert,
bevor das Level beginnt, ist es in Ordnung. Nun, aus dieser Liste werde
ich jedes einzelne einschenken. Und ich werde nachschauen, ob ich nicht nachschaue, ob
ich den Starttag
des Tag-Players bekomme . Ich glaube, es heißt
G-Player-Starttag und ich werde es vergleichen, ob
es gleich Start ist. Ich werde hier
einen Zweig auswählen. Und das spart uns den
Start des ersten Spielers. Also werde ich das zu einer lokalen Variablen hochstufen und
diesen Startort benennen. Jetzt werde ich
wieder promoten, denn wenn es
nicht der Start der Spieler ist, dann werde ich Game Instants
bekommen Ich werde für GI casten. Ich werde
zu Pure Cast wechseln und
aktiven Spielern den Einstieg ermöglichen. Und jetzt werde
ich von diesem
Play-Start-Tag aus vergleichen, ob
diese beiden gleich sind. Wenn sie es sind, dann ist
das unser Neuanfang. Nennen wir diesen Spieler Start. Wenn er also den Tag Start hat, ist
es der Startort. Wenn es das Tag des
aktiven Spielerstarts hat, ist
es der Start des Spielers. Wir müssen auch festlegen, dass der
Start der Spieler nicht fällt. Und jetzt müssen wir am Ende
überprüfen, ob wir
einen Spielerstart gefunden haben, wenn ja, dann ja, ich habe das zu
einer Variablen und zu
einer lokalen Variablen hochgestuft . Also werde ich das jetzt
löschen und
wieder auf den Start mit lokaler
variabler Ebene hochstufen. Also werde ich das hier
verbinden. E. Lass uns den
Spieler hier starten lassen. Und wenn wir es nicht gefunden haben, wenn das nicht wahr ist, also falsch ist, dann ist
Player-Start der Spielerstart , den wir gefunden haben. Wenn der Spielerstart nicht gefunden
wird, bedeutet das, dass wir den aktiven Spielerstart nicht
gefunden haben, dann werden wir den Spielerstart
festlegen nicht zum Startort gelangen. Die Benennungskonvention
hier ist nicht die beste. Lass uns unser
System testen. Lass uns kompilieren. Vielleicht muss ich das natürlich auch
kompilieren und
erneut kompilieren.
Und lass uns spielen. Jetzt bin ich also voreilig, ich muss die Starttags der
Spieler hinzufügen All das sagt auch Start. Das ist also das Exit
B-Tutorial. In Ordnung. Die anderen haben wir
zu Beginn dieser Lektion überprüft . Theoretisch sollte
das jetzt also funktionieren. Wir sind hier, wir können zurückgehen. Wir können zurückgehen, also können wir nicht
zurückgehen. Ich sehe nichts. Ich schätze, ich
habe dem nächsten
Level nicht die Spielermarken hinzugefügt, die Türmarken für
die Teleporter Ja. Ja, weil es
gerade versucht hat, herauszufinden
, was zu
tun ist, aber es konnte nicht In Ordnung, gehen wir zurück
zum ursprünglichen Level. Also, diesen Weg und diesen Weg zu
gehen, es funktioniert. Wenn ich also diesen Weg gehe, haben wir den letzten Raum erreicht. Aber es gibt
noch einiges mehr zu tun. Okay, das war nicht korrekt. Mal sehen, woher das alles kam. Aber ich habe das gerade eingefügt. Ordnung, es funktioniert. Und
ich bin auf dem Weg ins Nirgendwo Warum bin ich auf dem Weg ins Nirgendwo? Zuallererst heißt es Trans.
Es sagt etwas Seltsames. Ausgang B Transfer. Aber ich habe überall den gleichen
Fehler. Es sollte funktionieren. Ts. Testen wir es noch einmal. Okay. Also ich schätze, es
gab einen Rechtschreibfehler Jep. Ja, wir haben ein
Transfersystem, das funktioniert. Großartig. Ich schätze, das
ist es für diesen. Ich sehe dich im nächsten. Auf Wiedersehen.
38. 7 Grundlagen für das Speichern von Systemen zur Erhaltung von Türzuständen: Hallo und willkommen zurück
zu Unreal Engine five,
Blueprint Mastery, Door Systems Zuvor haben wir
unser
dynamisches Wegpunktsystem für Netzwerke mit mehreren Portalen fertiggestellt unser
dynamisches Wegpunktsystem für Netzwerke mit mehreren Portalen Ich weiß nicht, wie du es nennen
willst. Wir haben die
Teleportation von
dieser Ebene auf eine neue Ebene abgeschlossen dieser Ebene auf eine neue Ebene , die das
repräsentiert Wir gehen hier raus und
können hin und her gehen. Von diesem Tor zu diesem Tor
und von diesem Tor zu diesem Tor und dann von diesem Tor zu diesem Tor und von diesem
Tor zu diesem Tor. Aber all diese befinden sich auf
einer anderen Ebene. Zu diesem Zweck
haben wir eine Datentabelle erstellt, deren eigene Namen den Markierungen
des eingehenden Levels
entsprechen, dem Level, dem aus
wir reisen, und sie enthält auch die
Startnamen der Spieler des Levels zu dem
wir gehen, und des nächsten Levels. Das alles basiert auf einer Struktur, die
aus zwei Getränken besteht. Wir verwenden das bei einer Veranstaltung. In der Spielinstanz, was wir noch einmal gesagt haben, ist
es ein globaler Plan, und wir haben die
Level-Transformation erstellt, von der du kommst ,
kommt vom Gate, und wir bekommen das, woher wir kommen, was dem
Zeilennamen der Datentabelle entspricht, und wir bekommen eine
Ausgabe dieser Zeile Durch die Spalten,
durch die Struktur lassen
wir den nächsten
aktiven Spieler starten und wir öffnen das nächste Level Wenn jetzt ein Level geöffnet wird, überschreiben
wir den Start der
Spielerauswahl. Und wir haben eine
kleine Funktion erstellt, die nach allen Startakteuren des
Spielers sucht. Und wenn dann einer von ihnen das Start-Tag
hat und es einen anderen anstarrt, wenn es es findet, dass es das aktive Start-Tag
des Spielers hat Wenn es also seine
Markierungen hat, ist alles gut. Wenn nicht, erhalten
wir eine Fehlermeldung. Aber wenn es alle Tags hat und wenn es einen
aktiven Spielerstart findet, wird dieser Spielerstart
als Standard festgelegt. Lassen Sie uns nun
mit diesem System fortfahren , um einen
Speichervorgang zu demonstrieren. Also werden
wir die Tür hier und
auf der anderen Ebene
hinzufügen. Wählen wir die eine Seitentür, was sehr einfach ist,
nicht diese. Auf jeden Fall, ja, Einbahntür, diese. Wir werden es
herbringen. Nun, hier ist relativ. Es ist ein bisschen größer
als es sein sollte, aber wir werden es ein bisschen kleiner
machen. Vielleicht ein bisschen größer als 0,5. Sagen wir, 0,7. Nein, 0,6. Ich schätze 0,55 Ja. In Ordnung.
Eigentlich ist es egal. Ich lege es gegenüber, aber drehe
es
einfach und es ist in Ordnung, weil wir von hier rein kommen, also
sollte die Vorderseite so sein Und ich muss es wieder reparieren. Also 0,57. Ja, 0,57 Ja, das passte sofort. Ordnung. Gehen wir nun
zur Transferebene, der zweiten Tutorial-Map. Wo ist das Level hier drüben. Und lassen Sie uns wieder die Tür hinzufügen
, bei der es sich um eine Einwegtür
handelt. Dieses Mal müssen wir
es größer machen. Wären es fünf? Fünf, das ist viel. Zwei, drei, 2,5, 2,2 scheint okay zu sein. Lass uns herumklingeln. Also vielleicht 2.4. Ja, 2.4 scheint in Ordnung zu sein. In Ordnung. Es so zu lassen, auch wenn es Lücken hat, ist nicht
wirklich wichtig. Also sollte diese Tür zum Beispiel speichern
können. Gehen wir zur Karte. Lassen Sie die Karten farblich kennzeichnen, damit
Sie sie leicht finden können. Okay, Rot reicht. Also, was wir wollen, ist von hier aus rein,
rein in diesen Raum. Öffne die Tür, komm vielleicht
zurück oder geh in die andere Richtung, und diese Tür sollte
immer noch offen sein. Fangen wir also mit
umgekehrter Logik an. Fangen wir an der Tür an. Was müsste diese Tür geladen
werden, um ihren Zustand zu bestätigen? Als ob wir
irgendwie den Türstatus einstellen müssten. Und je nach Speicherstatus benötigen wir
die Endgrade von Öffnen oder Schließen,
da wir
nur bei Voll Offen oder Voll Schließen speichern. Wir müssten also
die relative Drehung einstellen. Holen wir uns auch das Larp. Lasst uns etwas
Platz für diese Knoten schaffen. Das würde genügen. Ich bräuchte hier kein Larp. Ich bräuchte eine Auswahl und das würde vom Bundesstaat
abhängen Also wenn es geöffnet ist, sind
es -90 Grad, -90 oder -90 Und wenn es geschlossen ist oder in welchem
anderen Zustand auch immer, ist es Null. Nun, bei uns
laden wir nur „Öffnen“ und „Schließen“, sodass beim Öffnen und Schließen nicht die aktuellen Grade
gespeichert Und gesperrt wäre auch Null. Aber woher weiß diese
Tür, welche Tür? Wenn ich zehn davon hätte,
woher weiß sie, um
welche Tür es sich handelt? Dafür
müssten wir
eine benutzerdefinierte ID erstellen . Ich
werde löschen. Wird dieser Text irgendwo verwendet? Referenzen finden? Nein. Aber für
das D werde ich das nicht verwenden. Ich werde eine Schnur verwenden. Nennen wir das Tür-ID. Diese Tür-ID
in der Speicherdatei
würde also sagen: Okay, ID, diese Tür ist
offen geblieben oder sie ist
geschlossen geblieben , je nachdem, was sie
hat. Um diese Änderung aufzurufen, sollten
wir einen Aufruf in
der Blueprint-Schnittstelle erstellen Also gehen wir zu
unserer Blueprint-Oberfläche. Machen Sie die Ladetür. Und diese Ladetür muss mindestens den
Zustand der Tür
zurückgeben. Es müsste also
eine Variable haben, die die Aufzählung des
Türzustands darstellt Aber wenn wir
ein Speicherspiel haben, müssen
wir vielleicht mehr als
eine Sache speichern Vielleicht haben wir, ob es gesperrt ist
wie das Schlüsselelement oder nein, nein, das ist ein schlechtes Beispiel. Vielleicht hätten wir
Eröffnungsabschlüsse. Vielleicht hätten wir verschiedene
Dinge zum Speichern und Laden. Also nochmal, hier kommen
Strukturen ins Spiel. Wir werden eine Struktur
erstellen,
eine neue Struktur in Bauplänen,
Struktur, und das
nennen wir ST-Tür, speichern Öffnen wir sie und legen für
die erste Variable Türstatus fest und
lassen Sie es den Türstatus E sein Und lassen Sie uns eine weitere
Variable haben
, nämlich die Tür IE. Und das wäre eine Schnur. Und um ehrlich zu sein, wenn du die Reihenfolge hier ändern willst
, können
wir dieses Symbol
hier sehen, es wird zu einer Hand. So können wir
sie per Drag-and-Drop nach oben und unten ziehen. Es ist besser, zuerst die
Tür-ID zu haben. Ich werde
diese Struktur speichern. Und in unseren BI-Türen werde
ich Türstatistiken
eingeben, und das wird diese Struktur sein. D, Tür, speichern. Diese Struktur gibt
uns jetzt, wenn wir die Tür laden
, alle Informationen,
die wir für die Tür gespeichert haben. Im Moment ist es sehr einfach. Es hat nur zwei Variablen, die ID und den Status, aber es könnte je nach Wunsch
komplexer werden. Gehen wir jetzt
zurück zu unserer Tür. Und kompilieren. Und lassen Sie uns das
BI, die IT-Türen und die
Blueprint-Schnittstelle implementieren BI, die IT-Türen und die
Blueprint-Schnittstelle Und jetzt haben wir
Zugriff darauf. Nein, haben
wir nicht, weil ich die
Blueprint-Schnittstelle nicht
kompiliert habe Blueprint-Schnittstelle nicht
kompiliert Aber jetzt, wo ich es getan habe, haben wir
Zugang zu dieser Ladetür. Also werde ich das hier ansprechen. Ich werde das hier verbinden. Ich werde die Struktur durchbrechen wie wir es bei der Transformation getan haben, und ich werde
den Türstaat hier drüben verbinden. Im Grunde wäre das das
Ereignis, das unsere Tür belastet. Wenn die Tür zum Laden
aufgerufen wird, worüber wir
später in einer anderen Lektion sprechen werden. Das ist alles, was sie
braucht, um geladen zu werden. Nun, noch eine Sache,
wenn wir
die Tür retten , und wir werden in der nächsten Lektion
weitere Dinge erklären . Wenn wir die Tür speichern, benötigen
wir eine weitere Funktion. Nennen wir es Get Door Starts. Und in dieser Funktion erhalten wir eine
Ausgabe des ST-Türspeichers,
den wir Door Doors nennen. Wir werden kompilieren und
speichern und zurück zu unserer Tür gehen. Und doppelklicken Sie
auf Türstatistiken abrufen. Wir werden die Struktur
aufteilen. Wir werden
die Tür-ID
hier und den
Türstatus hier verbinden . Diese Funktion wird also verwendet , um herauszufinden, welche Tür mit Anleihen
beginnt Auch hier gilt: Wenn diese Struktur mehr Variablen
hat, müssten
wir mehr
Informationen mit dem Rückgabeknoten verbinden Ich denke, das ist es für diesen. Wir werden die
Speichermechanik im nächsten erklären. Auf Wiedersehen.
39. Spielmechaniken speichern, um den Fortschritt in allen Ebenen zu erhalten: Hallo und willkommen zurück
zu Unreal Engine Five,
Blueprint Mastery, Door Systems
und Zuvor haben wir
mit unserem Dor Save begonnen. Wir haben eine neue Struktur erstellt, die die Tür-ID
und die Türstatistiken enthält. Außerdem haben wir
zwei neue Funktionen
in der
Blueprint-Oberfläche geschaffen , die Ladetür und die Eingangstür startet, die Ladetür hat einen
Eingang für Türstatistiken und die Getdor-Statistik
eine Ausgabe von Türstatistiken Dann sind wir mit
der Y-Way-Tür weitergegangen haben die Event-Load-Tür
über die Blueprint-Schnittstelle erstellt die Blueprint-Schnittstelle Wir haben die Türstatistiken kaputt gemacht. Wir haben den Türstatus auf
den gespeicherten Türstatus gesetzt, und wir legen die relative Drehung auf der
Grundlage der Statistik fest, die wir für den
Türstatus laden, den wir laden. Außerdem haben wir in den
Bereich „Tür-Starts“
eine neue Variable eingegeben ,
die als Tür-ID und Türstatus bezeichnet wird . Und die Tür-ID sollte
eine Instanz sein, die bearbeitet werden kann und beim Spawn angezeigt wird, damit wir sie selbst füllen
können Denn wenn wir die Türen
speichern, benötigen
sie eine eindeutige ID Wenn wir also die Türen laden, wissen
sie, welche Tür
welche ist, sodass sie geladen werden. gerade über das
Speichern von Ladevorgängen sprechen, brauchen
wir einen
neuen Blueprint-Typ,
den Blueprint Spielobjekte Um ihn zu erstellen, klicken
wir auf. Wir gehen zu Blueprints,
New Blueprint Cross, und
suchen nach Spielstand. Und es ist hier. Ich werde es auswählen
und es So Doors nennen. Ja, also Door. Lass es uns öffnen. Nun, das ist die Datei , die auf unseren Computer geschrieben
wird. Es ist eine serialisierte Datei. Es hat diese Eigenschaft,
dass es sich um eine serialisierbare Klasse handelt. Es dient dazu,
Spieldaten zu speichern, die dauerhaft gespeichert werden sollen Dies kann jede
Art von Daten enthalten, die wir wollen. Im Moment brauchen wir eine Struktur, eine Reihe von
Strukturen, im Grunde, weil es
viele Türen geben könnte, SD-Türen, speichern. Und lassen Sie uns ein Array daraus machen. Nennen wir diese Tür Door Save. Beginnt. Tür speichert Statistiken. Ja. Lass uns
das schließen. Wir werden die SO-Türen nicht mehr
brauchen. Wir werden
es anrufen, aber nicht benutzen. Und lass uns zu
unserer Spielinstanz gehen , um unsere Speichermechanik zu erstellen Jetzt werden
wir als Erstes ein benutzerdefiniertes Ereignis erstellen. Und wir werden es Save Doors
nennen. Und die erste Frage ist, gibt
es einen Spielstand? Dieser Knoten hat nun einen
Steckplatznamen und einen Benutzerindex. Wir können mehrere
Steckplätze zum Speichern haben. Wir werden also für die Variable
werben. Es könnte Steckplatzname eins, Steckplatzname zwei, Steckplatzname drei sein. Aber wenn Sie
laden und speichern, muss
der Slot-Name derselbe sein , damit wir das in
der
Praxis besser demonstrieren können. Geben wir ihm also einen
Standardnamen doors save one. Lassen Sie uns hier einen Zweig platzieren,
weil es anders ist, wenn wir in
diesem Slot keinen Speicherplatz haben , und anders, wenn wir einen Slate im Slot haben. Das ist so, als würde man
den Spielstand überschreiben und
ein neues Objekt in diesem Slot speichern ein neues Objekt in diesem Slot Fangen wir mit dem
neuen Objekt in diesem Slot an. Also bei Folds werden
wir ein Save-Game erstellen. Und das Speicherobjekt
wären die SO-Türen. Wir werden
das zu einer Variablen heraufstufen. Wir werden
es Save Game Object nennen. Wir werden jetzt keinen komplexen Mechanismus
haben , um unsere Türen zu erkennen. Wir werden einfach alle Schauspieler der Klasse
zusammenbringen. Wir hätten ein bisschen Schlagzeug haben können, aber der Unterricht ist in Ordnung. Und lassen Sie uns
nach einer Einwegtür suchen. Und von all den Türen
, die wir für
jede finden , werden wir Türstarts
bekommen. Also, jede Tür, die es gibt, gibt
uns
im Grunde die Statistiken. Und da es das erste Speichern ist, das erste Mal, dass
wir speichern, können wir einfach unser
Speicherobjekt
abrufen, unsere Sammlung von
Türspeicherstatistiken und all diese
Statistiken einfach hier hinzufügen. Niemand würde also denken
, dass wir das Speichern abgeschlossen haben, als ob wir die Informationen
an das Speicherobjekt übergeben haben. Wir haben die Starts und fügen sie zu diesem Array hinzu.
Nun, nicht genau. Am Ende müssen wir immer noch für
jede Schleife das Spiel im Slot speichern. Und hier benötigen wir
eine Referenz für
den Slot und den Slot-Namen. Deshalb habe ich noch einmal gesagt,
dass diese korreliert sind. Sie sind miteinander verknüpft, dass wir
nach diesem Slot suchen.
Wir sollten
den Namen des Slots nicht ändern, Wir sollten
den Namen des Slots nicht ändern bis wir alles abgeschlossen haben, was
wir mit diesem Slot machen Das wäre nur der Fall , dass es keinen Spielstand gibt. Was ist, wenn es einen Spielstand gibt? Dann laden wir das Spiel auf Spielautomaten und der Spielautomat
muss derselbe bleiben. Und warum wir laden, weil wir die
aktuellen Speicherdaten benötigen. Also wollen wir diese Daten
manipulieren. Als Nächstes müssen wir in unseren Spielstand
SO Türen
werfen , weil das Spiel
, das wir vom Grundstück geladen haben, wir haben keinen Aufstieg, sondern nur
ein sicheres Spielobjekt. Wir wissen nicht, welches es ist. Also haben wir gerade die SO-Türen
geladen. Vielleicht hatten wir auch andere Speicherungen. Wir hatten einen Spielstand für Bindungen. Wir hatten einen Speicherstand für
Charakterstatistiken. Wir hatten einen Spielstand für Quests. Dieser ist für die Türen. Auch hier werden wir
durch all unsere Türen gehen. Also werde ich das Spiel „
Alle Schauspieler aus dem Unterricht holen“
und „Vier“ -Loops kopieren . Eigentlich musste ich auch die
Türen berühren. Jetzt
erstelle ich eine Variable,
eine Bolling-Variable, und nenne sie Neue Tür Ich werde
es hier klären. Dann hole ich mir unser Speicherobjekt, das
ich nicht eingestellt habe. Ja. Nach dem Casting sollten wir
unser Speicherobjekt
an unsere Türen stellen . Speichern Sie, weil dies
der Spielstand ist , den wir
manipulieren. Wir haben es Wir haben es geladen, obwohl
wir es vorher erstellt haben, wir haben es sofort gespeichert,
weil es SO-Türen hat, aber jetzt, wo wir laden, wussten
wir nicht, um
welchen Typ es sich handelt. Also haben wir es an SO-Türen geworfen und es
als das Spielobjekt gespeichert , das
wir manipulieren Jetzt hat dieses Objekt unsere
Reihe von Türstarts. Und für jede der Türen wollen
wir an jeder
Schleife ziehen, um die ID zu erhalten. Und wir werden auch die ID
abrufen, die wir
aus der Vierschleife
aller Türen der Actor-Klasse erhalten haben aus der Vierschleife
aller Türen der , und
prüfen, ob sie identisch sind. Entschuldigung, nicht dieses Äquivalent
hat eine exakte Zeichenfolge. Und wenn ja, dann setzen wir einfach dieses Array-Element. Setzen Sie von hier aus das Array-Element aus dem Array, weil wir diese Statistiken
nicht wollen. Dies sind die gespeicherten Statistiken. Die, die wir wollen, sind hier drüben. Ich werde einen
Ausleseknoten erstellen, um es übersichtlicher zu machen. Und ich lese hier und ich
lese hier und hier drüben. Die Statistiken, die wir speichern, die Neustarts kommen
von allen Schauspielern der Klasse, denen, die sich die Karte verdient haben. Die Starts, die
wir vergleichen, wenn sie denselben
Namen haben, stammen aus dieser Liste. Wenn sie also denselben Namen haben, benötigen
wir den Index dieser Liste. Und dann schalten wir die neue Tür aus, weil
diese Tür nicht neu ist. Ich existiere bereits. Wenn diese vier Runden zu
Ende sind, werden
wir uns die Frage stellen, ob es immer noch eine neue Tür
ist, oder haben wir eine gefunden
und die Statistiken geändert? Wenn es immer noch eine neue Tür ist, werden wir sie zu diesem Array
hinzufügen. Lass uns das
hier und das hier drüben vorlesen. Geh ein bisschen zu Unspat Fire. Und warte. Nun, es ist nicht neu,
wenn es sich um eine neue Tür handelt.
Wir werden
die Tür vom Speicherspiel aus
hinzufügen, zum Array hinzufügen. Und wir werden die Statistiken
hinzufügen, die wir gerade von den
Türen auf der Karte erhalten haben. In Ordnung. Nun, das wäre unser
Speichern, um es zu kommentieren, ein Drücken und ich gebe
Spiel speichern ein. Also, das hat jetzt einen Kommentar. Ich weiß, dass wir nichts
kommentiert haben, aber wir sollten zumindest Kommentare
zeigen Ich denke, das ist es für diesen. Wir werden beim nächsten Spiel mit
dem Ladespiel weitermachen . Vorerst auf Wiedersehen.
40. Programmierung von Spielladesystemen für den gespeicherten Fortschritt: Hallo, willkommen zurück bei
Andrea Engine Five, Bluepin Mastery Door Systems
und Zuvor waren wir
mit unserem Speichermechanismus fertig. Wir haben überprüft, ob das
Spiel bereits existiert. Wir haben dafür einen Slot-Namen verwendet. Und wenn er existiert, laden
wir das Spiel
und casten, um zu
überprüfen , ob es sich um unsere gespeicherten
Spielobjekte handelt, die wir erstellt haben. Wir speichern in einer Variablen. Wir gehen alle unsere Schauspieler durch. Wir bekommen ihre Statistiken. Wir setzen eine neue Türvariable
und schleifen alle existierenden
Speichertüren in einer Schleife ab. Sie sind identisch, wenn die
Tür bereits existiert, wir speichern die neuen Daten und
haken die neuen Türen ab. Wenn nicht,
fügen wir es einfach der Liste hinzu. Nun, vielleicht hätte ich wie
bei den Streitkräften anfangen wie
bei den Streitkräften und wir ein sicheres Spiel entwickeln sollen. Wir öffnen alle Türen und
fügen sie
der Liste
der sicheren Spiele hinzu, und dann speichern wir das
Spiel von Slot zu Slot. Etwas, das wir hier nicht getan
haben, aber das sollten wir tun. Also werde ich
dieses Speicherobjekt und den
Speicherplatz kopieren dieses Speicherobjekt und den
Speicherplatz , weil wir
sie hier zu Variablen heraufstufen. Und in der ersten Schleife, nachdem wir alle unsere
Schauspieler auf der Map
durchgesehen haben, speichern wir im Slot. Und warum machen wir das
hier und nicht hier? Weil
es sich um eine
verschachtelte For-Schleife handelt, bedeutet das, dass für
jeden von ihnen etwas
tun müssen Also wenn das fertig ist,
wenn es fertig
ist, muss es immer noch durch
jede Tür gehen, die es gefunden hat Wenn es also durch
alle Türen gegangen ist , die es gefunden hat, speichern wir es im Slot. Lassen Sie uns nun
mit dem Ladespiel fortfahren. Also werde ich
ein benutzerdefiniertes Ereignis erstellen. Ich werde es Load nennen. Ich werde
es Load Loads nennen. Und lass uns mit dem Codieren beginnen. Zuallererst werden
wir uns noch einmal fragen, ob es ein
Save-Game gibt? Denn wenn nicht, hat
es keinen Sinn, nicht die neuen Türen,
der Name des Spielautomaten. Es macht keinen Sinn, etwas zu
laden. Nur wenn es wahr ist, laden
wir. Wenn nicht, gibt
es nichts zum Laden. Wir werden das
Spiel von Slods laden. Und der Slot sollte der Name des Slots
sein. Jetzt müssen wir wieder auf
O Doors werfen und dieses Objekt
zum Speicherobjekt hochstufen. Als Nächstes
holen wir uns Save Dor Save Stats. Ich werde für
diese beiden Variablen werben. Dann werden wir
alle Akteure an die Tür bringen,
Einbahnstraße , Einwegtür, denn das ist die
Tür, die wir retten. Und wir werden
jede Schleife ausgießen und
wir werden die Tür
starten. Nicht dieser. Das eine, weil das andere eine
Art interner Anruf war. Jetzt werden wir dasselbe
mit den Türtresor-Statistiken machen. Wir machen eine Dauerschleife.
Also werden wir unsere verschachtelte Schleife erneut erstellen
und die Namen
der Türen, die wir
gerade geladen haben, mit
den Türen im Level
vergleichen gerade geladen haben, mit
den Türen im Level Also werden wir exakt gleich sein. Wir gehen zur Filiale
und wenn sie gleichwertig sind, dann
nehmen wir diese Tür. Das ist die Türreferenz,
und wir werden die Tür laden. Nochmals, nicht diese, die Nachricht die die Statistiken
der beladenen Tür festlegt. Ordnung. Und das
wäre eine Ladung. Wie bei unseren Türen
findet es die Tür, die wir
sind, es ist auf der Karte, dann wird es diese Funktion ausführen. Es wird den Status festlegen und die relative
Drehung entsprechend einstellen. Und jetzt kommt die Frage, wann speichern wir und
wann laden wir? Und woher weiß das Spiel, ob es ein geladenes Spiel
oder ein neues Spiel ist? Wir werden ein
sehr einfaches System erstellen. Wir werden ein Edelmetall
in unseren Spielmodus aufnehmen, eine Variable vom Typ Bullion, und wir werden
dieses geladene Spiel
oder Checkpoint oder
so ähnlich nennen oder Checkpoint oder
so ähnlich Wenn wir das Spiel starten, wollen
wir, dass es ausgeschaltet ist. Aber unser erster Spielstand, unser erster Checkpoint
wäre, wenn wir das Level ändern Aus diesem Grund habe ich den
Level-Changer-Blueprint eingeschaltet gelassen. Ich habe etwas vermasselt. Jep. Okay. Also,
wenn wir in diesem Plan das Level ändern und dafür das
GI-Tutorial verwenden, werden
wir
das geladene Spiel auf „
Durchspielen“ setzen und auch Türen speichern Wenn wir also
durch das Level gehen, stellen
wir ein, dass
der Checkpoint aktiviert ist Wenn wir zurückkommen, ist es immer noch aktiv
, weil der Spielmodus, die Spielinstanz global ist Es enthält die Statistiken, die
es dort eingegeben hat. Und wenn wir
zurückkommen, werden wir laden. Wann laden wir?
Wann laden wir? Nun, im Spielmodus, da der Spielmodus
jedes Mal läuft, wenn ein Level geöffnet wird, werden
wir fragen: W ist der
Spielmodus? Hier ist es. Lass uns anfangen zu spielen. Nachdem wir das Widget erstellt
haben, erhalten wir das Spiel sofort. Wir werden auf GI casten. Wir werden eine reine Besetzung
daraus machen und das Spiel laden. Wenn es also ein geladenes Spiel ist, werden
wir hier
einen Zweig anlegen, wir werden Puppen laden, was eine Funktion ist, die alle Puppen
lädt. Also, das Letzte, was wir tun
müssen, ist unsere Türen zu identifizieren. Geben wir der ersten
Tür einen Ausweis, dieser, dieser. Geben wir ihr eins. Ich weiß nicht warum F,
aber es ist ein guter Ausweis. Nehmen wir an, das ist F zwei. Nun, da wir wollen, dass diese Tür
der anderen
Tür in der zweiten Ebene entspricht, nicht korreliert, müssen
sie dieselbe ID haben Diese
wäre also auch F zwei. War es eine Hauptstadt? Hmm.
Ich werde sofort nachsehen Ja, benutze Kapital. Okay, also diese Stores teilen
sich die gleiche Speicherdatei, also werden sie auch
den gleichen Status haben. Hoffentlich
wird alles klappen. Also lass uns testen gehen. Lass uns
überprüfen, ob es geschlossen ist. Wir sind hier auf der Durchreise.
Wir öffnen die Tür. Lassen Sie uns von hier aus
weitermachen und die Tür ist offen. Also funktioniert unsere sichere Ladung. Und wenn ich das Spiel
erneut starte, sollten sie geschlossen sein. Also ja, sie sind geschlossen. Und in dem Moment, in dem ich hier
vorbeikomme, habe ich es geschlossen gelassen, also wird
es geschlossen sein. Im Moment ist es
im geschlossenen Zustand gespeichert ,
also ist es geschlossen, geht von hier aus, öffnet die Tür, geht in die andere Richtung Ich kann es von hier oben nicht wirklich sehen, aber ich kann es rauswerfen und es ist offen Unsere Mechanik für sicheres Laden
funktioniert also perfekt, und ich denke, damit ist dieser
abgeschlossen,
und wir werden mit dem nächsten mit
unserer VFX-Tür
weitermachen . Auf Wiedersehen.
41. Eine Tür mit funktionalen Griffen für immersive Interaktion entwerfen: Hallo und willkommen zurück
zu Unreal Engine Five,
Blueprint Mastery, Door Systems Vorher waren wir mit
unserer Ladungs- und Sicherheitsmechanik fertig. Wir haben unser Ladespiel in
unserem Third-Person-Spielmodus
genannt . Wenn jedes Level startet,
haben wir, da der Spielmodus läuft, da der Spielmodus läuft, die Frage gestellt, ob es sich um ein Ladespiel
handelt,
eine Variable, die wir in
der Spielinstanz gespeichert haben , geladenes Spiel Falls ja, haben wir das Spiel über
unser Event
geladen, das wir ebenfalls in
der Spielinstanz erstellt haben.
Dadurch wird unser Event
geladen, das wir ebenfalls in
der Spielinstanz erstellt haben das Spiel mit
der gleichen Mechanik geladen Aber anstatt zu speichern, laden
wir jede Tür Dann haben wir weitergemacht und
die Änderung am Levelwechsler,
den Speichertüren und dem
geladenen Spiel zu true hinzugefügt die Änderung am Levelwechsler, den Speichertüren und dem
geladenen Spiel zu true Also der Checkpoint, das Savegame beginnt, wenn wir
zum nächsten Level gehen Und wenn wir zurückkommen, ist
das Spiel immer noch geladen und wir können die
Auswirkungen von Speichern und Laden sehen Fahren wir mit
unserer letzten Tür fort, der VFX-Tür, die wir als Einwegtür
duplizieren werden Gehen wir zu unseren Türen. Lasst uns die Einbahntür finden und ihr einen Türgriff
hinzufügen. Also werde ich das duplizieren. Nennen wir das
VFX-Tür und öffnen wir sie. Um es noch spezieller zu machen, ändern
wir
die Farbe auf Türrot Und wir werden auch ein neu gestartetes Mesh
hinzufügen. Das wird der Griff sein. Nennen wir es also Handle. Und für das statische Netz werden
wir die Leber verwenden. Ich glaube, es ist einer. Nein,
zwei. Ja, die Leber zwei. Also lass es uns an Ort und Stelle platzieren. Lass es uns rotieren. Lass es uns
herbringen. Es ist ein bisschen groß. Ich mache es halb so groß. Also im Maßstab 0,5. Und bringen Sie es ein bisschen nach vorne,
und das ist in Ordnung. Jetzt, im Startspiel, werde
ich seine Rotation speichern. Holen Sie sich also die relative Rotation, und ich werde
diese Variable heraufstufen und
sie „Handle Original
Relative Rotation“ nennen . Fügen wir auch die
Geräusche der Tür hinzu, damit wir sie tatsächlich
kopieren und einfügen können. Bringen wir das her. Lassen Sie uns alle Tabs auf
der rechten Seite schließen, kompilieren
und speichern, und lassen Sie uns die Doppeltür
öffnen. Ja. Dieser hatte die Sounds. Also werde ich die Sounds von
hier in die VFX-Tür kopieren und
einfügen hier in die VFX-Tür Ich werde die beiden schließen.
Wir brauchen sie nicht. Und ich werde schließen,
sollte die untere Tonhöhe sein. Nein, das ist eigentlich offen. A. Das wird also von
Anfang an abgespielt und die untere Tonhöhe sollte von oben sein
, weil sie gerade schließt. Und
weißt du was? Lass es uns einfach
mit Reverse verbinden und spielen. Die Tür ist also lebendiger. Sie öffnet und schließt sich während sie die Öffnungs
- oder Schließanimation ausführt. Und um das zu vervollständigen, ändern
wir das
Widget-Update so, dass es beim Öffnen
schließen und beim Schließen
öffnen heißt . In Ordnung. Und wir möchten
das Widget nicht entfernen , wenn es
geöffnet oder geschlossen wird. Das sollte also rückwärts gehen und das Schließen sollte abgespielt werden, denn wenn
wir schließen, öffnen wir und wenn
wir öffnen, schließen wir. Okay, ich denke, das wird reichen. Fügen wir nun die
Handle-Animation hinzu. Wir werden es natürlich vor
dem einen Mal machen. Wir werden den Griff mitbringen und die relative Drehung einstellen. Ich werde es
hier hinzufügen. Und wir werden einen Rotator lernen Weißt du
was eigentlich? Wir werden die ursprüngliche Drehung des Griffs nicht
verwenden. Wir werden einfach wissen, was
diese seltsame Rotation ist. Das sollte -90, 90 und Null sein. In Ordnung. Ja, diese Rotation
war wirklich seltsam. Wenn es darum ginge, diese Rotation zu speichern, wäre
es sehr schwierig. Nun, warum das passiert, es gibt etwas
namens Gimbal ok und etwas namens
Quadrans of the Screen Und manchmal
können diese Dinge ein bisschen durcheinander bringen. Gehen wir also von -90 auf -90. Sagen wir mal 40. Nein 400, 40 und -90. Ich denke, es sollte -40 sein auch weil es 90 ist, wenn
ich es nach unten drehe Es ist positiv 40. Aber hier ist es minus. Auch wenn wir hier unten
auf der Achse etwas Positives sehen. Wie dem auch sei, lass uns kompilieren und speichern. Und für Alpha werden wir
natürlich den kürzesten Weg verwenden . Und lassen Sie uns
einen neuen Flow-Truck bauen. Also beim Flow-Truck nennen
wir das Handle-Drive. Der erste
Alpha-Drive mit einer Tür. Okay. Also ich muss das
mit der Maus machen , wenn ich nur
zoome, zoomt es raus, Kontrollchef
macht nichts Also zwei Punkte,
eigentlich drei Punkte. Eins ist Null, Null. Die nächste wäre, wie
viel ist die erste Zeitlinie? Eine halbe Sekunde. Also sollte der Griff die Hälfte davon
sein. Die Summe wäre also 0,25. Das könnte wieder Null sein. Und die Mitte
davon wäre 12,5. Also 125, und es wäre eins. Lassen Sie uns kompilieren und speichern
und unsere Handles, unser Handle, mit unserem Alpha verbinden. Das bedeutet, dass es sich
nach unten und wieder nach oben dreht. Und das wäre unser Name. Also lass uns unsere Tür hierher bringen. Machen Sie es ein bisschen hübsch, denn es
hat dieses leuchtende Express-Spiel. Wir müssen reisen. In Ordnung. Und es öffnet sich auf der anderen Seite und
der Griff bleibt da drüben. Aber wir können sehen, dass es animierend ist. In Ordnung, also lass uns dahin wechseln,
wo es geöffnet ist. Lassen Sie uns das auf 90 setzen. Machen wir den Griff zu
einem Kind der Tür, also bewegt er sich mit der Tür. Und lassen Sie uns auch
unseren Spielerstart
hierher bringen , damit wir nicht
dreimal reisen müssen, um hierher zu kommen. Also richtig. Alles, was sich öffnet, schließt, während wir
öffnen und schließen. Schieben wir es
ein bisschen zur Seite. Und lassen Sie uns noch etwas hinzufügen. Fügen wir einen echten
visuellen Effekt hinzu, der entsteht, wenn die
Tür fertig ist. Aber machen wir das für die nächste Lektion. Ich
werde dich dann sehen. Auf Wiedersehen.
42. Grifftürmechanik mit Partikeleffekten und visuellen Verbesserungen fertigstellen: Hallo und
willkommen zurück bei Anreal Engine Five,
Blueprint Mastery, Door Systems Zuvor haben wir
mit unserer VFX-Tür begonnen. Wir haben geändert, dass die Tür geöffnet und geschlossen wird, während
sie
mit E geschlossen und geschlossen wird, indem wir den Schalter
und die Öffnungs-
und Schließausgänge verwenden Und wir haben auch
einen Griff in der Tür hinzugefügt , den wir
dem Srtic-Mesh zugeordnet Und wir haben es mithilfe
unserer Zeitleiste animiert, indem die relative Drehung des
Griffs auf einen statischen Nun, wir haben gesagt, dass wir einige visuelle Effekte
hinzufügen werden, aber lassen Sie uns noch ein paar Dinge hinzufügen Fügen wir zum Beispiel dem Griff
einen Sound hinzu, und dieses Mal werden
wir eine Audiokomponente verwenden. Um seine Verwendung zu demonstrieren. Also nennen wir das D-Sound. Also, was ist diese
Audiokomponente? Wie bei den statischen
Mesh-Komponenten und bei anderen Komponenten
handelt es sich um eine Shell. Es ist eine Schale eines Typs. Dieser Typ ist also Audio. Es ist leer, also müssen wir
einstellen, welche Art von Sound es abspielt. Und wir werden
das nicht mit den Details machen,
wir werden es zur
Laufzeit machen, denn da es sich um eine Audiokomponente
der Tür handelt, verschwindet es nicht. Wenn wir Ton auf D abspielen, erzeugt
er Ton
und er verschwindet. Jetzt ist es eine Komponente. Es ist also ein Geräusch, dass wir
es als Variable in Komponenten haben . Sie können den
Türsound tatsächlich genau hier finden, Audiokomponente, und
ihn wiederverwenden und jedes Mal ändern. Ich werde es herbringen. Und wenn ich E drücke,
mache ich eine Sequenz, und ich werde
zuerst das Geräusch
beenden, das dieser Türton abspielt. Als Nächstes
stelle
ich einen neuen Sound ein. Also werde ich
den eingestellten Soundknoten benutzen, hier drüben
angeschlossen ist,
vielleicht etwas mehr Platz. Und was den Sound angeht, werde ich
den Türgriff wählen. Das nächste, was wir
tun müssen, ist einfach den Sound abzuspielen. Und das wäre es. Aber lassen Sie uns den Türsound, die Audiokomponente,
für eine zweite Verwendung verwenden. Ich werde das alles kopieren und
einfügen. Ich werde am Ende
der Zeitleiste fertig sein. Und wenn ich
die Tür schließe, nicht immer, nur wenn ich geschlossen bin, ist die
Tür geschlossen, nicht offen, wir wollen etwas Platz schaffen,
um das besser sichtbar zu machen. Bringen wir das her. Und am Ende, auf der
Rückseite der Zeitlinie, werden wir
im Grunde diese Logik miteinander
verbinden Bringen wir es her. Jetzt, wenn die Tür tatsächlich geschlossen
ist, wird ein geschlossenes Geräusch abgespielt. Wählen wir also Tür, schließen. Also, unser Griff gibt ein
Geräusch ab, und wenn die Tür tatsächlich geschlossen
ist, gibt
er tatsächlich
ein Geräusch ab, das sich
schließt, dass sie geschlossen ist . Ich habe die Animation zum Schließen im Grunde genommen
beendet. Lass uns das testen.
Lassen Sie uns zuerst kompilieren. Lass uns spielen. Okay. Wie Sie sehen können, wird es, wenn es versucht das Geräusch des Griffs
abzuspielen, , das Geräusch des Griffs
abzuspielen,
vom
Geräusch der geschlossenen Tür übertönt In Ordnung. Nun, das passiert,
weil wir das Türgeräusch
unterbrechen und ein
neues Geräusch drüber spielen Da dieser Sound also
noch nicht zu Ende ist, wo ist er hier, noch nicht zu Ende
gespielt wurde, wenn wir die Tür
schließen, wird
er gestoppt. Was ist es? Hier drüben? Es wird gestoppt. Es
sagt ein neues Geräusch und es spielt ein neues Geräusch. Das nächste, was wir tun werden, ist, zu unserer Map zu gehen und ein bisschen
zu
demonstrieren, dass wir
alle Schauspieler mit Tag abrufen, weil wir
gezeigt haben, dass wir alle
Schauspieler der Map
bekommen, und dann filtern wir die Klasse
heraus, und dann finden wir heraus, welche
Schauspieler wir wollen. Jetzt machen wir es mit
einem Get All Actors of Tag, das nicht
alle Klassen
durchläuft, alle Schauspieler auf
der Map, sondern nur die Schauspieler von Tag. Es ist ein viel optimalerer Knoten. Um das zu tun, werden
wir zunächst unser Partikelsystem NS Fireworks in unsere Map integrieren Lass es uns irgendwo platzieren. Lasst es uns nicht aktivieren. Also werde ich
zu den Details gehen. Wie Sie sehen können,
ist das
Partikel standardmäßig aktiviert, sobald
ich es der Karte hinzufüge. Wenn ich jetzt hier in
den Details nach Auto Active
suche ,
wird es ausgeschaltet und jetzt
gibt es keine Partikel mehr. Also lasst uns auch nach Tag suchen und zu Actor Tanks
gehen
und das Tag P hinzufügen. Ich verschiebe es hierher, verschiebe es hierher, richtig? Das hinter der Tür. Okay. Lassen Sie uns nun
dieses Partikel aktivieren. Und lass uns einen Trick machen. Da ich möchte, dass das
wieder nur passiert, wenn
die Tür geschlossen ist, aktivieren
wir den
Partikel, als ob die Tür vollständig geschlossen ist, dann wird der Partikel aktiviert, dann wird der Partikel aktiviert,
nicht wenn sich die Tür öffnet. Aber ich möchte, dass dies in beiden Funktionen
üblich ist. Jetzt könnte ich
das trennen und es tatsächlich
irgendwo hier oder später
hinzufügen irgendwo hier oder später , weil es das Widget
aktualisiert. Aber was wir tun können, ist hier
nur einen kleinen
Trick zu zeigen. Wir werden wieder
eine Sequenz machen. Und jetzt können wir das als separate Funktion verwenden,
als
separate Logik für den Fall, dass sich
die Tür schließt. Jetzt werde ich alle Türen mit Etikett
besorgen. Und das Tag wird P für
Partikel sein, die wir gerade erzeugt haben. Interessant
wäre es zu sehen, dass diesem Tag
alle Akteure des Tags berücksichtigt werden,
nicht alle Komponenten. Wir haben unsere Komponente im Player auf der
Kapsel, das ist wieder P. Und hier haben wir einen
Schauspieler mit einem Tag P. Ein Schauspieler ist keine Komponente. Dieser Knoten
hier würde also nicht nach der Spielerklasse
suchen. Also, wenn ich hier
für jeweils zwei eine Druckzeichenfolge mache, brauche
ich das eigentlich nicht. Ich kann nicht einfach eine Zeichenfolge drucken und deren Länge ermitteln. Und verbinde es mit
der Druckzeichenfolge. Was wir sehen sollten, wenn ich auf
Play drücke und die Tür öffne und
schließe, ist eins. Wie Sie sehen können, sucht es
nicht. Es findet nicht die
Charakterkomponente , die Angriff P hat Es wird nur nach Schauspielern gesucht. Das war nur eine Demonstration. Wir benötigen die Druckzeichenfolge nicht. Aber was wir tun müssen, ist die erste
Kopie des Arrays zu bekommen. Dies ist ein weiterer
Array-Knoten, für den wir eine Nummer aus der Liste
abrufen können . Also werden wir ins Niagara-System casten,
Niagara-Schauspieler. Weil wir den Schauspieler bekommen haben, aber wir wissen nicht, um welche
Art von Schauspieler es sich handelt Wir haben nur ein Etikett. Wenn es Gepoactors der Klasse wären, könnten
wir die Klasse herausfiltern und dann hätten wir
direkten Zugriff auf diese Aber jetzt, wo es
getOactOS von tag ist, müssen
wir in unser Ergebnis umwandeln, um zu fragen, ob das die Klasse ist, die Und von hier aus werden wir die
Niagara-Komponente bekommen. Ich glaube, es ist unten, ja, und aktiviert Und wie Sie sehen können, musste
ich mir wieder die Niagara-Komponente
holen,
denn wenn ich von hier aus zeichne und
aktiviere, können Sie sehen dass ich direkt
zur Niagara-Komponente Das ist ein Niagara-Schauspieler, aber was ich aktiviere, ist die Niagara-Komponente Also werde ich Reset einstellen. Das bedeutet auch, dass das
Partikel von Anfang an abgespielt und wir einen Sound abspielen lassen
, wenn das passiert. Und um das zu tun, werden
wir den Sound nicht endlos abspielen. Lass uns 100 Mal spielen,
100 Feuerwerke. Es wird nicht mit dem Partikel korrelieren, das Teilchen wird auch nach den
hundert abgespielten Tönen
am Leben bleiben nach den
hundert abgespielten Tönen
am Leben Aber ich denke, 100 Geräusche reichen aus, um
es zu schaffen. Okay, wir werden
N machen . Und anstatt es hier
zu finden, was mühsam ist, drücken Sie N und
klicken Sie. Bringen Sie einfach D N mit. Ich werde das N auf 100 setzen Ich mache das
Delay hier drüben, damit nicht sofort ein Sound
nach dem anderen abgespielt wird. Wir werden einen
zufällig arrangierten Float machen. Also geben wir ihm ein
bisschen Randomisierung. Lass uns 0,5 zu eins machen. Und lassen Sie uns Ton für D abspielen. Das werden wir
auch mit einer Tonhöhe spielen. Wir werden Random
Float in Range machen. Und es
wird zwischen 0,9 und 1,1 liegen. Für den Sound wählen
wir Fireworks und dann müssen
wir das nochmal
anrufen Ich werde
ein benutzerdefiniertes Event erstellen und D und Fireworks
anrufen Ich werde
es hier verbinden und ein Feuerwerk machen Dadurch entsteht eine kleine Schleife
, die 100 Mal abgespielt wird, und dann wird sie
nicht mehr abgespielt. Aber bevor wir es testen, fügen
wir noch ein
bisschen Filmsequenz Fügen wir etwas hinzu, damit wir das Feuerwerk
in unserem Player sehen
können Um das zu tun, werde ich einen Kamera-Schauspieler
mitbringen. Und ich werde mit der rechten Maustaste
auf die Kamera klicken und sie steuern. Nicht Pivot, Pilot,
Kameraschauspieler, hier ist es. Jetzt
bewege ich also tatsächlich die Kamera. Du kannst hier oben sehen,
Pilot, Schauspieler, Kamera-Schauspieler. Im Moment bin ich also
quasi die Kamera. Also ich möchte einen schönen Blick darauf
haben, wo ich
sehen möchte , vielleicht könnte es hier drüben sein, um ehrlich zu sein, wir
könnten alles sehen. Und ich werde Came Actor
anvertrauen. Und wie besitze ich
diese Kamera? Wie ändere ich die Ansicht? Nun, es gibt einen sehr
einfachen Knoten namens Bt view Par get Blend. Aber wie Sie sehen können,
kann ich ihn von hier aus nicht aufrufen. Der Grund dafür ist, dass ich mir zuerst den
Player-Controller besorgen muss , weil es sich um einen Controller handelt. Der Controller hat eine
Kamera und einen Manager. Der ist derjenige, der das machen
soll. Wenn ich also nur
aus einer zufälligen Ausführung ziehe , kann
es mir das nicht geben Das kann es tatsächlich, wenn ich das
Ansichtsziel mit Blend festlege und Contaity deaktiviere Ich kann es hier sehen. Du
kannst den Game-Player sehen. Da das Spielerspiel und der
Kameramanager dem Spieler-Controller untergeordnet sind, sind
sie hier
im weitesten Sinne
der Funktionsweise und der wechselseitigen
Vererbung von Klassen enthalten . Wie dem auch sei, wir werden mit Blend ein
festgelegtes View-Target erstellen. Und wenn ich Contentity ausschalte, kann
ich es immer noch nicht sehen. Ah, hier ist es. Vielleicht stimmt
alles nicht. Wie dem auch sei, wir können das vom
Player-Controller bekommen. Das neue View-Target
wäre nun unser Camera Actor Ops und das vorherige
wäre unser Controller. Ich gehe zum Kompilieren und Speichern, setze die
Mischzeit auf 2 Sekunden, 2,5, und lass es uns testen. Also drücke ich Play,
um die Tür zu öffnen, und wenn ich sie schließe,
sollen wir die
Ansicht des Ziels mischen und das Feuerwerk
sehen Okay. Das Feuerwerk hat funktioniert, aber die Kamera nicht,
weil ich die Stecknadel vergessen habe. Das war antiklimaktisch. Das zweite Mal ist also der Reiz. Wir werden öffnen und schließen. Wie du siehst, kann ich den Charakter
immer noch bewegen, was keine große Sache ist. Aber wenn wir das beenden wollten, könnten
wir einfach hier rüber
gehen, p kontrollieren
und die Eingabe deaktivieren. Aber ich finde es toll, dass ich
den Teppich bewegen kann, um ehrlich zu sein. Und jetzt kann ich den Teppich nicht
bewegen. Siehst du, das ist
offen geblieben, also müsste es hier
einen neuen Code geben, um das Widget zu
entfernen, was wir eigentlich ganz einfach tun können. Das irgendwie kopieren und einfügen. Das Widget
aus dem Spielmodus entfernen. Lassen Sie uns das
ein bisschen klären. Lass uns spielen. Jep. Das Widget ist entfernt, die Tür öffnet sich
und wir haben ein Feuerwerk In Ordnung. Lass uns den Spieler von
vorne beginnen lassen. Der Spieler beginnt
mit einem Tag-Start. Unsere Karte ist also vollständig. Und lassen Sie uns das durchgehen. Wir gehen hierher, wir nähern uns
der Tür, sie öffnet sich. Wir gehen hier rüber, es schließt sich. Wir verwenden dafür den
Level-Blueprint. Wir haben dann einen
Türplan erstellt, der
sich mit E öffnet und Dann haben wir eine Tür
erstellt, die sich gegenüber der Ebene
öffnet und schließt und öffnet Wir haben daraus eine Doppeltür gemacht und
etwas Sound hinzugefügt. Wir haben aus
der anderen Seitentür ein Schloss gemacht, eine kurze Tür. Dass der Spieler auf dieser Seite
sein muss, um zu öffnen. Wir haben eine
Puzzletür gebaut,
deren Hebel mit einem
einzigen Hebel geöffnet werden muss, und die Leber öffnet sich, sendet die Tür, sendet die Tür, die Nachricht zum Aufschließen. Und dann haben wir
ein System mit zwei Hebeln entwickelt , bei dem die
Tür die Hebel überprüft Wir haben hier mit
den Boxen etwas Physik geschaffen. Ich glaube, es waren zwei,
ja, der Cheat, wir drücken zwei und wir haben hier
die Schiebetür
mit zwei Druckschaltern Wir haben ein kleines Rätsel mit Knöpfen, die Tür öffnet und schließt, wenn
das Rätsel richtig ist Wir haben auch eine Gegenstandstür. Wenn du zuerst die falsche auswählst. Und dann haben wir den Telepot. An einen anderen Ort auf der Karte. Wir haben unseren Physikladen. Wir haben einen Teleport zu einer anderen
Karte, wo wir
die Speicherfähigkeit unter Beweis stellen können, dass wir
sehen können, dass die Tür hier offen ist Und wenn ich es noch einmal durchgehe, schließen
wir es und gehen hierher. Ich werde auswerfen, und
wir können sehen, wie es geschlossen ist, und wir wechseln während dieser ganzen Prozedur
die Levels, und dann haben wir unseren VFX-Shop Das hat einen Griff erzeugt ein Feuerwerk
und verändert unsere Kamera Und ich denke, das wäre es. Herzlichen
Glückwunsch, dass Sie es im Tutorial der Door-Serie so
weit geschafft haben. Sie beherrschen das Wesentliche und sind bereit, sich den bevorstehenden
Herausforderungen zu stellen. Danke, dass Sie uns folgen. Ihre Reise endet hier nicht, also bleiben Sie neugierig und
erkunden Sie bis zum nächsten
Mal weiter . Viel Spaß beim Sammeln.