Unreal Engine 5 Blueprint-Meisterschaft: Türsysteme und interaktive Portale | 3D Tudor | Skillshare

Playback-Geschwindigkeit


1.0x


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

Unreal Engine 5 Blueprint-Meisterschaft: Türsysteme und interaktive Portale

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

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Türsysteme und interaktive Portale – Einführung

      2:35

    • 2.

      Einführung in Unreal Editor und Hinzufügen der Third-Person-Vorlage

      9:36

    • 3.

      3D-Lektion 2: Grundlagen der Blueprint-Benutzeroberfläche Gamemodus, Charakter-Spawning und Level-Blueprint-Setup

      14:32

    • 4.

      3D-Lektion 3 Grundlagen der Blueprint-Programmierung für Anfänger

      7:27

    • 5.

      3D-Lektion 4: Zeitleisten für reibungslose Animationen in Unreal Engine

      13:37

    • 6.

      3D-Lektion 5 Interaktive Türöffnungen mit Kollisionsauslösern erstellen

      11:49

    • 7.

      3D-Lektion 6: Fortgeschrittene Kollisionstechniken in Unreal Engine

      13:10

    • 8.

      3D-Lektion 7 Text und Licht mit Blueprint-Programmierung

      14:20

    • 9.

      3D-Lektion 8 Programmierinteraktionstipps mit Blaupinen

      13:47

    • 10.

      3D-Lektion 9 Grundlagen für die Spielerinteraktion mit Türen

      11:01

    • 11.

      3D-Lektion 10 Programmierung des Spielerinteraktions-Türsystems

      13:36

    • 12.

      3D-Lektion 11 Ein einfaches UI-Widget in Unreal Engine entwerfen

      14:31

    • 13.

      3D-Lektion 12 Programmierung UI-Widget-Sichtbarkeit basierend auf Spieleraktionen

      11:52

    • 14.

      3D-Lektion 13 UI-Widgets mit externen Blueprint-Inputs aktualisieren

      9:05

    • 15.

      3D-Lektion 14 Ein Zweiwege-Drehtürsystem programmieren

      13:50

    • 16.

      3D-Lektion 15 Doppeltüren mit Bauplänen erstellen und synchronisieren

      9:12

    • 17.

      3D-Lektion 16 Eine Abkürzungstür für schnelleren Zugang

      10:25

    • 18.

      3D-Lektion 17 Visuelle Effekte zu einer Abkürzungstür hinzufügen

      8:45

    • 19.

      3D-Lektion 18 Einen Hebelplan zum Entriegeln von Türen erstellen

      12:20

    • 20.

      3D-Lektion 19 Implementierung der Remote-Türenverriegelung mit Blueprint-Kommunikation

      14:40

    • 21.

      3D-Lektion 20 Multi-Button-Puzzle-Mechanik für Türsysteme erstellen

      17:47

    • 22.

      3D-Lektion 21 Einen Druckschalter für die Türaktivierung programmieren

      12:30

    • 23.

      3D-Lektion 22 Eine Tortür mit Blueprint-Systemen entwerfen

      15:47

    • 24.

      3D-Lektion 23 Implementierung von Cheats für die Türmechanik von Torschaltern

      15:10

    • 25.

      3D-Lektion 24 Debugging und Optimierung des Torschalter-Türsystems

      11:54

    • 26.

      3D-Lektion 25 Grundlagen für eine Button-Puzzle-Schiebetür

      14:28

    • 27.

      3D-Lektion 26 Bauknopf-Puzzle-Mechanik für interaktive Türen

      13:11

    • 28.

      3D-Lektion 27 Die Button-Puzzle-Schiebetür mit Blaupinen fertigstellen

      20:27

    • 29.

      3D-Lektion 28 Ein Inventarsystem mit auswählbaren Gegenständen erstellen

      16:42

    • 30.

      3D-Lektion 29 Grundlagen für eine Sci-Fi-Tür, die wichtige Elemente erfordert

      11:58

    • 31.

      3D-Lektion 30 Türen ver- und entriegeln mit einem artikelbasierten System

      10:38

    • 32.

      3D-Lektion 31: Visuelle Effekte zur Verbesserung von Sci-Fi-Türinteraktionen hinzufügen

      12:38

    • 33.

      3D-Lektion 32 Einen Teleporter für Levelübergänge erstellen

      8:30

    • 34.

      3D-Lektion 33 Eine physikbasierte Tür mit Blueprint-Programmierung entwerfen

      10:46

    • 35.

      3D-Lektion 34 Eine Levelwechseltür mit Übergangseffekten programmieren

      16:08

    • 36.

      3D-Lektion 35 Einrichten eines dynamischen Wegpunktsystems für interaktive Levels

      12:09

    • 37.

      3D-Lektion 36 Überschreibender Spielemodus zur Anpassung der Spieler-Spawn-Funktion

      15:07

    • 38.

      3D-Lektion 37 Grundlagen für das Speichern von Systemen zur Erhaltung von Türzuständen

      13:31

    • 39.

      3D-Lektion 38 Spielmechaniken speichern, um den Fortschritt in allen Ebenen zu erhalten

      11:36

    • 40.

      3D-Lektion 39 Ladesysteme für das Programmieren von Spielen für den gespeicherten Fortschritt

      10:15

    • 41.

      3D-Lektion 40 Eine Tür mit funktionalen Griffen für immersive Interaktion entwerfen

      9:53

    • 42.

      3D-Lektion 41 Die Türgriffe-Bauweise mit Partikeleffekten und visuellen Verbesserungen

      19:21

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

