Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. 3D

Erstellen Sie einen Space Shooter mit PlayCanvas: Teil 1

by
Read Time:16 minsLanguages:
This post is part of a series called Create a Space Shooter with PlayCanvas.
Create a Space Shooter With PlayCanvas: Part 2

German (Deutsch) translation by Federicco Ancie (you can also view the original English article)

Mit PlayCanvas ist es wirklich einfach, WebGL-basierte interaktive 3D-Inhalte für das Web zu erstellen. Es ist alles JavaScript, daher läuft es nativ im Browser ohne Plugins. Es ist eine ziemlich junge Engine, die es erst seit 2014 gibt, aber sie hat schnell an Bedeutung gewonnen, da Namen wie Disney, King und Miniclip sie zur Entwicklung von Spielen verwenden.

Es ist aus zwei Hauptgründen ein großartiges Tool: Erstens ist es eine voll funktionsfähige Spiel-Engine, die alles von Grafik und Kollision über Audio bis hin zur Integration in Gamepads / VR abwickelt. (Sie müssen also für die meisten Dinge nicht nach externen Bibliotheken suchen oder sich um Probleme mit der Browserkompatibilität sorgen.) Der zweite und meiner Meinung nach herausragende Aspekt ist der browserbasierte Editor.

Screenshot of PlayCanvass editorScreenshot of PlayCanvass editorScreenshot of PlayCanvass editor
So sieht ein Beispielprojekt im Browser-Editor von PlayCanvas aus. Es ist eine wirklich leistungsstarke und bequeme Möglichkeit, Ihre Arbeit zu organisieren oder sogar in Echtzeit mit anderen zusammenzuarbeiten.

Wenn Sie es gewohnt sind, mit der Unity-Engine zu arbeiten, sollte der Editor von PlayCanvas vertraut aussehen (er verwendet sogar ein ähnliches komponentenbasiertes System zum Aneinanderreihen von Funktionen). Im Gegensatz zu Unity ist PlayCanvas nicht plattformübergreifend und kann nur für das Web veröffentlicht werden. Wenn Sie sich jedoch nur für das Web interessieren, ist dies ein großes Plus, da der Fokus der Engine auf das Web es im Vergleich zur Konkurrenz sehr schnell und leicht macht.

Ein letzter Hinweis: Während die Engine selbst kostenlos und Open Source ist, sind der Online-Editor und die Tools nur für öffentliche Projekte kostenlos. Es lohnt sich auf jeden Fall, dafür zu bezahlen, wenn Sie kommerzielle Arbeit damit entwickeln, aber Sie können es auch immer nur als reines Code-Framework kostenlos verwenden.

Das Endergebnis

Wir erstellen Folgendes:

In-game screenshot of space shooterIn-game screenshot of space shooterIn-game screenshot of space shooter

Sie können eine Live-Demo ausprobieren.

Das Projekt selbst ist öffentlich, sodass Sie es auf seiner Projektseite durchsuchen und / oder aufteilen können.

Sie müssen keine Erfahrung mit 3D-Spielen haben, um mitzumachen, aber ich gehe von einer grundlegenden Vertrautheit mit JavaScript aus.

Unser eigenes Projekt von Grund auf neu erstellen

Das Endergebnis ist eine relativ einfache Demo, in der Sie einfach herumfliegen und Asteroiden schieben. Sie enthält jedoch genügend grundlegende Funktionen, die für die Erstellung von 3D-Spielen hilfreich sind. Teil 1 behandelt die Grundeinstellungen, die Arbeit mit Modellen, dem Physiksystem und Kamerasteuerungen. Teil 2 behandelt das Aufzählungssystem, das Laichen von Asteroiden und das Arbeiten mit Text.

1. Projekteinrichtung

Gehen Sie zu playcanvas.com und erstellen Sie ein Konto.

Sobald Sie angemeldet sind, klicken Sie im Dashboard auf die Registerkarte Projekte und klicken Sie auf die große orangefarbene Schaltfläche Neu, um ein neues Projekt zu erstellen. Daraufhin sollte das Feld Neues Projekt angezeigt werden. Wählen Sie "leeres Projekt" und geben Sie ihm einen Namen:

Dialog box for creating a new projectDialog box for creating a new projectDialog box for creating a new project

