Wie erstelle ich ein einfaches Unity Platform Game?

In unserem Teil 1 von Wie erstelle ich ein einfaches Unity-Plattform-Spiel, haben wir die Schritte zur Erstellung Ihres Basis-Charakters durchgeführt und Physik, Plattformen und Mauseingaben hinzugefügt. Im nächsten Teil erfahren Sie, wie Sie prozedurale Plattformen, ein Spielmenü und einige Ressourcen hinzufügen können, um Modelle und zusätzliche Unity-Plug-Ins zu finden, die Sie in zukünftigen Projekten verwenden können.

Erstellen von Prozedur-Plattformen

Im ersten Teil dieses Tutorials haben wir also eine grundlegende Plattform geschaffen, auf der dein Charakter herumhüpfen kann ( und in sein Verderben fallen kann) - aber für einen echten Plattformer müssen wir zusätzliche Plattformen hinzufügen. Aber wir wollen keine Millionen Plattformen hinzufügen - wir möchten, dass Unity automatisch Plattformen erstellt, wenn unser Charakter aufspringt.

Dazu benötigen wir eine Plattformvorlage - auch bekannt als Prefab. Prefab ist die Abkürzung für " prefabed" und bedeutet einfach "pre-made" - in der Regel eine Kopie eines Spielobjekts, das Sie immer wieder verwenden können. In der Tat können Prefabs Hierarchien von Spielobjekten enthalten, was bedeutet, dass Sie eine komplette Szene von Spielobjekten vorfertigen können.

Sie müssen also einen neuen Ordner namens Prefabs erstellen, dann ziehen Sie unsere Plattform aus dem Hierarchiebedienfeld in diesen neuen Ordner. Prefabs sind im Hierarchie-Panel durch die Farbe Blau erkennbar.

Um nun Unity anzuweisen, prozedurale Plattformen zu erstellen, müssen wir ein Skript namens GameManager erstellen und es an die Kamera anhängen. GameManager-Skripte enthalten im Wesentlichen wichtige Anweisungen, wie die Engine an das Gameplay weitergeleitet wird - in diesem Fall wird es Plattformen generieren, während unser Charakter mithüpft.

Der Grund, warum wir es an die Kamera anhängen, ist, dass die Kamera niemals zerstört wird, und sie bleibt konstant - so wird das Skript niemals zerstört und bleibt konstant, indem es an es angehängt wird.

Hier ist, was in das Skript aufgenommen werden muss:

Um diesen Code ein wenig zu erklären, müssen wir einen Verweis auf das Prefab-Panel und auf die Sphäre (unseren Charakter) erstellen. Sie müssen sie also per Drag-and-Drop in ihre speziellen Slots in Ihrem Editor ziehen.

Dieser Code enthält auch drei private Variablen - die Zeilen, die mit privaten Variablen beginnen . Diese werden das Prefab-Panel auf folgende Weise instanziieren (referenzieren):

  • Private var boundary: float legt ein Limit für die y-Achse fest. Wenn unser Zeichen höher als diese Grenze springt, wird ein neues Panel erstellt.
  • Private var Rotation: Quaternion; fügt einfach eine notwendige Rotation hinzu, um unsere Prefabs zu instantiieren - wir fügen jedoch rotation hinzu = Quaternion.identify; weil dies die Engine anweist, das Spielobjekt nicht zu drehen. Das Objekt (unsere vorgefertigten Paneele) wird buchstäblich perfekt mit der Welt ausgerichtet sein.
  • Die letzte private Variable lastPlatformPosition merkt sich und speichert die Position der letzten Plattform als 3D-Vektor (im Grunde verschwinden die Plattformen nicht hinter Ihnen, so dass Sie rückwärts durch die Spielwelt gehen können, wenn Sie möchten).

In diesem nächsten Skript werden wir für jeden Frame eine Überprüfung hinzufügen , ob unsere Sphäre (Zeichen) über der Grenze liegt (das generiert neue Plattformen) - wenn unser Charakter über der Grenze ist, werden wir die Grenze erhöhen Limit, um ein neues Panel / eine höhere Plattform als das letzte zu erstellen.