128

Teilnehmer:innen

1

Projekte

Über diesen Kurs

[Klicke hier für das Ressourcen-Paket]

Nutze die Möglichkeiten von Unreal Engine 5, indem du interaktive Türsysteme und Sci-Fi-Portale beherrschst!



Unreal Engine 5 Blueprint Türsysteme und interaktive Portale wurden entwickelt, um dich von Anfängerkenntnissen bis hin zu professionellen Mechanikern zu führen, während du immersive und interaktive Umgebungen erstellst.

Egal, ob du gerade erst mit Unreal Engine Blueprints beginnst oder fortgeschrittene Mechaniken verfeinern möchtest, dieser Kurs ist dein praktischer Leitfaden, um das Potenzial des Spieldesigns zu nutzen.

Stell dir vor, du bastelst animierte Schiebetüren, realistische Push-Mechaniken und Teleportationsportale, die Spieler nahtlos durch deine Levels transportieren. Hier trifft das Spieldesign auf die Science-Fiction, und alles wird Schritt für Schritt aufgelistet, damit du folgen kannst.

Was du lernen wirst

Dieser Skillshare-Kurs konzentriert sich darauf, dir praktische, praxisnahe Fähigkeiten im Spieldesign mit Unreal Engine 5 zu vermitteln.

Am Ende von Unreal Engine 5 Blueprint Türsysteme und interaktive Portale hast du ein umfassendes Verständnis von:
Blueprint-Programmierung: Lerne alles von grundlegenden Blueprint-Schnittstellen bis hin zu fortgeschrittenen Setups für interaktive Systeme.


Interaktive Systeme: Erstelle reaktionsschnelle Türen, die auf Berührung, Druckplatten oder Multi-Button-Eingaben reagieren.


Physik-Interaktionen: Baue Türen, die natürlich auf Spieleraktionen und Umweltveränderungen reagieren.


UI-Integration: Füge benutzerdefinierte Widgets und Spielerfeedback hinzu, um die Benutzerinteraktion zu verbessern.


Animation und VFX: Füge atemberaubende Animationen, Partikeleffekte und Beleuchtung für ein ausgefeiltes, filmisches Finish hinzu.


Prinzipien der Spielentwicklung: Die Logik hinter interaktiven Rätseln, Inventarsystemen und Teleportationsmechanismen beherrschen.

Was du erstellen wirst

In diesem Kurs wirst du eine portfolioreife Sammlung von über 15 dynamischen und interaktiven Systemen aufbauen, darunter:

  • Grundlegende Dreh- und Schiebetüren.

  • Doppeltüren mit synchronisierten Animationen

  • Physik-basierte Pushdoors für realistische Interaktionen.
  • Multi-Level-Teleportationsportale für ein reibungsloses Gameplay.

  • Puzzletüren, die eine Bestandsüberprüfung oder Multi-Button-Sequenzen erfordern.

  • Save-State-fähige Systeme für beständige, immersive Welten

Weshalb solltest du diesen Kurs besuchen?

  • Unreal Engine 5 Blueprint Mastery Door Systems und interaktive Portale wurden entwickelt, um dir umsetzbare Fähigkeiten zu vermitteln, die du sofort in Spieleentwicklungsprojekten anwenden kannst:
  • Für alle Niveaus: Der Kurs beginnt einfach und geht zu fortgeschrittenen Techniken über, sodass er für Anfänger und fortgeschrittene Entwickler zugänglich ist.
  • Praktisches Lernen: In jeder Kurseinheit werden echte, brauchbare Mechaniken erstellt, sodass du am Ende greifbare Ergebnisse erzielen kannst.
  • Portfolio-fähige Projekte: Baue professionelle Mechaniken auf, die potenzielle Kunden, Arbeitgeber oder deine Gaming-Community beeindrucken.
  • Praxisanwendungen: Wende dein neues Wissen auf die Spieleentwicklung, das Leveldesign oder das interaktive Storytelling an.

Exklusive Ressourcen

Um dir dabei zu helfen, erhältst du auch Zugang zu einem modularen Sci-Fi-Asset-Paket, das Folgendes enthält:

  • Interaktive Requisiten wie Schalter, Knöpfe und Hebel
  • Benutzerdefinierte Partikeleffekte für Teleporter und Animationen.
  • Modulare Umgebungs-Assets für die Erstellung ausgefeilter, professioneller Designs.

Wie der Kurs aufgebaut ist

Jede Kurseinheit baut auf der letzten auf und gewährleistet einen klaren Fortschritt, während du deine Fähigkeiten verbesserst:

  1. Beginne mit den Grundlagen: Lerne die Mechanik von Dreh- und Schiebetüren zu erstellen.
  2. Interaktive Elemente hinzufügen: Türen mit Spielerinteraktionen gestalten, wie z. B. Druckplatten oder synchronisierte Animationen.
  3. Erweiterte Systeme erkunden: Teleporter, inventarisierte Türen und Save-State-Systeme bauen.

 

Am Ende von Unreal Engine 5 Blueprint Türsysteme und interaktive Portale hast du einen vollständigen Satz wiederverwendbarer Mechaniken für deine Unreal Engine-Projekte.

 

Bis zum nächsten Mal, viel Spaß beim Scripting!

Markos

Triff deine:n Kursleiter:in

Teacher Profile Image

3D Tudor

Bestselling Blender Author & 3D Educator

Top Teacher
Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

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.