Wenn Sie fertig sind, klicken Sie unten rechts auf die Schaltfläche Erstellen. Dadurch gelangen Sie zur Projektübersichtsseite. Hier können Sie auf Ihre Einstellungen zugreifen und Mitarbeiter hinzufügen. Im Moment tauchen wir einfach in das Projekt ein, klicken Sie also auf die große orangefarbene Editor-Schaltfläche.

Wenn Sie Ihr erstes Projekt eingeben, zeigt Ihnen PlayCanvas viele Hinweise zum Editor. Sie können diese vorerst entlassen. Die wichtigsten Dinge zu beachten sind:

  • Das linke Feld (Hierarchie) ist eine Liste aller Ihrer Weltobjekte. Hier können Sie auch Objekte zu Ihrer Szene hinzufügen, duplizieren oder löschen.
  • Im rechten Bereich (Inspektor) können Sie die Eigenschaften des ausgewählten Objekts bearbeiten. Nachdem Sie ein Objekt ausgewählt haben (indem Sie darauf klicken), können Sie seine Position und Ausrichtung festlegen oder Skripte und Komponenten anhängen.
  • Das untere Feld (Assets) enthält alle Ihre Assets. Hier können Sie Texturen oder 3D-Modelle hochladen und Skripte erstellen.
  • In der zentralen Szene können Sie Ihre Spielwelt bearbeiten und erstellen.

2. Erstellen eines Objekts

Um ein neues Objekt in Ihrer Szene zu erstellen, klicken Sie oben im Hierarchiefenster auf das kleine Pluszeichen:

How to create a new entityHow to create a new entityHow to create a new entity

Hinweis: Möglicherweise erstellen Sie versehentlich ein neues Objekt in einem bereits vorhandenen. Dies ist nützlich, um Objekte zu erstellen, die aus mehreren Teilen bestehen oder auf irgendeine Weise miteinander verbunden sind. Sie können Objekte im Hierarchiefenster verschieben, um die Verschachtelung zu steuern. Ziehen Sie es auf das Root-Objekt, um es wieder oben in der Hierarchie zu platzieren.

Als Beispiel werde ich eine neue Box erstellen und sie rot färben. Um ihm eine benutzerdefinierte Farbe zu geben, müssen wir ein neues Material erstellen. Sie können dies im Assets-Bereich tun, indem Sie entweder mit der rechten Maustaste auf eine beliebige Stelle im Bereich klicken oder auf das kleine Plus-Symbol klicken:

How to add a new materialHow to add a new materialHow to add a new material

Wählen Sie nach der Erstellung Ihr Material aus und geben Sie ihm einen beschreibenden Namen wie "RedMaterial" (das Namensfeld wird im Inspektorfenster angezeigt).

Scrollen Sie nun im diffusen Bereich nach unten und ändern Sie die Farbe:

How to change the diffuse color to redHow to change the diffuse color to redHow to change the diffuse color to red

Wenn dies erledigt ist, gehen Sie zurück und wählen Sie das neue Feld aus, das Sie erstellt haben (entweder indem Sie in der Szene oder im Hierarchiefenster darauf klicken). Stellen Sie dann das Material auf das benutzerdefinierte Material ein, das wir gerade erstellt haben:

Where to set an objects materialWhere to set an objects materialWhere to set an objects material

Und die Box sollte jetzt rot sein! Beachten Sie, dass das von Ihnen erstellte Material an beliebig viele Objekte angehängt werden kann.

3. Physik hinzufügen

Um die Physik eines Objekts zu aktivieren, müssen zwei Komponenten hinzugefügt werden: Starrer Körper und Kollision.

Fügen Sie den starren Körper hinzu, indem Sie im Inspektorfenster Ihres Objekts auf "Komponente hinzufügen" klicken:

How to add a rigid body component to an entityHow to add a rigid body component to an entityHow to add a rigid body component to an entity

Stellen Sie sicher, dass der Typ auf dynamisch eingestellt ist:

Where to set rigid body typeWhere to set rigid body typeWhere to set rigid body type

Fügen Sie dann auf die gleiche Weise eine Kollisionskomponente hinzu.

Starten Sie jetzt Ihr Spiel, indem Sie oben rechts in Ihrer Szene auf die kleine Wiedergabetaste klicken. Sie sollten sehen, wie Ihre Kiste durch den Boden fällt! Um dies zu beheben, müssen Sie der Ebene ebenfalls einen starren Körper und eine Kollision hinzufügen und sicherstellen, dass der Typ des starren Körpers statisch ist (damit er nicht auch herunterfällt).

