Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

In dieser Lektion werden wir die zuvor erstellte Logik für sammelbare Objekte verwenden, um eine Aktion im Spiel auszulösen.

Als Beispiel werden wir eine Tür erstellen, die den Weg des Spielers blockiert und erst entfernt wird, nachdem alle Objekte auf der Karte gesammelt wurden.

Dies ist eine sehr gängige Spielstruktur: Der Spieler erfüllt ein Ziel, und das Spiel reagiert, indem es etwas freischaltet. Es könnte eine Tür, eine Plattform, ein Aufzug, eine Brücke, ein Szenenwechsel, ein Bosskampf oder ein anderes Fortschrittsereignis sein.

In dieser Lektion lernst du, wie man aus der Logik eines anderen Entities auf ein Entity zugreift und es manipuliert. In diesem Fall wird der Spieler den Fortschritt beim Sammeln überprüfen und anschließend die Tür aus der Szene entfernen.

1. Erstellen der Logik zum Entfernen der Tür

Lass uns damit beginnen, eine neue Entity Template für unsere Tür zu erstellen.

Konfiguriere das Mesh, das als visuelle Darstellung verwendet wird, und füge eine Physik-Komponente hinzu, damit die Tür den Durchgang des Spielers blockieren kann.

Da die Tür verhindern sollte, dass der Charakter hindurchgeht, aktiviere nicht die Ghost-Option in der Physik-Komponente.

Ein Ghost-Physikkörper kann Kollisionen erkennen, blockiert jedoch nicht physisch die Bewegung. Für das sammelbare Objekt war das genau das, wonach wir gesucht haben. Für die Tür wollen wir jedoch das Gegenteil: Der Spieler sollte nicht hindurch gehen können, bis die Bedingung erfüllt ist.

Durch Drücken der 3-Taste kannst du die Kollisionsvorschau des Entities visualisieren. Dies ist nützlich, um zu bestätigen, ob die physikalische Form der Tür korrekt übereinstimmt.

Cave bietet dir verschiedene Möglichkeiten, die physikalische Form zu konfigurieren. Du kannst das Mesh des Objekts selbst als Kollision verwenden, ein anderes optimiertes Modell, das nur für die Physik erstellt wurde, importieren oder sogar ein anderes Mesh aus dem Projekt als Kollisionsform verwenden.

Wähle die Option, die am besten zu den Bedürfnissen und der Leistung deines Spiels passt.

image.png

Das System, das wir zuvor erstellt haben, liefert uns bereits genau die Informationen, die wir benötigen, um zu steuern, wann die Tür entfernt werden soll.

Es berechnet automatisch die Gesamtanzahl der sammelbaren Objekte in der Szene, unabhängig davon, wie viele Objekte auf der Karte vorhanden sind, und verfolgt außerdem, wie viele davon bereits vom Spieler gesammelt wurden.

Das macht die Logik sehr flexibel. Wir müssen eine Zahl nicht manuell ändern, jedes Mal, wenn wir Objekte vom Level hinzufügen oder entfernen. Der Zähler wird weiterhin korrekt funktionieren und sich automatisch an die Menge der in der Szene verfügbaren Sammelobjekte anpassen.

image.png

Mit diesen beiden verfügbaren Informationen — gesammelte Objekte und Gesamtobjekte — können wir einfach beide Werte vergleichen.

Wenn die Anzahl der gesammelten Objekte der Gesamtzahl der Objekte auf der Karte entspricht, bedeutet dies, dass der Spieler alle Sammelobjekte gefunden und das erforderliche Ziel zum Öffnen des Weges abgeschlossen hat.

Von dieser Bedingung aus werden wir die Logik ausführen, die dafür verantwortlich ist, die Tür aus der Szene zu entfernen, sodass der Spieler zum nächsten Bereich des Spiels weitergehen kann.

Nachdem wir TextCollect aktualisiert haben, überprüfen wir, ob alle Objekte auf der Karte bereits gesammelt wurden.

Um dies zu tun, rufe die Eigenschaften Collected Item und Max Item ab und verwende einen Vergleichs-Knoten, um zu überprüfen, ob beide Werte gleich sind.

Wenn die Bedingung wahr ist, bedeutet das, dass der Spieler jedes verfügbare Objekt in der Szene gesammelt hat und die Bedingung erfüllt ist, die für das Entsperren des Fortschritts benötigt wird.

image.png

Aus dieser Überprüfung heraus können wir die Logik ausführen, die für das Entfernen der Tür verantwortlich ist und den Zugang zum nächsten Bereich ermöglicht.

Um dies zu tun, werden wir ein Entity aus der Logik des Spielers zugreifen und manipulieren.

Zuerst rufe die Scene ab und verwende den Get Entities With Name-Knoten, wobei du den Namen des Tür-Entities übergibst. In diesem Fall ist der Name Door.

Dieser Knoten gibt eine Liste von Entities zurück, die mit diesem Namen gefunden wurden.

Verwende dann einen Get-Knoten, um das Element an Index 0 abzurufen, das dem ersten mit diesem Namen gefundenen Entity entspricht.

Verbinde schließlich dieses Entity mit dem Kill-Knoten.

Wenn diese Logik ausgeführt wird, wird die Tür aus der Szene entfernt.

image.png

Es ist wichtig zu verstehen, was hier passiert.

Der Spieler ist nicht direkt mit der Tür als Kind- oder Eltern-Entity verbunden. Stattdessen erhält der Spieler die aktuelle Szene, sucht nach einem Entity mit dem Namen Door, ruft es aus der Ergebnisliste ab und entfernt es dann.

Das bedeutet, dass du Logik erstellen kannst, bei der ein Objekt ein anderes Objekt in der Szene beeinflusst, was für die Erstellung von Gameplay-Interaktionen wesentlich ist.

Eine Sache, die man beachten sollte, ist, dass Get Entities With Name eine Liste zurückgibt, da es möglicherweise mehr als ein Entity mit demselben Namen gibt. In diesem Beispiel verwenden wir Index 0, was bedeutet, dass wir das erste gefundene Ergebnis verwenden. Für diesen einfachen Fall ist das in Ordnung. Aber in größeren Projekten ist es eine gute Idee, wichtige Entity-Namen organisiert zu halten oder je nach Situation Tags und andere Referenzen zu verwenden.

Diese Logik kann auf viele verschiedene Arten erweitert werden.

In diesem Beispiel haben wir die Sammlung aller Objekte verwendet, um eine Tür zu entfernen, aber dasselbe Prinzip kann auf fast jedes Ereignis in deinem Spiel angewendet werden.

Anstatt eine Tür zu entfernen, könntest du:

  • eine Plattform bewegen
  • einen Aufzug aktivieren
  • eine Zwischensequenz abspielen
  • einen Hebel aktivieren
  • einen Bosskampf beginnen
  • ein neues Gebiet freischalten
  • Feinde spawnen
  • das Ziel des Levels ändern

Das Wichtigste ist zu verstehen, dass du jetzt die Werkzeuge hast, die du benötigst, um Ziele und Belohnungen mithilfe von Caves visueller Logik zu erstellen.

Aus diesem Grund ist eine großartige Übung, zu versuchen, dieses System in etwas anderes als das in dieser Lektion gezeigte Beispiel anzupassen. Du kannst deine eigene Bedingung, deine eigene Belohnung erstellen und neue Möglichkeiten erkunden, indem du alles nutzt, was du bisher gelernt hast.

image.png