Unser nächster Schritt ist das Hinzufügen von Code, der die nächste Panelposition bestimmt:

Wir verwenden eine do while- Schleife in diesem Code, um sicherzustellen, dass die X- und Z-Werte des Vektors (seine Position in der Spielwelt) nicht identisch mit den vorherigen Plattformen sind - also werden unsere prozedural generierten Plattformen immer größer.

Natürlich wollen wir nicht, dass diese Werte strikt platziert werden - ein bisschen Zufälligkeit ist eine gute Sache, sonst machen wir nur eine perfekte Treppe. Also verwenden wir die Random.Range- Funktion, zwischen den Werten -1 und 2, um zufällige Werte für X und Z aufzurufen. Sie können mit diesen Zahlen ein wenig spielen, wenn Sie herumalbern wollen.

Ein Spielmenü erstellen

Bisher haben wir ein Spiel erstellt, in dem Sie mit zunehmender Höhe springen und die Maus bewegen können, um die Richtung zu steuern. Das Problem ist, dass wenn du von der Plattform fällst, du endlos fallen wirst - wir müssen in einem Tot- / Spiel-Menü skripten, um von vorne zu beginnen.

Im Grunde schreiben wir ein Skript, das überprüft, ob unsere Sphäre (Charakter) unter die erste Plattform des Spiels fällt. Wenn dies der Fall ist, lädt das Skript eine neue Szene.

In einem ersten Schritt prüfen wir, ob die Kugel einen bestimmten Schwellenwert unterschritten hat. Gehen Sie in das GameManager- Skript, das wir zuvor erstellt haben, und schauen Sie sich die if- Anweisung der Update- Funktion an.

Wir werden hier eine else if- Anweisung verwenden, um zu überprüfen, ob die Position unserer Sphäre unter -2, 0 Einheiten der Y-Position ist - wenn das der Fall ist, wird unsere private Funktion gameOver sich gut verstehen, das Skript ist selbsterklärend.

Das letzte bisschen Skript ist die Funktion, um ein Spiel über den Zustand zu bringen und unser Spielmenü zu laden.

PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken

Dies erinnert an die Application- Klasse von Unity - wir können die LoadLevel- Funktion aufrufen, um eine neue Szene aufzurufen, die in diesem Fall einfach unser Spielmenü ist. Denken Sie daran, dass in Unity grundsätzlich alles Ebenen ist. Hauptmenüs (Start Spiel - Optionen - Credits - usw.) sind im Grunde nur Ebenen / Szenen mit Bits anklickbaren Text. So ähnlich wie Skyrims Ladebildschirme, wie? Sie sind nur 3D-Modelle in einem leeren Weltbereich mit einer Ladeleiste.

In jedem Fall müssen wir eine Szene über Datei> Neue Szene erstellen und ihr beim Speichern den Namen geben. Dann werden wir beide Szenen zum Build-Prozess hinzufügen. Dies geschieht über Datei> Build-Einstellungen .

Unsere Menüszene sollte immer noch geöffnet sein. Klicke einfach auf die Schaltfläche "Add Current" (Aktuelle hinzufügen) und füge die Szene zu Deinen Build-Einstellungen hinzu - führe dies erneut mit der Levelszene durch.

Wenn wir im Spiel sterben, sollte das Skript, das wir erstellt haben, uns von der Spielebene in die Menüszene überführen.

Fügen Sie eine Startschaltfläche für Spieler hinzu

Jetzt können wir das Spiel im Testmodus spielen, aber im Moment haben die Spieler keine Möglichkeit, das Spiel zu starten, wenn wir dieses Spiel irgendwo hochladen würden. Also müssen wir ein Spielmenü erstellen, das eine Schaltfläche zum Starten des Spiels hat.

Wechseln Sie also zur Szene des Spielmenüs und fügen Sie dieses Bit der Kamera hinzu ( erinnern Sie sich im Inspektorfenster an Punkt 1 dieses Tutorials?).

  • Clear Flags: Volltonfarbe
  • Hintergrund: # 000
  • Breite: 200
  • Höhe: 60