Herausforderung: Fügen Sie zum Spaß eine Kugel hinzu und neigen Sie die Ebene leicht (entweder auf der X- oder der Z-Achse), um zu sehen, wie sie abrollt.

Ein Hinweis zum Komponentensystem

Es lohnt sich, kurz über das Komponentensystem zu sprechen, da es ein wesentlicher Bestandteil der Architektur von PlayCanvas ist. Konzeptionell besteht die Idee darin, Funktionalität von Objekten zu trennen. Der größte Vorteil davon ist die Fähigkeit, komplexes Verhalten aus kleineren modularen Komponenten zusammenzusetzen.

Wenn Sie beispielsweise die Kamera in Ihrer Szene betrachten, werden Sie feststellen, dass es sich nicht um ein spezielles Objekt handelt. Es ist nur eine generische Entität mit einer Kamerakomponente. Sie können eine Kamerakomponente an alles anbringen, um daraus eine Kamera zu machen, oder einen starren Körper und eine Kollision an der Kamera anbringen, um daraus ein festes Objekt zu machen (probieren Sie es aus!).

Wenn Sie neugierig sind, können Sie auf der Wikipedia-Seite mehr über die Vor- und Nachteile von Komponentensystemen lesen.

4. Hinzufügen eines Modells

Jetzt, da Sie mit den Grundlagen vertraut sind, können wir unser Weltraumspiel zusammenstellen. Wir brauchen mindestens ein Schiff und einen Asteroiden, mit denen wir arbeiten können. Es gibt zwei Möglichkeiten, Modelle hinzuzufügen:

Holen Sie sich ein Modell aus der PlayCanvas-Bibliothek

PlayCanvas verfügt über einen Store (in gewisser Weise dem Unity Asset Store ähnlich), in dem Sie Assets direkt in Ihr Projekt suchen und herunterladen können. Um darauf zuzugreifen, klicken Sie einfach im Assets-Bereich auf Bibliothek.

Das Geschäft ist sehr neu, daher eher spärlich, aber es ist ein guter Ort, um Platzhalter oder Vermögenswerte zu finden, mit denen man experimentieren kann.

Ich habe das Hovership-Asset aus dem Laden als mein Spielerschiff verwendet.

Downloaden Sie Ihr eigenes Modell

PlayCanvas unterstützt das Hochladen von FBX-, OBJ-, 3DS- und COLLADA (DAE)-Dateien, bevorzugt jedoch FBX. Sie können jedes 3D-Modell einfach in FBX konvertieren, indem Sie es mit Blender öffnen und in das gewünschte Format exportieren.

Sie finden das Asteroidenmodell, das ich auf Blendswap.com verwendet habe. Beachten Sie, dass Sie Ihre 3D-Modelle möglicherweise optimieren möchten, bevor Sie sie im Spiel verwenden. Zum Beispiel enthält dieses Asteroidenmodell über 200.000 Dreiecke! Das mag für ein spezielles Objekt im Spiel in Ordnung sein, aber als ich mehr als hundert Asteroiden in die Szene aufgenommen habe, haben sich die Dinge wirklich zu einem Kriechen verlangsamt. Mit dem Decimate-Modifikator von Blender können Sie Ihre Modelle auf einfache Weise optimieren. Ich habe das verwendet, um das Asteroidenmodell auf etwa 7.000 Dreiecke zu reduzieren, ohne zu viele Details zu verlieren.

Sobald sich die Modelle in Ihrem Projekt befinden (möglicherweise müssen Sie sie aktualisieren, wenn Sie sie nicht sofort in Ihrem Assets-Bedienfeld sehen), können Sie sie Ihrer Szene hinzufügen. Der einfachste Weg, dies zu tun, besteht darin, das Modell einfach in die Szene zu ziehen:

How to add the hovership model into the sceneHow to add the hovership model into the sceneHow to add the hovership model into the scene
Dies ist das eigentliche Modell, das Sie der Szene hinzufügen können. Die anderen Vermögenswerte sind die Textur / das Material usw.

