Unreal Engine 5 UE5 Erstelle ein ARPG-Spiel im Diablo-Stil von Anfang bis Ende | 3D Tudor | Skillshare

Playback-Geschwindigkeit


1.0x


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

Unreal Engine 5 UE5 Erstelle ein ARPG-Spiel im Diablo-Stil von Anfang bis Ende

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.

      Spieldesign-Workshop: UE5 prozedurale Dungeon ARPG-Erstellung

      3:33

    • 2.

      Spielgrundlagen

      18:24

    • 3.

      Erstellen des Hauptmenüs

      13:02

    • 4.

      Hinzufügen des Hauptmenüs zum Ansichtsfenster und zur Beenden-Funktionalität

      10:30

    • 5.

      Lade der Bildschirmmechanik und Labyrinth-Spawning

      12:19

    • 6.

      Erstellen eines Ladebildschirms

      16:44

    • 7.

      Hinzufügen eines Ladebildschirms zum Spielmodus

      11:04

    • 8.

      Aufbau des Labyrinth-Algorithmus

      13:30

    • 9.

      Erstellen der ersten Kachel

      14:51

    • 10.

      Benutzerdefiniertes Richtungssystem

      11:47

    • 11.

      Finden benachbarter Kacheln

      13:45

    • 12.

      Koordinaten-Mapping und Kachel-Spawning

      14:14

    • 13.

      Visualisieren des Labyrinths mit Pfeilen

      15:27

    • 14.

      Hinzufügen von Schloss-ähnlichen Wänden

      14:58

    • 15.

      Blueprint-Kommunikation mit Schnittstellen

      15:47

    • 16.

      Finden verfügbarer Exits

      10:26

    • 17.

      Algorithmus für die Basis-Labyrinthform

      22:03

    • 18.

      3D-Lektion 17 Kontinuierliches Kachel-Spawnen

      11:20

    • 19.

      Benutzerdefiniertes Backtrack-System

      15:33

    • 20.

      Finalisieren von Backtrack-Regeln

      14:08

    • 21.

      Verbindungskacheln nach der Labyrinth-Generation

      20:34

    • 22.

      Fehlerbehebung und Dekorations-Blueprints

      16:03

    • 23.

      Platzieren von Wänden auf der Grundlage blockierter Pfade

      15:01

    • 24.

      Standardkorridormuster

      12:34

    • 25.

      Raumbau und Aufzug-Blueprint

      15:36

    • 26.

      Truhen-Schlüssel-Blueprint

      16:30

    • 27.

      Raum-Builder-Algorithmus

      16:10

    • 28.

      Finden möglicher 2x2-Räume

      13:49

    • 29.

      Raumperimeterfunktion

      13:23

    • 30.

      Raumauflistung und Debugging

      15:56

    • 31.

      Aufbau der Raumstruktur

      14:18

    • 32.

      Raumfunktion und Wandbefestigung

      14:32

    • 33.

      Raumfunktionen abschließen

      16:24

    • 34.

      Randomisieren interner Wände

      12:42

    • 35.

      Hinzufügen von Raumwänden

      18:55

    • 36.

      Raumtüren und Labyrinth-Segmentierung

      18:44

    • 37.

      Segmentieren der Dungeon-Bereiche

      12:48

    • 38.

      Finalisieren der Segmentierungsmechanik

      13:46

    • 39.

      Kategorisieren von Bereichen nach Größe

      12:00

    • 40.

      Bodenaustausch nach Kategorie

      15:46

    • 41.

      Versteckte Zimmerkategorien

      17:19

    • 42.

      Wand-zu-Tür-Swap-Funktion

      21:07

    • 43.

      Tür- und Sigil-Platzierung

      13:42

    • 44.

      Funktionen des Einzeltürbereichs

      21:28

    • 45.

      Dungeon-Wände verbinden

      13:53

    • 46.

      Wanddekorationen

      16:57

    • 47.

      Richtungspfeilanpassungen

      11:30

    • 48.

      Ausblenden von Debug-Pfeilen und Erstellen von Fackeln

      15:21

    • 49.

      Laichererbsen

      14:16

    • 50.

      Fackel-Flicker-Effekt

      16:29

    • 51.

      Korridor-Lichtsystem

      16:20

    • 52.

      Fallenmechanik und Schadensystem

      13:42

    • 53.

      Fallenanimation und SFX

      12:27

    • 54.

      Requisiten-Spawner-Funktion

      15:22

    • 55.

      Raumdekorations-Blueprint

      13:04

    • 56.

      Grundlagen des Raumpropell-Spawners

      15:01

    • 57.

      Raumrequisiten-Dekoration Abschluss

      14:00

    • 58.

      Hinzufügen von Physik-Elementen zu Räumen

      11:55

    • 59.

      Importieren von Revenant- und Hellgate-Tower-Blueprint

      15:02

    • 60.

      3D-Lektion 59 Hellgate-Turm-Visualisierungen und Labyrinth-Integration

      13:42

    • 61.

      Element-Grundlagen und Datentabellen

      16:04

    • 62.

      Artikelverhalten und Hover-Widget

      14:16

    • 63.

      Animation der Truhe

      15:12

    • 64.

      Brustmechanik und Item-Drop-System

      13:42

    • 65.

      Versteckte Raumtruhen

      15:00

    • 66.

      Objekt-Drop-Animation in der Nähe der Brust

      20:00

    • 67.

      Finishing-Animation mit Timelines

      12:45

    • 68.

      Artikel- und Inventar-Widgets anzeigen

      15:21

    • 69.

      Gegenstände aufnehmen und zum Inventar hinzufügen

      11:39

    • 70.

      Münzzähler und Pickup-Widget

      13:41

    • 71.

      Fixierung der Zählerfunktion

      12:19

    • 72.

      Inventarvisualisierungen im Gameplay

      13:13

    • 73.

      Aktualisieren von Inventarvisualen

      14:25

    • 74.

      Spawnen des Player-Zoom in Filmen

      20:23

    • 75.

      Kollisionsbehebungen und Spielerkachelerkennung

      12:30

    • 76.

      Raumdeckenmechaniker ausblenden

      17:47

    • 77.

      Deckenmechaniker ein- und ausblenden

      12:06

    • 78.

      Blueprint mit Aufzugsvisualisierungen

      13:16

    • 79.

      Spawn Next Labyrinth-Mechaniker

      15:19

    • 80.

      Fortgesetzte Labyrinth-Generation aus der ersten Kachel

      14:49

    • 81.

      Aufzug-Animation und Soundeffekte

      12:16

    • 82.

      Kamera-Cinematic für Aufzug

      14:28

    • 83.

      Beheben von Mischproblemen in der Kameraansicht

      16:39

    • 84.

      Aufzug-Animation und Inventar-Eingabe

      13:46

    • 85.

      Minimap-System

      11:31

    • 86.

      Abschließende Minimap-Berührungen und Inventar-Tooltip

      19:39

    • 87.

      Spielergesundheitssystem und Widget

      19:54

    • 88.

      Inventargegenstand Usability-Gesundheitstrank

      17:08

    • 89.

      Spielzeitleiste und Zeittrank

      13:00

    • 90.

      Geschwindigkeitstrank und Partikel-Effekte

      12:44

    • 91.

      Wuttrank und Partikeleffekte

      15:37

    • 92.

      Kampfmusik und Hellgate-Kampfmodus

      16:43

    • 93.

      Hellgate-Gesundheitssystem und Tod

      11:11

    • 94.

      Hellgate Bullet-Animations- und Targeting-System

      14:59

    • 95.

      Hellgate Bullet-Shooting und Licht-SFX

      15:13

    • 96.

      Benutzerdefinierte Maus-Widgets und Revenant Mesh

      13:11

    • 97.

      Physik-Impuls- und Nahkampfanimation

      15:54

    • 98.

      Nahkampfangriff-Blueprint Kollisionen und Effekte

      23:48

    • 99.

      Statische Ziel- und Schießmechanik

      14:09

    • 100.

      Player-Bullet-Blueprint und Visualisierungen

      10:38

    • 101.

      Spielerschießen und VFX

      13:29

    • 102.

      Spieler-Todesanimation und Mechanik

      11:59

    • 103.

      Mauserkennungssystem

      18:14

    • 104.

      Erweiterte Mausinteraktion für Elemente

      15:56

    • 105.

      Mausinteraktionssystem und Eingänge

      14:03

    • 106.

      Minimalbereich-Interaktionssystem

      14:14

    • 107.

      Finishing statische Aufnahmen und Zielen

      20:20

    • 108.

      Unter dem Cursor feindliche Mechanik

      17:32

    • 109.

      Postprozess-Schablone und Korrekturen zur Feinddetektion

      20:18

    • 110.

      Artikelverbreitung und Brust-Widget-Fixes

      16:21

    • 111.

      Artikel-Widget-Fixes und Aufzug-Code

      8:10

    • 112.

      Artikel-Widget-Anpassungen und Aufzug-Funktionalität

      17:56

    • 113.

      Morigesh Charakterimport und KI-Gesundheitssystem

      12:45

    • 114.

      Retargeting von Wiederkehrenden Animationen zu Morigesh

      15:44

    • 115.

      KI-Reichweiten-Check und Hellgate-Wächter

      17:54

    • 116.

      KI-Kugelschießen und Knockback-Mechanik

      17:28

    • 117.

      Knockback und Betäubungsmechanik

      17:08

    • 118.

      Blackboard-Variablen und Verhaltensbaum-Setup

      7:41

    • 119.

      Einrichten von Blackboard-Variablen und KI-Verhaltensbäumen

      13:45

    • 120.

      KI-Patrouillenverhalten und Panikmodus

      12:47

    • 121.

      KI-Angriffsmodus und Sichtlinienüberprüfungen

      12:13

    • 122.

      KI-Navigationsvolumen und Pathfind-Optimierung

      11:14

    • 123.

      Navigationsvolumen und Optimierung

      10:30

    • 124.

      Finishing Shooting-Verhalten und Debugging

      14:19

    • 125.

      Endgültige Fehlerbehebungen und Gameplay-Polieren

      10:17

    • 126.

      Wichtigstes Gameplay-Bug-Patching

      17:13

  • --
  • 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.

446

Teilnehmer:innen

2

Projekte

Über diesen Kurs


Schöpfen Sie Ihr kreatives Potenzial mit Spieldesign-Workshop frei: UE5 Prozedurale

Dungeon-ARPG-Erstellung![
Klicken Sie hier für Ressourcenpaket]

Wolltest du schon immer dein Dungeon-Crawling-Abenteuer wie Diablo gestalten?

Stellen Sie sich vor, Sie erstellen Ihre eigenen epischen Raids mit prozedural generierten Dungeons, unerbittlichen Feinden und epischer Beute – alles angetrieben von Unreal Engine 5.

In Spieldesign-Workshop: UE5 Prozedurale Dungeon-ARPG-Erstellung erwecken wir dein Traumspiel zum Leben!

Zusammen mit mir, Markos und 3D-Tudor tauchen Sie tief in Unreal Engine 5 ein, um ein voll funktionsfähiges ARPG von Grund auf zu erstellen. Egal, ob du vom Aufbau epischer Fantasy-Welten oder rasanter Action-Abenteuer träumst, dieser Skillshare-Kurs führt dich Schritt für Schritt durch die Beherrschung von prozeduralem Dungeon-Design, benutzerdefinierter KI und dynamischen Kampfmechaniken. Lass uns deine Spielideen in die Realität umsetzen!

Was du lernen wirst:

  • Meistere Unreal Engine 5 für ARPG-Design: Baue dein ARPG von Grund auf auf, einschließlich prozeduraler Dungeons, feindlicher KI und benutzerdefinierter Kampfmechaniken.

  • Dynamische Dungeon-Generierung mit Backtrack-Algorithmen: Lerne, einzigartige Layouts mit frischen Texturen und Fallen zu generieren.

  • Immersive feindliche KI: Erstelle herausfordernde Feinde, die patrouillieren, angreifen und sich an die Bewegungen deiner Spieler anpassen.

  • Beutesysteme und interaktive Truhen: Füge Gegenstandsaufnahmen und Schatzmechaniken hinzu, um die Spieler zu engagieren und das Gameplay-Erlebnis zu verbessern.

  • Endlose Dungeon-Levels: Entwirf eine Aufzug-Mechanik, die endlose Ebenen generiert und eine nahtlose Dungeon-Erkundung erstellt.

  • Anpassbares Ressourcenpaket: Verwenden Sie vorgefertigte Assets wie Materialien, Partikeleffekte, Texturen und Netze, um die Entwicklung zu optimieren und sich auf die Kreativität zu konzentrieren.

Was Sie erwartet:

Stellen Sie sich vor, Sie entwerfen Dungeons, die jedes Mal einzigartige Layouts erzeugen, die mit atmosphärischer Beleuchtung, interaktiven Truhen und strategischen Fallen gefüllt sind. Stelle dir vor, wie du gegen heftige Feinde kämpfst, die auf die Aktionen deiner Spieler reagieren, mit Schatztruhen auf der ganzen Welt verstreut sind.

Dieser Skillshare-Kurs führt dich durch den Aufbau dieser wesentlichen Elemente von Grund auf und stellt sicher, dass du die Fähigkeiten erwirbst, die du benötigst, um dein eigenes ARPG-Abenteuer zu erstellen.

In Spieldesign-Workshop: UE5 Prozedurale Dungeon ARPG-Erstellung lernen Sie Folgendes zu:

  • Erstellen Sie einen prozeduralen Dungeon-Generator mit einem benutzerdefinierten Backtrack-Algorithmus. Sie werden beim Aufbau des Labyrinthsystems und der dynamischen Generierung von Kacheln geführt, wodurch jedes Mal ein frisches Gameplay gewährleistet wird.

  • Erstelle dynamische Räume und Umgebungen und füge Requisiten, Texturen und Materialien hinzu, um Abwechslung in deinen Dungeon zu bringen.

  • Implementieren Sie eine Aufzug-Mechanik für endlose Levels, wobei Sie Progression und Herausforderungen hinzufügen, während die Spieler weitere Erkundungen vornehmen.

  • Entwirf eine benutzerdefinierte feindliche KI, die patrouilliert, angreift und sich an Spieleraktionen anpasst, wodurch taktische und ansprechende Begegnungen entstehen.

  • Integrieren Sie Physik, Beleuchtung und Soundeffekte, um immersive Atmosphären zu erstellen und die Erfahrung des Spielers zu verbessern.

Kursaufteilung:

Dieser Workshop beginnt mit den Wesentlichen – Einrichten eines Top-Down-Spielmodus und Erstellen eines voll funktionsfähigen Hauptmenüs. Sie tauchen in die Blueprints von Unreal Engine ein, wo wir prozedurale Generierungsalgorithmen implementieren und dynamisch endlose Dungeons mit feindlicher KI und Umweltrequisiten erstellen.

Während des Kurses tauchen Sie Ihre Zehen ein in:

  • Prozedurale Dungeon-Generierung: Verwenden benutzerdefinierter Algorithmen zur Erstellung von Wänden, Böden und Räumen für einzigartige Dungeons.
  • Spielerkampfmechanik: Entwirf Nahkampf- und Fernangriffe sowie Rückschlag-Effekte, um das Gameplay zu verbessern.
  • KI-Verhalten: Baue Feinde auf, die sich taktisch patrouillieren, angreifen und neu positionieren.
  • Interaktive Elemente: Erstelle ansprechende Elemente wie Truhen, Fallen und Aufzüge, um die Herausforderung deines Spiels zu vertiefen.
  • Fortgeschrittene UI-Systeme: Implementieren Sie eine 3D-Minikarte, Gesundheitsbalken, Inventar und Artikel-Pickup-Animationen für eine vollständige Benutzererfahrung.

Dein Ressourcenpaket:

Um Ihre Arbeit zu optimieren, enthält dieser Kurs ein umfangreiches Ressourcenpaket mit:

  • 21 UI-Texturen für benutzerdefinierte HUD-Elemente.
  • 133 Texturkarten zur Erstellung stilisierter Materialien sowie 53 vorgefertigte Materialinstanzen.
  • 2 voreingestellte Partikeleffekte für Explosionen und Feuer.
  • 17 Audio-Effekte für Umweltsounddesign.
  • 63 Meshes in 5 voreingestellten Dungeon-Stilen (Stein, moosiges Kopfsteinpflaster, Holz, Ziegel und ein dunkles Kammerthema) komplett mit Requisiten und Fackeln.
  • Ein Highlight-Post-Prozess-Effekt, um die Sichtbarkeit der Spieler in komplexen Umgebungen zu gewährleisten.

KURSÜBERSICHT

In diesem Kurs beginnen wir mit der Einrichtung des Kernspielmodus und des Layouts in Unreal Engine 5 – eine Art von Legung der Grundlage für alles. Danach springen wir in die Gestaltung eines wirklich sauberen und benutzerfreundlichen Hauptmenüs. Es ist eines der Dinge, die einen großen Unterschied machen, weißt du?

Sobald das geregelt ist, tauchen wir ein in die lustigen Dinge – die prozedurale Labyrinthgeneration. Hier beginnst du mit dem Aufbau dynamischer Dungeons, und es wird ziemlich cool. Im Laufe der Zeit definieren wir benutzerdefinierte Regeln für die Raumerzeugung, sodass Sie nicht nur die Dinge klatschen. Sie haben die Kontrolle über Dinge wie Kacheln und Ausgangspunkte und stellen sicher, dass die Erfahrung des Spielers nahtlos ist.

Wir arbeiten auch an einem benutzerdefinierten Backtrack-Algorithmus, der sicherstellt, dass sich jedes Mal, wenn jemand dein Spiel spielt, neu anfühlt. Keine zwei Läufe werden je gleich sein! Dann kommen wir mit der feindlichen KI und Kampfsysteme wirklich ins Spiel. Hier bekommt Ihr Spiel eine ernsthafte Tiefe, fordert die Spieler heraus und hält die Dinge interessant.

Zum Abschluss tauchen wir ein in die Einrichtung eines Inventarsystems, damit die Spieler Gegenstände sammeln und reibungslos mit ihnen interagieren können. Es zieht wirklich alles zusammen und lässt das gesamte Spiel interaktiver und polierter wirken.

Abschließende Gedanken

Am Ende des Spieldesign-Workshops: UE5 Prozedurale Dungeon-ARPG-Erstellung haben Sie ein voll funktionsfähiges prozedurales Dungeon-System mit dynamischen Umgebungen, fortgeschrittener feindlicher KI und einem Beutesystem aufgebaut – alles innerhalb von Unreal Engine 5. Egal, ob Sie gerade Ihr erstes Spiel starten oder Ihre Fähigkeiten verfeinern möchten, dieser Kurs stattet Sie mit den Tools und Kenntnissen aus, um ein überzeugendes Dungeon-Crawling-ARPG zu erstellen.

Skripte weiter, alle und wir sehen uns im Kurs!

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. Spieldesign-Workshop: UE5 prozedurale Dungeon ARPG-Erstellung: Wolltest du schon immer deinen eigenen Dungeon wie den legendären Diablo mit unerbittlichen Feinden und einem epischen Spiel erschaffen und dabei die Macht nutzen, fünf zu erkennen? fünf zu erkennen? Nun, jetzt seid ihr herzlich willkommen beim Game-Design-Workshop, in dem ihr fünf, prozedurale Dungeons und Action-Si-Erstellung realisiert Denn dein Traumspiel kann Wirklichkeit werden. In diesem Kurs lernst du, ein voll funktionsfähiges Action-LPG zu entwerfen fortschrittliche Baupläne verwendest, von der dynamischen Generierung von Tangenten bis hin zu benutzerdefinierten KI-, interaktiven Truhen- und Inventarsystemen Sie haben alles, was Sie brauchen , um Ihre Vision ans Licht zu bringen Hallo, ich bin Marcos und habe mich mit Dudo zusammengetan, um diesen aufregenden Kurs anzubieten Unser Ziel ist es, ein System zu entwickeln , das dynamisch Level generiert, komplett mit benutzerdefinierten Wänden, Requisiten und Beleuchtung, und gleichzeitig Gameplay-Funktionen hinzufügt, gleichzeitig Gameplay-Funktionen hinzufügt um deinem Spiel Leben einzuhauchen Wir werden einen Levelgenerator entwickeln, der einen benutzerdefinierten Backtrack-Algorithmus verwendet einen benutzerdefinierten Backtrack-Algorithmus , um die Struktur des Dangons zu erstellen Dies wird die Grundlage für unsere prozeduralen Levels legen und sicherstellen, dass sich das Spiel frisch und einzigartig anfühlt Als Nächstes werden wir Räume bauen und das Level in verschiedene Kategorien einteilen Auf diese Weise können wir verschiedene Texturen, Materialien und Requisiten anwenden , um die visuelle Vielfalt des Dangons zu verbessern Wir werden Lichtrequisiten hinzufügen, die automatisch im Dungeon erscheinen , um dem Level, während er generiert wird, zusätzliche Atmosphäre zu verleihen Level, während er generiert wird, zusätzliche Atmosphäre zu Eine der aufregenderen Funktionen, die wir behandeln werden, ist die Aufzugsmechanik, die endlose Levels ermöglicht, während die Spieler vorankommen. Der Aufzug spawnt einen neuen Generator, um das nächste Level während die Spieler vorankommen. Der Aufzug zu erschaffen , das Wir werden außerdem Entwürfe, Truhen und eine Questtruhe hinzufügen, um den Aufzug für den Aufstieg in die nächste Etage freizuschalten den Aufzug für den Aufstieg in die nächste Etage Damit sich die Umgebung lebendiger anfühlt, werden wir physische Ressourcen oder dynamische Interaktionen mit Requisiten und Objekten in der Spielwelt einführen dynamische Interaktionen mit Requisiten und Objekten in Was das Design der Benutzeroberfläche angeht, werden wir ein Minimum von drei D einführen Spielern das Navigieren im Dungeon zu erleichtern Darüber hinaus werden wir ein grundlegendes Benutzeroberflächensystem zur Anzeige von Gesundheit und Inventar sowie verschiedene Gegenstände wie Geschwindigkeitssteigerung, Gesundheit und Zaubertränke entwickeln ein grundlegendes Benutzeroberflächensystem zur Anzeige von Gesundheit , , alles Malas Für den Kampf werden wir einen Charakter mit zwei Hauptfähigkeiten erschaffen : einen Angriff, der Gegner und Objekte zurückstößt, und einen Angriff, der aus der Ferne einen Damm aufbaut Wir werden auch ein feindliches KI-System implementieren, Gegner patrouillieren , auf den Spieler schießen, bei dem Gegner patrouillieren , auf den Spieler schießen, wenn er sich in Reichweite befindet, und sich neu positionieren, um einen taktischen Vorteil zu wahren Um den Schwierigkeitsgrad weiter zu erhöhen . Wir werden ein feindliches Gebäude entwerfen , das auf den Spieler schießt. KI-Feinde werden dieses Gebäude bewachen, und wenn es zerstört wird, gerät die KI entweder in Panik oder greift den Spieler aggressiv an und fügt dem Dungeon ein strategisches Element hinzu In diesem Kurs erhältst du Zugriff auf ein umfangreiches Ressourcenpaket , das dein Spieldesign verbessern wird Es enthält 21 benutzerdefinierte Benutzeroberflächentexturen und 133 Tracture-Maps für die Texturierung von Objekten, 133 Tracture-Maps für die Texturierung von Objekten mit denen 53 Materialien und Material-Instanzen erstellt Das Paket enthält 63% Durcheinander von Fliesen in den fünf Dungeonstilen „Stein“, „ Moosiges Kopfsteinpflaster“, „Holz“, „Ziegel“ und eine dunklere Themenkammer, und eine dunklere Themenkammer, sodass in den fünf Dungeonstilen „Stein“, „ Moosiges Kopfsteinpflaster“, „Holz“, „Ziegel“ und eine dunklere Themenkammer, sodass du sie nahtlos in dein Projekt integrieren kannst. Diese Codes führen dich Schritt für Schritt durch den Aufbau eines voll funktionsfähigen Dungeonsystems eines voll funktionsfähigen Lasst uns eintauchen und anfangen, unsere eigene prozedural generierte Welt zu erschaffen unsere eigene prozedural generierte 2. Spielgrundlagen: Hallo und willkommen zum Game Design Workshop und dem Kurs zur mit Real Engine Five Erstellung prozeduraler Dungeon-Action-Rollenspiele Lassen Sie uns erklären, worum es in diesem ganzen Kurs geht. Ich werde dafür zunächst meine großartigen Zeichenfähigkeiten in Farbe unter Beweis stellen , und das werden wir während des Kurses oft tun . Was wir jetzt erstellen werden, ist im Grunde ein Hauptmenü. Das wird ein Labyrinth erzeugen. Aber die Art und Weise, wie es funktionieren wird, werden wir etwas genauer besprechen genauer Aber vorerst wird es wie bei Schlangenpfaden entstehen , die irgendwann enden werden. Sie werden nicht in der Lage sein, mehr zu erschaffen, also wird sie versuchen, einen anderen Weg zu wählen und einen weiteren Schlangenpfad zu schaffen , der enden wird, jetzt zu gehen und dann immer mehr. Wir werden das von einem Ausgangspunkt aus tun, und wir werden uns auf einem fiktiven Raster in jede Richtung bewegen Falls das Sinn macht. werden wir unseren eigenen Charakter kreieren , der einen Angriff im Einkaufszentrum haben wird. Lass uns hier einen Schlag machen. Mein ML-Angriff und ein Schießangriff. Natürlich ist der Koarcor, den wir in alle Richtungen bewegen können , das ist gegeben Und wir werden auch ein kleines Inventar haben, wenn das zum Beispiel unser Bildschirm ist, wir werden hier ein Inventar auftauchen lassen, unser Charakter wird in der Lage sein, einige Gegenstände aufzusammeln, indem er sie anklickt, oder einige Truhen öffnen, in denen Gegenstände sie anklickt, oder einige Truhen öffnen , Ja, das ist ein fantastisches Schach. Wie ich dir schon sagte, tolle Zeichenfähigkeiten. Ja. Und zu guter Letzt werden wir einen KI-Charakter erstellen. Lasst uns diesem Charakter, der einen Fernangriff ausführen wird, zwei Hörner aufsetzen einen Fernangriff ausführen wird Es wird keine Waffe sein, es wird so etwas wie ein Dolch sein. Und das, was wir bei der Erstellung des Labyrinths tun, werden wir im Grunde auch bei der Erstellung des Labyrinths tun, werden wir im Wir werden so etwas wie einen Turm bauen , der auf dich schießt, wenn du in Reichweite bist, so etwas Und im Grunde wäre das so. Die KI wird den Turm bewachen und auf Patrouille sein. Wenn der Turm zerstört wird, läuft er im Panikmodus durch das Labyrinth Und wenn du in Reichweite der KI bist, wird sie dich erschießen, und wenn du dich nicht in der Reichweite befindest, sind sie agro Sie werden versuchen, einen Ort zu finden, auf den sie schießen können. Im Grunde eine sehr einfache KI. Wir werden Navigations - und KI-Bäume verwenden , um sie zu demonstrieren. Aber um ehrlich zu sein, diese Größenordnung der KI und die Art und Weise, wie wir sie gemacht haben, werden prozedural sein , weil unser Labyrinth etwas ist, das ich nicht hinzugefügt habe Das Labyrinth, wenn wir das Ende erreichen , sagen wir, das ist das Wir werden mit einem Aufzug nach oben fahren und ein weiteres Labyrinth schaffen Nicht kleiner, größer als der vorherige. Kleiner würde keinen Sinn ergeben. Aber ja, das wäre es. Wir werden ein weiteres Labyrinth schaffen. Und da das unendlich ist und so, wie wir es tun, werden wir ein Navigationsvolumen verwenden das unsere Labyrinthe verschlingt, was es nicht unbegrenzt macht, weil es ein Limit hat Aber wir werden das verwenden, um ein Navigationsmuster zu demonstrieren, das nach Ansicht von AI nicht optimal wäre Das wäre für unser Spiel. Es wird etwas Framelg erzeugen, aber es ist in Ordnung. Ich denke, das ist ein guter Ausgangspunkt für Erklärungen. Gibt es ein Kunstwerk, eine Kunstform, wie Sie sehen können Wir werden mit dem nächsten weitermachen. Tschüss. Fangen wir damit an, ein neues Level für feindliches Spiel zu erstellen , denn dieses Level wird mit unseren Vorschau-Assets gefüllt. Falls Sie mit ein paar Erläuterungen noch nicht vertraut sind, können wir die Ressourcen, die wir auf der ganzen Welt bevölkert haben, hier in der Gliederungsbox finden der ganzen Welt bevölkert haben, hier in der Gliederungsbox finden Wenn ich ein Asset auf der Welt auswähle, wird es mich zu diesem Asset im Outliner weiterleiten Im Outliner können wir sehen, was sich darin befindet, was wir in unserer Welt platziert haben Lass uns ein neues Level erstellen. Gehen wir zu den Ordnerzuordnungen, klicken mit der rechten Maustaste und wählen Ebene aus. Dadurch wird eine neue Umgebung für uns geschaffen , die leer sein wird. Ich nenne es Game Level. Ich werde Enter drücken. Jetzt können Sie sehen, dass sich neben dem Symbol ein kleines Sternchen Dieses Sternchen bedeutet, dass dieses Asset nicht gespeichert wurde. Wir können es auch sehen, wenn ich den Ordner wechsle Ich habe beispielsweise vergessen, dass ich dieses Asset nicht gespeichert habe Wir können hier unten sehen, dass dort ein nicht gespeichertes Asset steht. Wir beheben das, drücken wir auf dieses Symbol und es öffnet sich das Menü für sichere Inhalte und ich werde das Asset speichern Quick Shortcut heißt Control Saved, und es ist der Shortcut, um alles zu speichern. Wie wir die Datei sehen können, alle speichern. Gehen Sie zurück zum Inhaltsbrowser, zurück zu den Karten und lassen Sie uns unser Level öffnen. Jetzt können wir im Outliner sehen, dass diese Ebene jetzt leer ist Da ist nichts drin. Ich wollte etwas reinbringen, aber ich werde uns jetzt nicht benehmen. Ich gehe einfach zu dieser Taste hier drüben und drücke Lass uns die Richtungsbeleuchtung hinzufügen, damit wir Dinge erledigen können. Wir können nichts sehen, weil es nichts zu sehen gibt. Ich werde auch eine Form hinzufügen und eine Röhre auswählen. Jetzt können wir sehen, dass es Licht und die Röhre gibt. Wir können es auch in unserem Viewport sehen. Mischen Sie die Kamera Und für diejenigen, die keine Ahnung von Unreal Engine haben, das gemacht, indem ich die rechte Maustaste gedrückt habe und mich mit WA und D bewegt habe, während ich mit WA und D bewegt habe, die rechte Maustaste gedrückt U und A bewegen die Kamera auf und ab, und die Maus dreht sich im Grunde wie in einem Spiel Fledermäuse sind eher technisch. Wie wir sehen können, als ich den Würfel oder die Beleuchtung, das gerichtete Licht, ausgewählt habe . Wir können sehen, dass sich die Paneldetails hier geändert haben. Dies sind Details für alles, was wir ausgewählt haben. Daneben befindet sich eine weitere Registerkarte namens Welteinstellungen. Wenn Sie diesen Tab nicht haben, finden Sie ihn in den Windows WD-Einstellungen. Sie kann überall angezeigt werden, aber Sie können sie im Viewport verankern, wo immer Sie möchten In den Worteinstellungen finden wir viele Informationen über die spezifischen Regeln unseres Levels Einige spezifische Regeln legen dies in den Wandeinstellungen fest. Wir werden uns jetzt nicht um alles kümmern, aber wir werden die Regeln für die Spielstimmung überprüfen, das sind die Regeln, sagen wir, die wichtigsten Informationen Es ist eines der ersten Dinge, dass, wenn wir auf Play drücken , das vorgegebene Verhalten geladen wird Und was meine ich mit vorgegebenem Verhalten? Wenn wir auf Play drücken, können Sie sehen der Outliner mit vielen weiteren Dingen gefüllt wird Dies sind notwendige Dinge, um das Spiel auszuführen. Im Moment haben wir den Würfel und die Beleuchtung, und standardmäßig können wir mit der Maus steuern und uns bewegen und den Mauszeiger bewegen Um all dieses Verhalten zu ändern, müssen wir die Einstellungen ändern Es gibt verschiedene Möglichkeiten, dieses Verhalten zu ändern , und für uns werden wir ausnutzen, werden wir ausnutzen wie wir es im Spielmodus ändern können Um das zu erreichen, werden wir nun eine Vorlage und einen Großteil unserer Programmierung verwenden und einen Großteil unserer Programmierung Also gehen wir wieder zur Inhaltsleiste und wählen Hinzufügen und Funktion oder Inhaltspaket hinzufügen aus. diese Weise können Sie dieses Inhaltspaket, die von Areal angebotenen Vorlagen, zu Ihren Projekten hinzufügen , falls Sie dies bei der Projekterstellung nicht getan haben Sie können das Blueprint One, das Seplus Plus One oder das Starter-Inhaltspaket hinzufügen Seplus Plus One oder das Starter-Inhaltspaket Wir gehen zu Blueprint und wählen die Option von oben nach unten aus. Ich werde auf anderes Projekt drücken. Für mich wird es sofort geschehen. Es ist vielleicht nicht für dich. Ich habe diese Informationen neu geladen, weil ich sie bereits in anderen Projekten heruntergeladen Wenn der Download abgeschlossen ist, wird der Inhaltsbrowser in einem neuen Fenster geöffnet, und wir können den vorherigen schließen Ich werde das Ganze im Vollbildmodus machen . Und lassen Sie uns sehen, welche neuen Dinge hinzugefügt wurden. Es wurde der Ordner mit den Charakteren hinzugefügt , der das Geld für die Animationen enthält. Ich denke, es sind Many und Qin und einige Level-Prototyping-Tools und ein Cursor-Ordner für den Klick von oben nach unten Der Top-Down-Ordner selbst, der eine Map enthält, die all das benötigt, um zu funktionieren Und im Blueprints-Ordner können wir die drei Klassen sehen, die wir tatsächlich häufig verwenden werden Ich habe das Wort Klassen oft verwendet, und für diejenigen, die neu im Programmieren sind, könnte das verwirrend sein Im Moment können Sie Klassen auch als Vorlagen für Programme betrachten , zum Beispiel als spezifischere Platten für die Erstellung von Objekten in unserer Welt, und alles in unserer Welt ist ein Objekt. Zum Beispiel haben wir hier drei spezielle Blueprint-Klassen. Wir haben die Charakterklasse und wir haben die Controller-Klasse und die Game-OD-Klasse Jede von ihnen ist mit einem bestimmten Verhalten neu programmiert, und das macht sie zu einer Klasse. Und in unserem Fall verwenden wir momentan das Spiel Old Class, das dafür verantwortlich ist. Ich werde dieses Fenster hier schließen , das, wie wir in den Welteinstellungen sehen können, für den Klassenteich, für den Controller, für das HUD, für viele Dinge verantwortlich wie wir in den Welteinstellungen sehen können, für den Klassenteich, für den Controller, für das HUD, für viele Dinge Jetzt gehen wir zu Gamed Override und wählen Gamed von oben nach unten Wie Sie sehen können, wurden die Informationen hier bereits näher an das angepasst , was wir wollen Wenn ich die Play-Taste drücke, können wir sehen, wie der Charakter von oben nach unten endlos fällt Wenn ich die Standardbauernklasse entferne und „ Keine“ verwende und dann die Abspieltaste drücke, der Charakter verschwunden und die Kamera dort geblieben, wo wir sie ursprünglich platziert Das bedeutet durch das vorgegebene Verhalten des Spielmodus, dass, wenn wir eine Standardklassenfigur haben, immer bei Spielbeginn spawnt, wenn wir die Play-Taste drücken Weitere Informationen zum Spielmodus , dass er pro Level ausgeführt wird Das bedeutet, dass es darin enthalten ist. Es enthält Regeln für diese Ebene, aber wir können es auf vielen Ebenen verwenden, weil wir vielleicht dieselben Regeln oder viele Ebenen haben möchten. Wir können in unserem Spiel so viele Spielmodi haben, wie wir wollen, und wir können sie hier jederzeit überschreiben. Ich verwende das Wort überschreiben , weil wir einen Standard-Schwulenmodus festlegen können. Das waren die Projekteinstellungen, als wir den Schwulenmodus eingestellt haben. Wir können feststellen, dass wir eine Standardeinstellung festlegen können , die alle unsere Maps verwenden werden. Oh, Mode ist eine etwas komplizierte Klasse. Er ist auch für Mehrspieler-Sachen zuständig, und ich kann viele Sonderregeln festlegen. Die Fähigkeit, dass es auf jedem Level neu starten muss. Lassen Sie mich Ihnen ein Beispiel in Farbe geben, um es visuell schmerzhafter zu machen. Oh. Wenn das unser Level ist, beginnen wir beim Laden mit dem Spielmodus. Warum sage ich, dass wir mit dem Spielmodus beginnen? Weil der Spielmodus läuft, bevor das Level geöffnet wird. Wie wir das deutlich sehen können. Die Ebene selbst hat einen anderen, in sich geschlossenen, spezifischen Bauplan, den Ebenenplan Wir können das demonstrieren, indem wir zum Projekt gehen und in diesen Wind gehen, und dann den Level-Blueprint öffnen Für diejenigen, die neu sind, ist dies der Event-Graph, der Teil des Entwurfs Wir werden etwas später weitere Dinge erklären. Ich werde jetzt anfangen zu spielen. Sie nivellieren Blueprint. Das bedeutet, dass zu Beginn des Levels die Zeichenkette auf der Konsole ausgegeben wird, in der sich diese Buchstaben befinden Ich werde diese Zeichenfolge kopieren. Ich gehe zum Inhaltsbrowser. Gehe zum Modus „Baupläne nach unten“. Wenn es so geöffnet wird, passiert das normalerweise , weil es keinen Code enthält. Es zeigt uns also die Standardvariablen des Blueprints Die Standard-Wanne. Ich kompiliere und öffne den vollständigen Blueprint Ich werde mit der rechten Maustaste auf das Ereignisdiagramm klicken und die angegebene Art eingeben Ich werde einfügen. Drucke. Ich werde diese A-Gain-Form korrigieren. Blaupause. Kompilieren und ich drücke Play Wie Sie sehen können, wurde zuerst ein Spielmodus und darüber der Level-Blueprint gedruckt Das bedeutet, dass die Reihenfolge, dieser ausgeführt wird, zuerst der Spielmodus ist , der alle Informationen enthält Wir haben über den Player-Controller, das Spielertelefon, alles gesprochen , und dann wurde ein geschlossener Level-Blueprint ausgeführt könnten einige Fragen Leuten könnten einige Fragen in den Sinn kommen: Warum verwenden wir das und warum verwenden wir jenes nicht Bei der Kodierung gibt es etwas, eine Referenz. Das heißt, ich möchte etwas oder etwas anderes tun, um etwas für mich zu tun. Wenn ich etwas mit etwas anderem wie dem Spiel kommunizieren möchte, kommuniziere ich generell etwas mit etwas anderem wie mit Level-Blueprints Ich brauche eine Referenz. Es gibt eine Referenz. Also muss ich eine Referenz für dich haben. Eines der Prinzipien, eines der Prinzipien, eigentlich, aber eine Art, wie wir denken, wenn wir etwas programmieren, sind die Referenzen. Wie kann ich eine Referenz darauf bekommen und wie bekomme ich eine Referenz darauf? Es gibt viele Regeln. Ich werde nicht zu sehr ins Detail gehen, aber das ist eine der Möglichkeiten, wie wir entscheiden, was wir verwenden. Es gibt viel kompliziertere Entscheidungen und Regeln, die berücksichtigt werden müssen. Aber eine Sache, die zum Beispiel wichtig ist, ist die Referenz für Anfänger, das ist etwas, an das sie sich gewöhnen müssen Oh, warum verwenden wir auch den Spielmodus und wie werden wir ihn verwenden Werden wir die Fähigkeit des Spielmodus demonstrieren , sich selbst neu zu starten Das heißt, wenn wir das Level laden, wollen wir bestimmte Dinge auslösen, die passieren. Und wenn wir das Level neu laden, vergessen wir sie und laden sie von Anfang an neu In einem konkreteren Beispiel werden wir den Spielmodus verwenden, um das Hauptmenü zu erstellen Lassen Sie uns eine neue Folie erstellen. Was wir machen werden, ist ein Programm, das sagt: Dow me das Hauptmenü, der Spieler drückt oder startet und startet und startet dann das Spiel, weiter mit dem, was wir gemacht haben, oder beendet das Spiel. Aber wenn das Spiel beendet ist, wollen wir es neu laden Was wir tun werden, ist, das Level von hier aus wieder zu öffnen Wenn wir also das Etikett erneut öffnen, möchten wir wieder das Hauptmenü anzeigen. Aber wir werden den Spielmodus verwenden, um das zu hosten. Ich denke, das reicht für die Theorie. In diesem Fall sehe ich dich im nächsten mit mehr Action. Auf Wiedersehen. 3. Erstellen des Hauptmenüs: Hallo und willkommen zum Game Design-Workshop und den Aufrufen zur für Engine Five Erstellung von echten prozeduralen Dungeon-Action-PZs In der vorherigen Lektion haben wir damit begonnen, unsere Map im Ordner Maps zu erstellen Anschließend haben wir die Vorlage für Charaktere von oben nach unten hinzugefügt und den Spielmodus in unseren Wandeinstellungen geändert. Wir haben auch einen Würfel und ein gerichtetes Licht hinzugefügt und die Fähigkeit demonstriert, naja, nicht die Fähigkeit, sondern die Reihenfolge der Operationen, dass der Spielmodus zuerst ausgeführt wird und dann das Spiellevel läuft, wenn wir unser Level starten Jetzt werde ich diese Zeichenketten löschen, und ich werde auch den Würfel und das Richtungslicht löschen, und ich werde alles speichern In dieser Lektion werden wir mithilfe eines Widget-Blueprints das Hauptmenü für das Widget für unser Spiel erstellen für unser Spiel mithilfe eines Widget-Blueprints das Hauptmenü für das Widget Jetzt gehe ich zu Inhalt, klicke mit der rechten Maustaste, erstelle einen neuen Ordner und nenne ihn U. In diesen Ordner klicke ich mit der rechten Maustaste Benutzeroberfläche und wählen Sie Widget-Blueprint aus. Was ist nun ein Widget-Blueprint? Ein Widget-Blueprint ist eine Möglichkeit, die uns Real bietet, Benutzeroberflächen zu erstellen Ich werde das Benutzer-Widget für die allgemeine Klasse auswählen. Es gibt viele andere Klassen für ganz bestimmte Dinge. Was wir brauchen, ist ein Benutzer-Widget. Ich werde das WG nennen. Hauptmenü. Und ich werde es öffnen. Bevor wir mit der Programmierung des Widgets und des Hauptmenüs beginnen. Lassen Sie uns ein bisschen über Widgets für diejenigen sprechen, die neu sind. Zuallererst können wir feststellen, dass dieses Diagramm ein bisschen anders aussieht als die Grafiken, die wir auf dem Spielmodus-Blueprint oder dem Spielebenen-Blueprint gesehen haben Spielmodus-Blueprint oder dem Spielebenen-Blueprint Der Grund dafür ist, dass wir uns im Designer-Tab des Widgets befinden im Designer-Tab des Widgets Es gibt auch eine Grafikbox, die den anderen Grafiken vertrauter aussieht . Der Grund dafür ist, dass wir in der Graph-Tube die Programmierung des Widgets übernehmen, während wir in der Designer-Tube den visuellen Teil des Widgets übernehmen. Ein Widget erscheint auf dem Bildschirm. Dazu verwenden wir Elemente aus unserer Palette und stellen sie so ein, wie sie aussehen sollen. Oh. Eine weitere Sache, wenn wir etwas auf der visuellen Seite des Widgets hinzufügen, können wir es hier in der Hierarchie sehen. Lassen Sie uns nun mit dem Hinzufügen einer Leinwand beginnen. Ich werde es hier per Drag-and-Drop platzieren, oder ich könnte es einfach hierher ziehen und es wird dasselbe sein. Beschreibung dessen, was der Cvass macht. Sie können gefunden werden , wenn Sie mit der Maus darüber fahren und die Opta-Beschreibung sehen Aber im Grunde ist es ein Element, das anzeigt, wo sich unsere Widgets im Raum auf unserem Bildschirm befinden Sie können eine kleinere Kavasse als Ihr Bildschirm haben. Sie können Leinwände in Leinwänden haben. Es wird nicht empfohlen, zu viele Leinwände zu haben Oh, lassen Sie uns das demonstrieren. Wir bringen hier einen Button mit. Lege es in die Leinwand. Ich kann ihm sagen, wo auf der Leinwand er sein soll oder wie groß er sein soll. Und je nachdem, ob Canvas tatsächlich eine Leinwand im Vollbildmodus oder teilweise diese Leinwand ist , können wir zum Beispiel eine Leinwand in einem kleineren Widget in einer Ecke oder so haben einem kleineren Widget in einer Ecke oder so Es sagt ihr anhand dieser Konvas, wo sie sich befinden soll. Nun, wenn ich einen zweiten Button hätte, würde das die Dinge verkomplizieren Nehmen wir zum Beispiel an, ich möchte diese Schaltfläche genau unter dieser Taste haben, und es ist schwierig, diese Dinge im Auge zu behalten. Aber es gibt auch andere Tools, wie zum Beispiel ein vertikales oder ein horizontales Feld Im Moment benötigen wir ein vertikales Feld Und in diesem vertikalen Feld habe ich die anderen Schaltflächen gelöscht. Vielleicht brauche ich sie. Ich werde wieder eine vertikale Box mitbringen und alles machen. Jetzt kann ich diese Ptons in dieses vertikale Feld ziehen. Und wie diese Schaltflächen in diesem Feld vertikal ausgerichtet sind. Jetzt wird die Größe jedoch durch die Box bestimmt. Es gibt viele Möglichkeiten, die Größe und alles zu ändern. Wir müssen gerade ein ganzes UI-Erlebnis durchmachen. Wir werden die Box tatsächlich dort platzieren , wo wir wollen, und sie so dimensionieren, wie wir sie wollen. Um das zu tun, behalte ich die gleiche Stelle bei jeder Auflösung , weil das hier das E ist. Wir können es immer anhand dieses Ankers ausgleichen. Was ist ein Anker? Es teilt dem Widget anhand dieses Ankers mit, wo es platziert werden soll, aber basierend auf diesem Punkt. Wenn ich also die Auflösung jetzt ändere, versucht sie, diese Position beizubehalten, aber wenn ich zu unorthodoxen Vorsätzen übergehe, verliert sie irgendwie den Überblick Das kann behoben werden, indem man den Anker herumlegt, und es wird auch versuchen, ihn zu behalten Auch hier ist es nicht sehr einfach, all diese Dinge im Auge zu behalten, aber es gibt andere Möglichkeiten, dies zu tun Zum Beispiel, wenn ich das vertikale Feld auswähle und zum Detailbereich gehe Wenn ich wieder alles auswähle, haben wir ein detailliertes Fenster, wie wir es auf dem Plan hatten, haben wir ein detailliertes Fenster, wie wir es auf dem Plan hatten, den Spielplan, wie wir es auf dem Level haben, wenn wir etwas auswählen, und wir gehen zu den einzelnen Oh, wenn ich das vertikale Feld mit den Details auswähle, kann ich sehen, dass es einen Anker gibt Beginnen wir mit der Ankeroption. Oh. Sie können sehen, dass es einige voreingestellte Ankerpositionen gibt. Was wir wählen werden, ist die mittlere. Wir wollen es in der Mitte des Bildschirms verankern. Aber wie Sie gesehen haben, hat dies unser Widget nicht in die Mitte des Bildschirms verschoben. Versuche zu sagen, wo es war. Der Grund dafür ist , dass es durch diese Werte hier, Position x und Position Y, ausgeglichen wird durch diese Werte hier, Position x und Position Y, ausgeglichen . Wenn ich dieses Ding auswähle, das der Standardwert ist, gehen wir zu seinem ursprünglichen Drehpunkt. Was ist nun ein Drehpunkt? Das bedeutet, dass diese Box zum Beispiel nicht in der Mitte ist, aber ihr Punkt, an dem wir ihre Größe manipulieren, beginnt in dieser Ecke Nun, wenn ich eine bestimmte Größe festlege, wie 500 mal 300, vielleicht 300, vielleicht 200 Nun, wir wollen zum Beispiel ein paar lange Knöpfe. Wir können sagen, dass der Offset der Position x minus 50 wäre. Und die Position y wäre -100. Jetzt ist es in der Mitte positioniert , weil wir es um diese Werte Aber was ist, wenn ich die Größe meines Widgets ändern möchte? Das ist jetzt nicht mehr so, ich muss wieder rechnen. All diese Aktionen nicht noch einmal zu machen. Wir könnten sagen, dass die Position nicht versetzt ist. Zunächst empfehlen wir die Ausrichtung, die ein Wert von 0-1 ist, sie kann sogar negativ und über eins gehen Die Ausrichtung ist 0,5 und 0,5. Und das bringt das Widget in die Mitte. Richten Sie mein Widget prozentual auf einem Wert von 0-1 an seiner X-Achse und Y-Achse Wenn ich die Größe ändere, wirst du sehen, dass es immer in der Mitte bleibt Bringen wir das zurück auf 100100200. Oh, kompilieren und speichern. Jetzt haben wir unser Widget in der Mitte unseres Bildschirms. Aber unsere Knöpfe sehen nicht gerade gut aus, so wie sie sind. Die untereinander, auch in einem Minimalmenü, das sollte nicht passieren. Was wir tun werden, wir werden beide Schaltflächen auswählen und die Option verlieren. Und in der vertikalen Ausrichtung wählen wir die Option, geben Ausrichtung ein, geben Vertikal ausrichten ein. Jetzt können Sie sehen, dass unsere Buttons viel besser aussehen. Ein interessanter Aspekt dabei wäre, dass wir bei der Auswahl der beiden Schaltflächen gleichen Einstellungen beibehalten, wie beide diese Einstellungen haben, also auch beide. Wenn ich die Option auswähle, während die Steuerung im senkrechten Kästchen angeklickt ist, kann man sehen, dass diese Einstellungen verschwinden weil die Einstellung der Abnutzung auf etwas basieren sollte. Wie Sie sehen können, befindet sich der vertikale Kastenschlitz hier oben, und wenn ich das vertikale Feld auswähle, befindet sich der Steckplatz für das CVAS-Bedienfeld hier oben. Das ist also das Einstellen der Position innerhalb des Cvass, während wir hier die Position innerhalb der vertikalen Box, die Ausrichtungsposition oder was auch immer festlegen die Ausrichtungsposition oder Jetzt gibt es viele weitere Möglichkeiten, dies zu tun. Wir hätten Abstandshalter zwischen diesen Knöpfen platzieren können. Das ist ein anderer. Lassen Sie uns das tatsächlich demonstrieren. Nehmen wir an, dass beide Tasten zur Steuerung dienen und wählen Sie beide vertikal aus. Jetzt zwei große Knöpfe. Ich möchte sie kleiner haben, damit ich ein paar Basen gebrauchen kann. Bring es hierher zwischen die beiden Knöpfe, ich werde einen weiteren über dem anderen Knopf platzieren. Wir werden einen unter den anderen Knopf bringen. Wenn Sie nun noch einen echten Pull-Tipp bemerkt haben, den wir sehen können, wenn ich den Knopf hier drüben setze, wird diese Linie gezogen, diese blaue Linie hier drüben mit einem kleinen R an der Ecke , das nach oben zeigt. Das heißt, fügen Sie es der obigen Hierarchie hinzu. Zum Beispiel befindet sich die obige Hierarchie gerade in der vertikalen Box. Wenn ich versuche, es hier hinzuzufügen und es einen Pfeil darunter platziert, wird es der unteren Hierarchie hinzugefügt, über dem Abstandshalter Aber wenn ich den Pfeil nach oben habe, würde er zur obigen Hierarchie, dem Canvas-Bedienfeld, hinzugefügt . Lass uns das versuchen. Wir werden es hier hinstellen, ich werde es veröffentlichen. Wie Sie sehen können, wurde es der Canvas-Hierarchie hinzugefügt. Ich prüfe hier, es wird es standardmäßig in das vertikale Feld am Ende einfügen Ich werde die Abstandhalter auswählen und ich werde auswählen. Wie Sie sehen können, hat sich die Basis abgezogen, und jetzt sehen die Knöpfe auch etwas besser aus, als wenn sie übereinander Mit dieser Einstellung können wir alles fühlen, und es funktioniert genauso. Wir müssen uns nicht um vertikale Ausrichtungen oder ähnliches kümmern . Jetzt sollten diese Schaltflächen etwas Text enthalten Wenn wir Dinge in das vertikale Feld einfügen, haben wir 12, drei, vier, fünf Elemente hinzugefügt Aber wenn ich etwas zu einer Schaltfläche hinzufüge, bringen wir es zur Schaltfläche. Wenn ich der Schaltfläche also etwas hinzufüge, z. B. einen Text, und ich werde etwas hinzufügen, sagen wir, ich möchte zwei Texte. Das kann ich nicht tun, weil Buttons nur ein Kind bekommen. Das heißt, sie können nur eine Sache in sich haben. Aber es gibt einen Weg, das zu umgehen. Sie können eine Sache haben, die viele Dinge enthält. Sie können beispielsweise eine Schaltfläche haben , in der sich ein vertikales Feld befindet. Wie wir sehen können, kann das vertikale Feld viele Dinge enthalten. Das nennt man Kinder, und wie viele Kinder kann ein Element haben? Nun, ich werde diesen Textblock kopieren und ihn in die andere Schaltfläche einfügen. Und ich gehe zum ersten Textblock und ändere den Text in seinen Details. Nennen Sie es. Und gehe auch zur anderen Schaltfläche und als Textblock zwei. Ich denke, das ist genug für diese Lektion. Ich sehe dich das nächste Mal. Auf Wiedersehen. 4. Hinzufügen des Hauptmenüs zum Ansichtsfenster und zur Beenden-Funktionalität: Hallo und willkommen beim Game Design Workshop, ich bin ein echter Lensing Five Procedural Dungeon Action-Action-ARPG-Erstellungskurs Im vorherigen Abschnitt haben wir uns mit der Grafik des Hauptmenüs Grafik des Hauptmenüs In diesem Fall fangen wir an, einige Dinge zu programmieren, damit wir dieses Hauptmenü in unserem Spiel sehen können Jetzt gehen wir in den Spielmodus. Wenn Sie ihn nicht finden können, befindet er sich auf Inhaltsleiste in der Ordner-Benutzeroberfläche und nein, tut mir leid, im Ordner von oben nach unten, den gefalteten Blueprints, und der Spielmodus ist da. Pläne von oben nach unten, Gamede. Nein, in unserem Spielmodus ziehen wir ein Kabel Lassen Sie uns nun hier ein paar Dinge über dieses Kabel erklären. Wir haben es schon einmal mit Print string gemacht, aber wir haben nichts darüber gesagt. Also was das ist, das ist die Ausführungslinie von Blueprints Kurz gesagt bedeutet das, dass diese Ausführung den Ablauf der Logik steuert Wenn ein Ereignis ausgelöst wird, folgt es dieser Ausführungszeile, um die Aktionen auszulösen , die in einer bestimmten Reihenfolge ausgeführt werden . Im Grunde bestimmt es die Reihenfolge der Dinge, die passieren sollen. Lassen Sie uns das also demonstrieren. Wenn ich einen Abdruck anbringe. Und für die Zeichenfolge werde ich eine eingeben und dann, ich werde diese kopieren und einfügen. Geben Sie eine zweite Druckzeichenfolge ein. Ich gehe zur Übersichtskarte, gleiche Ebene. Sie haben ausgewählt und spielen. Oh, ich sehe eins, zwei, es wurde zuerst eins gedruckt und dann zwei. Nun, es gibt besondere Zeiten denen das nicht genau dann passiert , wenn wir mit Verzögerungen spielen, wenn wir andere Ereignisse auslösen, die Verzögerungen haben, oder sie haben. Es gibt mehrere Gründe, warum das nicht in der richtigen Reihenfolge passiert, aber sie sind alle auch sehr spezifisch Lassen Sie uns das anhand eines Beispiels demonstrieren. Wenn ich ein benutzerdefiniertes Ereignis mache. Das bedeutet, dass ein eigenes Ereignis, wie z. B. Begin Play, ein vorgeschriebenes Ereignis ist Es schlägt fehl, wenn der Plan läuft. Wenn ich ein benutzerdefiniertes Ereignis verwende, ist es ein Ereignis, das ich erstellt habe, also muss ich es aufrufen Lassen Sie uns dieses benutzerdefinierte Ereignis tatsächlich als Test bezeichnen. Nun, ich werde hier eine gedruckte Zeichenfolge von zwei einfügen. Ich werde es tatsächlich auf drei ändern. Ich werde hier mein benutzerdefiniertes Event einberufen. Wenn ich diese beiden verbinde, lass uns spielen, alles passt zusammen, eins, zwei, drei. Aber wenn ich hier eine Verzögerung einfüge, sagen wir von 2 Sekunden von 0,2 Sekunden, sehe ich eins, drei, zwei. Das wurde hier ausgelöst, aber da es eine Verzögerung gibt, wird der Betrag abgewartet, aber das wird so weitergehen. Eine Verzögerung wird nicht dazu führen, dass es aufhört. Aber jetzt geben wir ein Limit von vier Schleifen ein. Wenn ich hier vier Schleifen habe, was sind dann vier Schleifen? L Lass es uns haben. Oh, es ist ein Programmierknoten, mit einem Index beginnt und mit einem anderen Index endet, und das tut er so lange, bis er alle Indizes durchläuft Für den Loop-Body werde ich das hier verbinden, und eigentlich mache ich es von zwei, sagen wir, das wären fünf Und geh und drücke Play. Siehe eins, zwei, drei, 45. Bei diesem Knoten wartete es beispielsweise, bis dieser Knoten fertig gestellt war, und fuhr dann mit der anderen Zeile fort . Wie dem auch sei, durch Übung und Erkundung der Engine und Programmierung werden sich die Leute mit diesen Dingen besser auskennen. Lassen Sie uns das alles löschen , weil wir es nicht benötigen werden. Wir werden keine Testveranstaltung benötigen. Und lassen Sie uns damit beginnen, unser Widget in unseren Viewport zu bringen. Ich werde das machen. Eigentlich brauchen wir ein benutzerdefiniertes Event, also ein Event, und wir werden es Show Main Menu nennen. Wenn wir das Spiel starten, wollen wir das Menü einblenden. Wenn wir jetzt darauf doppelklicken, gelangen wir zu dem Ereignis, das wir erstellt haben. Oder wenn wir hier eine Funktion hätten, wir später über Funktionen sprechen, das würde die Funktion für uns öffnen. Jetzt das Hauptmenü anzeigen, das wir erstellen werden Denn um unser Widget in die Welt zu bringen, müssen wir es irgendwie erstellen. Wir müssen es als Entität haben, und die Klasse, die wir für das Widget wählen werden, wird das WG-Hauptmenü sein. Jetzt, Spieler besitzen, werden wir den Player-Controller verwenden Und was dieser Spieler bedeutet. Im Grunde genommen, wenn wir ein lokales Co-Spiel hätten, und es gibt auch im Mehrspielermodus einige Verwendungszwecke, dass du anderen Spielern Widgets zeigst und so, vielleicht Es teilt der Engine mit, wem dieses Widget gehört. Also haben wir das Widget erstellt. Also, wenn ich Lehm pressen gehe, wird nichts passieren. Wir sehen das Widget nicht. Der Grund dafür ist, dass wir bei der Erstellung des Widgets einfach eine Variante daraus gemacht haben, eine kleine Zelle erstellt die die Informationen dieses Widgets enthält Wir haben der Engine nicht gesagt, machen Sie etwas mit diesen Datendaten Der Rückgabewert ist also das Widget, das wir erstellt haben. Wenn wir mit der Maus über die Pins eines Knotens fahren, können wir weitere Details zu ihnen sehen Wenn Sie also auf das Hauptmenü-Objekt verweisen würden, haben wir ein Hauptmenü-Widget erstellt, bei dem es sich um ein Objekt handelt Wie wir bereits sagten, ist alles ein Objekt. Und wir haben einen Hinweis darauf. Wir werden diese Variable bewerben und sie W G-Hauptmenü nennen. Jetzt haben wir unsere Daten, wir haben unser Widget und wir haben es in dieser Variablen gespeichert, und wir wollen diesen Daten sagen, dass etwas passiert. Ich werde es von den Variablen hierher bringen , denn wenn wir eine Variable erstellen, wird sie hier gespeichert. Ich werde diese Variable bringen und sagen „Zum Viewport hinzufügen“. Dies ist der Befehl zum Hinzufügen eines Widgets zu Ihrem Viewport. Nun, ich werde das hier verbinden. Und jetzt drücke ich A und das ist ein Widget. Ich drücke die Knöpfe. Es passiert noch nichts. Aber wir werden das jetzt programmieren. Und das Erste, was wir programmieren werden, ist der Button Quid. Gehen wir also zu unserem Top-Down-Spielmodus, Widget-Hauptmenü, und gehen wir zur Schaltfläche Quid. Wenn wir nun diese Schaltfläche wählen, wollen wir etwas mit dieser Schaltfläche machen. Also müssen wir ihr Verhalten bestimmen. Dazu müssen wir bei den Details auf die Variablen klicken. Ich werde hier darauf klicken und diesen Button auch Quit nennen . T. Und jetzt werde ich weiter ins Detail gehen, und diese Liste von Ereignissen ist erschienen. Wenn ich die Variable deaktiviere, verschwindet sie. Wenn ich auf die Variable klicke, erscheint sie. Das bedeutet nicht, dass ich die Schaltfläche nicht auf andere Weise verwenden kann. Es gibt andere Möglichkeiten, es zu verwenden, ohne eine Variable zu sein. Aber das ist die Art und Weise, wie wir es jetzt machen werden, und es ist die gebräuchlichste Methode. Wir wählen das Ereignis per Mausklick aus. Oder gedrückt. Der Unterschied zwischen diesen beiden besteht darin, dass wir beim Klicken auf die Schaltfläche klicken müssen und wenn wir sie loslassen und immer noch auf der Schaltfläche sind, wird diese Aktion akzeptiert. Nun, gedrückt ist, dass es in dem Moment passiert, in dem wir klicken. Nein. Auf die Schaltfläche geklickt und. Wir ziehen einfach einen Tisch und sagen: F: Wir werden keinen Spieler angeben. Wir werden keinen Spieler angeben Wir werden keine Einstellungen für das Beenden angeben, wir werden es einfach beenden lassen und wir werden die Plattformeinschränkungen nicht ignorieren, und wir werden die Plattformeinschränkungen nicht ignorieren weil das nicht für eine bestimmte Plattform gilt Oh, wir kompilieren und speichern, gehen zu unserer Spielebene und drücken auf Play. Wenn ich jetzt auf Quit, Release it klicke , sonst funktioniert es nicht, aber wenn ich auf Quit klicke und loslasse, ist es das Spiel. Ich denke, das ist ein guter Ausgangspunkt für diese Lektion. Wir sehen uns am nächsten. Auf Wiedersehen. 5. Lade von Bildschirmmechanik und Labyrinth-Spawning: Hallo und willkommen zurück zum Game Design Workshop Real Sin Five Procedural Dungeon Action A Psy Zuvor haben wir unsere Ereigniskette vom Beginn des Spiels bis zur Anzeige unseres Hauptmenüs erstellt . Außerdem haben wir ein benutzerdefiniertes Ereignis erstellt, das das Widget erstellt, es in einer Variablen speichert und es dem Viewport hinzufügt Wir haben auch die Quick-Button-Funktion so programmiert das Konfliktereignis verwendet, und wir haben den Qi-Spielknoten Jetzt werden wir mit der Funktion zum Starten des Spiels fortfahren . Aber bevor wir mit der Programmierung der Starttaste beginnen, wollen wir unser System ein wenig erklären. Was wir also haben werden, ist ein Labyrinth-Generator. Das wird das Level aufbauen, wie auch immer es will. Wir werden einige Regeln erstellen. Wir werden einige Regeln im Generator haben, wie es beim Erstellen eines Levels funktionieren wird. Aber dieses Level hat einen Anfang und ein Ende. Und dieses Ende wird einen weiteren Generator hervorbringen. Es wird von Mas-Generator zu MA-Generator zu Mas-Generator gehen , einige Regeln haben und immer größer werden usw. Wenn wir also ein Spiel starten, wenn wir drücken, sagen wir, wir haben den Spielmodus, und vom Spielmodus aus erscheint das Hauptmenü Das Hauptmenü kann sich drehen oder starten. Hier werden wir den Labyrinth-Generator spawnen Nun, dieser Labyrinth-Generator, wir brauchen eine Option , bei der es die erste ist, oder ist es jemand in der Mitte oder am Ende , dann verliert der Spieler Es gibt also verschiedene Möglichkeiten, das zu tun. Die Art und Weise, wie wir das tun werden, besteht darin, eine Variable verfügbar zu machen . Dies bedeutet, eine Variable verfügbar zu machen, die aktiviert werden wird. Im Grunde wird es ein Edelmetall sein, das dem Labyrinth sagt, ob Sie der Erste sind oder nicht, was eine sehr einfache Art ist, was eine sehr einfache Art ist Denn wir werden diesen Schauspieler hervorbringen, und jeden Schauspieler werden wir ihn hervorbringen Nun, was diese Variable jetzt für uns tun wird, für den ersten Teil unseres Programms Es unterscheidet sich vom Labyrinth , dass, wenn Sie der Erste sind, der Ladevorgang fortgesetzt wird. Dies ist das Laden des Ladebildschirms Wir werden also eine Leiste zum Laden und Nachfüllen haben , während der Generator das Labyrinth baut und es spielbereit ist Nein. Lass uns beginnen. Beginnen wir mit der Erstellung unseres Labyrinth-Generator-Blueprints. Wir werden zum Inhalt übergehen . Wir gehen zum Inhaltsordner und klicken mit der rechten Maustaste auf einen neuen Ordner. Ich werde es Blueprints nennen. Jetzt haben wir viele Ordner, und im Grunde könnten wir einfach mit der und im Grunde könnten wir rechten Maustaste auf Blueprints klicken und die Farbe festlegen Ich werde es auf Blau setzen. Gehe zur Ordner-Benutzeroberfläche, klicke mit der rechten Maustaste und stelle die Farbe ein. Ich werde es hellblau sagen. Und Sie werden schnell einen anderen Ordner benötigen. Vielleicht Ordner von oben nach unten. Ich werde es auf Grün setzen. Und jetzt kann ich schnell jeden gefalteten Ordner anhand seiner Farben durchsuchen Jetzt klicken wir im Ordner Blueprints mit der rechten Maustaste und erstellen eine neue Blueprint-Klasse Wenn ich das mache, öffnet sich das Menü, in dem es mir sagt, Sie eine Template-Klasse oder etwas anderes aus einer Vorlage erstellen möchten , die Wenn wir können, gibt es eine Reihe von Klassen, die erstellt werden können Was wir jetzt wollen, ist eine Schauspielerklasse. Im Grunde ist ein Schauspieler ein Objekt, das in der Welt platziert oder erzeugt werden kann Im Grunde ist alles ein Objekt, das platziert werden kann, aber alles hat einige zusätzliche Regeln Der Schauspieler ist der leerste. Zum Beispiel hat der Charakterentwurf, dass wir unseren Charakter von oben nach unten haben , zum Beispiel eine Kollisionskugel und keine Kollisionskapsel, tut mir leid, und ein statisches Netz und eine Richtung, die eng zu einem Punkt führt Es hat die Bewegungskomponente, die nur in der Charakterklasse vorkommt Wie dem auch sei, ich erkläre vielleicht gerade viele Dinge. Also werden wir uns einen Schauspieler ausdenken. Und wir werden diesen Schauspieler PP Mazen Tape Everything nennen PP Mazen Tape Everything und den Labyrinth-Generator öffnen Ich werde es hier hinstellen. Das erste, was wir tun werden, ist eine Variable zu erstellen. Wir gehen zu Variablen und drücken hier auf dieses Plus-Symbol. Und es hat es bereits zu einem Goldbarren gemacht, weil wir unterscheiden wollten , ob das Labyrinth das erste Stück ist oder ob es weiter wächst Ich werde es am Dienstag benennen. Ich werde es Continue nennen. Vielleicht nicht der beste Name, aber wir machen den Job jetzt. Jetzt gehe ich zurück zum Hauptmenü und gehe zur Starttaste, die variabel ist , nenne sie Art Button. Und ich werde auf Klick drücken, weil wir auf Klick auf Lick geklickt haben. Wir sollten es auf Art Button machen. Auch auf Klick. Nun, wie bringe ich diesen Schauspieler zur Welt? Wir verwenden einen Knoten namens Stone Actor aus dem Unterricht. Die Klasse, die wir als Labyrinth-Generator auswählen werden Labyrinth-Generator auswählen werden BP Labyrinth-Genre. Jetzt gibt es hier eine weitere Option. Es heißt Transformation. Was Transformation bedeutet, ist für diejenigen, die neu sind, Transformation eine Gruppe von Informationen, es ist eine Informationsstruktur. Wir werden noch weiter über Struktur sprechen, aber sie ist keine strukturierte Variable Es ist eine einzigartige Variable, die drei Vektoren enthält. Und wenn ich mit der rechten Maustaste darauf klicke und es aufteile, können wir sehen, dass es die Position der Son-Transformation, die Drehung der Spin-Transformation und die Spon-Transformationsskala enthält die Drehung der Spin-Transformation , was drei Vektoreinheiten Einer von ihnen ist ein Rotator. Die anderen beiden sind nur normale Vektoren. Das heißt, wir wollen diesen Schauspieler verblüffen, aber wo wollen wir ihn mit welcher Rotation und in welchem Maßstab erzeugen ? Für den Moment, nicht für den Moment, werden wir ihn an der Null, Null, Nullstelle der Welt, Null, Null, Null, Y und Null, und zwar werden wir ihn an der Null, Null, Nullstelle der Welt, Null, Null, Null, Y und Null, mit der normalen Rotation und der Standardskalierung Vorher haben wir gesagt, dass wir dies für diesen Labyrinth-Generator angeben werden, ob es sich um eine Fortsetzung handelt oder Es gibt viele Möglichkeiten, dies zu tun. Ich werde dir schnell zwei Möglichkeiten zeigen. Wir gehen zu diesem Spawn und von hier aus dem Rückgabewert erhalten wir die, die tatsächliche Referenz auf das Ding, das wir sponden, den Schauspieler, den wir auswählen Von hier aus kann ich weitermachen, wie Sie sehen können, das Ziel ist der Schauspieler, dem wir gerade die Pfoten verpasst Und den Wert können wir auf Ja oder Nein setzen. Eine andere Möglichkeit, das zu löschen , besteht darin, zum Labyrinth-Generator zu gehen und zur fortlaufenden Variablen zu gehen, dass es sich um eine Instanzbearbeitung handelt und sie auf Span angezeigt Das heißt, wenn ich jetzt kompiliere und speichere, gehe zurück zum Hauptmenü und wähle es erneut aus, weil es nicht automatisch aktualisiert Manchmal tut es das. Ich werde diesen Labyrinth-Generator erneut auswählen Jetzt habe ich diese Option hier drüben. Ich werde das nicht ankreuzen, ja, ich werde es nein lassen, und wenn dieser Löffel kommt, ist er standardmäßig ausgeschaltet Für uns ist das standardmäßig ausgeschaltet und wir wollen, dass es ausgeschaltet ist. Wenn wir das Labyrinth abholzen, um weiterzumachen, werden wir es hier suchen Um zu beweisen, dass wir das in die Welt gebracht haben, gehen wir zum Labyrinth-Generator Wir gehen zu seinem Event-Graph und auf Begin Clay bringen wir Schnüre mit und sie machen das Labyrinth Bevor wir hier leben, sollten wir noch etwas tun Wir verderben den Labyrinth-Generator. Aber als Nächstes sollten wir unseren visuellen Teil des Widgets entfernen Aus unserer Sicht. Und um das zu tun, werden wir einen Teil entfernen. Dies ist der Knoten, der dafür verwendet wird. Und als Ziel werden wir uns selbst haben. Target bedeutet in der Regel in Knoten, wer das macht. Wenn wir in den Spielmodus gehen und nach rechts gehen, aus dem Teil entfernen. Wir werden kontextsensitiv sehen, es gibt es nicht. Aber wenn ich das entferne, können wir es finden. Wie Sie sehen können, gehört es zum Kategorie-Widget. Das bedeutet also, dass es etwas für ein Widget tut . Ich werde darauf klicken. Und wenn ich das hier verbinde, passiert nichts, weil der Spielmodus kein Widget ist, ich werde einfach einen Fehler auslösen oder nichts. Aber wenn ich das Widget-Hauptmenü verbinde, das wir in unserer Referenz hier gespeichert haben , um es aus Parent zu entfernen, wird es wissen, dass dieses Widget-Hauptmenü, sagen wir, wir haben fünf davon erstellt, und wir haben nur eines davon gespeichert. Dieser von ihnen, den wir als Variable gespeichert haben , wird aus dem übergeordneten Element entfernt. Jetzt werde ich das löschen und wir werden es belassen und aus dem übergeordneten Bereich entfernen. Das Ziel selbst. Wir sind auf dem Widget, auf Pile and Save, und los geht's. Mac drückt Play, Maze Gen hat ein Telefon und das Widget wird entfernt Ich denke, das ist ein netter Haltepunkt für diesen. Ich sehe dich am nächsten. Auf Wiedersehen. 6. Erstellen eines Ladebildschirms: Hallo und willkommen zum Game Design-Workshop im Rahmen Engine Five-Action-Rollenspiels zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Erstellung von prozeduralen Dungeon-Action-Rollenspielen In der vorherigen Lektion haben wir hinzugefügt, dass wir tatsächlich den Blueprint Maze-Generator erstellt haben, und wir haben ihn über die Starttaste unseres Hauptmenüs gestartet Außerdem haben wir dem Labyrinth-Generator eine Variable hinzugefügt, die wir verfügbar gemacht haben, um sie beim Spawnen des Labyrinths setzen zu können . Diese Variable war die Continue-Variable, die für uns unterscheidet, ob es sich um die erste Figur handelt oder ob es sich um eine Figur handelt, die das Spiel fortsetzt für uns unterscheidet, ob es sich um die erste Figur handelt oder ob es sich um eine Figur handelt, die das Spiel In dieser Lektion werden wir mit der Erstellung der ersten Schritte der Logik fortfahren , die darin besteht , den Ladebildschirm anzuzeigen oder Ich lösche diesen Druckbildschirm hier, klingle und drücke B und klicke, oder ich hätte mit der rechten Maustaste klicken und Zweig eingeben können, und ich bringe einen Zweig. Nun, was ist ein Zweig? Im Grunde ist ein Zweig eine I-Aussage. Es ist wahr oder falsch basierend auf einer Bedingung , die wir angewendet haben. Und die Bedingung hier wäre. Also ist es im Grunde eine Fortsetzung des Labyrinths von früher, oder ist es das erste Stück? Jetzt, da wir das Hauptmenü im Spielmodus erstellt haben. Wir müssen ein weiteres Widget für den Ladebildschirm erstellen , und das führt uns dazu, ein neues Widget zu erstellen. Also gehen wir zum UI-Ordner. Ich klicke mit der rechten Maustaste und gehe zu Benutzeroberfläche, Widget-Blueprints, und wähle erneut Benutzer-Widget Ich werde das WG Loading Loading nennen. Und ich werde es öffnen. Ich werde es herbringen und ich werde alles retten. Jetzt werden wir wieder eine Leinwand benutzen. Und das ist kein Problem, denn auf jeden Fall wurde das Hauptmenü zu Beginn aus einem übergeordneten Menü entfernt Es ist also kein Problem, eine weitere Convas zu haben. Nicht dass es ein großes Problem wäre, zwei Konvasen oder drei oder vier zu haben großes Problem wäre, zwei Konvasen oder drei oder vier zu Jetzt wähle ich ein Bild aus, füge es als Hintergrund und ich werde es im Vollbildmodus verankern Ich werde die Offsets auf Null setzen. Wie Sie sehen können, füllt es den gesamten Bildschirm aus. Ich gehe zu den Pinseleinstellungen, einer neuen Einstellung, die wir gerade untersuchen. Sie zeigt im Grunde , wie etwas aussieht. Wir bringen einen Knopf mit. Lassen Sie uns das tatsächlich demonstrieren. Wo ist Play? Wir können sehen, dass sich die Farbe dieser Taste ändert, wenn ich mit der Maus Also gehe ich zu unserem Hauptmenü und gehe zum Designer. Tippe auf die Knöpfe. Wir können unten den Steckplatz und die Ausrichtungseinstellungen sehen. Wir können sehen, dass es einen Darstellungsstil gibt , der viele Einstellungen enthält , um den Schaltflächenstil und das Aussehen festzulegen. wir nun zum Laden zurück und gehen wir zu unserer Darstellungseinstellung. In diesen Einstellungen haben wir also diese Pinselfarbe. Wir können ein Bild auswählen, das wir möchten, aber im Moment verwenden wir nur die Farbtonfunktion. Ible und verwandle es in eine schwarze Farbe. Und wir haben einen schwarzen Hintergrund für unseren Ladebildschirm. Das nächste Element, das wir benötigen, heißt Progress Barrel. Dies ist ein weiteres einzigartiges Element wie die Schaltflächen. Wenn wir sie drücken, tun sie etwas. Das ist ein Balken, der sich prozentual füllt. Ich meine, ein bisschen, bevor wir es bekommen. Schauen wir mal, ob es einen Stil gibt. Es gibt auch die Einstellungen, die wir kennen, die Einstellungen, die wir an der Position platzieren , die Verankerung, die Ausrichtung und den Stil , der auch viele Einstellungen hat Darunter befindet sich auch eine weitere Einstellung, die als Fortschritt bezeichnet wird und nur für den Fortschrittsbalken Wenn ich den Prozentsatz erhöhe, können Sie sehen, dass dieser Balken gefüllt ist. Ist Progress Martin. Ja. Und es hat einige Fähigkeiten , die je nach Richtung und vielen anderen Optionen gefüllt werden müssen. Für uns werden wir jetzt vielleicht nur den Füllungshintergrund und das Bild ändern. Was wir also auswählen werden, ist Deckkraft der T-Balke Das wollen wir für unser Hintergrundbild. Und das wollen wir auch für unser Feldbild. B- und Balkenopazität. Oh, ein bisschen. Wir wollen nicht, dass der Fortschrittsteil da oben steht. Wir wollen, dass der Fortschrittsteil in der Mitte liegt. Gehen Sie nicht zu den Offsets der Position. Und was die Größe angeht, können wir sogar beißen. Lassen Sie uns die Ausrichtung Y X wie in der Mitte platzieren. Guter Punkt. Y. Sie sind 1.500, vielleicht 600, 1.600 oder X-Größe, und sagen wir, 50 sieht gut aus oder Größe Y. Lassen Sie uns jetzt mit der Farbe fett Füllen wir den Balken b. Setzen wir ihn auf 1% Jetzt gehe ich zum Farbton des Hintergrundbilds und wähle etwas Gräulicheres Mehr. Das ist in Ordnung. Vielleicht einen Punkt Alpha setzen, damit ein Verbot gemacht wird, das tut es nicht, aber es tut es auch , wenn wir es auf 2,3 erhöhen, dann können Sie das Verbot sehen. 0.8, und irgendwas ist in Ordnung. Wenn ich jetzt den Farbton des Füllbilds ändere, werden Sie feststellen, dass die Farbe, die ich möchte, dadurch nicht wirklich geändert Das liegt daran, dass dies mit dieser Option hier gefüllt wird, hier Füllfarbe und Deckkraft, was eine andere Einstellung für die Farbe des Bildes ist , das wir anwenden Also werden wir die Farbe hier ändern. Wir werden es rot machen, ein bisschen dunkler, ein bisschen mehr. Dieser 2.8. Nun, vielleicht 0,9 Wein, und vielleicht eine Null. Grün, auch ein bisschen heller in Richtung des orangefarbenen Lichts. Okay, ich finde, es sieht gut aus. Und jetzt haben wir eine gruselige Ladestange oder ein unkonventionelles, quadratisches Okay. Das nächste Element, das wir brauchen, ist ein Text. Ich werde eine Textvariable mitbringen, die nur eine Variable ist , mit der wir Text schreiben. Ich werde es in der Mitte verankern. Ich werde die Offsets auf Null setzen. Größe, richten wir es auf 0,5 aus. S fünf. Dieser, vielleicht drei. Drei ist in Ordnung. Bei dieser Länge geben wir zuerst den Text ein. Im Text der Ankünfte. Wir haben wieder verschiedene Möglichkeiten. In diesem Fall haben wir also Inhalt, dem sich der Text befindet. Darunter können wir unseren Text, unsere Schrift und unsere Undurchsichtigkeit am Ende manipulieren Undurchsichtigkeit am Ende Das werden wir in einer Sekunde tun. Geben wir für Text nun flo in Großbuchstaben Passen wir die Größe der Schrift an, die Eyes of Font ist. Ich hundertdreißig Forte. 35. Das sieht okay aus. Auge hier, wenn es genau in der Mitte ist, ist es fast in der Mitte Es ist in Ordnung, es ist in Ordnung. Lass uns auch den Text ändern. Wir Keine rötliche Farbe, Weiß ist in Ordnung, alles andere. Sie können die Durchsichtigkeit oder eine oder die Grundschraube, spätes Licht, regulär nach Belieben ändern spätes Licht, regulär nach Belieben Für unsere Zwecke ist das momentan in Ordnung. Wir könnten damit beginnen, den Text zu animieren und durch die Animationswanne ein- und auszublenden und so eine Animation zu erstellen, aber wir werden das Kompilieren und Speichern nicht durchführen Und nun, wie werden wir diese Leiste während des Spiels nutzen , um ihren Prozentsatz deutlich zu erhöhen Zuallererst werden wir es Ladeleiste nennen und es variabel machen , weil wir etwas damit anfangen wollen. Und wir wollen etwas mit irgendeinem Teil des visuellen Teils des Widgets machen, den wir gesagt haben? Wir müssen es zu einer Variablen machen. Wenn wir zum Beispiel den Text ändern wollten , mussten wir ihn variabel machen. Wir wollten das Hintergrundbild ändern? Wir mussten es zu einer Variablen machen. Oh, Ladebalken, es ist jetzt eine Variable. Gehen wir zur Grafik und bringen sie dazu, etwas zu zeigen. Und wenn ich davon abziehe, kann ich wie viel Prozent machen. Und dieser Prozentsatz ist ein Wert von 0-1. Im Grunde ist es eine Flussvariable, die vollständig eingestellt werden muss. Wie wir sehen können, ist es derselbe Wert wie hier 0-1. Wir können es auf zwei setzen, aber es wird keine Wirkung haben. Es ist unter Null oder über Null. Es ist also eine Null-zu-Eins-Variable. Raus. Und so legen wir den Prozentsatz fest. Aber wenn ich das Widget erstelle, zum Beispiel im Ga-Modus. Ich speichere es in einer Variablen. Wenn dieses Widget den Fortschrittsbalken hätte, hat dieses Widget für den Fall diese beiden Schaltflächen als Variablen. Auf diesem Widget kann ich es hier G-Modus nennen. Ich kann diese beiden Schaltflächen von hier aus aufrufen , weil ich einen Verweis darauf habe. C ist der Startknopf dafür. Ich kann einen Hinweis darauf bekommen. So wie ich es tun würde, wenn das Lade-Widget erstelle und in einer Variablen speichere, könnte ich meine Referenzvariable abrufen und die Startschaltfläche oder den Fortschrittsbalken aufrufen. Aber das ruft auch immer wieder etwas auf. Was wir tun werden, ist , eine Funktion zu erstellen , die gehen wir zum Diagramm. Ich werde das in die Funktion kopieren. Ich habe die Funktion so erstellt, dass hier eine Funktion habe und das Plus-Symbol drücke, und es wird eine neue Funktion erstellt. Also werde ich eine Funktion erstellen und diese einfügen. Also, wenn ich das alles machen will, kann ich diese Funktion vom Widget selbst aus aufrufen. Ich werde das gleich demonstrieren. Nun, für diejenigen, die ich kannte, was ist eine Funktion? Kurz gesagt, es ist ein Befehlssatz , der einfach aufgerufen und wiederholt werden kann. Wenn ich zum Beispiel einen bestimmten Befehlssatz häufig verwende, kann ich ihn in eine Funktion einfügen und muss diesen Befehlssatz nicht jedes Mal schreiben, wenn ich ihn benötige. Es gibt viele Regeln für die Funktion. Eine wichtige Regel ist, dass sie nicht einfach Zeit in Anspruch nehmen können. Man kann keine Verzögerungsknoten oder Timeline-Knoten in Ionen haben in Ionen denn es gibt Dinge, die als reine Funktionen bezeichnet werden. Es gibt Dinge, von denen ich sowieso zu viel reinnehme. Lassen Sie uns zunächst Funktionen als eine Reihe von Anweisungen betrachten , die wir aufrufen können, wann immer wir wollen. Und in diesem Fall wollen wir als Befehlssatz den Prozentsatz des Ladebalkens festlegen. Wenn ich jetzt eine Funktion aufrufe, kann ich einige Eingaben , zum Beispiel bringen wir die Funktion hierher. Im Moment ruft sie einfach die Funktion auf, um zu tun, was auch immer sie tut. Wenn ich dieses Kabel hierher ziehe, heißt es, Pin zum Knoten hinzufügen. Lass uns das machen. Ich habe eine Eingabevariable für diese Funktion erstellt. Ich gehe zurück zur Grafik. Ich kann sehen, dass diese Funktion jetzt diese Variable in Prozent hat . Ich kann es auch anders machen, indem ich die Funktion hinzufügen, auswählen und zu ihren Details zu Eingaben oder Ausgängen gehen zu ihren Details zu Eingaben oder Ausgängen gehen kann, weil die Funktion eine Ausgabe haben kann. Nehmen wir zum Beispiel an, dass es sich um eine Aktion handelt, es wird wahr zurückgegeben. Ich hätte eine Verzweigung , die, wenn das passiert, wahr zurückgibt, wenn es nicht passiert, sie falsch zurückgibt. Aber ich werde im Detail abgleichen. Nun, das ist die andere Art Eingaben oder Ausgaben zur Funktion hinzuzufügen. Wir werden das viel später verwenden und wir werden es viel besser erklären. Aber vorerst werden wir diese Eingabe in Prozent verwenden und die Funktion in Prozent benennen. Es gibt keinen wirklichen Grund, denn wie Sie sehen können, ist diese Funktion dieselbe wie diese. Außerdem möchte ich nicht jedes Mal die Ladeleiste aufrufen. In Bezug auf die Leistung ist das kein wirklich großes Problem. Rufen Sie die Ladeleiste jedes Mal von der Referenz aus auf. Da wir die Referenz sowieso verwenden. Ist nur dafür, dass es mir leichter fällt , einfach Prozent anzurufen. Ich denke, das ist ein guter Haltepunkt für diesen. Ich sehe dich am nächsten. Auf Wiedersehen. 7. Hinzufügen eines Ladebildschirms zum Spielmodus: H. Hallo und willkommen zurück zum Game Design-Workshop und zum echten prozeduralen Action-PS-Erstellungskurs für Engine Five-Dungeon-Action-PS Action-PS-Erstellungskurs für Engine Five-Dungeon-Action-PS unserer vorherigen Lektion haben wir unseren Ladebildschirm, unser Lade-Widget und die Funktion erstellt, mit der der Prozentsatz des Ladebalkens festgelegt Wir haben auch Bars und alles andere entworfen. Und jetzt fügen wir es unserem Viewport hinzu. Lass es uns in unser Spiel aufnehmen. Also werden wir es wieder im Spielmodus hosten. Damit meine ich, dass wir ein Event veranstalten werden. Die Sendung wird geladen. Und wir werden den Code hier kopieren und einfügen. Wir werden diesen Teil löschen. Eigentlich nicht alles. Wir werden es rückgängig machen. Anstelle des Hauptmenüs wählen wir das Lade-Widget. Wir zeigen das Laden, wir erstellen das Widget. Wir speichern es in einer Variablen, die geladen wird. Eine Unterstreichung? Ich werde das verbinden. Es ist etwas gerader und bringt die variable Holzbelastung mit sich. W G. Wir fangen an, hier Dinge zu haben, also fangen wir an zu kommentieren Wählen Sie Start Play Event aus, drücken Sie C und geben Sie B Anu Dann werde ich die beiden tatsächlich auswählen. Um sie zur Seite zu legen und zu tippen, drücken Sie C und geben Sie Widgets ein. Ich werde es ein bisschen größer machen. Und ich werde das Hauptmenü anzeigen auswählen. Geben Sie Hauptmenü anzeigen ein. Und das Gleiche gilt für den Ladetyp Show Ping. Und ich werde die Farbe dieses Kommentars in etwas wie Bläulich ändern dieses Kommentars in etwas wie Bläulich Und wir haben angefangen, hier etwas Ordnung zu haben. Jetzt kompilieren und speichern wir, und das bringt unser Widget in unseren Viewport Nun, wo nennen wir das? Gehen wir zurück zu unserem Hauptgenerator zu unserem Continue-Zweig. Das geben wir vorerst. Nun, wenn es wahr ist, wenn es weitergeht, werden wir später sehen, was vor sich geht. Aber wenn es falsch ist, wählen wir aus, wir werden einen Knoten namens Get game mode finden, und dieser gibt uns Zugriff auf unseren aktuellen Spielmodus. Das Problem hier ist, dass es sich um einen generischen Spielmodusknoten handelt. Das bedeutet, dass es ein generisches Objekt zurückgibt, das auf dem Spielmodus basiert, wie wir im Rückgabewert sehen können. Wenn ich also meinen spezifischen Spielmodus haben möchte, diesen Spielmodus, verwenden wir einen Knoten, der Casting genannt wird. Was bedeutet Casting? Im Grunde fragt es, was auch immer wir sind, das Objekt, das wir testen, ob es aus einer bestimmten Klasse stammt. Ich werde im Spielmodus von oben nach unten fragen. Jetzt erhalte ich das Spiel de und frage, ist das das Spiel d, das im Spiel läuft, das Spiel de, das gerade aktiv ist. Wenn ja, können wir ein Kabel aus dem reinen Guss ziehen. Wenn nicht, wird es, tut mir leid, nicht vom Guss her rein . Oder wenn nicht, wird es scheitern. Wenn ich nun ein Kabel aus dem Erfolgsteil ziehe, habe ich noch eine weitere Variable, die besagt: S BP Top-Down-Spiel d. Das bedeutet, dass wir unseren Top-Down-Spielmodus, den wir gerade verwenden, direkt aufrufen können unseren Top-Down-Spielmodus, den wir gerade verwenden, direkt aufrufen . Das bedeutet, dass ich Zugriff auf all diese Variablen habe, die wir erstellt und gespeichert haben, als sie erstellt wurden. Wenn sie nicht erstellt würden, wären diese Variablen leer. Gehen wir nun zurück zum M-Generator. Wie Sie sehen können, hat er diese Execute-Pins, und als ich den Fehler zuvor gemacht habe, habe ich das Pure Cast genannt. Ich wollte zeigen , dass es eine Möglichkeit gibt, das nicht als Execute zu verwenden. Es heißt Convert to Pure Cast Entferne die Ausführungspins, um den Knoten vielseitiger zu machen . Die Umwandlung würde trotzdem fehlschlagen, was zu einer ungültigen Eingabe in der Ausgabe führen würde, tut mir leid. Das bedeutet, dass es eine Erfolgsvariable erzeugt. So können wir es zum Beispiel in einer Filiale haben, wenn die Möglichkeit besteht, dass dies nicht unser Spielmodus ist. 02, zum Beispiel Fehlercode. Dieser Plan, und wir könnten zum Beispiel sagen, wenn das falsch ist, dann sagen wir Fehler, das Spiel ist falsch Aber das werden wir nicht tun. Wir wissen, dass unser Spiel das sein wird. Wir werden also von hier aus trinken und für Variabel werben Und das könnte tatsächlich vor der Filiale gemacht werden. Ich nehme das hier mit. Und als wir zur Variablen hochgestuft haben , wurde der Name wie BP Top Down Game Old verwendet. Das ist also sehr praktisch für uns. Und wir haben diese Referenz, und wir können sie einfach per Drag & Drop auf die Variable ziehen, die wir erstellt haben. Oh, wenn Sie mit der Maus per Drag-and-Drop ziehen, können Sie ein Get oder ein Set bekommen. Ein GET ist das Abrufen der Variablen, ein Setter ist etwas , auf das wir die Variable setzen Dafür gibt es eine schnelle Abkürzung. Wenn ich mit der Strg-Taste ziehe und loslasse, oder wenn ich mit der linken Maustaste ziehe und dann loslasse, wird es ein Getter oder ein Setter mit lt . Stellen Sie das jetzt wieder her Von hier aus wählen wir den Ladebildschirm aus. unser Fortfahren nun falsch ist, wird der Ladebildschirm angezeigt. Wenn ich jetzt auf Play drücke, Spiel starten drücke, können wir unseren Ladebildschirm sehen, hier ist er. Wir haben den Ladebildschirm erfolgreich hinzugefügt. Schauen wir uns nun etwas genauer an, wie unser Ladebildschirm funktionieren wird und wie unser Labyrinth-Generator funktionieren wird Oh, ich werde Paint öffnen. Betrachten wir das als unsere Ladeleiste. Und wie gesagt, wir werden die Ladeleiste auf der Grundlage des Prozentsatzes unserer Labyrinth-Generation füllen des Prozentsatzes unserer Labyrinth-Generation Aber wenn wir die Generation Maze in Betracht ziehen, lassen Sie uns ein wenig über die Generation M sprechen, wie sie funktionieren wird Die Art und Weise, wie sie funktionieren wird, ist, dass etwas hinzugefügt wird , das wir eine Kachel nennen werden Und es wird Kacheln hinzufügen, die auf einigen Regeln basieren, und es wird eine Form erstellt. Von einem Labyrinth oder was auch immer. nun diese Steine hinzufügst und die Art und Weise festlegst, wie sich der Spieler bewegen wird , wird er zum Beispiel Blöcke und Dinge erstellen Nennen wir das Phase eins. Nennen wir das Phase eins. Das wäre ein einfacher Weg, um das Laden zu Sie sind diese Prozentzahl auf der Grundlage von Null bis maximal Holz Das ist ein x, kein t. Null bis maximal wäre also der prozentuale Anteil des Ladebalkens Aber danach wird unser Labyrinth einige andere Dinge tun, es wird Wände schaffen, es wird Materialien verändern, es wird Dinge abstauen. Diese Phase ist also ein kleines Fragezeichen, wie groß der Prozentsatz dieser Ladebalken sein wird Also, was wir tun werden, werden wir vortäuschen. Nehmen wir an, das sind 0,2%, das sind 20%, tut mir leid, aber es ist ein Wert von 0-1 Das sind zum Beispiel 0,3%. Wir werden falsche Prozentsätze angeben, weil wir wirklich nicht einmal wissen, wie der Computer des Spielers darauf reagieren wird Einige Aktionen sind GPU-basiert, andere Aktionen sind CPU-basiert Also ja, wir werden falsche Prozentsätze festlegen. Das ist normalerweise das, was Sie beim Laden von Balken sehen , wie sie sich bewegen, anhalten, mit großer Geschwindigkeit bis zu einem Punkt hochfahren und dann anhalten und weiterbewegen, denn für sich dann weiterbewegen, denn für fortgeschrittenere Benutzer dauern manche Loops länger Bei Loops, die das Bett einfrieren, kann es also breite Loops geben, die den Computer komplett einfrieren. Das ist normalerweise der Teil, in dem wir nicht einmal eine Wanne in bestimmten Ladestangen haben können. Ja, wie dem auch sei, es hängt davon ab, dass es Möglichkeiten gibt das immer fortschrittlicher zu machen und es nahtlos zu machen und in der Lage zu sein , deinen Computer vollständig zu kontrollieren und mit einem riesigen technischen Wissen und einem großen Designanteil im Spiel sehr spezifisch zu sein . Aber für uns werden wir einige grundlegende Methoden verwenden. Nun, ich werde das schließen, und ich denke, das ist vorerst ein guter Ausgangspunkt, und wir werden diese Aktionen beim nächsten demonstrieren . Nehmen wir zum Beispiel an, wir haben eine minimale Kachel von Null bis eine maximale Kachel und setzen einen Prozentsatz dieses Balkens auf den Prozentsatz von Null zu Mx-Kachel. Wir werden hier aufhören. Ich werde dich am nächsten sehen. Auf Wiedersehen. 8. Aufbau des Labyrinth-Algorithmus: Hallo und willkommen zurück zum Game Design-Workshop und zum echten Engine Five-Procedural Dungeon-Action-Kurs A Ps Creation Zuvor waren wir mit dem niedrigen Dan-Balken fertig und haben erklärt, wie er gefüllt werden soll Wir haben den Spielmodus benutzt, um ihn zu spawnen. Und das nennen wir „Unser Ich“ nach unserer Spielmodus-Referenz nun in dieser Lektion mit der Mathematik fortfahren, Lassen Sie uns nun in dieser Lektion mit der Mathematik fortfahren, die zum Füllen des Ladebalkens erforderlich Wir werden eine Funktion erstellen. Wir werden das LC Calculate Tile Loading nennen . Das ist in Ordnung. Wir werden dafür sorgen, dass das funktioniert. Wir wählen die Funktion so aus, wie sie geöffnet wurde, und ich die reine. Wie gesagt, Funktionen sind wie Codevorlagen , die wir oft wiederholen können. Und deine Funktionen, wir haben ein bisschen darüber gesprochen. Sie dienen zur Durchführung von Operationen. Das bedeutet, dass sie eine Ausgabe benötigen und keine Ausführungszeile haben . Wir können hier eine Ausführungslinie sehen, aber wenn ich sie in das Ereignisdiagramm bringe, wenn ich sie hierher ziehe, können Sie sehen, dass sie keine Ausführungslinie hat. Wenn wir wollen, dass das läuft, braucht es einen Ausgang damit wir es mit irgendwem verbinden können, und es benötigt die Informationen von dieser Funktion. In der Regel sollte eine reine Funktion keine Setter enthalten, sie sollte keine Daten verändern Sie sollten nur Operationen ausführen. Sie können Daten innerhalb einer reinen Funktion ändern. Ich kann hier einen Setter angeben, aber das verfehlt gewissermaßen den Zweck der Opt-Optimierungstechniken , die Unreal für die Verwendung reiner Funktionen Opt-Optimierungstechniken , die hat Nun, als ich eine neue Ausgabe erstellt habe, habe ich einen Float für mich hinzugefügt, weil ich ihn bei den Variablen belassen muss. Wenn es kein Float ist, können Sie den Typ auswählen und zu Float wechseln. Standardmäßig könnte es ein Bulon sein. Nennen wir diese Ausgabe zwei Paare berühren zwei Prozent. Nein. Wir haben unsere Funktion, wir haben ein paar Funktionen, und wir müssen hier einige Operationen erledigen. Dafür benötigen wir zunächst zwei Variablen, und zwar eine Variable, sie wird sein und die andere Variable wird aktuell sein. Wie Sie sehen können, sind meine Variablen Integer denn bereit zu erklären, dass ich etwas gemacht habe, aber der Typ wurde beibehalten. Wenn es sich nicht um eine Ganzzahl handelt, können Sie wiederum auf den Typ klicken und von Bleion oder was auch immer es ist, zu Integer wechseln Bleion oder was auch immer es ist, zu Integer Lassen Sie uns nun diese beiden Variablen hierher bringen. Die Formel, um, sagen wir, den prozentualen Anteil der aktuellen Steine zu den männlichen Plättchen zu ermitteln, wäre, die aktuellen Kacheln durch die maximale Anzahl an Kacheln zu teilen und das mit 100 zu multiplizieren Was wir jedoch wollen, ist, das Verhältnis der maximalen Anzahl an Kacheln zum aktuellen Plättchen in Prozent zu berechnen das Verhältnis der maximalen Anzahl an Kacheln . zu tun, werden wir diese Division einfach umkehren und die maximale Anzahl an Kacheln durch die aktuellen Kacheln dividieren die maximale Anzahl an Kacheln durch die aktuellen Kacheln Und weil das ganze Zahlen sind und die Division davon eine Gleitkommazahl ergibt, machen wir das einfach zur Engine und betrachten das Ganze als Also werden wir zwei Float-Konvertierungen durchführen. Ich werde diese Konvertierung kopieren und sie hier verbinden. Jetzt werden wir das teilen und mit 100 multiplizieren. Was wir nun haben, ist die Darstellung des Verhältnisses der maximalen Anzahl an Kacheln zu den aktuellen Kacheln. Aber wir wollen, dass dieser Wert bis zu 40% des Balkens ausfüllt und nicht über 40% steigt. Also teilen wir wieder durch 40, 40 geteilt durch diesen Skalierungsfaktor, und das ist Skalierung, weil sich die aktuellen Kacheln ändern werden, und wir werden das mit dem Prozentsatz verbinden. Das bedeutet eigentlich Normalisierung, das heißt, es wird in den Kontext A gebracht, dass 40 das Maximum ist Ich hoffe, das wird verstanden. Auf geht's, wir werden damit fortfahren , die Lademarke mit diesem Prozentsatz zu füllen. Und lassen Sie uns das tatsächlich demonstrieren, wie wir es machen werden. Demonstrieren Sie einige Prozentsätze. Also werde ich von hier schleppen und ein Holz laden. Und hier ist die Variable , die wir im Top-Down-Spielmodus gespeichert haben. Wenn ich von hier aus ziehe, ziehe ich direkt aus dem Top-Down-Spielmodus, weil wir diesen Spielmodus als Variable gespeichert haben . Oh, wir legen die Prozentzahl fest ist die Funktion , die wir erstellt haben. Und verbinde das hier. Wenn ich es bei e lasse, geht es über Null hinaus. Aber nehmen wir zum Beispiel an, unsere maximale Anzahl an Kacheln ist 20 und unsere aktuelle Kachel ist. Das sollte also unsere Ladeleiste zu 20% füllen. Und ich glaube in der Tat, 40% wären hier, 50% irgendwo hier. Lassen Sie uns es tatsächlich mit 20 von 20 füllen. Ja, jetzt hat es 40% der Bar gebaut, ich glaube, 50 sind hier irgendwo. Und es funktioniert richtig. Jetzt müssen wir noch etwas tun: Diese beiden Variablen, Max Styles und Current Tiles, erstellen . Was wir tun sollten, ist sie auf Spaw verfügbar zu machen, eigentlich nur die maximalen Stile, nicht die aktuellen Kacheln, sie auf Spaw verfügbar zu machen und sie für die Instanz nutzbar zu machen Wenn wir also zu unserem Hauptmenü in der Grafik gehen, kompilieren und speichern wir es, es wurde nicht aktualisiert. Aber wenn ich den Labyrinth-Generator erneut wähle, können wir jetzt sehen, dass wir hier die maximale Anzahl an Stilen haben , mit dem Standardwert 20. Zwei weitere Erklärungen. Was bedeutet das, der Standardwert? Wenn wir eine Variable auf dem Blueprint auf einem beliebigen Blueprint erstellen dem Blueprint auf einem beliebigen Blueprint Zuallererst muss der Blueprint kompiliert werden. Wenn ich also bitte kompiliere, dann können wir anhand der Details zum Standardwert sehen , dass wir jeden beliebigen Wert für diesen Blueprint angeben können für diesen Blueprint angeben wenn er nicht von irgendwo anders gesetzt wurde. Der Wert, den wir für einen Standardwert festgelegt haben , wird jedes Mal beibehalten, wenn wir ihn verschieben. Und die andere Sache, über die ich sprechen wollte, war die Das Erstellen eines Blueprints bedeutet also, dass ich zum Beispiel, wenn ich diesen Altersgenerator hierher bringe, eine Instanz dieser Klasse mitgebracht habe Wie wir bereits erwähnt haben, ist alles ein Objekt, und Klassen sind Möglichkeiten, Objekten mitzuteilen , was sie in einem voreingestellten Vorlagenmodus tun sollen Und wenn ich sie auf die Welt bringe, bringe ich Exemplare von ihnen. Ja. Das wollte ich hinzufügen, weil wir die editierbare Instanz schon zweimal oder vielleicht öfter verwendet haben die editierbare Instanz schon zweimal oder vielleicht öfter verwendet und es dafür keine Erklärung gab Lassen Sie uns nun unsere Werte auf die Standardwerte zurücksetzen. Ich werde diese neue Variable löschen. Ich werde die aktuellen Kacheln auf Null setzen und ich werde die maximale Anzahl an Kacheln setzen. Eigentlich lasse ich es bei 20 stehen. Was wäre unser nächster Schritt jetzt? Unser nächster Schritt wäre, das erste Plättchen für das Labyrinth zu verschieben Und dafür benötigen wir einen Bauplan für die Kacheln. Ich werde zum Inhalt übergehen. Ich gehe zu Blueprints und erstelle einen neuen Blueprint vom Typ Akteur und nenne ihn PP Underscore-Datei Bevor wir weitermachen und anfangen, Kacheln und so zu spawnen, lassen Sie uns ein wenig über unsere Labyrinth-Generation sprechen Fangen wir mit dem ersten Plättchen , das wir spawnen werden. Was bedeutet das? Nun, unser Labyrinth wird so funktionieren, abgebildet wird es auf der Grundlage eines zweidimensionalen Rasters, eines X- und eines Y-Rasters, X- und eines Y-Rasters Und das wird durch negative und positive Werte und Null dargestellt negative und positive Werte und Null Und unseren ersten Stil werden wir als 0,0-Kachel betrachten. Wenn wir nun etwas hinzufügen wollen, sagen wir zum Beispiel für Nord, wir es hinzu, dass X der Wert für und Süd und Y der Wert für Ost und West ist. Aber das werden wir sicherstellen, wenn wir es in den Weltrichtungen tun. Nehmen wir an, für Nord wollen wir eins erhöhen, x und y bleiben gleich, oder für Süd wollen wir x dekadieren, wollen wir x dekadieren, Null auf. Das Gleiche könnte für y gemacht werden, wenn wir für links und rechts Ost und West wollten , es wird im Grunde 0,1 sein und Nullpunkt minus eins Das ist unsere interne Koordinate , dass dieses Stück zum Nullpunkt gehört Dieses Stück gehört zu 1.1. Das gehört zu einem Punkt minus eins usw. Es können 25 sein beliebige Zahl, das wird unsere Darstellung sein , die in einer Variablen gespeichert ist. Abgesehen davon, was wir brauchen, um auf eine Datei zu antworten, ist, dass sie eine bestimmte Zeit hat. Was wir also tun werden , nehmen diese Größe und multiplizieren sie mit der Position der Keule, zum Beispiel, wenn unsere erste Kachel 600 ist und sie diesen Raum wenn unsere erste Kachel 600 ist einnimmt. Wenn wir das zweite hinzufügen, sagen wir zum Beispiel Nord, wäre es 0600 multipliziert mit eins und 600 multipliziert mit Null, also passt also Unsere Quadrate, unsere Kacheln werden dieselben sein denn 600 multipliziert mit Null und Null ist hier und Hundert multipliziert mit Eins, das führt uns zur Weltposition von x gleich 100, wo dieses x , denn 600 multipliziert mit Null und Null ist hier und Hundert multipliziert mit Eins, das führt uns zur Weltposition von x gleich 100, wo dieses x Null ist. Oh, ich denke, das ist vorerst genug Erklärung , während wir mit der Erstellung des Labyrinths Wir werden weitere Dinge erklären, aber dies ist eine erste Einführung in die Variablen , die wir in der nächsten Lektion erstellen werden, um diese Informationen zu speichern Ich frage dich nach einem nächsten. Auf Wiedersehen. 9. Erstellen der ersten Kachel: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur mit Real Engine Five Erstellung prozeduraler Dungeon-Action-RPs In der vorherigen Lektion haben wir also die Funktion „Laden von Kacheln berechnen“ entwickelt. Diese Funktion berechnet, Diese Funktion berechnet welcher Prozentsatz der aktuellen Spielsteine von der Maximalzahl 40% des Maximalzahl 40% des Balkens entspricht, und gibt uns einen Nun haben wir auch ein wenig über die Variablen und das zweidimensionale Raster unseres Labyrinths gesprochen über die Variablen und das zweidimensionale Raster unseres und darüber, wie wir unsere Kacheln, die in einem zweidimensionalen Raster erscheinen, zuordnen werden unsere Kacheln, die in einem zweidimensionalen Raster erscheinen, zuordnen werden Lassen Sie uns nun damit beginnen, einige Funktionen und Variablen zu erstellen , die wir verwenden werden, um diese Daten zu manipulieren und Regeln für sie zu erstellen und die erste Kachel zu erstellen Als Erstes werde ich also eine Funktion namens eigene Dateien erstellen eine Funktion namens eigene Dateien Natürlich benötigen wir den Continue-Zweig, damit wir unterscheiden können, ob dies der erste Stil ist, der auf der Grundlage des gesamten Spiels erscheint, oder ob es sich um einen fortlaufenden Teil Wir werden das verwenden, weil wir ein Introstück haben werden, zum Beispiel einen Ballon darstellt, wie der Spieler in dieses Labyrinth gelangt Und wenn wir weitermachen, wird der Slot , an dem wir den Ballon spawnen, der Slot sein, uns unser Aufzug vom vorherigen Level zum nächsten Level führt vom vorherigen Level zum nächsten Level Wenn wir also das erste Plättchen erstellen , müssen wir berücksichtigen, dass wir beim obigen Labyrinth Farbe mitbringen Wenn wir also unser Labyrinth auf Ebene eins haben, sagen wir, die Null auf der D-Achse ist Das nächste Stück, das wir spawnen werden, das nächste Labyrinth, das ist ein Labyrinth , Agentenlabyrinth, wie auch immer Sie Aber das nächste Stück , das wir spawnen wollen, wo auch immer es oben erscheint und sich selbst erschafft, wir wollen eine Entsprechung mit dem darunter liegenden Labyrinth haben , von dem wir eine Höhe haben, und wir werden hinaufgehen wo auch immer es oben erscheint und sich selbst erschafft, wir wollen eine Entsprechung mit dem darunter liegenden Labyrinth haben, von dem wir eine Höhe haben, und wir werden hinaufgehen. Also muss dieses Stück hier leer sein. Und beim ersten Stück Mais, sagen wir, der Anfang ist da, dieses Stück wollten wir der Ballon sein, zu dem wir gekommen sind Von wo wir gekommen sind. Lass uns das fortsetzen. Aus diesem Grund müssen wir diesen Zweig auf zwei Aktionen aufteilen, unabhängig davon, ob es sich um eine Fortsetzung handelt oder nicht, in der ersten Kachel. Nun, wie wir es im Hauptmenü getan haben und den Spontor-Knoten verwendet haben, werden wir hier dasselbe tun, um vom Kurs aus zu sponsern, und die Klasse, die wir verwenden werden, ist die BV-Kachel Wir werden die Spon-Transformation aufteilen. Standort angeben Ich habe in den vorherigen Erläuterungen ein wenig über Orte gesprochen , und was ich hinzufügen wollte , war, dass es, wenn wir uns im Level befinden, ein kartasisches System aus X, Y und Z gibt. Ich habe darüber gesprochen, dass unser erstes Labyrinth Z Null ist und das zweite Labyrinth auf Z, sagen wir rot, sein wird Auf der Welt haben wir ein Ctsan-System, das wir Dies ist eine kleine Klammer für diejenigen Wenn wir jetzt den Labyrinth-Generator spawnen, wir ihn auf 000x0, Das ist, sagen wir, der Mittelpunkt unseres Wortes. Und wenn wir das erste Mal spawnen, könnten wir die 000 verwenden, aber das würde bedeuten, dass, wenn wir wieder auf ein Labyrinth antworten, dieses wieder an der ersten Stelle erscheint Also was wir hier tun werden, wir werden einen Knoten namens get acto location verwenden Weil das Ziel dieses Knotens selbst ist, gibt er uns als Rückgabewert die Position, an der das BP-Labyrinth Jetzt antworten wir vom Hauptmenü aus, es ist 000. Wenn wir es später von einem anderen Ort aus beantworten, wahrscheinlich vom Aufzug, wird es die Position des Schwamms ermitteln, um die Kachel hinzuzufügen Wie dem auch sei, lass uns weitermachen. Was werden wir sonst noch brauchen? Also, ein bisschen Optimierung, nicht viel Optimierung, wir werden nicht viel optimieren, aber ein bisschen. Wenn wir das nächste Labyrinth spawnen, sollten wir in der Lage sein, das vorherige zu löschen Es wird also nicht in RAM und Aktionen geladen. Zum Beispiel werden wir ein Navigationsraster haben , das von der KI aus verwendet wird. Es sollte nicht all diese Dinge in der vorherigen Karte berechnen . Wenn wir beispielsweise Elemente haben, sollte es die Elemente nicht berechnen , wenn sie kollidieren, oder physikalische Elemente sollten nicht ausgeführt werden Wir brauchen also eine Liste, um Dinge zu vernichten, nachdem wir uns entschieden haben. Und für diese Liste werden wir eine Variable erstellen und sie wird vom Typ Schauspieler sein. Wir geben Akteur ein und gehen zu Objekttypen und wählen Objektreferenz aus. Jetzt werden wir etwas später Soft-Object-Referenzen und Objektreferenzen erklären . Aber wir werden nicht so viel optimieren. Wir werden Objektreferenzen verwenden. Aber ich schweife später ab. Jetzt werden wir diesen Akteur verwenden, der Objekt ist. Was wir diese Liste nennen wollen, sind Akteure, die zerstört werden müssen. Was ich in dieser Situation genauer analysieren möchte , ist, dass wir, wie gesagt, diese Variable auf etwas setzen. Aber das enthält nur eine Information, eine Variable. Aber wenn ich eine Liste von Variablen haben will. Nein, neben dem Variablentyp haben wir auch einen Containertyp, wie es im Tooltip steht Für diesen benötigen wir zum Beispiel ein Array Was ist ein Array? Lassen Sie uns diesen ersten Variablentyp ändern. Wir haben das mitgebracht. Zweitens, was ist ein Array? Im Grunde ist es eine Liste. Es ist eine Liste derselben Datentypen, eine Sammlung von Elementen, wenn man so will. Im Moment haben wir eine Liste von Schauspielern. Aber wenn ich den Variablentyp ändere, wäre es zum Beispiel eine Liste von Buionen oder eine Liste von Ganzzahlen, eine Liste von Vorerst überlassen wir es den Schauspielern. Objektreferenz, das ist der andere Bildschirm, das werde ich eingeben. Wenn ich nun das Set auswähle, ist, wie wir sehen können, eine Liste erforderlich. Wenn ich das G verwende, erhalte ich eine Liste. Wie kann ich also einen einzelnen Akteur zu dieser Liste hinzufügen , eine einzige Variable. Wir machen das so, dass wir einen Getter verwenden und vom Getter aus verwenden wir den Knoten, wenn Arrays viele einzigartige Knoten für die Manipulation von Daten haben In diesem Kurs werden wir einige von ihnen kennenlernen. Ich werde das hier verbinden. Wenn das jetzt läuft, stört es unseren ersten Stil auf dieser Liste , dass wir Schauspieler sind, die es zu zerstören gilt, wenn wir zum nächsten Level übergehen? zerstören gilt, wenn wir zum nächsten Level übergehen Die zweite Sache, die wir brauchen, ist das, was wir das Koordinatensystem nennen, das Koordinatensystem, die Koordinatenwerte Dafür werden wir eine weitere Variable erstellen und sie es nennen. Und wir werden das bis zu einem gewissen Punkt ändern. Was ist nun ein In-Point? Es ist im Grunde ein Zwei-D-Vektor. Außerdem werde ich von einem Array zu einer einzelnen Variablen wechseln. Wenn ich jetzt kompiliere, ist der Standardwert derzeit Null, Null. Das wollen wir für das erste Stück. Die erste Kälte , die wir wollen, ist 00. Jetzt müssen wir das irgendwo aufbewahren. Neben den Arrays gibt es noch einen anderen Variablentyp, der als Map-Variable bezeichnet wird einen anderen Variablentyp, der als Map-Variable bezeichnet sich im Grunde um ein zweidimensionales Array mit einigen zusätzlichen Regeln Lass uns eine erstellen. Ich werde eine neue Variable erstellen. Ich werde es Gon nennen. Ngon-Karte. Nein, eigentlich gehe ich nur zu mir, verdammte Karte Dang Map würde auch den Typ der Variablen besser beschreiben Also gehe ich hier zu den Containertypen und wähle die Karte Sie können es als zwei Variablen sehen. Das ist also, was eine Karte ist. Es ist wie ein zweidimensionales Array, aber der erste Variablentyp muss eindeutig sein. Lassen Sie uns das kompilieren und demonstrieren. Zum Beispiel, wenn ich den Schlüsselpunkt hinzufüge, die 8,00, und ich versuche, erneut etwas hinzuzufügen. Das erlaubt mir nicht, aber wenn ich als Akteur zum Array gehe und nichts hinzufüge, kann ich es wieder hinzufügen. Es spielt keine Rolle, ob wir Duplikate haben. Ich werde das löschen, ich gehe zurück zu Anrufen und werde sie tatsächlich ansprechen Landkarte. Ich gehe zurück zu p und lösche auch den Standardwert, den ich hinzugefügt habe. Das erste sind jetzt die Koordinaten. Die erste I, die wir auf dieser Karte haben. Der zweite wäre der Hauptdarsteller selbst. Ich könnte also entweder die Koordinaten oder gleichzeitig den Schauspieler haben , auf den ich verweisen möchte. Ich werde Tile eingeben. Ich werde die BP-Kachel archivieren. Ich werde eine Objektreferenz verwenden. Ich werde den Variablentyp ändern. Es fordert mich auf, den Variablentyp zu ändern , weil ich ihn in das Diagramm aufgenommen habe. Das bedeutet, dass es bereits registriert ist. Wenn ich es nicht in das Diagramm gebracht hätte, war ich nur hier, um die Variable zu erstellen, und ich ändere den Objekttyp. Sie können sehen, dass es keinen Einfluss darauf hat. Aber sobald ich es in die Grafik einfüge, wirkt es sich darauf aus. Ich werde es rückgängig machen. Ich werde diesen Gin herbringen. Und was das Array angeht, werde ich hinzufügen. Nun, diese Anzeige hat eine spezielle Regel, dass, wenn Sie etwas hinzufügen, das bereits existiert, da es der erste Schlüssel sein muss, eindeutig sein muss. Es wird den vorhandenen Schlüssel außer Kraft setzen. Das ist also keine ausfallsichere Mechanik, um Dinge hinzuzufügen, aber weil wir wissen, dass das nur einmal zu Beginn des Gebots ausgeführt wird , weil es das erste Plättchen ist, ist es ausfallsicher, dass es das richtige Stück hinzufügt Jetzt verbinde ich hier die aktuellen Koordinaten und den Akteur sowie den Rückgabewert des Spawn-Schauspielers mit sowie den Rückgabewert dieser Dungeon-Map In unserem Dungeonsystem, in unserem Labyrinth-Dungeon, wie auch immer Wir werden eine Sonderregel haben. Diese Regel besagt, dass auf speziellen Blöcken keine Dinge spawnen Also brauchen wir eine Liste der speziellen Blöcke, keine Spawn-Dinge. Für diese Liste werden wir die Koordinaten des Dungeons selbst verwenden die Koordinaten des Dungeons selbst Also werde ich die aktuelle Koordinatenvariable duplizieren , kopieren und einfügen Und ich werde es zum Beispiel in Spezialräume umbenennen, also eigentlich alle Spezialkacheln Spezielles Kachel. Und ich werde daraus auch eine Liste machen, ein Array. Nun, ich hätte daraus ein Set machen können, das dieselben Regeln wie die Map oder der erste Schlüssel hat . Einige der Regeln sind dieselben. Das bedeutet, dass sie eindeutig hinzugefügt werden müssen. Aber ich werde einfach ein Array verwenden da sie etwas einfacher zu manipulieren sind. Ich werde spezielle Kacheln mit Halt mitbringen. Ich werde mir einen Getter besorgen und dieses Array hinzufügen, die Koordinaten dieser Kachel Ich denke, das ist vorerst ein netter Ausgangspunkt. Bei der nächsten Legion werden wir entscheiden und beschreiben, wie wir den Austrittspunkt definieren werden Wo ist das nächste Stück? Wo werde ich dieses Stück scharren? Wo wird das nächste Stück laichen ? Wir werden die Nora Southwest-Verordnung definieren. Vielen Dank. Auf Wiedersehen. 10. Benutzerdefiniertes Richtungssystem: Hallo und willkommen zurück zu den fünf prozeduralen Aufrufen zur Erstellung von Dungeon Action Apes der Game Design Workshop-Engine Erstellung von Dungeon Action Apes Beim vorherigen haben wir die Kette der Ereignisse gestartet, Funktion der Span für den Stil Und wir haben die Schauspieler hinzugefügt , um das Array zu zerstören. Wir haben ein bisschen über Strahlen erklärt. Wir haben auch die Dungeon-Map-Variable erstellt , bei der es sich um eine Variable aus einem Int-Punkt und einem Akteur handelt Und wir haben auch die Koordinaten zu einem speziellen Kachelarray hinzugefügt. Aber wir haben gesagt, dass es sich bei den Spezialplättchen um Kacheln handelt, damit wir nicht bald die Regel einhalten werden, keine Dinge in unserem Dungeon zu spawnen Wir wollen zum Beispiel nicht, dass auf dem ersten Plättchen eine Truhe auftaucht H. Lassen Sie uns speichern und eine weitere Variable für die Auflistung erstellen eine weitere Variable für Diesmal wird es die Liste der Variablen Nordost, Ost und Südwest sein . Dies ist eine sehr einzigartige Art von Liste. Diese Liste hier drüben, die MP-Liste oder die Array-Liste oder die, wie gesagt, sie können zur Laufzeit geändert werden. Das bedeutet, dass ich während des Spiels Dinge zu dieser Liste hinzufügen oder entfernen kann. Was wir erstellen werden, ist eine alte Aufzählung, was egal ist, ob du dich auf Blueprints oder Sets Plus befindest, Aufzählungen können sich während der Laufzeit nicht ändern Das ist es nie. Aber es wäre eine enorme Leistung. Jetzt. Mal sehen, wie wir diese Variable erstellen. Diese Variable kann hier nicht in der Liste erstellt werden , da die Liste hier Dinge enthält, die veränderbar sind. Für unsere Liste wird das, was veränderbar sein wird , der Wert sein. Aber die Liste selbst muss hier erstellt werden. Um das zu erstellen. Wir müssen zu Content Drawer gehen, zu unseren Ordner-Blueprints Wir werden dort einen weiteren Ordner erstellen. Ich werde das oder Nums for Fold nennen. Arme. Ich klicke mit der rechten Maustaste und gehe zur Kategorie Baupläne, Schlauchaufzählung Wir nennen das Oh, gehen und fügen vier Variablen hinzu Ich werde es öffnen und das ist, was wir sehen, die Liste der Aufzählungsvariablen, und wir haben diese Schaltfläche die Aufzählungszähler hinzufügt Wenn ich versuche, einen Enumerator in vier umzubenennen, haben wir einen neuen Enumerator Null, Eins, Zwei, Drei. Ich versuche, diese Null zu nennen, Sie werden sehen, Sie Der neue Enumerator Null wird bereits verwendet. Aber auch das hat eindeutige Namen. Jetzt ändere ich 01. Ich werde es zum Beispiel auf Null belassen. Mein Fehler. Schreiben Sie R in Großbuchstaben, es wird nicht zwischen Groß- und Kleinschreibung unterschieden. Die Verwendung der Großbuchstaben R ändert sich also nicht wirklich. Jetzt werde ich diese Namen löschen. Ich muss einen Namen angeben. Also fangen wir mit dem ersten Anruf an. Und für den Norden, den zweiten nenne ich E für Ost, den dritten nenne ich Süden für S für Süden und den vierten nenne ich ihn W oder West. Wir haben Nordost-Südwest. Das ist also unsere vorgegebene Liste. Bevor wir zu denjenigen übergehen, die eine Definition wollen, wäre eine genauere Definition dass es sich um eine Datentypisierungsprogrammierung handelt, uns ermöglicht, Namenskonstanten zu definieren, die bestimmte Werte repräsentieren Zum Beispiel unser Optionsmenü, oder wir könnten normale, einfache Itmare-Höllenfehler haben Das ist zum Programmieren zu verwenden , um unseren Code etwas übersichtlicher zu machen , als wenn wir zum Beispiel einen Haufen Pollen, ein paar Zweige haben , Dinge ein- und ausschalten oder Zeichenketten oder so Lass uns weitermachen. Bringen wir diese Liste zu unserem Blueprinting-M-Generator, weil wir sie sehr brauchen Coy hätte es Richtung nennen sollen. E-Richtung. Ich werde eine neue Variable erstellen. Ich nenne es. Erektionen, nur Anweisungen Nun, wir werden es hier nicht leicht finden. Also ich gehe zu MS, es gibt viele Aktionen vom Typ Pset. Jetzt gibt es uns die Variable, die wir erstellt haben, e directions, die die Liste von Nordosten, Süden und Westen enthält Ich werde einen einzigen Typ von ibru von A ändern, ich kompiliere und lasse mir etwas zeigen Nun, wie Sie sehen können, werden wir es tatsächlich mitbringen, wir können es an den Details sehen Es gibt ein Drop-down-Menü mit unseren Optionen für Nordosten und Südwest, und eine davon ist, den ausgewählten Wert beizubehalten Aber selbst wenn es all diese Werte gespeichert hat, ist einer dieser Werte derjenige, zu dem er hinzugefügt wurde Wenn ich die Anweisungen festlegen werde, wird das eine dieser Optionen sein. Eigentlich Richtung, kein guter Name für diese Variable, weil wir diese Variable verwenden werden, um unseren Austrittspunkt von unserem erzeugten Akteur zu definieren unseren Austrittspunkt von unserem erzeugten Akteur B: Was wir jetzt tun müssen, ist herauszufinden , wo unsere nächste Figur erscheinen wird Also werde ich den Namen in Last Exit ändern. Oh ja. Das ist unsere letzte Exit-Variable. Wo sind wir zuletzt ausgestiegen? Oh, geh zum Kompilieren, Dave. Und jetzt machen wir einen zufälligen Ausgang. Jetzt gehen wir zur Systemwiederholung. Es ist keine schlechte Technik, aber auch die beste. Wir werden Make Array nehmen. Wenn ich das hier wegziehen würde, könnte ich make array nicht bekommen weil das kontextsensitiv ist War ich nicht. Ich tippe M-Array , es macht dasselbe. Aber wir haben ein Array mit einem Platzhalter als Variable erstellt. Also werde ich auch kontextsensitiv werden, zum Beispiel von Ray eine Kopie bekommen und das hier verbinden. Also habe ich den Platzhalter in eine Art unserer Meration umgewandelt. Jetzt haben wir dieses Array hier, um das Get or Up zu löschen Von hier an gehe ich zurück und verbinde das hier, lösche das hier. Ich werde unsere Stecknadeln hinzufügen und es nach Westen schaffen. Aber das sind kleine Tricks für mich, weil ich nicht ein Array mit allen Richtungen erstellen muss und das Array, das ich erstellt habe, nach dem Zufallsprinzip auswählen muss. Ich erstelle nur ein temporäres Array, das Müll gesammelt wird. Jetzt ist diese Carbach-Sammlung auch eine große Sache. Es gibt viele Erklärungen. Wir werden nicht darauf eingehen. Oh, ich habe ein Array erstellt , das nicht in einer Variablen gespeichert wird und Speicherplatz beansprucht, was Fahrlässigkeit wäre, denn nur ein Strahl von R-Aufzählungswerten ist Aber wie dem auch sei, ich wollte nur zeigen wie wir Knoten manipulieren und vom Platzhalter zu unserer eigenen Variablen gelangen können Knoten manipulieren und vom Platzhalter zu unserer eigenen Variablen gelangen Nun, das macht eine zufällige Auswahl aus diesem Dom-Element und macht es zu unserer Variablen Ruft es zu unserem letzten Ausgang auf. Wenn das läuft, haben wir beschlossen, dass unser letzter Ausgang dieser sein wird. Wir können das tatsächlich mit einer Print-Zeichenfolge demonstrieren , ich verbinde diesen Wert hier. Das wird uns eigentlich nichts zeigen. Es zeigt uns nichts, weil wir erste Kachel des Telefons nicht angeschlossen haben. Ich werde das hier verbinden. Kompilieren. Ich gehe zur Pre. Wie wir sehen können, drücke ich erneut auf Play und Start, noth, drücke und starte. Wieder nach Westen. A Es ist Rundo. Ein Grund, warum du einfach nach Westen und Süden gefahren bist. Okay. Wir haben einen Norden. Ja, es funktioniert. Wird zufällig ausgewählt, dreimal. Ich denke, das ist ein netter Ausgangspunkt für diesen. Wir fahren mit dem nächsten fort, indem den Austrittspunkt definieren, nicht den Austrittspunkt, den Einstiegspunkt, was wir auch in einigen Regeln sein werden . Das war's für diesen Auf Wiedersehen. 11. Finden von benachbarten Kacheln: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon Action-Rollenspiel zur Erstellung von Action-Rollenspielen Auf dem vorherigen haben wir den letzten Ausgang IO Blue erstellt, und wir haben die Aufzählung erstellt, die wir Und erklärte ein paar Dinge über Aufzählungen. Wir beweisen auch, dass wir durch den Mar A-Cheat hier einen zufälligen Punkt bekommen , und das brauchen wir momentan nicht, also machen mit dem entgegengesetzten Ausgang weiter Jetzt können wir es uns einfach machen und keinen zufälligen, entgegengesetzten Ausgang haben und einfach überprüfen, ob all diese beiden Variablen niemals identisch sind Anderer Scheck, das ist nein. Was wir tun können, ist einfach das Gegenteil von dem zu bekommen , was unser Ausgang ist. Zum Beispiel malen. Wenn dies unsere Box ist und wir von oben ausgehen, sollte das Intro von unten sein Wenn wir aus dem Osten kommen, sollte das Intro im Ich denke, das ist eine einfache Regel, und sie macht es uns momentan ein bisschen einfacher Wir werden später einige Prüfungen erstellen, sodass eine Variable nie mit einer anderen Variablen geliefert wird. Aber lassen Sie uns vorerst mit dem weitermachen, was wir machen. Nun, um das zu tun. Wir brauchen eine Methode, um die Nachbarn zu finden, die benachbarten Zellen, wie auch immer Sie sie nennen wollen Was ist im Grunde unsere ersten, unsere ersten Koordinaten, wie unsere Koordinaten sind Null, Null, Null, X, Null, Y. Was wären die Nachbarn auf einem Kreuz? Weil wir mit einem Kreuz bauen. Das ist auch eine Information über unseren Dungeon, wie er den Dungeon Creator ausmacht wie er den Dungeon Creator ausmacht. Lass uns wieder malen gehen Wie Sie sehen können, habe ich Pfeile auf den Nordost-Südwest gelegt. Wir haben keine Pfeile im Nordwesten oder Nordosten, oder das würde einen anderen Gebäudetyp erfordern. Aber für uns werden wir jetzt die Grundzüge machen, nur Nordost-Südwest zu haben , und mit dieser Logik weitermachen. Nun wollen wir die Nachbarn dieser aktuellen Koordinaten ermitteln. Wir werden eine weitere Funktion benötigen. Es wird wieder eine reine Funktion sein weil es eine mathematische Berechnung ist. Wir werden eine neue Funktion erstellen. Wir werden es darauf Wind Cross Base nennen. Das ist die Schreibweise für angrenzend. Gesendet. Wie dem auch sei, es spielt keine Rolle. Wenn Sie immer wieder einen Rechtschreibfehler machen, ob es der ständige Rechtschreibfehler ist, das nicht wirklich wichtig, weil Sie Ihre Funktion finden können. Aber Rechtschreibung ist ziemlich wichtig. Geben wir nun diese Funktion ein. Eigentlich ist es offen. Nun, was wir brauchen werden , ist ein Input. Wir werden eine Eingabe von Koordinaten benötigen. Ich gehe zu den Eingaben und wähle einen In-Punkt aus. Und ich werde das DS nennen. Wie gesagt, ds, der In-Punkt ist ein Zwei-D-Vektor. Das heißt, er hat ein X und ein Y. Er hat kein Z. So wie ich es mit der Transformation machen könnte. Ich kann es also mit Kabeln machen, aber ich möchte Split nicht verwenden, denn wenn ich Split verwende, sieht es so aus, und ich muss es einfach von hier wegziehen Es wird sowieso ein Chaos sein. Also werde ich die beiden neu kombinieren , was ich tun werde, ist, ich werde das hierher ziehen und Break in Point eingeben Break in Point Jetzt ist es ein bisschen klarer, was am Ende nicht so sein wird Denn was wir tun müssen, ist, dass wir manuell eine zu den oberen Koordinaten hinzufügen oder eine subtrahieren müssen den oberen Koordinaten hinzufügen oder eine subtrahieren Und machen Sie dasselbe für Y. So erhalten wir unsere Nord-Südost-West-Koordinaten Weil wir definieren werden, dass unser Norden der Plus-Sinus von x ist. Süd ist unser Minus-Minus in der Wortrichtung X, und Essen ist die positive Richtung auf und wir sind die negative Richtung auf Y. Oh. Jetzt habe ich die Werte manuell erfasst und hinzugefügt. Aber ich muss die Punkte klarstellen. Aber ich werde so machen, wie ich das gemacht habe, einen Strahl zu machen. Ich kann es tatsächlich auf den Punkt bringen. Ich kann diesen Knoten hier drüben haben , der einen weiteren Punkt erzeugt. Die meisten Dinge können vorübergehend auf diese Weise erstellt werden. Jetzt brauche ich das viermal. Jetzt verbinden wir alles, alles. Lass uns hierher gehen, geht hierher. Wir werden gezwungen sein, ein bisschen zu spagetifizieren. Ich ziehe vom Y hier auf 0x0y und vom Y hier auf dieses Nully, und ich werde hier dasselbe mit x machen, und es heißt sageify und Kurz gesagt bedeutet das, dass wir einen variablen neuen Endpunkt mit der aktuellen Position plus eins bis x oder plus zwei x plus ein y und plus minus ein y und plus minus ein y erstellen der aktuellen Position plus eins bis x oder plus zwei x plus ein y und plus . Wir haben eine Kreuzposition um unsere Nachbarn von unserem aktuellen Punkt aus zu finden. Jetzt mache ich wie zuvor einen Strahl und füge Stecknadeln hinzu. Ich werde das hier und hier das hier verbinden und auf das nebenstehende Weinkreuz klicken und eine Ausgabe erstellen, die ein Array sein wird, und es j nennen es . Zuletzt müssen wir eine Verbindung zum Rückknoten herstellen , dem Array, das wir gerade zu einem benachbarten Array gemacht haben. nun, bevor wir weitermachen, Lassen Sie uns nun, bevor wir weitermachen, demonstrieren, was wir erstellt haben. Gehen wir also in die Funktion mit dem ersten Stil und setzen wir wieder eine Rt-Bar ein. Lassen Sie uns diese Funktion hierher bringen. Ich habe sie nicht als reine Funktion ausgewählt, ich wähle sie jetzt einfach aus und wähle die Funktion an einer beliebigen Stelle aus. In der Detailansicht können Sie diese reine Option sehen . Ich werde das auswählen Für Koordinaten kann ich jetzt die aktuellen Betten verwenden. Und was wir sofort sehen können, ist, dass wir diese Variable nicht mit dieser verbinden können , weil es sich bei dieser um eine Box handelt. Hat das Symbol einer Box, das ist unser Array-Symbol, wobei dieses nur ein Stecknadelsymbol hat, diesen abgerundeten Punkt hier. Oh, wie können wir alles zeigen, alle Elementlisten dieses Arrays. Was wir verwenden können, ist eine sogenannte For-Schleife für jede. Jetzt gibt es auch einen Foreloop. Bringen wir es mit Kein einziges Beispiel. Also, was ist der Unterschied zwischen diesen beiden? Lassen Sie uns zunächst erklären, was sie tun. Was sie tun, basiert auf einem Index, wir selbst setzen oder den wir aus einem Array abrufen. Das ist eine Aktion , die wir programmieren können und die als Body Loop bezeichnet wird. Und wenn es fertig ist, verkabelt es den fertigen Pin. Wie Sie sehen können, haben diese auch auf dieser Seite einige andere Pins. Dieser gibt uns zum Beispiel nur einen Index, wenn ich den Index 55-55 setze Das heißt, es wird indexiert Der erste Index, den wir angeben, wenn der Bodyloop ausgelöst wird, wäre 55. Und der Grund, warum wir wissen, dass es 55 ist, weil wenn wir das abdecken, heißt es, dass für jeden Index vom Startindex bis einschließlich Stoppindex eine Body-Loop ausgeführt jeden Index vom Startindex bis einschließlich Stoppindex eine Body-Loop Das ist das Schlüsselwort, inklusive. Das bedeutet, dass es 55 laufen wird, und es wird auch 65 laufen. Nun, dieser gibt uns ein Array-Element. Wenn wir also für jede Schleife aus einem Array verwenden, bekommen wir tatsächlich auch das entsprechende Element in den Index. Nein, lassen Sie uns das vor der Druckzeichenfolge verbinden. Und jetzt wollen wir auf dieses A-Element hinweisen. Ich werde das hier verbinden. Ich werde diese Schleife löschen. Und unsere Koordinaten sind momentan Null und Null, Null auf Y und Null X. Es sollte uns also eine Plus-Eins auf X, eine Minus-Eins auf X, eine Plus-Eins auf Y und eine Minus-Eins auf Y geben eine Minus-Eins auf X, , während das entsprechende Gegenteil bei Null bleibt. Ich gehe kompilieren. Ich bin auf dem Overp Es tut mir leid. Gehe auf M-Level. Gehen Sie, um alles zu speichern und drücken Sie Play. Jetzt wie im Spiel, wir können die Koordinaten hier oben sehen. Wenn es zu schnell ist, können wir einige zusätzliche Optionen für die Druckzeichenfolge öffnen, die nur eine Dauer, einige andere Dinge oder einen Fortschritt hat . Wir, zieh das an. Wenn ich zum Beispiel jetzt, wird es länger bleiben. Wenn wir es nun mit verschiedenen Werten testen, rufen wir statt der aktuellen Colts den MA-Generator auf, ich teile das auf Wählen Sie, sagen wir, wir beginnen bei eins und eins. Ich sollte korrekt aktualisieren, da es die Werte gemacht hat. Noch eine Sache, bevor wir für diese Lektion schließen. Ich denke, wir sollten neben der Reihenfolge , aus der sie kommen, eine Erklärung platzieren . Wie gesagt, Nord ist Plus auf X und Süd ist Minus auf X und West Minus auf Y, und Plus ist Ost. Ich gehe zu der Veranstaltung. Ich kann es tatsächlich als Tooltip verwenden, aber ich bevorzuge es beim Namen Ich habe es hier. Benennen Sie es mit F zwei im Weltraum und North North East West um. Ich kann das haben und mir erklären , in welcher Reihenfolge diese kommen. Nun, ich denke, das reicht für diesen. Ich sehe dich beim nächsten Mal. Auf Wiedersehen. 12. Koordinaten-Mapping und Kachel-Spawning: Hallo und willkommen zurück zum Game Design-Workshop und zum Real Engine Five-Kurs zur Erstellung von Procedural Dangon Action RBC Zuvor hatten wir unsere Funktion „Fine Cross“ eingerichtet , die an Nord-Südost-West angrenzt Und lassen Sie uns das tatsächlich neu kombinieren. Wir haben die Eingabe einer Int-Punkt-Eingabe, und wir exportieren, wir haben eine Ausgabe mit einem Array von T-Punkten Jetzt demonstrieren wir mit einer Vorschleife die Fähigkeit, jede beliebige Koordinate hinzuzufügen uns die Nachbarn, die Quernachbarn, zu geben Also lass uns das hier verbinden und das auch lassen. Jetzt wollen wir das Gegenteil von Last Exit erreichen. Um das zu tun, werden wir diese Liste hier verwenden. Ich werde mir eine Kopie holen. Der Unterschied zwischen einer Kopie und einer Referenz besteht darin, dass ich, wenn ich eine Kopie erhalte, im Grunde genommen ein Duplikat des eigentlichen Elements erhalte. Was aus der Referenz stammt, kann ich tatsächlich die Quelle, die tatsächliche Entität des Arrays, manipulieren . Was wir also brauchen, ist eine Kopie. Und jetzt werden wir einen neuen Knoten verwenden. Wir werden einen ausgewählten Knoten verwenden. Lass es mich demonstrieren. Wir geben Select ein. Wie Sie sehen können, haben wir hier diesen Knoten , der uns einige Optionen und einen Index mit einem Platzhalter und einem Rückgabewert bietet . Auf der Grundlage dieses Index-Jokerzeichens handelt es sich nun um einen alten Platzhalter, weil er sich in viele Typen ändern kann Wir werden tatsächlich das AM benutzen, das wir haben. Zum Beispiel werde ich hier den letzten Ausgang verbinden. Ich habe automatisch konvertiert. Dieser Rückgabewert ist nun eine Ganzzahl , weil wir eine Auswahl aus einer Ganzzahl angefordert haben. Wenn ich nur Select anfordern wollte, können Sie sehen, dass alles eine Y-Karte ist. Wir können diesen Knoten also in vielen verschiedenen Fällen verwenden. Nein, wir machen einen Nord zuerst Eins, Null, weil Arrays mit Null nummeriert sind , also eins, zwei, drei usw. Oh, Nord ist Null, Ost wäre zwei, Süd wäre eins und West wäre drei Aber basierend auf dem Index, der eingeht, kommt es nach Süden, wählt es zwei, wenn es ein Norden ist, wählt es den entsprechenden. Aber das Problem dabei ist, dass wir Norden auswählen, wenn Norden kommt . Wenn der Osten kommt, wählen wir den Osten. Wir wollen diese Zahlen umkehren. Aber wenn es nach Norden kommt, wollen wir nach Süden, aber wir werden uns hier für einen entscheiden Wenn es Süden ist, wollen wir Norden, also werden wir hier Null wählen. Wenn es Osten ist, wollen wir Westen, und wo es Westen ist, wollen wir Osten. Jetzt können wir das also im Grunde auf die Einnahmen, die wir mit diesem Array erzielen, umkehren wir mit diesem Array erzielen Um nun endlich unser Ziel bei all diesen Aktionen zu erreichen , müssten dem Programm sagen, dass diese Box diese Koordinaten auf unserer Karte haben sollte, unsere Zweidimensionalität sollte den Anfang haben Nun, nicht der Startblock, sondern der Intro-Block, nennen wir ihn zum Beispiel Intro Lassen Sie uns tatsächlich einen Plan dafür erstellen. Gehen wir zum Blueprint-Ordner. Wir klicken mit der rechten Maustaste. Wir werden eine Blueprint-Klasse auswählen. Ich werde Schauspieler werden. Nennen wir es BP-Intro oder Ballon oder was auch immer. Wir werden einen Ballon benutzen. Deshalb habe ich Ballon gesagt. Nein. Da wir wollen, dass Intra dort spawnen soll, sollten wir dem Labyrinth sagen, dass es leer bleiben soll Diese Koordinaten. Also, was mache ich, wenn du zu speziellen Fliesen gehst? Ups. Ich habe hier schon einen Fehler. Ich schätze, das ist passiert. Es sollte keine Elemente enthalten. Ich werde das löschen. Spezielle Kacheln sollten aus Null-Elementen bestehen. Ich vermute, das ist passiert, weil ich das Element von hier aus erstellt habe das Element von hier aus erstellt Ich habe diese Variable dupliziert, also hat sie sie vielleicht beibehalten oder ich habe sie versehentlich hinzugefügt oder für eine Also müssen spezielle Felder leer sein. Jetzt kopiere ich diese speziellen Kacheln, füge sie ein und benenne sie in stt um. Aber wir werden wieder eine andere Liste haben, wir werden sie mit Kontrolle hierher bringen und AD auswählen und diese Variable von get hinzufügen Nun, wir werden diese Liste verwenden, wenn wir das Labyrinth bauen, um einige Regeln zu erstellen, die besagen, dass wir hier nichts platzieren sollten, weil wir vielleicht selbst einige Dinge dort platzieren möchten, wie wir es jetzt tun werden. Nehmen wir an, wir möchten diese Intro-Kachel „Stelle diesen Platz platzieren Ich werde wieder diesen eigenen Schauspieler verwenden , weil so die Schauspieler auf der Welt reagieren Und ich wähle den in O aus. Es ist ein R. Oh, lass uns zu diesem Bauplan übergehen Ich bin dazu übergegangen, dass ich diese Brauen ausgewählt habe, was bedeutet, zu einem Set zu blättern, eine Lupe hier drüben, und es führt mich zum Blueprint, ob ich in einem anderen Ordner wäre, das ist das, bereit Jetzt doppelklicke ich darauf, füge ein statisches Netz hinzu und wähle für das hier automatisch gewählte statische Netz eine und wähle für das hier automatisch gewählte statische Netz hier automatisch gewählte Wir haben eine Röhre. SM-Röhre. Okay, lassen wir diese Röhre vorerst stehen. Also wissen wir, wo unser Intra ist. Finden Sie jetzt den Standort. Wie gesagt, wenn ich das aufteile, kombiniere die Struktur neu. Ja. Sie können auch die Vektoren selbst aufteilen. Aber was wir wollten, war eine Rekombination, um zu zeigen, dass es sich um eine Transformation handelt Wenn ich es jetzt aufteile, kann ich die Position und die Rotation sehen. Ich habe meine lokalen Koordinaten oder ein zweidimensionales Array. Aber was würde das in Koordinaten in der Welt bedeuten? Weil dafür Wortkoordinaten benötigt werden, kann es nicht auf der Grundlage von eins und zwei, minus eins und minus zwei, wo auf der Welt, Aber dafür werden wir eine weitere Funktion erstellen, eine weitere reine Funktion, um ihr Koordinaten geben zu können, und sie gibt uns eine Wortposition Oh. Gehen wir zu unseren Funktionen, drücken erneut auf dieses Plus-Symbol und fügen eine neue Funktion hinzu. Nennen wir diesen Punkt Standort. Ich denke, das ist genug. Wie gesagt, wir brauchen hier noch einen Input. Es wird die Punktverordnung in diesen Löchern bekommen. Und es wird die Ausgabe eines Vektors haben. Wir haben ein W-Leerzeichen von x, y und z. Sagen wir so. Wäre es nicht toll, wenn ich das hier verbinden könnte und du einfach arbeiten könntest. Aber was wir tun müssen, ist das kaputt zu machen. Erinnerst du dich, als wir in Paint über die Stapelgröße gesprochen haben, zum Beispiel, wie groß unser eigentliches Labyrinth ist? Nun, wir müssen diese Variable erstellen. Ich werde hier unsere Variable drücken, ich werde ihren Typ Integer ändern. Ich werde es Ile is nennen. Weil ich die Größe der R-Kacheln kenne, diese 600, werde ich 100 eingeben. Das ist der Standardwert, aber wir können ihn als Instanz editierbar machen und ihn beim Spawn verfügbar Wir können es also ändern. Wir haben verschiedene Kacheln, wenn wir das Labyrinth spawnen, gehen wir zum Hauptmenü und dann zum Diagramm, Lass uns das aktualisieren. Sammle es und nichts passiert, weil ich diesen Entwurf nicht kompiliert habe Und jetzt haben wir die Größe der Kacheln. Wir können es selbst anpassen , wenn wir verschiedene Arten von Kacheln haben, 400 mal 400 oder wie viele wir auch immer sterben. Ich kompiliere und speichere erneut und kehre zu unserer Ma zurück. Jetzt haben wir diese Kachelgröße, dass sie hundert ist, und wenn wir das mit x multiplizieren, multiplizieren wir es mit y. Wir werden zum Vektor. Eigentlich, weil mit Vektoren. Nun, das ist Vektoren sind Floats. Wenn ich also einfach versuche, daraus einen Vektor zu machen, wird das nicht passieren. Jetzt kann ich immer zwei Fließkommazahlen ändern und es wird ein Float erzeugt. Aber heutzutage gibt uns Real die Möglichkeit, zu diesem Pin zu gehen, rechten Maustaste zu klicken und ihn in alles umzuwandeln, was ich will. Ich werde einen Festwagen wählen. Einfache Genauigkeit spielt für uns keine Rolle Deshalb vielleicht ein größeres Verfahren für uns, weil wir ganze Zahlen multiplizieren Und nun ja, um ehrlich zu sein, weil es den Standort wert ist und wir vielleicht gerade dabei sind, das Labyrinth zu sprengen. Ich schwebe. Macht spielt keine Rolle oder spielt keine Rolle. Oh, von hier aus kann ich jetzt Tor machen. Und das ist mein X-Wert und das ist mein Y-Wert. Und für den Z-Wert füge ich ihn einfach zur Tor-Asi hinzu. Füllen ist wichtig. Ja. Also, da das Null ist, wird die Z-Achse von unserer Position des Schauspielers aus hinzugefügt . Und der Grund, warum wir das hinzufügen , ist, dass dies unser Startpunkt ist. Und wenn wir später die nächsten Labyrinthe spawnen werden, wie oben und sogar mit einem anderen Startpunkt als 002000, sagen wir Es könnte 500 mal 600 X und ein zufälliges Z sein. Deshalb müssen wir den Standort des Schauspielers so hinzufügen Bei den nächsten Labyrinthen, die gebaut werden, wird berücksichtigt, dass ihre Position relativ zum Standort des Schauspielers und zum Standort Labyrinthe, dem Standort des Labyrinth-Erstellers, ist Standort des Schauspielers und zum Standort Labyrinthe, dem Standort des Labyrinth-Erstellers, Labyrinth-Erstellers Oh, ich werde das hier hinstellen. Wir haben diesen Plan nicht viel spezifiziert. Ich werde kompilieren, ich werde speichern und ich werde zu diesem ersten Stil zurückkehren, und ich werde Feinstation bringen, es sauber machen, also geht es wieder, und ich werde hier und das hier verbinden Wenn ich jetzt spiele, sollte es erscheinen. Wir können es tatsächlich sehen , weil wir den Ladebildschirm haben Gehen wir also zum Ladebildschirm. Gehen wir zum Cavas-Panel und setzen die Sichtbarkeit auf Versteckt. Kompilieren und speichern. Es ist kein geladener Bildschirm vorhanden. Aber ich schätze, wir sehen es nicht, weil es kein Licht gibt Lass uns das reparieren. Lasst uns Licht auf unser Niveau bringen. Wir gehen zu der Box hier oben , die schnell zum Projekt hinzugefügt wird. Wir gehen zu den Lichtern und fügen das gerichtete Licht hinzu. Lass uns nochmal spielen. Ich kann wirklich keine Kiste sehen, weil unsere Kamera nicht der richtige Ort war. Oh, ich schätze, das ist unser Intro. Also irgendwo hier in der Nähe ist unser Labyrinth-Generator. Also, ich denke, das ist ein guter Haltepunkt für diesen. Und beim nächsten sollten wir damit beginnen, unsere Kachel so zu gestalten, dass wir unsere erste Kachel sehen können. Auf Wiedersehen. 13. Visualisieren des Labyrinths mit Pfeilen: Hallo und willkommen zum Game Design Workshop und dem Kurs zur prozeduraler Dungeon-Action-RPGs mit Real Engine Five Dungeon-Action-RPGs Zuvor hatten wir die Funktion zur Ortung feiner Kacheln entwickelt, die anhand von Koordinaten und anhand unserer Kachelgröße, der Position unserer geraden Koordinaten und dem Wort Position eine Feinabstimmung und anhand unserer Kachelgröße, der Position unserer geraden Koordinaten und dem Wort Position eine Feinabstimmung Oh, wir haben das zu unserem Code hinzugefügt und auch unseren Intro-Block Das sollte eigentlich ein bisschen höher erscheinen, also füge ich hier einfach etwas hinzu und mache eine Vektor-Add-Mathematik Ich werde zu den Zaxen 300 hinzufügen. Ich werde das hier verbinden. Jetzt wird es also etwas höher erscheinen als der Rest unseres Labyrinths Nun noch ein Detail, bevor wir anfangen, die Kacheln Wie gesagt, wir müssen das zu den Aktoren hinzufügen, um das Array zu zerstören Ich werde die Schauspieler dazu bringen, sie zu zerstören. Ich werde einfach auf Hinzufügen drücken. Und ich werde auch diesen Schauspieler hinzufügen, was das Ergebnis des Spawning-Schauspielers PP-Intro ist Lassen Sie uns jetzt kompilieren und speichern. Lass uns unseren Stapel öffnen. Wenn wir ihn jetzt wieder das erste Mal öffnen, öffnet sich der Bauplan so Wir müssen nur den vollständigen Blueprint-Editor öffnen. Nochmals, falls sich jemand wundert, dies sind die Standardwerte in diesem Blueprint Sie finden sie auch in den Klassenstandardwerten hier im Detail Ich werde das hier anschließen. Und lass uns anfangen. Zuerst werden wir einige Dachgitter und einige Pfeile an unserer Komponentenwanne Um sie zu sehen, gehen wir zu unserem Viewport. Und lassen Sie uns auf „ Statisches Netz hinzufügen“ klicken. Wir fügen ein statisches Netz hinzu. Lassen Sie uns dieses Mesh benennen. Vier. Und das ist eine statische Netzkomponente. Es muss also genau hier eine statische Mesh-Entität zu diesen Eigenschaften hinzugefügt werden, denn das bedeutet Blueprint , dass Sie ein statisches Mesh haben Es steht nicht im Blueprint, welches statische Mesh. Aber wir gehen hier auf die Detailansicht und gehen dann zur statischen Mesh-Eigenschaft und wählen unser Stockwerk Also, gibt es zwei Stockwerke, die 400 mal 400, und die schlichte Etage. Das ist ein Stockwerk von 600 mal 600, also werden wir dieses benutzen. Nun, wie gesagt, unser Norden ist die positive Achse auf X und unser Westen, unser Osten ist die positive Achse auf Y. Um die Dinge für uns etwas visueller zu machen, damit wir erkennen können, was es war, wenn wir sie uns einfach auf der Karte ansehen. Wir werden vier Pfeile hinzufügen. Füge zuerst hinzu. Dann werde ich kopieren und einfügen. 43 mal. Oh, ich werde auch auf Pfeil Nord, Pfeil Süd und Pfeil West umbenennen . M. Jetzt. Da diese Pfeile klein sind, sollten wir sie auch vergrößern. Ich wähle sie alle aus und gehe zur Skalierung und erhöhe sie im Grunde um einen Faktor zwei. Jetzt sind sie ein bisschen größer. Lassen Sie uns sie entsprechend rotieren. Ich drücke den Rotator, also E , drehe den zweiten Pfeil, den Ostpfeil, und drehe jetzt den Südpfeil Den Westpfeil drehen. Das ist alles in Ordnung und gut. Wir haben vier Pfeile, die die Richtung angeben, aber wir haben keine speziellen Informationen darüber, was was ist. Wenn ich das sehe, ohne das Werkzeug ausgewählt zu haben oder so , kann ich nicht sagen, ob dieser Norden oder Westen ist. Aber lassen Sie uns zu jedem Pfeil etwas Text hinzufügen. Text, Pfeiltext, Auswahl des Pfeils. Den letzten Pfeil und Text auswählen. Warum wähle ich sie aus? Denn wenn ich sie auswähle, sie automatisch als untergeordnetes Element der ausgewählten Komponente hinzugefügt. Wenn ich den Stamm ausgewählt hätte, würden ihm die Textkomponenten hinzugefügt, die dem Stamm übergeordnet Jetzt sind sie dem Pfeil zugeordnet. Wenn ich also die Pfeilrichtung ändere, ändert sich auch der Text. Jetzt werde ich die Texte etwas weiter nach vorne bringen . Wie Sie sehen können, mit 0,5 hinzugefügt, weil die Pfeile mit E von zwei gerendert unser Text automatisch mit 0,5 hinzugefügt, weil die Pfeile mit E von zwei gerendert werden. Es wird also im Grunde genommen um eins skaliert wenn ich es außerhalb des übergeordneten Pfeils setze Ich habe bis zur Wurzel des Bauplans erzogen, nicht die Wurzel gezogen, sondern nur angefasst Sie können sehen, dass es wieder Eins, Eins, Eins ist, aber der Text hat die gleiche Größe beibehalten Wir gehen zurück und setzen es auf den Pfeil, der nach Norden zeigte. Ich sehe, dass er wieder 0,5 0,5 0,5 hat, aber er hat die Größe vergrößert. Das liegt daran, dass der Pfeil selbst auf zwei skaliert ist. Es war etwa vier, es wären zum Beispiel 0,25 . Lassen Sie uns das im Anhang demonstrieren Auch hier habe ich es zu einer Wurzel gemacht. Auf dem Boden. Das ist der Grund. Hier, der Pfeil oder ich berühre den Text noch einmal. Sie können sehen, dass es 0,5 ist. Wenn ich jetzt den Pfeil auf zwei zurückstelle, bleibt der Text 0,25, weil ich jetzt skaliere, während ich das als Kind gemacht habe Die Engine denkt also, dass ich denke, dass all diese automatische Mathematik gleichzeitig passiert Ich werde es wieder rückgängig machen. Eigentlich musste ich die Eltern nicht aufheben. gehe einfach zu eins, eins, A. Ich werde es ein bisschen rotieren Drehe das Ganze entgegengesetzt, also mache ich das auch. Ich werde bei den Details den Text von Text auf n für Norden ändern . Hier. Jetzt sind unsere Pfeile auf Position Null mit dieser Null. Vielleicht ist das nicht die beste Option , weil sie ein bisschen höher als der Boden sein sollten . Im Moment sind sie genau auf dem Boden. Also werde ich den Standort wechseln. Ich kontrolliere, habe jeden von ihnen ausgewählt. Ich werde den Standort auf Netz ändern. Oder 100 oder 50, nur ein bisschen mehr. 90 k. Nun, für diejenigen, die neu sind: Die Art und Weise, wie ich mich hierher bewege, ist die Art und Weise, wie ich den Editor verschiebe. Das bedeutet, indem Sie die rechte Maustaste gedrückt halten und AWS T&E verwenden , um sich zu bewegen Oh. Jetzt, wo wir n haben, hier nicht ganz zentriert. Beweg es. Wenn ich es verschiebe, kann ich es nicht mit dem aktuellen Thema zum Rasterabstand zentrieren. Aber weil es zehn ist, wenn ich es auf fünf setze, es vielleicht in der Mitte okay. Ja. Es ist Center Better Five. Aber wenn es nicht einmal auf fünf zentriert wäre, könnte ich es natürlich auf eins setzen Ich drehe es wieder ein und jetzt könnte ich es einfach ausschalten und das Schnappen wäre Das Gleiche können wir mit der Drehung mit den Graden machen, und dasselbe können wir mit der Skalierung machen , die durch diese Optionen hier gesteuert wird Lassen Sie uns nun mehr Textnra hinzufügen, lassen Sie uns diesen Textrander tatsächlich einen Norden nennen Ich gehe zum anderen Textender. Ich werde die Skala auf eins einstellen. Denken Sie daran, das gesperrt zu haben, sodass alles auf eins skaliert wird. Wenn Sie das entsperrt haben, haben Sie eine Skalierungskomponente, und seien Sie vorsichtig, wenn diese überhaupt skaliert wird Ich sperre sie, sie wird sie entsprechend skalieren Sperren Sie es erneut. Satz eins, 11. Schon wieder. Bringen wir es her. Lass es uns rotieren. Das weiß wirklich was. Das sollte so sein. Ich bringe es her. Ich ändere den Text auf West W. E. One. Okay. Lass uns den Osten machen. Das war der. Siehst du, weil ich noch lange rotiere, dreh es. Und das ist tatsächlich der Ostpfeil. Also werde ich es auf Transformation und Rotation zurücksetzen und nochmal weitermachen. Ich setze es zurück, indem ich hier auf den fetten Pfeil klicke, wenn du etwas bewegst , und dich frage, ob du es hier mit diesem Pfeil auf die Standardeigenschaft zurücksetzen möchtest es hier mit diesem Pfeil auf die Standardeigenschaft zurücksetzen Ich werde es so ausdrücken. Ich werde es so drehen, es so, und wir werden weiter unten nachlassen. W E von wechseln, um wieder zu feuern, etwas mehr runter. Ich finde, sie sehen gut aus. Nun, beim Westpfeil, lassen Sie uns diesmal den richtigen Pfeil machen. Ich werde den Text woanders auf Ws setzen. Ich werde die Rotation ändern. Korrekt. Es skaliert auf eins und lege es hier etwas tiefer. Gut abheften, für den letzten, South, Bring it down, S für den Text, und entsprechend belassen. Stellen Sie die Skala natürlich auf eins und wir legen den Standort fest. Jetzt haben wir eine Richtung von Nordosten nach Südwesten, um zu sehen, wo sich unsere möglichen Ein- und Ausgänge befinden. Wenn wir zum Beispiel jetzt spielen gehen, können wir den Ladebildschirm sehen Ja. Also lass uns zu unserem Ladebildschirm gehen, zu unserem Cavas-Panel gehen und es verstecken, kompilieren und speichern, damit wir tatsächlich sehen können, was wir bauen Wenn ich auf Play drücke, sieht die Kamera nicht richtig aus. Aber wenn ich auswerfe, drücke zum Beispiel Alt und S. Nicht zum Beispiel, das ist die Abkürzung zum Auswerfen. Ich kann mich im Editor-Editor wieder frei bewegen. Wir können den Nordost-Südwest sehen, aber wir können die Pfeile nicht sehen. Der Grund dafür ist, dass es eine Option für die Pfeile gibt. Wir werden es später zeigen. Es gibt also eine Option für die Pfeile , um sie im Spiel zu verstecken. Nun, wie Sie sehen können, liegt unser Ausgang wahrscheinlich im Norden, weil der gegenüberliegende Süden unser Intro-Block ist Wie Sie sehen können, ist er nicht genau zentriert, und der Grund dafür ist , dass wir, wenn wir zum Intro-Block gehen, zum Viewport gehen Sie können sehen, dass das Zentrum tatsächlich diese Ecke hier drüben ist , nicht die Mitte des Quadrats Deshalb sieht es also aus. Das brauchen wir nicht. Deshalb sieht es nicht zentriert aus. Aber wenn es sich um einen Drehpunkt in der Mitte des Tubos gehandelt hätte, wäre er zentralisiert gewesen Nun, ich denke, das ist genug für diesen. Lassen Sie uns die Pfeile noch einmal zeigen, die versteckte Spielvariable, gehen wir zum Viewport, zum Ti-Port, nicht zum Labyrinth-Generator Wählen wir alle Pfeile aus und gehen dann zur Option „Details“ Ich habe gerade HID hier geschrieben, und ich werde das ausschalten, wenn ich kompiliere und speichere. Handeln. Wir können jetzt die Pfeile sehen und der Ausgang ist von Osten, also kommt unser Intro aus dem Westen Das war's für diesen . Das nächste Mal sehe ich dich. Auf Wiedersehen. 14. Hinzufügen von Schloss-ähnlichen Wänden: Hallo und willkommen zum Game Design Workshop unter den prozeduralen Aufrufen zur Erstellung von Dungeon-Action Bz aus der Engine Five prozeduralen Aufrufen zur Erstellung von Dungeon-Action Bz Zuvor haben wir mit der Erstellung des Kachelpfeils begonnen. Wir haben einige Pfeile hinzugefügt, wir haben Boden hinzugefügt und wir haben etwas Text , um die Richtung der Pfeile auf der Grundlage unserer Koordinaten anzugeben . Oh. Wie wir die Koordinaten im Grunde verwenden. Nein, jetzt. Lass uns noch ein paar Dinge anfangen, damit es sich ein bisschen mehr wie ein Dungeon anfühlt Wenn wir auf Play drücken, sieht es komisch aus Boden in der Mitte des Himmels. Also lasst uns ein paar Extras hinzufügen, damit es mehr wie ein Dungeon aussieht Nein, was wir hinzufügen werden , ist statisches Chaos. Sei über eins hinaus. Vier. Wir haben also vier davon. Wir können sie zwei nennen, alle eins. Wand zwei. Und vier. Nun, da ich HID geschrieben hatte, wurden nur Optionen angezeigt, die HID enthielten. Also lies das, damit ich alles sehen kann. Und für das statische Netz für all das wähle ich alles aus. Und da dies ein gemeinsames Attribut ist, kann ich es allen hinzufügen. Ich werde erneut auswählen und diesmal die 400 mal 400. Und tatsächlich werde ich auch das Material ändern. Ich muss das tun, indem ich jeden von ihnen auswähle und den Ziegelstein Ziegellehm B verwende . Ich habe keine Ahnung , wie man das ausspricht Aber das ist es, was wir verwenden. Und ich werde es für alles auswählen. Das Material auf diesem Boden stammt aus dem originalen Starterpaket von Real Engine. Jetzt verschieben wir sie, um so etwas wie Wände zu schaffen. Aber zuerst werde ich die Skala auf zwei ändern . Vielleicht ein bisschen länger 2,3, Höhe angeht, und ich muss sie vorher entsperren. Danke. Jetzt kopiere ich diesen Wert, kopiere ihn und füge ihn in den Rest ein. Das ist eine weitere Option, die wir haben. Wir können sogar ganze Optionssätze kopieren, wie ich zum Beispiel die gesamte Eigenschaftskategorie-Transformation kopieren kann , und wenn das andere Objekt dasselbe hat, einfügen, und es hätte funktionieren sollen. Auch hier die Pfahleigenschaften in der Kategorie und die Grundeigenschaften in der Kategorie Okay. Da hast du's. Funktioniert. Ist. Jetzt haben sie alle die gleichen Eigenschaften. Nun, das Problem ist, dass, weil das mit zwei multipliziert wird , es ist 400 mal zwei, es entstehen 800 Stockwerke, nicht 600 Stockwerke, was für uns momentan kein großes Problem ist weil wir den zusätzlichen Raum brauchen Wir werden sie vielleicht an den Rändern platzieren. Vielleicht irre ich mich, vielleicht ist unsere Größe nicht 600, sondern 800. Vielleicht wurde ich falsch informiert. Von den drei D-Leuten über das Vermögen. Aber es ist in Ordnung. Wir können einfach unsere Kachelgröße auf 800 ändern. Lass uns weitermachen Wir können es dem Standardwert für die Kachelgröße aus dem Labyrinth-Generator tun, mindestens 2800, oder wir hätten es auch hier im Hauptmenü tun Im Moment müssen wir es auf jeden Fall im Hauptmenü machen , weil der alte Standardwert ihn übertrieben hätte, weil er hier nicht aktualisiert worden wäre Jetzt Datei speichern, vollständig speichern. Unsere Fliesen sind 800. Jetzt. Platzieren wir sie grob. Da. Sie müssen eine Box erstellen. Wenn wir sie grob austauschen und sie tatsächlich cool herstellen. Etwas niedriger, weil man sieht auf der gleichen Höhe wie der Boden befinden, die Materialien sich überlappen können, und wir wollen nicht, dass das passiert Als es niedriger ist. Ja, das sieht gut aus. ist nicht wirklich wichtig. Ja, es ist in Ordnung. Im Moment haben wir etwas , das wie Wände aussieht. Ich werfe es wieder aus, von einer Seite. Du hast etwas , das wie Wände aussieht. Wenn wir die Gegenstände darüber platzieren, wie Wände und so, müssen wir uns möglicherweise an das anpassen, was wir sehen Gehen wir zum Labyrinth-Generator und fügen die BB-Kachel als Kachel hinzu, fügen wir noch etwas hinzu Du wirst einen Text hinzufügen. Noch ein Text-Rendering. Das wird es hier oben platzieren und drehen, schauen Sie in die Kamera. Oh, ich konnte es nicht rückgängig machen , weil ich es gelassen habe. Und wenn du in einem beliebigen Editor spielst, benötigen Änderungen auch eine bestimmte Kombination , um gespeichert zu werden. Nun ja, eigentlich. Aber wenn du im Editor spielst, nimm grundsätzlich keine Änderungen vor. Das ist eine der Regeln. kannst du. Wie ich schon sagte, du kannst sparen. Wenn du ein Level hast , das du spielen und auswerfen und etwas bewegen möchtest , kannst du es speichern und du kannst es tatsächlich speichern Es ist der Button k. Lassen Sie mich das demonstrieren. Gehen wir zum Spiellevel. Wenn ich auf Play drücke, werde ich sofort auswerfen. Ich möchte zum Beispiel das nicht verschieben, weil es durch unseren Bauplan erzeugt wurde, sondern ich möchte zum Beispiel die Richtungsbeleuchtung verschieben die Lassen Sie uns nicht das Richtungslicht nehmen, sagen wir, es ist ein weiterer Schauspielertisch Ich möchte seinen Standort verschieben. Und vielleicht auch um ein anderes Maß drehen. Wenn ich K drücke, indem ich es auswähle, siehst du den sicheren Status von K. Wenn ich die Wiedergabe beende, behält es die Rotation und Position oder Skalierung bei , die ich eingestellt habe. Setzen wir dies auf die Standardeinstellung zurück und kehren wir zu unserem Blueprint zurück Nun zurück zu unserem Text Mir wird das gefallen, es ist tatsächlich veraltet Und was den Text angeht, werden wir ihn von woanders fühlen und Shona vergrößert Und wir werden das mit der Bildgröße von 26 machen, ich werde sie auf 30 setzen 40, 50, 50 sieht gut aus. Ich habe es hier irgendwo platziert, weil es sich ausdrücken wird. Eigentlich werde ich es hier drüben machen. Ich gehe zum Bauskript. Jetzt. Ich spreche ein bisschen über das Konstruktionsskript. Was es macht, ist Dinge zu erschaffen und Informationen zu korrigieren, und es manipuliert den Bauplan im Grunde vor seinem eigenen Lass uns vielleicht gehen. Ich hole mir diesen neuen Text , den ich nicht vom Namen bis zur Dateinummer abgeglichen habe. Ich werde ihn kontrolliert hierher bringen und ich werde den Text einstellen. Ich werde das zuerst verbinden. Für den Text werde ich ihn so ändern, tatsächlich Text klingelt, was eine Zeichenfolge zu Text ergibt. Jetzt mache ich hier einen Stift, was bedeutet, dass aus der obigen Zeichenfolge die untere Zeichenfolge wird. Für die erste Zeichenfolge werde ich Pile is Or B verwenden, ich werde tatsächlich eine variable Kachel erstellen. Als ich ein Wort hinzufügte, mochte es nicht zwei Wörter , weil wir die Textnummer haben und ein T-Ergebnis davor setzen. Jetzt kann ich das kompilieren und in Holz ändern. Hey, ich werde das auf die T-Zahlenvariable von N auf Ganzzahl ändern die T-Zahlenvariable von N auf Ganzzahl Ich werde es hierher bringen und es mit B verbinden. Nun, wo diese Ty-Nummer mit Informationen gefüllt wird , die beim Spawn erscheinen werden Wenn Sie kompilieren und beim ersten Mal nicht funktioniert haben, heißt es, der Standardwert kann nicht analysiert werden Ich werde nicht darauf eingehen. Sie können erneut kompilieren und es ist behoben. Oh. Wird auf der Instanz gefüllt, editierbar sein und beim Spawn verfügbar Wenn wir eine Kachel spawnen, zum Beispiel unsere erste Kachel im Labyrinth-Generator, unsere erste Kachel im Labyrinth-Generator, wechseln Sie zu unserer Auf einen Titel setzen. Jetzt haben wir diese Kachelnummer hier, und die erste Kachel ist Null. Schauen wir uns zum Kompilieren und Speichern an, wie es aussieht. Ich werfe aus. Die Zahl ist Null. Mir gefällt es nicht, dass wir jedes Mal auswerfen Ich werde einfach eine Kamera mitbringen. Gott. Ich werde es auf Null, Null, Null oder etwas höher setzen . Schau nach unten. Meine stellen wir hier hin und machen es schräg. Wenn ich jetzt anfange, hat sie nichts bewirkt , weil wir sie nicht so eingestellt haben , dass sie diese Kamera besitzt. Wir werden jetzt zu einem Level-Blueprint übergehen, wie bei der Kamera, zum Level-Blueprint Klicken Sie und erstellen Sie eine Referenz. Davon werde ich cooler, ich werde dich mit Blend mischen. Verbinde das neue Ziel, diese Kamera und verbinde das mit Bigin Play, Compile und Seven Play Und jetzt besitzen wir diese Kamera. Okay. Also wir haben die Fliesennummer Null, wir haben die Pfeile und wir haben tatsächlich ein paar Wände, denen diese Wand ein bisschen abweicht, es ist diese Wand. Ich habe es überlappen lassen, es eng ansetzen lassen, ein bisschen tiefer. Okay, lass uns spielen. Anzeige. Wir haben unsere Zeitnummer, wir haben unsere Anweisungen und wir haben einen Start, der jedes Mal zufällig Was wir jetzt tun müssen, ist einen Weg zu finden, damit diese Pfeile versteckt werden, wenn wir unseren Ausgang haben und wenn wir wissen, dass wir von Westen blockiert sind diese Pfeile versteckt werden Aber das werden wir für die nächste Lektion vergessen. Auf Wiedersehen, wir sehen uns bei der nächsten. 15. Blueprint-Kommunikation mit Schnittstellen: O Hallo und willkommen zum Game Design Workshop und zum echten Engine Five-Procedural Dungeon-Action-Rollenspiel-Kurs zur Erstellung eines echten Engine Five-Action-Rollenspiels Zuvor hatten wir ein paar Wände auf unserer Kachel hinzugefügt, und wir haben auch den Text mit den Kachelnummern hinzugefügt , wir dem Konstruktionsskript hinzugefügt haben Wie gesagt, das läuft bevor der Blueprint in der Welt erscheint, wohingegen, wenn ich ihn zum Beispiel zu Beginn des Spiels hätte , er sofort laufen würde Das war nach dem Spawnen. Oh, jetzt schauen wir weiter unsere Pfeile , basierend auf unseren Ausgängen, je , welche Seite blockiert ist und welche Wollen wir das auch verwenden, um herauszufinden, wann ich das nächste Teil baue, ob das vorherige, wo es Ausgang ist, wo ich bauen kann , um das zu tun, wir werden eine Funktion brauchen, aber wir werden keine Funktion benötigen Nur für den Fall, dass du später deine eigenen Kacheln, dein eigenes Labyrinth erstellen später deine eigenen Kacheln, dein eigenes Labyrinth Wir werden erstellen und vielleicht haben wir ein Labyrinth , das aus vielen Kacheln besteht Wenn sie die Funktionen haben, nicht wenn sie dieselben Funktionen haben, sondern wenn sie eine bestimmte Ergänzung zum Blueprint haben, nämlich sondern wenn sie eine bestimmte Ergänzung zum Blueprint haben die sogenannte Blueprint-Schnittstelle, können sie dieselben ausführen. Sie können von demselben Algorithmus aus verwendet werden Lassen Sie mich beißende Farbe erklären. Nehmen wir an, wir haben einen Algorithmus, der sagt: Lasst uns tatsächlich einen Algorithmus erstellen Wenn die aktuelle Kachel gleich der Mac-Kachel ist, p? Wenn es nicht gleich ist, dann auf der Kachel. Das werden wir später erstellen. Wenn ein Spawn-Plättchen und ich seine Pfeile hin- und herschalten möchte, da unsere Spawnmechanik uns einen Verweis auf das Objekt gibt, das wir spawnen, könnten wir direkt eine Funktion aufrufen, könnten wir direkt eine Funktion aufrufen die sich in diesem Sagen wir in unserem Kachel-Blueprint, Kachel. Was wäre, wenn ich P hätte, würde ich es tun. Und dieser Funktion würde es nicht gefallen. Wenn ich zum Beispiel bei der Auswahl einer Klasse ein zufälliges Feld hier platzieren würde, um aus verschiedenen Kacheln auszuwählen , zufällige Klassen. Es würde nicht gefallen, dass ich daraus schöpfe und eine bestimmte Funktion dieses Entwurfs ausführe Hier ist also, wo Blueprint-Schnittstellen herkommen. Sie haben eine Reihe von Funktionsnamen mit Eingaben und Ausgaben, was auch immer eine Funktion tun kann Sie können sogar von einigen Klassen, aus denen wir auswählen, gemeinsam genutzt werden einigen Klassen, aus denen wir auswählen, gemeinsam genutzt Wenn ich hier also eine BI-Funktion habe, eine Blueprint-Schnittstellenfunktion, kann ich unabhängig von der Klasse eine Nachricht senden, unabhängig davon, ob es sich um ein Wort handelt, unabhängig von der Klasse, sondern ich spawnt, solange die Klasse diese Blueprint-Schnittstelle enthält, quasi in ihren Eigenschaften vererbt. Ich werde Ihnen jetzt zeigen, wie Sie das hinzufügen können. Das ist also im Grunde eine der Einsatzmöglichkeiten von Blueprint-Schnittstellen Wir werden uns nicht auf das konzentrieren, was optimaler ist. Es gibt andere Möglichkeiten , Informationen zu senden. Es gibt Event-Dispatcher, es gibt direkte Verweise, es gibt eine Reihe von Möglichkeiten, dies zu tun Aber was ist optimaler oder nicht? Hängt von vielen Faktoren ab. Und normalerweise geht es nicht darum, dass die Probleme nicht von dort kommen. In der Regel handelt es sich um Kollisionsprobleme. In der Regel handelt es sich um Navigationsprobleme, das Navigationschaos, und bei KI verschiedene Arten von Problemen zu viel schwerwiegenderen Problemen in Spielen. Aber du kannst immer den Profiler verwenden und überprüfen, wo dein Spiel Probleme hat Lassen Sie uns nun diese Schnittstelle hinzufügen, aber um sie hinzuzufügen, müssen wir Gehen wir also zu unserem Blueprints-Ordner. Klicken Sie mit der rechten Maustaste, um tatsächlich einen neuen Ordner zu erstellen. Es heißt dieser Ordner, BI, Blueprint-Schnittstellen. Sie werden diesen Ordner aufrufen. Sie gehen zu Blueprints, klicken mit der rechten Maustaste und gehen zu Blueprints und wählen Blueprint-Schnittstelle und wählen Blueprint-Schnittstelle Ich werde das BI Plt Homes nennen. Und ich werde es öffnen. Wenn ich es jetzt hier öffne, gibt es uns bereits eine neue Funktion zum Hinzufügen. Die erste Funktion , die wir hinzufügen werden ist eine Funktion, um den nächsten Ausgang zu finden. Denn wo wir sind, müssen wir zunächst den nächsten Ausgang finden. Also finde Dann brauchen wir dafür zwei Eingaben. Sie werden vom Typ E sein. Oh, es ist schon für mich, weil es die letzte Variable ist, die ich erstellt habe, und wir werden diese Variable Einkommen nennen. Erektion. Und gehe zu den Ausgaben und erstelle eine weitere Variable. Ich werde wieder in Richtung E fahren, und das wird der Ausgang sein. Ba, diese Funktion wird Dinge tun , um die Richtung anhand der eingehenden Richtung zu finden . Wo ist der Ausgang? Weil wir nicht wollen, dass der Ausgang der Eingangsrichtung übereinstimmt. Denn dann werden wir Pong hin und her spielen. Und die nächste Funktion wären Ogle-Pfeile, um die Sichtbarkeit danach einzustellen , ob der Pfad blockiert ist oder Wie Sie feststellen können, kann für diejenigen, die neu sind, ich für diejenigen, die neu sind, hier keine Kodierung platzieren Das liegt daran, dass wir bei Blueprint-Schnittstellen sie dem eigentlichen Blueprint verdanken , zu dem wir sie hinzufügen. Und der Grund dafür ist , dass wir vielleicht dieselbe Funktion mit denselben Eingaben und Ausgaben wollen dieselbe Funktion mit denselben Eingaben und Eva macht ein paar verschiedene Berechnungen, einige verschiedene Operationen darin Sie können auf BV-Kacheln unterschiedlich arbeiten. Sie können auch auf der BV-Kachel unterschiedlich funktionieren, aber die Ein- und Ausgaben wären identisch. Wie dem auch sei, lass uns weitermachen. Wie fügen wir diese Schnittstelle zu unserem Blueprint hinzu? Um das zu tun, gehen wir zu den Klassenstandardwerten, tut mir leid, zu den Clus-Einstellungen, und wir gehen zur Schnittstellen-Tube und zu den implementierten Schnittstellen Wir wählen Hinzufügen und rufen BI Mase kommt auf. Jetzt wurde unter unseren Funktionen Variablen und Variablen eine neue Kategorie namens Interfaces erstellt eine neue Kategorie namens Interfaces Wenn ich das öffne, kann ich deutlich sehen, dass ich es nicht kompiliert habe. Ich kann unsere beiden Funktionen deutlich sehen. Die Funktionen, die Sie zuvor gesehen haben, waren eine Funktion, die ich der Platte ausprobiert habe, aber sie hat nicht gut funktioniert. Also ja, das sind momentan unsere beiden Funktionen. Kompilieren Sie erneut und es wird kompiliert. Kompilieren Sie immer Ihren I-Klassen-Blueprint. Dave, und schließen Sie dann, bevor Sie Dinge auf Ihrem Blueprint tun , dass Sie ihn hinzugefügt haben Nun, unser nächster Schritt, bevor wir anfangen, diese Funktionen zu reparieren , nicht zu reparieren, sondern zu erstellen, wäre, eine Variable zu erstellen der die Information darüber gesteuert wird, ob eine Richtung offen ist oder nicht Wenn eine Richtung Zugriff hat, können wir weitermachen oder sie ist blockiert. Und wie Sie sehen können, habe ich bereits damit gespielt, und das ist eine Map-Variable, die ich erstellt habe. Fangen wir also von vorne an. Nehmen wir an, das ist zum Beispiel keine Karte. Nehmen wir an, es ist eine einzelne Variable und sie wird vom Typ Directions sein. Erstellen Sie eine neue Variable vom Typ Richtungen und wählen Sie dann die Kartenvariable, den Kartencontainer, aus. Und der zweite Teil davon wäre ein Bolan. Richtung ein aus. Das haben wir hier geschaffen. Ich nenne das „ Variable Directions“. Jetzt brauche ich eine weitere Variable, die diesmal wieder eine Map wäre, und ich werde beide Seiten haben. Ich nenne das Gegenteil. Ich werde kompilieren und speichern. Und für diese beiden Variablen muss ich einige Standardwerte festlegen. Also werde ich zuerst zur Wegbeschreibung gehen. Ich werde einen hinzufügen. Ich werde sagen, das ist West. Ich werde einen weiteren hinzufügen, sagen wir, das ist Süden, noch einen hinzufügen, sagen wir, das ist Osten, und ich werde noch einen hinzufügen, der im Norden sein wird. Ich werde den In-Teil belassen , die zweite Taste wie auch. Nun, warum habe ich nicht immer die Taste „Vier hinzufügen“ gedrückt? Und dann, weil, wenn einer von ihnen Nord ist und der Standardwert Nord ist, kann ich keinen weiteren hinzufügen. Wie Sie sehen können, heißt es, dass kein neuer Schlüssel hinzugefügt werden kann, da er bereits existiert. Jetzt werde ich das auch für die entgegengesetzten Richtungen tun . Und das wäre Süden, das Gegenteil ist Norden. Das wäre Osten, also das Gegenteil ist Westen. Das wäre Westen, also das Gegenteil ist Osten. Und das wäre Norden, das Gegenteil ist Süden. Ich werde kompilieren und speichern. Lassen Sie uns zuerst die Anweisungen verwenden. Gehen wir zu unserer Tal-Pfeile-Funktion. Jetzt wurde es als Ereignis erstellt, wo ich es als Funktion haben wollte. Also werde ich das löschen. Ich werde das löschen und das System ein wenig auf den Kopf stellen, weil ich es dann nicht einfach zum Laufen bringen kann. das in der Vergangenheit zu erledigen , füge ich einfach den Parameterstapel hinzu gehe zurück zu unserem Blueprint Insgesamt acht Funktionspfeile. Füge etwas hinzu. Lass uns das machen. Lassen Sie uns das hinzufügen Das ist in Ordnung. Das, kompilieren und speichern. Geh zurück, ich werde die Ausgabe löschen und kompilieren und speichern. Und jetzt habe ich es als Funktion. Nun zu unserer Funktion Gesamtpfeile. Holen wir uns die Anfahrtsbeschreibung auf der Karte. Und wenn wir Informationen auf der Karte manipulieren, können wir nicht wirklich ein Array bekommen Wir müssen uns dem Array zuwenden, einem der beiden Schlüssel Ich gehe mal was sehen. Eigentlich sind es Schlüssel und Werte. Es sind keine zwei Schlüssel. Es ist e und die Werte von Wie dem auch sei, ich hole mir die Schlüssel und gehe zu jeder Schlüsselschleife. Wir haben vorher ein paar Dinge darüber erklärt, welche Loops es sind, jetzt wird es ein Kinderspiel. Ich werde mich wieder orientieren und einen Wert finden. Es ist möglich, einen Wert anhand eines Schlüssels zu finden. Ich werde das hier verbinden, das Array-Element aus der Vorderschleife, und ich suche den Schlüssel aus den Anweisungen heraus. Und ich werde tatsächlich alle meine Pfeile holen. Eins zu oder was wir brauchen, ist ein auf den Anweisungen basierendes Mietobjekt. Also werde ich den Nordpfeil mit dem Nordpfeil verbinden. Ich werde den Südpfeil mit dem Südpfeil verbinden, um Ost-Ost, West mit West zu verbinden. Aus diesem Array, das es basierend auf dem ausgewählten Strahl auswählt, wählt es basierend auf den Richtungen aus. Ich werde für mehr Sichtbarkeit sorgen, und ich werde es auch an Kinder weitergeben Und die Sichtbarkeit, die festgelegt wird, wird auf der Grundlage des Ergebnisses der Suche definiert Jetzt hat es zwei Optionspins. Eine davon ist, ob der Artikel gefunden wurde , weil sie manchmal nach etwas gefragt haben, das nicht in der oben angegebenen Anleitung steht . Und der andere ist der Wert der Daten. Ich werde das mit Sichtbarkeit verbinden, und ich werde das hier verbinden. Ich stelle das hier her und es ist unvollendet. Ich werde fertig stellen. Geben Sie zurück, dass wir die Funktion abgeschlossen haben. Jetzt werde ich kompilieren und speichern. Und lassen Sie uns das zum Beispiel testen. Lassen Sie uns die Tg-Pfeile genau hier platzieren. Das Kompilieren sagt Wenn ich Play drücke, sollte kein Pfeil angezeigt werden , da wir sie unsichtbar haben Wir haben sie, dass alles blockiert ist. Aber wenn ich drücke, sagen wir, North and South ist geöffnet, wird es funktionieren. Ja, es funktioniert. Oh, ich denke, das reicht für diesen. Ich werde dich im nächsten sehen. Auf Wiedersehen. 16. Finden von verfügbaren Exits: Hallo und willkommen zurück zum Game Design Workshop, fünf prozedurale Dungeon-Action A Plus zum Erstellen von fünf prozeduralen Dungeon-Aktionen anbieten der vorherigen Lektion haben wir ein wenig über Blueprint-Schnittstellen gesprochen und auch einige Variablen erstellt , und auch einige Variablen erstellt die Richtungsvariable, die alle Informationen für West, Südost und Nord sowie die Sichtbarkeit der Pfeile in boolescher Form enthält Südost und Nord sowie die Sichtbarkeit der Pfeile in boolescher Sichtbarkeit der Pfeile in boolescher Und wir haben auch die Karte mit entgegengesetzter Richtung erstellt, wir die Richtungen und das Gegenteil davon haben Wir haben auch die Funktion „ Gesamtpfeile“ erstellt , bei der wir die Richtungen nehmen und jede einzelne von ihnen durchsuchen und den entsprechenden Pfeil finden den entsprechenden Pfeil , um die Sichtbarkeit ein- oder auszuschalten. Fahren wir nun mit der Suche nach dem Ausgang fort. Hier ist ein bisschen Dampf aufgegangen. Macht nichts Fahren wir also damit fort, unseren Ausgang zu finden. Zunächst müssen wir die Einkommensrichtung auf eine Variable umstellen, falls wir sie später benötigen. Wir können es in dieser Funktion tatsächlich frei verwenden, nur weil wir dieses Einkommen hier haben. Lass mich dir jetzt eine coole und echte Funktionalität zeigen. Wenn ich das umbenenne, um das klarer zu machen, Einkommensziele, setzen wir hier ein S. Während ich mich in der Funktion befinde, kann ich jede Eingabe aufrufen, die zu dieser Funktion kommt, indem ich einfach das E (Einkommensrichtung) eintippe. Das ist in einer anderen Kategorie eindeutig anders. Es ist eigentlich in keiner Kategorie. Es bedeutet, dass es in dieser Funktion ist. Ich kann es als Variable aufrufen, solange ich in dieser Funktion bin. Wenn ich außerhalb dieser Funktion in das Diagramm gehe und diese Variable einfüge, wirst du sehen, dass sie nicht existiert. Wenn eine Variable nicht existiert, können wir mit der rechten Maustaste klicken und eine Variable erstellen, um sie Die Daten und der Datentyp und diese Dinge werden beibehalten. Lassen Sie uns das jetzt löschen. Wir werden es nicht brauchen. Kehren wir zu unserer Funktion zurück. Oh, verbinde das hier. Wir haben Einkommensbeschreibungen. Unser erster Schritt sollte sein, dass unsere Anfahrtsskizze aktualisiert wird, sodass es sich bei dieser Richtung tatsächlich um eine bewegliche Richtung handelt. Es ist frei, sich von der Seite zu bewegen. Es blockiert nicht. Also sollten wir die Pfeile einschalten. Aber was wir tun werden, ist die entgegengesetzte Richtung einzuschlagen. Wir werden den Wert der Einkommensrichtung ermitteln , den ich einfach von hier ziehen kann, egal, und dann füge ich ihn der Karte hinzu. Und warum ich hinzufügen werde, wie wir erklärt haben, weil wir einen Wert hinzufügen, der bereits existiert, es ändert nur den Wert. Es wird kein neuer hinzugefügt. Also werde ich das hier verbinden und den Wert auf true setzen und die Exstitution verbinden Der nächste Schritt, den wir tun sollten, ist herauszufinden , welche dieser Richtungen frei ist, um einen Ausgang zu erstellen Was wir tun werden, ist tatsächlich die Anweisungen zu duplizieren. All dieser geht raus. Ich werde kompilieren, und da dies ein Duplikat ist, hat es bereits unsere Werte Jetzt werde ich die Einkommensrichtung entfernen, was eigentlich der Name für Einkommensrichtung sein sollte. So viele sind nur eins. Hier lebe ich es aus. Nun, da wir einen Wert von hier, der Einkommensrichtung, entfernt haben , sollten die restlichen Werte frei sein, unser Ich weiter aufzubauen, also zum Beispiel den Ausgang zu finden, den wir wollen. Also werde ich die Schlüssel holen. Also, das wären nur die möglichen Antworten, und ich werde einen zufälligen Gegenstand bekommen. Ich werde das zu einer Variablen heraufstufen und ich werde es Possible Exit nennen. Dieses Jahr dieses Jahr. Jetzt haben wir einen möglichen Ausgang. Da wir uns entschieden und es nach einer Variablen sortiert haben, sollten wir es wieder aus den möglichen Exits entfernen Ich werde das hier verbinden. Ich werde das hier verbinden und es wird entfernt. Jetzt bleiben also zwei mögliche Ausgänge übrig . Das nächste, was wir tun sollten, ist die Anweisungen wie und mit Hinzufügen meine ich, den Wert unseres möglichen Ausgangs zu aktualisieren Und das wird sich als wahr herausstellen. Also jetzt kompilieren und speichern, der nächste Schritt wäre, die Pfeile zu kontrollieren Da wir die Richtungswerte aktualisiert haben, die Funktion, die wir erstellt haben, um Pfeile zusammenzufassen, werden wir auch unsere Pfeile aktualisieren Am Ende bringen wir den Ausgangsknoten, der hier angeschlossen ist, zusammen und verbinden den möglichen Ausgang mit dem Ausgangsausgang Wir könnten diesen Ausgang tatsächlich nennen, keinen möglichen Ausgang. Kompilieren und speichern. Lassen Sie uns nun malen und erklären, was dieser Code tatsächlich bewirken wird. Was ist die Theorie dahinter? Im Moment haben wir eine Kiste, unsere Kachelbox, und wir beschließen, einen Ausgang zu haben, sagen wir zufällig von dieser Seite, und weil dies die erste Box ist, wäre dies unser Intro Intro-Block. Jetzt finden wir einen zufälligen Ausgang auf der ersten Kachel des Telefons. Das zweite Stück , das wir bauen werden. Lass es uns tatsächlich auf Gelb setzen. Das zweite Teil , das wir bauen werden, wird automatisch gebaut. Wir werden die Funktion natürlich ausführen, um das zu tun. Ich hoffe, dass dieser Ort ihr Eingang ist und dass sie nach dem Zufallsprinzip entscheiden wird , ob eine Seite weitermachen will. Nehmen wir zum Beispiel an, dass es weiter steigt. Im nächsten Teil werden wir auch wissen, dass es hier einen weiteren Ausgang gibt, und sagen wir, es geht so weiter. Jetzt siehst du, wohin ich damit will. Es wird tatsächlich damit enden, hierher zu gehen, und es wird nicht weitergehen können. Die Art und Weise, wie wir es bauen, ist wie eine Schlange wie ein Wurm. Es schafft einen weiteren Ausgang. Was wir tun werden, ist, einen Algorithmus wie einen Buck-Track-Algorithmus für diejenigen zu entwickeln einen Algorithmus wie einen Buck-Track-Algorithmus , die etwas weiter fortgeschritten sind Was ist ein Buck-Track-Algorithmus? Kurz gesagt, es platziert etwas, es platziert etwas, es platziert etwas, bis die Regeln besagen, dass man etwas nicht platzieren kann Auf dieser Grundlage gibt es keine Platzierungen mehr. Also geht es zurück und prüft , ob es einen anderen Weg kaufen kann. Nun, das ist eine sehr grobe Erklärung. Das werden wir tun. Aber genau für uns wollen wir einen Schritt zurückgehen. Als ob ein traditionellerer Backtrack-Algorithmus einfach von hier aus funktionieren würde Es hat eine Stelle gefunden, an der es nicht weitermachen kann, also geh zurück. Kannst du einen anderen Ort finden, an dem du weitermachen kannst? Wir werden tatsächlich einen zufälligen Block auswählen , damit er nach dem Zufallsprinzip Dungeons erstellt, die den Dungeon an verschiedenen Stellen verzweigen die den Dungeon an verschiedenen Stellen verzweigen Weg, wir kommen zu weit voran. Ich denke, das ist ein guter Zwischenstopp für diesen. In der nächsten Lektion können wir damit beginnen, dies aufzubauen und noch ein paar Dinge zu erklären. Tschüss. Wir sehen uns beim nächsten. 17. Algorithmus für die Basis-Labyrinthform: Hallo und willkommen zum Game-Design-Workshop im Rahmen prozeduralen Dungeon-Action-RPGs mit Engine Five Dungeon-Action-RPGs Zuvor hatten wir die Funktion find exit erstellt, die unserer Variablen die Richtung des Einkommens berechnet, einige Berechnungen durchführt und Richtungen zu unserer Richtungsvariablen addiert und entfernt Sie aktualisiert die Statistiken, welche Pfeile also sichtbar sind, und aus unseren möglichen Richtungen und aus unseren möglichen Richtungen entfernen wir die Richtung , aus der wir kommen. Und dann speichern wir eine zufällige Richtung von den übrig gebliebenen, und wir entfernen auch diese und ändern auch die Pfeile, Richtungen und Variablen, um die Pfeile sichtbar zu machen. Und dann summieren wir die Pfeile mit der Funktion, die wir zuvor erstellt haben. Jetzt haben wir auch ein wenig über unseren Algorithmus erklärt , der ein Backtrack-Algorithmus sein wird Für diejenigen, die eine genauere Erklärung über den Thera-Algorithmus und was er ist, benötigen über den Thera-Algorithmus und was er ist, Im Grunde ist es eine Technik, um Probleme schrittweise zu lösen, indem Teillösungen ausprobiert und dann aufgegeben werden, wenn sie nicht geeignet sind unserem Beispiel wird es versuchen, ein anderes Plättchen zu erstellen, um es zu platzieren Wenn es nicht in der Lage ist, ein anderes Plättchen zu platzieren, kehrt es zu einer vorherigen Position zurück, wie gesagt, zu einer zufälligen vorherigen Position und versucht, von dort aus weitere Kacheln zu erstellen Lassen Sie uns nun mit der Erstellung eines Algorithmus beginnen. Wir werden auf dem Labyrinth-Generator zu Even Graph wechseln , nicht auf der Kachel Wir, mit dem BPM-Generator, gehen zu VNGraf. Wir werden ein benutzerdefiniertes Event erstellen. Nennen wir dieses benutzerdefinierte Ereignisfeld. Nun, die erste Frage, die wir stellen sollten, ist mit einem Zweig, sind wir fertig, sind unsere aktuellen Kacheln mit unseren Mac-Kacheln identisch? Ich werde das hierher bringen und ich werde das verbinden. Die erste Frage ist erledigt. Wenn das stimmt, sind wir fertig mit dem Bau des ersten Teils unseres. Wenn nicht, was der interessanteste Teil ist, sollten wir mit dem Bau beginnen. Unsere nächste Aktion besteht nun darin, die aktuellen Kacheln um eins zu erhöhen. Ich werde das hier einfügen, ich werde eine plus eins machen und ich werde die aktuellen Kacheln setzen. Wenn wir es um eins erhöhen, könnten wir auch Plus plus hinzufügen, was eine Erhöhung von bedeutet, die sich um eins erhöht Aber das ist auch in Ordnung. Für den nächsten Teil kommt der schwierigere Teil, denn hier geht es im Grunde um mehrere Fragen. Und dafür brauchen wir eine Funktion. Was diese Funktion bewirken wird. Der erste Schritt unserer Frage wird darin bestehen, nicht das angrenzende Kreuz zu finden, sondern das angrenzende Kreuz , das leer ist. Lassen Sie uns eine weitere Funktion erstellen, und wir nennen sie leere Basis. Die Schreibweise vielleicht richtig. Wer weiß? Nein. Was wir tun werden, ist unsere aktuellen Koordinaten zu ermitteln, und wir werden auch die Funktion abrufen, mit der wir das Fundkreuz nebenan erstellt haben . Und aus dieser Liste, die wir erklärt haben, bekommen wir alles, was an unsere Koordinaten angrenzt. Wir gehen für eine Schleife, für jede Schleife. R und wir werden ein paar Tests machen. Der erste Test, den wir machen sollten, ist , gehören diese Koordinaten schon zum Dungeon Wenn es schon dazugehört, bedeutet das, dass es einen Titel hat, also sollten wir nicht dort sein Ich hole unsere Dungeon-Karte und ich hole unsere Schlüssel und ich werde fragen, ob die Schlüssel einen Gegenstand enthalten Und das Objekt wäre das Array-Element der benachbarten Nachbarn Oh, das ist unsere erste Frage. Lass uns einen Ast anlegen. Lass uns das hier verbinden. Nun, wenn das wahr ist, sollten wir weitermachen. Und die nächste Frage wäre, gehört es zu den Koordinaten des erzwungenen Eindringens? Wie zum Beispiel der Intro-Block oder für die nächsten Level der Aufzugsblock aus dem vorherigen Ich Oh, mal sehen, ob diese Koordinaten auch in einer Kopie enthalten sind und fügen sie in die leere Force-Liste Nun, wenn wir einen Zweig haben und zwei Dinge haben, von denen wir wollen, dass sie wahr sind, damit sie von der Wahrheit abweichen. Wir haben die Variable. Eigentlich nicht beide. Um diesen Satz zu ändern wir, wenn wir einen Zweig haben und überprüfen möchten ob eine der Bedingungen zutrifft, können wir, wenn wir einen Zweig haben und überprüfen möchten, ob eine der Bedingungen zutrifft, diese oder Knoten verwenden. Oder Boulan, was bedeutet, ob das wahr ist oder ob das wahr ist Das heißt, wenn eine unserer Bedingungen zutrifft, wird der Branch von „wahr“ ausgelöst Was wir wollen, ist, dass keine der Bedingungen wahr ist, also wird bei Falsch ausgelöst. Jetzt brauchen wir eine weitere Bedingung, und die Bedingung wäre , wie groß kann ich das Labyrinth bauen Also, was bedeutet das Maximum für X und Y, ich kann in das Layout gehen Dafür benötigen wir eine neue Variable. Wir werden eine neue Variable aus Variablen plus erstellen. Wir werden eine Variable auswählen und ihren Namen auf M s setzen und ihren Typ in eine Ganzzahl ändern. Das ist natürlich eine Ganzzahl, weil es keine halben Blöcke gibt. Es gibt nur einen, zwei, drei, vier, wie viele Blöcke wir wollen. Und wenn wir nur eine Variable haben, können wir nur keine quadratischen Labyrinthe erstellen , weil sie zufällig generiert werden Aber wenn die maximale Anzahl der Gänge ungefähr der Größe des Labyrinths entspricht, was sie fühlen können, dann wird es Squash sein Wenn wir zwischen X und Y unterscheiden und Parallelogramme erstellen wollten , dann bräuchten wir die maximale Größe x die maximale Größe Y. Jetzt brauchen wir für uns nur die Mac-Größe Bringen wir es her. Wir wollen lieber Größer oder Möller vergleichen Ich habe das Gegenteil gesagt. Wenn es größer ist, ist es dieses, wenn es kleiner ist, ist es dieses. Das x und das y, also müssen wir das duplizieren. Hier verbunden. Oh, wenn wir unsere aktuellen Koordinaten haben, was im Moment nicht unsere aktuellen Koordinaten sind, ist es dieses eigentliche Array-Element, das ich hier unterbrechen werde, weil es ein In-Punkt ist und ich X und Y trennen. Oh, wenn mein X größer ist oder mein Y größer als die May-Größe ist, dann sind wir außerhalb der Grenzen Gleichzeitig wollen wir aber auch die negativen Werte verwenden, sodass sich unser Labyrinth auch hinter dem Stern verzweigt Wenn wir hier beginnen und uns einfach auf der positiven X- und Y-Achse fühlen, ist das unser Bauraum Aber wenn wir hier und da auch mit dem Negativen beginnen, dann unsere Größe und das Dreifache Wir werden das mit minus eins multiplizieren , sodass wir es negieren können, und wir werden diese beiden miteinander verbinden Das ist ein Chaos. Bringen wir das Positive, das Größere oben und das Negative nach unten und verbinden das hier. Was wir tun können, ist einige vorgelesene Notizen zu erstellen , indem wir auf die Kabel selbst klicken. Das verbindet sich hier, also werde ich das hier verbinden. Ich werde das zurückbringen und das hier verbinden. Und lass uns hier noch einen machen, wir hier. Und weißt du was? Wir werden das hier einfach duplizieren, das ist variabel, vielleicht hier verbunden. Bereit, sie können meinen Fehler sehen. Okay, denn wenn es so spaghettiert ist, ist es schwer, einen Sinn daraus zu machen X geht hierher und Y geht hierher. Und das wird nicht benötigt. Okay. Jetzt ist es ein bisschen besser. Jetzt werde ich wieder die oder eine oder eine logische Gangart benutzen eine oder eine logische Gangart benutzen Ich werde hier eine Verbindung herstellen, denn wenn irgendwas davon t ist, dann wird es wahr zurückgegeben Wenn alle falsch sind, wird Falsch zurückgegeben, wir befinden uns also im Labyrinth Und ein netter kleiner Trick und echter Clou ist auch, dass ich sie nehmen kann Ich kann mit der rechten Maustaste klicken, und ich kann sie zusammenklappen, funktionieren. Ich mache es einfach und nenne es. Technik ohne Vokale. Nein, ich habe die Ausgabe nicht erstellt , weil wir sie nicht angeschlossen hatten Setzen wir es in eine Variable. Nennen wir das außerhalb der Grenzen. Eingabe von Bounce. Gehen wir rein und verbinden uns hier. Kompilieren und speichern. Gehen wir zurück zu Get Empty nebenan und erstellen einen weiteren Pin in diesem oder und verbinden ihn hier. Ich habe das ein bisschen hinter mir gelassen. Ja, wir können mehr Pins konkretisieren indem wir auf den Anzeigen-Pin klicken, wie ich es hier getan habe. Ich hätte es examen sollen. Wie dem auch sei, lass uns weitermachen. Die Logik ist der wichtige Teil. Lassen Sie uns nun sagen , dass alles falsch ist und alles nach unserem Plan läuft, dass es richtig ist. Und eines davon nebenan ist völlig leer. Es gehört nicht schon zum Labyrinth. Es ist nicht zwangsweise leer und es liegt nicht außerhalb der Grenzen Lassen Sie mich außerhalb der Grenzen ganz schnell überprüfen , ob nichts falsch ist Wenn die Ma-Größe größer als das X ist , ist das Gegenteil der Fall Wenn das X größer als das Labyrinth ist und wenn das X kleiner ist, und das Das heißt, wenn zum Beispiel x minus zehn und die Größe minus fünf ist, es s, und es ist, es ist außerhalb der Grenzen. Das ist richtig. Also, wenn diese korrekt sind, haben wir die Koordinaten, aber wir wissen nicht, was es ist, Nordosten, Südwesten, wo sind diese Koordinaten? Wir benötigen diese Information auch. Wir werden also eine temporäre Variable erstellen , wenn wir hier in der Variablenliste nach unten gehen . Wir können jetzt eine neue Option sehen, lokale Variablen, bei der es sich, wie Sie sehen können, um leere benachbarte Variablen handelt, die nur zu dieser Funktion gehören. Das heißt, wenn diese Funktion ausgeführt wird, erhalten sie ihre Standardwerte. Es speichert keine Informationen über sie. Oh, da es sich um eine reine Funktion handelt, können wir sie tatsächlich verwenden. Was wir tun werden, ist, wir werden es nennen, wir werden es zuerst zu einer Karte machen. Und der erste Schlüssel, der Schlüssel, werden die Anweisungen sein, Rameration Die Variable, die zweite Variable wäre der Koordinatenpunkt Oh, ich muss es herbringen. Lass es uns auch benennen. Ein Kation. Nun, lass es uns benennen. A Es sind keine Standorte verfügbar. Es ist das gültige Nebengebäude. Okay. Aber wir haben ein gültiges angrenzendes. Und hier werden wir diesen gültigen Nachbarwert hinzufügen . Dieser Wert, der aus dem Array stammt. Wir werden es hier verbinden. Woher wissen wir nun, ob es Nordosten, Süden oder Westen ist? Was wir tun werden, ist, hier einen ausgewählten Knoten zu verwenden. Und für die Optionen werden wir den Array-Index verbinden. Eigentlich hat das nicht wirklich gut funktioniert. Manchmal gibt es dir nicht die Optionen, Zake. Lass uns eine Auswahl treffen. So wie mit einem Platzhalter, und wenn ich ihn verbinde, gibt es mir immer noch keine Optionen. Also, wir werden es ein bisschen auf die leichte Schulter nehmen und von hier aus die letzte Ausfahrt nehmen und von hier aus eine Auswahl treffen. Ich werde das auch hier verbinden und dann hier eine Verbindung herstellen und das entfernen. Das hat nicht funktioniert. Lass es uns nochmal versuchen. Lass uns den Ausgang nehmen und aus dem Index-Array wähle ich Wir werden das hier verbinden. Y. Hier haben wir die Werte werde das hier zuerst verbinden und dann werde ich das trennen So bringen wir diesen Selektor rein. Unglaublich. Wir bringen aus dem Array. Wir wählen aus, wir bringen eine Variable aus unseren E-Richtungen mit. Wir haben es mit der Auswahl verbunden, sodass es die Optionen anzeigt anstatt sie als Variablen zu haben. Es hätte vielleicht einen einfacheren Weg gegeben, dies zu tun. Wie dem auch sei, da wir jetzt wissen entspricht unser Index diesem Index des Strahls, denn das ist der , für den wir Looping verwenden Wir wissen, dass der erste Index Null für Norden ist. Der erste ist Nummer eins für Süden, Nummer zwei für Osten und Nummer drei für Westen. Also können wir es hier entsprechend machen: Nord-Nüd, Ost-West Jetzt brauchen wir als Nächstes eine Ausgabe in dieser Funktion Ich wähle das aus und aus dem fertigen der vier Loop Denn wenn wir es hier hinzufügen würden, jedes Mal, wenn der Schleifenkörper abgefeuert wird würde jedes Mal, wenn der Schleifenkörper abgefeuert wird, komplett sein. Im ersten Fall würde es sogar komplett passen. Ich werde das hier verbinden und ich werde die Ausgabe in eine Kartenvariable ändern, eigentlich eine Richtungsvariable , die daraus eine Karte macht. Und der zweite wäre wieder ein gutes Beispiel. So können wir unseren gültigen Nachbarn verbinden. Nennen wir auch gültige Werte. Warum füge ich die Werte in diesem Namen hinzu und nicht hier in diesem Namen, denn wenn Sie dieselben Namen haben, kann das die Engine verwirren und normalerweise lässt es Sie nicht, aber falls es Sie zulässt, kann es die Engine beim Verpacken des Spiels bei vielen anderen Dingen verwirren Verpacken des Spiels bei vielen anderen Also ja, es ist besser, unterschiedliche Namen für die lokalen Variablen zu haben , für die Variablen , die in deinem Blueprint nicht lokal sind, und auch für die Rückmeldungen und alles andere . Erstellung von Namen für Variablen ist besser , wenn viele Erklärungen wie gültige benachbarte Werte Vielleicht hätte das gültiges Labyrinth aus benachbarten Werten Je mehr Erklärungen zu den Variablennamen, desto besser. Oh. Im Moment sind wir mit dieser Funktion fertig, zeigen auf ein leeres Feld nebenan und wir geben diese Liste zurück. Wir haben auch diese Checkout-of-Bones-Funktion erstellt, und ich denke, das ist ein guter Ausgangspunkt. Wir sehen uns beim nächsten. Auf Wiedersehen. 18. 3D-Lektion 17 Kontinuierliches Kachel-Spawnen: Hallo und willkommen zurück zum Game Design-Workshop und zum prozeduralen Kurs zur Erstellung von Dungeon-Action-Bs mit echter Engine Five Erstellung von Dungeon-Action-Bs In der letzten Lektion haben wir damit aufgehört, unseren Get Leer-Anbau zu erstellen. Wir haben tatsächlich mit unseren Nachbarn gesprochen. Wir haben das Nachbarschaftsnetzwerk gegründet und wir vier haben uns alle angeschaut. Wir haben überprüft, ob sie zur Dungeon-Map gehören, ob sie zur Forced Leere gehören oder ob sie sich außerhalb der Grenzen befinden, indem wir diese It-Funktion hier erstellt haben. Wenn sie also zu keiner dieser Funktionen gehörte, haben wir sie zu einer Variablen namens valid adjacent hinzugefügt, die eine lokale Variable in dieser Funktion ist, und wir haben diesen Wert zusammen mit unseren Rückmeldungen angegeben, wenn die for-Schleife abgeschlossen ist Lass uns mit unserem Labyrinth weitermachen. Algorithmus erstellen. Gehen wir nun zu Even Graph und bringen wir diese nette kleine Funktion, die wir gemacht haben , mit der wir nebenan leer werden. Aber wir haben es nicht rein gemacht. Ich werde auf Compue klicken und jetzt ist es nur noch eins. Jetzt haben wir diese Liste. Was wir mit dieser Liste machen wollen, ist prüfen, ob der letzte Ausgang zu etwas davon gehört. Also, was ich tun werde, ist, den letzten Ausgang zu finden. Wenn ich den letzten Ausgang nicht finden kann, müssen wir einen Rückweg machen, dann gibt es keine Möglichkeit, weiterzumachen, weil all die leeren Nebengebäude nicht dem Ausgang entsprechen, den wir wollen Der Block möchte von dort ausgehen, aber der nächste Block ist eigentlich nicht gültig Nein, wir werden jetzt nicht den Backtrack machen. Was wir weitermachen werden, wenn wir den letzten Ausgang finden. Ich werde hier eine Filiale einrichten, wir werden das hier verbinden. Und seit wir unsere letzte Ausfahrt gegründet haben und sie existiert. Das bedeutet, dass ich einen neuen Block bauen kann. Das bedeutet, dass ich endlich eine neue Koordinate haben kann. Ich werde die aktuellen Kabel mitbringen und ich werde sie anschließen, um das hier zu verbinden Jetzt, wo wir unsere neuen Koordinaten haben, müssen wir den Ort finden, an dem wir die neue Kachel spawnen werden Oh, bringen wir unsere eigene Schauspielerklasse mit. Und wir werden wieder die Klassenkachel auswählen, P-Kachel, und wir werden die Transformation teilen. nun den Standort zu finden, den wir brauchten, haben wir dafür eine Funktion erstellt, die als No Fini Location bezeichnet wird Ich werde das hier verbinden. Ich werde das hier verbinden und wir können endlich einen neuen Block haben. Nun, das reagiert auf den neuen Block. Unsere Kachelnummer sollte nicht Null sein. Unsere Titelnummer sollte unsere Kacheln sein. Denn im Moment haben wir Eins addiert und Null plus Eins ergibt Eins, also ist dies unser erstes Plättchen mit der Zählbasis Null Das nächste, was wir tun sollten, ist, das Ganze zu dem Mist hinzuzufügen. Ich bringe die Dangon-Karte und füge hier den Ort hinzu Und ich werde die aktuellen Koordinaten hierher bringen und den Rückgabewert vom Spawn-Akteur zum Darsteller des Dungeons Außerdem müssen wir von hier aus den Suchausgang aufrufen. Ja, ich suche einen Ausgang. Wir wollen die erste Nachricht haben, weil ich den Ausgang ausgewählt hätte Wir können das auswählen. Wie Sie sehen können, hat es ein anderes Ziel. Es hätte wahrscheinlich nicht funktioniert weil diese Farbe hier bedeutet , dass Sie es auf dieser Blaupause aufrufen, auch wenn ich das Ziel angeschlossen habe Aber wie dem auch sei, es sollte die Blaupause sein. Die Nachricht, wenn es diesen Ordner hier drüben hat, bedeutet das, dass es eine Nachricht sendet Jetzt werde ich das löschen und ich werde das hier verbinden. Und für die eingehende Richtung wählen wir einfach die letzte. Ausgang. Y. Und unser Ausgabewert würde unseren letzten Ausgang festlegen Wir müssen auch diesen Schauspieler hinzufügen, der zerstört werden soll, also werde ich die Schauspieler zu Destroyer bringen Ich werde das Array ergänzen und das hier verbinden Wir werden alles ein bisschen verschieben. Hier, und vielleicht machen wir die Kabel etwas weniger stark. Sieh schon besser aus. Jetzt, wo all diese Funktionen passiert sind, sollten wir alles wieder aufbauen. Wenn ich hier klicke, können Sie sehen, das führt mich zum Start, und das wird so lange weitergehen, bis diese Bedingung erfüllt ist oder diese oder jetzt ein Problem findet. Lassen Sie uns demonstrieren , was wir geschaffen haben. Ich gehe zur Variablen Meine Größe und wähle eine Zahl aus. Sagen wir fünf. Lassen Sie uns diese Instanz tatsächlich editierbar machen und auf Spone verfügbar machen, damit wir sie bald vom Hauptmenü aus einrichten können Aber lassen Sie uns das auch aktualisieren. Lassen Sie uns zuerst kompilieren. Lass uns das auch aktualisieren. Und wir haben hier die Größe eines Labyrinths. Maximal 20 Kacheln, natürlich müssen wir das Build-Event auch nach unserem Spawn-First-Stil-Event ausrufen nach unserem Spawn-First-Stil-Event Also werden wir hier unseren Build und Compile aufrufen. Lass uns gehen. Wir starten vor dem Start und es hat gebuggt. Warum hat es einen Bug gemacht? Jetzt hat es geklappt. Hier hier hier. Warum ist das eine Sackgasse? Haben Sie wieder Ops hier, das ist eine Sackgasse. Ich komme von hier, ich entferne das. Hier. Irgendwas stimmt nicht mit den Pfeilen. Gehen wir also zu Lass uns zur BP-Kachel gehen und lass uns zu unseren Schnittstellenfunktionen gehen. Ich finde wahrscheinlich einen Ausgang. Schauen wir uns an, was wir in der nächsten Richtung tun. Wir stellen das Gegenteil fest. Wir fügen hinzu, dass wir vom Gegenteil kommen. Wir entfernen es aus dem Ausgang der Listenschlüssel. Wir fügen den Ausgang hinzu und schalten die Pfeiltasten Einkommensrichtung ist vorbei. Ja. Das ist das Problem hier. Siehst du, wir entfernen die Einkommensrichtung. Wir entfernen eine Möglichkeit, wie wir aussteigen können. Was wir entfernen sollten, ist zunächst das Gegenteil der Einkommensrichtung. Wenn wir also das Spiel jetzt kompilieren, haben wir zwei Pfeile und es endet mit einem Pfeil Okay, großartig, und das bleibt leer. Ebenfalls. Wir haben etwas, das angefangen hat, ein Labyrinth zu schaffen, ein Wurmlabyrinth, wir fangen hier an Lass uns noch ein paar Mal sehen, ob es einen Rückzieher macht. Und lass uns wissen, wie viele Teile es sind. 11. Wie wir dieses Maximum sagen. Oh, ich habe das Ende erreicht. Das ist der Grund. Das Ende. Das erraten. Sagen wir fünf. Das ist also Null, Eins, Zwei, Drei oder Fünf. Das ist das Ende. Deshalb hört es hier auf. In Ordnung. Nein, ich denke, das ist ein guter Haltepunkt. In der nächsten Lektion werden wir die Bata-Logik anwenden. Auf Wiedersehen. Wir sehen uns beim nächsten. 19. Benutzerdefiniertes Backtrack-System: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur echten Engine Five Procedural Dungeon Action ARPs Zuvor haben wir den Start unseres Algorithmus erstellt , unseren entwickelten Algorithmus Wir haben tatsächlich viel geschaffen. Wir haben die erste Frage gestellt, die besagt, dass unser Algorithmus die MC-Kacheln erreicht hat. Dann haben wir ein zusätzliches Kachel hinzugefügt, ein zusätzliches zum Zähler der Kacheln. Wir stellen einige Fragen, zum Beispiel, ob unser leeres Nachbarland um uns herum gültig ist, und wir haben die Position unserer neuen Koordinaten gefunden, ob sie gültig sind, und wir spawnen das Kachel Wir haben die Liste der Zerstörungen erweitert, wir fügen die Liste des Dungeons hinzu, wir haben einen neuen Ausgang gefunden und wir bauen weiter Lassen Sie uns nun mit unserer Bactra-Schleife fortfahren. Oh. Jetzt müssen wir wieder ein paar Fragen stellen. Lassen Sie uns also Paint öffnen und diesen Teil unseres Algorithmus Lavid genauer erklären unseres Algorithmus Lavid genauer Nehmen wir nun an, wir haben unseren Dungeon, der gerade erstellt wird Lass mich das kopieren und einfügen. Irgendwann kann es nicht mehr schaffen. Es hat versucht, weiterzumachen, und es gibt keinen Spielraum mehr, um mit den Regeln , die wir bisher haben, fortzufahren. Was machen wir also? Wir werden eine sehr einfache Frage stellen. Wir werden den zufälligen Block „Wähle 11“ von den Blöcken, die wir erstellt haben, unterscheiden und versuchen herauszufinden, ob es einen gültigen Ausgang gibt. Aber wir werden auch noch eine weitere Frage stellen Wenn wir einen Block besucht haben und von diesem Block aus weiterbauen, bla bla bla a Roa, dann wird er kontinuierlich gebaut und er findet am Ende wieder Wir wollen nie wieder zu diesem Block zurückkehren. Also werden wir eine weitere Liste erstellen , in der wir die Blöcke platzieren , die wir besucht haben. Also werden wir eine weitere Liste aus den Blöcken erstellen , die wir besuchen, damit wir sie nie wieder besuchen. Der Grund dafür ist, dass aus meiner Sicht ein besserer Dungeon entsteht, ein verzweigteres Dungeon, als es ohne ihn der Fall wäre Wie dem auch sei, das ist unsere Regel. Lass uns es umsetzen. Um das zu tun, brauchen wir jetzt eine neue Funktion. Lassen Sie uns nun eine weitere Funktion erstellen und diese aufrufen. Versuch, dem Truck zu trotzen. Als Erstes müssen wir unsere Dungeon-Karte duplizieren Ich nenne das Duplikat Z. Ich denke, das ist in Ordnung. Ich werde das herbringen und ich werde auch unsere Dungeon-Karte mitbringen Jetzt wähle ich auf der Karte des Dungeons die Schlüssel aus Und ich werde tatsächlich die Länge ermitteln. Ich kann ein zufälliges Element direkt aus dem Array abrufen, und ich werde eine lokale Variable heraufstufen, die Ganzzahl, den Out-Index, nicht den Endpunkt. Und ich werde diesem zufälligen Ort einen Namen geben. Ich werde das hier verbinden. Lassen Sie uns überprüfen, ob dieser zufällige Ort innerhalb unseres Besuchten liegt. Ich habe ihn tatsächlich hier. Standorte. Ich werde das Essen überprüfen. Ich werde den Schlüssel brauchen , um herauszufinden, ich werde es brauchen, ich werde es einfach holen Es gibt eine Referenz, ich brauche eine Kopie. Ich hole mir diesen zufälligen Standort. Warum mache ich das so? Ich werde es in einer Sekunde erklären. Ich mache das so, weil ich erklären will , dass ich, wenn ich das hier angeschlossen hätte, einen neuen Zufallsgenerator bekommen würde. Wenn ich es in einer Variablen speichere, erhalte ich diese Variable, die ich gespeichert habe. Aber wenn ich von diesem Knoten hierher komme, dann erhalte ich jedes Mal, wenn etwas von dem Zufallsprinzip anfordert, einen zufälligen Zufallscode. Das Gleiche wäre passiert, wenn ich eine zufällige Zahl gehabt hätte. Wenn ich zweimal anfragen würde, würde ich zwei verschiedene Nummern bekommen. Und alle zufälligen Knoten, wie zum Beispiel ein zufälliger Wertebereich, funktionieren so. Sie geben allem, was mit ihnen verbunden ist, einen anderen Wert . Lass uns weitermachen. Nun, wenn das wahr ist, dann wollen wir diese Funktion hier beenden. Also, wir werden eine Ausgabe haben, und sie wird vom Typ Lean sein, und wir werden sie benennen. Nein. Ich werde das hier verbinden und den Ausgang platzieren. Nun, weil ich die Funktion hier beende, heißt das nicht, dass, wenn ich Dinge hier habe, sie nicht laufen, wenn sie falsch laufen. Ich kann viele Rückgabeknoten innerhalb einer Funktion haben , je nachdem, wo die Funktion enden soll. Also. Also, wenn es falsch ist, werde ich auf die Nangon-Liste gehen, unsere Dungeon-Karte Ich werde das herbringen. Ich werde D drücken. Ich werde das hier verbinden. Eigentlich werde ich das von diesem Getter aus einfach hier reinstellen Außerdem müssen wir aufdrehen, wir können das Objekt auch kriegen. Und ein sofortiger Fehler. Ich will die Dungeon-Karte nicht hier haben. Ich will den besuchten Ort hier haben. Ich suche auf der Dangon-Karte und füge dem besuchten Ort etwas hinzu Oh. Jetzt habe ich dem besuchten Standort den neuen Standort hinzugefügt, von dem wir testen, ob er einen Ausgang haben kann. Selbst wenn dieser Ort keinen Ausgang hat, wollen wir ihn trotzdem zu den besuchten Orten hinzufügen. Wie werden wir nun überprüfen , ob es einen Ausgang zu diesem gibt? Wir müssen unsere I Maze Kämme öffnen und eine neue Funktion hinzufügen und diese Funktion New Exit nennen Ich kompiliere und speichere die BI-Coms, Mas Coms und gehe zu unseren Jetzt erscheint diese neue Funktion hier. Diese neue Funktion benötigt jedoch eine Ausgabe. Wir, lassen Sie uns eine Ausgabe hinzufügen. Es wäre kein Ausgang. Und es benötigt eine weitere Ausgabe der Ausgangsrichtung . Nennen wir es. Es wird aus den Typanweisungen und den Aufzählungsanweisungen kommen, und jetzt können wir tatsächlich kompilieren und speichern und dann zur Kachel zurückkehren Das ist eine Funktion. Das ist kein Ereignis mehr. Ich öffne es und lass uns hier ein paar Dinge kreieren. Wirklich, weißt du was? Lass uns zuerst diesen Teil beenden. Und dann werden wir das tun. Also werde ich den neuen Ausgang als Nachricht bezeichnen den neuen Ausgang als , weil wir eine Nachricht senden. Es ist eine Blueprint-Schnittstelle. Und wenn es wahr ist, will ich kein N, ich will eine Filiale Wenn das den Wert true zurückgibt, bedeutet das, dass wir keinen Ausgang haben, dann geben wir keinen Ausgang zurück. Wir kopieren den Rückgabeknoten und fügen ihn ein. Wenn das falsch ist, werden wir den letzten Ausgang auf die Ausgangsrichtung setzen , und wir werden unsere aktuellen Koordinaten auf W setzen , das ist die Verordnung hier drüben. Lass uns hier ein bisschen zu Spaghetti Pi vorlesen , geht hierher Hier. Ein bisschen besser. Ich will das machen. Okay. T hoch. Es ist immer gut, sie ein bisschen zu binden . Nein, wir geben das mit Löchern zurück . Wir haben einen Ausgang gefunden. Wir können weiterbauen. Ich denke, wir sollten das hier verbinden. Nennen wir diese Funktion. Rucksack, der nicht einfach sein wird , sondern eine echte Funktion sein wird. Und wir werden hier drüben eine Filiale anlegen. Und wir müssen noch ein paar Dinge tun. Wenn ich nun, sagen wir, keine Notausgänge platzieren würde, dann bauen wir mit unseren neuen Daten weiter. Wenn ich von Build aus starten würde, würde es diese Prüfung durchlaufen, was wirklich egal ist, aber es würde den aktuellen Kacheln eine zusätzliche hinzufügen, und wir wollen nicht, dass das passiert. Also werden wir ein weiteres benutzerdefiniertes Ereignis erstellen. Und wir werden es Continue Build nennen und wir werden es mit dem Zweig hier drüben verbinden, den wir für leere angrenzende Gebäude nehmen. Wir werden mit Build From False fortfahren. Das heißt, wenn kein Ausgang falsch ist, werden wir mit unseren neuen Daten weiterbauen , die hier übergeben werden. Es wird die Verordnung überprüfen , die wir erlassen haben, und es wird entsprechend funktionieren Was passiert nun, wenn kein Ausgang wahr ist, wenn wir keinen anderen Ausgang haben Nun, wir werden eine sehr einfache Frage stellen. unsere besuchten Orte und die Dungeon-Karte die gleiche Länge, um das zu tun Ich frage nach der Länge, die uns die Anzahl der Einträge auf dieser Karte, dem Array oder dem Set gibt dieser Karte, dem Array oder dem Set Und wenn diese beiden identisch sind und es keinen Ausgang gibt, dann können wir das Labyrinth nicht mehr überwinden A Wir werden blinzeln, nur um des Abhörens willen. Ich kann nicht bauen. Und damit unser Code keine Fehler macht, werden wir unsere übergeordneten Kacheln setzen. Bis zum Maximum an Stilen, und wir werden Build aufrufen. Das heißt, wenn das Labyrinth nicht mehr gebaut werden kann, setzen wir unser aktuelles Feld auf zwei Maximal-Stile und verlassen Basis, in der der Bau des Dungeons stattfindet Wenn das nicht der Fall ist, wenn die Karte des Dungeons nicht den besuchten Orten entspricht, sollten wir einfach den Tri-to-Backtrack erneut ausführen Und das wird kein Problem sein weil es nicht unendlich sein wird, denn jedes Mal, wenn wir den Backtrack ausführen und einen neuen Punkt auswählen, fügen wir ihn hinzu, um diese Orte zu besuchen Irgendwann werden diese beiden Variablen identisch sein. Im Grunde werden sie nicht identisch sein, weil sie in einer anderen Reihenfolge sein werden, aber sie werden dieselben Informationen enthalten. Also wird es aufhören und unser Gebäude verlassen. Ich denke, das ist genug für diesen. Wir setzen den nächsten fort, indem wir den neuen Exit-Code eingeben. Wir sehen uns dann. Auf Wiedersehen. 20. Finalisieren von Backtrack-Regeln: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon Action At Ps Zuvor haben wir unsere benutzerdefinierten Regeln für das Backtracking erstellt. Wir haben gesagt, dass wir versuchen werden, einen Rückschritt zu machen, wenn wir keinen Nachbarn finden können Oh, wir haben die Schlüssel für den Kerker, was auch immer gemacht wurde Wir haben den Zufallsindex aus diesem Array gespeichert , den wir aus den Schlüsseln erhalten, und wir haben in der Liste der besuchten Orte überprüft, ob er besucht wurde Wenn es in der Liste der besuchten Orte steht, verlassen wir es mit Stürzen Wenn es nicht stimmt, dass es keinen Ausgang gibt. Also gehen wir das noch einmal durch , um einen anderen möglichen zu finden. Wenn es nun nicht wahr ist, also nicht in den besuchten Orten enthalten ist, dann fügen wir diesen Standort zu den besuchten Orten hinzu . Wir versuchen einen neuen Ausgang zu finden. Wenn wir keinen neuen Ausgang finden können, geben wir false zurück und führen den Vorgang erneut aus. Und wenn wir einen neuen Ausgang finden, haben wir in den Variablen gespeichert, wir haben die Koordinaten gespeichert und gehen wir nach draußen und setzen den Build von einem neuen benutzerdefinierten Ereignis aus fort. Wenn wir nun versuchen, einen neuen Ausgang zu finden, überprüfen wir, ob es so viele besuchte Orte gibt wie in der Dungeonliste Es tut mir leid, wenn wir die Länge dieser beiden Karten verwenden und wenn sie identisch sind, verlassen wir das Spiel mit der Nachricht, dass wir nicht mehr bauen können Wir setzen unsere maximale Anzahl an Kacheln auf die aktuellen Kacheln und führen den Builder erneut aus. Diesmal kehrt er von true zurück. Nun sind wir von hier weggegangen, ohne den neuen Ausgang in der BP-Kachel zu füllen. Also lass uns das machen. Öffnen wir unsere Funktion new exit , die wir in der Blueprint-Oberfläche erstellt haben, und fangen wir an, einige Regeln zu erstellen Die erste Regel, die wir haben sollten, lautet: Bringen wir den Zweig mit. Lassen Sie uns die möglichen Ausgänge und die Länge ermitteln Ist diese Länge gleich Null? Gibt es zum Beispiel mögliche Ausgänge? Denn wenn es keine möglichen Ausgänge gibt, sollten wir vielleicht zuerst nur die Pfeiltasten Nur für den Fall, dass einige Pfeile falsch sind. Und dann kehren wir ohne Ausgang zurück. Nun, falls das nicht Null ist. Hier kommt der interessante Teil. Wir sind interessant, vielleicht hart. Wie dem auch sei, wir werden vom Gegenteil ausgehen. Wir werden uns für ein Rondo entscheiden. Und wir werden den Ausgang nehmen. Ich habe Exit gebracht, ich habe es aus den Variablen geholt, es gedrückt gehalten und hierher gebracht und losgelassen, was einen Setter bekommt Ich werde das verbinden. Hier. Jetzt machen wir dasselbe wie mit Find Exit, aber mit ein paar Änderungen. Jetzt fügen wir Wegbeschreibungen hinzu und fügen die Ausgangsrichtung hinzu. Wir werden es zu t hinzufügen und wir werden es wieder entfernen. Ich werde es wieder mitbringen. Ich werde einen Tisch von hier herholen. Entferne den Ausgang von den möglichen Ausgängen. Nächstes Mal können wir wählen, dass es wahrscheinlich kein nächstes Mal geben wird, weil wir diesen Stil so einstellen , dass wir nie wieder über unsere besuchten Standorte besucht werden wieder über unsere besuchten Standorte besucht Aber wie dem auch sei, nein, wir gehen zu hässlichen Pfeilen, ich habe in beiden die falschen Umschaltpfeile aufgerufen Aber ja, es ist in Ordnung. Am richtigsten wäre es, diesen mit dem gelben Knoten zu machen. Aber lass uns das richtig lesen. Denn wenn wir einen gelben Knoten haben, bedeutet das Selbst. Das Ziel ist das Selbst und das ist es im Grunde, das ist es. Es bedeutet, dass du es auf dich selbst abgesehen hast. Sogar hier hat es sich selbst, aber aus irgendeinem Grund ist das besser. Und das ist eigentlich ein Pin, ich habe den Pin sowieso als Knoten bezeichnet. Wir sprechen von Pfeilen, und dann brauchen wir wieder den Return-Node. Diesmal haben wir einen Ausgang gefunden. Wir klicken darauf und verbinden den Ausgang mit der Ausgangsrichtung. So, jetzt bekommen wir ein paar Informationen. Lassen Sie uns jetzt versuchen, das auszuführen. Wie wir sehen können. Okay. Lass uns sehen, wie es passiert. Gehen wir zu unserem Event-Graph und fügen wir hier eine Verzögerung ein. Setzen wir eine Verzögerung von 0,2 Sekunden ein. Ja. Das ist in Ordnung. Und lass uns zu unserem Hauptmenü gehen. Lass uns das größer machen. Machen wir Stapelgrößen. Okay, 200 sind vielleicht ein bisschen groß, aber sagen wir 100. Sehen wir uns die Größe an und ich denke, es würde genügen , zehn mal 10100 Und wenn wir die negativen zählen, sehen wir uns zehn an. Also spiel Ich werfe es schon aus und wir können sehen, wie wir versuchen, unser Labyrinth zu bauen Ich baue einen Kerker, das sieht man hier mit Backtrack, Backtrack Wenn du kein anderes findest, siehst du, wann es diese quadratische Form oder Parallele formt, versucht sie, zurückzugehen . Da ist sie Ich glaube, das ist von den letzten Stücken, 100. Nun, soweit ich das beurteilen kann, es sind 100. Nun, soweit ich das beurteilen kann, habe ich das Gegenteil gesagt. Vielleicht sollten wir das ändern, vielleicht sollten wir diese Zahl auf diese Seite legen . Okay, gehen wir dazu, gehen wir zu unserer Kachel. Das ist aus dem Norden, sollte aus dem Süden kommen. Lass es uns noch einmal ausführen. Nein. Okay. Warum? Ich ändere es einfach. Nun, egal. Lass uns rückgängig machen. Was ist hier los? Es ist richtig. Ich drehe die Kamera um. Mein Fehler. Es ist richtig. Es macht einen Rückzieher, es erzeugt Lass uns versuchen und ein bisschen testen Setzen wir 1.000. Setzen wir das auf 50. Setzen wir das auf 20,1, also ist es ein bisschen schneller Und lehnen Sie ab und spielen Sie. Raus. Ja. Es schafft ein Level, langsam, aber das tut es. Das wird nicht nerven. Wir wollten ein bisschen nerven. Machen wir es so, als ob wir 1.000 Teile zusammensetzen wollen, aber in einem Labyrinth von fünf Also das wird nicht passen. Sehen wir uns dieses Beispiel an. Hier sollte es jetzt heißen , dass irgendwann unsere Fehlermeldung angezeigt wurde. Ich kann nicht weitermachen. Es wird eine kleine Kiste bauen, keine Kiste, weil wir dem Buck auf der Spur sind Es hat die Nachricht gedruckt. Maze kann nicht mehr bauen. Wie ich das geöffnet habe Ich habe die Kacheltaste gedrückt, die neben einem. Wenn ich das mache, kann ich die letzten Nachrichten sehen. Wie Sie sehen können, kann ich auch sehen, was ich gemacht habe , indem ich zum Beispiel auf den Hintergrund geklickt habe. Also, wir haben Mace nicht, aber mehr. Und wir haben diese kleinen Lücken hier und hier drüben, weil unser Backtracking nicht funktioniert. Es hat einige besuchte Orte, also habe ich mich entschieden, das nicht zu tun Das Problem, das wir sofort erkennen können , ist, dass einige der Blöcke, selbst wenn sie Zugriff auf andere Blöcke haben, sie nicht den Pfeil haben. Und das liegt daran, wie die Labyrinthe gebaut wurden. Wir aktualisieren einige Pfeile, aber einige aktualisieren wir nicht Lassen Sie mich Ihnen dazu ein Beispiel geben. Lass uns Farbe wegwerfen. Nehmen wir zum Beispiel an , wir bauen ein Painter-Tool, wir bauen den ersten Block und wir bekommen diesen Ausgang. Jetzt bauen wir den zweiten Block, und wir aktivieren ihn, und wir versuchen, von hier aus zu beenden Also bauen wir diesen Block. Wir aktivieren das und versuchen, es hier zu beenden. Jetzt aktivieren wir diesen Block. Wir aktivieren hier und versuchen, den Vorgang zu beenden, was wir Also das wird eigentlich nein, wenn es einen Pfeil hat, weil es versucht hat, hierher zu kommen Es kann nicht bauen, aber es hat etwas gefunden, also gibt es Zugriff darauf. Versuchen wir nun, von hier aus einen Rückschritt zu machen. Von hier aus machen wir einen Rückzieher, also aktivieren wir das. Wir haben versucht, diesen Weg zu gehen. Ups, wir aktivieren das. Nun, wir sind diesen Weg gegangen und wir aktivieren ihn Und wir wollen diesen Weg gehen. Nun, das können wir nicht. Also, wir aktivieren das, aber nicht dieses hier. Also wenn das viele Male passiert, wie wir gesehen haben, in dem großen Labyrinth, das wir gerade geschaffen Wir können sehen, dass das oft passieren wird, und es entsteht ein Muster dass einige von ihnen so sein werden, und einige von ihnen werden so sein, und sie werden das letzte nicht haben weil das letzte von hier kam und es hieß, sie könnten nicht weitermachen oder es wurde hier kam und es hieß kein Pfeil gesetzt Es hat einfach versucht, einen Rückzieher zu machen. Also, lass uns das reparieren Also, unsere Pfeile im Labyrinth sind tatsächlich korrekt. Aber das werden wir in einer zweiten Phase tun. Unsere erste Phase bestand darin, einen Wert auf der Grundlage der uns zur Verfügung stehenden Werte zu erstellen, denn 1005 wird, wenn die maximale Anzahl der Felder nicht passt, immer ein kastenförmiges Ding entstehen Lassen Sie uns also etwas Besseres platzieren. Lass uns diese drei setzen und lass uns das auf 20 setzen. Was es schafft. Ich habe nochmal nachgesehen. Ja, so etwas sollte eher ein erstes Level sein. Es hat eine Kleinigkeit, und dann machen wir weiter, wir können die Anfänge von Hauptgröße und Kacheln erhöhen. Eigentlich haben wir zu viel gesagt. Ich denke, das ist ein guter Zwischenstopp, und das werden wir beim nächsten fortsetzen. Auf Wiedersehen. 21. Verbindungskacheln nach der Labyrinth-Generation: Hallo und willkommen zurück zum Game Design Workshop, dem Kurs zur echten Engine Five-Action-Dungeon-Action-Rollenspiels Five-Action-Dungeon-Action-Rollenspiels Zuvor haben wir die Funktion „Neuer Ausgang“ erstellt, sodass wir nach Möglichkeit einen neuen Ausgang finden, wenn Labyrinth-Generator nach dem Pack-Track-Algorithmus gefragt Außerdem haben wir unser Labyrinth im Spiel demonstriert. Und wir finden ein Problem mit den Richtungspfeilen. Also lass uns das beheben. Gehen wir zum Maigenerator. Ich werde die Emulation beenden und ein neues Atom-Event erstellen Und ich werde dieses Event zum Beispiel Dekoration nennen. Nun, Pfeile sind keine Dekoration, aber das wäre im Grunde unsere zweite Phase. Jetzt brauchen wir eine Funktion, um all die Verbindungen zu reparieren , die keine Verbindung herstellen, die Sinn macht. Ja, lass es uns tatsächlich so nennen. Repariere Nicht-Ones. Ich setze eine Klammer, s, Sichtbarkeit. Okay, also was wir tun werden, um das zu erreichen , ist, dass wir den ganzen Kerker nach oben nehmen Wir werden uns alle Schlüssel schnappen. Und von jetzt an sind wir ein bisschen langsamer, als wenn wir das alles laufen lassen. Denn von jetzt an werden wir durchgehen ganzen Dungeon durchgehen und einige Regeln hinzufügen Das wäre nicht der optimalste Weg, und Baupläne wären auch nicht der optimalste Weg, das zu tun Surplus Plus wäre viel effizienter, um solche Dinge zu erstellen Aber um die Regeln getrennt zu halten, können wir darauf schauen, dass wir den Dungeon viele Male durchschauen und bestimmte Aktionen ausführen Jetzt gibt es noch ein weiteres Problem, wenn zu viele Aktionen in einer Schleife Es geht darum, wie für die Schleife für jede Schleife oder für die Anzahl der Schleifen. Es gibt eine Obergrenze , die Unreal erkennt, wenn es sich um eine Endlosschleife Wenn das zu lange dauert, könnte Unreal sagen, dass es sich um eine Endlosschleife handelt Es zählt also nicht wirklich die Indizes. Es zählt auch, es zählt natürlich den Index, aber hauptsächlich zählt es wie viele Aktionen innerhalb der Schleife passieren Das gibt es auch in den Projekteinstellungen, wenn wir nach einer Endlosschleife suchen. Anzahl der maximalen Schleifeniterationen. Wie Sie sehen, kommt es auf Iterationen an. Nun, ich habe mich vielleicht ein wenig verändert, aber wenn Sie auf ein Problem mit Endlosschleifen stoßen, erhöhen Sie diese Zahl auf eine größere Zahl. Ja, ich denke, das ist eine Höchstzahl. Jedenfalls sind das ein paar zusätzliche Informationen. Ich glaube nicht, dass wir das ändern müssen. Ich denke, die Nummer, die es war, war in Ordnung, aber lassen wir es hier. Wenn Sie auf dieses Problem stoßen, gibt es in Blueprints auch eine andere Möglichkeit , das System zu betrügen, indem einige Aktionen verzögert werden Aber wie dem auch sei, lass uns weitermachen. Also werden wir all unsere Dungeon-Koordinaten durchgehen. Und von diesen Dungeon-Koordinaten werden wir nach gültigen Nachbarn suchen, im Grunde genommen nach gültigen Nachbarn, ob sie zu einem Dungeon gehören, dem nächsten Und wenn sie das für die Nachbarn tun, dann helfen wir unserem Block aktivieren die Pfeilrichtung zu dieser Seite Einfache Aktion, aber es gibt eine Sache. Wir sollten das eigentlich nicht auf der ersten Kachel machen. Aber warum nicht? Lass es uns in der ersten Kachel machen. Ebenfalls. Also, was ich tun werde, ist das L-Element zu nutzen. Wenn ich nicht wollte, dass das in der ersten Kachel passiert, tut mir leid. Ich wollte nicht, dass in der ersten Kachel passiert, ich würde das einfach gleich Null machen. Also, wenn das der erste Index ist, tu nichts. Das ist im Grunde das, was wir zeigen wollten. Also, wenn es der erste Index ist, tu nichts. Und wir können einige zusätzliche Regeln haben, wenn es zum Beispiel der 24. Index ist, tun Sie das nicht. Es gibt aber auch andere Möglichkeiten, Regeln wie diese effizienter zu aktivieren. Wenn wir nun unsere Funktionen überprüfen, haben wir nur noch einen leeren Rand. Was wir brauchen, ist das Gegenteil davon. Lassen Sie uns also eine weitere Funktion erstellen. Nennen wir es get F. D un adjacent. Nein. Ich glaube, wir rufen diese Funktion von unseren Ordinaten aus auf. Sie benötigt eine Koordinate , weil wir herausfinden müssen, was sich hier in der Nähe befindet Wir gehen zu den Eingaben. Wir werden einen In-Punkt als Variablentyp auswählen. Ich werde das Punkte nennen. Nein, was machen wir mit diesen Koordinaten? Nun, wir finden das Kreuz nebenan. Wir haben diesen Fund Socent. Wir bekommen also unsere Rossocent-Liste. Und dann wiederholen wir diese Liste mit einem für Und wir werden prüfen, ob das enthalten ist. Eigentlich brauchen wir hier den Dungeon, die Dungeon-Variable, die Dungeon-Map Und ob wir überprüfen können, ob das diesen Endpunkt enthält. Wenn alle Nachbarn oder einige der Nachbarn in dieser Liste enthalten sind . Das bedeutet, dass sie Teil des Kerkers sind . Wenn nicht, dann sind sie ein leerer Ort. Also brauchen wir eine Karte , um das auszugeben. Wir müssen jede Variable auf einer Karte speichern, weil wir die Verordnung brauchen, und wir brauchen auch die Richtung, die wir hier kennen, es ist Nordost-Süd-Nord-Südost-West Unser Indexstrahl entspricht also Nordost-Nord-Südost-West Jetzt werde ich eine lokale Variable erstellen. Wir werden sie valide Das nennen. Welt ernsthaft. Ja, das ist in Ordnung. , es wird vom Typ E sein . Und es wird eine Karte sein, und der zweite Schlüssel wäre drin. Wir bringen das hierher und wählen Hinzufügen. Wir werden unser Bestes tun, um den ausgewählten Knoten zu bekommen , denn wenn ich ihn hier auswähle, werden die Optionen nicht aktiviert. Hier erlaubt es mir nicht, die Optionen hier zu aktivieren oder zu aktivieren. Also werde ich den letzten Ausgang mitbringen. Ich werde unseren tatsächlich anhand des Index machen und AR, ich gehe zu den Auserwählten. Ich werde den letzten Ausgang hier verbinden. Das aktiviert die Optionen. Ich werde das hier verbinden und dann werde ich das trennen. Füge einfach Optionen hinzu. Ich verbinde das RA-Element und gehe nach Nord-Süd-West. Jetzt wird unsere Liste korrekt gefüllt. Wenn wir fertig sind, benötigen wir einen Ausgabeknoten, um unsere Ergebnisse zu liefern und diese tatsächlich zu erstellen. Also werden wir eine Ausgabe vom gleichen Typ wie die gültige Nachbarausgabe erstellen . Eigentlich glaube ich, dass ich das einfach machen kann. Ausgang. Wenn ich hier etwas per Drag-and-Drop verschiebe, auch wenn ich Rahmen per Drag-and-Drop ziehe. Wenn ich diesen per Drag-and-Drop ziehe, würde er einen gültigen Knoten für mich erstellen . Das brauche ich nicht. Ein Ausgang Ein Ausgangspin für mich. Verbinde das hier. Kompilieren und speichern. Und kommen wir zurück zu unserer Lösung, dass keine Verbindungsverbindungen sichtbar sind. Ich werde diese Funktion hierher bringen , sie wird nebenan gefüllt. Ich werde das hier verbinden. Und von hier aus werde ich die Schlüssel holen. Ich habe ein Array mit Nordost, Süd und West, das ich durchziehen kann. Und dann hole ich meinen Kerkerwischer. Ich werde das aktuelle Array-Element finden. Von diesem Schauspieler werde ich Aktionen bekommen. Und füge das entsprechende Element hinzu, verbinde es hier und setze es auf true. Am Ende schalten wir also einfach die Pfeile um, was wir am Ende tun können oder wir können es hier tun Es ist nicht wirklich wichtig. Es ist dasselbe. Aber was wir tun sollten, ist die Pfeile umzuschalten. Als Botschaft Weil, wie gesagt, das eine andere Kachel sein könnte. Es könnte für uns sein. Jetzt haben wir eine BP-Kachel. Es könnte jeder Schauspieler sein. Wenn wir uns dafür entscheiden, die Variable als Akteur zu verwenden, werden wir das jetzt nicht tun, weil es das Labyrinth durcheinander bringt und es als Botschaft sein wird Lassen Sie uns nun erklären, was wir hier für diejenigen getan haben , die es nicht verstanden haben: Da das Feld angrenzend ist haben: Da das Feld angrenzend und wir die Richtungen durchgehen, stellen wir fest, dass die Richtung stimmt Wir erhalten also die Anweisungen, die für die aktuelle Kachel , die wir gerade überprüfen, angezeigt werden sollten , und wir aktivieren sie. Wir sagen es ihnen beim Kompilieren und Speichern und lassen uns sehen, ob es funktioniert hat. Eigentlich haben wir es noch nicht aufgerufen, sonst wird es nicht funktionieren. Gehen wir zum ersten Build und nennen wir unsere Dekorationen, Dekorationsfunktion, Event, Not Function und all unsere Verbindungen, die nicht miteinander verbunden sind. Nun, wenn ich spiele, so weit weg. Wir können sehen, dass es diese Kreuze geschaffen hat. Nun, wir haben einige Sackgassen , die eigentlich keine Sackgassen sein sollten, aber wir werden das dort reparieren, wo sie Sackgassen sein sollten . Das haben sie gemeint. Wie zum Beispiel hier, denn wenn wir versuchen, etwas zu platzieren, aktivieren wir den Pfeil. Das ist der Grund, warum das passiert. Es ist überall passiert, nicht. Also ja. Aber das erste Problem ist behoben. Das erste Problem besteht darin, dass Dinge, die mit etwas verbunden sind , immer einen Pfeil haben sollten. Bevor wir nun weitermachen und diesen Teil reparieren, zeigen die Pfeile nirgendwohin, als geprüft wurde, ob etwas abgespielt werden kann. Lassen Sie uns die Ladeleiste erstellen. Lassen Sie uns weitermachen und sehen, wie es aussieht. Also gehen wir zum Laden über. Wir werden die Cvas wählen und sie wieder sichtbar machen. Kompilieren und speichern, dann gehen wir zu unserem Labyrinth-Generator und fügen unsere Wir haben unser festgelegtes Prozent und unsere Funktion zum Laden von Culk Wir werden diesen Code hier kopieren und einfügen. Wir werden hierher kommen und ihn genau hier platzieren. Jetzt bringt es nichts, es einfach zu platzieren , wenn wir es nicht verbinden. Also lass es uns verbinden. Das kann ein bisschen näher kommen und lassen Sie uns tatsächlich einige Dinge kommentieren. Auf dem Feld, buchstabierte das Labyrinth. Auf Akten. Haufen. Riesiger Kommentar. Macht keinen Sinn. Sie können einen beliebigen Kommentar abgeben. So hilft es mir. Kommentare sind persönlich. Das würde ich besser verstehen. Lass uns weitermachen. Lasst uns anfangen zu spielen. Das ist genug. Lass uns kompilieren und speichern und lass uns spielen. Und wir können sehen, dass unser Laden aber zu 40% gefüllt ist , wenn die Kacheln fertig sind. Lasst uns aufhören. Gehen wir zurück zum Laden. Lasst uns diese unsichtbare Höhle tatsächlich einrichten, kompilieren und speichern und damit fortfahren, unsere Sackgassen zu reparieren. Was wir also brauchen, ist eine Funktion, die wir vielleicht Winds Sackgassen nennen werden . Repariert falsche Ausgänge. Ja, repariere falsche Ausgänge. Also lass uns eine Funktion erstellen. Nennen wir es „Fehlausgänge reparieren“. Und lass es uns eingeben. A, das brauchen wir. Lassen Sie uns zunächst erklären, was wir tun werden. Wir werden tatsächlich das Gleiche tun, was wir hier getan haben. Also lass uns. Das alles. So wie es hier ist. Aber anstelle von Kabeln werden wir die Dungeon-Karte verwenden Und wir werden Schlüssel holen. Schlüssel. Wir werden es hier verbinden, also werden wir für die gesamte Karte iterieren Ich habe die Yeah kopiert, ich habe die falsche Funktion Lösche das, lösche das. Ich habe das nebenstehende Feld „Get“ kopiert, aber wir wollten die festen Verbindungen, die keine Verbindung herstellen. Also werde ich das kopieren, werde Schnellausgänge reparieren Wir werden den ganzen Mist durchforsten und statt das Feld angrenzend zu bekommen, werden wir einfach das leere angrenzende Feld bekommen Und hier haben wir noch keine Koordinaten. Was wir also wirklich tun, ist das hier zu ändern, und wir werden mit der rechten Maustaste klicken und Referenzen suchen, die uns zu dem Ort führen, an dem wir es verwendet haben. Das ist hier im Build-Bereich, und wir werden die aktuellen Kabel mit den Kabeln verbinden, weil wir das hier brauchten, aber wenn wir es an festen F-Ausgängen verwenden , brauchen wir es so Wir werden das hier verbinden. Jetzt haben wir die Schlüssel des leeren Nebens und statt t setzen wir es auf False. Wenn ich Play kompiliere, hat es nicht funktioniert. Und der Grund ist, dass wir es nicht verbunden haben. Gehen wir also zurück zu General May. Gehen wir zum Dekorieren zu VNGraf und holen uns diese Funktion Repariert falsche Ausgänge. Kompilieren und speichern und los geht's. Es funktioniert irgendwie bei einigen auf einem, oder ich kann mir zwei vorstellen, vielleicht mehr, aber nicht auf allen Aber das ist ein Problem, das wir im nächsten lösen werden. Ich werde dich dann sehen. Auf Wiedersehen. 22. Fehlerbehebung und Dekorations-Blueprints: Oh Hallo, und willkommen zurück zum Game Design Workshop und dem Kurs zur prozeduraler Dungeon-Action-PCs mit Re-Engine Five Dungeon-Action-PCs Zuvor, in der letzten Lektion, haben wir die Funktion zur Sichtbarkeit von Pfeilen, bei denen keine Verbindungen hergestellt werden, behoben . Diese Funktion verwendet die Tasten des gesamten Dungeons, genau wie all Sobald das angrenzende Feld die Schlüssel aus dem angrenzenden Feld erhält die Schlüssel aus dem angrenzenden Feld und zwar basierend auf der Richtung, aktivieren wir die Sichtbarkeit der Pfeile Jetzt haben wir auch die Funktion get filled adjacent pure erstellt , die wir benutzt haben, mit der wir die angrenzenden Felder ermitteln, wir prüfen, welche davon zum Dungeon gehören, und so wird unsere Liste Und jetzt haben wir als letztes versucht, die blassen Ausgänge zu reparieren Also habe ich irgendwie herausgefunden, warum es nicht funktioniert hat. Wenn wir nebenan leer sind, kriegt es nur die, die sich innerhalb der Grenzen des Kerkers befinden Also diejenigen, die sich außerhalb des Kerkers befinden, nicht wirklich erfasst können wir also nicht nach Sackgassen Mit dieser Funktion können wir also nicht nach Sackgassen suchen, wenn sie sich im Randbereich Was wir tun werden, ist, dass es viele Lösungen gibt. Wir könnten hier ein Buling erstellen , um das in Schach zu nehmen und es vielleicht nicht zu kontrollieren Wir könnten eine neue Funktion erstellen , die diese Prüfung einfach nicht hat, aber ich verwende gerne das, was wir bereits haben Bei festen Fallausgängen bekommen wir das leere Nebengebäude nicht Wir werden das Feld tatsächlich wieder angrenzend bekommen. Und was wir auf dem angrenzenden Feld tun werden, unterscheidet sich grundlegend von dem, was wir getan haben. Also müssen wir eigentlich nicht viel löschen. Aber was wir brauchen, ist der Akteur der aktuellen Koordinaten. Also werden wir den Akteur der aktuellen Koordinaten ermitteln, und wir werden seine Anweisungen ermitteln. Im Grunde genommen werden auf der Kachel, in der wir uns befinden , die Anweisungen und anhand der Anweisungen die Schlüssel abgerufen. Also, wir brauchen das hier nicht, aber wir brauchen es hier. Anhand der Schlüssel werden wir überprüfen, ob eine Richtung hier steht. Hat die Richtung, die wir überprüfen, eine gültige Nachbarrichtung? Wenn ja, ist alles gut. Wenn nicht, schalten wir sie aus. Aber das könnte schief gehen. Das könnte hierher kommen. Verbinde das hier. Das ist ein bisschen chaotisch. Lass mich hoffen. Wie können wir das besser aussehen lassen? Wir könnten einige Dinge zu Variablen machen. Ich werde es nur ein bisschen entwirren. Es ist ein bisschen klarer als das, was wir sehen. Von jeder Kachel erhalten wir die Anweisungen. Wir ermitteln die Koordinaten des Schauspielers. Wir finden es auf der Gefahrenkarte. Wir holen uns die Anweisungen des Schauspielers und überprüfen aus allen Richtungen, ob jede Richtung einen gültigen Nachbarort hat. Das ist ein bisschen schwerer, aber es ist in Ordnung. Wir kompilieren und speichern die ID, verbinden die Summenpfeile miteinander, also müssen wir das verbinden Der Schauspieler, den wir überprüfen. Die Überprüfung des Akteurs erfolgt über die Pfeiltasten, die Konformität wird gespeichert. Lassen Sie uns überprüfen, ob es diesmal funktioniert. Scheint zu funktionieren. Nun zur reinen Überprüfung, präzise, denn das Problem waren die Ränder des Labyrinths Geben wir 202.000 2000 e Hundert an, was auch immer. Riesige Zahl, es entsteht also eine Kiste. Also überprüfen wir nur die Kanten. Sie haben Pfeile und jetzt sind sie weg. Und jetzt haben wir mit den Pfeilen klarere Anweisungen , wohin wir gehen können und wohin nicht. Ich denke, es ist an der Zeit , damit anzufangen, das Ganze mehr wie einen Kerker mit Wänden, Requisiten, Zielen und allem aussehen Requisiten, Zielen und Also werde ich das schließen. Wir werden das auf 20 zurücksetzen. Wenn es okay aussieht, denke ich, es sieht okay aus. Wir können ein paar Zimmer haben, wir können einen Drehpunkt und einen Endpunkt Also, wie werden wir das machen? Es gibt viele Möglichkeiten andere Kacheln zu spawnen, es gibt Möglichkeiten, Räume innerhalb von Kacheln zu spawnen Wir werden einige Möglichkeiten demonstrieren. Im Moment werden wir zu unserer P-Kachel gehen. Schließ diese Pfeile. Und ich werde hier einen Kinderdarsteller hinzufügen. U Ist es Schauspieler, was im Grunde bedeutet, dass wir diesem Plan eine weitere Blaupause hinzufügen können diesem Plan eine weitere Blaupause Für unsere Zwecke wird es verwendet, um einen Blueprint zu haben , der alle Dekorationen in einem enthält, und wir aktivieren und deaktivieren einige davon Irgendwann habe ich über Referenzen, harte Referenzen und weiche Referenzen gesprochen harte Referenzen und weiche Referenzen Eine kurze Erklärung wäre, dass es um die Verwaltung von Abhängigkeiten und die Speichernutzung geht. Eine harte Referenz zeigt direkt auf das Asset oder Objekt und stellt so sicher, dass es immer in den Arbeitsspeicher geladen wird. Es wird diesen Speicherplatz belegen Gehen wir zum Beispiel zu unserer Ebene. Gehen wir zu Sis Map. Wir können die Abhängigkeiten sehen , die für die Ausführung immer erforderlich sind. Es erfordert, dass ich nicht viel hinzugefügt habe, aber wir können, es erfordert der Brick Clay immer im Speicher ist, es erfordert, dass sich die Vegetation, Skript-Engine im die Skript-Engine im Speicher befindet, basierend auf den Assets, die wir verwendet haben, auf unseren Kacheln referenziert Im Grunde. Hier der Boden, die Wände, alles, was durch das Labyrinth referenziert und in einer Variablen gehalten wird Wenn ich zum Beispiel hierher gehe und das zu einem weichen Hinweis auf den Spielmodus mache Das heißt, wenn ich diesen Labyrinth-Generator auf einer anderen Map ausführe diesen Labyrinth-Generator , die diesen Spielmodus nicht hat Natürlich werden an den Stellen, an denen ich ihn verwendet habe , einige Fehler auftreten, aber er wird nicht in den Speicher geladen also nicht alle Abhängigkeiten des Spielmodus werden also nicht alle Abhängigkeiten des Spielmodus in den Speicher geladen , weil ich den Spielmodus nicht aufrufe. Wenn ich innerhalb von DOA in den Spielmodus gecastet hätte, was wir am Anfang tatsächlich haben, würde das alles negieren, weil Casting das Laden in den Speicher zwingen würde Würde den Blueprint zwingen, den Top-Down-Spielmodus in den Speicher zu laden den Top-Down-Spielmodus in , weil ich ihn caste und er ihn hält Aber wenn ich diese Besetzung nicht hätte und das nur eine weiche Referenz wäre, würde sie nicht geladen werden Softreferenzen enthalten also im Grunde eine Referenz auf das Asset oder Objekt, ohne es sofort in den Speicher zu laden, bis es aufgerufen wird. Dabei werden viele Optimierungen vorgenommen. werden wir nicht tun. Es ist wie man so schön sagt, wenn Sie ein Problem haben, schauen Sie im Profiler Das ist immer die Regel. Erstellen Sie sie und suchen Sie dann nach den Problemen Für uns glaube ich nicht, dass wir irgendwelche Probleme haben werden. Jetzt werden wir diesen Kinderdarsteller brauchen. Und es wird alle Referenzen für alle Artikel enthalten, die wir benötigen, um sie an einem Ort aufzubewahren und zu zeigen, wie wir sie verwenden. Ein besserer Weg wäre es, einfach zum Beispiel alle darüber liegenden Requisiten zu besitzen , die wir dann auch in einigen anderen Sonderwerten zeigen werden in einigen anderen Sonderwerten Lassen Sie uns nun diesen Kinderdarsteller kreieren. Wir gehen zum Inhalt über. Wir gehen zu Blueprints, wir klicken mit der rechten Maustaste und wählen eine Blueprint-Klasse und dann den Schauspieler aus Und wir werden das BP Decorations nennen. Nennen wir es BP Decorations. Ich archiviere, ich werde alles speichern und lass es uns öffnen. Ich werde es jetzt hier neben die Kachel legen. Ich werde das schließen, denn da wir eine direkte Dekoration haben, werden Fliesen ein Kinderspiel sein. Wir haben direkten Zugang zueinander. Jetzt gehe ich zur BP-Kachel und wähle die Dekorationen, BP-Dekorationen aus. Lass uns ein paar Wände hinzufügen. Zuallererst werde ich einige statische Netze hinzufügen , eigentlich alle Ich nenne sie Wall, sagen wir Wall N North ist Wall for South, dann alles für Ost und Wall W für West. Und was ich tun werde, ist, zum Konstruktionsskript zu gehen und jede dieser Variablen hierher zu bringen . Während ich die Kontrolle behalte, werde ich besser . Nur zur Erinnerung Und ich werde Ray machen. Speichern Sie sie als Informationen in einem Array für die spätere Verwendung. Ich werde für diese Variable werben, ich werde sie Wände nennen. Und ich werde das mit dem Konstruktionsskript verbinden . Kompilieren. Lass uns jetzt ein paar statische Nachrichten an die Wände hängen. Ich werde sie alle auswählen. Und ich werde zu unserer Liste gehen. Ich werde kontrollieren und ein bisschen reinzoomen und warten, bis das verschwindet. Okay. Wir, das ist es. Kombiniert 67a9 67. Ich glaube. Ja, das sieht so aus. Lass uns sie platzieren und sie voneinander trennen. Oh, wir können sie voneinander trennen. Wir können sie hier sehen. Wenn Sie zwei Bildschirme haben, ist das vielleicht etwas einfacher für Sie. Aber ich werde das so haben . Ich werde das haben. Das und ich werde sie auf die richtige Seite bewegen. Nehmen wir an, das ist die richtige Seite. Ich werde die Werte danach korrigieren. Ist wirklich die richtige Seite. Das ist die Nordwand, also wäre es hier irgendwo um 90 Grad. Das ist genug der visuellen Platzierung. Das stelle ich wieder hier auf und überprüfe die Koordinaten 0390 Runden wir es auf 400 auf. Wäre es nett minus E -400. Überprüfe Ja. Es ist in Ordnung. Dekorationen, und ich werde diese Station auf dieser Seite wechseln , glaube ich, und der Standort wird das Gegenteil davon sein. Ich werde den Ort kopieren und einfügen nur entgegengesetzte Wege negieren Und ich werde zur Mauer gehen. Hundert 100. Das wären 100 oder Hundert-400. Nimm die Achse. Etwas stimmt nicht. Das sollte das Gegenteil von 400, 400 Was sein. Jetzt haben wir Wände. Jetzt. Oh, ich kompiliere und spiele. Jetzt haben wir Kanten, ein paar Wände. Ich denke, das ist ein guter Haltepunkt für diesen. Im nächsten Fall werden wir den Weg frei machen. Wir sehen uns beim nächsten. 23. Platzieren von Wänden auf der Grundlage von blockierten Pfaden: Hallo und willkommen zurück zum Game Design Workshop, dem Kurs zur Real Engine Five Procedural Erstellung von Real Engine Five Procedural Dungeon Action RPCs Zuvor hatten wir als Kinderdarsteller das Dekorationsplättchen über unserem Blupin-Plättchen hinzugefügt als Kinderdarsteller das Dekorationsplättchen über unserem Blupin-Plättchen Wir haben für diesen Kinderdarsteller die Klassen-BP-Dekorationen verwendet, und wir haben eigentlich zuerst die BP-Dekorationen entworfen Wir haben einige Wände hinzugefügt und es zu einem Array im Bauskript hinzugefügt. Nun haben wir, um ehrlich zu sein, auch die große Fehlausgangsfunktion debuggt, bei der wir uns entschieden haben, ein anderes System als das , das ich eingangs beschrieben habe, zu verwenden das ich eingangs beschrieben habe, zu Dieses Mal geht es nur darum die Richtungen der Kachel der aktuellen Kachel zu ermitteln, die wir überprüfen, aus den Richtungen zu ermitteln, ob es eine gültige Nachbarschaft zu dieser Richtung gibt , und wir legen die Falsch zu sein, um in der Darstellung von Pfeilen auszuschalten, und wir verdoppeln Pfeile und wir verdoppeln Nun, und um ehrlich zu sein, können wir diese beiden Funktionen vor dem Dekorieren hierher verschieben diese beiden Funktionen vor dem Dekorieren hierher Und lassen Sie uns auch die Ladeleiste vorantreiben. Unser Geschmack Nehmen wir an, das sind weitere 5%, also gehen wir zum Nullpunkt Das Leben. Und dann gehen wir dekorieren. Wie Sie sehen können, werden wir von nun an nur noch abschätzen, werden wir von nun an nur noch abschätzen was eine Aktion ist und wie viel Prozent des Ladevorgangs sie benötigt. Es liegt an uns. Es liegt an unseren Tests. Wie gesagt, es gibt kompliziertere Methoden zu tun und es als Prozentsatz anzugeben, aber dafür wären viele Berechnungen und viel mehr Code erforderlich . Gehen wir nun zurück zur Reparatur unserer Dekorationen, unserer Wände, um einen Grundriss für unser Labyrinth zu haben Dazu gehen wir zu unserem B-Labyrinth-Generator. Wir gehen zu Even Graph, gehen zu Dekorationen, jetzt wo es leer ist, und lassen Sie uns eine weitere Funktion erstellen Nennen wir das Basis-Layout. Nennen wir diese Funktion hier. Geben wir diese Funktion ein. Und was wir tun werden, ist ziemlich einfach. Wir werden jeden Schauspieler anrufen , um jedes Kind zu beauftragen, etwas zu tun, und das wäre, die Wände zu verstecken, basierend auf den Anweisungen, die wir hier haben. Also werde ich diesen Child Duct in Cors umbenennen. Und was ich tun werde , ist, wie gesagt, jetzt, wo wir wissen, dass dieser Schauspieler ein Kind dieses Schauspielers sein wird, wir einen direkten Bezug darauf haben können, was bedeutet, dass ich zu Beginn des wir einen direkten Bezug darauf haben können, was bedeutet, dass ich zu Spiels Fork anrufen werde Ja. Schauspieler. Und dann werde ich auf BP-Kachel casten. Nun, das schafft eine Abhängigkeit. Nun, diese Dekoration muss den BP-Kachel als Hauptdarsteller haben. Wenn nicht, dann wird es nicht funktionieren. Das sind Abhängigkeiten im Grunde. Oh, ich werde das zu einer Variablen heraufstufen. Wir wissen, dass es kein Fehler ist. Es wird immer erfolgreich sein. Und tatsächlich werde ich auch eine Abhängigkeit von der BP-Kachel des Labyrinth-Generators erstellen eine Abhängigkeit von der BP-Kachel des Labyrinth-Generators Und ich werde diesen Generator blau nennen, und ich werde vom Typ Generator sein Oh, wie haben wir es Maze Gen Mazen BP Maze Gen Object Reference genannt Maze Gen Mazen BP Maze Gen Nun, warum das eigentlich keine Rolle spielt. Da wir ein Plättchen spawnen werden und es durch den Labyrinth-Generator spawnen wird , dann erzeugt das Casting hier im Speicher nicht viel Aufhebens Es wird gecastet, was eine schwere Last ist, weil es die Klassenreferenz in der Klasse abfragt, aber sie wird bereits in den Speicher geladen Weil die Kacheln erscheinen bevor die Dekorationen erscheinen Lassen Sie uns nun diesen Generator erstellen. Lassen Sie uns dafür sorgen, dass er tatsächlich editiert und beim Spawn verfügbar ist . Wir müssen also nicht casten oder so. Wir können einfach zu unserem Labyrinth-Generator gehen, wir gehen zu unserem Event-Graph und wir gehen zu unserer Spawn-Kachel, die hier ist Wir werden das zurücksetzen, weil es nicht aktualisiert wird. Habe ich nicht kompiliert? Ja, ich habe nicht kompiliert. Und ich werde es tatsächlich tun, da ist ein B. Jetzt, als ich das geöffnet habe, es einen Besitzer entdeckt. Ich könnte das selbst benutzen und dann hier beim BP-Besitzer. Besitzer, dann könnte ich das auf den Generator übertragen und es so machen. Aber ich bevorzuge die Art der Enthüllung beim Spawn. B bis 4 Ich werde es selbst löschen. Und wie Sie jetzt sehen können, wurde beschlossen, es zu aktualisieren. Also werde ich es selbst mit dem Generator machen. Und jetzt haben wir eine direkte Referenz, wenn es um Pfoten geht. Es gibt nur ein Plättchen , das es nicht hat, und zwar ein Plättchen, das zuerst mit dem Löffel beginnt Das muss also auch mit der Zelle auf der ersten Kachel und dann auf unserer erstellten Schleife aktualisiert Zelle auf der ersten Kachel und dann werden. Wir müssen auch die P-Kachel von Son Actor P aktualisieren , um den Generator als eigenen zu haben. Gehen wir nun zurück zu unseren Dekorationen, kompilieren und speichern, eine weitere Funktion erstellen und diese Funktion aufrufen. Sagen wir, Wände verstecken. Ohne diesen zusätzlichen Teil. Okay. Jetzt holen wir uns unsere BP-Kachel und wir werden Wegbeschreibungen abrufen, und wir werden die Schlüssel von den Schlüsseln abrufen, wir werden für jede Schleife eine Schleife bilden. Dann werden wir die einfache Frage stellen. Wir werden den Wert von P herausfinden und fragen, bist du sichtbar oder nicht? Nun, das Problem tritt auf, wenn wir unsere Wände angeordnet haben und wir sie alle durchgehen werden. Und woher wissen wir , welche Mauer welche ist? Okay, wir haben den Namen, wir haben sie in einer Reihenfolge. Aber was ist, wenn ich sie in die falsche Reihenfolge gebracht habe? W Ich muss immer die Reihenfolge der einzelnen Arrays überprüfen, und wenn sie übereinstimmen, nein. Es gibt noch einen anderen wirklich einfachen Weg. Wir können zu jeder Wand gehen und einen Zug anbringen, etwas, das man Schlepper nennt Also suche ich ein paar Details nach und drücke auf das Ich gebe zum Beispiel für die Wand N, N Tug ein. Und für die Wand S setze ich den S-Zug für die Wand E. Ich werde den Zug setzen und für die Wand W werde ich den W-Zug setzen Warum habe ich diese Namen gewählt? Weil sie unserem String-Array entsprechen , im Grunde unserem, tut mir leid, nicht String-Array unserem Aufzählungs-Array Oh, ich werde überprüfen, ob das hier ist. Ich werde diese ist. Ich werde Aufzählung im Grunde in eine Zeichenfolge umwandeln Es gibt eine Zeichenfolge, und das gibt uns den Namen von de enumerator zu einem Und was ich tun kann, es gibt einen Knoten, der Component at heißt Ich werde das hier verbinden. Es wird es automatisch in einen Namen konvertieren. Wählen Sie außerdem aus, ob das Bauteil den richtigen Zug hat , den wir überprüfen, Sie dann dessen Sichtbarkeit Eigentlich geht es um Gewinn, nicht um die Sichtbarkeit. Denn wenn wir die Sichtbarkeit machen, dann ist es ein bisschen weniger optimal. Aber was wir zu neues Verborgenes haben, wäre wahr. Was wir auch tun müssen, ist, ihre Kollision ebenfalls einzustellen. Auf keine Kollision. Denn wenn wir das nicht tun würden, hätten wir unsichtbare Wände, die uns blockieren würden. Was sind Tags? Im Grunde ist es ein System zur Identifizierung von Objekten, um Identifier für Objekte zu erstellen das weniger schwer ist, zum Beispiel, dann ständig zwei zu werfen, alle Schauspieler zu bekommen, und im Vergleich dazu, Schauspieler zu bekommen oder wenn die Überprüfung eines bestimmten Objekts ein Tag hat Es kann zu Komponenten hinzugefügt werden. Es kann sowohl zu Schauspielern als auch zu Klassenvorgaben hinzugefügt werden. Sie können sehen, dass es ein Tag gibt , das für das Actor-Tag zählt Die Frage wäre also nicht Komponente hat Tag, sondern Schauspieler hat Tag im Vergleich zu dem, was wir gerade nach Komponenten suchen. Also, eine kleine Erklärung für das, was wir wieder gemacht haben Wir bekommen jede Richtungsliste , die beide Informationen enthält, ob sie ein- oder ausgeschaltet sind, wir iterieren die Liste Dann durchlaufen wir jede Wand für jede Iteration der Liste Diese Schleife innerhalb einer Schleife wird im Grunde eine verschachtelte Schleife genannt verschachtelte Schleife Also durchläuft jede Komponente dieser Schleife etwas anderes, und wir prüfen, ob die Komponente der Wand das Tag der Aufzählung hat , die wir in eine Zeichenfolge umgewandelt haben Stimmt. Korrekt hier. Wenn es das Tag hat, existiert es. Und wenn der Wert wahr ist, denn wenn der Wert wahr ist, bedeutet das, dass es keine Mauer gibt, bedeutet das, dass unser Pfeil sichtbar ist. dass unser Pfeil sichtbar ist, wir schalten die Wand aus. Wenn wir jetzt spielen, verbinden wir zunächst diese Funktion. Wir haben uns tatsächlich verbunden, nicht wahr? Ja, haben wir. Okay. Das ist leer. Wir sind noch nicht durch unseren ganzen Kerker gegangen, also Kerker Diesmal werden wir die Werte bekommen, nicht die Schlüssel Also werden wir jeden Akteur durchgehen , nicht Wir werden eine Schleife machen. Dann werden wir von der Vierschleife aus operieren, und das wird das letzte sein. Dann werden wir uns von hier aus verstecken. Jetzt müssen wir casten. Jetzt siehst du, wir müssen das, was wir als Dekoration bezeichnen, gießen ? PP. Sie sehen, jetzt kann ich nicht zwei BP-Dekorationen gießen. Ich kann es nicht finden, weil Decorations ein Kinderdarsteller ist. Es gibt eine Komponente für Kinderdarsteller zurück. Also müssen wir Actor als Kinderdarsteller finden. Also das ist eine Komponente und es ist eine Komponente von Child Actor , der zwei BP-Dekorationen bekommen hat. Das ist also die Zelle, und das ist, was in der Zelle ist. Ich werde zu einer reinen Besetzung konvertieren, diese hier, und ich werde Fledermäuse verstecken. Im Grunde ist es das. Es scheint also eine einfache Funktion zu sein. Es ist schwer, weil es all diese Informationen hat, es braucht den Schauspieler, dass es ein Kind braucht, dass wir das Kind casten müssen, um die Dekoration zu bekommen, und hier drinnen machen wir auch noch viel mehr Dinge. Also etwas, das hier und optimal aussieht , wird es am Ende vielleicht nicht sein. Kompiliere und speichere und lass uns spielen. Und jetzt haben wir eine schöne Gegend. Ich denke, das ist es für diesen. Ich sehe dich als Nächstes. Auf Wiedersehen. 24. Standardkorridormuster: Hallo und willkommen zurück zum Game Design Workshop, Real Engine Five, Procedural Dangon Action BZ In der letzten Lektion haben wir einige Referenzen des Generators zur Kachel und die Kachel zum Kinderdarsteller hinzugefügt , also den BP-Dekorationen, und wir haben die Funktion „Wand verstecken“ entwickelt, die im Wesentlichen die BP-Kachel BP-Dekorationen, und wir haben die Funktion „Wand verstecken“ entwickelt, die im Wesentlichen die BP-Kachel Sie erhält die Anweisungen von ihr und aus der Richtung, in der sie durch die Tasten floppt, findet heraus, welche Tasten sichtbar sind und blendet die Wände Und schließt auch die Kollision. Wenn wir das Labyrinth so gestalten, können wir sofort feststellen, dass es ein bisschen flach ist. Es gibt keine Möglichkeit, nach rechts und links abzubiegen. Es ist ein offener Bereich , den wir natürlich mit einigen Räumen und einigen Requisiten dekorieren könnten, und er würde gut aussehen Aber lassen Sie uns ein bisschen komplexer machen, wohin der Spieler gehen kann und wohin nicht Um das zu erreichen, werden wir unsere bestehende Funktion „Lasst uns aufhören zu spielen“ ein wenig aufrüsten . Von fester Verbindung ohne Verbindung. Im Moment nehmen wir jeden Block und sagen, du blockierst, bist jeden Block und sagen, du blockierst, du an irgendeinen anderen Block gebunden? Und wenn die Antwort ja ist, dann setzen wir die Sichtbarkeit des Pfeils auf sichtbar in Richtung des anderen Blocks. Was wäre, wenn wir fragen könnten, ob es noch einen Block gibt und ich in seine Richtung zeige, würde ich dann einen Pfeil erstellen? Lass uns zum Beispiel malen gehen. Antwort: Wenn unsere Blöcke das hier drüben mit Pfeilen machen, dass sie nach dem nächsten Raum suchen, dann erschaffen sie das Gegenteil, sie suchen nach dem nächsten Raum, sie erschaffen das Gegenteil, sie suchen nach dem nächsten Raum. Und wieder erzeugen sie das Gegenteil, aber jetzt bleibt uns nur noch das. Aber wenn wir den Code ändern, anstatt wenn Sie einen Block haben, dann öffnet dieser Block einfach diesen Pfeil. Also verbinden wir alle Pfeile, die die Labyrinthe darstellen, und versuchen herauszufinden, ob es noch einen Block gibt Wenn hier zum Beispiel ein Block wäre und er dann so weitergemacht hat und nie versucht hat, und er dann so weitergemacht diesen Weg zu gehen, sagen wir, er käme von hier, haben wir hier einen weiteren Block Und dann hat es versucht, diesen Weg zu gehen. Es hat nicht versucht, diesen Weg zu gehen, also gibt es hier keinen Pfeil. Also im Grunde behalten wir unsere schlangenwurmartigen Muster der Ma bei. Um das zu tun, müssen wir hier eigentlich nur ein paar Dinge hinzufügen. Wenn wir also durch die verfügbaren Nachbarblöcke iterieren, werden wir unserem ursprünglichen Block in diese Richtung zeigen O-Block, den wir vom Dungeon Mac aus testen. Landkarte. Dann müssen wir diesen Block aus den gültigen Blöcken finden. Ich werde diese Wertbasis ermitteln, den Wert, den ich überprüfe. Davon ausgehend werde ich den Kerker nutzen , um den passenden Schauspieler zu finden Jetzt gehe ich in entgegengesetzte Richtungen, weil wir wollen, dass der entgegengesetzte Pfeil erscheint Und ich werde mich wieder von den anderen Elementen abwenden. Diese entgegengesetzte Richtung. Ich werde mich hier verbinden. Anstatt es immer wahr zu haben, werde ich es einfach so machen wie im Wegweisungsblock. Lassen Sie uns jetzt die Zeilen hier klarstellen , weil es zu viele sind. Mach das Original, wir werden hier eine Verbindung herstellen. Vielleicht hast du hier auch weniger. Denn hier brauchen wir nur einen, wir brauchen nicht zwei Vielleicht können wir das alles lokal variabel machen. Angrenzend. Nun, das ist bei den Dingen hier nicht wirklich nötig. Hier. Hier. Ich brauche keine Leitung mehr. Ich kann kaputtgehen. Hier. Jetzt ist es ein bisschen besser. Es könnte viel besser werden, wenn wir das so variabel bewerben und uns mit allem verbinden würden. Aber ich finde es lesbar. Erstens, geh ein bisschen näher. Ich denke, es ist viel lesbarer als möglich, als es jetzt sein kann. Also, mal sehen, ob das funktioniert hat. Kompilieren. Lass uns zuerst. Jetzt können wir sehen, dass wir einige Orte haben, die abgesperrt sind. Aber die meisten Orte sind es. Wir haben Korridore, das haben wir wirklich, da muss ein Irrtum vorliegen, denn sie sollten zugänglich sein Geben Sie mir eine Sekunde, um das zu überprüfen. Ja, das ist so, ich drehe die Pfeile nicht richtig Ich schalte die Pfeile im ersten Prüfblock um. Ich schalte die Pfeile im zweiten Prüfblock nicht um. Also wenn ich das hier tatsächlich verbinde. Könnte behoben werden. Du wirst ein paar Höhlen haben. Dieser Grund ist eine Aktion, die ich überprüfe. Oh ja, ich füge in derselben Richtung hinzu, die ich überprüfe. Also werde ich die Anweisungen von hier aus abrufen. Wir wollen, dass die Richtung zu den Richtungen des gegenüberliegenden Blocks hinzugefügt wird. Nicht der, den wir gerade überprüfen, sondern derjenige, der auf diesen Scheck reagiert. Dieses Add hat also die Richtungen des Feldes neben dem Schauspieler. Kompiliere auch und V, es funktioniert. Das einzige, was nicht funktioniert, ist die erste Kachel. Sei auf dem ersten Plättchen, wir schalten die Pfeile nicht um Also lass uns das machen. Wir gehen zu unserer Funktion auf der ersten Kachel. Und wir werden es in den Bereich ziehen. Und wir werden Schlüssel holen. Und jeder. Eigentlich können wir, wir müssen sie nicht alle durchgehen. Wir brauchen eine For-Schleife. Wir können diesen einfach als Kompilieren hinzufügen und erneut speichern. Und jetzt ist es viel praktikabler. Lass es uns noch einmal überprüfen. Ja, wir haben ein schönes Labyrinth und wir können sehen, dass es einige Wände gibt , die einen Pfad bilden Jetzt. Der nächste logische Teil wäre, wenn wir unser Labyrinth haben, wir haben einige Horden, einige Pfade, die größtenteils blockiert werden können, einige Teile, die nicht gesperrt sind, der nächste Schritt wäre, einige Regeln für die acht Räume hinzuzufügen einige Regeln für die Aber da wir wollen, dass ein bestimmter Raum ein Ausgang ist und einige bestimmte Räume zum Beispiel eine Truhe sind, in der sich der Ausgangsschlüssel befindet Es wäre klüger , den ersten Platz im Labyrinth zu nehmen. Wenn ich zum Beispiel hier einen Raum einrichte, dann schränkt das stark ein, wo ich die Schlüssel unterbringen kann Das heißt, ich habe gesagt, dass die Schlüssel in diesem Feld sind, dann teilt der Raum diese Bereiche plötzlich automatisch ein bisschen besser auf. Wenn ich also Blöcke verteilt habe , die für Räume nicht geeignet sind, sollte ich mich mit Logik auskennen Die ganzen Räume erstellen. Sie sind es jedoch. Sei es, dass sie mehr Platz draußen haben können. Wenn Sie eine Karte haben, auf der Sie Orte mit X haben, die nicht hier platziert werden, wird dadurch stark eingeschränkt, wo Räume gebaut werden können. Also so werden wir es machen. Und ich denke, das ist vorerst ein guter Haltepunkt. Im nächsten Schritt werden wir den Bauplan für den Aufzug und die Truhe erstellen und dann einen Weg finden, sie zu spawnen Das war's vorerst. Tschüss. Sing dich beim nächsten. 25. Raumbau und Aufzug-Blueprint: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir unsere Funktion für den Pi, der keine Verbindungen herstellt, aktualisiert , anstatt uns in jedem Block nach einer gültigen Feldposition umzusehen, einer Position, die zum Labyrinth gehört, um zu überprüfen, ob dieses Feld tatsächlich nach den Feldpositionen sucht Position, die zum Labyrinth gehört , um zu überprüfen, ob dieses Feld , aber wir überprüfen jetzt, ob diese Feldposition, unser Block, den wir überprüfen, einen Pfeil darauf hat, sollten wir aktiviere den entgegengesetzten Pfeil zu dieser Position Lassen Sie uns also im Grunde Farbe und zum Beispiel gelbe Farbe von Neda mitbringen Beispiel gelbe Farbe von Neda Wenn unser Block zum Beispiel einen Pfeil zu dieser Seite hätte, und sagen wir, einen Pfeil zu dieser Seite, und der gegenüberliegende Block hätte einen Pfeil zu dieser und dieser Seite, jetzt unser Block, der von hier zu diesem Block prüft Das ist die Prüfung , die gerade durchgeführt wird. Da steht, ich habe einen Pfeil auf dich gerichtet. Hast du einen Pfeil auf mich gerichtet? Wenn nicht, dann erstelle einen Pfeil. Außerdem, wenn er keinen Pfeil hat und dieser einen Pfeil hat, wird er tatsächlich ausgeschaltet, weil wir ihn gesetzt haben. Wir haben ihn hinzugefügt, nicht gesetzt, weil AD ein Setter für Maps ist , wenn der Wert existiert Wenn ich also keinen Pfeil habe, dann haben Sie auch keinen Pfeil weil wir das Ergebnis anhand unserer Anweisungen im ursprünglichen Prüfblock erhalten anhand unserer Anweisungen im ursprünglichen Prüfblock In diesem Fall haben wir gesagt, dass wir weiterhin einige Blöcke in unserem gesamten Labyrinth bauen werden einige Blöcke in unserem gesamten Labyrinth , sodass wir keine Räume haben werden, so wie wir den Aufzugsblock und den Kastenblock, die Kiste mit dem Schlüsselblock haben Kiste mit dem Schlüsselblock Es ist also einfacher, in den Regeln zu sagen, dass, wenn wir, sagen wir, zum Beispiel, wir wollen, dass der Aufzug in den letzten Blöcken ist den letzten Blöcken Nehmen wir an, das ist die letzte Kiste, setzen L hier ein, letzte Kiste, und wir wollen die vorletzte, die drittletzte. Nehmen wir an, wir wollen, dass sich die Box , der Aufzug , in einem dieser Räume befindet. Nun, wenn diese Räume erstellt werden. Wenn diese Kacheln, nicht Räume, zu einem Raum gemacht werden, dann könnte unser Aufzug nicht in dem Raum sein und unser Code würde abstürzen. Es wäre also einfacher für uns, Orte festzulegen , die im ganzen Labyrinth keinen Raum bilden , weil wir dafür Regeln haben und dem Rest des Labyrinths überlassen, Räume zu erstellen, wann immer dies möglich Räume zu erstellen, wann immer dies sehen Ich denke, wir werden diese Dinge jetzt klarer in Aktion Oh, das Wichtigste zuerst. Lassen Sie uns die Baupläne erstellen , die wir für den Aufzug verwenden werden Regale mit den Bauplänen. Also klicken wir mit der rechten Maustaste auf unseren Blueprint-Ordner. Wir wählen den Blueprint und wir wählen Actor aus Also werden wir diesem Aufzug den Namen BP geben. Gehen wir in den Aufzug und fügen ein statisches Netz hinzu. Und es wird jetzt sein, das ist nur zur Schau, also machen wir einfach was auch immer. Lass uns einen Tisch aufstellen. Lass uns das hinstellen. Das ist groß. Wir wollen etwas Kleineres. Ja. Das werden wir vorerst gut machen. Das wird für unseren Aufzug stehen. Ich kompiliere und speichere und lass uns einen weiteren Blueprint erstellen AEP-Test. Großer Test Okay. Öffnen wir es und erstellen wir ein statisches Netz. Habe dieses statische Netz gemacht. Ich glaube, wir haben eine Truhe, die erste. Ordnung. Kompilieren und speichern Sie vorerst. Aber wir haben einige Repräsentationen von ihnen, wenn wir die Regeln im Labyrinth festlegen, wo sie gebaut werden sollen Lassen Sie uns nun mit unserer Dekoration fortfahren. Wir haben die grundlegenden Kacheln erstellt. Und da wir die Basiskacheln erstellt haben, erhöhen wir auch den Ladebalken etwas. Also werde ich dieses festgelegte Prozent c kopieren und einfügen , ohne dass das c tatsächlich geladen wird. Aber ich werde es danach löschen. Ab jetzt setzen wir einen Wert, den wir im ersten Satz haben wollen , und dieses Mal werden wir 5,0 0,5 sein, weil wir von 0,45 waren mit dem festen Verbindungsverbot und dem festen FS-Ausgang Seien Sie jetzt ehrlich, denn das wird ein bisschen schnell gehen Wir können hier einige falsche Verzögerungen angeben. Setzen wir eine Verzögerung von 0,1 ein. Wir geben also die Illusion, dass der Computer denkt. Jetzt brauchen wir eine neue Funktion, und wir werden diese Funktion im Aufzug aufrufen. Und dann werden wir diese Funktion aufrufen. Wir sind schon drin Und was wir als Erstes brauchen, ist unsere variable Dungeon-Map Wir holen jetzt die Schlüssel raus. Und um unseren Aufzug zu starten, werden wir den letzten Index verwenden Welches ist das letzte Plättchen, das im Labyrinth platziert wurde. Also, wir werden diese Kopie des letzten Index besorgen , also haben wir unsere Verordnung, und wir werden diese Koordinaten auf eine Variable hochstufen , die wir Aufzugsstandort nennen, falls wir sie brauchen Jetzt holen wir uns unsere speziellen Kacheln, die Kacheln auf denen nichts gebaut werden soll, und wir werden ihnen diesen Aufzugsstandort hinzufügen weil wir nicht wollen, dass etwas anderes auf den speziellen Kacheln gebaut wird. Als Nächstes erstellen wir einen Umkreis um den Also wird in der Nähe des Aufzugs nichts auftauchen. Also wollen wir den Umfang dieser Kachel tatsächlich zu den Spezialkacheln hinzufügen dieser Kachel tatsächlich zu den Spezialkacheln Und dafür benötigen wir eine neue Funktion. Und diesmal wird es eine reine sein weil sie nur einige mathematische Operationen ausführen wird . Es wird eine Art Kopie unserer Kreuzplättchen sein. Es wird nur die Sichtplättchen auch bekommen. Also alle acht Richtungen rund um eine Kachel. Also werden wir dafür sorgen, dass das funktioniert. Lassen Sie uns eine Funktion erstellen. Nennen wir es in einer einzigen Kachel im Umkreis. Es ist richtig. Habe ich nicht. Und lassen Sie uns diese Funktion eingeben. Wir sind schon drin. Machen wir es von Anfang an zum ersten Fall. Und für die Eingabe benötigen wir natürlich einige T-Punkte , um die Koordinaten zu überprüfen. Der Name ist Two Ports. Gehen wir jetzt zu unserem Windkreuz nebenan. Also werden wir das kopieren. Und lassen Sie uns zu unserer Funktion zurückkehren. Wir fügen das ein, das unten, und ich werde die Kabel hier anschließen Jetzt haben wir das Kreuz. Was wir im Grunde brauchen, ist mehr, was im Moment eine Frage der Organisation wäre. Würden wir sie zum Beispiel im Nordosten zwischen dem Nordosten, im Südwesten zwischen dem Süden und dem Westen platzieren sie zum Beispiel im Nordosten zwischen dem Nordosten, , oder würden wir sie wie zuvor beibehalten und sie unten hinzufügen. Vielleicht mache ich das. Behalte sie wie zuvor und die neuen unten. Okay. Also brauche ich oder mehr, und ich brauche die Plus-Eins von X und die Plus-Eins von Y. Dann brauche ich die Dann brauche ich Plus-Eins für das X und die Minus-Eins das Y, dann die Plus-Eins Ops, nimm Plus eins von Y und die Minus-Eins von X. Und dann beide auf Minus Eins. Hier, jetzt, es ist nicht wirklich wichtig, was oder was wir tun wollen. Aber wir können es herausfinden. Aber jetzt nicht. Lass uns das fortsetzen. Wir haben also den Spawn-Aufzug. Wir haben den Standort des Aufzugs hinzugefügt, und jetzt werden wir diese neue Funktion f single verwenden , aber ich habe keine Ausgabe erstellt Lassen Sie uns also eine Ausgabe erstellen. Machen wir daraus ein Array. Nennen wir diese Perimeter-Kachel ps. Und lassen Sie uns das hier verbinden. Lass uns zurück zum Aufzug gehen. Jetzt ermitteln wir den Standort unseres Aufzugs. Wir gehen in einer Schleife zu diesen Ordinaten, die den Umfang dieser Kachel bilden Und jetzt fügen wir sie der speziellen Kachel hinzu. Ich werde diesen Code von hier kopieren und einfügen. Ich werde das hier und das hier verbinden. Das einzige Problem dabei wäre, dass, wenn ein Plättchen des Perimeters nicht im Dungeon wäre, es zu speziellen Plättchen hinzugefügt würde Spezielle Kacheln würden also Koordinaten enthalten, die sich nicht im Dungeon befinden Wir hätten einige Regeln verwenden können, um zu sagen, dass, wenn sich keine speziellen Steine im Dungeon befinden, etwas dagegen unternommen werden muss, aber wir können das auch hier filtern, um das nicht zu haben Ich hole mir die Karte des Dungeons. Ich werde es herbringen. Ich werde fragen, ob es die Koordinaten enthält , die wir hinzufügen, und wenn es sie enthält, werde ich einen Zweig verwenden, um sie hinzuzufügen. Wenn nicht, füge sie nicht hinzu. Ich werde kompilieren und speichern. Und um zu sehen, ob es funktioniert, werden wir vorerst den Aufzug spawnen Also werden wir ihn danach löschen, weil wir alle unsere Requisiten an einem bestimmten Punkt spawnen werden Also, jetzt werde ich einen Schauspieler aus der Klasse zum Debuggen spawnen und wir werden sehen, was passiert wenn er in der letzten erzeugt wurde, und wir werden diese Transformation aufteilen , wenn er in der letzten erzeugt wurde, und wir werden diese Transformation aufteilen. Ich werde den Standort des Aufzugs herausfinden. Und wir werden uns auch Dungeon Mp holen. Und auf der Karte des Dungeons finden wir den Schauspieler auf dem Aufzug, auf der Kachel Und daraus werde ich den Standort des Schauspielers ermitteln. Ich werde das hier verbinden. Und für den Kurs werde ich auswählen. Tor. Und wir können es vorerst so lassen. Wir müssen es nicht löschen. Und ich werde das bei einem Ribal namens Elevator bewerben Ribal namens Elevator Okay. Das ist in Ordnung. Kompilieren und speichern. Lass uns spielen. Und es gibt keinen Aufzug , weil ich die Funktion nicht anrufe. Oh, rufen wir den Aufzug an. Auf unserer Eventgrafik im Corting. Lass uns anfangen und spielen. Wir haben unseren Aufzug und er ist auf unserer letzten Kachel. Also fangen wir hier an und wir haben hier unseren Aufzug , der uns zum nächsten Kerker führt Ich denke, das ist vorerst ein guter Stopp. In der nächsten werden wir uns die Brust putzen. Auf Wiedersehen. 26. Truhen-Schlüssel-Blueprint: Hallo und willkommen zum Game Design Workshop N Real Engine Five Procedural Dungeon Action P Z Creation Calls letzten Lektion haben wir begonnen , unser Labyrinth mit unserem Aufzug zu dekorieren Und in dieser fahren wir mit unserer Truhe fort , dass wir den Schlüssel für den Aufzug fallen lassen werden Also, was wir im Aufzug gemacht haben , ist, dass wir die Karte des Dungeons bekommen haben Wir haben die Schlüssel von der Dungeon-Karte und den letzten Index bekommen, weil der Aufzug im letzten Slot erscheinen wird Also haben wir den letzten Platz zum Spezialplättchen hinzugefügt, sodass dort nichts anderes erscheint, und wir haben eine Funktion entwickelt, um den Umfang eines einzelnen Feldes zu ermitteln den Umfang eines einzelnen Feldes indem wir im Grunde die acht Richtungskoordinaten addieren Danach haben wir diese Koordinaten zu den Spezialplättchen hinzugefügt und herausgefiltert, den Spezialplättchen hinzugefügt und ob sie im Dungeon enthalten sind oder nicht, und dann spawnen wir den Jetzt werden wir eine neue Funktion erstellen, um die Truhe zu spawnen Aber wir werden diese Funktion p est nennen. Wir spawnen sie nicht wirklich, also sollte der Name vielleicht nicht Spawn Elevator Es sollte „ds elevator“ lauten, und das sollte „ create cords est Denn wie gesagt, wir werden den Code später aus dem Aufzug löschen , diesen hier, und wir werden all unsere Requisiten an einer anderen Stelle des Algorithmus spawnen anderen Stelle des Gehen wir zurück zur Erstellung der Kerne für die Truhe. Lassen Sie uns jetzt noch einmal unser Eigentlich können wir den Code von hier kopieren und einfügen. Wir können uns die Karte des Dungeons holen, die Schlüssel, und eigentlich brauchen wir nur die Also werde ich das hier einfügen. Und was wir brauchen, ist wieder der letzte Index. Und wir werden das in zwei Teile teilen. Also können wir die Hälfte haben, wo die Mitte unseres Kerkers ist? Wir könnten auch Mac-Stile machen, die durch zwei geteilt werden, und es wäre dasselbe Aber das ist auch ein netter Weg. Nur für den Fall , dass wir das Labyrinth später aufrüsten wollen , um zum Beispiel neben dem Hauptteil noch ein paar zusätzliche Kacheln zu haben zum Beispiel neben dem Hauptteil Nehmen wir zum Beispiel an, wir spawnen einige geheime Bereiche. Wir spawnen einige zusätzliche Dinge außerhalb des üblichen Algorithmus , der den Dungeon erstellt hat Oh, wir werden die Hälfte davon bekommen. Und wir werden das zu einer lokalen Variablen machen. Nennen wir das einen Schatzindex. Und warum werbe ich jetzt für diese beiden Schatzindizes? Das liegt daran, dass ich anhand der Hälfte der Felder und mehr überprüfen möchte, ob es einen Ort gibt , an dem wir unsere Schatztruhe spawnen können Weil wir nicht wollen, dass unsere Schatztruhe auf dem ersten Feld erscheint, zum Beispiel auf den ersten zwei, drei Kacheln zum Beispiel auf den ersten zwei, drei Es könnte davon abhängen, wie sich unser Labyrinth verzweigt, und das wäre eine der Auslassungen, die passieren Aber wir sollten versuchen, dass das ein bisschen weniger passiert. Also werden wir nach der Hälfte des Labyrinths suchen der Hälfte des Labyrinths suchen Und um das zu tun, werden wir eine Wildschleife verwenden. Lassen Sie mich tatsächlich für eine Sekunde Farben mitbringen. Also was wir gemacht haben, ist, wenn wir die Gesamtzahl der Felder haben, unser Labyrinth, lassen wir das unsere Dungeon-Map Also haben wir den letzten Index. Dieser letzte Index, und wir teilen ihn durch zwei. Nehmen wir an, es sind 20, also gibt es jetzt diese Zehn. Nun haben wir diese Zehn als Beginn unseres Schatzindexes festgelegt . Das sind zehn. Wir machen eine Y-Schleife, die das überprüft. Wenn der Schatzindex dieser Hälfte entspricht, weil wir ihn nicht exklusiv haben werden. Wir wollen also über der Hälfte des Labyrinths, nicht genau in dem Block, sagen wir zum Beispiel in dem Index, der das repräsentiert Da es aber den Fall gibt , dass das endlos laufen wird, da Loops, Wi-Loops ein bisschen sind, braucht das ein Ja. Aber Wi-Loops sind ein bisschen fies, sagen wir, sie können deinen Computer einfrieren, bis sie ihre Aufgabe abgeschlossen haben, weil sie laufen, wie wir sie gerade ausführen, es ist im Haupt-Thread, also kann es deinen Computer komplett einfrieren. zu vermeiden, werden wir also auch eine Tres-Variable erstellen. Und wir werden sagen, versuche es zum Beispiel 30 Mal. Was wir tatsächlich tun werden, ist ja, so etwas in der Art. Mac-Stile sind im Grunde genommen durch zwei geteilt. Wenn dieser Wert über dieser Zahl liegt, schneiden Sie die Y-Schleife ab. Dort wurde kein gültiger Standort gefunden. Also werden wir manuell einen Ort einstellen, der genau die Mitte sein würde Also ja. Das ist es, was ich über Wi-Loops sagen wollte, dass sie knifflig sind und dass sie Laufzeit nicht wirklich benutzt werden sollten. Aber für uns ist diese Laufzeit nicht gerade Laufzeit, weil wir auf dem Laden aufbauen. Wir machen es also nicht während der Laufzeit des Spiels, welche FPS wichtig sind. Weg. Lass uns das machen. Lass uns den Wi-Loop mitbringen. Dieses gefährliche Ding. Nehmen wir als Bedingung an, dass Index der Kennzahl gleich dem letzten Index geteilt durch zwei ist. Wenn das stimmt, wird der Body-Loop ausgeführt. Wenn dieser Begriff fällt, wird er beendet. Es gibt auch einen Tooltip, es ein bisschen besser erklärt als ich Oh. Seitdem haben wir keine weiteren Bedingungen die wir für spezielle Räume anbieten könnten. Dies wird normalerweise auf die Hälfte plus eins sein, weil wir diesen Wert um eins erhöhen werden. Aber zuerst sollten wir unseren Fehler absichern. Wir werden eine neue lokale Variable erstellen, wieder eine Ganzzahl haben wird. Nennen wir diesen Preis. Lassen Sie uns diesen Wert zunächst um eins erhöhen. Und lass uns eine Frage stellen. I R tris entspricht dem letzten Index geteilt durch zwei, denn jedes Mal, wenn es eins addiert, beginnt es bei Null Wenn das stimmt, bedeutet das, dass hier die Hälfte unseres Labyrinths Wenn das also wahr ist, setzen wir den Schatzindex auf 20 und damit beenden wir unsere Schleife , nur in K, nun, für uns werden es alle Fälle sein. Wenn Trice nicht 50% des Labyrinths entspricht , bekommen wir unseren Schatzindex, wir werden ein T addieren, und wir werden unsere Dungeon-Karte bekommen, und wir werden den Schauspieler finden den Schauspieler und wir brauchen die Koordinaten Also werde ich die Schlüssel hier holen. Ich hole mir eine Kopie und verbinde das plus eins. Und dann werde ich den Schauspieler finden. Nein, ich werde nachsehen. Eigentlich tut es mir leid, ich brauche den Schauspieler nicht, um das zu überprüfen. Ich brauche nur die Koordinaten, um das zu überprüfen. Wenn sie in den speziellen Kacheln enthalten sind. Wenn es in den Spezialplättchen enthalten ist, werde ich nichts tun. Wenn es nicht in den Spezialplättchen enthalten ist, setze ich unsere Schatzvariable Schatzindex. Schatz plus eins. Nun, weil ich vor dem Zweig etwas hinzufüge, heißt das nicht, dass ich setze. Deshalb habe ich es so gemacht, um das zu erklären. Wenn ich etwas hinzufüge und die speziellen Kacheln überprüfe , im Grunde genommen, ob die Koordinaten Wenn ich also vor dem Zweig etwas zu diesem Index hinzufüge, heißt das nicht, dass ich ihn festlege. Ich füge nur hinzu, um einen Wert, eine Zahl, zu erhalten , und ich überprüfe anhand dieser Zahl, etwas, das ich will. Und wenn das, was ich will, in diesem Fall nicht wahr ist, dann setze ich diese Zahl in den Schatzindex. Wie auch immer, lass uns weitermachen. Nun, diese Y-Schleife hat auf die eine oder andere Weise geendet. Wenn sie mit dem Schatzindex Null geendet hat , müssen wir es wissen. Ich werde überprüfen, ob der Schatzindex Null ist. Wenn das stimmt, werde ich den Schatzindex auf die Hälfte des Labyrinths setzen den Schatzindex auf die Hälfte des Labyrinths Wenn es nicht stimmt, ist es nicht wirklich wichtig, weil es bedeutet, dass dieser Zweig ausgeführt wurde und er einen neuen Wert gefunden hat Als Nächstes werde ich die Koordinaten erneut abrufen. Ich werde von hier wegkommen. Ich werde es zu den Spezialkacheln hinzufügen. Ich werde für diese PS werben. Der Get braucht den Altersindex. Andernfalls erhält es den ersten Index Null, was der Startblock wäre. Ich werde das auch zu einer Variablen hochstufen und diesen Ort nennen. Lassen Sie uns nun zum Debuggen unseren Telefonapparat BP Elevator aus dem Aufzug mit acht Kabeln holen unseren Telefonapparat BP Elevator aus dem Aufzug . Gehen wir zurück, um Cords est zu erstellen Statt des Aufzugs werde ich den größten Est wählen Anstatt den Standort des Aufzugs werde ich hier nur den besten Standort angeben. werde das löschen und ich werde es so variabel bewerben. Ja. Handeln. Um zu kompilieren und zu speichern, und lass uns zuerst spielen. Und, aber ich habe vergessen, diese Funktion nochmal aufzurufen. Erstelle die Kerntruhe nach der anderen den Aufzug des Kerns. Wie durch ein Wunder funktioniert es nicht wieder. Oh nein, ist es. Hier ist es. Wir haben die Truhe. Es ist in einer Ecke. Es spielt keine Rolle. Es ist seit 20 Uhr auf der Nummer 11 und es ist zehn plus eins. Die Y-Schleife hat also korrekt funktioniert. Also, wenn wir bei Null anfangen würden, müssen wir hier rüber gehen, den Schlüssel holen und zurückkommen und zu unserem Aufzug gehen. Lass uns noch einen erstellen. Hier drüben, der Aufzug ist da. Ja, wo fangen wir an? Wir fangen hier an. Wir fangen hier an. Wir können das sehen. Wir wissen nicht, ob die Schlüssel hier sind, wir könnten hier durchgehen, wir könnten gehen. Soweit ich das beurteilen kann, werden einige gültige Gameplay-Szenarien erstellt . Wir fangen hier an. Wir können sofort den Aufzug sehen. Ja, gültige Szenarien hier drüben. Okay. Ich denke, das ist es für diesen. Ich sehe dich beim nächsten. Auf Wiedersehen. 27. Raum-Builder-Algorithmus: Hallo und willkommen zum Game Design Workshop, dem Kurs zur Unreal Engine Five: Procedural Dungeon Action-Rollenspielen Zuvor haben wir die Brust-Funktion „ Koordinaten erstellen“ im Labyrinth-Generator erstellt Brust-Funktion „ Koordinaten erstellen“ im Labyrinth-Generator Wir haben die Karte Dungeon verwendet. Wir haben den letzten Index der Schlüssel. Wir haben durch zwei geteilt und das in einer Variablen gespeichert, die wir Treasure Index nannten. Nun haben wir eine while-Schleife erstellt, die überprüft, ob der Schatzindex zwar der Hälfte des Indexes entspricht. Dann fügen wir einer Trice-Variablen, die bei Null beginnt, eins hinzu und wir werden überprüft, ob diese Variable der halben Länge entspricht der halben Länge entspricht Wir sagten, wenn das stimmt, bedeutet das, dass wir keinen gültigen Schatzindex finden können, also setzen wir den Schatzindex auf Null und beenden die Y-Schleife, oder wenn sie nicht gleich ist, versuchen wir, eine gültige Option zu finden , die nicht in den speziellen Kacheln enthalten ist, für uns ist es plus eins, da wir momentan keine anderen speziellen Gleichheitsregeln haben . wir dann die Schleife verlassen, wenn sie Null ist, was bedeutet, dass sie versucht hat, einen zu finden und es nicht konnte, dann setzen wir die Schatzkacheln auf genau die Hälfte des Index, und wenn sie dann falsch war, haben wir den neuen Schatzindex hinzugefügt. Wenn er falsch ist, bedeutet das, dass er einen neuen Index gefunden hat. Wir haben diesen Index zu unserer speziellen Kachelanordnung hinzugefügt und die Koordinaten zur Position der Truhe hinzugefügt. Und danach spawnten wir, um eine Truhe zu debuggen. Jetzt ist es an der Zeit, diese sogenannten Räume zu unserem Spiel hinzuzufügen. Wir haben also mehr Abwechslung und komplexere Mechaniken in unserem Labyrinth Um das zu tun. Lassen Sie uns zuerst Farbe mitbringen und einige Dinge erklären , die für unsere Logik erforderlich sind. Wenn wir zum Beispiel vier Blöcke haben, vergessen wir die speziellen Blöcke. Nehmen wir an, es gibt vier Blöcke in unserem Labyrinth. Das Erste, was wir tun werden ist, wenn wir zum Beispiel von diesem Raum aus nachschauen, tut uns leid, nicht von diesem Raum aus Fangen wir von unten links an, denn so werden wir nachschauen. Wir beginnen mit der Möglichkeit unten links. Und wir werden anhand dieser Kachel nachfragen , ob es hier oder hier eine Kachel gibt. Also auch nicht nach Norden und Osten. Gibt es auf diesen Koordinaten eine Kachel darauf? Wenn es eine Kachel gibt, werden wir dafür ein Array erstellen, und wir werden für Looping verwendet Eigentlich ist es nicht viel. Punkte. Mit dieser Verordnung werden wir einen Kreis von vier Kreisläufen schaffen Mit dieser Verordnung werden wir einen Kreis von vier Kreisläufen Wie dem auch sei, innerhalb dieser For-Schleife werden wir nach einigen Regeln suchen und tatsächlich werden wir jede Menge vier Schleifen haben , um nach jeder Regel spezifisch zu suchen Wir wollen also alles in einer für Schleife übertreiben. Es wäre verwirrender, wenn wir hier einen Haufen von Regeln und Verzweigungen und allem haben es dann getrennt haben Diese Vierer-Schleife macht das, diese For-Schleife macht das, diese Fo-Schleife macht das, dann hat sie alles in einem Und wenn das dann ausreicht, werden wir es zu einer neuen Variablen hinzufügen Nun, warum sage ich eine neue Variable? Denn dieses Mal werden wir eine Struktur verwenden, eine Variable, die Struktur genannt wird. Was ist eine Struktur? Eine grobe Erklärung wäre eine benutzerdefinierte Liste von Variablen unserer Wahl, um sie in einer Struktur zu halten, um sie in einem Format zu halten, in dem wir all diese Arten von Variablen zusammenfassen können. Zum Beispiel haben wir einen Bolzen für Asgun , zum Beispiel Wir haben eine Ganzzahl für Amo. Wir haben eine Ganzzahl für Mana. Wir haben einen Wagen fürs Leben. In unserem Fall wird es eine Struktur sein, die aus Arrays besteht Und löschen Sie das alles, eine Struktur aus Arrays , die die Koordinaten der Räume sein werden Es wird also ein Array von 0,0 sein, dann wird es 0,1 sein, wird 11 sein, es wird 1,0 sein, wenn y hier und hier ist. Wie dem auch sei, nein, wir werden diese Struktur verwenden um alle Möglichkeiten zu haben, denn nachdem diese für diese zusätzlichen drei Koordinaten ausgeführt wird, wird diese für die nächsten Koordinaten ausgeführt, und dann wird diese für die nächsten Koordinaten ausgeführt, und diese wird für die nächsten Koordinaten ausgeführt. Und es wird so lange weitergehen, bis es sich anfühlt, als wäre das ganze Labyrinth, und wir haben eine Liste mit den möglichen Räumen Jetzt werden unsere Zimmer natürlich zwei mal zwei sein. Und wenn wir für eine größere Anzahl von Räumen dieses System wählen würden, das für größere Räume nicht sehr optimal ist, würden wir zusätzliche Koordinaten hinzufügen , so dass wir auch diesen Block überprüfen würden, wenn wir zwei mal drei wollen, oder wenn wir drei mal drei wollen, überprüfen wir die unten und unten angegebenen Koordinaten. Lass uns das jetzt machen. Also zuerst etwas Vertrautes. Lassen Sie uns eine Funktion erstellen. Wir haben eine Reihe von Funktionen. Irgendwann können wir unsere Funktionen so kategorisieren , dass wir zum Beispiel die reinen Funktionen in die Kategorie P einordnen können. Wir haben hier die Kategorie Pure erstellt Jetzt heißt es nicht „rein“, sondern „Put“. Rein. Okay, wir können also alle unsere reinen Funktionen auswählen und sie zum Beispiel zu dieser Kategorie hinzufügen . Lass es uns ganz schnell machen. Wir finden also all unsere Funktionen, auf denen Pure steht, und fügen sie der Kategorie Pure hinzu. Im Grunde haben wir im Moment also viele reine Funktionen. Das sind unsere Bausteine. Sagen wir, und das ist unsere Mathematik. Lassen Sie uns nun damit fortfahren, eine neue Funktion zu erstellen, hier das Plus-Symbol zu singen und diese Funktion aufzurufen, und diese Funktion aufzurufen möglicherweise Räume zwei mal zwei Räume zu finden. T zwei mal zwei. Nun, das wird eine etwas schwere Funktion sein, da es ein Vielfaches als Nächstes für eine Schleife geben wird. Also holen wir uns die Kerkerschlüssel. Für jede Koordinate werden wir überprüfen, ob es sich um einen gültigen Raum handelt Um das zu tun, werde ich eine lokale Variable erstellen und sie vom Typ b machen. ID ist ein gültiger Raum. Lassen Sie uns nur der Sache zuliebe das Gegenteil tun. Nehmen wir an, der gültige Raum ist am Anfang aktiviert. Also der Standardwert hier, wir müssen ihn kompilieren, um den Standardwert festzulegen. Der Standardwert für den gültigen Raum ist also t. Nun, wir bringen das mit einem Setter hierher , und ich könnte es hier einfach so einstellen, dass es wahr Ich brauche den Standardwert nicht, aber er könnte vom Standardwert beim Speichern stammen Und jetzt erstellen wir eine neue Variable namens R. Und sie wird vom Typ in Point sein Und der Typ Punkt ist, weil es Koordinaten und es ein Container-Array sein wird , und wir werden es hierher bringen und wir werden es löschen. Der Grund, warum wir tatsächlich löschen und die Variable hier auf true setzen , ist dass wir jeden Raum überprüfen werden, ich werde diese Informationen ausfüllen. Wir wollen, dass dieser Teil der Vierschleife die Informationen zurücksetzt, bevor wir unsere Prüfungen durchführen Denn wenn wir unsere Prüfungen durchführen, wenn wir die restlichen vier Schleifen machen, weil hier unsere F-Schleife ist, wird es nicht vier Schleifen für jede Schleife geben, sondern für die Nachbarkoordinaten dieser einen, der Raumnachbar-Aufnahmen Wir müssen diese Funktion erstellen. Es wird wieder eine reine sein. Also nehmen wir, wie gesagt, beim Malen die nächsten Koordinaten x dazu, plus eins, X und Y plus eins, um einen Raum mit zwei mal zwei Räumen zu erstellen. Und dann werden wir dafür sorgen, dass sie nach einigen Regeln suchen. Lassen Sie uns nun diese Funktion erstellen. Aber bevor wir sie erstellen, benötigen wir im Grunde wieder einen Teil der Feinkoordinaten, die feinen Nachbarkoordinaten. Gehen wir also zum reinen , suchen wir das benachbarte. Ich überquere angrenzend. Und lass uns kopieren. Lasst uns alles kopieren und löschen, was wir nicht brauchen. Oh, neue Funktion. Nennen wir es mach zwei mal zwei s. Machen wir es zu einem reinen Eins und ordnen es in die Kategorie Pure ein. Natürlich brauchen wir als Output den S. Ray-Endpunkt, natürlich wieder. Jetzt benötigen wir eine Eingabe, das wären Kabel, und das muss kein Array sein Es ist nur ein einziger Endpunkt mit Ipari-Koordinaten . Und lassen Sie uns einfügen, was wir von der anderen Funktion bekommen haben. Jetzt würden wir die Minuszahlen nicht brauchen. Wir würden das Plus eins brauchen. Es ist x plus eins. Es ist y plus eins und es ist x und y plus eins. Jetzt benötigen wir die ursprünglichen Raumkoordinaten. Also, wir werden das hier verbinden. Wir werden das löschen und wir werden das auch hier verbinden. Wir haben alle Raumkoordinaten, die Plus-Eins auf X, die Plus-Eins auf Yund die Plus-Eins auf jeder von ihnen und die Originalkoordinaten in einem Array, das wir als Raumkoordinaten ausgeben. Gehen wir zurück zu unserer Funktion, suchen nach möglichen Räumen und bringen wir diese neue reine Funktion hierher, die ich der Kategorie nicht hinzugefügt habe. Jetzt führe ich die falsche Funktion aus. Ich füge zwei mal zwei Raumkoordinaten hinzu. Hier sind wir, und wir werden sie durchforsten. Jetzt ist es Zeit für die Regeln, die wunderbaren Regeln. Und die erste Frage sollte natürlich sein, gehören sie in den Kerker Also werden wir unsere Dungeon-Variable hier kopieren lassen Dungeon-Variable hier kopieren Und ich werde Sie fragen, ob es diese Informationen enthält, die die Informationen aller Koordinaten des Raums Nun, wenn es nicht enthält, gehen wir zu dem gültigen Raum False, weil das kein gültiger Raum ist. All diese Koordinaten gehören nicht zu einem gültigen Raum, und das bedeutet, dass wir den Raum verlassen Wenn ja, sollten wir sie zu unserem neuen variablen, lokalen Variablen-Raum-Array hinzufügen , at und lassen Sie uns eine Verbindung herstellen Falls dieser Trigger ausfällt, nur der Optimierung halber ändern wir das nur der Optimierung halber für jede Schleife auf jede Schleife mit Pause. Was bedeutet das? Das bedeutet, dass wir diese Anzahl an Körpern erhöhen können , wann immer wir wollen. Wenn die Trigger das hier platzieren, bedeutet das, dass es nicht die gesamten Koordinaten durchläuft. Immer wenn es eine Koordinate findet , die sich nicht innerhalb des Dungeons befindet, wird diese Überprüfung beendet Wenn wir das also mit 1.000, sagen wir, Kacheln multiplizieren, das tatsächlich einen Vorteil, wenn es darum geht, wie oft unsere Funktion ausgeführt wird darum geht, wie oft unsere Funktion ausgeführt Lassen Sie uns nun mit einer Sim-Frage fortfahren. Ist das Zimmer gültig Wenn das stimmt, sollten wir mit dem nächsten Test fortfahren. Wenn das nicht stimmt, sollten wir nicht alle anderen Gründe angeben, warum wir diesen Raum behalten müssen. Ich denke, das ist ein guter Haltepunkt für diesen. Wir werden mit den nächsten Regeln für die nächste fortfahren . Auf Wiedersehen. 28. Finden möglicher 2x2-Räume: Hallo und willkommen zurück beim Game Design Workshop Re Engine Five Procedural Dungeon Action ApS Creation Courts Zuvor hatten wir die Möglichkeit, zwei mal zwei Räume zu haben, die ersten Teile dieser Funktion, die ersten Teile dieser Funktion, und wir haben auch das Zwei-mal-Zwei-Raum-Kabel erstellt. Dabei werden im Wesentlichen die Kabel, im Wesentlichen die Kabel die wir haben, plus eins auf dem X plus eins auf dem Y und plus eins auf beiden verwendet, um zwei mal zwei zu erstellen Nun, dann machen wir weiter und haben überprüft, ob sie zur Dungeon-Karte gehören Wenn nicht, verlassen wir unsere Nested-For-Schleife. Und wenn ja, fügen wir sie der Raumanordnung Wie gesagt, wir werden zu einer Struktur hinzufügen , die alle Raumanordnungen umfasst Lassen Sie uns jetzt mit einer anderen Regel fortfahren. Lassen Sie uns mit der Regel fortfahren, die in unseren Spezialräumen enthalten ist. Oh, wir werden unsere Zimmer einrichten. Denn im Moment hatten wir sie zwei mal zwei. Im Moment haben wir es in der Raumanordnung gespeichert, falls es wahr ist. Wir werden mit Pause wieder den wahren Zweig des gültigen Raums übersehen wieder den wahren Zweig , denn wenn er gültig ist fahren wir fort, wenn er nicht gültig ist, beenden wir und verbinden das Raum-Array Wir werden die speziellen, speziellen Kacheln mitbringen . Ja, spezielle Fliesen. Tut mir leid. Wir werden fragen, ob sie Artikel enthalten, irgendeinen der Artikel, die wir haben. Wir werden eine Filiale einrichten, um das zu erreichen. Wenn es enthalten ist, legen wir die gültigen Werte fest und dann legen wir die gültigen Werte fest brechen wir ab. Wenn es nicht enthalten ist, ist alles gut. Wir müssen nichts tun. Das ist ein gültiges Zimmer. Und dann werden wir erneut fragen, wann das abgeschlossen ist, ob es gültig ist, denn wenn wir gebremst haben, wollen wir aussteigen und nicht zum nächsten Schritt übergehen Der nächste Schritt erfordert nun einen weiteren Schritt als das Eingeben von Code. Benötigt den ST-Raum , über den wir gesprochen haben, die Struktur der Räume. Gehen wir also zum Inhalt. Gehen wir zum Ordner Blueprints. Lassen Sie uns leicht klicken und einen neuen Ordner erstellen. Und lassen Sie uns diesen Ordnern einen Namen geben. Und geben Sie diesen Ordner ein und klicken Sie erneut mit der rechten Maustaste und gehen Sie zu Blueprints und wählen Sie die Strukturvariable Jetzt werden wir diesen ST Underscore Rooms nennen. Ja, ST-Zimmer. Warum nicht? Es ist in Ordnung. ST-Zimmer. Wir werden kompilieren und speichern und wir werden eine Variable hinzufügen, die sie bereits hat. Es wird vom Typ Tintenstrahldrucker sein. Und jetzt wird es vom Typ Array sein. Nennen wir diesen Raum Kunst. Das ist im Grunde eine Möglichkeit, eine Liste von Arrays zu erstellen. Wir haben eine Struktur mit der Liste des Arrays, und dann erstellen wir ein Array mit dieser Struktur Also werden wir eine neue Variable in unserem Blueprint erstellen , die vom Typ S sein wird, Räume, und es wird ein Array sein, was es bereits ist Und wir werden das ST mes y nennen. Nun, wir benötigen eine temporäre Variable einer Struktur. Wenn wir hier einen Index hinzufügen, können wir sehen, dass der Index aus Raumcodes besteht , dass er seine eigenen Elemente hat Um das hier hinzuzufügen, werde ich es jetzt löschen. Es sollte keine Elemente enthalten Um das hier hinzuzufügen, werden wir eine neue Variante namens Ros Rom erstellen . Und was wäre hier der Sinn von This is a array. Es sollte kein Array sein. Es sollte eine einzelne Variable sein. Wir sind verwirrt. Warum sehe ich hier ein Array. Also Strukturen. Das ist eine Strukturvariable, und sie enthält dieses Array. Im Grunde haben wir also ein Array mit einer Struktur mit Arrays erstellt, falls das Sinn macht Was wir in dieser Struktur tun müssen, ist, Mitglieder in ST-Räumen zusammenzustellen Denn auf diese Weise ändern wir Daten in unseren Strukturen. Wir können nicht, wenn wir Räume einrichten, keine Mitglieder schicken, Räume über dem Knoten einrichten. Es gibt eine Gruppe von Räumen ST und es gibt eine Gruppe von Mitgliedern in Raum ST. Wenn ich also die Räume ST als Variable festlege, dann bedeutet das, dass Sie die gesamte Variable ändern. Wenn ich Elemente festlege, kann ich die Mitglieder der Struktur ändern. Wenn diese Struktur zum Beispiel, wie ich zuvor beschrieben habe, eine Gesundheitsvariable, eine Waffenvariable, eine Amo-Variable hätte, dann könnten wir hier die Mitglieder von entscheiden lassen , was wir von diesem Knoten wollen. Zum Beispiel haben wir momentan Raumkoordinaten. Ich möchte die Koordinaten der Mitgliederräume festlegen. Wir hatten einen anderen Wert. Gesundheit. Ich hätte zum Beispiel einen Pin für den Gesundheitswert und den Rest der Liste nicht aktualisieren können. Was wir brauchen, ist nicht der reguläre Feststeller, wir müssen Mitglieder zusammenstellen Es ist ein einzigartiger Knotenpunkt für Strukturen. Wenn der Raum gültig ist, werden wir die Mitglieder einstellen. Wir werden den Raum, den wir gerade erstellt haben, die Raumanordnung so einrichten , dass er das Mitglied dieser Raumstruktur ist. Dann werden wir unsere ST-Räume anordnen und Struktur hinzufügen. Wir haben also wieder eine Struktur mit inneren Koordinaten. Wir speichern diese Koordinaten in Form eines Arrays. Wir speichern sie in unserer Struktur, die ein Array innerhalb der Koordinaten hat, und dann verwenden wir diese Struktur, um sie in einem Array dieser Art von Struktur zu speichern . Ich hoffe, das ergibt Sinn. Nun, das wäre es im Grunde genommen, wenn wir es so lassen würden, wie es ist, aber das würde eine Liste mit allen Möglichkeiten ergeben. Lass es uns zum Beispiel löschen. Ich hatte ein Zimmer hier, ein Zimmer hier, eine Kachel, kein Zimmer, eine Kachel hier, eine Kachel hier, eine Kachel hier, eine Kachel hier. Lass uns ein Raster erstellen. G. Wenn ich es bin, brauchen wir mehr Fliesen. Ich überprüfe diesen, ich überprüfe und wenn ich diesen überprüfe, überprüfe ich das. Aber dieser überschneidet sich. Es hat also eine Möglichkeit. Wir erhalten die Koordinaten von allem , was uns im Grunde zur Verfügung steht. Wir brauchen weitere Regeln, um das zu klären. Und da wir hier diese wunderbare Struktur haben, Reihe von Strukturen, die wir gerade erstellt haben, können wir eine weitere Regel erstellen, bevor wir sie hinzufügen. Wir können fragen. holen uns diese Struktur, diese Anordnung von Strukturen, bringen sie her und wir gehen wieder zu oder oder jeder Runde mit Pause. Und wir werden das verbinden. Das. Wir werden diese Filiale tatsächlich hierher bringen. Und wir werden fragen , ob irgendwelche dieser Koordinaten unsere Prüfkoordinaten sind, im Grunde genommen, ob sie sich auf einer dieser Koordinaten befinden. Um das zu tun, können wir, wie wir sehen können, nicht einfach von hier aus eine Gleichheit überprüfen. Wird die Verbindung trennen , weil es vom Typ ST ist. Es ist eine Struktur. Um nach einer Struktur zu suchen, müssen wir sie durchbrechen. Denn wir haben mich Schauspieler mitbringen lassen. Wie bei The Spa Actor The Transform, haben wir es aufgeteilt. Es ist der gleiche Weg aber das Gegenteil. Transformation ist eine Struktur. Wir können es auch teilen, wenn wir wollen. Aber weil es in einer Viererschleife ist, können wir es sogar in einer Viererschleife machen. Wir können es hier aufteilen und direkt die Variable abrufen. Aber ich wollte nur den Break-Knoten zeigen. Lass uns rekombinieren. Wenn wir eine Struktur haben, die aus vielen Elementen besteht, wäre die Aufteilung in der Vierer-Schleife visuell nicht so gut Wie dem auch sei, lassen Sie uns mit der Viererschleife weitermachen . Verbinde das hier. Und wir werden fragen, eigentlich brauchen wir hier eine Pause für jede Schleife mit Pause. Pause. Verbinde das hier. Wir brauchen hier tatsächlich eine Filiale, um zu fragen, ob es noch ein gültiges Zimmer ist. Denn wenn es kein gültiges Zimmer ist, sollten wir pausieren. Wir überprüfen hier nichts, aber wenn wir hier kaputt gehen, brechen wir auch hier ab. Ich werde hier eine Filiale aufstellen und fragen, ob das in dem Raum enthalten ist . Ich werde eine Verbindung herstellen. Wenn es eingedämmt ist, schlagen wir Poldrum in Löcher und wir brechen zusammen Es ist falsch, wir brechen zusammen. Es versucht erneut zu laufen, es ist falsch, wir brechen ab und dann brauchen wir einen anderen Zweig, der gültig ist. Und wenn es falsch ist, brechen wir wieder ab und kehren zur ursprünglichen Schleife zurück, die mit den nächsten Koordinaten beginnt. Der Grund, warum wir das hier hinzugefügt haben, ist , dass dies die Koordinaten sind, die wir hier überprüfen. Und wir überprüfen, ob in einem der Räume diese Koordinaten enthalten sind. Wenn sie das tun, brechen sie ab, das ist kein gültiges Zimmer, fahren Sie mit dem nächsten fort. Und jetzt können wir das hier verbinden. Und wenn alles wahr ist, wenn alle unsere Prüfungen wahr sind, dann erweitern wir die ST-Räume. Ich denke, das waren eine Menge Informationen. Wir sollten hier eine kleine Pause einlegen und mit der nächsten weitermachen. Tschüss. 29. Raumperimeterfunktion: Hallo und willkommen zum Game Design Workshop Under Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Vorher haben wir die Möglichkeit, zwei mal zwei Räume zu finden, weitergeführt Wir haben die Struktur der Raumanordnung erstellt. Und wir haben einige Tests gemacht. Wir haben überprüft, ob der Raum mit speziellen Fliesen bedeckt ist , ob er kaputt ist, und wir fahren fort, den nächsten Raum zu überprüfen. Wir haben auch überprüft, ob unser Raum in einem der Räume enthalten ist , die wir bereits hinzugefügt haben, indem wir die Struktur aufgebrochen haben, die wir mit dem ST-Rooms-Array erstellt handelt es sich um ein Array , das viele Strukturen mit unterschiedlichen Koordinaten enthält haben. Dabei handelt es sich um ein Array , das viele Strukturen mit unterschiedlichen Koordinaten enthält. Und dann haben wir überprüft, ob sie darin enthalten sind , dass sie einen Teil unserer Prüfraum-Anordnung enthalten. Wenn sie das nicht tun, fügen wir hinzu, dass unser Zimmer gültig ist zu keinem anderen Raum gehört. Es gehört zu keinem speziellen Plättchen und es befindet sich in unserem Kerker Füge die Koordinaten zu unserem System hinzu, Anordnung der ST-Räume. Nun, das einzige Problem mit dem Problem. Es ist kein Problem. Es ist eigentlich eine Designentscheidung, bei die Zimmer nebeneinander stehen können Fügen wir zum Beispiel noch ein paar hinzu. Gelbe Konsistenz wie bei meinen schlechten Zeichnungen. Sie sind konsistent. Besteht schlecht. Wenn wir also einen Raum in diesen Blöcken hätten, dann könnte hier ein weiterer Raum erscheinen, was mir persönlich nicht gefallen würde , weil dadurch zwei Räume nebeneinander entstehen Sie haben vielleicht eine Tür, sie haben vielleicht keine, aber sie werden immer eine Trennwand haben, was ich nicht mag, die Möglichkeit keine Tür zu haben. Wir könnten irgendeinen Code machen, wenn sich zwei Räume überschneiden, zwei sich ändern, vielleicht immer eine Tür auf einer Seite oder welcher Seite auch immer Aber ich finde es lustiger zu lernen, wie man einen Perimeter im Raum oder das als Variable erstellt Und dann können wir für den Perimeter tun, was wir wollen. Zum Beispiel könnten wir andere Regeln erstellen, wenn wir einen Raum entdecken, durch den wir drei oder vier gehen können, wir einen Korridor zwischen ihnen einrichten oder wir werden das nicht tun Wir bleiben bei unseren zwei mal zwei Räumen. Aber ich denke, es ist vielseitiger , die Umrisse der beiden mal zwei oder drei mal drei oder zwei mal drei oder zwei mal drei oder was auch immer wir entworfen haben , zu kennen drei oder zwei mal drei oder zwei mal drei oder was auch immer wir entworfen haben , Nun, wie werden wir das machen? Wir werden eine Funktion erstellen. Es wird unglaublich sein. Wir werden eine Funktion machen. Wir werden diese Funktion Wind Room Perimeter, Set Room Perimeter nennen Set Room Was sie tun wird, ist, die Raumbegrenzung zu finden Es wird es zu den Sonderräumen hinzufügen und zu Aktionen spezielle Räume zu den Räumen mit Raumbegrenzung hinzufügen. Und wir werden eine neue Variable benötigen. Und wir werden einige Wände löschen müssen. Und warum ist das so? Gehen wir zurück zum Malen. Wir werden brauchen, wenn wir ein Zimmer haben, die Wände, die benutzt werden, sind diese Blockwände Das heißt, wenn wir einen Raum haben, bleiben diese Wände, wenn sie an sind, auch bestehen Also müssen wir einen Weg finden, diese Wände zu löschen und einfach die Raumwände zu behalten, die wir wollen. Lass uns das machen. Neue Funktion. Nennen wir es Set Perimeter Weil es alles festlegt. Wir, wir werden eine Eingabe benötigen, und die wäre vom Typ Array, und das wäre unser Zimmerraum-Array. Lassen Sie uns diese Funktion aufrufen , denn wenn wir sie nicht aufrufen, ist das ein Durchlauf. Finden Sie es am Ende möglich , zwei mal zwei Räume zu haben, wo wir unseren Raum ST, unsere Raum-Anordnung, zum Raum st hinzufügen und dann diesen Raum ST zu den Arrays der Raum-STs Nun, am Ende haben wir hier die Raumbegrenzung. Weil das das Ende ist. Wir sagten, dass der Raum gültig ist, also weil er gültig ist, ist sein Umkreis Ich werde unsere Raumanordnung mit der Zimmeranordnung hier verbinden und zu unserer Veranstaltung zurückkehren Nun, wir wissen, dass von diesem Array der letzte Ort der ursprüngliche Ort ist. Wenn wir also zwei mal zwei Raumkabel machen, können wir sehen, dass das dritte, das letzte, das wir eingerichtet haben, die Originalkoordinaten Also hier fängt unser Zimmer an. Hier fängt es an. Aus diesen Koordinaten, wenn wir den letzten Index bekommen , wissen wir, dass es drei sind. Für den letzten Index drei hätten wir auch nur drei setzen können. Aber nur für den Fall, dass wir die Räume größer einstellen wollen, zum Beispiel wäre es besser, vier mal vier zu nehmen, um den Raumumfang für den letzten Index Da wir wissen, dass der letzte Index immer unsere ursprünglichen Prüfkoordinaten für den Raum sein würde unsere ursprünglichen Prüfkoordinaten für den Raum sein Weil die restlichen Koordinaten die Koordinaten sind, nach denen wir suchen. Das ist das Original Oh, was machen wir daraus? Warum ist das wichtig? Weil ich das jetzt kaputt machen werde . Weil es zwei mal zwei ist, werde ich einfach eins minus eins auf x und dann zwei auf x. Das macht es irgendwie unbrauchbar für größere Räume? Wir müssten diesen Betrag ändern wenn er größer als zwei mal zwei wäre. Nun, was ist das für ein Betrag? Wenn wir zu unserer Farbe zurückkehren und das löschen. Oh, wieder wundervolle Zeichnungen. Das sind Zimmer. Wenn das 0,0 ist. Wenn ich bei x minus eins gehe, ist das der X-Wert, das ist der Y-Wert. Minus eins ist -1,0, x, das ist Y. Wenn ich plus zwei nehme, wäre es 01, zwei, dann 2,0 Ich mache dasselbe mit Y. Also hole ich diese Kiste hier drüben, diese Kiste hier drüben, diese Kiste hier drüben, diese Kiste hier drüben, diese Kiste hier drüben, diese Kiste hier drüben Eigentlich, weil ich es auf beiden mache, hole ich diese Kiste hier drüben, diese Kiste hier drüben, diese hier drüben und hier drüben. Also das wäre minus eins minus eins, das wäre plus zwei plus zwei. Wie werde ich das alles durchstehen? Machen wir dasselbe mit y. Nun, bis jetzt haben wir für jede Schleife eine Schleife verwendet, die ein Array erforderte. Diesmal verwenden wir geschachtelte Viererschleife, also eine Vierer-Schleife, wieder eine Vierer-Schleife für Schleife mit Pause und wieder eine Vierer-Schleife mit Pause, eine geschachtelte für zwei verschachtelte Schleifen oder sowieso wieder eine Vierer-Schleife für Schleife mit Pause und wieder eine Vierer-Schleife mit Pause, eine verschachtelte Vierer-Schleife eine verschachtelte Vierer-Schleife Also werde ich das mit dem ersten Index und diesem letzten Index und diesem ersten im letzten Index verbinden diesem ersten im letzten Index Also, wenn wir bei minus eins x beginnen, werden wir das minus eins y überprüfen. Wenn wir also das minus eins x überprüfen, werden wir das minus eins y bis hin zu plus zwei y überprüfen. Dann geht es zum nächsten Index. Dabei handelt es sich im Grunde um verschachtelte vier Schleifen, wie es bei den übrigen vier Schleifen der Fall war , mit jeweils vier Schleifen im Array Worauf werden wir nun achten? Ich werde überprüfen, ob unsere Zimmereinrichtung es uns erlaubt, es mitzubringen. Oh, ich habe diese Variable hier. Zimmer strahlen. Wenn ich Rooms Ray eintippe, erhalte ich einen Verweis auf diese Variable. Ich muss also kein Kabel ziehen. Darüber haben wir gesprochen. Es geht um die Namenskonventionen und darum, dass sie nicht mit den variablen identisch sein dürfen. Die lokalen Variablen, die Eingabe- und Ausgabevariablen, sie sollten alle einzigartig sein. Oh, ich werde überprüfen, ob das diese Koordinaten enthält, was bedeutet, dass ich das kaputt machen werde . Ich werde die X-Werte aus der ersten OR-Schleife und die Y-Werte aus der zweiten Schleife hinzufügen . Und jetzt habe ich einen achten Punkt auf der Grundlage dieser Zwei-For-Schleife erstellt , wir brechen ab. Ich gehe abzweigen. Ich werde das hier verbinden, ich werde das hier hinstellen. Und wenn das wahr ist, werde ich eine neue lokale Variable erstellen, Olim, sie wird vom Typ eh Point sein Und es wird ein Array sein. Ich werde hinzufügen. Welche Referenz, ich werde diese beiden Werte zu diesem Array hinzufügen. Kompilieren und speichern. Im Grunde genommen haben wir jetzt die Grenzen unserer Zimmer. F oder Loop mit Pause wurde nicht benötigt, weil wir hier eigentlich nicht brechen müssen Es gibt keinen Grund für uns, das zu unterbrechen. Also lasst uns das auf „Nur Loop“ ändern . Oder du kannst es einfach so lassen, es ist nicht wirklich wichtig. Ist nur, dass es kaputt geht. Ich verschiebe Knoten auf diese Weise, indem ich die Steuerung gedrückt halte, einfach ziehe und auswähle Und wenn ich die Taste gedrückt halte , während ich an einer Stecknadel ziehe, wird das Kabel einfach bewegt Vielleicht sieht das besser aus. Auf keinen Fall. Wenn Sie künstlerisch sind und sich mit Tabellen auskennen, gibt es Möglichkeiten, sie viel besser aussehen zu lassen. Kompilieren und speichern. Und ich denke, das ist ein netter Zwischenstopp. Wir haben unseren Umkreis. Wir haben die Koordinaten unseres Perimeters. Der nächste Punkt, das nächste, was wir tun sollten ist die Wände vom Umkreis zum Raum hin zu verengen Das nächste Mal werde ich das tun. Tschüss fürs Erste. Ich schicke dich beim nächsten rein. 30. Raumauflistung und Debugging: Hallo und willkommen zurück zum Game-Design-Workshop und zum Kurs zur Erstellung prozeduraler Dungeon-Action-RPs mit echter Engine Five Dungeon-Action-RPs Zuvor haben wir über die Erstellung der Raumbegrenzung gesprochen. Also haben wir eine Funktion erstellt. Wir haben unsere Raumanordnung erhalten, nachdem wir die Möglichkeit hatten, zwei mal zwei Räume zu finden , als wir entschieden haben , dass es in Ordnung ist, diesen Raum zu erstellen Wir haben dieses Array hinzugefügt. Und weil wir wissen , dass die letzte Option dieses Arrays unser Prüfblock ist, haben wir einige Koordinaten erstellt, um daraus die gesamte Verordnung zu überprüfen Gegen Ende, wenn es zum Raum gehört, wenn es zum Raum gehört, ist das ein Fehler Es sollte bei Stürzen sein. Wenn es nicht zum Raum gehört, vergrößern wir den Raumumfang, nicht wenn es zum Raum gehört Wenn es zum Raum gehört, füge es nicht hinzu. Wenn es nicht zum Raum gehört, fügen Sie es hinzu, denn wie gesagt, wir überprüfen alles rund um den Raum, alle benachbarten Gänge, und wir suchen auch nach internen Gängen. Also, die internen, nein, es ist kein Perimeter, es ist der Raum Und jetzt werden wir die Wände vom Umkreis zum Raum hin löschen die Wände vom Umkreis zum Raum hin Weil sie vielleicht andere Bälle haben, also sind sie nicht über dem Raum, und wir wollen sie nicht löschen. Das Erste, was wir tun müssen, ist die Raumbegrenzung zu ermitteln. Jetzt werden wir es hier einfügen und von hier aus gehen wir für jede Schleife Von all dem werden wir ein Kreuz nebenan finden. Wir wollen wissen, was sich daneben befindet. Natürlich werden wir von jeder Errichtung bis zu allen benachbarten Nachbarn eine Schleife ziehen. Jetzt wollen wir wissen, welcher dieser benachbarten Nachbarn tatsächlich ein Zimmer eins ist. Was wir tun werden, ist, hier einfach eine Menge Code zu datieren und zu überprüfen, ob er in einem Raum enthalten ist , und weitere Follower haben. Aber wir können es nicht zu einer reinen Funktion machen weil wir das ein bisschen mehr verwenden werden das ein bisschen , um zu überprüfen, ob sich neben uns ein Raum befindet. Also, eine neue Funktion, und diesmal wird es eine reine sein. Ich werde eine Funktion erstellen. Ich werde das Find nennen Wir werden es Find Room Index nennen. Denn später werden wir wissen müssen, ob es sich um einen Raum handelt, aber auch um welchen Raum es sich handelt, da wir eine Struktur von Räumen haben. Eine Struktur mit den Informationen von Arrays, die alle Koordinaten jedes Raums enthalten Dann können wir sagen, das ist Raum Nummer eins, das ist Nummer zwei, Nummer drei, Nummer vier, dieses Array wird unsere Räume aufnehmen, wie viele es sind, und es hat sie nummeriert Lassen Sie uns nun mit dem Print-Raum-Index fortfahren. Natürlich benötigen wir Eingabekoordinaten, und es wird ein Endpunkt sein, aber eine einzelne Typvariable Dann benötigen wir das St-Rooms-Array. machen wir eine Schleife Diesmal machen wir eine Schleife mit Pause, weil es viele Koordinaten gibt. Ein Ort hier. Und wir werden das kaputtmachen , weil es Informationen über unsere Struktur sind. Es gibt uns jedes Element, das eine Reihe von Koordinaten für einen Raum wäre . Wir werden überprüfen, ob das mit unseren Koordinaten übereinstimmt. Denn wenn das unsere Koordinaten enthält, bedeutet das, dass es einen Raum gibt Um das anzuzeigen, verwenden wir eine lokale Variable. Da es sich um einige Funktionen handelt, Erinnerung: Lokale Variablen wirken sich nicht auf einzelne Funktionen aus. Es wird vom Typ Pool sein und es wird eine einzelne Variable sein. Wir werden es Zimmer nennen. Vollständige Funktionen werden nicht empfohlen. Nun, es widerspricht dem Sinn, externe Einstellungsvariablen hinzuzufügen Aber wenn es eine interne Variable ist, eine lokale Funktion, existiert sie nur hier, sie hat keinen wirklichen Einfluss darauf Und wir werden das auch auf eine lokale Variable übertragen. Der Index, der die Zimmernummer sein wird. Wenn wir ein Zimmer gefunden haben, gehen wir kaputt und jetzt brauchen wir Leistung. Unser Output wäre also unser Fund. Rom wird von diesem Typ sein, und wir werden uns hier verbinden. Und für den nächsten wäre es Raumindex. Jetzt siehst du, dass die Benennung komisch ist , weil ich die andere benannt habe. Es wird vom Typ Integer sein . Ich habe dem anderen eine Zimmernummer gegeben. Ich konnte diese eine Zimmernummer nicht benennen , weil das alles durcheinander bringen würde. Also werde ich das hier verbinden und kompilieren und speichern. Jetzt haben wir einen guten Raumindex und er gibt uns Auskunft darüber, ob wir einen Raum gefunden haben, und wir können unseren festgelegten Raumumfang fortsetzen ? Gehören also unsere Koordinaten Nordost-Südwest zu einem Raum Finden Sie den Raumindex. Es ist keine reine Funktion. Machen wir daraus eine reine Funktion und setzen wir sie wieder in die Kategorie der reinen Funktionen. Bringen wir einen Zweig mit. Und ich werde das hier verbinden. Und jetzt haben wir ein Zimmer gefunden. Jetzt müssen wir uns an unseren Schauspieler wenden , um zu überprüfen, ob der Akteur, der für diese Koordinaten verantwortlich , auf diesen Koordinaten liegt. Eigentlich die Handlung. Für uns ist es eine Spielfigur, aber es ist eine Blaupause. Jedenfalls. Also müssen wir den Schauspieler finden, der für diese Koordinaten verantwortlich ist. Also holen wir uns unsere Punktkarte und unsere Karte wäre unser Kerker Aber jetzt haben wir Zugriff auf unsere Kachel. Daraus werden wir unsere Wände bekommen, glaube ich, Mauer, wie haben wir sie benannt BP-Dekorationen. Wir werden uns Auszeichnungen besorgen, den Kinderdarsteller, den wir brauchen , um Schauspieler zu bekommen , den wir dann zu P-Dekorationen besetzen. Lassen Sie uns das in eine reine Besetzung umwandeln. So können wir all diese wunderbaren Knoten übereinander saugen diese wunderbaren Knoten übereinander Daraus erhalten wir Komponenten von s. Und die Klasse wäre Pic Mesh Component. Tic Mesh-Komponente. Hier ist sie. Nun, was bedeutet das? Für diejenigen, die neu sind, wenn wir neu sind, sind Komponenten alles, was wir dem Blueprint hinzufügen Wir beziehen also alle Komponenten , die vom Typ statisches Netz sind, nicht von der BP-Kachel, von den BP-Dekorationen , also all diesen Wänden Oder jetzt. Später, dass wir mehr Dinge haben werden. Es wird eine Liste all dieser Komponenten erhalten. Wenn wir zum Beispiel eine Mauer und ein Fass hätten , sagen wir hier, und sie hätten dieselben Regeln , die wir jetzt erstellen werden, würden sie beide verschwinden. Jetzt lassen wir die Wände einfach verschwinden. Und was wir verwenden werden, sind die Tags, die wir haben, das Tag-System aus S und W und E. Gehen wir also zurück zu Maze Rufen wir die Komponenten nach Klassen und wir gehen zu oder zu einer Schleife oder zu jeder Schleife von ihnen. Verbinde das mit „Wahr“. Stimmt. Nun, was wir tun werden, ist der Hash-Bug hat einen Komponentenfehler Wie bei der Funktion „Wände verstecken wird der Zug durch den Index unseres Arrays bestimmt Wir können tatsächlich zu unseren Dekorationen auf Wänden wechseln , indem wir sie einfach kopieren und einfügen Aber jetzt verwenden wir nicht die Wände, die Dachboden-Mesh-Komponenten „ Alle Komponenten abrufen “. Ich gehe zurück in unser Labyrinth. Ich werde dieses Jahr Tempo machen. Ich brauche eigentlich nicht alles. Ich brauche diesen nicht. Ich gehe dieses Jahr, um mich zu verbinden, um dieses Jahr eine Verbindung herzustellen. Wir müssen eine benutzerdefinierte Auswahl erstellen. Und wir haben das Problem wieder. Ich werde den letzten Ausgang mitbringen. Ich werde aus dem Index herausnehmen. Ich werde den letzten hier verbinden. Ich werde das hier verbinden. Eigentlich ist das der falsche Index. Wir wollen diesen Index , weil dies der Index für Nein und Wet ist. Wir werden das hier verbinden. Ich werde zwei weitere Variablen hinzufügen, 32 weitere. Ich lösche das und es wird North North, Ost-West sein. Und jetzt werde ich das hier verbinden. Sie ist verbunden. Ja, es ist verbunden. Aber jetzt versteckt es die Wände in unserem Umkreis zu unserem Zimmer Jetzt wollen wir nur zum Debuggen demonstrieren, was wir Holen wir uns unser ST-Rooms-Array, und wir werden jede Schleife untersuchen sie mit dem kompletten Hier und dem Hier verbinden , das eigentlich nicht hier ist. Holt Dinge von hier. Gehen wir zurück zu unserer Suche nach zwei mal zwei möglichen Räumen. Und hier fügen wir unser ST-Raum-Array hinzu. Lass uns das hier verbinden. Und wir werden eine Pause einlegen. Ich gehe zu jeder Gruppe. Und wir werden uns den Kerker holen. Und wir werden herausfinden, dass wir jedes einzelne Loch finden, und wir werden Boden bekommen Davon ausgehend legen wir das Material fest und wählen ein anderes Material aus. Wählen wir diesen Holzsockel, dreckige Ziegelwand oder was auch immer Sie wollen. Sie wollen nur sehen, ob es funktioniert. Es baut, und es hat keinen Platz geschaffen. Machen wir sie ein bisschen größer, um das zu überprüfen. Nehmen wir an, M gibt 50 in fünf Größen. Und überprüfe auch, ob ich die Create Rooms miteinander verbunden habe. In Bezug auf die Grafik, das Tor, nein, habe ich nicht. Suchen Sie nach Möglichkeit zwei mal zwei Räume, nachdem Sie Kabel für die Truhe erstellt Spiel und wir haben ein paar Zimmer. Wir haben ein paar schöne Zimmer. Jetzt. Als Nächstes müssen wir einige Wände in diesen Räumen bauen. Und zum Beispiel sollten solche Dinge, die in diesem Raum eine Sackgasse schaffen, nicht passieren. Also werden wir das in der nächsten Lektion beheben. Auf Wiedersehen, Señor, bis zum nächsten. 31. Aufbau der Raumstruktur: Hallo und willkommen zurück zum Game Design Workshop Andal Engine Five, Erstellung prozeduraler Dungeon Action ARPs Zuvor hatten wir unsere Funktion zur Feinabstimmung der Raumkoordinaten abgeschlossen unsere Funktion zur Feinabstimmung der Raumkoordinaten und sie zusätzlich um einen Perimeter erweitert Ähm, wie wir sehen können, gibt es da ein paar Fehler Beispiel können wir Räume neben anderen Räumen einrichten, und wenn wir Stopp drücken und zu unserem Nachrichtendock gehen, sehen wir einen wiederholten Fehler. Gehen wir es also noch einmal durch und beheben wir die Fehler dieses Mal. Nun, in unserem festgelegten Perimeterraum, das Erste, was wir ändern sollten, ist, dass ich diesen Raumperimeter für eine lokale Ganzzahl, ein lokales Array, eine lokale Variable und ein lokales Array von Int-Punkten erstellt habe diesen Raumperimeter für eine lokale Ganzzahl, ein lokales Array, eine lokale Variable und ein lokales Array von Int-Punkten Dies sollte zu einer Variablen heraufgestuft werden, und nennen wir es alle Raumgrenzen Das werde ich löschen. Ich werde alle Raumgrenzen hierher bringen. Ich werde diesen auch ergänzen. Ich werde das kaputt machen und y zu y und x zu x hinzufügen. Ich muss wirklich nichts weiter tun weil das den Code durcheinander bringt. Aber wir sollten eine Variable haben , die alle Perimeter hat Als Nächstes sollten wir diesen Fehler überprüfen , diesen Nachrichtenfehler Es heißt, dass Branch nicht auf Non zugreifen kann. Access non ist normalerweise der Versuch, auf etwas zuzugreifen, das es keine Variable gibt. Wenn Sie auf etwas klicken, wird es zu einem konstanten Makro führen. Aber es sagt uns , wo wir suchen müssen. In dieser Filiale auf Base Gen auf festgelegtem Raumgelände. Auch hier führt die Abzweigung zur Funktion. Aber es befindet sich im Umkreis des festgelegten Raums. Also lass uns auf Maze Gen und Strom Perimeter gehen. Was es tatsächlich tut, ist, dass wir irgendwann versuchen, es auf der Dungeon-Karte zu finden Aber wenn wir den Umkreis des Raums verlassen, besteht die Möglichkeit, dass sich der Umkreis nicht innerhalb des Kerkers befindet Es hat keine Kacheln. Wir werden also fragen, ob die Dungeon-Karte , die wir anfordern, der Schauspieler, den wir über die Koordinaten anfordern , gültig ist Und wir werden den zweiten Knoten verwenden , der uns tatsächlich eine Verzweigungsoption bietet Ich werde den Wert „true to is valid “ mit der XY-Schleife und den Wert „valid“ mit der Fore−Schleife verbinden XY-Schleife und den Wert „valid“ mit der Fore−Schleife Wenn es nicht gültig ist, ist es uns egal, und das wird nicht passieren. Der Fehler wird nicht auftreten. Also drücke ich jetzt Play, j. Das tut es nicht. Wenn ich anhalte, dann sollte unser Nachrichtenprotokoll übersichtlich sein, bring es mit und es ist übersichtlich gestaltet. Nun, das nächste Problem, das wir haben, ist, dass Räume neben anderen Räumen entstehen , als ob der Perimeter nichts bewirkt Das liegt daran, dass ich den Code noch nicht hinzugefügt habe. Also werden wir uns auf die Suche nach möglichen zwei mal zwei Räumen machen. Und wenn wir nach speziellen Kacheln suchen, werden wir auch nach allen Raumgrenzen suchen, wir werden hier eine Übersicht vornehmen. Wir werden unsere Raumanordnung miteinander verbinden, und wir machen ein Ende, kein Ende, oder ein Bulion, weil es entweder auf den speziellen Fliesen oder auf den Räumen ist Wir wollen nicht, dass es ein gültiges Zimmer ist. Wenn ich auf Kompilieren drücke. Lass uns Play drücken. Räume sollten nicht nebeneinander erstellt werden. Nun, vielleicht hier, das konnten sie nicht. Lass es uns nochmal versuchen. Solideres Labyrinth. Ja, solider Wie wir sehen können, liegen die Zimmer nicht neben anderen Räumen. Es schafft diese Distanz zwischen ihnen. Ein Kachel Abstand, der Umkreis. Eine Sache, die wir auch ändern sollten, wäre , nicht das Material zu ändern, sondern es zu löschen Aber wir können alle Räume, alle Koordinaten zu einem Array hinzufügen . Also werde ich ein neues Array erstellen, eine neue Variable. Ich werde das alles Zimmerhorte nennen. Es wird vom Typ Endpunkt sein. Und es wird ein Array sein. Und ich werde zu dieser Reihe all die Raumkabel hinzufügen, die wir am Ende durchbrechen , um möglicherweise zwei mal zwei Räume zu finden Wenn wir endlich die Haupt-Wortschleife verlassen, brechen wir die Anordnung aller Est-Räume auf und fügen alle Koordinaten hinzu, die wir innerhalb der Strukturanordnungen finden Das nächste, was wir jetzt tun sollten , ist die Räume zu bauen Also, raten Sie mal, wir werden wieder eine Veranstaltung veranstalten, um die Räume zu bauen. Lassen Sie uns am Ende diese Funktion erstellen. Nennen wir es Räume bauen. Nennen wir es am Ende. Denn wenn wir testen, werde ich vergessen, es hier hinzuzufügen, und geben wir diese Funktion ein. Aber bevor wir mit der Programmierung beginnen, wollen wir erklären, was diese Funktion tun soll. Lassen Sie uns also malen, um ein paar tolle Zeichnungen zu erstellen. Das Erste, was es tun sollte , ist die Heilung der Steine, als ob wir vier Steine hätten. Aber im Grunde müssen sie ihre Wände so umformen, dass sie an den Rändern liegen Und basierend auf ihren Pfeilen wird das nicht passieren Also, was wir brauchen, ist eigentlich an jeder Kachel , die der Raum hat, befestigt, welche Wände an und welche aus sein sollten. Nein, das ist das Erste, das Erste. Es wird nicht das Erste sein, aber es ist eines der Dinge , die unsere Funktion tun muss. Nun, die zweite Sache wäre zu sagen, was für Wände die zweite Sache wäre, welche Art von Wänden bauen wir in unserem Zimmer auf? Weil wir eine bestimmte Anzahl von Wänden haben , verschiedene Wände. Wenn wir zu unserem statischen Chaos übergehen. Wenn wir zur Übersichtskarte gehen, gibt es noch mehr, du änderst auch die Farbe der Karten Jetzt sind Karten rot, richtig. Wenn ich also auf die Übersichtskarte gehe, um die Auswahl zu speichern können wir sehen, dass wir ein, zwei, drei, vier, fünf Kacheln und verschiedene Wandsets haben . Ausgehend von diesen Wänden sollten wir also fünf verschiedene Arten von Räumen haben. Deshalb wird diese Funktion auch dafür verantwortlich sein. Aber das ist ein weiterer Teil, den wir haben. Funktion. Jetzt werden wir abschließend einen Randomizer hinzufügen. Wenn wir also unser Zimmer haben, vielleicht zufällig, können wir hier oder hier eine Wand bauen An einer beliebigen Stelle im Raum können wir nach dem Zufallsprinzip eine Wand hinzufügen oder nicht. Das Erstellen dieser zufälligen Wand wäre also das dritte, was diese Funktion tut. Wechseln wir jetzt zurück zu unserer Karte. Gehen wir zum Spiellevel und gehen wir zu unserem Labyrinth-Generator in der Schlafzimmerfunktion Was wir brauchen, ist das Ray-ST-Rooms-Array, und wir werden für jeden Loop auf allen Loops eine Schleife machen Und das erste, was wir tun werden, ist die Struktur zu durchbrechen, um die Koordinaten ihres Raums zu ermitteln. Wir werden den Index auch auf eine Variable hochstufen, die lokal gesteuert wird. Werben Sie für eine lokale Variable und nennen wir das Raumindex. Und verbinde das hier. Denn jedes Mal, wenn wir das für Loop laufen lassen, laufen wir im Grunde genommen in einem anderen Raum. es zum ersten Mal ausgeführt wird, der erste Index dieser Array-Struktur wird der erste Index dieser Array-Struktur der erste Raum sein Das zweite Mal, wenn es läuft, wird es der zweite Raum sein, und so weiter So können wir zum Beispiel eine Regel haben, sagen wir, da wir fünf verschiedene Räume haben, würden die ersten fünf immer ein anderes Aussehen wählen. Oder um es noch interessanter zu machen. Nehmen wir an, die ersten beiden werden ein anderes Aussehen haben, und dann würden die anderen von irgendwelchen zufälligen Typen sein. Dadurch wird die Illusion erweckt, dass einige Räume wirklich etwas Besonderes sind und andere eher üblich sind. Lassen Sie uns also eine weitere lokale Variable erstellen, die wir All index nennen. Nennen wir es Wandindex. Das wird wieder eine Ganzzahl sein und kein Array, es wird eine einzelne Variable sein. Und speichern. Stellen wir diesen Raumwandindex ein, diesen Wandindex. Lassen Sie uns also überprüfen, ob dieser Wert größer als zwei ist. Also Null, Eins, Zwei , eigentlich wären die ersten drei Räume anders. Und dann ab dem vierten und danach würde es „Rückgängig“ wählen. Oder wir würden Nummer eins wählen und es würde in die ersten beiden Räume gehen. Aber lassen Sie uns tatsächlich drei machen. Also, ich werde einen Zweig auswählen, ich werde ihn hier verbinden. Ich werde das auch verbinden. Wenn es also über zwei liegt, bedeutet das, dass es mehr als unser gewünschter Wert ist, und ich setze den Wandindex auf eine zufällige Tinte im Bereich. Das wäre 0-4. Und der Grund, warum es vier sind, ist, dass wir fünf verschiedene Räume haben 01234 besteht also aus fünf verschiedenen Optionen. Von Null als Zahl als Einheit zu zählen, ist am Anfang etwas schwierig , aber man gewöhnt sich daran Nun, wenn es nicht größer als zwei ist, dann haben wir den Wandindex genommen Sagen wir zum Raumindex. Es wird also immer Raumindex eins, Raumindex zwei, Raumindex Null sein. A: Ab Null zählen , daran müssen wir uns gewöhnen. Nun werden wir hier nachlesen, wie wir diese beiden Knoten verbinden können. Hier. Ich finde, das ist ein netter Punkt für diese Lektion. Da wir später etwas komplexere Dinge tun müssen später etwas komplexere Dinge tun und sie ein bisschen mehr erklärt werden müssen. Auf Wiedersehen, ich schicke dir den nächsten. Auf Wiedersehen. 32. Raumfunktion und Wandbefestigung: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon Action Apes Creation Course Zuvor haben wir einige Probleme behoben, bei denen es einige Fehler im Labyrinth-Generator gab Und wir haben auch einige Dinge über unsere gebauten Räume erklärt. Wir haben die Funktion der gebauten Räume damit begonnen alle Räume mit einer Vier e l durchgegangen sind, und dann haben wir eine Variable zum Speichern des Index erstellt, eine lokale Variable, um den Index der Räume zu speichern. Wir haben eine Regel erstellt, um die Wandtypen zu ändern, und jetzt ist es meiner Meinung nach an der Zeit, fortzufahren. Nun, das Erste, was wir tun müssen, das Erste. Eines der Dinge, die wir tun müssen, und das werden wir jetzt tun, ist zu entscheiden, ob unser Zimmer eine zufällige Wand haben wird, und wo würde diese Wand sein? Wenn ja, werden wir später entscheiden, aber für den Fall, dass es so ist, entscheiden wir, wo diese zufällige Wand sein soll. Nein, ich werde diesen zufälligen Ganzzahlbereich kopieren und einfügen und die Variable auf drei ändern, weil unser Raum zwei mal zwei ist, also Null, Eins, 23 führt zu vier Optionen. Jetzt werde ich das zu einer lokalen Variablen heraufstufen und das als internen Wandindex bezeichnen . Und außerdem werde ich aus dem Pausengefühl von Räumen wie diesem unsere Raumkoordinaten zwei mal zwei holen, P ermitteln und das auch zu einer lokalen Variablen heraufstufen und das Ganze dann und das auch zu einer lokalen Variablen heraufstufen und das Pile No nennen Gang der Innenwand. Nun, das sind Koordinaten, aber das können wir anhand des Variablentyps erkennen. Und ich werde das hier verbinden. Zum Besseren werde ich die Zufallsmenge verwenden. Auch hier gilt: Wenn ich hier nach dem Zufallsprinzip eine Verbindung hergestellt hätte, wäre das wahrscheinlich eine andere Zahl als diese, weil dadurch eine neue Zufallszahl generiert würde Also wollte ich es von der Menge her verbinden oder die eigentliche Variable hierher bringen und sie so verbinden, als ob das so oder so wäre Oh, jetzt. Als Nächstes sollten wir berechnen, wo sich unsere Wände auf Basis unseres Raumindex befinden. Da uns diese Zeile hier den Break ST-Raum bringt, all unsere Raumindizes Ich werde es hier aufwärmen. können wir für Loop. Für jeden von ihnen. Und wir wissen, dass der letzte Index, glaube ich, der Nordwesten ist Wir müssen das überprüfen, wo wir die Räume erstellt haben. Nun, das ist die Möglichkeit, Koordinaten zu erstellen , zwei mal zwei Räume zu finden. Wir machen zwei mal zwei Raumakkorde. Der letzte ist also der Checkroom, und dann fügen wir einen auf X, einen auf Y, nicht Y. Das wäre also der Nordraum Das wäre der Nordraum, der Nordwestraum. Dann addieren wir Y. Das wäre also der Nordosten, Nummer zwei, und Nummer eins ist Da X gleich bleibt, können wir es Südosten nennen, und der ursprüngliche Wert ist Südwest. Wenn ich von Südosten, Südwest spreche, spreche ich natürlich von den Wänden, die im Raum aktiv sein werden . Als ob der erste Westen und Süden sein würde. Der obige wäre West und Nord, und es geht weiter. Wenn du es aufschreiben willst, wäre das Nord und Ost, und das wäre Süd und Ost. Im Grunde müssen wir zwei Richtungen angeben. Unsere Anweisungen stehen auf der Kachel auf der Spielfigur , der BP-Kachel. Was sind deine geschlossenen Seiten? Anfahrt mit dem W. Wie dem auch sei, gehen wir zurück zu unseren gebauten Räumen. das zu tun, da wir die Reihenfolge kennen, haben wir quasi die Reihenfolge herausgefunden , in der diese eingerichtet sind Wir können tatsächlich auf int zugreifen und haben drei verschiedene Ergebnisse, weil es ein Array mit vier Längen ist, vier verschiedene Ergebnisse. Tut mir leid. Und lassen Sie uns die Standardeinstellung entfernen. Nun, was ist der Schalter? Wir haben ein bisschen über Aufzählungen gesprochen ein bisschen über Aufzählungen Es ist das Gegenteil von einer Auswahl. Sie können Zeichenketten einschalten, Sie können Aufzählungen einschalten und erhalten im Grunde genommen eine andere Ausgabe, die Sie je nach Eingabeauswahl ausführen Für diese Koordinaten benötigen wir nun die Ti-Sets Um das zu tun, holen wir uns unseren Kerker und wir werden kämpfen Jetzt wollte ich etwas über Pint und so sagen. Denken Sie nicht, dass Pint nur eine Aktion ist , die sofort passiert Dies sind nur Funktionen, die für uns bereit sind, die Variablen durchgehen und prüfen, ob die Variable der gewünschten Variablen entspricht Es ist nicht so, dass ein Knoten wie dieser nicht so schwer ist wie beispielsweise eine For-Schleife, die dieselbe Anzahl von Variablen durchläuft . Wie dem auch sei, lass uns weitermachen. Es ist ein bisschen besser. Es ist ein bisschen besser. Nun, da wir das gefunden haben, brauchen wir die Anweisungen. Und wir müssen es jedes Mal hinzufügen , weil wir von zwei Wänden sprechen. Und tatsächlich müssen wir das kopieren und einfügen. Es gäbe einfachere Lösungen , um dies mit einer Funktion zu erreichen, aber im Moment wäre das effizient. Jetzt werden wir sie auch brauchen , um alle anderen Wände auszuschalten. Wir werden duplizieren. Ich muss die Leitungen wieder anschließen. Vielleicht versuche ich es ein bisschen zu machen, lese hier die Notiz vor, geht so, Mama, geht so. Sieht besser aus. Beweg das, mehr runter. Wir klicken auch hier. Wir klicken auch hier. Wir erstellen einen Haufen ausgelesener Knoten. Es gibt also keine Okta. Das hat es geschafft. Modi, abscheuliche Aufgabe könnte ich sagen Nehmen wir an, die ersten sind diejenigen, die durchgeschaltet sind Es gibt eine Möglichkeit, sich zu bewegen, und die zweiten werden diejenigen sein, die Wände haben. Für den ersten Satz dreht man das immer an. Der zweite Satz besteht darin, die Wände einzuschalten. Also ist es aus. Lassen Sie uns nun die Anweisungen herausfinden. Wie gesagt, die Zahl Null steht wieder für große Schmerzen im Westen und Norden. Ost und Süd sollten also ausgeschaltet sein. West und Nord? Nein, ich sehe das Gegenteil, habe ich nicht Osten und Südosten und Süden gesehen. Lass uns zuerst die ersten machen und dann die zweiten. Nun, was das zweite Feld angeht, wäre das erste in der Reihenfolge Nord und Ost. Ist das das zweite? Hab ich schon wieder vergessen, ich muss nachschauen. Der erste ist einfach plus x, das ist also der Nordwesten. Der zweite ist nein auf x und plus y. Der zweite ist der Süden. Okay. Der zweite ist dieser. Das sind zwei, das ist eins. Das sind drei und das ist Null. Nein, tut mir leid. Ich gebe nicht meine eigenen Regeln auf. Das ist also Null. Das ist eins. Das sind drei, und das sind zwei. Es ist also nützlich, immer einen Outpad zu haben , der einfache Dinge wie diese erledigt. Nun, die zweite, wir, die Ost-Süd-Richtung, also Nord und West sollten geschlossen sein, Nordwest. Die dritte Sekunde, ein Drittel der Reihenfolge, Nummer zwei wäre Nord und Ost. Das sind also West und Süd , die sich auf der ersten Seite befinden, die letzte wäre Nord und West. Das bedeutet also Norden und Osten. Hier werden wir Südwest Nummer drei haben, Nummer zwei, wird Nord und Ost sein. Und Osten. Lassen Sie uns überprüfen, ob jede Zeile alle enthält. Da dieser Norden und Westen ist, ist dieser Süden und Osten und dieser ist Ost und Süd, also ist es Nord und West. Duplikate, also ist es richtig. Wir werden es beim Testen herausfinden. Das ist also der Teil unserer Funktion, der die auf die Kacheln setzt neuen Pfeile auf die Kacheln setzt , basierend darauf, dass es sich um einen Raum handelt. wirst du mir sagen, ja, aber wo stellen wir die Tür auf? Nun, das ist ein anderes Thema denn wenn wir alle unsere Zimmer schließen, wollen wir in der Lage sein durch den ganzen Kerker zu navigieren Also werden wir das danach machen. Also, ich denke, das ist genug für diese Lektion. Und in der nächsten Lektion wollen wir versuchen, unsere Innenwand hinzuzufügen. Auf Wiedersehen. Wir sehen uns beim nächsten. 33. Finalisieren von Raumfunktionen: Vorher haben wir unsere Schlafzimmerfunktion um einige Dinge erweitert : gebaute Räume bilden Räume Also Billroom-Funktion. Wir haben die Variable Innenwandindex und die Variable Kachel der Innenwand hinzugefügt , sich um einen Tintenpunkt handelt Im Grunde verwenden wir eine zufällige Ganzzahl für den Index und speichern dann diesen Index, die Koordinaten dieses Indexes. Danach durchgehen wir jede unserer Raumanordnungen, die zur Struktur der Raumanordnungen gehören, und legen manuell fest , welche Wände welcher Seite der Raumanordnung entsprechen sollen welcher Seite der Raumanordnung entsprechen sollen Nun, wie gesagt, das nächste, was wir tun sollten, ist, diese Innenwand tatsächlich hinzuzufügen oder nicht hinzuzufügen Nicht alle Räume müssen eine Innenwand haben. Um das zu tun, schalten wir weiter unten int ein. Und T durch diesen Schalter von int. Wie Sie sehen können, habe ich es von der kompletten FD-Schleife aus angeschlossen . Der Grund dafür ist, dass wir uns immer noch in dieser FD-Schleife befinden. A: Das ist verschachtelt für jedes Index-Inkrement, im Grunde für jedes Array, wir haben das im Switch auf int, und wir werden drei Variablen hinzufügen Eigentlich werden wir vier hinzufügen, weil, sagen wir zum Beispiel, Null, Eins , Zwei, Drei, wir speichern Variablen für das tatsächliche Platzieren einer Wand, und vier wäre nicht das Platzieren einer Und wie werden wir das machen? Wir werden int wählen. A, Peak A, wir gehen zu einem zufälligen Pool. Also werden einige Räume eine Wand haben. Also werden Zimmer nicht haben. Aber wenn Gipfel A erreicht ist, wählen wir zum Beispiel Nummer vier, also keine Mauer bauen. Wir werden diesen Hinrichtungs-Pin entfernen, den Standard-Pin, weil wir ihn nicht wollen. Und auf B brauchen wir tatsächlich einen zufälligen Index. Du hast es nicht zufällig genannt. Wie haben wir es benannt? Interner Wandindex. Also, hier brauchen wir den Innenwandindex. Toll. Also haben wir B für 0123 Aber welcher Raum ist welcher nochmal, gerade jetzt müssen wir so etwas machen, um die Wände der Räume festzulegen , denn dann lass uns malen, um zu zeigen, dass Go to Löschen nötig Wir haben also unsere vier Gänge, die unser Zimmer sind. Und wir wissen, dass es vorerst rundum eine Mauer gibt Vielleicht hätte es etwas dicker sein sollen. Ticker-Zeile. Wir könnten eine dickere Linie wählen. Ticket eins. Also haben wir unsere Wände rund um einen neuen Zeichenstil eingerichtet, Wände mit Boxen. Oh. Also, wenn wir in diesem Block hier drüben wären, könnten wir hier oder hier drüben eine Mauer haben, sie wäre immer noch im ganzen Raum verfügbar. Und das gilt für jeden Block. Wir könnten beide Seiten jeder Kachel haben, eine davon, aber wir können eine auf beiden Seiten in jedem Gang auswählen Oh, wie ich schon sagte, wir werden wieder ein solches System machen Wir werden die Variablen manuell hinzufügen. Aber wir müssen herausfinden, welcher Raum welcher ist. Und basierend darauf, dass dies auf unserer Struktur liegt. Wir hatten tatsächlich diese vorherige Zeichnung. Lass es uns noch einmal malen. Ich gehe, damit es mir besser geht. Das ist mit Sicherheit der dritte. Das ist Null. Das sind zwei, und das ist eins, und das sind zwei. Ich glaube, so hatten wir es. Lass es uns noch einmal überprüfen. Ich werde mir eine Sekunde Zeit nehmen , um die Funktion zu finden. Ich gehe zu den Funktionen, finde sie, um Räume zu bauen, mache zwei mal zwei S. Das ist was wir wollen, weil es rein war. Null ist p eins auf x, eins ist p eins auf y, eins ist Ost-Süd und das zweite ist eins. Dieser. Also ja, das ist richtig. Toll. Gehen wir zurück in unsere Bauräume und kommen hierher, um das Feld zu füllen. Nun, da wir wollen, dass eine von zwei Wänden entsteht, werden wir vier Zweige bauen weil es entweder die eine oder die andere Wand ist. Und zu diesen Bedingungen werde ich einfach eine Rechnung machen, an alle Bedingungen geknüpft ist Was Nummer vier angeht, brauchen wir diesen Schritt , weil er nicht alles addieren wird Aber wir werden das später mit dem verbinden , was als Nächstes kommt, nämlich der Wandmontage. Oh. Bringen wir einige Knoten mit , die wir bereits haben. Wir benötigen zwei für das oben Gesagte, zwei für das Folgende, zwei weitere und noch zwei. Das wurde groß, aber es ist in Ordnung. Du musst sie nur voneinander trennen, damit es ein bisschen mehr blau ist. Wenn Ihr Bauplan ein bisschen komplex wird , gibt es zu viele Dinge Stellen Sie sich ihnen, das ist nicht wirklich wichtig. Wir haben endlosen Platz, endloses Scrollen. Punkt. Oh, holen wir uns das Kerker, das wir brauchen, das Plättchen, nein, tut mir leid, Dangon, aus dem Kerker, das Plättchen, das Also holen wir uns die Dungon-Karte und wir werden herausfinden, was wir finden Diese variable Kachel Innenwänden, die wir hier aufbewahrt haben. Da wir die Fliese kennen. Wir wissen, was auf den beiden mal zwei Ja steht, welche Platzierung auf den zwei mal zwei Achtern. Wir können einfach Abschnitte finden und abrufen, und jetzt müssen wir die Wegbeschreibung mit der ganzen Anzeige verbinden Eins, zwei oder sie erweitern sich auch, sie werden zu einem noch größeren Ärgernis auf dem Bauplan Stellt eine Verbindung zu False her. Ich weiß nicht, ob einer von Ihnen mit Musikredakteuren wie Reason gespielt hat . Es sieht sehr nach The Connects to Reason aus. Jedenfalls. Stütze sie auf. Jetzt. Lass uns herausfinden , welche Wände wir brauchen. F Null, wir sind im Süd-Nord-Westen. Wir brauchen eigentlich die entsprechenden Innenwände. Im Grunde haben wir das Licht ein bisschen über uns. Aber da es ein bisschen chaotisch ist, habe ich es nicht getan und weg, lass es uns noch einmal machen Wir brauchen den Osten und wir brauchen den Norden, es ist Ost oder Nord, Süd, tut mir leid Ost und Süd für den ersten Platz. Der nächste. Der nächste ist hier unten, also brauchen wir Norden und Westen. Nord und West. Der nächste ist Nummer zwei. Nummer zwei, hier ist die Farbe. Nummer zwei, wir brauchen West und Süd. 02 ist dieser West-Süd. Für den letzten brauchen wir Norden und Osten. Nora, es ist schon für uns da. Episch Also, was wäre der nächste Schritt? Zuallererst, da wir die Informationen über die Pfeile so stark geändert haben . Wir haben unser eigenes Pfeilsystem erstellt. Lass uns einfach die Pfeile zusammenfassen. Lass uns das einfach machen. Was wir brauchen, sind ST-Raumkabel. Wir werden es von überall her bringen und jede Schleife eingeben Und wir werden alles mit E verbinden. Im Grunde genommen auf den Blöcken, die Räume sind, auf den Kacheln, die Räume sind, oder unsere Pfeileinstellungen werden auf das zurückgesetzt, was wir wollen Jetzt müssen wir auch diese Vier hier drüben, die hier keine Innenwand haben, mit den vier Schlaufen verbinden die hier keine Innenwand haben, mit den vier Schlaufen verbinden Also behält es das alles. Und jetzt, wo wir mit den vier Schleifen durch die Koordinaten kreisen , suchen wir den passenden Akteur Eigentlich können wir das einfach kopieren, weil es das ist, was wir brauchen Wir holen den Mist, den Fund und wir stellen die Verbindung zu dem Fund Und von hier aus besorgen wir uns Dekorationen. Die Variable ist immer unten, und wir werden zu Dekorationen übergehen. PPG zuerst der Kinderarzt. Und daraus werden wir Dekoration bekommen. Entschuldigung, wir werden die Dekoration abschneiden. Und wir werden aus dem Schnitt einen reinen Schnitt machen . Auch hier ist es schneller, effizienter und hilft beim Nicken, nicht bei Spaghetti . Werde ein Turm. Lassen Sie uns nun Pfeile in all diesen Dekorationen umschalten Schalten Sie die Pfeilnachricht um, da es sich um unsere Blueprint-Schnittstelle Ich werde das hier verbinden. Wenn ich ja, habe ich das diesmal mit den Dekorationen in Verbindung gebracht. Ich glaube, das ist schon einmal im Unterricht passiert . Aber ich denke, wir können jetzt testen und sehen, was wir mit Pfeilen geschaffen haben. Wir werden sehen, wie ein paar Pfeile Räume erschaffen, ich glaube, wenn alles gut gelaufen ist. Ich bin mir also nicht sicher. Möglicherweise ist das ein Zimmer. Vielleicht hätten wir das Debaking beim schnellen Auswechseln eines Tom-Generators nicht entfernen schnellen Auswechseln eines Tom-Generators Gehen wir zum geraden Diagramm über. Gehen wir hier schnell zu der Suche nach möglichen zwei mal zwei. Wir haben sie auf Kopie, die Karte, die Dungin gefunden Wir werden das verwenden, um Bodenmaterial zu verlegen. Ich werde tatsächlich das Wort für uns wählen und auch das Material festlegen, uns einen Knoten besorgen. Diesmal entscheiden wir uns für den Dreck. Kompilieren und speichern. Lass uns spielen, irgendeinen Dreck essen, auswerfen. Okay. Also wir haben ein paar Zimmer, aber Teams hat nicht wirklich funktioniert. Warum ist das so? Lass uns jetzt Material herausfinden, wir waren hier. Wir schalten die Pfeile auf der Couch um. Pfeile sind nicht auf Dekorationen Aus diesem Grund wird die Nachricht gesendet, aber Dekorationen haben keinen Code, der mit den Pfeilen zu tun Wir sollten die Pfeile direkt auf die Kachel schicken, nicht auf die Dekoration. Verbinde die Dekorationen. Die Art, wie es verbunden ist, habe ich benutzt, falls du dich fragst. Ich habe Alt gedrückt und geklickt und die Leitung verbunden , die Sie anvisiert haben. Also beim Kompilieren und Speichern sollte es diesmal funktionieren, sollte es diesmal funktionieren weil du den richtigen Blueprint aktualisierst, nicht das untergeordnete Dekoelement Ja, hier sind wir, und wir haben auch einige Türen , die nicht selbstverständlich sind Sie werden später kommen ps. Wie Sie sehen können, wurden die Wände der Räume nicht aktualisiert, weil wir die Wände hier nicht aktualisiert haben. Aber die Pfeile sind korrekt. Das brauchen wir gerade. Wir brauchen die Pfeile. Basierend auf den Pfeilen in der nächsten Lektion werden wir die Wände verändern, und es wird endlich eine Wand mit einem Raum mit Wänden und ohne Decke sein. Wir werden das alles später reparieren. Auf Wiedersehen, wir sehen uns beim nächsten Mal. 34. Randomisieren von internen Wänden: Hallo und willkommen zurück zum Gang Design Workshop und zum prozeduralen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine Five-Action-Rollenspielen Zuvor haben wir unseren gebauten Räumen noch ein paar weitere Dinge hinzugefügt unseren gebauten Räumen noch ein paar weitere Dinge hinzugefügt Wir haben hier über diesen Schalter hinzugefügt, welche Wand zufällig platziert werden soll hier über diesen Schalter und die Variablen , die wir zuvor gespeichert haben, die Kachel der Innenwand, den Innenwandindex. Durch diesen Schalter haben wir uns für eine zufällige Zahl entschieden, die platziert werden würde, oder wenn wir die Zahl vier auf dieser zufälligen Ganzzahl wählen, wird nichts platziert. Und wir haben auch die Funktion „ Gesamtpfeile“ korrekt verwendet, nachdem wir ein paar Versuche hatten, die Pfeile so zu bekommen, wie wir es wollten, also die Pfeile im Raum Lassen Sie uns nun damit fortfahren , festzulegen, welche Wände oben sein sollen und welche nicht Gehen wir zur Dekorations-PP und erstellen eine neue Funktion, die dieser eigentlich ziemlich ähnlich sein wird. Wir könnten das aktualisieren, aber lass uns ein neues machen. Der Klarheit halber. Wir werden diese Funktion Build nennen. Nein. Lass die Wände Platz haben. Wände der Zimmer. Und wir werden eine Eingabe benötigen, weil wir sie direkt hier vom Labyrinth-Generator aufrufen werden direkt hier vom Labyrinth-Generator Wir haben also direkten Zugriff auf die Anweisungen von der Kachel aus Da wir von dort aus direkten Zugriff haben, können wir es direkt dort einspeisen. Das könnte aber, da wir unseren Elternteil hier haben. Lassen Sie uns keine Information weitergeben. Es ist effizienter , es von hier zu bekommen, um es von den eigentlichen PP-Dekorationen zu bekommen, weil wir eine PP-Kachel haben. Oh, wir werden uns eine Wegbeschreibung holen. Anhand der Wegbeschreibung holen wir uns die Schlüssel. Wie Sie es erraten haben, werden wir die Schleife durch diese Tasten oder jede Schleife halten durch diese Tasten oder jede Schleife Dann werden wir die Schleife auch von unseren Wänden aus halten. Und wir werden prüfen, ob das Bauteil Stug hat, das ist das Element der Anordnung aus der vorherigen oder der vorherigen Richtung Nun, wenn es gezerrt hat, werden wir es tun, aber etwas hängt von dem Wert ab, den wir für Richtungen haben Also werden wir den Wert finden, der dem Array-Element entspricht, der Mutter, dem Host oder der Schleife Dies ist das Mutterschiff , das den Rest steuert. Nun, um ehrlich zu sein, in diesem Fall ist dies das Mutterschiff, das das alles so oft fährt. Aber wie Sie sehen können, dauert es nur ein paar Sekunden. Das werden wir in der Ladeleiste sehen. Was werden wir jetzt tun? Wir werden die Sichtbarkeit einstellen. Ich glaube, wir verstecken sie, die sich darin versteckt haben. Lass uns beides machen. Ich habe sie wieder. eigentlich keine Rolle. Wir wollen, dass sie sichtbar sind, und wir wollen auch, dass sie nicht zu Gewinnen versteckt werden. Falls ihre Kollision ausgeschaltet ist, sollten wir auch Kollision einstellen. Das ist alles Dante und nett, aber was stellen wir hier ein Also für die Sichtbarkeit. Wenn das stimmt, wollen wir, dass die Sichtbarkeit ausgeschaltet ist. Also brauchen wir hier ein T. Kein Bulle. Nein, O, L. Wenn das wieder wahr ist, wollen wir, dass es unsichtbar und versteckt ist. Das gehört hierher. Und wenn das wahr ist, was bedeutet, dass es ein Vergehen gibt, wenn es wahr ist, bedeutet das, dass du es durchziehen kannst. Wir brauchen hier eine Auswahl. Und wir müssen das hier verbinden, es ist einfacher, es zu finden, wenn es keine Kollision gibt, wenn es falsch ist, kollisionsfähige Quaran-Physik Kompilieren und speichern, und das ist so ziemlich alles. Lass es uns testen. Haben wir es mit Nope verbunden, haben wir nicht. Also werde ich das lesen. Wir brauchen es nicht. Wir brauchen von hier, wie haben sie es genannt? Wände dieses Zimmers. Also Wände , jetzt sollten wir diese halben Wände haben , die wir rund um die Zimmer haben. Nimm es nochmal. Nein, tun wir nicht Es gibt ein Problem. Lass es uns herausfinden. Was könnte es sein? Lass uns das vom Labyrinth-Generator aus überprüfen Lassen Sie uns von hier aus nachsehen. Wir führen diese Instanz aus, die hier läuft, und ihre Instanz setzt ihre eigenen Variablen. Dann fügen wir eine falsche Wand einer Zimmerwand hinzu. All das sollte im Grunde falsch sein. Denn wenn es wahr ist, sind wir auf der Durchreise. Aber wenn wir falsch sind , haben wir die Mauer. Mal sehen, ob das behoben ist. Die, die Wände, nicht das Okay, wir haben eine Mauer hier, wir haben eine Mauer hier. Ich hatte nicht erwartet, dass die eigentlichen Wände repariert werden. Warum entstehen die Wände nicht? V Frage. Lass uns nachschauen. Hört auf damit. Gehen wir zurück zum Labyrinth-Generator, zum Looping, bringen den Dekorationsschalter hierher, wir wissen , dass Wände und Dekorationen für jeden Loop einrichten ist ein Bestandteil der Operation. Ändert den Namen des Enumerators. Ja. Wir wollen das nicht genau. Wir wollen den Frühling. Wir wollen diesen Knoten. Dieser Knoten kehrt zurück, lassen Sie uns die Zeichenfolge für Sie drucken. Lassen Sie uns diese beiden miteinander verbinden, damit wir das richtig haben. Und das Spiel kompilieren Jetzt wird es einige seltsame Zahlen und Namen haben . E-Richtung. Okay. E-Richtungen, Zähler eins, Zähler zwei, Zähler drei Nun, wenn es einen sehr generischen Namen beibehält, wie Sie sehen können. Um ehrlich zu sein, dachte ich, es hätte die Byte-Nummer zurückgegeben. Aber ja. Also das war das Problem. Schließ das, also brauche ich das nicht. Hier. Vom Array-Element brauchen wir um zu einer Zeichenfolge, und dann diese Zeichenfolge, wir verbinden uns mit dem Zug. Und es konvertiert es automatisch in eine Textvariable, eine Namensvariable Oh. Lass uns das noch einmal spielen. Und wir sollten in der Lage sein, Räume zu sehen. Geschlossene Räume. Ja. Sie sind komplett geschlossen. Und ich denke, es ist an der Zeit, die Zimmer mit echten Wänden zu versehen. Oh, lass uns zu einer Dekoration gehen und eine neue Funktion kreieren. Und wir werden dieser Funktion einen Namen geben. Wände. Geben wir es ein. Wir sind schon dabei. Aber bevor wir anfangen, das zu programmieren , brauchen wir hier ein neues Dachbodennetz. Das liegt daran, dass das ein Raum ist. Wenn wir zwei Wände austauschen, sollten wir auch eine Decke einbauen , denn wenn es keine Decke hat, dann sind es nur vier Wände Es ist nicht wirklich ein Zimmer, oder? Also, wir werden auf Hinzufügen klicken, wir werden ein statisches Mesh hinzufügen. Und wir werden dieser Decke einen Namen geben. So wird es buchstabiert. Ich bin mir nicht sicher. Noch ein schwer buchstabierbares Wort. Dafür wählen wir ein statisches Chaos aus. Ich glaube, es gibt ein ktisches Netz. Was das Material angeht, hat es eine Steinmauer. Standardmäßig gehen wir zu seiner Sichtbarkeit über. Und setze es auf unsichtbar. Und wir können die Kollision tatsächlich auch schließen . Also gehen wir zu den Kollisionseinstellungen. Natürlich werden wir später, wenn wir das Spiel entwickeln, viele der Kollisionseinstellungen und -typen und Objekttypen und alles, womit sie interagieren, ändern der Kollisionseinstellungen und -typen und Objekttypen , aber das ist später. Kollisions-Voreinstellungen, lass es mich wissen. Wir wollen die Kollisions-Voreinstellungen nicht. Wir wollen das H. Setzen wir das auf Kollisionsvoreinstellungen benutzerdefiniert und Kollision aktiviert auf Keine Kollision setzen Aber wenn wir es sichtbar haben, sollten wir auch die Kollision aktivieren, um Kollision auszulösen Nun, ich denke, das ist ein guter Haltepunkt für diesen Fall. Wir sollten diese Funktion beim nächsten Mal ausfüllen, damit wir erklären können, wie unser Auswahlverfahren auch funktionieren wird. Vorerst auf Wiedersehen, bis zum nächsten. 35. Hinzufügen von Raumwänden: Hallo und willkommen zurück zum Game Design Workshop und zur Engine Five Procedural Dungeon Action Apes Kreation Curse Auf dem letzten. Wir haben es tatsächlich geschafft, die gebauten Räume fertigzustellen. Wir haben noch eine Sache zu erledigen, und zwar jetzt. Aber lassen Sie uns sehen, was wir getan haben. Wir haben tatsächlich die Funktion „Raumwände einrichten“ entwickelt , eine Funktion innerhalb der VP-Dekoration nimmt die übergeordnete Kachel, nimmt die Anweisungen von ihr, schaut durch sie hindurch und durch diese Schleife schaut sie durch die Wandanordnung und prüft, schaut sie durch die Wandanordnung und prüft welche sichtbar sein sollen und wo die Kollision sichtbar sein soll. Lassen Sie uns nun die Wände austauschen, für die wir eine Funktion erstellt, aber nicht fertiggestellt haben. Wir haben auch die Decke hinzugefügt. Und in dieser Funktion benötigen wir zwei Eingaben. Wir werden vom Typ Integer sein. Es ist schon für mich erledigt. Sie werden den Typ hier ändern, und lassen Sie uns den einen Namen geben. Wie nennst du es? Es ist die Variable hier drüben, nicht der interne Wandindex. Denn wie gesagt, wir haben fünf verschiedene Wände für die Räume, also werden wir sie durchschauen. Keine Schleife, aber wähle einen Typ von ihnen aus. Außerdem benötigen wir die zweite Variable, die Raumindex wäre, die aber später verwendet wird, um unsere Decken ein- und auszublenden wenn sich unser Spieler durch die Räume bewegt. Also nenne ich die erste Raumindex und die zweite Wandindex. Und ich werde den Raumindex für Variablen bewerben. Es spielt keine Rolle, ob es ein paar Mal läuft. Es wird immer derselbe Raumindex sein. Und jetzt müssen wir eine For-Schleife machen, um alle Wände anzuordnen. Eine Schleife, weil wir die statische Netzkomponente manipulieren werden, um ihnen ein statisches Netzelement zuzuweisen. Nein. Natürlich werden wir Mesh fotografieren. Und für das statische Netz müssen wir wählen. Um das ein bisschen einfacher zu machen, kehren wir jetzt zu unserer Übersichtskarte zurück . Wir haben alles. Und wir haben eins, zwei, drei, 45, lassen Sie uns fünf Optionen wählen. Eins, zwei, drei, vier, fünf. Und für das Wild C wollen wir nur den Wandindex verbinden. Wir nennen W-Index. Da wir uns in der Funktion befinden, können wir das tun. Lassen Sie uns nun die Selektoren hierher ziehen. Denn wenn wir einen Wandtyp auswählen, gibt es im Grunde genommen drei Varianten und für jede eine Türvariante. Oh, geh zurück. Ich füge noch eine Stecknadel hinzu oder wir fügen sie zusammen ein. Dann werde ich einfügen. Eins, zwei oder fünf. Nun, was den Platzhalter hier angeht, können wir einen zufälligen Bereich auswählen, und es wäre 022, weil wir drei Optionen haben Ich werde das überall verbinden . Und ich werde es auch tun. Also, warum habe ich die Übersicht geöffnet? Es ist einfach, weil ich eine Wand auswählen werde. Ich werde es tatsächlich finden, ich werde einfach mit der rechten Maustaste klicken. Es gibt eine Option, Rose zu finden, um zu schauspielern. Hat mir nicht viel geholfen. Hier ist es. Ich gehe zum Asset und ziehe es hierher. Ich gehe zur zweiten Wand, Rechtsklick, cs zur Anlage. Ich würde ein bisschen mehr helfen. Ziehen Sie es hierher und ich werde diesen Vorgang für jedes Asset wiederholen. Beachten Sie, dass ich die Türen nicht auswähle . Das ist mit Absicht. Türen werden später per Code an ganz bestimmten Stellen platziert . Holzwände, Embros an Objekt, Rosen Objekt. Ein anderer Erstaunlich, wie lange einige einfache Aktionen dauern können. Fragen Sie mich nicht, warum ich immer den Inhaltsbrowser schließe , bevor ich zu den Blueprints gehe Scheint eine Angewohnheit zu sein. Ich sollte direkt auf die Baupläne klicken direkt auf die Baupläne Vermögenswert. Da ist der Vermögenswert. Da ist es. Diese 12, zwei weitere Sätze. Diese 12, durchsucht zwei Objekte und verschiebt sie per Drag-and-Drop. Wir hätten all diese Informationen irgendwo speichern können, von einer Reihe von ihnen und sie einfach von dort abrufen, oder Datentabellen, für die es am schönsten wäre, sie in einer Datentabelle zu haben Aber weißt du, du hast nicht immer, was du willst. Die Arbeit wird etwas mühsamer. Vermögenswerten, Gleichungen , Inhalten auf der Rollbahn Überblick, Vermögenswert. Wir sind fast endlich fertig, aber noch zwei Wände zum Braten Hier ist es noch ein Braten. Ordnung. Nein. Bevor wir die Decken aktivieren, schauen wir uns an, ob es funktioniert. Aber zuerst gehen wir zum Mz-Generator. Gehen wir zum Ende der gebauten Räume. Lassen Sie uns die Dekorationen auswählen und wir nennen die Swap-Wände. Ich tausche die Wände und wir benötigen den Index. Und wir werden auch einen Wandindex benötigen. Nein zu diesem Zeitpunkt. Derselbe Name und dieselbe Konvention waren nicht wirklich wichtig. Von Raumindex zu Raumindex und Wandindex. Der Grund dafür ist, dass sich das alles in einer anderen vollständigen Klasse in einem anderen Bauplan befindet einer anderen vollständigen Klasse in einem anderen Bauplan Das ist also in BP-Dekorationen enthalten, so wie sich diese Auflösung im BP-Labyrinth-Generator befindet Das ist also kein Problem. kann es sogar hilfreich sein Manchmal kann es sogar hilfreich sein, denselben Namen zu haben, damit Sie wissen, welche Variable welcher entspricht. Wo kompilieren und speichern. Kehren wir zu unserem Kartenspiel-Level zurück. Speichern Sie alles, was spielen kann. Jetzt sollten wir Wände in unseren Zimmern haben. Ja, das tun wir. Wir haben ein paar schöne Wände in unseren Zimmern. Wir haben ein Holzzimmer, wir haben ein Steinzimmer, wir haben ein moosiges Steinzimmer Es gibt hier und da ein paar Lücken, aber das ist nur die Platzierung Wenn Sie sich etwas Zeit nehmen und das beheben möchten , wäre das der Fall. Ich denke, soweit ich das sehe, müssen die Wände ein wenig abgesenkt werden und das wird meiner Meinung nach in Ordnung sein. Wie dem auch sei, lassen Sie uns die Decken aktivieren. Was wir tun müssen, ist zu unseren VP-Dekorationen zu gehen, in die Wände zu wechseln, zu den Wänden zu wechseln. Wir werden unsere Decke bekommen und wir werden Sichtweite T bekommen. Und wir werden ECT-Kollisionen aktivieren. Aber dieses Mal werden wir einen kleinen Trick anwenden. Mama, eigentlich von hier. Wir wollen die vollständige Kollision ermöglichen. Wir werden Abfragen und keine Physik aktivieren, da für die Obergrenze keine Physik oder Kollisionsphysik erforderlich ist , aber wir wollen Abfragen wegen unserer Klickereignisse. Apropos Klickereignisse, jetzt beginnen wir mit dem Spielbereich. Wir werden eine Möglichkeit brauchen, unsere Decken ein- und auszuschalten , wenn wir einen Raum betreten oder verlassen Und in diesem Fall spreche ich nur davon, wann wir den Raum betreten Ich habe Farbe aufgetragen, genau das, was ich meine. Ich meine nicht, wenn ich hier reingehe, ich spreche davon, wenn ich schon drinnen bin und von einem Ort zum anderen gehe, werden wir die Kacheln wechseln. Ein Befehl sollte also sagen, dass ich eine Kachel verschoben habe, Comanul etwas sagen Und das Labyrinth, der Raum selbst, muss wissen, ob ich das nächste Mal ausziehe, ob ich nicht nach innen gehe, und es wird so sein , dass der Code wissen muss, ob ich mich immer noch im Raum befinde und nicht nach draußen gegangen bin Deshalb werden wir hier eine zusätzliche Kollisionsbox verwenden Stellen wir es in eine Kollisionsbox. Warum ich extra gesagt habe. Wir haben das noch nicht gemacht, aber wir benötigen ein Kästchen für das Plättchen selbst, damit der Spieler weiß , auf welchem Plättchen er sich befindet. Wir können also Dinge tun, wenn wir wissen, auf welchem Spielstein sie sich befinden. Wir werden das erhöhen. Wollte mich an den Rändern kaum anpassen. Ich denke, das ist in Ordnung. Wir werden es im Gameplay sehen. Also, für diejenigen, die neu sind Kollisionsformen in allen Formen. Es gibt Kollisionsfelder, Kollisionserfassungen, Kollisionskugeln sogar benutzerdefinierte Kollisionsformen, die wir erstellen können. Aber Kollisionsformen werden im Grunde verwendet, um zu bestimmen, was passiert, wenn etwas mit etwas kollidiert Sie können Physik auslösen, sie können alles auslösen, was mit Kollisionen zu tun Wir haben sie zum Beispiel als Auslöser betrachtet, und je mehr man sich an eine echte Engine gewöhnt, desto mehr gewöhnt man sich an die Art und Weise, wie wir sie verwenden Nein. Standardmäßig, da nicht jede Dekoration ein Raum sein wird. Wir setzen diese Kollisionen erzeugen Überlappungsereignisse in Stürze um Das macht also im Grunde nichts. Und wir gehen zu unseren A-Wänden. Und wenn wir die Obergrenzen aktivieren, werden wir auch die Kollisionsereignisse aktivieren , die Überschneidungsereignisse erzeugen , sodass sie jetzt aktiv sind. Bevor wir weitermachen, da wir eine Menge Dinge mit dem Labyrinth-Generator gemacht haben, gehen wir zum geraden Diagramm, wir brauchen nicht all diese Funktionen geöffnet zu brauchen nicht all diese Funktionen geöffnet Ich verschiebe den geraden Graphen nach links und schließe den Tab einfach nach rechts Also, jetzt ist es hier oben wieder klar. Mal sehen, was wir gemacht haben. Wir haben damit begonnen, den ersten Stil zu erstellen, das Laden zu erstellen und alles andere Wir haben ungefähr die Form unseres Labyrinths gebaut. Dann haben wir die Pfeile ein wenig repariert. Lassen Sie uns nun diesen eingestellten Prozentsatz kopieren und einfügen. Aber wir müssen die Belastung etwas erhöhen, und wir haben angefangen zu dekorieren. Wir begannen mit einem Grundriss der Ziegel und Wände, wie sie sein sollten. Und was wir hier gemacht haben , war einfach die Wände zu verstecken , die nicht notwendig sind. Und jetzt haben wir einige Koordinaten für den Aufzug erstellt. Wir haben einige Koordinaten für die Truhe erstellt. Wir haben die Zimmer gefunden und die Zimmerwände gebaut. Jetzt erhöhen wir unsere Ladung. Zweitens, beim letzten Mal waren es 0,5, sagen wir 5%. Ein netter Wert. Wir haben die Aktionen ausgeführt, vier davon sogar, zwei davon gleich. Das wären also 65%. Lassen Sie uns den Ladebildschirm voranschreiten und wählen Sie die sichtbaren Leinwände Es ist das Labyrinth. Und alles andere ist wirklich sehr schnell. Aber selbst unser Labyrinth-Generator wäre schnell. Wir hatten diese Verzögerung von 0,1 nicht. Also, lasst uns abnehmen. Das dauert zu lange. Aber lassen Sie uns eine weitere Null vor eine setzen. Lass uns Play drücken. Hier gibt es Tassen, was wir wollen. Ordnung. Lass uns das wieder verstecken. Nun, was wir als Nächstes tun werden, ist nicht die Türen zu bauen, sondern was wir als Nächstes tun werden. Normalerweise sagen wir, nachdem wir die Räume erstellt haben, lassen Sie uns die Türen erstellen. Aber es ist noch nicht der richtige Zeitpunkt. Eigentlich sollten wir die Verzögerung hier vorziehen. Wir sehen den Cup ein bisschen besser. Es ist nicht die Zeit, die Türen zu bauen, und der Grund, warum es nicht an der Zeit ist Wenn wir ein Labyrinth erstellen. Im Moment haben wir all diese Bereiche. Es ist fehlerhaftes Material, das hier passiert. Wir werden sehen, was im nächsten vor sich geht. Sieht aus, als ob es zwei Materialien gibt. Ich sehe keine zwei Stockwerke. Lass uns auf dem Boden nachsehen, was hier vor sich geht. Wir haben noch mehr. Warum haben wir? Das sollte nicht passieren. Was ist los? War die Decke? Ja, ich habe die Höhe der Decke nicht erhöht . Lass uns sagen. Das ist die Höhe unserer Wände, f hundert, etwas niedriger als die maximale Höhe. Ja, es war die Decke. Ja, ich gehe rein, ich sehe nichts. Ich hätte eigentlich nicht zurückgehen sollen. Ich kann hier einfach rein und ich kann es einrichten. Und das Stockwerk Nun, vielleicht ist die Decke ein bisschen niedrig. Aber es ist in Ordnung. Ordnung. Ich denke, das ist ein guter Haltepunkt für diesen. Ich sehe dich beim nächsten Mal. Auf Wiedersehen. 36. Raumtüren und Labyrinth-Segmentierung: Hallo und willkommen zurück zum Game Design Workshop und Real Engine Five Procedural Dungeon Action APs zur Kreation von Real Engine Five Dungeon Action APs Zuvor waren wir endlich fertig mit der Platzierung von Wänden und der Platzierung welcher Wandtypen und der Darstellung der Decke in den Räumen Wie sie in Räumen besser aussehen. Und wir haben sogar eine Box erstellt, um Überschneidungsereignisse zu erzeugen , wenn es sich bei der Kachel um einen Raum handelt. Und ich fing an, über die segmentierten Bereiche zu sprechen, aber wir wurden durch die Decke unterbrochen , die nicht abgesenkt, höher, nicht abgesenkt wurde höher, nicht abgesenkt Es wurde vor der Position eingeschaltet gelassen. Lassen Sie uns nun über die segmentierten Bereiche sprechen , von denen ich gesprochen habe Wie Sie sehen können, nehmen wir zum Beispiel an, wir haben hier einen Raum, nur mit diesem Bereich verbunden ist Dieser Bereich ist im Vergleich zu den anderen Bereichen isoliert, wohingegen dieser Bereich durch drei Räume miteinander verbunden ist. Dieser Bereich wurde durch zwei Räume miteinander verbunden. Dieser Bereich verbindet wieder zwei Räume. Und dieser Bereich hier drüben ist nur ein einziger Bereich mit zwei Blöcken, und das ist ein Bereich, in dem ein Block mit einem Raum verbunden ist. Was wäre, wenn wir eine Möglichkeit hätten, diese Bereiche zu kategorisieren? Grundsätzlich werden wir jeden Bereich , der mehr als einen Raum miteinander verbindet, als Korridor betrachten Wenn es zwei oder drei Räume miteinander verbindet, ist es ein Korridor. Wenn ein Bereich ein einziger ist und er mit einem Raum verbunden ist, dann ist es ein besonderer Raum, versteckter Raum, so etwas Ähnliches. Und die andere Kategorie, die wir haben können, ist die, wenn ein Bereich zwei oder drei Gänge hat und mit einem Raum verbunden ist Wir können es als einen Balkon oder eine Kante oder etwas Ähnliches betrachten , also als einen Bereich , der größer als zwei oder drei Blocks ist und mit einem Raum verbunden Wir können es als einen besonderen Bereich betrachten. Wie werden wir das machen? Nun, ich denke, Sie alle kennen die Antwort. Wir werden eine Veranstaltung veranstalten. Also werden wir aufhören zu spielen. Ich werde diese Funktionen schließen. Ich brauche sie nicht mehr. Und wir werden diese neue Funktion erstellen. Nennen wir diese Funktion erweitert. Das sind die Rechtschreibbereiche. Ich glaube aber, dass ich Bereiche richtig buchstabiert habe und finde. Nein, habe ich nicht. Ich habe ein Trennzeichen hinzugefügt. Was werden wir hier machen? Wir müssen es erklären. Das wird wieder eine große Funktion sein. Lass uns die Farbe tatsächlich öffnen. Ich werde ein bisschen einfacher sein. Nehmen wir an, wir haben unsere Maske. Diese Reparatur hier hat den ganzen Unterschied gemacht. In diesem Labyrinth haben wir einige Zimmer Und dann haben wir einige Wände , die die Bereiche voneinander trennen Mach sie größer. Mach hier, hier, lass uns rauskommen und vielleicht hier oder hier. Das ist ein ECT. Nun, wie gesagt, werden wir einige Bereiche in Korridore unterteilen Stellen wir das Grau dar. Also im Grunde wäre das ein Korridor. Und das wäre ein Korridor, weil er zwei Räume miteinander verbindet. Nun, der orange wäre der geheime Bereich und der blaue wäre ein Balkon. Und der lila wäre ein besonderer Bereich, weil er nur mit einem Raum verbunden ist und größer ist als zwei oder drei Boxen. Sagen wir drei. Oh. Wie werden wir das machen? Im Moment hat unser Labyrinth, unser Kerker , einige Wände Oh, was wir tun werden, ist, diese Wände zu benutzen Nehmen wir an, wir nehmen zum Beispiel ein zufälliges Gebiet. Wir werden diesen nehmen. Polar ist nicht der beste. Rund. Wir werden zum Beispiel von hier aus beginnen und wir werden Line Trace verwenden, was ist Line Trace? Eine Technik, die verwendet wird, um Objekte entlang einer Linie im Spielwort im Grunde zu erkennen . Es geht darum, eine unsichtbare Linie oder eine sichtbare Linie zu projizieren , wenn wir sie von einem Startpunkt bis zu einem Ende debuggen, und es einem Startpunkt bis zu einem Ende debuggen, und geprüft, ob es Kollisionen mit Objekten Das wäre eine grobe Erklärung. Also, was wir tun werden, ist, von unserem Punkt aus eine Linie zu ziehen. Keine Worte, unsere Kreuznachbarn. Ich denke oder etwas Ähnliches. Wir werden also suchen, welche der Nachbarn direkt mit mir verbunden sind. Sie haben keine Mauer dazwischen, sie haben keinen Raum zwischen dem, was uns wirklich wichtig ist. Wenn wir das also tun, werden wir sie zu einer Liste hinzufügen. Aber dieser Nachbar ist okay, dieser Nachbar ist okay, dieser nicht, dieser ist nicht, weil wir hier gegen eine Wand stoßen, und hier stoßen wir tatsächlich auch gegen eine Wand, das ist das externe Fandangon Nun, mit dieser Liste wiederholen wir den Vorgang und spielen ein wenig mit Variablen und fügen sie hinzu und entfernen sie aus Listen, um , welche Bereiche miteinander verbunden sind und mit wie vielen Räumen sie Weil dieser Bereich vielleicht kein leerer Bereich ist, sondern ein Raum, also müssen wir diesbezüglich differenzieren. Nein. Im Grunde ist das die Theorie dahinter , was wir tun werden. Wir werden die Zeilenphrase möglicherweise zweimal verwenden, einmal für eine erste Prüfung, ein zweites Mal für eine zweite Überprüfung, aber wir werden es erklären, solange wir eine lange erstellen. Fangen wir also an. Lass uns dieses Gameplay platzen lassen. Und lassen Sie uns zu unserem M-Generator in den fein segmentierten Bereichen zurückkehren unserem M-Generator in den fein segmentierten Bereichen Jetzt verwenden wir natürlich wieder die Koordinaten des Dungeons und holen uns die Schlüssel Dieses Mal werden wir sie in einer lokalen Variablen bewerben Wir werden diese Variable Dungeon Keys nennen. Weil wir sie vielleicht unterwegs brauchen und Kabel schleppen Es wird ein ziemliches Problem werden, da diese Funktion sehr umfangreich sein wird und auch andere Funktionen beinhalten wird Nun, von diesen Dngon-Schlüsseln bekommen wir P. Also werden wir mit unserem ersten Index beginnen, der Index Null sein würde , und von dort aus mit der Überprüfung beginnen Ich werde diese Variable mit dem Namen Study bewerben , eine lokale Variable Und verbinde das hier. Oh, das wird der Ausgangspunkt des Studiums sein. Das ist der erste Satz. Wir müssen irgendwo anfangen. Warum nicht am Anfang anfangen. Wir werden überprüfen, mit wie vielen Kacheln es verbunden ist und wie es eine Verbindung herstellt. Oh. Was wir tun werden, ist auch eine temporäre lokale Array-Variable zu erstellen. Wir werden es nennen. Ray, O. Ich mag es nicht, wenn mir das zu Cardy Cords wird Nennen wir diese Studie Koords-Eins. Oh, ich werde das mitbringen, sollte ein Array sein, und es sollte ein Inpoint sein Sehr nervig, wenn Sie etwas auf eine lokale Variable Es bleibt nicht im Speicher, weil sie einen anderen Variablenzähler erstellt haben, den Sie zuvor verwenden sollen. Das ist ein bisschen komisch passiert, glaube ich. Da wir es sind, werden wir dieses Studienarray verwenden, um den Studienpunkt hinzuzufügen . Weil dies das erste Array wäre , würden wir fühlen, und dann werden wir es mit einem anderen Array testen. Im Grunde genommen werden wir dieses Array jetzt fühlen, solange die Linienspuren zum Beispiel nicht gegen Wände stoßen Gehen wir wirklich ein bisschen zurück zum Malen. Die Art und Weise, wie es tatsächlich funktionieren wird , ist: Lasst uns eine neue Farbe wählen, lasst uns hellrot wählen. Ja, es ist so, dass wir mit dem Studium beginnen und die Nachbarn überprüfen werden. Also das wird einer von ihnen sein. Das wird der andere von ihnen sein. Das wird noch einer sein, und das wird noch einer sein. Diese beiden hier drüben, dieser und dieser, werden der Liste hinzugefügt , weil sie richtig sind. Dann werden wir anhand dieser Liste überprüfen, wo sich dieser und dieser verbinden. Sie stellen also im Grunde eine Verbindung zu diesem, diesem und dem her, und wir werden jede Liste aufeinander übertragen und erneut testen und testen, bis nichts mehr hinzugefügt werden kann und diese beiden Listen identisch sind, und wenn sie identisch sind, fahren wir mit dem nächsten Teil fort. Oh, lass uns weitermachen. Jetzt müssen wir nach den ersten beiden Nachbarn suchen. Wir werden studieren, Ackerbau studieren. Wir werden B nebenan finden und das werden wir übersehen. Der Grund, warum wir die Studie hinzugefügt bevor wir das tun, ist, dass wir die Studie mit einbeziehen wollen , was auch immer unser Ergebnis ist, denn wenn Sie sie nicht hinzufügen, dann werden wir jetzt einfach anfangen, nach Nachbarn zu suchen Wir werden uns nicht wieder auf den Weg zur ersten machen. Also haben wir es hinzugefügt, bevor wir mit dem ganzen Verfahren beginnen. Gehören die Nachbarn zum Kerker? Also werden wir eine Contain-Map erstellen. Und natürlich wäre die Karte unser Kerker. Und weiter, und wir werden das hier blanchieren und verbinden Jetzt bringen wir unseren Line Trace mit. O Line-Trace, nach Kanal. Was bedeutet „Kanal“? Jetzt haben wir die Kanalsichtbarkeit und die Kamera. Dies ist ein Kollisionskanal. Das heißt, wenn wir zum Beispiel zu Dekorationen gegangen sind und das Kästchen ausgewählt haben, wenn wir zu Kollisionen gehen und die Voreinstellungen öffnen, können wir den Objekttyp „Wort dynamisch“ sehen Und dann können wir die Antworten auf diesen Objekttyp sehen. ist aber dieser Objekttyp, aber wie reagiert diese Kollision auf den Rest der Objekttypen? Objekttypen wie Sichtbarkeit, Objekte wie Kamera, Objekttypen wie Wort statisch. Es hängt alles von den Einstellungen hier ab? werden später, wenn wir das Spiel machen, etwas detaillierter darauf eingehen, welche Kollisionen bei Spuren und allem anderen sehr wichtig sein werden Spuren und allem anderen sehr wichtig Im Moment werden wir nur den Kamerakanal verwenden , weil die Sicht von unserem Gameplay aus genutzt wird Und weil wir einige Dinge Kollisionen mit Sichtweite ausschalten werden und dann eine Kamera verwenden, die immer eingeschaltet dann eine Kamera verwenden ist, also mit der Spurlinie interagiert, auf die sie trifft, wenn sie sichtbar ist, werden wir einige davon schließen. Lassen Sie uns nun weitermachen. Wir gehen zu unserem Labyrinth-Generator. Wir wählen die Basislinienkamera und brauchen einen Start und ein Ende in diesem Knoten Also, was wir für den Anfang tun werden, ist, dass wir die Koordinaten haben müssen. Wir müssen den Schauspieler im Kerker finden. Wir werden den Wind aufziehen und das hier verbinden und ein Schauspieler-Agent besorgen . Zu diesem Standort des Schauspielers fügen wir eine Z-Achse hinzu, also ist er ein bisschen weiter vom Boden entfernt Lassen Sie uns das auf 25 setzen. Es ist ein bisschen höher als der Boden, und jetzt brauchen wir ein Ende. In diesem Fall, weil die nächste Wölbung anders sein wird. In diesem Fall wird unser Ende unsere Studie sein. Weil wir aus den Nachbarn der Nachbarn ziehen den Nachbarn der Nachbarn finden wir heraus, dass das die Koordinaten eines Nachbarn sind. Das ist nicht unsere Studie. Also fangen wir beim Nachbarn an und enden mit unserem Lernblock. Also werde ich es wieder finden, ich werde das kopieren. Verbinde das, verbinde das, und ich werde handeln, werde die Höhe kopieren und einfügen, um diese Kugel zu verbinden, und dann verbinde ich diese Kugel mit dem Ende, und wir haben eine Linienspur. Wenn ich nun den Typ des Bugs schreiben würde, diese Option hier drüben, die uns eine Zeile zeigt, und ich mache sie persistent und rufe diese Funktion tatsächlich hier auf. Segmentierte Bereiche nach dem Laden. Wir müssen das Laden dann ja, spielen, wir sollten diese Zeile hier erscheinen sehen Nun, dieser hat nur einen gültigen Nachbarn, also wirft er eine Zeile Es versucht, es von Anfang an vom Nachbarn zum Anfang zu werfen Anfang an vom Nachbarn zum Anfang zu Und wie wir hier sehen können, hat es hier einen Treffer gefunden. Es sagt uns, dass dieser Block eine Mauer hat. In diesem Fall würden wir es also nicht zur Liste hinzufügen. Nun, ich denke, das ist ein guter Ausgangspunkt für diese Lektion. Wir werden später mit der Logik und ein wenig unseren Out-Heat-Ergebnissen weitermachen . Das ist die Art und Weise, wie wir die Daten erhalten, die wir gerade erhalten, und auch den Rückgabewert, der angibt, ob es sich tatsächlich erwärmt hat oder nicht. Das ist eher das, was es erwärmt hat. Weitere Erklärungen zum nächsten. Vorerst auf Wiedersehen. 37. Segmentieren der Dungeon-Bereiche: O Hallo, und willkommen zurück zum Game-Design-Workshop und zum echten prozeduralen Dungeon-Action-RPG-Erstellungskurs für Engine Five Vorher. Wir haben mit unserer Funktion „Bereiche fein segmentieren“ begonnen, die unser Labyrinth anhand einiger Regeln unterteilen, die Korridore im Grunde nach verschiedenen Arten von Bereichen verbinden nach verschiedenen Arten von Wir werden, wie gesagt, Korridore haben, wir werden Balkone haben. Wir werden einige verschiedene Arten von Bereichen haben. Also haben wir damit angefangen, unsere Dungeon-Map hinzuzufügen, unsere Dungeon-Map-Schlüssel zu bekommen und sie zu einer Variablen hochgestuft Daraus haben wir den ersten Index erhalten, weil wir entschieden haben, dass das ein guter Anfang ist, und wir haben ihn der Koordinatenanordnung für Studien hinzugefügt Wir haben das auch zu einer Variablen hochgestuft, was die erste For-Schleife sein wird, aus der wir die Nachbarn abrufen werden. Über die Nachbarn, und wenn wir sie hinzufügen, wird es die Studienleitung sein Und wie gesagt, wir machen eine Schleife und machen ein paar Tricks, um nach der ganzen Gegend zu suchen Die Art und Weise, wie wir nach den Kacheln suchen , die sich in diesem Bereich befinden und von Räumen durch Wände getrennt sind , besteht darin, Linienbahnen zu erstellen , die wir vom Nachbarn in Richtung unserer Lernplatte projizieren . Und das wird uns sagen, ob es etwas getroffen hat oder nicht. Wie wir beschrieben haben, war der Beuteltyp persistent, als wir Persistent Draw verwendeten . Wir können es bei unserem ersten Stil sehen, aber ich muss Stil Null finden. O. Ich glaube, zur gleichen Zeit, als Ero ein Raum wurde. Möglich. Vorher Nr. Hürden. Ich bin ein bisschen blind Diese eine Kachel Null verbindet sich dieser und diese mit einer Linienspur. Diesmal hatte ich keine Mauer. Ich werde es einfach sehr schnell erstellen. Ich wollte eine Mauer haben, und sie hat zwei Wände. Also fangen wir beim Nachbarn an und das ist unsere Debabelinie, die grün wird, wenn sie auf etwas gestoßen ist Wenn wir dieses kleine Kästchen bekommen und es grün wird, bedeutet das, dass es etwas erhitzt hat und das Kästchen ist der Indikator Nun, darüber haben wir gesprochen , als wir einige Regeln verwenden , die auf unserem Hutergebnis und unserem Rückgabewert basieren. Im Grunde werden wir einfach den Rückgabewert verwenden , der heißt, hat es etwas getroffen oder nicht? Ich drücke B, verbinde das hier und hier, wenn es etwas erhitzt hat, machen wir nichts. Wir wollen nicht, dass es unsere Koordinaten hat, die Koordinaten eins. Wir werden das herbringen. Drücken Sie und ich verbinde es mit False, denn wenn wir etwas nicht haben, bedeutet das, dass es sich im selben Bereich befindet, und ich werde das mit dem Array-Element verbinden. Worüber ich nun ein paar Dinge sagen möchte , ist das Out-Heat-Ergebnis. Wenn wir das kaputt machen, weil es eine Struktur ist, wenn wir mit der Maus darüber fahren, können wir die Struktur des Wärmeergebnisses sehen Wir können sehen, dass es ein paar Informationen enthält. Es enthält tatsächlich viele Informationen, nicht wenige Informationen. Als Wärmeaktor hat er den Ort der Hitze, den genauen Aufprallpunkt. Es gibt die Entfernung von unserem Start bis zur Hitze an, die Zeit, die vom Beginn der Linie bis zum Rennen benötigt wurde, es hat sich etwas erwärmt. Und Start und Ende, es hat natürlich eine Menge Informationen. Das ist eine sehr nette Struktur man auch zum Debuggen von Dingen verwenden kann, wenn man zum Beispiel ein Debugging-System hat, dass man einen Zeilenverlauf ausgibt und Dinge auf etwas testen möchte Dinge auf etwas testen möchte Dies ist aus verschiedenen Gründen ein sehr guter Ausgangspunkt , um ein Debug-System zu erstellen Wie dem auch sei, ich wollte dem im Grunde nur zeigen , dass es das gibt, das ist eine Struktur Es hat so viele Variablen , die es uns geben kann. Lassen Sie uns nun mit unserem Algorithmus fortfahren . Wie gesagt, wir werden eine neue Reihe von Lernschnüren benötigen , damit wir sie miteinander vergleichen können Wenn wir alle möglichen Koordinaten des bestimmten Bereichs , den wir überprüfen, eingegeben haben Ich werde eine neue Variable erstellen. Ich werde vom Typ Punkt sein. Sei hier. Ich werde den DS einen Namen geben Diese Namenskonvention ist nicht die beste, aber wir tun es vorerst. Oh, unser nächster Schritt ist die Werbung für unsere Study Cords eins, Two Cords zwei Ich werde das hier verbinden. Was wir tun müssen, ist dem ähnlich. Ich werde das kopieren und einfügen. Wir hier. Und was wir zuerst brauchen, noch eins für Loop. Diese Wette, weil wir jeden einzelnen, den wir gefunden haben, durchgehen wollen Wie wir hier gesehen haben, gab es Fälle, in denen wir einen hinzugefügt haben, wir haben zwei hinzugefügt, oder es könnte Fälle geben, dass wir sogar vier Standorte hinzufügen. Wir wollen all diese Standorte durchgehen und dann für jeden von ihnen nach den Nachbarn suchen. Wir brauchen diese zusätzlichen vier Schleifen, und das wird zu einem Chaos von vier. Das wird. Jedenfalls. Jetzt müssen wir die Regeln ein wenig ändern. Natürlich brauchen wir einen Anfang und Ende, genauso wie vom Nachbarn zur aktuellen Studie. Und die aktuelle Studie ist die, bei der wir das Ergebnis dieser vier Schleifen hier drüben erhalten . Ich werde diesen Punkt ein wenig verbinden. Nein. Wie gesagt, wir brauchen ein paar zusätzliche Regeln, und die zusätzliche Regel wäre, ob Studie eins irgendwelche Nachbarn enthält, die wir überprüfen? Denn wenn es enthält, sollten wir es nicht noch einmal hinzufügen. Also, ich frage, Studie eins enthält m Das hier drüben. A, um es hierher zu bringen. Vielleicht werden wir hier reden. Machen Sie ein bisschen deutlich, dass die Leitungen miteinander verbunden sind. Eins. Ja, es sind Spaghetti. Es ist immer ein bisschen Spaghetti. Sie können mehr Zeit damit verbringen, es sichtbarer und klarer für das Auge zu machen klarer für das Auge zu Aber ich denke, wenn wir die Logik dessen, was wir tun, verstehen, wird es einfacher sein. Nun, ich brauche hier eine weitere Bedingung, keine Bedingung, einen Knoten, der das M sein wird. Wir haben es schon einmal benutzt, was bedeutet, wenn eins zwei ist. Eigentlich wollen wir sie nicht hier haben. Wir wollen, wenn es im Kerker ist, weitermachen. Wir brauchen hier tatsächlich eine zweite Filiale , um Platz zu schaffen Der zweite Zweig wäre also wenn er schon zu den Koordinaten gehört , mach nichts. Wir wollen den Puls von diesem. Ich gehe hier zum Puls. Ich werde diesen Impuls abschalten und diesen verbinden, weil wir aus diesem Grund diese Frage hier stellen wollen. Es ist in Ordnung. Diese Dinge sind seitenweise. Wie dem auch sei, wir werden die Studienkoordinaten unverändert lassen, da sie bewerten, dass wir etwas hinzufügen Und wenn der ganze Kram fertig ist, werden wir das überprüfen Wenn die Länge unserer Tagesschnüre eins der Länge der Studienschnüre zwei entspricht. Nun, warum machen wir das? Denn wenn wir hier etwas zu dieser Liste hinzugefügt haben und Ady Cords zwei nicht vollständig Wir haben einige neue Stücke hinzugefügt. Nein, lass uns das machen. Ranch und frag, sind unsere Ady Coords zwei gleich lang wie Study Cords eins? Oh, wenn es nicht gleich ist, gehen wir zu diesem oder zwei Da nichts drin ist. Und was wir tatsächlich machen werden, ist dieselbe Schleife. Wir werden die Schnüre eins hinzufügen es bei den Schnüren zwei belassen Dann werden wir prüfen , ob wir zu den ersten Koordinaten etwas hinzufügen können den ersten Koordinaten etwas hinzufügen Und wenn wir etwas hinzugefügt haben, wird es immer und immer wieder gehen, bis es fertig ist Ich denke, das ist ein netter Punkt für diesen. Ich sehe dich am nächsten. Auf Wiedersehen. 38. Finalisieren der Segmentierungsmechanik: Hallo und willkommen zurück zum Game Design-Workshop Real Engine Five Procedural Danson Action ARPC In der letzten Lektion haben wir mit unserer Funktion „ Feinsegmentierte Bereiche“ weitergemacht mit unserer Funktion „ Feinsegmentierte Wir haben das Programm Study Cords Two Variable entwickelt, das wir mit unserer Studie Cords bewerben Und dann haben wir für alle unsere Study Cords eins. Sie überprüfen alle Bereiche , die wir hinzugefügt haben. Nun haben wir diese Gebiete in Nordost-West-Süd-Richtung durchsucht, alle Nachbarn, und wir haben gefragt, ob sie zum Dungeon gehören oder ob sie bereits in Studie eins enthalten sind Danach haben wir unser Trace-Line-System erstellt , mit dem wir überprüfen, ob wir gegen eine Wand stoßen oder nicht Und wenn nicht, haben wir diese Kabel zu Studie eins hinzugefügt. Wenn die vier Schleifen, die ersten vier Schleifen, enden, was bedeutet, dass alle Koordinaten von Studie eins abgeschlossen sind, überprüfen wir, ob unsere Koordinaten für Studie zwei Studie eins übereinstimmen, denn bevor wir diese Aktion zum Hinzufügen neuer Dinge ausgeführt haben, wir die Koordinaten der Studie zu den Koordinaten von Studie Zwei hochgestuft Nun, wenn das damals war, wäre das falsch, nicht wahr. Mein Fehler. Wir schließen Studie zwei ab und setzen sie auf Studie eins zurück. Dann versuchen wir erneut, der Studie eine neue Koordinate hinzuzufügen , und wenn keine neuen hinzuzufügenden Koordinaten vorhanden sind, fahren wir jetzt mit dem wahren Teil fort, d. h. wenn Studie zwei gleich Studie eins ist und das bedeutet, dass es keine weiteren Koordinaten mehr gibt. Als Erstes müssen wir eine weitere Struktur wie das ST-Rooms-Array erstellen , das die Koordinaten für unsere segmentierten Bereiche enthält Aber da es dieselbe Art von Struktur haben wird, wird es nur eine Struktur sein, die eine Reihe von Koordinaten hat , eine Reihe von Endpunkten Wir können dieselbe Struktur verwenden. Also kann ich einfach das ST-Rooms-Array hinter mir lassen und es ST all areas nennen . Und es wird vom variablen Typ ST-Räume sein, die wir umbenennen können, aber lassen wir es ST-Räume, was, wie gesagt, ein Array von Koordinaten ist . Ich werde das hierher bringen und auf Hinzufügen drücken. Jetzt werde ich es mit verbinden. Lassen Sie uns hier über diesen Knoten sprechen . Das braucht eine Struktur. Vorher haben wir eine Struktur erstellt und gesagt, wir können sie tatsächlich teilen und die Koordinaten hier hinzufügen. Im Moment werden wir das machen. Wir werden es einfach aufteilen und so hinzufügen , weil es funktioniert, aber es ist besser, den ganzen Weg zu gehen, eine Struktur zu erstellen und ihr Mitglieder hinzuzufügen , wenn Sie mit Strukturen noch nicht vertraut sind. Wenn Sie Erfahrung damit haben und wissen wann Strukturen funktionieren, können Sie dies tun, wenn es nötig ist. Ich sage das aus dem Grund, Strukturen Probleme bereiten können. Wenn ich zum Beispiel einige Dinge an der Struktur ändere, müssen wir viele Knoten wie diesen wieder verbinden Denn wenn ich es hier aufgeteilt habe, die Variablen nicht immer aktualisiert Ich rekombiniere, wir haben die Struktur, und wenn ich der Struktur etwas hinzufüge, gehe ich zur Variablen der Struktur und füge weitere Variablen hinzu, und das könnte ein Problem haben Ich teile es auf und bringe unseren Studienkoordinaten eine mit. Und ich werde es hier verbinden, weil Studienkabel eins und Studienkabel zwei jetzt gleich sind Aber dabei wird im Grunde eine Liste unserer segmentierten Bereiche erstellt, wie es bei den Räumen der Fall Als Nächstes werde ich die ersten Studienkoordinaten löschen. Und jetzt müssen wir mit der Suche nach den restlichen Bereichen fortfahren mit der Suche nach den restlichen Bereichen Denn wie jetzt haben wir bei Studienblock Null angefangen und geprüft, wie viele der Kacheln mit Studienblock Null verbunden sind. Zuerst haben wir überprüft, ob sie miteinander verbunden sind, und wir haben nach weiteren gesucht. Lass uns spielen, wenn wir ein Beispiel bekommen. Bei S wurde die gesamte Studie abgebildet, eins, alle Koordinaten von Nullpunkten, die nicht miteinander verbunden sind und nicht durch Räume, Wände oder Räume blockiert sind Wände oder Räume Nein, das müssen wir für den Rest des Labyrinths machen. Um das zu tun, werden wir die ganze Sache hier noch einmal wiederholen Aber zuerst müssen wir einen Checker erstellen. Ich habe noch mehr Studienplätze übrig? Denn wenn alle Orte kartografiert sind, dann sollte dieses Ding aufhören zu laufen. Okay, lass uns das erstellen Das erste, was wir brauchen , sind unsere Dungeon-Schlüssel, und wir werden sie in einer Schleife durchgehen Eigentlich, weil das eine Regel sein wird , wollen wir überprüfen, ob wir das noch einmal ausführen oder nicht Das wäre und sollte sein oder mit Pause. Weil wir hier der gleichen Logik folgen werden. Wir werden eine Variable verwenden. Ich werde es lokal erstellen, es wird Typ B sein, kein R, es wird Single sein. Nennen wir das gehört. Wenn es hingehört, wo gehört es dann hin? Wenn es zu den Regeln gehört , die wir erstellen werden. Und jeder Scheck, den wir machen, gehört zu den Dungeon-Schlüsseln, dann bedeutet das, dass wir fertig sind Das bedeutet, dass wir alle Bereiche überprüft haben. Wenn es nicht dazu gehört, wenn irgendein Check von hier zu keiner unserer Regeln gehört, dann bedeutet das, dass wir es erneut ausführen müssen, oder das C-A-Element, die bestimmte Verordnung Nein, ich werde eine Verbindung herstellen, die hierher gehört, und ich werde es auf Falls setzen lassen , denn wenn wir anfangen, alle Variablen zu überprüfen, wollen wir, dass es an dieser Stelle ausgeschaltet ist oder jede Variable Wir werden eine weitere oder jede Schleife mit Pause benötigen , um sie hier zu verbinden. Und jetzt brauchen wir die Variable, die den ST in allen Bereichen erzeugt hat . Weil wir vergleichen werden, gehört dieser Dungeon-Schlüssel zu einem der Gebiete Wenn er, wie gesagt, zu keinem der Gebiete gehört , werden wir ihn neu starten Wir nehmen die Struktur, das sind die ST-Räume, und wir werden fragen, ob eines dieser Arrays direkt enthält, wir müssen nicht für jeden von ihnen eine Schleife bilden und es dann überspringen Wir können direkt fragen, ob dieses Array den ursprünglichen Wert enthält Der aktuelle Studienwert. Vielleicht. Oh, ich werde hier eine Filiale anlegen. Ich werde hier setzen und hier setzen und dann setzen wir gehört auf wahr. Das bedeutet, dass dieser Wert, den wir überprüfen , bereits zu einem Bereich gehört. Gehen wir kaputt? Und mit einer Frage weitermachen , gehört sie dazu? Denn vielleicht finden wir bei diesem Scheck am Ende alles Falsche. Das Ding, das wir überprüfen, gehört zu keinem Gebiet. Es besteht nicht nur die Möglichkeit, zu einem Gebiet zu gehören, sondern auch nicht dazu zu gehören. Das könnte ein Zimmer sein. Da wir alle Schlüssel zum Kerker überprüfen Und wenn das ein Raum ist, löst das immer Stürze in alle Bereiche aus Also müssen wir fragen, ob es zu einem Raum gehört. Und hier kommen alle Raumkoordinaten , die wir in einem Array gespeichert haben. Also müssen wir nicht gehen, wir müssen das eigentlich nicht tun. Wenn wir alle Bereiche auch in einem Array hätten, könnten wir fragen, ob es enthält. Aber ich finde es momentan besser geeignet, mehr Tutorial, also, wenn Sie so wollen, es als Bake ST zu haben und sich mit der Verwendung von Strukturen in einem Array vertraut der Verwendung von Strukturen in einem Array Wir werden fragen, ob es sich beschwert. Und wir werden einen Zweig anlegen, und wenn das falsch ist, stimmt es nicht Natürlich benötigen wir die aktuellen Koordinaten. Wir haben es getan. Und jetzt geht es uns nur noch darum , dass, wenn das nicht stimmt, wenn es nicht stimmt, wir es zur aktuellen Studie hinzufügen werden. Und wenn wir einen Block zum Studieren finden, sollten wir unsere Kerkerschlüssel knacken, um das Arbeitszimmer zu finden Und zwar ein bisschen runter. Ein Fehler, wir müssen etwas korrigieren. Wir brauchen, dass das Gehörte wahr wird. Dann müssen wir es auch nicht verbinden. Wir müssen es nur durchdrehen denn wenn wir die Hauptschleife verlassen , wenn wir unsere Dungeon-Keys-Schleife verlassen, müssen wir fragen, ob sie dazugehört Wir werden einen Zweig benutzen und wir werden zu Belongs gehen. Wenn es dazu gehört, B wenn es nicht mehr dazugehört, wie gesagt, müssen wir das Ganze neu starten. Und wie werden wir das machen? Wir ziehen einen riesigen Zobel von s an den Anfang unseres Hinzufügens . Füge die beiden Aufrufe hinzu, die ich von hier aus unterbrechen werde , verbinde sie einfach so. Kompilieren und speichern Diese gesamte Schleife wird nun so lange ausgeführt , bis alle Bereiche abgeschlossen sind. Lass uns testen, ob es funktioniert, fang an. Und alle Bereiche sind derzeit segmentiert. Haben ihre eigenen Pfeile. Und wir haben Kategorien. Wir haben fast Kategorien. Wir haben sie in einer Liste. Aber als Nächstes sollten wir tatsächlich einige Regeln aus dieser Liste erstellen , um unsere Bereiche zu definieren. Aber das ist etwas. Wir gehen zum nächsten. Vorerst auf Wiedersehen. 39. Kategorisieren von Bereichen nach Größe: Hallo und willkommen zum Game Design Workshop und dem Kurs zur echten prozeduralen Dungeon-Action-Rollenspiels aus Engine Five Dungeon-Action-Rollenspiels Zuvor haben wir den Loop mit den Segmentflächen aus Kiefernsegmenten erstellt mit den Segmentflächen aus Kiefernsegmenten Wir haben den Teil erstellt, in dem wir alle Bereiche in einem Array von ST-Räumen speichern . Und wir haben einen Mechanismus entwickelt, um zu überprüfen ob einer unserer Dungeon-Schlüssel zu einem der Bereiche gehört, die wir gerade erstellt haben, oder ob er zu einem Raum gehört Wenn nicht, bedeutet das, dass wir immer noch Dinge überprüfen müssen, und der gesamte Algorithmus wird erneut ausgeführt Das Neue, was wir jetzt brauchen, ist , diese Bereiche zu kategorisieren. Und Überraschung, dafür brauchen wir eine neue Funktion. Lassen Sie uns eine Funktion erstellen. Nennen wir es Karrenbereiche. Nennen wir es tatsächlich Find Segment Areas. Lass es uns eingeben. Jetzt müssen wir als Erstes alle unsere Gebiete durchgehen. Also nehme ich den ST oder die Gebiete und ich werde eine Schleife machen. Nehmen wir an, es ist eine Struktur, wir durchbrechen müssen. Machen Sie es uns jetzt einfach. Wir haben eine einfache Regel , wie viele Blöcke, wie viele Kacheln jeder Bereich hat. Nein, wir können die Länge dieses Arrays ermitteln, die Raumkoordinaten des Bereichs, und wir können den Raum tatsächlich zu einer lokalen Variablen heraufstufen die Raumkoordinaten des Bereichs, und wir können den Raum tatsächlich , die wir aufrufen werden. Und wir werden es hier verbinden. Und aus unserer Länge, unserer ganzzahligen Länge. Wir gehen zu welchem Int, weil es uns gibt , wie viele Kacheln dieser Bereich hat? Oh, wir werden eine Regel haben, nach der es keine Kacheln geben darf. Wir brauchen die Null-Kachel eigentlich nicht. Wir brauchen für einen, zwei oder drei. Und lassen Sie uns die Null entfernen. Eigentlich, um die Null zu entfernen, wodurch der Index bei eins beginnen kann. Und wir werden das oder entfernen, wenn es über drei liegt, wie wird sich das dann einschalten? Es wird das Standardkabel verlegen. Hier behalten wir die Standardeinstellung bei. Wenn wir mehr spezielle Regeln wollten, hätten wir auf int umschalten und hier die gewünschten ACs angeben können. Zum Beispiel würden wir nicht vier wollen, wir bräuchten acht, wir würden bestimmte andere Zahlen wollen. Lassen Sie uns nun mit unseren Regeln für Bereiche mit einer Kachel beginnen. Wir müssen also zunächst prüfen, ob unser Fall, also ein Array, ist, was keine Rolle spielt. Selbst wenn es eins ist, werden wir die erste Kopie bekommen, die Null ist, was die einzige Kopie ist , wenn wir eine Länge von eins haben, und wir werden das kaputtmachen. Da es sich um einen Punkt handelt, handelt es sich um eine Struktur aus zwei ganzen Zahlen, und wir werden prüfen, ob sie gleich Null sind Hier verwenden wir die Endkugel, was bedeutet, dass beide wahr sein müssen , damit sich das Ganze durchsetzt. Wir werden einen Zweig einrichten, wir werden diesen verbinden und wir werden den Zweig mit Nummer eins verbinden Wir nehmen der Libido Raum, wir können die Körpergröße erhöhen, aber wir können hier arbeiten Was sind nun die Möglichkeiten, einen Block zu haben? Was könnte das sein? Also, das könnte Schmerzen bereiten. Das brauchen wir nicht. Du. Bellen. Und nein. Nehmen wir an, wir haben einen Block hier, eine Kachel hier, eine Kachel hier, eine Kachel hier, genau das. Ich werde das Wonder Grid erstellen. Nein. Nehmen wir an, wir haben hier ein Zimmer. Dann haben wir hier ein paar Wände und wir haben ein anderes Zimmer hier drüben. Dieser Stil hier könnte mit diesem Raum verbinden Das ist ein Korridor. Der andere Fall, den wir haben könnten, ist, dass es zum Beispiel keine Verbindung zu diesem Raum herstellt. S. Das ist also eine Lüge hier. Also können wir das einen versteckten Raum nennen. Lassen Sie uns es in einer speziellen Option für sich haben, wie eine Kachel, die mit einem Raum verbunden ist und mit nichts anderem verbunden ist. Und die dritte Option wäre die Startkachel, nichts miteinander verbindet und wie ein versteckter Raum ist, dem wir nicht wollen, dass es ein versteckter Raum ist. Es ist ein Startplättchen. Deshalb suchen wir hier nach der ersten Kachel. Wenn es also die erste Kachel ist, sollten wir sie einer neuen Kategorie hinzufügen, einer neuen Anordnung von ST-Raumstrukturen. Wir werden alle Bereiche duplizieren. Und ich gehe all diese S-Korridore. Das sind ST-Korridore. Ich werde einen von ihnen löschen. SD-Korridore, und ich werde es hierher bringen. Wenn das stimmt, füge ich unsere Studie hinzu. Ich teile die Daten auf, bringe die Studie hierher und wähle Connected to True aus. Wenn wir jetzt loslegen, können wir sehen, dass es Blöcke gibt, auf denen Pfeile zu den Räumen Aber der erste, in diesem Fall nicht, denn von hier aus ging es weiter, also 012, das sind eigentlich sechs, rate mal, wer hier ist mal, wer Ja. Fahren Sie auf einer geraden Linie fort. Aber manchmal zeigen die Pfeile in Richtung Raum Hier haben wir ein perfektes Beispiel. Diese Kachel verbindet beide Seiten. Es hat also beide Pfeile. Wenn es ein versteckter Raum wäre, hätte er nur eine Kachel. Es wäre eher wie dieses. Der eine Pfeil zeigt auf den Raum und es wäre ein Deaden. Dann haben wir diese Pfeile, wir können entscheiden, ob unsere einteiligen Fallstudien ein Verbindungsstück oder ein versteckter Raum sind Nein. Hör nicht auf. Es gibt eine Fehlermeldung. Was war die Fehlermeldung? Bewegungseingabe hinzufügen. Controller von oben nach unten. Okay, das liegt daran, dass wir den Controller nicht für das Gameplay und so repariert haben . Wir werden das später beheben. Nun, was wir brauchen, ist dieser Wert hier drüben, unsere Fallstudie, und wir brauchen die Richtungen der Kachel. Oh, wir werden ihn in unserem Kerker finden. Mistkarte. Und jetzt haben wir den Schauspieler. Und vom Schauspieler können wir unsere Anweisungen bekommen. Und ich verstehe die Werte. Gehen wir diesmal von der Werte-Seite aus. Wir könnten es aus beiden Richtungen machen. Was wir wirklich brauchen, sind die Werte , weil es uns egal ist, ob es Nordosten, Süden oder Westen ist. Es ist uns wichtig, wie viele der Pfeile sichtbar sind. Es ist uns egal, in welche Richtung sie gehen. Oh, um zu zählen, wie viele Pfeile ich habe, benutze ich einen Zähler. Ich werde eine lokale Variable erstellen, ich werde sie Counter Local Counter nennen. Und es wird vom Typ Integer sein . Und wenn ich meine vier Schleifen mit den Werten durchführe, möchte ich, dass sie bei Null beginnen. Ich werde es vor der Vierschleife auf Null setzen. Ich werde es für jede Schleife tun. Und verbinde das hier. Und die einfache Frage ist, wie viele davon und wie viele nicht? Ich werde eine Filiale einrichten, um eine Verbindung herzustellen, und ich werde meinen lokalen Zähler auf zwei plus eins setzen. Nein, wenn das vorbei ist, werde ich mit einer Filiale nachfragen. Ist meine letzte Begegnung eine. Denn wenn es keiner ist, ist es ein Korridor. Ich werde es verbinden, um einen Korridor hinzuzufügen. Wenn es einer ist, dann ist es ein versteckter Raum. Ich werde die Korridore duplizieren, die Variable und sie in Räumen benennen Ich werde das herbringen . Ich füge hinzu. Und ich werde dieser Struktur eine Reihe von Arrays hinzufügen. Ich studiere Variable. Und jetzt haben wir all unsere einstöckigen Räume entweder in Korridore oder versteckte Räume eingeteilt all unsere einstöckigen Räume entweder in Korridore oder versteckte Ich denke, das ist vorerst ein netter Breakpoint. So wie du in der nächsten. Auf Wiedersehen. 40. Bodenaustausch nach Kategorie: Hallo und willkommen zum Game Design-Workshop und den echten prozeduralen Engine Five-Dungeon-Action-Creation BZ Zuvor hatten wir unsere Kategorie der Räume mit einer Kachel abgeschlossen unsere Kategorie der Räume mit einer Kachel Wir haben die Studie verwendet, die wir zu Beginn erstellt haben. Dabei handelt es sich um das D-Array von Koordinaten innerhalb unserer STO-Bereiche. In diesem Fall hat diese Studie nur eine Kachel, da wir die Länge überprüfen und zwischen ihnen wechseln. Und da wir diese Kachel haben, prüfen wir, ob es die erste Kachel ist. Wenn es die erste Kachel ist, fügen wir sie zu unserer Koordinate zu unserem Korridor-Array, dem Trakt-Array, Und wenn nicht, prüfen wir, ob es sich um einen Block handelt, der einen oder mehrere Ausgänge hat Wenn es mehr als einen Ausgang hat, ist es ein Korridor. Wenn es nur einen Ausgang hat, ist es ein versteckter Raum. Fahren wir nun mit den Strukturen mit zwei und drei Längen fort, was bedeutet, dass diese Bereiche nur zwei oder drei Kacheln haben. Wir sagten, wir werden eine spezielle Kategorie für diese Fliesen erstellen , die wir Balkone nennen werden. Und es ist nicht nur so, dass es zwei oder drei Längen gibt , weil wir zum Beispiel beim Spielen Glück haben und dieses Beispiel bekommen könnten. Ch. Okay. Siehst du diesen. Dieser verbindet. Tatsächlich tut er das nicht. Es verbindet nur einen Raum. Nein, es verbindet zwei Räume. Es verbindet eine Tür hier und eine Tür hier, und das ist am Ende. Da es zwei Räume miteinander verbindet und es sich um eine dreifache Fliese handelt. Es sollte kein Korridor sein. Es sollte kein Balkon sein. Es sollte ein Korridor sein. Hier haben wir einen geheimen Raum, und dein Balkon wäre dieser, wie ein Raum, der mit zwei Kacheln und einer Tür verbunden ist, und sie sind mit nichts anderem verbunden. In unserem Regelwerk für die beiden müssen wir auch die Frage stellen. Verbindet es mehr als einen Raum? In diesem Fall würde dieser lokale Zähler nicht ausreichen. Und wenn wir prüfen, ob es das nächste Mal ist, lassen Sie uns es in Aktion zeigen Was wir also brauchen werden, ist ein neuer Zähler, nennen Sie ihn jetzt lokal. A. Und wir werden damit beginnen, dieses Array zu löschen . Es ist noch kein Array. Wir müssen es hier auswählen, zwei zu einem Array zusammenfügen. S ändere den Variablentyp. Stellen wir eine Verbindung zu n drei her. Warum wir löschen Weil wir jedes Mal, wenn wir nach einem neuen SD-Bereich suchen , wollen wir, dass dieser zurückgesetzt wird. Oh, wir werden unsere Studie machen und wir werden bei jedem Flop landen. Jetzt werden wir ein Kreuz nebenan finden Was ich vorher sagen wollte, ist, dass wir, wenn wir nach CSS nebenan suchen, möglicherweise mehr als einmal überprüfen denselben Raum möglicherweise mehr als einmal überprüfen, also zwei Kabel Zwei Kacheln könnten in denselben Raum passen. Oh, um das zu überprüfen. Was wir tun werden, ist, jede Schleife von den benachbarten zu trennen. Also werden wir die Nachbarn überprüfen. Wenn sie zu einem Raum gehören. Nein, wir werden es tatsächlich tun, wenn es gerade enthält weil wir es nicht mit unseren All-Room-Ports machen können. Denn wenn ich hier einen Container mache, Ray. Was enthalte ich hier. Ich möchte wissen, in welchem Raum es sich befindet. Oh, ich brauche die Variablen Raum eins, Raum zwei, Raum drei. Und das ist unser ST, alles Zimmer. ST-Zimmer, Ray. Wir brauchen unsere Struktur, weil unsere Struktur besagt, dass dies Raum eins ist. Das ist Raum zwei, das ist Raum drei. Also machen wir eine Schleife. Von diesem hier. Ebenfalls. Wir schleifen uns nicht von den Zimmern ab. Sie überprüfen das nebenstehende , weil wir dadurch nur alle vier Schleifen hier viermal machen werden Wie bei jeder Studie wird auch diese zu zwei weiteren Berechnungen führen. Ich denke, wir werden das kaputtmachen. Und jetzt können wir überprüfen, ob diese Koordinaten in einer beliebigen Anordnung der ST-Räume enthalten sind . Oder wir werden eingedämmt werden. Ihnen gefällt das hier, sie können einen Zweig verwenden, um zu überprüfen, ob das stimmt oder nicht. Jetzt kommt der neue Teil genau hier. Wir werden diesem Array nicht einfach den Index hinzufügen, der darauf verweist, um welche Zimmernummer es sich handelt weil der Index 12345 unseren Räumen 12345 entspricht Was wir machen wollen, ist einzigartig. Das heißt, wenn der Raum bereits in diesem Array vorhanden ist, wird er nicht erneut hinzugefügt. Ich werde das hier korrigieren. S für ein paar zusätzliche Informationen, wenn das ein Set wäre, was wiederum das ist, hätte ich das vielleicht schon einmal gesagt. Wenn das ein Set wäre, würde es nur Unikate hinzufügen. Das ist die Regel von Sets. Aber Arrays sind manipulierbarer. Wir brauchen nichts anderes. Aber wenn das alles erledigt ist, werden wir eine Filiale fragen. Wenn die Länge unseres lokalen Zählerarrays größer ist, entspricht sie tatsächlich Eins. Denn wenn wir fragen, ob es eins ist, dann decken wir jedes andere ab. Möglichkeiten. Wenn es einer ist, ist es ein Balkon. Es ist nur mit einem Raum verbunden. Wenn es mit mehr als einem verbunden ist, ist es ein Korridor. Im vierten Zweig werden wir ST-Korridore einrichten. Wir werden hinzufügen. Wir teilen uns das auf und bringen unsere Studie mit. Wenn es keine neue Variable benötigt , duplizieren wir die Variable im versteckten Raum. Es ist in Ordnung. Die gleiche Struktur. Es ist eine Reihe von Strukturen, ST-Räume. Wir werden das ST Balconies nennen. Dann werden wir eine nächste Studie hinzufügen. Und das wird unsere Gebiete definieren , die wir nach unseren Herrschern Balkone nennen Jetzt werden wir für den Rest der Gebiete genau das Gleiche tun Aber mit einem Unterschied: Wenn sie mit einem verbunden sind, sind es keine Balkone mehr. Es sind große Bereiche, die mit einem Raum verbunden sind. Aber wir werden sie isolierte Gebiete nennen. Ich werde das einfach unten kopieren und einfügen, um den Standard-Pin zu verbinden , der mit allem unter eins oder über drei läuft. Und wir werden diese ST-Balkone löschen. Wir werden einen variablen Balkon duplizieren, ihn ST oder verwandte Bereiche nennen. Und wir werden das hierher bringen. Also, die Bereiche, die nur mit einem Raum verbunden sind, sind isolierte Bereiche, wenn sie groß genug sind. Und diejenigen, die nicht unser Koordinator sind. Aber alles, was wir gerade getan haben, sind Daten. Wir haben visuell nichts geändert. Wenn wir gehen und alles spielen. Wir werden keinen Unterschied sehen, nichts wird sich ändern. Aber wir haben die Daten gespeichert, die wir benötigen, um Dinge zu verwirklichen. Die nächste Funktion, die wir im Labyrinth-Generator benötigen werden, besteht darin, die Bereiche zu kategorisieren, Hinweise zu geben und etwas mit ihnen zu tun Und das wäre an uns, unsere Stockwerke hinzuzufügen. Wir werden eine neue Funktion erstellen. Wir werden es Stockwerke hinzufügen nennen. Mit dem Hinzufügen von Stockwerken meine ich, dass wir das Material ändern werden, das sie haben weil das statische Durcheinander gleich bleibt Fangen wir zum Beispiel mit den versteckten Räumen an. Wir werden unsere ersten Zimmer bekommen. Wir gehen zu jeder Schleife. für jeden versteckten Raum, den wir haben, Schauspieler Mac Dungeon finden Y. Wir mussten das zuerst kaputtmachen. Weil das die Struktur ist. Das ist ein Fraktur-Array, auch wenn es einen Raum hat, ist es ein Array mit einem Index. Wir werden diesen einen Index in einer Schleife durchgehen, oder wir können tatsächlich, da wir wissen, dass es sich um einen Index handelt, Nullindex bekommen, dann können wir unseren Dungeon finden Dungeon, wir bekommen State Floor. Wir haben es benannt. Und Material einstellen. Für Loop. Versuchen wir es ein bisschen, kompakt zu machen. Element Null, weil unser Boden nur ein Element hat, und dieses möchten wir ändern. Welches wäre für die Heizräume. Welches könnte ausgewählt werden. Gehen wir zu unseren Dachgittern. Lasst uns nach einem suchen , der gut aussieht für einen. Mit der Lava. Machen wir Iden-Räume, die Lava abdecken. Ich muss tatsächlich das statische Netz einstellen. Entschuldigung, nicht das Material. Nein, ich werde Attic Mesh einstellen , weil wir unterschiedliche statische Maschen haben. Nicht nur ein Material. Und ich werde das hierher verschieben. Und jetzt lass uns spielen gehen. Habe einen Heilungsraum , der nicht gelogen hat. Der Grund ist möglicherweise, wie immer, ich habe eine Anzeige, die hier ein Stockwerk hinzugefügt hat. Dann kompilieren und erneut speichern, und wir haben eine ID , das ist der Aufzug. Nun, warum ist das passiert? Seien Sie die kategorisierten Bereiche. Wir waren nicht hier, ich habe nach dem ersten Zimmer gefragt, aber der Ausweis fragt, ob Sie die speziellen Bereiche enthalten. In unserem Aufzug sind unsere Raumgrenzen, unsere Raumgrenzen keine speziellen Bereiche Aber was wir tun müssen, ist hier oder, falls es der erste Raum oder das erste Arbeitszimmer ist , R A Kalbfleischbereiche, Kalbskacheln hinzuzufügen falls es der erste Raum oder das erste Arbeitszimmer ist , R A Kalbfleischbereiche , Kalbskacheln Es sollte ein Korridor sein. Also lasst uns erneut kompilieren und speichern. Keine versteckten Räume. Noch ein Mal. Okay, hier haben wir zwei von ihnen, einen hier, der mit diesem Raum verbunden ist, und wir haben hier auch einen , der mit diesem Raum verbunden ist. Oh, ich denke, das ist ein guter Ausgangspunkt für diesen. Im nächsten Fall werden wir damit fortfahren , die Stockwerke nach jedem Stil und einigen Dingen, bei denen es Probleme wie dieses gibt, auszurichten und einigen Dingen, bei denen es Probleme wie dieses gibt, und sie zu beheben Weil wir einige Dinge reparieren müssen. Zum Beispiel müssen wir unserem Labyrinth in diesem Teil hier etwas hinzufügen . Aber ich schweife ab Tschüss, wir sehen uns beim nächsten. 41. Versteckte Zimmerkategorien: Hallo und willkommen zum Game Design Workshop, echten Engine Five-Action-Rollenspiel-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Erstellung von prozeduralen Dungeon-Action-Rollenspielen Zuvor waren wir mit unserem Generator fertig, nicht mit unserem Generator, sondern mit unserer Funktion für kategorisierte Bereiche Aber wir haben die Balkonregeln hinzugefügt, indem wir überprüft wie viele Zimmer jeder Stil zwei Cent hat, und wir haben ein Array mit lokalem Zählerfeld erstellt, dem wir einen eindeutigen Wert hinzugefügt haben. Wenn der Index also bereits hinzugefügt wurde, wenn beispielsweise Nummer eins bereits hinzugefügt wurde, er nicht erneut hinzugefügt , wenn wir andere Kacheln überprüfen. Wenn es nicht mit mehr als einem Raum verbunden wäre, wäre es ein Korridor, und wenn es nur mit einem Raum verbunden wäre, wäre es ein Balkon. Und wir haben dasselbe getan , um isolierte Bereiche und Korridore für Räume zu kategorisieren isolierte Bereiche und Korridore , die größer als drei Kacheln sind Wir haben auch die Funktion zum Hinzufügen der Stockwerke gestartet und das Dachbodennetz für den verdeckten Boden hinzugefügt Jetzt fahren wir mit den nächsten fort Oh, fangen wir mit den Balkonen an. Wir werden für jedes Tief nochmal brauchen. Wir werden unsere Balkone noch brauchen. Und wir werden das Ergebnis knacken müssen. Von diesem Ergebnis müssen wir ausgehen, weil es nur eine Variable war, eine Koordinate, also bekommen wir Null, aber hier müssen wir das alles durchgehen Also für jede Schleife, wie diese hier, und dann werden wir herausfinden, dass wir in unserem T tatsächlich genau das kopieren können Lassen Sie uns jetzt eine Verbindung herstellen. Lassen Sie uns für den Boden wählen, ob wir keine Balkone hatten. Wir hatten einen dreckigen. Ich denke, es ist gut für Balkone. Hier ist es, dieser kombiniert A, B, drei, A, da6b. Unglaublich. Beim nächsten werden wir genau das Gleiche tun, nämlich abgelegene Gebiete nehmen. Nun, was abgelegene Gebiete angeht, wären wir nicht genau dasselbe weil wir nicht wollen, dass sie Butter haben. Wir wollen sie ein bisschen spezieller machen. Vielleicht am Ende in einem Bus oder so. Was wir tun werden, ist hier eine Auswahl zu treffen. Für den Index werden wir einen zufälligen Bereich wählen. Sind es 23 Stockwerke? A. Ich denke, wir sollten hier etwas mehr von hier verwenden. L Lass uns einfach den Boden legen. Wir haben ein paar normale. Normalen und Flammen, wie normale Korridore, aber es ist Apropos Korridore. Lass uns die Korridorböden bauen. Ich werde sie mitbringen. Hier. Hier sind Korridore. In Ordnung. Wir beginnen mit dem Bodenmaterial. Also überspringen wir diesen Schritt. Wir müssen keine Korridore bauen. Es gibt keinen Grund , es erneut hinzuzufügen. Aber wir müssen die Zimmer putzen. Perimeter-Anschlüsse. Eigentlich könnten wir alle Koordinaten wählen, und wir könnten Das sind Koordinaten. Wir haben keine Pause. Wir können das hier direkt kopieren und einfügen. Direkt rein. Für die Zimmer haben wir einen Holzboden. Dieser Y. Also kombiniert BC D sieben oder drei Nukleare Codes. Und ich glaube, wir sind fertig mit den Fußböden. Wir kompilieren Ave. Wir können tatsächlich, wir wollen, wir haben es geschaffen, das ist zu Lava. Viel Lava. So viel. Wir haben weder hier noch hier einen Balkon. Wir haben hier drüben einen Balkon. Okay. Wir müssen auch die Basis schließen. Wir gehen also zu einem Generator. Wir werden zu Kategorien übergehen, Bereiche fein segmentieren. Wir gehen zu unseren Linienspuren und dann weiter. Gehen wir zurück zu unseren Stockwerken. Wir machen die aus Lava. Oh, okay. Deshalb, weil ich Null meine, M Null, aber mach die Lava-Einsen weniger möglich. Fügen Sie ein Extra hinzu, um das Stockwerk erneut auszuwählen. Hier ergibt sich 0-3. Die Level-Eins sind etwas seltener. Ja, das sieht nett aus. Ja, was ist hier passiert? Oh, das ist ein besonderer Raum. Das ist der Grund, und ich glaube, unsere Fußböden sind es. Jetzt, wo dieser Teil mit der Kategorisierung von Bereichen fertig ist, also Bereiche kategorisieren und die Stockwerke für sie hinzufügen, sollten wir mit unserer Lobbyarbeit fortfahren Nehmen wir an, das ist eine weitere, ich weiß es nicht. Sagen wir 7,72. Nur so der Sache zuliebe. Und wir verzögern. Unser Fortschrittsbalken in diesem Teil, 0,1 in diesem Teil, geht nach dem anderen. Verschiebt einen Prozentsatz davon. Wenn wir visuell etwas ansprechender sein wollten , hätten wir einen Zeitplan für die Erhöhung vom aktuellen auf den gewünschten Prozentsatz festlegen können. Aber das sind Bilder um der Optik willen. Lassen Sie uns also mit der Erstellung einiger Türen fortfahren. Denn im Moment können wir nicht wirklich von einem Raum in einen wechseln. Wir können nicht einmal von vorne anfangen. Es sind nur Türen. Nirgends. Wie gesagt, dafür brauchen wir einen Code. Wir müssen definieren, wo unsere Tür unser Labyrinth sein soll. Erster Raum? Ich dachte, es wäre ein Versteck, das nicht den Boden bekommt, aber es ist die Toilette Oh, was wir verwenden werden ist die Pfeilrichtung, um aus seinem Segment eine Tür zu jedem Raum zu erstellen . Und dieses Segment verbindet sich zum Beispiel viele Male mit diesem Raum, aber nur einmal sollte es eine Tür haben. Dieses Segment soll eine Verbindung zu zwei Räumen herstellen, es sollte also zu beiden Räumen führen. Eine Tür. Das sollte geschaffen werden. Es ist auch mit diesem Raum verbunden. Deshalb ist es kein besonderer Bereich wo dieser ein besonderer Bereich ist. Zu viel Feuer. Aber ja, einige Bereiche zu haben, wäre nur Feuer, wäre auch okay. Oh. Lass uns unsere Funktion erstellen, um die versteckten Türen zu erstellen. Die Türen des versteckten Raumbereichs. Du wirst eine Funktion brauchen. Nennen wir es. Dann geht sie. Das Erste, was wir dafür brauchen, sind die versteckten Räume. Wir werden uns das holen. Ich werde alle vier Zoll durchgehen. Schleife. Wir werden die Struktur durchbrechen. Wir müssen in unserem Kerker Koordinaten finden. Ich hole mir eine Kopie von Zero, weil es ein Le-Kachel ist. Um den Kerker zu finden. Und von hier aus werden wir uns Wegbeschreibungen holen Und von Directions aus holen wir uns die Schlüssel. Und das zum Flow-Körper, macht ihn etwas kompakter. Ich möchte wissen, in welche Richtung ich einen Pfeil habe, der auf die Wand zeigt. Dieser Fall wäre einfach zu lösen, weil wir nur eine Richtung haben , die eine Wand hat, eine Raumwand, und alle anderen Richtungen sind blockierter Schmutz, andere Dinge, die nicht mit ihr verbunden sind. Also wiederholen wir das für jede Schleife. Wir werden den Wert mit dem Index zusammenrechnen, wenn er wahr ist. Es bedeutet, dass es das einzige ist, das einen Pfeil hat, was bedeutet, dass wir einen Durchgang haben. Oh, es ist eine Tür. Wir werden das zu einer lokalen Variablen heraufstufen . Nennen wir diese lokale Variable Direction Und jetzt haben wir eine Richtung, in der unsere Zimmerfliese als Tür dient Oh, auf dieser Kachel wollen wir, dass die fünf Nachbarn die Nachbarseite finden und von dieser Nachbarseite aus wollen wir die aktuelle Richtung aus unserer Richtung sehen. Wir werden diese Variable hierher bringen. Du wirst von der RA bekommen, welche ich falsch gewählt habe, wähle ich die Wildcard aus. Dieser, nicht dieser. Dieser ist immer ein Tyrann. Das steht auch im Tooltip. Wählen Sie aus. Um das zu verbinden, ist der Index, und wir haben North Zero, 213. Nein, wir können direkt den Nachbarn unseres Blocks auswählen den Nachbarn unseres Blocks , das ist der Raum , der die Tür benötigt. Also werden wir unser Zimmer finden. Benutze wieder diese Dungeon-Karte mit unseren Koordinaten. Ab hier werden wir entgegengesetzte Aktionen durchführen. Wir werden das aktuelle Gegenteil finden, das wir wollen. Wir werden den werden Gegensätzen Raum geben es von unserem Zimmer aus gefunden, wo Wir haben es von unserem Zimmer aus gefunden, wo sich unser Kreuz befindet. von unserem Zimmer aus in die entgegengesetzte Richtung und achten Sie darauf , dass der Pfeil einschlägt. Das bedeutet also, dass unser Dungeon unser Spieler hat, ihn durchqueren kann werden das mit dem Ende dieser vier Lobs verbinden, das sind die Schlüssel des aktuellen Plättchens, weil wir es am Ende nicht verbinden wollen , nachdem alle Kacheln überprüft wurden Wir wollen es mit der aktuellen Kachel verbinden , die wir überprüfen Spiel Roots don't I. Schon wieder Hidden Room. Wir haben hier ein verstecktes Zimmer. Wenn ich hier reingehe, sollte das ein Pfeil in diese Richtung sein. Ich glaube, wir haben alle eine Ahnung, warum das passiert ist. Wir müssen mit einem Diagramm arbeiten und nach dem Laden sollten wir die Funktion für versteckte Türbereiche hinzufügen. Lass uns kompilieren und spielen. Kunst, hoffentlich ein versteckter Raum. Fangen wir nochmal an. Schon wieder kein verstecktes Zimmer. Hier haben wir einen. Jetzt hat es wieder nicht funktioniert. Und der Grund ist einfach. Wir haben zu den Anweisungen , auf denen das steht, hinzugefügt , dass wir die Pfeile nicht umschalten Also werden wir umschalten. Dave, eigentlich aus einem Heizraum. Jetzt zeige ich uns sogar, dass sie hier angebetet werden sollen. Und funktioniert auch, der Rest stimmt. Irgendwelche anderen Heizräume. Viel. Ja, wir haben einen dritten. Ja, ich bin auch hier. Das bedeutet, dass es funktioniert. Ich denke, das ist genug für diesen. Ich sehe dich im nächsten. Tschüss. 42. Wand-zu-Tür-Swap-Funktion: Hallo und willkommen zurück zum Game Design Workshop und zum prozeduralen Kurs „ Dungeon Action A Psy“ zu Real Engine Five . In der vorherigen Version haben wir also unsere Funktion zum Hinzufügen von Stockwerken abgeschlossen Wir haben die Stockwerke der Balkone hinzugefügt, wobei vier die ST-Balkone in einer Schleife und zu den RA-Elementen aufgebrochen Dann durchqueren wir die LA-Elemente und fügen das statische Netz hinzu und setzen Danach haben wir es für die isolierten Bereiche gemacht, genau den gleichen Code mit der Änderung, dass wir durch eine zufällige Ganzzahl ausgewählt haben , ob es sich um einen Lavaböden oder einen normalen Boden handelt, und wir haben das Doppelte des normalen Stockwerks hinzugefügt, damit es mehr Chancen hat, zu Wir können es tatsächlich noch einmal hinzufügen. Hier. Wir haben also drei davon und zwei davon. Als Nächstes haben wir unsere Code-Funktion für Bereiche mit versteckten Türen gestartet unsere Code-Funktion für Bereiche mit versteckten Türen , um Türen in den versteckten Bereichen zu platzieren. Wir haben unsere Liste der versteckten Räume durchgesehen. Wir haben die Struktur geknackt , um das Array zu bekommen. Wir haben den ersten Index bekommen, weil es sich um einen Raum mit einer einzigen Kachel handelt, und wir haben diese Kachel in unserem Kerker gefunden Wir haben die Anweisungen und anhand der Anweisungen haben wir herausgefunden, welcher aktiviert ist, was bedeutet, dass er Zugang hat Nein, das heißt, wir haben eine Tür. Und als wir fertig waren, haben wir die Pfeile des gegenüberliegenden Blocks, des Zimmerblocks, so angepasst dass sie den Pfeil zum versteckten Raum aktivieren. Jetzt müssen wir innerhalb der DP-Dekoration eine Funktion einrichten, die dafür verantwortlich ist, dass unsere Wände anstelle der Tür die Wand zur Türwand hinzufügen . Und wir werden das hier tun , weil wir bei der BP-Dekoration den Raumindex haben, anhand dessen wir wählen , welche Art von Wand? Eigentlich brauchen wir den Wandindex, den Raumindex. in der Funktion „Wände austauschen“ den Wandindex also Lassen Sie uns in der Funktion „Wände austauschen“ den Wandindex also auch zu einer Variablen heraufstufen. Nochmals, für diejenigen, die suchen, wo wir sind, sind wir in den VP-Dekorationen vertreten. Wir werden hier eine Funktion erstellen, und bevor wir das tun, wollen wir von der Funktion, dass wir bereits Wände getauscht haben , auf die Wandindex-Variable hinweisen Weil wir dies verwenden werden , um zu entscheiden, welche Art von Wandtür wir hinzufügen möchten Lassen Sie uns nun diese Funktion erstellen. Nennen wir es Tür hinzufügen. Nun, in dieser Funktion müssen wir auch überprüfen, ob unser Einzelzimmer, das wir erstellen, mit unserem Raum verbunden ist, weil die Möglichkeit besteht, dass unser Einzelzimmer hier drüben ist, natürlich gedreht, aber es könnte so sein, basierend auf unseren Regeln, wird das auch als versteckter Raum betrachtet. Aber für diesen Raum wäre keine Tür erforderlich. Hören Sie hier auf, gehen Sie zurück zur Dekoration und fügen Sie eine Wandausgabe hinzu. Wenn wir die Tür öffnen, gehen wir zurück zu unserem M-Generator fügen aus der Find Dunge-Map unsere Kachel-Referenz hinzu. Wir werden Wir brauchen ein Kind. Dekorationen. Ja, das ist der Name. Und von den Kinderdekorationen werden wir Schauspieler. Und vom Kinderdarsteller werden wir zwei Dekorationen gießen und das Ganze zu einem reinen Schnitzel machen. Und jetzt, wo wir die Referenz haben, werden wir es in die Länge ziehen Tür. Wir werden es hier verbinden. Bring es so. Jetzt, wo wir einen Ausgang haben, wissen wir, dass dieser Ausgang einer Wand ist. Wir wissen, dass wir, wenn das läuft, als Nächstes die Frage stellen können, wir eine Wand gefunden haben oder nicht. Und wenn wir keine Mauer gefunden haben, fügen wir allen Türen unsere Koordinaten hinzu. Aber lass uns das jetzt nicht tun. Wir werden das danach machen. Beenden wir mit unserer Funktion bei. Nein. Zuallererst benötigen wir die Wandanordnung. Weil wir sie alle durchgehen wollen. Also werden wir es für jeden tun. Aber wie Sie wissen, brauchen wir, wenn wir durch alle Wände gehen, eine Richtung, weil wir das Zugsystem haben, bei dem ein Element wie eine Zugkomponente gezogen Und weil wir ziehen müssen, brauchen wir eine Richtung. Also fügen wir unserer Tür einen Eingang von E-Erektionen hinzu. Nennen Sie es Erektion. Denken Sie daran, das muss an die Schnur gebracht werden, nicht um zu beißen, und das werden wir hier hinzufügen. Dann brauchen wir eine Filiale. Gehen wir zurück zu unserem PP-Generator. Und ausgehend von unserem gegenteiligen Ergebnis werden wir das hier verbinden, werden wir das hier verbinden weil wir die Richtung unseres Stapels testen , der den versteckten Raum hat. Für den Nachbarn tun wir das Gegenteil. Also Einkommen, und das gibt uns das Ergebnis des Ich ist der Raum. Gehen Sie zurück zu den Dekorationen. Das ist also der Teil, bei dem wir uns fragen müssen, ob es einen Krieg gibt. Aber was wir tun können, ist das hier her zu ziehen und das Set ist sichtbar. Oder es ist eigentlich nicht wieder versteckt, hi im Spiel und doch versteckt im Spiel. Wir werden einen Zweig anlegen, wenn das wahr ist. Und wir wählen hier einen aus oder b Ich ist nicht sichtbar oder ob es versteckt ist in Gain. Wir müssen hier sichtbar sein. Nein b denn wenn es sichtbar wäre, würde es wahr werden, und dann würde es wahr werden. Aber wenn es um Gewinn versteckt wäre und es wahr wird, bedeutet das, dass wir es nicht sehen können. Also brauchen wir das Gegenteil. Aber wir haben das. Wir müssen eine lokale Variable erstellen. Nennen wir das wirklich Mauer. Weil wir hier das Prinzip „Keine Mauer“ haben, und lassen Sie uns es auch hier tatsächlich verbinden und es wahr machen, wenn unsere Frage wahr ist. Nun, es ist schön zu wissen , dass wir zur Laufzeit Tags hinzufügen können. Schauen wir uns zum Beispiel an, ob ich alle Wände eines Raums durchquere . Woher weiß ich, welche die Türwand ist? Wir könnten zum Labyrinth-Generator gehen. Lassen Sie uns tatsächlich beide Möglichkeiten zeigen. Wir könnten hierher gehen, und das werden wir tun. Wir werden diese Koordinaten einem neuen Array hinzufügen , das heißt Let's duplicate s empty. Es ist ein Endpunkt-Array. Das ist es, was wir wollen. Nennen wir das alles Unseres. Bring es her und lass uns die Koordinaten hinzufügen. Vom Betreiber, tut mir leid. Zum Array hinzufügen. Wenn das falsch ist, wenn wir keine Wand haben, addieren wir die Koordinaten unserer Tür, was das Ergebnis unseres Fundkreuzes nebenan ist. Gleichzeitig könnten wir ein anderes Array haben. Nennen wir das alles Türerektionen. Lassen Sie uns den Punkt in die Richtung ändern. Aber zum Beispiel, wenn ich das auch hierher bringe und die entgegengesetzte Richtung hinzufüge, die wir hier wollen. Nein, ich habe sie so hinzugefügt, ich könnte zwei entsprechende Anordnungen haben alle Türen und ihre Richtung Oder ich könnte auch eine andere Kartenvariable mit T-Punkten haben, und der zweite Wert würde acht Richtungen Aber wie gesagt, wir können das mit Zwergschleppern machen. Wir können uns im Handumdrehen um Komponenten, um Schauspieler, um was auch immer wir wollen, erweitern Schauspieler, um was auch immer wir wollen, Ich kann also auch aus der For-Schleife aus dem Array-Element, der Wand, die wir hier manipulieren, ziehen der Wand, die wir hier manipulieren, und G-Ziehungen hinzufügen, was wir tun müssen, ist ein bisschen komisch Wir müssen Tags abrufen, Komponenten-Tugs abrufen und das Ganze kommt als Und weil es sich dabei um eine Variable handelt, können wir das ist unser direkter Verweis auf diese Variable tatsächlich manipulieren und ausdrücken und wir können den Bug einbauen. wir nun durch jeden von ihnen, jede der Wände, und am Ende machen wir eine weitere Vorderschleife. Und fordere die Tag-Liste an. Und die Wand, an der wir das haben, werden wir tatsächlich ausdrucken. Aber lass es uns nicht testen. Es ist Zeitverschwendung. So ist es so programmiert, dass es funktioniert. Als Nächstes müssen wir das statische Netz einrichten. Tic-Mesh. Das hätte anders werden können. Es ist sichtbarer, was wir verbinden. Ja. Ich sehe, das ist jetzt geklärt. Welches statische Netz fügen wir hinzu? Wir werden wählen. Für unseren Index werden wir unseren Wandindex wählen. Wir werden insgesamt fünf Variablen hinzufügen. Gehen wir zu unseren statischen Meshes und wählen unsere Türen entsprechend Jetzt muss ich überprüfen, was für zwei es waren. Wir gehen zu Evan Graph. Wir werden Zimmer bauen gehen. Und von dort aus werden wir zu Wänden wechseln, was eigentlich Innendekorationen sind. Ich hätte dort bleiben können. Und lass uns nachsehen. Nummer Null ist also dieser Typ. Wenn wir also zu einer Zahl Null gehen, sollten wir diesen Wandtyp zur Auswahl hinzufügen. Ich glaube, das ist es. In Ordnung. Kombiniert 85a1 9f8d. Unglaublich. Jetzt der nächste. Gehen wir zu. Nein. Lass uns Mauern stoppen. Der nächste ist der aus Holz der leicht zu finden ist. Der aus Holz ist meine große Klappe, leicht zu finden. Okay. Ja, es ist hier. In dieser Kombination b91xb. Ich bin mir nicht sicher. In diesem Jahr. Gehen wir zum nächsten . Der Stein besteht aus Wänden. Das, das war einfacher zu finden. Kombinierter Null E CC 57. Ich denke, das reicht mit der Benennung. Die letzten wären die Backsteinwände. Die Backsteinwände. Ich bin mir nicht sicher , welches welches ist, aber ich glaube nicht, dass es wichtig ist. Ich wähle das für den ersten. Kombiniert 025159 bla, bla. Und der andere wäre dieser. Okay. Nun, basierend auf unserem späteren System wie wir Wohnräume betreten werden. Wir werden hier einige zusätzliche Kollisionen benötigen, die wir durch diese Funktion ermöglichen werden Gehen wir zu ihnen. Wir müssen zum Viewport gehen und hinzufügen, wir können die Kollisionsbox duplizieren Bring es wirklich schnell hierher und mach es kleiner. Ich denke, es ist in Ordnung, gute Größe. Vielleicht ein bisschen. Ja, das ist in Ordnung. Ja, glaube ich. Ich werde das nochmal duplizieren. Geh, um es zu drehen. Ich werde es überall hinbringen, wo eine Tür sein sollte. Es spielt keine Rolle, ob es präzise ist oder nicht. Ich werde es nochmal duplizieren, es rüberbringen. Und dann werde ich das auch duplizieren und es hier rüberbringen. Alle, weil sie eine Kopie der Box sind, haben sie dieselben Einstellungen, die wir hier hinzugefügt haben. Sie erzeugen also keine Überschneidungsereignisse. Vielleicht ist das ein bisschen mehr. Aber es ist in Ordnung. Oh, das bedeutet, dass wir an unserer Tür ihre Läsion aktivieren sollten Und wir können tatsächlich einen einfachen Schritt machen. Wir werden diese Wand auswählen. Wir werden diese Box dieser Wand zuordnen. Aber wir geben dem auch immer wieder Namen. Dann werden wir diese Kiste mit dieser Wand verbinden. Hier, diese Kiste an diese Wand und dann diese Kiste an diese Wand. Ich gehe zurück zu der Funktion, und von unserem statischen Netz aus werde ich dafür sorgen, dass Kinder die Komponenten für Kinder bekommen, nicht von Box zwei, wie Sie sehen können Es wurden viele Optionen aufgezeigt. Eine davon war, eine bestimmte Kiste mitzubringen. Manchmal echte Dinge, es kann vorhersagen, was Sie tun möchten. Aber wie dem auch sei, wenn wir Kinder bekommen , werden wir, wir werden jede Runde p machen. Dann werden wir die Komponente überstürzen. Und überlappende Ereignisse erzeugen, stimmt. Und warum ich casten musste. Der Grund, warum ich hier casten musste , ist , dass ich alle Komponenten durchgehe , die das bei Mesh hat. Und ich will für die Polizei. Es ist keine statische Mesh-Komponente, es ist eine Box-Komponente. Es tut mir leid zu boxen. Bestandteil der Box. Das hätte nicht funktioniert, wenn es eine statische Karte gewesen wäre. Also ich weiß es nicht. Das ist der Grund, weil ich nicht weiß, welche Art von Zeichen. Es kann etwa 520 Kinder haben. Okay, es ist nicht gut, so viele Kinder zu haben, aber du kannst es nicht tun. Und es wird ein bisschen schwerer sein. Ich weiß nicht, um welche Art von Komponenten es sich handelt. Ich möchte also sagen, Sie die Box-Komponente sind, wenn Sie die Überlappungsereignisse generieren. Ich muss diese Komponenten nicht taggen. Ich muss diese Komponenten nicht benennen. Ich weiß, dass sie zu den Wänden gehören. Ich denke, das ist vorerst ein nettes Gesprächsthema. Ich sehe dich beim nächsten. Auf Wiedersehen. 43. Tür- und Sigil-Platzierung: Hallo und willkommen zum Game-Design-Workshop im Rahmen Lensing-Kurses zur Erstellung von fünf prozeduralen Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen der vorherigen Lektion haben wir die Funktionen D und Türbereiche abgeschlossen und die Funktion Türen hinzugefügt, die wir von BP Decorations nennen Und wir haben auch gezeigt, wie Informationen über die Türen auf eine uns bekannte Weise hinzufügen können, indem wir ein Array erstellen und die Variablen hinzufügen und ein entsprechendes Array erstellen, auch dass sie gleichzeitig gefüllt werden. Ihre Indizes entsprechen also einander. Wir haben auch diese Funktion hinzugefügt, die Tür, die wir zu füllen begonnen haben die Richtung , von der aus die Tür hinzugefügt werden soll Wir sind durch unsere Wände gegangen. Wir haben das Bauteil gefunden, das das Etikett trägt, die Wand mit der Markierung unserer Richtung, und wir haben eine Frage gestellt, ob unsere Wand sichtbar ist oder nicht, nur für den Fall, dass sichtbar ist oder nicht, nur für den Fall unser versteckter Raum irgendwo herausgesucht wird Und wir fuhren fort und wählten „ Eigentlich ist das falsch“. wieder ein paar Fehler. Als es wahr war, wollten wir sie auf nein als wahr setzen und wenn es falsch war, wollten wir der Komponente die Kennzeichnung hinzufügen, dass es sich bei dieser Komponente um eine Tür handelt. Wenn wir also die Anordnung der Wände durchgehen wollen, können wir leicht herausfinden , welche Tür die Tür ist. Also, wir trennen das jetzt und verbinden es mit den Wasserfällen und alles ist in Ordnung. Das ist richtig. Und dann haben wir das statische Mesh hinzugefügt, das passende Mesh ausgewählt und auch ein paar Box-Komponenten oder unsere Spielmechaniken hinzugefügt . Aber wenn die Tür aktiviert ist, aktivieren wir auch die Überlappungseffekte für unsere neuen Box-Komponenten. Jetzt gibt es noch eine Sache, die wir hinzufügen sollten, und ich werde erklären, warum wir ein statisches Netz hinzufügen müssen. Zeig, wo die Tür ist? Weil unsere Kamera aus einem 45-Grad-Winkel aufgenommen wird . Ob die Tür in dieser Wand ist, können wir nicht sagen. Wir können nicht sagen: Oh, hier ist eine Tür. Also muss der Spieler etwas für sich haben, wenn wir von oben schauen, dass es hier eine Tür gibt. Um das zu tun, werden wir ein paar Mädels einsetzen. Oh, ich werde nur eine neue statische Quest hinzufügen. Es hat die Wand hinzugefügt, weil ich die Wand hier ausgewählt habe, aber wir wollen die CGL Suchen wir das C l. Hier ist es, richtig? Das ist groß. Machen wir es ein bisschen kleiner. Ich denke 0,3. Vielleicht ist das ein bisschen klein oder 0,4 sieht gut aus. Denken Sie daran, alle Achsen zu fixieren, damit sie gleichmäßig skaliert werden, und bringen wir sie an die Stelle, an der sie sich befinden würden Basis Die Höhe unseres Wortes ist 400. 93 80, vielleicht ist das dort in Ordnung. Eigentlich werde ich für die Cgels auch Schlepper benutzen Wir könnten es einfach als Kind erziehen, mit der anderen Welle weitermachen, die wir gezeigt haben, aber gewöhnen wir uns an das Zerren Das ist also S. Das sind zwei, die wir eingefügt haben. Dreht sie. Ich werde den negierten Wert negieren. Das ist ein Norden. Ich erkundige mich bei der Wand. Y. Ich werde das nochmal rotieren, kopieren und einfügen Ich werde es um 90 Grad drehen. B West Position B. Ich werde das einfach kopieren . Füge es hier ein. Ich halbwegs, also zwei Ja. Ja, tut mir leid. Weil das in der Mitte ist. 380 Wu wieder 380 Wu. Richtung. Die negierten 400, es sind 400, und sie sind an der richtigen Stelle Was wir für alle tun müssen, ist oder ist auch, das versteckte Spiel wahr werden Weil wir sie aktivieren wollen, wann wir wollen. Ich werde auch gehen und wirklich, lass uns zu Bau C gehen . Bring sie her, mach ein Array. Und bewerbe diese Variable, all diese C-Mädels. Fein Jetzt kann ich an die Tür gehen und die Cgals holen und jeden von ihnen übersehen Auch hier verwende ich diese Zeichenfolge mit diesem Textnamen, da die Komponente gezogen wird diesem Textnamen, da die Komponente gezogen . Wenn ja, dann sind wir bei Sichtbarkeit, dass das versteckte Spiel falsch handelt. Sichtbarkeit und Verborgenes im Spiel sind zwei verschiedene Dinge. Und sie sind entgegengesetzt. Versteckt im Spiel, ja, das bedeutet, dass du nichts sehen kannst. Sichtbarkeit, ja, das bedeutet, dass du es nicht sehen kannst. Wie dem auch sei, bevor wir das tatsächlich tun, müssen wir eine Frage stellen. Ist es möglich, dass wir an einer Mauer stehen? Denn wenn wir in einer Wand sind und wir die CD nicht einschalten sollten weil eine CD mitten in der Luft landen würde eine CD mitten in der Luft Wenn es keine Wand ist, geh einfach raus, ohne dass eine Wand durchkommt. Wenn es sich um eine Wand handelt, gehen Sie durch die Sea-Gels und aktivieren Sie das richtige. Lassen Sie uns nun kompilieren und speichern. Und stürzt ab. Wir mussten einen Absturz haben. Wenn wir zurück sind, lass uns weitermachen. Lass uns testen gehen. Die Karte. Das Level. Gibt es einen geheimen Raum? Ja, es gibt ein geheimes Zimmer, Reste und wir haben unsere Tür. Oh, das Einzige, was noch zu tun bleibt, ist es für alles andere zu tun. Oh, das nächste, was wir hinzufügen sollten, wären die einzelnen Bereichstüren. Was ich mit einzelnen Bereichen wie den Balkonen und den isolierten Bereichen meine , ist eine gemeinsame Regel. Sie sind nur mit einem Raum verbunden. O Balkon hier, Einzelbereich hier, isoliert, wir haben ein anderes Zimmer. Das ist eine nette Karte. Wie auch immer. Fügen wir die einzelnen Bereichstüren hinzu. Wenn ich zwei verschiedene habe. Lassen Sie uns zuerst eine Funktion erstellen. Öffnen wir ein Diagramm, identifizieren Türbereiche und fügen eine neue Funktion hinzu. Nein, Bereiche mit nur einer Tür. Wie gesagt, wir haben zwei Anordnungen dieser Bereiche. Wir haben die Balkone und die isolierten Bereiche. Nun ja, ich könnte für jeden eine andere Anzahl an Loops machen und so damit klarkommen . Es gibt aber auch eine andere Option. Wenn zwei Arrays denselben Variablentyp haben, können Sie sie tatsächlich anhängen Das bedeutet, dass Sie sie zu einem zusammenführen, weil ich diese beiden Arrays nicht durcheinander bringen möchte Ich werde eine neue lokale Variable erstellen. Ich werde es zu einem Punkt machen. wird ein Array sein, und ich werde es Tal Array nennen . Ich werde es herbringen. Ich gehe zu einem Stift. Ich werde es erneut einfügen, nochmal machen. Ich werde also sagen, das sollte kein Endpunkt sein Das sollten SD-Räume sein. Keine Endpunkte ändern den Variablentyp , da diese Arrays Platz haben Nein. Lass mich die Verbindung trennen, lass mich den Stapel kompilieren und wieder verbinden, und jetzt können sie hinzugefügt werden Nun, das erste Nein, der erste Pin ist das Array, dem wir Dinge hinzufügen werden, und der zweite Pin ist das Array, das wir hinzufügen Aus diesem Array ergibt sich also die Summe dieser beiden. Wenn ich die Balkone hier und die isolierten Bereiche hier miteinander verbunden hätte , hätte das unsere Variable durcheinander gebracht Jetzt, da ich so viele Arrays habe, kann ich sie löschen. Für jeden Loop für jeden Raum, denn was wir machen werden, ist dasselbe Wir werden auch eine weitere Variable benötigen. Es wird vom Typ Integer sein und es wird vom Typ Array sein. Das liegt daran, dass es ein Array sein musste. Aber ich möchte Tastencode zeigen, als würde ich etwas programmieren , anstatt es zu benötigen. Ich zeige es dir gleich. Nennen wir diesen Ex. Mm. Oh, habe ich. Aber du hast irgendwo anders einen Zimmerindex. Mir hat es nicht gefallen. Ich nenne es Index. Es wird gut werden. Kompilieren und speichern. Und tatsächlich denke ich, dass dies ein guter Ausgangspunkt für diesen ist. Ich werde Ihnen später in der nächsten Lektion den Overkill dieses Codes zeigen später in der nächsten Lektion den Overkill dieses Codes Vorerst auf Wiedersehen. 44. Funktionen des Einzeltürbereichs: Hallo und willkommen zurück zum Game-Design-Workshop und zum prozeduralen Action-PS-Creation-Kurs mit Real Engine Five . Vorher haben wir etwas kreiert, wir haben es tatsächlich mit unserer Funktion „Tür hinzufügen“ abgeschlossen. Wir haben das Teil hinzugefügt, das wir überprüfen, wenn das Schleifen der einzelnen Wände abgeschlossen ist, und wir haben unsere Box aktiviert. Unser Türkasten. Wir überprüfen, welche der C-Kiemen die Komponentenbezeichnung hat , deren Richtung wir haben wollen, und wir stellen sie so ein, dass sie zu gut sichtbar sind Beim Einstellen der neuen versteckten zwei Stürze. Jetzt sind wir rausgegangen, ohne Mauer oder ohne. Wir haben auch den Start unseres Hauptgenerators für unsere Bereiche mit nur einer Tür erstellt unseres Hauptgenerators für unsere Bereiche mit nur einer Tür und ein wenig über das Anhängen in einem Array erklärt über das Anhängen in Und jetzt werden wir damit weitermachen. Und wie ich versprochen habe, werde ich Ihnen erklären, wie Sie mit dieser Reihe von ganzen Zahlen ein wenig übertreiben Ich verwende dafür eine Reihe von ganzen Zahlen, weil die Auswirkungen minimal sein werden Es ist eine nette Gelegenheit , einige Dinge zu erklären. Oh, fangen wir damit an, unsere Aura zu durchbrechen. Also bekommen wir das Array unserer Koordinaten und dann eine Schleife zu jeder von ihnen. Für jede Schleife. Jetzt haben wir im Raumindex eine Funktion , die, wenn wir sie öffnen, Räume des St-Arrays oder die Koordinaten der Räume durchsucht alle Räume des St-Arrays oder die Koordinaten der Räume durchsucht und fragt, ob die Koordinaten, die wir eingeben, zu einem von ihnen gehören Das gibt uns zurück, ob ein Raum gefunden wurde und um welchen Raumindex es sich handelt Wir werden diese Funktion schließen. Berücksichtigen Sie jetzt Bereiche mit einzelnen Türen. Jetzt machen wir einen Brunch und verbinden ihn hier. Und sagen wir, wenn wir ein Zimmer gefunden haben, was werden wir tun? Wenn nicht, tun wir nichts. Aber wenn das stimmt, machen wir den Overkey im Indexraum Also werde ich fragen, ob das enthalten ist . Enthält einen Gegenstand. Und das Element wäre der Raumindex. Denn wenn wir einen Raum hinzufügen, wenn einer der Koordinaten einen Raum findet, wollen wir nicht auch den nächsten Block hinzufügen, der einen Raum findet , sondern wir haben einen Ort gefunden, an dem wir eine Tür erstellen können Oh, wenn ich das mache, und ich weiß, dass ich möchte mein Zimmer in Bezug auf diese Inhalte einzigartig ist. Wenn ich zu dieser Reihe etwas hinzufüge, können Sie von einzigartig hören. Das wäre übertrieben denn der Grund dafür ist, dass es, wenn es versucht, Unique hinzuzufügen , zuerst die gesamten Indizes durchsucht und dann entscheidet, ob es hinzugefügt wird oder nicht Nun, wie ich bereits erwähnt habe, haben die Sets auch diese Funktionalität, aber sie sind nicht so schwer wie Arrays Sie können sogar die Leistung beim Hinzufügen einzigartiger Teile erhöhen Leistung beim Hinzufügen einzigartiger Teile Sie würden die Speicherleistung verringern, weil ihnen ein System zugrunde liegt. Der Mechaniker nannte SH-Tabellen. Es ist etwas Tieferes in der Programmierung geht um Speicherverwaltung, schnell an Referenzen zu kommen. Jedenfalls sind Sets besser , um einzigartige Dinge hinzuzufügen. Index-Arrays sind besser darin, einfach normal hinzuzufügen. Also hier würde ich einfach Hinzufügen auswählen und es wäre schneller Nicht dass es jetzt mit unserem Labyrinth zu tun hätte, aber ich denke, das sind nette Informationen Ich werde den Raumindex zum Array hinzufügen. Und wir haben die Türen und alle Richtungen. Da wir gesagt haben, dass diese beiden gleichzeitig gefüllt werden müssen . Wir werden dem hinzufügen, ich werde die Koordinaten von hinzufügen. Ich werde das auch ergänzen. Um die Richtung zu ermitteln, wählen wir einfach aus. Und wir kennen unser Index-Array aus dem Bremsraum. Wir müssen den Cheat hier nochmal machen. Also suche ich diese Auswahl aus anderen Funktion, für die wir sie verwendet haben, und kopiere sie einfach von dort Ich glaube, wir haben es in Feldräumen benutzt. Ich denke bei meinem Eifer, das zu zeigen, habe ich einen Schritt vergessen Wir gehen zu, wir überprüfen den Punkt. Wir bekommen all seine Punkte. Ja, hier ist es. Für jeden seiner Punkte sollten wir keine Nachbarn haben. Also mach das Kreuz nebenan. Warum und angrenzend überqueren, und dann müssen wir diese Punkte für eine Schleife ziehen. Ich werde das verbinden. Und das ist der Raum, wie das Kreuz nebenan, wir überprüfen, es ist ein Raum, nicht die Fliese. Nicht die Koordinaten der Kacheln , von denen wir kommen, sondern das angrenzende Kreuz. Weil wir wissen, dass es sich bei der Fliese, von der wir kommen, um einen Korridor oder einen Balkon handelt, nicht um einen Korridor, einen isolierten Bereich oder einen Balkon. Deshalb brauchen wir das Kreuz nebenan und vom Kreuz, das jetzt angrenzt. Bei dieser sollten alle Türen ebenfalls kreuzförmig sein, nicht an die Raumkoordinate. Oh, wir schauen uns alle Balkone und abgelegenen Bereiche an. Wir erhalten die Koordinaten jedes segmentierten Bereichs. Wir überprüfen, ob es sich um Nachbarn handelt und wenn es sich bei dem Nachbarn um einen Raum handelt, fügen wir ihn dem Index hinzu Wir haben die Dinge hier erklärt. Jetzt können wir tatsächlich die Richtung ermitteln, tatsächlich die Richtung ermitteln weil wir aus Nordost-Südwest die Richtung der Mauer kennen. Also werde ich den Trick mit einer Auswahl machen. Wie Sie sehen können, funktioniert das nicht. Ich habe wieder die Möglichkeit, alle Richtungen abzuwenden. Ich nehme den letzten Ausgang. Ich werde von hier aus wählen. Ich werde die letzte Ausfahrt und die letzte Ausfahrt verbinden und nach Nord-Südost-West, Nord-Südost-West fahren . Seien Sie ehrlich, ich glaube nicht, dass wir diese Variable überhaupt verwenden werden, aber warum nicht? Wer weiß, wie Sie denken werden, um dieses Programm zu aktualisieren. Jetzt müssen Sie nur noch die Türen erstellen. Und um das zu tun, benötigen wir zwei lokale Variablen. Sie werden wieder den Endpunkt und die Richtung haben. Aber die hier haben alle Informationen über alle Türen. Der Grund, warum wir die lokalen erstellen werden, ist, dass wir nur nach dieser Kategorie filtern werden, was auch immer wir hier erstellen. Damit wir sie verwenden können. Um den passenden Stil zu finden und die richtige Richtung der Tür und der Pfeile zu bestimmen. Aber wir werden nach unten scrollen, um zu lokalen Variablen zu gelangen, und wir werden zwei neue hinzufügen. Nennen wir die erste Tür. Es sollten Koordinaten vom Typ Punkt sein und die anderen sollten Koordinaten sein, sie sollten Richtungskoordinaten sein. Und wir werden sie am Ende hierher bringen. Und füge genau die gleichen Dinge hinzu, die wir hier hinzugefügt haben. Das sieht ein bisschen nett aus, dieses Paket definiert Punkte, aber in Ordnung. Lass uns jetzt weitermachen. Wo werden wir „Neue Türen schaffen“ nennen ? Wir haben drei Möglichkeiten. Wir haben die Möglichkeit, direkt nach dieser F-Schleife zu erstellen, wir haben die Möglichkeit, hier oder hier zu erstellen. Das ist die FD-Schleife, die jede Kachel hat, es sind Koordinaten, sagen wir , jede Kachel, die sich in diesen beiden Arrays befindet, die Arrays mit vielen Koordinaten sind Sie haben Koordinatenlisten. Wenn wir es also an einer anderen Stelle hinzufügen, bedeutet das am Ende, dass es ausgeführt wird und versucht die Nutzungsbedingungen so oft hinzuzufügen, wie es all diese sind. Wir haben es hier zu den Koordinaten hinzugefügt, es wäre sogar noch schlimmer, weil es das mit der Anzahl der Karten multipliziert , die es tatsächlich hat. Ray, eigentlich haben wir ein Array benutzt. Also den geringsten Schaden, den wir anrichten können, ist es, es hier hinzuzufügen, weil all das für jede Schleife, die wir erstellt haben , eine Menge Berechnungen sind. Also bringen wir unsere Türen mit. Hier, lass uns weitermachen. Für jede Schleife. Jetzt können wir uns stellen. Es tut mir leid. Wir müssen nicht nebenan schließen. Wir müssen es im Kerker finden. Finden. Und wir holen uns eine Wegbeschreibung und fügen sie als wahr hinzu, etwa so. Was wir als wahr hinzufügen werden, ist die Richtung , in der der Index abgerufen wird . Also werden wir die Richtung beim Abrufen des Indexes hinzufügen , weil diese beiden Arrays einander entsprechen Das nächste, was wir tun müssen, sind Hundepfeile. Okay. Okay. Tiefer und auch an der Tür. Wie wir ein Kind brauchen, also besorgen Dekorationen im Vergleich zu Pest und so. Und für diese Richtung werden wir das oder noch besser verbinden Und das sollte es sein. Lass uns spielen gehen. Die Tür hier. Keine Tür hier. Ich vermute mal Sie verbinden das. Immer das Gleiche, nicht wahr? In Türen. Ist es? In Türbereichen. Hier ist es. Fangen Sie nochmal an. Nein. Tür. Stimmt? Lass es uns herausfinden. Bitte. Oh, lass uns unseren Code überprüfen. Also fangen wir an, wir fügen hinzu, dass der Falke isoliert ist, wir machen einen Rückzieher, finden ein angrenzendes Kreuz, wir fügen dem Indexraum etwas hinzu Das immer weiter zu vergrößern ist ein Problem, denn wenn wir denselben Raum hinzufügen, ja, wenn wir derselbe Raum sind, hat derselbe Raum zwei isolierte Bereiche Nehmen wir an, es gibt einen isolierten Bereich und einen Balkon, und der Ausgang hat drei Türen Dann wird es nicht hinzugefügt, aber wir müssen diesen Indexraum zurücksetzen Also werden wir es uns anhören, bevor wir einen neuen Bereich auswählen. Jetzt fügen wir der Exo hinzu, dass das Problem, das wir hatten, kein Problem verursachen würde. Sie erzeugen Erektionen. Türen hinzufügen Hier bekommen wir die Türen, wir ermitteln die Richtung der Tür. Dann schalten wir die Pfeile um, damit die Pfeile funktionieren. Dieser sollte hier einen Pfeil haben. Das tut er nicht. Die Pfeile sind es auch nicht. Okay. Siehst du, was hier passiert ist, das ist also Norden. Das hat nichts mit dem Norden zu tun. Okay. Also im Grunde ist es hier. Wir haben nicht das Gegenteil , denn wenn wir den Nachbarn über eine Richtung kriegen , brauchen wir die entgegengesetzte Richtung. Ja, natürlich, das macht Sinn. Ich kann sparen. Und dieses Mal haben wir Hunde Ein abgelegenes Gebiet. Ja. Kein abgelegenes Gebiet. Es liegt daran, dass wir das hier haben, das ist eine spezielle Kiste. Zwischen diesem und hält sie es für einen Block. Also das ist ein isoliertes Gebiet, und das ist ein isoliertes Gebiet. Wir verwenden aber auch die speziellen Blöcke. Also arbeite ich eng an dem, was ich gesagt habe. Also haben wir überall Türen. Wir haben hier eine Tür. Wir sollten hier einen haben. Wir haben die Verkäufe, die ein bisschen hoch sind, ein bisschen innerhalb der Mauer. Wir können es schnell an unseren Dekorationen anbringen, sie absenken. 340. 30. Das sind alles 30. Das 30. H. Ja. Wir werden von oben schauen, also dieses Problem. Das ist zu viel. Ich schätze mal für 20. H. Geh und speichere. Nicht schon wieder. Es sieht gut aus. Gut so. Aber wir haben Türen, und wir hatten eine in der Mitte unserer. Ich denke, wir sollten im nächsten. Ich sehe dich dann. Tschüss fürs Erste. 45. Dungeon-Wände verbinden: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur Erstellung von Real Engine Five Procedural Dungeon Action ARPs Zuvor waren wir mit unserer Einzeltürfunktion fertig. Wir korrigieren auch einige Fehler , die dabei passiert sind. Und was wir tatsächlich getan haben, war, unseren Raumindex in der ersten vierten Schleife zu löschen , bevor wir mit den Koordinaten der einzelnen segmentierten Bereiche beginnen den Koordinaten der einzelnen segmentierten Bereiche Dann haben wir die Richtung umgekehrt , weil wir die Nachbarn bekommen Und dann verwenden wir das Türen-Array, das wir hier erstellen , um die Richtung zu ermitteln und sie der jeweiligen Kachel hinzuzufügen Wir haben die Pfeile umgeschaltet und unsere Tür hinzugefügt. Lass uns das nochmal machen, aber diesmal für unsere Korridore, die eigentlich fast identisch sein werden Wir gehen zu unserer Funktion, Bereichen mit nur einer Tür, und wir werden das duplizieren und es Bereiche nennen Was wir ändern werden, ist dass wir diese beiden löschen werden. Wir werden den Tempel A löschen und nur unsere Korridore hinzufügen A. kompilieren und speichern Lassen Sie uns auch den Van Gra hinzufügen. Korridorbereiche, Türen. Kompilieren und speichern und los geht's. Jetzt zwei Türen hier, ein großer Moment, aber es funktioniert. Nun, warum wurden hier zwei Türen hinzugefügt und das C hier nicht aktiviert? Weil der Unterschied zu den Collidoren darin besteht , dass wir eigentlich nur einen in jedem Korridor haben wollen In jedem Korridorsegment, jedem Raum , den es miteinander verbindet, wollen wir nur eine Tür haben, wohingegen jetzt so viele wie möglich hinzugefügt werden, bis sie zeigen, weil wir diesen Teil so codiert haben Wie Sie hier sehen können, hat es mit der Kieme C einen Bug gegeben, aber wir werden das beheben Lasst uns unser Gameplay beenden, zum Mai-Generator gehen, in die Türen des Korridorbereichs und uns die Regeln ansehen Raus. Jedes Mal rennen wir zu einem anderen Pausenraum, Korridor. Wir fügen eine Tür und eine Richtung hinzu. Das Erste , was passieren kann, ist , dass dieselbe Koordinate zwei Richtungen hat. Was wir tun werden, um das zu beheben , ist, dass wir eine Verbindung herstellen und die Türen am Ende laufen lassen, wenn wir alles hinzugefügt haben. Wir werden es hier drüben hinzufügen , und zwar für jedes angrenzende Objekt. Spiel. Es hat unsere Sachen ein bisschen repariert. Wir haben hier eine Tür, wir haben hier eine Tür, aber wir haben hier eine CDL, was das Problem ist, das wir zuvor entdeckt haben Ich schätze, da gibt es eine bestimmte Richtung. Wir haben vielleicht nicht den richtigen Zug angebracht. War ich es? West West Ost West. Also hat diese Seed, die eigentlich im Osten sein sollte, nicht das richtige Etikett und stürzt ab. Wieder zurück, und jetzt ist es behoben. Und wenn wir Play drücken und Türen und Türen drücken. Und zu denken, weil es zerquetscht ist, hat nichts gerettet. H-Generator, Türen haben das Hinzufügen hier nicht gespeichert. Ich habe es wieder hinzugefügt. Deshalb sollten wir immer ständig sparen. Jetzt haben wir Hunde, nur einen pro Korridor. Jetzt ist sie in Ordnung. Es scheint richtig zu sein. C hier. Das ist dieser Korridor hier. Wir haben überall Türen. Jetzt sind alle unsere Labyrinthe und Räume miteinander verbunden und ein Spieler kann durch das gesamte Labyrinth und alle Räume navigieren Jetzt, wo wir mit den Türen fertig sind, erhöhen wir unsere Ladung Oben, und ich werde das Ding hier drüben kopieren , Base. Sagen wir, 85 viel. Das sind auch vier Schleifen. Es sind wieder viele Aktionen. Nun, was wäre unser nächster Schritt beim Bau unseres Kerkers? Nun, unser nächster Schritt wäre, die Außenwände herauszufinden , welche Außenwände und welche Innenwände Damit meine ich also, dass wir bei diesen Wänden vergessen Und diese und diese sind Innenwände, wohingegen diese oder diese eine Außenwand ist Wir wollen, dass aus den Innenräumen ein paar Requisiten, Kreuze, Tische, Stühle, Dolche, eine riesige Menge an Requisiten werden, die quasi den Weg versperren werden quasi den Weg versperren werden Aber mit allen, einigen von ihnen, können wir so leben, wie Es wird ein zufälliger Zufall sein. Geh, um das zu tun. Gehen wir zu unserem Labyrinth-Generator. Lasst uns das Gameplay beenden und eine neue Funktion erstellen , die wir Wind Exterior Walls nennen werden. Wir werden herausfinden, dass das auch das Innere war, aber ja, das ist ein guter Name Nein. Nochmals, als Erstes benötigen wir all unsere Dungeon-Koordinaten Und wir werden die Schlüssel holen. Natürlich werden wir es von ihnen machen. Für jeden Loop. Und wir werden das Kreuz neben jedem finden. Und wir werden uns eine Schleife für jede Schleife vom benachbarten Kreuz leisten . Nun wollen wir fragen, ob das angrenzende Kreuz Teil des Kerkers ist Also werden wir eindämmen, fragen, ob es die Karte enthält Die Karte wird unser Kerker sein. Und wir werden einen Ast anlegen. Lassen Sie uns also mit der Logik beginnen, dass wenn unsere Nachbarn, unser Nachbar, nicht im Kerker sind, es eine Außenwand ist es eine Außenwand die in die Richtung des Nachbarn zeigt, es ist eine Außenwand Um das zu tun. Wir werden im Grunde die Wände brauchen. Noch nicht. Tut mir leid, finde den richtigen Stapel, das ist das Plättchen , das wir untersuchen. Es ist nicht der Nachbar. Es ist die Kachel, die wir untersuchen. Das ist wichtig, weil der Nachbar der ungültige ist. Wir werden die Wände holen. Ein Array dafür. Wände. Dafür gibt es kein Array. Es tut mir leid. Ich meinte, wir brauchen das Kind. Die Dekoration hat die Wände, nicht die Fliesen. Wir brauchen also ein Kind. Wir holen uns Dekorationen. Wir werden ein Kind bekommen. Und wir werden Dekorationen auf reinen Guss umstellen. Und wir werden Wände bekommen, und jetzt haben wir die Wände. Aber neben den Wänden brauchen wir auch die Richtung. Wir haben also dieses S EW und wir müssen das einschalten , und wir werden den Schalter finden. Das ist der entgegengesetzte Schalter. Wir können es hier umgekehrt machen. Hier. Ich verbinde das. Das sollte Nord sein, sollte Süd sein, sollte Ost sein und Süd-West. Im Moment wollen wir nicht das Gegenteil. Und wir werden jede Wand durchbrechen. Wir werden den falschen Zweig wählen , weil er dann nicht zum Kerker gehört Und wir werden ein Array erstellen. Nein. Um es auf variabel hochzustufen. Klicken Sie auf Variable heraufstufen, wodurch diese Außenwände ausgeführt werden. Trennen Sie das und bringen Sie die Außenwände mit. Ich werde diese Wand hinzufügen. Ich werde ein weiteres Array mit dem Typ Directions erstellen. Also mache ich alle Richtungen. Ich gehe zur Montage der Innenwand. Und ich werde auch diese Informationen hinzufügen. Nur für den Fall, dass wir es brauchen. Vielleicht wollen wir manipulieren. Vielleicht möchten wir das statische Netz für alle Wände ändern. Vielleicht möchten wir einige davon ändern. Vielleicht machen wir einen Zufallsgenerator, der einige von ihnen so verändert dass sie eine Form haben, die Va erzeugt, und dann werden wir prüfen, ob diese Wand in einer Kachel ist, die sich in einem speziellen Bereich befindet, oder in einem isolierten Bereich, dem wir die Lavablöcke haben. Wie dem auch sei, ich denke, das ist ein guter Haltepunkt. So bekommen wir die Außenwände, und wir werden in der nächsten Version weitermachen mit ein bisschen mehr Code hier und dem Hinzufügen einiger weiterer Grafiken. Auf Wiedersehen für heute Wir sehen uns beim nächsten. 46. Wanddekorationen: Hallo und willkommen zurück zum Game Design Workshop, Rail Engine Five, Procedural Dungeon Action at PS Creation Course In der letzten Lektion waren wir bereits mit unseren Türen zum Korridorbereich fertig Wir haben die einzelnen Türen tatsächlich kopiert und eingefügt und nur ein paar Dinge geändert. Eigentlich eine Sache Wir lassen die Türenanordnung zum Hinzufügen von Türen laufen oder finden jeweils benachbarte Türen heraus, anstatt zu rennen, wenn wir fertig sind, die ganzen Korridore zu durchlaufen Wir haben auch damit begonnen, die Funktion der Außenwände zu definieren. Wir haben tatsächlich alle Außenwände und deren Ausrichtung festgelegt und sie zu einer Liste hinzugefügt. Und wie gesagt, wir werden weiterhin ein paar weitere Bilder zu unserem Labyrinth hinzufügen Oh, wir gehen zu unserem Stapel. Wir gehen zu unserem Viewport und versuchen, diese schreckliche Lücke hier zu verstecken. Tun Sie das Wir klicken einfach auf eine Wand. Wir werden nur statischen Reis hinzufügen. Netz. Eigentlich mussten wir nicht auf eine Wand klicken. Wir mussten auf die Wurzel klicken. Wir machen es also nicht zu einer Wurzel, sondern berühren es einfach. Diese Wände sollten für die anderen Wände irrelevant sein. Es sollten keine Kinder sein. Sie sollten Kinder der Wurzel sein. Nun, für dieses statische Netz gehen wir zu vegetationsähnlicher Vegetation über. Es ist, es ist dämonische Vegetation. Es ist ein bisschen ausgeglichen. Lass es uns neu skalieren. Mache die Rotation tatsächlich auch. Lass es uns irgendwo hier hinstellen, vielleicht ein bisschen vorne. Wir wollen nur diese Zeilen hier verstecken. Oh, wir machen es ein bisschen, vielleicht Lock's 1.1. Das ist ein bisschen weiter unten. Das ist der Teil, dass es mehr Wimper, dicker ist. Ich werde näher an der Linie sein, also vielleicht sogar über der Linie. Ja. Er. Wir werden es kopieren und einfügen. Werde ich die Rotation ändern? Eins. Nochmals. Wie präzise es ist, liegt an Ihnen, wann es gut aussieht, es ist minimal visuell, also werden wir nicht viel Zeit haben. Bildmaterial. Stimmt? Ich denke, es ist gut genug. Geben wir ihnen jetzt ein paar Tags. Also diese Seite ist Osten. Also dieses E, diese Seite, Nord-Süd. Also hat es ein S. Auf dieser Westseite. W, und diese Seite ist. In Ordnung. Gehen wir jetzt zu unserem MS-Generator und den feinen Außenwänden. Da wir die Außenseiten haben, können wir das einfach von unserer Kachel hier aus Wir müssen die Dekorationen nicht machen, denn jetzt sind wir in Fliese Wir können, wir müssen es schaffen, um es zu bekommen und wieder versuchen zu können. Wählen Sie das aus. als, nicht wofür. Ich bin mir nicht sicher, wie dieses Alter ist. Nein , ja West. Nein. Okay. Jetzt hacken Sie auf allen herum. Gehen wir zum Drehbuch. Bringen wir sie, machen daraus ein paar Werte und fördern eine Variable. Rufen wir sie auf D auf, auch für Spurmüll. Und so behalten wir den gleichen Fehler. Also das hier, gehen wir zurück zu meiner Generation und holen das weg. Am Ende. Es ist so und wir werden und wir werden am Ende für. Die Wände, ich setze das Spiel auf falsch. Ich gehe zurück zu einem Plättchen, sie wieder alle und setze Hidden Game. Stimmt. Wenn wir jetzt spielen, sollten wir nichts sehen, weil diese Funktion nicht läuft. Also du weißt schon, die Übung. Jetzt haben wir unser Laub, aber wir haben es überall. Also der Grund ist, dass ich einfach alles auf versteckt gesetzt habe, nicht wahr? Ja. Was wir tun wollen, ist die Richtung zu und von dieser Zeichenfolge herauszufinden. Lass uns gehen. Geh dieses Jahr, wie wir es zuvor bei vielen Dingen getan haben. Ich werde den Ast hierher stellen. Und wenn es wahr ist, dann zeig nur das Laub. Jetzt ist es richtig. Unsere Keule hat Laub Es ist viel mehr. Das ist der Grund , warum ich das erzählen werde. Es wird gut werden. Wir sind mit diesem Detail fertig. Das nächste Detail, das wir tun sollten, ist , die Innenwände durch Wände eines anderen Typs zu ersetzen. Oh, um das zu tun, gehen wir zurück zu unserem Hauptgenerator. Gehen wir zu unserer Wars-Filiale. Bei uns finden Sie Ausgangswände. Die Wände, eigentlich unser eigentlicher Zweig. Nicht unsere Stürze. Das heißt, das gehört zum Kerker und wir werden eine weitere Frage stellen Wenn es zum Kerker gehört, ist es vielleicht auch ein Raum? Denn wenn es ein Raum ist, wollen wir die Wand nicht verändern. Wir wollen die Wände des Raums haben. Nein, wir bringen die Alle Räume, alle Zimmerrufe mit, was ein Endpunkt ist, und wir werden einfach sehen, ob er nicht dieses, nicht die Nachbarn, sondern dieses Element enthält , das ist der Schlüssel , den wir testen. Also, das ist der Schlüssel für ein Zimmer. Wenn es ein Zimmer ist, machen wir nichts. Wenn es kein Zimmer ist, holen wir uns wieder unsere Wände, die wir hier haben . Wir gehen zu den Wänden, was ein Raum ist. Wir suchen die richtige Wand in der Richtung, also sollten wir das kopieren. Wählen Sie den Knoten. Oder hier. Das verbindet es mit dem Index der Futterschleife , die mit dem Nachbarkreuz verbunden Und wir gehen zu einem Cs u und diesen beiden und wir verbinden das hier und wählen einen Zweig Jetzt werden wir natürlich ein statisches Netz einrichten. Für das statische Netz werden wir aus einer zufälligen Ganzzahl im Bereich ect ableiten. wäre null bis drei, weil wir ein paar zusätzliche Dinge haben. Ich denke, einer wäre dieser kombinierte Tisch. Das ist zu klein. Dieser 1938 A, drei, vier, benutze diesen. Als nächstes kombiniert 9d57 47a7. Ich bin mir ziemlich sicher, dass wir noch mehr hatten. Okay. Hier sind wir kombiniert 0d44 c17 Erinnere c17. Und wir werden einfach die tatsächliche kombinierte Wand verwenden , die wir haben Also von ihnen wird es nur eine Mauer sein. Nun, eine zusätzliche Sache, die wir hier machen, aber wir werden es später erklären, wenn soweit ist, ist, dass wir, wenn wir im Gameplay sind es soweit ist, ist, dass wir, wenn wir im Gameplay sind und unser Charakter hinter etwas steckt, Lage sein sollten, eine Figur unseres Charakters zu sehen. Und um das zu tun, werden wir ein bisschen mit dem Wert Atom Depth und all herumspielen, das nennt man im Grunde das Rendern benutzerdefinierter Tiefe Deshalb werden wir jetzt nicht viel darüber sprechen. Wir werden zu gegebener Zeit darüber sprechen, aber wir sollten die Optionen jetzt aktivieren , damit wir nicht zurückkommen müssen. Wenn wir uns auf inneren Wänden befinden, wollen wir im Grunde die Unterseite unseres Charakters sehen, und einige der Vermögenswerte sind etwas höher, sodass unser Charakter durch sie verstummt Wenn wir das machen, holen wir uns das statische Ich. Wir werden die benutzerdefinierte Rendertiefe festlegen. Stimmt. Wir werden das hier verbinden. Außerdem wollen wir den Wert für Schablonen festlegen. Ich denke Null. Wenn nicht, werden wir es später überprüfen Wenn die Zeit gekommen ist, werden wir zurückkehren und diesen Wert ändern. Wenn ich jetzt vorkompiliere und spiele, haben wir unsere Boxen. Wir haben unsere anderen Boxen hier, die Innenwände wurden etwas interessanter. Und unser Kerker hat ein paar Requisiten. Einige von ihnen überlappen sich ein bisschen, und mir ist aufgefallen, dass das auch mit den Ecken einiger Wände passiert auch mit den Ecken einiger Vielleicht müssen wir die Wände etwas weiter nach außen schieben. Aber ich denke, es ist auch in Ordnung. Was wir tun könnten, um dieses Problem zu beheben, ist einfach zu unseren Dekorationen und dem Standort zu gehen , zum Beispiel das auf X, das wäre vielleicht ein Vier-oh-Fünf. Ja, dieser eine, vier oh fünf. Dieser. Warum? Ich habe diesen gemacht. Zu. Vielleicht behebt es das ein bisschen. Verdammt. Ja, die Ecke ist nicht mehr sichtbar Hier ist sie der hölzernen ebenbürtig. Gut, es ist in Ordnung. Hetils, ich denke, wenn wir mit den Werten herumspielen, können wir einen Wert finden, der für alles besser ist Aber vorerst werden wir unseren M-Generator weiter bauen. Es gibt noch viel zu tun. Wir werden mit dem nächsten weitermachen. Wir sehen uns dann. Auf Wiedersehen. 47. Richtungspfeilanpassungen: Hallo und willkommen zurück zum prozeduralen Kurs zur Engine Five von Game Design Workshop Erstellung von Dungeon Action Apes Zuvor haben wir unsere wunderbaren Bilder dieser Pflanzen hier rund um unsere Blöcke hinzugefügt dieser Pflanzen hier rund um Und wir haben den Code für das Hinzufügen fertiggestellt, sie sichtbar zu machen, wenn sie sich an den Rändern befinden, wenn sie sich innerhalb der Außenwände befinden, und wir haben tatsächlich die Requisiten in den Innenwänden geändert, auch um eine zufällige Variation der Requisiten zu sein, auch um eine zufällige Variation der Requisiten zu sein In diesem Fall werden wir Folgendes tun: Ich drücke auf Play, um das zu zeigen Wir müssen die Begrenzungspfeile reparieren. Das bedeutet, dass einige Pfeile hier korrekt sind, andere Pfeile nicht In diesem Fall war fast alles richtig. Hier haben wir zum Beispiel einen Pfeil, der nach hier zeigt, aber wir können tatsächlich von hier aus darauf zugreifen. Und das ist in diesem Fall nicht oft passiert, aber es ist ein Problem. Wir sollten keine Pfeile haben , die auf Orte zeigen , zu denen wir nicht gehen können. Wir reparieren das. Lassen Sie uns eine neue Funktion erstellen, die das gesamte Labyrinth durchläuft und testet, ob es zu Kollisionen mit Line Trace Wir wissen also, ob es gehen kann oder nicht. Da dies die endgültige Form unseres DG ist, wird sich auch das Layout nicht mehr ändern. Lassen Sie uns also eine neue Funktion erstellen. Nennen wir das Dinge. Aros. Und tatsächlich werden wir in dieser Funktion etwas anderes machen Nun, fast anders. Die Art und Weise, wie wir unsere Variablen manipulieren werden, um unsere Richtungspfeile zu ändern. Wir werden ein Bullionary und eine Richtungsmatrix erstellen, und weil das zwischen ihnen korrespondieren wird, es eigentlich auch ein Punkt-Array Wir werden in der Lage sein, die Richtungen unabhängig davon festzulegen , wie viele oder falsch bei einem Gleichstand sind Im Grunde ein bisschen das Gleiche , was wir tun, immer auf eine andere Art und Weise Es geht also momentan nicht um Optimierung oder nicht. Es geht darum, verschiedene Techniken zu zeigen. Oh, wir werden unsere Dungeon-Variable bekommen. Wir werden unsere Schlüssel holen. Nur Schlüssel. Und wir werden jeden von ihnen durchgehen? Weil wir den ganzen Kerker durchgehen und Nachbarn finden werden, die direkt nebenan liegen Und wir werden auch jeden von ihnen durchgehen . So wie das hier. Hier kommt die erste Frage. Gehört dieser Nachbar zum Kerker? A Wir werden dich fragen, ob es darin enthalten ist? Der Kerker Und wenn nicht, dann werden wir eine lokale Variable erstellen, eine Buling-Variable, die ein Array sein wird Ich rufe an, sagen wir, diese Bullen. Und wenn das nicht der Fall ist, fügen wir natürlich Stürze hinzu . Falsch, weil es den Kerker nicht enthält, also gibt es keinen Zugang dazu Aus dem Falschen. Wenn es wahr ist, werden wir von Kanal zu Kanal suchen. Wir setzen auf Kamera, nicht auf Sicht. Für den Startort werden wir den Nachbarn brauchen. Also werden wir es im Kerker finden. Ein Ort. Wir werden tatsächlich etwas Z-Höhe hinzufügen, S 25. Das ist unser Start und unser Ende ist der aktuelle Block, den wir überprüfen. Ich werde das hier verbinden. Das haben wir schon einmal gemacht, noch einmal. Ich werde es einfach einfügen. Verbinde dich hier und das ist das Ende unserer Leitung. Wir gehen zur Filiale. Ich möchte das hierher bringen. Lies es vor. Hier draußen. Hier wird es aus der Zweigstelle kommen. Wenn es auf etwas trifft, dann wiederum, wir haben keinen Zugriff, also wird dieses B ausgeschaltet sein, wenn wir nicht getroffen haben, ich habe es nicht getroffen, dann geht es weiter, um an zu sein. Das ist der Hauptunterschied, nicht wahr? Nein. Das nächste, was wir brauchen, sind die Koordinaten. Aber wir werden ein anderes Array erstellen. All diese Punkte oder Anschlüsse oder was auch immer. Wird vom Typ in Punkten sein. Okay. Und dann werden wir es von beiden Ästen zu unseren Wänden hinzufügen. nicht wirklich wichtig, weil sie alle brauchen, auch wenn es falsch ist, wir brauchen die Koordinaten, um das auszuschalten. Und die Koordinaten wären der Block, der wir sind, die Kachel, die wir überprüfen. Jetzt brauchen wir endlich die Richtung. Wir werden ein weiteres Array hinzufügen. Ich nenne es. Erektion. Wir geben einfach einen E-Erektionstyp an und fügen hinzu, dass Sie auswählen müssen Wir werden die Auswahl von einem anderen Ort kopieren. Wir haben es hier. Finden Sie extern. Und wir werden den Index davon für jeden Loop für die Nachbarn verbinden ? Denn basierend auf den Nachbarn haben wir unseren Nordosten im Südwesten. Nun, das sind die drei Variablen. Diesmal geht es anders , aber wir haben eine Liste von Bionen, eine Liste von Punkten und eine Liste von Richtungen Nein. Wie werden wir jedem Block sagen , dass er die richtigen Anweisungen geben soll? So wie wir es jetzt eingerichtet haben , hatten wir keine eindeutigen, sondern viele Richtungen in einem Array. Das bedeutet, dass ich in jedem Block viermal die Linie als laufe. Das bedeutet, dass jeder Block viermal denselben Endpunkt erzeugt, aber das entspricht vier verschiedenen Richtungen und vier verschiedenen Booleschen Also, lass uns das machen. Wir machen das, wenn wir das alles hinter uns haben, also werden wir es von den ersten vier Schleifen an aufrufen. Wir werden weitere vier anrufen. Ups. Wir werden unsere Endpunkte hier verbinden. Auf diese Weise ist es ein bisschen einfacher. Ich denke, es sind mehr Aktionen als andere Methoden. Wie dem auch sei, ähm, ich gehe in unseren Kerker, um unsere Kachel zu holen Nun, finde den ausgewählten Schauspieler, den gespeicherten Schauspieler , der in der Tabelle steht, und wir werden uns eine Wegbeschreibung Und wir werden hinzufügen Übrigens, wir werden es hinzufügen, es ist sehr, sehr, sehr einfach. Wir werden unsere Bionen-Variable bekommen, und wir werden unsere Variablen, unsere Array-Variablen Bulions und Directions, und wir werden eine Kopie davon bekommen Und weil sie unserem Array-Index entsprechen , trennen wir Ein bisschen Klippenüberquerung. Es ist in Ordnung. Und dann werden wir ROs zusammenzählen. Dies wäre die Funktion , um alle unsere Richtungen festzulegen. Wir haben es angeschlossen. Nun, ich habe es natürlich nicht getan, ich habe es nicht getan. Repariere Pfeile. Kompilieren und speichern. Lass uns spielen und jetzt sind die Pfeile repariert. Jede Richtung, in die wir gehen sollen, hat einen Pfeil, jede Richtung, in die wir nicht gehen können. Es hat keinen Pfeil. Großartig. Ich denke, das ist es für diesen. Ich sehe dich beim nächsten. Tschüss. 48. Ausblenden von Debug-Pfeilen und Erstellen von Fackeln: Hallo und willkommen zurück zum Game-Design-Workshop und zum prozeduralen Dungeon-Action-RPG-Erstellungskurs für Real Engine Five Dungeon-Action-RPG-Erstellungskurs Zuvor waren wir mit unserer Funktion mit festen Pfeilen fertig. Diesmal haben wir tatsächlich einen anderen Weg gewählt. Wir haben einen Haufen Pulionen und eine Menge Punkte und Richtungen, entsprechende Arrays und unser Linienverfolgungssystem gespeichert und eine Menge Punkte und Richtungen, , ob es einen Block gibt oder Und als wir damit fertig waren, haben wir unsere Punkte überprüft und alle unsere Akteure dazu gebracht, die entsprechenden Änderungen vorzunehmen Jetzt sind wir quasi mit dem Informationsteil der Einführung fertig Informationsteil der mit dem Datenmanagement und allem. Eine letzte Sache könnte sein, alle Pfeile zu verstecken. Gehen wir also zu unserer BP-Kachel. Gehen wir zu unserem Ereignisdiagramm klicken mit der rechten Maustaste und erstellen ein Sturmereignis. Wir werden diesem Ereignis einen Namen geben. Alle Pfeile verstecken. Von hier aus nehmen wir unseren Nordpfeil, wir nehmen unseren Ostpfeil. Wir werden unseren Westpfeil und unseren Pfeil nehmen. Eigentlich sollten wir die Kachelnummer auch bekommen , weil wir das verstecken wollen. Nein, wir setzen ein und wir werden alles damit verbinden. Und das Neue Verborgene wird wahr sein. Lassen Sie uns nun überprüfen, ob wir in der Dekoration etwas Text haben. Glaube das nicht. Wir müssen hier nichts verstecken. Wir werden kompilieren. Speichern und kompilieren. Immer speichern und kompilieren. Dies ist das dritte Mal , dass dies passiert. Und wir sind zurück und wir werden kompilieren und speichern und kompilieren, immer speichern und kompilieren , denn nur für den Fall , dass es abstürzt, hätten wir speichern sollen. Jetzt gehen wir zurück zu unserem Labyrinth-Generator erstellen eine neue Funktion, diese Holen wir uns unser Labyrinth. Dieses Mal werden wir die Werte bekommen, weil die Werte die Kacheln sind, und wir werden es in einer Schleife machen Für jede Schleife werden wir Arrows aufrufen. Nennen wir es jetzt in der Grafik. Pfeile. Kein Zurück und Kompilieren. Lass uns spielen Und es muss Kinder verstecken. Und wenn wir es an Kinder weitergeben, werden die Text-Renderings innerhalb der Pfeile ausgeblendet innerhalb der Pfeile Wir haben WS gesehen und alles war übrig, und jetzt haben wir eher eine Spielansicht Drücken wir die Taste LIT. Endlich ist es an der Zeit, Lit zu sehen. Jetzt fangen wir nicht mit der Sonne an, denn zuerst sollten wir das Labyrinth beleuchten, denn wenn ich jetzt anfange, mit der Sichtbarkeit der Sonne zu spielen und sie auf quasi eins einzustellen Wenn wir uns dann das Labyrinth ansehen, werden wir nicht viel sehen Es ist in Ordnung, aber lassen wir es vorerst in einem, es ist dunkler, als es sein sollte Stimmt. In dieser Lektion werden wir jetzt damit beginnen, unser Labyrinth mit einigen benutzerdefinierten Lichtern zu beleuchten , auf die wir reagieren Wir gehen zum Ordner Blueprints. Wir klicken erstellen einen neuen Ordner Nennen wir diesen Ordner Requisiten. Lassen Sie uns diesen Ordner aufrufen. Eigentlich können wir den Aufzug auch hierher bewegen, und wir können die große Truhe auch hierher bewegen. Und wir können das BP-Intro auch hierher verschieben. Für die Generation der Labyrinthe sind das also die drei Plättchen, die benötigt werden, und der Rest sind Requisiten, die Dinge für uns erledigen Also klicken wir erneut mit der rechten Maustaste und wählen Druckklasse Ich wähle Schauspieler aus. Es wird die BP-Veranda sein. Das wird eine Fackel sein. Öffne sie, ich werde sie hier oben verankern Wir werden eine strategische Suche brauchen. Wir werden ein Punktlicht brauchen. Und natürlich werden wir ein Partikelsystem benötigen. Für das Partikelsystem werden wir die Kaskade verwenden, weil unsere Partikel die Kaskade für das Feuer sind Und das ist es von den Komponenten, die wir benötigen. Ich gehe zu den statischen Quests. Ich werde eine Veranda auswählen. Ich wähle die aus, die ich sehen kann, weil es ist. Das ist eine große Fackel, ist eine kleine Fackel Ich werde dieses Reihenbett-Rohr wählen. Reihe für Röhre. Alles klar? Also, wo ist es hier. Was wir brauchen, ist, das Partikel dem statischen Netz zuzuordnen, also nur für den Fall, dass es sich zusammenbewegt. Ich werde nicht dasselbe mit dem Punktlicht machen , ich werde dasselbe auch mit dem Punktlicht tun. Und lassen Sie uns zuerst das Partikelsystem auswählen. Lassen Sie uns die Vorlage verwenden. Wir wollen den P Fire. Es ist ein bisschen groß. Das sind vier. Stimmt? Ändere die Richtung, Stift. Ja. Ich habe 92 Achsen gewählt. Was ich für die Tonhöhe halte. Und dann gehe ich zum Point Light. Eigentlich werde ich es so belassen, weil wir später Code erstellen werden , damit es so aussieht, als ob es flackert Moment wollen wir es nur auf unseren Mist hinzufügen, darauf in unseren Dungeon. wollen wir es nur auf unseren Mist hinzufügen, darauf in unseren Dungeon Gehen wir zurück zum Mz-Generator und erstellen wir Nennen wir es P-Lichter. Und jetzt stellt sich die Frage, wo wir diese Lichter anzünden Der Ort, an dem wir sie spawnen werden , ist neben den Türen, links und rechts oder einer von ihnen oder keiner von Manche Türen haben vielleicht kein Licht. Also werden wir die Raumfraktur brauchen. Also werde ich mir ein S-Zimmer nehmen. Ich werde mir ein Zimmer suchen. Und von dort aus werde ich aufhören. Und davon werde ich ausbrechen. Von da an werde ich weitermachen. Also machen wir das für jede Raumkoordinate. Also müssen wir zuerst den Schauspieler finden. Dafür brauchen wir unseren Kerker. Und von diesem Schauspieler brauchen wir wirklich unsere Dekorationen. Schauspieler bekommen sogar Auszeichnungen. Und davon werden wir Dekorationen bekommen und von hier aus werden wir Dekorationen anfertigen Ich werde einen reinen Schnitt daraus machen. Nun, F-Dekorationen, wir müssen wirklich T erstellen , ein paar Szenepunkte. Gehen wir zu unserem Dekorationsplan. Gehen wir zu unserem Viewport. Ich werde hier die Pfeile schließen und eine Szene hinzufügen, die, wie Sie lesen können , nur eine Komponente mit einer Transformation ist, die angehängt werden kann , oder es können auch andere Komponenten angehängt werden Es ist im Grunde nur ein Punkt, einen Punkt, den wir definieren können. Ich wähle die Szene und verschiebe sie hierher. Vielleicht nach links nach rechts. Nur für diesen Fall werde ich einfach in eine Tür ändern, um das zu finden, wähle ich die Szene erneut aus, oder fast richtig. Ich werde es hier platzieren, vielleicht hier. Fein. Ich werde die Szene kopieren, duplizieren. Wir brauchen ein Kreuz und das wird die Ostwand kennzeichnen. Das wäre Ostwand A. Links. Also EW L, und das wäre dann alles in Ordnung. Also, lassen Sie uns das zu dem machen, was es war. Ich wähle es hier aus, finde es im Browser, links hinter der Wand, und ziehe es hierher. Ordnung. Ich hole mir die Szenen. Ich werde sie duplizieren und ich werde sie übertragen. Sie sind in der richtigen Position. Sie sind. Wenn wir spawnen, wird es uns besser gehen. Ich werde dem einen Namen geben R eins. Das wird W W L eins sein. Ich werde das Gleiche für den Norden und Osten tun. Ich werde hinzufügen. Um es hierher zu bringen. Und ich werde den Offset auf dem anderen überprüfen , der 140 war, für den nächsten war es 145. Es ist in Ordnung, wenn sie nicht symmetrisch sind weil einige von ihnen gespawnt werden, andere nicht Ich werde das Original wieder auswählen, ist es. Hier ist es. Ich werde 140 hier hinstellen. Ich werde duplizieren, es ergibt 45. Und ich werde das North nennen. Der Schlepper. Das ist Süden Das ist also die Südwand, die Mauer links. Ich werde sie duplizieren. Und ich werde es tun und das wird die Wand eins links sein, die eigentlich entgegengesetzt sind. Das ist die richtige. Das ist der linke. Das ist auch passiert W. Der andere W. L. Nicht dass es wichtig wäre, aber warum nicht? Oh, ich werde kompilieren und speichern, und wir werden es für diesen hier belassen. Wir machen eine Pause und machen mit der nächsten weiter. Auf Wiedersehen. 49. Lichter-Fackeln: Hallo und willkommen zurück zum Game Design-Workshop und zum echten Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-ARPs für Engine Five prozeduralen Dungeon-Action-ARPs Zuvor haben wir mit unserer Lights Maze-Funktion begonnen. Wir haben den Anfang des Algorithmus erstellt, welche Räume wir durchsuchen und wie wir die Informationen von ihnen erhalten Und wir haben auch ein paar Punkte zu unserem Dekorationsplan hinzugefügt , um die Lichter anzubringen Gleichzeitig haben wir auch unsere Pfeile versteckt und den Plan für die Fackel erstellt Lass uns jetzt weitermachen. Gehen wir zu unserem Labyrinth-Generator und zu unserer Funktion Labyrinth-Lichter Vielleicht lassen Sie uns vorher noch einmal eine mühsame Aufgabe erledigen. Lassen Sie uns hier noch etwas hinzufügen , weil ich weiß, dass es nicht die beste Zeit ist, aber es ist nicht die beste Zeit, aber wir müssen es tun Und diese mühsame Aufgabe besteht darin, den Szenen das Zerren hinzuzufügen. Nein. Das sind die Nordszenen. Also gehen wir an jedem Tag ziehen. Wir werden hinzufügen. Wie Sie sehen können, kann ich beide auswählen, und es wird es zu beiden hinzufügen. Ich wähle die südlichen aus, ich füge einen Zug hinzu, ich wähle S. Ich wähle die östlichen aus, füge den Zug E hinzu, und die westlichen Teile auf dem Zug wählen W. In Ordnung, die mühsame Aufgabe ist vorbei, zurück zu den interessanteren ich füge einen Zug hinzu, ich wähle S. Ich wähle die östlichen aus, füge den Zug E hinzu, und die westlichen Teile auf dem Zug wählen W. In Ordnung, die mühsame Aufgabe ist vorbei, zurück zu den zurück zu den Nun, wie können wir feststellen, wo die Tür ist? Wenn du dich erinnerst, wenn wir unseren Wänden eine Eins geben und von jedem von ihnen eine Schleife machen. Wir können die Schlepper holen. Und wir können überprüfen, ob der Artikel darin enthalten ist. Dabei wird zwischen Groß- und Kleinschreibung unterschieden Also, als wir diesen Schlepper an den Türen angebracht haben, wie haben wir ihn hinzugefügt? Suchen wir diese Funktion, die sich in den Dekorationen A befinden würde und sie war groß D O R. Also gehen wir hier hin, Großbuchstabe D 00 R. Jetzt müssen wir nicht wissen, wo genau die Tür ist, welche Richtung oder was auch immer Wir können einfach nachschauen, welche Tür ein Türschild hat. Und das, weil wir wissen, dass der erste Schlepper unser Nordost-Südwest ist Wir können P auf Null setzen, was der erste Zug ist. Und dann brauchen wir eine Reihe von Lichtern. Gehen wir also zurück zu den Dekorationen. Noch ein paar mühsame Aufgaben. Lassen Sie uns alle auswählen. Die Reihenfolge spielt keine Rolle, da wir mit Schleppern fahren, ich glaube, das sind alle. Lass uns ein Array erstellen. Kopieren. Er ist dieser. Ops. Und es sind acht, also ist es richtig, denn vier Seiten, zwei auf jeder, acht, werden für diese beiden Libs werben. Ts, oder vielleicht Türlichtschlitze, weil wir vielleicht noch mehr hinzufügen könnten, wer weiß? Wir werden kompilieren und speichern. Gehen wir zurück zu unserem Labyrinth-Generator und aus unserer Dekoration werden wir Türlichtschlitze Ich gehe zu jedem. Wenn es nicht ist, wenn es die Tür enthält, werden wir das Bauteil entfernen. H-Zug hat tatsächlich einen Zug, der der Nullzug an unserer Tür sein wird Ich gehe zur Filiale, zur Station Loop. Und jetzt, weil wir das Licht drehen müssen, weil das Licht von selbst eine bestimmte Drehung hat. Wir könnten ein ausgeklügeltes System mit Linienspuren und/oder fett gedruckten Koordinaten verwenden. Aber nein, was wir machen werden, ist, die Werte selbst zu bestimmen, und was welcher Drehung entspricht. Weil wir im Grunde nur vier Rotationen haben. Jeder. Was wir also tun werden, ist, basierend auf dem Namensschild zu wechseln. Und das nur , wenn das wahr ist. Wir werden vier Fälle haben. Ich werde die Hinrichtungsnadel entfernen und die Fälle wären unsere Anweisungen. All das wäre Nord, Süd, Ost und West. Speichern, speichern und kompilieren. Jetzt erstelle ich eine benutzerdefinierte, eine lokale Variable, nämlich Licht, und sie wird vom Typ Rotator sein Dann stelle ich es so ein, dass jeder von ihnen Südwest ist. Und die Werte sind -90 für Nord, 0490 für Süd, Null für Ost und 180 für West Dann werde ich einen Zweig aufstellen, denn wie gesagt, einige von ihnen werden ein Licht haben, andere werden kein Licht haben, und ich werde es tun und ich werde Schauspielunterricht geben werde den Löffel teilen Ich werde den Löffel teilen und das Licht verrotten Zur Rotation. Und für den Standort brauchen wir nur den Ort, das Wort Ort unserer Szene. Also werden wir den Standort ermitteln und ihn hier verbinden. Und wir sollten die Klasse wählen, die Klasse wäre Fackel Eine weitere Sache, die wir brauchen, ist etwas, das wir schon lange nicht mehr benutzt haben. Wir brauchen die Schauspieler zum Zerstören. Wir werden diese Liste um die Lichter erweitern, denn wenn wir ein neues Labyrinth bauen, sind die Lichter in der Leistung tatsächlich teuer Also werden wir sie löschen. Lass uns spielen gehen. Lass uns sehen, was eigentlich. Lass uns diese Funktion am Ende dieser Zeile hinzufügen. Das Labyrinth leuchtet und jetzt können wir spielen gehen. Und injizieren und wir haben Lichter. Sie sind zu weit weg. Einige von ihnen sind zu weit weg, andere nicht. Das sollte gehen. 70, sie sind auch groß. Gehen wir zurück zu den Dekorationen. Lassen Sie uns sagen, um welche Punkte es sich handelt. Das sollte 370 sein, das war in Ordnung, ich denke, 370 das Warum? -70. Das scheint intern zu sein Weg, lassen Sie uns sie zuerst ein bisschen kleiner machen. Gehen wir also tatsächlich zum Laichen von ihnen über. Wir müssen sie hier nicht kleiner machen. Wir können sie einfach kleiner machen, allgemein. Wenn das Männchen aufleuchtet, wenn wir es spawnen, reduzieren wir die Skala um 2,5 55. Lassen Sie uns noch einmal überprüfen, wie sie aussehen. Sie sind ein bisschen niedrig und sie sind ein bisschen weit weg. Wir können den Verwandten hier nicht sehen. Wir können den Verwandten von hier nicht sehen. Natürlich können wir nicht, wir werden zu den Dekorationen gehen müssen und zwar mit den Werten hier. Ich nehme 20, die andere nasse. Gib alles für T. Dieser hier ist für 20 drin. Welcher war der Süd-Süd-Ort, ich glaube, er war zu weit weg. Ja, für 20. Und dieser hier auch 20. Es gibt welche, die wir nicht angerührt haben Sind da zu viel drin Vielleicht sollten wir hier alles auf 30 ändern. 160 leicht mit niedrig, also ist es 81 25 oder 30 oder 25280, es ist in Ordnung Sind wir der andere? Es ist fünf. Das ist die schlimmste mühsame Aufgabe. Es gibt bessere Möglichkeiten, dies zu tun. Aber das haben wir gerade gewählt. Reparieren wir alles, alles ist repariert und Südwasser. Fein. Kompilieren und speichern, und lassen Sie uns erneut testen. Ich finde, das ist eine nette Menge. Auch wenn sie vielleicht ein bisschen 425 sind. Wenn du willst, kannst du es auf 425 ändern, es passt vielleicht ein bisschen besser, aber ich glaube nicht, dass es sichtbar sein wird. Also, ich denke, das ist es für diesen. Ich sehe dich als Nächstes. Auf Wiedersehen. 50. Fackel-Flicker-Effekt: Hallo und willkommen zurück zum Game Design-Workshop und den Entwicklungs-Cs der Engine Five Procedural Dungeon Action APs. Zuvor haben wir unsere Fackeln zu unserem Labyrinth hinzugefügt. Wir haben den Code in Maze Lights erstellt, um unsere Lichter zu spawnen. Wir haben das Wall-Array verwendet , um das Komponenten-Tag zu ermitteln, ob es sich um Nord-Süd- oder Wir haben auch geprüft, ob es sich bei der Wand um eine Tür handelt, denn wenn es keine Tür ist, zeigen wir ein anderes Licht. Und wir verwenden einige voreingestellte Lichtrotationen und auf der Grundlage eines Banns für ein Bleant, ein Bleion, haben wir unser Licht erzeugt Und dann haben wir die zu zerstörenden Schauspieler hinzugefügt. Wir arbeiten ein bisschen damit, wo es ist und wie es ist , tut mir leid, falscher Plan, die Dekoration, durch unseren Dekorationsplan, und wir verwenden die Szenepunkte, um diesen Ort festzulegen Lassen Sie uns jetzt ein bisschen mit dem Licht spielen. Oh. Lass uns tatsächlich zu unserer BP-Fackel gehen. Dave, weil es nicht gespeichert ist. Speichere eigentlich alles. Und lass uns zu unserem Point Light gehen. Nun habe ich einige Werte im Kopf, die wir getestet haben, und wie sie im Labyrinth aussehen Ich werde sie benutzen. Die Intensität würde 258o4 betragen. Also 25.804. Und der Dämpfungsradius wäre zwei oder 37437. Unsere Lichtfarbe wäre nun x linear F F 58 Jetzt können Sie wählen , welches Licht Sie möchten, aber für uns hat das funktioniert Und lassen wir die Quelle 30 benutzen. Und wir werden die Auswahl von Schattenwurf aufheben. Es ist also ein bisschen optimaler. Wenn Sie möchten, wenn Ihr Computer damit umgehen kann, können Sie dies eingeschaltet lassen. Wir werden die Lichter nicht so optimieren, unsichtbar sind, wenn wir zu weit weg sind. Wir überlassen das einfach dem Motor, was auch immer er braucht. Aber wir werden den zitternden Schöpfer spielen. Wir werden anfangen zu spielen und wir werden eine Zeitleiste hinzufügen Mit wem kann ich mit den Lichtern zusammen sein? Wer ist die Königin mit den Lichtern? War es Barbadi? War es Imbo? Wie dem auch sei, nur eine South Park-Referenz, egal. Oh, was ist ein Zeitplan? Kurz gesagt, wäre ein Tool, mit dem wir Variablen über einen bestimmten Zeitraum manipulieren können . Wie machen wir das? Nun, wir doppelklicken auf die Timeline und wir können sehen, dass sie einige Optionen hat. Was wir verwenden werden, ist die Spur eines Floats. Die Trucks mit Vektoren und Event-Tracks und Farbspuren. Aber was wir brauchen, ist ein Festwagen. Jetzt, in diesem Truck, werden wir umschalten und klicken und ein paar Punkte sammeln. Lastschrift. Ich denke, das sind genug Punkte. Also unser erster und letzter Punkt also Zeit Null, sollten Wert Null sein. Und wir werden die aktuelle Zeitlänge verwenden, die fünf ist, und sie dort belassen, also bei Zeit fünf, der Wert wird wieder Null sein. Hier gibt es noch andere Optionen, aber die Option, die wir benötigen, ist die Looping-Option Das heißt, wenn unsere Timeline abgespielt wird, wird sie immer und immer wieder abgespielt, was auch immer Nein. Was ist dieser Flow Track , den wir in diesen Punkten erstellt haben Diese Punkte sind also im Grunde unser Alpha-Laufwerk, was bedeutet, dass sie uns einen Wert von 0-1 geben Wir sollten nicht über eins und zwei minus eins gehen. Aber es sollte nicht dieser Punkt sein. Lassen Sie uns diesen Punkt ändern. Lasst uns zwei Tiefpunkte haben. Und dann machen wir die Lichter, andere Stellen, machen es wie sie, als wäre es weitläufig, auch wenn es nicht so ist, ich weiß nicht, ob das gut aussieht Wir brauchen nicht wirklich eins und minus eins, und wir können es überall haben, wo wir wollen, aber wenn wir harte, große Werte angeben, wird das Licht exponentiell zu stark ansteigen usw. Nein, vielleicht ist das in Ordnung. Vielleicht ist es das nicht. Wir werden sie alle auswählen und mit rechten Maustaste klicken und die automatische Funktion verwenden, wodurch sie ein wenig gekrümmt werden. Es wird also nicht sofort geschehen. Wir werden es so lassen, wie es ist, und wir werden es überprüfen, wenn wir unsere Codierung hier abgeschlossen haben unsere Codierung hier abgeschlossen Also werden wir das Punktlicht nehmen und wir werden Licht einschalten. Wir werden auch die Intensität festlegen. Und wir werden auch die Dämpfung der eingestellten Dämpfung einstellen Das sind die Variablen , die wir auf der Zeitleiste ändern werden , was ziemlich aufwändig ist Aber für uns wird es in Ordnung sein. Wir haben nicht so viele Dinge in unserem Kerker. Oh, das ist die Rückkehr unseres neuen Tracks. Wir haben es nicht geschafft, wir haben es geschafft. Den Namen und den Namen Alpha. Das ist unser leichtes Alpha. Wir lassen lineare Farben, wir lassen und noch eine andere schweben. Was ist ein B? A oder B geht von Wert A zu B, basierend auf einem Alphawert. Alpha-Laufwerk, das wir erstellt haben. Verbunden. Hier hier. Und jetzt klicken wir auf eine Farbe, die wir tatsächlich auf das Punktlicht kopieren können. Ich gehe einfach in die Nähe des Punktlichts und kopiere es hierher und füge es ein. Nun, für den zweiten, klicken wir darauf und tippen das F F O mit mehr Orange ein. Wir werden sie vielleicht später ändern, wenn sie nicht gut aussehen. Wir werden sehen. Und was die Intensität angeht, überschreiben wir diese 25.000 Um ehrlich zu sein, schien es viel zu sein. Es wird also von 5.000 steigen. Ich habe es auch auf 5000-6.000 gestellt. Und vom Set im Umkreis von 600-800. Diese überschreiben tatsächlich unsere Einstellungen hier. Das müssen also die richtigen Werte sein. Ich werde 600 hier hinstellen. Lassen Sie uns kompilieren und speichern. Lass uns spielen, wie sie aussehen. Zu viel Veränderung. Eine zu große Veränderung. Gehen wir also zurück zu unseren Lichtern. Diese Farbe ist zu weit weg. Wählen wir einen in der Nähe. Vielleicht hat das Orange Cancel hier seinen Sitz. Mal sehen, nein. Es wird ein bisschen zu gelb, zu sehr. Es ist auch ein bisschen zu schnell. Aber es ist in Ordnung. Ich denke, es ist in Ordnung. Wenn du willst, kannst du dich an den Werten orientieren und es besser aussehen lassen. Weitere Dinge, die wir in diesem Stil in diesem Blueprint tun können , wären, zum statischen Netz zu wechseln und die Option „Überlappungsereignisse generieren“ zu deaktivieren , da wir sie nicht benötigen Schalten Sie die Kollision komplett aus. Wir wollen es nicht. Und von den Lichtern, ich glaube das war's mit dieser Art von Licht denn jetzt werden wir noch ein paar andere Lichter hinzufügen. Lass es mich dir zeigen. Wir haben diese wunderbaren Lichter hier, aber wir müssen im Labyrinth auf den Korridoren laichen Lassen Sie uns also zunächst einen Plan erstellen, um dieses statische Durcheinander hinzuzufügen . Wir werden zum Inhalt übergehen Wir gehen zu den Bauplänen, wir gehen zu den Requisiten und wir klicken mit der rechten Maustaste und erstellen einen neuen Schauspieler vom Typ Blueprint-Klasse und nennen ihn BP, Ich öffne das und füge ein statisches Netz hinzu, das als Flurlicht dienen wird Lass uns Mesh finden. Wir waren gerade dort. Ich werde das benutzen und wir haben unser Licht. Um es hübscher zu machen, fügen wir ein paar Dinge Fügen wir noch etwas statische Asche hinzu, die keine Laterne sein wird. Nennen wir das Schild. Und lassen Sie uns noch mehr hinzufügen. Sh. Nennen wir diese Art ein anderes statisches Netz. Nennen wir das oder Unparent , weil es übergeordnet ist Nennen wir das Landposten. Ich glaube, wir nennen es Schild. Ich werde es herbringen. Ich werde es wählen und dann werde ich es hierher bringen und ich werde es ändern. 2.5 weil es zu groß ist, vielleicht ein bisschen größer. 7,7 ist fünf. Ordnung. Ich werde es ein bisschen aufhängen. Jetzt bringen wir die Schwerter. Wir werden die statische Methode wählen. Ford Sword, nimm es raus. Es muss hier sein. Hier ist es die Waffe. Ich werde es hier hinzufügen. Wir werden es auch auf 2.7 setzen. Gale dreht es ein bisschen. Ich bring es her. Gib es auf. Ich bin hier, ich hole das zweite Schwert. Ich bin traurig. Ich habe die Netzwaffe nicht eingesetzt. Nochmals 0,7. Ich werde es ein bisschen drehen. Ich will es nicht im Boden haben. Sagen wir es so. Um es hier hinzuzufügen. Und in der VM-Grafik zu Beginn des Spiels werde ich auf jeden von ihnen verweisen. Und ich werde sehen. Spiel oder jedes von ihnen separat. Ich werde sie verbinden. Jeder von ihnen zu einem versteckten Spiel, und ich werde ein Spiel machen. Nun, was ist eine Sequenz? Eine Sequenz ist eine Möglichkeit, unsere Aktionen ein wenig zu organisieren. Aber wir müssen darauf achten, dass selbst wenn dort Null steht, dann eins, dann zwei, das nicht heißt , dass sie ausgeführt werden Es wird sie der Reihe nach ausführen, aber es wird nicht warten, bis eine Ausführung abgeschlossen In dem Moment, in dem es die erste ausführt, wird es die zweite ausführen, und dann werden wir die dritte ausführen. Es wird nicht warten, bis die Ausführung abgeschlossen ist. Ich wiederhole, denn wenn ich hier ein bisschen Mathematik habe, zum Beispiel, dass, sagen wir, Zeile drei sie benötigt, dann ist die Rechnung wahrscheinlich nicht abgeschlossen, wenn Zeile drei läuft Im neuen Modus „Verborgen“ wähle ich „Zufall b“. Somit ist für jedes Licht eine zufällige Kombination dieser Requisiten Ich denke, das ist es für diesen. Beim nächsten werden wir sie der Karte hinzufügen. Tschüss fürs Erste, sie kümmern sich darum. 51. Korridor-Lichtsystem: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur aus Engine Five Erstellung eines echten prozeduralen Dungeon-Action-Rollenspiels In der vorherigen Lektion haben wir unseren Ridor-Lichtplan hinzugefügt. Wir haben ihn geschaffen Wir haben das statische Netz aus Licht, Schild, Schwert und so weiter hinzugefügt . Und zu Beginn das Spiel. Wir haben auch Code erstellt , um einige der Requisiten sichtbar zu machen, andere unsichtbar. Es wird zufällig sein Wir haben auch eine Funktion mit einer Zeitleiste hinzugefügt, tut mir leid, in der BP-Taschenlampe, im Startspiel, einen kleinen Code mit dem wir im Licht unserer Fackeln spielen Es sieht also aus wie die Knebel oder so. wir nun damit fort, dem Labyrinth unsere Korridorbeleuchtung hinzuzufügen Labyrinth unsere Korridorbeleuchtung hinzuzufügen Oh. Was wir tun werden, ist, zuerst die einfachen Regeln aus dem Weg zu räumen, und dann werden wir etwas komplexeres tun. Oh, wir werden die Korridore brauchen , eine Reihe von Strukturen Es sind also ST-Korridore. Okay, von da an gehen wir für jede Schleife. Und das Erste, was wir brauchen, ist die Struktur zu durchbrechen. Wir haben also unsere Koordinaten. Anhand unserer Koordinaten müssen wir wissen, ob diese Länge größer als eins ist. Denn wenn es sich um eine einzelne Kachel handelt, sollten wir kein Licht hinzufügen. Es wird nicht gut aussehen. Da wir nicht wissen, wie viele Kacheln es gibt, können wir eine Viererschleife erstellen, nicht eine für jede Schleife, sondern eine Viererschleife mit dem letzten Index als letztem Index der vier Schleifen. So viele sie auch haben, es ist das letzte Mal, dass Sie diese vier Schleifen ausführen. Aber das wäre unser erster Teil. Wir erhalten die Korridorräume, die Koordinaten jedes Korridors, wie viele es sind, und wir prüfen ob es mehr als einer ist, und wenn es mehr als einer sind, sind wir dafür, von Null bis zum letzten zu schleifen Als Nächstes sollten wir überprüfen, ob es sich um einen speziellen Raum Also werden wir fragen, ob sich unsere aktuellen Positionskoordinaten in unseren Spezialräumen befinden. Um das zu tun, werden wir die gewünschten Koordinaten kopieren. Und wir werden das tun , indem wir diesen Index verwenden , der von Null bis zum letzten Index dieses Arrays reicht. Aber das entspricht korrekt. Geht nicht, wenn es ein Array-Objekt enthält, das ist der spezielle Raum. Besondere Kacheln. Das wäre das Aufzugsplättchen, das wäre das Kastenplättchen, das Truhenplättchen und das wäre. Das sind die Steckplätze. Im Grunde wollen wir kein Licht spawnen Nein. Jetzt ist es Zeit für eine etwas kompliziertere Regel. Lass mich Paint öffnen. Was wir haben werden, sagen wir, in unserem Netz ein Labyrinth Mal sehen, ob wir hier drüben ein Licht spawnen. Wir werden eine Kiste darum herum bauen. Fragen Sie, gibt es Licht in dieser Kiste? Bevor wir es spawnen, werden wir uns fragen, ob in dieser Kiste Licht ist Denn wenn in dieser Kiste ein Licht ist und wir hier sind, sollten wir nicht irgendwo spawnen. Das wird uns helfen, ein bisschen besser abzugrenzen , wie unsere Lichter in unserem Labyrinth erscheinen werden Also, lass uns das machen. Lass uns sehen, wie wir das machen werden. Wir werden für unser Beispiel etwas verwenden , das Multi Baseline, Multibox genannt , das Multi Baseline, Multibox genannt wird. Lassen Sie uns wegen des ersten Unterschieds anrufen. Nicht die Multi-Eins, sondern die Box Eins zwischen der Spur und der Box. Die Box ist wie die Kollisionsbox. Spuren können in Kugeln, Boxen oder Linien aufgetragen werden. Und sogar wir können mit ein wenig Aufwand einige benutzerdefinierte Formen erstellen . Aber vorerst werden wir eine Box verwenden. Und was ist das Mehrteilige? Es bedeutet, dass es viele Dinge essen und sie in einer Liste festhalten kann viele Dinge essen und sie in einer Liste festhalten Aus diesem Grund ist unsere Ausgangsheizung vom Typ Array. Es ist ein Array-Container. Nein, wo fangen wir an? Im Grunde nehmen wir nur den Schauspieler von hier, also suchen wir ihn im Kerker Gin-Map, also bekommen wir die aktuelle Kachel, die wir gerade testen. Ich werde den Standort des Schauspielers herausfinden. Diese Art von Kriegsschauplatz vom Typ Dan. Der Grund dafür ist, dass, wenn wir den Standort des Schauspielers ermitteln, es immer in der Welt ist, weil der Schauspieler ein Teil der Welt ist, wo wir, wenn wir von einer Komponente ausgehen, Kriegsschauplatz wollen, oder relativ zum Standort des Schauspielers wollen, weil eine Komponente dem Schauspieler gehört, dass der Schauspieler zur Welt gehört. So legen wir hier den Anfang fest, und das wird auch das Ende sein weil wir es nicht verschieben werden. Es geht nur um ein Häkchen, schau mal, was um ihn herum ist. 00 die halbe Größe, wir werden die Werte 800, 801 verwenden. Deine Orientierung ist in Ordnung. Sichtbarkeit, wir werden die Kamera überprüfen und das war's für unseren Multibox-Trace. von unseren Wärmeergebnissen gehen wir nun zu jedem von ihnen. Aber bevor wir weitermachen, müssen wir eine lokale Variante schaffen, die quasi ein Verbot sein wird. Nennen wir es. Ich nehme Typ B. Bringen wir es her und drehen es um , bevor wir mit Loop anfangen. Nun, was wir tun werden, ist unser Wärmeergebnis zu zerstören, jedes unserer Wärmeergebnisse, weil dieses Sal-Array, wir brechen jedes von ihnen. Was wir tun werden, ist zum Wärmebildgerät zu gehen und nach dem Kurs zu fragen. Wir werden Unterricht nehmen. Und wir werden prüfen, ob seine Klasse unseren Flurlichtern entspricht. Branch, korrigiere das. Ich werde das hier hinstellen. Bring das klein rauf. Ich kann das schließen, damit es ein bisschen besser aussieht. Und jetzt, wenn es ein Korridor ist, dann werden wir die Lichtnote drehen, die gefunden wurde : Das könnte tatsächlich mit Pause gehen, jeder mit Pause, weil es eine Aktion ist , dass, wenn wir das Ding gefunden haben, das wir suchen, es kaputt gehen sollte. Nein, ich werde das mit der Pause verbinden. Aus dem falschen Grund müssen wir nichts tun. Und wenn es fertig ist, fahren wir zum Bus. Eigentlich brauchen wir hier eine Filiale. Sonst macht das nichts, wenn wir keinen Zweig benutzen. Wir werden das Licht bringen, aber gefunden. Wenn das wahr ist, werden wir das tatsächlich zuerst überprüfen, lassen Sie uns das Licht auswählen. M-Licht, Pad-Licht. Und dann werden wir Licht hinzufügen , das funktioniert nicht so, aber wir müssen Schauspieler dazu bringen, es zu zerstören und hinzuzufügen. Nichts, was wir spawnen, sollte auf der Karte bleiben. Für die Transformation teilen wir das auf und verbinden den Standort unseres Schauspielers Jetzt haben wir die Lichter hinzugefügt. Lass uns sie in unserem Spiel sehen. Sie existieren nicht oder etwas lief nicht gut. Lass es uns überprüfen. Lass uns zu unserer Veranstaltung gehen. Die Korridore. Sie sind größer als eins, ja, oder Loop plus Index davon, und wenn es zu speziellen Kacheln gehört, wenn es nicht zu speziellen Kacheln gehört, immer die kleinen Dinge Jetzt habe ich winzige Lichter gesehen. Und lassen Sie uns das reparieren. Drücken wir Stopp. Gehen wir zu unseren Flurlichtern und erhöhen wir die Höhe auf zwei. Ich werde den Schild wieder bewegen. Mein war vielleicht der Richtige oder auch der Typ. Ich werde das hier hinstellen. Die andere Sorte. Leg das hier hin, spare es dir. Wir werden kompilieren und speichern. Wir werden spielen. Das Licht sieht aus. Sieht gut aus. Wir müssen ein paar Schwerter bewegen, aber das ist in Ordnung Dieser hat zwei Schwerter. Dieser hat sozusagen einen Schild. Löcher. Warum gibt es jeweils zwei Löcher. Halte zwei. B, es ist zufällig und es kann passieren Vielleicht können wir der zweiten Sorte einen Zweig zuordnen. Verbinde diese zufällige Kugel hier, damit wir die zweite Sorte etwas seltener machen. Kompilieren und speichern, die Sohlen auch ein bisschen senken. Es ist zu hoch. In Ordnung. , ich finde das in Ordnung, weil ich das ein bisschen rund gesehen habe. Ich werde es ein bisschen erhöhen. Neige es ein bisschen mehr. Wir wollen niedriger. Ich denke, niedriger ist vielleicht in Ordnung, vielleicht auch nicht. Ich verstehe nicht, wir wissen es nicht. Die Lichter. Es sieht also gut aus. Ich meine, wir werden Pi mit Aussicht haben, also fast in Ordnung. Ja, ich denke, sie sind okay. Aber das Einzige, was fehlt, ist das Licht. Also lass uns das Licht hinzufügen. Gehen wir zum Bauplan. Gehen wir zum Laternenpfahl , weil sie Kinder des Laternenpfahls sein werden, und ich werde auf Hinzufügen drücken Wir wählen Punktlicht. Das ist ein riesiges Punktlicht Bringen wir es hier auf die Lampe, ändern wir die Einstellungen auf Lumen und verwenden dann GS 500 Und die Farbe sollte für die 97 A sein. Sieht gut aus. Jetzt sollte das Dämpfungsradio sein. 800 und der Quellenradius 50 und der weiche Radius 50 Und wir lassen den Schattenwurf auf uns wirken, weil ich denke, dass das in Ordnung ist. Jetzt werde ich dieses Licht duplizieren und es hierher verschieben, wenn beide Lichter eingeschaltet sind. Ich werde kompilieren und speichern und dann sehen wir es uns an. Ich. Wir haben Licht in unserem Labyrinth, wird immer lebendiger, sieht eher aus wie ein Spiellevel Richtig. Ich denke, das ist es für diesen. Ich sehe dich beim nächsten Mal. Tschüss. 52. Fallenmechanik und Schadensystem: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Tangent Action RBC Creation Course Zuvor haben wir Armas ein paar Lichter hinzugefügt. Eigentlich haben wir alle Lichter hinzugefügt, Mae. Ähm, sie sind ein bisschen kastenförmig, weil sie Schatten werfen. Aber ich lasse es lieber so, anstatt keine Schatten zu werfen oder sie ein paar Flüge zu platzieren Wir könnten dem entgegenwirken, indem jeder Seite ein Punktlicht platzieren oder auf andere Weise. Aber vorerst lassen wir es so, weil wir noch ein paar Dinge hinzufügen werden. Wir werden etwas Nebel hinzufügen. Wir werden Nachbearbeitungseffekte hinzufügen. Nach all dem können wir überprüfen, wie wir die Lichter reparieren können. Jetzt gehen wir zu unserem Labyrinth-Generator und es ist an unserem Labyrinth-Generator und es ist Zeit, etwas Requisitenhaut mitzubringen. Also werden wir eine Funktion erstellen. Nennen wir diesen Requisitenbesitzer. Gehen wir zum Hauptdiagramm und rufen es auf. Ich erinnere mich, als ich sagte, als wir den Aufzug bauen, werden wir ihn nicht dorthin verschieben Gehen wir zu unserem Aufzug, um hier zu sein. Lass uns das von hier aus streichen. Gehen wir zu unserem Posponer und fügen es ein. Das Gleiche müssen wir auch für unsere Brust tun. Komm her. Ich hole mir diese Knoten, wir schneiden sie aus, kontrollieren C und fügen sie mit Kontrolle V ein. Jetzt. Lasst uns eine Requisite erstellen , die wir auf den meisten Kacheln des Dungeons spawnen werden meisten Kacheln des Dungeons spawnen Wir werden in Korridoren spawnen und es wird Wenn der Spieler darauf tritt, werden wir Schaden nehmen Wir werden zu unseren Inhalten gehen. Wir gehen zu unserem Blueprints-Ordner und unserem Prop-Ordner, klicken mit der rechten Maustaste und erstellen einen neuen Ordner, der BP p heißen wird . Jetzt öffnen wir ihn. Dafür hier drüben. Und bevor wir mit unserer Falle weitermachen. Dies ist das erste Mal, dass wir unseren Charakter ein bisschen berühren müssen . Also gehen wir zum Inhalt über. Wir gehen zu unserem Top-Down, wir gehen zu den Bauplänen und öffnen unseren PP-Charakter von oben nach unten Und wir müssen nur eine sehr einfache Sache tun. Das Gleiche, was wir mit den Ziehern an den Wänden gemacht haben, müssen wir für die Kapselkomponente des Players tun Also wählen wir die Kapselkomponente aus, gehen zu ihren Details und gehen zu den Ziehereien über. Und füge das Tag oder den Spieler hinzu. Und warum machen wir das? Der Grund dafür ist, dass wir zum Beispiel, sagen wir, für unseren Spieler einen Ich-Me-Angriff haben werden , ich, ich. Ich denke, es ist eine korrekte Aussprache. Also werden wir einen Ich-Angriff durchführen. Und dieser Ich-Angriff würde zu einer Kollision führen. Aber wir wollen überprüfen, was auch immer in unserem Ich-Angriff steckt. Wir werden es nicht tun, es wird ein magischer Ich-Angriff sein. Es wird kein Schwert sein, das wir in Schwung bringen könnten. Aber selbst wenn es ein Schwert wäre und wir es in Schwung bringen könnten. Was wäre, wenn das Schwert den Boden berührte? Würde es eine Falle auslösen? Nein, wir wollen nicht, dass das passiert. Wir wollen also fragen können, ob die tatsächliche Kapsel des Spielers diese Kollision berührt hat ? Also machen wir es durch den Schlepper? Wir könnten das Casting für den Spieler überprüfen und die Kapsel holen und dann die andere Komponente mit Casting für den Spieler überprüfen und die Kapsel holen der Kapsel vergleichen Lassen Sie uns das demonstrieren. Lass uns in unsere Falle gehen. Was ist der Bauplan? Hier ist er Es sollte am Ende genau hier sein. Nein. Für jede Falle brauchen wir eine Kollision. Und ich werde eine Boxkollision verwenden. Denn lassen wir es so. Das Bild wird sich je nach unseren Messungen ändern Gehen wir zur Box-Kollision und wählen die Startüberlappung aus. Nein. Wir werden nicht alles durchgehen, aber wir werden die beiden Pins durchgehen, die wir verwenden werden, den anderen Akteur und die andere Komponente. Der andere Schauspieler bezieht sich auf den Schauspieler, der sich mit der Box zu überschneiden begann. Und das bedeutet, wie ich schon erklärt habe, dass das auch den Angriff mit einschließen würde , wenn er in unserem Player enthalten wäre. Wenn ich spawnen würde, lass es uns hier platzieren, siehe Kollision. Nehmen wir an, ich habe es hier, um nach vielen Angriffen zu suchen. Nun, wenn das aus irgendeinem Grund, zum Beispiel hier drüben, und es Trigger wäre, würde es die Falle auslösen, wenn ich den anderen Schauspieler fragen würde, ob der andere Schauspieler der Top-Down-Charakter mit einer Besetzung ist , zum Beispiel. Aber was wir gemacht haben, indem wir dieses Tag hier drüben hinzugefügt haben, das P ist das von diesem Knoten, andere Komponente, was bedeutet, welche Komponente des Schauspielers, die sich mit mir überschneidet, überlappt Wenn es die Kugel ist, hätte sie dieses Tag P. Wenn es die Kollisionskapsel wäre, tut mir leid, nicht die Kugel, wäre das Tag P. Sie hätte das Tag P. Sie hätte das Tag P. Wir können als ug fragen Wenn sie die Markierung P hat, können wir tun, was wir wollen. Nun, was wir für den Charakter wollen, ist der Knotenpunkt für den anderen Schauspieler. Aber in unserem Fall wollen wir ein bisschen erklären, wie unsere Falle funktionieren wird. Lass mich Schmerz bringen. Es ist Zeit für die tollen Zeichnungen. Wir sollten hier Titelmusik reinstellen oder so. Wie dem auch sei, wir haben unsere Boxtrap-Schicksale irgendwo hier auf dem Korridor, und wir haben unseren Spieler , der sich bewegt Wenn er auf die Falle tritt, wollen wir sie aktivieren Also die Schritte auf die Falle. Nennen wir dieses Duplikat zuerst so. Hass. Richtig? Oh, wenn der Spieler drauf tritt, nennen wir das Phase eins. Dann ist das aktiviert. Jetzt, in Phase zwei , werden wir den Schaden anrichten, der aktiviert wird , aber angreifen oder vielleicht sollte dieser größer sein und dann aktiviert werden. Spielt keine Rolle. Das heißt übrigens Angriff. Ich erkenne das Wort nicht, wenn ich es mir ansehe, aber es heißt Angriff. Also sollten wir fragen, ob der Spieler immer noch in der Falle ist oder ob er nicht in der Falle ist. Wenn er immer noch kollidiert. Wenn er also kollidiert, fügen wir dem Spieler Schaden zu Wenn er nicht kollidiert, fügen wir dem Spieler keinen Schaden zu Wenn ich das tun würde, gehen wir zurück zu unserem Ereignis, zu unserem Kollisionsüberschneidungsereignis Wenn ich beim Angriff aussteigen würde, wenn ich den anderen Schauspieler verbinde, habe ich einen direkten Bezug zu dem anderen Akteur. Das würde also bedeuten, was auch immer der andere Akteur ist, ein Angriff. Also brauche ich einen Scheck. Ist der Schauspieler wirklich hinter mir her oder nicht? Es gibt viele Möglichkeiten , das zu tun. Wir könnten sogar sagen, dass es sich um Überschneidungen handelt, und einen Verweis darauf beibehalten und, wenn wir die Überschneidung beenden, diesen Verweis löschen und weitermachen Aber ich würde gerne einen anderen Knoten demonstrieren. Wenn ich die Kiste kriege, frag den überlappenden Schauspieler. Ich könnte die Klasse so filtern , dass sie mein Top-Down ist. Schauspieler, ich könnte eine direkte Referenz bekommen, das erste Exemplar bekommen und fragen, sagen wir, zum Beispiel, Schaden anrichten. Ich würde diesem Schauspieler Schaden zufügen. Aber wir werden den Charakter von oben nach unten auch für die KI verwenden . In diesem Fall werden wir tatsächlich ein Copy-Pasting-Verfahren verwenden Wir werden kein Kind benutzen, aber wenn es ein Kind wäre, bestünde die Möglichkeit, dass sich das wieder auf den Schauspieler auswirken würde Wir müssten also eigentlich eine Schleife machen. Wenn es zum Beispiel ein Multiplayer-Spiel wäre und wir wollten, dass der Truck nur dem ursprünglichen Spieler Schaden zufügt. Wir müssten vorab schauen und prüfen, ob das unser Spielerdarsteller ist. Oh, wir werden ein Gleichheitszeichen bekommen. Wir müssen zuerst casten, weil das eine Actor-Objektreferenz zurückgibt. Selbst wenn wir unserem Charakter von oben nach unten filtern, wird immer noch ein A zurückgegeben, ein allgemeiner Akteur. Oh, wir müssten den Spieler nach unten oder nach unten werfen . Und dann können wir das, wenn das zum Beispiel unserem Spieler entspricht. Und dann müssen wir auch von hier aus casten. Das könnte eine reine Besetzung sein. Beide können tatsächlich eine reine Besetzung sein. Es gibt keinen Grund für sie, nicht in der Filiale zu sein. Wir könnten auch ziehen oder etwas anderes, wir könnten hier zum Beispiel eine Variable haben, ein Mobbing, das wir bekommen und überprüfen könnten , ob das Mobbing Wir könnten zum Teich selbst ziehen. Es gibt viele Möglichkeiten, das zu tun. Das ist eine davon, auch weil es zwei Fälle gibt, aber es ist machbar und wird unser Gameplay nicht wirklich beeinflussen , weil es nicht so kompliziert ist. Was wir nun tun müssen, oder um das zu vervollständigen, ist, dieses Array-Element tatsächlich zu verbinden oder es aus der Besetzung zu holen. Es ist nicht wirklich wichtig, Schaden anzurichten. Und was angerichteter Schaden ist, ist im Grunde nur eine Botschaft, die real an jedes Objekt sendet. Es ist ein System, das uns Epics zur Verfügung gestellt hat. Jetzt sollte der Grundschaden bei eins liegen. Und ich denke, wir haben in dieser Lektion viel erklärt, und wir sollten das alles verbinden und in der nächsten Lektion alles fallen lassen. Auf Wiedersehen für heute. Bis zum nächsten. 53. Fallenanimation und SFX: Hallo und willkommen zum Game Design Workshop und dem Kurs zur prozeduraler Dungeon-Action-RPGs mit Real Engine Five Dungeon-Action-RPGs Zuvor haben wir mit der Erstellung unserer Falle begonnen . Gehen wir in eine Falle. Und wir haben eine Box-Kollision hinzugefügt, und wir haben auch hinzugefügt, dass wir von der Box-Kollision aus aufgerufen haben , die Überlappung beginnen. Wir spenden die Überlappung. Und wir haben gefragt, ob es sich bei der Komponente, die die Falle berührt , um das Tag P handelt. Nun haben wir ein paar Dinge über Überschneidungen gesagt und wie wir einen Bezug zu dem Charakter und den sich überschneidenden Akteuren herstellen können den sich überschneidenden Das war der wichtige Knotenpunkt, an dem wir jederzeit die sich überschneidenden Akteure ermitteln Und dann haben wir einen schweren Test gemacht , um zu überprüfen, ob es unser Charakter ist Und wenn es unser Charakter ist, haben wir mit einem vorher festgelegten Knoten Schaden angerichtet , sodass Anil Mechanik anwenden muss , die Schaden anrichten kann Natürlich können wir unsere eigene Mechanik entwickeln, aber warum sollten wir uns nicht darum kümmern Nutzen Sie das aus. Ich kümmere mich vielleicht nicht darum. Nutze den Vorteil. Oh, wenn unsere Falle aktiviert ist, schauen wir uns dieses Mal den Auslöser an. Wir würden es nicht erneut aktivieren wollen , um dem Spieler sofort immer wieder Schaden zuzufügen. Lassen Sie uns also eine variable Zahl erstellen. Nennen wir das ausgelöst. Bringen wir es her. Ich könnte danach einen Zweig bk verwenden, wenn p ausgelöst wird, aber machen wir es ein bisschen einfacher und setzen hier ein Ende Bion Wenn es ausgelöst wird, wenn es dort die Komponente P hat. Wenn die Komponente, die uns berührt, den Zug P hat und dieser nicht ausgelöst wird, dann brauchen wir einen hier. Nein, tu etwas anderes, tu nichts. Nein. Das Erste, was wir tun sollten ist zu sagen, dass die Falle ausgelöst wurde. Aber jetzt können wir einen Countdown starten angeben, wann sie angreifen wird , wann die Falle den Auslöser auslöst und im Grunde angreift. Es wird eine Stachelfalle sein, also wird sie einen Stachel nach oben drücken. Lass uns einen Warnton einschalten. Wir machen ein Geräusch, damit der Spieler weiß, dass die Falle ausgelöst wurde. Nun, das Geräusch wäre, lass uns Pfund abnehmen. Hier ist es. Ich habe das nicht überprüft . Wie laut es ist, warnen Kopfhörer-Nutzer. Das klingt nach dem größeren Teil, auf einem P hier. Das ist ein Sound, der nicht wirklich ein Sound ist , sondern im Grunde eine Klasse , die es dir ermöglicht, einige Manipulationen am Sound Jetzt, nachdem der Sound abgespielt wurde, unmittelbar nach dem Moment, in dem der Sound abgespielt wird, warten Sie nicht mehr, bis der Sound zu Ende Wir werden eine Verzögerung vornehmen. Bis wir unseren T-Rap auslösen. Setzen wir den Nullpunkt Y. Seien wir großzügig zu unserem Spieler. Und danach müssen wir ein benutzerdefiniertes Ereignis erstellen. Nennen wir das ausgelöst, ausgelöst vom Bleion, oder Angriff A ist in Ordnung. Danach werden wir angreifen. B Wenn das keine Pont-Falle wäre und wir rauskommen, könnte es sich zum Beispiel um eine Pfeilfalle handeln, Attacke ist in Ordnung. Sie greifen beide an. Wir werden uns jetzt nicht angegriffen fühlen. Wir werden mit dieser Logik weitermachen, um es zu Ende zu bringen. Lassen Sie uns das noch weiter sagen. Und lassen Sie uns nach dem Angriff den Angriffston oder vor dem Angriff abspielen , das ist logischer oder gleichzeitig. Wir könnten also eine Sequenz erstellen und sagen, zuerst den Sound abspielen und dann angreifen. Und nach dem Angriff werden wir unseren Plop hier verbinden, um den überlappenden Akteur zu finden und den Schaden anzurichten Und weißt du was, lass uns auch unsere Falle zurücksetzen und ein weiteres benutzerdefiniertes Event erstellen Nennen wir das Revert. Also, nachdem wir dem Spieler Schaden zugefügt haben, oder wenn kein Spieler niemandem Schaden zufügt, werden wir es hinauszögern Sagen wir 5 Sekunden. Und nach 5 Sekunden werden wir die Falle wieder aufrüsten. Also rufe ich umgedreht an. Warum ich Revert nenne. Weil wir für den Angriff eine Timeline verwenden werden, um eine Animation abzuspielen Und auf der Grundlage dieser Zeitleiste werden wir sie rückgängig machen und die Falle zurücksetzen Aber bevor wir mit unserem Timeline-Code beginnen, brauchen wir etwas zum Animieren denn die Timeline wird verwendet, um die Falle zu animieren, und unser Animation wäre eine separate Sache. Also gehen wir zu unserem Viewport und wir gehen zu statischen Messungen Dupliziere das. Dieser ganze Körper. Nennen wir das. Stacheln Finden wir unsere s meshes, das sollten die Ordner meshes sein Ich frage mich wirklich, wie das heißen würde. Die Think Tube von Find Spike. Fallenkörper, hol das Fallrohr. Und für Stacheln gehst du zum Fallrohr 7. Richtig? Wie Sie sehen können, ist ihr Drehpunkt von Anfang an korrekt, so wie unsere Standardposition des Schauspielers genau hier oben in der Mitte der Stacheln ist genau hier oben in der Mitte der Stacheln Sie werden also ein wenig aus dem Boden herausspringen, weil wir sie auf dem Boden spawnen werden Das bedeutet, dass der Boden an diesem Ort hier sein wird. Und die Stacheln zeigen sich ein bisschen, was großartig ist Nun, was wir tun werden, wir werden unsere Spikes beim Start-Play-Event bekommen Wir werden eine Relativation durchführen, das heißt, die Position mit dem Koordinatensystem Kein Vergleich mit der Welt, verglichen mit diesem Bauplan Aber wenn wir sie relativ bewegen oder eine relative Position angeben, sprechen wir von dieser Entität hier drüben, von diesem Bauplan, von allen X, Y und Z dieses Bauplans und Entfernungen, die auf diesem Mittelpunkt dieses Bauplans basieren , diesem Akteur Gehen wir jetzt zurück. Lasst uns diese Variable bewerben. Es hat es perfekt nach uns benannt. Wir hätten die Spitzen angeben können, aber das ist in Ordnung. Lassen Sie uns nun eine Zeitleiste hinzufügen. Sie müssen es benennen, und wir stellen die Verbindung wieder her, um von Anfang an abzuspielen, und kehren zu Vers Ferment Bei der fertigen Version wechseln wir je nach der Richtung, in die sich die Timeline bewegt Wenn wir in den Südwesten einschalten und abschalten, ist dies wieder ein Wechsel, der auf der Aufzählung basiert Das ist eine Aufzählung mit zwei Werten, vorwärts und rückwärts, und wir verbinden hier nicht das Datum, sondern das Ende Und wenn es rückwärts ist und es fertig ist, werden wir auslösen Wir werden das ausgelöste ausschalten Das bedeutet also, dass unser Truck reaktiviert werden kann. Denken Sie daran, dass der Revert 5 Sekunden ausgeführt wird nachdem versucht wurde, das zu beschädigen, was auch immer darauf war Jetzt spielen wir die Timeline ab, wir geben die Zeitleiste ein, wir fügen einen Truck hinzu, wir werden einen Flow-Truck hinzufügen Und lassen Sie uns zwei Punkte anführen. Der erste wäre auf Null, der Wert Null, und der zweite wäre auf 0,2 und hätte den Wert eins. Wenn Sie auf diese beiden Zoomen klicken, fühlen Sie sich horizontal und vertikal an, um unsere Linie sichtbar zu machen. Und dieses Mal habe ich, wie Sie sehen können, einen Wert gewählt, der weit unter unserer Länge von fünf Sekunden liegt. Nun, ich könnte das 2.2 ändern, aber ich kann auch einfach den letzten Keyframe verwenden, was bedeutet, dass der letzte Punkt verwendet wird, den ich datiert habe Hätte ich mehr Trucks, würde das den letzten Punkt der längsten Zeit in Anspruch nehmen Gehen wir jetzt zurück zur NRA. Und hier müssen wir einen sehr einfachen Code hinzufügen, um unsere Spikes und diese relative Aation zu unsere Spikes und diese relative Wir werden einfach von Wert A nach B an einem neuen Ort lernen Wert A nach B an einem neuen Vektoren, und das A wäre unser relativer Standort, der ursprüngliche. Das B wäre, dass wir es tatsächlich hart codieren können. Wählen wir die Spitzen aus, und aus der Relativzahl ergibt das im Grunde Null, Null, Null Wir wollen wollen 20, 30, 30 wären acht 30 hier. Wir werden Alpha mit unserem neuen Truck verbinden. Das nächste, was wir tun sollten, ist, uns die Fallen zu eigen Ihnen geht es gut, sie arbeiten. Wir haben noch keinen Charakter, aber unsere Fallen könnten uns schaden Aber ich denke, das ist etwas , wofür wir das nächste Mal leben Du bist der Abschied. 54. Prop-Spawner-Funktion: Hallo und willkommen zum Game Design Workshop Real Engine Five Procedural Dungeon Action Zuvor waren wir mit unserer Komponente Begin over Lap Event fertig unserer Komponente Begin over Lap Event Wir haben überprüft, ob die Falle ausgelöst wird, und wenn es unser Charakter ist, haben wir gesagt, dass die Falle ausgelöst werden soll, wenn sie nicht ausgelöst wird, wir haben ein Geräusch abgespielt, wir haben gewartet, wir haben ein anderes Geräusch abgespielt und die Animation des Angriffs abgespielt. Und wir haben vorausgesehen, um zu überprüfen, ob der Spieler immer noch in der Falle steckt Wir haben eine Zeitleiste verwendet, um die Spikes der Komponenten zu animieren. Dabei handelt es sich um eine statische Mathematik, die wir hinzugefügt haben und die statische Berechnung der Basis der Falle Und wir verwenden die festgelegte relative Position, um die Spitzen durch den Alarm und unsere Zeitleiste zu bewegen Wir haben auch einen Schalter verwendet, der , wenn die Timeline rückwärts läuft, beim Revert-Event rückwärts läuft. Dadurch sollte die Falle so eingestellt werden, dass sie nicht ausgelöst wird Gehen wir jetzt zurück in unser Labyrinth und spucken unsere Falle aus. Das Wichtigste zuerst Wir werden unsere Dungeon-Koordinaten benötigen. Und wir werden tatsächlich auch die Schlüssel benötigen. Ich werde tatsächlich die Werte bekommen. Ich auch. Ich gehe zu den Schlüsseln und den Werten, und ich werde das auf zwei Variablen hochstufen, lokale Variablen. Ich werde das Dungeon nennen. Das hier, mach auch Dungeon-Wert daraus. Bevor wir weitermachen, lassen Sie uns ein wenig darüber sprechen , wie unser Wasserhahn funktionieren wird Unsere Fallenspon-Falle, wir brauchen nur den Fallensponer Der erste Schritt wäre, unsere Dungeon-Koordinaten durchzugehen Also werden wir durch unseren Kerker gehen. Diesmal blau. Ich weiß nicht warum. Also werden wir unsere Dungeon-Koordinaten durchgehen. Und wir werden einige Regeln erstellen, um zu überprüfen, ob es zu den gewünschten Kacheln gehört Im Grunde wollen wir überprüfen, ob es sich um einen Raum oder um einen speziellen Raum handelt. Dann mach keine Fortschritte. Spawnen Sie die Falle nicht. Hier. Spawnen Sie die Falle nicht Was werden wir dann tun? Lassen Sie uns das nochmal Phase eins nennen. Das ist echt toll beim Zeichnen. Wie dem auch sei, wir werden eine Funktion erstellen, die eine unserer Kacheln zu den Koordinaten bringt, wir haben die Koordinaten und wir wissen, wenn wir die Koordinaten haben, können wir unsere Kachel bekommen. Aber wir werden unsere Kachel bekommen. Und für diese Fliese werden wir die Position des Bodens ermitteln. Von diesem Standort aus werden wir, wir werden eine Box erstellen. Denn wenn unser Kachel das ist, dann gibt es eine Entfernung, in der wir eigentlich nicht wollen, dass ein Track erzeugt wird , denn sagen wir, wenn er hier spawnen würde, dann könnte der Truck so aussehen Und wir wollen nicht , dass das passiert. Dieser Umfang sollte das also berücksichtigen. Diese Box, mit der wir erstellen werden , werden wir sehen , wann wir sie erstellen. Das ist also einer der Gründe. Es gibt viele Gründe, aber das einzige Problem mit diesem System ist derzeit dass wir, wenn wir eine Falle spawnen und sie mit einer anderen Falle kollidiert, dies für gültig halten Nehmen wir an, es ist eine größere Falle. Das können wir. Es ist ein Feature. Es ist ein Feature. Es schafft größere Fallen. Also, ja, das einzige Problem dabei ist, dass das geschaffen werden kann Es gibt Möglichkeiten, dem entgegenzuwirken, Beispiel können wir überprüfen, ob ich, wenn die Falle erscheint, mit einer anderen Falle kollidiere Wenn ich mit einer anderen Falle kollidiere, zerstöre ich mich selbst. Und dann können wir zu diesem Fallen-Spawner gehen und sagen, minus eins zu den Fallen , die Das erfordert natürlich auch etwas, das ich nicht erklärt habe Wir werden ein System haben , das von Null auf MC-Fallen zurückgeht Null auf MC-Fallen zurückgeht Und in diesem Teil, den MC-Fallen , die wir erzeugen werden, werden wir Wir werden eine Variable namens Generator-Level verwenden, die angibt, wie viele Dungeons wir hintereinander gespawnt haben Wenn das zum Beispiel eine ist, könnten wir maximal zwei Fallen spawnen Wenn das zwei sind, könnten wir zwei plus eins spawnen, also maximal drei Fallen oder jetzt plus plus drei, also gleich Ja. Jedenfalls wird das im Grunde das sein, was wir tun werden. Wir dazu. Wir werden dieses System so einrichten, dass wir es mit verschiedenen Elementen verwenden können, nicht nur mit den Fallen Vielleicht wollen wir die Summe erhöhen, aber vielleicht wollen wir das erweitern, indem wir zum Beispiel ein paar Bolzenmünzen oder einen Beutel oder etwas anderes hinzufügen, das zufällig spawnen kann, und es könnte auch in einer Falle spawnen Also werden wir dieses System verwenden , wir werden diese Funktion verwenden, um ein System zu erstellen, Lage ist , alles zu spawnen, was wir wollen, basierend auf der Stufe unseres Generationsgenerators und einigen Regeln, die wir erstellen werden auf der Stufe unseres Generationsgenerators und einigen Regeln, die wir Lass es uns jetzt machen. Senken Sie das. Und der wichtigste Schritt ist, wie gesagt, dass wir einige Regeln für unsere Raps erstellen werden , speziell wenn wir wollen, dass sie sie spawnen, weil die Regeln, wann wir das Objekt spawnen, ein anderer Teil von der Funktion sind , aber erkläre einfach die Funktion, die wir an dieser Stelle spawnen werden Denn wenn wir zum Beispiel Münzen spawnen, brauchen wir vielleicht andere Regeln als die Orte, an denen wir die Fallen Der erste Teil ist also für das Wir, wenn wir das Wir haben, der zweite Teil ist, wie viele und vor Ort wir sie spawnen werden Also nochmal, wir werden für jede Schleife vier Schleifen benötigen . Wir werden unsere Kerkerschlüssel holen und fragen, ob diese Schlüssel enthalten sind Gehen Sie mit einem Array hier vor, um dieses zu duplizieren. Die erste wären die Raumkoordinaten. Koordinaten eines Raums. Wir wollen es in keinem Zimmer haben. Wir wollen es nur draußen haben, in Korridoren, auf Balkonen, in speziellen Bereichen und nicht in speziellen Es tut uns leid. Das zweite wären Spezialgebiete. Also wir wollen es nicht oder keines von wenn wir sie nicht in jedem von ihnen haben wollen, brauchen wir eine. Wir werden eine Filiale drücken, dieses Jahr eine Verbindung herstellen, dieses Jahr eine Verbindung herstellen, hier machen, und es ist schlampig, aber fertig Wir haben unsere Regel , dass keine speziellen Felder oder Raumkoordinaten erscheinen speziellen Felder oder Raumkoordinaten Nun brauchen wir, wie gesagt, unsere Kachel, und um unsere Kachel zu bekommen, entsprechen diese beiden Felder einander Wenn ich nur unsere Werte erhalte und p erhalte und den Index dieser vier Schleifen verwende Ich werde einen gültigen Index abrufen, den entsprechenden Index vom Endpunkt bis zum Akteur. Lassen Sie uns nun unsere Funktion erstellen und sie Telefon nennen. Zwei Requisiten. Du weißt schon, interaktive Requisiten, maßgeschneiderte Requisiten, so etwas Was wir für die Eingabe benötigen, ist Variable namens Max Max Es wird vom Typ Integer sein, und wir werden eine Zielvariable benötigen, nämlich die Kachel, die PPP-Kachel PPP-Kachel Das ist der Schauspieler, den wir benutzen werden, um diesen ganzen Schauspieler des T zu bekommen , weil wir das von außen bekommen Ich benutze den Pfeil. Sie können sehen, das ist ein nettes SO-Feature. Wenn ich von einer Funktion zu einer Funktion zu einer anderen Funktion gehe zu einer Funktion zu einer anderen Funktion und ich einfach zurückgehen möchte und mich nicht erinnern kann, wo ich bin. Ich kann diesen Pfeil hier verwenden, und er bringt mich zur vorherigen Auswahl, dem vorherigen Punkt, den ich habe. Oh, was ich sagen wollte, ist, dass Oh, was ich sagen wollte wir dieses Ziel, diesen Wert von hier aus bekommen werden. Und verbinde es hier. Nun zu guter Letzt, um alles spawnen zu können, benötigen wir einen neuen Input Und dieses Mal wird es vom Typ Schauspieler sein. Aber es wird keine Referenz sein, wird vom Typ Klassenreferenz sein, was bedeutet, dass ich sagen kann, welche Art von Klassenschauspieler ich haben möchte. Ich werde das demonstrieren. Wir werden das nutzen, um etwas zu spawnen. Wenn wir also aus dem Unterricht heraus spawnen, kann ich hier tatsächlich eine Klasse eingeben, aber wir werden das genau auf die Art von Klasse einstellen , die ich Bevor wir dem Schauspieler antworten, brauchen wir natürlich noch ein paar zusätzliche Dinge Wir werden hier eine lokale Variable erstellen. Ich werde das Counter und Integer nennen. Der Grund dafür ist, dass wir mit diesen Mx-Requisiten den Zähler und die Max-Requisiten verwenden können, um eine benutzerdefinierte Schleife zu erstellen Wenn der Zähler also unseren X-Requisiten entspricht , hören wir Wenn er nicht gleich ist, werden wir eine Spanne bilden Nun, das nächste, was wir brauchen ist, wo wir klein werden? Wir brauchen einen Standort. Hier bekommen wir den Standort unseres Schauspielers, das ist unser Standort der Gezeiten. Und jetzt müssen wir unsere Box erstellen. Was wir verwenden werden, ist eine reine Funktion namens D Point in Bounding Box Das bedeutet, dass an einem Punkt in diesem Feld Koordinaten mit halber Größe der halben Größe der Box entsprechen Hier verwenden wir 300300, O Z, wir lassen es so wie es ist Ich werde das verbinden. Um ehrlich zu sein, werde ich ein bisschen mehr Höhe hinzufügen Um auf Nummer sicher zu gehen, dass unsere Kastenfallen etwas besser sichtbar sind Ich werde einen Vektor hinzufügen, ich werde hier eine Fünf hinzufügen Dadurch entsteht eine Box der Größe 600 hauptsächlich weil unsere halbe Größe 300 ist, aber das, worüber wir gesprochen haben, wird nicht berücksichtigt. Vielleicht machen wir es ein bisschen kleiner. Lass es uns so machen, dass es passt. Ich glaube schon, dass unsere Falle zu 100 m lang ist. Ich bin mir nicht sicher, wie wir überhaupt nach diesem M3D-Sachen suchen sollen. Ich kann es nicht auf die Welt bringen und Boxen hier aufzählen , weil Box, ich finde, es ist gut, momentan ist es auf fünf gesetzt, also habe ich es auf zehn, eins, zwei, drei, vier, fünf, sechs, sieben, acht gesagt eins, zwei, drei, vier, fünf, sechs, , es ist acht. Es ist in Ordnung, es ist in Ordnung 250 ist in Ordnung. Und jetzt werden unsere Fallen nicht mehr an den Rändern auftauchen Es gibt eine automatische Option zum Überschreiben der kollegialen Behandlung. Zum Beispiel immer spawnen, auch nicht Cosans, versuchen nur Colocation, aber Wir können es nicht ändern. Wir versuchen, den Standort anzupassen, spawnen aber immer. Und das wird für einen etwas besseren Abstand sorgen. Zum Schluss müssen wir diese Funktion fortsetzen, aber ich denke, das ist etwas, das wir für das nächste Mal verlassen werden. Das Einzige, was wir jetzt ändern müssen ist nur ein kleiner Teil der Optimierung. Wir gehen in die BP-Falle. Wir gehen zu unserer Box und wir werden zu Kollisionen gehen, wenn es um Details geht Wir werden eine benutzerdefinierte Kollision auswählen. Wir werden uns dafür entscheiden, alles außer dem Pom zu ignorieren . Diese Kollision wird nur ausgelöst, wenn sich ein Gedicht überschneidet, mit ihm kollidiert und alles andere ignoriert wird . Ich denke, das ist es für diesen. Ich sehe dich beim nächsten Mal. Auf Wiedersehen. 55. Raumdekorations-Blueprint: Hallo und willkommen zum Game Design Workshop, echten Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Bisher haben wir mit unserer eigenen Requisitenfunktion begonnen und speichern weiterhin die Dungeon-Map als Schlüssel In lokalen Variablen. Und dann fuhren wir mit den Regeln fort wo wir unsere Fallen spawnen Und wir haben angefangen, die Funktion zu entwickeln , die benutzerdefinierte Requisiten erzeugt. Wir haben für die Eingaben die maximale Anzahl an Requisiten, das gezielte VP-Kachel und die Klasse verwendet , die wir spawnen wollen Wir haben in unserer Funktion einen Zähler erstellt, dem ich diesen und nur die maximale Anzahl der Requisiten abschalten werde , weil ich die Linie einfach nicht sehen möchte, und von hier aus trennen wir diesen Typ und den unteren, und hier werde ich einfach zum Ziel gehen Und der Grund, warum ich das noch einmal machen kann, ist, dass es sich um eine Funktion handelt und wir die Eingabewerte einfach als Variablen aufrufen können Jetzt, nach dem Zähler, wenn es wahr ist, werden wir einfach aufhören, nichts tun, damit die Funktion abgeschlossen ist. Vorher werden wir auf der falschen Seite unsere Schauspieler hervorbringen Jetzt werden wir überprüfen, ob der Schauspieler gültig ist. Falls dies aus irgendeinem Grund nicht der Fall ist. Es spawnt nicht, obwohl wir etwas erschaffen, versuchen uns anzupassen und trotzdem kollidieren Wenn wir versuchen müssten, den Standort anzupassen, nicht anrufen, wenn es immer noch kollidiert, dann bräuchten wir Aber wenn wir versuchen würden, den Standort anzupassen, aber immer spawnen, brauchen wir das eigentlich nicht Aber falls du experimentieren willst, lassen wir das hier gültig , denn die Art und Weise, wie Kollisionen hier behandelt werden, brauchen sie ein bisschen davon oben in den Bauplänen und mit dem was sie kollidieren und wie Oh, wir wollen das hier machen Was wir tun werden, ist unseren Akteur hinzuzufügen, der reagiert, unsere Falle, die wir an die Liste der zu zerstörenden Schauspieler Also müssen wir die Liste finden. Hier ist es, und lassen Sie uns den Löffeldarsteller hinzufügen. Falls es gültig ist. Wenn es nicht gültig ist, sind wir damit fertig. Als Nächstes bewerben wir das Hinzufügen zu unserem Zähler plus eins. Und wir müssen auch den Zähler einstellen. Denken Sie daran, Kontrolle ist zum Einstellen da. Nur für den Fall , dass wir den Löffel in Pons Pone machen wollen, wenn er kollidiert, wollen wir später damit experimentieren Wir werden einfach eine neue Variable hinzufügen und sie y und trice nennen Und wir werden auch diese Zahl um eins erhöhen. Hol es dir auch. Seit jeder Hinzufügung spielt die Reihenfolge keine Rolle. Jetzt stellen wir die Verbindung von hier aus her her, ist hier nicht gültig. Fügen wir zu den ursprünglichen Regeln oder oder b hinzu und wir erhalten Trie Plus Das Maximum ist hier, hier. Eigentlich kein Plus, mein Fehler ist größer als Mx Requisiten multipliziert mit zwei Es fegt im Grunde zweimal. Es versucht, das Doppelte der Mx-Requisiten hinzuzufügen falls die Requisiten nicht spawnen Weil unser erster Zähler zählt, wie viele sie Unser zweiter Zähler X zeigt wie es gab, etwas zu spawnen Denn nach einem bestimmten Punkt, sagen wir zum Beispiel beim Generieren des Labyrinths oder Level 25, könnte diese Zahl auf ein System zurückzuführen sein , das nicht spawnt, wenn es kollidiert Es würde zum Beispiel fünf Fallen an einem Punkt spawnen, oder es könnte nicht spawnen, wenn es nicht kollidiert, könnte es nicht . Es könnte so viele Fallen , dass es nicht möglich wäre Das würde also unendlich werden und dann würde es unseren Ladevorgang blockieren Es wird dort aufhören und niemals weitergehen. Zerstöre im Grunde unser Spiel. Danach verbinden wir das hier drüben, am Anfang des Abzweigs, und es wird unseren Loop mit einer Ausfallsicherheit abschließen, die es wird unseren Loop mit einer Ausfallsicherheit abschließen doppelt so hoch ist wie die Anzahl unserer Mx-Requisiten Nennen wir es jetzt in unseren Requisiten Spooner. Wir werden dem Sohn konstante Requisiten mitbringen. Wir werden das mit Masten verbinden . denken ja, denn wenn es unsere Koordinate ist, oder wenn es eine spezielle Kachel ist, wollen wir nicht, dass etwas passiert. Wir wollen, wenn es Jetzt verbinde ich die Dungeon-Werte mit dem Ziel, das sind unsere Stapel, die entsprechenden Für den Unterricht wähle ich die Falle aus. P Eine Falle Lass uns die Max-Requisiten machen. Jetzt werden wir eine neue Variable erstellen. Wir werden es Anator-Ebene nennen. Haben wir eine Generatorebene? Kacheln, Max. Größe des Labyrinths, Max. Kacheln. Nein, tun wir nicht Also, wir sollten ein Generator-Level haben und das bringen wir hierher. Was nun, lassen wir es auch instanzieren und beim Spawn verfügbar machen , damit wir weitermachen können, wenn wir das Labyrinth spawnen Lassen Sie mich Sie noch einmal daran erinnern, wir zum Hauptmenü zurückkehren müssen, zu unserem Diagramm gehen müssen Kompilieren und speichern Sie die Karte, speichern und kompilieren Sie zuerst das Labyrinth und gehen Sie zum Hauptmenü und genau das Labyrinth. Jetzt haben wir das Generator-Level. Fangen wir mit Stufe eins an. Lass uns zurück in unser Labyrinth gehen. Mit diesem Generator-Level werden wir es hinzufügen, sagen wir, plus eins Machen Sie es einfach: Die erste Ebene hat zwei Fallen, die zweite Ebene hat drei, und es geht weiter und weiter Lassen Sie uns demonstrieren, was wir geschaffen haben. Lass uns anfangen. Und lass uns hochspringen. Hier sind wir. Hier eine Falle, hier eine Falle, die Mischung ist gut Von oben würden wir nicht viel sagen können , aber wir werden sie mit etwas Nebel und etwas zusätzlicher Beleuchtung verstecken etwas Nebel und etwas zusätzlicher Beleuchtung Lassen Sie uns damit fortfahren, ein paar Requisiten für unsere Zimmer zu machen, denn momentan sind sie beleuchtet ein bisschen leer Lass uns das tatsächlich zeigen. Gehen wir zu unseren Dekorationen, wählen wir unsere Decke aus und stellen die Sichtbarkeit ein. Um ein sichtbares Spiel zu sein, tut mir leid, ein verstecktes Spiel. Ich denke, das wird es nicht verbergen. O. Wir sagten ein Spiel mit versteckter Sicht, damit wir jetzt sehen können, was in unseren Zimmern vor sich geht. Nun, wenn wir dieses Stationslicht nicht hätten, wären die Zimmer wirklich dunkel. Neben den Requisiten müssen wir auch in den Räumen Blitze spielen Und dieses Mal wollen wir einen anderen Weg finden. Fügen wir es nicht so hinzu, wie wir es mit diesen Requisiten gemacht haben , mit den Fallen Lassen Sie uns einen anderen Weg finden, es zu tun. Wir haben also viele Beispiele dafür, wie man Blöcke im Grunde in unserem Labyrinth füllt Dafür benötigen wir einen neuen Plan. Geh zu den Requisiten. Klicken wir, erstellen eine neue Blueprint-Klasse, geben Schauspieler ein, es wird BP, Raum, Requisiten sein Lass uns jetzt die Raumrequisiten spawnen . Wir gehen zu unserem Labyrinth-Generator. Wir werden das Gameplay tatsächlich beenden. Und das von der kompletten Fort-Schleife aus. Wir werden diese For-Schleife einfach für jede Schleife kopieren. Und für das Array werden wir alle Raumkoordinaten wählen Für all unsere Raumkoordinaten erhalten wir unsere Werte Eigentlich werden wir unseren Kerker bekommen. Das heißt, ich werde den passenden Schauspieler finden. Das gibt uns allen den Schauspieler, den ganzen Raum, Schauspieler. Im Grunde genommen alle Fliesen , die zu Räumen gehören. Von da an werde ich Actor Plus besitzen. Ich werde die Transformation aufteilen. Ich werde es mit dem Standort verbinden und ich werde es mit dem Standort verbinden. Für den Kurs werden wir die Raumrequisiten auswählen. Um ehrlich zu sein, brauchen wir noch eine Variable. Gehen wir zu unseren Zimmerrequisiten. Ich öffne es, öffne es, gehe zu Variablen und erstelle Anweisungen Das wäre eine Karte der Erektion. Und das zweite wäre der Pulion, wie wir ihn auf unseren Kacheln haben, und wir werden ihn essbar machen und ihn beim Laichen auslegen Gehen wir zurück zum Labyrinth-Generator. Lass uns das mal aktualisieren, das ist tatsächlich soweit. Und wir ermitteln die Richtung unserer Kachel, das Richtungsarray und verbinden es hier. Jetzt spawnen wir Raumrequisiten auf jedem Feld, das ein Raum ist, und wir kennen die Richtungen Wir wissen also, wo wir eine Mauer haben und wo wir keine haben Ich denke, das ist es für diesen. Im nächsten Schritt können wir also erklären, wie dieser Plan funktionieren wird Vorerst auf Wiedersehen, dann bist du der Nächste. 56. Grundlagen des Raumprop-Spawners: Hallo und willkommen zurück zum Game Design Workshop und zum Kurs „R sine five prozedurale Dungeon Action Zuvor waren wir mit unseren Requisiten für benutzerdefinierte Requisiten fertig. Wir haben unseren Loop damit abgeschlossen, dass wir unseren Schauspieler zu den Schauspielern hinzugefügt haben, die zerstört werden sollen Wir haben überprüft, ob der Schauspieler , den wir erzeugen, gültig ist Wenn er gültig ist, erhöhen wir den Zähler Wenn es nicht gültig ist, erhöhen wir die Anzahl der Versuche, was wir auch tun, wenn wir den Zähler erhöhen Welche Versuche wir gesagt haben, es wird eine Variable sein. Nur für den Fall, dass wir das ändern wollen, um die Position anzupassen, aber nicht zu spawnen, wenn es kollidiert Wir haben mit der Erstellung unseres A-Rooms-Arrays fortgefahren. Wir fuhren damit fort, für jeden Loop alle unsere Raumkoordinaten zu verwenden, und wir haben den Plan erzeugt, den wir für die BP-Raumrequisiten erstellt haben. Dabei handelt es sich um einen Plan, für den wir eine Variable namens Richtungen erstellt haben, und wir haben unsere Kachelkoordinaten von unserem Raum auf den aktuellen Akteur übertragen von unserem Raum auf den aktuellen Akteur Nun, wie verwenden wir diesen Akteur und wie werden wir diese wie werden wir Gehen wir zu diesem Schauspieler. Das Erste, was wir tun werden , ist , dass, wenn der Schauspieler Pflug ist , wir unsere Richtung bestimmen und wir werden unsere Werte durchgehen Werte, und das werden wir für jede Schleife aus Werten machen. Als Nächstes werden wir fragen, ob der Wert wahr ist oder nicht, wann er wahr ist. Das bedeutet, dass wir durchgehen können, wenn es nicht stimmt , dass es eine Mauer gibt. Oh, lassen Sie uns speichern, wie viele wir haben, wenn wir keine Mauer haben, oder wie viele leere wir haben. Nennen wir diese Bar leer. Wir machen daraus eine einzelne Typvariable vom Typ Integer. Und wenn wir gehen können, werden wir mehr, wenn wir hindurchgehen können, wir werden das um eins erhöhen. Das zweite, was wir jetzt tun, ist, eine weitere Variable zu erstellen , diesmal NRA als Ganzzahl Dann nennen wir das, ich weiß nicht, Walzer. Dann werden wir hier hingehen und die Indizes hinzufügen, dass wir Mauern haben Jetzt haben wir also zwei Variablen, die angeben, wie viele leere Stellen Es gibt, wie viele Eingänge, Ausgänge, Durchgänge, was auch immer wir gehen können, und wir haben auch eine Variable, die wie viele Wände auf unserer aktuellen Kachel existieren Denkt daran, wenn wir das spawnen, jedem Plättchen eine davon Unser Zimmer hat also vier Kacheln. Das heißt, wir haben in jedem Raum P-Raumrequisiten. Jeder Raum hat also vier P-Raumrequisiten, eine in jedem Gang In der vorherigen Zeit haben wir auf Fackeln gespawnt, weil das Erste, was wir laichen werden, unser Licht laichen Eigentlich werden wir zwei Dinge gleichzeitig tun, aber wir werden es mit einer Sequenz machen, im Grunde werden sie gleichzeitig passieren Oh, als wir die Veranden erzeugt haben, die wir in unserem Viewport für unsere Dekoration in einem Deklarationsplan verwendet haben, verwenden wir einige Szenenpunkte haben, verwenden wir Das ist eine Art, Dinge zu tun. Eine andere Möglichkeit, einen bestimmten Standort zu ermitteln, besteht darin, den Standort tatsächlich zu kennen. Wenn wir wissen, dass der Mittelpunkt unseres Bauplans Null ist, kennen wir relativ einige Orte, da wir wissen, dass unsere Kachel 600 mal 600 groß ist Wir wissen, dass 300 auf halber Strecke von der Mitte entfernt sind. Nun, lassen Sie uns unseren neuen Plan für Torch erstellen. Nennen wir diesen Raum Fackel. Ich sehe sofort die alte Fackel, die ich benutzt habe, als Mesh. Weil das die Zimmerfackel für mich hätte sein sollen. Ich werde die BB-Fackel öffnen und das Netz gegen die große Fackel austauschen. Das ist die richtige Fackel. Ich muss den Pier wieder in Ordnung bringen , kompilieren und speichern und dann gehen wir auf unsere Zimmerveranda Hier erstellt. Öffne es. Ich werde alles retten, was ich seit langer Zeit gespeichert habe. Ich werde hinzufügen. Weißt du was, ich kann zur großen Fackel gehen. Die BP-Fackel, einfach kopieren. Diese Dinge. Füge sie ein. Ich stelle den statischen Wert auf die kleine Fackel um und setze den Partikel auf einen niedrigeren Wert. In Ordnung. Und jetzt kann ich das Verhalten auch aus dem Ereignisdiagramm kopieren und einfügen . Derselbe Effekt. Spielen Sie das Spiel hier von Anfang an ab, spielt keine Rolle, da es sich um eine sich wiederholende Zeitleiste handelt Das wäre es, wenn wir in anderen Umgebungen wären. Jedenfalls. Ändern wir den Radius der Lampe 4 bis 5 m. Ändern wir den Radius von 400 um zu kompilieren und zu speichern. Und jetzt haben wir unsere eigene Zimmerfackel. Gehen wir zurück zu unseren Zimmerrequisiten. Und bevor wir irgendeinen Schauspieler vorschlagen, können wir tatsächlich etwas anderes machen Wir können es als Kind hinzufügen. Ich werde einen Kinderdarsteller hinzufügen. Ich werde es Zimmerfackel nennen. Und ich werde ihre Klasse auf Zimmerfackel umstellen. Und wenn ich sicher bin, kann ich jetzt in den Bauplan hineinschauen. Nein. Frage oder erste Regel. Das wäre, wenn wir irgendwelche Wände hätten. Ich hole mir meine variablen Wände. Ich werde fragen, ob die Länge größer als Null ist. Wenn es nicht größer als Null ist, werde ich diese Komponente zerstören. Das brauchen wir nicht mehr. Dieser Raum hat keine Wände. Was wäre ein Raum ohne Wände? Es wäre ein Raum, der im Grunde eine Tür hat, weil eine Tür gibt und keine anderen zwei Türen, eine, zwei Türen. Wenn du also malen gehst, wäre das ein Raum, der hier drüben eine Tür hat , und eine Tür. Hier drüben. Der Rest des Raumes hätte also keine Wände dafür. Das wird offen sein und die Seite wird offen sein. Es hat praktisch keine Wände, um eine Fackel hinzuzufügen. Denn unsere Regeln basieren darauf, ob der Spieler auf jede Seite wechseln kann. Zurück zur Programmierung. Jetzt brauchen wir als Nächstes die Anweisungen. Danach holen wir uns die Schlüssel. Eigentlich werden wir hier eine zufällige Richtung von Wänden bekommen. Zufällig. Wenn wir uns richtig erinnern, haben wir den Index gespeichert, von dem wir keine Wand hatten. Selbst wenn wir zwei oder drei Wände haben, bekommen wir eine zufällige Wand, die unsere Fackel ersetzt. Wie gesagt, wir müssen die relative Position dieses Our B festlegen Our , wir legen die Position auf der Grundlage der Koordinaten des Bauplans Weil wir wissen, dass die Größe des Raums hemmend sein wird Jetzt habe ich einige Standorte vorberechnet, von denen ich denke, dass sie korrekt waren Sie können Ihre eigenen erstellen. Was wir verwenden werden, ist ein SE für den Index, wir werden die Anweisungen abrufen. Wir haben eine Nordwand, eine Ostwand, eine Südwand und eine Westwand. Für die Nordwand gebe ich 40, 150 und für die Ostwand gebe ich -340, 50, 250 die Höhe ein und x und y sind die X- und Y-Achse -40 für Süden und 300 für X, Y und 250 für Z und 300 minus hundert 42 50. Lass mich hier weitermachen. Hundert 40 50. Nun, es an einem Ort aufstellen, als würde man es hin und her bewegen . Wir haben nicht immer die richtige Drehung. Auch hier müssen wir überprüfen, welche die richtige Drehung sein sollte, wenn sie hier wäre, welche die richtige Drehung sein sollte, wenn sie hier wäre, und so weiter. habe ich schon gemacht, also haben wir die Werte, und wir werden auch die Zimmerfackel und das Relativset besorgen . Dieser relative Standort. Oh mein Gott. Ich will tippen und ungehorsam sein. Kein Standort, tut mir leid, relative Rotation einstellen. Wie Sie sehen können, habe ich es von der Hinrichtungslinie bekommen. Also kann ich jetzt die Zimmerveranda wählen, weil sie quasi ein System hat, das mir einige Reset-Optionen gibt , sodass es mir passen könnte Und ja, das passt mir besonders gut. Und wieder wähle ich Ich gehe zu diesem. Nun, da wir diese Variable zweimal verwenden. Da ich hier eine Zufallszahl habe, wird sie hier und hier einen anderen Wert bekommen. Also muss ich das als Variable bewerben. Hier. Ich gehe zu dieser Variablen in zufälliger Richtung. Und ich werde hier eine zufällige Richtung angeben. Hier, hier. Gut. Nun, was die Rotationen angeht, wir brauchen 90 nach Norden Wir brauchen 180 nach Osten, brauchen minus neun. Süden und Null im Westen. Und das wäre es. Jetzt hätten wir ein paar Lichter in unseren Zimmern. Lass uns das überprüfen. Und wir haben einige Lichter in unseren Zimmern. Wenn du verschiedene Standorte haben willst, kannst du natürlich mit den Zahlen experimentieren, ich sie finde oder nicht. Ich glaube, das wird für diesen sein. Wir machen mit dem nächsten weiter mit dem Rest des Zwecks der Räume. Tschüss. 57. Raumrequisiten-Dekoration: Hallo und willkommen zum Game Design Workshop Under Engine Five, Action-Rollenspiel „ Procedural Dungeon“, Entwicklungskurs Zuvor hatten wir unser Event „ Raumrequisiten beginnen mit dem Spielen“ ins Leben gerufen. Wir haben angefangen, es zu füllen. Aber wir haben unsere Werte aus unseren Anweisungen erhalten. Wir haben vorausgesehen und kategorisiert, wie viele Wände leer sind , und wie viele wir hinzugefügt haben, nicht wie viele, sondern die Indizes der vorhandenen Wände in einer Reihe Dann haben wir unseren Plan für unsere Zimmerfackel erstellt, die sich genau hier befindet Wir haben das Verhalten kopiert und eingefügt, wir haben die Werte ein wenig geändert und wir haben auch die statischen Netze, die Lichter und alles andere kopiert und eingefügt die Nein. Danach haben wir hier drüben eine kleine Funktion geschaffen, aber eine Funktion, eine Kette von Ereignissen, wenn Sie so wollen. Aber wir überprüfen, wie viele Wände wir haben. Wenn wir keine Wände haben, zerstören wir die Fackel des untergeordneten Raums , die wir unserem Bauplan hinzugefügt haben Wenn es dann stimmt und wir ein paar Wände haben, dann haben wir die Richtung, wir haben die zufällige Richtung Wir haben eine zufällige Richtung blockiert und gesagt, dass die relative Position und Drehung des Raums um einige vorberechnete Werte abfackeln Lassen Sie uns nun dasselbe für die restlichen Raumelemente tun. Dafür werden wir einen Wechsel vornehmen. Dafür int. Der Int-Index würde bei eins beginnen. Jetzt Standard-PIN, und wir werden Indizes bis zu vier hinzufügen. Das liegt daran, dass wir auf der Basis von leer wechseln werden auf der Basis von leer wechseln und nichts leer haben kann Wir können einen leeren Raum haben, das ist ein Raum , der so ist, und wir haben den anderen Raum hier und den anderen Raum hier. Vielleicht hätten wir den vorherigen löschen sollen, Space. Der nächste Raum wäre also hier und der nächste Raum wäre hier, die Lücke hier. Also hier wäre einer leer, und fangen wir mit dem an. Was wir zu den statischen Maßnahmen hinzufügen müssen. Nennen wir sie thatqu A und thatqu B oder A eins, aber nennen wir es B. Wenn wir ein Mt haben, dann lautet meine Regel, die ich hinzugefügt habe, dass wir nicht zwei statische Maße haben Wir werden eine haben und bei den restlichen Optionen zwei verwenden Oh, ich werde endlos darauf eingehen. Dann holen wir uns unser statisches Mesh. A M. Und daraus werden wir aus einer Liste auswählen, wir werden wählen. Und für den Index werden wir eine zufällige Reichweite haben. Der Bereich würde zwischen Null und Fünf liegen. Und lassen Sie uns fünf Optionen hinzufügen. Oh, für die Optionen. Wir haben tatsächlich drei, aber wir werden ein bisschen mit ihren Spawnchancen spielen Also werde ich zum Inhalt gehen. Ich werde zu unserem statischen Chaos übergehen. Ich werde diesen Tisch auswählen. Und es gibt noch einen Tisch. Und da ist auch dieser Tab. Ich glaube nicht, dass es noch einen anderen gibt. Ich denke, das sind die drei Varianten. Und lasst uns mit den Chancen spielen. Nehmen wir an, einer von ihnen hat mehr, viel mehr Chancen als die anderen. Einer mehr hat eine zusätzliche. Das wäre es für diesen. Und dann müssen wir die relative Rotation einstellen . werden wir tun. Aktion. Was wir hier machen wollen, ist mit einer Masse, einem Iterator, wir wollen nur das Ya ändern Jedes Mal dreht sich der Tisch um. Wir werden es auf Distanz benutzen. Wir werden 600 bis 360 verwenden. Nun, warum ändern wir nicht den Standort? Denn wenn wir diesen Gegenstand überspannen, wird er genau mittig sein, dann wird er hier sein. Aber was wir tun, ist die Rotation zu ändern , nur um jedes Mal eine zufällige zu haben. Nun, was machen wir, wenn wir zwei oder die Wände MT haben? Wir werden uns den Weg erklären lassen. Wir werden unsere Schlüssel holen. Und dann fahren wir durch unsere Wände. Natürlich werden wir, basierend auf unserem A-Element, die richtige Richtung finden. Bei unseren Wänden müssen wir eines dieser beiden statischen Maße wählen. Um das zu tun, gehen wir zu dem Index, der unser RA-Index wäre, weil wir von zwei oder einer Wand ausgehen. Das wird also einen oder zwei haben. Ich habe das nicht angeschlossen, wenn wir den dritten ausführen, wir werden das statische Mesa, das zweite statische Mesgan, das zweite statische Wie bei einem MT benötigen wir nur ein Also tun wir das, wenn es nur eine Wand gibt , im Grunde genommen , weil die andere ein Ausgang gewesen wäre. Ich werde das hier verbinden. Lass uns weitermachen. Wir brauchen diese beiden statischen Maßnahmen. Falls es nur eine Wand zu platzieren gibt. Damit wird der zweite Index nicht ausgeführt, aber wir brauchen hier kein „is valid “, da es wahrscheinlich keinen Fehler geben wird. Als Nächstes sollten wir Attic Me akzeptieren , auch wenn A oder B über diesen Index ausgewählt werden. Das nächste, was wir hinzufügen sollten, ist der Auswahlknoten, jetzt haben wir tatsächlich eine Menge Auswahlmöglichkeiten. Nun, wieder sind es fünf, aber dieses Mal sind es tatsächlich fünf. Ich werde das löschen. Ich werde diese Auswahl mitnehmen, der es bereits fünf gibt. Ich werde das hier verbinden. Ich werde. Hier brauchen wir ein zufälliges Ergebnis. Hier zufällig, null vor fünf. Ein zufälliger Index, und die ersten drei werden diejenigen sein, die wir hinzugefügt haben Die ersten drei sind einzigartig. Einzigartig. Für den Rest der drei benötigen wir dieses Kombinationsspiel mit den Boxen. Dann dieser mit dem Helm. Ich kann das Rot oben drüber sehen. Deshalb weiß ich, dass es eins mit dem Helm ist. Davon gibt es noch eine, die mit den größeren Boxen. Das hat zwei kleine. Dieser hat einen größeren. Ich bin mir nicht wirklich sicher. Öffne es. Jetzt hat es drei Boxen. Okay. Blaupause Und jetzt bekommen wir einen von ihnen. Das nächste, was wir tun sollten, ist an der entsprechenden Stelle. Auch hier benötigen wir eine Auswahl. Mehrfachauswahl. Für den Index benötigen wir diesmal die Richtung. Basierend auf der Richtung werden wir diese Werte auf 54 Nord ändern . A 54 Ost, aber auf y n, und minus auf den entsprechenden X- und Y-Werten T wäre die relative Drehung. R hier. Das ist hier verrottet. Wieder ein Wahlschalter, dreh ihn ein, wir geben nur Anweisungen Wir gehen mit -90 090180. Wenn wir kompilieren, überprüfen wir das Level. Und überprüfe, ob unsere Requisiten erschienen sind. Ja, sie sind erschienen. Ihre Ecken, Kanten Jetzt haben wir ein paar Requisiten in den Zimmern. Ich finde, das sieht gut aus. Ich scheine auf allen Seiten etwas verstimmt zu sein. Versuchen wir also für eine Sekunde, das zu beheben. Was ist, wenn wir sie etwas größer einstellen? 1.2? Außerdem scheinen sie momentan viel besser zu sein. Sie fühlen sich dort ein bisschen besser. Sie haben eine kleine Lücke. Die Tische funktionieren nicht, aber ich finde, wir werden nicht in der Lage sein, unser Spiel wirklich zu verderben. Wir werden sehen, ob es so ist, wir werden es reparieren. Nein, was machen wir mit der vierten Option? Die vierte Option wäre die Option, Türen zu haben. Wir haben jetzt keinen von ihnen. Zum Glück, aber nehmen wir an, wenn wir zwei Türen hätten, könnten wir hier keine statische Mache aufstellen. Wir werden ein paar Boxen erstellen, wir werden sie zu Boxen machen und wir werden ihnen Physik einschalten, sodass der Spieler pushen kann, aber das ist für das nächste Mal, ich werde dich dann vorbeigehen sehen 58. Hinzufügen von Physik-Elementen zu Räumen: Hallo und willkommen zurück zum Game-Design-Workshop und zum prozeduralen Action-RBS-Erstellungskurs für echte Engine Five-Dungeon-Action-RBS Action-RBS-Erstellungskurs für echte Engine Five-Dungeon-Action-RBS Zuvor haben wir Code für unsere Raumrequisiten erstellt. Wir haben den Code hinzugefügt , der darauf basierend auf der Anzahl der leeren Wände Wenn wir eine leere Wand, zwei leere Wände oder drei leere Wände haben, passen wir unsere statischen Netze, das S-Netz, an etwas anderes an Und wenn es nicht nötig war, haben wir in der Sekunde, in der wir es bekommen haben, zwei Koffer vernichtet Nun haben wir aus der ausgewählten zufälligen Mesion sowohl die Funktion als auch die Art der Ereignisse ausgewählt sowohl die Funktion als auch die Art der Ereignisse Und im ersten Fall haben wir nur eine Rotation festgelegt, weil es sich um ein Objekt Und beim zweiten legen wir eine relative Position und Drehung fest, legen wir eine relative Position und weil wir sie an den Rändern des Raums haben wollen. Als Nächstes sollten wir, wie gesagt, die physikalischen Objekte hinzufügen . Um das zu tun, werden wir hier unser statisches Maß ermitteln. lassen ein Ra einen Drop hinzufügen, und dann machen wir das für jeden Loop. Wir werden uns verbinden. Hier. Hier. Und wir durchforsten unsere statischen Meshes Damit wir das nicht tun, ist, dass das Statische eine der Boxen Hab ein paar davon hier. Wir haben eine Kiste. Ich werfe es hier ab. Und das nächste, was wir tun sollten, ist hier das hier vorzulesen, dann diesen Ort. Nun, für das Wort Standort, gehe ich zum Standort des Schauspielers , da unser Schauspieler über unserer Kachel steht, und ich werde nur ein bisschen zu den festgelegten Achsen hinzufügen. Etwa 20. Es ist sogar ein bisschen höher als zuvor, weil wir diesem Schauspieler bereits die Offset-Höhe hinzugefügt haben , und dann mache ich einen zufälligen Punkt in der Begrenzungsbox Wie zuvor, und mit den Größen 40, 40 und eins. Ich werde das als Standort festlegen. Der Grund, warum ich etwas mehr Höhe gebe, ist , dass ich das möchte, aber wir werden die Physik aktivieren und sie haben die Schwerkraft. Sie werden jedes Mal an einer zufälligen Stelle fallen und fallen, sodass sie nicht so aussehen, als wären sie jedes Mal an derselben Stelle platziert worden. Das nächste, was wir tun sollten, ist ein Charakter zu finden. Wir wollen nicht, dass unser Charakter diese Boxen hochklettert. Wir wollen nur, dass sie herumgeschubst werden. Und dann fügen wir noch einen Zug hinzu. Wir werden. Nein. Diese Komponente zerrt, tut mir leid, und wir werden von hier aus ein Array erstellen und Tug von H als Physik-Item setzen Tug von H als , weil wir diesen Zug brauchen werden, um sie mit unserer Meta herumzuschieben Das nächste, was wir tun sollten, wäre vielleicht Physik Oh, nicht dieser. Ahme mir Aktiviere Physik nicht, emuliere mir. Ich will das. Machen wir jetzt ein bisschen Platz. Da wir diesen Mechaniker haben , obwohl wir keine Wände haben. Wenn dieser Bauplan besitzt, wenn er keine Wände hat, wird er diese Mechanik ausführen und im Grunde zwei Boxen erstellen Was wir tun können, dauert ein bisschen und wir haben bereits anderen Schauspieler zusätzlich zu unserem Schauspieler geschaffen Dadurch können wir einen zusätzlichen Boxenraum einrichten. Um das zu tun, gehen wir in die Räume, die zwei oder drei leere Räume haben . Weil wir das nicht in einem Raum machen wollen, der nur einen leeren Raum hat, wird es zwei unübersichtliche Räume geben. Aber wenn wir zwei Möglichkeiten haben unsere Kachel zu verlassen, oder drei Möglichkeiten, eine Kachel zu verlassen, dann wäre es akzeptabler, zusätzliche Boxen zu haben Um das zu tun, gehen wir also zum Abschluss dieser vier Lassen Sie uns einen Wert von fast 30% vielleicht nicht 30%, aber wir werden es versuchen. Also werden wir eine Umstellung vornehmen, es werden 30% sein. Schalte int ein. Und wir werden addieren und Neun tatsächlich bis Nummer Neun ergeben, weil Null das Alte entfernen wird. Eigentlich brauchen wir nicht so viele. Es? Weil es schneller ist, als das zu löschen. Ich gehe zu nur drei von ihnen. Du brauchst oder neun. Aber wir gehen einfach runter. Reichweite. Wir werden für all das tatsächlich die Standardeinstellung verwenden. Fehlzündungen. Wir haben null bis neun und wir haben null, eins, zwei Alles über zwei löst die Standardeinstellung aus. Was bedeutet eins, zwei und drei P? Was machen sie? Sie sind tatsächlich Spa-Schauspieler aus dem Unterricht. Der Schauspieler wäre PP Room Plops. Die Transformation wäre der Standort unseres Schauspielers. Zwei, eins. F aus unserer Richtung, wir werden es wieder gutmachen Wir werden unsere Werte hinzufügen, Nord wäre geschlossen, Ost wäre geschlossen, Süd wäre geschlossen, offen, tut mir leid, nicht geschlossen, offen, also wäre im Grunde alles offen. Wir verwenden das System, das wir geschaffen haben, wenn alles offen ist, und dann würde das eine zusätzliche, zusätzliche Physik, Quadrate, ts, schaffen. Das einzige Problem dabei ist, dass Maze, wenn wir diesen Raum spawnen Wir werden tatsächlich unsere Destroy-Schauspieler und das Matroid hinzufügen unsere Destroy-Schauspieler und das Wir haben die Referenz hier und fügen sie bei der Auktion hinzu Was das Zerstören angeht, bring es her. Lass uns auflisten. Nun, wir können diesen Raum zerstören, aber wir haben keine Referenz zu diesem zusätzlichen Raum , den wir erschaffen haben. Aber mach dir keine Sorgen. Wir haben eine Referenz zu diesem Raum, der das bekommt und es gibt eine sehr nette Verbindung, wie wir sie nennen. Es gibt Ereignisse, die man binden kann, sie hören weiter zu , bis diese Henne wenn das passiert, hören sie weiter zu Sie bekommen eine Nachricht , wenn das passiert. Oh, wir werden von hier wegziehen und sagen: Nein, nicht von hier, tut mir leid, von hier, von der Hinrichtungslinie. Ich würde sagen, finden statt zerstören. Denn wenn dieser Schauspieler zerstört wird, nicht dieser Schauspieler. Wenn unser Schauspieler, diesen Schauspieler hervorbringt, zerstört wird Deshalb ein Entwurf von hier und nicht vom Rückgabewert Wir müssen eine Veranstaltung veranstalten. Sagen wir mal zerstört. Wenn unser Schauspieler zerstört wird, gehen wir zu diesem Y-Schauspieler. Aber auf diese Weise stellen wir sicher , dass, wenn unser Schauspieler zerstört wird, auch dieser Plan zerstört wird Lass uns spielen. Lass uns sehen, ob unsere Boxen gespawnt sind. Reagiert, wir konnten ein bisschen Bewegung sehen, also funktioniert die Physik Nun, sie sind keine perfekte Physik. Wir haben nicht mit Werten herumgespielt. Das ist nett, als würden wir versuchen, den Raum zu betreten, und es wird sein und dann blockieren wir ihn. Wir werden hier langsam durchgehen. Wenn wir männlich sind, werden wir sie herumschubsen. Ja. Apropos perfekte Physik. Wir können nicht sehen, wie Kisten außerhalb unseres Labyrinths alle davonfliegen, auch nicht, wenn wir sie abspritzen. Das könnte passieren, weil die Winkeldämpfung und die Masse nicht wirklich das sind, aber ich denke, sie sind Das kommt nicht oft vor. Und wenn es passiert, ist es lustig. Du hast gesehen, dass dieser fast den Raum verlassen hat. Wenn wir anfangen zu spielen, sind wir auf dem Dach. Also werden sie zumindest dort bleiben. Aber bei vielen Angriffen und allem anderen könnten sie von der Landkarte verschwinden. Sie werden trotzdem zerstört , wenn wir das Level ändern. Oh, ich glaube, das ist es für diesen. Ich sehe dich beim nächsten Mal. Auf Wiedersehen. 59. Importieren von Revenant und Hellgate-Tower-Blueprint: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur Erstellung von Procedural Dungeon Action ARPs der fünften Generation Procedural Dungeon Beim letzten haben wir unsere Raumboxen, die Physik-Boxen, erstellt und sie über unseren Code erzeugt. Wir haben ein Array erstellt, das wir mit unseren statischen Meshes zu Schleifen Wir haben das statische Mesh auf eine Box gesetzt. Wir setzen das Wort Ort etwas höher als das Wort Schauspieler, also fallen sie weg. Wir haben festgelegt, dass der Charakter nicht auf ihn treten kann, und wir haben ihm einen Tack hinzugefügt, dem pH-Wert entspricht, sodass wir ihn unseren Angriffen aussetzen können Wir haben auch Simulate Physics auf True gesetzt, sodass sie Physik ausführen Danach haben wir einen kleinen Cheating-Mechanismus hinzugefügt, Beispiel haben wir unseren Code genutzt, um unserem Raum ein paar zusätzliche Boxen hinzuzufügen Raum ein paar zusätzliche Boxen um es für unseren Spieler schwieriger zu machen, sich zu bewegen haben wir die Vorderschleife von den zwei leeren und drei leeren Wänden in unseren Kacheln benutzt von den zwei leeren und drei leeren Wänden in unseren Kacheln , sodass es am Ende eine Chance von etwa 30% Verpfände denselben Schauspieler mit bestimmten Anweisungen. Es lässt die vier Wände immer leer laufen und unsere Boxen werden wieder erscheinen Jeder Raum hat also die Möglichkeit, zusätzliche Boxen zu haben, außer dem Raum, der nur eine leere Wand hat Zerstören Sie nun diese Akteure Da wir in unserem Labyrinth keinen Verweis auf sie haben, verwenden wir bei Destroyed das Bind-Ereignis, das auf unseren eigenen Akteur verweist den das Labyrinth zerstören wird Wenn dieser Akteur also zerstört wird, zerstört er den Akteur, den er erzeugt hat Lasst uns jetzt weiter zusätzliche Requisiten in unserem Kerker bauen. Und das neue Requisit, das wir bauen werden, wird das Höllentor sein, der Turm, ein Plan, der den Spieler mit einem automatischen Angriff angreift, wenn er sich in der Nähe befindet, und er wird mit und er wird Um den Code für diesen Turm zu vervollständigen, bräuchten wir die KI und noch ein paar Also werden wir vorerst nur die Grafik dafür erstellen. Wir werden zu unseren Inhalten gehen. Wir werden zu den Bauplänen gehen. Wir gehen, lassen Sie uns einen weiteren aus all diesen Feinden erschaffen einen weiteren aus all diesen Feinden Vielleicht sollten Fallen bei Feinden sein. Aber du kannst das ganz einfach machen. Wir können zu Requisiten gehen, unsere Fallen holen und sie zu Feinden Wenn wir jetzt etwas in der Engine bewegen, ist es immer gut, zum Inhalt zu gehen, mit der rechten Maustaste zu klicken und Weiterleitungen zu korrigieren Das ist auch der Fall, wenn wir Dinge umbenennen. Das hilft der Engine bei den Redirectoren. Nun, was sind Redirectors? Im Grunde genommen Links und Pfade für Objekte in unseren Inhalten. Nochmals eine grobe Erklärung. Gehen wir jetzt zu unserem Feindesordner, klicken mit der rechten Maustaste und wählen Blaupausen, Darstellertyp und wir nennen das BP-Gate Jetzt. Fügen wir ein statisches Netz hinzu. Für das Netz wählen wir die Decke aus. Das ist groß. Wir wollen nicht, dass es so groß ist. Wir werden es auf Größe 0,5 drehen und wir werden es um 90 Grad drehen. Dann werden wir es kopieren und einfügen. Berühren Sie es mit sich selbst und drehen Sie das zweite Mal um 90 Grad diesmal auf der Y-Achse. Jetzt werden wir beide auswählen. Und für das Element werden wir das Mm verwenden. Aber die erste Instanz, die ursprüngliche. Jetzt werden wir ein Partikel verwenden. Wir werden zur Wurzel und zu einem Partikel übergehen, das wird wieder Kaskade sein, nicht Na Gara Für das Partikel müssen wir unseren Charakter Revenant herunterladen Wir gehen zum Epilencer. Wir gehen in die Wanne unserer Bibliothek und wir gehen in unseren Tresor In Vault werden wir Revenant eingeben. Falls Sie das Vermögen nicht haben. Wir gehen auf den Marktplatz und suchen nach Revenant Aragon Revenant, hier ist es, und wir werden es zum Projekt hinzufügen, oder für euch könnte es „Zur Karte hinzufügen“ sein, denn zuerst müssen wir es zur Karte hinzufügen und dann wird es in unserer Bibliothek erscheinen Wenn wir es jetzt in unserer Bibliothek haben, drücken wir auf Zum Projekt hinzufügen, wir werden den Namen unserer Projektgenerierung eingeben und wir werden es zum Projekt hinzufügen. Das kann eine Weile dauern, also werde ich hier eine Pause einlegen und danach weitermachen Wenn wir den Charakter „ Wiedergänger“ hinzugefügt haben, wird ein neuer Ordner zu unseren Inhalten erscheinen, der unser vorbildlicher Wiedergänger sein soll . Aus diesem Paket heraus müssen wir das Partikelsystem festlegen, das für den Braten verwendet werden soll Nicht genug. Gebratener Kopf rot Rostrot. Es gibt kein Rot und wir müssen es erschaffen. Kein Problem. Schauen wir uns die an, die wir wollen. Ich glaube, es ist dieser. Und es ist ein bisschen klein. Wir müssen es skalieren und das war es auch. Wir haben es überall getötet. Deshalb eins auf x, 30 auf y, 20 darauf und für den Standort minus y. Wir müssen einige Änderungen vornehmen. Es wird ein, aber es müssen einige Änderungen vorgenommen werden. Lass uns das Partikel öffnen. Und wir werden den Spawn löschen , der für dieses Leuchten verantwortlich ist Wir wollen dieses Leuchten nicht. Lösch das nicht. Wir brauchen den Emitter nicht. Wir brauchen nur diese Flammen. Ich und spare. Ich, richtig? Irgendwie einseitig, überall. Und okay. Neben der Farbe müssen wir meiner Meinung nach auch die Anfangsgeschwindigkeit ändern. Also machen wir es einheitlicher. Lassen Sie uns zunächst die Farbe ändern. Wir gehen zur ersten Farbwanne, wir wählen nicht Grün, nicht Blau, sondern Rot, sagen wir. Sendschreiben, lass uns hier dasselbe tun, tun. Ist rötlicher Jetzt siehst du den Unterschied, das ist so , desto flammender Aber in unserem Bauplan ist es strähiger. Der Grund dafür ist, dass ich die Skala auf 30 20 geändert habe. Deshalb habe ich die Skala gemacht, damit sie eher so aussieht. Ich kann sie verkleinern, aber ich mag die fadenförmige Kunst. Wie dem auch sei, lass uns hierher gehen und die Anfangsgeschwindigkeit ändern. Es breitet sich also ein bisschen mehr aus. Oder Vertrieb. Wir brauchen keine einheitliche Strömung. Wir brauchen einen Vektor. Die Uniform ist von bis max. Das ist eine Richtung. Dieser Weg, das ist eine Zeile. Aber was wir verwenden, ist ein Vektor. Ich konnte es sehen. Vektor. Ich bin auf Start Velocity Radio. Entschuldigung, ich möchte, dass es auf Startgeschwindigkeit läuft. Ja, hier haben wir einen Vektor. Okay, das ist ein Vektor, aber er hat nur eine Achse auf der Achse. Wir müssen die Fähigkeit erhöhen, hier und hier minus zehn minus zehn zu setzen . Wir haben also von unserem Ausgangspunkt aus Hin und Her, wir machen drei, im Grunde alle Seiten. Wenn wir also zu unserem Brunnen zurückkehren nichts tun, habe ich das gerettet. Ja, funktioniert es? Lass uns einfach einen Velocity-Con hinzufügen. Um das zu tun, klicken wir einfach mit der rechten Maustaste und gehen zu Velocity in Velocity, wir wählen Velocity Con. Das wird es schaffen. Wenn wir zurückgehen, habe ich gespart. Er hatte es nicht einmal. Ich glaube, ich weiß, was passiert, weil ich X auf eins setze, wir setzen das auf 30, 2015, 15 Looks A. Ich werde das auch verringern. 15 20 15 15 Ja. Es ist ein bisschen zu viel, glaube ich, markiere es ein bisschen niedriger. 15 es war zu viel. Und fünf. Und was die niedrige Acht angeht. Nein. Zehn, mit zehn war es in Ordnung. Zehn war in Ordnung. Lassen wir es einfach so stehen. Ich habe auch gesetzt. Stimmt? Weiß nicht wirklich , wer es nicht weiß. Reduzieren wir seine Lebensdauer, gehen wir auf Lebenszeit und gehen wir auf max. 1-2 0,8. Nein. Mein 0,5, lass es uns 22,5 haben. Oh, es ist noch schlimmer. Ich werde ein paar neue Einstellungen finden und wir werden sie bei der nächsten vornehmen. Auf Wiedersehen für heute. 60. 3D-Lektion 59 Hellgate-Turm-Visualisierungen und Labyrinth-Integration: Hallo, und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon Action Zuvor haben wir mit der Erstellung unseres Höllentor-Blueprints begonnen. Und wir blieben bei dem Partikel unseres Widergänger-Charakters. Also habe ich mit den Werten gespielt und fand das akzeptabel Was ich gemacht habe, war das Partikelsystem, ich habe eine Skala von zehn bis alles ausgewählt, einheitlich. Und beim Partikel selbst habe ich die Anfangsgeschwindigkeit auf maximal fünf Minimum bis minus fünf vom x-Wert geändert . Der Y-Wert wäre wieder fünf bis minus fünf, und der Z-Wert wäre konstant fünf. Jetzt habe ich für die gesamte Lebensdauer 0,4 in der Minimalverteilung und 0,5 in der Maximalverteilung hinzugefügt 0,4 in der Minimalverteilung und 0,5 in , weil wir ein wenig unausgewogen sein wollen , aber nicht so sehr wie zuvor Und für SPE habe ich bei der Löffeleinstellung auf Rate von zehn auf 20 umgestellt , sodass es sich auf Rate 20 erstreckt Und ich glaube, ich habe auch die Sphäre verändert. Nein. Ich habe es auf Acht stehen lassen. Also, was sind die Änderungen? Ich denke, das sollten Sie inzwischen haben. Und das ganz schnell, Skala von zehn bei einer Rate von 20, Lebensdauer von 0,4 und 0,5. Die ursprüngliche Größe lassen wir unverändert. Anfangsgeschwindigkeit ändern wir 00-55 von mindestens 00 auf minus fünf und minus fünf und auf der Z-Achse auf fünf Als Nächstes haben wir die Farbe von Co auf Rot geändert von Co auf Rot Und wir haben den Velocity-Code hinzugefügt. Jetzt, wo wir unser Teilchen haben, gehen wir zu unserem Gate, und wir müssen noch ein paar Variablen und Variablenkomponenten hinzufügen . Wir werden ein, ein Punktlicht hinzufügen. Wir werden es vorerst so lassen, weil wir den Code manipulieren werden, wahrscheinlich den Code für die Veranda Wir werden eine Kapsel hinzufügen und die Kapsel ist nur für Kollisionen gedacht , damit wir sie tatsächlich essen können Also werden wir es ein bisschen skalieren. Ups, ich habe es ausgewählt. Und wenn wir nicht erschrecken müssen, können wir einfach die Werte anpassen, sagen wir 100 und nehmen wir an, die Kapselradios wären es Ja. Hier werden wir unseren Schauspieler treffen. Jetzt werden wir das nutzen, um unseren Schauspieler zu schlagen. Wir gehen zu unseren statischen Kennzahlen, wählen sie beide mit der Steuerung aus und klicken auf sie, und wir gehen zu „Keine Kollision“ und erzeugen keine Überschneidungsereignisse, da dies unsere Leistung erhöhen würde. Als Nächstes fügen wir eine Komponente hinzu, hier Kollision. Wir lassen sie vorerst so, wie sie ist, weil wir sie für die Programmierung von Angriffen und ähnlichen Dingen verwenden werden. Aber das nächste, was wir hinzufügen werden, ist eine rotierende Komponente. Rotierende Bewegung. Was ist rotierende Bewegung? Es ist eine Komponente, die Rotation erzeugt. Es hat einige voreingestellte Einstellungen, aber wir werden statt 80 andere Einstellungen ändern Wenn ich auf Simuliert drücke, werden Sie sehen, dass es sich auf diese Weise dreht Und das liegt daran, dass der gesamte Schauspieler rotiert. Was wir jetzt machen wollen, ist einfach dieses Dachbodennetz zu drehen. Wir wollen nicht den ganzen Schauspieler rotieren lassen. Das sind eine Menge zusätzlicher Informationen, die nicht ausgetauscht werden müssen. Zum Beispiel die Kapsel, das Licht und was und sogar die Kugelkollision, bei der wir entscheiden, ob wir den Spieler angreifen oder nicht Also wählen wir die rotierende Komponente aus, gehen zum Ben-Graph, bringen sie hierher, wenn die Wiedergabe beginnt, und wählen Komponente aktualisieren Diese aktualisierte Komponente. Und wir werden es hier verbinden, und für die aktualisierte Komponente werden wir die Wurzel der beiden statischen Meshes verwenden, was für uns momentan das statische Mesh eins ist Ich werde es hier verbinden. Wenn ich zu den Viewports und der Stimulation gehe, dreht sie sich auch korrekt Es scheint also, dass ich das statische Netz anders gedreht habe als in meinen Knoten Denn wenn ich es anders gedreht hätte , wäre es so gewesen. Tun. Ja, irgendwie habe ich es vermasselt. Es wird aktualisiert, es hat dieselbe Rotation, es rotiert anders. Das sind tolle echte Momente. Das alles ist passiert , weil ich die Rotationen hier geändert habe Ich werde einfach alles zurücksetzen. Ein echter hat ein Problem, wenn wir etwas erziehen. Ich werde es von hier aus einfach abwechseln. Ich werde das als Elternteil übernehmen und ich werde das abwechselnd übernehmen. Wenn ich simuliere. Ich werde hier einfach 180 ändern. Ich denke, es wird behoben. Ja, es ist behoben. Überprüfe beide Werte. Es hängt davon ab, wie wir uns verbunden haben und mit welcher Rotation das Kind zum Netz verbunden ist. Unser System ändert die Rotationen anhand der lokalen Koordinaten automatisch auf Grundlage des untergeordneten Objekts Wie dem auch sei, jetzt haben wir ein paar Bilder am Laufen, lassen wir es in unserem Labyrinth spawnen Oh. Wir haben diesem Pro-Spawner das Spawnen unserer Raumkoordinaten überlassen Spawnen unserer Raumkoordinaten Und danach werden wir es für jeden tun. Und wo erzeugen wir dieses Heliat? Wir werden eine neue Variable erstellen, eine temporäre Variable, eine lokale Wir werden es DM Holes nennen. Es wird auf den Punkt gebracht. Und es wird ein Container-Array sein . Ich werde es hierher bringen, um das hier zu verbinden. Nun, was werden unsere temporären Kabel sein? Das werden die abgelegenen Bereiche und die Balkone sein. An diesen Orten sollten wir Feinde haben. Ich werde die temporären Kabel mitbringen und ich werde sie anhängen und dann wieder anhängen Verbinde die Balkonreifen. Es sollte kein In-Punkt sein, ich sollte vom Typ Structure S Room ST Rooms sein , ein Veränderungsvariablentyp, oder? Weil unsere Balkone das verbinden, wieder miteinander verbunden. Weil unsere Balkone und isolierten Bereiche im Grunde genommen Koordinatenlisten sind Also verbinde das hier, verbinde das hier, trenne das und schließe es für alle Fälle wieder an Und jetzt werden wir die Struktur aufbrechen und für jede für jede der Koordinaten Und wir brauchen ein paar Regeln, wie wir diese Elentore spawnen werden Nach welchen Regeln dürfen sie spawnen? Die Regel wird einfach sein. Als wir unser Labyrinth gebaut haben , ist das nicht passiert Wir haben einen hier. Wir haben einige Boxen, auf denen dieses Symbol steht. Also werden wir fragen. Hat die Box irgendwelche Symbole, weil wir eines haben, das zu stark leuchtet, eines, das zu schwach leuchtet, dieses, das an und aus leuchtet Also wählen wir diese Punkte, um unsere Höllentore zu spawnen. Und wir werden dieselbe Technik verwenden , die wir für die Lichter verwenden Sie spawnen also nicht sehr nahe beieinander. Kehren wir nun zu unserer Funktion zurück. Hören wir auf zu spielen und holen wir uns Kerker und ziehen unser aktuelles Plättchen Unser aktuelles Kachel, wir werden den Boden bekommen. Unten, zuerst werden wir Materialien besorgen. Wir werden eine Menge Dinge von diesem Stockwerk bekommen, also werde ich es am Anfang einfach vorlesen. Wenn wir nun zu unseren Stockwerken gehen, gehen wir für den Inhalt auf unsere Stockwerke. Wir können sehen, dass das Element des CG das Element Null ist, und das Gleiche gilt für alle Materialien, die dieses CG als diesen Schmutzboden, Element Null, haben können Da wir es so entworfen haben, wo ist hier das Labyrinth, und denken wir immer an Element Null, dieses wo ist hier das Labyrinth, Material. Wir werden fragen, ob dieses Material und unseren materiellen Instanzen entspricht, das wäre GL, was das CGL CGL in einem und das G in zwei einer dritten ist das CGL CGL in einem und das G in zwei einer dritten Aber wie mir mitgeteilt wurde, wird es in keiner Standardsituation verwendet Du wirst einen Ast anlegen. Sie werden einen Knoten verwenden, und wir werden diesem eine zusätzliche PIN hinzufügen und diese drei verbinden. Selbst wenn es einer von beiden ist, werden wir es wissen und unsere Kette von Ereignissen fortsetzen. Aber ich denke, das ist ein netter Zwischenstopp für diesen. Ich werde dich im nächsten sehen. Tschüss. 61. Element-Grundlagen und Datentabellen: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur Real Engine Five Procedural Erstellung von Real Engine Five Procedural Dungeon Action Apes Zuvor waren wir mit der Platzierung unserer Höllentore fertig Platzierung unserer Höllentore Und wenn wir anfangen, haben wir es auch repariert. Mit einem Breakpoint. Eigentlich haben wir keinen Breakpoint verwendet , um das Problem zu beheben, aber wir haben den Breakpoint demonstriert. Ich werde ihn entfernen. Setzen Sie die Stimulation fort und wir beheben das Problem mit dem leeren Material und dem Nullmaterial. Wir haben ein paar Höllentore, wir haben so ziemlich viele. Hier liegt ein Fehler vor. Lassen Sie uns herausfinden, warum das passiert. Lass uns zurück in unser Labyrinth gehen. Und wir fragen nirgends Ja, wir fragen nirgends, ob es sich bei den Koordinaten um einen speziellen Raum handelt Also geben wir hier oder Null ein und fügen auch die Regel hinzu, dass unsere Koordinaten in den speziellen Räumen enthalten sind . Besondere Fliesen. Das sollte jetzt nicht mehr passieren, denn wenn es sich um ein spezielles Plättchen handelt oder es sich neben einer Tür befindet, setzen wir das Material auf Null, leer und dann wird es nicht mehr erscheinen. Lass es uns noch einmal überprüfen. Das ist ein versteckter Raum. Das ist der Grund, warum niemand, kein Tor. Also scheint alles richtig zu sein. Und als Nächstes sollten wir anfangen den Rest der Dinge wie den Aufzug, die Box, M ein bisschen von unserer Funktionalität zu entfernen. Aber das zu tun. Aber ich brauche noch eine Sache, um mich fertig zu machen. Wir müssen die Gegenstände und die abwurfbaren Gegenstände erstellen, weil der Aufzug einen Gegenstand benötigt, die Kiste Gegenstände abwerfen muss und so weiter und so weiter Gehen wir also zunächst zu unserem Blueprint-Ordner, klicken mit der rechten Maustaste und erstellen einen Nennen wir diese Artikel. Rufen wir diesen Ordner auf, klicken mit der rechten Maustaste und erstellen einen Blueprint plus Schauspieler Und nennen wir diesen Artikel BP. Nun, dieser Blueprint-BP-Artikel, lassen Sie uns ihn öffnen. Dieser Bauplan wird zu allen Objekten. Und dafür werden wir eine so genannte Datentabelle verwenden. Für Neulinge ist eine Datentabelle wie eine Sammlung von Daten in Zeilen und Spalten Es ist im Grunde einer Tabelle ähnlich. Und deshalb braucht es ein Format für die Spalten. Und um ein Format für die Spalten zu verwenden, verwenden wir eine Struktur. Lass uns das wirklich schnell erstellen. Was wir zuerst erstellen müssen, ist eine Struktur, damit wir unsere Lumen in unserer Datentabelle definieren können Also werden wir eine Struktur verwenden, wir werden sie ST-Elemente nennen Geben wir sie ein. Diese Struktur wird nun die Informationen unserer Artikel enthalten. Zum Beispiel benötigen wir als Erstes einen Artikelnamen: Playnam Der Artikelname ist in Ordnung. Die zweite Sache, die wir benötigen, ist ein Gegenstand, bei dem es sich um einen Apfel handelt. Okay. Und was hat dieser Gegenstand für eine visuelle Darstellung? Es wird ein statisches Netz haben, also brauchen wir ein statisches Netz. Der Elementname sollte vom Typ Zeichenfolge oder Name sein, aber Zeichenfolge ist besser, wenn wir Elemente mit Bindestrichen und anderen Dingen haben Elemente mit Bindestrichen und anderen Dingen Also brauchen wir das Netz. Nennen wir es Mesh, und es wird von diesem Typ sein. Statisches Netz. Einfaches statisches Netz, keine statische Netzkomponente, und es wird eine Objektreferenz sein. Als Nächstes benötigen wir einen Sound für das Objekt. Zum Beispiel, welches Geräusch dieser Gegenstand macht , wenn ich ihn aufhebe, fallen lasse oder benutze. Wir könnten dafür zwei Sounds haben, aber wir werden nur einen Sound verwenden. Also werden wir den Sound des Gegenstands haben. Und das nächste, was wir brauchen, wäre ein Inventarbild. Also hätten wir I Mach. Ich werde zuerst die Namen erstellen und dann die Variablen setzen. Es werden natürlich keine statischen Nachrichten sein. Gegenstände klingen nach dem Bild eines Erfinders. Danach werden wir einer Variablen erklären, ob wir sie im Inventar auswählen können oder nicht. Nennen wir es Inventar. Dann wäre der letzte tatsächlich vorletzte, wenn der Artikel es ist. Also nennen wir es Taxi. Ich glaube nicht, dass das die Schreibweise ist. Ich brauche vielleicht ein K. Ich bin mir nicht sicher. Es ist in Ordnung. Es ist in Ordnung. Und wenn es skalierbar ist, dann brauchen wir auch einen Betrag Oh. Nennen wir diesen Betrag. Nun der Fall, dass es zum Inventar hinzugefügt wird. Wir werden Goldabholungen haben. Gold wird nicht in ein Inventar aufgenommen, sondern in einen Zähler auf unserem Bildschirm Oh, wählen wir dieses Aban. Gehen wir zum Sound. Es muss von und Bound Cube sein , weil wir Soundwürfel verwenden Und das erfundene Bild sollte vom Typ Textur sein. Eigentlich Textur zu D. Der Unterschied zwischen Textur und Textur zwei D , dass Textur eine allgemeine Kategorie ist , zu der Tube-Maps, zwei Erkennungen, Renderziele, Volumentexturen und vieles mehr gehören zwei Erkennungen, Renderziele, Volumentexturen und vieles mehr Wobei Textur für d ein von uns verwendetes Texturbild mit zwei De-Texturen spezifiziert ist ein von uns verwendetes Texturbild mit zwei De-Texturen Oh, ich werde das speichern. Ich werde den Stru tatsächlich schließen. Wir müssen Staab auf Goldbarren setzen, und wir müssen den Betrag auch auf Ganzzahl setzen zählen also eins, zwei, 34, und Staab ist ja Ich werde das speichern und schließen und zurück zu unseren Artikeln gehen Oh, für unseren Artikelplan. Nein, nein, nein, lassen Sie uns nicht zu unserem Artikelplan zurückkehren. Du musst es herbringen. Wir werden das Rennen vor dem Laufen beenden , weil das Spiel nicht laufen muss. Als Nächstes müssen wir, wie gesagt, eine Datentabelle erstellen, diese Sammlung von Informationen über Zeilen und Spalten. Oh, wir werden dorthin gehen, wo Mizellen sind. Hier ist es, Millneous, und wir werden Wenn wir eine Datentabelle auswählen, müssen wir eine Zeilenstruktur auswählen Also müssen wir unsere Zeilen definieren. Aus diesem Grund haben wir zuerst diese Struktur erstellt. Also werden wir unsere ST-Artikel auswählen. A, ich werde die DT-Artikel benennen. Lass uns das jetzt öffnen. Wie Sie sehen können, ist es momentan so gut wie leer, aber wir könnten aus einer externen Quelle importieren , wenn wir ein CSV-Dokument oder etwas Ähnliches hätten. Ich denke, Json gilt auch. Aber für uns werden wir nur einige Artikel erstellen. Wir werden ihre Werte und Botschaften manuell platzieren . Und was ich meine? Wir werden das hier drücken. Wir werden es etwa sechsmal drücken, wir werden sechs Artikel haben. Und der erste Artikel wäre, sagen wir, eins, und wir werden ihn Gold nennen. Nun, wie lautet der Zeilenname? Der Zeilenname wird verwendet, um die Informationen jeder Zeile in ihren Spalten abzurufen . Wir werden in der Praxis zeigen , wie es verwendet wird, aber wenn wir diese Datentabelle füllen. Oh, oder ein Netz, ich glaube, wir haben einen Beutel. P, wir haben einen Beutel. Und für den Sound des Gegenstands haben wir eine Münze. Hier haben wir eine Münze. Bild vom Inventar, wir haben unseren Beutel. Es wird kein Inventar mit zwei Personen sein. Es wird zu einer Benutzeroberfläche in unserem Viewport hinzugefügt, also werde ich nicht auf die beiden Inventare drücken. Und Saka-Blau, es wird nicht benötigt da es sich nicht um einen Inventargegenstand Und für den Betrag wählen wir gleich einen aus. Wir werden einen Code erstellen, um diesen Betrag zu ändern, aber das hängt vom Feind ab, der Truhe, davon, wer sie fallen lässt. Lassen Sie uns nun das zweite Objekt erstellen. Nun, das werde ich zwei sein. Das wäre unser HP-Pot-Trank. Eigentlich ohne s. Für das statische Meth haben wir, glaube ich, eine Portion Du hast eine Menge Zaubertrank. Im Grunde ist alles ein Trank. Nein, wir werden den Trank rot machen. Für den Sound des Gegenstands haben wir einen Flaschensound Ja. Für unser Inventarbild haben wir einen roten Trank. Nun, das wird dem Inventar hinzugefügt, und das ist es, und es ist von einem Arm von eins Jetzt wird unser Code unendlich viele Stapel erstellen Aber wenn wir eine MC-Steuer wollten, sollten wir sie als Variable in unserem Strukturarray haben Es wäre also eine Option in unseren Spalten hier. Nun, was den dritten Punkt angeht, werden wir ihm einen Namen geben. Drei. Es wird den Namen Speed tragen. Zaubertrank. Und für das Spiel haben wir einen blauen Trank Und für unsere Artikel werden wir die Flaschen wieder verwenden Und für das Inventarbild haben wir den blauen Zaubertrank. Wird Inventar sein. Aber nehmen wir an, dass der Speed Potion stapelbar sein wird Er wird auf einem Inventar stehen. Einmaliger Gebrauch. Nehmen wir an, dass wir von unserem Blautrank zwei Schlucke nehmen wollen, um ihn zu beenden Ich kann also einen Betrag von zwei angeben. Das wäre der Standardwert. Wenn ich es ins Inventar habe, kann ich es zweimal verwenden. Unser vierter Gegenstand wäre ich vier. Und das wäre ein Trank , der, wenn wir ihn trinken, explodiert und eine Explo-Wut auslöst Sagen wir um uns herum, und es tötet alle Zielpersonen Nennen wir es Wuttrank. Setzen wir sein statisches Netz auf diesen bräunlich-bräunlichen Trank Lass uns die Flaschen wieder benutzen. Und für die Inventur im März haben wir Ocean Dark Red. Okay, dunkelrotbraun, es könnte auf der Welt anders aussehen. Wir werden sehen. Also werden wir es dem Inventar hinzufügen und es wird nur einmal von Nutzen sein. Nun, was unseren fünften Artikel angeht, werde ich fünf sein. Und nennen wir das Trank. Weil es unsere verfügbare Zeit zum Weiterspielen erhöhen wird unsere verfügbare Zeit zum Weiterspielen Wenn die Zeit abläuft, werden wir sterben. Wir werden den gelben Trank verwenden. Wir werden die Flasche benutzen. Und für das Inventarbild werden wir das Ozeangelb verwenden. Es wird in unserem Inventar sein. Es wird eine Menge von eins und es wird nicht stapelbar sein Oh, als letzten Punkt nennen wir das I Und es wird den Namen E tragen . Es wird das Schlüsselnetz haben und der Gegenstand klingt. Ja, Schlüssel fallen hier vor uns ab. Die Inventarkarte sollte auch der Schlüssel sein. Es wird bis zur Menge von eins hinzugefügt und ist nicht stapelbar Lass uns sparen. Lassen Sie uns unsere Datentabelle schließen. Und ich denke, das ist es für diesen. Wir werden mit dem nächsten weitermachen, indem wir dafür sorgen , dass dieser Artikel-Blueprint zu allem werden kann Vorerst auf Wiedersehen. 62. Artikelverhalten und Hover-Widget: Hallo und willkommen zurück zum Game Design Workshop, prozeduralen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von echten Engine Five-Action-Rollenspielen Als letztes haben wir mit der Erstellung der Datentabelle und der Struktur für die Datentabelle Wir sagten, unsere Artikelinformationen wären der Artikelname, das Netz, der Artikelsound, das Inventarbild, die T-Inventarfrage, die wir haben, die Stapelfrage, die wir haben, und eine Menge Und dann haben wir hinzugefügt, dass wir diese Struktur verwendet haben, um unsere Datentabelle für die Volumen zu erstellen Und dann haben wir die Datentabelle manuell mit den Werten gefüllt , die wir für Elemente haben möchten Und wir haben das Blueprint-Element erstellt. Lassen Sie uns nun mit dem Blueprint-Element fortfahren. In diesem Teil des Tutorials werden wir die Komponenten und den Construction Creep füllen Wenn wir also unseren Artikel bewerben, wird er die gewünschten Eigenschaften haben Oh, lassen Sie uns ein wenig erklären, wie unsere Artikel funktionieren werden. Ich werde Paint öffnen. Nehmen wir an, der hier drüben ist unser Schauspieler. Das ist unser Artikelplan. Zuallererst wird es das Netz haben , das wir repräsentieren werden Wenn das also ein Apfel wäre, ein grüner Apfel, würde er das Maschennetz des Apfels verwenden. Da wir nun möchten, dass unsere Gegenstände etwas besser sichtbar sind, werden wir auch eine Punktlichtquelle hinzufügen, lassen Sie uns das mit Blau machen. Das ist eine Lichtquelle. Nun, lass uns korrigieren. Ich habe es korrigiert. Keine Kommentare. Das ist die Lampe, das ist die Lichtquelle. Aber das Besondere an dieser Lichtquelle ist, dass sie nur dieses Netz anzündet und es den Rest der Welt nicht beeinträchtigt. Die dritte Sache, die wir brauchen werden, ist etwas, das dem Spieler den Namen des Gegenstands zeigt. Also werden wir ein Widget erstellen, dem wir zwei Elemente hinzufügen , denen wir den Namen geben. Und schließlich werden wir eine Kollision um den Gegenstand herum haben, damit wir erkennen können , ob sich unser Spieler außerhalb der Kollision oder innerhalb der Kollision befindet , damit wir den Gegenstand auswählen können, der sich in Reichweite zwischen dem Spieler und dem Gegenstand befindet. Befindet sich der Spieler also innerhalb dieser Kollision, kann er ihn auswählen. Wenn er es nicht ist, kann er es nicht auswählen. Nein, lass uns das angehen. Wir werden bei Mesh brauchen. Nennen wir diesen Gegenstand Mesh. Du wirst eine Bierkollision brauchen. Rund um unseren Artikel. Gehen wir zu unserem Viewboard, damit wir ein bisschen besser sehen können Du wirst ein Punktlicht benötigen. Und wir werden ein Widget benötigen. Ein Widget werden wir etwas später machen. Wir werden Hide Debt besuchen. Und für das Dachbodennetz müssen wir es auswählen. Wir gehen zu den Details und gehen zur Kollision, und wir werden Atone auswählen Wir werden alles außer der Sichtbarkeit ignorieren Ama Eigentlich überschneiden wir uns nicht, wir werden blockieren. Als Nächstes sollten wir nicht zulassen, dass es Schatten wirft, weil es sehr teuer wird. Wir werden gehen, um Schatten zu werfen. Wir werden es ausschalten. Jetzt ist es an der Zeit, die Sache mit dem Blitzkanal zu machen. Wir wählen Kanäle aus, das sind die Lichtkanäle, welche dieser Kanäle dieses Objekt beleuchten, und wir werden den Kanal auswählen, der aktiv sein soll. Gehen wir zu unserem Point Light? Dann haben wir Kanäle hier oben. Wählen wir die beiden Kanäle zwei und wählen wir den Kanal Null. Alles auf der Welt ist also von Kanal Null betroffen. Aber dieses Licht wird in diesem Kanal nicht emittiert. Es wird in Kanal zwei emittiert , von dem unser Netz Licht empfangen soll. Schließ das, schließ, verändere die Welt grundlegend und gehe zurück zu unserem Punktlicht. Ich werde einige Einstellungen wählen, für die wir 1280 vorgegeben haben, Knes, Abschwächungsradius sieben, und der Rest wird so belassen Abschließend wählen wir die Kugel aus und setzen ihren Speerradius auf Aber das ist der Radius in dem wir den Gegenstand abholen können Und das ist ein ziemlich einfacher Code. Was wir also tun werden, ist diesen Code schnell und wirklich auszufüllen. Beginne das Überschneidungsereignis, wir werden eine Variable erstellen, eine Boulan-Variable, Aufrufe, die in der Lage , einen Bereich oder was auch immer auszuwählen Ich setze es auf Ich habe Endüberlappung ausgewählt. Ich wollte „Überlappung beginnen“ wählen. Aber ich brauche auch die Endüberlappung, also werde ich beide mitnehmen. Bei der Überlappung am Anfang wird es wahr sein. Wenn es unsere andere Komponente ist, hat es den Schlepper E, das ist unsere Spielerkapsel, und wenn es das Tag P hat, dann ist es der Gegenstand, der abgeholt werden soll Und das Gleiche werden wir bei der Endüberlappung tun. Beeilen Sie sich und stellen Sie das Flugzeug zum Abholen ein. Und da wir wollen, dass diese Kugel nichts anderes mit etwas anderem macht, können wir ihre Kollisionseinstellungen ändern Außerdem können wir standardmäßig alles ignorieren, außer dem p, das sie überlappen wird Denn wenn wir alles auf dem Computer belassen, wird ständig berechnet, ob sich die Sicht erwärmt, ob sich eine Kamerasturlinie erwärmt, ob Hilfsgegner zu Wortspielen werden, also werden wir die Gegner überprüfen Aber unsere Physik macht unsere Boxen kaputt. Wenn wir Fahrzeuge beschreiben würden, würde sie all diese Dinge ständig berechnen, auch wenn die Antwort nein lautet. Da es hier keine physikalische Kollision oder so gibt, haben wir nur statt Querian-Physik haben wir nur statt Querian-Physik Aber das ist die Standardeinstellung. Nein. Das nächste, was wir brauchen, ist das Widget. Lassen Sie uns also schnell dieses Widget erstellen. Gehen wir zu unserem Y-Ordner und wählen Sie mit der rechten Maustaste auf die Benutzeroberfläche, Widget-Blueprint Nennen wir das W G-Objekt. Antwort: Eigentlich Artikel-Widget. Dieses Wort. Wort des Artikels. Dieses Widget wird nicht für viele Dinge benötigt. Also lass es uns ganz schnell auffüllen. Lass es uns öffnen. Ist nur das von dem Widget, das keine Convas benötigt Das liegt daran, dass wir jemand auf der Welt sind, und wir können sie nach unserem Bauplan sterben lassen, nach anderen Orten, dann nach den Aber was wir brauchen werden , ist ein Knopf. Und für den Button brauchen wir ein XT. Und was wir tun werden, ist ein bisschen zu schummeln Wir wählen die Schaltfläche im Stil, einen ihrer Farben und dann Alpha-Null auf Normal, sodass wir nur den Artikelnamen sehen können Und wenn wir den Mauszeiger bewegen, lassen wir den Farbton einfach auf 0,1 stehen Es ist ein bisschen sichtbar. Wir sehen etwas hinter dem Namen. Nehmen wir an, wenn wir es drücken, kehrt es auf Null zurück. Alpha. Also, wir haben eine Schleife durch diese drei, als ob ich mit der Maus drüber gefahren bin. Es war, ich kann es sehen. Ich habe den Mauszeiger darüber bewegt, und als ich darauf geklickt habe, ist es wieder so geworden, als ob ich mit der Maus darüber gefahren bin Es fühlt sich also okay an. Nun zu dem, was die Welt eigentlich will weil wir wollen, dass dieses Widget über der statischen Nachricht angezeigt wird, über allem anderen, im Grunde über dem selbst. Wir werden es tatsächlich auf dem Bildschirm zeigen. Wir werden es nicht wirklich auf der Welt erscheinen lassen. Und um das zu tun, gehen wir zu unserem Widget auf unserem Artikel. Und wo Top sagt, wo es sein sollte welchem Ort sollte es in der Welt oder auf dem Bildschirm platziert werden ? Nein, wir wählen Bildschirm. Und ich habe einige vorgegebene Zeilengrößen , das wären 240. Für die Skala werde ich von allem einfach zwei wählen. Es muss auch ein bisschen höher sitzen. Sagen wir 112, es ist in Ordnung. Aber wir können die Ergebnisse noch nicht sehen. Wir werden sie sehen können, wenn wir die Artikel fallen lassen. Oh. Fahren wir mit den Informationen zum automatischen Ausfüllen des Konstruktionsbildschirms fort. Dies ist das erste Mal, dass wir unsere Datentabelle verwenden. Wir werden Daten abrufen. Und aus der Datentabellenzeile wählen wir für Datentabelle unsere Daten-Tabellen-DT-Elemente aus, und das gibt uns hier eine Liste, die wir eigentlich nicht verwenden werden, und wir werden den Rohnamen zu einer Variablen heraufstufen. Der ganze rohe Name, der rohe Name ist ein guter Name. Wenn ich jetzt kompiliere, können Sie sehen, dass es seinen ursprünglichen Wert von I One beibehalten hat. Aber wir werden das extern ändern wollen, also werden wir es instanzeditierbar machen und beim Spawn verfügbar Aber wenn wir auf den Gegenstand antworten, können wir den Namen des Gegenstands wieder von dort aus ändern , wenn wir ihn spawnen Somit kann jeder der Schauspieler, die den Gegenstand spawnen, eine eigene Definition dafür haben , was er spawnen wird Jetzt werde ich für die Veröffentlichung von Objekten auf der Bibelliste werben. Daten. Dieser Artikel kennt seine eigenen Daten. Und wir werden die Objekte und das statische Netz abrufen, eine Information, die wir aus unseren Daten benötigen. Also werde ich die Struktur durchbrechen. Und stelle die Mesh-Informationen hier her. Ich werde das hier verbinden. Jetzt kannst du sehen, ob ich zum Viewport gehe und kompiliere. Der kleine Beutel ist hier drüben aufgetaucht. Weil unser Standard-Zeilenname I One ist. Wenn ich I two auswähle, erscheint der rote Trank Wenn ich I drei auswähle, erscheint ein blauer. Schauen wir uns alle 56 an. Hey, schau, okay. Ich denke, das ist vorerst eine nette Belastungsgrenze. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 63. Animieren der Truhe: Hallo, und willkommen zurück zum Game Design Workshop, dem und willkommen zurück zum Game Design Workshop, Real Engine Five Procedural Dungeon Action ARB Zuvor waren wir mit unserem Artikel fertig. Wir haben den Code für die Sortierung der Artikeldaten anhand unserer Datentabelle fertiggestellt . Wir haben eine Variable verwendet, um ihren eigenen Namen zu erhalten, und die auch beim Spawnen angezeigt wird, sodass wir sie setzen können, wenn wir das Objekt spawnen Und anhand dieser Daten haben wir die Daten auf dem Mesh verwendet, um die statische Mesh-Komponente unseres Blueprints festzulegen die statische Mesh-Komponente unseres Blueprints Wir haben auch das Widget hinzugefügt und das Widget erstellt, also Objekte, die wir verwenden werden, um sie der Welt zu zeigen. Wir haben gesagt , dass es im Grunde auf dem Bildschirm angezeigt wird, sodass wir keine zusätzlichen Teile erstellen müssen Es wird über jedem statischen Netz angezeigt. Es gibt andere Möglichkeiten, das zu tun, aber dafür müssten die Materialien etwas komplizierter durchgehen . Wir werden diese Domain betreten, damit unser Spieler durch Wände sichtbar sein kann, aber wir wollen das jetzt bei den Widgets machen. Oh, da wir schon bei den Gegenständen sind, denke ich, dass es ein guter Zeitpunkt ist, um zu zeigen, wie wir sie spawnen werden Und ich denke, es ist an der Zeit, die Truhe fertigzustellen, den Bauplan für die Truhe, um das zu demonstrieren Wir gehen zu unseren Requisiten, Ordner-Requisiten in den Ordner-Blueprints, und wir werden unsere große Truhe öffnen Wenn du dich erinnerst, haben wir in unserem Viewport unser statisches Mesh für den Brustkörper hinzugefügt Aber wir brauchen auch eine Hülle, ich glaube, sie heißt auf jeden Fall den oberen Teil, den wir animieren werden, wenn wir die Truhe öffnen Ich werde ein weiteres statisches Mesh hinzufügen. Und wegen seiner statischen Netzeigenschaft werde ich das Oberteil auf der Brust wählen. Und ich werde es direkt über der Brust positionieren. Wie Sie sehen können, befindet sich der Erbsentopf bereits am Rand der Rückseite. Aber das hilft uns, wenn wir es hoppeln lassen wollen. Ich bin Flip. Das hilft uns , wenn wir es rotieren wollen. Und ich muss das besser auf fünf Nickerchen umstellen besser auf fünf Nickerchen Ja, ich denke, es ist in Ordnung. Da drüben. Ich werde kompilieren und speichern. Nun, da wir es für den Gegenstand benötigen, ist eine Kollision mit dem Gegenstand die Ebene im Wutbereich, genauso wie wir es für die Truhe brauchen Also kopiere ich diese Kugel aus dem Bauplangegenstand und füge sie auf die große Ich werde es so einfach lassen, weil das die gleiche Entfernung ist, in der wir sie verwenden wollen Und der nächste Teil, den ich von hier kopieren werde, ist eigentlich das Widget, weil es dasselbe Widget sein wird, ich werde es hier einfügen. Und außerdem benötige ich den Code für die Kollisionen der Kugel Ich werde das kopieren und ich werde es hierher bringen. Nun, diese beiden Variablen diese eine Variable, existiert in unserem Blueprint eigentlich existiert in unserem Blueprint Also werde ich rechten Maustaste darauf klicken und sagen, Variable erstellen, in der Lage zu wählen, wie sie geöffnet werden soll Also um das zu ändern. Und dieser Teil ist erst dann möglich, wenn wir mit ihm interagieren können. Und jetzt, indem wir „Interagieren“ sagen, öffnen wir ein neues Kapitel. So werden wir mit unseren Gegenständen interagieren. Unser Spiel ist ein Mausklick-Spiel oder es ist wie ein Daloclon Das bedeutet also, dass wir, wenn wir klicken, mit dem interagieren möchten, was sich unter unserer Maus befindet Da wir uns in der isommetrischen Ansicht befinden und abgewinkelt sind, wird das nicht sehr einfach sein Wir werden ein paar Mathe , ein paar Mathe machen müssen, dem Punkt zu kommen, den Aber nach all diesen Berechnungen und Berechnungen kommt es darauf an, dass wir ein Ereignis senden und mit dieser Requisite, der Kiste oder dem Gegenstand interagieren der Kiste oder dem Gegenstand Und das werden wir tun, indem wir die Blueprint-Schnittstelle verwenden, eine Blueprint-Schnittstelle , die wir für die Artikel entwerfen werden Da unsere Artikel unterschiedliche Darsteller sein werden , ist das ein netter und optimaler Weg, das zu tun Es gibt andere Möglichkeiten, das zu tun, aber in solchen Szenarien werden häufig Blueprint-Schnittstellen verwendet, werden häufig Blueprint-Schnittstellen verwendet und sie sind irgendwie die bessere Technik Gehen wir zu unserem Inhaltsbrowser. Gehen wir zu unseren Bauplänen. Gehen wir zu unserem BI-Ordner. Lassen Sie uns mit der rechten Maustaste klicken und eine Blueprint-Schnittstellenoperation erstellen. Hier sind wir. Nennen wir es Bi Item Cs. Lass es uns öffnen. Lasst uns eine Veranstaltung namens Inter erstellen. Jetzt haben wir dieses Interface, fügen wir es unseren beiden Bauplänen hinzu, der großen Truhe und dem BP-Gegenstand Lassen Sie uns dazu mit dem BP-Objekt beginnen. Gehen wir zu den Clus-Einstellungen. Gehen wir zu unseren implementierten Schnittstellen und drücken auf Hinzufügen Wählen wir dann Ich interagiere Entschuldigung, der Artikel kommt. Jetzt kompiliere und speichere ich, und ich mache dieselbe große Truhe. Ich habe genau den gleichen Typ über Interact auf dem Artikel kommt gemacht. Lass uns kompilieren und speichern. Jetzt haben wir unter unseren Funktionen unsere Schnittstellen. Ich öffne die Interaktion und doppelklicke darauf , um ein Ereignis zu erstellen. Wenn wir also die Nachricht zur Interaktion senden, die erste Frage: Ist der Spieler in Reichweite? Ich lege einen Branch an und wähle A aus, um den mit dem Branch verbundenen zu öffnen. Wenn wir uns nun in Reichweite befinden, müssen wir wissen, ob wir bereits interagiert haben , denn seit der Animation wir abspielen werden, um die Truhe zu öffnen, wollen wir diese Animation nicht zurücksetzen Wir erstellen einen weiteren Bullen, eine Kopie, fügen sie ein, um sie zu öffnen und benennen sie interaktiv Ich werde das herbringen. Ich wähle ein T. Und ich wähle hier ein und notiere es mir. Das heißt, wir müssen in der Lage sein, zu öffnen, und wir dürfen nicht interagieren. Wenn das also wahr ist, wird Falsch zurückgegeben und Falsch zurückgegeben. Das ist falsch, dann wird es wieder falsch. Sie müssen beide wahr sein. Das nächste, was ich tun werde , ist Interaktion zwischen Sets. Jetzt, wenn sich unsere Truhe öffnet, sollten wir ein Geräusch spielen. Ich werde Sound abspielen. Und wir haben ein Brustgeräusch. Und als Nächstes müssen wir das Widget verwenden. Also werde ich das machen, damit er dann das Widget erledigen kann. Eigentlich können wir diese Komponente auch zerstören , weil sie nicht mehr benötigt wird. Nachdem wir es unsichtbar hingesetzt haben. Und jetzt müssen wir unsere Brust animieren. Also werde ich einen Zeitplan mitbringen. Ich werde es von Anfang an mit der Wiedergabe verbinden und diese Timeline eingeben. Ich werde einen Flow-Truck bauen. Ich werde der Variablen zwei Punkte hinzufügen. Der erste wird Null und Null sein. Der zweite würde, sagen wir, 1 Sekunde dauern. Eine Menge, sagen wir Punkt p 7 Sekunden, und der Wert wäre eins. Lass es heranzoomen. Lass uns den letzten Regen nehmen oder er tut nicht die ganzen 5 Sekunden. Lass uns zum Update gehen. Oh. Wir bringen unser Mesh-Modell mit, das ist das Oberteil der Box. Und wir werden die relative Rotation einstellen. Jetzt müssen wir keine Variablen oder so etwas speichern. Wir haben das fest codiert. werden Theat oder Alpha alarmieren, wir werden den Truck benutzen Wir werden den kürzesten Weg nehmen. Lass uns unsere Brust überprüfen. Sagen wir jetzt 91 x. Wir wollen -20. Minus t. Ich möchte von 90 ausgehen. Auf 20. Nun, ein paar Dinge, die wir tun müssen auch zu unserem aatischen Netz des Wurzelkörpers zu gehen sind auch zu unserem aatischen Netz des Wurzelkörpers zu gehen und zu seiner Kollision zu gehen und es zu verändern Wir werden den benutzerdefinierten Reset auswählen . Ich werde alles auf Ignorieren stellen, außer der Sicht, der Kamera und dem Teich, weil wir wollen, dass die Truhe uns den Weg versperrt. Wir sollten nicht in der Lage sein, es zu passieren. Oh, ich lasse das Dach stehen, ohne dass es zu Kollisionen kommt. Wenn wir es so belassen, dass es keine Kollision gibt, besteht die Möglichkeit , dass wir es nicht anklicken können. Aber wir sehen. Ich möchte nicht, dass der Spieler durch die offene Truhe blockiert wird . Aber wir werden sehen, wie es funktionieren wird. Nun stellt sich die Frage, was passiert, wenn ich die Truhe öffne? Die Sache, die wir passieren , ist, dass wir die Gegenstände spawnen werden. Wir können immer eine Anzahl von Objekten als Präfix festlegen , sodass sie immer auf diese Weise telefonisch erreichbar sind. Aber wenn wir unsere Labyrinth-Informationen haben, können wir den Level unseres Labyrinths ermitteln und ihn entsprechend anpassen Also werde ich eine neue Variable erstellen. Ich werde es Labyrinth nennen. Ich werde es vom Typ Labyrinth-Generator machen. Sein Generator. Oh. Okay. Hier war Objektreferenz, der Basisgenerator, und ich werde ihn auf Sone und Instance Edit veröffentlichen Eigentlich die erste Instanz bearbeiten denn wenn die Instanz nicht editierbar ist, wird das zu einem Fehler führen. Wenn ich zum Kompilieren zum Kompilieren zum Kompilieren darauf klicke, wird es angezeigt, es wird angezeigt, es wird auf Son verfügbar sein, aber es wird nicht instanziert es wird auf Son verfügbar sein, aber es wird nicht Es muss von der Instanz editierbar sein. Auch hier gilt: Wenn wir einen Blueprint in die Map übernehmen, handelt es sich um eine Instanz des Wenn wir also möchten, dass der Wert für jede Instanz unterschiedliche Zahlen hat, muss er für jede Instanz editierbar sein Gehen wir nun zurück zu unserem Labyrinth-Generator. Finden wir heraus, wo wir die Truhe spawnen, die meiner Meinung nach für Requisiten funktioniert Der Anfang war eine große Truhe. Das werde ich auffrischen. Kein Kompilieren. Dave. Ich werde mich nochmal auffrischen. Und hier haben wir es. Also für den Mz-Generator werden wir Gesundheit verwenden Jetzt haben wir einen Hinweis auf unseren Me-Generator in unserer Truhe. Ich denke, das ist ein guter Haltepunkt für diesen. Ich sehe dich im nächsten. Auf Wiedersehen. Oh. 64. Brustmechanik und Item-Drop-System: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Erstellung von prozeduralen Dungeon-Action-Rollenspielen Zuvor haben wir unsere Kette von Ereignissen für unsere Interaktionen gestartet von Ereignissen für unsere Wir haben eine Blueprint-Schnittstelle erstellt , die wir item coms nannten Und innerhalb dieser Schnittstelle haben wir eine Funktion namens interact erstellt Wir haben diese Schnittstelle für unsere große Truhe und unsere Baupläne für Gegenstände implementiert unsere große Truhe und unsere Baupläne für Gegenstände und die Kette der Ereignisse gestartet, die große Truhe Also haben wir nach der Event-Interaktion gefragt, ob wir uns in Reichweite befinden, und wir interagieren derzeit nicht Und wenn die Bedingung zutrifft, haben wir Interact weiterhin auf true gesetzt, einen Sound abgespielt, das Widget ausgeblendet und es auch zerstört. Dann haben wir eine Zeitleiste erstellt , um unseren Test-Stopp zu animieren Wir haben auch eine Variable namens Maze Generator erstellt, die den Verweis auf unseren Generator speichert, den, der die Truhe gesät Lassen Sie uns nun das Play-Event starten und eine Variable erstellen , die wir diese maximale Anzahl von Objekten nennen Lassen Sie uns das Startspiel so einstellen , dass es einen zufälligen Bereich hat. Zufällig im Bereich. Fangen wir damit an, dass es eine große Geste ist. Es sollten mindestens, sagen wir, drei Gegenstände wegfallen. Wenn etwas Platz, und das Maximum sollte ein Labyrinth-Generator-Level Generatorstufe unseres Labyrinth-Generators sollte der Stufe unseres Generators plus Beim ersten Mal würde es also 3-4 Gegenstände fallen lassen. Weil unser Hauptgenerator nicht Null startet, sondern bei Eins. Wenn wir zum Hauptmenü gehen, können wir sehen, dass wir beim Klicken auf die Schaltfläche Start den ersten Generator starten, wir haben die Generatorstufe auf eins Es ist endlich soweit. Gehe zu unserer Timeline, dem fertigen Event und zu unserem ersten Artikel. Wir werden den Spawn-Darsteller aus dem Unterricht benutzen. Wir werden die Transformation aufteilen und einen Standort für den Anruf ermitteln Zur Verwendung als Spawnpunkt für die Ortung. Das bedeutet, dass unser Gegenstand tatsächlich in unserer Truhe erscheint , wie in der Null, Null, den lokalen Koordinaten dieses Bauplans , also dass wir hier sind Aber das ist kein Problem, denn wir werden eine Mechanik einrichten in unseren Gegenständen eine Mechanik einrichten, um einen Platz neben unserer Truhe zu finden Aber dieser Code wird auf unseren Artikeln stehen. Nein. Wir antworten auf den ersten Artikel. Es wird der Artikel der Klasse P angezeigt. Und wir haben unseren Zeilennamen , der I sechs ist, was eigentlich unser Schlüssel ist, nicht wahr? Weil I six die Standardeinstellung ist und es der Schlüssel ist. Und das ist der einzige Ort , an dem wir den Schlüssel erzeugen werden Wir werden ihn in sechs behalten und wir werden ihn zu unserer To-Destroy-Liste hinzufügen Um das zu tun, holen wir uns unsere MA-Generator-Referenz. Wir werden die Schauspieler dazu bringen, es daraus zu zerstören, und wir werden zu diesem Array den Rückgabewert des erzeugten Schauspielers hinzufügen diesem Array den Rückgabewert des erzeugten Schauspielers hinzufügen Für den Rest der Artikel kopiere ich einfach den BP-Artikel mit dem Telefondarsteller Ich werde den Standort des Darstellers verbinden und wir werden eine benutzerdefinierte Schleife erstellen. Oder wir können es sogar in einen For-Loop-Act zu Tom oder Loop umwandeln. Und siehst du, was passiert ist? Wenn ich diese beiden so verbunden habe, aber ich wollte einen Knoten hinter diesen beiden haben . Also ziehe ich einfach von hier, ich mache den Knoten oder loope, und schon hat es automatisch verbunden, was ich tun wollte. Aber es ist immer gut zu überprüfen, ob die Verbindungen korrekt sind. Für den letzten Index verwenden wir nun die maximale Anzahl von Elementen. Für den ersten Index verwenden wir die Nummer eins, da wir bereits ein Objekt erzeugt Wenn wir also drei Objekte spawnen wollen, sollte es bei einem beginnen Denn wenn es bei Null anfangen würde, würden wir einen zusätzlichen Gegenstand spawnen Jetzt müssen wir für jedes gespawnte Objekt erneut Schauspieler hinzufügen, um eine Kopierbasis zu zerstören. Dieser zusätzliche Nicken Wir werden diesen Wert hier hinzufügen und den Schauspielern zur Zerstörung zur Verfügung Gegenüber diesem Weg. Und der Grund, warum ich es umgekehrt machen muss , ist, wenn ich eine Verbindung herstelle, das ist ein Wildcard-Knoten. Also, mit was auch immer ich mich verbinde, das Erste, womit ich mich verbinde, wird es den Datentyp des Dings ermitteln. Hier geben wir den Objekttyp VP-Objekt zurück, wohingegen unsere Liste der zu zerstörenden Akteure Schauspieler sind. Ein Akteur steht in der Hierarchie des VP-Elements ganz oben. Ich kann also nicht zu etwas in den unteren Teilen eine obere Hierarchie hinzufügen . Als ich das verbunden habe, wurde daraus ein VP-Items-Objekt , bei dem das Artikelobjekt kein Akteur sein kann, aber der Akteur ein Artikelobjekt sein kann. Also werde ich das trennen, ich werde es hier verbinden und dann das verbinden. Alle unsere Schauspieler, die wir hervorbringen, werden zu den zu zerstörenden Schauspielern hinzugefügt Nun, welche Elemente ich anhand der Roh-ID und des Namens werde ich auswählen und für die Wildcard, für Objekte die Wildcard nach dem Zufallsprinzip Es wird 0-4 sein, drei bis vier Cos 01234. Und fangen wir mit dem Gold an, das ich gewonnen habe. Wissen Sie was? Da wir wissen, dass unsere Tabelle mit I beginnt, kann ich ein Klingeln verwenden, wenn ich es richtig tippe. Was bedeutet eine Zeichenkette? Bedeutet, dass wir eine ausstehende Zeichenfolge A mit Zeichenfolge B sind. Wenn ich hier I einfüge und die ganze Zahl verbinde und ich habe I und eine Zahl, und ich kann das hier direkt verbinden, anstatt das Gefühl zu haben und ich kann das hier direkt verbinden, anstatt , dass alle diese Liste auswählen Und das wäre der Stein unserer Gegenstände wenn wir auf unsere Brust klicken Wir werden das alles später überprüfen und alles, was benötigt wird, debuggen Aber vorerst werden wir es so lassen , wie es ist. Der einzige Teil, der momentan fehlt, ist der Name der Truhe auf dem Widget. Weil wir hier ein Widget haben. Wenn es erscheint, müssen wir ein Name sein, und die Widget-Klasse ist nicht. Bin bei dem Artikel. Ja, es ist dasselbe. Ich habe die Widget-Klasse für diese beiden Widgets nicht ausgewählt. Du wirst es jetzt tun. Wir werden es W G. Item World nennen. Das ist ein Widget. Pi Spare auf einem Stapel, und hier die gleiche Welt. Speichern und kompilieren. Oh mein Gott. Es ist eine Standardbewegung , weil sie hier und hier ist. Und geht automatisch. Wie dem auch sei, lass uns zum Widget gehen und eine Funktion erstellen. Im Graph-Event natürlich das Event-Diagramm des Designers. Nennen wir diese Funktion. Das ist jetzt, das ist wieder ein bisschen überflüssig. Ich werde eigentlich zuerst zum Designer gehen. Ich werde den Text auswählen , weil er keine Variable ist. Es sollte eine Variable sein, damit ich eine Engine erstellen kann. Benennen wir es auch nach dem eigentlichen Textelement. Und ich könnte auf unserem Blueprint sein und es einfach aus dem Widget holen, diesen Teil und den Text einfach ziehen Auch hier bereit. Nun, wie Sie sehen können, ist es neu gemacht, es ist im Grunde dieselbe Funktion. Aber ich muss das T-Element nicht auf diese Weise aus dem Widget ziehen . Nein, es wird die Dinge ein bisschen verbessern. Nun, um den Text auf unsere Brust zu legen. Wir müssen unser Widget mitbringen. Und wie bei der untergeordneten Komponente müssen wir herausfinden, was sich in der untergeordneten Komponente befindet , was ist der Schauspieler? Was ist der Kinderdarsteller der untergeordneten Komponente? Das Gleiche müssen wir für das Widget tun. Dies sind Komponenten, Widget-Komponente, Child-Actor-Komponente, statische Mesh-Komponente, auch hier dasselbe, wir mussten hinzufügen, welche Art von statischem Mesh. Es sind Zellen, die die Informationen enthalten, aber sie wissen nicht, was sie enthalten. Wir müssen sie fragen. Um danach zu fragen, holen wir uns ein Widget. Und dann müssen wir sehen, ob das Widget, das wir bekommen haben, unsere WG-It-Artikelwelt ist , etwa so. Also werde ich in die WG-Artikelwelt casten. Wir wissen, dass das alles ist, was uns gelingen wird. Ich werde es in Pure Cast umwandeln. Selbst wenn nicht, haben wir Erfolg, aber wir müssten etwas Code implementieren. Aber von hier aus werde ich nur eine SMS schreiben. Jetzt ist es so hier, einfacher. Weniger Knoten. Je mehr Notizen Sie haben, desto mehr kann der Turm nach einem Punkt zu einer echten Turmverteidigung werden. Also für den Text, wir nehmen Truhe und das war's. Kompilieren und speichern. Und was die Programmierung angeht, ist unsere Truhe bereit. Wir werden jetzt nicht damit spielen können . Wir werden es nicht sehen können. Das ist schade, aber wir werden wenn unser Charakter aktiviert ist, und wir werden all das taggen können , nur für den Fall, dass es nicht funktioniert Auf Wiedersehen, sing dir den nächsten. 65. Versteckte Zimmertruhen: Hallo und willkommen zum Game Design Workshop und zu den prozeduralen Call für die Erstellung von Action-PZs für echte Engine Five-Dungeons Action-PZs für echte Engine Five-Dungeons In der vorherigen Lektion haben wir mit der Erstellung unserer großen Truhe für VP abgeschlossen Wir beginnen mit dem Speichern einer Variablen die die Anzahl der Elemente angibt, die wir verschieben, und wir finden einen Zufallswert zwischen Drei und Mx, was der Generatorstufe plus drei entspricht Dann setzen wir Text in unser Widget. Und schließlich haben wir die Spawn-Darsteller-Funktion am Ende unserer Timeline hinzugefügt die Spawn-Darsteller-Funktion am Ende unserer Timeline Wir haben das erste Objekt als Schlüssel hinzugefügt , den wir immer löschen möchten, und dann haben wir diesen Akteur zu dem Array hinzugefügt, das zerstört werden soll Dann haben wir eine Viererschleife mit der maximalen Anzahl von Elementen als letzten Index und dem ersten Index erstellt der maximalen Anzahl von Elementen als letzten Index , so wie sie sind, da wir den ersten Schlüssel, das erste Element erzeugt haben , und dann fuhren wir fort indem wir die restlichen Elemente erzeugt und sie der Liste der zu zerstörenden Akteure hinzugefügt Wir haben einen Pend aus I plus einer zufälligen Ganzzahl 0-4 erstellt , um ein zufälliges Element über den Rohnamen zu erhalten, weil unsere Datentabelle I und eine Zahl heißt und dieser Teil einen kleinen Fehler enthält. Wir beginnen bei Null, wenn wir bei eins beginnen wollen, und enden bei Punkt fünf. Auch hier haben wir einen Bereich von vier, weil unsere Datentabelle zu den Elementen unserer Datentabelle gehört. Wir beginnen bei I eins, zwei, I sechs, aber wir wollen zufällige Elemente 1-5 Jetzt, da wir die große Kiste haben. Wir können es tatsächlich duplizieren und die kleine Kiste daraus machen. Ich gehe zu den Requisiten. Ich gehe zu unserer großen Truhe und ich werde sie duplizieren und sie PP-Truhe nennen. Wir machen das große. Lass uns das jetzt öffnen. Lassen Sie uns ein paar Einstellungen ändern. Lassen Sie uns die Mindestanzahl auf eins und den Generator auf eins plus eins setzen. Es werden also ein bis zwei Gegenstände und jedes Level mehr hinzugefügt. Und da wir es in den versteckten Räumen spawnen werden , sollten wir die Regel aufstellen, dass dieser immer einen Zeittrank erzeugt, unserer Datentabelle die I Five ist Geh zurück zur Truhe und setze die beiden auf I Five statt Jetzt lassen wir den Rest gleich, sodass du vielleicht zwei Zeitportionen abzapfen kannst , das ist nicht wirklich wichtig Und wir gehen zu unserem Labyrinth-Generator. Wir gehen zu Proponer. Wir werden diesen Teil kopieren, der die Zimmer hat, aber wir brauchen die Räume nicht Wir brauchen nur all die. Wir brauchen keine Anweisungen, aber wir werden sie ändern. Lass es uns hier einfügen. Für das Array brauchen wir die Räume, ich glaube, wir benennen sie. Nimm unsere Arrays. Biden-Zimmer. Aber es ist ein ST, also werde ich das abschalten Ich werde das hier verbinden. Ich hier, ich werde eine Pause machen und ich werde das Tempo der For-Schleife kopieren und es so verbinden. klassisches Setup, und hier müssen wir den Blutdrucktest durchführen Wir brauchen die Anweisungen nicht. Wir müssen diese beiden Pins hier verbinden. Und wir werden hier noch eine weitere Regel aufstellen, die besagt, dass unsere aktuellen Koordinaten nicht in der Anordnung der speziellen Gänge enthalten sind in der Anordnung der speziellen Gänge enthalten Also nur für den Fall, dass einer unserer Spezialgassen als versteckt gilt. Wir werden nein sagen. Wir werden es nicht spawnen. Ich werde das hier auf der kompletten Seite verbinden. Dies könnte auch in einer Reihenfolge erfolgen. Jede Sequenz sollte eines dieser Segmente ausführen. Aber wir werden es vorerst so belassen. Wenn wir Compile spielen, schauen wir mal, ob wir die kleine Truhe in den versteckten Räumen spawnen Truhe in den versteckten Räumen Während wir im versteckten Raum sind, haben wir es hier. Es gibt keine Truhe. Aber wir sehen das Widget, aber es gibt eine Truhe. Welche Truhe ist das, schätze ich , das ist die Endtruhe. Lass uns sie finden Ende der Truhe. Da ist die Truhe. Da ist sie. Es sieht ein bisschen klein aus. Es ist eine große Truhe, aber sie sieht ein bisschen klein aus. Wie dem auch sei, lasst uns herausfinden, warum die kleine Truhe nicht in den versteckten Räumen Des Gameplays. Es wird wieder etwas Einfaches sein, wahrscheinlich ein falscher Zweig. Ja, ich habe gefragt, ob es enthält und ob es enthalten muss, nein. Das sollte nicht falsch sein. Lass uns spielen. Ich sehe hier ein verstecktes Zimmer und es hat eine Truhe, die genauso aussieht. Lassen Sie uns das jetzt reparieren. Lass uns zu unserer neuen Truhe gehen. Ich glaube, wir haben eine andere Truhe. Ich werde nicht so suchen, ich gehe zum Meshes-Ordner, hier gibt es statische Meshes, wir sind da und da ist noch eine Truhe wir sind da und da ist noch eine Nein. Jetzt schauen wir nochmal nach und es ist da. Es ist nicht so, dass wir eine Kamera hinzugefügt haben. Wir haben zu viel für Gap gebetet und es wurde hinzugefügt. Ich werde das für die Unterseite und das für die Oberseite verwenden. Ich werde sie ein bisschen näher bringen, nach vorne. Und es sieht gut aus. Nun, sie sahen ein bisschen klein aus. Was wir tun können, ist zur großen Truhe zu gehen und ihr E auf 1,5 zu setzen. Wenn das zu viel ist, 1,25. Von dem Stück Okay. Nein, es ist überhaupt nicht okay. Jetzt ist es besser. Lass uns das auch für diese Truhe machen 1,25 Ordnung. Während. Drücken wir Play. Ich schaue nach und sehe kein verstecktes Zimmer. Das ist ein verstecktes. Wir haben unsere kleine Truhe und irgendwo ist die große. Finde das auch Hier ist es. Wie wir sehen können, erscheint es neben einer Tür. Wir müssen auch die Regel für die Türen dieser Truhe hinzufügen auch die Regel für die Türen dieser Truhe Und es ist immer noch ein bisschen klein. Es ist nicht so beeindruckend. Der Truhenschlüssel sollte größer sein, also mache ich ihn 1,5 unter 1,5. Aber in der Größe der kleinen Truhe sah es ziemlich gut aus. Das war's, lass uns in unser Labyrinth gehen. Gehen wir zu der Stelle, an der wir die Anweisungen für die Truhe verwenden, was gleich am Anfang bei der Erstellung von Kernen für die Truhe steht am Anfang bei der Erstellung von Kernen für die Truhe Wir haben die Regeln hier. Wir prüfen, ob es in den speziellen Kacheln enthalten ist. Wir müssen das funktionsfähig machen, wir haben es nebenan gemacht. Wir werden die Koordinaten hier verbinden. Setze oder rein, denn wenn es ein spezielles Plättchen oder wenn es neben der Tür liegt, spawnen Sie es nicht Füge den Schatzindex nicht hinzu. Kompilieren speichern. Wir werden nur spielen , um die Größe zu überprüfen Wir wissen, dass die Regel funktioniert. Hier ist es, und es ist ein bisschen klein. Es ist zu klein. Also gehen wir bis zum Äußersten und setzen die Skala auf zwei, und das wird zwei sein, egal ob es zwei ist, es sei denn, unser Spieler kann nicht aber wir werden es wieder ändern. Jetzt ist alles in Ordnung. Nur um es mir anzusehen. Unsere Brust. Hier ist es, richtig. Das ist jetzt eine große Truhe. Das können wir leicht in den Korridoren finden und erkennen. Dieser steht neben einem Turm, auch Höllentor. Wie dem auch sei, in der nächsten Lektion sollten wir damit beginnen, den Mechanismus zu entwickeln , mit dem die Gegenstände fallen können Aber lassen Sie mich vorher eine ganz kurze Erklärung geben. Wir wissen also, was wir als Nächstes tun. Wir wissen, was wir programmieren werden. Ich werde Farbe mitbringen. Und lassen Sie uns bedenken, dass dies wieder unser Block ist. Das ist unser Haufen, und unsere Truhe spawnt irgendwo hier. Wenn wir unseren Gegenstand spawnen, wird er genau hier in der Mitte zersägt Wenn wir drei D V sehen, nehmen wir an, dass wir das abheften, es geht so runter und wir haben unsere Truhe hier, die ist offen Ich würde das nie abdecken, aber wie dem auch sei, und unser Gegenstand erscheint hier. Wir werden ein System entwickeln, bei dem wir an der Stelle , an der der Gegenstand erscheint, einen zufälligen Punkt in der Luft bekommen, der polarisiert wird. Und von diesem Punkt an werden wir mit Linienverfolgung in Richtung Boden beginnen Aber wir werden die Linienverfolgung in einem Radius um die Box herum durchführen. Wir werden durchgehende Linien erhalten, aber viele Punkte, viele Punkte rund um das Feld, sodass wir den Radius definieren werden. Und wenn wir die Stelle gefunden haben , an der wir den Gegenstand landen können, und er wird auf dem Boden liegen, werden wir sagen, dass das der Ort ist, an den du gehen musst. Und um das zu tun, werden wir eine Animation machen , bei der der Gegenstand von hier bis zu diesem Punkt geht. Aber das werde ich beim nächsten machen? Das ist vorerst genug. Auf Wiedersehen. Wir sehen uns dann. 66. Objekt-Drop-Animation in der Nähe der Brust: Hallo und willkommen zum Game Design-Workshop und zum echten Engine Five-Procedural Dungeon-Action-RPG-Erstellungskurs Dungeon-Action-RPG-Erstellungskurs Zuvor haben wir die kleine Truhe hinzugefügt und einige Fehler behoben , die während des Spiels aufgetreten Wir haben sie sogar vergrößert . Und eine Sache, auf die wir nicht eingegangen sind, war, dass wir beim Spielen tatsächlich das Widget mit der großen Box und der großen Box gesehen haben. Große Kiste. Hier ist es. Was passiert ist , ist, dass die große Kiste tatsächlich in unserer ursprünglichen Ansicht war . Sie können sehen, dass es gerade erschienen ist. Wenn ich Poss wieder auswerfe, spielen Sie das Spiel. Sie können sehen, dass es tatsächlich an der Stelle ist , an der es sein sollte Aber wenn ich das verschiebe, verschiebe ich die Kiste erneut, du kannst sehen, dass sich der Truhe-Tooltip darüber befindet Und jetzt können wir tatsächlich sehen, wie es aussehen würde. Es ist ein bisschen groß, aber in Ordnung. Wir werden es dann einfach so einstellen, dass wir es standardmäßig nicht sehen können. Also gehen wir zu unseren Widgets, dem Blue-Print-Element, dieser Sichtbarkeit, unsichtbar. Und das machen wir für die Box, die große Truhe, das Widget, die Sichtbarkeit. Sichtbar und auch für die kleine Truhe. Wir sorgen für unsichtbare Sichtbarkeit. wir nun zu unserem Artikel zurück und erstellen wir die Mechanik, die wir erklärt haben Mechanik, bei der wir einen Punkt über dem Gegenstand auswählen, einige Spurenlinien werfen, eine leere Stelle finden und den Gegenstand spawnen Wir werden das so machen, dass wir einfach eine Begrenzungsbox verwenden Und finde den Punkt in diesem Begrenzungsrahmen. Der Nachteil dieser Technik ist, dass die Linie vielleicht durchbohrt und zeigt, dass sie dorthin geht, aber das Objekt stoppt aufgrund Kollision oder irgendwas auf der Kiste, oder es könnte sogar eine Linie finden, die auf die Kiste trifft, und es würde sagen, dass das akzeptabel ist und es würde sagen, dass das , und es dort belassen Ähm, es könnte Möglichkeiten geben , eine Funktion zu erstellen , die wir wie einen Kreis erstellen , und dann gehen wir zu diesem Kreis, wir geben dort einen Prozentsatz von Plus oder Minus an. Oder wir könnten einen Code erstellen , um zu überprüfen, ob es sich um einen Punkt handelt , den wir gefunden haben, als ob ich eine Zeile von hier aus werfe und sie hier wegfällt. Gehört es zum Beispiel zu den Koordinaten von der Mitte bis hierher, erzeugen wir eine tote Zone, in der keine Gegenstände abgeworfen werden. Aber wir werden diese Dinge nicht tun. Wir werden einfach eine Kiste platzieren und einen Punkt in der Kiste bekommen. Das würde jetzt reichen. Nein, lass uns zu unserem Gegenstand gehen, wenn wir mit dem Spielen beginnen. Also, vor einiger Zeit habe ich darüber gesprochen, warum Loops und warum wir sie nicht im Gameplay verwenden sollten. Nun, für jede Regel gibt es eine Ausnahme. Es gibt einige Gründe , warum wir im Gameplay Il Loops verwenden müssen , die das Spiel ruinieren, wenn sie es nicht tun. Zum Beispiel haben wir eine Spielmechanik, die das Spiel kaputt macht, wie zum Beispiel unseren aktuellen Key, wir wollen zu 100% sicher sein , dass er verloren geht. Es wird nicht außerhalb der Karte fallen, es wird nirgendwo anders fallen, es wird fallen und wir werden es aufheben können Unser System deckt das nicht wirklich ab, aber es ist eine Ausnahme, dass wir für diese Berechnungen einen Wile Loop verwenden könnten für diese Berechnungen einen Wile Loop verwenden Ich finde den richtigen Ort. Wir müssen unsere Regeln neu definieren, wenn das lange dauert, wenn das unser Spiel durcheinander bringt, wenn das andere Dinge tut, denn wenn wir es andere Dinge tut, denn nicht tun, würde es das Spiel kaputt machen Jetzt gibt es natürlich noch andere Gründe, Loops im Gameplay zu verwenden Einige fortgeschrittenere Methoden wären die Zuweisung von Ressourcen und Speicher, aber allgemein gesprochen könnten Mechanismen, die das Spiel brechen Schleifen verwenden, um das Ergebnis sicherzustellen Oh, was wir jetzt tun werden, ist eine Variable vom Typ Vektor zu erstellen, was wir, glaube ich, noch nie zuvor erstellt Das ist ein Drei-Punkt-Vektor, drei ganze Zahlen, und wir werden das Get Location nennen Denken Sie daran, dass dies in jedem Artikel vorkommt. Wenn ein Objekt erscheint, wird dieser Code ausgeführt Wir holen es uns für jeden Zielort. Es ist gleich Null, was unsere ursprüngliche Standardvariable ist. Dies wird unsere Bedingung für eine Wildschleife sein. Das werde ich hier verbinden. Die zweite Variable, die wir erstellen werden , ist unsere Variable is, die vom Typ Integer sein wird. Wir müssen sie nicht als Bedingung angeben, weil wir uns innerhalb der Körperschleife aufgrund der Zielposition ändern, sodass unsere Schleife unterbrochen wird. Nein. Als Erstes fügt der Körper 12 ts hinzu. Und jetzt werden die komplexen Dinge beginnen, ein bisschen komplex. Es ist nicht so komplex. Wir werden ein Tempo machen. Höllen ist wichtig. Ja. Pass mein Gel Kein Rennen mit mehreren Sphären, nur ein Kugelrennen, denn beim ersten wollen wir nur ein einziges Heat-Ergebnis Wir wollen keine Liste von ihnen haben. Nein. Der Ausgangspunkt. Wir werden den Standort unseres Schauspielers ermitteln. Und wir werden Z hinzufügen, sagen wir 200. Ein bisschen hoch, aber es ist in Ordnung. Aber jetzt haben wir diesen Punkt hier drüben geschaffen. Nun, für unser Ziel werden wir einen zufälligen Punkt in der Begrenzungsbox bekommen. Nein. Denn wie Sie sehen können, ist das etwas ganz anderes. Dies erfordert Navigation. Wie wir sehen konnten, war es auf der Tab-Navigation, die sich auf der Registerkarte KI befindet. Wir wollen das nicht an einem zufälligen Punkt in der Gründungsbox haben. Jetzt werden wir für die halbe Größe das Doppelte der Größe 600 verwenden. Es ist größer. Aber das könnte es intern auf andere Kacheln werfen. Nehmen wir also die halbe Größe von 300 , einhunderteins Z. und wir bekommen einen Punkt. Im Grunde genommen bekommen wir auf dieser Ebene einen Punkt im Boden. Nun, wenn wir hier oben sind, wie zielen wir dann auf diesen Punkt ab? Nein, wir nehmen oder oder, was eine Richtung ist , und wir werden das mit unserer Reichweite multiplizieren. Wie hoch, wenn wir x sind, fangen wir von hier an, wie weit steigen wir? Denn wenn es eine Richtung von 0,1 ist, dann nehmen wir an, alles andere ist Null, dann bedeutet das auf der X-Achse, geh 0,1, multipliziert mit der Zahl wäre diese Richtung So weit weg. Um das zu tun, werden wir das in eine Ganzzahl ändern und ich werde mit einer positiven Zahl multiplizieren. Wir werden mit Minus multiplizieren, sagen wir mit 500. Also statt nach oben gehen wir runter. Und wenn wir das zu diesem Punkt hinzufügen, erreichen wir diesen Punkt als Ziel. Ich werde das mit n verbinden . Ich werde den Radius auf sagen wir n setzen. Es ist also ein bisschen ein großer Ball, nicht nur eine Linie, denn wenn wir das Kästchen treffen wollen, sollten wir es ein bisschen wissen. Das nächste, was wir brauchen, ist eigentlich, was werden wir treffen? Nicht, wenn wir zuschlagen. Also können wir hier keinen Zweig anlegen, sagen wir, wir hassen es, wenn etwas dort entsteht müssen wissen, ob das, was wir heizen, das ist, was wir wollen, nämlich den Boden Und wenn wir das machen, ziehen wir einfach an unserem Boden. Wir gehen zu unserer Etage, der BP-Kachel , gehen zum Viewport, wählen unsere Etage aus, gehen zu Trugs, Tug, und Jetzt h. wieder zurück. Jetzt, wo wir den Schlepper F hinzugefügt haben, kommen wir zurück zu unserem Artikel. Lassen Sie uns unser Wärmeergebnis überprüfen. Ich werde diese Struktur durchbrechen. Ich werde zur Wärmekomponente gehen und fragen, ob sie gezerrt hat. Ich werde hier einen Ast anlegen. Und jetzt ist es nicht die einzige Frage, die wir stellen wollen, ob es F ist, sondern wir wollen fragen, ob unsere Versuche auch, sagen wir, gleich sind . Versuchen wir es 30 Mal. Hier keine Verbindung herstellen. Nun, es wird sein, ob es F hat oder die Tags über 30 oder gleich 30 sind. Dann legen wir den Zielort auf unseren Aufprallpunkt fest, was der Punkt ist, der tatsächliche Aufprallpunkt. Und wir könnten uns auf den Ort festlegen auch nicht wirklich wichtig wäre. Aber warum nicht den Aufprallpunkt nutzen? Jetzt, nur zur Demonstration, schließen Sie diesen Zustand an. Verbinde einfach, dass 30 gleich 30 ist. Was auch immer passiert, es versucht es 30 Mal, und lass uns zu unserem Spiel gehen und lass uns spielen Wir werden den Inhaltsbrowser auswerfen. Du wirst einen Gegenstand auf die Welt bringen. Mach es. Schon wieder ein Gegenstand in die Welt. Oh, nur für den Fall, dass Sie die Punkte außerhalb der Kamera nicht sehen. Ich hätte vielleicht das Zeichnen des Bugs aktiviert. Das muss also dauerhaft sein, um die Linien zu sehen. Jetzt können wir sehen, dass es 30 Mal versucht hat, den Boden um ihn herum zu finden. Aber das ist ein bisschen zu nah am Gegenstand. Also lasst uns gehen und die Größe der Ochsen erhöhen, lasst uns hunderte, 600 ziehen. Schon wieder er. Wir werden noch einen Gegenstand mitbringen. Okay, jetzt sind sie etwas weiter verteilt. Hey, dupliziere das. Ich habe es hier dupliziert und bin hierher gezogen. Zu Beginn des Spiels können Sie die zwei verschiedenen Punkte sehen. Ich denke, das ist in Ordnung. Vielleicht können wir es etwas größer machen , weil die Truhe hier nass ist. Hunderthundert. Oh, es ist zu groß. Ich habe das weit weg gebracht. Außerdem siehst du, dass sie unter dem Artikel richtig runter gehen . Das liegt eigentlich daran, dass ich die Reichweite erhöhe. Seien Sie ehrlich, ich wollte nur eine Erhöhung der Reichweite zeigen. Das könnte tatsächlich einfach so funktionieren. Sei es, dass wir einen Punkt zu dem Artikel bekommen, und dann gehen wir einfach von hier nach dort. Also lass uns nochmal spielen. Das geht viel zu weit. Dieser Wert ist völlig falsch. Wir werden den 300 verwenden. Ich denke, 300 war in Ordnung oder die 600 war die 600, nicht wahr? Bring das her. Jetzt fließt es, das Spiel fließt. Okay, also wir brauchen das, eigentlich nicht so viel, ich brauche es auf, sagen wir 50 oder ja, lassen wir es auf 500. Und der Grund dafür ist , dass der Grund , warum ich mich beeilt habe, darin besteht, dass das nicht lief Das war es tatsächlich. Aber als es 30 Tri erreichte, war das nicht gültig, das erhitzte nichts, denn lass uns zu Schmerzen übergehen. Wenn wir von oben anfangen und genau dort hingehen. Das heißt nicht, dass wir uns dort berühren. Das bedeutet, dass wir dort angekommen sind. Hinzu kommt, dass diese Entfernung B größer ist als diese, tut mir leid. Diese Entfernung, 300. Von hier aus bis zum Boden. Wir brauchen diese zusätzliche Reichweite. Ich habe die Erklärung vielleicht ein bisschen benutzt, aber wir brauchen die zusätzliche Reichweite, um den Boden zu erreichen, weil wir an einem Hang sind und weil wir durch den Boden gehen müssen, um den Boden zu berühren, nicht zu draufgehen. Lass uns das gut verbinden und lass uns tatsächlich den Bereich 600 verwenden. Ich glaube, es sah besser aus. Nur noch ein Test, ob es zerquetscht, und ich lasse es hier. Ich glaube nicht, dass man niemals nie sagen sollte. Ich bringe das her. Ich sehe nichts. Das bewegt sich immer noch und ich bewege mich, also ist es nicht abgestürzt. Könnte den Artikel ausgeschaltet haben, hier ist er. Ja, ich habe die Debug-Leitung ausgeschaltet. Oh. Lass es uns nochmal versuchen. Der Artikel. Absturz, weil ich es in der Mitte der Luft platziert habe, damit es nicht wieder den Boden erreicht. Wenn ich jetzt auswerfen könnte, würdest du sehen, dass der Schlüssel sehr, sehr weit vom Kerker entfernt ist sehr weit vom Kerker entfernt Okay, wir werden hier aufhören. Wir werden es im nächsten noch einmal testen. Auf Wiedersehen. Wir sehen uns dann. 67. Finishing-Element-Animation mit Timelines: Hallo und willkommen zurück zum Game Design Workshop und zum prozeduralen Kurs zur Erstellung von Dungeon-Action-Psy mit R Engine Five Dungeon-Action-Psy In der vorherigen Lektion haben wir gezeigt, wie wichtig es ist, endlose und unbegrenzte Wile-Loops zu verwenden und warum wir sie nur für Kernmechaniken verwenden sollten Jetzt versuche ich etwas zu debuggen. Ich versuche, einige Dinge sehr ausführlich zu zeigen, wie zum Beispiel das Hinzufügen solcher Elemente zur Laufzeit, und vor allem, wenn sie mit einer Wi-Schleife beginnen , ist es eine sehr schlechte Idee Ähm, Selbstüberschätzung vielleicht. Aber ja, es kann viel passieren Also, wenn ich wieder spiele, lass es uns beruflicher machen und ich gehe neben den Boden. Ich werde den Gegenstand hierher bringen. Die Linien werden tatsächlich den Boden berühren. Lass uns unseren Drop finden. Keine Artikel. Bring es her und ich habe die Gepäckschlangen nicht angemacht. Dave, denn wenn du abstürzt, verlierst du deine Arbeit Wenn du abstürzt, musst du das Löschen kontrollieren und das Projekt beenden. In der Nähe hat er eine Zeile gemacht, aber wir können es nicht wirklich sagen, also habe ich dir viel gehofft. Ich denke, das ist in Ordnung. Lass uns aufhören. Gehen wir zurück zu unserem Artikel. Das ist das Widget. Artikel. Wir haben einen Punkt gefunden, an dem wir unseren Schlüssel fallen lassen können, um unseren Artikel fallen zu lassen, egal welchen Gegenstand. Was kommt als Nächstes? Als Nächstes sollten unseren Artikel sichtbar machen, denn seien wir ehrlich, ein Objekt, das so lange da steht, bis es herausfindet, wo es hingehört, dann einfach eine Animation macht und an einen Ort geht , sieht nicht wirklich gut denn nehmen wir an, die 30 ts dauern vielleicht nicht eine halbe Sekunde, sondern 0,1 Sekunden. Kein Auge wird das auffangen, wir werden den Gegenstand sehen, auf dem sie sitzen und sich dann plötzlich bewegen. Also machen wir unseren Gegenstand sichtbar oder verstecken ihn im Spiel, dann ist es wahr. Das ist auf dem Item-Mesh. Und nach unserer I-Schleife erstellen wir ein benutzerdefiniertes Ereignis. Lass es uns wo anders machen. Objekt animieren. So werden wir diese Veranstaltung nennen. Denn jetzt werden wir die Animation abspielen. Unvollendet. Um das Objekt zu animieren. Und das Erste, was wir tun werden, ist unser Chaos sichtbar zu machen Sichtbar. Lass es dann falsch sein. Als Nächstes müssen wir unseren ursprünglichen Standort des Schauspielers speichern , also holen wir uns den Schauspieler. Wir werden es bei einer Vielzahl bewerben. Ich nenne es originell , weil wir von hier nach dort animieren müssen von hier nach dort animieren Das ist von hier. Jetzt müssen wir nur noch die Zeitleiste hinzufügen. Jetzt werden wir es von Anfang an verbinden, um zu bezahlen. Wir werden unseren Zeitplan einhalten einen Flow-Truck erstellen. Wir werden Punkte brauchen. Wenn sie krank sind. Der erste Punkt wäre Null, Wert Null. Der zweite Punkt wäre 0,25 und eins. Eins. Der dritte Punkt wäre 0,5 zu schnell. Ich denke, es ist in Ordnung. Der Wert wäre eigentlich Null, also kehren wir zur Bodenbasis zurück. Und das wäre unsere Bewegung. Lass es uns ein bisschen besser sein. Nun, da ich diesen ausgewählt hatte, versuchte er, nur diesen an den Vorgänger anzupassen , weil ich auch den Vertikalen Zoom gedrückt habe. Wenn wir einige Punkte ausgewählt haben und Zoom-Punkt auf Vertikal drücken, wird er versuchen, die Punkte, die wir haben , plus den vorherigen Punkt zu machen wir haben , plus den vorherigen Jetzt werden wir sie tatsächlich alle auswählen. Klicken Sie mit der rechten Maustaste. Das ist zu automatisch. W, um auf den obersten zu klicken. Vielleicht mach das C ein bisschen mehr so. Der erste auch. Das ist in Ordnung. Das ist ein bisschen höher als das , was wir berechnen werden. Was wir bis zu diesem Punkt wollen, ist , dass der Artikel gerade nach oben geht und dann in die Richtung geht, und dann in die Richtung geht in der wir das tun wollen. Wir müssen das zurücknehmen, um zu handeln. Wir müssen den Schauspieler bewegen, nicht nur den Gegenstand, und das wird bis heute funktionieren. Also wollen wir Vector diese Bewegung erzeugen lassen. Also das ist unser Alpha. Nennen wir das „Strike to Movement“, das ist unsere Bewegung Alpha. Wir sagten, im Grunde bis zu 50%, weil es 025 ist, und das wissen wir Bis zu 50% wollen wir steigen, also wenn dieser Wert unter 0,5 liegt. Wir wollen eine bestimmte Richtung einschlagen. O B, unser Ziel, müsste sich ändern. Also können wir hier eine Auswahl treffen. Die Bedingung ist, dass dieses Ion weniger als die Hälfte unseres Alpha-Werts ist. Wenn wir hochgehen wollen, sollte es unser ursprünglicher Standort sein. L. Nehmen wir an, 200 m hoch. Und wenn nicht, dann sollten wir zum Ziel gehen. Wir werden auch den Zielort verbinden. Lassen Sie uns jetzt einen Moment darüber nachdenken. Was macht unser Alpha? Weil wir seitdem 0-1 verwendet haben Aber jetzt verwenden wir 0-1 und wieder Null. Das heißt, wenn diese Zeitlinie endet, wäre Alpha kein Alpha s A. A wäre der letzte Punkt wäre das Ende dieses Leerps, weil dieses Alpha wieder auf Null zurückgehen wird Wir wollen das also nicht in B. Wir wollen es eigentlich in A weil unser Ziel eigentlich A ist. Also muss sich auch dieses ändern Das wäre unser eigentliches B von unter 50%. Wir gehen 0-1 0-1 wäre das Plus 200. Was wäre das Alpha, das Wahre oder Niedrigere Nun, das wäre der ursprüngliche Standort. Lassen Sie uns noch einmal alles durchgehen. A Wenn wir unter 50% des Alpha-Werts liegen, müssen wir 0-1 von A nach B gehen. müssen wir 0-1 von A nach B gehen. Wenn der Wert unter 50% liegt, gehen wir vom ursprünglichen Wert zu unserer Körpergröße Liegt der Wert über 0,5%, gehen wir von B nach A, das wäre unsere Körpergröße, und wir gehen von A, was unser Zielort wäre Ich hoffe, das war nicht zu verwirrend, aber so habe ich es geschafft. Aber genug davon, lassen Sie uns hier noch etwas tun. Lassen Sie uns einen weiteren Flow-Track hinzufügen. Dieses Mal wird es ein sehr einfacher Flow-Track sein. Außerdem funktioniert das Mausrad hier nicht wirklich, weil es rein- und rauszoomt Sie müssen Ihr Mausrad hier haben, damit es funktioniert Wenn Sie es bereits hier haben, können Sie einfach klicken und es herunterlassen Nein. Das wird ein einfacher Flow-Track sein. Wir werden zwei Punkte vom Nullwert Null haben. Wir gehen zu 0,5, Wert eins, und vergessen wir nicht, unseren letzten k-Frame zu verwenden weil beide auf 0,5 — 0,51 liegen Und was wir tun werden, ist, unsere Artikel auszuwählen. Wir werden es auf Null setzen . Wir werden es hierher bringen und drei D einstellen . World Scale Three D. Lassen Sie uns diese Dinge aufzeichnen. Eigentlich ist es ein bisschen weiter. Diese beiden Leitungen werden nicht benötigt. Wir können es hier nachlesen. Ich kriege eine Zeile. Jetzt in der neuen Skala werden wir Vector vermieten. Ich denke, wir können alle sehen , wohin das führt. Wir werden den neuen Truck für Alpha oder B benutzen, wir werden 111 einstellen. Oh, der Gegenstand wird größer , je mehr er sein Ziel erreicht, und er wird seine ursprüngliche Größe erreichen. Also ich denke, das wäre für diesen. Ich werde dich im nächsten sehen. Auf Wiedersehen. 68. Artikel- und Inventar-Widgets anzeigen: Hallo und willkommen zum Game Design Workshop im Rahmen Engine Five-Action-Rollenspiels zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Erstellung von prozeduralen Dungeon-Action-Rollenspielen Bisher haben wir unseren Drop-Gegenstand im Grunde animiert. Weil es also beim Start des Spiels läuft, es auch bei Drops von Truhen, wenn es vom Monster fallen gelassen wird Oder wenn Höllentürme auch etwas fallen lassen, dann werden die Gegenstände auf diese Weise fallen gelassen Deshalb haben wir ein benutzerdefiniertes Ereignis namens animate item erstellt. Wir haben das Objekt Mesh verwendet, um es nicht auszublenden, da es zunächst ausgeblendet wird Wir haben unseren ursprünglichen Standort gespeichert. Wir haben einige seltsame Methoden angewendet wir erklärt haben, um den Standort festzulegen. Außerdem haben wir das Netz auf 0:1 vergrößert, sodass es größer aussieht, je mehr es aus der Brust herauskommt Als Nächstes sollten wir uns unser Widget besorgen. Eigentlich könnte das zu zwei verschiedenen Zeiten passieren. Es könnte passieren. Es könnte passieren, nachdem der Artikel gelöscht wurde, also könnten wir Fertig aus der Timeline oder davor verwenden. Nein, ich werde es tun bevor der Gegenstand tatsächlich verloren gegangen ist , weil das normalerweise in allen Alo-Spielen passiert . Im Grunde konnte man im Mehrspielermodus nicht zusehen, wie die Gegenstände fallen. Jeder hob sie in der Luft auf. Also werden wir es dabei belassen. Wir werden das Widget im Grunde in dem Moment zeigen , in dem es die Animation startet. Auf diese Weise war es von dem Moment an auswählbar , in dem wir auf das Widget klicken können Ich denke, in Diablo sind sogar die Widgets animiert, aber das werden wir nicht tun Wir werden das ein benutzerdefiniertes Ereignis nennen. Widget. Aber wir müssen hier einige Informationen eingeben. Aber zuerst nennen wir das Show-Widget-Event. Wir werden hier weitermachen , dass wir animiertes Objekt nennen , wenn es fertig ist. Wir werden eine Sequenz machen. Und das erste wäre ein animiertes Objekt. Das zweite wäre Widget anzeigen. Oh. Holen wir uns zunächst unser Widget. Also hol dir das Widget. Wie gesagt, das ist ein Container und der Container, wir müssen das Widget bekommen und dann müssen wir fragen, welches Widget du bist? Also in die Artikelwelt geworfen. Eine Welt mit zwei Gegenständen und dieser Text. Für unseren In-Text benötigen wir unsere Artikeldaten. Wir müssen die Struktur aufbrechen und den Artikelnamen verbinden. Oh. Als Nächstes brauchen wir etwas, um unsere Widgid-Sichtbarkeit ein- und auszuschalten Also werde ich eine Funktion erstellen. Und nennen wir es starr. Es wird eine Eingabe von y benötigen. Nennen wir das. Und hier werde ich die Widget-Referenz abrufen. Ich werde sehen, was auch immer dieser Pin ist. Abgesehen davon, dass ich überlappende Ereignisse generieren muss. was auch immer die Sichtbarkeit ist, und ich nenne Sichtbarkeit tatsächlich so, aber erinnere daran. Außerdem müssen wir hier eine Kollision mit einer Auswahl beenden, und der Selektor wird im Grunde so sein Es ist also wahr. Wir brauchen nur eine Abfrage. Wenn es falsch ist, brauchen wir keine Kollision. Warum wir diese beiden Schritte ausführen müssen denn selbst wenn ein Widget unsichtbar ist, besteht die Möglichkeit, dass seine Interaktionseinstellungen immer noch Eingabeereignisse zulassen. Damit meine ich, ich die Sichtbarkeit der Komponente des Widgets ausschalte , aber Widgets haben tatsächlich einige andere Sichtbarkeitseinstellungen . Wenn wir zum Beispiel hier die Sichtbarkeit einstellen, können Sie sehen, dass es sichtbar, zusammengeklappt, versteckt und nicht thermisch testbar ist versteckt und nicht thermisch testbar Das bedeutet, dass es sichtbar und hitzetestbar ist , wenn es möglicherweise angeklickt werden kann Warum also nicht einfach die Kollision ausschalten, auch um sicherer zu sein Könnte ein bisschen übertrieben sein, obwohl es mit Sicherheit ein Overkill ist, besser als Nachsicht Es trägt nicht viel dazu bei, macht es sogar weniger Berechnungen Und im Grunde könnte sogar dieser Akteur, selbst wenn er unsichtbar ist, die Eingabe empfangen und an das Widget senden, sodass das Widget möglicherweise nicht einmal dafür verantwortlich ist. Wie dem auch sei, es gibt viele Gründe, warum man manchmal zusätzlichen Code einfügt , nur um ein paar zusätzliche Grundlagen abzudecken. Anstatt zu suchen, welche Einstellung wäre ausgeschaltet gewesen. Manchmal ist es besser, einige Root-Einstellungen zu schließen , als nach Untereinstellungen zu suchen. Also schweife ich ab. Gehen wir zurück zu dem, was wir tun. Wir zeigen also Widgets an, und jetzt haben wir eine Möglichkeit, unsere Sichtbarkeit ein- und auszuschalten Aber wann möchten wir, dass unsere Sichtbarkeit für unsere Artikel in unserem Artikel-Widget oder für uns für unser Projekt ein- und ausgeschaltet Artikel in unserem Artikel-Widget oder für uns für unser Projekt Was wir verwenden werden, ist unsere Maus über Ereignisse zu bewegen. Aber wenn wir über etwas sind, senden wir ihm eine Nachricht, wenn Sie mit der Maus über Ihnen fahren. Und wenn wir das Objekt verlassen, senden wir eine Nachricht. A, wir haben nur die Maus , die gerade über dir übrig geblieben ist. Und das wird eine unserer Möglichkeiten sein , die Sichtbarkeit des Widgets zu erhöhen. Also die Maus schwebt. Die andere Art, wie wir es verwenden werden, ist, dass wir einen Knopf haben Wir werden links haben bei. Aber wenn wir darauf drücken, zeigen wir alle Objekte, die sich in unserem Viewport befinden Und wir werden das tun, indem wir einen sogenannten Event-Dispatcher verwenden Event-Dispatches funktionieren in einer groben Umgebung so , dass sie eine Nachricht an alles senden, und wenn das alles darauf wartet, wird es etwas tun U Es ist vielleicht eines der Dinge, es ist eine der schwierigsten Arten der Kommunikation mit Blaupausen der Es sollte nicht für konstante Dinge verwendet werden. Es kann nicht verwendet werden, aber ja, es ist der schwerste Teil der Blueprint-Kommunikation Lass es uns einfach dabei belassen. Nein, wie machen wir das? Gehen wir zu unserem Controller , denn jetzt müssen wir unser Controller-Gebiet betreten. Also Charakter von oben nach unten, Ordner von oben nach unten, Blueprints und PP, Top-Down-Controller Nein. Wir werden das noch nicht vermasseln. Wir werden eine Eingabe erstellen, die weggelassen wird. Und das wird ein stetiger Input sein. Wir werden keine verbesserten Beiträge in dieses Projekt einfließen lassen. Und hier unten unter den Funktionen, Makros und Variablen haben wir die Event-Dispatcher Wir klicken auf Event Dispatcher und Vielleicht. Nein, werde kompilieren. Und ich muss die Eingabe ergänzen. Nennen wir dieses eine Element Sichtbarkeit. Und nennen wir das andere Alt-Drücken. Das wird ein bisschen überflüssig Alt gedrückt werden. Wir könnten einfach einen verwenden, aber machen wir es mit zwei, um es etwas übersichtlicher zu machen Wenn ich also Alt drücke, möchte ich alle Objekte googeln So versenden wir ein Ereignis. Wir haben es erstellt, wir machen unsere Eingaben und rufen es auf, und rufen wann immer wir wollen in der Ausführungszeile. Aber wenn ich die Taste drücke, möchte ich, dass die Elemente sichtbar sind und die Alt-Taste gedrückt wird, wird ein Kopieren/Einfügen losgelassen, und wenn diese beiden gelöscht werden, wird das auf Falsch gesetzt Wir werden kompilieren und speichern. Wir werden den Gamecontroller schließen. Wir werden es in naher Zukunft nicht brauchen. Lo, wir können viel schließen. Wir können das Hauptmenü schließen. Und fangen wir an, das zu schließen. Was wir jetzt tun müssen, ist eine Referenz auf unseren Event-Dispatcher zu bekommen, damit wir etwas dazu finden können Um eine Referenz darauf zu erhalten, benötigen wir den Akteur, das Objekt, das ihn enthält Also werde ich ihren Controller holen. Und ich werde darum bitten, den Controller von oben nach unten zu verwenden, weil unser Spielmodus unser Get-Pair-Controller allgemein ist und wir von oben nach unten spezifizieren wollen, um den Dispatcher zu bekommen Event an Go binden, also nennen wir es Hogle Items. Ereignis an die Gesamtzahl der Elemente, dadurch wird ein Ereignis an unsere Dispatches gebunden Wir werden das hier verbinden. Bringen wir es hierher und erstellen wir ein benutzerdefiniertes Ereignis aus dem Event-Knoten der Bindung. Nennen wir das Elemente. Oder die Gesamtzahl der Artikel. Spielt keine Rolle. Lass uns das hier verbinden. Lassen Sie uns die Sichtbarkeit hier verbinden und sie zu einer Variablen heraufstufen. Donnie, in manchen Dingen ist es schon nach uns benannt. Machen wir Platz, weil wir zu nah beieinander Wenn wir mit der Wiedergabe beginnen, führen wir das animierte Element aus und zeigen das Widget an, indem wir seinen Text festlegen und das Ein- oder Ausblenden auf Alt binden Als Nächstes müssen wir die Hover- und Hover-Bindungen vornehmen. Nun, keine Bindungen. Was wir tatsächlich verwenden, sind einige zusätzliche Funktionen auf unseren P I Item Coms Oh, ich werde eine zusätzliche Funktion hinzufügen. Ich nenne das Start. Vorbei. Ich werde noch einen Anruf tätigen und immer wieder. Gehen wir zurück zu unserem Artikel. L Gehen wir zu unserer Oberfläche, klicken wir auf „Hover beenden“ und doppelklicken Sie auf „Hover starten Wir haben diese beiden. Das wäre einfach. Wir werden die Sichtbarkeit mit der Sichtbarkeit auf „Wahr“ erhöhen, die Sichtbarkeit auf „Falsch“ setzen. Nun, warum war die Alt-Taste überflüssig? Der Grund dafür ist, dass wir es nicht wirklich brauchen um das Ende der Maus zu ändern, um zu fragen, ob die Alt-Taste gedrückt ist, und ob sie nicht gedrückt ist, und die Sichtbarkeit auszuschalten Weil wir nicht wollen, dass Ed den Mauszeiger bewegt, wenn wir Alt drücken müssen, um die Sichtbarkeit zu beenden Und die andere Art, es zu tun, die eigentlich besser ist, wäre, die Steuerung des Spielers zu nehmen und nach einer Eingabe zu fragen. Und hier können wir Alt wählen oder unsere eigenen Tasteninformationen verwenden, was den Zweck , diese Alt-Taste drücken zu lassen, zunichte machen würde. Wie dem auch sei, das wäre für diesen. Ich werde dich am nächsten sehen. Auf Wiedersehen. 69. Gegenstände aufheben und zum Inventar hinzufügen: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon Action Arbis Creation-Kurs Zuvor waren wir mit der Erstellung unserer Show-Widget-Events fertig unserer Show-Widget-Events Wir haben den Text zu unserem Widget hinzugefügt, was der Name unseres Artikels ist. Wir haben auch ein Ereignis von unserem Gamecontroller, einen Event-Dispatcher, eingebunden und erklärt, wie es funktioniert Und wir haben die Funktion der Widget-Sichtbarkeit entwickelt , die auch die Kollision der Widget-Komponente von summiert , und dann haben wir den Start und das Hover-Ende des Events erstellt und sie mit der Perückensichtbarkeit codiert Und am Ende des Events haben wir die Ost-Eingabe-Taste gedrückt, haben wir die Ost-Eingabe-Taste um zu überprüfen, ob unsere Alt-Taste gedrückt ist. Wenn wir also mit der Maus über ein Objekt fahren und den Hover beenden, Wenn wir also mit der Maus über ein Objekt fahren und den Hover beenden wir nun mit unserem anderen Interface-Event fort, dem Oh, ich werde es näher an den Anfang bringen. Zimmer. Du brauchst beiden nicht. In Ordnung. Also, das Erste, was ich jetzt tun werde bevor wir anfangen, die gesamte Eventkette zu erstellen, was wir tun müssen und mit dem Spielen beginnen müssen, unsere Widgets holen, Widgets aus unserer Widget-Komponente abrufen. Und lassen Sie uns das Objekt wt in die reine Besetzung umwandeln. Und wir werden Button bekommen. Wir haben es nicht, weil ich es noch nicht zu einer Variablen gemacht habe. Also gehen wir zu unserem Widget. Wir wählen unsere Schaltfläche aus, und Schaltfläche 31 wird Elementschaltfläche genannt, und wir machen sie zu einer Variablen. Jetzt kann ich es innerhalb des Elements aufrufen. Schaltfläche „Artikel abrufen“. Und wir werden weitermachen. Wenn wir also auf unser Widget klicken, führen wir tatsächlich den Event Intell Act Selbst wenn es sich um eine Blueprint-Schnittstelle handelt, hat sie immer noch diesen Output-Delegaten , den wir mit unserem Bind verbinden können erste Frage sollte nun lauten, sind wir in Reichweite und in der Lage zu wählen? Und das wäre Interaktion. Wir werden es auf variabel hochstufen. Und wenn es wahr ist, werden wir Interacting auf true setzen. Machen Sie vielleicht ein bisschen mehr Platz. Vielleicht geht dir der Platz in einem endlosen Raum aus, wenn du das weiter vorantreibst. Immer fantastisch. Jetzt müssen wir eine Funktion ausführen, die auf unsere Spielstimmung abgestimmt ist. Aber wir werden diese Funktion jetzt nicht vollständig ausfüllen. Gehen wir also zu unserem Holder von oben nach unten. Gehen wir zu unseren Ordner-Blueprints und kommen wir zu unseren Spiel-Stimmungen Wir werden eine Funktion erstellen, das gesamte Inventar, und es wird die Eingabe eines Namens beinhalten Anspruch, und das Ergebnis wäre ein Ben , der ausgewählt wird. Zum Beispiel, ob wir ihn ausgewählt haben oder nicht. Wir lassen es so, wie es ist wenn wir das Inventar erstellen, wir werden anfangen, es zu füllen. Nun, lasst uns zu unserem Gegenstand zurückkehren und von der Interaktion unseres Sets aus gehen wir los und wir brauchen die Gad in Bezug auf GM Alle GM des Down-Game-Modus. Wir werden auf Pure Cast umsteigen. Und wir werden das Inventar aufstocken. Jetzt werden wir für den Rohnamen unseren Rohnamen verwenden. Und danach werden wir uns verzweigen, je nachdem, ob wir den Artikel auswählen oder nicht. Fangen wir mit dem an. Oh, was passiert, wenn wir einen Artikel nicht auswählen? Wir werden wieder eine Animation abspielen, wir werden sie online hinzufügen. werden diese Zeitleiste Wir werden diese Zeitleiste aufrufen und einen Flow-Track erstellen. Die Variablen. Die erste wäre 00. Der zweite wäre 0,27, sagen wir dieses Mal, und dieser wäre eins, und der dritte wäre 0,6, das wäre wieder Null Warum nun länger als der vorherige Zeitplan? Weil wir den Artikel seitdem nicht abgeholt haben. Wir sollten den Spieler darauf hinweisen, dass es sich nicht um einen neuen Gegenstand handelt, nur für den Fall, dass wir etwas töten. Ich weiß es nicht. Designwahl, denken Sie über die Designentscheidung nach. Ich denke, es sollte eine längere Animation haben , weil es nicht aufgenommen wird, es ist etwas, das dem Spieler angezeigt werden soll, das ist nicht üblich. Wenn du ständig Gegenstände fallen lässt und plötzlich nichts mehr aufheben kannst , sollte es nicht die übliche Animation sein , die du siehst, auch wenn ein bisschen länger dauert, denke ich, würde das eine Wirkung haben. Jetzt wäre die Bewegung wirklich einfach durchzuführen. Wir gehen zu diesem Ort. Wir werden Vector alarmieren. Ich benutze diesen neuen Track für Alpha und unseren. Dieser endgültige Standort sollte nicht da sein. Unser Zielort wäre der Alpha, der A und der Zielort Plus. Wie, sagen wir 150, wäre RB. Von dort, wo wir sind, gehen wir hoch und dann runter. Und wenn das erledigt ist, werden wir uns der Interaktion zuwenden. Nun, wenn es stimmt, wenn wir den Artikel abgeholt haben, werden wir einfach zu niedrig dargestellt. Und das wäre es. Und damit ist unser Code für unsere Artikel abgeschlossen. Das ist der gesamte Code für die Artikel. Jetzt könnten wir mit dem Inventar beginnen, aber wir müssen ein wenig Vorarbeit leisten, um das Inventar in unserem Spielmodus zu starten. Wenn wir also das R-2-Inventar ausführen, das ich jetzt klicke, um in den Spielmodus zu gelangen , müssen wir einige Variablen bereit haben. Eine dieser Variablen wäre unser Gon-Level. Dungeon-Level auf Generator-Ebene. Ja. Es wird vom Typ Integer sein. Um diese Tangentenebene zu füllen, gehen wir zu unserem Generator und beginnen mit dem wo wir den Spielmodus einstellen Beweg das Stück hierher. Und wir werden den Dangon-Level auf unseren Generator-Level setzen Dangon-Level auf unseren Generator-Level Bringen Sie es her, stellen Sie eine Verbindung her . Jetzt. Das nächste, was wir brauchen. Es ist fehlerhaft, weil es nicht kompiliert wurde. Wir sind mit den Artikeln fertig, kompilieren Sie die Tabelle. Ich werde ein paar Wannen schließen. Es gibt viele Requisiten. Das brauchen wir nicht mehr. Wie dem auch sei, jetzt kann ich es sehen. Also suchen wir nach dem alten Spiel. Hier sind wir. Die nächste Variable, die wir brauchen, wird im Grunde genommen eine Landkarte sein. Mit der ersten machen wir daraus eine Karte. Der erste Schlüssel wäre Name, was unseren Artikel bedeutet. Und der zweite wäre eine Ganzzahl, was der Betrag sein wird. Ich werde diese Variable benennen. Spiel. B Wir müssen nichts anderes für unsere Artikel speichern. Wir müssen nur wissen, um welchen Artikel es sich handelt und wie viele Artikel ich habe? Jetzt sind wir bereit, diese Funktion auszufüllen , die wir in der nächsten Lektion ausführen werden. Vorerst auf Wiedersehen. Sing dich beim nächsten. 70. Münzzähler und Pickup-Widget: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur Erstellung von 95 Procedural Dungeon-Action-ARPs Zuvor waren wir mit unserem BP-Gegenstand fertig. Wir haben unser Interact-Event beendet, sodass wir es auch binden, wenn wir auf unser Widget Wood Item World klicken. Wenn wir jetzt interagieren, fragen wir, ob wir auswählen können, ob wir uns in Reichweite befinden und ob wir bereits interagieren. Wenn wir nicht interagieren, setzen wir Interact auf True. Wir fügen unseren Artikel zum Erfinder hinzu. Wir versuchen, den Artikel zum Inventar hinzuzufügen, weil wir den Rückgabewert ausgewählt haben . Auf dieser Grundlage spielen wir eine Animation ab, wenn wir den Artikel nicht auswählen konnten , und wenn wir den Artikel auswählen, zerstören wir unseren Schauspieler. Danach sind wir in unseren Spielmodus gegangen und haben Level des Dungeons in unserem Labyrinth-Generator gespeichert des Dungeons in unserem Labyrinth-Generator Lassen Sie uns das tatsächlich kompilieren. Und wir haben den Dungeon-Level zu Beginn des Spiels gespeichert und ein variables Inventar erstellt, das ist eine Karte mit Namen und ganzen Zahlen, Namen für die Zeile der Datentabelle und Ganzzahlen für wie viele haben wir das ist eine Karte mit Namen und ganzen Zahlen, Namen für die Zeile der Datentabelle und ? Fahren wir damit fort, unsere Anzeige in das Inventar zu füllen. Was wir zuerst brauchen, ist unsere Datentabelle. Also werden wir Daten abrufen. Und für ihren eigenen Namen werden wir ihn mit einem Namen verbinden. Für die Datentabelle werden wir unsere DT-Elemente verwenden, und für unsere Out-Row werden wir das als lokale Variable heraufstufen. Nennen wir es Data. Jetzt werden wir dieses Theta knacken. Und wir werden eine einfache Frage stellen. Gilt dieser Artikel, kann ich ihn dem Inventar hinzufügen? Wenn ich ihn nicht zum Inventar hinzufügen kann, bedeutet das , dass er Gold ist, weil es unser einziger Artikel ist, der nicht zum Inventar hinzugefügt wurde. Das bedeutet, dass wir berechnen müssen wie viele Münzen wir hinzufügen werden. Nein. Als Erstes müssen wir entscheiden, wie viele Münzen wir hinzufügen werden. Oh, wir werden unser Dungeon-Level erreichen. Wir werden eine zufällige Reichweite bekommen. Ich fange mit eins an und Dungeon Level plus eins. Wir werden die Münzen in diesem Spiel nicht wirklich verwenden. Was wir tun könnten, ist, dass du , wenn du willst, vielleicht einen Laden aufrüsten und ihn irgendwo spawnen oder eine Benutzeroberfläche zwischen den Levels öffnen und einige Upgrades auswählen und diese Münzen ausgeben Jetzt werden wir für diese Variable werben. Wir werden Münzen benennen und das mit Wasserfällen in Verbindung bringen. Das nächste, was wir tun müssen, ist , wenn wir unser Widget haben, um es zu aktualisieren. Nein, fangen wir an, unser Gameplay-Widget zu erstellen. Wir gehen zu I. Lass uns klicken und Benutzerschnittstelle, Widget-Blueprint, äh Widget auswählen Widget-Blueprint, äh Widget und nennen wir es W G, Gameplay Ich werde es öffnen. Ich werde es hier drüben andocken. Das erste, was ich hinzufügen werde, ist eine Leinwand. Lass mich für eine Sekunde heranzoomen. nun unsere Münz-UI angeht, wird das, was unsere Münzen repräsentieren wird , ein horizontales Kästchen sein. Und in dieses horizontale Feld werden wir den Text Und hinzufügen . Das Bild wäre für unser Beutelbild und unser Text würde darauf stehen, wie viele Münzen wir haben. Wir wählen beide aus und stellen beide so ein, dass sie den Unterschied ausgleichen, dass und vertikal in Cent ausgerichtet werden soll der Text horizontal mittig . Wählen wir für unser Bild den Beutel aus. Lass uns ein bisschen mehr machen. Stimmt? Machen wir das jetzt ein bisschen größer. Wo unser Bild aussieht und es nicht viel zu sehen ist. Ich glaube, diese Stecknadel. Lass uns unseren Textblock auswählen und 30 darauf setzen. Ein Fo, passen vier hinein? Ja, vierstellig ist in Ordnung. Sogar eine fünfstellige Zahl ist in Ordnung. Lass uns nur drei Ziffern nehmen. Lasst uns jetzt die Anker benutzen , um es hier zu verankern. Wir könnten es später im Vergleich zum Rest der Benutzeroberfläche ändern , aber im Moment haben wir es hier. Und lassen Sie uns den Textblock zu einer Variablen machen. Nennen wir es Punkte. Gehen wir jetzt zurück zum Spiel. Und wir müssen dieses Widget tatsächlich spawnen. Also gehen wir wie in den vorherigen Widgets zu Even Graph Wir werden eine Kundenveranstaltung erstellen. Wir werden es Show Game Play nennen. Wir werden ein Widget erstellen. Wir werden das Gameplay wählen. Der Besitzer eines Spielers ist ein Spieler-Controller. Wir werden es als Variable bewerben. Nennen wir es W-Gameplay. Und wir werden es zum Viewport hinzufügen. Gehen wir jetzt zurück zum Inventar und holen uns unsere Referenz zum Inventar und holen uns unsere Referenz WG-Gameplay und den Punktetext Lassen Sie uns den Text festlegen. Für den Text werden wir die Münzen verwenden. Unser nächster Schritt besteht jetzt erneut darin , darauf hinzuweisen, dass unser Spieler etwas abgeholt hat. Auch hier benötigen wir ein Widget. Wir werden dafür wieder das Gameplay-Widget verwenden. Wir werden diese horizontale Kugel duplizieren, aber nicht in ihr, um sie im Canvas zu verwurzeln. Und ich werde es ungefähr so groß machen. Sie haben ungefähr die gleiche Größe. Und ich werde es hier drüben platzieren. Ich werde ein paar Anker darum herum anbringen. Du kannst die Anker draußen anbringen, also hier. Was ich tun werde, ist , das rückgängig zu machen. Ändern Sie das von 000 zu ausgewählt zu Punkten. Das ist ein bisschen groß. Vielleicht brauchen wir ein niedrigeres Format oder eine niedrigere Größe. Acht. 28 passt gut, und wir werden das animieren Um zu animieren, gehen wir jetzt zu Animationen über. Wie Sie sehen können, habe ich es ausgewählt, das vertikale Feld, nicht etwas darin Ich drücke plus zwei Animationen. Ich rufe diesen Artikel auf, wähle ihn aus und gehe zum Titel. Da ich das ausgewählt habe, kann ich es tatsächlich als Element auswählen. Oh, ich werde das horizontale Feld auswählen. Und ich drücke Plus und es transformiert sich zurück, und jetzt kann ich seine Transformation im Laufe der Zeit manipulieren. Also bei Null, Null, fangen wir hier an. Nehmen wir an, in einer halben Sekunde stelle ich meine Bar auf eine halbe Sekunde um. Ich möchte die Übersetzung x hier auf 61 erhöht haben hier auf 61 Lassen Sie uns das auf bis zu eingrenzen. Ich werde diesen Standort auf, sagen wir, 0,8 belassen. Ich werde dieses Glas hier drüben platzieren und das wird eine weitere Markierung hinzufügen. Vielleicht ist 0,8 auch. Lass es uns auf einen legen. Ändere das. Ich werde das einfach ziehen, und ich werde auch das ziehen du brauchst, um diese erste Aktion zu ziehen. Wir haben nur den Punkt gezogen und das würde es schaffen. Ich würde beide fallen lassen. Jetzt, danach, muss ich noch einen weiteren Wert hinzufügen, das wäre unsere Y-Achse. Ich möchte, dass dieser Wert auf 1,5 gesenkt wird. Wie viel viel mehr. Nehmen wir an, es ist nicht wirklich wichtig, weil wir es auch verblassen werden. Aber lassen wir es hier, sagen wir 60. Jetzt möchte ich einen PA-Track hinzufügen. Wenn das passiert, ist dieser Teil der Maulwurfspitze vielleicht in Ordnung. I. 0.9. 0.9 F 0.9, ich möchte eine neue Spur hinzufügen, das wäre Render-Opazität Wir gehen von 120 aus. So animieren wir unser Widget. Aber wir möchten, dass es immer dann abgespielt wird , wenn wir etwas in die Hand nehmen Dafür benötigen wir eine Funktion. Aber wir werden das in der nächsten Lektion fortsetzen . Bis dahin auf Wiedersehen. Wir sehen uns dann. 71. Fixieren der Coin-Counter-Funktionalität: Und willkommen zum Game Design-Workshop und zu den prozeduralen Aufrufen zur Erstellung von Real Engine Five Dungeon Action BZ Zuvor haben wir in unserer Spielmodus-Funktion damit begonnen, unsere Anzeige für das Inventar zu erstellen in unserer Spielmodus-Funktion damit begonnen, unsere Anzeige für das Inventar zu Wir verwenden also die Datentabelle, um unseren temporären Wert aus dem eingehenden Zeilennamen zu ermitteln , der aus unserem BP-Artikel stammt. Nun haben wir mit einer Filiale begonnen und gefragt, ob es sich um einen Artikel handelt, der dem Inventar hinzugefügt wird, oder ob er in unserem Fall nur Gold gilt Weil es das einzige Pable ist, das wir haben, und wir haben einen Code erstellt, und wir haben einen Code erstellt Zufallsprinzip zu bestimmen, wie viele Münzen Und wir setzen diesen Wert auf unser Widget, was eigentlich falsch ist, weil wir eine Variable für die Gesamtanzahl der Münzen benötigen , um sie zu unserem Gameplay-Widget hinzuzufügen, nicht die temporäre, die wir bekommen Also werden wir für diese Variable werben. Machen Sie die Gesamtzahl der Münzen daraus. Und wir verbinden das. Ich werde die Verbindung trennen und die temporären Münzen holen und sie zur Gesamtzahl der Münzen hinzufügen. Ich werde diesen Wert auf die Gesamtzahl der Münzen setzen. Und dann werde ich die Gesamtzahl der Münzen verwenden , um sie dem Widget hinzuzufügen. Wir hätten diesen Teil für den nächsten Teil verwenden können, den wir entworfen haben. Wir haben auch das Gameplay-Widget erstellt. Und im Gameplay-Widget, wo wir die Gesamtanzahl der Münzen festlegen, ist dieser Wert hier drüben, dieser Text hier drüben, der unsere Gesamtanzahl an Münzen angibt. Jetzt, und es hat dieses Beutelsymbol. Dann sind wir weitergegangen und haben dieses Widget hier kopiert , die Reihenfolge der beiden umgedreht und den Münzen einen Namen gegeben, wir haben sie ausgewählt stehen lassen. Wir fügen ein Symbol hinzu. Wenn wir hier eine Zahl hinzugefügt, eine Zahl ausgewählt und dann das Symbol ausgewählt hätten, hätten wir unsere Coins-Variable hier drüben verwenden können, hätten wir unsere Coins-Variable hier drüben verwenden um anzugeben, wie viele Münzen wir gesammelt haben. Aber da wir nur ein Bild verwenden, ist das in Ordnung. Wir werden diese Variable dafür nicht verwenden. Wir werden es nur verwenden, um es zur Gesamtzahl der Münzen hinzuzufügen. Nun, um mit dieser Funktion fortzufahren. Als Nächstes benötigen wir ein Update, das im echten Zweig und im falschen Zweig üblich sein wird, um das im echten Zweig und im falschen Zweig üblich sein wird, um dem Spieler zu zeigen , dass wir etwas gefunden haben. Und wir haben die Animation im Animations-Tab erstellt. Wir arbeiten hier ein bisschen schnell. Das ist also der Teil, der die Animationen für diejenigen enthält, die neu sind. Und wenn wir auf eine Animation klicken, erhalten wir ihre Trucks, die Elemente, die wir animieren werden Und das hier ist der Lauf der Zeit, und wir legen fest, was auf jedem Truck passieren soll , auf jedem Element, das wir wollen, auf der spezifischen Kategorie, die wir wollen Hier gibt es viele Kategorien. Weit weg. Also, wir haben das animiert, aber um es abzuspielen, brauchten wir Funktion. Wir brauchen keine Funktion. Wir würden ein benutzerdefiniertes Ereignis erstellen oder es sogar von einem anderen Ort aus ausführen. Aber warum nicht unser Leben ein bisschen einfacher machen und es in einer Funktion haben, die wir mit einigen Eingaben aufrufen können. Dann immer wieder programmieren, wenn es nötig ist. Oh, wir werden eine neue Funktion erstellen. Nennen wir dieses Funktionselement. Abholung. Lassen Sie uns von der Ausführungslinie aus zeichnen und sie spielen eine Animation ab. Wir müssen eine Animation spezifizieren. Wenn ich hier klicke, werden wir keine sehen, weil sie in diesem Tab hier drüben sind, auswählen und auswählen. Hol dir diese Animation, C ist hier angeschlossen. Und noch etwas müssen wir tun, bevor wir die Animation abspielen, denn das ist so ziemlich alles. So spielen wir eine Animation ab. Gehen Sie zur Designer-Wanne, wählen Sie das Bild aus, unser Artikelbild hier, und das Set ist variabel. Nennen wir dieses Objekt Bild und gehen zurück zum Diagramm unserer Funktion, holen uns dieses Artikelbild und verlassen die Textur. Wir müssen nicht viel auf die Größe klicken, weil wir die gewünschte Größe beibehalten wollten. Und das ist unsere Textur , die wir brauchen , aber sie wird die Eingabevariable sein. Ich werde es hier verbinden. Ich werde die Texturvariable hier für uns erstellen. Ich kompiliere und speichere und lass uns zu unserem Top-Town-Spiel zurückkehren. Wir holen uns unsere Wood You Gameplay-Referenz. Ich werde Artikel abholen sagen. Wir werden es hier verbinden. Und für die Textur brauchen wir etwas mehr Platz. Wir werden unsere Term-Daten abrufen, das sind die Artikeldaten, die wir am Anfang gespeichert haben. Ich werde das aufteilen und unser Inventarbild abrufen und es hinzufügen, um den Artikel abzuholen. Wenn die Animation jetzt abgespielt wird, wird von jedem Artikel das passende Bild angezeigt. wir nun mit unserem nächsten Teil fort, dem eigentlichen Zweig, wenn das Objekt auswählbar ist, also auswählbar ist. Wir können es ins Inventar aufnehmen. Die erste Frage sollte lauten, lassen Sie uns unser Inventar hierher holen. Existiert es in unserem Inventar. Also werde ich fragen, ob es so malt wie wir es mit dem Dungeon so oft gemacht haben Und was es enthalten wird , ist der Rohname, den wir eingeben. Also Zeilenname hier. Ja. Aber ich benutze ein paar. Lass sie hier ein bisschen besser aussehen. Lassen Sie uns nun mit einem Zweig beginnen , den er nicht im Inventar enthält. Und die nächste Frage, die wir stellen sollten , ist unser Artikel, ist unser Inventar voll? Für unser Inventar werden wir vier Steckplätze haben. Also werde ich diesen Zweig kopieren und fragen, ob die Länge des Inventars gleich oder weniger oder gleich drei ist. Wenn es drei sind, können wir immer noch einen hinzufügen. Wenn es vier sind, dann wird es falsch. Hier in Falsch, es wird sehr einfach sein, es zu vervollständigen. Wir rufen einfach unseren Rückgabeknoten ab und sagen, dass das Objekt nicht ausgewählt wurde, es wird unsere Animation abspielen. Der Artikel wurde nicht ausgewählt. Wenn das stimmt, holen wir uns einfach unser Inventar. Wir werden unseren Artikel hinzufügen, das wäre der Zeilenname. Und wir müssen das vorübergehend herausbringen. Unsere temporären Daten. Wir haben den Betrag. Der nächste Schritt sollte wieder die Abholung des Artikels sein. Ich werde das verbinden. Hier, ich werde das herbringen . Ich denke, es ist in Ordnung. Fahren wir mit dem echten Zweig , falls er bereits enthalten ist. Nein, wir werden fragen, ob der Artikel stabil ist. Ich werde das herbringen. Denn wenn es nicht stabil ist, dann hat es keinen Sinn, es in die Hand zu nehmen. Also werden wir das herbringen. Und wieder meldet der Rückgabeknoten „Nicht ausgewählt“, sodass der Artikel abprallt Wir sind voll von diesem Artikel. Wir wollen es nicht mehr. Wir wollen es vielleicht, aber vielleicht ist es ein einziger Lagerartikel. Was können wir tun? Oh, was passiert, wenn es so ist und wir einige davon im Inventar haben. Wir werden das Inventar besorgen , weil wir es damit zu tun haben. Wir werden unseren Reihennamen herausfinden. Welches ist unser Artikel. Davon ausgehend werden wir für unsere lokale Variable werben und sie brauchbare, rissige, schreckliche Namen nennen Das scheint ein Thema bei diesem Pferd zu sein. Wenn du mit mehr Leuten als mit Klo zusammenarbeitest, sollte jeder Name beschreiben, wofür er im Grunde genommen ist. Es sollte immer Aktualisierungen der Variablen darüber geben, was erstellt wurde und allem. Es ist ein feines Gleichgewicht, ohne es zu übertreiben. Wie dem auch sei, jetzt holen wir uns unsere Zeltdaten, die Menge. Nun ja, die Artikelmenge, Sie sehen die Tem-Daten, verwirren mich Die Artikelmenge stammt aus unseren Tem-Daten, wir akzeptieren also Plus. Wir werden diese Artikelvariable zu diesen temporären Daten hinzufügen, und wir werden unsere Karte unseres Inventars hinzufügen Ihr eigener Name. Ich werde es nicht noch einmal hinzufügen. Ich werde es einfach aktualisieren, und die Summe dieser Ergänzung. Das nächste, was wir tun sollten, ist die Abholung des Artikels. Zwischen diesem Vorgang und der Abholung des Artikels sollte jedoch ein Schritt liegen , der für keine dieser Aktionen erforderlich ist. Eigentlich ist auch diese Aktion notwendig, weil wir dem Inventar etwas Neues hinzufügen, nämlich den visuellen Teil des Inventars zu aktualisieren. Oh, lassen Sie uns in der nächsten Lektion unser Inventar erstellen, und das wäre für diese. Ich werde dich dann sehen. Auf Wiedersehen. 72. Inventar-Visualisierungen im Gameplay: O Hallo und willkommen zum Design-Workshop und zum Kurs „Real Engine Five“, „ prozedurales Dungeon“, „ Action-Rollenspiel“ und „Kreation Zuvor haben wir unsere Funktion, das Inventar zu erweitern, fortgesetzt zu erweitern, Wir haben die Variablen für Münzen und Gesamtpunktzahl, die benötigt wurden, korrigiert Variablen für Münzen und Gesamtpunktzahl, die benötigt wurden, und weiterhin eine Funktion für die Abholung von Gegenständen entwickelt. Wir haben eine Textureingabe erstellt. Wir haben den Pinsel in unserem Artikelbild anhand der Textur unseres Artikels so eingestellt , dass er von unserem Objekt stammt , und wir haben die Animation abgespielt. Nun haben wir weiter die tatsächliche Filiale überprüft, einige Regeln und Bedingungen hier, ob sie bereits enthalten ist, ob unser Inventar voll ist oder nicht. Wenn die Bedingungen nicht zutreffen, geben wir „Falsch“ zurück Wenn die Bedingungen zutreffen, erweitern wir unser Angebot oder ändern unseren Betrag. Auch hier, indem wir einfach etwas hinzufügen, weil es sich um eine Karte handelt, weil es sich um eine Karte handelt, und dann spielen wir weiter mit der Artikelabholung. Eine bessere Version von Item Pickup wäre es nun, es in einem separaten Widget zu haben und während es abgespielt wird, verschwindet es plötzlich und bringt ein neues hervor , wenn du zu oft wählst Oder ein anderes Upgrade. Das könnte ein viel detaillierterer Code sein mit Regeln und allem und dem Erstellen von Dingen, dem Erstellen von Entitäten im Grunde. Aber jetzt ist es an der Zeit, ein kleines Inventar zu erstellen. Also werde ich wieder eine horizontale Box verwenden. Ich werde es gleich hier drüben platzieren. Eigentlich. Bringen wir es her. Dann bringe ich mit, dass wir die Voreinstellungen verwenden können, immer einfacher Und lassen Sie uns das diesmal richtig einschätzen. Es wird Inventar sein. Es wird detaillierter sein. Oh, für die Größe X wählen wir hundert, oder für die Größe wählen wir 150 Und für die Platzierung wählen wir O. 50 und Y O -100 Weil ich denke, das ist ein netter Ort, um das Inventar auf unserem Bildschirm auszuwählen Natürlich werden wir es auch animieren. Das soll eine sehr einfache Animation sein. Gehen wir zu den Animationen. Lass uns einen Truck hinzufügen. Nennen wir diesen Erfinder. Ich habe ein Wort und trete ein. Lassen Sie uns eine Spur zu diesem horizontalen Feld erstellen. Ich kann es so auswählen , weil ich es ausgewählt habe. Wenn Sie sich nicht sicher sind, welcher welcher ist, können wir sie jederzeit umbenennen. Du weißt, wann es das sein wird. Horizontale Kiste, und das wäre die horizontale Kiste der Münzen. Dies wäre das horizontale Feld für das Inventar. Kehren wir zu unseren Animationen zurück. Wir können sehen, dass wir den richtigen haben, und wir werden einen Truck hinzufügen , der umgebaut wird. Die Sache, die wir machen werden, ist der Erste, Erste, der Sekunde nach Null. Wir werden auf X Null sein. Nehmen wir an, eine Zeit von p fünf. P 0,5 wäre großartig. Das wären 900, glaube ich, -900. Und es bringt es hierher. Ich denke, das ist in Ordnung genug. Wenn es zu weit weg ist. Ich bin mir nicht sicher. Ich denke, es ist ein guter Ort. Sie können es platzieren, wo immer Sie wollen, aber für uns reicht das jetzt. nun für den internen Teil Lassen Sie uns nun für den internen Teil die Animation zurücksetzen unser horizontales Inventarfeld auswählen. Fügen wir vier Schaltflächen hinzu. Eins, zwei, drei, vier. Nennen wir sie auch. Warum nicht? Das B in einem. Und lass uns eins mit n zwei nehmen. Drei und vier. Jetzt werden wir sie alle auswählen und auf Datei setzen. Wir wählen die erste aus, um den Stil festzulegen, und dann kopieren wir diese Basis auf die anderen Schaltflächen. Auf unserem Bild. Gehen wir zu unseren Texturen. Und wir haben ja diesen Artikel, Rahmen eins. Lassen wir den Farbton S stehen, das Quadrat ist in Ordnung. Tönung für den normalen , lassen wir es so. Wenn Sie mit der Maus darüber fahren, lassen Sie uns das Bild auch kopieren und probieren. Für das verdeckte Bild wählen wir also einen gelblichen Farbton und fügen das Bild dann erneut Wählen wir für das gedrückte Bild einen grünlichen Farbton aus. Ordnung. Und jetzt lasst uns diesen Stapel kopieren, einfügen, kopieren, die Schaltfläche auswählen, einfügen und einfügen. Letzte Schaltfläche, Einfügen. Jetzt haben wir ein paar Bilder. Jetzt, für das Innere der Tasten, verwenden wir eine Skalierungsbox und fügen sie in die Tastenseite ein, es ist ein untergeordnetes Element des Buttons In der Skalierungsbox werde ich ein Overlay verwenden . In diesem Overlay werden wir ein Bild und einen Text haben Nun, ganz schnell, warum wir jeden Teil verwenden. Bild, das wir für das Artikelbild benötigen. Text, den wir für die Menge brauchen, und Overlay, wir mussten die Karte hinten und den Text vorne haben Nein, das heißt, es ist tatsächlich erledigt. Nein, es ist nur das Gegenteil. Ich glaube, ich brauche den Text oben . Ich sollte den Text haben. Mit diesem Bild kann ich es für eine Sekunde ändern. Wählte den Text aus. Ja, es heißt Collect. Also sollte der Text das zweite Objekt innerhalb des Overlays Die Skalierungsbox, wir verwenden die Skalierungsbox für den Fall, dass unsere Bilder in der Box groß sind , oder um das zu machen, was eine Maßstabsbox macht, sie passt in das Innere des Containers, in das sie eingespeist wird Sie skaliert sie so, dass sie in den Behälter passt. Lassen Sie uns also das Skalierungsfeld mit seinen untergeordneten Elementen auf alle Schaltflächen kopieren und einfügen . Lassen Sie uns eigentlich den ersten korrigieren, ich werde den eingefügten löschen Korrigieren Sie zuerst visuell, denn wenn wir die Grafiken korrigieren und dann kopieren und einfügen, werden auch die Also werden wir das Overlay so einstellen, dass es alles ausfüllt, und wir werden das Skalierungsfeld einstellen Es ist auch schon gefüllt. Dann stellen wir das Bild so ein, dass es alles ausfüllt, und der Text wird unten rechts angezeigt. Dann wählen wir hier unten eine weitere Option aus, nämlich die Ausrichtung, bei der der Text Mitte beginnt und endet. Und wir wollen natürlich, dass der Text vorerst Null ist. Und natürlich sollten wir das Telefon auf etwas wirklich Kleineres umstellen. Die Acht ist nicht so groß, sie reicht nicht bis zur Spitze. Ich finde, das ist ein nettes Verhältnis für die Zahl. Gehen wir für das Bild zu unseren Texturen. Und ich finde es lustig Ich finde es lustig, es sieht irgendwie okay aus. Wenn ich die CGL- oder sogar die HP-Textur auswähle, die erste Textur, scheint sie gesperrt zu sein oder so Wie auch immer, du kannst etwas wählen, das sich anfühlt. Es gibt jedoch einige spezielle Regeln. Siehst du, wir haben einen Abstand zwischen unseren Texturen. Es passt sich also gut dem Hintergrund an. Wenn ich zum Beispiel den roten Trank mitbringe, kannst du sehen, dass er sich korrekt füllt, wohingegen, wenn ich, sagen wir das hier oder hier, den Hintergrund verdeckt Also, vielleicht ist der Gesundheitsteil in Ordnung. Das ist auch cool, aber die Spieler werden denken dass es hier etwas gibt, auf das sie klicken können, und sie werden versuchen, darauf zu klicken. Nun, das sieht eher so aus, als ob es gesperrt ist. Wie dem auch sei, ich werde das auswählen. Ich werde dir jetzt unser Skalierungsfeld kopieren, weil wir die Attribute festgelegt haben , ich werde es einfügen. Ich werde es auch in drei, Nummer vier, einfügen. Lassen Sie uns nun all diese Bilder auswählen und sie zu einer Variablen machen. Eigentlich müssen wir sie benennen. Eins, zwei, drei, die Hauptstadt, seit ich mit Hauptstädten angefangen habe Vier. Als Nächstes müssen wir zu unserem Graphen gehen und eine neue Funktion erstellen , die wir Update nennen werden. Und natürlich wird es eine Eingabe benötigen, und es wird ein Name sein, und es wird eine Karte sein. Die zweite Variable wird eine Ganzzahl sein , weil das unser Inventar ist. Inventar. Ich denke, das ist der Abschluss, wir müssen nur als Nächstes wir müssen nur als Nächstes in unseren Top-Down-Spielmodus wechseln und von unserem WT-Gameplay aus unser Inventar aufrufen. Jetzt können wir es gleich hier aufrufen oder wir können es am Ende anrufen. Das ist nicht wirklich wichtig, denn da unsere Punkte nichts im Inventar aktualisieren, wird es einfach aktualisiert, ohne etwas zu ändern. Aber wir hätten es hier haben können, aber das ist, sagen wir, optimaler. Ist es nicht. Es ist nicht wirklich wichtig. Aber es macht weniger Operationen. Wenn wir ein sehr großes Inventar hätten, würde es langsam wichtig werden. Wir werden das Inventar hierher bringen, wir werden es hier verbinden und wir haben es betriebsbereit. Und das wird es für diesen sein. In der nächsten Lektion werden wir diese Funktion abschließen. Dann auf Wiedersehen, C. 73. Aktualisieren von Inventarvisualen: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Beim letzten haben wir damit aufgehört, unser Widget für unser Inventar zu entwerfen, das in unserem Widget-Gameplay, dem aG-Gameplay, enthalten ist Also haben wir einige Bilder hinzugefügt. Wir haben einen Text hinzugefügt, angibt, wie viele Artikel des jeweiligen Artikels wir haben. Wir haben sie zu einem Overlay hinzugefügt, sodass sie sich überlappen, und wir haben das zu einem Skalierungsfeld hinzugefügt, das zu den Schaltflächen gehört, die wir hinzugefügt haben Und wir haben das Skalierungsfeld hinzugefügt, damit der interne Teil die Schaltfläche korrekt ausfüllt Wir haben unser Inventar mithilfe einer sehr einfachen Übersetzungsspur animiert , indem wir nur den X-Wert verschoben haben, und wir haben damit begonnen, unsere Funktion zum Aktualisieren des , indem wir nur den X-Wert verschoben haben, Inventars zu erstellen. Das ist im Spielmodus, falls ich ihn hier finden kann, in unserer A-Inventarfunktion. Fangen wir also an, das zu füllen . Was wird das bewirken? Lassen Sie uns das besprechen, während wir es bauen. Das Erste, was das tun wird, ist unsere Schlüssel zu bekommen. Im Grunde genommen sind unsere Artikelreihen. Und danach benötigen wir auch unsere Werte, um die Beträge zu erhalten , weil wir auch die Beträge aktualisieren müssen . Wir holen uns unsere Schlüssel aus unseren Daten, den Artikeldaten. Also werden wir jede für eine lokale Variable heraufstufen, nennen wir die Schlüssel. Lassen Sie uns das auch auf eine Variable hochstufen. Nennen wir diese Werte. Oh. Wir werden alle Schlüssel durchgehen. Ich werde die Schlüssel für Loop mitbringen. Und ich werde die Tabellenzeile der Datenzeile aus den Elementen der Datentabelle D abrufen. Eigentlich werde ich einen Strahl machen. Ich werde das als lokale Variable bewerben. Nennen wir diesen Artikel Daten. Ich werde diese beiden löschen und Artikeldaten hinzufügen und die Ausgangszeile hier verbinden. Ich habe also auch einen Strahl mit meinen Artikeldaten. Jetzt hole ich mir meine Inventarbilder. In einem bin ich zwei, drei und vier. Ich werde ein Array erstellen. Jetzt kann ich alle unsere Knöpfe mit 14 Schleifen bearbeiten. F zwei. Für jeden von ihnen werde ich eine sehr einfache Frage stellen. Ist der Artikel aca? Komm her, verbinde dich mit dem Index, ich werde ihn kaputt machen. Warum mache ich das und wie mache ich das? Da unsere Artikel in einer bestimmten Reihenfolge zu unserem Inventar hinzugefügt werden in einer bestimmten Reihenfolge zu unserem Inventar hinzugefügt und diese Reihenfolge in unseren Arrays beibehalten wird Also, bis auf eins, sortieren wir bis zum Index Null unseres Inventar-Arrays und so weiter Also, ob unsere Artikel stabil sind oder nicht, fangen wir an, wenn sie nicht stabil sind Ich brauche den Text, lass uns zurück zum Designer gehen. Wählen wir unsere Texte aus. Ich mache sie zur Variablen T, in einem. Der nächste wäre en zwei. Das Zimmer wird T in drei sein. Nun zu den Variablen, ich kann sie in der bestimmten Reihenfolge wieder hierher bringen , eins, zwei, drei, vier. W, um ein Array zu erstellen. Möchte sie zu diesem Array hinzufügen. Da diese Arrays übereinstimmen, kann ich einen gewünschten Index für das gewünschte Muster abrufen und ihn unsichtbar machen Eigentlich versteckt. Ich werde das auf falsch stellen. Als Nächstes muss ich unser Array-Element abrufen. Das wird ein bisschen sein. Das ist Pinseltextur. Hier angeschlossen, und für die Pinseltextur werde ich sie aus unseren Artikeldaten holen, hier ein Inventar erstellen, das nicht verbunden ist, und dieser Teil ist fertig Wir stellen das kleine Holz auf der Unterseite so ein, dass es unsichtbar ist, und wir stellen das Texturbild für unseren Artikel ein Oh, wenn es sichtbar ist, erhalten wir einfach unsere Werte unseres Inventars, also die Mengen Und wir werden unsere Textur der Textur bekommen, tut mir leid. Wir holen uns den Text, um den Betrag auszufüllen. Ich werde Text sagen. Ich werde unsere Werte hier abrufen, ich werde eine Kopie abrufen, der Wert wäre der Index, den wir ausführen. Natürlich müssen wir ihn sichtbar machen, nur für den Fall, dass er unsichtbar ist. Ich meine, den Text, dem wir eine Zahl hinzufügen, und dann werden wir die Pinseltextur einstellen. Das wäre. Das wäre unsere Funktion, die das Inventar aktualisiert. Es ruft unsere Werte ab und gibt unsere Schlüssel und Werte und erstellt dann eine Liste unserer aktuellen Artikel. Es geht über unsere Schaltflächen und wendet die Zahlen und Bilder an oder legt sie unsichtbar Ich denke, nach all dem sind wir mit unserem Inventarsystem fertig Ich denke, nachdem wir all diese Dinge gegessen haben, ist es an der Zeit, unseren Charakter zu spawnen Wir können anfangen, einige dieser Mechaniken zu testen. Um das zu tun, müssen wir einige Dinge erstellen , um die Transaktion ein wenig reibungslos zu gestalten. Denn wie gesagt, wir haben das Laden. Beim Laden werden wir eine Animation erstellen , einen Truck mit mehreren Animationen. Aber wir werden es Fade Load nennen. Das erste, was wir hinzufügen werden, ist unsere Ladeleiste, die für mehr Sichtbarkeit sorgt. Zum Lkw, zum Lastwagen mit Ladestange und einer anderen Art von Lkw, nämlich Sichtbarkeit. Jetzt wird es versteckt. Wir wählen jetzt den Ladetext unserer Animation am Truck oder dem Element aus. Und jetzt fügen wir den Truck hinzu, um das Element zu manipulieren, wieder Sichtbarkeit, also versteckt. Zuletzt wählen wir unser Bild aus. Wir kehren zur Animation zurück, fügen es als Truck hinzu und fügen den Truck zu seinen Eigenschaften hinzu. Wir werden die Render-Opazität einstellen. Geben wir es Sagen wir, 2 Sekunden halb, 25, machen wir den Unterschied, und hier wird er Null sein. Also eins zu Null. Wir haben diese Acht unserer Ladung und unseres Bildschirms. Lassen Sie uns kompilieren und speichern. Gehen wir zurück zu unserem Labyrinth-Generator. Gehen wir gegen Ende. Wir sind bei 0,85 Stellen wir die falsche Paste ein. Ich habe Prozent gesetzt. Warten wir auch einen Bruchteil einer Sekunde. Lass es uns auf eins setzen. Nennen wir jetzt Pain Loading. Lass uns in der Animation mitspielen. Lassen Sie uns jetzt hier einen Zweig erstellen. Verzweigen Sie hier tatsächlich, dass dieser Zustand auf Generatorebene sein soll. Das entspricht eins. Wenn das das erste Level ist, machen wir die Play-Animation des Ladens Da wir es aus dem Elternteil entfernen werden. Also was wir jetzt brauchen. Nennen wir es ein Ereignis. Ich werde einen Event-Player machen. Nennen wir es hier drüben. Spieler. Und holen wir uns unsere Animation und Zeit. Aber wir wissen, wie lange diese Animation dauert, und lassen Sie uns das klarstellen. Aber wir können warten, bis die Phase abgeschlossen ist, und lassen Sie uns eine Schicht auf Troll und deine Nein, fertig. Maus. Und das wird unser Gameplay ermöglichen. Aber es stellt sich die Frage, haben wir unseren Mund versteckt? Ich denke, das haben wir nicht. Nein, lass uns gehen. Der Start am Anfang wird abgespielt , wenn wir das Laden anzeigen. Wir wollen unsere Maus verstecken. Bevor die Show geladen wird, setzen wir die Show-Maus auf False. Gehen wir zu unserem Ladebildschirm und dem Widget. Lassen Sie uns unsere Leinwände auswählen und sie auf sichtbar setzen. Wenn alles in Ordnung ist, nein, oder nicht. Dadurch muss das Ziel mit dem Widget verbunden , da Animate Target ein Benutzer-Widget ist Es bedeutet, wo spiele ich diese Animation ab. Das ist die Animation, die ich gerade spiele, aber wem gehört sie? Das ist es, was es brauchte. Datei speichern und Spiel starten drücken. Das Spiel beginnt. Wunderbar. Ich denke, das ist es für diesen. Beim nächsten Fehler. Bringen wir es hierher, wo es ist. Es ist eine Kunstbewegung. Wir haben diese Dinge noch nicht programmiert. Deshalb mag es es nicht. Controller runter. Wir werden es später reparieren. Aber das ist es für diesen. Wir werden mit dem nächsten fortfahren. Auf Wiedersehen. 74. Spawnen des Spieler-Zoom in der Kinobearbeitung: Zuvor waren wir mit unserer Funktion zum Aktualisieren des Inventars fertig , mit der unser Inventar abgerufen wird Sie fügt unsere Schlüssel und unsere Werte zu separaten temporären Werten hinzu. Wir gehen unsere Schlüssel durch und fügen sie zu unseren Inventardaten hinzu. Wir gehen die Tabellennamen unserer Schlüssel durch und fügen sie zu den Inventardaten hinzu. Dann schauen wir uns unsere Bilder an, quasi die Buttons, und wir fühlen uns die Statistiken entsprechend an. Und danach gingen wir zu unserem Ladebildschirm. Wir haben eine einfache Animation mit vielen Eingaben und vielen verschiedenen Elementen erstellt . Wir haben unser Hintergrundbild zum Ausblenden gebracht. Wir verwenden das Laden und unseren Textblock, um sie nicht zu verwenden. Wir haben sie zu Beginn der Animation auf versteckt gesetzt, also verschwinden sie und dann wird sie ausgeblendet In unserem Labyrinth-Generator haben wir unseren Ladeprozentsatz aufgefüllt Und wenn sich der Generator auf Stufe eins befindet, bedeutet das, dass wir uns auf der ersten Ebene befinden Wir spielen also die Überblendanimation unseres Inventars in unserer Ladeleiste ab und dann spawnen wir unseren Spieler Wir haben eigentlich nur eine Funktion gemacht. Wir haben den Spieler noch nicht wirklich gespawnt. Aber danach haben wir die Endzeit unserer Animation erreicht. Wir haben verzögert und die Maus so grob eingestellt. Und als Nächstes sollten wir eigentlich unsere Ladung besorgen. Wir ziehen um. Nein, laß uns jetzt unseren Spieler spawnen. Das Erste, was wir brauchen werden, stell das vor, es werden die Koordinaten des Dungeons sein Wir werden unseren Kerker holen. Wir werden unseren ersten Block finden, um ihn zu teilen. Standardmäßig heißt es 00 und wir werden den Standort ermitteln. Wir werden dem Song etwas mehr Höhe hinzufügen, auf Hundert hinzufügen klicken, und das ist der Spawnpunkt Jetzt werden wir Actor Plus verwenden. Der Schauspieler wäre der Schauspieler. Wir werden die Transformation an dieser Transformationsstelle aufteilen . Wenn wir so spielen, werden wir wahrscheinlich den Pom sehen. Und in großer Entfernung auch. Das liegt daran, dass wir keine Kontrolle darüber haben, denn wir spawnen auf, es ist wie bei jedem anderen Schauspieler wir auf diese Welt gebracht Wir haben also einen neuen Fehler. An Ort und Stelle bei Max's Items. Was war der Fehler? Warum versucht es, den Maze Generator zu Oh, wahrscheinlich im Labyrinth. Wir haben nicht das, was unsere große Brust bei Requisiten, Spa, maßgefertigten Requisiten ist unsere große Brust bei Requisiten, Spa, maßgefertigten Requisiten Nein. Nein. Ich gehe einfach raus und gehe direkt zu SP und unsere große Truhe ist da, Labyrinth-Generator selbst? War es unsere große Truhe oder war es unsere kleine Truhe? Lass uns die kleine Truhe finden. Ja, es war eine kleine Truhe. Ich selbst. Aber die große Truhe. Wahrscheinlich habe ich diese oder die große Brusttruhe nicht verändert. Wir brauchen hier eine Truhe. Hier. H. Warum kann ich nicht nochmal, ich kann nicht die Standardeinstellung sein. Ich wähle es so aus. Ich weiß nicht, warum es mir andersherum nicht gefallen hat. Und hier brauchen wir eine Generation. Hier spawnen wir also im Grunde die kleine Truhe. Ich habe die Klasse nicht geändert. Ich weiß nicht, warum Andel so ein großes Problem hatte. Oh, weil ich den Rückgabewert richtig angeschlossen hatte. Ja, das ist der Grund. Gehen wir also zurück zu unserem Spawn-Charakter und schauen wir uns an, warum wir nichts spielen, nichts tun können Wenn wir einen anderen Schauspieler spawnen, wir den anderen Schauspieler immer noch nicht bewegen oder Jetzt haben Pfoten und Charaktere eine besondere Fähigkeit, die man Besessenheit nennt Und um etwas zu besitzen, brauchen wir den Spieler-Controller Und vom Player-Controller ziehen wir, was, wie Sie im Tooltip sehen können, an der Spieler-Steuerung befestigt ist und diese Pfote von diesem Controller aus in Besitz Das bedeutet, dass du diese Pfote im Grunde bewegen kannst. Besitzen bedeutet noch viel mehr. Wir werden das jetzt nicht machen. Aber wenn ich es so lasse, bedeutet das, dass ich meinen Charakter bewegen kann , während das Ausblenden stattfindet. Wir werden hier eine Verzögerung einbauen. Und wir werden den Kern der Animation verwenden. Drücken wir jetzt Play und Sie werden sehen, dass sich auch hier die Kamera geändert hat. Die Kamera hat sich ein wenig verändert und wir können uns tatsächlich bewegen. Unsere Stacheln durchbohren uns also nicht, sie machen uns nur verrückt. Lass uns das reparieren. Gehen wir zu unserer Falle, gehen wir zu unseren Stacheln. Da das nur visuell ist, sollten wir es physisch so einstellen, dass es keine Kollision gibt Das ist etwas Visuelles, das passiert. Wir wollen nicht, dass es zu Überschneidungen bei Ereignissen kommt. Außerdem muss der Fallenkörper nicht kollidieren. Lass uns zur Kollision gehen. Keine Kollision. Generieren Sie keine Over-Rap-Events, kompilieren und speichern Sie sie. All diese kleinen Dinge übernehmen wir einfach , weil es viele Fallen gibt, und es wird noch viele geben. Und wir lassen die Zeit aus und wir können spielen. Die Animation ist irgendwie komisch . Ich werde nachschauen, was es ist. Wir können Räume betreten. Wir werden das Ding reparieren, weil die Kamera gerade komisch ist. Und wie Sie sehen können, klicke ich hier drüben, also geht es nicht richtig. Dies sind Probleme mit einem Verstärkungsregler, und es gibt viele Probleme, die wir beheben müssen. Was diese Fackel betrifft, lässt sie sich zum Beispiel leicht ausschalten. Lass mich mal sehen. All die Fackeln? Alle Fackeln. Also lass uns anfangen, Dinge zu reparieren Fangen wir mit dieser Fackel an, wir alles sehen, was wir finden. Wir sollten es sofort reparieren. Wir gehen also zu den Flurlichtern. Wird direkt gehen. Also Requisiten, Raumrequisiten. Gehen wir dahin, wo wir unsere Fackel spawnen. Eine Fackel ist eigentlich das Erste, was wir tun. Also muss ich es sein. Roo Fackel. Lassen Sie uns diese Werte wieder ändern, wir sind bei der Blaupause, den Raumrequisiten, diesem ersten Teil der Kette von Ereignissen Was war das Problem hier? Ich denke, das sind die drei, 320. Lassen Sie uns bei 320 und allem nachfragen. Stapel spielen. ist noch weiter. Lass mich es einfach auswählen. Ich gehe zu dem Kind. Es ist das Kind eines Kindes, also kann er das nicht wirklich tun. Was ich tun kann, ist die Zimmerfrucht zu finden. Und von dort aus die Fackel. Also 20 war die falsche Richtung. Das sind 375. Schauen wir uns eine andere Richtung an. Das ist. Was ist das? Okay? Aber das ist dieselbe Richtung. Dieser. Ich habe es in Sly gefunden, indem ich darauf geklickt 375. Ja, im Grunde ist das der Wert. Okay, also 375, 375 minus 375 -75. Das sind die neuen Werte. Oh, lass uns weitermachen. Lassen Sie uns das zuerst überprüfen. Aber ich denke, jetzt wird es okay sein. Diese Fackeln sind okay, sie sind in der Wand, aber das macht nichts, sind schon besser Das ist ein bisschen innerhalb der Wand. Aber es ist in Ordnung. In Ordnung. Nein. Lass uns mit unserem Besitz des Gedichts weitermachen . Was wirklich passiert. Was wir sehen können ist auch, dass ich, wenn ich spiele, ein anderes Licht habe als wenn ich besessen bin und den Charakter besitze Wenn ich zum Beispiel auswerfe, wird das Licht plötzlich fantastisch, wenn ich es nicht auswerfe, das Nein. Lassen Sie uns das beheben, denn es ist sofort ein Schnäppchenstopp. Wir können so nicht testen. Es ist wirklich hässlich. Gehen wir zu unserem Op-Down-Charakter, Bauplänen, dem P-Down-Charakter, der ECT-Kamera Beginnen wir mit dem Hinzufügen der Belichtung. Das heißt, je länger wir dem Licht, unserem Auge, ausgesetzt sind, wird es übernommen, sodass die Kamera einen Effekt wie diesen erzeugt. Also werden wir nach Haltung suchen. Wir werden den Mittelwert auf maximal 2,1 setzen. 0,1 könnte etwas niedriger sein. Stellen wir es auf eins und prüfen, ob wir es bei der Wiedergabe verringern müssen. Und es ist schon ein bisschen dunkler geworden. Wenn ich auswerfe, können wir sehen , dass die Farbpalette irgendwie gleich bleibt, die Beleuchtung, was sie erzeugt All das ist behoben. Der Grund, warum es hier so funktioniert , ist , dass wir keine Spieleinstellungen verwenden. Ich klicke darauf, es gibt keinen großen Unterschied, und E V Null, wo es dunkler wird, wenn ich es auf eins setze, und wenn ich es auf minus eins setze, wird es heller. Jetzt setze ich es wieder auf Null. Und das ist der Expositionsgrad. Das ist es, wofür E V meiner Meinung nach steht. Was wir auch tun müssen, ist ein kleines Intro zu erstellen , weil es wirklich abrupt zum Charakter geht Also werde ich aufhören. Ich werde etwas hinzufügen. Schnell zum Projekt hinzufügen. Ich gehe zur Kamera. Schauspieler, ich werde diese Position bis auf 000 setzen und weißt du was? Ich werde das Bild tatsächlich nach oben bewegen, auf Play drücken. Ich werde ablehnen. Finde die Kamera. Ich glaube, das ist es. Cera. Nein, das liegt daran, wie Sie sehen können, das ist 1520, während unsere Kamera auf 300 war Ich hole mir diese Kamera. Ich werde darauf klicken, ich werde die Kamera steuern. Vielleicht, um es in eine allgemeine Position zu bringen. Hier, ich weiß es nicht. Das wird unsere Intra-Kamera sein , die zu unserem Spieler geht. Vielleicht mit dem Gesicht zum Spieler. Und Winkel. Ja, okay. Jetzt drücke ich A und die Position wird gespeichert. Wenn ich also Stopp drücke, befindet sich die Kamera an dieser Position. Jetzt gehe ich zum Level-Blueprint. Oh, wir hatten eine Kamera. Das hab ich vergessen. Ich werde die erste Kamera löschen. Ja, es sollte die Verbindungen unterbrechen. Und der Level-Blueprint. Ich habe es gerade zuletzt geöffnet. Ich werde die Kamera wählen. B das Level und erstelle eine Referenz. sehe jetzt, dass es aktualisiert wurde , weil es vor der eingestellten Kamera nicht aktualisiert Das ist nicht bekannt, da ich die vorherige Kamera gelöscht habe. Ich werde das verbinden. Wir werden das löschen. Wir werden kompilieren und speichern. Und hier, wo wir Spawnerspieler sind, werde ich vor der Verzögerung eine Sequenz machen Und ich leihe es dir und wir klicken auf kontextsensitiv , weil wir es nicht Also wähle ich eine langweilige Ansicht mit einer langweiligen Ansicht, ein Ziel mit einer langweiligen Ansicht, ein Zielbild mit langweiligen Ansicht Nun, warum ist es nicht erschienen? Das liegt daran, dass es sich nicht um eine wirklich übliche Funktion handelt und dass sie eine Anforderung hat. Die Voraussetzung ist der Play-Controller. Wenn ich also von hier aus zeichne und das Ziel „Überblendung anzeigen“ erhalte, lassen wir „Überblendung mit Ziel anzeigen“. Sehen wir uns Target mit fad Raising an und verbinden das hier. Ihr seht, wir haben es sofort ohne Kontextsensitivität bekommen , weil es zum Player gehört , der Controller hat im Grunde diese Funktion Es ist in der Kategorie Player. Die Überblendzeit wäre also wieder unser Laden, unser Nichtladen, unsere Auszahlung nach dem Laden, und vielleicht -0,1 Sekunden, und vielleicht -0,1 wenn sie vorbei ist, haben wir eine Sekunde Zeit, bis wir einen Punkt haben, das ist meine Ansicht Und zu guter Letzt müssen wir unser neues View-Target mit unserem Charakter verbinden unser neues View-Target , denn das ist das Ziel, das wir uns ansehen werden Es nimmt unser aktuelles Ziel, unsere Kamera, und geht zu einem anderen Ziel. Lass uns das Spiel testen. Und es funktioniert irgendwie. Ich denke, das ist genug für diesen. Wir werden beim nächsten alles reparieren weil wir einige Einstellungen korrigieren müssen, viele Einstellungen, die repariert werden müssen. Wir werden dich dann sehen. Auf Wiedersehen. 75. Kollisionsbehebungen und Spielerkachelerkennung: Hallo und willkommen zum Game Design Workshop und dem Kurs zur mit Real Engine Five Erstellung prozeduraler Dungeon-Action-RPGs Zuvor hatten wir unsere Kameramechanik entwickelt, bei der wir „ Ansicht“, „Abrufen“ und „Mischen“ eingestellt bei der wir „ Ansicht“, „Abrufen“ und „Mischen unsere ursprüngliche Kamera in unserem Level, das wir platziert haben, und wir haben eine Referenz innerhalb des Level-Blueprints erstellt, die wir vorher hatten, aber wir haben eine neue erstellt, die eigentlich keine Rolle spielt Außerdem haben wir beim Spawnen den Code vervollständigt, um zwischen den Zielen zu wechseln und den Spieler in Besitz zu nehmen, wenn die Fade-Out-Animation Jetzt haben wir auch ein bisschen gespielt und ein paar Dinge gefunden, während wir uns bewegt haben Zum Beispiel verhält sich die Maus unseres Spielers seltsam, wenn wir uns im Raum befinden . Und als wir es tatsächlich waren, hatten wir dieses Beispiel nicht, aber als wir durch die Felder gingen, machte der Charakter eine seltsame Bewegung, besonders zwischen den Verbindungen der Steine. Lassen Sie uns nun darüber diskutieren, warum diese Dinge passieren. Zuallererst kann ich beim Auswerfen immer noch Dinge aus dem Show-Menü auswählen Aber wenn ich Kollisionen auswähle, können wir sofort sehen, was vor sich geht Zum Beispiel sind unsere Büsche hier auf unsichtbar gesetzt, aber ihre Kollision ist aktiviert Das Gleiche passiert mit unseren Siegeln, die wir als unsichtbar bezeichnen, aber die Kollision dauert immer noch Und das beweist, dass wenn im Spiel etwas unsichtbar oder versteckt machen, das nicht bedeutet, dass wir die Kollision tatsächlich schließen Ein weiteres Problem ist , dass wir zu Beginn des Spiels anderen Lichteinwirkung ausgesetzt sind als die Spielkamera. Also, lasst uns diese Dinge reparieren. Lassen Sie uns mit einem Wort unsere Kamera auswählen. Suchen wir nach der Belichtung, hier ist sie, und stellen wir die minimale und maximale Belichtung auf eins ein, so wie es bei unserer Kamera im Spiel der Fall ist. Ich werde speichern. Gehen wir nun als Nächstes zu unserer DP-Kachel und wählen die NS aus. Wenn wir die Vines auswählen, gehen wir zum Standardverhalten über, da sie keine Überschneidungsereignisse erzeugen müssen Sie müssen nicht vom Charakter betreten werden. Sie müssen keine Kollision haben. Es ist nur eine visuelle Sache. So können wir alles so einstellen , dass es keine Kollision gibt. Wir werden speichern und kompilieren. Nun, manchmal stürzt es ab, wenn wir Dinge mit den Reben machen. Ich hoffe, wir haben das bei der Veröffentlichung behoben . Es gibt ein Problem. Lass es mich dir zeigen. Ich wähle ein Asset aus. Ich werde Explorer zeigen. Und im Explorer gehe ich zum Dungeon Jin-Kurs und ich gehe zum Beispiel zu „Gespeichert“ und protokolliert uns ein Eilprotokoll. Wenn wir in unserem Crash-Log sehen können, dass es einen wiederholten Fehler gibt , falls du einen Absturz hattest, um die Vines geht , dass derzeit nur opake oder maskierte Blend-Mods unterstützt werden, und wir haben Blend-Mods ein Problem mit Durchsichtigkeit Wie wir an den Pinienblättern sehen können, handelt es sich um Ich denke, wir werden das bis zum Projekt behoben haben , aber wenn es passiert, ist es nur so, dass die Engine abstürzen könnte, wenn sie verschoben oder die Einstellungen an ihnen geändert Als Nächstes würden wir zu unseren Dekorationen gehen und unsere CDLs auswählen Sie wählen sie alle aus, eins, zwei, drei, vier, wählen sie alle aus, und ich gehe auch zur Kollision und aktiviere das Häkchen bei Generate over Piens to no und Charakter step on no and no Collision, weil das wiederum etwas Visuelles ist Wir sollten uns das nicht ansehen. Wir sollten nicht damit kollidieren. Nun, wenn ich jetzt auf Play drücke, werden diese Probleme behoben Wenn ich also durch die Kachel gehe, siehst du eine viel gleichmäßigere Bewegung, und wenn ich neben Türen gehe, werde ich nicht durch eine Kollision blockiert Ich glaube nicht, dass uns das sowieso versperrt hat. Wenn ich jetzt aber einen Raum betrete, versuchen wir, einen Raum zu betreten. Sie können sofort sehen, dass die Maus hier einige Probleme hat. Ich ziele sowohl auf meinen Charakter auch der Charakter bewegt sich nach unten. Warum ist das so? Auch hier haben wir die Decke so eingestellt , dass sie unsichtbar ist. Es ist tatsächlich hier. Wir können es nicht sehen, aber es ist hier, eine Abzweigung von Kollisionen Und wenn Sie es wieder einschalten, können Sie sehen, dass es aktualisiert wurde, um zu zeigen, dass unsere Decke da ist. Um Kollisionen auszuschalten und unser System zum Ein- und Ausblenden der Decke in einem Raum zu starten unser System zum Ein- und Ausblenden der Decke in einem Raum Aber bevor wir das tun, nur eine kleine Änderung an unserer Kamera Lass uns zu unserer Kamera gehen. Wir gehen eigentlich zu unserem Charakter, zu unserem Frühling, nicht zur Kamera. Der Frühling ist wie ein Boomstick. Es ist wie ein Stock, der die Kamera hält, und er hat seine eigenen Regeln. Wir werden die Zielarmlänge auf 2.500 ändern. Wir haben also eine gewisse Distanz zu unserem Charakter. Und dann ändern wir die Drehung auch nicht absolut sein muss, relativ von -50, wir behalten sie bei -50, und zur Z-Achse, der blauen Achse, fügen wir 45 hinzu, um unser Spiel isometrisch Das nächste, was wir ändern werden, ist, wir Lag eingeben werden, es gibt eine aktivierte Kameraverzögerung , die wir deaktivieren werden, weil wir wollen, dass unser Charakter immer zentriert ist , die wir deaktivieren werden, weil wir wollen, dass und nicht die Kamera den Charakter verändert. Denn wenn wir jetzt spielen gehen , gibt es eine kleine Verzögerung auf unserer Kamera, wenn wir uns bewegen. Ups. Ich glaube, ich habe mich in Bezug auf den absoluten Standort geirrt Ja. Ja, es muss in absoluter Rotation sein. Also wählen wir Welt 45. Und jetzt gehen wir zurück. Jep. Musste absolut sein Man kann sehen, wie sich unser Charakter bewegt, aber unsere Kamera hat eine Verzögerung. Es steht nicht wirklich im Mittelpunkt unseres Charakters. Es wird verzögert, bis die Kamera zum Charakter gebracht wird. Also lasst es uns ohne diese Verzögerung eher wie ein Pablo-Spiel machen. Wir werden zu einem Charakter gehen. Ich werde wieder Lug wählen. Ich werde Camera Lug deaktivieren. Also sollte unser Charakter jetzt in der Mitte bleiben. Wir haben viel mehr Kontrolle, also hör hier auf, hör hier auf. Wir wissen, was wir vor uns haben. Richtig. Nun, um mit dem System für die Zimmer zu beginnen. Als Erstes müssen wir eine Variable für unseren Charakter erstellen , um zu speichern, wo sich unser Charakter befindet. Ich gehe zu unserem Charakter. Ich werde auf Variablen klicken und eine neue Variable erstellen. Nennen wir es ds, und das wird ein gutes Beispiel sein. Um unserem Charakter zu sagen, was unsere Koordinaten sind, müssen wir auch zu unserem Kachel-Blueprint gehen und hier einen weiteren Wert erstellen Rufen wir uns an. Lassen Sie uns auch diesen Punkt ändern. Das beste Spiel, um diesen Endpunkt zu speichern , wäre, wenn wir das Plättchen spawnen Wir machen daraus Weihrauch, bearbeiten und veröffentlichen unseren Spawn, kompilieren, speichern und kompilieren und gehen dann zu unserem Generator zur Generierung von Labyrinthen Gehen wir in Phase eins zum Anfang, aber wir spawnen gerade unsere Kacheln und das müssen wir aktualisieren Wir haben Fliesenschnüre. Und für Kachelkabel verwenden wir einfach die Curr-Koordinaten Jetzt sind die Informationen auf die Kachel übertragen worden. Wie geben wir es an den Spieler weiter? Nun, bei Dekorationen haben wir eine Kollision, die wir vielleicht für etwas anderes genutzt hätten, aber jetzt werden wir sie dafür verwenden. Aber wir müssen auf „ Überlappungsereignisse generieren“ klicken , um wahr zu sein. Und für Kollisions-Presets haben wir es auf Atom Ignoriere im Grunde alles außer dem Spieler-Pon, dem Teich Das ist unsere Kartonkollision in unserer Dekoration. Ab dieser Kollision beginnen wir mit der Überlappung der Komponenten. Wir werden überprüfen, ob die andere Komponente Ug Tug hat, das ist der Ziehspieler, wir werden einen Ast anlegen und wenn sie den Tug hat, werden wir die Besetzung von einem anderen Schauspieler Charakter von oben nach unten. Und von unserem Charakter von oben nach unten gehen wir zu den aktuellen Koordinaten. Und um unsere aktuellen Koordinaten zu erhalten, werden wir als BP-Kachel die Referenz der Kachel, zu der die Dekorationen gehören, und die Koordinaten der Kacheln ermitteln. Und wir werden das hier verbinden. Also, wann immer wir einen Block betreten, weiß unser Spieler jetzt, wo er in welchem Stil er hintritt. Nun, ich denke, das ist eine gute Überwindung für diesen Fall. Ich sehe dich im nächsten. Tschüss. 76. Raumdecken-Mechaniker: Hallo und willkommen im Game Design Workshop, echten Engine Five Procedural Dungeon-Action von Bz Zuvor haben wir unsere Koordinaten gespeichert, die Koordinaten unserer Spielsteine Und dafür haben wir eine val-Variable in unserer BP-Kachel erstellt. Da ist sie. Hier ist es, P-Kachel, was als Kachelkoordinaten bezeichnet wird, und wir haben diese Variable erstellt, als wir unsere P-Kachel aus den aktuellen Koordinaten spawnen Dann erstellen wir eine weitere Variable für unseren Charakter, bei der es sich um eine weitere Variable für unseren Charakter, bei aktuelle Koordinaten handelt, und mithilfe der Box-Kollision unserer Dekorationen ändern wir einige Einstellungen für die Kollision Wir haben ein Startüberlappungsereignis erstellt, dem wir überprüfen, ob die Komponente den Tag „Spieler“ hat, und wenn ja, geben wir die Koordinaten des Plättchens an. Und jetzt verwenden wir diese Informationen weiter , um unser System zum Verbergen unserer Decken zu erstellen. Nein. Wir sind auf den Koordinaten des Bauplans. Lasst uns gehen und uns daran erinnern, was wir geschaffen haben. Wir haben hier einige Kollisionen hinzugefügt, anhand derer erkannt wird , ob der Spieler einen Raum betritt Wir gehen zu ihren Kollisionseinstellungen. Wir werden dazu übergehen, Over-Events zu generieren. Ja. Wir ändern den Step-on-Modus, lassen Ja und Kollisions-Preset stehen, setzen wieder Benutzerdefiniert und ignorieren alles außer der Spielerumfrage. Als Nächstes wählen wir jeden von ihnen aus und wählen das Ereignis „ Beginn über der Runde“ und die Komponente „ Ende über der Runde“. Für beide benötigen wir eine Überlappung am Anfang und eine Überlappung am Ende. Es könnte eine einfachere Lösung , indem wir diese Aktionen verbinden könnten. Aber machen wir es ein paar Mal und gewöhnen uns daran , Kabel hinzuzufügen. Wir haben alle Anfangs- und Endüberlappungen. Lassen Sie uns sie trennen. Wir haben also, dass sich das Ende überschneidet und der Anfang überlappt. Die Reihenfolge spielt eigentlich keine Rolle. Nochmals, was fragen wir? Lassen Sie uns die Anfangsüberschneidungen machen. Wir fragen, ob die andere Komponente der Player ist. Also holen wir uns das Stag-Tag P und unseren Zweig. Und wir werden das in jede Funktion übernehmen. Siehst du, ich hätte fast den Fehler gemacht, ich hätte fast eine Verbindung zum Schauspieler hergestellt. Das ist das Problem mit unverbindlichen Maßnahmen. Aber wenn Sie sich nicht irren, können Sie es in einer der sich wiederholenden Aktionen tun Das, warum funktioniert West nicht? Dann schauen wir uns an, dass West nicht funktioniert, weil er mit dem Schauspieler verbunden ist. Fein. Die nächste Frage wir stellen sollten, ist, dass unsere Decke sichtbar ist. Aber das ist eine Frage für alles, sodass wir sie mit allen verbinden können. Ich werde die Filiale hier hinstellen. Ich werde hier alle T-Zweige verbinden. Und anhand unserer variablen Obergrenze , die ich von hier mitgebracht habe, werden wir uns sichtbar fragen Für den nächsten Teil benötigen wir unsere Tangentenreferenz, wir werden unsere Kachel abrufen und wir werden Gon, ihr benannter Generator, loslegen O Generator-Referenz, und wir müssen eine weitere Funktion auf unserem Generator erstellen Gehen wir zu unserem Labyrinth-Generator und erstellen wir eine neue Funktion Wir nennen diese Funktion room filling hydrom sep. Sie benötigt die Eingabe einer Ganzzahl, die der Raumindex sein wird, weil jede Kachel weiß, ob es ein Raum ist und sie einen Index weil jede Kachel weiß hat Wenn wir also hier Platz nehmen, müssen wir, wenn wir hier Platz anrufen, auch unser Zimmer bekommen X. Kein Raumindex, wie? Es tut mir leid, der Zimmerindex ist in den Dekorationen gespeichert. Er wird gespeichert, wenn wir die Wände hinzufügen. aktivieren wir tatsächlich der Türen aktivieren wir tatsächlich die Kollision auf der Kastenkomponente Beim Hinzufügen der Türen aktivieren wir tatsächlich die Kollision auf der Kastenkomponente. Welche Box-Komponente ermöglicht die Kollision. Wände R A, Chaos auf dem Dachboden, Kinder von Wänden. Also aktivieren wir die Box-Komponente, das die Eingänge. Macht Sinn. Aber wenn wir sie hier aktiviert hätten, würde das ausgelöst, auch wenn es kein Raum wäre, und es würde die Antwort Raum Null geben. Deshalb schließen wir das Ereignis „Überlappung generieren“ dieser Boxen. Also mein Fehler. Es ist das riesige Programm, das nicht lügen wird. Und bei all unseren Zwischenboxen müssen die Wände geschlossen sein, um Überlappungen zu erzeugen. Also feuern sie nur , wenn es sich um einen Raum handelt. Jetzt werde ich den Raumindex hier verbinden. Weißt du, es sieht vielleicht nicht so aus weil wir uns auf Bauplänen befinden, aber wir haben ein paar tausend Codezeilen und noch mehr Arbeitsspeicher ist also ein großer Vorteil für einen Programmierer. Persönliches Gedächtnis, biologisches Gedächtnis, kein Computerspeicher. Nun, Computerspeicher an sich ist auch ein großer Vorteil. Gehen wir jetzt los und verstecken den Raum C-Funktion. Lassen Sie uns diese grundlegende Funktion abschließen. Aber auch hier benötigen wir etwas Zusätzliches, um diese Funktion zu vervollständigen. Das wäre ein Blueprint-Schnittstellenkern. Also lass uns unsere Labyrinthkämme öffnen und eine neue Funktion hinzufügen. Nennen wir das D. Nun, das hängt im Grunde an unserer Decke, weil unser Befehl, die Decke zu verstecken, von den Dekorationen kommt Wir haben zu einem zentralen Punkt geschickt. Sagen wir unser Labyrinth, weil wir dort die Raumkoordinaten haben Wir verstecken die Decken dieses Zimmers. Und dann sendet unser Labyrinth jetzt eine Nachricht an jeden Raumindex, um seine eigene Decke zu verstecken Es ist also ein bisschen Hin- und Her-Information. Wie dem auch sei, lass uns in unser Labyrinth gehen. Nein, tut mir leid, in unser Labyrinth, und wir werden für den Raumindex von Variable werben , nicht für eine lokale Variable, sondern für eine echte Variable, permanente Variable, real. Permanente Variable Nennen wir das Raumindex. Der Grund, warum wir das brauchen, ist wir, wenn wir die Decken verstecken , wissen müssen welchem Raumindex wir die Decke verstecken müssen. Oh. Jetzt brauchen wir auch eine Spielerreferenz, und da wir die Referenz in diesem Diagramm irgendwo hier veröffentlichen. Verschwinde auf magische Weise, lass es verschwinden, lass es aussehen, als wäre es aus dem Nichts erschienen, nein Lass es verschwinden, im Grunde den Fehler, den ich hier hinterlassen habe Wie dem auch sei, um diese Variable zu bewerben, klicken wir mit der rechten Maustaste und heben die Variable hervor. Ich werde das nennen. Jetzt haben wir also einen Hinweis auf unseren Spieler. Gehen wir zurück zu unseren Spielergrenzen und holen wir uns unsere Spielerreferenz. Was wir fragen müssen, ist ziemlich einfach Ist unsere aktuelle Zeit? Aktuelle Akkorde Ja. Das sind unsere aktuellen Koordinaten , der Spieler, der darauf steht. Gehört nicht zu dem Raumindex, in dem wir uns befinden. Aber dafür benötigen wir unser ST-Raum-Array, das ist ein Array mit unseren Raumkoordinaten mit allen Räumen und ihren Koordinaten. Wir werden uns eine Kopie besorgen. Ich hole mir den Raumindex. Und wir werden fragen, ob das eingedämmt ist. Ray ist in einem Array enthalten, tut mir leid, das Gegenteil. Das passiert, wenn du vorausschaust, wir müssen den Raum nicht verlassen. Wir müssen nur überprüfen, ob unsere Co-Koordinaten da drin sind. Eigentlich müssen wir es bekommen. Und wir müssen die Koordinate verbinden , das muss kaputt gehen. Nun, weil das ein Array enthält , ist das im Grunde der Grund, und wir überprüfen, ob das enthaltene Array in den Raumkoordinaten ist. Ich werde hier auf einen Zweig drücken, um einen Zweig zu setzen. Und als Nächstes müssen wir von unseren Raumkoordinaten ausgehen und wie gesagt, wir werden die Decke verstecken. Und jetzt habe ich es mit Falsch verbunden. Warum habe ich es mit False verbunden? Der Grund dafür ist, dass dies ausgelöst werden sollte, wenn wir einen Raum betreten. Wir sollten nicht nachdenken, während wir uns im Raum befinden, da unsere Räume aus vier davon bestehen. Und das bedeutet, dass wir vielleicht eine weitere Tür haben , sodass die Kollision in den Raum geht. wir diese Kollisionen durchmachen, wollen wir sie nicht noch einmal auslösen Das sollte also nur von außen nach innen ausgelöst nur von außen nach innen Natürlich hätten wir mit einer solchen Kollision konfrontiert werden können, aber warum nicht Umstände schaffen, unter denen wir aber warum nicht Umstände schaffen, unter denen wir mithilfe von Code überprüfen können, wie wir Regeln anwenden können Nein, holen wir uns unseren Kerker. Lass uns unsere Koordinaten finden, unseren Schauspieler. Von diesem Schauspieler, der im Grunde unser Titel ist. Holen wir uns unsere Dekorationen, das ist der Behälter unseres Dekorationsschauspielers. Wir brauchen einen Schauspieler und aus diesem Grund werden wir eine Nachricht einreichen. Ich sende die Nachricht, die wir gerade in unserer Blueprint-Oberfläche erstellt Denn wenn ich es direkt an die Kachel schicke, heißt das nicht, dass der Kinderdarsteller es bekommt Und auch wenn ich es an die Corans schicke, ist das ein Container. Es ist nicht der eigentliche Schauspieler. Also brauche ich den Kinderschauspieler. T wir testen und wir haben einen weiteren Absturz. Mal sehen, was das Problem ist. Offen für den Absturz. Das ist Gehe zur G-Datei. Wir haben von hier aus angefangen. Wird auf nicht statischen, maschinengeeigneten Materialien verwendet. Das Material hat also ein Problem. Ja, das waren die gleichen Probleme wie zuvor. Es hat die Optionen Mischen und Undurchsichtig und der Mischmodus wurde angegeben, durchscheinend, und dann ist es kein Also, wir werden das beheben, senden und neu Und wie Sie sehen können, habe ich es nicht getan, ich habe es nicht gespeichert, bevor ich kompiliert und gespeichert habe. Also werde ich das nochmal ganz schnell mit Camera Alla machen, und fertig. nun, bevor wir testen, Lassen Sie uns nun, bevor wir testen, einen sehr einfachen Code erstellen , um die Obergrenze zu verbergen Gehen wir zu unserer Dekoration und fügen wir unser Interface hinzu, und fügen wir unser Interface hinzu weil die Dekorationen es nicht haben Also werden wir Mize, Pi, PI hinzufügen . Ich habe es implementiert Wenn Sie es nicht implementiert haben, fügen Sie einfach I Maze Comes Here hinzu. Von dort aus gehen wir zur Benutzeroberfläche und wählen die Höhen Lass uns erst einmal ins Spiel kommen. Wir werden immer noch das Problem mit der Kollision haben, aber die Decken sollten versteckt sein, wenn wir den Raum betreten. Lasst uns auch zu unserer Decke gehen und ihre Sichtbarkeit finden, die Verborgenen im Spiel, und lassen wir das oder es ist nicht mehr im Spiel versteckt. Es muss versteckt werden , wenn wir spielen. Wenn wir einen Raum betreten. Lass uns spielen. Hoffentlich ist alles in Ordnung. Die Truhe braucht die Regel. Wir stoßen an die Decke, aber nicht glücklich werden, denn die Truhe braucht die Regel, dass sie nicht vor einer Tür spawnen Lass uns das schnell hinzufügen. Lass uns zu unserem Labyrinth-Generator gehen. Gehen wir dahin, wo wir das Nest spawnen, wo wir die Koordinaten für die Truhe festlegen Und wir haben diese Regel, die neben der Tür steht. Landkarte. Wir bekommen die Koordinaten. so oft versucht , dass es gescheitert ist und es gehalten, vielleicht weil wir diese Regel haben und diese Regel richtig ist. Wir haben es mit den Lichtern überprüft. Vielleicht habe ich das schon oft versucht und es konnte es nirgends platzieren. Vielleicht war es das. Also lass uns nochmal spielen. Jetzt ist manchmal die Perle geschlossen, wo ist eine Truhe. Es ist nicht vor einer Tür, vielleicht war es nur eine. Toll. Toll Für diesen werden wir hier aufhören. In der nächsten werde ich dich singen. Tschüss. 77. Deckenmechaniker ein- und ausblenden: Hallo und willkommen beim Design Workshop und dem Kurs zur Erstellung von Action-RPGs mit echtem Engine Five, Procedural Dungeon Action-RPGs Zuvor haben wir mit unserer Mechanik zum Verstecken von Decken begonnen. Wir haben die Funktion ym in unserem Labyrinth-Generator eingerichtet , der unseren aktuellen Raum speichert und überprüft, ob unsere aktuellen Spielerkoordinaten in dem Raum befinden, den wir betreten möchten Wenn nicht, verstecken wir die Decke. Und danach haben wir, um die Decke zu verbergen, ein Blueprint-Interface erstellt das wir in unseren BP-Dekorationen verwendet haben Eine Minute. Das ist es nicht. Das ist es, aber wir machen unsere Decke vorerst unsichtbar. Oh, lassen Sie uns das animieren. Lassen Sie uns eine Animation erstellen, damit sich die Decke versteckt, und dieselbe Animation wir verwenden werden, damit sie erscheint Lassen Sie uns zunächst eine Variable erstellen, damit wir den Zustand der Decke ermitteln können. Wir werden das die Höhle anrufen. Am Abend sagen wir, wir werden ihm sagen, dass es wahr ist. Nein. Wir brauchen das nicht mehr. Wir benötigen die Referenz für die Obergrenze, aber später, nachdem wir die Option „Ausgeblendet“ festgelegt haben, fügen wir eine Zeitleiste hinzu. Und wir geben die Timeline und erstellen einen Flow-Track ab 01, mit Zeit Null, Null oder Null und Zeit 0,3 oder Eins. Wir werden das letzte Schlüsselbild verwenden. Es läuft nur bis hier, und wir wählen unsere Decke und setzen den Sturm ab Wir werden es verbinden, um es zu aktualisieren. Wir werden Vektoren alarmieren. Wir werden unseren Alpha, unseren Truck Flow Truck, anschließen unseren Truck Flow Truck, und dann fahren wir 111-001 Am Ende müssen wir das Set natürlich verstecken Wir gehen zu einem Spiel, wo wir die Auserwählten finden werden, wo sind die Auserwählten? Für unseren Index verwenden wir die Richtung. Wenn es vorwärts geht, wollen wir, dass es versteckt ist, wenn es rückwärts geht, wollen wir, dass es nicht versteckt Und da wir wissen, dass dies zu einem Kollisionsproblem führen wird, gehen wir zu unserer Decke und wählen „Keine Kollision Es ist schon erledigt. Aber wenn nicht, weil ich einen Unfall hatte. Ich bin mir nicht sicher, ob wir das schon einmal gemacht Wir müssen verhindern, dass es tatsächlich zu Überschneidungen haben. Wir müssen verhindern, dass es tatsächlich zu Überschneidungen kommt und die Kollision wieder auf unsere Decke fällt. Wenn wir jetzt spielen, können wir uns diese Animation ansehen. Y. Jetzt geht es nicht zurück. Aber wir werden die Swaps reparieren. Da gab es einen Frame-Lag. Sie können jetzt also die Bewegung ohne Kollision sehen, und wir haben sie sogar animiert, damit sie nicht hier Eine Kollision wäre im Moment nicht wirklich wichtig. Wir können jetzt tatsächlich korrekt in den Räumen innerhalb der Räume laufen . Fahren wir also mit der Erstellung unserer Funktionen zum Verbergen der Decke fort. Lassen Sie mich das für eine Sekunde überprüfen. Warum gab es so ein Rahmenprotokoll? Hey, ich glaube, nur mein Computer. Hab da ein paar Probleme. Ich kann die Spitzen hören. Oh ja. Nein. Es war nur Schluckauf, weil ich das Projekt geöffnet habe, nachdem Stimmt. Lass uns im Grunde unsere Decken reparieren. Lasst uns dieses Mal von der anderen Seite beginnen. Gehen wir zu unserer Blueprint-Oberfläche. Fügen wir die Funktion hinzu. Nein. Funktion Decke, Decke. D-Zeichen. Wir sagten, dass es diesmal das Thema ist, das schlecht benannt ist. Wir rufen an, was unsere Botschaft ist. Wir setzen das Verborgene auf Falsch und kehren vom Ende zurück. Einfach rückwärts, nicht vom Ende, denn wenn wir in dem Moment ausgehen, in dem wir eintreten, wollen wir nicht, dass es am Ende beginnt, wir wollen, dass es umgekehrt wird, wo auch immer es ist. Und das Gleiche gilt für Play, und aus diesem Grund haben wir es nicht von Anfang an mit dem Spielen verbunden. Also, wann passiert das? Nun, wir haben die Endüberschneidungen. Machen wir sie kompakter. Aber wir haben unsere sich überschneidenden Ereignisse. Wir werden uns diese Frage stellen müssen, wenn das, was sich am Ende überschneidet, unser Charakter ist Wir kennen das Verfahren, wir kopieren und fügen diese Zweige ein. Auch hier wäre es besser gewesen, sie zu binden. Wir würden es so machen, dass wir ein Array erstellen werden. Wir holen uns unsere Boxen und finden bei Beginn eine Überlappung in einer For-Schleife, die alle Boxen enthält, und erstellen ein benutzerdefiniertes Ereignis, das diese Dinge tut. Lass uns weitermachen. Wir werden das hier verbinden. Und wir werden das hier verbinden. Und dann müssen wir zu unserem Labyrinth-Generator gehen. Erstelle eine neue Funktion. Nennen wir das Idee. Nein. Roh Schritt Wir werden keine Eingabe benötigen , weil wir die Variable des aktuellen Raums gespeichert haben, und nach all dem werde ich herausfinden, was hier die Generator-Referenz ist, ich werde die Referenz hier kopieren und einfügen, und das Raumset, wenn all das wahr Gehen wir nun zum Showroom-Set. Lassen Sie uns unser Funktions-Hydrom-Set finden. Wir werden es so kopieren, wie es ist, ohne die Menge der Ganzzahl, und fügen es hier Oder wenn die Verbindung unterbrochen wurde, brauchen wir unsere aktuellen Stäbe. Anstatt uns zu verstecken, müssen wir sie zeigen I. Also, lass uns kompilieren und speichern. Lass uns zu unserem Spiel gehen und schauen, ob es funktioniert. Ich habe mich versteckt und es ist aufgetaucht. Aber es erschien sofort. Und jetzt hat es nicht einmal funktioniert. Ich gehe rein und ich gehe. Ich bin reingegangen, was ist passiert? Wir müssen es debuggen. Eingetragen, vielleicht habe ich zu viel eingegeben und bin dann gegangen. Nein? Jedenfalls scheint es zu funktionieren. Was ist dort wirklich passiert? Bin ich immer noch an der Kollision beteiligt? Ja, wahrscheinlich bin ich bei der Kollision geblieben und habe es nicht bemerkt. Also lass uns die Animation sechsfertig machen. Lass uns in unser Versteck gehen und nachschauen, was los ist. Ein Zimmer so bald. Entschuldigung, nicht. Ich gehe hierher. Setzen wir einen Breakpoint. Sie gehen so, gehen so. Hat das Spielzeug S. Seltsam. Oh. Oh, warum passiert das? Es passiert, weil ich am Ende die Sichtbarkeit festlege. Es spielt also die Animation ab, aber am Ende wird die Decke angezeigt. Also im Grunde gehen wir das so an, wie es ist. Hat keine Reifen Kommentar. Wir lassen das so und gehen hier hin und verbinden das hier und machen es unwahr Jetzt können wir die Decke vor der Animation sehen. Verstecken, Verstecken, Y, und wir sind fertig mit unserer Decke. Oh, das ist es für diesen. Ich werde dich am nächsten sehen. Auf Wiedersehen. 78. Blaupause mit Aufzugsvisualisierungen: Hallo und willkommen bei den prozeduralen Aufrufen zur Erstellung von Dungeon-Action-Pz im Game Design Workshop für echte Engine Five Erstellung von Dungeon-Action-Pz Zuvor waren wir mit unseren Funktionen zum Ein- und Ausblenden von Decken fertig unseren Funktionen zum Ein- und Ausblenden von Decken Wir haben unsere Decken mit unserer Zeitleiste animiert. Wir haben die eingestellte Weltskala verwendet, um diese Animation zu erstellen, und dann haben wir das Show-C-Blueprint-Interface-Event erstellt Und wir haben die ID und den Wert auf Falls gesetzt. Wir haben die Obergrenze für das Verbergen so eingestellt, dass wir die Animation sehen können, da wir uns auf I verstecken . Am Ende von Forward, am Ende des Ding-Events. Und dann haben wir die Ereignisse zu unseren Endüberlappungsereignissen verknüpft . Wir haben überprüft, ob es unser Spieler ist , der sich am Ende überschneidet, und wir haben in unserem Labyrinth-Generator die Saudecke, also Raumdecke, erstellt , was genau derselbe Code ist wie bei der Decke verstecken Aber dieses Mal zeigen wir die Decke. Der einzige Unterschied besteht darin, dass wir die aktuellen Raumkoordinaten verwenden, wohingegen wir beim Verbergen der Decke tatsächlich diese Koordinate anpingen. Lassen Sie uns nun mit dem Bau unseres endlosen Brunnens fortfahren, nicht wirklich endlos ist, wie wir am Anfang besprochen haben. Aber es gibt unendlich viele Möglichkeiten. Und lasst uns die Schöpfung in ein Labyrinth verwandeln. Lassen Sie uns unseren Aufzug fertigstellen. Habe viele Tabs geöffnet. Ich fange einfach an, sie alle zu schließen. Bae, je mehr Tabs Sie geöffnet haben, niedriger wird Ihre FPS tatsächlich wieder, wenn Ihr Computer nicht so stark Ich werde den Aufzug öffnen. Ich gehe zu den Bauplänen, ich gehe zu den Requisiten und ich werde unseren Aufzug wählen Ich werde es herbringen. Und außerdem werden wir einen neuen Plan brauchen. Nennen wir das BP-Aufzugsmechanismus. In Ordnung. Also, dieser Aufzugsmechanismus sollte eigentlich unser Spinnenrad hier drüben haben. Ich werde das kopieren und ich werde es hierher bringen. Jetzt müssen wir den Maßstab ändern bei. Ich werde das entsperren und hier 0,4 und hier 0,3 und in Z 0,4 setzen . Es ist also ein bisschen kleiner und es ist ein bisschen. Jetzt werden wir hier ein bisschen kreativ sein und zwei weitere statische Meshes hinzufügen, eigentlich drei Bei den ersten beiden gehen wir zu unseren Meshes, und da ist ein X-Foltergerät Hier ist es, und wir werden es auf dieses und noch eins einstellen dieses und noch eins Also im Grunde werden wir das hier haben und hier drüben, das muss gedreht werden. Oder in der Nähe. Kettenbewegung, es ist alles, es sieht so aus, als ob es etwas ist , das funktioniert. Ja, das ist in Ordnung. Dann nutze ich das Chaos, das wir leer haben, und hole mir eine Kiste. Ich werde es herbringen. Um es ein bisschen dünner zu machen. So, um es hierher zu bringen. Und tatsächlich werde ich es polarisieren. Lassen Sie uns eine von der anderen Seite nehmen, ebenfalls metrisch. Mir gefällt dieses Rad hier. Machen wir es nicht symmetrisch. Ich sehe das gern. Wenn du willst, kannst du es symmetrisch machen. Ich denke, aus der obigen Sicht werden wir es für okay halten. Vielleicht können wir das ein bisschen größer machen. Diese Achse. Auch dieser. Es ist in Ordnung. Es ist in Ordnung. Wenn du willst, kannst du mehr damit herumspielen und es sichtbarer machen. Was wir tun werden , ist eine rotierende Komponente, eine rotierende Bewegung. Und wir werden zum geraden Diagramm gehen, es hierher bringen und wir werden unser Rad nehmen, das, glaube ich, das Pflanzennetz ist . Wenn du willst, kannst du das machen, und wir gehen zu der Komponente, zu unserem Rad. Lass uns zu unserem Viewport gehen. Gehen wir zu unserem rotierenden. Wenn wir simulieren, können wir sehen, wie alles rotiert. Lass es mich in das Bauskript schreiben. Oh, ich habe nichts geändert. Oh, sieh mal, du kannst diesen simulierten Teil ausschneiden. Lass uns von hier aus weitermachen. Gehen wir jetzt zurück zu unserem Aufzug und lassen Sie uns dieses statische Netz unsere Aufzugsplattform ersetzen. Dafür haben wir ein Meth. Wir sind hier und essen Elevator Cube. Das ist es. Jetzt fügen wir einen Kinderdarsteller hinzu , der als Aufzugsmechanismus dienen wird. Jetzt wählen wir eine Site aus, um das zu platzieren. Ich werde diese Seite auswählen und sie rüberbringen. Ich wohne hier. Ja, ich denke, es ist in Ordnung. Und jetzt brauchen wir noch ein paar Dinge. Wir werden einige Dinge brauchen, um unseren Spieler zu blockieren. Natürlich werden wir auch ein lokaler Spieler sein , um uns nicht bewegen zu können. Aber warum erlauben wir ihm nicht, sich zu bewegen? Es ist unsere Wahl, ob wir das aktivieren wollen oder nicht und einige Wände haben, die den Spieler daran hindern, sich zu bewegen. Also werde ich weitere statische Maßnahmen hinzufügen. All diese Stifte. Erstens, und es wird so sein, dass wir diese Aufzugsfläche oder das statische Netz brauchen. Wir werden das rotieren und es hierher bringen. Vielleicht muss es ein bisschen größer sein. Ich denke, das ist in Ordnung, lass uns das hier kopieren und einfügen, lass es uns wieder einfügen und drehen , es hierher bringen, wir werden das holen und einfügen, es hierher bringen. Wir haben alle Seiten eine Mauer. Wir werden nämlich, wenn der Spieler in den Aufzug kommt, diesen hochziehen. Wenn wir jetzt das nächste Stockwerk erreichen, werden wir ein weiteres statisches Netz benötigen. Ich werde kein Flugzeug sein, es wird der Elevator Cube 031 sein , bevor wir den 026 benutzen Das wäre also unsere ausziehbare Plattform, weil wir vom Aufzug bis zu unserer Kachel einen Raum zum Gehen haben werden vom Aufzug bis zu unserer Kachel einen Raum zum Gehen haben Also werden wir eine solche Plattform auf der Grundlage der Seite erweitern , die von unserem Labyrinth aus zugänglich ist, das wäre der Nullblock, und wir werden diese Plattform zu dieser Seite hin erweitern diese Plattform zu dieser Seite hin Lassen Sie mich seinen Standort zurücksetzen. Und das nächste, was wir brauchen werden, ist eine Kamera. Und wir werden diese Kamera platzieren. Ich bleibe zwei E. Wir werden diese Kamera über dem Aufzug platzieren. Stellen wir sie auch ein bisschen zur Seite oder zur Seite. Diese Seite und vielleicht ein bisschen tiefer. Das ist in Ordnung. Also wenn wir hochgehen, können wir das sehen und wir werden es durchlarpen, sodass wir das Labyrinth nicht mehr sehen können Wir können nicht links und rechts sehen. Wir sehen nur den Aufzug. Hier neigen wir ihn auch ein bisschen. Wir werden sehen, wann wir die Animation machen, wir werden sehen, wie sie aussieht. Als Nächstes müssen wir eine Kollision hinzufügen, eine Boxenkollision, aber wir wissen, wann der Spieler in die Mitte gekommen ist eine Boxenkollision, aber wir wissen, . Und wir werden es tatsächlich so lassen, wie es ist , weil wir sichergehen wollen , dass der Spieler reingekommen ist. Wir wollen nicht, dass du es auslöst, wenn der Spieler hier ist, wir wollen, dass du es auslöst, wenn der Spieler in der Mitte ist. Vielleicht machen wir es sogar ein bisschen kleiner. Vielleicht bewegen wir es in Richtung des Knopfes mit dem Mechanismus, ein bisschen hier. Ja, das scheint in Ordnung zu sein. Oh, eine weitere Sache, die wir tun sollten , ist, die notwendigen Komponenten wir wollen, dem Körper zuzuführen. Lasst uns mit diesem Körper kommen, denn der Körper wird steigen. Aber wir wollen nicht, dass die Kollision zunimmt, zum Beispiel mit dem Körper. Wir wollen nicht, dass das mit dem Körper steigt. Aber da wir es sein werden, ist es nicht wirklich wichtig, um ehrlich zu sein, weil wir den Standort des Schauspielers verwenden werden. Aber weißt du was? Lass es uns auf die harte Tour machen. Lasst uns den Körper verwenden, nicht den Standort des Schauspielers, weil wir beide Möglichkeiten zeigen werden. Wenn wir den Standort des Schauspielers verwenden, sollten wir diesen untergeordneten Schauspieler abtrennen Dieser Teil ist also am Boden, und dann könnten wir den Schauspieler nach oben bringen Aber lassen Sie uns ihn abnehmen, nur um zu zeigen, wie wir ihn abnehmen. Und dann lass uns die Leiche nach oben bewegen. Aber wenn wir den Körper nach oben bewegen wollen, müssen wir die Dinge, die wir mit dem Körper bewegen wollen, auch erziehen. Also das wären die Zäune. Das wäre nicht die Kiste. Wir wollen die Kiste nicht. Das wäre die Kamera. Die Kamera , die wir mitnehmen wollten. Das wäre das Aufzugsflugzeug und auch der Zaun dafür. Ja. Also müssten diese Dinge im Aufzug untergebracht werden. Ich denke, wir müssen das etwas reduzieren. Ja. Ja, es hat sich irgendwie überlappt Oh. Das ist der Aufbau unseres Aufzugs, und ich denke, das ist eine gute Überwindung, und wir werden mit dem nächsten weitermachen, um den Code zu konkretisieren. Tschüss. Wir sehen uns dann. 79. Spawn Next Labyrinth-Mechaniker: Hallo und willkommen zum Gain Design Workshop, einem Kurs zur Erstellung eines echten Action-Rollenspiels mit Engine Five prozeduralem Dungeon-Action-Rollenspiel Zuvor haben wir die Grafik unseres Aufzugs erstellt. Wir haben auch den BP-Aufzugsmechanismus entwickelt, bei dem es sich um ein Bild handelt, Rad dreht und sich vom Aufzug löst Jetzt haben wir nur das statische Netz aktualisiert, das für das Rad mit unserer rotierenden Bewegung verantwortlich ist , und wir haben unsere Struktur mit unserem Körper und den Komponenten geschaffen unserem Körper und den Komponenten weil wir unseren Körper tatsächlich bewegen werden. Lassen Sie uns nun damit beginnen, was passiert, wenn wir mit dem E kollidieren. Mit dem Kollisionswürfel Nein. Eine Komponente beginnt sich zu überschneiden Stellen wir die erste Frage. Ist es ein Spieler? Oh, hat einen und hat einen Zweig angelegt. Wenn das stimmt, müssen wir überprüfen, ob unser Spieler den Schlüssel hat. Wir werden den Spielmodus bekommen. Wir werden zu GM wechseln, um den Top-Down-Spielmodus zu aktivieren. Wir werden es in eine reine Besetzung umwandeln. Und wir werden eine Bestandsaufnahme machen. In unserem Inventar werden wir I six finden, was der Rohname unserer Datentabelle oder unseres Schlüssels ist. Jetzt werden wir einen Zweig verwenden und ihn verbinden mit, ob er ihn gefunden hat oder nicht? Oh, wir werden es mit true verbinden , weil es ein Player ist und wir ihn nicht gefunden haben, dann ist es ziemlich einfach. Wir spielen einen Sound und das war's. Der Sound, den wir spielen werden, hat etwas mit dem Aufzug zu tun. Aufzug ist ausgefallen. Aufzug fällt aus Q, weil wir Warteschlangen wollen Ja, das ist es. Wenn es wahr ist, werden wir es einmal tun. Denn was auch immer danach passiert, wir wollen es nicht wiederholen. Es passiert. Es sollte keine Chance geben , dass es wieder passiert. Oh, das Erste, was wir tun würden, ist die Bewegung des Spielers zu deaktivieren. Aber da wir diese Dinge noch nicht erstellt haben, werden wir sie später hinzufügen. Als Nächstes sollten wir unseren Kinderschauspieler besorgen, das ist unser Fahrstuhlmechanismus und wir werden einen Kinderschauspieler bekommen, und wir werden vom Schauspieler. Wir werden die Welt behalten. Aber der Standortmaßstab und die Rotation bleiben gleich. Das nächste, was wir tun werden, ist, Mechanismus zu deaktivieren Wir werden es in eine reine Cust umwandeln. Ab hier wollen wir die rotierende Bewegungskomponente, und wir gehen zu dieser Rotationsrate Zwei -60. Es fängt an, das Rad zu drehen, und ich werde die Y-Achse M 62 einstellen Lassen Sie uns das tatsächlich testen. Lass uns unseren Aufzug finden. Das heißt kompilieren. Lassen Sie uns tatsächlich das Hauptmenü öffnen und unsere Ms etwas kleiner machen . Hauptmenü. Hier sind wir. Und wir gehen zu den Kacheln und setzen das auf zehn. Sagen wir vorerst zehn. Ich werde kompilieren. Lass uns Play drücken. Eine wirklich kleine Karte. Ich habe einen Raum geschaffen. Interessant. Auch hier können Sie sehen, dass es keinen Ort finden konnte, an dem es platziert werden kann, also entschied es sich, sich neben einer Tür zu befinden. Unser Charakter ist wirklich, sehr klein. Jedenfalls. Also ich gehe nach Evert. Das sollte nicht von Anfang an rotieren. Gehen wir also zum Aufzugsmechanismus und setzen die Rotationsgeschwindigkeit auf Null. Lass uns kompilieren und speichern. Lass uns nochmal spielen. Es hat das Santo gespielt. Das liegt daran, dass wir den Artikel oder das Recht nicht haben. Aber es rotiert jetzt nicht. Gut zu wissen. Lass uns ein bisschen schummeln und diesen Artikel in unser Inventar aufnehmen Lass uns zu unserem Datenhalter gehen, lass uns zu unseren Bauplänen gehen Gehen wir in unseren Spielmodus. Wählen wir unsere Inventarvariable und addieren wir sechs mit einer Menge von eins. Unsere Kompilierung wird gespeichert Ich denke, wir leben von Quantität bis Null , wenn es keine Menge gibt Gehen wir auf jeden Fall zu den Artikeln, Artikeln dt, der Schlüsselmenge eins. Wir haben für alles eins. Das Gute ist, dass ich hier einen hinzugefügt habe. Kompilieren und lass uns spielen, und jetzt haben wir den Schlüssel Das erfordert auf jeden Fall einen anderen Kameraalarm. Ein hier. Hier ist es. Und es fing an, das Rad zu drehen. Das ist gut. Lassen Sie uns nun diesen Schlüssel aus unserem Inventar entfernen. Gehen wir zurück zu ihrem Aufzug. Wir holen uns unsere Inventarnummer , die wir von hier haben, ich werde sie weiter leiten Und dann werde ich auch hierher umleiten. Ich werde die sechs entfernen. Jetzt ist es entfernt, aber wenn wir unser Inventar geöffnet haben, wird dieses Holz aktualisiert. Wir müssen unser Bildmaterial im Inventar aktualisieren. Aus unserem Spielmodus ziehen wir hier raus und holen uns das Gameplay, unsere Widget-Referenz, das Widget-Gameplay , und wir gehen zum Inventar Und das Inventar wäre von hier aus so. Denn selbst wenn wir es hier nur entfernen, wurde diese Variable aktualisiert. Lassen Sie uns jetzt auch einen Sound abspielen. Lass uns das kopieren. Lass uns Let Unlock machen . Ich denke, das ist es , was wir hier spielen. Ja, Aufzug entriegeln. Und jetzt ist es an der Zeit, das nächste Labyrinth vorzuschlagen. Also, was wäre der Standort unseres nächsten? Nun, das hängt wirklich davon ab, was wir wollen. Im Moment habe ich nur den Ort festgelegt und den Standort des Schauspielers ermittelt. Und davon habe ich dem Z 2.500 unreale Einheiten hinzugefügt. Oh. Wir werden diese Variable bewerben. Nennen wir dieses neue Zentrum. Und warum neues Zentrum? Weil unsere Labyrinthe immer weiter gebaut werden, werden immer mehr Dungeons gebaut vom Zentrum aus in jede Richtung Nein, wir rufen einen Polizeikurs an und wählen unseren Generator Gen. Labyrinth. Und wir teilen den Standort auf und verbinden das Nun, wir haben hier eine Reihe von Optionen , die wir abschließen müssen. Um sie zu vervollständigen, müssen wir wissen , welches Level der vorherige Generator hatte und einige Informationen daraus. Was wir tun werden, ist wieder eine G-Referenz zu erstellen. Wir werden dafür sorgen, dass es Me Gen eintippt. M. Natürlich wieder Objektreferenz, und wir werden sie hierher bringen. Das erste, was wir brauchen, sind unsere Mac-Styles. Denn auf dieser Grundlage fügen wir, sagen wir, einen zufälligen Ganzzahlbereich hinzu. Das wäre, sagen wir, eins, zwei, lassen Sie uns unsere Generatorstufe berechnen. Eins, zwei Generatorstufen plus eins. In diesem Fall eins, 22, dann wären es eins, zwei, drei, eins, 24, eins, fünf und so eins. Also werden wir das hier verbinden, und die Stilgröße sollte 600 sein, das bedeutet, dass sie standardmäßig 600 sein sollte. Ich bin verwirrt. Wir haben den richtigen Wert im Hauptmenü. Es ist 800. Warum komme ich bei 600 nicht weiter? Ich weiß es nicht. M-Größe F Ma-Größe, wir bekommen Ma-Größe. Und weil wir einen erhöhten Betrag hinzufügen, sollten wir ihn immer nur um eins erhöhen. Aber machen wir das nur, wenn unsere Mac-Styles nicht zu unserer Mac passen. Also als hätten wir das Maximum erreicht. Wir werden weniger machen und wir werden das mit t multiplizieren . Das ist also im Grunde, wie viele Steine wir zu unserem Labyrinth hinzufügen können Und wenn das niedriger ist als das, was wir platzieren können, dann ist alles in Ordnung Also machen wir eine bestimmte Größe für das Labyrinth, ich verwende das für eine Bedingung, und wenn es stimmt, wenn das weniger ist als das, was wir passen können, dann wählen wir die May-Größe. Wir behalten es beim Alten Wenn wir nicht können, fügen wir einfach einen hinzu. Bringen wir es hierher, damit es klarer ist. Wir fügen dem gesamten Umkreis einen hinzu. Das könnte in Ordnung sein. Jetzt brauchen wir natürlich eine Generatorstufe, also nehmen wir Generatorstufe und addieren eins zu acht. Und verbinde das hier. Unser Generator ist jetzt aktualisiert. Lass es uns in Aktion sehen. Haben wir einen wunderbaren Absturz oder funktioniert alles perfekt? Gehen wir also zum Aufzug. So winziger Charakter. Und wir zeigen Ladezeit und Bildschirm. Das ist nicht gut. Und wir haben einen Frost. Ich werde das Löschen kontrollieren. Das ist wahrscheinlich ein Wild für Loop. Das ist eine Endlosschleife. Ich werde den Task-Manager verwenden , um das Projekt erneut zu öffnen Das passiert oft bei Loops. Sie können das, was du machst, komplett zerstören. Aber es besteht die Möglichkeit, dass das nicht so war, weil wir unsere Ladung haben, und ohne Laden funktionieren manche Dinge vielleicht nicht. Gehen wir zurück. Ich denke, das ist ein guter Haltepunkt für diesen. Wir werden das beim nächsten reparieren. Machst du es dann? 80. Fortgesetzte Labyrinth-Generation aus der ersten Kachel: Und willkommen zum Game-Design-Workshop unter prozeduralen Dungeon-Action - oder Pz-Erstellungsaufrufen für Engine Five - oder Pz-Erstellungsaufrufen Bisher haben wir mit unserem Überschneidungsereignis „Aufzugsbeginn“ begonnen , bei dem wir beim Betreten unseres Aufzugs überprüfen, ob es der Spieler ist Und dann überprüfen wir, ob der Spieler den Schlüssel hat, den er haben sollte. Wenn er ihn nicht hat, spielen wir einen Sound wie Fail. Du kannst nicht weitermachen. Wenn er den Schlüssel hat, wollen wir die Ereignisse , die folgen werden. Wir sind uns also nicht sicher, also sind wir sicher, dass sie nicht wieder stattfinden. Zunächst haben wir damit begonnen, unseren Kinderschauspieler abzunehmen, das ist dieser Mechanismus hier drüben, und wir haben seine rotierende Bewegungskomponente, die wir dem Aufzugsmechanismus hinzugefügt haben, so eingestellt , dass sich um -16 in der Y-Achse dreht Dann fahren wir fort, indem wir den Schlüssel aus dem Inventar entfernen und unser Inventar aktualisiert haben Wir spielten ein Geräusch, das der Aufzug entriegelte, und wir starteten unser neues Labyrinth, bei dem es einige Probleme gab Und um ehrlich zu sein, gab es natürlich einige Probleme. Zuallererst haben wir nicht auf Weiter geklickt. Ich habe nicht auf Weiter geklickt , weil ich den Kurs mache. Es war also diese Schaltfläche „Weiter Chef“ hier drüben, auf die wir klicken müssen, um diesem Generator mitzuteilen, dass wir fortfahren werden. Wenn das nicht das erste Teil ist, bauen Sie weiter. Wir hätten auch überprüfen können, ob die Generatorebene die Nummer eins war. Oh, das haben wir dann auch gespeichert . Dann levele ich später in den Dungeon, in den Spielmodus Wir hätten es aus dem Spielmodus nehmen anstatt nur dafür eine Referenz zu erstellen, aber wie dem auch sei, was wir tun müssen , ist das Kontinuum mit dem ersten Stil zu verbinden Weil wir keinen Inventarbildschirm anzeigen wollen. Ich wurde aus dem Elternteil entfernt. Also jedes Mal, wenn das aufgerufen wird, wird es wahrscheinlich einen Fehler geben, aber das ist uns egal, weil wir wissen, warum es da ist. Wenn wir den Fehler nicht sehen wollen, könnten wir einen Knoten setzen, der gültig ist. So vor dem eingestellten Prozentsatz, und wir werden es hier verbinden. Wenn es gültig ist, legen wir Prozent fest, wenn es nicht gültig ist, gehen wir zum nächsten Knoten. Aber das werden wir nicht tun. Wir werden es einem Fehler überlassen, einem kontrollierten Fehler. Nennen wir es. Wenn es aufgerufen wird, es ungefähr 5 Stunden. Es ist in Ordnung. Jetzt, bei unserem ersten Spawn-First-Stil, müssen wir den Code für das Spawnen des ersten Stils hinzufügen Und warum ist es anders? Lass uns malen gehen. Oh. Wenn wir spawnen, sagen wir mal, das ist zu stark vergrößert. Das ist raus. Das ist einfach perfekt. Hier. Nehmen wir an, das ist unsere Kachel, die beginnt. Das ist unsere Kachel mit dem Aufzug, das ist also unsere Plattform für den Aufzug. Wenn wir hochgehen. Wenn wir das nächste Labyrinth spawnen und nach oben gehen, erscheint es direkt über uns Also, wenn das das erste Plättchen ist und wir es in eine bestimmte Richtung verschieben müssen Und sagen Sie diesem Stil , dass wir die Richtung, in die wir sie verschoben haben, entgegengesetzt zu der Richtung, in die wir sie verschoben das Intro nennen, dem wir tatsächlich unsere Kiste haben , aus der später der Ballon kommen wird Indem wir das also ausgleichen, machen wir den Mittelpunkt unseres Dungeons, den Intro-Block von nun an Also lass uns gehen und das ganz schnell machen. Wir werden eine neue lokale Variable erstellen. Aber wir werden Offset Direction Direction nennen. Es wird vom Typ Direction sein. Dann setzen wir ein zufälliges Objekt aus einem Array. Und wir werden ein Array erstellen , um eine Richtung auszuwählen, das ist bei vier, das wird Nordost-Südwest Nord-Südwest sein, und das wäre unser Offset. Das nächste, was wir brauchen, ist ein neuer Ausgang. Also machen wir wieder einen wilden Loop und werden wild. Für die Bedingung verwenden wir, unser letzter Ausgang nicht gleich zwei der eingestellten Richtung ist. Auf diese Weise ist das Gleiche nicht der Operator. Das ist zwar wahr, aber wir wollen nicht weitermachen. Wir müssen einen neuen zufälligen Ausgang finden. Was wir also tun werden, ist dieser letzte Ausgang zu einem beliebigen Wert, den er zuweisen kann. Das braucht keine. Lass uns das machen. Wie dem auch sei, lass uns weitermachen. Also, um ehrlich zu sein, das eigentliche Labyrinth wird seine Mitte nicht verändern Wir haben es einfach ausgeglichen. Das heißt nicht, denn was wir jetzt ausgleichen werden , ist der tatsächliche Schauspieler. Was wir also tun müssen, ist der Standort des Schauspielers. Wir werden die Kachel nicht verrechnen. Wir werden den Generator einstellen. Wenn die Kachel also erscheint, wird sie verschoben Das ergibt Sinn. Und wir wählen Ich füge zwei weitere Pins hinzu, und der Index wäre unsere Offset-Richtung. Bringen wir es mit. Und jetzt müssen wir einen Offset zu unserem Standort machen. Das wäre, sich ein Zitat holen. Das wäre auch erforderlich um es von hier aus zu schaffen oder Teilen wir das auf. North würde einfach die Kachelgröße Kachelgröße zu x hinzufügen die Kachelgröße Kachelgröße und der Rest würde gleich bleiben. Das wäre Nordosten, würde die Kachel bis zum Y addieren und der Rest würde gleich bleiben, x und ad. Tu würde das minus XY-Größe negieren und der Rest das S. Das sind tolle Spaghetti, das ist Albonaa-Level U und das Gegenteil für den Westen, Kachelgröße hier oder Y und X und dasselbe einstellen, und das und das Jetzt haben wir das durch unseren Schauspieler ausgeglichen. Jetzt kopieren wir einen Teil des Codes, den wir unten haben , weil wir ihn brauchen. Wir brauchen die BP-Löffelfliese. Tile Cords, teilen wir das auf 00 auf. Wir müssen es hinzufügen, um es zu zerstören. Wir müssen es zur Dungeon-Map hinzufügen, die aktuellen Kabel. Wir brauchen das Besondere, um es zu speziellen Kacheln hinzuzufügen, und den Rest brauchen wir nicht Wir bringen das her. Unsere Standard-Stromkabel sind 00, also ist es in Ordnung. Lassen Sie uns einfach schnell die aktuellen Kabel durchgehen . Das ist in Ordnung Gut, nah angrenzend, Nordost-West, gehen wir zu jedem von ihnen, damit wir die Nachbarn kriegen. Nehmen wir an, der Index ist gleich. Ich möchte einfach die Offset-Richtung zur erzwungenen Leertaste hinzufügen . Ich werde hier abzweigen. Wenn es gleich ist, dass Nord Null ist, zwei, Dou ist eins, West ist drei, A, und wir werden zwei R hinzufügen und das Array wird der Schlauch I sein . Und jetzt brauchen wir einen Verweis auf unseren eigenen Aufzug, den Aufzug, der dieses Labyrinth hervorgebracht Wir haben irgendwo eine Referenz für den Aufzug, wir haben die Referenz des Spawn-Aufzugs Dupliziere das. Nennen wir es Owner Elevator. Sehr schlechte Benennung hier. Also, was wir tun werden, zu unserem Aufzug gehen und einen Vari erschaffen, nennen wir es Action Wir werden mit von der Partie sein. Weil wir es später brauchen werden. Lassen Sie uns die Spa-Elevator-Instanz editierbar machen und sie beim Spawn verfügbar Der Bactor Elevator ist wieder da, ich werde das aktualisieren. Wir haben den Spon-Aufzug, ans Telefon bringt. Der Spon-Aufzug, der uns hervorgebracht hat und der Spawn-Aufzug, der das Gehen wir zurück. Ein Generator. Ein kleiner erster Stil. Am Ende nehmen wir unseren Spawner-Aufzug und geben die Richtung vor. Schließen Sie ihn an, um den Vorgang abzuschließen, und lassen Sie uns die Offset-Richtung verbinden Jetzt haben wir unseren ersten Style-Salon. Jetzt, wenn ich spiele, fange ich bei Null an Ich treffe viele Fallen. Ich werde Hopfen auswerfen. Stimmt? Das wurde erwartet. Wir werden Al kontrollieren, löschen und dieses Programm schließen. Und das dritte Mal ist der Reiz. Wir werden in der nächsten Lektion sehen warum es nicht weiterging. Vorerst auf Wiedersehen. 81. Aufzug-Animation und Soundeffekte: Hallo. Und willkommen zum Game Design Workshop und echten Engine Five-Kurs zur prozeduralen Dungeon-Action-LPG-Erstellung Zuvor hatten wir unser Event mit dem ersten Spawn-Plättchen abgeschlossen unser Event mit dem ersten Spawn-Plättchen Wir haben den Offset auf der Grundlage einer zufälligen Auswahl unseres Labyrinth-Standorts hinzugefügt auf der Grundlage einer zufälligen Auswahl unseres Labyrinth-Standorts Dann haben wir angefangen, das erste Plättchen zu spawnen. Wir haben es zu unseren Listen hinzugefügt, und das auch wegen der abstürzenden PD. Okay. Also lass es mich nochmal ganz schnell hinzufügen. Wir gehen zum Aufzug. Ich habe die Anweisungen hier aufbewahrt. Oh, lass unseren pro Aufzug spawnen, nicht den Spawnen. Das haben wir auch behalten. Also werden wir Richtungsrichtung ermitteln und die eingestellte Richtung auf unsere Offset-Richtung setzen. Jetzt, danach, haben wir versucht zu spielen und es hat gebuggt. Lassen Sie uns zunächst überprüfen, wo wir den Aufzug spawnen, welcher Proponer. Als Erstes tun wir das, und wir haben nicht Wir klicken auf unsere Generatorvariable, machen sie instanzeditierbar und machen sie verfügbar, wenn sie in unserem Aufzug erscheint. Wir werden kompilieren und speichern, und ich werde das aktualisieren Tor, und für Generator setzen wir Self ein. Das deckt bis zu einem gewissen Punkt ab. Gehen wir zu unserem Event-Graph. Lass uns zu unserem Built-Event gehen, glaube ich. Oder nicht das Gebaute. Ich habe wieder die erste Kachel genommen, weil hier ein Fehler vorliegt. Wir wollen das Gegenteil davon. Wir haben die Offset-Richtung hinzugefügt und ich habe die 02 verwendet , basierend auf unserem schmalen Kreuz nebenan. Wir brauchen das Gegenteil davon. Das wäre also einer. Also Süden wäre Null. Das wären drei, und was wären zwei. Nun, das sollte bedeuten, dass Schweine ein Problem sind. Ich weiß nicht, ob wir am besten eins mit der Truhe und dem Wein spielen. Was ist der Aufzug? Weit weg. Wir haben etwas. Sie sind oben gespawnt, aber wir bewegen uns nicht Wie Sie sehen können, hat alles einen Schatten geworfen, um das Problem zu beheben Wir werden ein bisschen schummeln und wir werden unsere Kachel öffnen und wir werden unsere Hauptwände auswählen und sie so einstellen, dass sie keine Schatten werfen Und wir werden das auch für den Boden tun. Und die Reben. Ich kompiliere und speichere das Spiel. Ein bisschen Rahmen da. Gehen wir. Vielleicht sollten wir diese Boxen etwas kleiner machen und die Landwirtschaft ein bisschen größer machen. Wo ist der Aufzug da drüben? Oh, übrigens, ich habe meine Ma-Größe wieder auf 20 statt auf zehn geändert . Ich bin quasi eine Kamera. Wir haben also nicht diese riesigen Schatten, die wir hatten, aber wir haben ein Leuchten. Ich schätze, das Leuchten kommt von Lava hier unten. Also werden wir wieder ein bisschen schummeln. Wir werden wieder dorthin gehen , wo Kachel ist. Wir werden den Boden duplizieren. Ein Stockwerk, etwas tiefer, damit sich dort Lava verbirgt. B nochmal. Es war ein netter Glanz, dabei zu sein. Ich war der Affe. Das Leuchten der Dämonen. Was der Boden ist, ist Lava, also müssen wir die Lava verstecken. Und ja, ich gehe in die richtige Richtung. Und jetzt haben wir dieses Leuchten nicht mehr. Wir sperren den Spieler nicht. Weil die Maus hier tatsächlich zuschlägt. Ich kann mich nicht bewegen Oh, es ist Zeit, den Aufzug hochfahren zu lassen. Ich überprüfe nur, ob es an der richtigen Stelle gefunden wurde. Ja, wir haben D hier, also schätze ich, der S & P ist ein nettes erstes Stück, zwei Optionen hier für links oder rechts Aufzug und die Kiste sind beide rechts Der Aufzug und die Kiste sind beide rechts. Etwas Zeit dort haben. Gehen wir jetzt zurück zu unserem Aufzug. Und Sie haben diese Referenz. Und jetzt müssen zwei Dinge passieren. Oh, wir werden eine Sequenz und wir werden ein Ereignis erstellen. Nennen wir das Event Stations und nennen wir es The One. Und wir werden das danach abschließen. Nun, die zweite Sache , die als Erstes passieren muss, ist , dass wir unseren Player-Controller bekommen. Also können wir die Notiz ziehen, die wir wollen, nämlich Land View Target Space, irgendwas. Ziel mit Pflanze ansehen. Oh, die Planzeit würde 3 Sekunden betragen, und den Rest werden wir uns einfach gönnen. Nachdem wir mit dem Abspielen der Animationen begonnen haben, werden wir das um 2 Sekunden verzögern. Und dann werden wir einen Bulion in den Variablen erzeugen. Nennen wir diese Bedingung und wir setzen diese Bedingung auf wahr Nun, was wird diese Bedingung bewirken? Wir werden das Tick-Event verwenden, um unsere Animation zu steuern. Wir werden diesen Zustand hier haben. Das ist Qualitätszustand. Ein etwas besserer Name. Auf der Grundlage dieser Bedingung werden wir die tatsächliche Höhe unseres Aufzugs bestimmen. Und natürlich war es ein Witz, als ich sagte, wir werden es auf die harte Art machen, indem wir den Körper bewegen und nicht den Schauspieler Wir werden den Schauspieler bewegen. Es ist viel, viel besser, seit wir auch den Kinderdarsteller getrennt Aber wir werden erklären, wie es ohne den Schauspieler ablaufen würde und ob wir den relativen Körperraum verlagern würden Oh. Wenn sich unser Aufzug bewegt, wollen wir ein Geräusch hören. Zu diesem Zeitpunkt wollen wir nur Ton abspielen. Wir werden ein Geräusch machen, weil unser Aufzug für eine Sekunde weitermachen könnte. Wir werden den Aufzug entsprechend bewegen, so wie es der Ladeteil tun würde. Er würde warten, bis das Labyrinth fertig ist, um sein Ziel zu erreichen Denn wenn wir das nicht tun, besteht die Möglichkeit, dass der Aufzug hochfährt und das Ziel erreicht , ohne dass das Labyrinth vollständig gebaut ist Und das wollen wir nicht. Also werden wir einen Alpha-Drive haben, wie wir es auf den Lerbs gemacht haben, wie wir es bei den Timelines gemacht haben, um das zu kontrollieren Oh, fangen wir mit dem Sound an. Was wir tun müssen, damit der Sound ihn kontrollieren kann. Ich mache einen Lay-Sound. Ich habe keine Kontrolle über. Ich habe keine Kontrolle darüber. Ich habe nur die Kontrolle über Lautstärke, Beach, Startime und Parallelitätseinstellungen. Das ist so , als ob man Regeln wie die Hallgröße festlegen kann, wo es ein bisschen vollständig ist Wie dem auch sei, ich habe keinen echten Verweis auf den Sound, wenn ich den Create-Sound D verwende. Dann habe ich diesen Rückgabewert , der ein Verweis auf den Sound ist, den ich gerade spiele , aber tatsächlich erstelle, aber noch nicht abgespielt Denn wenn ich einen Sound erstelle, muss ich ihn so anordnen, dass er macht, was ich will Er erzeugt einfach eine Soundvariable, einen Audiokanal Basic. Also werde ich dafür werben, lassen Sie uns den Sound an die erste Stelle setzen, etwas erhöhen. Ich glaube, es ist die Aufzugsmaschine. Ja. Ja, das Stichwort der Aufzugsmaschine. Das werde ich so variabel bewerben. Nennen wir das Lift Bound. Und jetzt werden wir anfangen, es zu spielen. Ich werde drücken. Spiel. Und ich denke nur an diesen Sound. Wir haben es so eingerichtet, dass es sich wiederholt. Das ist also endlos. Es muss gestoppt werden, wenn wir aufhören wollen, es zu spielen. Oh, geh und rette alles. Justin Case. Und fangen wir mit unseren Animationen an. Aber lassen Sie uns das in der nächsten Lektion tun. Das ist vorerst ein guter Haltepunkt . Wir sehen uns im nächsten. Auf Wiedersehen. 82. Kamera-Kino für Aufzug: Hallo und willkommen zum Design-Workshop und zum Action-RPG-Erstellungskurs „Engine Five, Procedural Dungeon Action-RPG-Erstellungskurs Zuvor haben wir die letzten Teile unseres Beginning Overlap Events in unserem Aufzug erstellt unseres Beginning Overlap Events in unserem Wir haben das View-Target mit unserem Ziel platziert , welches eigentlich unser Selbst hier braucht. Es würde sich durch kein Ziel einfügen , wenn es kein neues Ziel hätte. Also haben wir die Mischung mit unserem neuen Ziel vorgenommen und das Startanimationsereignis erstellt , das wir in dieser Lektion spüren werden Wir haben die Verzögerung genutzt, um die Dinge, unsere Animationen und alles andere einzurichten, und danach haben wir die T-Bedingung auf true Wir haben den Sound kreiert, ihn in einer Variablen gespeichert und ihn so eingestellt, dass er abgespielt wird. Und wir haben ein paar Dinge darüber erklärt wie unsere Aufzugsbewegung funktionieren wird. Lassen Sie uns mit der Erstellung der Animation beginnen . Lass uns mit der Animation beginnen. Das Erste, was wir brauchen werden, ist ein Zeitplan. Also werden wir einen Artikel hinzufügen und einen neuen Flow-Track eingeben und erstellen. wird wieder ein sehr kleiner Flow-Track-Flowtrack sein, Zeit Null, Wert Null, und 0,3, 0,3 ist fünf. 0,3. Wäre einer. Lass uns klicken. Verwenden Sie auch das letzte Schlüsselbild. Geh wieder her. Jetzt kriegen wir unsere Fans. Werden wir machen? Ich werde das verbinden. Ich werde. Ich werde das zum Update verbinden. Und jetzt verbinden wir das, um c zu bekommen. Ich werde teilen. Ich werde handeln. Und ich werde das teilen. Ich werde x und y addieren. Nun, was unser T angeht, werden wir hier lernen. Wir werden schwimmen lassen und den neuen Truck benutzen. Wir wollen sie von dem, was sie gerade sind, auf Null bringen . Um das zu tun, werden wir anfangen zu spielen. Lösche diesen Akt, das ist egal, und wir werden den ersten Zaun nehmen, den relativen Standort ermitteln. Ich werde das teilen. Ich werde für das B werben und so regional bleiben und es hier verbinden. Das ist jetzt gespeichert. Ich gehe zurück zur Timeline und wähle dies für Alpha aus, und B wäre Null für A, nicht Alpha. Alpha ist immer noch unser neuer Truck, unser Flow-Truck. Lassen Sie uns sehen, dass das funktioniert. C abspielen. Objekt. Schnapp dir meinen Charakter , weil ich da nicht rüber laufe. Ich werde den Charakter herbringen. Ich nehme es wieder in Besitz. Das Kommando macht viel, aber der Zaun geht hoch und ja, es funktioniert Der nächste Schritt ist also, den Aufzug hochfahren zu lassen. Und dafür werden wir E benutzen. Jetzt haben wir unseren Zustand. Wenn die Bedingung zutrifft, gebe ich Gas. Wenn wir hier relativ angeben würden, würden wir einen relativen Ort angeben und den Körper als Referenz benötigen. Und das würde alles andere mit uns nehmen. Aber lassen Sie uns einfach einen Standort festlegen. Oh, für den neuen Standort müssen wir zwischen dem aktuellen Standort und unserem Zielort wechseln . Also müssen wir wieder los, um mit dem Spielen zu beginnen. Ich denke, es steht über allem, und das werden wir tun. Wir werden für diese beiden Originale werben. Als Nächstes fügen wir unsere Größe hinzu, sodass wir das nächste Labyrinth spawnen wollen, das wären plus 2.500 Da wir aber ein bisschen höher gehen müssen, würden wir das auf 2.900 machen Wir müssen fallen, wir müssen etwas Platz haben, um nach unten zu fallen Wir werden jetzt dafür werben. Das wäre unser Verwandter Pat. Eigentlich nicht relativ. Tut mir leid. Ich werde geduldig. Jetzt haben wir diese beiden Werte. Gehen wir zurück zu unserer Tiki-Ecke. Oh, wenn wir eine Zeitlinie haben, haben wir einen Vektor und wir gehen zu unserem Ursprung und unserem Ziel Das ist unser Ursprung und das ist unser Ziel. Und das Alpha wird normalerweise von unserem Timeline-Flow-Truck festgelegt. Jetzt müssen wir diese Variable, die Max Alpha genannt wird, bewerben . Weil wir das von unserem Labyrinth-Generator aus einstellen werden , wie wir es beim Laden getan haben Und auf dieser Grundlage wird der Aufzug versuchen , diese Höhe zu erreichen, bis dieser Alpha die Nummer eins Es geht also komplett von A nach B. Um das zu tun. Wir werden es ständig benutzen. Was, wie der Tipp schon sagt, versucht, ein Ziel mit konstanter Geschwindigkeit zu erreichen. Wir haben also einen Strom und wir haben ein Ziel. Für unsere aktuelle Ausgabe werden wir eine Kation bekommen. Und unser Ziel wäre das Erb, das Ergebnis des Für unsere Delta-Zeit werden wir momentan Delta-Sekunden verwenden, was sie ein bisschen framesicher macht Es gibt eine Formel, die dafür sorgt, dass sie nicht von der Framerate abhängig ist. Die Bildrate würde die Bewegung nicht beeinflussen, aber das werden wir jetzt nicht tun. Für C werden wir in Terp-Geschwindigkeit , also der Schrittgeschwindigkeit dieser Vene B, 350 verwenden Als Nächstes sollten wir eine Frage stellen. Haben wir unser Ziel erreicht, weil Sie unser Ziel erreicht haben, dann sollten wir aufhören und unsere Animationen rückgängig machen, die Zäune fallen lassen Nein, es gibt viele Möglichkeiten, das zu tun. Wir könnten tatsächlich speichern, dass unser Alpha-Wert eins entspricht, aber wir sollten sichergehen, dass unser Zielort mit unserem aktuellen Standort übereinstimmt Wir werden das Gleiche tun, tut mir leid, fast das Gleiche. Für diejenigen, die nicht gesehen haben, dass es hier unten ist, nicht exakt gleich, fast gleich, und wir geben es, sagen wir, 1010 und reale Einheiten , also ich zehn Zentimeter Jetzt können wir auch unseren Zustand ändern. Dieses Stick-Event würde nicht mehr laufen. Das nächste, was wir tun sollten, ist, hier ein Längenziel festzulegen . Anstatt für das neue Ziel zu verkaufen, von unserem Play-Controller werden wir von unserem Play-Controller aus gesteuert, und das wäre unser neues Ziel. Von der Kamera des Aufzugs kehren wir zum Spieler zurück. Wir setzen hier eine 52 in die Verschmelzungsexponentialzahl ein. Sie bestimmt die Form der Kurve, wie Sie im Tooltip nachlesen können , wie sie verläuft Als Nächstes müssen wir in den Labyrinth-Generator gehen und eine neue Funktion erstellen Nennen wir das so. Und wir werden unsere Schauspieler dazu bringen, alles zu zerstören. Wir sind Paul, schau mal. Wir werden überprüfen, ob es gültig ist. Der Grund, warum wir prüfen, ob es gültig ist, ist, dass wir sogar Artikel hinzufügen , die wir abholen werden. Wenn wir den Artikel abgeholt haben, ist er nicht mehr gültig. Also sollten wir das überprüfen. Dann der Schauspieler, falls der Schauspieler gültig ist. Dann bauen wir unseren eigenen Aufzug , der der Aufzug der vorherigen Ebene ist. Da ist er? Da ist es. Dieser Aufzug sollte nicht zerstört werden , wenn wir das neue Labyrinth schaffen, denn wenn er zerstört wird, wenn wir ein neues Labyrinth schaffen, fallen wir ins Nichts, eigentlich in die endlose Also müssen wir prüfen, ob das auch gültig ist. Wir müssen das überprüfen, denn wenn es das erste Labyrinth ist , dann hat es keinen Aufzug Schließlich werden wir uns einfach selbst zerstören. A. Lassen Sie uns kompilieren. Dave und kompiliere. Dave eigentlich alles. Mal sehen, ob es funktioniert. Um einen Charakter zu bekommen. Ich werde den Charakter bewegen und mir den Charakter holen. Der Aufzug ist da. Ich bin also beschäftigt und der Schauspieler bewegt sich nicht. Das liegt daran, dass wir die PA nicht eingestellt haben. Was wir tun müssen, ist in unserem Labyrinth-Generator, wo auch immer wir sind ... Prozent unserer Ladung unterscheiden zwischen diesen beiden und setzen Prozent auf unseren Anleihenlift Oh. Das werden wir beim nächsten Mal tun. Dann sehen wir uns, auf Wiedersehen. 83. Beheben von Mischproblemen in der Kameraansicht: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Erstellung von prozeduralen Dungeon-Action-Rollenspielen Zuvor waren wir mit unseren Aufzugsanimationen fertig. Wir haben die Animation für die Zäune mithilfe einer Zeitleiste und einer For-Schleife abgeschlossen , um alle Zäune zu durchlaufen, und wir haben die relative Position auf der Grundlage der ursprünglichen Z- und Nullwerte festgelegt auf der Grundlage der ursprünglichen Z- und Denn in unserem ursprünglichen Z, dort unten. Dann haben wir mit unserem T-Ereignis weitergemacht , dass, wenn unsere T-Bedingung erfüllt ist, was bedeutet, dass wir anfangen können, uns zu bewegen. Wir haben den Standort des Schauspielers zwischen dem Original und dem Ziel verschoben Original und dem Ziel an den Zielort sollten wir gehen Und wir benutzen den Max Alpha , um die Entfernung zwischen diesen beiden Und dann verwenden wir die Konstante „Bay Interpret“ von Position unseres Schauspielers zum Ziel mit einer Schrittweite von 350 Dann überprüften wir mit einer Verzweigung ob wir unser Ziel erreicht haben, und falls doch, mischen wir die Sichtkamera und schalten unseren T-Zustand aus wir nun mit unserem Labyrinth-Generator fort, wo auch immer wir den festgelegten Prozentsatz der Ladung haben um zu erstellen, wo der erste ist Hier ist der erste. Dieser ist auf Null gesetzt. Null, wir fangen an, das müssen wir nicht tun. Aber wir müssen beim Build differenzieren. Hier haben wir tatsächlich das Gültige eingegeben, was uns im Grunde den Zweig gibt . Machen wir etwas Platz. Wir werden mehr Platz brauchen. Ich denke, das ist genug, mehr als genug. Also werden wir es hier herauslesen und tatsächlich könnte das Laden noch gültig sein, könnte das Laden noch gültig sein weil wir die Variable nicht leeren. Das Gültige ist nicht gut genug. Wir brauchen eine Filiale. Aber wenn es weitergeht, aber wenn es das ist, machen wir das Neue, wenn es falsch ist, machen wir das festgelegte Prozent. Und das neue Ding wird den Sponer-Aufzug bekommen. Und dieser Alpha. Ich denke, das ist 0,4, wir steigen auf 40%. Ja. Also setze Max Alpha auf 0,4. Nikki, das kleine Ding hier, es fast nicht gesehen, und ich würde mich fragen, warum sich das nicht bewegt Ein Kopierzweig und der Setter und die zweite Ladung sind hier oben Wir können diesen Akt überspringen. Gehe direkt auf 0,5. Gehen wir zur Filiale, die Falschen gehen zur alten. Das Wahre ist das Neue, das 2,5. L Lass uns weitermachen. Lass uns ein paar davon behalten. Lassen Sie uns hier 2.7 einstellen. Hier fällt das alte auf das neue Gewicht. Das ist richtig. Ab Alpha gehen wir vom eingestellten Prozentsatz genau zum nächsten über. Klar, klar genug. Behalten wir 85 und machen wir eins. Eigentlich muss das hier keine Verbindung herstellen. Wir verpfänden keinen Spieler, wir spielen keine Animationen ab Wir machen nichts davon. Das kann hier also tatsächlich mit einem enden. Also können wir 0,7 ändern, setzen wir 0,8. Und das wäre genug. Sollen wir noch einmal darüber nachdenken? Nein, lass uns spielen. Fangen Sie an. Würden wir es uns noch einmal überlegen? Nein. Lass uns spielen. Zu. Lass uns das All in der Nähe finden. Holz. Und ich kriege wieder DZ. Wir ziehen um. Wir ziehen um und das zweite Labyrinth ist gebaut. Und wir erreichen das zweite Labyrinth. Und das erste Labyrinth ist nicht zerstört. Die Musik hat nicht aufgehört zu spielen. Wir können immer noch damit interagieren. Das Wichtigste zuerst. Lasst uns die Interaktion beenden. Was wir hier tun, ist, es unserer Kollision auszusetzen. Nachdem wir die Einsen gemacht haben, holen wir uns unsere Box und es ist so eingestellt, dass keine Kollision auftritt, was der Standardwert ist. Die zweite Sache. Lassen Sie uns diesen Schwindel mit der Kamera beheben. Mir wird wirklich schwindelig. Lass uns die Kamera ein bisschen näher bringen. Lass uns in Rotation schicken, um Dios in diesem Fall zu machen, wie es scheint Nein. Ich glaube, die erste Null war der erste Tag Lass uns das raussuchen. Da ist der Aufzug. Oh, komisches Labyrinth. Ein bisschen besser. Was ich sehe, fange ich von der anderen Seite an. Oh, warum fängt es so komisch an? Dort. D Die ganze Kamera geht einfach direkt über, sagen wir, 800. Sagen wir, 600. In Ordnung. Lasst uns die Patienten rauslassen. Hui. Ich werde mich nur um die Kamera kümmern. 98 99. Ich kann es etwas einfacher in diese Richtung bewegen. Auf Rotation. Du hast wieder 108. Ich lasse es bei 9000600 stehen, damit wir nicht mehr Du kannst es hinstellen, wo immer du willst. Ich denke, das wäre in Ordnung. Charakter. Aufzug, den Charakter habe ich nicht verstanden. Aber der Boden. Ich habe das bewegt, der Charakter ist gefallen. Wo ist der Aufzug? Richtig? Oh, es ist noch schlimmer als je zuvor. Das ist unglaublich. Acht ist, wie empfohlen, 60-90 18. Werte, die wir brauchen, um auch diesen zu korrigieren. wie ich es bin. Also habe ich ein bisschen nachgeforscht, was vor sich geht. Es ist ein Problem damit, wie das langweilige Sichtziel mit etwas namens Kimbal Lock funktioniert , das den Bildschirm in Kurven verwandelt , im Grunde genommen auf Bildschirmen, die weit über Nordost-Südwest liegen, und über Nordost-Südwest liegen, und Was passiert? Lass uns nachsehen. Gehen wir jetzt mit dem Spieler neben den Aufzug. Wieder auf dem Boden. Jetzt können wir im Grunde 123 Kreise machen. Wie Sie sehen können, steckt es fast dreimal. Das hat mit den Wurzeln, den relativen Rotationen und allem zu tun relativen Rotationen und Was wir tun werden und es wird funktionieren, ist, dass wir unsere Kamera nehmen und sie 23-mal um den vollen Kreis drehen den vollen Wenn wir jetzt kompilieren und spielen gehen, reparieren diese das Kardanschloss in unserem Aufzug Aufzug und fast repariert. Dieses Auf und Ab der Kiste , Aufzug in diese Richtung, überprüft den Spieler. Und es ist behoben. Ja. Aber das Gleiche müssen wir für das Startspiel tun. Also, wir sind Halbkreis, lass es uns einmal so Oh, es war das Gegenteil Ich werde die Drehung in umgekehrter Richtung rückgängig machen. O. Auf Vollendung des Kreises. Hilfe. Was genau ist hier los? Und ich werde die Kamera auswerfen. Ich habe von hier aus geschaut, das sind die Spieler. Die Kamera ist falsch, sie sollte eher auf dieser Seite sein, was unsere ursprüngliche Kamera ist. Mal sehen, was ich habe. Ich habe es nicht nochmal gemacht, ich werde es auf diese Seite verschieben. Ich werde K, David-Position drücken. Ich werde das pilotieren. Ich sehe richtig aus, unser Spieler. Et, ich werde Kate drücken und wieder spielen. Ja, im Grunde genommen haben wir nur die Kamera mitgebracht , um mehr von der Seite des Spielers zu sehen. Hat funktioniert. Du kannst mit Rotationen spielen, bis du eine Bewegung hast, die für dich und die Position in Ordnung ist Wir belassen es so Lassen Sie uns überprüfen, ob der Aufzug noch funktioniert. Aufzug. In Ordnung. Endlich sind unsere Kameras repariert. Ich glaube, wir haben uns für diesen entschieden, bei dem es um die Reparatur des Loses ging. Das war wirklich entscheidend. Und lassen Sie uns hier aufhören und mit dem nächsten weitermachen. 84. Aufzug-Animation und Inventar-Eingabe: Hallo und willkommen zum Game Design-Workshop unter prozeduralen Dungeon Action Z Creation Calls von Engine Five Zuvor haben wir endlich die Rotationen der Kameras korrigiert die Rotationen der Wir können tatsächlich einen reibungslosen Ablauf haben und nicht diese Spülmaschine Ich weiß nicht, worin wir drin waren. Und der Aufzug ist auch ja. Und wir können die nächste Etage erreichen. Aber der Ton spielt weiter und die Wände fallen nicht. Also lass uns diese Probleme beheben. Und noch eine Sache, die ich erwähne, ist, dass unser vorheriges Labyrinth keine ID bekommen hat. Also fangen wir damit an, weil wir den Code dafür einfach nicht aufgerufen haben Wir holen uns unsere Referenz. Und wir werden Destroy Maze anrufen. Vorheriges Labyrinth, wie wir es für das Labyrinth nennen , das zerstört werden soll, also wäre Destroy Maze Und lass uns testen. Also, gut. At ist nicht darüber hinweggekommen. S. Es ist eine kleine Lücke in Ordnung, und unser vorheriges Labyrinth-Rufen wurde zerstört, aber nicht unser aktueller Aufzug Das ist gut. Wir wollen nicht, dass das zerstört wird, weil wir sonst nirgendwo hinfallen werden. Lassen Sie uns damit fortfahren, den Rest der Dinge zu reparieren. Das Erste, was wir reparieren werden, ist die Animation. Oh, wir müssen die Zäune fallen lassen. Ich werde das Auto fahren. Fragen Sie Ben. Wir werden es Fence nennen. Oh. Das Erste, was wir tun müssen, ist das Geräusch des Aufzugs. Wir werden die Audiovariable beenden. Jetzt werden wir das rausnehmen, weil wir den Stoppsound abspielen wollen. Und es ist irgendwie Fahrstuhl, Aufzug , Q, und dann spielen wir Sound. Spiel einfach. Und dann werden wir das Reverse-End verbinden. Und das wird sie untergehen lassen. Aber wir sind noch nicht fertig. Wir müssen unsere Plattform erweitern. Nein, wir werden die Richtung wechseln. Und wir werden das am Ende der Timeline verbinden . Space, Pakete oben, das ist hier, ich denke, es ist in Ordnung, und jetzt brauchen wir eine neue Zeitleiste von hinten, eine Zeitleiste Das rückwärts, weil der Grund dafür ist , dass wir rückwärts zahlen, den Zaun abbauen, nicht die Plattform erweitern Und wir werden unser Liftflugzeug nehmen, das unsere Plattform ist, und diesen relativen Standort Denken Sie daran, dass wir eine Variable namens Direction gespeichert haben. Und diese Variable haben wir gespeichert, als wir den ersten Stil unserer Labyrinth-Generation erstellt haben den ersten Stil unserer Labyrinth-Generation Der erste Stil wurde fortgesetzt. Und diese Richtung war der Offset, den wir dem ersten Stil im Grunde genommen entgegengesetzt haben. Wir haben also diese Richtung, in die wir im Grunde genommen unseren Ausgang nehmen . Richtung sollten wir also unseren ersten Stil ausweiten? Und genau das werden wir mit dem neuen Standort machen. Aber zuerst müssen wir die Äh, aus, nicht die Normalen schlürfen, tut Ert Und wir müssen einen Zeitplan hinzufügen Nehmen wir an, es sind zwei Sekunden, es dauert 2 Sekunden 00 und eins, lassen Sie uns einlesen und auch das letzte Schlüsselbild verwenden Nein, wir verbinden diese Alpha, und für B wählen wir Bedingung die Index-Wildcard . Für Alpha benötigen wir nun den ursprünglichen Standort der Plattform. Also gehen wir zur Startplatte. Wir werden unsere Plattform bekommen, wir werden den relativen Standort ermitteln und wir werden sie auf eine Variable hochstufen. Wir werden sie mit relativer Position benennen. Vielleicht spielt die ursprüngliche Plattform Re keine Rolle. Wir werden das hier besorgen, wir werden es mit Alpha verbinden und dann werden wir es erweitern. Nun, wir werden für Ost, Nord und Nord und West hinzufügen , wir werden entfernen, sodass es 300 auf X oder Nord sein wird , das duplizieren, wird Null auf X und 300 auf Y oder Ost sein , dann werden wir diese beiden duplizieren. Ich werde die Plattform mit der ersten verbinden und das X negieren, das mit dem Süden verbunden ist, negieren, den Westen mit dem Westen verbunden Damit ist unser Aufzug quasi abgeschlossen. Und ich sage irgendwie, weil wir einige Zustände des Charakters ändern müssen , damit er im Grunde genommen so steht, er sich nicht bewegen kann, solange er im Aufzug ist Als Nächstes sollten wir unsere Benutzeroberfläche in unser Spiel integrieren Wir haben die Funktion dafür bereits in unserem Spielmodus erstellt , bei dem es sich um ein Gameplay handelt. Und das Einzige, was wir tun müssen, ist zu unserem Charakter zu gehen. Öffnen wir diesen Plan und finden wir heraus, wie wir spielen können. Und hol dir den Spielmodus. Was Down angeht, Spielmodus, in Pure Cast umwandeln, Modus diese Variable, verbunden mit Gain Play, das als Variable, kein Gameplay. Und das würde R U Y bringen, wenn wir das Spiel starten. Jetzt können wir die Münzen sehen. Das ist das einzige, was wir noch sehen können , weil wir keinen Schlüssel haben , der das Inventar mitbringt. Lassen Sie uns jetzt eine schnelle Lösung finden , um das zu beheben. Lass uns unser Inventar mitbringen. Ich werde fliehen. Ich werde unseren Controller von oben nach unten öffnen , wo wir die Alt-Taste verwendet haben, um Gegenstände zu kleben. Jetzt verwende ich die Option Das ist die Unterseite , um Das ist die Unterseite unser Inventar zu öffnen und zu schließen. Was wir tun müssen, ist gedrückt. Wir werden uns in Scharen versammeln. Wenn wir auf A sind, werden wir ein Inventar eröffnen, also holen wir uns unsere Inventarreferenz und machen das Ich gehe in den A-Modus. Cast-Top-Down-Gain-Modus, Umstellung auf Pure Cast, und von hier aus werden wir die A.-Perücke aktualisieren. Inventar. Wir holen uns unser Inventar. Und dann, ausgehend von unserem Wood-You-Gameplay , nennen wir es Animation und wir spielen Animation ab. Brauche etwas Platz. Für eine Ausfallsicherheit. Lassen Sie uns auch Animation nennen. Setzen Sie eine Verzögerung ein. Und dann bekommen wir. Und lass uns zu unseren Gameplay-Widgets gehen. Und wir brauchen eine horizontale Box dieser horizontalen Box. HB. Wir müssen es zu einer Variablen machen. Gehen wir zurück zu unserem Controller. B, Inventar und aktiviert, wenn wir schließen, werden wir es löschen. Stimmt nicht. Dann müssen wir die Animation nochmal abspielen. Lassen Sie uns die Animation verbinden, und wir müssen das Ziel verbinden, nämlich das Widget-Gameplay. Gehen Sie wieder, und diesmal geht es rückwärts, nicht vorwärts. Jetzt haben wir theoretisch einen Fehler. Also wenn wir das Gameplay nicht kompiliert haben. Das ist der Grund. Dave-Datei. Lass uns spielen. Ich habe ein Presse-Eins. Wir haben unser Inventar, die Knöpfe sehen nicht gut aus. Oh, ich denke, das ist für das nächste Mal behoben . Ich werde dich dann sehen. Auf Wiedersehen. 85. Minimap-System: Und willkommen zum Game-Design-Workshop und zum prozeduralen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Real Engine Five-Action-Rollenspielen Zuvor waren wir mit unserer Aufzugsmechanik fertig , fast Wie gesagt, es gibt noch ein paar Dinge, die wir tun müssen, um den Status des Charakters zu ändern. Aber wir sind mit unserer Kehrseite des Zauns fertig geworden. Wir haben die Musik gestoppt, das Geräusch des Aufzugs angehalten, wir haben ein neues Geräusch ausgelöst, und dann fahren wir fort das Geländer mit dem gleichen Code in umgekehrter Reihenfolge herunterzufahren. Und dann haben wir eine neue Zeitleiste erstellt , die auf dem Rückwärtskanal der vorherigen Timeline basiert , wie wenn die vorherige Timeline rückwärts endet , dann führen wir das aus und fügen die relative Position unserer Plattform hinzu, die auf einigen hutcodierten Werten basiert , und die relative, die ursprüngliche relative die ursprüngliche Außerdem haben wir unser Gameplay zu unserem Bildschirm hinzugefügt und den Schlüssel zum Spawnen des Inventars erstellt, das sich tatsächlich im Top-Down-Controller befindet Jetzt haben wir angefangen, mehr Dinge auf dem Controller zu machen und bald noch viel, viel mehr Und wir nutzten die Nummer eins auf der Tastatur, um zwischen A und B umzuschalten, was A bedeutet, das Inventar zu aktualisieren und die Animation vorwärts abzuspielen Und mit einer Verzögerung der Endzeit wird sie aktiviert, und B würde das Gegenteil tun, sie wird deaktiviert und die Animation wird rückwärts abgespielt Aktivierung und Deaktivierung erfolgt , weil wir nicht in der Lage sein wollen , Tasten zu drücken, während die Animation noch abgespielt wird Lassen Sie uns nun mit der Behebung eines der Fehler fortfahren, die wir gerade gesehen haben, eines der Probleme, die auftreten, wenn wir keine Bilder haben, genau das gleiche Prinzip. Wenn wir kein Bild haben und dieses zurückkehrt, gibt die Textur unseres Elements Null zurück, dann wird ein weißes Bild erzeugt. Was wir also tun werden, ist eine Auswahl auf der Textur des Hetect-Objekts. Und dann werde ich eine Verbindung herstellen. Das Inventarbild hier, wir müssen es vielleicht trennen. Aber für den Index für das, was wir brauchen, sollten wir prüfen, ob dieses Bild nichts bedeutet. Wenn es gleich nichts ist, wählen wir etwas anderes aus. Wenn es nicht gleich nichts ist, wählen wir das Inventarbild aus. Etwas anderes wäre das Bild, das wir hier ausgewählt haben. Ich gehe hierher, um es zu finden. A, und dann gehe ich zurück zur Grafik. Und ziehen Sie es hierher. Nun, das sollte unser Problem behoben haben. Wie ich repariere es die Bilder und wir haben unseren Schlüssel, weil wir unseren Schlüssel zum Inventar hinzugefügt haben. Wir können einen kleinen weißen Kasten um ihn herum sehen, was nicht sehr angenehm ist. Oh, lass uns das auch reparieren. Wir gehen zum Gameplay über. Wir werden zum Designer gehen. Wir gehen zum ersten Button und um das Kästchen herum gibt es ein Unentschieden. Wenn Sie G drücken, wird die Spielansicht angezeigt, und wir wählen erneut die erste Taste aus. Wenn ich das in Bild ändere, wird das Problem behoben. Also werde ich das auf alles ändern, auf alles. Aber das Schweben, das Niedergeschlagene und das Normale, kein nerviger Logger manchmal Also als Bild auf alles gemalt. Und ich werde diese Kachel kopieren und in alles einfügen, kopieren und diesen Button holen, werde einfügen. Ich werde hier einfügen und ich werde hier einfügen. Und es ist behoben. Wir haben keinen weißen Rand mehr. Um Play zu drücken. Ich werde Inventar mitbringen. Beim ersten Mal kommt das Inventar, nicht deaktiviert, wohingegen es beim anderen Mal eingereicht wird. Lassen Sie uns das auch beheben. Lass es mich noch einmal testen. Klar. Ja, wenn es das erste Mal kommt, ist es nicht eingereicht. Standardmäßig sollten wir diese Leiste deaktiviert haben. Endlich deaktiviert, müssen wir im Grunde genommen auf aktiviert klicken. Kompilieren und speichern, und dieses Problem ist ebenfalls behoben. Da wir gerade dabei sind, das Inventar zu reparieren, fügen wir auch unser Minimum hinzu. Nein, wir werden ein Overlay benötigen. Lass es uns irgendwohin bringen. Lass es uns bis zur oberen rechten Ecke aufklappen. Gehen wir für Position minus 370, Position y 50, Unentschieden wäre 32020 Es macht also eine Kiste. nun in diesem Overlay wir nun in diesem Overlay ein I hinzu. Das sind zwei Bilder, die sie fühlen werden. Zweites Bild Lassen Sie uns die zweite Bildreihenfolge benennen und sie zu einer Variablen machen. Lass uns das erste Bild machen, ich nenne es Minima. Machen Sie es zu einer Variablen. Für unsere Grenze, Verlust ist sie, haben wir unsere Fantasie-Orderkarte, Mindestgrenze. Für unsere Minimap haben wir, glaube ich, ein Material. Nein, haben wir nicht. Keine schlichte Grenze. Wir haben das gerenderte Ziel. Was bedeutet das gerenderte Ziel? Nein, wir gehen zu unserem Charakter und fügen der Komponente Is the Capture hinzu. Nun, das ist im Grunde eine Kamera, aber es ist keine Kamera. Eine Kamera mit sehr spezifischen Regeln, auf die sie abzielt. Nun, nicht die Ziele. Es kann bestimmte Dinge rendern und andere Dinge nicht. Aber es zeigt es nicht im Viewport. Es ist keine Kamera , aus der wir schauen. Eine Kamera, die ihre Geschwindigkeit einem sogenannten Render-Textur-Renderziel zuführt . Das ist also unser Kunstminimum. Wir werden es im Texturziel der Kamera auswählen . Und lassen Sie uns die Höhe tatsächlich sehr hoch einstellen. Setzen wir es auf 3.000 303.000. Es kann eine große Entfernung entlang uns zurücklegen. Lassen Sie uns jetzt noch einmal überprüfen, ob wir das Material nicht haben. Haben wir. Ich glaube, wir müssen wieder für das Spiel beten. Also, um das zu schließen, und jetzt werden wir es wieder öffnen oder vielleicht weiterentwickeln, dass es hier ist. Und jetzt haben wir das Material-Minimap-Renderziel. Aber wir werden für eine Sekunde öffnen und eine Sache ändern Wir werden unser Texturmuster auswählen, wie es bereits auf Minimap eingestellt ist, und jetzt verbinden wir , ich glaube, die Opazitätsmaske, oder sie verbindet sich Das sollte eins sein, die Form die Form des Kreises, sollte eins sein, und wir werden speichern Lass uns jetzt angeblich das Material auf unserer Minimap auswählen , mindestens rendere ich , und es funktioniert Nun, das ist ein Minimum von drei D, was bedeutet, dass es teuer ist Aber wir können ein bisschen dabei bleiben. Wir werden das reparieren, indem wir uns nach links und rechts bewegen. Und wir haben aber ein Ergebnis. Wir können nicht sehen, was um uns herum ist. Der Grund, warum wir keine traditionelle Technik anwenden und Texturen und Koordinaten und alles andere verwenden können, ist, dass unsere Karte zufällig generiert wird. Wir werden also drei D-Minima benötigen. Es gibt auch andere Möglichkeiten, das zu tun, aber für uns wäre das in Ordnung Ich denke, das ist ein guter Ausgangspunkt für diesen Fall. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 86. Abschließende Minimap-Berührungen und Inventar-Tooltip: Hallo und willkommen bei Design Workshop, Real Engine Five, Procedural Dungeon Action-RPG Zuvor haben wir einige Probleme mit der Darstellung unseres Inventars behoben mit der Darstellung unseres Inventars Wir haben sie in unserem Stil verwendet , um die weißen Kästchen um die Schaltflächen herum zu entfernen , und wir haben das Problem behoben eine Nullvariable enthält dass diese Textur eine Nullvariable enthält, wenn wir das Bild des Inventars festlegen. Wir brauchen also einen Zweig , der, wenn er Null ist, wenn er nichts ist, unser Bild einfach umsonst benutzt. Im Code-Update-Inventar. Nein. Dann haben wir unserem Bildschirm unsere Mindestelemente hinzugefügt , nämlich ein Overlay und zwei Bilder Die beiden Bilder sind eins für den Rand, wir haben das De Fantasy-Hintergrundbild ausgewählt dass wir ein Randbild haben, und für das Material wir das Material M minimum I gewählt, ein Material, das wir hergestellt haben und einige Dinge innerhalb des Materials verändert Tatsächlich ändern wir eine Sache, dass die Form Kreis der Standardwert eins sein sollte, sodass das Material lbs ist, um den Kreis auszuwählen , weil er für ein Quadrat oder ein Minimum von Kreisen entworfen wurde Lassen Sie uns jetzt nicht noch einmal speichern. Wir haben unseren Charakter erweitert, rendern, das ist nicht unser Charakter. Nein, es ist ein Charakter. Okay? Also haben wir unsere aufgenommene Komponente hinzugefügt , eine spezielle Kamera , die bestimmte Dinge rendert Und wir haben das Texturziel auf das RT-Minimum festgelegt, das der Kamera-Feed projiziert wird, sagen wir, ungefähr das Lassen Sie uns nun ein wenig filtern , was die Kamera aufzeichnet. Denn gerade jetzt, wie wir sehen können. Es zeichnet alles auf. Wir können den Spieler sogar sehen. Wir können den Spieler nicht wirklich sehen, aber wir können den Spieler sehen. Der Spieler ist hier. Mir gefällt, dass es das aufzeichnet. Aber auf jeden Fall sollte es keine Gedichte aufnehmen. Nein, gehen wir zurück zu unserem Charakter. Wählen wir die Kamera aus. Gehen wir zu unserer Kategorie Szenenaufnahme. Klicken wir auf Erweitert. Nehmen wir an, wir wollen keine atmosphärischen ESPs aufnehmen. Wir benutzen das eigentlich nicht. Wir wollen den Nebel nicht. Oder wir tun es. Ich weiß es nicht. Wenn du die Kugel in der Atmosphäre im Nebel haben willst , kannst du sie behalten. Was wir sicherlich nicht wollen, sind Skelettnetze. Vielleicht Partikel, die die He-Gates löschen, aber das macht nichts, sie halten die Maschen von den Heiltoren Und alles andere lassen wir locker liegen Wenn es zu viel Rechenleistung beansprucht, können wir vielleicht ein paar Blitze entfernen. Aber wenn Ihr Computer damit umgehen kann, können Sie es so lassen. Wenn nicht, überprüfe die Dinge einfach weiter. Wahrscheinlich die Beleuchtung. Auch die versteckte Beleuchtung, Transluzenz. Ja. Jedenfalls, oder Sie können die Skalierbarkeit Ihrer Engine jederzeit auf niedriger einstellen . Und das würde die meisten Probleme lösen , wenn Sie einen niedrigen Computer haben. Als Nächstes sollten wir wieder zu unserem Charakter gehen, zu unserem Viewport gehen und das Drehen der Kamera korrigieren Also werden wir unsere Scene Capture-Komponente hierher bringen, um mit dem Spielen zu beginnen Wir bleiben absolut, was ein Knoten ist, der der Komponente mitteilt , ob sie Weltkoordinaten oder lokalen Koordinaten folgen soll . Und wir wollen der absoluten Rotation der Welt folgen, damit sie gleich bleibt. Also werden wir das verwenden und jetzt sollte unsere Minimap fertig sein Ja. Stetig, aber es geht in unsere falsche Richtung. Gehen wir zu unserer Kamera und wählen hier 45 Grad. Kompiliere und speichere und lass uns spielen. Und jetzt geht es in die richtige Richtung. Wir könnten das Minimum in dem Moment erscheinen lassen , in dem das Larp der Kamera endet Aber das wird vorerst in Ordnung sein. Wir werden es ruhig lassen. Und es wäre schön, wenn wir die Minima schließen würden , wenn wir zum Aufzug kommen, weil wir sehen können, wie das Labyrinth des vorherigen Labyrinths Wie dem auch sei, das ist lustig, wegen der Abstrahlung der Truhe, des emittierenden Materials hier, können wir dieses Wasser auf dem Boden sehen. Ich weiß nicht, ob sie sehen können, dass es ein Treffen ist. Wie dem auch sei, wir werden bald ein Modell ändern. Also lass uns damit koppeln. Jetzt, wo wir dieses System hier haben. Setzen wir Punkte, damit der Spieler den Spieler auch sieht. Nun, lass uns zu unserem Charakter gehen. Lass uns ein Paper Sprite hinzufügen. Oh, lass uns zu unserem Charakter gehen. Lass uns ein Paper Sprite hinzufügen. Und für das Paper Sprite. In unseren Texturen können wir eigentlich einfach das Papier-Sprite auswählen und es einfach von hier aus auswählen Raus. Drehen wir es korrekt so, dass das Gesicht korrekt ist, sodass der Zeichenpfeil auf das Zeichen zeigt, und setzen wir seine Höhe auf 2.900 und die Skalierung auf 2,1 Lassen Sie uns in allem kompilieren und speichern. Jetzt lass uns spielen. Wir haben ein Minimum. Wir haben zumindest einen Papiersprite , der uns unsere Richtung zeigt Warte. Und da wir sehen am Anfang ein großer Teil der Truhe gespawnt wird und wir keinen Ort zum Spawnen finden können, gehen wir zu unserem Labyrinth-Generator in unserer Create Lass uns das nochmal durch zwei teilen und das Ganze dann einfach dann einfach neu nach Division zur ersten Division hinzufügen Also kommen wir auf 75% und lassen Sie uns das hier verbinden. Lass es uns auch hier verbinden. Und das wäre es. Ist eigentlich auch hier. Und jetzt laichen wir hoffentlich besser. Drücken Sie den Aufzug. Oh, das ist eine sehr schöne Säge im Vergleich zu dem, wo wir sind. Vielversprechend, sehr vielversprechend. Jetzt, wo wir beim UI-Thema sind. Lassen Sie uns etwas mehr zu unserem Inventar hinzufügen. Fügen wir etwas hinzu, das uns, wenn wir mit der Maus über diese Schaltflächen fahren, Informationen darüber gibt , worüber wir den Mauszeiger Also werden wir es ganz einfach machen. Wir werden einen Text-Textblock hinzufügen. Wir werden es hier irgendwohin bringen. Lassen Sie uns das anhand der Animation überprüfen. Irgendwo in der Mitte unseres Inventars. Das könnte hier sein, glaube ich. Das können wir uns jetzt einfach ansehen. Es muss nicht perfekt sein. Hier ist es in Ordnung. Ich werde seinen Anker auch reinbringen. Das Zentrum ist hier oben. Also bringen wir einfach den Anker hierher und stellen die Ausrichtung auf 2,5 und 0,5 ein. Entschuldigung, sollte Null sein und das s minus sein. Nein. Eigentlich richtig. Großartig. Spielt keine Rolle. Größe 200, weil das die Größe ist, die wir brauchen, und lassen Sie uns die Begründung in der Mitte setzen . Warum gefällt sie mir nicht? Warum glaube ich, dass es A ist, es ist vollständig. Das ist die Position auf X und Y und dann die Ausrichtung 5.5, wir haben nicht gesehen, dass das nicht stimmt. Lassen Sie uns jetzt weitermachen. Es ist ein bisschen seltsam , aber es ist in Ordnung. Wir werden das alles machen. Wir werden das G nennen, aus dem wir eine Funktion machen werden. Lass uns eine neue Funktion erstellen. Sagen wir über den Tipp, und wir werden einige Eingaben benötigen. Wird vom Typ Fähigkeit sein. Sichtbarkeitsprüfung. Ja. Ja, genau das brauchen wir. Das nenne ich Sichtbarkeit. Und wir werden eine weitere Eingabe benötigen, Ganzzahl, und sie wird in sein. Jetzt werden wir in den Schwulenmodus wechseln. Wir gehen zu GM. Machen Sie einen Gasmodus. Wir werden auf Pure Cast umstellen und wir werden Ing bekommen. Jetzt werden wir aus dem Inventar die Schlüssel holen. Wir werden sie hier machen. Und anhand des Schlüssels holen wir uns den Inventarplatz. Dann werden wir eine Frage stellen. Existiert unser Artikel? Dazu verwenden wir die Länge unseres Inventars und vergleichen es mit Plus, einem der eingehenden Artikel . Ich mache plus eins, denn wenn ich sie anrufe, nenne ich sie Taste Null, Taste eins, Taste zwei, Taste drei, und die Länge beginnt mit eins. Deshalb bin ich also plus eins. Ich könnte einfach nicht Null, Eins, 23 und 1234 machen. Aber gewöhnen wir uns daran, diese Unterschiede zwischen Nullzählung und gleichzeitigem Normalzählung mit Schneiden bei Eins zu haben Nullzählung und gleichzeitigem . Nun, wir werden prüfen, ob das größer oder gleich ist. Und das, ich werde es hier verbinden. Also, wenn es größer oder gleich ist, wenn es nicht wirklich so ist, brauchen wir diesen Text. Wir werden es herbringen. Ich werde den Text einstellen. Und wir werden sagen, ich werde Bbility auf die eingehende Sichtbarkeit einstellen . Was passiert nun, wenn es wahr ist? Nun, wir holen uns einen Tisch. Reihe. Und für die Reihe werden wir diesen Get verbinden. Für diese Tabelle werden wir Items verwenden und wir werden die SD kaputt machen. Wir werden diesen Code hier kopieren und einfügen. Und wir werden den Namen hier auswählen. Eigentlich brauchen wir den Rest nicht, und die Sichtbarkeit wird hier verknüpft, das ist die Eingabe-Sichtbarkeit, die wir von hier übernommen haben. So haben wir den Tooltip gemacht, die Funktion, die ihn sichtbar oder unsichtbar Nun, wo nennen wir es? Auch hier wird es ziemlich einfach sein. Wir gehen zu unseren Buttons und wir gehen auf der Liste runter und da ist, wie wir sie variabel machen müssen. Also brauchen wir sie auf Hover und auf Hover. Machen wir das für jede Taste. Variabel beim Hover. Schweben Sie mit der Maus Gehe zur dritten Taste, ist variabel. Gehen wir zur vierten Taste, die variabel ist. Gehen wir von der Grafik aus. Lectm hier, es geht viel schneller Mauszeiger bewegt und die dritte Taste bewegt Lass uns eine nette Liste daraus machen. Um sie danach in Ordnung zu bringen. Y. Also haben wir die Tasten eins, zwei, drei, vier und wir haben die Hover-Taste eins, zwei, drei, Jetzt bringen wir die Hover-Funktion in jedes Muster. Gehen wir von Null, eins auf drei und sichtbar umgekehrt N wäre wäre der eine dann ich. Springt zu und versteckt sich Und versteckt. Lass uns kompilieren und speichern Lass uns spielen gehen. Ich hätte es am Anfang unsichtbar machen sollen. Aber wenn ich zu anderen Dingen gehe, gehe ich und wenn ich zum Schlüssel gehe, gehe ich zum Schlüssel. Wenn ich schließe, verschwindet es. Wenn ich öffne, erscheint es. Es erscheint erst über etwas. D. Lassen Sie uns nun als Standard festlegen , dass es unsichtbar sein soll ( Standardsichtbarkeit Gehen wir zu Sichtbarkeit und setzen wir es auf ausgeblendet. Und jetzt haben wir unsere. Wir haben in dieser Lektion viel gemacht. Lassen Sie uns mit der nächsten fortfahren. Vorerst mal vorbeischauen, wir sehen uns dann. 87. Spielergesundheitssystem und Widget: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon-Action-Rollenspielen Erstellung von Real Engine Five Procedural Dungeon-Action-Rollenspielen Zuvor haben wir ein wenig die Einstellungen unserer D-Render-Komponente in unserem Charakter eingerichtet unserer D-Render-Komponente in unserem Also gingen wir zu unserer Kamera und sagten, was gerendert werden sollte und was nicht. Wir haben auf die Kamera geklickt. Ich wollte auf die Sinusaufnahme der Komponente klicken. Wir verwenden die erweiterten Einstellungen der Sinuserfassung, um zu unseren allgemeinen Showflags zu gelangen, und wir haben BSP-Partikel und Skelettmaße deaktiviert Und wie gesagt, wir können auch andere Dinge auswählen, wenn wir nicht möchten sie in unseren Mindestwerten bei der Erfassung von Sünden auftauchen Jetzt haben wir auch Papier-Sprite hinzugefügt , um unseren Charakter so gut wie möglich darzustellen Wenn wir also spielen, können wir sehen, in welche Richtung wir uns bewegen und wo wir zumindest hinschauen Wir wissen also, wohin wir schauen. Wie dem auch sei, dann haben wir weitergemacht und unsere Regel in unserer Labyrinth-Generation geändert unsere Regel in unserer Labyrinth-Generation Herstellung von Schnüren für die Anstatt das halbe Labyrinth zu verwenden, haben wir ungefähr 75% des Labyrinths verwendet und geprüft, wo wir unseren Schatzindex platzieren sollten Um das zu erreichen, haben wir die bereits durch den letzten Index geteilte Division wieder durch zwei und diese Division zur ersten Division hinzugefügt Oh. Danach haben wir unserem Gameplay-Widget ein Textfeld hinzugefügt , das den Namen des Hobart-Gegenstands in Um das zu erreichen, haben wir tatsächlich unsere Hover- und Un-Hover-Events auf unseren Buttons verwendet und wir haben eine Funktion entwickelt, die den Inventarplatz auf der Grundlage der Schaltfläche belegt , über die der Und wir haben einige gemacht, wir haben im Grunde eine Kette von Ereignissen geschaffen , indem wir das Inventar aus dem Spielmodus genommen , indem wir das Inventar aus dem Spielmodus seine Länge überprüft haben, ob es, ob es größer oder gleich dem angeforderten Gegenstand ist, denn denken Sie daran, die Länge beginnt bei Null, was bedeutet, dass kein Gegenstand ist und eins, was gewinnt, dass wir einen Gegenstand haben. Und dann haben wir eins zum Inventar hinzugefügt, denn wenn wir sagen, welche Schaltfläche wir verwenden, haben wir eigentlich Null verwendet, um zu beginnen. Ich benutze Null, um zu beginnen. Also Null plus Eins bedeutet Eins, und wenn wir eine Länge von Eins haben, geht es uns gut. Nein, was wir berechnet haben, habe ich hier gemacht. Wie dem auch sei, wenn wir kein Objekt haben, sagen wir nichts, der Text sagt nein und wir legen seine Sichtbarkeit fest, und wenn wir ein Objekt haben, wir den Namen des Elements ab und setzen es in unseren Tooltip Lassen Sie uns nun mit der Erstellung der Verwendung der Elemente fortfahren. Wenn ich zum Beispiel auf ein Objekt klicke, passiert etwas. Und dadurch werden wir in der Lage sein, einige Mechaniken unseres Charakters auszufüllen. Fangen wir zum Beispiel mit dem Gesundheitsteil an, und wenn wir einen Gesundheitsteil verwenden, müssen wir unserem Charakter etwas Lebenspunkte hinzufügen. Dazu benötigen wir ein Gesundheitssystem, mit dem wir Gesundheit hinzufügen oder entfernen können. Und eine Visualisierung davon für unseren Spieler. Nein, fangen wir mit dem visuellen Teil an. Wir haben unser System für den visuellen Teil so eingerichtet , dass wir mithilfe eines Materials einen internen Parameter ändern, um das Material auf seinen Maximalwert oder auf seinen Nullwert zu füllen . Oh, lass uns zeigen, wie wir das machen. Wir werden ein Bild bekommen. Wir bringen es her. Machen wir es zum Gegenteil des Minimums. Also Position, ich werde 50, 50 oder y mal x 256 setzen . 256. Vielleicht reduziere ich das etwas weiter. Hier sind die Anker auch sicherheitshalber, vielleicht noch ein bisschen tiefer Vielleicht mach es auch ein bisschen kleiner. Ja, das ist der Grund. Ja? Es steht nicht in der Reihe, aber es ist ein Problem. Unser Material, wir werden das M U I HP verwenden. Dieses Material lässt uns das Material öffnen. Hat diesen HP-Parameter , der 1-0 ist und das verändert, wie unser Gesundheitsbalken aussieht Das ist also ein Wert, den wir anhand unseres Entwurfs manipulieren werden anhand unseres Entwurfs manipulieren Kehren wir dazu zu unserem Wood-Gameplay zurück. Lassen Sie uns das realisierbar machen. Nennen wir das P-Bar. Nein, es ist ein Bild und lass uns zu unserem Diagramm gehen und wir werden eine neue Funktion erstellen. Nennen wir dieses Datum HP. Sollte hier ein E sein. Jetzt benötigen wir eine Eingabe, die vom Typ Float sein wird weil wir den Wert Null zu Eins haben, und wir werden das HP nennen. Das nächste, was wir tun werden, ist unsere Gesundheit im Grunde genommen, ein Element, und wir werden dynamisches Material bekommen. Das ist ein Knoten, der es uns ermöglicht, auf das Material des Materials zuzugreifen und es zu manipulieren des Materials egal was wir wollen, dynamisch im Gameplay. Was wir tun werden , ist ein Parameter nach dem anderen, und wir werden den Wert hier verbinden. Das sind tatsächlich p Prozent. Weil es nicht der tatsächliche HP-Wert ist. Es ist ein Skalarwert 0-1 und es ist ein Prozentsatz Es ist nicht so, dass wir, wenn du 300 HP hättest, 300 von 50 HP zurückgeben würden , also geben wir die Mathematik nicht zurück Wir werden den Prozentsatz direkt zurückgeben. Der wichtige Teil hier ist der Parametername. Dieser muss genau wie im Material eingegeben werden. Gehen wir in das Material ein, ich denke, es ist der HP-Wert. Y. Um immer auf Nummer sicher zu gehen, können wir den Parameter wählen und ihn einfach kopieren und hier einfügen Ups, kopieren. Kopieren und einfügen. Was ich eingefügt habe, war eigentlich Code , weil die Steuerung hier nicht funktioniert hat Als ich Strg C gedrückt habe, hat es aus irgendeinem Grund nicht funktioniert Vielleicht habe ich es nach vorne verfälscht. Sekunden Fragment von Sekunden. Meine Tastatur ist ein bisschen klebrig, alte mechanische. Nun, wo aktualisieren wir diesen Wert? Wenn du dich daran erinnerst, wann wir die Falle gebaut haben, lass uns zu den Requisiten gehen. Lass uns die Falle öffnen. Ist es nicht hier drin? Korridor sollten es Feinde sein. In unserem Ordner Feinde haben wir also die BP-Falle. Als wir unserem Feind nun Schaden zugefügt haben, haben wir den Knoten Schaden anwenden verwendet. Wenn wir also zu unserem Charakter gehen, geben wir Schaden vom Typ A ein. Es gibt ein Ereignis, irgendeinen Schaden. Dies wird also ausgelöst, wenn wir Schäden jeglicher Art und Art von Schaden anrichten. Wir könnten Kurse zum Erstellen einrichten und so, aber das werden wir nicht tun. Davis, geh zurück zu unserem Charakter, und wir haben etwas Schaden erlitten. Lass uns eine Funktion erstellen , um Gesundheit zu entfernen. Also werde ich es Gesundheit nennen. R und es werden zwei Eingaben benötigt, hier Eingaben, O wird ein Bullion sein, was Addieren bedeutet, wenn es zwei sind, addieren wir, und einen Float, was Schaden bedeutet. Antwort: Als Nächstes benötigen wir zwei Variablen Sie werden vom Typ Float sein , und eine wird die aktuelle Gesundheit und die andere die Mx-Gesundheit sein. In MCs Health geben wir einen Standardwert an, und dieser Standardwert wäre Jetzt setzen wir den aktuellen Wert auf Max' Gesundheit bei Spielbeginn Gehen wir also zu Beginn des Spiels über, nachdem wir den Wert auf Absolut gesetzt haben. Wir werden den aktuellen Wert auf Max' Gesundheit setzen. Und dann verbinden wir unsere Funktion und entfernen Gesundheit mit unserem Schaden. Und lassen Sie uns unsere Funktion eingeben. Das Erste, was wir wissen sollten, ist, dass wir Schaden hinzufügen oder abziehen, denn Schaden könnte auch Heilen, wir werden ein Minus oder ein Plus machen. Minus sollte unten sein, weil wir Maxel bekommen werden , also Maxel abzüglich des Schadens und dann Max Health Schaden wäre die Ferse. Wir werden eine Auswahl treffen. Wir werden unsere Anzeige hier verbinden. P A, wir fügen hinzu. Wenn es nicht P A ist, ist es Peak B, also subtrahieren wir Wir werden diesen Wert erhöhen. Aber Achse, Klammer schweben. Weil wir Max meinen wollen. Wir wollen im Grunde nicht, dass es über unseren MAC-Status oder unter unseren Wert unter Null geht. Wir werden unseren MAX-Zustand abrufen und ihn mit Mx verbinden, und der Mindestwert wäre Null. Wir sollten nicht unter Null subtrahieren. Und wir werden unseren aktuellen Gesundheitszustand einstellen. Als Nächstes sollten wir unsere aktuelle Gesundheit durch die maximale Gesundheit teilen. Und das würde uns einen Prozentsatz unserer Gesundheit geben. Jetzt holen wir uns unseren Schwulen-Modus. Wir werden unser Widget-Gameplay bekommen. Davon ausgehend sagen wir HP Update HP. Wir werden dieses Jahr eine Verbindung herstellen, und wir werden unseren Prozentsatz hier verbinden . Datei, lass uns drücken. Sie speichern und kompilieren eigentlich alles. Lass uns. Lass uns sehen, ob es funktioniert. Wir werden in eine Falle tappen. S. Aber im Moment sind wir uns nicht ganz sicher , welcher Teil dieser Aktionen nicht funktioniert. Fangen wir mit unserer Falle an. Gehen wir zu unserer Falle. Was wir überprüfen wollen, wenn wir Schaden anrichten. Ich werde von hier aus mit der Überprüfung beginnen. Gehen wir davon aus, dass alles andere korrekt ausgelöst wird, und wir wollen sehen, ob es Schaden anrichtet. Wir erreichen diesen Ort, also richten wir Schaden an. Ich werde aufhören, weil es eine Verzögerung und um den Breakpoint von hier zu entfernen. Ich gehe zu unserem Charakter von oben nach unten und setze bei jedem Schaden einen Breakpoint . Lasst uns jetzt die Falle finden. Mützen spawnen nicht in Räumen. Das ist etwas Gutes. A, wir fügen Schaden zu. Wir hatten entfernt. Dieser Wert ist neun. A Wir haben einen Schaden erlitten. 0.9 HP aktualisieren. B. Wir aktualisieren HP, indem wir den Wert auf 0,9 setzen. Wir haben das Richtige , weil eingefügt. Was? Okay, es wird keine Vorschau angezeigt, weil ich gerade spiele. Ich sollte unsere Gesundheit senken. Punkt streichen. Macht es das, und ich sehe es nicht. Die Tasse hat ein falsches Geräusch. Die Tasse gibt beim Angriff ein falsches Geräusch ab. Gehen Sie zum Angriff über. Wir spielen den Sound hier nicht ab. Okay, wir spielen den Sound hier. Das ist ein korrekter Sound. E ernten. Gehen wir zurück zum Material. Wir verbinden das, wenn das 0,9 ist, sollte es so aussehen, wenn das 0,8 ist, sollte es so sein. Null. Lass uns testen, ob der Standardwert Null ist. Wird es aktualisiert? Ja, tut es. Aber danach tut es das nicht. Ich gehe immer auf 0,9. Geh zu unserem Charakter. Sie können sehen, dass wir auch während der Laufzeit debuggen können auch während der Laufzeit debuggen Ich kann zu meinem Charakter gehen, ich kann einen Charakter auswählen Dieser hat nur einen Knoten. Wir werden es nicht leicht sehen, aber wenn ich es hierher bringe, ist es sichtbar. Wir können es tatsächlich während der Laufzeit sehen. Aber es läuft, was es macht. Es geht voran. Ich werde hier einen Breakpoint setzen. Ich werde den Wert 0,9 sehen. Jedes Mal kommt der Wert 0,9. Okay. Das werde ich beim nächsten Mal lösen. Ich werde es hier lassen. Auf Wiedersehen für heute. 88. Inventargegenstand Usability-Gesundheitstrank: O Hallo und willkommen zum Game Design-Workshop unter den prozeduralen Aufrufen zur Erstellung von Dungeon-Action-Pz von Engine Five prozeduralen Aufrufen zur Erstellung von Dungeon-Action-Pz Zuvor haben wir mit dem Aufbau unseres Gesundheitssystems begonnen. Wir haben unser Bild zu unserem Widget hinzugefügt, dessen skalaren Parameter wir manipulieren HP-Wert erhält die dynamische Instanz, was hier der HP-Wert ist Lassen Sie uns das wieder auf eins setzen. Und dann fuhren wir fort, indem wir in unserem Charakter das Any Damage Event und die Funktion zum Hinzufügen und Entfernen von Gesundheit hinzugefügt haben, was ich hier tatsächlich sehr falsch gemacht habe. Ich subtrahiere und füge einen Wert zu der MAX-Gesundheit hinzu, anstatt der aktuellen Jedes Mal, wenn wir 0,1 Schaden zufügen, reduzieren wir tatsächlich unsere maximale Gesundheit, sodass sie immer bei 90% liegt Lassen Sie uns nun die aktuelle Gesundheit anstelle der MAX-Gesundheit verbinden . Wenn wir nachschauen, und das sollte funktionieren. S hier. Stimmt? Ja. Ja, es funktioniert. Gesundheit zu verlieren, auch viel Gesundheit. Und wir haben endlich das richtige Geräusch auf der Falle. Wir ändern den Spielsound hier, nach der Verzögerung, das ist die Zeit, in der der Charakter beschädigt wird. Es wird vor dem Trigger-Teil und dann der Teil mit dem Spike-Angriff abgespielt und dann der Teil mit dem Spike-Angriff Lassen Sie uns mit unserem Gesundheitsteil fortfahren. Um das zu tun, müssen wir zu unserem Gameplay-Widgit zurückkehren. Und wir werden unsere Knöpfe brauchen. Wir werden Taste eins auswählen. Lassen Sie uns das eigentlich von der Grafik aus machen. Wir müssen die Knöpfe jetzt nicht machen. Wir wissen, dass es sie hier gibt. Gehen wir also zu Taste eins und drücken wir auf Los geht's, wenn geklickt wurde Und dann auf Taste zwei geklickt und auf Taste drei geklickt und Taste vier t. Nun, wir haben das Als Nächstes müssen wir eine Funktion erstellen , die wir use aufrufen, und sie wird eine Eingabe vom Typ Integer haben Nennen wir das Plot. Gehen wir also zurück zu Ihrem Ben-Diagramm. Verwenden wir in unseren Schaltflächen diese Use-Funktion. Lassen Sie uns diese Use-Funktion verwenden und alles verbinden, angefangen bei 0-1, zwei und drei Im Moment, wenn wir eine unserer Tasten drücken, führen sie diese Funktion aus. Verwenden Sie eins, zwei, drei 0-3 Lassen Sie uns nun die Funktion aufrufen. Und wir werden unser Inventar brauchen. Also wir haben es auf Hover gespeichert, nicht gespeichert, aber wir haben diesen Code hier benutzt , um unser Inventar zu bekommen Also kopiere ich das, was gerade benutzt wird, und ich werde wieder zu reiner Besetzung konvertieren und ich werde wieder zu reiner Besetzung konvertieren, weil beim Kopieren und Einfügen die reinen Besetzungen wieder normal werden Jetzt haben wir Zugriff auf unser Inventar und werden unsere Schlüssel holen Und wir werden sie zu unserer lokalen Variablen machen. Nennen wir diese Schlüssel. Und wir werden unsere Werte bekommen. Und wir werden das zu einer Variablen heraufstufen. Ebenfalls, Colle-Werte. Jetzt haben wir Zugriff auf unsere Artikel und auf unsere Werte. Jetzt werden wir diesen Artikelindex verwenden , um von unseren Schlüsseln abzurufen. Wir werden bekommen. Und wir gehen zu Index, s. Wir holen uns unseren Platz, nicht Artikelindex. Im Grunde genommen, und wir werden wechseln Basierend auf diesem Namen müssen wir die Namen für unsere Suiten festlegen. Ich gehe zu den Details, wir entfernen die Standard-PIN und die Gegenstände, die wir verwenden sind, glaube ich, zwei für die Portion, die für Zeit und ich fünf für die Zerstörung. B war dieses Material kompiliert und gespeichert und lassen Sie uns unsere Artikel für eine Sekunde überprüfen. Ich erinnere mich, dass ich für Gesundheit war. Da sind es Gegenstände. Hier ist es. Die Artikel. Gesundheitstränke, Haustiertrank, Zaubertrank war vier und fünf Okay. Aber Nummer eins, was wir gerade machen, was eigentlich Nummer zwei ist, sind die Zaubertränke. Gehen wir zurück zu unserer Pam P. Und wenn es ein Zaubertrank ist, müssen wir überprüfen, ob unser Spieler bei voller Gesundheit ist oder Denn wenn der Spieler volle Gesundheit hat, sollten wir ihm nicht noch mehr Lebenspunkte hinzufügen Aber selbst wenn wir das tun, sollten wir die Möglichkeit haben , zu unterscheiden, ob wir etwas hinzufügen oder nicht. Nun, wir werden eine Filiale anlegen. Wir werden den Spieler dazu bringen. Dadurch bekommen wir direkt das kontrollierte Telefon, das wir sind und das unser Kontrolleur kontrolliert, ist besessen Wir gehen über den Charakter hinaus, der eigentlich die Klasse unseres Teiches ist, und holen uns die Variablen, die wir wollen Wir verbinden das hier, hier, und wir werden überprüfen, ob unsere aktuelle Gesundheit unserer Mx-Gesundheit entspricht, nicht gesetzt, wenn diese gleich sind, dann sollten wir nichts tun weil der Charakter volle Gesundheit hat. Wenn diese nicht gleich sind, sollten wir Gesundheit hinzufügen und auf Anzeige drücken. Und jetzt wollen wir unseren Zaubertränken einen Wert geben. Nehmen wir an, sie heilen gesund. Wenn wir bei voller Gesundheit Zaubertränke trinken wollen , verbinden wir das einfach hier. Oder wenn wir genau wissen wollen , dass zwei Lebenspunkte fehlen, um einen Trank zu verwenden, könnten wir hier mehr Regeln aufstellen Für uns werden wir genau diese Regel beibehalten, und als Nächstes werden wir unsere Werte ermitteln , also wie viele Zaubertränke wir in unserem Inventar haben Hier drüben, und ich hole mir unsere Werte. Ich hole unser Grundstück, weil das ein Inventar ist. Und wir nehmen einen Minus-Eins, das ist der Trank, den wir gerade benutzt Jetzt werden wir überprüfen, ob dieser niedriger oder gleich Null ist, und einen Zweig verwenden Wenn es nicht niedriger als Null ist, werden wir unser Inventar erneut abrufen. Wir machen das wirklich variabel, aber das ist nicht wirklich wichtig. Erneut in Pure Cast umwandeln, kommentieren. Besetzung. Wenn es nicht Null ist, bedeutet das, dass wir noch Portionen haben Wir werden unseren Slot-Artikel hinzufügen. Und das Minus eins von unseren Werten. Aber das wird um eins abgezogen. Ich weiß, dass es verwirrend sein kann , dass wir etwas hinzufügen, aber das Hinzufügen aktualisiert nur den Wert, der bereits existiert Jetzt aktualisieren wir das Inventar für unser Inventar, das Sie verwenden werden. Inventar. Es spielt keine Rolle, dass wir dieselbe Variable verwenden , die wir aufrufen da diese Knoten zwei verschiedene Dinge sind. Aber das bedeutet tatsächlich , dass es auch Eis werfen wird. Heraufstufen dieser Variablen würde sie also ein bisschen optimaler machen, vielleicht fördern wir diese Variable und halten sie, damit wir sie nicht jedes Mal aufrufen. Aber das hat momentan nur minimale Auswirkungen auf unser Spiel. Oh, als Nächstes müssen wir unseren Tooltip aktualisieren Was nicht als Update-Tooltip bezeichnet wird, sondern als Over-Tooltip Wir werden versuchen, es auf sichtbar und den Slot auf unseren Slot zu setzen. Der Grund, warum das funktionieren wird, ist, dass wir bei der Eingabe prüfen, ob dieser Artikel existiert. Falls wir ihn in unserem Inventar haben. Wenn wir es nicht in unserem Inventar haben, schicken wir auch keins. Gehen wir zurück zu Now, was passiert, wenn wir bei Null sind? Oh, was passiert, wenn wir bei Null sind, müssen wir aus dem Inventar entfernen. Oh, ich hole nochmal unser Inventar. Auch hier spielt es keine Rolle, dass ich diesen Code kopiere und einfüge denn selbst wenn ich ihn daraus ziehe, würde er es wieder tun. Jetzt werde ich umziehen. Und für unseren Umzug werden wir unsere Schlüssel in den Schlitz stecken. Wir werden unsere Schlüssel in den Schlitz stecken. Und dann werden wir einfach das Inventar aktualisieren. Nein, lass uns das testen. Gehen wir in unseren Spielmodus, wählen wir unser Inventar und fügen wir einige Portionen hinzu, ich zwei, und fügen wir zwei Zaubertränke Lass uns verletzt werden. Potion funktioniert hier, also ich. Es passiert nichts, und lass uns eine Falle suchen Ich werde einen benutzen. Aber Narr, lass dich wieder verletzen. Zu klein, 90% zeigen nicht wirklich und 80% zeigen zu viel. Wie dem auch sei, nehmen wir den Trank und er ist weg. Ein Problem, der Scherz hier drüben , dass wir die beiden Portionen haben, wurde nicht angezeigt Schauen wir uns das an. L Lass uns zu unserem Gameplay gehen. Gehen wir zu Ben Graph und bewegen den Mauszeiger nicht mit der Maus über das Update-Inventar. Wir können direkt von der Funktion d Inventar aus gehen, und wir wollen, wenn ich es auf versteckt setze, wo es sichtbar sein sollte Aber jetzt haben wir die beiden Möglichkeiten. Nichts passiert, man setzt auf eins, eins links, links. Warum war der so groß? Ich denke, wir haben es ein bisschen zu groß gemacht. Es ist ein bisschen ausgeglichen. Also lass uns diese beiden reparieren. Also, du fragst dich, wie ich die Sache mit dem Vollbildmodus gemacht habe. Ich habe F 11 gedrückt. Und wenn Sie tatsächlich Shift N F 11 drücken, wird es komplett im Vollbildmodus angezeigt. Es deckt sogar die Fensterleiste ab , die Sie hier nicht sehen können. Aber ja, Shift F 11 deckt es komplett ab. F 11 macht es einfach im Vollbildmodus ohne die Fensterleiste. Wie auch immer, lassen Sie uns das visuelle Problem beheben. Ja, es sieht nicht gut aus. Der Grund dafür verschwindet aufgrund der Rendering-Regeln. Das würde also ein bisschen nach links gehen. Ich glaube, das ist es. Ja. Also werde ich schummeln und die Translation Rendering Transform benutzen Nicht sehr optimale Verwendung, aber wir machen es vorerst minus drei Also hier. Und lass es uns hier einfügen. Sie können sehen, wenn ich klicke, weil es sich um denselben Elementtyp handelt. Auch wenn ich auf die Schaltfläche klicke, auch weil sie irgendwie die gleichen Arten von Elementen haben. Ich bin unten geblieben. Das wird nicht zurückgesetzt, was ein sehr nettes Feature ist. Sagen wir auch hier Minus. Ich glaube, jetzt wollte ich sagen, dass sie besser aussehen, aber der Großteil. Ja, weil der Typ Ort fett gedruckt ist. Also lass uns das so ändern, dass es nicht so ist. Ich mag kein normales. Ja, normal normal ist besser. Lass uns benutzen. Wir können damit aufhören, die Grafik und alles andere zu optimieren. Es ist in Ordnung Es ist in Ordnung, ist in Ordnung. Nun, ich denke, das ist es für diesen. Ich sehe dich als Nächstes. Auf Wiedersehen. 89. Spielzeitleiste und Zeittrank: Hallo und willkommen zum Game-Design-Workshop, zur echten Engine Five, zum prozeduralen Dungeon, Action-Rollenspiel und zum Kreativkurs In der vorherigen Lektion haben wir mit unserer Nutzungsmechanik begonnen. In unserem B-Gameplay haben wir das On-Klick-Ereignis für die vier Tasten verwendet und eine Nutzungsfunktion erstellt, wir anhand einer Ganzzahl bestimmt haben, welche Taste, also im Grunde, welcher Slot im Inventar wir drücken In dieser Funktion haben wir unser Inventar abgerufen, dass wir aus unserem Spielmodus heraus die Schlüssel und Werte in separaten lokalen Variablen gespeichert haben . Danach erhalten wir, basierend auf unserem Slot, aus unseren Schlüsseln den Namen des Schlüssels, was unser eigener Name ist, und wir wechseln auf der Grundlage dieser Gegenstände, die wir haben. Ich zwei, ich drei, ich vier und ich fünf. Ich zwei ist der Heiltrank. Also haben wir überprüft, ob unser Spieler gesund ist. Denn wenn unser Spieler voller Gesundheit ist, sollten wir den Trank nicht trinken Und wenn die Lebenspunkte nicht voll sind, verwenden wir die Funktion „ Gesundheit entfernen“, um unserem Spieler zwei HP hinzuzufügen Dann haben wir die Werte des aktuellen Slots, also der Heiltränke , überprüft des aktuellen Slots, , um zu sehen, ob minus eins Null oder weniger als Null ergibt Ein Wert unter Null sollte eigentlich niemals ausgelöst werden. Und ob wir im Grunde genommen Zaubertränke haben , überprüfen wir das hier. Wenn wir Zaubertränke haben oder wenn die Zaubertränke bei der Einnahme gleich Null werden, haben wir unser Inventar entsprechend aktualisiert, indem wir denselben Schlüssel entfernt oder dem Inventar hinzugefügt Und dann haben wir unser Inventar aktualisiert und auch den Hover-Tipp aktualisiert Nur für den Fall, dass es Null wird, heißt es nein. Nun, die Reihenfolge sagt uns, dass wir den Schnelltrank sofort einnehmen sollten, aber ich möchte jetzt nicht genau mit der Charaktermechanik beginnen genau mit der Charaktermechanik Da wir uns also im Gameplay-Widget befinden, erstellen wir den Zeittrank , der praktisch nur aus zwei Variablen besteht Wir werden eine Float-Variable verwenden. Wir werden diesen Elternteil anrufen. Wir werden es duplizieren und es Max nennen. Wir werden der aktuellen Zeit einen Wert hinzufügen. Nehmen wir an, unser Einmaltrank gibt uns 60 Sekunden, weil wir in Sekunden unterwegs sind , und darauf sollten wir unsere aktuelle Zeit einstellen Aber wir werden einfach festklemmen, die Achse festklemmen. Entschuldigung, klemmen Sie den Schwimmer fest. Wir werden das hier verbinden und unser Klumpen wäre unsere maximale Zeit. Und geben wir die maximale Zeit als Standardwert an. Dafür müssen wir kompilieren. Und das wären, sagen wir, 220. Nehmen wir an, es sind 220, und wir fügen jedes Mal eine Minute hinzu. Wir trinken einen Zeittrank. Und lassen Sie uns das mit fünf verbinden. Das nächste, was passieren sollte, ist jetzt schon erledigt. Wir werden das hier mit dem Branch verbinden, und es wird prüfen, ob der aktuelle Wert-Slot genug hat, und es wird entfernt oder hinzugefügt, wenn es Sable ist, was nicht Sable ist Ich denke, Zeittränke werden nur einmal verwendet. Ich habe alles einmal verwendet, außer den Zaubertränken und dem Schnelltrank Lassen Sie uns also den Indikator für die Uhrzeit erstellen, so wie wir ihn in der Benutzeroberfläche brauchten Wir gehen zu p. Wir verwenden dieselbe Technik wie das Material wie der Gesundheitsbalken. Wir werden also ein Bild verwenden. Wir setzen den Anker in die Mitte und nach oben. Setzen wir Position x -300, Position y 50 Größe x 600, das ist y 60. Und ich denke, es ist eine gute Zeitleiste. Und jetzt zum Auftritt. Wir werden putzen und wir werden das Mer benutzen. Material für Exemplare. Jetzt haben wir unsere Zeitleiste. Programmieren wir es so, dass es etwas tut , denn wenn wir es haben, heißt das nicht, dass es etwas bewirkt. Also gehen wir zu unserer Grafik. Wir gehen zu unserem Event-Graph. Wir gehen zum Event-Konstrukt, was so etwas wie Start Play oder Blueprints ist Und jetzt verwenden wir a. als Zeitangabe für jedes Ereignis. als Zeitangabe für jedes Ereignis Für Neueinsteiger ist ein Timer im Grunde ein Knoten, der verwendet wird, um ein zeitgesteuertes Ereignis zu erzeugen , das nach einer bestimmten Dauer eine Aktion auslöst . Wenn wir auf Lupin klicken , kann auch so eingestellt werden, dass sie sich in regelmäßigen Intervallen wiederholt Und so wie wir ihn verwenden, erstellen wir ein benutzerdefiniertes Ereignis, und wir binden dieses Ereignis über den Delegierten hier Wie viele zusätzliche Informationen wären, dass es eigentlich egal ist, wie oft Sie sie haben und wo Sie sie haben. Es ist wichtig, wie viele Aktionen sie ausführen, weil sie hinter dem Code quasi als Einzeiler betrachtet werden, hinter allem, was sich ansammelt, einfach grob erklärt, nicht genau so, aber sagen wir, es sammelt die Aktionen der Zeit Lassen Sie uns nun in unserer Theorie einige Werte angeben. Also wird unser Timer in einer Endlosschleife laufen. Er wird sich alle 1 Sekunde wiederholen. Das bedeutet, dass der erste Stick 1 Sekunde nach dem Start des Spiels läuft Also werden wir unsere aktuelle Zeit einstellen. Alle 1 Sekunde zwei aktuelle Uhrzeit minus eins. Und dann werden wir fragen, ob diese Zeit gleich Null ist. Eigentlich gleich oder kleiner als Null. Weniger oder gleich. Bestell hier kurz was rein , wenn ich eine kurze Notiz haben will. Wenn es weniger als Null ist, werden wir im Grunde genommen unser Spiel beenden. Was wir noch nicht so genannt haben, das machen wir später. Jetzt nur noch eine Information. Wir werden nicht pausieren oder ich stelle diesen Timer ein, aber um das für Timer zu tun, haben wir ein System namens Handles, haben wir ein System namens Handles Wenn ich diese Variable hochstufen und sie Timer ble und I nennen würde, wenn ich dieses Handle irgendwo aufrufen müsste, wenn ich Zugriff darauf hätte, kann ich den Timer pausieren oder die Pause aufheben und auch fragen, ob der Timer gestellt ist kann ich den Timer pausieren oder die Pause aufheben und auch fragen, ob der Timer Das ist die Art, wie wir das machen. Und es gibt auch einen eindeutigen und einen ungültigen Artikel. Es gibt noch ein paar weitere Optionen. Ich wollte das nur hinzufügen. Ich werde diese Variable nicht verwenden. Ich werde sie löschen. Jetzt haben wir einen Timer , der rückwärts zählt, und wenn wir unseren Gegenstand verwenden, verlängern wir unsere Zeit Jetzt wird es nicht sofort aktualisiert, aber es wird im Grunde sofort aktualisiert , weil es jede Sekunde, jede Sekunde aktualisiert und es aktualisiert Gehen wir zurück zu unserem Timer. Wir werden eine Funktion benötigen. Und die Funktion wird sehr ähnlich sein die, die wir bei HP aktualisieren wollen. Ich werde das duplizieren. All diese Updates. Und statt der Bar werde ich die benutzen. Es gibt eine Bar. Es ist keine Variable. Gehen wir zum Designer. Lass es uns auswählen. Machen wir es zu einer Variablen. Wir werden es hierher bringen. Aber das gibt uns einen Prozentsatz gegenüber dem Zeitpunkt, an dem wir die Gesundheitsberechnungen durchführen. Aber für die Zeit müssen wir die Berechnungen hier durchführen. Wir müssen die aktuelle Uhrzeit angeben, ich benötige die X-Zeit. Wir werden diese beiden teilen. Wir bekommen den Prozentsatz und wir werden das hier verbinden . Wir werden das löschen. Und aus irgendeinem Grund bin ich mir sicher, dass dieser Wert derselbe wäre. Aber lass uns nachsehen. Lass uns nachschauen. Wir öffnen die Instanz. Also ja, dieser Wert ist der P-Wert. Das ist also unsere Parametervariable. Wenn wir das Hauptmaterial öffnen, können wir sehen, dass dies der Parameter ist , den wir füllen, und seinen P-Wert. Wir füllen also das P des Timers. Nein, sie wollen anderen die Schuld für Benennung von Konventionen geben, um ehrlich zu sein. Aber wie dem auch sei, wir brauchen diese Eingabe nicht mehr, weil wir hier aktualisieren. Und lassen Sie uns diese Funktion vor unserer Filiale verwenden. Wir werden diesen Aktualisierungs-Timer einstellen. Wenn wir nun wirklich, wirklich präzise sein wollen, könnten wir bei der Einstellung der aktuellen Uhrzeit für uns und er würde sofort aktualisiert werden. Es ist kein großes Problem, aber ich glaube nicht, dass es auch wichtig wäre Wir benutzen den Trank, wie das nächste Stäbchen, das sich anfühlen würde Weg. Gehen wir schummeln, um unseren Zaubertrank zu testen Wir werden dem Inventar einen neuen Gegenstand hinzufügen. Wir werden das I Five nennen. Ich glaube fünf, und ich werde eins sein. Und ich werde kompilieren und spielen. Lass uns alles speichern, bevor ich Play drücke. Das wäre uns egal. Wir würden damit nicht abstürzen. Wir haben keinen Code gemacht. Oh, und es funktioniert schon nicht. Oh, weil wir die aktuelle Uhrzeit auf nichts eingestellt haben. Also benutze ich das tatsächlich. Wir können sehen, dass es funktioniert. Aber wir müssen die aktuelle Zeit auf die maximale Zeit im Konstrukt setzen . Oder die andere Sache, die wir tun können, aber dann müssen wir es jedes Mal ändern , wenn unsere maximale Zeit 2:20 ist Wir können die aktuelle Zeit auf 220 setzen. Wir verwenden einfach die eingestellte maximale Zeit bis zur aktuellen Uhrzeit und beginnen mit dem Spielen oder Konstruieren, sodass wir nicht jedes Mal beide Werte ändern müssen. Wie dem auch sei, lassen wir es einfach so einfach. Ich denke, das ist es für diesen. Ich sehe dich das nächste Mal. Auf Wiedersehen. 90. Geschwindigkeitstrank und Partikel-Effekte: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir unseren Timer zu unserem Viewport hinzugefügt. Wir haben die Timer-Leiste hinzugefügt und das Event-Konstrukt hinzugefügt. Dabei handelt es sich um den Beginn des Spiels der Blueprints, das für jedes Ereignis festgelegt wird. Dabei handelt es sich um ein Ereignis, das zu einer bestimmten Zeit stattfindet Und wir haben ein benutzerdefiniertes Ereignis erstellt, das wir zu einem Ereignis zusammenfügen. Und wir haben dieses benutzerdefinierte Ereignis verwendet , um die aktuelle Zeit auf -1 Sekunde einzustellen. Dann haben wir unseren Balken anhand unseres skalaren Parameterwerts aktualisiert , dem HP-Wert entspricht, und wir haben den Prozentsatz unserer aktuellen Zeit zu unserer maximalen Zeit berechnet. Dann fuhren wir mit unserem Use-Event , um den Vorgang abzuschließen. Wir verhalten uns andersherum Wir haben zuerst das Use-Event erstellt, aber trotzdem, also haben wir das Use-Event erstellt, indem wir, wenn wir das I-Five-Objekt verwenden, was ein Timer-Teil ist, 60 zu unserer aktuellen Zeit hinzufügen, also 60 Sekunden Ja, im Grunde 60 Sekunden. Wir schalten zu unserer maximalen Zeit und dann aktualisieren wir unsere Timer, das ist also ein sofortiges Update und es wird nicht ein Tick und eine Sekunde gewartet Und dann verwenden wir den Code, wir für die Portionen haben. Ebenfalls. Es ist ein allgemeiner Code. Für all diese Aktionen wird es einen gemeinsamen Code geben, um zu überprüfen, ob wir noch andere Teile im Inventar haben und ob wir sie nicht aus unserem Inventar entfernen und den Tooltip aktualisieren müssen , über den der Mauszeiger bewegt Gehen wir jetzt und machen den Geschwindigkeitsanteil. Ich drei. Nein. Mir gefällt, dass ich das schleppe. Das Fehlklicken ist unglaublich. um das zu tun Gehen wir nun zu unserem Charakter und zu unseren Partikeln, . Nun, eigentlich Sets für ein Partikel. Ich habe mich schon darauf eingestellt. Wir werden den P Revenant Frosting Headport benötigen. Wenn das Sinn macht, ist das der Partikel , den wir brauchen Wir werden es auswählen und dann auf Hinzufügen klicken und wir wählen das Kaskaden-Kaskadenpartikelsystem, und es wird zu unserem Charakter hinzugefügt Jetzt werden wir es ein bisschen größer machen . Wir werden es auf zwei setzen. Und das ist in Ordnung. Und lass uns unser Partikel öffnen. Nehmen Sie ein paar Änderungen vor. Ich werde das Partikel herbringen. Wir wollen dieses verkohlte MC und wir werden die Lebensdauer von eins auf 2,5 ändern Ich werde dir gleich sagen, warum. Und im Grunde ist das so, wie lange der Partik, dieser Teil des Teilchens , hält . Wenn wir ihn schließen, können wir sehen, dass es sich um die eigentlichen Flammen Dieses Ding. Und wir werden auch nicht die Größe von Leben zu Leben ändern Ja, die Größe von Leben zu Leben, wir werden es deaktivieren. Es ist immer eine Größe. Andernfalls, wenn wir das nicht tun, lassen Sie mich das hier aufheben Vielleicht bevorzugen wir es so, aber ich nicht Es scheint, als ob wir mit Gas betrieben werden. Wir wollen nicht mit Gas betrieben werden. Wir wollen Buchmacher werden. Ich weiß nicht, etwas anderes. Also werden wir es nicht löschen, sondern deaktivieren, indem wir dieses X hier drücken, sodass es deaktiviert wird, und jetzt ist es eher wie eine Aura, mehr wie eine tatsächliche Spur, auf der wir leben Wenn wir statisch sind, zeigt das auch , dass wir das aktiviert haben Das wäre von der Partikelseite. Lass uns das programmieren. Eigentlich noch eine Einstellung zum Artikel. Gehen wir zurück zum Partikel. Wir wollen nicht, dass es automatisch aktiviert wird. Also werde ich prüfen, ob es aktiviert ist, und ich werde die automatische Aktivierung deaktivieren. Wir wollen das aktivieren. Wir wollen nicht, dass es ein konstanter Zustand ist. Ich kompiliere und speichere und lass uns zu unserem Gameplay zurückkehren. Nicht unser Gameplay. Schon wieder mein Fehler, wir müssen beim Charakter bleiben. Gehen wir zum Ereignisdiagramm und erstellen wir irgendwo benutzerdefinierte Ereignisse. Ich werde hier ein benutzerdefiniertes Ereignis erstellen. Und nennen wir es, ich weiß es nicht. PD. PD ist ein guter Name. Holen wir uns also unseren P Revenant Frosting Headport und lassen Sie uns ihn aktivieren müssen wir auch, Das müssen wir auch, wir müssen es nicht aktivieren. Wir brauchen nur. Das ist nur ein Aktivierungsknoten. Wir müssen ihn nicht auf aktiv setzen, und wir werden ihn auch zurücksetzen Jetzt machen wir auch ihre Sichtbarkeit, Iden, und lassen Sie uns sie einschalten, nur für den Fall , dass diese Sichtbarkeit hier ist. Nur für den Fall, dass es nicht endet und nicht richtig startet, also nicht abrupt startet Es sieht besser aus. Was ich zum Beispiel meine, sind technische Details. Lass uns wieder malen gehen. Ich meine, wenn wir unseren Charakter haben und unsere Wirkung hier endet. Nur für den Fall, dass die Aktivierung nicht von hier aus beginnt. Für einen Frame sehen wir das. Wir wollen das nicht sofort sehen , wir wollten, dass es sich nach und nach erweitert. Deshalb spielen wir mit der Sichtbarkeit, setzen sie zurück und schalten sie dann und dann müssen wir unsere Charakterbewegung verwenden Was ist die Bewegungskomponente eines Charakters? Es ist spezifisch für Charakter-Blueprints. Dieser Bauplan hat mich zum Beispiel sichtbar gemacht. Gehen wir zu den Klasseneinstellungen. Und sehen Sie, die übergeordnete Klasse ist der Charakter , und wenn wir einen Plan erstellen, fragt er mich, ob es ein Schauspieler ist Ist es eine Stecknadel? Ist es ein Charakter? Nun, Charaktere und einer unter Teich, in dieser Liste in der Hierarchie nicht aufgeführt, weil Charaktere Teiche sind, aber Teiche sind nicht alle Bei einigen Teichen kann es sich um Charaktere handeln. Es ist wie bei der Sache mit dem Van-Diagramm, was bedeutet, dass der Charakter im Grunde vom Teich erbt , Pond nicht Und das Besondere an dem Charakter ist die Bewegungskomponente des Charakters, die im Grunde dazu dient, die Bewegungslogik von drei D-Charakteren zu handhaben zu Es kann für zwei D verwendet werden, aber es wird ziemlich schwierig sein, vielleicht ein paar Plug-ins benötigt. Jedenfalls. Also, das, was für unsere Charakterbewegung verantwortlich ist , hat eine Menge Einstellungen, unendlich viele Einstellungen, wenn man so will. Wirklich. Wie dem auch sei, was wir von all diesen Einstellungen erwarten, ist unsere maximale Gehgeschwindigkeit. Standardmäßig haben wir also 600, und ich finde, es ist eine nette Geschwindigkeit. Aber wenn wir schnell sind, sollten wir es auf etwas Größeres einstellen Also lassen wir Max laufen. Geschwindigkeit. Sagen wir bis 900. Dann setzen wir in der Regel einen Aufschub ein. Wir könnten zum Beispiel eine Verzögerung festlegen, und nach, sagen wir, 14 Sekunden, setzen wir die maximale Bewegungsgeschwindigkeit auf 600 zurück und setzen die Sichtbarkeit des Partikels auf zwei zurück. Wir könnten auch festlegen, dass wir deaktivieren oder den anderen Knoten, den wir nicht verwendet haben, deaktivieren oder verwenden, act auf negativ setzen und ihn dann zum Beispiel zurücksetzen. Wir könnten aber auch nichts tun, aber mit diesem Partikel würden nur sehr wenige Ressourcen zur Verfügung stehen. Hängt auch vom Partikel ab. Also lass uns deaktivieren. Nur um ein paar Ressourcen zu sparen. Nun, diese Verzögerung hier würde als Tor dienen. Als ob wir das durchmachen, setzen wir auf 900. Wenn die Verzögerung läuft, wird sie erst weiterlaufen, wenn die Verzögerung beendet ist Dann kann sie erneut ausgeführt werden. Wenn wir jedoch eine verzögerbare Verzögerung verwenden, fügen wir sie auf 14 ein. Das heißt, wenn wir einen Trank trinken, löst die Verzögerung den Countdown erneut aus. Also lass uns das machen. Also im Grunde, wenn wir immer wieder festgelegte Zaubertränke finden, lösen wir diesen 14-Sekunden-Countdown immer wieder neu Wir werden keine zusätzliche Zeit hinzufügen, wir werden nur die 40 Sekunden erneut auslösen Lassen Sie uns dieses Ereignis nun von unserer Seite aus aufrufen. Oder hier. Wir werden von der Besetzung zwei BP-Spieler runter bekommen, wir werden schnell und wir werden Speedy hier mit der Gruppe verbinden Wir werden kompilieren und speichern und dann Cheaten übergehen Lass uns in unseren Spielmodus gehen und einen Inventargegenstand ändern. Lassen Sie uns zwei auf drei setzen, und I drei hat standardmäßig zwei Verwendungszwecke. Lass uns spielen. Und ich bewege mich normal. Ich öffne Inventar, Eis, blaue Flasche, ich benutze eine und ich habe Speedy 13 Sekunden, 14 Sekunden. Lassen Sie uns das Ganze sogar erneut auslösen. Ich benutze es wieder und jetzt sollte es für Sekunden sein Was ist der Aufzug? Oh, Mäuse. Gleich hier drüben, Aufzug hier. Mäuse labyrinthen Dungeon. Oh. Das war's für diesen. Das nächste werde ich dir vorsingen. Auf Wiedersehen. 91. Wuttrank und Partikel-Effekte: Hallo und willkommen im Game Design Workshop, ihrer echten Engine Five-prozeduralen Dungeon-Action-Bz-Schöpfung Zuvor haben wir unserem Charakter unser schnelles Event hinzugefügt. Ein Ereignis, durch das sich unser Charakter schneller bewegt. Zu diesem Zweck haben wir unserer Charakterklassenkomponente, dem Revenant Frosttor, ein Partikel hinzugefügt unserer Charakterklassenkomponente, dem Revenant Frosttor, . Und wir haben ein paar Dinge am Partikel geändert, wir haben die Lebensdauer geändert und wir haben die Größe nach Leben deaktiviert Es macht also eher den Effekt , dass es sich mit uns bewegt, dass wir eine Spur hinterlassen Danach haben wir weitergemacht und eine Kette von Ereignissen erstellt Wir haben das Partikel aktiviert, weil wir es in den Details so eingestellt haben, dass es nicht automatisch aktiviert wird. Dann haben wir die Sichtbarkeit auf true gesetzt, genauso wie wir sie auf false gesetzt haben, weil wir nicht wollen, dass wir zum Beispiel im letzten Zustand des Partikels einen Frame sehen wollen, der von der vorherigen Aktivierung stammt, wie er nicht aktiviert wird , der von der vorherigen Aktivierung stammt, wie er nicht aktiviert . Jetzt haben wir die Bewegungsgeschwindigkeit unseres Charakters auf 900 geändert und dann mit einer verzögerbaren Verzögerung, was bedeutet, dass wir einen weiteren Trank trinken und die Zeit hier neu einstellen können weiteren Trank trinken und die Zeit hier neu einstellen Wir haben die Geschwindigkeit nach der Verzögerung wieder auf 600 geändert, was die Sichtbarkeit auf eingestellt Es sollte falsch sein, mein Fehler, und wir haben das Partikel deaktiviert Danach gingen wir zu unserem Gameplay-Widget und riefen das Speedy-Event über unsere Charakterreferenz auf und verknüpften die Funktion mit dem Rest dem Code, der die Anzeige verwaltet und aus dem Inventar entfernt und unsere Widgets aktualisiert Nun, eine Sache, die mir aufgefallen ist, ist, dass unser Speedy sogar zwei Ladungen hat, aber nicht so viele. Und basierend auf unserem Code würde es nicht funktionieren. Wenn wir es zum Beispiel auf Vorrat setzen würden, könnten wir mehr Zaubertränke auswählen und sie endlos verteilen Und wenn wir tatsächlich einen benutzerdefinierten Code erstellen müssen, erstellen müssen der besagt , dass, wenn es der Artikel I drei ist, dann die Bestände anzeigen, dann die Bestände anzeigen, was wir nicht tun werden, wir werden es einfach so belassen Oder wenn du willst, können wir auch zu unserem Speed-Trank in unseren Dt-Items gehen unserem Speed-Trank in und die Menge auf eins setzen, und das wäre alles Es ist behoben. Wir müssen keine Zahl sehen. Und jetzt nehmen wir die I Four, das ist der Trank , der alles zerstören wird Nun, es wird tatsächlich Schaden anrichten, aber der Schaden wird so groß sein , dass er alles um uns herum zerstören wird alles um uns herum zerstören Und mit allem meine ich nicht die Karte. Wir haben keine Detracti-Karte. Ich meine, alle Feinde und die Türme zu töten, was wir Höllentor nennen Um das zu tun, brauchen wir ein weiteres Teilchen. Wählen wir die Karte diese nette Explosion, bringen wir sie her. Wir haben diese nette Explosion. Sie ist im Grunde genommen für eine andere Skala, aber wir werden sie vergrößern und sie wird für unsere Zwecke in Ordnung sein. Also gehen wir zu unserem Charakter. Und während wir ausgewählt sind, wir eine Kaskade hinzu Ops. Was ist los? Ja, du solltest nicht Anzeige auf Anzeige tippen. Es funktioniert einfach nicht und wir werden es automatisch aktivieren. Lassen wir die automatische Aktivierung eigentlich stehen. Wir rechnen mit Größe und Größe. Lassen Sie uns die Skala auf drei ändern. Wir wollen, dass es ein großes Gebiet betrifft. Lassen Sie uns das tatsächlich mit einem Schlüssel testen. Was wir also tun werden, lassen Sie uns ein weiteres benutzerdefiniertes Ereignis erstellen. Diese ganze Bandbreite. Und holen Sie sich unseren Artikel oder diesen, einen und sagen Sie aktivieren und setzen Sie das auf wahr. Jetzt gehen wir zu einem Controller, klicken mit der rechten Maustaste und verwenden, sagen wir, die Basistastatur. Base Bar, da sind wir. Holen wir uns unsere Charakterreferenz. Wir haben keine. Egal, geh nach Hause. Charakter von DW in pure Besetzung oder Wut umwandeln. Und lass uns kompilieren und spielen. Und wir wollen, dass unser Partikel k die Größe einer Kachel hat. Aber wenn ich die Leertaste drücke. Ja, das sieht aus und über d. Das sieht nach der Größe aus, die wir wollen. Nun zur Reichweite, zum Schadensbereich, zum Beispiel, wie wir Schaden anrichten werden. Wir werden eine Kollisionskugel verwenden. Also eine Kollisionsangst. Sphärenkollision. Nein. Nein. Ich werde es verstecken, um das Spiel zu stürzen. Und dann werde ich den Radius auf, sagen wir, 400 erhöhen . Ja, 400 scheint besser zu sein. 500 scheint besser zu sein. Aber wir können das überprüfen, da wir die Sichtbarkeit ausgeblendet haben. 500 sind ein bisschen zu viel. Also lass es uns auf 400 ändern. Lass uns nochmal spielen. Ja, ich denke, visuell sind wir innerhalb dieser Grenzen Es spielt jedoch keine Rolle , wie weit wir vom Kreis entfernt sind, sondern von der Läsion, wir werden überall den gleichen Schaden anrichten Das scheint also in Ordnung zu sein. Aber wir werden es nicht so stehen lassen. Wir werden es nicht so verwenden, wie es ist. Wir wissen, dass der Geschwindigkeitsradius 400 ist. Wir werden ihn auf 0-400 ändern. Wir können die Entfernung sogar von der Stelle aus erhöhen, an der wir geheizt haben Wir werden diesen Code nicht machen, aber er kann leicht gemacht werden. Wenn wir eine Kugel haben , deren Größe zunimmt. Jetzt werden wir ihre Kollision einstellen. Um einige Dinge zu ignorieren. Wir werden es kundenspezifisch machen. Wir werden Sichtbarkeit, Kamera, Weltstatik, nicht Weltdynamik ignorieren . Physikkörper, lassen wir den Physikkörper auch aktiviert und zerstörerisch sein. Lassen Sie uns eigentlich auch die Weltdynamik schließen. Was ist unser Höllentor? Lass mich mich daran erinnern. Wir gehen zu Blueprints. Wir werden zu Requisiten für Feinde gehen. Wir gehen zum Höllentor und suchen uns eine eigene Kapsel Ist eine Damas-Kollision. Wir gehen zu den Kollisionsvoreinstellungen. Es ist eine Weltdynamik. Wir wollen also die Weltdynamik nicht ignorieren. Also werden wir es überlappend belassen. Was die Physik angeht, lassen wir die Boxen mit unserem Wutanteil bewegen Das Einzige, was wir jetzt ändern müssen, ist von der Abfrage zur Kollision. Fangen wir ohne Kollision an. Und als wir kurz davor sind, es zu erweitern, sagten wir, es wäre dann Kollision. Sagen wir Radius, sagen wir mal eins, nicht Null. Lass es uns auf eins setzen. Und jetzt gehen wir zurück zu unserem Code und fügen eine Zeitleiste hinzu. Keine Zeitleiste. Tut mir leid. Zuerst müssen wir die Kollision aktivieren. Jetzt holen wir uns die Kugel. Lassen wir es bleiben, um Trank Collision zu bekommen. Und Kollision aktiviert. Und entscheide dich dafür, nur in Bezug auf die Physik zu variieren. Bei, wir wollen Physik, weil wir beschlossen haben, die physikalischen Dinge darauf zu legen, und jetzt brauchen wir eine Zeitleiste. Also Zeitleiste. Lass uns reingehen. Lassen Sie uns einen Flow-Track von 0,31 und Null, Null erstellen 0,31 und Null, Null Natürlich, dass wir den letzten Keyframe verwenden. Das nächste wäre, zu Event Graph, Update zu gehen. Lassen Sie uns unsere Kugelkollision, den Bewertungstopf und den Kugelradius ermitteln. A ist mit dem Update verbunden. Lasst uns mit dem Alpha unseres neuen Trucks von 12400 lernen. Jetzt, wenn wir fertig sind, werden wir diese Kollision wieder haben, dass die beiden im Grunde keine Kollision hatten Und wir werden auch den Kugelradius einstellen. 21. Was passiert nun, wenn unsere Wuttrank-Kollision kollidiert Lassen Sie uns zu unserem Anfang über die Runde gehen, unserem Wuttopf. Lasst uns etwas Platz schaffen. Nimm das hier. Hinterlassen Sie einen Kommentar dazu. Lass uns Pot wüten. Lasst uns einen Kommentar zu diesem Colli schreiben. Und das war's vorerst. Oh. Lass uns unseren anderen Komp auswählen und fragen, ob es eigentlich nicht der andere Spieler ist, der andere Schauspieler Denn jetzt werden wir nach KI suchen. Wir sind uns also sicher, dass KI nur die Kollision für ihren Körper hat und sonst nichts. Nun, die Kapselkomponente. Also werden wir nach einem Schlepper suchen. Wenn der Schauspieler zerrt hat, gehen wir in die Verzweigung, um das Wenn zu machen, und dann holen wir unseren Schauspieler und fügen Schaden zu . Und Schaden werden wir anwenden, sagen wir zehn. Wir werden die anderen Knoten nicht verwenden, und das wäre unsere Zaubertrankkollision, Zaubertrankkollision. Lassen Sie uns dieses Ereignis nun in unserer Use-Funktion aufrufen. Oder ist vier. Wir rufen von oben nach unten auf, die H-Funktion hängt eigentlich nicht von der Funktion und verbinden sie dann hier drüben. Lassen Sie uns einen Cheat erstellen, indem wir vier von eins setzen. Gehen wir zu unserem Controller und löschen unseren Demag. Um ehrlich zu sein, gehen wir zu unserem Höllentor und gehen zu unserem Schauspieler Tug of Defaults in Hell Gate Tug, und lassen Sie uns den Tug und lassen Sie uns Aber wir haben kein Gesundheitssystem auf unserem Turm. Wir sollten das nächste Mal machen. Lass uns einfach unseren Teil testen. Ein Questtrank. Es explodiert, es verschwindet und alles hat seinen Sinn Das ist voll. Das war's für diesen. nächste Mal sehe ich dich . Auf Wiedersehen. 92. Kampfmusik und Hellgate-Kampfmodus: Hallo und willkommen zum Design-Workshop und zum Kurs „Real Engine Five“, „ prozedurales Dungeon“, „ Action-Rollenspiel“ und „Kreation Zuvor haben wir die Funktion „ Wuttrank“ hinzugefügt. Wir haben unserem Charakter die Wutkollision hinzugefügt Dabei handelt es sich um eine Kugel, die mit einer Zeitleiste vergrößert wird mit einer Zeitleiste vergrößert Wir haben die Restmarkierung hinzugefügt und ein Teil, den wir ebenfalls vergrößert haben, ist toto-aktivierend Ja, es sollte nicht automatisch aktiviert, kompiliert werden und dann haben wir die Funktion abgeschlossen, das Ereignis Wut, das unser Partikel aktiviert, sagt, dass die Kollisionsaktivierung für den Wuttrank aktiviert wird, verwendet eine Zeitleiste, um die Kugel zu vergrößern, und dann schalten wir es wieder aus dann die Kugel kollidiert, wenn sie mit einer Kugel kollidiert, verwenden wir den Tag E für Feind Wenn der andere Tag-Akteur die Markierung E hat, verzweigen wir uns und fügen Schaden zu. Danach gingen wir zu unserem Gameplay über, nannten dieses Ereignis, wenn vier Gegenstand vier verwendet wurden, und verknüpften es mit unserer Funktion, unserer Ereigniskette, aber wir haben den Trank aus dem Inventar entfernt Danach sind wir zu unserem Haupttor gegangen und haben das Etikett E angebracht. Aber wir haben entschieden, dass wir das Höllentor nicht benutzen können. Wir können das Höllentor noch nicht testen , weil es keinen Code hat Also fangen wir an, etwas Code auf dem Haupttor einzugeben. Aber bevor wir das tun, wollen wir noch einmal erklären, was wir hier haben, was wir geschaffen haben. Wir haben also zwei statische Durcheinander, die den visuellen Teil des Haupttores repräsentieren, und ein Partikel das auch den visuellen Teil repräsentiert Und ein Punktlicht, um das alles ein bisschen leuchtender zu machen das alles ein bisschen leuchtender zu Wir könnten einige Einstellungen am Punktlicht ändern, lassen Sie uns das in Lumen speichern Sagen wir es auf 150. Sagen wir es zu einer rötlichen Farbe. Sagen wir es zu einem rötlichen Sendschreiben. Es macht 1011. Mal sehen, wie es aussieht. Große Veränderung. B. Die Reichweite des riesigen Sortiments. Reichweite 600. Oh, ich habe die Farbe nicht geändert. Was ist hier passiert? Oh, was bin ich? Ich sitze in einem riesigen Terrassenlicht. Ja, das passiert jetzt nicht. Ja, kannst du diesen Teil löschen? Wenn ich ein Sendschreiben in Licht ändere, sehe ich oft wie Nein aus. Ja, lassen Sie uns die Dämpfung auf ein Hundertstel reduzieren und ein Licht auf etwas anderes einstellen und ein Licht auf etwas 0,1 grün und 0,1 blau. Testen. I. Die Wände leuchten auch rötlicher. W Ich sehe es auf Dreck, sieht vielleicht besser aus. Nochmals, wir haben es. Könnte ein bisschen intensiver sein, aber ich denke, es ist in Ordnung. Gehen wir jetzt zurück zum Höllentor. Lass uns auswählen. Aber bevor wir mit dem Programmieren beginnen, sollten wir uns daran erinnern, was wir hier gebaut haben. Wir haben ein statisches Netz mit einem statischen Netz als Kind und ein Partikelsystem. Das ist unser visueller Teil. Was darstellt, ist der visuelle Teil des Höllentors. Dann haben wir ein Punktlicht, dessen Optionen wir ändern sollten , sagen wir, einen Generationsradius auf 700 Sagen wir das zu uns und 150 und ändern wir die Lichtfarbe auf dunkelrötlich Mit einer in der Wand, also bitte. 05, richtig. Und ich denke, das wäre für das Licht. Und dann haben wir eine Kapsel. Das Licht, wir müssen es rund um den Begriff etwas leuchtend machen rund um den Begriff etwas leuchtend In der Kapsel befindet sich unsere Wärmebox, aber wir können den Spieler treffen, weil wir beide so eingestellt haben , dass es keine Kollision Und die Kapsel hat Kollisionen, weil sie eine Kapsel ist, und das testen wir. Wir können das Bit optimieren, tut es aber nicht. Dann haben wir eine Kugelkollision, aber wir haben ihre Größe noch nicht erhöht. Bei dieser Kollision wird erkannt, ob sich der Spieler in Schussreichweite befindet oder nicht. Wir optimieren die Kollision und lassen das Set unwichtig, weil wir uns überschneiden. Setzen wir es auf Benutzerdefiniert und ignorieren wir alles außer Home. Lassen Sie uns nun auch diese beiden statischen Netze so einstellen , dass sie keine Schatten werfen Wir wollen nicht, dass sie Schatten werfen. Und wir haben das Spiel so eingestellt, dass unsere rotierende Bewegung auf den statischen Wellen aktualisiert, sodass sie sich drehen. Wenn wir nun kompilieren und speichern, beginnen wir mit unserer Kollision. Als erstes müssen wir den Kugelradius berechnen. Lassen Sie uns dafür sorgen, dass Hidden Game nicht wahr ist. Lass uns kompilieren. Lassen Sie uns den Standardradius auf, sagen wir, 100 setzen. Wie groß das ist. Außerdem sollten wir auf unseren Spieler zu unserer Wut Pot Collision gehen, dass das versteckte Spiel wahr ist, weil ich es nicht gedreht habe. Wir schalten es auf die Größe aus, aber wir haben es nicht eingeschaltet, um es wieder zu verstecken. Oh, ich werde den Charakter kompilieren und speichern. Lass uns spielen gehen. 700 scheint ein bisschen übertrieben. Es erwischt uns nicht, wenn wir spawnen, aber wenn wir uns bewegen, fängt es an Nun, es könnte damit beginnen, dass die Sicht ein Problem sein wird, aber es wird anfangen, uns anzugreifen Nun, sagen wir es ein bisschen kleiner. Wir wollen eine Kachel und vielleicht 600. Kachel plus ein bisschen von einer Kachel. Fast 550, glaube ich, werden der Schlüssel sein. Also 550 spielen ect. Das scheint nett zu sein. Aber es wird uns dadurch nicht angreifen. Es ist ein netter Ring. Lass es uns dabei belassen. Geh zurück. Und lass uns etwas mit dieser Kollision machen. Wir wählen die Anfangs-Überlappung. Wir werden die andere Komponente fragen , nämlich P für unseren Spieler. Ich werde einen Ast anlegen. Stellen Sie die Frage und dann erstellen wir eine Variable. Nennen wir das Feuer. Und ich werde es für wahr erklären. Jetzt brauchen wir natürlich eine Endüberlappung von der Kugel. Und wir werden dasselbe fragen und es wird falsch sein. Als Nächstes sollten wir unser Material für beide statischen Nachrichten ändern. Ordnen Sie das Material so an , dass es das ist, was wir tatsächlich auf dem Boden haben und es leuchtet und wieder normal CM-Instanz. Ich glaube , es ist der dritte. Und wirklich die Hölle. Das werden wir im Spiel sehen. Aber ja, ich denke, das ist es. Wie dem auch sei, das nächste, was wir tun sollten, ist zu einer Überschneidung zu übergehen und das wieder zur Normalität zu bringen, das wäre der G M. Jetzt wollen wir auch die Musik ändern. Wenn wir uns im Kampf befinden, sollten wir darüber informiert werden. Das ist Kampf o. Also lasst uns zu unserem Charakter gehen und eine Audio-Audiokomponente erstellen eine Audio-Audiokomponente Lass uns Eis schneiden. Dafür wollen wir die Variablenschleife dafür. Diese goldene Lightning-Tiger-Schleife. Wir wollen nicht, dass es automatisch aktiviert wird, also werden wir die automatische Aktivierung deaktivieren. Und wir werden ein benutzerdefiniertes Ereignis erstellen. Und wir werden das Play-Action-Autyp nennen. Action-Musik. Etwas Platz. Nun, die erste Frage ist, läuft die Musik? So viel darüber. Wenn es dann nicht läuft, werden wir einblenden. Lass uns hier Pings benutzen. Lassen Sie uns eine Pad-Dauer von 2 Sekunden und die Startzeit bei zwei Das ist eine Zwei, weil es ein langes Intro hat und wir ein bisschen weiter anfangen wollen Jetzt werden wir eine Gala veranstalten und Durchbruch mit dieser Verzögerung verbinden Also, wann immer wir kollidieren, und wenn wir tatsächlich angegriffen werden, wir dieses Ereignis ausrufen Wenn es läuft, wird es einfach erneut ausgelöst, zum unsere Abklingzeit, um den Kampf zu beenden Stellen wir diese beiden auf 15 Sekunden ein. Und ich werde diese beiden Namen umbenennen: N braucht ein N, vielleicht ein großes A. Oh, was machen wir nach der Verzögerung? Wir werden unseren Actionfilm ausblenden. Action-Musik. Es war ein Film, der so einfach war. Es wäre toll, nicht wahr? Ich werde hier zwei hinzufügen, ohne Dauer. Ich werde kompilieren und speichern, und das ist so gut wie fertig. Oh, lass uns zu unserem Haupttor kommen. Und jetzt brauchen wir einen Hinweis auf den Charakter , den wir haben. Es ist der andere Schauspieler hier drüben. Ich werde zum Pop-Charakter. In reine Besetzung umgewandelt. Ich werde Action-Musik spielen. Ich werde das hier verbinden. Jetzt können wir testen, wann wir in Reichweite sind und wann nicht. Oh, lass uns das überprüfen. Wir haben keine Musik. Wir suchen das Höllentor hier drüben. Oben drauf. Es ist in Ordnung. Es spielt unsere Musik. Testen wir es jetzt etwas schneller, denn 15 Sekunden, ich will jetzt nicht warten, und das wäre Zeitverschwendung. Gehen wir also zu unserem Player. Lassen Sie uns den gesetzlichen Wert auf sagen wir 3 Sekunden einstellen. T. Es gibt kein Höllentor. Ich spann mich auf andere Weise. Einer da drüben. Richtig? Das Material hat sich geändert. Lass uns die Musik überprüfen. Eins, zwei, drei, aufgehört. Lass uns rein und raus gehen. Ständig. Jep. Also, unser Mechaniker arbeitet Und ich denke, das ist ein guter Haltepunkt für diesen. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 93. Hellgate-Gesundheitssystem und Tod: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor haben wir die Ereigniskette erstellt, um zu überprüfen, ob sich unser Charakter in Reichweite unseres Turms befindet Nein, wir haben geprüft, ob es die Komponente P hat, wir prüfen, ob es sich um eine Kapselkollision unseres Charakters handelt, und wir haben eine Variable darauf gesetzt, die wir Feuer genannt haben Dann haben wir das Material durch ein Material ersetzt, das von leuchtend zu normal wechselt , und dann haben wir das wieder rückgängig gemacht Und wir haben die Spielmechanik für Action-Musik in unserem Charakter eingeführt, die mit einem Fading zu spielen beginnt oder ausgeblendet wird, wenn eine Zeit Setzen wir das auf 15 zurück . Könnte lang sein. Setzen wir es zurück auf zehn. Und dann werden wir ausgeblendet, da 10 Sekunden vergangen sind und wir nicht getroffen wurden, also wird es ausgeblendet Lassen Sie uns nun mit unserem Gesundheitssystem Health Gates weitermachen. Wie wir für den Charakter verwenden, ist jeder Schaden angesagt. Lassen Sie uns das kommentieren. Eine Musik. Wie wir jedes Schadensereignis für unseren Charakter verwenden, werden wir auch für unseren Turm verwenden, da wir Schaden zufügen, wenn wir den Trank verwenden und wenn wir anfangen zu schießen Ein Schadensereignis, und wir benötigen natürlich zwei Variablen, nämlich die aktuelle Gesundheit und die Mx-Gesundheit, sind ganze Zahlen Keine ganzen Zahlen. Ich meinte Floats Dieser Dezimalpunkt ist wichtig und erleichtert die Divisionen Jedes erlittene Schadensereignis. Wir müssen die Schäden aus unserer aktuellen Gesundheit entfernen, nicht aus unserem M. Wir werden ein Minus machen Wir werden uns verbinden. Das hier und das hier, weil wir von unserer aktuellen Gesundheit etwas abziehen Ich werde die Ladung zusammenpacken. Ich werde unseren aktuellen Gesundheitszustand einstellen und die Klemme wäre natürlich minimal auf Mx. Bei Spielbeginn. Stellen wir MC ein. Lassen Sie uns aktuell auf Mx setzen. Lassen Sie uns einen Wert für den MC-Zustand festlegen. Sagen wir mal fünf Gesundheit. Wir müssen kompilieren. Von Gesundheit. Als Nächstes. Wir werden nur eine Frage stellen. Gehen wir zurück zu unserem Schaden. Wir werden einen Zweig anlegen und prüfen, ob dieser gleich oder kleiner oder gleich Null ist . Weil wir unsere Wut haben und unser Medienangriff mehr als einen Schaden anrichten wird. Unser Schießen wird einen Schaden anrichten. Wir wollen auch prüfen, ob weniger als Null vorliegen, auch wenn wir klemmen, was das überflüssig macht. Aber wie dem auch sei, wenn wir nicht klemmen, sollten wir zuerst A machen. Wenn wir nicht null Gesundheit haben, tm. Nein, wir werden es einmal tun. Nein, tut mir leid, ich komme voran. Das werden all unsere Feinde sein, die Hunde. Bevor wir es einmal tun, denn wir machen eins. Machen wir etwas kniffliges mit unserem Helgate. Wir werden die Größe unserer Maschen reduzieren Es scheint also, dass es immer kleiner wird , wenn wir es angreifen Wir werden uns für diese beiden Schlamassel entscheiden. Eigentlich brauchen wir nur das übergeordnete, das ist Mesh One. Wir löschen das andere und wir werden alle auf drei D D setzen , weil wir mit 0,5 beginnen. Lassen Sie uns das tatsächlich als Variable speichern und mit dem Spielen beginnen. Als Wandwaage. Wir werden für diese Variable werben. Wir werden sie Original nennen. Hier. Nun, was wir für das Set Healing World tun werden, werden wir larpieren Warum lassen wir, weil wir Original durchschauen werden, was in unserem Fall B wäre, und ein Fünftel davon Wir werden uns teilen. Wir werden daraus eine Ganzzahl machen. Wir werden es durch 555 teilen. O Alpha wäre der Prozentsatz unserer Gesundheit und unseres aktuellen Gesundheitszustands. Wir werden diese beiden teilen. Da wir also mit dem vollen Prozentsatz beginnen, würde das von B nach A gehen, weil jeder Schaden den Alphawert reduziert. Und jedes Mal wollen wir ein Fünftel der ursprünglichen Skala ändern. Und die, die werden wir für später verlassen , wenn wir etwas KI haben. Nun, was machen wir wenn wir das erreicht haben, um ein maßgeschneidertes Event zu erstellen. Wir werden das Tod nennen und wir werden es von hier aus nennen. Lasst uns jetzt den Tod fühlen. Was wir machen werden, ist auf einem Messgerät vor Ort. Und der Standort wäre unsere Lücke am Standort P. Das P-Meter wäre eine Explosion. Wir haben also die P-Explosion und es wird eine B-Skala nach oben sein, fünf. Bleiben wir bei der automatischen Zerstörung und automatischen Aktivierung. Als Nächstes müssen wir unseren Fliesenboden holen und sein Material neu einstellen, nicht sein Material. Wenn wir zu unserer Fliese gehen, wenn wir ein Tor haben, haben wir ein Alter auf dem Boden Wir wollen den Sage verschwinden lassen. Dazu benötigen wir eine Kachelreferenz. Also werden wir an unserem Haupteingang eine Tile-Variable erstellen, um sie Pile zu nennen. Es wird vom Typ P-Kachel sein. Ich werde eine Objektreferenz kompilieren und speichern, und wir werden in unser Labyrinth gehen, das wir erzeugen. W ist unser Hier ist er, der Labyrinth-Generator. Wenn wir die Vordertore an unseren Requisiten spawnen, Besitzer, das ist ja, dieses, das komplexe Wir müssen die Variableninstanz editierbar machen und sie beim Spawnen verfügbar machen. Also, das ist nicht unser Labyrinth, die Requisite, in der wir spawnen, Habe ich das kompiliert, als wir das Höllentor spawnen? Ich habe nicht kompiliert. Wir wollen das aktualisieren, und jetzt haben wir unsere Kachel. Also, was verbindest du für die Kachel? Nun. Wir haben es hier drüben, dass wir die Koordinaten nehmen. Also werde ich das hier verbinden. Und wir werden kompilieren und speichern, und jetzt haben wir unseren Verweis auf unsere Kachel. Also holen wir uns unsere Kachel, die Kachel, wir bekommen den Boden und Material oder Element Null, denn auf Element Null haben wir das C und wir werden es auf leer setzen. Es wären weitere Maßnahmen in Bezug auf die KI erforderlich. Aber wenn wir unsere KI haben, werden wir fertig sein. Wenn wir das T angreifen, setzt die KI es im Grunde die KI automatisch auf Angriff, sodass sie nach dem Spieler sucht und den Spieler angreift. Und wenn der Tod eintritt, werden wir es quasi freischalten. Wir werden ein Verhalten erzeugen, dass sie weglaufen, und vielleicht ändern sie dich irgendwann zurück und oder sie fangen an, zufällig irgendwo zu patrouillieren, aber wir werden sehen, dass wir seit unserem Tod Wir müssen tatsächlich auch Schauspieler vernichten. Denn wenn wir den Schauspieler nicht zerstören , ist unser Tor immer noch da. Jetzt kompilieren und speichern. Wir haben einen Schadensbereich , der dieses Tor zerstören kann. Lass es uns testen. Bum. Ja, funktioniert. Ja, großartig. Ich denke, das wird für diesen sein. Ich sehe dich das nächste Mal. Tschüss. 94. Hellgate Bullet-Animations- und Targeting-System: Hallo und willkommen zum Game Design Workshop im Rahmen der Engine Five Procedural Dungeon Action Pz Zuvor waren wir mit unserer Hell Gates Health-Mechanik fertig unserer Hell Gates Health-Mechanik Wir haben das Ereignis „Jeder Schaden“ hinzugefügt und zwei Variablen erstellt MX Health und Carrier Health Wir haben das Verfahren befolgt, um Zustand abzustrahieren und zu überprüfen, ob wir tot sind oder nicht. Wenn wir tot sind, starten wir unser benutzerdefiniertes Death-Event, das einen E-Meter erzeugt, das Material des Bodens auf Null bis Null setzt, das CG-Material, und dann unseren Schauspieler zerstört Wenn wir nicht tot sind, reduzieren wir unsere Größe um ein Fünftel , was wir nicht überprüfen können, weil wir es eigentlich nicht überprüfen können, wenn wir den Schaden an unserem Erbteil ändern , wenn wir den Schaden an unserem Erbteil Wenn ich also den Schaden mit beziffere, wie viel Gesundheit haben wir? Wir haben fünf Lebenspunkte. Wir machen einen Schaden daraus und setzen die Verzögerung auf 2 Sekunden. Wir werden das ein bisschen endlos machen. Aber wir können die Spielzeit jederzeit unterbrechen , wann immer wir 2 Sekunden dafür haben wollen. Lasst uns ein Höllentor finden. Es gibt kein Höllentor. Es ist gut, dass es manchmal ohne Höllentor anfängt. Eine Portion Salbei auspressen. Holen Sie sich Nein, tut es nicht. Weil das nicht ratsam ist. Lassen Sie uns vorübergehend für diese Verbel werben. Nachdem wir nach der Filiale gesucht haben. Sonst steht da nichts. Ich gehe hier so hin. R. Lass uns 12, drei überprüfen. Ja, es wird immer kleiner und enger. Also funktioniert es. Kehren wir zu unserem Charakter zurück. Lassen Sie uns diese Variable löschen. Verbinden wir das mit. Lass uns das verzögern. Lassen Sie uns die Variable auch aus Variablen zusammensetzen, kompilieren und speichern und zurück zu unserem He-Gate. Machen wir jetzt weiter mit dem Haupttor. Jetzt fange ich an zu spielen. Wir werden ein paar Sachen erledigen müssen. Aber zuerst müssen wir die Kugel erzeugen , die das L-Gate hervorbringt. Wir gehen zu Blueprints, wir werden einen neuen Ordner erstellen. Nennen wir das Labor B. Geben Sie es ein und erstellen Sie einen neuen Blueprint. Geben wir Schauspieler ein, dann BP , L Gate Bullet. Lass es uns jetzt öffnen. Lass es uns hier zur Sprache bringen. Dave, das Erste, was wir hinzufügen müssen, ist das Artikelsystem. Oh. Gehen wir zum Inhalt, suchen wir nach Schiene. Was wir für diesen Hauptweg verwenden werden. Lassen Sie uns das tatsächlich duplizieren. Wir haben also den ersten Primärweg. Lassen Sie uns diesen ersten Primärpfad eingeben. Lassen Sie uns die Farbskala ändern. Gehen wir zu Ionen, konstanten Kurvenpunkten, und ändern wir alles etwas gelbliches, rötliches Machen wir es zu einem Sendschreiben. Das ist eine Kopie von diesem , Kopieren und Einfügen möglich. Was ist eigentlich, wenn wir es in eine Vektorkonstante ändern und es rötlich machen ist besser, von allen Tangenten zur Vektorkonstante zu wechseln , es wird ein bisschen konstanter sein , es wird sich nicht viel ändern, aber es wird in Ordnung sein Und 11 hier. Und lass uns die ursprüngliche Farbe ändern oder etwas Rötliches. 55 ein bisschen. R. Ja, das ist gut. Wir werden sparen. Wenn wir das schließen, kehren wir zu unserer Hell-Gate-Kugel zurück und wir fügen Kaskade hinzu, und hier ist es Jetzt brauchen wir eine Kollisionskollision, hier brauchen wir. Vor der Kollision. Lass uns die Party ein bisschen runterholen. S. Collision sollte kein Kind des Teilchens sein. Pro Kollision sollte ein untergeordnetes Element der Standardfäule sein. Das ist in Ordnung. Ich glaube, geh hier hin. Lass es uns in Bewegung bringen. Nein, wir müssen zuerst ein bisschen von der Kugel optimieren. Gehen wir zu den Kollisionen der Kugel. Schauen wir uns das Atom an und ignorieren alles außer Teichen. Kompilieren und speichern Lass uns jetzt loslegen, um es in Bewegung zu bringen. Was wir brauchen, ist ein Ziel, denn wir werden einen Zeitplan von unserer Position zum Ziel haben, das wir im Tempo des Schießens oder Reisens haben werden. Und wir ermitteln den Standort unseres Schauspielers. Aber der Schauspieler, wir wollen nicht, dass es wir selbst sind. Wir wollen die Pfote des Spielers, also werden wir den Spieler dazu bringen Verbindung herzustellen, um den Standort des Schauspielers zu ermitteln Und was wir erstellen werden, ist eine Kiste um den Spieler herum Bei einigen Schüssen wird der Spieler zum Beispiel mit Absicht verfehlt. Ich schieße nach links und rechts, einige davon gehen an den Spieler, aber die meisten gehen nach links und rechts. Oh, wir machen ein Minus, sagen wir 100, sagen wir, wir zielen auf den Boden. Und dann bekommen wir einen zufälligen Punkt in der Bounding Box Ein Bereich um unseren Spieler herum. Stellen wir das auf 200 201 und wir werden eine Auswahl treffen. Denn wie gesagt, einige davon würden an unseren Spieler gehen. Und wir werden das auf den Schauplatz des Schauspielers setzen. Hier werden wir nach dem Zufallsprinzip ziehen, einige von ihnen zielen auf unseren Spieler, andere zielen woanders, und das wird unser Ziel sein. Also werde ich es auf variabel hochstufen und es Target nennen. Ich werde das bei Spielbeginn verbinden. Die anderen beiden brauchen wir nicht, ich werde sie löschen. Ich verstehe das etwas niedriger. Und jetzt brauchen wir den Originalschauplatz des Schauspielers. Also werden wir den Standort des Schauspielers ermitteln. Ich werde es an einem variablen Originalort bewerben. Und jetzt brauchen wir die Zeitleiste, also fügen Sie eine Zeitleiste hinzu. Zu diesem Zeitpunkt werden wir etwas anderes machen. Wir werden zwei Strömungsbahnen verwenden, eine davon, um die Entfernung zu kontrollieren, und die andere, um die Höhe unseres Projektils zu kontrollieren die Höhe unseres Projektils Geben wir also die Zeitleiste ein. Fügen wir zwei Flow-Tracks hinzu. Wir könnten es mit einer Vektorspur machen, aber lassen Sie uns einfach zwei Flowtracks verwenden. Ich denke, es ist klarer , was die einzelnen tun, und es ist einfacher, sie einzustellen. Aber die erste wäre 00,0 und der Wert Null, und die zweite wäre wie lange sollte sich unsere Kugel bewegen? Sagen wir irgendwo hier, egal ob es 0,85 ist Vielleicht ist das zu viel 0,8. Nullpunkt 0,8. Ich möchte fast 75 erreichen, also hört sich 0,8 gut an, und Wert eins. Lass uns das hier einbauen. Für den nächsten Titel fügen wir die Punkte hinzu. Der erste wäre Null, Null. Die zweite wäre zur Halbzeit, nennen wir die Halbzeit von 0,8 0,4 0,4. Das wäre einer. Und der letzte Punkt wäre 0,8 bei Wert Null. Füllen wir das jetzt aus. Was ich sagen wollte, ist, dass dieser die Entfernung vom Ursprung zum Spieler kontrolliert, und dieser wird nur die Z-Achse von der Höhe des Ursprungs bis zur ursprünglichen Höhe kontrollieren Z-Achse von der . Gehen wir jetzt hierher. Was wir machen werden, ist die Location. Wir werden Vector vermieten. Wir werden den ursprünglichen Standort mit A verbinden und wir werden unser Ziel erreichen. Und wir werden die Höhe hinzufügen, die wir von unserem zweiten Gleis aus steuern werden. Ich werde es tun. Wir werden das Gleis zwei hier verbinden, wir werden das Gleis eins hier verbinden, wir werden das hier verbinden. Und für die Werte addieren wir einfach 100 zu Z. Wenn wir mit unserer Zeitleiste fertig sind, werden wir ein Messgerät am Standort aufstellen. Y t. Das ist Y. Auf einem Messgerät am Standort. Wir werden uns für die Partikelexplosion entscheiden. Wir werden es so skalieren, dass es tatsächlich 2,5 — 0,55 ist. Was den Standort angeht, werden wir unser Ziel erreichen. Und dann machen wir diesen Auftritt. Nun, es besteht die Möglichkeit , dass wir vorher zerstört werden , also wenn wir mit dem Spieler kollidieren Nein, lass uns das machen. Machen wir unsere Kugelkollision, fangen wir an, das Start-Over-Lap-Event zu starten. Fragen wir die Komponente. Wenn die Komponente den Tack P hat, fügen wir der anderen Komponente, dem Spieler, Schaden zu Ich werde, sagen wir p, einen Schaden anbringen und dann das Messgerät an Ort und Stelle kopieren Oder hier. Wir werden das Ziel nicht benutzen. Wir werden vom anderen Schauspieler aus am Standort des Schauspielers sein. Wirklich, wir können das Sweep-Ergebnis verwenden und es aufschlüsseln, und wir können den Standort verwenden, den Standort des Aufprallpunkts So können wir es genau dort erzeugen, wo wir wollen, weil der andere Akteur das Zentrum unseres Oh, wir werden den Ort des Einschlags verwenden und dann werden wir den Schauspieler zerstören, und das ist uns egal weil der Schauspieler bereits zerstört ist Ich denke, das ist ein guter Haltepunkt für diesen. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen 95. Hellgate Bullet-Shooting und Licht SFX: Hallo und willkommen zum Design-Workshop und zum Kurs „Real Engine Five“, „ prozedurales Dungeon“, „ Action-Rollenspiel“ und Action-Rollenspiel Ernsthaft, wir sind mit unserer Hell-Gate-Kugel fertig. Wir haben einen Partikeleffekt hinzugefügt , bei dem wir einige Einstellungen geändert haben. Im Grunde genommen ändert sich die Farbe im Laufe der Lebensdauer, was wir zu einer Konstante gemacht haben, und dann haben wir auch die ursprüngliche Größe geändert. Als Nächstes erstellten wir unseren Blueprint Gate Bullet , bei dem wir eine Schauspielerklasse verwendeten, und wir fügten diese Partikel- und eine Sphärenkollision hinzu, die wir als Akt verwenden Wenn wir mit dem Spieler kollidieren, erhalten wir das Sweep-Ergebnis dieser Kollision, wir erhalten den genauen Einschlagspunkt und den Spawn-Pimter, und wir haben dem Spieler einen Schaden zugefügt, 0,1 Schaden, und dann haben wir den Akteur 0,1 Schaden, und dann Die Art und Weise, wie sich dieser Akteur bewegt, ist, dass wir zu Beginn des Spiels einen Zielort über unseren Spielerstandort plus einen zufälligen Punkt an den Füßen des Charakters speichern über unseren Spielerstandort plus einen zufälligen Punkt den Füßen des Und dann speichern wir den ursprünglichen Standort und verwenden eine Zeitleiste mit einem sehr schnellen Punkt von Null bis 0,8, um das Ziel zu erreichen, und wir haben die verschiedenen Serien verwendet, wir haben zwei verschiedene Flowtracks verwendet, eine davon, um die Entfernung zu ändern und die andere , um die Höhe zu kontrollieren. Wir verwenden die festgelegte Position des Schauspielers, um den Schauspieler zu bewegen. Wenn wir dann unser Ziel nicht erreicht haben, haben wir den Spieler nicht getroffen, sondern wir haben unser Ziel erreicht. Wir verwenden die Position der Spawnanzeige , um eine Explosion auszulösen, und dann haben wir den Schauspieler zerstört Fahren wir nun mit unserem Höllentor und dem Event „Start Play“ fort, um mit der Entwicklung der Schießmechanik zu beginnen Also werden wir wieder ein Zeitereignis verwenden. Und es wird alle 0,3 Sekunden suchen. Der schnelle Schießmechanismus. Ich werde ein benutzerdefiniertes Ereignis erstellen. Nennen wir es Pflicht. Lassen Sie uns anhand eines Zweigs entscheiden, wann tatsächlich geschossen wird oder nicht. Und wir haben den Zustand, wir nennen es Feuer. Wir werden diese Bedingung hier anwenden. Wir wollen aber nicht immer schießen. Dann können wir schießen, wenn der Spieler in Reichweite ist, aber ist der Spieler in Sichtlinie? Das ist auch eine Frage. Machen wir eine Linienverfolgung? Per Kanal oder Tamela-Kanal. Und wir werden den Standort des Schauspielers für Kunst nutzen. Eigentlich werden wir das Gegenteil tun. Wir werden die Position oder das Ende des Schauspielers verwenden und nicht nur die Position des Schauspielers, die statische Mesh-Position, weil sie etwas höher ist als die Position, an der der Blueprint-Löffel Wir fangen hier an. Wir enden dort, wir fangen nicht an, wir werden uns Sorgen um den Standort machen , weil es eine Komponente ist. Wir brauchen die Wortposition der statischen Metapher? Ich werde aufstehen und vom Teich abholen, wir werden den Standort ermitteln, weil der Teich ein Schauspieler ist Ich werde das von Anfang an benutzen. Aber wir checken tatsächlich vom Spieler bis zum Turm, ist das sichtbar? Können wir etwas treffen? S. Werden wir das überprüfen? Das ist die Komponente, die wir erhitzen, machen wir das kaputt. Das Ergebnis ist ein Treffer. Das ist die Komponente, mit der wir den Schauspieler heizen, also haben wir unseren Turm beheizt? Das ist nur möglich, wenn wir etwas erhitzt haben. Erste Frage, sind wir tatsächlich auf etwas gestoßen? Wenn wir etwas erhitzen, hat es dann das G E? Wenn ja, gehen wir alle in die Klasse. Wir werden eine Split-Transformation durchführen. Wir werden das statische Maß noch einmal abrufen . Ort des Wortes. Sponse etwas höher, und jetzt müssen wir Sound bezahlen Nun, was den Sound angeht, wir haben keinen Sound dafür, aber es gibt einen Sound in Unreal , den ich für diesen Einsatz okay finde, nicht den besten Wir werden zum Inhalt übergehen. Und wie Sie sehen können, gibt es keinen Engine-Inhalt. Wir gehen zu den Einstellungen und wählen keinen Engine-Inhalt aus. Wir werden einen neuen Ordner haben, der Engine heißt. Es wird nicht empfohlen, diesen Inhalt zu ändern oder etwas daran zu tun diesen Inhalt zu ändern oder etwas daran wenn Sie nicht genau wissen, was Sie tun. Weil es den Motor durcheinander bringen kann, aber wir können kein Geräusch von dort gebrauchen. Und wir werden das Tischfenster benutzen. Der nahe dran. Ja, der hier. Gesprächsfenster schließen. Und jetzt haben wir unser Feuer bereit. Lass uns kompilieren und speichern. Ich habe keinen Kurs gewählt, P Bullet. O hier, wir wählen einen Schauspieler, nämlich P H Gate Bullet. Lassen Sie uns kompilieren und speichern. Weg. Die Boxen sind riesig. Und es erschießt uns nicht. Warum erschießt es uns nicht? Gehen wir zu Ich kann diese Musik ausstehen. Viel zum Testen. Wir gehen zu unserem Haupttor. Jetzt haben wir ein paar Eingangstore. Nehmen wir an, wir hatten mehr. Wir können das tun, indem wir diesen auswählen. Lassen Sie uns ablehnen, diesen auswählen und wir können hier hingehen und sehen, dass er ausgewählt ist. Mal sehen, was es läuft. Es trifft auf etwas. Wir können nicht E, hat diese Klasse ein Etikett? Sie muss einen AT-Tag haben. Ja. Weil unser Paar es auch nicht tut. Lassen Sie uns diesen Trace debuggen , um den Spieler zu Bringen wir den Spieler neben ein Höllentor. Wir treffen den Spieler. Das ist eine Weile , weil es okay sein kann. Das Gegenteil hat also nicht wirklich funktioniert. Also werden wir das Gegenteil tun. Wir werden wie normale Menschen mit dem Netz beginnen. Wir werden nur zeigen, dass das Gegenteil normalerweise auch in Ordnung ist . Diesmal ist es das nicht. Wir ändern den Schauspieler und lassen Sie uns nachholen . Jetzt trifft es den Spieler, aber es wird trotzdem nicht geschossen. Lass uns nachschauen. Was? Da wir nach dem Schauspieler suchen, müssen wir nach der Komponente als T suchen . Wir benötigen einen Wir benötigen Ton, damit wir überprüfen können, ob der Aufnahmeton abgespielt wird. Wir haben Feuer gespuckt. Richtig, lassen Sie uns das ganze Debugging entfernen, damit wir es etwas klarer sehen können . Gehen wir zur Sphäre Lasst uns im Spiel verstecken. Zwei. Was wir sonst noch brauchen, um Debug-Leitungen auszuschalten. Und lassen Sie uns einfach so zu unserem Charakter gehen und eine Audiokomponente hinzufügen Lass uns dieses Ambiente schaffen. Wählen wir es so, dass es ein gutes Ambiente hat. Ich glaube, das ist es. Ich bin mir nicht sicher. Ja, das ist es. Ambience, das Q, nicht der Sound, und es wird automatisch aktiviert, um es zu aktivieren. Lass uns nachsehen. Ein Ambient P. Wir haben kein Höllentor. Ordnung. Hab Speed Fire. Es bleibt ein bisschen auf dem Boden und dann explodiert es Vielleicht könnten wir einen Code dafür eingeben, aber lass uns das nicht tun. In Ordnung. Als Nächstes sollten wir das tun. Mir fällt auf, dass die Beleuchtung etwas statisch ist , diese leichten Schwankungen. Das Viewport wurde verschoben. Dieses Licht hier ist ein bisschen statisch, und wir haben einen Code für Licht, damit es flackert Es ist in unseren Fackeln. Gehen wir zu unseren Fackeln. Die Polizei holt die Fackel. Ich werde diesen Code hier benutzen. Geh zurück zu unserem Höllentor. Die Kugel. Ich schließe die Kugel, wir werden sie nicht mehr brauchen. Hell Gate und das hier hinstellen. Ich werde eine Sequenz erstellen. Ich setze es vor das Zeitereignis, also können wir diese Aktionen einfach nacheinander ausführen. Stimmt. Jetzt gehe ich zur Ampel. Ich werde die Farbe holen. Ich gehe zu A, Paste. Ich werde es einfügen und ein bisschen ändern, richtig. Und vielleicht mehr Orange hier, und das Licht wird von der Dichte Wir haben 100 150, sagen wir zufällig. Nein, im Update kann ich zufällig wählen, das wird d sein. Der Bereich wird 700-800 sein Machen wir es größer und lassen Sie uns einige Punkte entfernen Lassen Sie uns das behalten. Ja, das ist in Ordnung. Und lass uns nachschauen. Es gibt kein Tor. Wir werden einen haben. Und ja, momentan ist das Licht natürlich viel besser. Es macht etwas. Lesen. Ich denke, das ist es für diesen. Ich sehe dich beim nächsten Mal. Tschüss. 96. Benutzerdefinierte Maus-Widgets und Revenant Mesh: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen Dungeon-Action-Rollenspielen Zuvor waren wir mit unserem Höllentor fertig. Wir haben unser Schießereignis abgeschlossen, bei dem eine festgelegte Zeit für jedes Ereignis verwendet wird und das Schießereignis ausgelöst wird. Dann fragen wir, ob wir schießen können. Wenn wir es finden können, werfen wir eine Spurlinie vom statischen Netz zum Spieler. Das Gegenteil hat bei uns nicht wirklich funktioniert. Und dann fragen wir, ob wir etwas erhitzt haben. Nun, wenn es stimmt, wenn wir etwas erhitzt haben, dann fragen wir , ob das der Spieler ist. Und wenn ja, erzeugen wir eine Hell-Gate-Kugel und wir spielen ein Geräusch ab Wir haben auch geschaffen, was wir nicht geschaffen haben. Wir haben den Code unserer Fackeln kopiert und eingefügt, was das Leben zum Zittern bringt Wir haben den Zeitplan ein bisschen geändert, und wir haben die Werte ein bisschen geändert Also, unser Licht von unserem Höllentor im Grunde auch eine Animation. Oh, das werden wir speichern. Ich denke, es ist an der Zeit, mehr spielerbezogene Dinge zu machen. Oh, fangen wir mit der Maus an. Wir werden zwei Widgets erstellen. Eines für sie, damit sie mit der Maus über Feinde fahren können, und eines, damit sie normal sind. Also rufen wir das Benutzer-Widget auf. Wir werden Widget-Blueprint, Benutzer-Widget und W G normale Maus auswählen Benutzer-Widget und W G normale Maus Ich werde es kopieren, einfügen und es W G mouse nennen. Jetzt gehen wir zu unseren Projekteinstellungen und suchen oder den Cursor. Und hier haben wir unsere Software-Cursor, die wir mit einigen Widgets überschreiben können Wir werden zwei davon hinzufügen. Eigentlich können wir keinen zweiten hinzufügen weil dieser einzigartig sein muss. Aber der erste wäre der Standard und der zweite wäre ihr Kreuz. Wie Sie sehen können, wählen wir aus der Setliste. Standard wählen wir jetzt die normale W G-Maus, für das Fadenkreuz wählen wir die W G. Attack-Maus, glaube ich Angriffsmaus. Hier ist es. Wir werden die Projekteinstellungen schließen. Wir brauchen sie nicht mehr. Sie speichern automatisch den Moment, in dem wir einige Änderungen vornehmen, und lassen Sie uns unsere beiden Widgets öffnen. Wir öffnen die normale Maus und bringen sie hierher. Lass uns auch die Angriffsmaus öffnen. Für die normale Maus platzieren wir eine Leinwand. Und wir werden ein Bild verwenden. Und wir gehen zu unserem Magier und setzen seine Größe auf 90. Wir möchten, dass es eine Box ist, und für den Pinsel Ema wählen wir UI-Maus. Es sollte eine UI-Maus geben. Es scheint, wir haben genug gespielt und es ist erschienen. Also lass uns die UI-Maus wählen. Jetzt könnten wir einen komplexen Code erstellen und ihn rot machen. Aber was wir tun werden, ist die Leinwand zu öffnen, zu unserer Angriffsmaus zurückzukehren und sie hier einzufügen und die Maus auszuwählen und zu ihrem Farbton zu wechseln Wir werden es hellrot machen. Und jetzt haben wir eine rote Maus zum Anvisieren, anstatt irgendeinen Code zu erstellen. Nein. Im Grunde genommen, das ist es von diesem Teil. Was programmiert werden muss, ist der Teil, der die Farbe ändert, wenn wir über einem Feind schweben Aber dafür müssen wir zuerst einen Code auf dem Player-Controller ändern zuerst einen Code auf dem Player-Controller Also lass uns das noch nicht tun. Was wir tun sollten, ist endlich zu unserem Charakter überzugehen und das Modell zu ändern. In unserem Charakter von oben nach unten gehen wir also zum Viewport Wir vergrößern einen Charakter und wählen unser Mesh Jetzt werden wir nicht zu detailliert auf Animationen und Meshes eingehen Animationen und , weil wir nur dafür sorgen werden, dass es für uns funktioniert Es wird den Paragon-Charakter verwenden , der für etwas ganz anderes bestimmt ist für etwas ganz anderes Also werden wir einfach dafür sorgen, dass der Paragon-Charakter für unsere Fähigkeiten und unsere gewünschten Fähigkeiten und unser Gameplay funktioniert für unsere Fähigkeiten und unsere gewünschten Fähigkeiten und unser Gameplay Für unser Mesh werden wir unseren Wiedergänger auswählen. Und wie Sie sehen können, befindet er sich in einer sehr seltsamen Lage. Das liegt daran, dass wir das My Set of Money C verwenden, das wir auf die Blaupause von Reverend My ändern müssen Und wie Sie sehen können, hat sich eindeutig alles geändert. Wenn wir nun kompilieren und auf Play drücken, werden wir ein Problem mit dem Umsatzcharakter feststellen. Öffnen wir den Umsatzcharakter. Hier gibt es einen Code, der heutzutage veraltet ist. So wie es aussieht existiert das in den Projekteinstellungen nicht mehr. Also werden wir diese Ereignisse löschen, die ein Problem darstellen. Und wir werden diesen Blueprint kompilieren und speichern und dann auf Play drücken Jetzt haben wir also unseren Revenant-Charakter in unserem Spiel. Aber unsere Waffe wird ständig erweitert , was nicht sehr nett ist . Also lass uns das reparieren. Ich werde auch den Ton leiser weil wir viel testen werden. Oh, lass uns unseren Entwurf für die Charakteranimation öffnen. Wir werden den Revenant Skeletal Mesh Act eröffnen weil die Persona Sie haben alle Stubs hier drüben, denen wir zum Animations-Blueprint oder zur Level-Bühnenmontage oder zum Skelett-Mese gehen können Animations-Blueprint oder zur Level-Bühnenmontage oder zum Skelett-Mese von denen wir zum Animations-Blueprint oder zur Level-Bühnenmontage oder zum Skelett-Mese gehen können. Wir können zu jeder Kategorie gehen. Ich gehe jetzt zur Blaupause, aber ich will nicht, dass BP Revenant Ich will den Animationsplan von Revenant . Ich werde das auswählen und öffnen. Moment befinden wir uns in der Fortbewegung, also im Animationsdiagramm, das bestimmt, welche Animation abgespielt werden soll Bevor wir mit der Einstellung der Animation beginnen, gehen wir zu Evenra Der Grund, warum wir bei einem Charakter, den wir nicht verwenden, einen Fehler bekommen haben, ist, dass es all diese Besetzungen hier auf dem Event-Blueprint gibt, die mit der Animation für den Charakter Wiedergänger dass es all diese Besetzungen hier auf dem Event-Blueprint gibt initialisiert wurde Besetzungen Da es also eine harte Referenz gibt, ein Casting, eigentlich keine harte Referenz, verweise ich darauf. Wenn wir also auf Play drücken, wird geprüft, ob das kompiliert wird geprüft, ob das kompiliert Und das war es nicht. Also werde ich das löschen, weil wir die initialisierte Animation nicht benötigen die initialisierte Animation Wir brauchen das nicht, wenn das Auto BP blabla, blah sendet. Wir brauchen das nicht Und wir tun das nicht und wir machen nicht die einfache Montage am Anfang, was die Intramontage ist, und ich denke, wir brauchen die Animationsnotifier von einer Montage nicht Wir werden wahrscheinlich unsere eigenen erstellen. Ich werde das auch löschen. Und die Art und Weise , wie wir animieren werden, ist Montagen zu spielen Wir werden tatsächlich ein riesiges Animationsdiagramm mit vielen Funktionen erstellen ein riesiges Animationsdiagramm mit vielen Funktionen also in unserer Fortbewegung, Gehen wir also in unserer Fortbewegung, im Animationsdiagramm, zur Fortbewegung über Wir haben die Basislokomotion, die sich dann so aufteilt, dass sie sich versetzt zum Oberkörper bewegt, und sie macht einige seltsame Pläne die wir nicht oft nutzen werden Dann durchläuft sie all das und gibt uns die Und wir gehen in Bodenbewegung und ändern den Leerlauf vom Leerlauf. Das ist diese Animation, bei der das Geschütz nach hinten gestreckt Wir brauchen diesen Leerlauf also nicht bei ausgefahrener Waffe, wir brauchen den Leerlaufschleife ohne Kampfmodus Und wir müssen es spielen. Wir werden es hier hinzufügen und wir werden es kompilieren, und jetzt ist unser Idol mit einer Waffe am Boden Dann gehen wir zurück und starten unseren Jogstart Jetzt haben wir unseren Jog-Forward-Start, aber wir brauchen wieder den Nicht-Kampf-Start Also machen wir den Jog-Forward ohne Kampf, das ist FWD-Start, und wir wählen Play aus, was, wenn wir darauf klicken, dieses Nun, das ist unser Jogstart. wir jetzt zurück und gehen wir zu unserem Jog-Stopp, den wir wieder brauchen, dem Non-Combat Also bekämpfe Jog W und wir werden spielen. Und diese Animation hat diese tolle Animation. Es wird manchmal ausfallen , weil wir kein vollständiges System haben, aber es ist in Ordnung Lassen Sie uns zum Schluss noch etwas laufen, und hier sehen wir einen Blend Space, eigentlich multidirektional ist für die Auskleidung und alles andere Da wir das alles nicht brauchen werden . Lass uns zurückgehen. Wir werden das löschen. Auch hier werden wir das Joggen vorwärts, kein Hund vorwärts, kein Kampf, zwischen den Spielen verwenden kein Hund vorwärts, , also diese ständige Animation Lassen Sie uns jetzt speichern und zu unserem Spiel zurückkehren. Lass uns Play drücken. Wir haben auch die neue Maus. Und Sie können sehen, dass wir jetzt eine bessere Animation für das Gehen und Laufen von Adlern haben . Ich verwende eine Portion Fledermaus. Ich habe keins. Ich denke, das wäre für diesen. Ich sehe dich beim nächsten Mal. Tschüss. 97. Physik-Impuls- und Nahkampfanimation: Hallo und willkommen zum Game Design-Workshop und zur Real Engine Five-prozeduralen Erstellung von Real Engine Five-prozeduralen Dungeon-Aktionen Zuvor haben wir unsere Widgets für unsere Maus erstellt. Wir haben das Mausangriffs-Widget und das normale Maus-Widget erstellt und das normale Maus-Widget und sie in unseren Projekteinstellungen zu unserer Cursor-Software zu unseren Software-Cursorn hinzugefügt Cursor-Software zu unseren Software-Cursorn Also haben wir unserem Charakter unser Aragon-Modell hinzugefügt Und wir haben die Animationsklasse so geändert, dass sie der Plan für die Animation des Wiedergängers ist, und die Klasse Skelettnetz wurde zur Animationsklasse des Wir haben einige Änderungen am das Animationsdiagramm Wir haben das Animationsdiagramm innerhalb der Bodenbewegung übernommen und die Animationen Jog-Start, Jog-Stop und Run auf die Animationen geändert, die nichts mit dem Kampf zu tun haben die nichts mit dem Animationsplan vorgenommen. Wir haben das Animationsdiagramm innerhalb der Bodenbewegung übernommen und die Animationen Jog-Start, Jog-Stop und Run auf die Animationen geändert, die nichts mit dem Kampf zu tun haben. Lassen Sie uns jetzt weitermachen und mich angreifen lassen. Aber bevor wir das tun, mir aufgefallen, dass wir, wenn wir mit dem Wuttrank Schaden anrichten, keinen Impuls auf die physikalischen Gegenstände ausüben. Da wir dafür gesorgt haben, dass sich die physikalischen Gegenstände durch die Wutkollision überlagern, sollten wir das auch tun Also, vor diesem Zweig hier werden wir eine Sequenz platzieren Und wir werden einen Zweig einrichten und wir werden tatsächlich kopieren, wir wollen nicht, dass der Schauspieler zerrt. Es ist eine Komponente. Unsere physikalischen Objekte, die Boxen, sind Komponenten. Also gehen wir zur Komponente und lassen eine Komponente ziehen. Und das Tag wird H sein. Wenn ja, holen wir uns das Bauteil, und zwar am Wenn es wahr ist. Wir werden etwas mehr Platz brauchen. Etwas höher. Für unseren Impuls müssen wir eine Zahl angeben. Wir werden diesen Vektor in X, Y und Z aufteilen. Wir erhalten eine zufällige Ladung im Bereich. Und wir werden das zweimal zweimal duplizieren . Tatsächlich werden wir zwischen den ersten beiden anhand einer zufälligen Zahl auswählen. Das wird eine Verbindung in X und Y herstellen. Das wird eine Verbindung in Dead herstellen. Für die Werte setzen wir nun minus 220. Und tatsächlich muss das minus 260 sein, sagen wir, und das sollte minus 220 sein, weil das Maximum näher an Null liegt. Dieser Wert sollte also niedriger sein, da wir bei minus stehen . Und lassen Sie uns hier das Positive machen, das wären mindestens 220 und maximal 260. Und für den Höhenimpuls setzen wir 200 auf 300. Und jetzt wollen wir theoretisch auch die Geschwindigkeitsänderung überprüfen Was es macht, ist im Grunde so, als würde man die Masse eines Objekts aufhäufen, falls das Sinn macht, denn physikalische Gegenstände Aber es ist ein bisschen komplizierter als das, aber lassen Sie uns grob davon ausgehen, dass es genau das tut Also lass uns spielen gehen. Findet ein paar Kisten aus unserem Inventar. Ja. Sie bewegen sich, sie bekommen einen Impuls. Jetzt werden wir diesen Code auch für unseren männlichen Angriff verwenden . Aber wir werden ihn in dem Moment kopieren und einfügen. Nun, um einen AM-Attacke zu starten, müssen wir zuerst etwas Vorarbeit leisten. Was wir tun werden, ist, zu unserem Blueprints-Ordner in unserem Aufzählungsordner zu gehen und eine weitere Aufzählung zu erstellen, die der Spielerstatus sein wird Jetzt werden wir die meisten Staaten haben, alle Staaten sind quasi aufgezählt Es wird jedoch empfohlen , mehr als einen zu haben. Wir werden diesen Spielerstatus nennen. Wir werden es öffnen. Bring es her und ich füge zwei Staaten hinzu. Ich denke genau. Nennen wir den ersten Staat so. Nennen wir den zweiten Staat. Normal, der ganze dritte Zustand A oder wenn wir zielen, nennen wir den fünften, den vierten Zustand. Stan, denn wenn wir getroffen werden, wollen wir, dass ein Mini-Stan entsteht, und nennen wir den letzten Zustand M. Wir werden das hauptsächlich nutzen, um Dinge nicht zu tun, während wir uns in einem anderen Zustand befinden. Als Nächstes gehen wir zu unserem Charakter und erstellen eine Funktion, um den Zustand zu ändern. Also werden wir es Change Eight nennen. Für die Eingabe wird es einen E-Player-Status haben. Dieses Datum. Lassen Sie uns eine Variable vom Typ Spielerstatus erstellen. Nennen wir das auch Spieler Acht. Pastete. E-Spielerstatus. Und wir werden das duplizieren. Und wir werden es Spielerstatusalter nennen. Oh, wir müssen diese Dinge hier einstellen. Als erstes sollten wir unseren Spielerstatus auf den vorherigen Status setzen . Und als Nächstes setzen wir unseren Spielerstatus auf den Wunsch, der eingeht. Ich glaube nicht, dass wir den vorherigen Status verwenden werden, aber warum nicht? Als Nächstes sollten wir den Status tatsächlich zu unserem Top-Down-Controller hinzufügen . Und weil wir die Controller-Referenz häufig verwenden werden , beginnen wir mit dem Spielen. Und hier speichern wir den Downgame-Modus. Lassen Sie uns X und Maro dasselbe für den Player-Controller tun. Nein, wir holen uns Spieler und Darsteller. Bis es zu einer reinen Besetzung wird. Werben Sie für diese Variable. Verbinde das und jetzt haben wir einen Verweis auf unseren Controller. Gehen wir nun zu unserem Controller und erstellen eine Variable. Nennen wir diesen Spieler acht. Spieler acht. Der Status des B-Spielers ist bereits eine Variable. Der Typ wird der Spielerstatus E sein. Kompilieren und speichern. Gehen wir zurück zu unserer Funktion und unserem Status. Wir holen uns unsere Controller-Referenz von oben nach unten und gehen dann zu den Spielern. Acht unser Bundesstaat. Oh, wir sind damit fertig. Und das nächste, was wir erstellen sollten ist unsere Animationsmontage für M Montage. Oh, wir setzen auf st, das ist die Animation, die wir verwenden wollen, und wir klicken mit der rechten Maustaste darauf und achten auf die Animationsmontage. Nun, was ist eine Animationsmontage? Wir malen für eine Sekunde. Oh, nehmen wir an, wir haben unseren Charakter und unser Charakter läuft. Das ist eine Animation. Jedenfalls. Also läuft unser Charakter ständig. Und plötzlich wollen wir einen Angriff spielen. Und nehmen wir an, wir wollen den Charakter nicht von vorne nach unten ändern. Wir wollen, dass dieser Teil derselbe ist. Dann können wir ein anderes System namens Slots verwenden. Dann geh zu groß. Aber wir können ein anderes System verwenden, das als Spielautomaten bezeichnet wird, und wir können sagen, wir können sagen, dass wir einfach eine Animation über diesen Teil abspielen eine Animation über diesen Teil oder ihn mit dem unteren Teil mischen können. Und hier, wo Montagen sind. Wie wir schon sagten, spiel diese Animation ab. Nennen wir Angriff eins, und er streckt zum Beispiel seinen Arm so aus, um zu schlagen. Jetzt werden wir bis zu diesem Teil für uns verwenden, aber Montagen haben die Fähigkeit , zum Beispiel danach auch einen Angriff auszuführen und diesen Schlag auszuführen, wenn der Spieler weiter drückt oder nicht Und im Grunde ist es ein Tool, das uns hilft, leistungsstärkere und nicht nur leistungsfähigere Animationen zu erstellen, sondern es ermöglicht uns auch, komplexe Animationen zu steuern Zum Beispiel Angriffskombinationen, Spezialbewegungen, die durch das Gameplay ausgelöst werden können Wie dem auch sei, lass uns da rein gehen. Also erstellen wir unsere Montage. Lassen Sie uns unsere Montage öffnen. Oh, wir wollen hier irgendwo spielen, zum Beispiel, um ein Partikel zu erzeugen oder um eine andere Animation abzuspielen. Was wir tun würden, ist etwas mit dem Namen Wir werden mit der rechten Maustaste klicken zu erstellen. Eigentlich müssen wir hier auf Benachrichtigungen klicken. Das ist die Notifier-Leiste. Und was ist ein Notifier? Im Grunde ist es eine Markierung, die wir an bestimmten Punkten innerhalb der Animation platzieren können , um bestimmte Ereignisse auszulösen Platzieren wir also einen Animationsmodifikator. Irgendwo hier. All das hier, eine Benachrichtigung, und wir werden eine neue Benachrichtigung aufrufen. Nun, es ist kein Partikel. Es ist eigentlich eine Blaupause für mich , die wir erstellen werden, aber nennen wir es Partikel Nun, wenn ich eine andere Animation hier drin hätte, könnte ich diese hier reinbringen Ich kann eine weitere Animation mitbringen. Das war ein schlechtes Beispiel. Was wir hier drinnen machen werden. Und was wir hier drinnen tun werden , ist, einen Melder zu erstellen, was eigentlich ein Zeichen ist, ein Punkt, an dem wir Ereignisse auslösen können , von denen wir wollen, dass etwas passiert Es könnten Geräusche sein. Es könnte eine weitere Animation sein. Zum Beispiel, wenn ich eine Animation mitbringe. Das ist jetzt dieselbe Animation. Aber wenn ich sogar die gleiche Animation mitbringe und ich sagen will, mach es nochmal. Ich bräuchte etwas zum Notifier, um zu erklären, wann wir in welche Animation gehen Was wir tun werden, ist, irgendwo hier einen neuen Notifier zu erstellen Rufen wir es früh an. Tee. Und jetzt haben wir diesen Notifier hier. Wenn diese Animation hier platziert wird, löst sie das aus Es gibt eine Möglichkeit, ihn hier tatsächlich zu finden. Ja, nicht hier. Das ist das Animationsdiagramm. Es tut uns leid, das Ereignisdiagramm soll im Ereignisdiagramm im Programmierteil sein, nicht im Animationsteil. Sei es, das ist ein Ereignis. Es ist eine Programmiersache, also melde ich mich bei einem Angriff. Und das würde in diesem Moment ausgelöst werden. Da wir jedoch nur einen Notifier haben, gibt es eine andere Möglichkeit, ihn aufzurufen Und nur um das vorerst zu demonstrieren, werden wir es in der nächsten Lektion verbinden Gehen wir in unserem Spielercharakter zu Pen gra. Lassen Sie uns die Leertastatur erstellen. Wir werden die Leertaste auf der Tastatur verwenden . Wir machen den M-Angriff. Also, wenn wir spielen diese Benachrichtigung über den Beginn und dann über das Ende haben, und wir bekommen unseren Namen, sodass wir hier weitermachen können. Es gibt viele Möglichkeiten , Animationen zu erstellen. Wir werden bestimmte auswählen, nur damit unser Charakter funktioniert. Nun, ich denke, das ist ein guter Ausgangspunkt für diesen Film. Wir werden mit dem Aufbau unserer Space and Play-Montage und der gesamten Logik unseres My-Angriffs fortfahren and Play-Montage und der gesamten Logik unseres und auch einen Plan erstellen , der unser My-Angriff in der nächsten Lektion sein wird unser My-Angriff in der nächsten Lektion Auf Wiedersehen. Wir sehen uns dann 98. Nahkampfangriff-Blueprint-Kollisionen und Effekte: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeons Action-RPG-Erstellungskurs Zuvor haben wir mithilfe von Nummerierung und Angabe unserer Bundesstaaten ein benutzerdefiniertes Datum für unsere Spieler erstellt mithilfe von Nummerierung und Angabe unserer Bundesstaaten ein benutzerdefiniertes Datum für unsere Spieler Und wir haben einen Änderungsstatus für unsere Charakterfunktion erstellt einen Änderungsstatus für unsere Charakterfunktion Das heißt Change State, und wir speichern den vorherigen Status in einer Variablen Wir setzen den neuen Status, den Status des neuen Spielers auf den Status, und wir geben diese Information auch an unseren Top-Down-Controller weiter, mit dem wir den Spielerstatus erstellt haben , eine weitere Variable. Wir haben auch den vorherigen Status und den Spielerstatus in der Spielercharakter-Variablen erstellt . Dann haben wir unsere Animationsmontage erstellt und einen Animationsmodifikator erstellt Das wird unseren Ich-Angriff benachrichtigen, wenn wir unser Partikel einbauen sollen, was wir gesagt haben, es wird kein Partikel sein Das wird ein Plan sein , der eine gewisse Logik haben wird. Lassen Sie uns nun diese Montage schließen. Lass uns unseren Ich-Schauspieler kreieren. Wir gehen zum Ordner Fähigkeiten, klicken mit der rechten Maustaste und erstellen eine neue Blueprint-Klasse Wir werden Schauspieler und nennen es BP. Wir werden es jetzt nicht programmieren. Wir werden direkt zu unserem Sammler gehen. Wir gehen zu unserem Weltraum-Event, Bace Ball Event, und wir werden je nach Zustand wechseln Wir werden das auf der Presse verbinden. Das ist der Zeitpunkt, an dem wir in der Lage sein werden, einen Geruchsangriff durchzuführen. Und der einzige Ort, zu dem wir in der Lage sein wollen , ist, wenn wir normal sind Nein, das nächste, was wir von der Normalität aus tun werden , ist den Zustand zu ändern. Wir werden unsere Change-State-Funktion einsetzen. Ich werde es mir einrichten. Das ändert also meinen Zustand. Wenn ich jetzt weiter die Leertaste drücke, wird es nicht erneut ausgelöst. Jetzt sollten wir als Nächstes ein Geräusch machen. Wir werden Sound Two D spielen und als Sound den Fort-Effort-Swing wählen . Anstrengend. Wir werden die Mühe nutzen, zu singen. Wir werden das benutzen, weil es viele verschiedene Flügel hat . Was ist dieser Dialogdialog auch? Ah. Ja, es wird jedes Mal anders klingen, wenn wir angreifen. Gehen wir jetzt zu unserem Player und nach unserem Sound sollten wir unsere Montage abspielen. Und um Armonta spielen zu können, benötigen wir eine Skeleton-Mess-Komponente . Das ist notwendig. Denn wer spielt diese Montage? Das ist wichtig. Aber wir werden uns hier verbinden. Und für die Armontage wählen wir unsere letzte Montage. Nun, bevor ich gesagt habe, dass wir den Notified Begin oder einen beliebigen Notifier verwenden können, wird er immer dann ausgelöst, wenn ein beliebiger Notifier verwendet wird Und da wir einen haben, können wir ihn einfach ohne irgendeinen Notifier-Namen verwenden und sagen, Acto-Klasse, und das wäre unser Oder die Transformation, wir teilen uns auf und brauchen einen Standort Wir werden unser Netz holen. Standort ermitteln. Fußballstandort, was bedeutet das? Ich glaube, wir verwenden dieses Skelettnetz , weil wir von hier aus einen Fußballstandort ermitteln können. Wenn wir zu unserem Skelett gehen, gehen wir zurück zur Persona und lassen Sie uns zu unserem Skelett gehen Wir können sehen, dass es eine Menge zusätzlicher Dinge gibt wie: Was ist eigentlich ein Slot Ich meine Buchse, kein Steckplatz. Also, was ist eine Steckdose? Wir können zu dem Punkt gehen, wo wir sind, und die Schnauze zwei nehmen Sie können sehen, dass es hier auch eine Steckdose gibt , an der wir etwas anbringen können, wie ein Schlitz, in dem wir Dinge platzieren können Und es muss nicht exakt auf der Waage sein. Wie Sie sehen können, ist diese Steckdose hier weit weg, was für uns reichen könnte. Aber ich denke, das ist der falsche Arm mit und r, um die Buchse und R auf unserer Montage zu finden . Ja, es ist das andere R, der rechte Arm, nicht der linke. Also brauchen wir R und R, Waffe R. A, hier sind wir auf oder rechts, und R Zle eins Nehmen wir diesen Maulkorb. Socket-Name hier drüben. Muskelwert eins. Ich gehe zurück zu unserem Charakter und verwende den Socket-Namen. Was ich nicht richtig gemacht habe. Manchmal will Steuerung C einfach nicht funktionieren. Schnauze eins Das gibt die Wortposition an , an der sich unser Socket in diesem Zustand befindet Als Nächstes werden wir unseren Meacor an unsere Festplatte anschließen Also folgt unser Selbstangriff ein bisschen h. Wir werden eine Berührung machen. Zum Schauspieler. Weil wir einen Schauspieler hervorbringen und ihn unserem Schauspieler zuordnen wollen Und wir werden das Wort halten. Das heißt, wenn wir uns wenden, dreht sich unser Ich-Angriff auch, und das wäre ein Nebendarsteller. Vielleicht können wir unseren Angriff, unseren Angriff ein bisschen missbrauchen und einfach umdrehen, wenn wir angreifen und viele Feinde treffen. Oh. Jetzt müssen wir nur noch eine Abklingzeit dafür schaffen, wie oft wir mich treffen können. Oh, lassen Sie uns hier nach 1 Sekunde den Status ändern. Also möchte ich eine Verzögerung einlegen. 1 Sekunde. Und lassen Sie uns den Zustand auf normal ändern. Das wäre ein Problem, wenn wir zulassen während eines E-Mail-Angriffs noch etwas anderes passiert, denn nehmen wir dass während eines E-Mail-Angriffs noch etwas anderes passiert, denn nehmen wir an, ich befinde mich beispielsweise im AM-Status und drücke auf E-Mail-Angriff, und dann gehe ich sofort wieder in den AM-Status zurück. Nach einer Sekunde wird mein AM-Status auf normal geändert. Aber wir werden sehen, wie sich das entwickelt, und wir werden die entsprechenden Änderungen vornehmen. Lassen Sie uns unseren Plan, der hauptsächlich auf Angriffe ausgerichtet ist, und unsere Fähigkeiten öffnen und unsere Fähigkeiten Lasst uns eine Kollisionskugel hinzufügen. Pro Kollision. Machen wir 100 draus und haben einen Radius. Außerdem müssen wir es ein bisschen voranbringen. Äh, vielleicht wäre das hier in Ordnung. Nun, warum wir es weiterbringen, weil es in der Mitte des Bauplans erscheinen würde Also brauchen wir das hier, damit es nicht hier ist, denn das würde sich mit unserem Charakter überschneiden Überschneidungen mit einem Charakter sind uns egal. Irgendwo hier wäre also herrlich. Also, das nächste, was wir brauchen, ist ein Kaskadenteilchen. Für das Partikelsystem werden wir das Revenant-Primärsystem verwenden Jede Menge Vorwahlen von Revenant. Wir wollen, dass der Hauptcharakter von Revenant ist. Richtig? Machen wir es ein bisschen größer, nicht alles. Ich werde dieses X über eins und über zwei sprechen. Oh, das wird ein Artikel sein. Punkt. Größer. Wir werden sehen, wie es auf der Karte aussieht. Das nächste, was wir hinzufügen werden, ist ein Punktlicht. Sorgen Sie dafür, dass es etwas mehr Licht erzeugt. Macht das Gebiet locker, wenn wir nur angreifen. Naja, hat den Boden im Grunde ein bisschen beleuchtet. Wir nehmen das Punktlicht stellen den Radius zwei ein. Und wir werden es etwas niedriger platzieren. Hier. Es beleuchtet unsere Gegend und ein bisschen nach vorne auch. Nicht zu sehr, weil du unseren Charakter nicht sehen willst, etwas, das hier anfängt und dann auch hier anfängt. Du willst sehen, als ob es vom Becken aus beginnt. Wir müssen die Farbe auch auf etwas Rötliches ändern , gut Und gehen wir zum Programm, das angreifen könnte. Jetzt verwenden wir normalerweise Destroy Actor, wann immer wir etwas wollen. Aber das ist auch ein anderer Weg. Wir gehen zur Standardklasse. Das ist lebenslang. Wir können sehen, dass wir hier eine Variable haben, wie lange dieser Schauspieler lebt. Ero ist für immer. Aber wenn wir zum Beispiel 0,3 eingeben, stirbt dies in 0,3 Sekunden. Diesen Schauspieler müssen wir nicht zerstören. Wir müssen Destroy niemals anrufen. Wir müssen in unsere Sphäre gehen. Welche Kollision, wähle Benutzerdefiniert. Ich werde alles außer dem Pon und dem Physikobjekt ignorieren . Aus dynamischen Gründen dürfen wir das nicht ignorieren, es ist auch unser Höllentor. Auf der Kapsel. Das ist unsere Kollision. Eine Dynamik. Oh. Nun, unsere Sphäre muss etwas tun, wenn sie anfängt, sich zu überlappen. Wenn wir Schauspieler erzeugen, selbst wenn sich der andere Akteur innerhalb der Kugel befindet, löst dies das Ereignis Begin Overlap aus. Wir müssen einen anderen Schauspieler fragen und fragen, ob die andere Komponente eine Sequenz macht. Tun Sie das getrennt. Eins ist für Feind. Der andere ist für physische P H. Zwei Filialen. Wir können die Rolle des Feindes noch nicht wirklich spüren , weil unser Männchen dem größeren Rückschlag auf unsere Seite keinen Schaden zufügen würde. Aber wir können die Physik machen. Wir werden es tun, denn Physik wird von unserem Charakter abhängen. Wir werden beschichtet. Hier. Wir müssen nur Impuls und zufällige Floats hinzufügen Wir gehen zurück, damit ich das hier mache. Es ist wahr. Ein gültiges Objekt. Überprüfe das auch. Nur für den Fall, dass es zerstört ist oder so. Wir werden uns hier verbinden. Und das wäre. Eigentlich müssen wir das Ziel auch verbinden, wem kaufen wir? Und das wäre unsere andere Komponente. Lass uns testen, weil ich denke, wir werden ein Problem mit der Rotation unseres Geruchs haben . Bin ich. Nichts passiert, weil wir die Eingabe in unserem Charakter aktiviert haben. Am Ende von Beg Play holen wir uns unsere Player-Controller-Referenz und sagen wir, vielleicht verbinde ich die Controller-Referenz dem Player-Controller, Ziel wäre ich selbst. Lass uns vergleichen. C, es passiert nichts. Lass uns nachschauen warum? Ich glaube, ich weiß warum. Da der Status standardmäßig tot ist, setzen wir ihn auf Normal, weil es unser erster Zustand ist. Die Variable wurde erstellt, aber kein Spielerstatus angegeben. Lass uns nochmal testen. Ich habe Sound. Ich habe keine Montage. Oder lass uns aussteigen. Ich denke nochmal nach, ich kenne den Grund. Gehen wir zu unserer Cast-Montage und lassen Sie uns hier, wie ich bereits sagte, einen Slot verwenden. Im Moment ist es auf dem ganzen Slot und es ist sozusagen so, dass es für den ganzen Körper gilt. Geh und sieh in unserer Animationsgrafik nach. Wir werden sehen, dass das nicht reicht , weil der ganze Körper im Grunde keine Handlung hat. Aber wir müssen den Oberkörperschlitz machen. Wir machen Fontage und planen Tam. Könnte einfrieren, aber wir kompilieren und speichern. Es wird einfrieren. Hat es nicht getan. Tun. Wenn ich aufhöre zu spielen. Oh. Wie auch immer, lass uns zu unserem Spiel gehen. Ich denke, dieses Mal wird es funktionieren. Ja. Ich kann mir vorstellen, die Animation richtig zu erklären. Auch wenn die Vorschau eingefroren ist , bedeutet das nichts Es gibt einige Probleme beim Ändern von Dingen. Aber wir erzeugen das Partikel nicht. Liegt es daran, dass das nicht auslöst? Es besteht eine Chance Lass uns hier den Breakpoint nehmen, oder vielleicht die Position von Mcle One? Oh, auslösend. Machen Sie ein bisschen Seelenforschung und finden Sie heraus, was das Problem ist Als ich eine Benachrichtigung erstellt und eine neue Benachrichtigung hinzugefügt habe, handelt es sich dabei um einen elementaren Notifier , der sich von der Planmontage unterscheidet Unser Knoten hier. Das im Tooltip, es funktioniert nur mit Lay-Montage-Notify und nicht mit Skelett-Montagen. Wir werden diesen M-Angriff ändern, löschen, und wir werden ihn verwenden Montage modifizieren. Wir werden M Attack nennen. Jetzt würde es funktionieren. Ja, wir können sehen, wie wir unseren Artikel haben. Aber wie gesagt, wir haben ein Problem mit der Rotation. Nein, um das zu beheben, gehen wir zu unserem PPM. Wir werden zu unserem ersten Theaterstück gehen und wir werden die Schauspielerrotation einstellen. Für die neue Rotation. Wir werden uns mit dem Warum einer Rotation befassen. Und der Anfang wäre Spieler Po. Wir machen einen Ich werde auch den Vorwärtsvektor bekommen. Das ist ein Vektor, uns im Grunde sagt, wohin wir schauen. Start wäre also die Punktposition und n wäre die Position, an der wir uns befinden, plus der Vorwärtsvektor, um ihm eine Richtung zu geben Eine weitere Drehung sollte behoben werden. Ja, es spricht. Ja, ich mag den Ort nicht, an dem es laicht. Aber ich mag es in manchen. Lassen Sie uns zunächst zu unserer Spielrate gehen. Okay, ich habe es bereits geändert. Wir sollten zwei wechseln, vielleicht zwei , um uns abzukühlen. Acht. Lassen wir die Feindquote bei einem Punkt stehen. Fünf und eins. Wählen wir die zweite Position der Schnauze. Ich glaube, es war ein bisschen vorwärts. Auch wenn es zu dem Zeitpunkt, zu dem wir die Animation abspielen, in der falschen Hand ist. Oh nein, nein. Schnauze eins war Aber machen wir es etwas später für unsere Hand. Lass uns vielleicht. Dave. Das ist besser. Das Leben ist ein bisschen zu intensiv. Würde es ein bisschen niedriger machen. Machen wir uns auf den Weg. Stimmt? Lass uns. Ja. Sieht gut aus. Wenn es die Boxen bewegt, sollte es Boxen bewegen können. Schon wieder Boxen in diesem Raum. Zimmer. Ist die Kiste. Das gibt es, oder? Perfekt. Wir bewegen Kartons. Großartig. Ich denke, das ist es für diesen. Ich sehe dich beim nächsten. Auf Wiedersehen. 99. Statische Ziel- und Schießmechanik: Hallo und willkommen zum Gain Design Workshop, einem Kurs zur echten Action-Rollenspiels mit Engine Five Erstellung eines echten Action-Rollenspiels mit Engine Five und prozeduralem Dungeon-Action-Rollenspiel Zuvor waren wir mit unserem Selbstangriff fertig. Wir haben eine Animationsmontage erstellt, die wir Notifier-Montage „ Notify“ benachrichtigt haben, wenn wir unseren Ich-Angriff verschieben wollen Außerdem verwenden wir sie im Charakter-Blueprint und beim Ereignis mit der Leertaste um zwischen den Spielerzuständen zu unterscheiden, sodass wir nur angreifen können, wenn wir Unmittelbar danach ändern wir den Status. Wir haben einen Sound abgespielt, wir haben die Montage abgespielt und beim Start über die Montage informiert. Wir haben unseren VP kann angreifen gestartet und ihn dem Schauspieler zugewiesen Dann haben wir 0,8 Sekunden gewartet und den Status wieder geändert In unserem Plan Mein Angriff haben wir zunächst die Drehung des Schauspielers in die Richtung festgelegt , in die die Pfote schaut Und dann haben wir die Komponente Beginning Overlap Event mit einer Kugel erzeugt , die auf unserer Kugelkollision basiert und prüft , ob dem Akteur um ein physikalisches Objekt handelt oder ob es sich um einen Feind handelt Wie gesagt, der Feind wird später gefüllt, und das war's. Und unser möglicher Angriff besteht aus einem Licht, einem Teilchen und einer Kollisionskugel. Lassen Sie uns nun mit der Herstellung unseres Schießmechanismus fortfahren. Aber dafür müssen wir zuerst aus mir einen Zielmechanismus machen. Aber dafür müssen wir einen Zielmechanismus einrichten. Wenn unser Charakter also noch lernt, zum Beispiel die Schicht durchläuft, können wir sagen, dass der Charakter zielt, sodass der Sammler schießen kann. Lassen Sie uns jetzt hier einen Kommentar hinterlassen. Nennen wir das M und lassen Sie uns eine Panik auslösen. Wie gesagt, wir werden die Shift-Taste benutzen, also werden wir die linke Umschalt-Taste auf Tastaturen benutzen Und wir werden einen Bolzen herstellen , damit wir wissen, ob die Shift-Taste gedrückt ist oder nicht Wir werden Setting und Freunde sein. Als Nächstes werden wir den Spielerstatus einschalten. Oh, welcher? Bei beiden. Wann werden wir zielen können? Nun, wenn wir normal sind oder schon zielen, oder schon zielen weil die Animation noch nicht abgeschlossen ist, sollten wir wieder zielen können. Was wir aber tun werden, unseren Charakter bewegen und eine Sache ändern. Bei unserer Charakterbewegung gibt es eine orientierte Hier ist es eine Orientierung von Rotation zu Bewegung, was bedeutet, dass sich der Charakter unserer Bewegung orientiert Wenn wir zielen, wollen wir nicht, dass das passiert Wir wollen, dass es dorthin zielt, wo unsere Maus hinzielt. Also müssen wir das ausschalten. Wir wechseln zu Bewegungen und ändern dann unseren Zustand. Nun, ich werde mich nicht sicher sein, weil wir zuerst die Montage abspielen müssen und dann das Ganze starten, das einschalten, wohingegen wir hier das auslösen einschalten, wohingegen wir hier und dann die Montage abspielen müssen Wir setzen den Zustand auf a. Für unser Zielen verwenden wir die Pose, die wir am Anfang hatten, bei der das Geschütz ausgestreckt ist Wir werden daraus eine Montage erstellen. E Patientenmontage BE Montage. Das müssen wir eigentlich nicht, wir müssen. Wir müssen den Slot, den Standardslot, auf „Oberkörper “, „Name“, „Oberkörper“ setzen. Wenn wir das jetzt zurücksetzen wollen, können wir einfach wiederholen, dass Sie gearbeitet haben. Es macht manchmal Backups. Und jetzt, wenn ich woanders hingehe und dorthin zurückkehre, funktioniert es, und unsere Cast-Montage funktioniert auch. Wie Sie sehen können, brauchen wir von hier aus eigentlich diesen Teil , der von unten nach A. Oh. Gehen wir zurück. Lass uns eine Seite einblenden. Jetzt gibt es auch einen Player in Montage, dem es sich um einen Sortierknoten mit weniger Optionen Aber wir verwenden das , weil es am Ende viel mehr Optionen hat Jetzt werden wir das Skelettnetz verwenden. Für die Montage wählen wir den inaktiven aus. Was die Senkung des Ziels angeht, wirst du ein bisschen schummeln Benutze diese Montage. Normal, und unsere Rate wäre minus eins. Das wird es also zwingen, rückwärts zu spielen. Und danach werden wir unseren Zustand ändern, nachdem wir unsere Waffe gesenkt Wenn wir die Waffe senken, setzen wir sie auf normal. Als Nächstes sollten wir unsere Bewegung nach hinten richten, weil wir uns in einem normalen Zustand befinden Jetzt, hier später, wenn wir die Maus so einstellen, dass sie rot wird, wenn wir auf einen Feind zielen Wir werden sie auch so einstellen, dass sie rot wird, wenn wir zielen, und normal wird , wenn wir nicht zielen. Wenn wir also zielen, leuchtet unsere Maus ständig rot, was bedeutet, dass wir können und bereit sind zu schießen. Lass uns das testen. Lass uns Play drücken. Ich drücke Shift, wir können unsere Waffe sehen. Aber im Moment zielen wir nicht. Also fing es an, sich zu bewegen und zielte einfach auf die Waffe. Aber wie Sie sehen können, ist es zu laut, wenn wir den Ton schließen. Wie Sie sehen können, hat unser Ziel bei der Rotation so funktioniert, als würden wir uns momentan nicht in Richtung Bewegung drehen. Aber wenn ich sie ausschalte, drehen wir uns wieder in Richtung unserer Bewegung. Jetzt sind wir quasi strafend, was nicht schlecht ist, aber das ist nicht das, was wir wollen Wie dem auch sei, damit das behoben werden kann, müssen wir auf den Player-Controller gehen und unsere Bewegung korrigieren Aber das werden wir jetzt nicht tun. Wir werden mit unserem Schießmechanismus weitermachen. Oh, lass uns das machen. Geh zu deinem Charakter Lass uns das hier hinstellen. Hallo. Lassen Sie uns die linke Haustaste verwenden, um unser Angriffsereignis zu erstellen. Das erste, was wir tun werden, ist zu wechseln und den Status zu ändern. Eingestellt. Wenn wir angreifen wollen, zielen wir. Oh, wir werden eine Frage stellen. Ist eine Filiale. Greifen wir schon an? Ich werde für diese Variable werben und sie als Angriff bezeichnen. Denn wenn wir bereits angreifen, sollten wir nicht noch einmal angreifen, das sollte eine Abklingzeit sein, sonst schlägt unser Geschütz wie ein Maschinengewehr, so schnell wir klicken können Oh, wenn wir nicht angreifen, dann setzen wir den Angriff auf wahr Als Nächstes spiele ich unsere Montage ab. Diesmal haben wir bereits eine Montage, sie heißt Primarifier made montage und einige Notifier , die wir nicht verwenden werden, aber es ist Und bringen wir unser Mesh mit. Hier. Nun, das nächste, was wir tun werden , ist unsere Kugel abzufeuern. Und bevor wir das tun, lassen Sie uns einfach eine Funktion namens Spa erstellen. Kugel. Wir benutzen das. Aber wir werden das jetzt nicht benutzen. Wir werden unsere Mechanik fertigstellen. Oh. Wenn wir Montage spielen, werden wir Spa machen. Kugel. Oh, als Nächstes müssen wir den Reset machen, wer Ba angreift. Wir brauchen eine Abkühlung. Wir setzen also eine Verzögerung von, sagen wir mal Punkt, ein. Und wir müssen einen Reset durchführen. Ich werde eine übliche Veranstaltung organisieren. Und dieser Reset. Zieh es her. Das muss sich je nach Spielerstatus ändern, weil wir zum Beispiel etwas anderes machen wollen, wenn wir zielen und etwas anderes , wenn wir normal angreifen. Wenn wir zum Beispiel Maus über einen Feind fahren und auf „Klicken“ drücken, endet das anders, als wenn wir die Umschalttaste drücken und mit dem Schießen beginnen wir nun Wechseln wir nun. Natürlich müssen wir in beiden Zuständen nicht angreifen Aber wenn wir normal angreifen, wir das auch auf Statistik setzen , denn wenn wir während eines Angriffs betäubt werden, sollten wir in der Lage sein, unseren Angriff zurückzusetzen Nun, wenn wir normal angreifen oder wenn wir anfangen, wollen wir unser Geschütz senken , falls wir nicht wieder angreifen Wenn ich zum Beispiel den Mauszeiger über einen Feind halte und schieße und dann den Schwebeflug mache, kannst du die Hand in der Schussposition lassen, sie sollte Und um das zu tun, werden wir wieder ein bisschen cheaten und uns für ein benutzerdefiniertes Event mit niedrigerem Geschütz entscheiden Und wir werden es mit dieser Kette von Ereignissen verbinden , weil wir genau das wollen. Wenn das wahr ist, ist es nicht wirklich wichtig. Es wird schon gehen Wir werden es wieder aushärten lassen. Oh. Wir werden Lower Lower Gun anrufen. In beiden Situationen normal. Und das wäre ein Teil unseres Schießangriffs mit dem linken Druckknopf Aber lassen Sie uns mit der Kugel weitermachen , was der nächste Teil ist Bei unserer nächsten Lektion. Auf Wiedersehen. 100. Player-Bullet-Blueprint und Visuals: O Hallo und willkommen zum Game Design Workshop und dem Kurs zur Erstellung prozeduraler Dungeon-Action-Rollenspiele mit Real Engine Five Zuvor haben wir mit unserer Schießmechanik begonnen. Also haben wir das AM-Event mit Links-Shift erstellt. wir drücken und loslassen, legen wir das Ziel fest oder Wenn wir drücken und loslassen, legen wir das Ziel fest oder AM ist nicht ausgeschaltet. Wir wechseln basierend auf dem E-Status. Wir stellen Orient auf Bewegung aus, und wir ändern den Status auf AM und spielen eine Montage ab, die zum Beispiel unsere Waffe auf unsere Seite bringt. Wenn wir jetzt loslassen, spielen wir zuerst die Montage ab, um das Geschütz abzusenken, und dann ändern wir den Status wieder. Bevor das Set uns den Rücken zudrückt, wissen wir, dass wir zumindest damit begonnen haben, unser Geschütz herunterzufahren. Nun, um ehrlich zu sein, dieses Set, die Rotation an der Bewegung ausrichten , ist hier irgendwie dekorativ, nur um zu zeigen, was es bedeutet, dass wir, wenn wir uns anhand der Bewegung orientieren, der Charakter sich tatsächlich umdrehen nur um zu zeigen, was es bedeutet, dass wir, wenn wir uns anhand der Bewegung orientieren, können, wo, wenn wir es nicht sind, der Charakter ruhig bleibt und es eher wie ein Beschuss ist. Lassen Sie mich den Ton etwas leiser stellen. Das ist der Unterschied zu dieser Variablen. Die eine ist im Grunde genommen ein Angriff. Die andere ist, der Orientierung der Bewegung zu folgen, Rotation der Bewegung zu folgen Nun, für uns werden wir ständig rotieren, wo sich unsere Maus befindet. Also das ist eigentlich nicht nötig. Aber wenn es hier bleibt, hat es keinen Einfluss auf unseren Code. Als Nächstes wollen wir unsere linke Maustaste benutzen. Um wieder eine Kette von Ereignissen zu erstellen , die auf dem Status unserer Spieler basiert. Danach haben wir eine Frage gestellt, ob wir angreifen, und wenn wir bereits angreifen, wenn wir schießen, werden wir nichts tun. Aber wenn wir nicht schießen, werden wir schießen. Also sagten wir, Angriff sei wahr, und wir haben die Montage von Shooting abgespielt, die wir erstellt haben. Eigentlich haben wir nicht geschaffen, dass es existiert, dass es ein Shooting ist. Und dann fahren wir mit unserer Funktion Spawn Bullet fort , die wir nicht gefüllt Und dann, nach einer Verzögerung von 0,65, setzen wir den Angriff zurück, sodass wir erneut schießen können Aber wenn wir im Visier sind, lassen wir das Geschütz nicht fallen, was ein Ereignis ist Wir haben einen neuen Code erfunden und uns irgendwie gehackt, um ihn zu erstellen , und ihn in der veröffentlichten Schicht verwendet, was unser unteres Geschütz ist Lassen Sie uns nun mit dem Ausfüllen dieser Funktion fortfahren , und dafür müssen wir einen neuen Blueprint erstellen, wir werden zu den Blaupausen übergehen Wir werden zu Fähigkeiten übergehen. Wir klicken mit der rechten Maustaste und erstellen eine neue Blueprint-Klasse Nun, das ist nicht gerade eine Fähigkeit, aber Hel Gate Bullet war auch keine Fähigkeit Also werden wir das PP-Schichtgeschoss nennen. Ich werde das öffnen. Das Erste, was wir brauchen werden, ist ein Partikel. Also werden wir eine kaskadierende Partikelkomponente hinzufügen, und sie wird aus Template und Mark bestehen, es gibt viele Markierungen Mark il. Es gibt zwei. Der ist Zuckerguss, wir wollen den normalen. Wir, wir haben eine schöne Kugel hier drüben. Ein Effekt für unsere Kugel. Als Nächstes brauchen wir eine Kollisionsröhre. Eine Kollisionskugel ist eigentlich kein Würfel. Lassen wir ihren Radius bei 32, geben wir viel zu, um die Fläche beheizen zu können , spielt keine Rolle, ob wir direkt heizen. Seien wir nett zu unseren Spielern. Das nächste, was wir brauchen, wir haben es tatsächlich in unserem BP ML eingerichtet, ist dieser Punkt hier drüben , dass wir den Boden beleuchten wollen während sich die Kugel bewegt. Gehen wir zurück zu unserer Kugel und fügen dieses Licht ein. Vielleicht ist es ein bisschen groß, dass der Sühne-Radius 200 beträgt Bringen wir es näher an die Kugel heran, und ich denke, das ist in Ordnung Schließlich benötigen wir eine Komponente zur Projektilbewegung. Nun, diese Komponente ist genauso die Bewegungskomponente wie die Rotationskomponente, eine Komponente mit vielen Optionen Und das Einzige, was wir ändern müssen, sind eigentlich zwei Dinge. Die Rotation folgt der Geschwindigkeit, aber wir wollen, dass der Akteur immer seiner Geschwindigkeit zugewandt ist. Außerdem wollen wir Schwerkraft-Skala der Projektile auf Null setzen Vielleicht 0,1, unsere Kugeln neigen nach unten, vielleicht 0,1 Aber wenn es zu viel ist und wir sehen können, dass unsere Kugeln sehr schnell in den Boden fliegen, sollten wir es wieder auf Null Nun, diese Komponente der Projektilbewegung hat einen Vektor, der Geschwindigkeit genannt wird, was bedeutet, in welche Richtung und wie schnell fliege ich? Das werden wir später berechnen. Aber wir werden zu unserem Ereignisdiagramm gehen, um das Spiel zu beginnen, unsere Projektilbewegung und eine Geschwindigkeit Ich gehe zu diesem Pin und erstelle eine neue Variable, nenne sie Geschwindigkeitsgeschwindigkeit Was es sein sollte. Also machen wir daraus einen Vektor. Wir werden das so aufteilen wir nur x und verwenden werden. Wir werden diese Variable machen, Weihrauch bearbeiten und auf SP veröffentlichen R Der Grund dafür ist dass wir isometrisch arbeiten und eine geneigte Kamera Und das bedeutet, die richtige Drehung zu wählen und zu schauen, um unsere Geschwindigkeit zu ermitteln, wo unsere Kugel landen sollte. Das ist nicht so einfach wie ein Pop-down-Spiel Für den Moment verwenden wir hier also X und Y. Aber ich denke, diese wenigen Informationen werden für später nützlich sein. Wie dem auch sei, als Nächstes sollten wir unsere Kollision überprüfen. Also haben wir einen Feind getroffen? Wir werden die Kugel auswählen. Wir werden anfangen, mit den sich überschneidenden Veranstaltungen zu beginnen. Und wir werden zuerst überprüfen, ob der andere Schauspieler gültig ist. Denn wenn wir zum Beispiel auf einen sterbenden Feind schießen , der zerstört wird, sollten wir nichts tun. Als Nächstes sollten wir uns fragen, ob an der anderen Komponente gezerrt wurde? Das Etikett wäre ein Feind, und wir erstellen einen Zweig Und wenn es ein Feind ist, sollten wir tatsächlich Schaden anrichten. Lassen Sie uns einen Schaden von eins anrichten. Vergiss nicht, den Schadensverursacher anzuschließen. Dann werden wir handeln. Dieser Fehler. Ein T, wahrscheinlich. Und was wir verwenden werden, ist wieder die Markierung Ende, wie wir es bei der Explosion getan haben. Aber dieses Mal werden wir es viel kleiner machen, 444. Und der Ort wäre unser Schauspieler-Standort. Und wenn wir keinen Feind getroffen haben, spawnen wir einfach Dmter Wir werden keinen Schaden anrichten, es sei denn, wir hatten zerstörbares Terrain und gehen dann zum Schauspieler Wir treffen also einen Feind, wir fügen Schaden zu, wir erzeugen ein Partikel Wir treffen keinen Feind, wir erzeugen nur ein Partikel und zerstören Es gäbe also ein Problem mit dieser Konfiguration, dass, wenn wir eine Kugel spawnen sie nichts trifft, sie einfach für immer und ewig weitergeht Nun, eigentlich nicht, aber ja. Was wir tun werden, ist zu unseren Klassenstandards zu gehen und zu unserer Lebensdauer gehen und sie auf Ich weiß nicht, 5 Sekunden einzustellen Ich denke, das ist genug. Jetzt, nur um unsere Kugeln zu testen Wenn wir fertig sind, denke ich, das wäre für diesen. Ich sehe dich beim nächsten Mal. Auf Wiedersehen. 101. Spielerschießen und VFX: Hallo und willkommen zurück zum Game Design Workshop Rail Engine Five Procedural Dungeon Action at PS Creation Course Zuvor haben wir unseren Bullet-Blueprint erstellt. Oh, wir haben einen Partikel verwendet um den Trail-Effekt und den Bullet-Effekt zu zeigen Und wir haben die Kugel verwendet, um Kollisionen zu erkennen, wenn wir mit der Umgebung oder einem Feind kollidieren Und wir verwenden das Punktlicht, um ein wenig rotes Licht auf dem Boden zu zeigen ein wenig rotes Licht , während sich die Kugel bewegt Wir verwenden die Projektilbewegung, um unsere Schwerkraft-Skala festzulegen, und sie wird für die Steuerung unserer Bewegung, unserer Geschossgeschwindigkeit und unserer Geschosse verantwortlich sein Geschossgeschwindigkeit und unserer Geschosse den Einstellungen haben wir die Schwerkraftskala ausgeschaltet und die Rotation entsprechend der Geschwindigkeit eingestellt. Unser Schauspieler schaut immer auf die Geschwindigkeit. Jetzt, wenn das Spiel beginnt, nicht wir haben es gespeichert. Wir setzen die Geschwindigkeit der Projektilbewegung auf eine Variable, die wir als Sollgeschwindigkeit erzeugt haben, und wir verwenden X und Y daraus Wir haben Weihrauch editierbar gemacht und beim Spawnen sichtbar gemacht. Wenn wir die Kugel spawnen, geben wir Danach haben wir das Überschneidungsereignis abgeschlossen , bei dem wir gefragt haben, ob unser Akteur, mit dem wir kollidiert sind , gültig ist . Wir prüfen im Grunde, ob der Akteur, mit dem wir kollidiert sind, muss? Wenn also die Zerstörung noch aussteht , tun Sie nichts damit Und dann haben wir bei einem Zweig nachgefragt, ob er das Tag E hat, was bedeutet, dass es sich um einen Feind handelt. Also fügen wir Schaden zu, wenn es kein Feind ist, wir nur ein Partikel, was wir auch tun , wenn wir Schaden zufügen, und dann zerstören wir den Akteur Schließlich ändern wir die Lebensdauer auf, glaube ich, auf 5 Sekunden, also auf 5 Sekunden, damit unsere Kugeln nicht ewig verschwinden , wenn wir sie abschießen Lassen Sie uns jetzt unser Spa-Bullet-Event abschließen. Eigentlich eine Spa-Bullet-Funktion. Das Erste, was wir tun müssen, ist einen falschen Maulkorb herzustellen Und der Grund dafür ist, dass wir, wenn wir zu unserem Skelettnetz gehen, Schnauze suchen Wir können sehen, dass sie an sehr seltsamen Positionen platziert sind. Das liegt daran, dass sie mit bestimmten Fähigkeiten, bestimmten Timing und einer ganz bestimmten Art, eingesetzt zu werden, verbunden sind. Also werden wir das nicht benutzen. Wir werden ein bisschen schummeln und in einer bestimmten Position einen Muskel aufbauen , den unsere Waffe erreichen kann Und wie werden wir das machen? Wir werden unserem Bauplan eine Sinuskomponente hinzufügen und ihre Position verwenden, nennen wir diesen Muskel. Jeder Ort, an dem unsere Effekte für unser Schießen erzeugt werden. Gehen wir also zu unserem Viewport und dem Standort. Eigentlich habe ich einen Standort im Kopf, ich getestet habe und der okay aussieht Es wird 128 auf X sein, wird -28 auf Y sein, und es wird oder tatsächlich E acht auf Z sein Das ist also der Punkt, an dem unsere Waffe reicht und es ist mit der Waffe, dass es darum geht, wo sich unser Muskel befinden sollte Gehen wir also zurück zu unserem Spam-Bullet und verwenden diese Muskelvariable, wir werden die Position ermitteln, die Position des Wortes ermitteln Und wir gehen zu einem Meter an dieser Stelle. Lassen Sie uns diese beiden Standorte verbinden. Für das E-Meter verwenden wir Last Shot Muzzle Flush. Davon gibt es jede Menge. Aber ich glaube, es gibt nur einen mit diesem Namen. Die anderen sind lokal, das heißt lokale Koordinaten und der Zuckerguss. Also ja Letzter Schuss: Schnauzenspülung. Wenn wir jetzt einfach damit spielen, sehen wir sofort ein Problem mit der Ze-Spülung Auch hier ist es die Rotation , bei der unsere Charaktere rotieren sollten , weil sie momentan genau das Gegenteil ist Und es ist auch ein bisschen groß. Ich wollte auch die Größe testen. Also lass uns zurückgehen. Lassen Sie uns die Skala auf 0,3 setzen. Und die Rotation. Wir werden unsere Kapsel rotieren lassen, denn das ist es, worauf wir achten. Aber jetzt sollte das gut funktionieren. Wir ziehen um, nachdem wir geschossen haben. Aber das liegt daran, dass wir die Bewegungseinschränkungen nicht eingehalten haben und der Spieler im Grunde genommen die Steuerung im Controller übernimmt. Weil all unsere Steuerungen im Grunde die Maus sind. Die Maus benötigt also ein bisschen Code, um zu entscheiden, was sie tut. Lasst uns jetzt das Gameplay beenden, lasst uns zurückgehen. Und das nächste, was wir tun werden, ist wieder einen Meter zu spawnen Aber dieses Mal angehängt. Und dieses Mal werden wir den Muskel dazu benutzen. Ein Ort, dem er folgt, weil diese Punkte, sind Berührungspunkte, das sind die Sockelnamen des Skeletts, von dem wir gesehen haben, dass der Bewegung des Skeletts folgt, wo sie sich befinden. Aber wir werden es noch einmal auf die Stelle der Schnauze Und wir werden die Wortposition beibehalten. Ja, behalte einfach die Wortposition. Die Rotation spielt eigentlich keine Rolle. Und für den Artikel wählen wir den letzten Punkt Lush aus. Und ich werde es ein wenig modifizieren , weil wir nicht das eigentliche wollen Finden wir es zuerst, lokal, zuletzt. Ich glaube, das ist es. Ich will, dass es verschlossen ist. Gibt es einen entsperrten? Ja, das gibt es. Ja. Muskel angeschossen und blockiert. Das ist es, was wir brauchen. Gehen wir zu diesem Partikel. Was wir ändern werden, ist ein sehr kleines Detail. Wir werden zum Medikament übergehen und den Wert von zwei auf, sagen wir, 0,5 ändern . Es ist ein bisschen mehr, nicht so viel Luftwiderstand. Wir werden dieses Partikel schließen. Lass uns zurückgehen. Könnte ein bisschen groß sein. Lass es uns überprüfen. Wir sollten uns vielleicht ein bisschen niederlassen. Iss nicht mal. Lass uns das debuggen. Gehen wir zurück zu unserem Bauplan Mal sehen, was los ist. Okay, ich habe es nicht an die Komponente angehängt. Wir legen fest, welcher Knochen gesperrt werden soll, welcher Knochen befestigt werden soll, aber wir legen nicht fest, welches Netz. Also werden wir dieses Netz verwenden. Compp speichern. Also lass uns zurückgehen und testen Ich denke, die Größe wäre groß. Schicht. Ick. Wir haben Rauch. Ordnung. In Ordnung. Es funktioniert in allen Richtungen korrekt. Dies ist eine weitere Möglichkeit, etwas Ihrer Rotation folgen zu lassen. Du fügst es deinem Charakter hinzu. Fahren wir nun mit dem Spawnen unserer Kugel fort. Wir werden vom Unterricht aus anrufen. Wir werden die Transformation aufteilen. Wir werden unsere Kugel auswählen. Das Wort Standort sollte wieder unser Muskel sein. Und jetzt brauchen wir eine Schussgeschwindigkeit. Jetzt nutzen wir vorerst nur , um unsere Kugeln zu sehen Wir werden den tatsächlichen Vorwärtsvektor der Kapsel verwenden Vorwärtsvektor der Kapsel Lass mich die Kapsel herbringen. Lass uns weitermachen, Vektor. Multiplizieren wir das mit einer Geschwindigkeit, die ich nicht habe, und 101.000 Stellen wir eine Verbindung zur Geschwindigkeit her. Lass uns schießen gehen. Wir schießen unabhängig davon , wo sich unsere Maus befindet, wir schießen und unsere Kugel explodiert Zu guter Letzt brauchen wir natürlich ein Geräusch Gehen wir also hierher, und nachdem wir unsere Kugel spawnen, spielen wir Sound D und verwenden den Sound als Pistolensound Jetzt sollten wir beim Schießen Ton hören. Kann ich bitte überprüfen, ob es das beschädigt, was meiner Meinung nach nicht der Fall ist. Es sollten fünf Puls sein, nicht wahr? Also lass uns das überprüfen. Und ich glaube, ich weiß schon, was es ist. Wir sollten eigentlich zuerst zum Höllentor gehen. Der Teufel zerrt. Siehst du? Wir haben Schauspieler, der Es in der Kugel zerrt, ich frage nach dem Komponenten-Tag Ich sollte also nicht nach einer Komponente fragen. Sollte nach einem Schauspieler fragen. Als Tag E der Komponente. Aber jetzt sollten wir in der Lage sein , etwas zu drehen. Falls wir es schaffen, drüben gibt es zwei Höllentore. Lass uns gehen. Ja. Wir können Höllentore nicht zerstören. Wir kommen dorthin. Oh, ich denke, das wäre ein guter Zwischenstopp für diesen. Ich will dich beim nächsten sehen. Tschüss. 102. Spieler-Todesanimation und Mechanik: Hallo und willkommen zurück zum Game Design-Workshop und zum prozeduralen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Real Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Real Engine Five-Action-Rollenspielen Im letzten Teil haben wir das Spawnen unserer Kugel abgeschlossen Spawnen unserer Kugel abgeschlossen Wir sind fertig. In Zitaten , weil wir die richtige Geschwindigkeit benötigen Also haben wir einen E-Meter an einer falschen Wir haben vor unserem Charakter einen falschen Ort geschaffen, den wir Maulkorb nennen werden , und wir spawnen dort einen Und wir verwenden die Rotation der Kappe, um diesen um einen Meter zu drehen Das ist zum Beispiel der Meter, unsere Schnauze blinken lässt Oh. Dann spawnten wir einen Emitter, an dem auch das Netz im Sockelmuskel befestigt war Wir haben also unseren Rauch, der ein bisschen unserer Waffe folgt. Unsere Bewegung in unserer Waffe. Dann spawnten wir unseren Junghennendarsteller wobei die Position des Spawns das Wort Position der Schnauze war, und dann haben wir eine falsche Geschwindigkeit zur Vorderseite unseres Charakters erzeugt eine falsche Geschwindigkeit zur Vorderseite unseres Charakters Und dann haben wir ein Geräusch abgespielt. Nun, bevor wir weitermachen und Bewegung unseres Charakters festlegen und darauf, wohin er eigentlich zielt, sollten wir die letzte Bewegung abschließen. Lassen Sie uns hier einen Kommentar hinterlassen. Haustier. Schießen Sie tatsächlich. Ich wäre korrekter. Das Letzte, was wir brauchen, ist unser Gesundheitssystem. Wir haben es bis zu einem gewissen Punkt geschaffen. Aber wir haben nicht entworfen, was passiert. Wir haben unseren Stan nicht. Wir haben nicht viele Dinge, die passieren, nachdem wir Schaden erlitten haben. Lassen Sie uns also mit dieser Logik weitermachen. Als Erstes haben wir gesagt, dass wir unseren Charakter als Star markieren werden , wenn wir Schaden erleiden. Und das bedeutet, dass dies auch eine Gnadenfrist sein sollte auch eine Gnadenfrist wir nicht betäubt werden, sonst werden wir den Stand gesperrt, wenn wir zum Beispiel kontinuierlich Nonmag haben, für den Turm, der ununterbrochen feuert, oder wenn uns viele Gegner gleichzeitig Wir werden hier einen Ast aufstellen und fragen, ob wir angestarrt werden können werden für diese Variable werben Wir werden für diese Variable werben und sie C B nennen. Also, das ist eigentlich ein sehr schlechter Name Nennen wir es Cool Down. Wenn Sn im Cooldown ist, tun wir das, wenn S nicht im Cooldown ist, machen wir etwas anderes. Als Erstes setzen wir Stan auf Cooldown. Aber wenn es wieder losgeht, ist es von Anfang an. Zweitens sollten wir unseren Zustand ändern. T. Als Nächstes sollten wir ein Hitzesound abspielen. Ein Ton zwei D. Der Grund, warum wir es nur auf Stun spielen , ist, dass wir nicht wollen, dass bei jeder Hitze ein Geräusch entsteht, sondern dass bei jeder Hitze, die uns betäubt, der Aber wir werden die Hitze nutzen. Ich Herm. Wir werden einen Hert Mel benutzen. Und dann werden wir eine Frage stellen, ob wir tot sind. Denn wenn wir nicht tot sind, werden wir etwas anderes tun. Wenn wir tot sind, werden wir den Tod spielen und den Tod spielen, wenn wir für diese Sendung werben. Das alles ist tot. Nennen wir das tot. Lassen Sie uns ein benutzerdefiniertes Ereignis erstellen. All dieser Tod und nenne ihn unwahr. Wenn wir jetzt nicht tot sind, wollen wir einen Hitzeeffekt spielen Es zeigt also auch visuell , dass unser Charakter Hitze bekommen hat. Wir machen das. Lassen Sie uns eine weitere Montage erstellen. Nun, es ist auf Hitze eingestellt. Eigentlich müssen wir ein Vorbild sein. Wir haben also diese Hitzereaktions-Front. Wir werden eine Montage daraus erstellen. Wir geben die Montage ein, wobei die Gruppen-Slots zum oberen Steckplatz gehören. Oberkörper. Gehen wir zurück zu unserer Figur und spielen ihre Montage. Wählen wir unser Skelettnetz aus. Und unsere Montage. Es reagiert von vorne. Und was wir jetzt tun werden , ist, diese Kette von Ereignissen nicht mehr zu durchlaufen , das heißt, wenn wir aufhören, die Montas zu spielen, die nächsten Dinge tun, werden wir uns für das komplette und unterbrochene entscheiden Wenn also etwas das unterbricht oder das abgeschlossen ist, dann werden wir etwas anderes tun Wir werden unseren Spielerstatus ermitteln, welchen Spielerstatus, weil dieses Ergebnis je nach Spielerstatus variieren wird, ein bisschen, nicht sehr Und wenn wir auf Normal-A oder ich wären, wollen wir zu einer normalen Position zurückkehren. Wir werden den Zustand wieder ändern. Zu normal. Wenn wir normal wären, wenn wir zielen würden , weil es unser Zielen unterbricht Wenn wir versuchen zu schießen und etwas auf uns schießt und es uns trifft, unterbricht es unser Ziel, also sollten wir erneut zielen, und das auch einfach genauso Und was wir danach tun werden, wird sich ein bisschen verzögern Sagen wir 2,5 Sekunden. Und dann stellen wir den Non-Cooldown ein. Ich mag dieses Geräusch nicht und s. Ich bin nicht cool, vielleicht war es ein C. Wie dem auch sei, kompiliere und speichere. Aber im Grunde ist das unser Countdown, wann wir wieder fassungslos werden können Nun, für den Fall, dass wir fassungslos sind. Wenn wir unsere Schicht nicht verlassen würden. Wenn ich ziele und schieße, werde ich fassungslos. Schlecht, das ist der Fall, wenn wir uns abkühlen. Wir können nicht in diesem Fall sein, wenn wir fassungslos waren , was hier passiert ist. Ich habe eine Verbindung hergestellt, ich habe die falschen Dinge angeschlossen. Lu, während es passiert ist. Das ist hier. Also, wir sind jetzt Star, wir sind dabei, uns auf den Stand und wir ändern den Zustand. Wenn wir also den Staat ändern, können wir nicht zielgerichtet sein, also werden wir standhaft bleiben. Aber wenn wir schon stehen und zielen, dann sollte das unser Ziel unterbrechen, was auch immer passiert Aber wenn wir fassungslos sind und immer noch auf Shift drücken, sollten wir zu unserem Ziel zurückkehren Aber wir werden hier eine Filiale einrichten. Und wenn es falsch ist, werden wir hier eine Verbindung herstellen, und wenn es wahr ist, werden wir hier eine Verbindung herstellen, und die Bedingung ist, wenn wir immer noch zielen, also nach unten zielen, wenn wir immer noch Shift drücken. Wenn wir fassungslos sind, werden wir im Grunde nicht vom Schießen unterbrochen Aber wenn wir zielen und bereits fassungslos waren, dann werden wir unterbrochen uns das zweite Mal etwas angreift, brechen wir tatsächlich unser Ziel, was eine versteckte Mechanik im Spiel wäre Wie dem auch sei, lasst uns mit unserem traurigen Teil weitermachen, unserem Tod, wenn wir verlieren. Was auch immer passiert, muss einmal passieren Also zwei einmal. Als Nächstes sollten wir den Death Sound spielen, also Sound für D abspielen. Eigentlich sollte es nicht das Erste sein, aber lassen Sie uns diesen schrecklichen Sound von Anfang an rausholen Ich glaube, das nennt man Schmerz. Schmerz zwei. Nun, wir können uns für Anstrengung, Schmerz oder wahrscheinlich entscheiden, dieser ist aggressiver, tödlicher. Nun, wir sollten die Bewegung hier beenden, aber wir haben den Controller-Teil noch nicht gemacht, also werden wir ihn später machen und natürlich unseren Zustand auf Tod ändern, was die Standardeinstellung ist. Und jetzt müssen wir eine Animation abspielen. Also werden wir unsere Todesanimation finden, also wird es Tod sein. Als Tod rückwärts und Tod vorwärts denke ich, dass der Vorwärts in den meisten Fällen besser ist , weil der Rückwärtsgang in einigen Fällen seltsam aussehen würde, aber wir werden daraus eine Animationsmontage erstellen Wir werden den Schlitz auf den Oberkörper umstellen. Nochmals, R, richtig? Gehen wir zurück zu unserem Charakter und spielen eine Montage. Wählen wir unser Skelettnetz aus. Wählen wir die Montage aus. Und lassen Sie uns unser Gameplay-Widget von unserem Bildschirm entfernen. Es gibt also keine Gesundheitsteile mehr oder so. Spielmodus von oben nach unten. Hier sind wir. Spielweise. Vom Elternteil wegziehen. Das wird sofort geschehen. Wir werden nicht auf das Ende der Montage warten oder etwas benachrichtigen. Was wir tun müssen, ist ein Spiel über den Bildschirm zu erstellen. Aber lass uns das beim nächsten machen. Tschüss fürs Erste. Wir sehen uns dann. 103. Mauserkennungssystem: Hallo und willkommen zurück zur Game Design Workshop-Engine Five Erstellung von Curse mit der Game Design Workshop-Engine Five der Procedural Dungeon Action APs Zuvor hatten wir mit unserem Death Function Death Event aufgehört . Und wir haben gesagt, dass wir ein Spiel brauchen , das im Grunde zeigt, wann wir sterben. Aber lassen Sie uns von Anfang an beginnen. Wir haben die Fortsetzung unseres Event-Events geschaffen , bei dem wir Gesundheit hinzufügen und entfernen mussten. Wir haben gefragt, ob wir schon auf Stun sind, ob wir auf Stun Cooldown sind Wenn wir nicht auf Stun Cooldown sind, dann schalten wir, dass wir uns auf Sun Cool Down befinden, und wir stellen unseren Modus auf Betäubung Und dann spielen wir ein Geräusch ab, das dem Spieler anzeigt, dass wir Wenn wir auf Stun-Cool Down sind, dann stellen wir einfach gleich die Frage, ob wir tot sind? Wenn wir tot sind, machen wir weiter, wir sind ein Todesfall. Wenn wir nicht tot sind, spielen wir eine Animationsmontage ab, um zu zeigen, dass wir getroffen wurden, aber sie kann durch Gehen, Bewegen oder was auch immer unterbrochen werden und sich verändern. Und ob vollständig oder ununterbrochen, wir wechseln je nach Zustand. Was tun wir? Im Grunde haben wir also eine versteckte Mechanik entwickelt , bei der wir beim ersten Mal, wenn wir zielen und schießen, zu unserem Zielen zurückkehren, sodass wir wieder schießen können Aber wenn wir beim zweiten Treffer sind, was bedeutet, dass wir bereits zielen, weil er seinen Zustand nicht geändert hat, weil wir blockiert waren, dann kehren wir zur Normalität zurück und unterbrechen unseren Angriff Als Nächstes haben wir 2,5 Sekunden gewartet, um die Betäubung einzuschalten und die Abkühlung auszuschalten. Das ist also unsere Gnadenfrist, um nicht betäubt zu Bei unserem Event Tod haben wir es einmal gemacht, wir haben den Todessound gespielt, ein schreckliches Geräusch, und wir haben den Zustand auf Tod geändert, und wir haben unser Todesmoa gespielt Lassen Sie uns nun unser Widget erstellen Wir entfernen auch das Gameplay-Widget aus dem übergeordneten Element, sodass wir den Gesundheitsteil oder so etwas nicht mehr sehen Oh, lassen Sie uns nun im Grunde unser Widget für unser Spiel über den Bildschirm erstellen . Lass uns zur Benutzeroberfläche gehen. Lass uns klicken. Gehen wir zu Benutzer-Widgets, Benutzer-Widget-Blueprint und lassen Sie uns das Spiel mit G beenden. GEH. Lass uns das öffnen. Lasst uns einen Cvass reinbringen. Und eine SMS. Schreiben Sie das Spiel über. Verankern wir es in der Mitte. Lassen Sie uns Position x zwei minus 175 verschieben. Lassen Sie uns die Position y ändern, um zu fliegen. Sagen wir Größe x drei und Größe 89. Stellen wir nun unsere Größe auf sechs ein. Es sieht etwas größer aus. Ich lasse es fett gedruckt. Geben wir Text ein, Spiel ist vorbei. Ich glaube, das ist eigentlich ein Wort. Es liegt an Game over oder Game over um ein Wort oder zwei Wörter. Ich mag es mit zwei Wörtern, sieht besser aus. Es ist ein bisschen festgelegt, das auf dem R basiert, aber es ist in Ordnung. Ich glaube nicht, dass es auffallen wird. Als Nächstes müssten wir nun unseren Punktestand beschreiben. Bringen wir einen Text mit und wickeln wir ihn in ein horizontales Feld ein. Lassen Sie uns diesen Text duplizieren. Geben wir für den ersten Text vier Grundpunkte ein. Und der nächste Text sollte sagen wir eins, zwei, drei, vier, fünf, 50 sein. Lassen Sie uns nun das vertikale Feld so gestalten , dass es dies umschließen kann Verankern wir es also auch in der Mitte. Lassen Sie uns den Offset minus 125 setzen. Einhundert, es sollten zwei sein. Es ist groß, aber es ist in Ordnung. Was wir tun können, ist einfach beide auf dem Feld festmachen zu lassen. Diese Ausrichtung auf der rechten Seite ist zu mittig. Falsche Ausrichtung nach rechts. Ja, das sieht schon besser aus. Ja, das wird für uns sein. Machen wir aus unserem 00-Text eine Variable und nennen wir sie Score Underscore Score Ist eine Variable. Wir können es auf etwas setzen, und jetzt brauchen wir ein weiteres horizontales Feld. Bringt es in die Cavas. Stellen wir die Krawatte visuell fest. Wir wollen, dass es hier unten ist. Vielleicht in diesem Teil des Bildschirms bis hier oben. Stellen wir die Offsets ein. Alles passt hierher. Also, was wir hier hineinlegen werden, wird eine vertikale Kiste sein. Und zwei Leerzeichen. So können wir das vertikale Feld dort kontrollieren, wo es verläuft, und das Leerzeichen sollte eins am Anfang eins unter dem vertikalen Feld sein. So können wir alles überprüfen. Und wir werden die beiden Leerzeichen auf 0,1 ändern. Also haben wir diesen leeren Raum an den Seiten gegeben. innerhalb des vertikalen Lassen Sie uns innerhalb des vertikalen Felds auch zwei Leerzeichen und wieder ein horizontales Feld zwischen den beiden Leerzeichen platzieren , und wir werden festlegen, dass dieses Feld tatsächlich das Feld sein wird, in dem sich die Tasten befinden. Wobei auch einige Leerzeichen benötigt werden. Bringen wir die Knöpfe und die Abstandshalter mit. Wir brauchen zwei Knöpfe, eins, zwei. Bringen wir wieder ein paar Abstandshalter mit. 12, drei, und wählen wir alles aus, was wir fühlen möchten. Stimmt das? Jetzt ändern wir die Seitentasten auf 0,1 p. Ich denke, das gibt uns standardmäßig ein schönes Becken für unsere Buttons. Lassen Sie uns nun entscheiden, hier O und hier einen Text zu schreiben. Nennen wir das Hauptmenü. Und das andere, nennen wir das Quid-Spiel. Eigentlich habe ich einfach gekündigt. Was wir tun werden, ist, zu diesen beiden Tasten A und dann zu gehen und auf jeder von ihnen auszuwählen. Das Ereignis, auf das geklickt wurde. Lassen Sie uns diese Muster benennen , weil ich keine Ahnung habe, was welches ist Also das ist das B-Menü und das ist das B-Qui Jetzt sind Ereignisse benannt, also das ist das Qui, das wir spielen. Und das ist das Hauptmenü, das wir auf der Ebene öffnen. Erinnern Sie sich an den Loop, über den wir am Anfang gesprochen haben. Das wäre unser Levelname. Lass uns das kopieren und einfügen, es ist Spiellevel. Durch Drücken wird alles neu geladen und wir gelangen zu unserem Hauptmenü und beenden unser Spiel Was wir nun konstruieren wollen, unser T-Score und ein Xt Lass es uns hier verbinden. Unsere Punktzahl, die wir für eine Punktzahl verwenden werden. Lass uns unsere Münzen für eine Punktzahl verwenden. Also werden wir uns einen Modus besorgen. Wir werden von oben nach unten werfen. Wir werden auf Reinguss umstellen und unsere Münzen holen. Gesamtzahl der Münzen. Lass uns das hier verbinden. Unser Punktestand sind also unsere Münzen. L Lass uns kompilieren und lass uns unser Todessystem testen. Eigentlich bevor wir unser Sterbesystem überprüfen. Gehen wir ganz schnell zu unserem Charakter und ändern unsere Mx-Gesundheit auf eins. Wir sterben also sofort aus einer Falle und warten nicht auf zehn Treffer. Lasst uns eigentlich nebenan sterben. Wir sterben nicht. Lassen Sie uns gestalten, was vor sich geht. Das liegt daran, dass wir hier nach dem Tod suchen, der Variablen tot. Wir sollten überprüfen , ob unser Leben dem Tod entspricht, unser aktuelles Leben gleich oder weniger als Null ist . Wenn dem so ist, sollten wir auch die Wahrheit sagen. Jetzt sollten wir sterben können. Wahrheit sagen. Jetzt Die Falle hier. Oh, er ist gestorben, aber wir können uns immer noch bewegen, wie du siehst. Aber wir können keinen weiteren Schaden einstecken. Aber wir sterben. Jetzt können wir uns bewegen, weil wir eine Stop-Move-Funktion einrichten müssen . Aber damit eine Stop-Motion-Funktion funktioniert, müssen wir kontrollieren, wie wir uns bewegen. Außerdem erscheint das Widget nicht , weil wir es nicht aufgerufen haben Gehen wir also in unseren Tod. Gehen wir zuerst zu unserem Spiel, unserem Bereich zur Widget-Erstellung. Lassen Sie uns eine benutzerdefinierte Lüftungsöffnung erstellen. Nennen wir dieses Ereignis GO. Lass uns diesen Teil von hier und vom Play-Controller kopieren. GEH hierher. Wir werden für diese Variable werben. Eigentlich müssen wir sie nicht bewerben. Weil wir das Spiel danach einfach zurücksetzen werden. Wir öffnen einfach wieder das Hauptmenü. Also addieren wir uns zum Viewport und dann gehen wir in unseren Spielmodus und rufen GO auf. Jetzt haben wir also Death Screen. Ja. Alles ist ein bisschen versetzt. S. Aber es ist in Ordnung. Wir können sie etwas versetzt lassen. Dies ist kein Endprodukt. Also ich denke, das ist es für dieses. Im nächsten Fall korrigieren wir unsere Bewegung, bei der wir die ganze Tasche die ganze Zeit haben. Im Grunde ist es so, dass ich, wenn ich außerhalb der Karte ziele, jetzt, wo wir diesen Ort erreichen, ihn anmale. Wenn ich das Nachrichtenprotokoll hierher bringe, Nachrichtenprotokoll zwei, Fenster A, Nachrichtenprotokoll. Lass es uns löschen. Wie wird das werden. Sie können sehen, dass es keinen Fehler, keinen Fehler, keinen Fehler gibt. Wenn ich die Maus irgendwo hinbewege , wo sie auf nichts trifft. Es sollte den Fehler erzeugen, ist es aber nicht. Wo ist dieser Fehler? Ich dachte wirklich, es wäre das. Was ist jetzt los? Warum haben wir das nicht, hier ist es. Okay, so war es, wenn ich klicke, lass uns den Fehler lesen. Es ist besser, zuerst die Fehler zu lesen. Eine Bewegungseingabe BP oder ein Zugriff, der nicht versucht, eine Eigenschaft zu lesen, nennen wir Spaß Get P. Also im Grunde haben wir unser Telefon noch nicht besessen. haben wir unser Telefon noch nicht besessen Das ist der Grund, warum das passiert , denn wenn wir mit dem Spielen beginnen und das Telefon spawnen, haben wir es noch nicht besessen. In Ordnung. Nun, eine weitere Sache, die ich erwähnen möchte ist, wenn Sie diesen Textur-Streaming-Pool über 9 K haben, könnte das Ihre Grafik an manchen Stellen ein bisschen schlecht machen . Nun, wenn Sie einen starken Computer haben, liegt der Grund darin, dass dieser Charakter Texturen mit einer Auflösung von vier K hat , und die Standardeinstellung Wir und die Standardeinstellung Wir haben noch viele andere Dinge , die eine hohe Textur Wie Sie sehen können, ist dieses Symbol hier dieses Mal etwas durcheinander geraten Das liegt am Textur-Streaming-Pool. Also, wie kann man das beheben? Wir drücken die Kacheltaste, inx auf eins, und wir drücken R Punkt M. Punkttextur . Nein. Ich lasse es einfach den Befehl suchen, Texturen, Streaming ist Textdampfpool Unsere Größe des Streaming-Pools. Wenn wir dies beispielsweise auf 3.000 setzen , ist unser Fehler behoben. Unsere Texturen werden ebenfalls klar. Aber das bedeutet, dass es unseren Texturen drei K Ram widmet. Denken Sie daran, dass dies V Ram ist, also der Grafikkartenspeicher Es ist nicht der Computerspeicher. Wenn Ihre Grafikkarte nicht so viel RAM hat, würde ich nicht empfehlen, die Größe zu erhöhen. Weit weg. Das wäre für diesen. Ich werde dich beim nächsten Mal sehen, wie du diese Fehler behebst und die Bewegung und das Schießen mit der Maus unterbrichst Wir sehen uns dann, auf Wiedersehen. 104. Erweiterte Mausinteraktion für Elemente: Hallo und willkommen zurück zum Game Design Workshop, dem Kurs zur mit Real Engine Five Erstellung prozeduraler Dungeon-Action-RPGs Zuvor waren wir mit unserem Spiel über den Bildschirm fertig. Wir haben unseren Game Over-Text, einen Text für die Weltrangliste und einen Text für unseren Punktestand hinzugefügt einen Text für die Weltrangliste . Das ist ein bisschen versetzt zwischen ihnen, aber es macht nichts, ob Sie einige Zeit damit verbringen möchten , die Positionen zu korrigieren, seien Sie mein Gast. Jetzt haben wir zwei Tasten für unser Qi und für das Hauptmenü verwendet , wodurch unser Spiel neu gestartet wird Um unser Spiel neu zu starten, verwenden wir den Namen des geöffneten Levels, der das Ganze neu startet, wie wir es besprochen haben, und es zeigt wieder das Hauptmenü an und löscht alles, was wir Das vorherige Ich. Für unser Pfund haben wir einfach ein Pfundspiel benutzt, und das war's. Für unseren Punktestand in Begin Construct haben wir unsere Gesamtanzahl an Münzen berechnet und den Text festgelegt. Lassen Sie uns nun mit etwas Interessanterem beginnen. Gehen wir zu unserem Top-Down-Player-Controller. In diesem Controller finden wir unter dem Cursor eine Funktion namens Standort abrufen. Am Anfang hatte ich es hinter mir. Es ist dieser hier drüben. Wir können ihn auch hier finden. Das ist tatsächlich unter dem Finger. Das wollen wir unter dem Cursor haben. Wir werden es nicht unter dem Finger verwenden, also können wir es löschen, und was auch immer verwendet wird. Wo es benutzt wurde. Wir brauchen das Touch-Event also auch nicht, bis es auch in Ordnung ist. Also, was macht unser „Standort unter dem Cursor abrufen“ bisher? Es verwendet also das Wärmeergebnis unter Cursor für Kanal, und der Kanal ist Sichtbarkeit und Spuren für komplex, und er gibt uns das Wärmeergebnis. So funktioniert es hinter den Kulissen, es erzeugt tatsächlich eine Spurlinie von unserer Kamera bis zur Position unseres Cursors auf unserem Bildschirm und berücksichtigt die Tiefe und ob er auf etwas trifft oder nicht. einem ersten Schritt wollen wir das also In einem ersten Schritt wollen wir das also duplizieren, aber mit einer Spurenkugel, sodass wir den Mauszeiger bei unserem Klick ein wenig vergrößern können . Ein weiterer Grund, wir das verwenden werden, ist, dass wir Lage sein wollen, eine Liste zu erstellen in der Lage sein wollen, eine Liste zu erstellen, deren Zeichen wir ignorieren. Zum Beispiel unser Spieler. Und wenn wir darüber sprechen, gehen wir zu unserem Top-Down-Charakter über. Lassen Sie uns eigentlich zuerst eine Variable auf Controllern erstellen. Nennen wir diese Referenz. Wie Sie sehen können, ist es für mich bereits auf dem VP-Top-Down-Charakter. Wenn du es auf einen P-Charakter von oben nach unten ändern musst. Eine Objektreferenz. Das liegt daran, dass ich einige Dinge getestet und die letzte Variable hier belassen wurde. Nun, da wir unsere Spielreferenz haben, wir sie zu Beginn des Spiels in unseren Charakter von oben nach unten Lassen Sie uns dem Spieler eine Chance geben. Stellen wir die Play-Referenz und stellen wir eine Verbindung zur Play-Referenz her. Und jetzt ist es bevölkert. Unsere Referenz ist gefüllt. Und gehen wir zurück zum Controller, und von unserer Play-Referenz erhalten wir. Kamera, wir werden einen weltweiten Standort ermitteln. Es gibt noch einen anderen Weg, wie wir unsere Kamera für unseren Spielerplan irrelevant hätten machen können Wir hätten den Kameramanager benutzen können. Und daraus hätten wir den Standort der Klimaanlage ermitteln können , der uns den Standort unserer Kamera gibt. Aber dieser Weg ist auch in Ordnung, er macht unseren Spieler nur zuverlässig . Und das ist unser Anfang. Jetzt bringen wir eine Kugelspur mit. Großer Kanal. Lassen Sie uns den Radius auf 20 setzen. Unser Ende sollte unser Standort sein, unser Wärmestandort der Maus. Aber was ist, wenn die Maus nicht auf etwas trifft? Was ist, wenn wir mit der Maus auf nichts zielen? Also, lassen Sie uns eine Filiale einrichten , um das zuerst zu fragen. Hassen wir? Wenn wir heizen, dann erschaffe die Kugel. Wenn wir nicht heizen, werden wir etwas anderes tun. Ich werde diese Dinge hier abschalten, weil wir die Heizwerte an unsere Bedürfnisse anpassen werden. Nun, was machen wir, wenn wir nichts hassen? Nun, was wir machen, ist die Mausposition, und wir werden auch bei Geburt B zur Welt gehen Die Verlagerung in den Wortraum. Der Grund, warum ich das tun werde, ist dass wir, wie wir gerade sehen können, einige Dinge wieder verbinden müssen, wenn wir auf nichts stoßen wie wir gerade sehen können, einige Dinge wieder verbinden müssen, wenn wir auf Stimmt? Wie wir gerade sehen können, wenn ich auf nichts klicke, bewegt sich unser Charakter nicht und wir können sehen, dass der Standort hier drüben ist. Wir können sehen, wo es tatsächlich denkt, wir heizen. Die Musik muss leiser werden. Denn wenn es falsch zurückgibt, es tatsächlich Null zurück. Das müssen wir ändern. Wir müssen in der Lage sein, uns auf unsere Maus zuzubewegen. Wir werden also diesen Ort hinzufügen, das Wort Standort ist ein Vielfaches , kein Addieren. Das ist die Anzeige. Es hat dieses Basssymbol, das macht es zu einer Werbung. Jetzt werden wir uns aber vermehren. Wir werden die Richtung multiplizieren. Und wir werden das in eine Ganzzahl ändern und dieser Richtung einen Bereich geben. 3.300. UM 3.000. Nehmen wir die Reichweite unserer Kamera etwa zwei k beträgt. Wir möchten also, dass sie mindestens niedriger ist als die des Charakters, zumindest auf derselben Bodenhöhe. 3.000 wären also ungefähr in Ordnung. Und was wir tun werden , ist diese Variable, eine lokale Variable, zu bewerben . Und nennen wir das Zitat. Wenn ich zum Beispiel eine Verbindung herstellen soll, trennen wir die Verbindung ein wenig von der Trace-Leitung. Wenn ich das mit den Wasserfällen verbinde und es dann auch hier anschließe und unsere Wärmeposition oder den Ausgang ermitteln soll und es dann auch hier . Wenn wir das hier verbinden, sollten wir jetzt in der Lage sein, zu den Klippen zu laufen. Im Moment klicke ich hier, nein, warum passiert das? Macht keinen Sinn. Das ist nicht der Controller. Was ist der Originalcode? Es passiert nicht, weil der Standardcode bal ihm sagt, dass er sich nur bewegen soll, wenn wir einen Hitzedurchgang haben. Also wenn ich das auch verbinde, dann sollten wir zur Klippe gehen. Ja, wir gehen unserem Untergang entgegen. Es funktioniert Ich kann sehen, wie der Boden hier kodiert. Wir werden das später reparieren, oder lassen wir es so stehen ? Spielt eigentlich keine Rolle. Es geht nur darum, die Wände der Fliese zu positionieren. Das ist also nicht der Controller. Jetzt haben wir gerade das Problem behoben , dass wir uns immer noch dem Nichts zuwenden können, wenn wir nicht zuschlagen . Aber das ist nur eines der Probleme. Lassen Sie uns das trennen, und lassen Sie uns das wieder verbinden und die Verbindung trennen Wenn wir also nicht auf etwas treffen, stellen wir die Position der Hitze auf die Position der Maus und darunter ein Und jetzt fahren wir mit dieser Logik fort. Was wir noch einmal fragen werden, wir auf etwas gestoßen? Lassen Sie uns das auf Kamera umstellen, auf den Trace-Kanal. Wenn wir etwas nicht getroffen haben, bedeutet das, dass die Maus etwas erhitzt, aber wir sollten nicht darauf achten , weil wir uns auf einem anderen Kanal befinden. Oh, das bedeutet, dass unser Standort ein Maus-Wärmestandort werden sollte. Also werden wir unseren Wärmestandort auf unseren Maus-Wärmestandort ändern . Also, wie Sie sich vorstellen können, werden die Spaghetti hier wunderbar sein oder ein kompletter Familienkurs Versuchen wir, es so sauber wie möglich zu halten. Lass uns weitermachen. Wie wir sehen können, haben wir eine Heizleistung. Benennen wir das in Enemy Heat um. Nein, denn so wie unser System funktionieren wird, ist es egal, ob es vom Feind getroffen wird oder nicht, wir werden uns trotzdem bewegen, nicht unabhängig, egal. Nein. Was wir tun werden, ist diese Variable zu bewerben, lokale Variable, nenne das. Es. Feind ist Aushilfe Weil wir wissen, dass wir ein Problem mit demselben Namen Wir stellen sicher, dass der Feind nicht getroffen wurde. Das wäre es, wenn wir keinen AM hätten und wenn wir nicht schießen würden. Jetzt lass uns später schießen. Gehen wir davon aus , dass wir nichts getroffen und es kein Feind ist. Wir klicken nur auf den Boden. Fragen wir, ist das Ding, auf das wir stoßen, ein Objekt? Um das zu tun, werden wir eine Sequenz verwenden. Denn was auch immer passiert, 01 ist eine gleichmäßige Ausgabe, und unsere Null ist eigentlich eine gerade Ausgabe, und unsere Eins wäre etwas anderes. Nun, das sollte hier nicht wirklich verbunden sein. Dieser wäre hier angeschlossen, weil wir unseren Wärmestandort nicht ändern wollen, aber wir wollen die Temperatur unserer gegnerischen Hitze ausschalten, die standardmäßig ausgeschaltet ist Selbst wenn wir ihn hier anschließen würden, wäre das nicht wirklich wichtig, denn standardmäßig Aber lass uns fair sein. Das ist also weg. Wenn wir nach einem Gegenstand suchen, sollten wir überprüfen, ob unser Heizkörper gültig ist. Ich werde unser Wärmeergebnis ändern. Ich werde es herbringen und fragen, ob der andere Schauspieler gültig ist. Das wäre der Beginn unserer Reise zur Erkennung von Gegenständen. Eine Sache, die wir tun sollten, ist, bevor wir mit dem Code weitermachen, zu unseren interagierbaren Objekten zu unserer Truhe zu unserer großen Truhe gehen , p die Truhe auch hier drüben. Womit interagieren wir noch? Die Raumrequisiten. Ich denke, das ist es, und zu den Gegenständen gehen wir natürlich zu den Artikeln und dem BP-Artikel Gehen wir zu Big Chest plus Defaults und suchen dort nach Tug. Setzen wir das Tag I ein. Ich werde das speichern und es auch in die Truhe legen Ich für Item for Interactable, ich weiß es nicht. Interferenz, das ist der Schlepper, den ich gewählt habe. Sie können natürlich Ihre eigenen Schlepper auswählen. Denken Sie nur daran, sie richtig zu platzieren. Gegenstände und Truhen des Tags I, weil wir sie als Gegenstand anklicken können Nun, ich denke, das ist ein guter Haltepunkt für diesen. Wir fahren mit dem nächsten mit unserem Code für vier Artikel fort. Auf Wiedersehen. 105. Mausinteraktionssystem und Eingänge: Hallo, und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dangon Action A BZ Zuvor haben wir die Position der Maus unter Cursor beibehalten Position der Maus unter Cursor Funktion, im Grunde ist unser Maus-Wärmeergebnis das benutzerdefinierte Maus-Wärmeergebnis, das wir erzeugen, und wir haben damit begonnen, unsere Hitze unter dem Cursor zu platzieren. Wir haben überprüft, ob wir etwas binden, ob wir etwas erhitzen, und wenn wir das nicht getan haben, ermitteln wir unsere Mausposition, werfen ihren Ring zur Weltposition ab und erhalten einen Punkt in diese Richtung, 3.000 sind ihren Ring zur Weltposition ab und erhalten einen Punkt in diese Richtung, tatsächlich in Reichweite zu dieser Richtung und haben das als Wärmeposition festgelegt Wenn wir nun auf etwas treffen, erzeugen wir ein Kugelrennen mit einem Radius von 20, das bei unserer Kamera beginnt und bei der Wärmeentwicklung unserer Maus endet Wir fragen, ob wir erneut etwas getroffen haben , weil wir dieses Mal nach Kameraspuren suchen. Wenn wir etwas getroffen haben, stellen wir die Hitze ein, wenn wir nichts getroffen haben, wir überprüfen die Position, wir setzen die Position auf das Ergebnis des Mauszeigers, das Ergebnis und wir stellen ein, dass wir keinen Feind getroffen haben. Dann müssen wir noch ein paar andere Dinge tun, und wir bekommen den Rücksendeschein. Aber das nächste, was wir tun sollten, und wir haben damit angefangen, war unser System um zu überprüfen, ob wir über etwas schweben oder nicht Und die erste Maßnahme in dieser Hinsicht besteht darin, unser Wärmeaktor-Ergebnis zu Außerdem fügten wir unserer Truhe, unserer Kiste, unserer Truhe, unserer großen Truhe und unseren Gegenständen, den Zug, hinzu Kiste, unserer Truhe, unserer großen Truhe und unseren Gegenständen, den Zug, Oh, das ist das nächste, was wir überprüfen, nachdem wir überprüft haben , ob der Schauspieler gültig ist Hat der Schauspieler den Zug I. Also einen Zug und den Ast und den Buchstaben I, und wir haben auch diese Frage beantwortet Lassen Sie uns nun mit einem Ast beginnen, was der Fall wäre, wenn das, was wir treffen, kein Gegenstand ist Was wir brauchen, ist eine Funktion. Also werden wir eine Funktion erstellen. Nennen wir diese Funktion Ear em Elect. Denn wenn wir damit nicht auf etwas treffen, dann haben wir kein Ziel. Um diese Funktion zu füllen, benötigen wir zwei Variablen. Keine lokalen, normale. Wir werden sie machen und das wird die Art von Handlung sein. Das wäre unser vorheriges Ziel. Nehmen wir an, wir bewegen den Mauszeiger, weil wir den Mauszeiger über den Objekten bewegen. Lassen Sie uns den anderen Elternteil benennen. Also, was machen wir mit diesen Gegenständen? Denken Sie daran, dass wir bei der Erstellung des PP-Elements diese beiden Start-Hover- und Ende-Hover-Nachrichten erstellt haben , also Nachrichten auf der Blueprint-Benutzeroberfläche Wenn wir also mit der Maus über unser Objekt fahren, sollten wir den Mauszeiger auf alle Objekte, die wir gerade in der Hand hielten, beenden Also werden wir unsere Vorschauen bekommen und wir werden Und wenn unsere Vorschauen gültig sind, hier, dann über das Ende der Hover-Meldung Dann werden wir überprüfen, ob der aktuelle Hover gültig ist. Und wir werden eine Verbindung herstellen, ob der Hover mit dem Bus nicht gültig ist und natürlich auch der Endehover Wir werden das Gleiche für diesen machen. Wir werden dieses Jahr Copybase kopieren. das etwas näher bringen beenden wir Hover mit dem, worüber wir gerade schweben Und dann setzen wir das aktuelle Over und das vorherige Over auf Null, sie sind nicht mehr gültig Wir werden das ungültige auch hier verbinden. Nur für den Fall, dass das gültig ist und es nicht gültig ist oder wir alle unsere Grundlagen abdecken. Kehren wir nun zu unserer Funktion zurück und rufen wir diese neue Funktion auf. Autoartikel auf „Falsch“ ausgewählt. Wenn wir also etwas abdecken und es sich nicht um einen Artikel handelt, löschen wir die Artikelauswahl. Wenn wir jetzt über etwas schweben, benötigen wir eine Frage. Ist unser aktueller Hover derselbe wie der Headactor? Entspricht das dem aktuellen Hover? Das ist der Schauspieler. Und wenn es wahr ist, tun wir nichts. Wenn das nicht stimmt, werden wir unseren aktuellen Hover nehmen und wir werden rüber fahren, weil das bedeutet, dass wir etwas Neues bekommen und wir werden rüber weil das bedeutet, dass wir etwas Neues Aber nur wenn das gültig ist, wenn unser letzter nicht gültig war, dann müssen wir überprüfen, ob es gültig ist Denn wenn es gültig ist, müssen wir den Vis-Hover auf den aktuellen Hover setzen Wenn es nicht gültig ist, dann dieser Hitzefehler, ich würde sagen, Sie versuchen, Null auf Null zu setzen Ich würde es nicht mögen. Was wir jetzt tun müssen, ist unseren aktuellen Hover ein wenig auf Hitze zu stellen Hover ein wenig auf Hitze zu Ich weiß nicht, ob du es geschnitten hast. Ich habe dieses Jahr versucht, eine Verbindung herzustellen, und du hast mich nicht gelassen. Und der Grund dafür ist, dass es ein Schauspieler ist, aber das ist eine Figur von oben nach unten. Veränderung. Akteurreferenz, Variablentyp ändern. Großartig, keine Abstürze. Sind Hover und Previous nicht beide Schauspieler. Car Hover sollte nicht der Charakter von oben nach unten sein. Macht Sinn, denke ich. Ich werde das herbringen. Wenn unser aktueller Hover nicht gültig war, bedeutet das natürlich, dass wir ihn direkt an unseren aktuellen Akteur weitergeben Und wir müssen den Start-Chover auf diesen Schauspieler setzen. Aber der Schauspieler weiß, dass es schwebt. Du fängst an zu interagieren. Wir brauchen eine andere Funktion. Aber machen wir es einfach hier und rufen es unter an. Und wir werden es später auffüllen. Gehen wir zunächst zu Event Graph und dann zu unserer erweiterten Eingabe, einem von der KI festgelegten Action-Ziel-Klick. Jetzt werden wir die Beratung nicht verwenden, also werde ich die Verbindung trennen Was wir für unsere Interaktion verwenden werden, ist das Komplette. Das bedeutet, dass ich geklickt habe und es gibt im Grunde einige Regeln, wie man auf denselben Frame klickt und loslässt Aber im Grunde funktioniert es so, dass es passiert, wenn du klickst. Wir werden Click Hold und weitere Details nicht verwenden . Eigentlich sind wir es, weil es hier benutzt wurde, und wir werden einen Teil davon behalten, aber später, nicht jetzt. Was wir jetzt tun werden, ist zu überprüfen, ob unser A, unser Spieler, gültig ist. Damit wir nicht den lästigen Fehler bekommen, den wir die ganze Zeit hatten. Ich will das komplette. Wenn du etwas abschaltest, verschwindet es. Der Grund dafür ist, dass wir dieses R hier haben das die restlichen Optionen anzeigt , weil sie sich verstecken. Wir müssen also fertig sein. Lass uns hier eine Verbindung herstellen. Lassen Sie uns am Anfang tatsächlich kopieren und einfügen. Trig löst diesen lästigen Fehler nicht aus. Und wir werden auch keinen Schauspieler einsetzen. Wir werden den Stop Moving benutzen, aber wir werden unseren eigenen machen. Unser Schauspieler ist gültig, und lassen Sie uns das weiter verbinden. Was wir tun werden, ist jeweils den Spielerstatus, weil wir den Spielerstatus hier drüben haben und wir nur interagieren wollen, wenn wir normal sind. Wir wollen nicht interagieren, wenn wir hacken oder so, wir wählen nicht zufällig Gegenstände aus Und lassen Sie uns tatsächlich diesen Schwellenwert verwenden , den wir haben. Lass uns hier einen Ast anlegen. Also, wenn unsere verstrichene Zeit unter dem Schwellenwert liegt Wir stellen eine Verbindung zum Normalzustand her. Das heißt, wenn ich für eine bestimmte Zeit auf ein Objekt klicke und es nicht loslasse, passiert das nicht. Interact wird nicht stattfinden. Also muss ich nur klicken und loslassen, damit die Interaktion stattfindet. Wenn ich nur mit der Maus auf „Rest“ klicke, sollten wir keine Artikel auswählen können Nun, auf diese Weise sollten wir eigentlich nicht in der Lage sein, Artikel auszuwählen Wenn wir diesen Knoten nicht verwenden, können wir auf Elemente klicken, z. B. den Mauszeiger über das M bewegen und entscheiden, wann wir ihn freigeben und ihn einfach pixen Aber lassen Sie uns dafür sorgen, dass Sie keine Artikel auswählen können, wenn Sie sie in der Hand haben Also, wir werden hier zwei Zweige verwenden und wir werden diese Interaktionsfunktion einführen. Wenn wir es nun so belassen, wir jedes Mal, wenn wir klicken, versuchen wir jedes Mal, wenn wir klicken, zu interagieren. Aber was ist, wenn wir umziehen wollen? Wie unterscheiden wir zwischen diesen beiden, wenn ich klicken und mich bewegen möchte und wann ich klicken und etwas aufheben Nun, das wäre einfach. Wir haben unseren aktuellen Hover hier drüben. Wenn das gültig ist, dann interagieren wir. Wenn das nicht gültig ist, bewegen wir uns oder greifen an. A: Bringen wir das her? Ansi brate die Dinge ein bisschen. Ist das auch? Lass uns hier eine Verbindung herstellen. Fügen wir noch eine Sache hinzu, wir sollten diese Frage hinzufügen , d. h. wir bewegen den Mauszeiger über ein Objekt in den französischen Zweig und dann in den Trigger-Zweig Basieren Sie dieselbe Frage, die wir stellen möchten, auf den Auslöser. Schweben wir über einem Gegenstand? Wir schweben nicht mit der Maus über einem Objekt. Wir werden sehen, was später passiert. Wenn wir mit der Maus über ein Objekt fahren, werden wir nichts tun, weil wir überprüfen möchten , wie lange wir die Maus gedrückt halten Im Grunde handelt es sich um ein On-Release-Event mit einem Begriff. Nun, nicht bei der Veröffentlichung, sondern bei einem Presseereignis mit einem. Irgendwas dazwischen. Und das könnte zu dem Schluss kommen unser Interaktionssystem fast abgeschlossen ist. Wir müssen interagieren. Aber wir müssen zuerst ein paar andere Dinge erledigen. Also, lasst uns mit dem nächsten weitermachen. Ich denke, das ist ein netter Höhepunkt für diesen. Ich will dich dann sehen Auf Wiedersehen. 106. Minimalbereich-Interaktionssystem: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon-Action-Rollenspielen Erstellung von Real Engine Five Procedural Dungeon-Action-Rollenspielen Zuvor waren wir mit unserer Interaktionssequenz fast fertig. Wir haben eigentlich mit unserer Suche nach Artikeln geendet , wenn wir Artikel als Teil der Funktion haben. Aber wir haben geprüft, ob es gültig ist. Wir haben überprüft, ob der Schauspieler gegraben hat, um den Schauspieler nicht zu verbinden. Ja, wir müssen den Schauspieler verbinden. wenn es Duck hat, und wir haben bei einer Filiale nachgefragt. Wenn es sich nicht um einen Schauspieler mit I handelt, löschen wir unsere gesamte Auswahl auf eine Funktion, die das Bewegen der Maus in aktuellen oder vorherigen Hoverelementen in beiden beendet Maus in aktuellen oder vorherigen Hoverelementen Und dann haben wir anhand des echten Zweigs überprüft, ob unser aktuelles Ziel das Ziel ist, das wir erreichen Wenn ja, tun wir nichts. Ist dies nicht der Fall, setzen wir unseren aktuellen Hover auf „Hover beenden Wir setzen unseren aktuellen Hover auf den vorherigen Hover und dann setzen wir das Objekt, über das wir den Mauszeiger bewegen, auf unseren aktuellen Hover und unsere Mitarbeiter setzen den Mauszeiger darauf Für den Fall, dass unser aktueller Mauszeiger nicht gültig war, wir also nichts also Wir setzen unseren aktuellen Hover nur auf den Zielakteur Dann gingen wir zu unserer KI-Verbesserungsaktion A über und klicken auf Ziel Das ist schrecklich. Okay. Wir haben den fertigen Zweig der Aktion verwendet , der einige eigene Regeln hat. Und im Grunde haben wir die Regel beibehalten, dass wir nicht interagieren, wenn es an einem bestimmten Schwellenwert gedrückt wird . Und wir haben die Interaktion nicht beendet , weil wir einige zusätzliche Dinge benötigen. Und eines der zusätzlichen Dinge ist , dass wir den Stop-Moving gelöscht haben, also werden wir einen eigenen erstellen. Oh, lassen Sie uns ein individuelles Event erstellen. Nennen wir das Stopp. Wir bewegen uns. Und lass uns ein Bleion erschaffen. Nennen wir es Bleion Wir bewegen uns. Und lassen Sie es uns zu Freunden machen, denn wenn wir aufhören, uns zu bewegen, würde das verschwinden. Wenn wir aufhören, das zu verschieben, wollen wir, dass das wahr wäre Und dann werden wir nachschauen. O überprüfe, ob die Kontroll-P gültig ist , weil wir keine Pacer wollen, bevor das Spiel beginnt Und wir werden eine Eingabe hinzufügen , die Null wäre, wenn der Controller-Punkt gültig ist Aber dadurch hören wir auf, uns zu bewegen. Und warum brauchen wir diese Variable? Nun, wir haben diese Move-Two-Funktion hier drüben. Wir werden sie nicht benutzen. Wir werden bei Tick Event unsere eigene Funktion einrichten. Aber ich schweife ab. Wir sind noch nicht da. Es gibt also neben der Interaktion noch einige andere Punkte, bei denen wir aufhören müssen, uns zu bewegen. Und das wäre, wenn wir zielen, wenn wir weitermachen. Ich glaube, wenn wir Schaden nehmen. Gehen wir also zurück zu unserem Charakter. Gehen wir zu unserem Ziel. Wir brauchen hier die Controller-Referenz, bringen wir den BP-Controller mit. Gehen wir ein bisschen weiter. Lasst uns umziehen. Was uns hierher führt. Nun, Charakter, wir bestehen, wollen, dass das bei jedem Schaden passiert, und zwar nach dem Entfernen einiger Lebenspunkte. Und das Letzte, wo wir es brauchen , ist natürlich nach unserem Tod. Lege es, nachdem wir den Ton abgespielt haben. Okay. Ja, nachdem wir uns jetzt platziert haben, ist alles in Ordnung. , spielt keine Rolle, denn dadurch wird unser Mobbing ausgeschaltet und wir werden es nicht wieder einschalten können Oh. Wir haben unseren Stopp hinzugefügt, wo immer es nötig war. Das ist der Ort, über den wir angefangen haben zu sprechen, dass wir ihn hinzufügen werden, und das wäre die Interaktionsfunktion. Oh, was macht unsere Interaktionsfunktion? Sie prüft, ob unsere aktuelle Version gültig ist. Und dann senden wir eine Nachricht. Korrekt. Und hier hör auf dich zu bewegen. Also im Grunde können wir jetzt mit unseren Dingen in der Welt interagieren. Aber auch weil wir diese Funktion durcheinander gebracht haben, werden wir uns wahrscheinlich nicht bewegen können Lassen Sie uns das ganz schnell überprüfen. Ja, wir können uns gerade nicht bewegen. Aber wir können schießen und uns bewegen, solange wir fantastisch sind. Und dann können wir uns nicht bewegen. Unglaublich. Es funktioniert nur draußen, innerhalb des Labyrinths, es funktioniert nicht wirklich , aber draußen bekommen wir einen Punkt, den wir bekommen sollten Wie dem auch sei, spielt es eine Rolle weil wir bereits die Tools haben, um das zu beheben Wir brauchen nur ein bisschen zusätzlichen Code. Wir haben die Ressource. Ich meine, wir brauchen. Nein. Was wir tun werden, ist te Eigentlich brauchen wir einen Zweig, aber wir brauchen nur einen Lass uns einfach den folgenden löschen. Wir brauchen das Folgende nicht. Wir brauchen das Cast-Ziel und nur False. Denn wenn wir keinen Feind treffen , dann laufen wir. Und wir wollen in keiner Situation laufen. Wir wollen laufen, wenn wir uns im Normalzustand befinden. Lasst uns ihren Staat erreichen. Lass uns eine normale Verbindung herstellen. Wenn wir jetzt normal sind und einen Feind treffen, werden wir schießen. Das ist leicht zu bewerkstelligen. Dafür gehen wir zu unserem Schießmechaniker Das Shooting hier drüben. Und natürlich werden wir wieder ein bisschen schummeln. Wir werden diesen Teil hier verwenden, weil diese Frage über unseren Game-Pod-Controller gestellt wird , und wir werden ein benutzerdefiniertes Event durchführen Nenn es. Zwei und wir verbinden uns einfach hier drüben. Jetzt können wir vom Player-Controller aus von der Spielerreferenz aus anrufen, Shot. Wenn wir jetzt über etwas hinwegfahren, können wir darauf schießen Aber auch hier gilt: Um auf etwas zu schießen, sollten wir in der Lage sein, uns zu bewegen Wenn wir also ein Cache-Ziel gespeichert haben, wenn wir unser Cache-Ziel gespeichert haben, dem es sich eigentlich um unsere Heat - oder Cursorposition handelt, können wir das Verschieben einstellen. Und wie werden wir weiterziehen, nachdem wir die Verschiebung nach gelöscht haben , wodurch kein einfacher Verschiebeort hinzugefügt wird. Ich denke, die vorherige Version fügt nur die Eingabe der Anzeigenbewegung hinzu. Eigentlich in der Funktion folgen. Ja, ich hatte die Eingabe „ Bewegung hinzufügen“. Nein. Lassen Sie uns diese Funktion verwenden, aber ein wenig aktualisiert. Weil wir sie aufrufen werden, und das würde unserem aktuellen Standort ständig eine Bewegung hinzufügen . Lassen Sie uns die Position unseres Teiches auf X und Y überprüfen. Also lass uns das hier kaputt machen. Lasst uns den Ort aufschlüsseln , von dem sie kommen. Dieser Vektor hier drüben ist natürlich der Standort des Spielers, unser Teich. A: Wir werden prüfen, ob das fast gleich ist, y ist für x y mit dem X und Y unseres Eingangsortes. Nehmen wir eine Toleranz von 15, wobei dieser Wert richtig denn was wir später tun werden, bedeutet, dass unser Charakter aufgrund der Waffe den Arm sehr ausgestreckt haben kann. Wenn wir unsere Maus in diesen Bereich bringen, wird das ein Problem sein denn wenn wir versuchen, hier zu zielen und unsere Muskelwaffe da ist. Und das schafft ein Problem. Es wird versuchen, nach innen zu schießen, und sagen wir, nein, das ist nicht möglich Wir werden also einen Bereich um den Spieler herum erstellen, den die Maus tatsächlich, wenn sie diesen Bereich betritt, zu dieser oder dieser Seite bewegt, basierend auf einigen Regeln oder dieser Seite oder aufgrund einiger Regeln Wir werden quasi um unseren Charakter herum eine tote Zone haben. Lassen Sie uns nun überprüfen, ob das für beide gleich, fast gleich ist , denn wenn einer von ihnen es nicht ist, bewegen Sie sich. Aber wenn sie gleich sind, sollten wir festlegen, dass man sich zweifach bewegt. Wir haben unser Ziel erreicht. Zurück zum Event-Graph. Nennen wir arktisches Ereignis. Das wird Perfram heißen, und wir werden es tun, ist gültig Unser Charakter, die Charaktere hier. Und dann machen wir eine Sequenz, weil wir diesem Tick-Event ein paar Dinge hinzufügen werden. Lassen Sie uns nun hier einen Zweig platzieren, Rest der Sequenz und fragen, ob wir weiterziehen. Wenn wir uns bewegen, dann folgen wir. Für den Standort, das Cache-Ziel. Kompilieren und speichern. Theoretisch können wir jetzt laufen Nein. Sogar der vorherige. Und geh. Ich kenne den Grund, weil unser Clear-Status absolut normal ist , der nicht aktualisiert wird, weil wir den Standardstatus des Charakters nicht aktualisiert haben, und der Standardstatus des Charakters ist normal, weil wir ihn geändert haben. Aber das tut es nicht, dann aktualisiert es den Controller nicht. Jetzt können wir also Nein bewegen, und der Rückkehrpunkt, immer die Mitte des Charakters, die sich außerhalb befindet, ist es nicht. Natürlich, weil wir diesen Teil der Funktion noch nicht abgeschlossen haben. Dieser Teil unseres Ganzen ist eher so. Wir haben den Teil der Funktion noch nicht abgeschlossen Wenn wir ein Ziel treffen und es kein Feind ist, was tun wir dann? Also lass uns das beim nächsten machen. Und ich verlasse dich vorerst. Tschüss. 107. Finishing statischer Aufnahmen und Zielen: Hallo und willkommen zum Game Design Workshop und zu den prozeduralen Aufrufen zur Erstellung von Dungeon-Action-PZs mit der Real Engine Five Erstellung von Dungeon-Action-PZs Zuvor haben wir mit unserer Interaktionsfunktion begonnen, sind aber mit der Bewegung fertig geworden Ich hoffe, wir haben auch die Interaktionsfunktion fertiggestellt. Wir werden schauen, wann wir uns bewegen können und eine Truhe oder einen Gegenstand auswählen. Als Nächstes haben wir die Stopp-Move-Mechanik entwickelt, die unseren Bewegungsbarren in Stürze umwandelt und eine Bewegungseingabe von Null hinzufügt , wenn unser Spieler-Controller gültig ist Wenn die Spielfigur unseres Spielers gültig ist. Es tut uns leid. Dann haben wir mit unserem Auslöser weitergemacht, das heißt, wenn wir anfangen zu klicken, läuft er weiter, während wir den Klick gedrückt halten Dann lass es uns noch einmal durchgehen. Zuerst überprüfen wir, ob unser Spieler gültig ist, und dann, ob unser Ho gültig ist, denn wenn wir mit der Maus über einen Gegenstand fahren, sollten wir uns nicht auf diesen Gegenstand zubewegen Wenn wir uns diesem Gegenstand nähern wollen, wenn wir uns zum Beispiel nicht in Reichweite befinden, könnten wir hier einen Code eingeben, wenn wir uns nicht in Reichweite des Gegenstands befinden, ob wir uns auf den Gegenstand zubewegen, wenn nicht, was wir damit machen wollen Oh, dann haben wir überprüft, ob sich unser Player im Normalzustand befindet. Wenn sich unser Charakter also im Normalmodus befindet, überprüfen wir, ob wir mit dem Cursor auf einen Feind treffen, oder wenn nicht, setzen wir die Position unseres Heats auf unser Ziel und wir setzen Moving auf True. Wenn wir nur drehen , haben wir hier in Shoot from the Branch ein benutzerdefiniertes Ereignis erstellt from , weil wir das nicht benötigen und es der gleichen Logik folgt. Nun zurück zu unserem Controller. Der Grund, warum wir den Zug auf True setzen und wir das Wurfziel setzen, ist, dass unsere Bewegung durch unser Tick-Event gesteuert wird, dem wir gefragt haben, ob der Spieler gültig ist, ob unsere Referenz des Spielers gültig ist, und dann überprüfen wir, ob wir uns bewegen oder nicht. Wenn ja, verwenden wir die Follow-Funktion, die uns areal zur Verfügung stellt, die dem Paar den kontrollierten Teich zuweist, es erhält seinen Standort, es erhält einen eindeutigen Richtungsvektor von zwei und es bietet diesen, um Bewegungseingaben hinzuzufügen. Wir haben diese Funktion aktualisiert, indem wir anhand der X- und Y-Werte des Ziels und unseres aktuellen Standorts überprüft haben, ob wir unser Ziel erreicht X- und Y-Werte des Ziels und unseres aktuellen Standorts überprüft haben, ob wir unser Ziel Und wenn das stimmt, dann bewegen wir uns nicht mehr weil wir unser Ziel erreicht haben. Und wir haben herausgefunden, dass wir uns noch nicht bewegen können, denn wenn wir mit der Cursor-Funktion zu unserem Standort um get gehen , können wir sehen, dass unser Zielort nicht gesetzt ist , wenn wir mit unserer Trace-Linie auf etwas stoßen. Nun, diese Logik ist es einfach nicht. Was wir tun werden, ist unser Wärmeergebnis hier zu ermitteln, weil wir daraus Werte benötigen werden. Aber wir müssen uns fragen, ob es der Schauspieler ist, mit dem wir einen Feind verärgert haben. Also als Markierung e. Aber wenn es nicht die Markierung E hat, dann treffen wir keinen Feind. Wir werden die Logik, einen Feind zu treffen, später anwenden. Aber vorerst werden wir das Falsche mit dem Hier verbinden . Vielleicht müssen wir das etwas weiter voranbringen. Das ist in Ordnung. Das wird langsam zu Spaghetti in Portionsgröße für Familien. Aber ich denke, es ist in Ordnung. Aber wenn wir ins Spiel gehen, können wir uns tatsächlich bewegen, wir können Ida erschießen. Aber das Problem liegt beim Zielen. Wir können nicht zielen. Ich kann die Umschalttaste drücken und mit dem Schießen beginnen, aber ich kann nicht zielen, wo ich schieße. Lass uns das reparieren. Wir werden fragen, warum das Fortbestehen der Bewegung ist Ich werde hier einfach ein „ist gültig“ eintragen Hoffentlich wird das Problem dadurch behoben. Ja, kein Fehler mehr. Endlich. Jetzt müssen wir darauf zielen, wo wir schießen. Und dazu müssen wir tatsächlich das System schaffen, von dem wir gesprochen haben, dass es zwischen einer bestimmten Reichweite unseren Vorwärtsvektor und unser Zielen, unsere Rotation ausgleichen wird . Gehen wir einfach los und fügen ganz schnell zu unserer Zielposition unter dem Cursor hinzu, pure. Wir müssen diesen Namen sowieso ändern. Fügen wir dem Rücksendeschein zwei Variablen hinzu. Einer von ihnen wäre ein Vektor. Nennen wir das Vorwärtsstreben. F, nicht wahr? Vielleicht. Und dann brauchen wir einen anderen Vektor, aber diesmal einen Rotator Nennen wir das Fation, was eigentlich die normalen Variablen einschließt, aber wie dem auch sei, lasst uns diese beiden Variablen in lokale Variablen umwandeln Nennen wir sie nach dem Over-Dame-So-FA und von Anfang nach nach Set Over-Dame-So-FA und von Anfang nach nach Lassen Sie uns sie auf etwas einstellen. Machen wir uns daran, das Problem zu demonstrieren Was hier vor sich geht , für unseren Offset für A bekommen wir unseren Charakter. Eine Referenz, wir werden einen Vorwärtsvektor als Vorwärtsvektor verwenden. Und für die Rotation. Lassen Sie uns den Standort des Schauspielers ermitteln und unser Heat-Ergebnis abrufen, das heißt, es zu kopieren, hier ist es, holen wir uns unser Heat-Ergebnis, und wir werden es tatsächlich vom Schauspieler herausfinden. Rotation. Kein Verwandter, tut mir leid. Rotation, und es wird bei unserem Charakter beginnen und es wird bei unserem Heat-Ergebnis enden . Damit das funktioniert, brauchen wir etwas Code. Wir müssen irgendwo die Rotation festlegen, und wir werden zu unserem E-Event gehen und von da an gehen wir zu einem aus unserer Sequenz. Also werden wir den Spielerstatus einschalten. Weil wir manchmal unsere Charakterrotation nicht ändern wollen. Im Grunde gibt es nur zwei Fälle, in denen wir die Charakterrotation ändern möchten. Entweder von der normalen Route oder von der A. Re-Route her. Ich kann beide verbinden und wir bekommen unsere Spielreferenz und diese Rotation. Drehung des Autos. Wir werden hier etwas Platz brauchen. Ein bisschen mehr. Ich denke, das ist in Ordnung. Oh, was wir tun werden, ist, in unser Internatsstudium zu gehen. Wir werden es konstant machen. Das bedeutet, dass wir mit einem konstanten Wert rotieren , der auf einem Tempo basiert auf unserem Delta T basiert. Für Delta T verwenden wir das Tick-Event. Das macht es zwar rahmenrelevant, aber es ist in Ordnung. Und aus Geschwindigkeitsgründen werden wir 100 verwenden. Und was ist unser derzeitiger? Nun, wir holen uns unsere Spielerreferenz. Wir werden eine Rotation bekommen. Wir werden das oder das Aktuelle verwenden, aber das Ziel, wir ändern X und Y nicht. Wir werden das Gleiche beibehalten, also machen wir das hier. Wir werden das kaputtmachen. Roll und Pitch bleiben gleich. Yo, das sich umdreht, wird das Einzige sein , das sich verändert. Lassen Sie uns also die Position unserer Maus auf der Funktion „Vorkommen“ ermitteln. Mach das kaputt. Lass uns das verbinden. Und noch etwas, bevor wir fertig sind. Kehren wir zu unserem P-Top-Down-Charakter zurück. Gehen wir zu unserem Spawn-Geschoss und ändern den Vorwärtsvektor , den wir von der Kapsel hatten, also den Vorwärtsweg , den wir Holen wir uns unsere Player-Controller-Referenz. Lass uns ohne den Git weitermachen. Nein. Das ist nicht der Name. muss ich bekommen, um Patienten zu bekommen Patienten Ich muss das Ergebnis unter Kersor herausfinden Das ist unsere Funktion. Aber dieser. Gehen wir zu unserem GT-Standort unter der Kursor-Funktion. Lass uns das überprüfen Diese Funktion ist standardmäßig durch einen Zugriffsbezeichner geschützt, was bedeutet, dass sie von nichts anderem aufgerufen werden kann . Machen wir es öffentlich Wir können darauf zugreifen. Ich werde den Standort unter dem Mauszeiger ermitteln, hier sind wir, und wir werden unser Offset-Vorwärtsziel abrufen und hier eine Verbindung herstellen. Lass uns spielen gehen. Das wird uns eine Art Rotation geben. Und wie Sie sehen können, drehen Sie sich in Richtung meiner Maus. Aber sehen Sie, dass die Kugel im Vergleich zu der Stelle, an der ich klicke, einen kleinen Versatz hat? Das liegt daran, dass wir uns auf einer Drei-D-Welt befinden und versuchen, auf eine Zwei-D-Welt zu zielen. An manchen Stellen ist es also in Ordnung, es ist direkt, wenn wir zum Beispiel in diesen Winkel gehen, können wir sehen, dass es direkt auf der Kugel auf der Maus ist, o Es gibt einen Winkel, der fast direkt ist, und jeder andere Winkel, fängt er an, sich zu verschieben. Lassen Sie uns nun die erforderlichen Berechnungen durchführen, um diesen Offset zu ändern, damit er richtig ausgerichtet wird. Gehen wir also zurück zu unserer Zielposition unter ers Pure, und wir werden eine Menge Platz benötigen , um diesen Weg hierher zu ziehen. Vielleicht ist es genug Platz und wir werden diese beiden trennen Lassen Sie uns damit beginnen, die Richtung unserer Schnauze zu berechnen. Wir holen uns die Spielerreferenz und wir besorgen einen Maulkorb Aus unserer Schnauze holen wir uns die Welt-Action. Wir brauchen hier eigentlich nur das Z , ich werde das kaputtmachen Die Richtung zwei wäre unser Wärmestandort. Lassen Sie uns unseren Wärmestandort ermitteln. Lasst uns auch das kaputtmachen. Warum machen wir das? Warum müssen wir die Richtung finden? Weil wir die Richtung von der Waffe zum Ziel kennen müssen , auf das die Maus zeigt , um das Ziel entsprechend einzustellen. Lassen Sie uns die Subtraktion durchführen, um die Richtung zu finden, in der das Minus Jetzt müssen wir die Richtung von der Kamera zum Maus-Git berechnen , da die Kameraperspektive aufgrund unserer isometrischen Ansicht beeinflusst, wie wir Ziele sehen und darauf zielen aufgrund unserer isometrischen Ansicht beeinflusst, wie wir Ziele sehen und darauf zielen Was wir wirklich tun, ist, den Standort in den Weltraum umzurechnen Lassen Sie uns auch das Y verbinden. Es ist irgendwie wichtig. Und der nächste Ort, wir brauchen, ist die Kamera, damit wir unseren Player holen. Wir haben unseren Spieler hier. Wir holen die Kamera. Holen wir uns den Standort des Wortes. Subtrahiere diese beiden Ermitteln Sie die Richtung von der Kamera in Richtung der Mauswärme, der Position des Mausworts Der nächste Schritt wäre die Normalisierung dieser Skala. Normalisieren wir nun die Z-Komponenten dieser beiden Unterschiede, um den Richtungsvektor anzupassen die Höhenunterschiede zwischen der Kamera und der Waffe und dem Ziel berücksichtigt , da all diese drei unterschiedliche Z-Achsen Nun, für diejenigen, die neu in Mathe sind , was ist Normalisierung Nun, es ist der Prozess, bei dem Werte, die auf verschiedenen Skalen gemessen wurden, an eine gemeinsame Skala angepasst werden, falls das Sinn macht So wie wir das machen , werden wir dieses Ergebnis knacken. Wir werden uns teilen. Ist das Ergebnis durch das Z, die Richtung des Ergebnisses der Richtung von unserem Muskel zu unserer Wärme im Vergleich zu unserer Wärme und der Richtung, das Ergebnis unserer Kamera und unserer Maus auf dem Bildschirm. Und was wir tun müssen, wir müssen daraus einen Vektor machen. Es ist eine elementweise Einteilung. Also werden wir diesen Ausgangspin in einen Vektor umwandeln. Wie Sie sehen können, wurde aus dieser Division eine elementweise Division , also ein X geteilt durch x, A, also sind all diese Werte identisch. Und das wird unsere Algen ausgleichen. Wir müssen diesen Faktor auf den Unterschied zwischen Kamera und Maus skalieren Unterschied zwischen Kamera und Maus skalieren Multiplizieren wir das mit dem Ergebnis der Subtraktion im Grunde in dieser Richtung und passen es dann an unseren Wärmeort Also werden wir hier unseren Wärmestandort hinzufügen. Da wir unseren Muskel benutzen. Lassen Sie uns wieder unsere Schnauze benutzen, um die Rotation mit dem neuen Offset zu finden Wir werden eine Weltrotation bekommen. Wir werden uns mit Kunst verbinden. Dann verbinden wir das, um zu finden, und lassen Sie uns das hier verbinden und wir holen uns die Welt. Zu und es hier verbinden. Aber wir sind noch nicht fertig, aber schauen wir uns an, was wir geschaffen haben. Du siehst, wo ich klicke, ich ziele tatsächlich. Hier wird die Kugel hinfliegen, wo ich klicke. Aber wenn ich meinem Charakter zu nahe komme, kann man sehen, dass plötzlich eine Kugel von hinten kam. Dieser kollidiert tatsächlich mit einem Charakter. Wir erschießen uns selbst. Ich glaube, ich kann es wieder dazu bringen, von hinten zu schießen. Hast du gesehen, dass das unglaublich war? Außerdem läuft unsere Animation langsam ab. Kannst du sehen, dass die Animation stark nachlässt weil wir zu nah an der Schnauze sind In diesem Fall hat also die Priorität des Modells Vorrang, die Drehung des Modells hat mehr Priorität als die Schnauze, weil wir zu nah dran sind Wenn ich ein bisschen weiter weg gehe, ist alles in Ordnung. Wenn ich zu nah rangehe, fangen wir an zu zittern und unser Schießen wird sehr schlimm Nun, ich denke, das ist genug für diesen. Wir werden das beim nächsten reparieren. Auf Wiedersehen. 108. Unter dem Cursor feindliche Mechanik: O Hallo und willkommen zum Game Design Workshop, und willkommen zum Game Design Workshop echten prozeduralen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Engine Five-Action-Rollenspielen Dungeon-Action-Rollenspiel-Kurs zur Erstellung von Engine Five-Action-Rollenspielen Zuvor waren wir mit der Mathematik für unseren Zielversatz fertig der Mathematik für unseren Zielversatz Wir haben unsere Richtung von unserem Muskel zu unserer Wärmerichtung berechnet, und wir haben unsere Richtung von unserer Wortposition zu unserer Kameraposition zu unserer Maus zu einer Bildschirmposition berechnet. Wir haben die Richtung ermittelt, wir haben die Z-Achse anhand dieser beiden Werte normalisiert und ihr die Richtungsskala gegeben, und ihr die Richtungsskala gegeben die auf der Normalisierung hier basiert, und wir haben die Wärmeposition angepasst, um den Offset der Waffen zu berücksichtigen Also haben wir die Wärmeposition zu diesem Ergebnis hinzugefügt , diese Skalenrichtung Nun, aber wir müssen das Problem lösen , dass, wenn wir zu nah dran sind, das Ziel sehr, sehr versetzt ist. Wir müssen nur für die Entfernung überprüfen, ob unser Ernährungsergebnis im Grunde genommen größer als eine Entfernung oder weniger als eine Entfernung im Vergleich zu unserem Charakter ist größer als eine Entfernung oder weniger als eine Entfernung im Vergleich zu . Bilden Sie einen kleinen Kreis über den wir gesprochen haben, um unseren Charakter herum. Und ich habe einen Wert im Kopf. Also lass uns hier einen Ast anlegen. C dann Verbinde das mit dem Zweig, fällt hier hin. Lassen Sie uns hier als Vertreter arbeiten. Und was werden wir tun, um Sie um weniger Entfernung bitten. Wofür ist es weniger? Ich hole mir einen Vektor. Hier werde ich 107 machen. Das ist der Wert, den ich herausgefunden habe, ich höre auf zu wackeln und es stellt sich heraus, Grunde falsche Werte habe Erster Vektor, wir brauchen unseren Muskel. Vektor zwei, wir benötigen den Offset an einer Position. Und wenn das zwei ist, wenn der Abstand größer ist, also sind wir näher an unserem Charakter, diesem Kreis unter dem Charakter, weil das im Grunde der Radius ist Lassen Sie uns zuerst hier eine Verbindung herstellen. Wir werden die Knoten benötigen , die wir hier haben. Wir brauchen den Standort nicht. Wir brauchen nur den Fund, schauen wir uns das an. Und das wird hier beginnen. Das wird ein Vorwärtsvektor sein. Lass uns das Gegenteil von unten bringen, das wird hier sein. Stimmt? Wir werden das verbinden und unser Ziel ist wieder die Offset-Wärme. Wir werden uns mit dieser Heizung hier verbinden . Und das behebt es. Lass uns gehen, Clay. Und wie wir sehen können, können wir nah an unseren Fuhrpark schießen und er wird geradeaus schießen. S. Wir haben geschossen, jetzt können wir zielen, wohin wir wollen. Wir müssen die Zielgröße erhöhen. Es ist klein, es hat eine Zeichenlänge und das ist eine riesige Sache. Aber jetzt können wir uns bewegen und schießen. Aber wir können nicht schießen, wenn wir über einem Ziel schweben. Wir sollten vielleicht hierher ziehen können. Wir haben die Plattformerweiterung vielleicht nicht gemacht. Wir haben es eigentlich nicht getestet. Wir haben es geschafft. Wir haben es getan, sind nicht gegangen. Wir gehen später zu Deb. Wir sollten damit weitermachen, was passiert, wenn wir über einem Feind schweben Das ist ziemlich wichtig. Wir wollen einfach nicht nur schießen , Shift-Taste drücken und dann schießen. Wir wollen in der Lage sein, auch mit Picking zu schießen , also 100 Spiele. Wir haben also einen neuen Wärmestandort. Wir haben jetzt den Wärmestandort eines Ziels. haben es nicht auf dem Boden, das ist die Maus. Wenn wir eine spezifischere Hitze haben wollten, wäre dies der Aufprallpunkt. Dieser Ort wäre zum Beispiel der Ort, an dem wir das Ziel treffen würden. Hatte einen Körper. Aber für uns ist es nicht wirklich wichtig, aber machen wir das zu unserem Wärmestandort. Also werde ich den Standort der Heizung ermitteln. Und ich werde es auf den Aufprallpunkt einstellen. Bevor wir anfangen zu schießen oder so, müssen wir überprüfen, ob wir uns verirrt haben, im Grunde genommen, ob wir in Sichtlinie sind, weil man nicht durch Wände schießen kann. Also, okay, die Position des Hutes kommt von unserer Kamera zu unserer Maus. Aber es weiß nicht, ob unser Spieler eine Mauer zwischen sich und der Maus und dem Gegenstand hat . Also, was wir tun werden, Klammern setzen, wir suchen die Gegenstände trotzdem durch Wände Das sollten wir nicht für unsere Dreharbeiten tun. Also werden wir eine Zeile für Kanal erstellen. Und der Standort der Statistik wäre Maulkorb. Finden wir den Standort der Mündungsstation. Wo wäre das Ende dieses Stücks, Fino Cut, Rotation Ziel ist Standort. Starts sind Schnauze, Vektor. Fügen wir diesen Vorwärtsvektor zu unserer Phase der Ortsbestimmung hinzu. Wir müssen ihm eine Reichweite geben. Also lass uns das multiplizieren. Ganzzahl, was ein Bereich von 2000 ist. Dann fügen wir es zu unserer Board-Position hinzu. Fard in diesem Bereich und an der Quelle , weil das im Grunde ein Punkt ist Also ein Entfernungspunkt, wo auf der Welt diese Entfernung zurückgelegt werden sollte Es hat natürlich auch eine Richtung, weil es vorwärts geht, und das ist es, wie weit. Eine Spur könnte ein bisschen einfach sein. Vielleicht können wir das, egal. Lassen wir es bei Line Trace. Ich würde sagen , wir machen daraus eine Kugel mit einem Radius, damit wir nicht durch sehr kleine Lücken schießen können, aber gut, vielleicht kollidiert die Kugel Wenn es nicht kollidiert, sollten wir aber einen Akteur ignorieren. Also geh zu, und der Schauspieler, den wir ignorieren, ist unser Spieler Ich erhalte unsere Spielerreferenz und verbinde sie hier. Nun, ob wir heizen oder nicht, wenn wir heizen, heißt das im Grunde, wir nicht treffen bedeutet, dass wir keinen Feind getroffen haben, also sollten wir den Feind ausschalten. Eigentlich müssen wir es nicht ausschalten. Geh wieder rein. Dann ist unser Herz unser unheimlicher Ort. Nun, wenn wir unsere Hitze auf unser neues Ergebnis zurückdrehen, das wäre der neue Einschlagspunkt, von unserem Geschütz von unserem Muskel zum Feind Wenn der Akteur ein Ziel hat, hat er einen Schlagzeuger, hier ist es, als G E. Wir werden es entsprechend setzen , weil wir vielleicht andere Dinge treffen, keine Feinde. Wir könnten gegen Wände stoßen. Und eigentlich sollte unser Trace-Kanal die Kamera sein, nicht die Sicht, denn so haben wir die Labyrinthkollisionen eingerichtet Was wir jetzt tun wollen, ist die Elementauswahl zu löschen. Denn an diesem Punkt wir bei der Überschreibung von Aufnahmen nicht darauf klicken, möchten wir bei der Überschreibung von Aufnahmen nicht darauf klicken, um mit Objekten zu interagieren Wir wollen, dass es schießt. Und was übrig bleibt, ist, unsere Over-Vektoren und Offsets zu setzen, und wir brauchen den Return-Node auch, weil das ein anderer Punkt am Ende der Funktion ist Wiederhole die Kopie und füge sie ein, wir brauchen eine feine Glucaroation. Wir brauchen eine, die wir nachbauen können. Hier hier. Und für unsere Rotation wir unseren Standort des Schauspielers an, unseren Spielort des AM-Controllers. Und für unser Ziel benötigen wir natürlich unseren Standort. Und für unseren Offset-Arm brauchen wir unseren Muskel. Lass uns unsere Schnauze holen Was wir brauchen, ist auf das zu zielen, was wir erhitzt haben. Oh. Das ist kein Leitungsspurenwärmer. Das ist eine Spurenwärme in einer Kugel, wir zuerst erhitzen. Oh, das werden wir uns holen, A. Aber wir müssen dort eine Richtung einrichten. Um das zu tun, machen wir es noch einmal, wir machen eine C-Rotation, das Ziel wäre dieser, dann einen Vorwärtsvektor. Ermitteln Sie den Vorwärtsvektor aus diesen Rotationen und wir werden ihn mit unserem Offset verbinden . Und das wäre es Lass uns die Dinger erschießen. Und wir können die Dinger noch nicht erschießen. Der Grund, warum unser Klick-Event noch nicht abgeschlossen ist. Nein. Eigentlich ist das nicht der Grund. Der Grund ist, dass wir die Änderung des Maustyps de noch nicht abgeschlossen haben, wofür wir verantwortlich sind, ob wir einen Feind treffen oder nicht, aber lassen Sie uns mit dem Klick-Event beenden, weil wir noch sehr wenige Knoten übrig haben. Nun, ein Punkt, den wir tun sollten, ist, dass die Bewegung abnimmt, wenn unser Schwellenwert niedriger ist. Das heißt, wir können treten und uns bewegen. Wahr gegen Wahr, Falsch und Falsch. Das wird also den kleinen Bug, den wir gesehen haben, tatsächlich beenden. Aber ich habe geklickt und es hat angefangen, sich zu bewegen, ohne zu enden. Wenn ich jetzt die Maustaste loslasse, bewegt sie sich nicht mehr. Und wenn ich klicke, vorher, als ich mit der Maus geklickt und sie losgelassen habe, bewegt sich der Charakter weiter Aber lassen Sie uns mit unserem Angriff fertig werden. Das war eine kleine Klammer. Betrachten wir das als Klammer für den Angriff. Wir müssen den Cursor verwenden , um von Normal zu Crosser zu wechseln, und gleichzeitig unseren Charakterstatus so ändern, dass Ausgehend von unserem Tick-Event muss das ständig passieren die Maus bewegen, müssen wir sofort wissen, ob etwas unter uns liegt. Ich bin Feinde unter uns. Wir werden eine Filiale machen. Wir werden unsere Funktion Standort ermitteln unter Cursor platzieren. Und wir werden es verbinden. Zimmer. Dann machen wir es einmal. Beides oder Stürze, denn was auch immer passiert, muss einmal passieren, und beide setzen sich gegenseitig zurück. Wir werden eine Sequenz erstellen, beide kopieren und einfügen und als Erstes setzen sie andere zurück. Also, was machen sie als Nächstes? Sie ändern die Beweglichkeit , wenn wir einen Feind durchschlagen, wir überqueren ihre, das ist die Maus, die wir entworfen haben Wir haben es mit unserer roten Maus übertrieben. Ist das. Hier haben wir ein Problem. Wenn wir zielen, sollten wir den Cursor nicht ändern, also wollen wir auswählen. Wir werden prüfen, ob unser Spielerstatus gleich, gleich gleich ist. Zwei a. Wenn das stimmt, behalten wir das Fadenkreuz Wenn nicht, kehren wir zur Standardeinstellung zurück. Wenn ich es so belasse, gibt es ein Problem damit, dass das echte D nicht konkurriert. Was funktioniert. Arbeitet. Alles klar? Ich denke, wir werden das nächste Problem lösen. Ich sehe dich dann, auf Wiedersehen. 109. Korrekturen an der Nachprozess-Schablone und Feinderkennung: Hallo und willkommen zurück zum Game Design-Workshop und zum prozeduraler Dungeon-Action-RPs mit Real Engine Five Dungeon-Action-RPs Zuvor hatten wir den Teil unseres „Das ist kein Gamecontroller“ damit abgeschlossen , dass unser Charakter von oben nach unten zielt , dass unser Charakter von . Das ist ein Charakter. Das ist ein Controller. Wir sind also mit unserem Teil der G-Ortung unter der Sor-Funktion in unserem Gamecontroller fertig. Aber wenn wir einen Feind ins Visier nehmen, dann schauen wir nach. Wir werfen tatsächlich eine Spurlinie von unserem Trefferpunkt aus, dem Einschlagspunkt. Gehen Sie von unserem Muskel aus gut in Richtung des Wärmeeinschlagpunkts. Also, wenn diese Linie etwas Hitzespuren enthält, bedeutet das, dass wir vielleicht einen Feind haben, wir könnten gegen eine Wand gestoßen sein. Wir wissen es nicht. Wenn es nichts trifft, was wahrscheinlich nie der Fall ist, dann stellen wir unsere Wärme wieder auf unsere normale Hitze um und dann passieren die nächsten Dinge. Aber wenn wir etwas treffen, prüfen wir, ob es ein Feind ist oder nicht. Das setzt den Hitzefeind also temporär variabel. Dann gingen wir los und löschten die Objektauswahl , denn wenn wir einen Gegenstand in unserer Auswahl hätten, sollten wir ihn nicht haben, weil unser Klick interagieren würde, anstatt zu schießen. Und dann fuhren wir mit der Einstellung der Rotationsversätze und der Entfernung zwischen unserem Muskel und unserem Wärmeaktor Wir haben den Vorwärtsvektor der feinen blauen Rotation verwendet, um den Vorwärtsvektor festzulegen, und wir gehen von unserem Spieler zu unserer Wärmeposition, um die Rotation zu finden, auf die wir schauen müssen Jetzt hatten wir einige Probleme. Außerdem haben wir unser Klick-Event als kleine Klammer beendet unser Klick-Event als kleine Klammer die Bewegung zu stoppen, wenn wir den Klick loslassen, weil er sich ständig bewegt hat Und dann haben wir den Mauszeiger geändert je nachdem, ob wir einen Feind treffen oder nicht, sodass wir unsere Events auf der Grundlage dieses Zweigs hier drüben ausführen müssen, und sie setzen sich gegenseitig zurück, und wir setzen Was ich nun zeigen wollte, was nicht unbedingt jedes Mal passiert, ist, dass die Maus ihre Position zurücksetzen kann , wenn wir das Widget ändern Es kann einige Probleme geben. Aber wir haben es nicht geschafft, das zu zeigen, weil es ein Problem mit der Ausrichtung gab. Ich vermute, es ist ein Kollisionsproblem. Wir werden nachsehen. Aber was wir als Workaround tun sollten, könnte jetzt behoben sein. Aber wir werden eine Position einrichten. Und die Position, an der wir die Maus einstellen werden, ist die Mausposition. Also werden wir eine Position bekommen. Und Gate. Es rundet diesen Wagen ab. Es macht es automatisch, wenn Sie versuchen , es mit Integer zu verbinden, und dadurch wird unsere Position im Grunde beibehalten. Oh. Lass uns herausfinden, was vor sich geht. Warum konnten wir es nicht? Lassen Sie uns diese Situation nachstellen. Wir hatten ein Haupttor , auf das wir nicht schießen konnten . Es gibt ein Höllentor. Bringen wir den Charakter der Kachel mit, den Charakter. Neben dem Höllenbop. Hier schießt es auf uns. Ich werde den Sound wieder schließen. Und ich werde alles wieder in Besitz nehmen. Wenn ich ein Tor auswähle, passiert nichts. Schauen wir uns also an, was bei unserem Targeting passiert. Ich hole den BTN-Controller, trenne ihn ab und bring ihn her. Das dockt es an. Ich bin mir nicht sicher. Vielleicht abdocken. Ich gehe zur Position der Funktion t unter Cursor. Das ist die Funktion, die wir überprüfen wollen. Und was uns interessiert, ist dieser Zweig hier drüben , ob er einen Feind findet oder nicht. Und jetzt, um zu zeigen, was vor sich geht. Wir müssen hier darauf klicken. Es könnte heißen, dass es nicht der Bug ist, aber es könnte hier auch automatisch sein. Jetzt können wir die Fehlerzeile sehen. Also werden wir es hierher bringen. Wenn ich nichts anstrebe, läuft es richtig. Aber wenn ich zum Ziel gehe, ja, passiert nichts. Ich glaube nicht, dass es daran liegt, dass wir eine kleine Kollision haben. Ich glaube, das liegt daran, dass ich die Kollision erst später erklärt habe. Aber wir haben einige Erklärungen abgegeben. Lass uns zur Kapsel gehen. Was wir eigentlich tun müssen, ist die Kollisionsvoreinstellungen auf Benutzerdefiniert zu ändern , und wir wollen die Kamera blockieren Wir können uns mit allem anderen überschneiden, aber wir wollen die Kamera blockieren Der Kollisionskanal der Kamera, der für das, was dort steht, keine Rolle spielt. Wir haben gerade entschieden, dass diese Reaktion auf das Rennen für uns blockiert wird und wir werden unsere Treffer darauf aufbauen. Es spielt keine Rolle, deshalb haben wir uns für Kameras entschieden , weil es egal ist, was hier steht. Es ist wichtig, wie wir uns entschieden haben , das System zu verwenden. Das sind nur die Sets , die Unreal eingerichtet hat, aber es ist klug, sie so zu verwenden, wie sie beschrieben sind da viele Mechaniken die Engine überfordern , die mit dieser Logik arbeitet Aber auch hier gilt: Wenn du deine eigenen Dinge kreierst, kannst du programmieren, was du willst Zumindest funktioniert es und andere Leute können es lesen. Lass uns Play drücken. Ich denke, das wird das Problem beheben. Eine Maus sollte rot werden, wenn wir feststellen dass L Gate nicht in dieser Karte enthalten ist, also werde ich es erneut versuchen. Wir werden hier jede Menge haben. Der Teufel mit der Wahrheit, die Maus wird rot. Es ist wie das Tor und ich kann lesen. Ich kann dort öffnen. Ich habe keine Gesundheit mehr und ich tappe in eine Falle. Wo ist die Gesundheit meines MCs? Fangen Sie an zu spielen Hier sind wir. Max' Gesundheit, sagen wir es zurück auf zehn. Also sterben wir nicht sofort. Wenn du wirklich grausam sein willst, kannst du sofort sterben. M-Spieler können sofort sterben, wenn sie auf eine Falle treten und sie haben eine Gesundheit. Das Letzte, was wir für unseren Charakter tun sollten , wäre, zu den Projekteinstellungen zu gehen. Das ist für Tencel Aston Depth Stan Sil Pass, und statt es mit Schablone aktivieren Das nächste, was wir tun werden, ist zu unserem Level zu gehen und eine Nachbearbeitung falsch eine Nachbearbeitung C. Nach der Bearbeitung des Volumens wollen wir Wortwelt auswählen. Wie lautete der Name? Wonach wir suchen, ist unendlich zu sein. Ja, ungebunden in dieser unendlichen Ausdehnung. Das nächste, was wir tun müssen, ist zu unseren Prozessmaterialien überzugehen zu unseren Prozessmaterialien überzugehen Findet sie. Fügen wir diesem Array ein Material hinzu. Wäre unser Prozessal . Mein Postprozess. Ich denke, es gibt einen Fall. Mein Posenprozess besteht darin, das wäre es. Und dann sollten wir zu unserem Charakter oder zu unserem statischen Mesh-Custom gehen unserem statischen Mesh-Custom Mesh-Custom Wir müssen das aktivieren. Suchen wir also nach der benutzerdefinierten Rendertiefe. Ja, wir wollen das und wir werden das auf 21 setzen. Jetzt können wir theoretisch unseren Spieler hinter Mauern sehen. Ja, hier ist es. Und so funktioniert es so, dass unser Material, lass uns für eine Sekunde nur das Material Ich weiß. Das wurde mir erklärt. Das ist der Fall, das. Es versteckt sich also zwischen der Grundfarbe und der Farbe, die hinter dem Ziel erscheinen soll B ist das Ziel Und das wird durch eine Maske wie diese hier entschieden. In diesem Teil geht es darum, das Material selbst zu verändern, und hier geht es darum, welches Material sie im Grunde zeigt Weil wir also den Wert Eins haben, wo wir viele Eins-Werte haben, aber ich denke trotzdem, ist dieser, wenn das ein anderer Wert wäre, würde das, glaube ich, beeinflussen, welche Schneckentiefe wir gesagt haben, wenn ich das richtig verstanden Wenn das also eine Zwei für unseren Charakter wäre , dann sollten es zwei sein Und weil alles andere auf der Welt Null ist, würden wir zum Beispiel die beiden sehen. Oder ich denke, es funktioniert einfach mit dem Einen und was auch immer auf der Welt sonst noch so ist. Ja, ich glaube, das ist es. Ich glaube, alles auf der Welt ist Null. Weil das eins geworden ist, können wir es hinter den Wänden sehen. Und im Grunde ist es das für unseren Charakter. Wir haben unseren Charakter fertiggestellt. Jetzt hat Turn also ein Ich und all die Debugging-Dinge, die wir tun müssen Lass uns noch eine Sache testen. Okay, der Aufzug funktioniert nicht, aber funktioniert die Truhe? Ich habe das nicht getestet? Können wir irgendwelche Artikel abholen? Ich habe ein, das ist das Inventar. Lass mich das benutzen. Gibt es hier eine Truhe? Nein. Wo ist die Truhe? Hier ist es, ich klicke darauf. Jetzt kann ich nicht. Lassen Sie uns für eine Sekunde sehen, warum. Wenn es etwas Einfaches ist, können wir es jetzt vielleicht einfach debuggen Controller, wir sind bei unserer Funktion. Warum ist es wieder eine Kollision? Lass uns spielen. T. Lass uns die Figur direkt zur Brust bringen. Und ich denke nicht, ich schätze, du kollidierst nicht mit dem Ich denke, es ist wieder ein Kollisionsproblem . Lass uns zu unserer Brust gehen. Fingerabdrücke, große Brust. Wir haben keine Kollision. Wir haben nur diese Truhe hier drüben und wir haben sie auf den unteren Teil der oberen gelegt. Unsere Masse wird den oberen erreichen, nicht den unteren. Also vielleicht habe ich es auf den Boden gestellt. Ich werde das kopieren. Wie Sie sehen können, können Sie sogar ganze Gruppen anhand dieser Daten kopieren . Und funktionierende Arbeit, kopiere, weil es nur diese Gruppe PZ hat Ich muss vielleicht die ganze Kollision kopieren. Eigenschaften, als Eigenschaften. Es funktioniert, es ist nicht, es spielt keine Rolle. Lassen Sie uns diese Kollisionen einfach wahr machen. Also wollen wir einfach alles blockieren, um die Kombination von Sichtbarkeit und Bom-Kollision zu blockieren die Kombination von Sichtbarkeit und , als ob es sich um eine Kollision handelt Wenn nein, wird es keine Kollision geben, und es werden keine Überschneidungsereignisse erzeugt. Ich denke, das behebt es. Wenn nicht, werden wir es einfach bei den Kollisionen tun. Charakter neben der Box, was bei näherer Musik sehr nett ist Hier. Oder tut es nicht. Hier nicht einmal unten, ich klicke unten, macht aber eigentlich nichts. Also, lasst uns diese Kollisionseinstellungen kopieren und so machen, dass wir die Kamera blockieren. Du blockierst O, es funktioniert nicht. Fakt ist, in beiden Fällen ist es möglich. Wo es funktionieren sollte. Ich schaue von hier aus noch einmal nach. Um hierher zurückzukehren. Bringen wir den Charakter zur Truhe. Nochmal, es funktioniert nicht. Aber jetzt müssen wir auch die Trace-Linie testen. Das müssen wir debuggen. Also werden wir auswählen. Sagen wir für einen Frame. Mal sehen, ob wir mit der Kiste auf etwas stoßen. Ich werfe an meiner Schauspielerbox aus. Es ist ein h. Die Idee, ich habe den Charakter verschoben, ich bin von Tile weggezogen Also ja, wir treffen hier genau das Richtige. Ich überprüfe. Wir treffen hier auf den Punkt. also die Frage, was wir verlangen, damit Schauspieler Die große Brust hat gezerrt gezerrt Läuft es bis hierher, mal sehen I. Fangen wir mit der Kiste an Wo ist die Kiste? Okay. Nein, diese Filiale wird überhaupt nicht betrieben. Ich habe ein bisschen getestet, und aus irgendeinem Grund, wenn ich es umgekehrt verbinde, stelle ich zuerst eine Verbindung her, dann Null runter und dann funktioniert eins, was keinen Sinn ergibt. Ich vermute, es geht um das Objekt, das wir alle sind, das hier ist, nach dem wir testen Ich bin mir nicht sicher , warum es nicht funktioniert. Normaler Weg, aber ja, das hat es zum Laufen gebracht. Also dann sollte Null runter gehen und dann eins von diesem linken Teil. Ich vermute, weil es diesen tatsächlich gibt. Denk drüber nach. Dieser existiert und dieser nicht es zu debuggen, könnten wir also im Grunde eine Kette von Ereignissen erstellen, aber ich denke, das ist Da es funktioniert. Ich denke, das ist der Grund, warum ich denke, weil dieser beendet wird und dieser nicht irgendwie sicherstellt, dass vor diesem Ausgang läuft Ich denke, das muss die Logik sein. Wie dem auch sei, lass uns spielen gehen. Eigentlich habe ich gespielt und getestet. Wir haben noch einige andere Probleme, die wir in der Lektion beheben werden, und dann werden wir mit der KI beginnen. Der Charakter wirft Wände, nett, wo ist die Kiste. Ich kann den Tooltip nicht sehen und wir werden nachschauen, warum Aber wenn ich darauf klicke, öffnet es sich und die Elemente werden alle an einer Stelle angeordnet Wir werden das beim nächsten herausfinden. Auf Wiedersehen. 110. Fehlerbehebungen für Artikelverteilungen und Brust-Widget: Hallo und willkommen zum Game Design Workshop im Rahmen von Engine Five, Erstellung von Action-Rollenspielen in prozeduralen Dungeons Zuvor waren wir mit unserem Charakter fertig und haben im Gameplay einige Bugs entdeckt Lasst uns jetzt anfangen , diese Fehler zu beheben. also zunächst Gehen wir also zunächst zum BP-Artikel. Und in unserem IOP testen wir, wenn wir nach Wörtern suchen, die Sichtbarkeit. B-Kamera Lassen Sie uns jetzt unsere Kollisionen testen. Nun, unsere Gegenstandskollision wäre Atom, Sperren der Sichtweite, Sperren der Kamera und Kriegsdynamik, und das alles nur ohne Physik Gehen wir nun zu unserer Sphäre und wieder zu unseren Einstellungen oder Kollisionseinstellungen Das sollte also einfach alles ignorieren, keine Physik haben und sich mit dem Charakter überschneiden , denn das ist unser Bereich Gehen wir zu unseren Widgets, die keine Kollision haben. R Das hat eine Benutzeroberfläche, aber lass uns das ändern, keine Kollision. Es spielt keine Rolle, da wir es auf den Bildschirm bringen. Generiert keine überlappenden Ereignisse. Ordnung. Kompilieren. Und lass uns zu unserer großen Truhe gehen. Lass uns das zuerst reparieren. Lassen Sie uns unsere beiden Meshes auswählen und sie werden, sagen wir , physikalische Ereignisse erzeugen, falls es tatsächlich etwas weiß Lassen wir es einfach an. Lassen Sie uns zu Kollisionen aktiviert übergehen Wir wollen, dass beide nur keine Physik haben, beide statisch, und sagen wir, beide blockieren alles Gehen wir nun zurück zu unserem Artikel und erhöhen auch die Zahl Hundert. Also geben wir ihm ein bisschen Reichweite. Lass uns nisten gehen. Bei der Kiste. Öffne es. Näher. Die Position auf dem Bildschirm mag sein, aber wir können die Objekte nicht einmal sehen. Sind sie alle hier drin? Sie sind immer noch alle hier drin. Das hat es nicht behoben, es könnte liegen, dass wir die Elemente auf unserer Timeline hierher verschieben die Elemente auf unserer Timeline hierher und die Objekte grafisch darstellen Wir bewegen uns mit Teleport. Nein. Das ist kein vollständiges Inventar. Das willst du nicht auf dem animierten Objekt haben. Oh, hier drüben. Ja, Teleport wird hier nicht angeklickt Könnte das sein, denn wenn es eine tut, Kollisionen berücksichtigt Und die große Kiste hier, als hätte ich gesehen, wie sich die Gegenstände bewegen. Es scheint, dass sie sich bewegen, aber am Ende kehren sie zu o zurück. Gehen wir also zu unserer Zeitleiste, aber wir animieren das Objekt erneut Und wenn wir fertig sind, legen wir einfach den Standort des Schauspielers fest. Nicht aktualisieren, fertig zum endgültigen Ziel, dessen Standort ich habe. Mal sehen, ob das funktioniert. Vielleicht gibt es etwas , das es zurücksetzt. Das ist neben uns. Ja, hat funktioniert. Also bleiben sie dort. Nett. Okay. Der Text ist ein bisschen groß. Lass uns auf klicken. Einer von ihnen. Ich kann kein Gold abholen. Nein, ich kann. Aber es wird nicht zerstört. Ich kann endlos Gold sammeln. Wenn ich es zum ersten Mal in die Hand nehme, wird die Animation des gesamten Inventars abgespielt. Interessant. Lassen Sie uns jetzt einen Trank auswählen Ich habe einen Trank, lass uns ihn benutzen. Warum in Bewegung bleiben? Wuttrank. Ich habe ihn abgeholt, er bleibt da. Es scheint also, dass sie sich nicht selbst zerstören. Lassen Sie uns das Widget für eine Sekunde reparieren. Lassen Sie uns all diese Spurlinien entfernen, weil sie schön zu sehen sind. Unsere Trace-Linien befinden sich also in unserer Wi-Schleife. Und auf der Linse, Dave. Lassen Sie uns herausfinden, warum sie nicht zerstört werden. Wenn ich sie auswähle, ist das der Spielmodus. Becherinventar, wenn es herunterfällt und die Stecknadel hierher gehört. Und am Ende nicht abgeholt zurückkehren. Weil wir bei den anderen Optionen keine Spitzenwerte zurückgeben , wenn es abholbar ist und wir feststecken oder das Inventar voll ist Wir kehren zurück, weil wir es nicht abholen können, aber wir sind nicht so, dass wir es abholen können, wenn wir es abholen Also das sollte das beheben, lass uns das Widget für eine Sekunde reparieren. Lass uns zu I gehen und zum alten Artikel gehen. Lass uns die Größe auf 21 ändern. Mutig. All das mutig. Es gibt noch andere. Lass es uns als besser löschen und standardmäßig verteilen. Jetzt sollten sie besser aussehen. Zeile, die Sie hier sehen, liegt daran, dass ich den Ladebildschirm nicht habe. Wirklich, ich glaube nicht, dass es das ist. Aber lassen Sie uns den Ladebildschirm hinzufügen, also öffnen wir den Ladebildschirm. Ebenfalls. Was könnte sein. Oh, es ist sichtbar. Sie haben den Ladebildschirm. Ja, das tun wir. Ja, wir werden überprüfen, welche Zeilen hier stehen. Lass uns die Gegenstände suchen. O ist die Truhe da draußen. Wenn du auf der Truhe herumhackst, fallen Gegenstände herunter. Man kann sehen, wie sie zurückgehen. Aber im Moment ist es in Ordnung. Ich kann sie abholen, ich werde zerstört. Gab es Gold? Wir haben ein geheimes Gebiet. Das hast du überprüft. Warum nicht. Ein Weg. Kopieren wir dieses Set auch auf eine kleine Truhe. Gehen wir zur kleinen Truhe. Beides. Ich gehe eins nach dem anderen. Ich werde einfach Collision und das hier kopieren und einfügen. Ich arbeite. Ich werde arbeiten. Eile nur darüber hinaus. Das sollte die Kategorie dieser Gruppe sein, aber sie tut es nicht Wie auch immer, einer nach dem anderen. Wir sollten alles ignorieren, Kamera und Sichtbarkeit blockieren, p blockieren und korrigieren. Immer nur Jack fragt, beide fragen weiter, richtig? Das wäre es. Lass uns nach Punkten suchen. Sie werden zerstört. Ich glaube , sie werden zerstört werden. Was ist das für eine Linie? Es ist sehr nervig. Ein Wutanfall wütet wie eine Münze. Die Münze muss fallen gelassen werden. Halte. Hier sind wir. Stimmt? Ich habe Gold verloren. Ich hab's. Großartig. Hol die Dinge, benutze sie. Hol den Rest. Ich habe schon einen Schlüssel. Deshalb kann ich den Schlüssel bekommen. Das taucht ein bisschen schnell auf, nicht wahr? Ich will es ein bisschen langsamer haben. Ich kann sehen, wie das Widget auftaucht, aber es ist so schnell Das ist in Ordnung. Beim zweiten Mal läuft es ein bisschen schnell. Etwas ich. Ein bisschen schnell. Zuallererst gibt es auf der Truhe nicht das Widget, das anzeigt, wenn ich mit der Maus darüber fliege Also lass uns das auch auswählen. Was fehlt, ist der Code dafür. Sie werden also den Code aus dem BP-Artikel kopieren und einfügen , indem Sie mit dem Mauszeiger über den Mauszeiger fahren und den Mauszeiger über das Ereignis Wir werden das kopieren. Es hat diese Funktion. Lassen Sie uns zuerst die Funktion kopieren und einfügen. Also Widget-Sichtbarkeit, gehen wir zur Truhe, gehen wir zu den Funktionen, fügen sie ein. Alle Variablen existieren, alles ist gut. Ops. Wir müssen es schließen. Gehen Sie zur großen Truhe, fügen Sie es auch hier ein, alle Variablen sind gut, fertig. Gehen wir zu unserem Artikel. Kopiere das. Fügen Sie es im Vent Graph hier ein. Oder sieh gut aus. Auch in der Truhe, sogar in der Grafik, werde es hier korrigieren, jetzt sollten wir GS über der Brust haben. Etwas, wenn sich die Kamera verändert, ich glaube, wenn ihre Linse das mit der Brust erzeugt Dann mach es oder erschaffe ein paar ziemlich tolle Szenarien. Also hier ist das Widget. Und ich klicke auf das Widget und nichts passiert. Wenn ich auf die Truhe klicke, passiert etwas. Oshion. Welt Oh. Problem. Der Klick so. Ich verstehe es. Manchmal bedeutet es einen zweiten Klick. Ich schätze, es hat mit dem Fokus zu tun. Das solltest du auch reparieren. Lass uns aufhören. Der Haufen Fehler. Füllen wir sie aus. Welche Sichtbarkeit ist Bekanntheit , welche Sichtbarkeit Es. Denn wenn ich den Artikel abhole und das Widget verschwindet, brauchen wir hier ein gültiges. Wenn wir es abholen müssen, wird es zerstört, sodass das Widget nicht existiert. Es versucht sich zu verstecken. Kein Problem. Lass uns das nächste Mal hier hingehen. Widgets-Eigenschaft, nicht gültig. Ich schätze, das ist das, ist dasselbe. Ich vermute, dass für dieselbe Sichtbarkeit, Widget-Sichtbarkeit, Kollision, das Widget Das war ein Knaller, denn als wir einen Gegenstand abholten, wurde er zerstört, und wir baten darum, all das zu tun Also, ich denke, das ist ein netter Zwischenstopp. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 111. Artikel-Widget-Korrekturen und Aufzug-Code: Hallo und willkommen zurück zum Game Design Workshop Real Engine Five Procedural Dungeon Action-Kurs zur Erstellung von Arbsic Zuvor haben wir einige Dinge im Spiel debuggt, und jetzt werden wir damit weitermachen Wählen wir nun unsere Kamera aus. Und was wir ändern sollten , ist die Beschränkung des Seitenverhältnisses, denn diese grüne kleine Linie , die hier erscheint, ist darauf zurückzuführen, dass sie versucht Seitenverhältnis einzuschränken, und die Nachbearbeitung mit dem Stand-Sil passt nicht wirklich dazu Also ja, wir werden das einfach deaktivieren und das Sichtfeld auf 55 ändern, was unsere Kamera für den Spieler ist, 55. Wenn wir jetzt spielen, sehen wir hier nicht mehr die Linien, die das Bild einschränken, machen es wie in einer Filmsequenz und das machen es wie in einer Filmsequenz Pop, und lass uns diese Spurlinie vor dem Haus verstecken. Suchen wir die Position unter dem Cursor im Optan-Controller und setzen sie auf den Bug Und mir ist aufgefallen, dass es ein Problem gibt. Wenn ich auf Artikel klicke und nicht aufhöre und die Box die Box ist die Box. Nehmen wir an, ich ziehe und der Polizist möchte einen Gegenstand haben. Nein, ich habe aufgehört. P. Das Problem, das wir haben , ist, dass es nicht passiert, wenn wir das erste Mal auf das Widget klicken, und wenn der Scroll das zweite Mal ausgeführt wird, er schneller läuft. Also, lass uns das reparieren. Zuallererst das Problem mit der Truhe, nicht wirklich darum, dass die Truhe keinen Code hat, der geöffnet werden kann, wenn wir darauf klicken Das Objekt tut es, wenn wir zum Beispiel zu dem Objekt gehen, können wir sehen, dass wir die Interaktion mit Widgets gebunden haben Schaltfläche. Lass uns das kopieren. Lass uns zu unserer Brust gehen und uns mit dem COVID auseinandersetzen. Machen Sie daraus eine reine Besetzung. Ist ein benutzerdefinierter Zoom-Button mit Bind-Funktion . Ich bin hier verbunden. Kopiere das hinter dir. Eigentlich müssen wir zuerst los, um mit dem Spielen zu beginnen. Lass uns die Taste anrufen. Jetzt haben wir das hier drüben kopiert. Und lass uns zur Truhe gehen. Lassen Sie uns dieses Jahr auf reine Besetzung umsteigen. Lassen Sie uns dieses Jahr eine Verbindung herstellen und wenn wir mit dem Spielen beginnen, rufen wir die Verbindung auf. Bindon. Lassen Sie uns jetzt das Fokussierungsproblem beheben. Wir machen das, wir beginnen mit dem Spielen des Controllers. Wo ist das? Direkt auf der Karte im Kontext, beginnen Sie mit dem Spielen. Was wir also tun wollen, ist eine Selbstreferenz auf uns selbst, also den Controller, und Ode und UI eingeben. Beide können sich jederzeit konzentrieren. Das einzige, was wir tun müssen, ist , während der Aufnahme auf SO zu klicken. Wenn wir also auf eine Benutzeroberfläche klicken, verschwindet das SO nicht Oh, der Haufen. Lass uns das testen. Es gibt keine Testräume. Endlich hat es ein Ende, es wärmt, geh zur Musik. Hey, bringen wir das her. Ich habe es einfach nicht gesehen. Hat sofort funktioniert. Nun, wir wollen, dass das sofort funktioniert, also klicken Sie. Nein, es hat nicht sofort funktioniert. Funktioniert jetzt sofort, aber beim ersten Mal hat es nicht funktioniert. Warum können sie nicht so kalt werden, weil ich auf den Wutteil klicke ? Ich habe die Erkältung bekommen. Nun, das Problem sind die Artikel selbst, sie werden nicht sofort angeklickt Lassen Sie uns herausfinden warum. Lass uns noch einen Test machen. Vielleicht habe ich etwas falsch gemacht. Ich glaube nicht. Ein Klick auf die Truhe öffnet sich. Ich habe keinen Zeittrank, bleiben wir beim Zeittrank. Ich klicke und es verschwindet und nichts passiert. Hier. Schieß. Beim zweiten Mal funktioniert es, auch wenn ich Alt gedrückt habe oder einfach versuche, normal auf das Objekt zu klicken und dann zum Widget zu wechseln, es funktioniert immer noch. Beim ersten Mal geht es nicht. Ich möchte beim ersten Mal versuchen, vom Element zum Widget zu wechseln, um mir die Dinge klarer zu machen. Aber ich denke schon, dass es etwas mit unserem Code zu tun hat und das ist die Truhe. Hey, lass uns vom Objekt zum Widget wechseln. Schneller. Wenn ich es zum ersten Mal so anklicke, funktioniert es. Wenn ich es so anklicke, verschwindet es. Wenn ich also drücke, klicke ich. Beim ersten Mal verschwindet es. Es muss irgendwelche Operationen mit falscher Reihenfolge gegeben haben. Wir gehen nachsehen. 112. Artikel-Widget-Anpassungen und Aufzug-Funktionalität: Hallo und willkommen zurück zum Game Design Workshop, echte Engine Five Procedural Dungeons Action-PS-Creation-Kurs Führe einige gründliche Tests durch. Mir ist irgendwie klar, was passiert. Es ist ziemlich offensichtlich. Aber wenn wir auswählen, wenn wir die Sichtbarkeit festlegen und wir den Fokus haben, legen wir nicht fest, welches Objekt wir fokussieren möchten. Also holen wir uns den Controller, den wir aus unserem Widget-Lot holen, welche Komponente unsere Widgets sind, wir werden das Widget bekommen. Denken Sie daran, das ist eine Komponente. Dies ist das eigentliche Entitätsobjekt, und wir geben Y ein und legen den Fokus darauf. Eine weitere Sache, die mir aufgefallen ist ist, dass die Timeline nicht richtig abgespielt wird , wenn wir bereits einen Gegenstand in unserem Inventar haben. Weil wir dieses Spiel miteinander verbunden haben. Es muss während des Spiels von Anfang an verbunden sein , denn wenn wir einen Gegenstand erneut auswählen, passt er nicht in unser Inventar, wenn er fällt, oder wir ihn aus irgendeinem Grund sowieso nicht auswählen können Es beginnt beim Spielen, und wenn es das erste Mal beendet ist, wird es nie wieder abgespielt, weil es fertig ist Aber wir brauchen dieses Spiel von Anfang an. Jetzt müssen wir noch in unseren Spielmodus wechseln, und ich denke, wir haben das eingestellt. Ich denke, wir haben das schon einmal eingestellt, den Eingabemodus, das Spiel und die Benutzeroberfläche eingestellt und mit dem Spielen begonnen, ohne den Cursor zu verstecken. Auch nicht mein Cursor im Objekt. Haben sie darauf geklickt? Hab ich nicht getan. Also auch kein Cursor. Wenn wir die Sichtbarkeit der Perücke einstellen. Das wäre, glaube ich, Lass uns spielen gehen. Da drüben ist die Truhe? Ieal ist nicht hingefallen, gut. Tigertypen, angegriffen werden. Oh, was ist hier los? Ist das von Anfang an sichtbar? Das liegt daran, dass ich es auf die Brust abgesehen habe. Okay. Ja, weil es langsam wird, wenn ich das eindämme. Okay. Ja. Also lass uns die Truhe öffnen. G, der Schlüssel. Also, es funktioniert jetzt von Anfang an. Das, ich mache dieses Shooting und ich hole die Gegenstände wieder, schieße und es funktioniert. Nett. Spielt. Als Nächstes müssen wir das Gameplay-Widget überprüfen. Wenn wir die Animation zum Abholen eines Gegenstands abspielen. Lassen Sie uns also mit Ihrem Gameplay fortfahren. Lassen Sie uns die Animation, den Animations-Tab , die Artikelauswahl und die Referenzen finden. Okay, nimm den Pinsel zur Einstellung der Objektgröße, vorwärts. Lassen Sie uns den Status wiederherstellen, da er jedes Mal von Anfang an abgespielt werden sollte. Dies ist erforderlich, um den Status wiederherzustellen. Drücken wir, das wählt den Status aus. Es geht schnell. Ist der Charakter, das ist er. Der Charakter hier drüben tippt auf ein paar Fallen. Jetzt müssen wir Gegenstände in einer Reihe auswählen. Lass uns das auswählen und lass uns das auswählen. Und es spielt meins. Hier ist ein Charakter, der sich ständig bewegt. Wann passiert das? Wenn ich ein Ziel nicht erreichen kann , weil es es ständig versucht. Richtig? Ich denke, wir werden das so lassen, wie es ist, ist eigentlich egal. Wir werden den Aufzug reparieren müssen . Denn im Moment lässt der Aufzug die Plattform einfach nicht platzen, ? Wir haben einen Schlüssel. Wir gehen zu unserem Aufzug. Geh schnell hierher. Ort. Aß. Was passiert als Nächstes? Nein. Okay. Ich denke, das ist ziemlich einfach. Wir gehen zum Aufzug und ich habe den Pence nicht angerufen Ich nenne Pence das Ende der Veranstaltung, die der Aufzug in der Nähe des Aufzugs erreicht. Nähe des Und sie. Zerquetschen. Oh, ich hoffe, ich habe dich nicht vernichtet, aber es gibt einen Grund für diesen Absturz. Wenn ich Fence Down hinzugefügt habe, muss es nach diesem Zweig noch einmal gemacht werden, sonst wird die Animation immer wieder abgespielt. Es läuft das immer und immer wieder, sehr schnell pro Frame, und es bricht das aus. Und eine weitere Sache, die mir aufgefallen ist, ist, dass wir, wenn wir ein Labyrinth erstellen, den Charakter spawnen Und wir behalten die Referenz so bei. Aber wenn wir ein neues Labyrinth erstellen, haben wir diese Referenz nicht Also, was wir tun werden, ist zum Startplaneten zu gehen, richtig? Und wenn es weitergeht, kommen wir von unseren Spielmodi zurück Wir haben hier eine Referenz zu einem Spielmodus. Jetzt tun wir das nicht. Aber wir haben auf dem Controller, ich glaube, ein Controller ist nicht mehr da, hier ist er. Auf dem Bildschirm. Wir haben also eine Spielerreferenz. Wir wissen, dass diese Spielerreferenz für den Gamecontroller bereits gefüllt ist, wenn wir zu Level zwei gehen, dem Bactor-Labyrinth-Generator, wo ist Hier ist er und wir werden uns einen Player-Controller besorgen. Als von oben nach unten. Haustier umrechnen. Wir werden zahlen. Und wir werden unsere Spielreferenz hier auf diese beziehen Geh spielen. Alles sollte in Ordnung sein. Der Aufzug ist geschlossen. Wir haben schon einen Schlüssel. Dann nochmal zerquetschen. Okay, nach einigem Suchen wurde mir klar, dass zwei Dinge falsch sind. Erstens spawnen wir im Labyrinth, wenn wir das Labyrinth erstellen, wenn wir das Labyrinth erstellen, den Spieler und wir halten die Referenz in der Hand Aber wenn wir ein Labyrinth wiederbeleben, haben wir keine Möglichkeit, die Referenz a weiterzugeben . Wir setzen diese Referenz nicht Das neue Labyrinth weiß also nicht, wer der Spieler ist. Also, um das in Ordnung zu bringen, werden wir am Anfang hierher kommen. Fangen Sie an zu spielen. Wenn wir „Weiter“ sagen, aber wenn du das Labyrinth fortsetzt, legen wir die Spielerreferenz wir holen uns unseren Player-Controller Wir werden runterkommen. Wir werden eine reine Besetzung daraus machen. Ich werde eine Verbindung herstellen. Eigentlich werden wir uns eine Spielreferenz holen. Und wir werden diese Spielerreferenz mit unserem Player verbinden . Jetzt weiß das neue Labyrinth also etwas über einen Spieler. Also, das nächste Problem , das ein Problem hat, ist hier drüben. Interessant. Zu Beginn des Überschneidungsereignisses, wenn wir das neue Labyrinth spawnen Ich habe hier einen Fehler gemacht. Wenn ich nach der doppelten Größe des Labyrinths frage, wie viele Kacheln es eigentlich hineinpassen kann Ich frage mit dem Plus eins. Also wenn ich plus eins hinzufüge, kann das passen, und dann mache ich weiter und füge nicht plus eins hinzu, weil es füttert. Also sollte ich fragen, ob das aktuelle Labyrinth, und was mich darauf hindeutete ist, dass ich beide Male einen Absturz hatte, es daran lag, dass das Labyrinth, in dem wir diesen Fehler hatten, wir geschaffen Das ist der einzige Fehlercode, den wir tatsächlich erstellt haben. Erstaunlich, dass sich das aus Versehen erhitzte. Also, wir haben dieses Labyrinth, mehr können wir nicht bauen. Und als wir beide feststellten , dass es abgestürzt ist, gab es dieses Problem Also ja, das war die Sache. Es hat mehr gebaut, als es verkraften konnte. Ich kann mit mehr nicht umgehen, und einige unserer Regeln hier drüben haben vielleicht besagen, dass wir nichts bauen können, vielleicht ist eine Peitsche eingefroren. Lass uns jetzt ein letztes Mal testen . Und der Aufzug. Wir können hier immer noch einziehen, aber ich denke, es ist in Ordnung, wenn wir am Anfang nicht versehentlich entkommen , wenn wir eintreten. Das wäre in Ordnung. Also, sehr helles Licht. Sie ändern die Kameraeinstellungen. Ich gehe ins zweite Labyrinth, ich hole den Schlüssel. Lass uns noch etwas Zeit hinzufügen. Lasst uns sehen, wie dieses endlose Ding passiert. Das ist das nächste Labyrinth. O. Beim Auswerfen wurde das Labyrinth darunter zerstört Etwas ist geblieben. Die große Truhe wird nicht zerstört. Wahrscheinlich sollte das hier sein, wenn es hinzugefügt wird. Es sollte eine Truhe geben. Hier ist eine Truhe. Die großen Truhen müssen zur Liste der Zerstörer hinzugefügt werden , und wir haben das dritte Labyrinth und das immer größer werdende und größer werdende . Gehen wir zur Seite Hier. Der Schlüssel. Eine Zeit auch zu der Zeit. Was ist der Aufzug? Hier. Möglicherweise sollte die nächste Phase größer sein als diese. Das ist tatsächlich kleiner. Verkleinern wir? Verkleinern wir? Oder ist es größer? Ich habe nur, dieser hat drei Zimmer. Wir haben zwei. Lass uns hier den Kick bekommen. Größer, ich weiß nicht. Und es sieht genauso aus. Eins. Ist der Look. Der Schlüssel des Schauspielers hier. Drei Zimmer. Wie viel fügen wir jedes Mal hinzu? Ich denke, wir fügen jedes Mal drei Blöcke hinzu. Zwei. Nein, es wird zufällig sein, nicht wahr? Eins, zwei, drei, vier, fünf oder sechs, sogar acht, sogar 12, 13 , 14, in 21. Zwei, 22 und Blöcke. Schauen wir uns den nächsten an. Habe das von Anfang an gemacht, zähle die Blöcke. Mit dem Schlüssel. Jederzeit. Nehmen wir uns etwas Zeit. In Ordnung. Im Player sieht es jetzt größer aus, eins, zwei, drei, vier, fünf, 1012, 14, 15. 2021, 23, 24, 26, 27, 29 und acht e, f. Oh, wir fügen Boxen hinzu Wir fügen sie langsam hinzu. Wir können es erhöhen, wenn wir wollen, zum Beispiel Generatorstufe plus drei pro Level, und es wird immer größer. Jetzt ist unser Hauptteil fertig. Das einzige, was wir hinzufügen müssen, ist unsere KI und wählt ein wenig unsere Farben und Lichter aus. Oh, das wird ich für diesen sein. Ich werde dich am nächsten sehen. Auf Wiedersehen. 113. Morigesh Charakterimport und KI-Gesundheitssystem: Hallo und willkommen zurück zum Game Design Workshop und zum Action-Peg-Erstellungskurs Rail Engine Five Procedural Dungeon . Zuvor waren wir mit unseren Bugs fertig. Eigentlich sind wir mit unseren Fehlern noch nicht fertig geworden. Ich bin mir ziemlich sicher, dass wir noch mehr finden werden. Aber sobald wir sie finden, werden wir sie reparieren. Jetzt ist es an der Zeit, unsere KI zu starten, was bedeutet, dass wir auch ein paar Dinge erklären müssen. Aber lassen Sie uns damit beginnen einen Ordner in ihren Blueprints zu erstellen All diese KI. Lass uns diesen Ordner aufrufen. Und lass uns auch herunterladen. Äh, nein von hier. Unser Paragon-Charakter Morgue Mies, Marie, ich bin mir nicht sicher, wie er buchstabiert wird, wie er ausgesprochen wird, was in unserer Bibliothek sein wird Du hast es nicht, du kannst es kostenlos auf dem Marktplatz finden, genauso wie wir es gezeigt haben kostenlos auf dem Marktplatz finden, genauso wie wir es gezeigt oder unseren anderen Paragon-Charakter Oh. Lass es uns zum Projekt hinzufügen. Ist hier. Das wird eine Weile dauern. Oh. Jetzt, wo wir unseren Paragon-Charakter haben. Gehen wir zurück zu unserem Lass uns überprüfen, ob wir ihn haben. Charaktere aus Hypotheken, Audio. Ein Held. Richtig. Ja. Alles scheint in Ordnung zu sein. Ich habe gerade die Animationen in den restlichen Ordnern überprüft , aber gehen wir zu unserem Ordner A, der nicht existiert. Ich werde es erneut erstellen. Ich dachte wirklich, ich hätte es getan. Jedenfalls. Gehen wir in diesem Ordner zu unserem Charakter Morgs. Charaktere, sagt Mig. Lasst uns diesen Mortgage-Spieler duplizieren. Ziehen wir es per Drag & Drop in den Ordner AI. Oh, zuallererst haben wir unseren Charakter. KI braucht einen Charakter. Das zweite, was eine KI braucht, ist ein Controller , der dem Spieler entspricht. Aber wir werden auf AI Controller klicken. Da können wir hin, Lue-Print und KI. Und wir werden AI Controller auswählen. Lassen Sie uns den Namen sehen , weil wir möglicherweise unterschiedliche Controller für verschiedene Feinde haben. Und lass uns den Charakter in I One umbenennen . Kurz gesagt, was ist der KI-Controller? Er wurde entwickelt, um das Verhalten der KI zu steuern, denn für unseren Charakter entscheiden wir über die Eingaben oder unseren Charakter, wir entscheiden, was der Spieler tatsächlich drückt, und die Steuerung übersetzt das auf den Charakter oder auf das Ich oder was auch immer Aber das Gleiche gilt für den Controller für die KI. Es deckt das Verhalten ab. Nun, das nächste, was wir brauchen, ist ein KI-Verhalten t. Nennen wir es I-AIP-Verhalten Und was ist ein Entscheidungsbaum, ein KI-Verhaltensbaum? Nun, es ist eine Entscheidungsstruktur. Wir können es so etwas nennen. Es ist ein Baum, der verschiedenen Knoten besteht, die anhand der Regeln festlegen, was die KI tun soll . Und zu Bäumen können auch andere Bäume gehören. Sie können sich dafür entscheiden, andere Bäume zu bearbeiten und komplexe Aufgaben ehrlich zu erledigen und sie auf einfache Weise zu debuggen Der Verhaltensbaum enthält nun eine weitere Funktion , die so genannte Tafel, die für die Speicherung der Werte zuständig ist Es ist eine Vorlage mit Werten für den Verhaltensbaum. Es speichert die Daten und es ist effizient , mit dem Baum und den Daten , die wir gespeichert haben, zu kommunizieren . Aber um ehrlich zu sein, ist es auch ein bisschen übertrieben für unseren Umfang an KI, aber wir werden es nur verwenden, um zu zeigen, wie wir sie einsetzen Es ist eher für sehr komplexe KI-Aktionen konzipiert. Nun, nennen wir das. Mein Sohn. Und die nächsten Dinge, die wir brauchen werden, ein Service und einige Aufgaben. Was ist ein Service? Es handelt sich um einen speziellen Typ von Decorator-Knoten im Verhalten drei, die in regelmäßigen Intervallen Aufgaben ausführen , wie diese in dieser Zeitspanne Zum Beispiel werden wir hos verwenden, um einige Attribute von unserem Charakter zu erhalten und sie an den Black Ward weiterzugeben Und Aufgaben sind die Dinge , die für Verhaltensbäume von grundlegender Bedeutung sind. Sie stehen für jede Aktion oder Reihe von Aktionen, die die KI ausführen kann. Zum Beispiel werden wir ein vorgegebenes T verwenden , das an den Ort verschoben wird , Ort verschoben wird , aber wir können eine Aufgabe erstellen Wir könnten eine Aufgabe, die viel komplizierter wäre, an einen Ort verschieben, als ob sie viele andere Regeln haben könnte Aber wenn wir sie erstellen , werden wir uns eingehender mit Aufgaben und Diensten befassen. Denn vorerst sollten wir unseren KI-Charakter eingeben. Und lass es kompilieren. Um das zu tun, ist das ganz einfach , alles auszuwählen und zu löschen. Wir werden auch die Accountanzahl löschen, den Angriff ist angreifend, den Save-Angriff, den Base-Look , den Base-Turn, und natürlich werden wir die Polo-Kamera und den Kameraboom löschen . Aber wir werden später einige Dinge hinzufügen. Nun, wir hätten dafür die Third-Person-Vorlage verwenden können, aber das Duplizieren und Löschen vieler Dinge wäre zeitaufwändiger Oh, Datei ablegen und speichern. Mach das alles. Wir werden sofort alles schließen. Nimm das KI-Zeug. Lassen Sie uns außerdem den feindlichen KI-Controller öffnen , um sogar Grafiken zu erstellen. Das einzige, was wir hier brauchen werden, ist das Verhalten t. Das Verhalten t wäre unser t. Savors. Nun, das ist der einzige Code , den unser Controller rund um den Baum benötigt . Ich werde das schließen. Wir werden den KI-Baum öffnen. Tafel Jetzt können wir auf die Tafel zugreifen, den KI-Baum auf diesen beiden Spitzen hier drüben Wir brauchen die Tafel eigentlich nicht öffnet den KI-Baum nicht Gehen wir zurück zu unserem KI-Feind und lassen Sie uns etwas Einfaches erschaffen Nehmen wir an, jedes Mal, wenn wir Schaden oder irgendeinen Schaden erleiden. Wir werden unsere Gesundheit reduzieren. Oh, lassen Sie uns zwei Variablen erstellen. Eine wäre b wäre Floats und die andere wäre inhärente Gesundheit Und der nächste wäre M Health. Oh, wir werden unser C und Gesundheit bekommen. Wir werden subtrahieren. Der Schaden. Wir klumpen den Float auf Null und erhöhen die Lebenspunkte. Und lassen Sie uns tatsächlich einige Standardwerte kompilieren und festlegen. Nehmen wir an, MC Health wäre Wie viele Heats sollte KI bekommen? Sagen wir drei. Oh, lassen Sie uns drei angeben. Gesundheit. Lassen Sie uns den Fallwert des aktuellen T auf drei setzen. Oder wir können mit dem Spielen beginnen und die maximale Gesundheit auf die aktuelle Gesundheit setzen. Oh, wir werden überprüfen, ob das kleiner oder gleich Null ist , und wir werden uns verzweigen. Es wird kein Geräusch abgespielt. D, das wäre etwas Dieses. Bananen greifen Guo Cup an Es ist also ein weiblicher Angriff, ich weiß es nicht. Es klingt wie ein Hit. Und dann werden wir zwei Kundenveranstaltungen organisieren. Und wenn man das wiederholt, wird einer Tod heißen. Und der andere wird Betäubungscharakter heißen, wenn wir getroffen werden und immer noch Gesundheit haben, wir werden betäubt oder betäubt Und wenn nicht, wird er den Tod sterben. Jetzt haben wir ein System oder eine KI , um beschädigt zu werden und/oder betäubt zu werden Ich denke, das ist genug für diesen. Wir werden mit dem nächsten weitermachen. Tschüss. 114. Retargeting von Wiederkehrenden Animationen zu Morigesh: Hallo und willkommen zurück zum Game Design Workshop und zum echten Engine Five-Kurs zur Erstellung von prozeduralen Dungeon-Action-Rollenspielen . Zuvor haben wir unseren NI-Feindentwurf erstellt. Wir haben unseren KI Enemy Controller, unseren Verhaltensbaum und unsere Tafel erstellt unseren Verhaltensbaum und unsere Tafel Dann haben wir weitergemacht und Code erstellt. Wir haben tatsächlich zuerst den Code gelöscht, der bereits hier war, und einige Komponenten. Und dann haben wir ein Schadenssystem geschaffen , um unsere Gesundheit zu verringern, wenn wir Schaden nehmen. Und wenn unsere Gesundheit Null ist, werden wir sterben oder wir werden nicht sterben, und wir werden ein Geräusch spielen und fassungslos Jetzt machen wir mit unseren Mechaniken weiter. Wir brauchen wieder eine Zustandsmaschine. Also gehen wir zu unserem AI-Ordner, wir schreiben Click, wir gehen zu Blueprints und erstellen eine Enumerator-Aufzählung Und wir nennen es E AI One States. Geben wir es ein und fügen wir ein paar Rebellen hinzu. Nehmen wir an, unsere Staaten patrouillieren. Falls das die Schreibweise korrekt ist, aber egal ist, Attacke. Sagen wir mal. Nehmen wir auch eine Position ein. Benutze die Schreibweise, um anzugreifen. Viele Wörter in diesem. Jetzt, wo wir die Staaten haben. Gehen wir zurück zu unserer KI und steigen sie auf. Wir werden die Variable datieren, wir werden sie KI nennen. Es wird vom Typ E acht sein, heißt es in einem. Lassen Sie uns jetzt mit unserem Stanevent abschließen , denn es wird einfach sein. Wir werden fragen, ob unser aktueller Status Stat übereinstimmt, und wenn ja, werden wir nichts tun. Wenn nicht, schalten wir unseren Status und spielen Amontage Lassen Sie uns nun eine Montage erstellen. Geh und finde unsere Animation, Mote. Mortgage und ich werde danach suchen. Eigentlich müssen wir eine Montage daraus erstellen, Montage mit acht Animationen, und ich gebe die Montage ein und überlasse den Zustand dem Oberkörper, den Slot dem Oberkörper Weil wir an diesem Animationsplan nicht wirklich viel tun müssen , weil er für diesen Charakter vorgesehen ist . Das ist falsch Jetzt, wenn es das falsche öffnet, können wir es von hier aus ändern, die drei Punkte hier drüben, gehen zu dem, den wir wollen. Also, wir verwenden schon das, was wir wollen, in Gramm, alles. Und in Event Graph ist alles für Morigs Player eingerichtet Wir werden die Angriffe nicht einsetzen oder so, aber wir werden auch keine Fehler haben Nein, lass uns zurückgehen, ich werde das löschen, das schließen. Ich werde die Montage auch schließen. Für die Montage wählen wir die Wärmefront. Die beiden. Ich ziehe das hier hin und lege es ab. Ich bin mir nicht sicher, warum es zwei gibt. Das andere muss das Vorbild sein. Jedenfalls. Also, das ist die Spielmontage. Die Montage Mooch One. Und wir müssen das Skelettnetz verbinden, und ich werde Montage wieder einsetzen Und warum brauchen wir jetzt die fortgeschrittenere? Denn wenn wir fertig sind, wollen wir, dass das abgeschlossen ist, also zurück zum Angriff. Denn was auch immer passiert, auch wenn die KI nicht bemerkt, dass sich ein Spieler in ihrer Nähe befindet, wenn ein Spieler sie abschießt, ändert sie sich und greift den Spieler an. Schießen Sie quasi auf den Spieler zu. Lasst uns jetzt unseren Tod beenden. Zuallererst muss alles, was passiert, einmal passieren. Mach es einmal. Nur für den Fall, dass es wieder beschädigt wird und das ausgelöst wird, brauchen wir eine Variable, um zu wissen, dass wir tot sind. Wir haben ein B. Nennen wir das Tod. Wir werden es wahr machen. Als Nächstes werden wir einen Sound abspielen. Ja. Für den Sound brauchen wir Scream Frau schreit, hier ist es. Es ist ein gutes Todesgeräusch. Ich gehe zu einer Schauspielerkollision , um sie zu deaktivieren Kollision aktivieren, um Motte zu deaktivieren. Wie dem auch sei, stellen wir den Schauspieler ein. Pi ist deaktiviert. Packen wir die Bewegung unseres Charakters , denn sie ist wie in der Luft. Setzen wir Walk auf Null. Lassen Sie uns eigentlich auch die Geschwindigkeit auf Null setzen. Der Grund, warum wir das tun, indem wir Geschwindigkeit und Max auf Null gehen lassen ist nur für den Fall, dass unser Animationsdiagramm, das von diesen Variablen beeinflusst wird, in der letzten Sekunde einen falschen Befehl erhält , vielleicht etwas. Wenn wir sterben, setzen wir den Wert auf Null und sonst ändern wir die Animation nicht. Als Nächstes sollten wir eine Montage abspielen. Nun, lasst uns den Tod finden. Diese Animation ein bisschen. Wenn wir ein Partikel oder so hätten und sie verschwinden würde, wäre das in Ordnung. Aber lass uns etwas mehr auf einmal tun. Ich glaube, eine Bar, wie heißt er? Wiedergänger? Als besserer Tod Wir haben es hier tatsächlich benutzt. Also gehen wir zu unserem Inhaltsbrowser. Tod, das ist eine Todesanimationssequenz aus Revenant. Das werden wir duplizieren. Schmieren. Hier ist es Verschieben wir es in den Ordner AI, damit wir übersichtlicher arbeiten können. Ich habe es jetzt verloren. Ziel von hier nach A. Hier. Nein, ich klicke auf Ziel, wodurch es auch dupliziert wird, aber das Ziel wäre , lass uns das Arti Manan machen Und ich brauche Revenant. Ich wäre Mota. Hier sind wir bei einem Pressetarget. Mal sehen, was wir mit der KI geschaffen haben. Es wurde hier nicht erstellt. Ich denke ja, es ist inhaltlich. In Ordnung. Das scheint in Ordnung zu sein. Das Skelett ist etwas gedehnt, aber es ist in Ordnung. Ich denke, es ist ein bisschen. Sieht okay aus. Oh, Dave. Nun, Retargeting von Animationen ist normalerweise nicht so einfach, aber Paragon-Charaktere sind damit einverstanden Die meisten von ihnen, wie Mortgage und wie heißt er, Revenant. Ich sollte es nicht in den Ordner AI oder jetzt legen, weil die Ordner von es nicht getan haben Existiert bereits. Oh, lass uns das umbenennen. Zielt auf den Tod. Oder es ist ein gezielter Tod, und wir können ihn verschieben. Und lassen Sie uns die Acht als Montage daraus machen. Lassen Sie uns bei Claim in Ordnung anrufen. Rufen wir die Montage auf, ändern den Gruppenschlitz auf den Oberkörper. S, kompilieren. Gehen wir zurück zu unserem Feind und spielen Montage. Ton wird unser Mesh sein, und die Montas werden das sein, was wir gerade erstellt Jetzt müssen wir einige Elemente löschen, für die der Code bereits existiert. Unsere Codes könnten Komponenten sein, der Code bereits existiert. Unsere Codes könnten Komponenten sein aber das Kopieren und Einfügen tun wir vorerst Nicht auf unseren Gegenständen, Tropfen auf unserer Brust Ich gehe zu unserer Brust. Und ich gehe zur Inventur. Das ist unser Code, um Artikel fallen zu lassen. Okay. Ja, wir hätten uns dazu äußern sollen. Nun, der Teil, den wir brauchen, ist hier im Grunde der Flop. Ich brauche den Generator, aber wir haben keine Referenz. Lass uns das einfach kopieren. Es sind x Anzahl Artikel. Machen wir es zu einer statischen Variablen von zwei. Stellen wir das hier ein. Und Reichweite 1—2. Die beiden hier einzustellen war nicht wirklich wichtig, aber trotzdem. Und für einen Labyrinth-Generator erstellen wir einfach eine Variable, sie darauf und bearbeiten die Instanz Wenn wir auf die KI antworten, können wir diese Referenz weitergeben Der Grund, warum wir den Generator brauchen ist natürlich das Hinzufügen statt Zerstören. Wir haben die Truhe offen. Wir haben gesagt, dass es nicht hinzugefügt wird, um zerstört zu werden. Aber lassen Sie uns das in einem anderen Debug-Pass beheben. Weg. Das Letzte, was wir tun sollten, ist, nachdem wir es von unserem Controller bekommen könnten. Tun Sie das, wir gehen. Ja. Größer Wir werden einen KI-Controller besorgen Wir sind kein Spieler mehr. Wir sind ich. Wir gehen nach Bs. Wir hinterlassen uns einen Haufen KI-Controller , die nichts tun. Aber wir könnten ein System entwickeln die KI, die danach einsteigt, einen Controller verwendet, der nicht besessen Oh. Wir lassen die Leiche sterben weil sie zerstört wird, wenn die Mutter sie löscht. Wenn wir zur nächsten Ebene gehen, wird es egal sein, dass die Körper in der vorherigen Ebene zurückgelassen wurden. Sie werden damit zerstört werden. Ich denke, das ist ein guter Haltepunkt. Wir werden mit dem nächsten weitermachen. Von A 115. KI-Reichweiten-Check und Hellgate-Wächter: Hallo und willkommen zurück zum Game Design Workshop, Kurs zur R Engine Five Procedural Dungeon Erstellung von R Engine Five Procedural Dungeon Action APs Zuvor waren wir mit unseren Ereignissen und dem Tod fertig. Wir haben einen Status für KI und Datumsaufzählung geschaffen und gesagt, dass es so sein soll, wenn der Charakter nicht verstaubt ist, dann sei er stehengeblieben, und wir haben eine Montage abgespielt und diese Montage abgeschlossen Wir haben den Status auf Angriff geändert. Jetzt, nach unserem Tod, tun wir das einmal, wir setzen eine Variable auf tot. Wir spielen ein Geräusch. Wir setzen die Kollision, das Häkchen und die Bewegung im Grunde auf Null und spielen eine Montage ab, die wir von der anderen Paragon-Figur entfernt Aus irgendeinem Grund denke ich immer noch, dass der Name Cabal ist. Vielleicht erinnert es mich sehr an den Charakter von Blood One, Caleb, weil ich weiß, dass es nicht Caleb ist Vielleicht kommt mir Cabal in den Sinn. Ich weiß es nicht. Weg. Nachdem wir unsere Montage abgespielt haben, legen wir stattdessen die maximale Anzahl von Objekten nach dem Zufallsprinzip auf 1—2 fest und gehen zu unserem Mechaniker, um Gegenstände fallen zu lassen Und wir haben hier unseren Stift, der ein zufälliges Objekt 1—5 auswählt Und dann haben wir den Controller, von dem wir gesagt haben, dass ein paar Controller nicht gelöscht werden, aber er gibt uns die Möglichkeit, ein System zu erstellen jede neue KI einen unbenutzten Controller besitzt. Lassen Sie uns nun mit unserem Spielererkennungsmechanismus fortfahren. Dazu benötigen wir eine Kugelkollision. Gehen wir zu unserem Viewport. Wir sehen es tatsächlich, wie groß es ist. Stellen wir die Zahl zwei ein, etwa 900. Ich denke, das sollte ein netter Bereich um uns herum sein. Diese Kollision wird unsere Reichweite und Erkennung des Spielers bestimmen. Das ist eine nette Gegend. Oh, bei dieser Kollision geht es wieder nur um eine Sache. Gehen wir also zu unseren Kollisionseinstellungen. Ändern wir es auf Benutzerdefiniert, ignorieren wir alles außer Teichen. Aber es kennt auch die anderen KIs, sie überschneiden sich. Sie erschaffen. Sie könnten den Code um etwas erweitern. Vielleicht kommunizieren sie miteinander. Ich weiß es nicht. Einer hat schlechte Gesundheit, ein anderer kommt und heilt ihn. Wir werden sehen Es liegt an deiner Fantasie. Nein. Lass uns etwas mit dieser Kugel machen. Wir benötigen ein Startüberlappungsereignis und ein Endüberlappungsereignis. Fangen wir mit dem Anfang an. Zunächst fragen wir, ob die andere Komponente die Kollision des Spielers ist. Insbesondere die Kapsel. Also zerre ich an der anderen Komponente. Das haben wir so oft gemacht. Als Nächstes sollten wir eine Variable im Bereich erstellen und sie auf den Wert setzen, wenn dies der Fall ist. Danach werfen wir eine Zeile für Kanal. Haben wir Sicht auf den Spieler, oder ist es so, dass der Spieler hinter einer Mauer war und mit der Kugel kollidiert Also fangen wir am Standort an. Ich werde bei unserem Spieler enden. Also ein Ort. Ich werde das mit dem Ende verbinden. Ich werde die Sichtweite auf Kamera stellen und wir werden unser Wärmeergebnis verbessern. Wenn der andere Schauspieler, der Gas gegeben hat, haben wir eigentlich keinen Schauspieler für den Tag. haben wir, aber wir können tatsächlich einen gleichwertigen Schauspieler machen und wieder weitermachen. Schauen Sie einfach nach, wer der andere Akteur der Figur ist. Wenn es der Bauer oder gut ist, wenn es nicht der Bauer ist, tu nichts, und wenn es ein Bauer ist, werden wir den Staat auf Angriff einstellen Und jetzt, wo wir das Telefon haben, können wir den Spieler tatsächlich von oben nach unten fragen, was Charakter und Actionmusik Also beginnt unsere Aktion. Jetzt haben wir Schluss mit Überschneidungen, es wird ziemlich einfach sein Wir werden überprüfen, ob die Endüberlappung der Charakter oder die Umarmung P ist der Charakter oder die Umarmung . O der Gegner hat eine Umarmung P. Wir werden einen Ast setzen, und wenn das wahr ist, werden wir die Reichweite auf Kumpel setzen Ein System, das wir hier zur Erkennung geschaffen haben. Alles könnte auch innerhalb des Verhaltensbaums erstellt werden , mit einem komplexen System wie EQ S , einem Umgebungsabfragesystem und anderen Methoden, die wir hier für Zeilenspuren abgleichen könnten oder nicht Wie gesagt, die Verwendung der Tafel und das Hinzufügen von Schlüsseln, Entfernen von Schlüsseln und das Aktualisieren von Schlüsseln ist für eine so einfache KI etwas übertrieben Also werden wir eine Mischung aus beidem machen und als Nächstes über die Umwelt sprechen Nächstes über die Wenn wir uns im Angriffsmodus befinden, gerät der Spieler plötzlich außer Sichtlinie. Wir brauchen einen Mechanismus, mit dem wir erkennen können, ob der Spieler jetzt in Sichtlinie ist, und wir angreifen können. Weil die Spieler es sich leisten können, weißt du, sie können sich einfach hinter Ecken verstecken, sie können sich verstecken, sie können eine Menge Dinge tun. Unsere KI sollte also wissen, wann sie direkt sichtbar ist oder ob sie sich bewegen muss , um das zu tun. Wir werden zu unserem Startspiel gehen. Und wir werden einen Primer Pi machen. Das könnte zum Beispiel ein Dienst sein, wir denken, der zu einer bestimmten Zeit läuft und eine bestimmte Sache erledigt. Aber lassen Sie uns das auch tun, weil wir einen Dienst nutzen werden, um unsere Informationen, unseren Gesundheitszustand und unseren Zustand zu aktualisieren . Lass uns das so machen, weil wir schon früher mit Zeiten gespielt haben, wir haben früher Stufen benutzt. Dann schauen wir, wie wir sie starten und beenden können, wann immer wir wollen. Wir werden für dieses Paket werben. Wir haben über das Handle gesprochen. Bit ist das Ding, das mit der Zeit umgeht, und nennen es Handle wie Zeit Und sofort werde ich es unterbrechen. In dem Moment, in dem es geschaffen ist, wird es posiert. Setzen wir eine Zeit auf 0,3. Stellen wir es so ein, dass es aussieht. Lassen Sie uns eine benutzerdefinierte Lüftungsöffnung erstellen. Nennen Sie diesen Look nach Spieler. Was es tun wird, wird eine Spurlinie werfen. Aber wir werden von hier aus kopieren. Das ist genau das, was wir tun wollten. Wir brauchen das auch und das entspricht einem. Wir werden das alles kopieren Das ist es, was diese Veranstaltung bewirken wird. Wir werden eine Spur vom Schauspieler zum Charakter ziehen, werden prüfen, ob es unseren Spieler erhitzt hat. Nun, was passiert, ob es ein Spieler ist oder nicht, wir werden eine Variable brauchen, alles ist drin, es wird eine Millionenvariable sein Ich werde es auf wahr setzen, und wenn nicht, werde ich es auf falsch setzen Wenn es wahr ist, werden wir überprüfen , ob wir fassungslos sind. Wenn nicht, werden wir unseren Staat zum Angriff veranlassen. Das wäre also unser Mechanismus , um den Spieler zu schützen. Das nächste, was wir jetzt tun müssen, ist unsere KI zu verwenden. Dafür benötigen wir auch ein paar Variablen. Wir werden einen Hoststandort benötigen , weil wir sie vor den Toren spawnen werden Also, das ist unser Gastgeber. I. Und die KIs sollten wissen, ob der Host tot ist. Wenn der Spieler also das Höllentor tötet, sollte er etwas tun. Lassen Sie uns eine weitere Variable erstellen. Es wird Goldbarren sein, der ganze Wirt ist tot. Jetzt können wir den Code für unsere kontrollierten Tore fertigstellen. Gehen wir unsere Eingangstore suchen. Gehen wir zu Ben Graf und fangen an zu spielen. In der Sequenz werden wir einen weiteren Knoten hinzufügen. Lass uns dieses Mal hochgehen. Und wir werden eine Ford-Schleife bauen. Nicht für eine F-Schleife. Nein, wir brauchen eine zufällige Menge KI, um zufällig zu spawnen. Zufällig in der Reichweite. Jetzt fangen wir mit einem Generator-Level an. Holen wir uns unsere Generator-Referenz, die wir nicht haben. Lassen Sie uns dafür einen erstellen. Lass uns vom Typ P. P Maze Gen Lass es uns auf dem Löffel zeigen. Lass uns zu seinem Telefon gehen, das in unserem Generator ist, druckt, Labyrinth-Generator Das Höllentor ist hier drüben. Das Hallentor ist hier eine große Sache. Das Pflaster habe ich kompiliert, aber das Labyrinth. Das ist die Reislinie. Das ist der Hall Gate Sponer. ich also nicht fand falsch Wir werden das überprüfen. Also lassen Sie uns das auf Hell Gate zurücksetzen. Und jetzt machen wir uns an den Generator. Bator kompilieren, das Gate, Gate Lass uns das Level erreichen. Ab mindestens Generator maximal Eins. Setze das auf einen zufälligen Wert. Wählt zufällig. B plus eins oder die Generatorebene. Jetzt müssen wir alle Charaktere aufrufen und Plus aufrufen. KI-Charaktere. Bei der Transformation habe ich den Host-Standort am Generator nicht angegeben. Ich habe den Generator nicht gemacht. Lass uns das hier verbinden. Ich muss aufdecken. Dies dient dazu, den Standort des Hosts offenzulegen. Acht. Und für den Standort des Gastgebers werde ich den Standort ermitteln. Spawnen wir sie? Nun, erinnere dich an den zufälligen Punkt in der Begrenzungsbox. Das werden wir verwenden. Dom-Punkt im Begrenzungsrahmen mit einer halben Größe von 300, eins, und das Zentrum sollten unsere Darstellerpositionen sein , also b der Körpergröße plus 40, sagen wir, wäre unser Mittelpunkt Jetzt holen wir uns die Generator-Referenz, Troy, ich gehe zu Bei der KI Wir brauchen auch noch eine Liste davon und bewerben diese Sorte Ändere es wirklich vom Schauspieler zum anderen, das wird kein ACA sein, seien die Zombies, unsere KI. Ich werde das hier verbinden. Wir müssen es nur ergänzen. Füge diesen Schauspieler hinzu. Nun, welche Schauspieler sollen vernichtet werden? Nennen wir das meine Zombies. Nein, es ist keine KI, nicht der Name unserer KI. Das nenne ich schon die Zombies und ich mag es. Was machen wir mit diesen Zombies? Wenn wir sterben, wenn das Tor stirbt. Du denkst, der Tod ist hier. Wir wollen alle Zombies , die wir gestorben haben. Also, bevor wir den Schauspieler zerstören, werde ich das M-Zombies-Array verwenden. Diese Zerstörung sollte abgeschlossen sein und von hier aus verbunden sein. Und zu meinen Zombies, wir gehen zu dem Gastgeber, Papa, all die Zombies, all die Feinde, wir wissen, dass das Höllentor gestorben ist. Und das wäre ein. Ich denke, das reicht für diesen. Wir werden mit dem nächsten weitermachen. Tschüss. 116. KI-Kugelschießen und Knockback-Mechanik: Hallo und willkommen zurück zum Gamedesign-Workshop im Kurs zur echten prozeduralen Dungeon-Action-RPs aus Engine Five Dungeon-Action-RPs Zuvor haben wir ein System entwickelt, das unseren Spieler erkennt. In unserer KI haben wir diese Kollisionsröhre hinzugefügt, die dafür verantwortlich ist, dass sich Start und Ende überschneiden, um zu überprüfen, ob sich der Spieler in Reichweite befindet. Bei der Startüberlappung gingen wir dann zu und durch eine Linientase, um zu sehen, ob unser Ziel der Spieler ist Können wir den Spieler direkt sehen oder gibt es etwas dazwischen? Und wenn ja, dann machen wir uns an den Angriff und haben unseren Actionfilm gestartet, unsere Action-Musik. Wenn es sich nicht überschneidet, haben wir einfach den Bereich von festgelegt. Dann haben wir bei Spielbeginn einen Timer erstellt , den wir gestellt haben dafür verantwortlich ist , ein System einzurichten , das ständig überprüft, ob der Spieler in einem Bereich befindet oder nicht Wenn ja, wenn wir nicht Stan sind, greifen wir an. Und dieses System ist ein Mechanismus , der im Laufe der Zeit abläuft, wie ein Dienst, wann wir es wollen und wann wir es wollen, können wir es über unseren Timer-Handle auf der Handle-Seite platzieren, im Grunde für die Verwaltung der Timer zuständig ist Dann haben wir unseren Spawnmechanismus in unseren Kopftoren für unsere KI fertiggestellt , wir haben eine For-Schleife mit unserem zufälligen Genre-Bereich unseres Generator-Levels verwendet Genre-Bereich unseres , zufällig eins hinzugefügt, auf dem Level plus eins, und dann haben wir einen zufälligen Zeiger auf einen zufälligen Punkt in der Begrenzungsbox verwendet , um unsere KI um unser Höllentor herum zu spawnen . Wir haben sie zu einer Reihe von Schauspielern hinzugefügt, die auf Me zerstört werden sollen, und wir haben sie zu einem anderen Array hinzugefügt um Mysombies zu sein, wie wir es nannten. Wenn also das When the Heal Gate stirbt, ist das kein Tod. Entweder hier ist der Tod. Und das Heal Gate stirbt. Es geht durch jeden der Zombies, jede unserer KIs. Das hey, ich bin gestorben. Es legt fest, dass die Variable Host tot ist, und dann reagiert es von selbst. Oh, fahren wir mit dem eigentlichen Dreh fort. Und die eigentliche Schießerei wird durch den Baum gerufen. Und dafür benötigen wir ein Blueprint-Interface, es für jede KI aufrufen kann , die der Baum verwendet Wir gehen zu unserem Ordner AI. Wir werden eine Blueprint-Schnittstelle erstellen. Nennen wir das B I AI. Lass es uns öffnen. Es ist eine Funktion. Das nennt man Tack Nennen wir es eigentlich Shooting. Kompilieren Sie die Einstellungen von Dave Bator A I an dieser Schnittstelle. A Ai und jetzt haben wir unsere OT-Schnittstelle Doppelklicken wir auf das Ereignis. Als Erstes sollten wir fragen, ob wir tot sind , denn wenn wir tot sind, schießen Sie nicht. Und wenn wir nicht tot sind, spielen wir eine Montage. Lassen Sie uns diese Montage erstellen, gehen wir im Browser zu. Gehen wir ins Leichenschauhaus, Leichenschauhaus und suchen nach Marie B. Es gibt einen langsamen Montage-Primärangriff Es gibt einen langsamen Montage-Primärangriff . Schauen wir es uns an. Hier sieht es gut aus. Wir werden das benutzen. Wenn wir nicht tot sind, werden wir den Advance Node montieren. Wir werden das Askelettnetz verwenden. Lass sie wieder hier fallen. Als Nächstes müssen wir unsere Kugel abspritzen. Lass uns unsere Kugel kreieren. Gehen wir zu unseren Ordner-Blueprints. Gehen wir zu Fähigkeiten. Lass uns mit der rechten Maustaste klicken. Lass uns Blueprint, Klassentür und P AI-Kugel gehen. Oh, lassen Sie uns zunächst ein Partikelsystem AD hinzufügen ein Partikelsystem AD Mein Benzin. Projektil. Da sind wir Ist das Leuchten des Dolches. Das nächste, was wir brauchen werden. Das statische Netz wäre Dolch. Dieser Perng hat A M LP verkauft. Wir müssen es ein bisschen rotieren. Dreht das Partikel. Die Klinge muss gedreht werden. Es ist kleiner und partikelförmig, also schneiden wir es auf 1,5 ein. Das scheint richtig zu sein. Und braucht ein Material. Das ist ein magischer Tiger. Hier haben wir einen magischen Tiger. Im Moment sieht es besser aus. Wir können es ein bisschen bewegen. Diese Linie, aber sie ist in Ordnung. Wir werden es nicht sehen können. Wir sehen nur ein Leuchten und einen Dolch Jetzt müssen wir nur die Kollision dieses Dolches ausschalten, weil wir eine Kollisionskapsel verwenden werden, um die Kollision durchzuführen Es wird keine Überlappung erzeugen. Es wird keine Kollision geben, und das ist eine Kapsel. Es ist eigentlich elternlos. Frau sollte dabei sein. Lass es uns rotieren. Es ist kleiner. Ein bisschen. Ich denke, das ist in Ordnung. Schreiben in dieser Kapsel sucht nur nach Pon, einer Kollision. Tatsächlich sucht es auch nach Wänden, alles außer protisch, blockwanddynamisch Überlappung aktiviert. mir bei dem Wort Dynamik nicht sicher, ob wir es wollen, weil wir vielleicht durch die Höllentore gehen wollten. Lassen wir es so einfach. Es ist einfacher. Und das Letzte, was wir hinzufügen müssen, ist eine Projektilbewegung Wir müssen die Schwerkraft ausschalten. Lassen Sie uns die Geschwindigkeit auf Null setzen. Und das Letzte, was wir tun müssen, ist mit dem Spiel zu beginnen, unsere Projektilbewegung auf Geschwindigkeit zu bringen und sie zu einer Variablen hochzustufen , die wir auf Swan exportieren Und machen Sie es zu Weihrauch, bearbeiten, kompilieren und speichern. Gehen wir nach unserer Montage zurück zu unserer KI und zu Plus Natürlich wäre der Schauspieler unsere KI-Kugel. Es ist keine Kugel. Es ist ein Tagger, aber es ist in Ordnung. Nein, wir spawnen es und was ist die Geschwindigkeit? Zum Glück tut es mir leid, wenn wir zu dem Verhalten übergehen. Zu unserem Skelett. Es gibt einen Socket namens Pon Pon R. Wir können ihn benutzen. Ein netter Ort. Gehen wir zurück zu unserer KI und ermitteln unseren Mesh-CKT-Standort. Hier sind die ganzen Geschwindigkeiten. Wir machen einfach weiter. Wir werden wieder zur Rotation zurückkehren. Wir werden uns die Rotation ansehen. Wir werden den Faktor voranbringen. Genau da. Wir werden uns vermehren, was im Grunde unser Kopf der Kugel sein wird. Machen wir also eine Ganzzahl, sagen wir 200, ein bisschen schneller als die Spieler. Das wäre es. Das wäre unsere Schießerei. Nun, das Event-Shooting wird, wie gesagt, vom Baum angetrieben. Deshalb ist es eine Schnittstelle. So kann der Baum an irrelevante Personen senden. Der Schauspieler braucht nur die Zwischennummer. Wir können tatsächlich ein paar Telefonate überprüfen. Wenn wir also spielen gehen, bekommen wir eine Menge Fehler in Mortgage and Blueprint und Mortgage Oh, das liegt daran, dass es einige Fehler gab. Weil ich den Charakter und dann das Casting im Morgmention Blueprint dupliziert habe, wird es tatsächlich einige Fehler geben, weil ich den Charakter dupliziert habe Ja. Also lass uns das reparieren. Besorgen Sie sich den Bauplan für das Leichenschauhaus, Ihren Originalentwurf. Diese schlechte Art, danach zu suchen. Charakter, Helden, Morges, Morgue-Spieler, lösche das alles Gehe zum Bauplan. Lass uns das sehen. Lass uns das sehen. Das und das. Jetzt ist es in Ordnung. Nein, wir können spielen. Lass uns nach einem Höllentor suchen. Und wir haben drei KIs. Oder wir haben drei. Wir sollten eins oder 21 haben , weil es auf O basiert. Ja, weil unsere For-Schleife auf Null basiert. Lass uns das reparieren. Lass uns zurück zu unserem Höllentor gehen. Ein sehr grundlegender Fehler, der trotzdem passiert ist. Torgegner. Null vor eins bedeutet zwei. Wir machen das bei minus eins. Wir werden Null bis Null sein, was eins bedeutet. Und jetzt haben wir kein Höllentor. Auch hier haben wir ein Höllentor. Diesmal will sie uns nicht. Hey, wir haben ein Höllentor und wir haben dort einen Feind. Hab ich recht? Lass uns es drehen. Lasst uns versuchen, es zu töten. Eigentlich schlage ich es, aber es hat nicht wirklich Geld. Es hat einen Sound. Ich möchte nur den Sound schließen. Es gibt keinen Schlepper. Ich gehe nach Atifs, wir werden zu Schleppern gehen und Schlepper E hinzufügen, glaube ich, nicht ich. Ich war für Gegenstände, Schnittstelle, Away E steht für Feind. Wir haben den Schlepper, wir sollten in der Lage sein, einen zu töten. Sie sterben. Sie stehen wieder auf, aber sie sterben. Die Gegenstände werden in Null, Null, Null gespawnt. Lass uns p ist es jetzt. Gehen wir zurück zu unserer KI und holen uns das ganz schnell. Tod, hier ist ein Tod, Flop. Natürlich waren das 000, weil wir noch keinen Standort festgelegt haben Standort wäre einfach. Aber sie werfen Gegenstände. Also das ist cool. Ja, es gibt eine KI Twittere und töte sie und sieh zu, dass sie Gegenstände direkt am Gate fallen lässt, egal Nun, wenn ich darauf klicke und die Maus bewege, gehe ich wieder hoch, aber es werden Objekte geworfen. Das nächste Ereignis, das von unserer Schnittstelle gesteuert wird , ist das Knockback-Ereignis, das wir auch bereits testen können Das können wir spielen, wir können in die medizinische KI gehen und es kriegt Knoba Oh, ich gehe zu unserer blauen Oberfläche, I KI, und zu einer Funktion namens Weil das auch eine universelle Botschaft ist Wir werden es von unserem Mi-Angriff aus senden, und es muss für jede KI gelten, nicht nur für diese bestimmte. Oh, es wird eine Gruppierungsschnittstelle sein um es an jeden beliebigen Akteur zu senden Aber ich denke, das ist ein guter Ausgangspunkt für diesen Moment. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 117. Knockback und Betäubungsmechanik: Hallo und willkommen zurück zum Game Design-Workshop, Real Engine Five Procedural Dungeon Action ARPZ Zuvor haben wir das KI-Geschoss nach dem Muster entwickelt, dass es aus einem Partikel eines statischen Netzes oder unseres Wutnetzes, einem Partikel, um es zum Leuchten zu bringen, einer Kapsel, die Hitze erkennt oder nicht, und einer Projektilbewegung benötigt statischen Netzes oder unseres Wutnetzes, einem Partikel, um es zum Leuchten zu bringen, einer Kapsel, die Hitze erkennt oder nicht, . Um seine Geschwindigkeit zu kontrollieren. Wir haben uns nicht um die Kapsel gekümmert, aber wenn du einen Spieler triffst, tun wir etwas , wenn wir ein Runden-Event beginnen , geben wir die andere Komponente. E, eigentlich brauchen wir das auch, aber wir brauchen im Moment einen Spieler. Und wir brauchen Filialen. Zuerst müssen wir fragen, ob der andere Schauspieler gültig ist . Ist der andere Schauspieler gültig? Weil es vielleicht de sein könnte, es könnte zerstört werden oder so. Also ist der andere Schauspieler gültig? Ist der andere Schauspieler dann ein Spieler? Wenn nicht ein anderer Spieler, ist der andere Schauspieler ein Feind. Und wenn es unser Spieler ist, fügst du dem anderen Akteur Schaden zu. Schaden von einem. Nennen wir article, meter, location.coin wäre Rede. Für den Emeter verwenden wir Dot Mortgage Do Impact , eine Jetzt, kleine grüne Wolke. Wenn der andere Schauspieler ein Feind ist, sollten wir nichts tun. Ich sollte es einfach durchgehen. Aber wenn nicht, werden wir einfach diese Wolke bilden. Natürlich werden wir zu guter Letzt einen Schauspieler vernichten. Wenn es zum Beispiel kein Feind ist, sondern eine Mauer, wirst du zerstört. Nach unserer BP-KI-Kugel. Wir haben unsere BI KI entwickelt , unsere Blueprint-Schnittstelle für KI, und zwei Events erstellt: den Dreh, den wir abgeschlossen haben, und den Rückschlag, den wir jetzt durchführen werden Nun, was das Shooting angeht, das ist nicht das Shooting. Das ist ein Shooting. prüfen, ob der Charakter tot ist. Wenn nicht, spielen wir eine Montage ab und wir erzeugen diese Kugel, die wir erzeugt haben, naja, eher Pingdolch Und wir entscheiden uns für den Standort, die Netztasche Entschuldigung, ich flicke. Der Massensocket-Name ist Waffe R und für die Geschwindigkeit zwischen diesem und der Position des Schauspielers mit der Geschwindigkeit, die wir gewählt haben Lassen Sie uns nun mit unserem Back-Event fortfahren. Nein, lass uns Pack mitbringen. Nein, wir doppelklicken hier ins Gesicht. Wir bekommen das Ereignis und setzen den Charakterstatus auf eins. Dann werden wir den Standort ermitteln und ihn vorübergehend halten, weil wir zu diesem Ort in Richtung eines anderen Ortes wechseln werden. Wir werden diesen temporären Standort abschotten. Zurück. Und dann möchte ich eine andere Variable machen. Lass es uns tatsächlich erstellen. Ich werde vom Typ Integer dieses Bereichs sein. Nun, unser Rückschlag könnte manchmal ein bisschen fehlerhaft sein und durch Wände gehen, kann durch Orte gehen So könnten wir das mit Trace-Linien und einigen teureren und detaillierteren Regeln machen, aber das wird in Ordnung sein Ich werde unseren zufälligen Flug in der Reichweite machen, aber in der Reichweite. Und sagen wir 100-150. Was wir tun müssen, ist eine Montage abzuspielen. Spielen Sie eine Montage ab und lassen Sie uns eine Montage erstellen. Du gehst zu unserem Ordner Hypothek. Das ist Mack. Das hier. Und wir werden eine Animationsmontage erstellen, wir werden den Slot für den Oberkörper öffnen. Speichern Sie s und gehen Sie zurück zu unserem Y. Ich kann die Montage und dieses Skelettnetz fallen lassen, und jetzt haben wir eine Animation. Jetzt, wo diese Animation passiert, spielen wir eine Zeitleiste ab. Und beim Update werden wir den Standort festlegen. Ich werde alarmieren. A wäre unser temporärer Knockba Für B brauchen wir eine Richtung , die wir mit unserem Rückenbereich multiplizieren werden mit unserem Rückenbereich multiplizieren Konvertiere diese Ganzzahl, im Grunde muss die Richtung intern kommen Was wir tun werden, ist, unserer Druckschnittstelle NBA einen Eingabefaktor hinzuzufügen . Diese Richtung. Compiler Dave Wenn wir jetzt zu unserer KI zurückkehren, haben wir sie hier, und wir können sie hierher bringen nun für unser Alpha-Laufwerk Lassen Sie uns nun für unser Alpha-Laufwerk die Zeitleiste eingeben. Wählen wir den Ski-Rahmen aus, den wir verwenden möchten. Lassen Sie uns einen Float-Truck hinzufügen. Fügen wir zwei Punkte hinzu. Nehmen wir an, die Zeit wäre 000, der erste Punkt wäre 000, zweite Punkt wäre 0,5, sagen wir eins. Und das wäre unser Alpha. Nun, wenn wir packen, sollte das nächste, was passieren sollte, sein, dass wir nach dem Rudel den Status ändern , um anzugreifen. Und wir fügen uns selbst Schaden zu. Wenn wir es wirklich wollen, tun wir es. Wenn wir wollen, dass die Männer keinen Schaden anrichten, fügen wir uns einfach keinen Schaden zu. Das wäre es. Wir haben einen Rückschlag. Oh, teste es Geh, um Level zu erreichen. Wir müssen es unserem Geruch hinzufügen. Gehen wir zu unserer Ich-Fähigkeit über. Fähigkeiten, wo ist das Ich. Nun, wenn wir anfangen, uns zu überschneiden und der andere Schauspieler E ist, der andere Schauspieler, und wir schlagen zurück Als Richtung nehmen wir den Vorwärtsvektor des Schauspielers. Da dieser je nach Charakter rotiert. Lassen Sie uns nun den Test fortsetzen, es gibt eine KI. Da ist O Es ist wirklich weit weg gegangen. Er ist gestorben. Ich bin durch den Boden gegangen. Ich fand das zu laut. Okay, also wir müssen das reparieren. Lass uns eine Pause machen, Optily. Wenn man da nicht versucht zu lesen und einen Stift zu besitzen, ist das okay Lassen Sie uns das hier tun. Wenn es nicht gültig ist, versucht es es zu tun. Vielleicht, weil wir es nicht besessen haben. Ja. Ja, was stimmt nicht mit dem Klopfen, das mit einem Schauspieler, einem Patienten zu tun hat. Schauspieler, einem Patienten Wenn wir es an den Player anhängen, öffnen wir den Player-Blueprint für eine Sekunde Gehen wir zu den Bauplänen, zu unserem Top-Charakter. Antworte mir, wir hängen es an. Schauspieler selbst, also nein. Moment, es scheint an zu sein. Doch Schauspieler. Wir spielen, also sollten wir von Anfang an pingen . Okay. Ja, ich füge den temporären Standort nicht zur Richtung hinzu. Es gibt eine Richtung aus diesem Grund zurück zum Anfang der Karte? Deshalb ist es wieder zum ersten Feld zurückgekehrt, wenn ich Mack klopfe ersten Feld zurückgekehrt Hat sich hier auf das erste Plättchen geworfen , weil ich hier war und sich hierher geworfen Es hat also eine Richtung, aber wo auf der Welt. Ich habe nicht angegeben , wo auf der Welt. Wir haben wieder das Problem mit der Texturierung. Also unser Streaming in voller Größe 200. Sie können sehen, dass die Karte hier schlecht strukturiert ist , gut Und lass uns eine KI suchen. Hier gibt es keine. Okay. Hier gibt es eine KI. Neben ihr. Und jetzt funktioniert Knock Back Wir unterstützen KI. Es ist sehr nervig , wenn wir aufstehen, aber wir werden das reparieren sollten sie. Es scheint nervig zu sein. Ich werde das später herausfinden . Machen wir weiter mit der KI. Kein Rücken funktioniert, unsere Schießprobleme, aber unser Rücken, der funktioniert , richtet auch Schaden Nun zu guter Letzt, was wir tun müssen bevor wir unsere Entscheidung T eingeben, all diese Optionen aktivieren Wir müssen zwei weitere Ereignisse auf unserer BI, I, KI, erstellen , sodass ich tatsächlich für eine Sekunde malen kann. Wir haben das schon lange nicht mehr gemacht. Oh, sagen wir, unsere KI ist hier drüben und da ist eine Mauer. Und unser Spieler ist hinter dieser Mauer. Wenn die KI nun versucht, den Spieler zu finden, bewegt sie sich irgendwo hier, sagen wir, sie erreicht diesen Punkt. Ihre Richtung wäre eigentlich nicht nach oben, sondern zum letzten Ort zu dem Ort, an den sie sich bewegt. Aber wir wollten uns dem Spieler zuwenden. Also werden wir ein bisschen schummeln und die Rotation verwenden, das ist ein R, komisches R, aber es ist ein R. Die Rotation basiert auf Bewegung, also die Drehung verwenden, um sich in Richtung Bewegung zu drehen Und wenn wir das dann ausschalten und die Controller-Rotation verwenden , wird sie auf den Spieler ausgerichtet Denn die KI bewegt sich zu einem Punkt und sie wird sich dem Spieler zuwenden. Und wir legen die Abspielgeschwindigkeit fest und alles der Entscheidung und der Entscheidungsfindung zu tun hat. Das Verhalten t. Wie dem auch sei, lassen Sie uns zu unserem Projekt zurückkehren. Und lassen Sie uns diese beiden Ereignisse hinzufügen. Gehen wir zu B I AI. Funktion. Nennen wir das Controller. Lass uns noch eins machen, die Bewegung rotiert. Lasst uns zur KI gehen und diese beiden Ereignisse nennen. Um zu kompilieren. Dave. Controller-Rotation, Bewegungsrotation, wir bekommen die Bewegung unseres Charakters, gewünschte Rotation. Was? O Das orientiert Rotation an Bewegung. Das sind die beiden. Das wird aus sein und das würde auf der Grundlage der obigen Werte geschehen. Verbinde die Bewegung des Charakters und das wird aktiviert und das wird ausgeschaltet sein. Und das wäre es. Unser Code hier, er ist so ziemlich innerhalb der KI gemacht. Lass uns das hier ansprechen. Auch hier ist es alleine, und das wäre es. Lass uns kompilieren und speichern. Und im nächsten beginnen wir mit unserem dritten Verhalten. Tschüss. 118. Blackboard-Variablen und Verhaltensbaum-Setup: Hallo und willkommen zum Game Design Workshop und zum Real Engine Five Procedural Dungeon Action LPG Zuvor hatten wir unsere Veranstaltungen zum Thema KI, unsere BI-Veranstaltungen und unsere Nachrichtenveranstaltung abgeschlossen BI-Veranstaltungen und unsere Nachrichtenveranstaltung Wir sind mit Knock Back fertig. Wir haben unseren Charakter auf Betäubung eingestellt, wir haben einen temporären Ort festgelegt, eine temporäre Rückstoßreichweite. Wir spielen eine Animation ab, und während die Animation läuft, spielen wir eine Zeitleiste von Dabei handelt es sich um den Zeitpunkt der Animation und entsprechend um den Standort des Darstellers , den wir bei unserem E-Mail-Angriff als Richtung verwenden und den übergeordneten Standort hinzugefügt haben. Am Ende habe ich es vergessen, die Taste Run zu drücken und die Richtung vorzugeben, wo auf der Welt, und wir gehen durch den ursprünglichen Ort, an dem wir sein sollen. Jetzt, wenn es fertig ist, stellen wir unsere KI in den Modus mit zwei Angriffen ein und sie bekommt einen Schaden , der eigentlich entgegengesetzt sein sollte . Der Grund ist nun ja, das ist nicht wirklich wichtig. Denn wenn wir einen Schaden bekommen, werden wir fassungslos sein Also ja, deshalb ist es wichtig, denn wenn wir zuerst Schaden anrichten und dann zu dem Schadenereignis übergehen? Hier ist es, wir bekommen einen Schaden und wir werden fassungslos sein. Und wenn wir schon fassungslos sind, macht uns das nicht wieder weh Danach wechseln wir zum Angriff. Deshalb ist diese Reihenfolge wichtig. Nun, es ist ein kleiner Bug, weil das nicht bedeutet, dass es bis zum Ereignis warten wird, denn es ruft dieses Ereignis auf. Es nennt angewandten Schaden. Ich glaube nicht, dass es warten wird. Wir können hier keine kleine Verzögerung einlegen. Von 0,1. Dann sei sicherer, um anzugreifen. Jedenfalls. Dann haben wir zwei weitere Events , bei denen wir statt orientierter Bewegung auf unser Ziel, unseren Spieler, zielen. Und all das wird im dritten Verhalten der KI passieren. Jetzt sollten wir zuerst die Tafel wirklich füllen. Aber bevor wir das tun, lassen Sie mich einige Dinge erklären Durch die Wurzel. Dies ist der erste Knoten, der ausgeführt wird, wenn wir den Verhaltensbaum ausführen Wir haben einige Optionen. Wir haben den Selektor, die Sequenz und die einfache Parallele Was wir verwenden werden, sind Selektor und Sequenz, nicht optimaler In einigen Fällen hätten wir eine einfache Parallele verwenden können, aber das sind die beiden häufigsten Aber lass uns einen Selektor mitbringen und lass uns auch eine Sequenz mitbringen Sie beide können diese Pfeile hier sehen. Wenn ich die Verbindung zum Stamm zwei herstelle, verbinde ich leider nur einen. Aber bring einfach so einen anderen Selektor mit. Sie können sehen, dass wir die Reihenfolge der Operationen 012 haben. So läuft es. Also wenn ich das herbringe, dann werden daraus zwei. Also laufen sowohl die Selektoren als auch die Sequenzen von links nach rechts, um ihre Aktionen abzuschließen Der Unterschied zwischen Selektor und Sequenzen , dass, wie es im Tooltip steht, die Ausführung beendet wird, wenn eines seiner untergeordneten Elemente erfolgreich ist. Wenn dies das Gegenteil ist, wird es von links nach rechts fortgesetzt, wird es von links nach rechts fortgesetzt bis eines der Was wir für den ersten Knoten verwenden ist Elector Ich gehe hierher. Wir hätten eine Sequenz gebrauchen können. Das ist nicht wirklich wichtig, denn in diesem Knoten, Selektor-Sequenz oder in dieser Parallele können wir diese Dekorationen platzieren, was bedeutet, wie die Bedingungen für diesen Selektor Ich schweife ab. Fangen wir mit dem Einstellen unserer Variablen in unserer Variablen werden hier Schlüssel genannt, und im Grunde sind es dieselben Variablen Aber um sie zu aktualisieren, müssen wir es auf eine bestimmte Art und Weise tun. Aber fügen wir sie zuerst hinzu. Lass uns b erstellen, wir brauchen eigentlich drei Bs. Eins, zwei, drei. Wir brauchen zwei Vektoren. Wir brauchen auch eine Aufzählung von acht. Sagen wir diese Acht. Sagen wir, P eins wäre tot. P zwei wäre am besten tot. Drei wäre in acht. Wir brauchen die Reichweite nicht , weil sie bestimmte andere haben wird , wir brauchen die Reichweite. Warum nicht? Lass uns auch in Reichweite haben. Wir können es benutzen. In gewissem Sinne. Oh. Die Vektoren sollten Wirte sein. Der Standort und der andere sollten an den Standort verschoben werden. Jetzt brauchen wir endlich einen Schauspieler. Wir brauchen den Feind, als ob er gegen den Feind ist. Was werden wir also tun, um ein Objekt zu erstellen. Der Unterschied besteht darin, dass Objekte in der Hierarchie höher stehen als die Akteure. Wir können hier keine bestimmten Akteure als Variable verwenden. Wir können keinen Schlüsseltyp haben, wie zum Beispiel das Objekt in diesen Case-Akteur zu ändern , aber wir hätten es so ändern können, dass es etwas Spezifisches ist. Aber es ist besser, es so allgemein wie möglich zu halten. Wir müssen nur den Überblick behalten wir sollten den Schauspieler oder das Objekt nicht auf etwas setzen, das nicht korrekt ist, weil dadurch Dinge rückgängig gemacht werden den Schauspieler oder das Objekt nicht auf etwas setzen, das nicht könnten Das kann zu Abstürzen führen. Also lasst uns das speichern und zu unserem Verhalten zurückkehren. Wir hätten einfach in diese Wanne gehen und abstürzen können. 119. Einrichten von Blackboard-Variablen und KI-Verhaltensbäumen: Hallo und willkommen zum Game Design Workshop in Real Engine Five Procedural Dungeon Action PZ Manchmal mag es nicht, wenn du draußen eine Tafel editierst und sie darin geöffnet hast, was zu einigen Abstürzen führt Zurück zu unserem Baum. Das Erste sollte der Lektor sein, aber das ist nicht wirklich wichtig, weil er nur einen Dienst ausführen wird Lassen Sie uns auf dem neuen Dienst arbeiten. Nennen Sie diesen Dienst ES, PT Service. Am zum PD-Dienst, hol uns. Öffne es, öffne es, Seite. Was wir brauchen, ist dass Sie Tick AI erhalten Lassen Sie uns zunächst eine Sequenz erstellen, weil wir nicht möchten, dass sie jedes Mal ausgeführt wird Und das wäre, den Schauspieler des Spielers als Referenz zu bekommen. Wir haben unsere Variable in unserer Tafel , und wir haben ein Objekt Nennen wir diesen Spieler oder Feind. Das Paar ist der Feind des Ich-Feindes, was auch immer du willst. Oh, wir werden hier eine Variable erstellen. Es wird eine Tafel sein, Selector. Nennen wir diesen Selektor jetzt Enemy. Lass es uns hierher holen Lass uns fragen, ob es gültig ist. Wir werden den p-Wert sichern. Als Schauspieler ist dieser Wert an der Tafel ein Schauspieler. Wir kennen es von Blackboard, was Objekt ist, aber Akteur der Basisklasse spielt keine Rolle Und das ist wichtig, wenn wir Blackboard Blackboard-Schlüssel hinzufügen , um zu wissen, um welche Art von Wert es sich handelt , welche Art von Wert, welche Art von Akteur Um welche Art von Variablen handelt es sich, welche Art von Variablen es sich handelt. Nein. Wir werden prüfen, ob das gültig ist. Ich werde es hier verbinden. Denn wenn ich nach diesem Wert fragen würde und ich würde ihn als Vektor fragen und es wäre ein Schauspieler, dann würde das nicht funktionieren. Aber es gibt auch etwas, das uns sagen wird , worauf er basiert. Lassen Sie uns den Service hier hinzufügen , um diese gute Chance aufzuzeigen. Also klicke ich mit der rechten Maustaste, ich füge den Dienst hinzu, und der Dienst, den ich hinzufügen werde, wird gestartet. Wenn ich nun diesen Dienst auswähle, habe ich die Variable nicht verfügbar gemacht. Das ist auch etwas sehr Wichtiges. Wir müssen die Blackboard-Tasten sofort editierbar machen. Sie sollten freigelegt sein, sonst kann der Baum sie sehen. Jetzt haben wir also den BB-Feind hier, und wir müssen ihm eine Referenz geben , unsere Blackboard-Tasten, wie Sie sehen können Also welcher Schlüssel ist das? Dieser Schlüssel wäre also Feind, von dem wir wissen, dass es sich um ein Objekt vom Typ Schauspieler handelt, und wir korrelieren diesen Wert auch mit der Tafel Wenn nun eine dieser Änderungen der Ereignisse nicht korrekt ist, wird das nicht funktionieren Deshalb sage ich, dass es etwas übertrieben ist, Tafeln für einfache Aufgaben zu verwenden , aber es ist auch eine nette Möglichkeit, Tafeln anzuzeigen Lass uns weitermachen. Wenn er nicht gültig ist, möchten wir diesen Schlüssel erneut an der Tafel Als Objekt. Weil wir versuchen, es als Schauspieler darzustellen. Sie können sehen, dass es nicht existiert. Das ist also nur eine Möglichkeit, es zu umgehen. Im Grunde speichern wir es als Objekt und wir wissen irgendwie, speichern wir es als Objekt und wir um welche Art von Objekt es sich handelt. Lass uns das hier verbinden. Und was den Wert angeht, werden wir es schaffen. Also, das ist das Einzige, was läuft. Die zweite Sache, die wir tun müssen, ist alle unsere Werte zu aktualisieren. Um das zu tun, müssen wir eine Blueprint-Schnittstelle hinzufügen, wir werden eine Funktion hinzufügen, alle Get-Ts aufrufen und es wird eine Menge Ausgaben haben Aber wir brauchen unseren Bulin. Wir müssen tatsächlich unsere Blackboard-Schlüssel kopieren. Also ist einer tot, der andere, geführt Der andere ist in und ist in Reichweite. Dann brauchen wir noch einen Wert von E M, nein. Ein EA habe ich angegeben. E Ein Staat. Nennen wir dieses Datum. Zu guter Letzt brauchen wir noch einen , der Typ ist oder der Standort des Gastgebers sein wird. wir nun zu unserem Charakter zurück, nur um diese letzte Funktion zu erfüllen. Oben unten befindet sich ein Charakter, der KI-Charakter, eine Kugel. Es ist geschlossen oder wir öffnen es erneut. Wahrscheinlich durch den Absturz. Es ist hier nicht geschlossen. Ist es. Das ist dieses Ding , das es sehr klein macht . Verbannen wir es hier drüben. Gehen wir jetzt zu unserer Benutzeroberfläche, gehen wir zu Starts und lassen Sie uns die richtigen Ankünfte verbinden. In Reichweite für Reichweite, drinnen für den Einblick, tot für tot, Host-Standort für Host-Standort, acht für Status, und Host ist tot oder Host ist tot. Gehen wir zurück zum Service. Lassen Sie uns eine Reihe von Black-Port-Schlüsselwerten erstellen. Die Acht. Holen Sie sich den Staat Suts. Also hol Stuts Und wir können sehen, was was ist? Wir brauchen einen Toten. Wir brauchen einen toten Posten. Sie sollten alle BB vor sich haben, Blackport Key. B innerhalb des B-Bereichs. Als zusätzliches R duplizieren wir noch zweimal B 8 und B. Jetzt müssen wir all diese Werte angeben. Fangen wir also damit an, dass wir Blackward Kias öfter kopieren und einfügen müssen Und wir kriegen die Bullen, Dad, die Bion die Keys Range Verbinden wir das und lassen Sie uns eine Verbindung zwischen tot und Host zu Insight und Reichweite Lassen Sie uns abschließend diese schwarze Taste in Aktion setzen. Ich werde den Staat herholen. Geben Sie den Back-Portkey als Vector ein und verbinden Sie das hier und das hier. Also, alles ist vorbereitet. In unserem BTT BT-Service. BTT BT-Aufgabe. Weit weg. Schließen wir den Dienst. Wir brauchen es nicht mehr. Gehen wir zurück zu drei und wir müssen los. Ich habe sie nicht posieren lassen, geh zurück zum Gottesdienst. Lassen Sie uns das alles aufdecken. Wir können dieses I hier drüben anklicken. Wir müssen nicht wirklich darauf klicken, aber wir können hier auf das I klicken. Jetzt zurück zu drei. Lassen Sie uns den Dienst auswählen. D sie kompilieren und jetzt können wir sie alle einstellen. Aber tot ist tot. OS tot ist Host tot. Drinnen ist drin, I-Bereich entspricht Reichweite, AD-Status und Host-Standort ist Host-Standort. Dadurch werden unsere Statistiken, unsere Tafel, aktualisiert , da wir alle 0,5 mit einer Abweichung von eins sehen können alle 0,5 mit einer Abweichung von eins sehen Ich denke, das ist ein bisschen niedrig. Aber vielleicht sollten wir es ein bisschen schneller machen. Um das zu tun, setzen wir es auf 0,4 und die Abweichung auf eins, und es läuft alle drei, zwei, 5 Sekunden statt vier bis sechs. Oh. Die nächste Sache ist, was machen wir mit all diesen Informationen? Nun, ich denke, das ist ein guter Ausgangspunkt für diesen. Wir haben unsere Referenzen übergeben, wir haben unsere Variablen an unsere Tafel Und beim nächsten Mal fangen wir an zu programmieren, was mit diesen Informationen passiert 120. KI-Patrouille-Verhalten und Panikmodus: Hallo und willkommen zum Game Design Workshop, echten prozeduralen Engine Five-Kurs Erstellung von Dungeon-Action-Rollenspielen Zuvor haben wir unseren Service eingerichtet, um unsere Informationen zu aktualisieren Und dafür haben wir Funktion in unserer Blueprint-Oberfläche verwendet, die als Get Stats bezeichnet wird In dieser Funktion haben wir einige Ausgaben hinzugefügt und in unserem KI-Charakter haben wir diese Funktion gefüllt, um unsere Starts weiterzugeben In unserem Service haben wir dann den entsprechenden Code verwendet, um die Tasten auf der Tafel zu setzen , indem wir von unserem gesteuerten Pon aus gestartet Jetzt haben wir auch festgelegt, dass das Pon des Zahlers nur einmal ausgeführt wird, wenn der Blackboard-Schlüssel nicht gültig ist Lassen Sie uns jetzt weitermachen. Lassen Sie uns einen Selektor-Lektor erstellen , wie Sie sehen können Wenn wir die Route verlassen, erhalten wir viel mehr Optionen Dies kann beispielsweise passieren, wenn EQuS nach dem ersten Knoten ausgeführt Und wir werden nicht ins Detail gehen. Aber der erste Selektor sollte nur einen Dekorateur haben, und das wäre ein Blackboard-Decorator, was einen Blackboard-Zustand bedeutet Wenn wir also auf den Decorator klicken, was im Grunde eine Regel ist, um damit fortzufahren, wir die Regel verwenden. Lass uns auf die Regel klicken Und wir werden unsere Abfrage so einstellen, die Blackboard-Taste, die nicht gesetzt ist, die Blackboard-Taste ad wäre Wenn wir tot sind, werden wir das nicht weitermachen, und es wird den Anruf abbrechen Das bedeutet, dass alles, was da passiert, wir hier weitermachen, was in unserem Fall bedeutet, nichts zu tun Nun, für unseren ersten Wähler, benutzen wir ens. Das könnte das Beste sein, was unser Selektor zuerst versucht, weil er aufhört, wenn die ersten Kinder Unser erster Versuch ist also erfolgreich, wenn wir uns im Patrouillenmodus befinden Und das erinnert mich daran, gehen wir zurück zu unserer KI und setzen unseren Status auf Standardpatrouille. Das ist es standardmäßig. Das ist sehr wichtig, denn wenn das nicht Patrouille ist, dann läuft unsere Sequenz nicht, ich werde nicht spielen. Wir werden den Korridorschlüssel hinzufügen. Wir werden den schwarzen Portschlüssel auf den Aufzählungsstatus setzen , und das ändert die Schlüsselabfrage und entspricht dem Schlüsselwert Oh ja. Wir müssen zur schwarzen Tafel. Für die A müssen wir einen Typ wählen, das wären KI-Staaten. Alle Einzelheiten. Lassen Sie uns nun den E-Wert auf Patrol setzen. Dies ist die Voraussetzung für die Ausführung der Sequenz. Wenn dies fehlschlägt, wird mit dem nächsten Schritt fortgefahren. Der erste, der erfolgreich sein wird, wird eintreten. Das ist der Selektor. Jetzt machen wir die Sequenz, was zwei Dinge bedeutet, bis eine davon ausfällt Nein. Das erste, was wir tun müssen, ist eine Aufgabe auszuführen, die einen zufälligen Punkt erhält. Lassen Sie uns eine neue Aufgabe erstellen. Nennen wir es BT-Aufgabe. Lassen Sie uns zwei zufällige Standorte ermitteln. Und wir geben es ein. Jetzt. Wir werden KI ausführen, das heißt wann, habe nicht so viel erklärt. Hier haben wir eine Empfangs-Tick-KI bekommen, die der Tick tatsächlich anhand unserer Timeline bestimmt hat. Hier haben wir hier ein Häkchen gesetzt , bei dem dieser ausgeführt wird. Unser Exute wird diese Aufgabe hier nennen. Nennen wir es also tatsächlich. Wir können hier bei Aufgaben die zufällige Position von DT Tsk sehen zufällige Position von DT Tsk Aber lassen Sie uns den Code eingeben. Also das ist der Ex, der KI empfängt. Empfangen Sie das Ereignis „KI ausführen“. Dafür benötigen wir drei Variablen aus den Blackboards Lassen Sie uns drei Variablen erstellen Blackboard Value oder But I have or selector Der Rest von ihnen. Schlüsselwähler. Schlüsselwähler Der erste wäre unser Umzug nach Key. Der zweite wäre Gastgeber. Der dritte wäre unser Root, Root-Host. All diese müssen vor ihnen liegen, nur um korrekt zu sein. Das Wort Schlüssel wird nicht benötigt. Wir werden unseren Kontrollpunkt bekommen. Wir werden den Standort des Schauspielers ermitteln und auswählen. Der Wert wäre, wenn unser Host tot wäre. Der Wert als Bann, weil unser Host tot ist, ist ein Verbot. F B, wir werden den Host-Standort ermitteln, genau genommen Host-Standort, und wir werden einen Port als Vektor bekommen . Verbinde es hier. Als Nächstes zeigen wir auf den erreichbaren Radius und setzen den Radius auf 800. Was macht das? Es sagt uns, wenn unser Gastgeber tot ist, bekommst du einen zufälligen Punkt gegenüber dem Spieler. Wenn er nicht tot ist, bekommst du einen zufälligen Punkt in der Nähe des Wirts. Und dann gehen wir zu dem Film, den bemerkenswerten Filmen. Wie auch immer, Luck ist ein Vektor, und das ist ein Ergebnis Wenn wir jetzt eine Aufgabe ausführen, müssen wir die Ausführung beenden Nun, nicht immer, aber hier muss man wissen, dass es ein voller Erfolg ist Ich verstehe schon, weil wir hier keine Bedingungen stellen Ob das fehlschlägt oder erfolgreich ist, spielt für uns keine Rolle Wir werden sagen, dass es erfolgreich war. Unsere Sequenz kann die nächste Aufgabe ausführen, was wir nicht komplizieren werden. Wir werden nur zwei verwenden. Denn für die Blackboard-Taste verwenden wir Zug zwei, A, dann C. Jetzt ist es Standort, nicht Standort. Nein. Was wir tun müssen, ist unserer Aufgabe nachzugehen und zu überprüfen, ob wir das getan haben. Ich habe das nicht veröffentlicht. Sie müssen immer öffentlich sein, und wir können den Umzug auf unseren Standort, unseren Host-Standort auf unseren Host-Standort festlegen , und der Host ist tot für den Host ist tot. Lassen Sie uns von hier aus eine weitere Sequenz machen. Geben Sie einen Decorator und einen Blackboard-Wert und die Bedingung wäre: Root ist tot, Host ist Und wenn es nicht gesetzt ist, gehen wir rein. Und was wir tun werden, bitte warte 5 Sekunden. Also, wenn es patrouilliert und der Host nicht tot ist, warte ich 5 Sekunden. Wenn es patrouilliert und der Host tot ist, läuft er einfach zufällig durch unseren Wir haben zum Beispiel einen Panikmodus geschaffen. Der Host ist gestorben, wir rennen endlos los. Dies wird ein Panikmodus sein. Wir werden ihn nicht im Panikmodus haben. Wir werden einfach wieder patrouillieren und es wird von selbst in Panik geraten. Um es noch einmal zu wiederholen, wir fangen an und prüfen, ob wir nicht tot sind. Wenn wir nicht tot sind, versuchen wir herauszufinden, ob wir patrouillieren Wenn wir nicht patrouillieren, werden wir etwas anderes tun Wenn wir patrouillieren, wählen wir einen zufälligen Ort um uns herum Wir ziehen an diesen Ort. Wenn unser Gastgeber nicht tot ist, warten wir. Wenn unser Host tot ist, wählen wir einen anderen Ort und rennen herum. Nun, eine letzte Sache sollten wir noch einmal tun, die Abtreibung selbst Wenn sich das ändert, bricht das ab, s. Und wenn der Host tot ist, wenn der Host tot ist, das ab, wir brechen das ab, wir brechen das Gewicht Eine einfache Sache ist die CVI-Pass-Sequenz hier drüben Hier wird es der letzte sein, denn zwischen ihnen wir schießen. Und anstatt nach Patrouillen zu suchen, werde ich nach Betäubung suchen Und wenn wir fassungslos sind, tun wir nichts , was es wäre Wir sind fassungslos. Ich weiß, vielleicht bist du auch fassungslos, aber so funktioniert es Dieser ist einfach. Und wir werden es uns selbst überlassen, wenn wir den Zustand ändern von. Nun, ich denke, das könnte eine nette Überwindung sein. Im nächsten Schritt werden wir die Schießlogik anwenden, denn wenn wir nicht patrouillieren müssen wir überprüfen, ob wir schießen Und zuletzt überprüfen wir, ob Betäubung vorliegt . Und dann werde ich dich sehen Auf Wiedersehen. 121. KI-Angriffsmodus und Sichtlinien-Checks: Hallo und willkommen zum Game Design Workshop Under Engine Five Procedural Dungeon Action-RPG Creation Zuvor haben wir eine BT-Aufgabe zur Auswahl eines Standorts erstellt. Wir haben drei Variablen erstellt, die Black Port Keys, und eine davon ist der Host-Standort. Die andere ist der Umzug zum Standort, und die andere ist, dass der Host tot ist. Wenn der Host also tot ist, wählen wir einen Standort in der Nähe unseres Spielers. Wenn er nicht tot ist, wählen wir einen Standort in der Nähe des Hosts. Und wir legen diesen Ort fest, an den wir umziehen werden. Dann beenden wir die Ausführung mit einem vierten Erfolg. In unserem Baum haben wir es nach der Frage hinzugefügt , ob der Spieler tot ist. unserem Selektor überprüfen wir als Erstes, ob sich unsere KI auf Patrouille befindet Befindet sie sich im Patrouillenstatus, wählen wir diesen zufälligen Ort der Aufgabe Wir verwenden diese Aufgabe, es sich um die Auswahl eines zufälligen Standorts handelt. Wir ziehen an diesen Ort. Wenn der Host tot ist, warten wir 5 Sekunden. Wenn er nicht tot ist, laufen wir weiter im Panikmodus. Und dann haben wir eine weitere Bedingung hinzugefügt, eine weitere Sequenz, falls das fehlschlägt. Es wird versuchen zu überprüfen, ob wir betäubt sind, und wenn wir betäubt sind, wird es nichts tun Nein. Lass uns sofort unseren Angriff starten. Aber auch dieses Mal brauchen wir einen Selektor. Weil wir zwischen zwei Dingen suchen werden , um zu überprüfen, ob wir das eine oder das andere eingeben, weil der Selektor stoppt wenn eines seiner untergeordneten Elemente erfolgreich ist, sodass er nicht zum nächsten übergeht Lassen Sie uns nun tatsächlich eine Sequenz verwenden. Geben wir den Blackboard-Wert für den Decorator ein. Wählen wir den Decorator aus , der Blackboard Key wäre, unser Status entspricht Angriff Natürlich wird es sich von selbst abtreiben. Oh. Holen wir uns unsere Sequenz. Als Erstes sollten wir überprüfen, unser Schauspieler in Reichweite ist. Lassen Sie uns hier die Bereichsvariable auflisten. Stellen Sie einen Dekorateur auf, Tafel. Reichweite. Das ist eigentlich nicht festgelegt. Wir sind nicht in Reichweite, wenn wir uns in einem Angriffszustand befinden, und wir sind nicht in Reichweite Gehen wir in Reichweite. Um das zu tun, benötigen wir eine weitere Aufgabe. Stellen wir das auch auf Surfbrett ein. Wissen Sie was, lassen Sie uns eigentlich nicht vorwärts gehen. Wenn wir nicht in Reichweite sind, werden wir versuchen, in Reichweite zu kommen, was auch immer passiert. Selbst wenn der Spieler plötzlich in unsere Reichweite kommt, sollten wir trotzdem zu der Position gehen, für die wir uns entschieden haben. Es wird so aussehen lassen, als würde die KI etwas tun, wir werden Angst erzeugen. Lassen Sie uns jetzt unsere Aufgabe erstellen, nennen wir sie Schritt zum Ziel. Neue Aufgabe, im Tempo, nennen wir das Wards und treten ein. Wir werden das Event Execute erneut verwenden. Strahlt KI aus Und das Erste, was wir tun sollten, ist für den Fall, dass wir bereits angegriffen haben und rotieren, die Rotation so Fall, dass wir bereits angegriffen haben eingestellt haben , dass sie sich zum Controller dreht Wir müssen auf Bewegungsrotation umstellen. Wir senden an unseren KI-Blueprint. Das ist die Kugel, mit der wir uns gerade bewegen werden, und wir müssen die Orient-Rotation zur Bewegung nutzen Denn wenn wir angreifen, verwenden wir die Orient-Rotation zur Steuerung. Nein, Bacor Service, diese Bactor Task. Das nächste, was wir tun sollten, ist eine Frage zu stellen. Also werden wir eine Filiale anlegen Nun, die Frage wäre, können wir einen Punkt neben unserem Spieler erreichen? Wir finden einen Punkt Im Grunde werden wir wieder eine mathematische Formel erstellen, um einen Kreis um unseren Charakter zu bilden. Und wenn wir einen Punkt in diesem Kreis erreichen können, wird es wahr sein. Wenn nicht, wird es falsch sein und wir werden die Ausführung ohne Erfolg beenden. Also das wird wieder laufen. Es wird scheitern. Wenn also der erste fehlschlägt, bricht er ab, und dann laufen alle drei erneut und versuchen, einen anderen Punkt zu finden Oh, wie machen wir das? Nun, fangen wir mit unserer Kreisformel an. Also werden wir Pi holen. Wir werden es mit zwei oder einem Maximalwert multiplizieren, und wir erhalten einen variablen Bereich. Und das Minimum wäre Pi, und das Maximum wäre I-Quadrat, im Grunde Pi-Quadrat, tut mir leid, zwei Pi, ergibt Pi-Quadrat, wir müssten mit italf multiplizieren Und daraus werden wir lernen. O Sinus, stellen Sie sicher, dass es ein Strahlvermögen und Grade sind, und dann bekommen wir einen Sinus. Die Ausstrahlung muss dauerhaft sein Wir werden das mit 500 multiplizieren. Das wäre also im Grunde die Reichweite. Und dann müssen wir es zu unserem Spielerstandort hinzufügen , um den Spieler zu bewegen, einen Zielort zu bekommen. Und wir werden bremsen. Split ist der Zeitpunkt, an dem wir uns hier dafür entscheiden. Bremse wählt es mit dem Stift aus. Und von Z aus gehen wir zu einem zufälligen Punkt im Radius. Das wollen wir nicht für den Radius. Das wollen wir. Eigentlich ist das ein Radius, nicht der 500. Es ist auch für x, wir werden das verwenden, für, wir werden das verwenden und für y werden wir das Zeichen verwenden. Jetzt verbinden wir das mit der Bedingung, dem Rückgabewert, ob wir ihn gefunden haben oder nicht, ob er erreichbar ist , und das ist es, müssen wir dem Controller der Verbindung mitteilen, Brunch anzusehen kann manchmal schwierig sein, sich die Knoten und den Code Wir müssen uns diesen Controller besorgen und den Schwerpunkt setzen . Das ist in diesem Jahr richtig. Und natürlich benötigen wir einen Blackboard-Schlüsselwert, also Black Board Key Selector Alle diese sind bis hierher MB und haben hier keinen Wert als Vektor Wir müssen dies tatsächlich zu einer Variablen heraufstufen , denn wenn wir es zweimal verwenden, erhalten wir zweimal nach dem Zufallsprinzip zweimal. Und dann werden wir fertig sein. Zugriff. Das wäre Ask Save. Lass uns den BD-Schlüssel machen. Der Wert ist öffentlich, ob die IP-Adresse verfolgt oder bearbeitet werden soll. Gehen wir zurück zu unserer Tabelle und von unserer Reihenfolge der PTs zum Ziel Wir werden das auswählen. Habe ich jetzt eingereicht, wählen wir dies als unseren Standort aus. Dann müssen wir nur noch zu. Wir ziehen zu einem Ort, dem wir die Patrouille haben, also kopiere ich hier, wo die Variable bereits gesetzt ist. Hier. Und das wäre es von der Seite. Wenn wir also angreifen und uns nicht in Reichweite befinden, wir uns einen zufälligen Ort. Wir versuchen, einen zufälligen Ort in der Nähe des Spielers zu finden und uns dorthin zu bewegen. Bis wir ihn finden, stecken wir in dieser Schleife hier drüben fest. Fahren wir nun mit dem nächsten fort. Es wird wieder eine Sequenz sein. Es wird auf der Grundlage von zwei Dekoren laufen. Der eine, die Reichweite wäre in Reichweite. Fügen wir noch eins hinzu oder k. Und dieser wäre auch überraschend, wir brauchen hier eine weitere Aufgabe. Aber ich denke, das ist ein guter Ausgangspunkt für diese Aufgabe. Wir werden mit dem nächsten weitermachen. Auf Wiedersehen. 122. KI-Navigationsvolumen und Pathfind-Optimierung: Hallo und willkommen zurück zum Game-Design-Workshop und zum prozeduralen Action-Action-Kurs „Real Engine Five “. Zuvor haben wir damit begonnen, dass ein Teil unseres Zustands einem Angriff auf unseren Verhaltensbaum gleichkommt Angriff auf unseren Verhaltensbaum Wenn es also Angriff entspricht, prüfen wir, ob sich unser Charakter in Reichweite befindet oder nicht. Wenn es sich nicht in Reichweite befindet, versuchen wir, einen Schritt in Richtung des Charakters zu finden, bewegen uns zu einem Ort in Richtung des Charakters und wir bewegen uns zu diesem Ort. Wie erreichen wir das? Nun, wir stellen unsere Bewegung auf Rotation um. Der Charakter bewegt sich also entsprechend seiner Rotation. Und dann sind wir dabei, einen Punkt in Bezug auf den Charakter zu bekommen. Wir rechnen hier, um einen Kreis um die Figur herum zu bilden, und wir überprüfen einen Radius von 200 um den Punkt mit 500 Radius , an dem wir den Kreis erstellen, wir bilden den Kreis und von diesem Punkt aus erhalten wir im Grunde einen weiteren Radius von 200. Nein, der Grund, warum wir das tun. Ich habe nicht so viel erklärt, weil wir nicht wirklich einen Punkt gegenüber dem Spieler nehmen wollen und einfach hier hingehen wollen. Nimm diesen Punkt und einen anderen Radius von 200 vielleicht entfernen wir uns ein bisschen weiter vom Charakter. Es gibt mehr Chancen , dass das passiert. Es könnte kompliziertere Methoden geben , mehr mathematische Formeln, mehr Bedingungen Aber ich denke, das ist eine nette Lösung für ein schnelles Ergebnis. Wenn es danach nicht wahr ist, geben wir execute false zurück. Also unser Tetrac läuft hier in einer Schleife, bis es einen richtigen Punkt findet Und wenn nicht, wenn es den richtigen Punkt findet, setzt es den lokalen Mausfokus, und wir setzen den Blackboard-Schlüsselwert und beenden die Ausführung Also können wir zu diesem Ort gehen. Dann haben wir damit angefangen, was passiert wenn der Carter in Reichweite ist und auch dicht dran ist. Nun, wie das ausgehen wird , wie wir vorgehen werden, eine Aufgabe erstellen, eine Aufgabe zum Warten, eine Aufgabe zum Schießen und eine Aufgabe zum Zurücksetzen des Schießens. Fangen wir also mit der Arbeit am, der neuen Aufgabe und der Druckbasis an. Nennen wir das natürlich Am, wir benötigen die Quittung. Achten Sie darauf, dass Sie die KI ausführen und nicht nur ausführen wählen Wir schicken die Nachricht, dass wir die Controller-Rotation brauchen , also die Controller-Nachricht Und wir werden den Punkt vom Punkt aus festlegen. Und wir werden aufstehen und wir werden Aufmerksamkeit bekommen. Wir verwenden also die Controller-Rotation. Wir legen den Schwerpunkt fest und er wird sich dorthin drehen. Wir werden also die Ausführung beenden. Jetzt sprechen wir über die Drehung des Controllers , was der Punkt ist. Es gibt eine Möglichkeit, die Drehzahl zu steuern. Wenn wir also zu unserem KI-Charakter gehen, zu Charakterbewegung und Typrotation gehen, gibt es hier bestimmte Einstellungen, und es gibt eine davon, die Rotationseinstellungen für die Charakterbewegung, die momentan bei 40 ist, reduzieren wir sie auf 360. Aber das ist im Grunde die Geschwindigkeit , mit der sie rotiert. Wie Sie sehen können, wird die Änderung der Rotation pro Sekunde verwendet wenn die Steuerung die gewünschte Drehung oder die Ausrichtung an der Bewegung eingestellt hat. Damit wird jedoch in beiden Fällen die Drehung oder die gewünschte Drehung oder die Ausrichtung der Drehung an der Bewegung gesteuert . wir nun zu unserem BT zurück und wenn wir mit der Ausführung fertig sind, sollten wir den Erfolg erzwingen. Gehen wir zurück zu unseren Dreien und nennen wir diese Aufgabe. PTT A. Als Nächstes sollten wir warten. Jetzt werden wir die Gewichtseinstellungen ein wenig ändern Gewichtseinstellungen ein wenig haben hier eine Wartezeit, also warten wir 0,2 Sekunden. Wir geben Ihnen eine zufällige Abweichung von 0,1. Wir können also 2,3 Sekunden oder 0,1 Sekunden warten. Und das erzeugt ein zufälliges Gefühl , wann die KI angreift. Und hier kommt der nächste Teil , den wir drehen werden. wieder eine neue Aufgabe. Sei Printbase. Nennen wir das BT Task Shot. Lass uns das hinrichten lassen. KI. Das ist sehr einfach. Was wir tun müssen, ist unsere Kontrollnachricht und die Nachricht zu bekommen , weil wir den Code für das Schießen bereits erstellt haben. Jetzt können wir eine Gewichtsaufgabe machen, oder wir können hier eine Verzögerung einbauen. Denn nachdem wir gedreht haben, sollten wir noch warten. Warten wir auf einen zufälligen Bereich. Zufälliger variabler Bereich, tut mir leid, von 1,4 bis 1,1 0,6. Lassen Sie uns die Ausführung beenden. Ich mache das so und nicht konsequent, weil ich zeigen möchte, dass es viele Möglichkeiten gibt, Dinge zu tun. Es gibt keinen einzigen Weg, und es macht auch keinen Unterschied, ob ich das Gewicht hier lege. Dann besteht der Unterschied im Grunde darin, dass es vielleicht abbricht, wenn ich es selbst abbreche. Aber die Aufgabe wird auch abgebrochen, wenn ich mich selbst abbreche. Es gibt also viele Möglichkeiten, Dinge zu tun. Es muss einfach funktionieren. Oh, lass uns Shoot nennen. T ist Task Shooting. Und jetzt setzen wir das Schießen zurück, also brauchen wir eine neue Aufgabe, um das Basis-Reset-Shooting zu starten. Und was wir tun werden, wir werden es uns anschauen, weil wir die Variablen setzen werden , gehen wir zum Baum und zeigen das Wir werden diese Variablen auf „Falsch“ setzen. Damit sie auf wahr gesetzt werden. Das Häkchen muss erneut ausgeführt werden. Er muss alle 0,3 oder 0,5 dieser Zahlen überprüfen 0,3 oder 0,5 dieser Zahlen sie wieder auf „Wahr“ setzen. Das ist also eine weitere Möglichkeit, eine kleine Verzögerung zu erzeugen. Gehen wir jetzt zum Reset Shooting. Lasst uns Signale empfangen. Wir müssen nur zwei Variablen erstellen, Blackboard-Tasten oder Schwarz Blackboard keys elector, und eine davon wird Bp sein. Der andere wäre PB-Bereich. Dies bietet die Möglichkeit auch dann, wenn sich der Spieler außerhalb der Reichweite bewegt Diese Verzögerung, diese Verzögerung, zum Beispiel, wenn wir zwischen den Sekunden außer Reichweite geraten, gibt uns die Möglichkeit komplexere Aktionen durchzuführen, wenn wir wollen. Kehren wir also zu diesem Thema und dem Zupfwert zurück. Werte und fertig ausführen. Was die Tatsache angeht, dass wir diese beiden Fallstricke festlegen, und wir sollten sie veröffentlichen. Wir können sie zu unserer KI machen. Drei hier kompilieren. Ich Ich glaube, ich wähle die falsche Veranstaltung. Ja, das muss es sein, also sei zu diesem Set. Und hier sind sie natürlich hier. Eng in der Reichweite. Im Grunde ist das für. 123. Navigationsvolumen und Optimierung: Hallo und willkommen zurück zum Game Design-Workshop und zum prozeduralen AR Phys-Erstellungskurs für echte Engine Five-Dungeon-Action AR Phys-Erstellungskurs für echte Engine Five-Dungeon-Action Nun, um es in Bewegung zu bringen und all unsere wunderbaren Sachen zu machen. Wie Sie bei jeder Aufgabe sehen konnten, für die wir einen zufälligen Punkt oder eine Bewegung benötigten , benötigen wir Nervendaten, die wir eigentlich nicht benötigen, weil sie automatisch abgerufen werden können. Aber was wir tun werden, ist, ein riesiges Volumen zu erstellen. Das. Also brauchen wir ein weiteres Mesh-Bounce-Volume Setze seinen Standort auf 00. Setzen wir es überall auf vier K. Wir können die Höhe um ein Vielfaches erhöhen , weil wir bei 00 beginnen , also vielleicht. Ja, das sind 30 k. Wenn das Null ist. Das ist der Grund, warum wir vielleicht nicht unendlich sein können , weil wir die Volumenpläne für die Navigation nicht verschieben können Volumenpläne für die Navigation Wie Sie sehen können, versucht es, das Navigationsvolumen zu vergrößern, auch wenn es nichts enthält Aber wir müssen einige Änderungen vornehmen. Ich werde bauen. Wir werden danach weitermachen. Und lassen Sie mich zeigen, warum wir diese Einstellungen benötigen. Das ist ein riesiges Navigationsvolumen. Zuallererst zeigen wir, dass wir irgendwann zu einem Projektumfeld übergehen müssen , das ist ein nationales Umfeld, und wir wollen, dass es dynamisch ist. Wenn ich „Letzte Sache“ drücke, müssen wir die Schaltfläche „Neufassung“ auf „Ist es Laufzeitgenerierung“ ändern auf „Ist es Laufzeitgenerierung , dann bin ich okay Ich habe es aus den Projekteinstellungen. Wenn ich jetzt auf Play drücke, wird es ein bisschen stämmig angezeigt Und wenn ich Nation wähle, also wenn ich Navigation wähle, kannst du es sehen Es ist ein großes Gebiet. Es ist eine Navigation, sogar auf den Dächern. Also ja, es ist ein großes Gebiet, und je größer der Arm wird desto mehr Bereiche haben wir, und es wird chaotisch Es wird wirklich Rahmen bekommen und all diese KI, die sich um ihn herum bewegt Um das zu ändern, werden wir etwas verwenden. Man sollte nicht ehrlich sein, es wie dieses Gebäude an Land in einem riesigen Navigationsbereich zu tun . Aber jedes andere System würde eine Menge Zeit und Arbeit erfordern , um fertig zu sein, und dazu noch mehr Aber fairerweise muss man sagen, dass es durch Blaupausen und so ein bisschen optimiert werden kann ein bisschen optimiert durch Blaupausen Was wir für uns tun werden, ich werde die Navigation verlassen ist, dass wir wieder zu den Projekteinstellungen gehen werden Wir werden nach Anrufern suchen. Okay. Also werden wir diese Einstellung verwenden, um die Navigation nur um den Navigationsaufrufer herum zu generieren nur um den Navigationsaufrufer herum Und was ist Navigation in Okers? Im Grunde sind sie also ein Tool, ein Tool, das zur dynamischen Generierung und Verwaltung von Navigationsmaßnahmen verwendet wird , also im Grunde genommen in großen oder offenen Umgebungen. Lassen Sie uns das demonstrieren. Lass es uns zu unserem Charakter hinzufügen. Gehen wir zu unserem Top-Down-Charakter. Fügen Sie Voker hinzu, Navigation in Vocer Lassen Sie uns das ein wenig optimieren, weil ein Radius von 3.000 groß ist, also mache ich einen Entfernungsradius von 200 Sie möchten, dass der Entfernungsradius etwas größer ist als die Generierung, sodass er wie eine Spur entsteht, weil er entfernt wird Also lass uns jetzt auf Play drücken. L, lass uns auswerfen. Und jetzt kannst du sehen, das Chaos in der Navigation, was nur um unseren Charakter herum berechnet wird Also werden wir dasselbe mit unseren KIs machen. Was ist das für ein Fehler bei der Suche nach Spielern, weil die KI vor dem Spieler existiert. Das ist ein Problem. Das ist nicht wirklich wichtig. Es ist ein Nullfehler. Du konntest den Spieler eine Sekunde lang nicht finden. Lass uns noch einmal spielen. Lassen Sie uns eigentlich zu unserer KI zurückkehren. Fügen wir den Aufrufer hinzu. L legen wir den Titelradius 2200—400 fest. Lasst uns tatsächlich KI sehen. Wie kann ich? Nein, tun wir nicht. Aber wir haben einen Schlüssel. Gehen wir zu den obigen Ausführungen über. Schon wieder dunkel. Mein paar Schatten. Wir müssen den Eingang zum Aufzug wechseln. Besser. Gibt es hier auch keine KI? Es gibt KI. Okay. Jetzt können wir KI verwenden, falls sie irgendwas tut. Im Moment scheint es zu bleiben. Oh, um es leicht zu sagen, lass uns zum Baum gehen. S. Und kann es nicht finden, ich weiß Wir haben unseren Kindern nicht gesagt, dass sie im Grunde genommen dadurch kontrolliert werden. Denn wenn wir unseren Pon nicht darauf einstellen, dass sie KI haben, werden sie es nicht wissen. Findet es sinnvoll. Also im Detail b, in der Standardeinstellung b, werde ich im Grunde nach einem KI-Controller suchen Anstelle des generischen KI-Controllers A werden wir unseren AIC-N-Controller verwenden , und jetzt werden sie gesteuert Fangen wir noch einmal an, und wir haben hier eine KI. Aber auch hier tut sie nichts. Diesmal aus einem anderen Grund. Ich kann wieder nicht viel finden. B. Aber ich tue es? Oh, das ist der Charakter. Mein Fehler. Gehen wir zurück zur KI. Hier muss es sein. Also muss die KI sie kontrollieren lassen, nicht der Charakter. Also lass uns spielen gehen. Ha. Lass uns nochmal spielen. Du hast KI. Großartig. Und es tut nichts. Und immer noch viel Fundstück. Nun, es macht Sinn. Es tut mir leid. Ich vergesse immer wieder die Grundlagen Wie Autoposse A über dem feindlichen KI-Controller, das ist ein Ort in der Welt, an dem wir die KI nicht platzieren Wir würden platzieren, wenn wir einer anderen Karte debuggen würden, aber im Moment wurden wir platziert oder gespawnt, weil wir Wir kompilieren und speichern, drittes Mal, viertes Mal, Zeit ist krank Und lassen Sie uns sehen, dass es sich nicht bewegt, es bewegt sich. Großartig. Bewegt sich, aber die Animation wird nicht aktualisiert. Fantastisch. Gut, lassen Sie uns das im nächsten beheben. Dann rufe ich dich an. Auf Wiedersehen. 124. Finishing des Aufnahmeverhaltens und Debugging: Hallo und willkommen zurück zum Game Design Workshop, Rail Engine Five Procedural Dungeon at Pred Zuvor waren wir mit unserer KI fertig und haben auch die Lautstärke für die Reaktion der Navigation hinzugefügt. Außerdem haben wir unsere Navigations-Revoker hinzugefügt Wir haben auch unsere BTT-Aufgaben abgeschlossen. Ich denke, sie wurden gut genug erklärt. Jetzt mussten wir ein paar Fehler beheben. Gehen wir zunächst zu unserer KI hier drüben, wo all diese KI-Animations-Blueprints wo all diese KI-Animations-Blueprints Wenn all diese Informationen vom Pfandbesitzer stammen, versuchen Sie, den Pfandbesitzer zu Aber dieses Mal ist unser schlechter Besitzer kein Spieler. Also das könnte fehlschlagen. Aber was wir tun werden, ist auf Blueprint mit dem Spielen zu beginnen. Wir werden versuchen , den Besitzer von Pw zu kriegen. Und wir werden KI und KI bitten, diese beiden Charaktere rein zu besetzen und zu bewerben Eigentlich werde ich es als KI bezeichnen, der Charakter wurde übernommen. Und das werden wir ändern. Nun, a. Der Grund, warum wir das tun, ist dass wir hier etwas ändern wollen, was wir durch die Art und Weise, wie wir es hier verbinden, durchbrechen , das gehört hierher. Anstatt den aktuellen Acceler abzurufen was ist das für eine Suche hier Um das hier zu löschen und den Charakter mit unserer Charakterbewegung zu verbinden Und was wir bekommen werden, ist die Geschwindigkeit. Was am Ende sein wird, und wir werden das hier verbinden. Der Grund dafür ist, dass die Beschleunigung mit der Art und Weise, wie sich unsere Charta entwickelt, nicht wirklich funktioniert hat. Also, wir werden kompilieren, wir werden spielen, und jetzt soll sich unsere KI bewegen. Wir tun nichts. Nein, nein, es bewegt sich. Großartig, und es baut mehr Navigation auf, wie Sie sehen können, es kann sich überall anders bewegen. Versuchen wir es jetzt anzugreifen. Es sieht uns, sieht uns an. Und er hat nichts getan, was uns umgedreht hat. Machen Sie diesen Fehler und sehen Sie, was vor sich geht. Öffne das Spiel. Dieser Tab. Ich werde von hier auswerfen, ich werde es auswählen, die KI auswählen Denn um es hier, hier zu finden , musst du es ausgewählt haben Es sollte ausgewählt stehen, nun ja, tut es nicht. Okay. Versuchen wir herauszufinden, welche KI welche ist, denn hier gibt es zwei, oder Züge. Gewichte. Beide warten. Ich glaube, dieser ist dieser. Dieser hat sich komplett zurückgezogen, weil dieser ständig in Bewegung ist. Also muss man sagen Null. Ja, was eigentlich nichts bewirkt. Warum tut es nichts? Bei der Rückkehr. Ich habe versehentlich geschossen und es ist eine ständige Überprüfung der KI des ausgewählten Bundesstaates oder haben wir? A ist ein Lassen Sie mich versuchen, es zu debuggen Okay. Nach einigem Debuggen finde ich heraus, dass ich dieses Handle hier erstellt, es aber nie benutzt habe Nein, was wir im Grunde tun müssen, ist, wenn wir anfangen, uns hier zu überschneiden. Und wenn wir den Spieler treffen, sind wir in Reichweite, wir sollten unsere Zeit beginnen. Wir machen die Pause mit einem Griff aus, wenn die Reichweite erreicht ist, fangen wir an, nach unserem Spieler zu suchen Und natürlich, was Tod bei Tod angeht, hier ist es, gleich nach dem Tod, lassen Sie uns das wieder in die Hand nehmen und es löschen und für ungültig erklären Es läuft nicht mehr, nicht einmal in der Pause. Oh, der nächste Ort wäre, zu unserer PT-Aufgabe zu gehen, Schritt für Schritt zum Ziel. Auch hier habe ich einen Fehler gemacht. Ich habe den Standort der Spieler-Punts nicht hinzugefügt. Das sind die Grundlagen wie dieser Bereich im Vergleich zu wo. Ich werde nur hinzufügen. Füge hinzu und das x das. Sei, wenn du nicht ganz Unrecht hast, musst du ihm sagen , wo auf der Welt. Wir haben das besprochen. Natürlich wäre der nächste Ort, an dem wir auch etwas getan haben. BP AI-Kugel. Ich frage, ob das Bauteil Zugkraft E hat , also ob der Schauspieler gegraben hat , weil wir es am Schauspieler haben und nicht am Kollisionsrohr, der Kollisionskapsel Ich glaube, ich habe das Problem verstanden wir nicht schießen konnten, wir gehen zu unserem BP-Top-Down-Charakter über, und wenn wir beschädigt werden und wir fassungslos werden, und dann sind wir noch sind sie. Wir schalten den Staat ein. Und wenn wir schon fassungslos sind, dann gehen wir, wenn wir Sift drücken. Wenn wir nicht Shift drücken, gehen wir zurück in den Zustand, um den Zustand in den Normalzustand zu ändern Wenn wir jedoch die Schicht bestehen, schalten wir auf Verzögerung und warten nicht auf Abkühlen, was wir auch nicht wieder in den AM-Modus zurückkehren Um das zu erreichen, gehen wir zu unserer AM-Mechanik, erstellen ein benutzerdefiniertes Ereignis, AM Also, wenn wir die linke Shift drücken, brauchen wir das nicht zu tun, weil sie bereits ausgefallen ist, und wir werden das hier verbinden, weil wir diesen Test nicht machen wollen Für die Todesanimation unseres Feindes, den er aufgestellt hat, müssen wir also unseres Feindes, den er aufgestellt hat, unsere Montageseiten für die Montageanimation finden unsere Montageseiten für die Montageanimation Montageanimation , und wir brauchen Da ist Eigentlich haben wir es hier angesiedelt. Diese Animation benötigt dort, wo sie diese Option hat, automatische Überblendung aktivieren. Das wollen wir nicht. Wenn wir wollen, dass es dort bleibt. Das Gleiche tun wir für einige andere, ebenso wie für die Knockb-Animation Gehen wir also zu unserer Knockback-Animation und wählen die automatische Überblendung als falsch aus Und bis zum Tod unseres Charakters. Gehen wir also zu Revenant. Finde den Tod. So wie der Tod hier, so verschmilzt er nicht mit unserem Hauptfeuer. Wir wollen nicht, dass es verschmilzt. Und jetzt können wir testen gehen. Okay. Hast du es mir gesagt? P den Turm. L der Turm. Er ist auf mich gerichtet. Also ein bisschen muss es der Rotation folgen. Eine Sache noch. Auch beim Projektil der Kugel gehen wir zur Projektilbewegung über, wir folgen der Rotation Ich habe ein bisschen Sound gemacht. Mal sehen, was da los ist. Trainiere. Bitte. Es ist in den Portionen. Große Truhe. Den Schlüssel habe ich schon. I. Nächstes Level. Ich sehe bei der Mara 50 Gramm. Wir haben eine Menge Angebote offen und geschlossen. 60 PS, richtig? Ich denke, das liegt an der KI und der Navigationslautstärke. Zur Laufzeit wäre es ein bisschen besser, vielleicht viel besser. Feinde, die auf Fallen treten, eine weitere KI eine weitere Nervig, was hier vor sich geht? Ich versuche hierher zu ziehen. Ich treffe den Stand richtig. Aber ich heize und es versucht, mich dorthin zu bewegen, wo ich heize. Wenn ich klicke, gehe ich trotzdem weiter. Aber ich sterbe, ich kriege eine Punktzahl, richtig. Aber wir haben ein Problem mit Bewegung und Heizung. Aber ich denke, wir werden einen anderen Boden brauchen. Also lassen wir das für dann. Tschüss. Wir sehen uns dann. 125. Endgültige Fehlerbehebungen und Gameplay-Polieren: Hallo und willkommen zurück zum Game Design Workshop und dem Kurs zur Erstellung eines echten Engine Five-Action-Rollenspiels im Procedural Dungeon-Action-Rollenspiel im Procedural Dungeon-Action-Rollenspiel Endlich, zu unserer letzten Lektion zum Debuggen. Lassen Sie uns zunächst das endlose Labyrinth reparieren, das eigentlich nicht endlos ist, sondern das Rauschen des Motors Was also passiert ist , dass ich, wenn wir die erste Kachel verschieben, die falsche Frage stelle, nämlich die Richtung von der anderen Seite, und nicht gleich dem letzten Ausgang ist Aber weil wir Labyrinth auf der Grundlage der Offset-Richtung Unsere Offset-Richtung wird im Grunde das Gegenteil. Unser letzter Ausgang sollte nicht das Gegenteil unserer Offset-Richtung sein das Gegenteil unserer Offset-Richtung denn nehmen wir an, wir bewegen uns zum Beispiel nach Norden, dann ist die O-Offset-Richtung Norden, aber Süden wird das t , das nicht gleich sein sollte. Aus Süden wird die Kachel , von der wir kommen, der Aufzug. Da der Süden also zur Aufzugskachel wird, sollte der letzte Ausgang nicht der Aufzug sein. Denn wenn das passiert, entsteht ein Labyrinth der Größe eins bringt das System komplett zum Erliegen und der Motor stürzt ab Was wir also tun werden, ist die Auswahl zu wechseln. Und lass uns hier den letzten Ausgang nehmen, damit wir das bekommen können. Und dann werde ich die Verbindung trennen. Aus dem Norden brauchen wir den Süden, Osten, wir brauchen den Westen aus dem Süden, wir brauchen den Norden und vom Westen her brauchen wir den Osten für das Gegenteil der Richtung von Orosit Der letzte Ausgang sollte nicht dem Gegenteil entsprechen. Aber wenn wir den Stil verlassen, sollte es nicht der Aufzug sein Also das war es, was den Motor zum Absturz brachte. Es hatte eine von vier Chancen, es ist ein ziemlich schlimmer Bug. Aber wie dem auch sei, einfach logisch, es lag einfach daran, dass wir in diese Richtung ausgleichen. Weg. Nun, der nächste Bug, der passiert, ist, dass manchmal ein Labyrinth entsteht, dass man beim nächsten Labyrinth, dann weitermachen, den ersten Block nicht verlassen kann Und das liegt daran, dass wir den letzten Ausgang festlegen, aber wir legen nicht die Ich gebe nicht die Richtung vor. Im Grunde genommen geben wir bei der ersten Ausfahrt die Richtung so vor, dass sie wahr ist. Aber das machen wir nicht, ich hatte das Debuggen hier. Kommentar debuggen Wir machen das hier nicht. Ich werde das hier hinstellen. Ich werde das etwas weiter vorantreiben. Aber jetzt müssen wir den Stil darüber informieren, dass Ihre Richtung bis zum letzten Ausgang offen ist, und lassen Sie uns den letzten Ausgang nehmen, ihn hier. Das hat also diesen Fehler verursacht. Jetzt haben wir mit einigen Bewegungsproblemen beim Schießen und Bewegungsproblemen aufgehört . Gehen wir also zuerst zum Player-Controller. Ein Fehler, den ich gemacht habe. Nun, es gibt eine Menge , die ich nicht entdeckt habe, aber bei einer Projektgröße muss man den Standort natürlich unter Kursor angeben In unserer Funktion Standort ermitteln“ unter „Kursor“ überprüfe ich die Sichtbarkeit, um ihn unter „Kursor-Standort“ zu Wenn es also auf nichts trifft und wenn es die Kugelbeschleuniger nicht berücksichtigt, gibt es falsche Werte zurück, die auf anderen Kollisionen basieren , die auf unserer Karte existieren Also werde ich das auf die Kamera stellen und das wird das Problem beheben Und als nächstes kommen die Probleme mit den Schießereien. Wenn wir also schießen, sollten wir nicht mehr abhören. Also, wenn wir schießen, wenn wir die Eingabeerkennung verbessern klicken und es wird ausgelöst Und wir schweben über einem Ziel, wir befinden uns in einem normalen Zustand, und wir bewegen den Mauszeiger über einem Ziel und wir schießen Wir sollten die Bewegung stoppen. Denn wenn wir die Bewegung nicht stoppen, dann wird sie von früher eingeschaltet und wenn sie aktiviert ist , bewegt sie sich weiter. Also sollten wir die Bewegung stoppen. Und noch etwas, das mir auffällt ist hier drüben, wenn wir das Fadenkreuz untersuchen Im Fadenkreuz prüfen wir also, wann genau jetzt die Änderung vorgenommen werden muss Wir überprüfen also, ob wir unter einem Feind stehen, unser Hursor unter einem Feind steht, und dann ändert sich das Aber wenn wir durchhalten, wenn wir uns in einem Zustand befinden, ändern wir das Ziel nicht Wir setzen es nur auf ein Fadenkreuz, ein rotes Ziel. Das sollte nicht der Fall sein, um ehrlich zu sein , denn wenn wir angestarrt werden, eines der Dinge, die passieren können, dass ist eines der Dinge, die passieren können, dass, wenn wir Stan bekommen, AM vorübergehend zu Stan Also das wäre ein Fehler. Also was ich tun werde, ist das zu löschen und zur ersten Frage zu gehen und einfach die Spielerreferenz zu holen, bin unten und mache eine Also, wenn wir den Feind treffen oder am Boden ist, dann haben wir Kreuzfluch. Wenn nicht, dann haben wir einen normalen Cursor. Das sollte also die Änderung sein, und das sollte ein zentraler Kontrollpunkt sein. Das ist besser, als das hier als Option zu haben, ob die erste Frage die ist, die die Dinge ändert. Gehen wir also zu unserem Charakter von oben nach unten über. Und wenn wir zielen, sollten wir auch die Bewegung unterbrechen. Nach links verschieben, zielen, und so weiter, und so weiter, und so weiter. Hier drüben, bevor wir unsere Montage abspielen, lassen Sie uns die Bewegung tatsächlich unterbrechen, noch vor diesen beiden Dingen Wir holen uns unsere Player-Controller-Referenz, ich werde aufhören, mich zu bewegen. Jetzt gibt es eine Stop-Bewegung für die Navigation, die nicht unsere ist, nur für den Fall , dass Sie klicken und stattdessen diese verwenden. Es heißt „Stopp Moving“, nicht „Stopp Movement“. Hör auf, dich zu bewegen. Falls ich den anderen anrufe. Stoppen Sie die Bewegung. Siehst du, es ist eine andere Funktion. Das Ziel ist der Controller, wenn das Ziel der BP-Top-Down-Controller ist. Die Logik dahinter bezieht sich auf KI, und um ehrlich zu sein, erstellen wir unseren Charakter normalerweise so, dass er eine KI ist, die nur den Status ändert, aber das ist ein bisschen fortschrittlicher. Das nächste, was wir tun und das Spiel ausbügeln sollten , ist hier, wenn wir den Angriff zurücksetzen, wenn wir den Angriff zurücksetzen, senken wir das Geschütz Wenn wir also das Geschütz herunterfahren, was auch immer passiert, bedeutet das, dass es in den Normalzustand wechselt, auch wenn wir das Geschütz senken, weil wir unterbrochen wurden oder weil wir geschossen haben unterbrochen wurden oder weil wir und der Angriff zurückgesetzt werden muss Hier ist also eine Frage: Senke ich meine Waffe oder nicht? Und das ist unser Ziel. Wenn wir nach unten zielen und es stimmt, sollten wir das Geschütz nicht senken. Wenn es nicht stimmt, dann niedrigeres Geschütz. es darum geht, über diesen Zweig hier drüben zu reden, verwenden wir ihn an einem anderen Ort, das ist unser Schaden. Wenn wir also Schaden erleiden, wenden wir uns der Betäubung zu, und es besteht die Möglichkeit, dass wir uns nicht der Betäubung zuwenden Danach, wenn wir nicht tot sind. Wenn wir tot sind, machen wir einfach die Dinge mit dem Tod. Aber wenn wir nicht tot sind, spielen wir die Heat-Montage und ändern uns je nach Spielerstatus. Wenn wir betäubt sind und wir gehen und zielen ist runter, stellen wir nur die Verzögerung und die Statistik auf Abkühlen und ändern nichts Das heißt, wir bleiben bei State Stun. Das wollen wir nicht. Wir wollen uns an das Ziel des Staates halten. Wenn wir den Zustand nicht umkehren, dann bleiben wir standhaft, und aus diesem Grund können wir uns im Kampf gegen die KI an manchen Stellen nicht bewegen Wir bleiben einfach in Stan, während Shift drücken, und nichts passiert Wir bleiben einfach für immer Stan, bis wir wirklich wechseln, und das läuft zum anderen Zweig. Im Grunde genommen bedeutet das, dass unsere Staaten gesperrt sind, solange wir die Umschalttaste gedrückt haben, und das behebt das Problem hoffentlich. 126. Großes Gameplay-Bug-Patching: Hallo und willkommen zurück zum Game Design Workshop, dem Kurs zur mit L-Engine Five Erstellung prozeduraler Dungeon-Action-APs Als Nächstes hat unser Aufzug ein Problem mit unserer Kamera habe noch andere Probleme, aber das offensichtlichste ist eine Kamera, weil wir den eingefügten Nachbearbeitungsvorgang kopiert haben, aber sie hat es auf eins und eins gesetzt, aber das hat sie nicht aktiviert Also sollten wir die Belichtung bei 11 auf Min Max auf 11 einstellen, um die zu intensive Beleuchtung zu korrigieren Das Letzte, was wir tun sollten, ist unseren Nebel hinzuzufügen. Wir werden Dinge hinzufügen, exponentiellen Acht-Nebel. Wir wollen das. Lass uns das vorlesen. Wenn wir hier anfangen, wollen wir, dass der Nebel etwas niedriger ist. Lass uns eine Sekunde spielen. Jetzt habe ich die Dinge noch nicht festgelegt. Lassen Sie uns die Einzelheiten der Leute festlegen. Setzen wir es auf -700. Ich werde das erhöhen, sichtbarer sein, weil das so nervig ist Lass es mich dafür schließen. Okay. Hier gibt es keine Dinge mehr. Also, Standort, -700, setzen wir die FK-Dichte auf zwei. Ich weiß, dass der Wert bei 2,5 liegt, aber mal sehen. Ich habe Alo getroffen, sagen wir 22. Und das wäre es. Lass uns auch einstellen. Ich lege etwas Rötliches ins Bett. Der Nebel hat also eine rötliche Farbe. Und ich denke, das wäre es. Ja. Ja, ich spiele jetzt bitte. Es ist ein bisschen verrückt und es ist ein bisschen und das wird traurig. Oh, und lassen Sie mich die Pfeile wieder umschalten , weil wir die Pfeile sehen können Ich habe das eigentlich vom Debuggen weggelassen. Gehen Sie zu den Umschaltpfeilen, wo sind Sie die Umschaltpfeile. Ich debugge, hier sind wir. Okay? Es hängt damit zusammen , weil ich sehen wollte, was beim Debuggen vor sich geht Es ist ein bisschen dunkler als ich erwartet hatte, aber dadurch werden die Lichter auch ein bisschen freundlicher Aber um den Charakter ein bisschen besser zu sehen, gehen wir zu dem Charakter im Viewport, weil der Charakter nicht so dunkel sein sollte Lassen Sie uns hier ein Punktlicht setzen. Nennen wir dieses Zeichen Licht das Radiuszeichen Radius. Und lassen Sie uns das tatsächlich in Lumen ändern. 100 ist viel, sagen wir 50 der Radius 50. Wir könnten zum Beispiel Gegenstände haben, die diese Blodosis erhöhen. Als Radius 70, vielleicht 100 ist er nicht von unserem Charakter abgeschattet, 100 vielleicht außerhalb der Quelle 50 oder Länge 70 ein bisschen zu weit von den Zeichen von 100 entfernt Wenn Sie eine falsche Ansicht haben, könnten Sie die Werte ein wenig übersehen. E. Der Schuh wird einige Schatten erzeugen. Es ist in Ordnung. Es ist in Ordnung. Nein. Ist immer noch ein bisschen komisch. Ich meine, ich habe mich wirklich auf das Zentrum konzentriert. Lass uns die Farbe ein bisschen zu etwas Fleischigerem ändern. Hier. Acht. Vielleicht setzen wir das Licht ein bisschen nach oben. Benutze diese 70. Weißt du was, lass uns nicht die Figur damit beleuchten , sondern den Boden um die Figur herum beleuchten. Was wir tun werden, ist zum Lichtkanal zu gehen. Lass es Kanal zwei anzünden, nicht unseren Charakter. Und schnell, lass uns zu unseren Kacheln gehen. P-Fliese und geh auf deine Etage. Kanal wird auch von Kanal eins beleuchtet, grundsätzlich nicht von Kanal zwei, weil er auf Null basiert, Kanal eins. Mal sehen, wie das aussieht. Ja, wir haben einen Lichtradius und wir können den Lichteinfall auf unserer Karte etwas vergrößern . Gehen wir zu den Details 1-4 über. Wenn wir ein bisschen viel verkaufen, aber alles ist viel sichtbarer. Und wenn wir das nächste Mal Schatten sehen, können wir unser Licht sehen. In Ordnung. Nun, nein, sei ehrlich, es ist zu leicht. Lass uns das 23 angeben. Aus Licht drei. Ich bin vielleicht ein bisschen zu klein. T zwei, die den Trick zu machen scheinen . Viel viel besser. Wenn ich jetzt mit dem Aufzug in eine andere Etage gehe. Hier auf der anderen Seite haben wir die wichtigsten Pops. Der Charakter ist hingefallen, aber das ist nicht wirklich wichtig. Ich gehe nur zur Höhe oder zum Standort. Zeichen nach unten drücken, hier sind wir und fügen ein. Wir haben auch den Aufzug aktiviert. Ich gehe runter, es wird ein bisschen heller, weil der Nebel nicht wirklich folgt. Aber was wir tun. Gehen wir zurück zum Aufzug und fangen an, mit dem Aufzug zu spielen, wo das immer in Ordnung ist. Da sind wir. Ps. Hier sind wir. Wir werden alle Hintertüren des Unterrichts bekommen. Wir holen uns den Nebelnebel, wir holen uns die erste Kopie, die wir finden , weil wir nur eine haben. Wir werden sie zu einer Variablen hochstufen, die wir Variablennebel nennen. Auf unserem Tickvn, wenn wir den Standort des Schauspielers festlegen. Wir werden den Standort des Schauspielers für den Nebel festlegen. Wir werden etwas mehr Platz brauchen. Wir werden konstant ins Inter gehen, wir werden das gleiche Tempo beibehalten. Wir werden den Standort des Schauspielers herausfinden. Das Elternteil Delta T, wir werden Delta benutzen. Vom Ziel aus werden wir das tatsächlich genau so verwenden . ' Wir werden ein neues Original und ein neues Ziel brauchen. Also werde ich dieses Survival zum Original machen. Der letzte, den ich bekommen kann. Das stellen wir auf, wenn die Zäune gebaut werden. Um jetzt ganz sicher zu gehen. Ich glaube, bei dieser Startanimation die Zäune hochgezogen Also holen wir uns unseren Nebel, ich suche mir einen Standort Ich werde die ursprüngliche Nebelposition auf diesen Wert einstellen. Und fügen wir hinzu, was die Höhe des Labyrinths ist. Wir fügen 2900 hinzu. Nr. 2500. Das ist der Aufzug, nicht wahr? Ja, das ist der Aufzug, er sollte fahren, und das Labyrinth geht nach oben, wenn wir auf das Labyrinth reagieren Das könnte eine Variable bis 2500 sein. Das ist der Nebelstandort, 22500. Ich werde das Plus von hier nach hier kopieren. Das, ich werde den Zielort darauf setzen. Ich verbinde mich dieses Jahr, verbinde mich dieses Jahr. Und das war Spiel für Spiel. In Ordnung. Und der Nebel kommt mit uns. Sieht nicht wirklich nach Nebel aus, aber er verleiht Farbe und Schatten Oh, da waren riesige Rahmenbeine. Ist passiert. Siehst du? Das ist das Problem mit s. Wir haben das nicht behoben. Lassen Sie uns das für eine Sekunde beheben. Ailes. Ich sehe es wirklich nicht gern Wo ist es hier. Ich nehme das Stockwerk, verschiebe es nur ein bisschen. In Worten, erscheint von nirgendwo anders. Es ist behoben. Was unser Nebel macht, ist im Grunde genommen hier nicht sichtbar, aber er ist in Richtung hier sichtbar, sodass wir das Ende dieser Kacheln nicht sehen können. Und das Gleiche wird sein, wenn wir in die nächste Etage gehen, in die nächste Etage gehen. Ich sehe, dass dasselbe in der nächsten passieren wird. Zuallererst wird das ein bisschen ausgeblendet. Jetzt können wir den Rand des Schnitts sehen, aber wir gehen hier hin. Siehst du, es gibt keinen Kantenschnitt. Es gibt hier ein Problem, wir können Dinge verschieben, und ich schätze, es gibt noch andere Probleme, die behoben werden können Diese Truhe? Ich bin nicht in Reichweite. Wie auch immer, wie Sie sehen können, gibt es viele Bugs. Bereit, in Reichweite zu sein. Ich denke, wir haben die Tools zur Verfügung gestellt, um all diese Fehler zu beheben. Jetzt. Außerdem habe ich meine FPS ein wenig erhöht, wie Sie sehen können. So habe ich das gemacht, ich habe die Lautstärke des Labyrinths und die Navigationslautstärke jetzt auf 1.000 reduziert die Navigationslautstärke jetzt auf 1.000 Das ist nicht nur nicht optimal, sondern verursacht auch eine Menge Probleme, ein riesiges Navigationsnetz Ich würde für diese Menge an KI kein Navigationschaos gebrauchen. Vielleicht hätte ich eine benutzerdefinierte Bewegung für sie geschrieben , um sie zu bewegen und sie in der Achse zu fixieren und sie nicht auf der Z-Achse zu bewegen, oder selbst wenn sie sich auf der Z-Achse bewegen, nur eine einfache Bewegung ohne Navigation , wie bei einigen Linienspuren, können Sie dorthin gehen und dann dorthin gehen, so etwas, ein System wie das. Nun, eine andere Möglichkeit, das zu tun, habe ich nicht wirklich getestet, aber wir hätten ein Level erstellen können, ein Streaming-Level, das wir laden, das ein Navigationsvolumen hat, und wir ändern die vielen Techniken, um im Grunde genommen ein benutzerdefiniertes Navigationsvolumen in spl plus zu schreiben, vielleicht eine benutzerdefinierte Klasse dafür, es in einer anderen Klasse zu verwenden das können Sie verschieben, weil Baupläne nicht die Möglichkeit bieten, dieses Volumen zu verschieben Sie könnten auf diese Weise auch einzelne Bände verteilen, denn wenn wir einen Navigationsband schreiben, gehen wir Telefonakt plus, es gibt eine Neufassung von Nav Me, es gibt noch andere Dinge, aber wir können keine Navigationslautstärke erzeugen Also das ist gut, in Seps zu schreiben, plus einer Klasse, die man mit einem Navigationsvolumen spawnen kann, vielleicht oder auch wieder, es gibt grundsätzlich verschiedene Arten, Dinge zu tun, aber der endlose Teil, etwas Endloses zu haben, ist aber der endlose Teil, etwas Endloses zu haben, mit den Tools, die wir haben, nicht wirklich möglich Wir haben irgendwie geschummelt und dieses Navigationsvolumen erstellt, und das war es Danke, dass ihr uns bei diesem echten Engine Five-Blueprint-Abenteuer begleitet dem wir einen kompletten Triebwerkgenerator für ein Top-Down-Spiel mit Feinden, Sammelgegenständen und mehr gebaut für ein Top-Down-Spiel mit Feinden, Sammelgegenständen und mehr Wir hoffen, dass dir der Kurs gefällt und du dabei viel lernst Ihr Feedback bedeutet uns die Welt. Wenn Sie also eine Bewertung hinterlassen und uns Ihre Gedanken mitteilen könnten, würde uns das wirklich helfen, uns zu verbessern und weiterhin die bestmöglichen Inhalte zu liefern. Nochmals vielen Dank für Ihre Unterstützung und wir können es kaum erwarten zu sehen, was Sie erstellen.