Dies gibt uns einen soliden schwarzen Hintergrund für unser Spielmenü - dies wird in RGB-Werten gemacht, nicht hex - also wäre Blau 001, Grün ist 010, Rot ist 100 usw. Ich könnte das für dich erklären, aber alles was du brauchst zu tun ist Google RGB-Picker, wenn Sie eine bestimmte Farbe wünschen.

Wir müssen unseren Button hinzufügen, um das Spiel zu starten. Dies geschieht über UI-Elemente. Im Grunde können wir UI-Elemente auf dieselbe Weise hinzufügen wie 3D-Elemente über das Hierarchie- Bedienfeld. Gehen Sie also voran und erstellen Sie eine UI-Schaltfläche. Im Hierarchie- Panel werden einige neue Elemente angezeigt :

  • Ereignissystem
  • Segeltuch
  • Taste
  • Text

Um dies zu durchbrechen - das Canvas ist unser Container für alle UI-Elemente und wir können es reaktionsfähig machen ( bei Responsive meine ich Skalierung auf Bildschirmgröße, nicht reaktionsschnell, als würde es Fragen beantworten. Das ist am besten AI-Skripten überlassen). In jedem Fall werden wir die Position der Schaltfläche folgendermaßen ändern:

  • Rect Transform {Pos X: 0, Pos Y: 0, Pos Z: 0}
  • Rect Transform {Breite: 200, Höhe: 60}

Um dies etwas eleganter zu gestalten, können Sie das Quellbild der Schaltfläche entfernen und eine Farbe dafür festlegen. Um den Text der Schaltfläche zu ändern, bearbeiten Sie einfach das Text- Element wie START GAME und geben Sie ihm eine Schriftgröße von etwa 16.

Um die Schaltfläche klickbar zu machen, fügen wir dem UIController-Skript im Element Button eine Funktion hinzu. Fügen Sie einfach diesen Code unten hinzu:

Wenden Sie diese Funktion auf die Inspector- Einstellungen der Schaltfläche an, und fügen Sie in den Komponenteneinstellungen der Schaltfläche (Skript) einfach eine Funktion hinzu, die ausgeführt wird, wenn der Player auf die Schaltfläche Start klickt. Fügen Sie einfach eine Funktion zum Ereignis On Click () hinzu und ziehen Sie die Schaltfläche Start Game in das Eingabefeld. Wählen Sie abschließend die neu erstellte Funktion aus dem UIController-Skript ( UIController.StartGame)

Wir können diese Funktion in den Inspector- Einstellungen der Schaltfläche anwenden. In den Komponenteneinstellungen der Schaltfläche (Skript) können wir eine Funktion ausführen, wenn ein Spieler darauf klickt. Dazu fügen wir dem Ereignis On Click () eine neue Funktion hinzu, indem Sie auf das Symbol + klicken. Jetzt können wir den Button selbst per Drag & Drop auf das Eingabefeld ziehen. Dann wählen wir die Funktion, die wir gerade geschrieben haben, aus dem UIController-Skript (UIController.StartGame) aus.

Wie man als WebGL Browserspiel exportiert / veröffentlicht

Öffnen Sie die Erstellungseinstellungen, und wählen Sie WebGL als Zielplattform aus. Klicken Sie nun auf die Schaltfläche " Plattform wechseln" und klicken Sie schließlich auf die Schaltfläche " Erstellen" und geben Sie Ihrem Spiel einen Titel. Nachdem es erstellt wurde, wird es als HTML-Datei exportiert / gespeichert, die in jedem WebGL-fähigen Browser geöffnet / angezeigt werden kann. Obwohl, wenn Sie Ihr Spiel veröffentlichen möchten, gibt es zwei Methoden, um dies zu erreichen:

  • Laden Sie Ihr Spiel auf eine Art Datei-Host (Dropbox, Google Drive, etc.), dann teilen Sie den Link. Dies ist nützlich für kleine Demos, die Sie Freunden oder potenziellen Kunden zeigen möchten ( Spielportal-Websites, die entweder Ihr Spiel kaufen oder mit Ihnen einen Umsatz mit Anzeigen teilen).
  • Laden Sie Ihr Spiel auf einen FTP-Server hoch, den Sie besitzen, und betten Sie es in ein