Fügen Sie dem Schiff wie zuvor einen starren Körper und eine Kollisionskomponente hinzu. Ein Trick, den Sie mit einer Kollision machen können, besteht darin, das Netz des tatsächlichen Objekts als eigene Kollisionsform hinzuzufügen. Dies würde zu einem pixelgenauen Kollisionsnetz führen, wäre aber nicht sehr effizient. Für diese Demo habe ich mich für eine einfache Box als Kollisionsform (und eine Kugel für die Asteroiden) entschieden und die halben Ausmaße so bearbeitet, dass sie ungefähr der Form des Modells entsprechen.

Wie man Sie die Kollisionsform versetzen können

Ein Problem, auf das Sie beim Anpassen von Kollisionsformen stoßen können, ist die Unfähigkeit, sie von der Mitte zu versetzen. Eine einfache Möglichkeit, dies zu umgehen (abgesehen davon, dass das Modell selbst in etwas wie Blender vor dem Export versetzt werden muss), besteht darin, ein übergeordnetes Objekt mit der Kollision und dem starren Körper sowie ein untergeordnetes Objekt mit dem Modell selbst zu erstellen. Sie können das Modell also als untergeordnetes Element relativ zu dem übergeordneten Modell versetzen, das die Kollision enthält.

So habe ich es für das Demo-Projekt eingerichtet, also können Sie sich das ansehen, um zu sehen, wie das gemacht wird.

5. Ändern der Einstellungen für Schwerkraft und Szene

Da unser Spiel im Weltraum spielt, müssen wir die Standardgravitation überschreiben. Sie können dies in den Szeneneinstellungen tun. Klicken Sie ganz unten links auf dem Bildschirm auf das Zahnradsymbol. Dadurch werden die Einstellungen im Inspektorfenster geöffnet. Suchen Sie den Abschnitt Physik und ändern Sie den Schwerkraftwert:

Where to disable gravityWhere to disable gravityWhere to disable gravity

Versuchen Sie erneut zu starten, um sicherzustellen, dass es funktioniert, und prüfen Sie, ob das Schiff nur im Weltraum schwimmt.

Ohne sternenklaren Hintergrund ist es kein Platz. Wenn wir uns also in den Szeneneinstellungen befinden, fügen wir eine Skybox hinzu. Sie können einen aus dem Laden holen oder einfach einen online finden, den Sie mögen. Wenn Sie es haben, fügen Sie es im Rendering-Bereich hinzu:

How to add a skyboxHow to add a skyboxHow to add a skybox

Das sollte dem Spiel ein nebulöseres Gefühl geben. Das wäre auch ein guter Zeitpunkt, um Ihre Szene zu bereinigen und alle zuvor erstellten Testobjekte zu löschen.

6. Skripting des Schiffes

Hier können wir endlich Code schreiben. Das Skriptsystem von PlayCanvas ist eine weitere Sache, die Sie kennen sollten, wenn Sie Unity verwendet haben. Sie erstellen Skripts, die an jedes Objekt angehängt werden können, und diese Skripts können Attribute aufweisen, die für jedes Objekt einzeln konfiguriert werden. Skriptattribute sind sehr nützlich und erfüllen zwei Hauptaufgaben:

  1. Modularität. Sie können ein Skript erstellen, das definiert, wie sich ein Feind mit einem Geschwindigkeitsattribut bewegt, und dieses für verschiedene Arten von Feinden mit unterschiedlichen Geschwindigkeiten wiederverwenden.
  2. Zusammenarbeit. Skriptattribute können direkt im Editor angepasst werden, ohne dass Code berührt werden muss. Auf diese Weise können Designer Werte selbst anpassen, ohne den Programmierer stören oder den Code durchsuchen zu müssen.

Erstellen Sie ein Skript

Wechseln Sie zur Registerkarte "Assets" und erstellen Sie ein neues Asset vom Typ Script. Dies ist der Code für das Verhalten des Schiffes. Nennen Sie es also so etwas wie "Fliegen". Doppelklicken Sie darauf, um den Skripteditor zu öffnen.

Das PlayCanvas-Benutzerhandbuch ist eine sehr nützliche Referenz beim Schreiben von Skripten, ebenso wie die API-Referenz. Die automatische Vervollständigung macht es auch sehr einfach herauszufinden, welche Methoden verfügbar sind. Wir beginnen damit, dass wir unser Schiff drehen lassen. Geben Sie dies in die Aktualisierungsfunktion ein:

Innerhalb eines Skripts bezieht sich this auf die Skriptkomponente selbst, während sich this.entity auf das Objekt bezieht, an das das Skript angehängt ist. Auf diese Weise können Sie auf alle an die Entität angehängten Komponenten zugreifen. Hier greifen wir auf den starren Körper zu und üben eine Winkelkraft auf ihn aus.

Stellen Sie sicher, dass Sie Ihr Skript jetzt speichern.

Fügen Sie ein Skript hinzu

Bevor unser Skript zu kompliziert wird, hängen wir es an unser Schiff an, um zu sehen, ob es funktioniert. Fügen Sie dazu einfach eine Skriptkomponente zu Ihrem Schiff hinzu und fügen Sie dann Ihr "fly"-Skript hinzu. Beachten Sie, dass Sie nur eine Skriptkomponente pro Objekt hinzufügen können, aber Sie können mehrere Skripte innerhalb dieser Komponente hinzufügen.

Sobald Sie starten, sollten Sie sehen, wie sich Ihr Schiff dreht!

Fügen Sie ein Attribut hinzu

Wie oben erläutert, machen Skriptattribute unseren Code viel flexibler. Sie können eine hinzufügen, indem Sie diese oben in Ihrem Code direkt nach der ersten Zeile, in der das Skript erstellt wird, eingeben:

In diesem Fall heißt mein Skript Fly. Die einzige erforderliche Option ist type.

Um das Attribut im Editor anzuzeigen, kehren Sie zu Ihrer Skriptkomponente zurück und klicken Sie auf das Symbol mit zwei Pfeilen im Fly-Skript. Dies ist die Schaltfläche zum Analysieren, mit der nach Attributen gesucht und der Editor aktualisiert wird. Ihre Komponente sollte jetzt folgendermaßen aussehen:

Where to find script attributesWhere to find script attributesWhere to find script attributes

Um den Wert des Attributs in Ihrem Skript zu verwenden, führen Sie einfach Folgendes this.[attribute_name]. Wenn wir also wollten, dass dies die Rotationsgeschwindigkeit ist, könnten wir unsere Codezeile ändern in:

Hinweis: Da keine Winkeldämpfung vorhanden ist, dreht sich das Schiff umso schneller, je länger die Kraft ausgeübt wird. Wenn Sie die Kraft entfernen, behält sie ihre Trägheit bei und dreht sich mit der gleichen Geschwindigkeit weiter. Um dies zu ändern, stellen Sie die Winkeldämpfung in der Starrkörperkomponente auf etwas über Null ein.

Bewegung mit Pfeiltasten

Jetzt wollen wir es so schreiben, dass wir das Schiff mit den Pfeiltasten ausrichten können. Ein naiver Ansatz könnte folgendermaßen aussehen:

Können Sie das Problem mit diesem Skript erkennen? Versuch es. Können Sie das Schiff leicht dorthin richten, wo Sie wollen?

Denken Sie darüber nach, bevor Sie weiterlesen. Wie würden Sie das beheben?

Das Problem ist, dass wir eine Kraft in globalen Koordinaten anwenden, ohne zu berücksichtigen, wohin das Schiff zeigt. Wenn das Schiff relativ zur Kamera horizontal ist und wir es beim Drücken von links / rechts um die y-Achse drehen, dreht es sich korrekt. Wenn das Schiff jedoch vertikal ist, ist eine Drehung um die y-Achse jetzt eine Laufrolle.

Das gleiche Problem würde passieren, wenn wir versuchen würden, das Schiff auch vorwärts zu bewegen. Die Richtung, die "vorwärts" ist, hängt davon ab, wohin das Schiff zeigt, und kann nicht absolut sein.

Praktischerweise verfügt jede Entität über drei Richtungsvektoren, die wir verwenden können: nach up, right und forward. Um nach links / rechts zu drehen, drehen wir uns entlang der up Achse und nach oben und unten drehen wir uns entlang der right Achse. Diese up und right sind relativ zur Entität. Eine feste Version würde folgendermaßen aussehen:

Vorwärtsbewegung hinzuzufügen ist die gleiche Idee:

Wenn sich die Bewegung schlecht oder zu rutschig anfühlt, nehmen Sie sich etwas Zeit, um die Geschwindigkeit und die Dämpfungsfaktoren zu optimieren, damit sie dort ankommen, wo sie sich richtig anfühlen.

7. Kamerasteuerung

Mit einer statischen Kamera ist es schwierig, ein sich bewegendes Schiff im Auge zu behalten. Der einfachste Weg, die Kamera einem Objekt folgen zu lassen, besteht darin, die Kamera als untergeordnetes Element dieses Objekts zu platzieren.

Ziehen Sie die Kamera im Hierarchiefenster auf Ihr Schiff. Eine bequeme Möglichkeit, die Ansicht der Kamera anzupassen, besteht darin, in der Szene zur Ansicht dieser Kamera zu wechseln. Klicken Sie oben auf dem Bildschirm auf die Schaltfläche Perspektive. Dadurch erhalten Sie ein Dropdown-Menü mit allen verschiedenen Szenenansichten, die Sie auswählen können. Wählen Sie Kamera, die am weitesten unten sein sollte. Dies ist eine spezielle Ansicht, da alles, was Sie im Editor sehen, das ist, was die Kamera im Spiel sieht.

Stellen Sie nach dem Anpassen der Kameraansicht sicher, dass Sie wieder zur Perspektive oder zu einer anderen Ansicht wechseln, um zu vermeiden, dass die Kamerawinkel versehentlich durcheinander gebracht werden.

Tipp: Wenn Sie ein Objekt in der Hierarchie ausgewählt haben, es aber in Ihrer Szene nicht finden können, drücken Sie F. Dadurch wird die Ansicht auf dieses Objekt fokussiert und vergrößert. Sie können weitere Tastaturkürzel anzeigen, indem Sie auf die Tastaturschaltfläche ganz links auf Ihrem Bildschirm klicken.

Zu diesem Zeitpunkt sollte eine Kamera Ihrem Schiff folgen (so starr es auch sein mag). (Sie können nicht feststellen, ob Sie sich bewegen, wenn sich die Kamera bewegt und sich keine anderen Objekte auf der Welt befinden. Fügen Sie also einige hinzu.)

Kameraskripte

Eine Kamera, die nur auf dem Player steckt, ist nicht sehr interessant. In diesem Beitrag im PlayCanvas-Blog werden verschiedene Arten von Kamerabewegungen untersucht. Das einfachste, das wir implementieren können, ist der Blick auf die Kamera.

Bewegen Sie dazu zuerst die Kamera zurück auf das Stammobjekt.

Erstellen Sie als Nächstes ein neues Skript mit dem Namen lookAt.

Die Aktualisierungsfunktion dieses Skripts sollte folgendermaßen aussehen:

Und es sollte ein Attribut haben:

Hängen Sie nun dieses Skript an das Kameraobjekt an. Drücken Sie die Analyse-Taste und legen Sie das Ziel als Schiffseinheit fest.

Versuchen Sie es zu starten! Wenn alles gut gegangen ist, bleibt Ihre Kamera an Ort und Stelle, orientiert sich aber nur am Schiff.

Sie können die anderen Kameratypen auf die gleiche Weise implementieren. Die im Blog-Beitrag erwähnte Trailing-Follow-Kamera sieht im Idealfall am schönsten aus, aber ich fand sie zu nervös, wenn die Framerate ein wenig sinkt. Für die endgültige Demo habe ich mich für eine Kamera entschieden, die als Kind angebracht war zum Schiff, aber geschrieben, um sich zu bewegen und zu drehen, wie es das Schiff tat.

Abschluss

Mach dir keine Sorgen, wenn sich etwas davon etwas überwältigend anfühlt. PlayCanvas ist eine komplexe Engine mit vielen Schnickschnack. Es gibt viel zu entdecken, und das Handbuch in der Nähe zu halten, ist eine gute Möglichkeit, sich zu orientieren. Ein weiterer guter Weg, um zu lernen, besteht darin, öffentliche Projekte zu finden und zu sehen, wie Dinge gemacht werden.

Teil 2 beginnt mit der Erstellung eines Aufzählungssystems und dem Hinzufügen einiger Asteroiden, auf die geschossen werden soll. Zum Abschluss fügen wir einen FPS-Zähler und einen Text im Spiel hinzu. Wenn Sie irgendwelche Anfragen oder Vorschläge haben oder wenn etwas unklar ist, lassen Sie es mich bitte in den Kommentaren wissen!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.