Erstellen Sie ein 2D-Videospiel mit Unity

In diesem Instructable zeige ich Ihnen, wie Sie ein wirklich einfaches 2D-Videospiel erstellen. Es ist ein Spiel im Stil eines unendlichen Läufers wie "Fly with Me" oder "DoodleJump".

Probieren Sie es hier aus!

Ich habe einen Reißverschluss der Exe des Spiels bereitgestellt, den ich Ihnen zeigen werde, wie man es macht. Laden Sie es herunter und probieren Sie es aus.

Es ist in Bezug auf ein Spiel völlig unvollständig, bot mir jedoch eine fantastische Gelegenheit, ein wenig C # -Skripting zu lernen und das Wissen über Unity zu festigen, das ich seit dem Herunterladen vor zwei Wochen erworben habe. Zum Teilen entschied ich mich, Instructables eigenen liebenswerten Roboter als Hauptfigur zu verwenden. Ich habe mich für einen simplen Look entschieden, um den alten Cartoons zu huldigen, die im gleichen Stil gemacht wurden. Ich habe es immer geliebt, wenn der Bleistift mit dem Cartoon interagierte.

Ich muss sagen, dass Unity ein unglaubliches Werkzeug ist. Im Lernbereich der Unity-Website finden Sie eine Fülle von Informationen. Ich empfehle dringend, einen Blick darauf zu werfen, sobald Sie gesehen haben, wie einfach es ist, 2D-Spiele zu erstellen.

Alles, was ich Ihnen hier zeige, habe ich von der Unity-Website gelernt. Es gibt einige großartige Tutorials und Video-Schulungen.

Ich bin neu in der Einheit, so wie Sie es mögen oder nicht, also dient dies nur dazu, meine Liebe zur Umwelt und meine bisherigen Lernerfahrungen zu teilen.

Ich werde die Sprite-Assets für jeden Schritt bereitstellen, damit Sie mitmachen und das Spiel selbst erstellen können. Ich empfehle, meinen Code nicht so zu verwenden, wie er ist, sondern zu folgen und eine eigene Version derselben Skripte zu schreiben.

Ich habe wenig bis gar keine Erfahrung mit dem Programmieren in C und habe dennoch ziemlich schnell Skripte in C # geschrieben. Es erinnert mich sehr an Arduino und Processing, mit denen ich vertraut bin.

Selbst wenn Sie mit der Programmierung nicht vertraut sind, können Sie dies meiner Meinung nach auch tun. Folgen Sie zumindest meinem Abenteuer, um zu sehen, wie einfach es war.

Schritt 1: Laden Sie die kostenlose Unity-Software herunter

Bascillay Unity ist so freundlich, dass diejenigen von uns, die sich wünschen, wir könnten in die Spieleentwicklung einsteigen, versuchen, es kostenlos zu lernen, solange wir mit Produkten, die wir mit ihrer Software herstellen, kein Geld verdienen. Genial. Vielen Dank, Unity, für die Ermutigung und die Freiheit, es auszuprobieren, und für die unglaubliche Software.

Wenn Sie mitmachen möchten, müssen Sie auf der Unity-Homepage die kostenlose Version der Software herunterladen.
Sie müssen auch ein Unity-Login erstellen. Befolgen Sie einfach die Schritte nach der Installation.

Schritt 2: Öffnen Sie Unity

Wenn Sie Unity zum ersten Mal öffnen, wird ein Dialogfeld zum Erstellen eines neuen Projekts angezeigt. Suchen Sie nach einem geeigneten Ort und geben Sie Ihrem Projekt einen Namen, beispielsweise "Iblejump".
Es ist sehr wichtig, die 2D-Auswahl am unteren Rand des Formulars zu überprüfen, in der "Setup Defaults For" steht.

Sie müssen keines der Pakete für das Spiel importieren, das wir erstellen werden. Ich würde raten, sich nicht mit ihnen zu beschäftigen, es sei denn, Sie brauchen sie für Ihr Spiel. Es macht keinen Sinn, zusätzliche Größe in unsere Build-Dateien aufzunehmen.

Wenn Sie die richtige Auswahl getroffen haben, klicken Sie auf "Erstellen".

Jetzt öffnet der Unity Editor unser neues leeres Projekt und präsentiert uns ein schönes Willkommens-Popup. Lassen Sie uns das jetzt schließen und die Benutzeroberfläche ein wenig erkunden.

Der Arbeitsbereich ist in vier verschiedene Abschnitte unterteilt, die Sie entsprechend Ihrem Workflow organisieren können.

Das Hierarchiefenster auf der linken Seite zeigt Ihnen alle Objekte, die sich derzeit in Ihrer Szene befinden. Im Szenenfenster werden wir unsere Spielobjekte bauen und platzieren.

Unten haben wir einen weiteren Arbeitsbereich, in dem Sie verschiedene Registerkarten andocken können. Die meisten Registerkarten können in einem Bereich angedockt werden, den Sie für bequem halten. So habe ich meinen Bereich eingerichtet, Sie könnten die Dinge etwas anders machen. Das Wichtigste ist, dass Sie über das Pulldown-Menü des Fensters auf alle diese Fenster zugreifen und sie nach Bedarf hinzufügen oder entfernen können. Sie brauchen sich keine Sorgen zu machen, wenn Ihr Fenster nicht identisch aussieht. Ich werde Ihnen jeden Bereich, den wir im Laufe der Zeit verwenden werden, genauer zeigen.

Klicken Sie zunächst einfach auf Ihre "Hauptkamera", damit Sie rechts im Inspektor- und Szenenfenster sehen können, was rechts passiert.
Beachten Sie, dass Sie jetzt eine Vorschau Ihrer leeren Szene in der unteren Ecke des Szenenfensters haben und alle Komponenten und Eigenschaftswerte für die Kamera angezeigt werden.

Schritt 3: Erstellen Sie Ihr erstes Spielobjekt


Zuerst benötigen Sie den Sprites-Ordner, den ich als komprimierte Datei hinzugefügt habe. Extrahieren Sie den Ordner an einen Ort, an dem Sie ihn finden können.

Ziehen Sie in Unity unten im Projektarbeitsbereich auf der Registerkarte Projekt bei ausgewähltem Assets den entpackten Ordner in den grauen Bereich rechts. Alle Sprites, die Sie zum Duplizieren meines Projekts benötigen, befinden sich in diesem Ordner.

Navigieren Sie zum neuen Sprites-Ordner und suchen Sie ein Sprite mit dem Namen "navbar". Ziehen Sie das nach oben in das Szenenfenster. Lassen Sie es irgendwo in der Nähe des unteren Randes Ihrer Szene fallen, wie ich es auf dem Bild getan habe.

Wenn Sie nach dem Platzieren in Ihrem Hierarchiefenster auf Hauptkamera klicken, können Sie bereits sehen, wie sie in Ihrem Spiel aussehen wird.

Wir müssen einige Komponenten hinzufügen, beginnen wir mit einem Box-Colllider, um unsere Box solide zu machen.

Wenn Sie Ihr neues Objekt ausgewählt haben, klicken Sie im Inspektor auf "Komponente hinzufügen" und fügen Sie dann einen Box Collider 2D hinzu, der sich unter Physics2D befindet

Gehen Sie voran und fügen Sie Ihrem Objekt einen zweiten 2D-Box-Collider hinzu, mit dem wir verhindern, dass der Spieler zu Beginn des Spiels versehentlich von der Seite der Navigationsleiste fällt.

Da ich wollte, dass Robot ungefähr dort anfängt, wo er sich auf der Instructables-Webseite befindet, habe ich den Hauptcollider ein wenig verkleinert. Und der zweite Collider sitzt tatsächlich im Freien, was verhindert, dass unser Spieler zu Beginn des Spiels von der linken Seite rennt.

Richten Sie Ihre Box-Collider so ein, dass sie mit den Größen im Bild übereinstimmen. Setzen Sie auch die x- und y-Größe des Transformationsparameters auf 1, 5. Beobachten Sie die Änderungen im Szenenfenster.

Anhänge

  • Sprites.zip herunterladen

Schritt 4: Fügen Sie einen Player hinzu

Jetzt, da wir eine Plattform haben, auf der unser Spieler stehen kann, brauchen wir einen Spieler.

Klicken Sie in der oberen Menüleiste auf GameObject und wählen Sie "Leer erstellen".

Wählen Sie Ihr neues leeres Spielobjekt im Hierarchiefenster aus und ändern Sie im Inspektor den Namen in "Spieler".
Fügen Sie als Nächstes eine Sprite-Renderer-Komponente hinzu, die Sie unter Rendern finden.

Suchen Sie im Ordner "Project Assets / Sprites" das Idle_Sprite, klicken Sie auf das kleine Dreieck daneben und ziehen Sie eines der Bilder in den Sprite-Wert der Sprite-Renderer-Komponente.

Wir brauchen noch ein paar Komponenten für unseren Player. Fügen Sie zuerst einen Rigidbody2D aus den Physics2D-Optionen hinzu.

Wenn Sie jetzt die Wiedergabetaste drücken, fällt unser Player durch die Navigationsleiste. Probieren Sie es weiter aus.

Wir werden das beheben, indem wir ein paar Collider hinzufügen. Etwas intuitiv entgegengesetzt, werden wir unseren Füßen und unserem Körper einen Kreiskollider und unserem Kopf einen Kastenkollider hinzufügen.

Wenn wir jetzt die Wiedergabetaste drücken, rollt unser kleiner Roboter wie jeder Roboter mit Kreisboden auf den Rücken. Korrigieren Sie dies, indem Sie das Kontrollkästchen Festwinkel aktivieren. Wenn Sie dann die Wiedergabetaste drücken, sollte Ihr Roboter auf die Navigationsleiste fallen und dort gut ruhen.

Er ist ein bisschen groß für meinen Geschmack, also habe ich seine Größe in Transformation auf .75 x und .75 y geändert.

Dann spielte ich mit der Positionierung der Navigationsleiste und des Roboters, bis ich glücklich war.

Jetzt ist ein guter Zeitpunkt, um Ihre Szene zu speichern, ihr einen Namen zu geben, der sich für Sie gut anfühlt, und sie zu speichern.

Schritt 5: Fügen Sie dem Roboter etwas Leben hinzu

Okay, jetzt, da wir das Player-Objekt installiert haben, können wir damit beginnen, einige Animationen und Funktionen hinzuzufügen.

Fügen Sie bei ausgewähltem Player-Objekt eine Animator-Komponente hinzu. Komponente hinzufügen -> Verschiedenes -> Animator.
Deaktivieren Sie "Root-Bewegung anwenden" und aktivieren Sie das Kontrollkästchen "Physik animieren".

Öffnen Sie nun Ihr Animator-Fenster. Sie können dies über das Pulldown-Fenster "Fenster" tun, wenn es im Projektarbeitsbereich noch nicht geöffnet ist. Ich mag es, meine unten anzudocken.

Öffnen Sie das Animationsfenster, während der Player noch in der Hierarchie ausgewählt ist. Es kann auch im Pulldown-Fenster gefunden werden. Ich mag es, meine im selben Bereich wie meine Szene und meine Spielfenster anzudocken.

Klicken Sie im Animationsfenster auf die kleinen Dreiecke neben "Beispiel", um einen neuen Clip zu erstellen.

Öffnen Sie unten Ihren Asset- / Sprites-Ordner und öffnen Sie das inaktive Sprite erneut. Wählen Sie bei gedrückter Umschalttaste die gesamte Bildserie aus und ziehen Sie sie in das Animationsfenster.

Setzen Sie die Stichprobengröße auf 10 zurück, da der Animator (ich) für Frames billig war.

Schauen Sie sich nun Ihren Animator an. Es sollten automatisch zwei Status hinzugefügt werden, ein beliebiger Status und ein neuer Standardstatus, Leerlauf. Die orange Farbe zeigt an, dass dies der Standardanimationsstatus ist.

Wenn Sie diese Schritte korrekt ausgeführt haben, sollten Sie jetzt einen animierten Roboter haben, wenn Sie die Wiedergabetaste drücken.

Erstellen Sie eine weitere Animation und nennen Sie sie Laufwerk. Verwenden Sie das Sprite-Blatt Drive. Verringern Sie erneut die Bildrate. Ich setze es jetzt auf 20. Sie können es später nach Ihren Wünschen tweek.

Im Animator-Fenster sehen Sie, dass automatisch ein zweiter Status erstellt wurde. Groß! Fügen wir unserem Animator einen float-Parameter mit dem Namen "Speed" hinzu, bevor wir die Übergänge erstellen.

Klicken Sie nun mit der rechten Maustaste auf den Status "Leerlauf" und wählen Sie "Übergang durchführen". Ziehen Sie dann in den Laufwerksstatus. Dies sollte eine kleine Pfeilleiste ergeben. Wählen Sie das Dreieck in der Mitte der Übergangsleiste aus. Ändern Sie die Übergangsbedingung im Inspektor so, dass die Geschwindigkeit größer als 0, 01 ist. Erstellen Sie nun einen Übergang vom Laufwerk zurück in den Leerlauf unter der Bedingung, dass die Geschwindigkeit unter 0, 01 liegt.

Als nächstes müssen wir ein Controller-Skript für Robot erstellen.

Schritt 6: Das Robot Controller-Skript

Jetzt, da wir einen Player mit einigen Animationszuständen haben, benötigen wir ein Skript, um den Charakter zu steuern. Wir werden unserem Projekt ein einfaches C # -Skript hinzufügen, um unseren Player zu steuern.

Erstellen Sie im Projektfenster einen neuen Ordner und nennen Sie ihn Skripte. Öffnen Sie diesen Ordner und erstellen Sie ein neues C # -Skript. Nennen Sie es RobotController.

Doppelklicken Sie auf das Skript, um MonoDevelop zu starten. Es kann einen Moment dauern, sich zu öffnen und geduldig zu sein.
Geben Sie zunächst den folgenden Code ein
 mit UnityEngine; using System.Collections; public class RobotController: MonoBehaviour {// Dies ist unsere maximale Geschwindigkeit, da wir immer mit 1 öffentlichen float multiplizieren werden. maxSpeed ​​= 2f; // ein boolescher Wert, der angibt, ob wir nach links schauen oder nicht bool FacingLeft = true; // ein Wert zur Darstellung unseres Animators Animator anim; // Verwenden Sie dies für die Initialisierung void Start () {// setze anim auf unseren animator anim = GetComponent (); } // Update wird einmal pro Frame aufgerufen void FixedUpdate () {float move = Input.GetAxis ("Horizontal"); // Gibt uns eine, wenn wir uns über die Pfeiltasten bewegen // bewege unseren Spieler Rigidbody Rigidbody2D.velocity = neuer Vektor3 (move * maxSpeed, Rigidbody2D.velocity.y); // setze unsere Geschwindigkeit anim.SetFloat ("Speed", Mathf.Abs (move)); // wenn wir uns nach links bewegen, aber nicht nach links zeigen, und umgekehrt, wenn (0 bewegen && nach links zeigen) {Flip (); }} // bei Bedarf umdrehen void Flip () {FacingLeft =! FacingLeft; Vector3 theScale = transform.localScale; theScale.x * = -1; transform.localScale = theScale; }} 

Speichern Sie das Skript und kehren Sie zum Unity-Fenster zurück. Ziehen Sie das neue RobotController-Skript aus der Projektarbeit auf das Player-Objekt im Hierarchiefenster. Drücken Sie die Wiedergabetaste, um das Spiel auszuführen, und Sie sollten in der Lage sein, den Roboter mit der linken und rechten Pfeiltaste zu steuern. Wenn Sie das Animator-Fenster unter dem Spiel öffnen, sollte die Animation den Status von Laufwerk zu Leerlauf ändern, je nachdem, ob sich der Roboter bewegt oder nicht.

Schritt 7: Springen - Player Controller-Skript wird fortgesetzt

Nur ein paar Schritte zu implementieren, um unseren Spieler zum Springen zu bringen.
Wir benötigen einen Animationsstatus zum Springen und Fallen sowie etwas mehr Code, um die Dinge zu steuern.

Beginnen wir mit dem Hinzufügen von zwei weiteren Parametern zu unserem Player Animator. Fügen Sie einen Float namens "vSpeed" und einen Bool namens "Ground" hinzu. Wir werden vSpeed ​​verwenden, um unsere vertikale Geschwindigkeit zu halten, und Ground wird vorhanden sein, damit wir erkennen können, wann sich unser Charakter auf dem Boden befindet, was einen realistischeren Sprung ermöglicht. (Durch die Luft zu springen, ohne den Boden zu berühren, ist eher wie Fliegen).

Erstellen Sie im Szenenfenster ein neues leeres Spielobjekt. Nennen Sie es Groundcheck und fügen Sie einen 2D Circle Collider hinzu.
Ziehen Sie den neuen Collider in das Player-Objekt im Hierarchiefenster. Ändern Sie den Radius des Colliders des Groundchecks auf 0, 1 und die Position der y-Transformation auf -1. Dadurch wird ein kleiner Kreis direkt unter die Füße des Roboters gelegt. Kennzeichnen Sie es auch als Player und fügen Sie es in die Player-Ebene ein.

Jetzt aktualisieren wir unseren Scrip, um unsere neuen Parameter zu verwenden, und setzen den Code ein, damit der Roboter springt, wenn die Leertaste gedrückt wird.

Aktualisieren Sie Ihr RobotController-Skript wie folgt.

 mit UnityEngine; using System.Collections; public class RobotController: MonoBehaviour {// Dies ist unsere maximale Geschwindigkeit, da wir immer mit 1 öffentlichen float multiplizieren werden. maxSpeed ​​= 2f; // ein boolescher Wert, der angibt, ob wir nach links schauen oder nicht bool FacingLeft = true; // ein Wert zur Darstellung unseres Animators Animator anim; // um den Boden zu überprüfen und eine Sprungkraft zu haben, können wir sie im Editor ändern. bool grounded = false; public Transform groundCheck; float groundRadius = 0.2f; public LayerMask whatIsGround; public float jumpForce = 700f; // Verwenden Sie dies für die Initialisierung void Start () {// setze anim auf unseren animator anim = GetComponent (); } void FixedUpdate () {// setze unser vSpeed ​​anim.SetFloat ("vSpeed", Rigidbody2D.velocity.y); // setze unseren geerdeten Bool geerdet = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround); // setze den Boden in unserem Animator so, dass er mit dem geerdeten anim übereinstimmt.SetBool ("Ground", geerdet); float move = Input.GetAxis ("Horizontal"); // Gibt uns eine an, wenn wir uns über die Pfeiltasten bewegen. // setze unsere Geschwindigkeit anim.SetFloat ("Speed", Mathf.Abs (move)); // wenn wir uns nach links bewegen, aber nicht nach links zeigen, und umgekehrt, wenn (0 bewegen && nach links zeigen) {Flip (); }} void Update () {// Wenn wir am Boden sind und die Leertaste gedrückt wurde, ändern Sie unseren Grundzustand und fügen Sie eine Aufwärtskraft hinzu, wenn (geerdet && Input.GetKeyDown (KeyCode.Space)) {anim.SetBool (" Grund ", falsch); Rigidbody2D.AddForce (neuer Vector2 (0, jumpForce)); }} // bei Bedarf umdrehen void Flip () {FacingLeft =! FacingLeft; Vector3 theScale = transform.localScale; theScale.x * = -1; transform.localScale = theScale; }} 
Kehren Sie erneut zum Robot Controller-Skript im Inspektor zurück und stellen Sie sicher, dass What Is Ground auf alles außer Player eingestellt ist. Wählen Sie alles aus, öffnen Sie den Dialog erneut und deaktivieren Sie Player. (Danke c0)

Im nächsten Schritt erstellen wir einen Animator-Mischbaum für Springen und Fallen.



Schritt 8: Erstellen Sie eine Mischbaumanimation

Lassen Sie uns einen Mischbaum erstellen, um unsere verschiedenen Fall- / Sprungzustände zu halten. Wir könnten für beide getrennte Animationen erstellen, aber dies ist effizienter und erfordert weniger Platz für unser kleines Spiel. Außerdem ist es cool. (Habe ich erwähnt, dass Unity großartiges Lernmaterial enthält?)

Kehren Sie zu Ihrem Player-Animationsfenster zurück. Erstellen Sie bei ausgewähltem Player-Objekt 5 neue Animationsclips und nennen Sie sie jump1 -jump5.

Ziehen Sie für jeden Clip der Reihe nach einen Frame aus dem Jumpsheet. dh Sprungblatt erstes Bild zu jump1 und so weiter.

Öffnen Sie das Animator-Fenster erneut, klicken Sie mit der rechten Maustaste, erstellen Sie ... neu aus einem langweiligen Baum. Nennen Sie es JumpFall.
Doppelklicken Sie auf den neuen JumpFall-Status und öffnen Sie den Mischbaum im Inspektor.

Klicken Sie fünfmal auf das kleine Pluszeichen und das Feld Bewegung hinzufügen.

Ändern Sie den Schwellenwert in den Bereich von -13 bis 10 und ändern Sie den Schwellenwertparameter in vSpeed.

Wenn Sie mit der Animation nicht zufrieden sind, können Sie die Werte anpassen, indem Sie die Option Schwellenwert automatisieren deaktivieren. Für dieses einfache Spiel scheint es gut genug zu sein. (Animator wurde wieder faul)

Kehren Sie nun zum Animator-Fenster zurück. Der Mischbaum wird geöffnet. Klicken Sie oben links auf Basisebene, um zu unseren Basiszuständen zurückzukehren.

Sie sollten jetzt auch alle automatisch generierten Sprungzustände Jump1 bis Jump5 löschen. (Danke c0)

Erstellen Sie einen Übergang vom Status "Beliebig" zum Status "JumpFall" und dann einen Übergang von "JumpFall" in den Leerlauf. Dies bedeutet, dass wir aus jedem Zustand in die Sprunganimation gehen können, dh wenn wir fallen.

Stellen Sie den Übergang von Any State zu JumpFall so ein, dass Ground falsch ist, und den Übergang von JumpFall zu Idle, wenn Ground true ist.

Wenn Sie fertig sind, führen Sie das Spiel erneut aus und Sie sollten in der Lage sein, Robot mit der Leertaste springen und animieren zu lassen. Die Animation ist aufgrund fehlender Frames etwas ruckelig. Sie können mit dem Bewegungsfeld spielen, um es ein wenig zu ändern, wenn Sie möchten.

Schritt 9: Zerstörer

In den kommenden Schritten werden wir Objekte erstellen, die mehr Objekte hervorbringen, und ohne Aufräumarbeiten wird unser Spiel schnell ins Stocken geraten. In diesem Sinne kümmern wir uns um das Aufräumen, indem wir einige Objekte vom Bildschirm entfernen, um Objekte zu zerstören, wenn sie den Spielbereich verlassen.

Unser Spiel wird ein Side-Scroller sein, also platzieren wir einen unter der Szene, um fallende Objekte (wie den Player) zu fangen, und einen Offscreen links, um alles zu bereinigen, was bereits gescrollt hat.

Beginnen Sie mit der Erstellung eines Quad. Klicken Sie auf GameObject -. Create other -> Quad. Ändern Sie die Transformationsposition in x auf -25 und y auf 0. Stellen Sie dann die Transformationsskala so ein, dass X 1 und y 25 ist.

Geben Sie dem Quad-Objekt einen coolen Namen, z. B. "Zerstörer". Entfernen Sie die Mesh Collider-Komponente und fügen Sie einen Box Collider 2D hinzu. Aktivieren Sie diesmal jedoch das Kontrollkästchen "Is Trigger".

Fügen Sie auch einen Starrkörper 2D hinzu, setzen Sie jedoch die Schwerkraftskala im Inspektorfenster auf Null.

Öffnen Sie im Arbeitsbereich Projekt Ihren Skriptordner, fügen Sie ein neues C # -Skript hinzu und nennen Sie es Zerstörer. Doppelklicken Sie darauf und öffnen Sie Monodevelop.

Geben Sie den folgenden Code in das neue Skript ein und speichern Sie ihn.

 mit UnityEngine; using System.Collections; public class Destroyer: MonoBehaviour {// Verwenden Sie diese Option für die Initialisierung void Start () {} void OnTriggerEnter2D (Collider2D other) {// wenn das Objekt, das das Ereignis ausgelöst hat, als player markiert ist if (other.tag == "Player") {Debug .Brechen (); Rückkehr; } if (other.gameObject.transform.parent) {Destroy (other.gameObject.transform.parent.gameObject); } else {Destroy (other.gameObject); }}} 

Ziehen Sie das Destroy-Skript auf das Destroyer-Objekt.
Klicken Sie nun mit der rechten Maustaste auf das Zerstörerobjekt im Hierarchiefenster und wählen Sie Duplizieren. Ändern Sie die Transformation des neuen Zerstörers auf Position x = 0, y = -15 und die Skala auf x = 50 und y = 1.

Wenn Sie Ihr Spiel jetzt ausführen und die Plattform verlassen (denken Sie daran, dass sich links eine unsichtbare Barriere befindet), sollte das Spiel unterbrochen und Sie zum Editor zurückgebracht werden.

Wir werden das in einem späteren Schritt beheben.

Das Letzte, was wir mit unseren Zerstörerobjekten tun müssen, ist, sie zu Kindern vom Kameraobjekt zu machen, da wir wollen, dass sie mitmachen, oder sie werden überhaupt nicht viel tun. Wählen Sie sie dazu aus und ziehen Sie sie in das Hauptkameraobjekt.

Schritt 10: Die Hand

Die Hand, die die Linie zeichnet, ist ziemlich einfach. Lass es uns schaffen.

Ziehen Sie zuerst das Hand-Sprite in Ihr Szenenfenster und positionieren Sie es mithilfe Ihres Kameraobjekts, um zu sehen, wo in der Szene es sich befindet.

Transformiere die Skala so, dass x = 2 und y = 2 ist.

Erstellen Sie ein neues leeres Spielobjekt und nennen Sie es Penciltip. Verwenden Sie den Szeneneditor, um ihn genau an der Spitze des Stifts zu positionieren.

Geben Sie ihm ein kleines Etikett, damit Sie es bei Bedarf leicht finden können. Klicken Sie dazu im Inspektor auf das kleine Würfelsymbol.

Ziehen Sie nun Penciltip in das Handobjekt, um sie miteinander zu koppeln. Ziehen Sie schließlich das Handobjekt in die Hauptkamera im Hierarchiefenster.

Es macht noch nichts, aber die Teile sind vorhanden. Lassen Sie uns einige andere Bits einrichten, die wir brauchen werden.

Schritt 11: Bleistiftlinie

Ein Fertighaus ist wie eine Aufnahme eines Objekts. Sie machen das Objekt zu einem Fertighaus und können es nach Belieben in Ihrer Szene verwenden.
Wir werden sie für den Rest des Spiels verwenden, da das Level programmgesteuert generiert wird.

Erstellen Sie zunächst einen neuen Ordner im Ordner "Assets" und nennen Sie ihn "Prefabs". Erstellen Sie ein neues Fertighaus, indem Sie mit der rechten Maustaste klicken und Fertighaus auswählen. Nennen Sie die neue vorgefertigte Pencilline.

Suchen Sie das Sprite mit dem Namen pencilline im Sprite-Ordner und ziehen Sie es in das neue gameObject im Hierarchiefenster.

Fügen Sie einen Box Collider 2D hinzu und passen Sie die Größe an das Pencilline-Bild an.

Öffnen Sie Ihren Prefab-Ordner und ziehen Sie das GameObject auf das Prefab. Das Symbol ändert sich entsprechend dem neuen Fertighaus.

Löschen Sie das Spielobjekt, sobald Sie es in Ihr Fertighaus gelegt haben. Das Original brauchen wir nicht mehr.

Fügen Sie nun ein neues C # -Skript zu Ihrem Skriptordner hinzu und nennen Sie es pencilline. Öffnen Sie es und geben Sie das folgende Skript ein.

 mit UnityEngine; using System.Collections; public class pencilline: MonoBehaviour {// um auf unser vorgefertigtes pencilline public GameObject obj zu verweisen; float lastx = 0f; // Verwenden Sie dies für die Initialisierung void Start () {} // Update wird einmal pro Frame aufgerufen void Update () {// Wenn wir weit genug gegangen sind, erstellen Sie eine neue Pencilline if (transform.position.x> (lastx + 0.02f) )) {Instantiate (obj, transform.position, Quaternion.identity); lastx = transform.position.x; lastx = transform.position.x; }}} 
Ziehen Sie das Skript auf das Penciltip-Objekt in Hand. Öffnen Sie dann bei noch ausgewähltem Penciltip Ihren Fertighausordner und ziehen Sie Ihr Pencilline-Fertighaus auf den neuen Parameter obj auf Ihrem Skript-Controller.

Unsere Kamera hat noch kein Steuerungsskript, aber wenn Sie das Spiel ausführen, sollten Sie ein Pencilline-Objekt sehen, das an der Spitze des Stifts generiert wird. Sie können es sehen, weil der Hintergrund blau ist und die Linie für einen weißen Hintergrund gemacht wurde.

Schritt 12: Kamera rollen!

Lassen Sie uns die Kamera ins Rollen bringen.
Das Kameraobjekt ist vollständig erstellt, daher benötigen wir wirklich nur ein Controller-Skript.

Nur eine kleine Änderung, bevor wir das Skript schreiben. Die Hintergrundfarbe. Es muss weiß sein, die Linie sieht mürrisch aus, wenn nicht, ganz zu schweigen von den Post-It-Notes, falls Sie sich für die Verwendung entscheiden.

Wählen Sie einfach die Hauptkamera im Hierarchiefenster aus und klicken Sie im Inspektor auf das Farbfeld. Eine Farbauswahl wird angezeigt. Wählen Sie Weiß.

Okay, neues Skript, ich habe mein Pancam genannt. Erstellen Sie eine in Ihrem Skriptordner, öffnen Sie sie in Monodevelop und geben Sie Folgendes ein.

 mit UnityEngine; using System.Collections; Pancam der öffentlichen Klasse: MonoBehaviour {float ydir = 0f; öffentlicher GameObject-Spieler; // Verwenden Sie dies für die Initialisierung. // Update wird einmal pro Frame aufgerufen. Void Update () {// Überprüfen Sie, ob der Player vorhanden ist, und fahren Sie dann fort. Andernfalls erhalten wir eine Fehlermeldung, wenn der Spieler stirbt, wenn (Spieler) {// wenn der Spieler die x-Position von -1 überschritten hat, dann beginnen Sie, die Kamera mit einer zufälligen Y-Position vorwärts zu bewegen, wenn (player.transform.position.x> -1) {float randy = 0f; randy = Random.Range (0f, 100f); if (randy 20 & randy 80) {ydir = 0f; } transform.position = neuer Vektor3 (transform.position.x + 0.03f, transform.position.y + ydir, -10); }}}} 
Jetzt müssen Sie nur noch das Skript hierarchisch auf Ihre Hauptkamera anwenden und dann das Player-Objekt auf den Skriptparameter ziehen.

Versuchen Sie das Spiel noch einmal, Sie haben gerade einen unendlichen Läufer gemacht !!! Naja fast. Wir brauchen noch ein paar Dinge, aber es kommt jetzt näher.

Meine Hand ist nur ein bisschen höher als ich es will, aber ich werde sie im Szeneneditor nur ein wenig nach unten schieben.

Schritt 13: Fügen Sie eine Punktzahl hinzu

Fügen Sie ein neues GUIText-Objekt aus dem GameObject-Menü hinzu und nennen Sie es Score.

Ändern Sie den Textwert im Inspektor in Punktzahl und die Farbe in Schwarz.
Öffne das Spielfenster. Wenn es nicht verfügbar ist, findest du es oben im Pulldown-Fenster.

Passen Sie die Transformationsposition an. Sie funktioniert aus irgendeinem Grund seltsam für GUI-Objekte. Stellen Sie sich das als Prozent des sichtbaren Bildschirms vor, wobei 0, 5 50% und 0, 0 die linke untere Ecke ist.
X = 0, 3 und y = 0, 97 platzieren es ganz oben in der linken Ecke.

Jetzt müssen wir unserem Kameraskript etwas mehr Code hinzufügen. Aktualisieren Sie das Skript mit diesen Änderungen.
 mit UnityEngine; using System.Collections; Pancam der öffentlichen Klasse: MonoBehaviour {float ydir = 0f; öffentlicher GameObject-Spieler; // für unser GUIText-Objekt und unsere Punktzahl public GUIElement gui; float playerScore = 0; // Diese Funktion aktualisiert unser Guitext-Objekt void OnGUI () {gui.guiText.text = "Score:" + ((int) (playerScore * 10)). ToString (); } // Dies ist eine generische Funktion, die wir aufrufen können, um die Punktzahl um einen Betrag zu erhöhen. public void erhöhenScore (int Betrag) {playerScore + = Betrag; } // Update wird einmal pro Frame aufgerufen void Update () {// überprüfe, ob der Player existiert und fahre dann fort. Andernfalls erhalten wir eine Fehlermeldung, wenn der Spieler stirbt, wenn (Spieler) {// wenn der Spieler die x-Position von -1 überschritten hat, dann beginnen Sie, die Kamera mit einer zufälligen Y-Position vorwärts zu bewegen, wenn (player.transform.position.x> -1) {/ / aktualisiere unsere Punktzahl bei jedem Tick der Uhr playerScore + = Time.deltaTime; float randy = 0f; randy = Random.Range (0f, 100f); if (randy 20 & randy 80) {ydir = 0f; } transform.position = neuer Vektor3 (transform.position.x + 0.03f, transform.position.y + ydir, -10); }}}} 

Speichern Sie das Pancam-Skript und kehren Sie zur Einheit zurück.

Wählen Sie die Hauptkamera erneut aus, und Sie werden sehen, dass ein neuer Parameter in der Skriptkomponente im Inspektor verfügbar ist. Ziehen Sie das Score GuiText-Objekt auf den Gui-Parameter.

Versuchen Sie es erneut. Sie sollten jetzt eine höhere Punktzahl haben.

Schritt 14: Bomben weg

Es gibt noch keine wirkliche Gefahr für unseren Helden. Wir werden das beheben. Lassen wir einige Comic-Bomben vom Himmel fallen und die Linie brechen.

Erstellen Sie ein neues leeres Spielobjekt und nennen Sie es Bombe. Suchen Sie im Sprite-Ordner das Bomben-Sprite, öffnen Sie es und fügen Sie den ersten Frame zu Bomb hinzu. Stellen Sie die Transformationsskala auf X = 0, 5, Y = 0, 5 ein.

Fügen Sie einen Kreiscollider 2D hinzu und ändern Sie dessen Maßstab und Position, um gut auszusehen. Wir wollen, dass die Bomben fallen, also brauchen wir auch einen Starrkörper 2D, fügen Sie diese Komponente ebenfalls hinzu.

Wir brauchen auch einen Animator, um unsere Bombenzustände zu kontrollieren, also füge das auch hinzu. Deaktivieren Sie "Root-Bewegung anwenden" und aktivieren Sie das Kontrollkästchen "Physik animieren" im Inspektor.

Öffnen Sie das Animationsfenster und stellen Sie sicher, dass Bomb_0 der Bombe noch ausgewählt ist. Fügen Sie eine Animation hinzu und nennen Sie sie Bombidle. Dadurch wird ein neuer Standardstatus in unserem Animator erstellt. Verwenden Sie die ersten 3 Frames des Sprite-Blatts (Drag & Drop) und reduzieren Sie dann die Framerate, indem Sie Sample auf etwa 20 senken.

Erstellen Sie einen weiteren neuen Clip, nennen Sie diesen einen Bombexplode und verwenden Sie die verbleibenden Frames des Bomben-Sprite-Blattes. Reduzieren Sie die Framerate erneut auf etwa 20.

Erstellen Sie unten im Animator-Fenster einen Übergang von Bombidle zu Bombexplode, lassen Sie die Bedingung für die Beendigungszeit und ändern Sie den Wert auf 5, 00. Dies bedeutet, dass unsere Bombe 5 Sekunden lang im Leerlauf bleibt (Sicherung leuchtet), bevor der Zustand auf Explosion umgeschaltet wird.

Erstellen Sie eine dritte Animation im Animationsfenster, nennen Sie sie Bombdead und lassen Sie sie leer. Erstellen Sie im Animator einen Übergang von Bombexplode zu Bombdead.

Erstellen Sie ein neues Skript namens bomb in Ihrem Skriptordner.

 mit UnityEngine; using System.Collections; öffentliche Bombenbombe: MonoBehaviour {// ein Halter für unseren Animator Animator anim; // ein öffentlicher Float für den Explosionsradius public float explodeRadius = 1f; // Verwenden Sie dies für die Initialisierung void Start () {anim = GetComponent (); } // Update wird einmal pro Frame aufgerufen void Update () {// wenn wir mit dem Explodieren fertig sind if (anim.GetCurrentAnimatorStateInfo (0) .IsName ("bombdead")) {// zerstöre alle Objekte in einem Radius, sofern sie nicht vorhanden sind markiert Spieler oder Hand Collider2D [] colliders = Physics2D.OverlapCircleAll (transform.position, explodeRadius); foreach (Collider2D col in colliders) {if (col.tag! = "Player" && col.tag! = "hand") {Destroy (col.collider2D.gameObject); }} Destroy (this.gameObject); }}} 
Ziehen Sie zum Schluss das Bombenskript in Ihr bomb_0-Objekt.

Eine kleine Sache, die ich fast vergessen hätte, ist, Hand für Hand zu markieren. Wählen Sie dazu Ihr Handobjekt im Hierarchiefenster aus und wählen Sie dann unter Tag die Option Tag hinzufügen. Erstellen Sie ein neues Tag bei element0 mit dem Namen hand. Ändern Sie dann bei ausgewähltem Handobjekt das Tag in hand. Ändern Sie auch das Penciltip-Objekt-Tag in Hand.

Versuchen Sie, das Spiel zu starten. Die Bombe sollte fallen, explodieren und die Navigationsleiste herausnehmen. (abhängig natürlich, wo Sie es positioniert haben)

Schritt 15: Bombenlaichen

Das Spiel ist jetzt ziemlich schwer zu spielen. Wir werden ein Spawn-Objekt erstellen, um die Bomben zu spawnen, ähnlich wie der Penciltip die Pencilline erzeugt.

Das erste, was wir brauchen, ist ein Fertighaus unserer Bombe. Navigieren Sie zum Fertighausordner, erstellen Sie ein neues Fertighaus und nennen Sie es Bombe. Ziehen Sie das Bombenobjekt in das Bombenfertigteil. Löschen Sie das ursprüngliche Bombenobjekt in der Hierarchie, sobald Sie es als Fertighaus haben.

Erstellen Sie ein neues Quad-Objekt mit dem Namen BombSpawn. Positionieren Sie es über der Kamera in der Hauptkameraansicht oder im Spielfenster.

Erstellen Sie in Ihrem Skriptordner ein neues Skript mit dem Namen BombSpawner und geben Sie ihm den folgenden Code.

 mit UnityEngine; using System.Collections; öffentliche Klasse BombSpawner: MonoBehaviour {// ein öffentliches Objektarray, für das Objekte öffentlich GameObject [] obj erzeugen sollen; // Min- und Max-Zeiten für einen anderen Spawn public float spawnMin = 3f; public float spawnMax = 2f; void Start () {// Spawn starten Spawn (); } void Spawn () {// Zufallszahl abrufen float rand = Random.Range (0, 1000); // wenn die Zufallszahl größer als 700 ist, mache eine Bombe if (rand> 700) {Instantiate (obj [Random.Range (0, obj.GetLength (0))], transform.position, Quaternion.identity); } // Spawn in einem zufälligen Zeitintervall zwischen min und max aufrufen Invoke ("Spawn", Random.Range (spawnMin, spawnMax)); }} 
Machen Sie das BombSpawn-Objekt zunächst zu einem untergeordneten Objekt der Hauptkamera, indem Sie es über das Hierarchiefenster in die Kamera ziehen.
Ziehen Sie nun das Skript auf das BombSpawn-Objekt im Hierarchiefenster. Ziehen Sie nun bei geöffnetem BombSpawn im Inspektor das Bomb-Fertighaus auf das kleine Dreieck mit der Bezeichnung Obj in der Skriptkomponente.

Wir müssen eine if-Anweisung wieder in unser Bombenskript einfügen (vom letzten Schritt), um das Fallen der Bomben zu verzögern, bis der Spieler begonnen hat, auf der Linie zu laufen. Ein kurzer Blick in meine Szene zeigt die Hand, die um 7 Uhr sitzt. Ich werde die Tropfen verzögern, bis die Bomben nach 12 sind.
Hier ist das modifizierte Bomb-Skript.

 öffentliche Bombenbombe: MonoBehaviour {// ein Halter für unseren Animator Animator anim; // ein öffentlicher Float für den Explosionsradius public float explodeRadius = 1f; // Verwenden Sie dies für die Initialisierung void Start () {anim = GetComponent (); } // Update wird einmal pro Frame aufgerufen void Update () {// wenn diese Bombe erzeugt wird, nachdem der Spawner eine Position nach x = 12 erreicht hat if (transform.position.x> 12) {this.gameObject.SetActive (true) ;; } // sonst bombardiere keine Arbeit sonst {this.gameObject.SetActive (false); } // wenn wir mit dem Explodieren fertig sind if (anim.GetCurrentAnimatorStateInfo (0) .IsName ("bombdead")) {// zerstöre alle Objekte in einem Radius, es sei denn, sie sind mit Player oder Hand markiert Collider2D [] colliders = Physics2D.OverlapCircleAll ( transform.position, explodeRadius); foreach (Collider2D col in colliders) {if (col.tag! = "Player" && col.tag! = "hand") {Destroy (col.collider2D.gameObject); }} Destroy (this.gameObject); }}} 
Jetzt kann Robot auf die Leine springen und ein wenig laufen, bevor die Bomben fallen ... probieren Sie es aus. Immer noch nicht sehr herausfordernd. Lassen Sie uns das BombSpawn-Objekt duplizieren !! Dann bewege es einfach ein wenig und wir haben zwei Bombenlaicher, lass uns spielen.

Schritt 16: Plattformen (oder Doodles)

Um die Doodle-Plattformen zu generieren, erstellen wir zunächst einige Fertighäuser. Erstellen Sie einen neuen Ordner im Prefab-Ordner und nennen Sie ihn Doodles.

Erstellen Sie 10 neue Fertighäuser mit dem Namen doodle1 für doodle10.

Erstellen Sie ein neues leeres Spielobjekt, ohne es benennen zu müssen.

Öffnen Sie den Sprites-Ordner und suchen Sie das Doodles-Blatt, öffnen Sie es und wählen Sie das erste Doodle aus. Ziehen Sie es in das leere Spielobjekt im Hierarchiefenster.

Fügen Sie im Inspektor einen Box Collider 2D hinzu und spielen Sie dann mit der Skala und der Mitte, damit er gut auf dem Doodle sitzt. Denken Sie daran, auf diesem Roboter wird landen.

Öffnen Sie Ihren Prefabs / Doodles-Ordner mit den leeren Prefabs und ziehen Sie das neue GameObject in das Doodle1-Prefab.

Anstatt diesen gesamten Vorgang zu wiederholen, navigieren Sie einfach zurück zum Sprite-Ordner, greifen Sie zum nächsten Doodle und ziehen Sie es in die Sprite Renderer-Komponente des Spielobjekts, passen Sie die Position des Colliders an und fügen Sie es in das nächste Doodle-Fertighaus ein.

Wiederholen Sie diesen Vorgang für die restlichen Doodle-Fertighäuser. Sobald sie alle als Fertighäuser aufgezeichnet wurden, können Sie das GameObject löschen, das wir zum Erstellen erstellt haben.

Dupliziere jetzt ein BombSpawn-Objekt unter unserer Hauptkamera und verschiebe es vom Bildschirm nach rechts. Geben Sie ihm im Inspector einen neuen Namen, etwa DoodleSpawn.

Ziehen Sie dann jedes der neuen Prefabs in den Obj-Parameter unserer Skriptkomponente. Ziehen Sie die erste in Element 0, um die Bombe zu ersetzen, und die anderen in das kleine Dreieck neben Obj, um sie der Liste hinzuzufügen.

Spielen Sie mit dem Parameter min / max in der Skriptkomponente, um zu ändern, wie oft sie generiert werden. Duplizieren Sie das DoodleSpawn-Objekt und verschieben Sie es nach oben, wenn Sie weitere Ebenen möchten.

Eine Sache, die mir beim Spielen aufgefallen ist, ist, dass die maximale Geschwindigkeit des Roboters zu niedrig war. Ich habe sie hier erhöht. Gehen Sie zu Ihrem Player-Objekt und passen Sie die Variable maxSpeed ​​in der Skriptkomponente an, wenn Sie dasselbe Problem feststellen.

Schritt 17: Bonuspunktabholung

Das Erstellen der Pickups ist dem Erstellen der Kritzeleien sehr ähnlich. Ein paar kleine Unterschiede. Erstellen Sie zunächst einen neuen Ordner im Prefabs-Ordner mit dem Namen Bonus und füllen Sie ihn mit 6 leeren Prefabs.

Wir benötigen ein Skript, um die Bonuspunkte zum GUIText-Objekt hinzuzufügen. Erstellen Sie daher im Skriptordner ein neues Skript mit dem Namen BonusPoints. Hier ist das Skript, das in Monodevelop eingegeben werden soll.

 mit UnityEngine; using System.Collections; public class BonusPoints: MonoBehaviour {// mache einen Container für das Heads-Up-Display Pancam Hud; void OnTriggerEnter2D (Collider2D col) {if (col.tag == "Player") {hud = GameObject.Find ("Hauptkamera"). GetComponent (); hud.increaseScore (10); Destroy (this.gameObject); }}} 

Kehren Sie nun zur Szene zurück und erstellen Sie ein neues leeres GameObject. Suchen Sie Powerups im Sprites-Ordner und ziehen Sie das erste Sprite in das neue GameObject.

Transformieren Sie die Skala im Inspektor auf x = 2, y = 2 und fügen Sie dann einen Box-Collider 2D hinzu. Dieses Mal möchten wir das Kontrollkästchen Is Trigger aktivieren.

Ziehen Sie nun das BonusPoints-Skript in powerups_0. Öffnen Sie den Prefabs / Bonus-Ordner und ziehen Sie das GameObject in das Prefab.

Ersetzen Sie wie im vorherigen Schritt einfach das Sprite Renderer Sprite für jedes Fertighaus und speichern Sie es.

Sobald die sechs Bonus-Prefabs erstellt sind, können wir das GameObject löschen, mit dem wir sie erstellt haben.

Um unsere Boni zu erzeugen, duplizieren wir einfach das DoodleSpawn-Objekt, benennen es in BonusSpawn um, verschieben es ein wenig nach oben und ersetzen das Objekt, das es erzeugt.

Schritt 18: Spiel vorbei

Die Zielgerade !! Jetzt brauchen wir nur noch, dass der Spieler stirbt, anstatt den Code zu brechen. Das und wir brauchen eine zweite Szene, um anzuzeigen, dass das Spiel beendet ist, und um die Chance zu bieten, erneut zu spielen.

Fügen wir diese Szene dem Build hinzu, bevor wir die neue Szene starten. Wählen Sie im Pulldown-Menü Datei die Option Einstellungen erstellen.
Klicken Sie im daraufhin angezeigten Dialogfeld auf die Schaltfläche Aktuelle hinzufügen und überprüfen Sie, ob die Szene eine Szenennummer von Null hat. Schließen Sie das Dialogfeld.

Make sure you save your current scene and then select New Scene. Name the scene GameOver and put it in the Assets folder.

Add a GUIText object from the GameObject pulldown menu. In the inspector, change Anchor to upper center and alignment to center. Also change the font size to 20 and the color to black.

Back in the scene, drag the sticky note called notes_score to the scene and position it roughly center, use the Game window to see how it will look. Do the same with the Game Over sprite, just drop it where it looks good.

Create a gameOver script in the script folder, like this one.

 mit UnityEngine; using System.Collections; public class GameOver : MonoBehaviour { int score = 0; public GUIElement gui; // Use this for initialization void Start () { //get our score from playerprefs score = PlayerPrefs.GetInt ("Score"); //multiply by 10 as we did on displayed score score = score * 10; } void OnGUI(){ //set our text to our score gui.guiText.text = score.ToString (); //if retry button is pressed load scene 0 the game if(GUI.Button(new Rect(Screen.width/2-50, Screen.height/2 +150, 100, 40), "Retry?")){ Application.LoadLevel(0); } //and quit button if(GUI.Button(new Rect(Screen.width/2-50, Screen.height/2 +200, 100, 40), "Quit")){ Application.Quit(); }}} 

Speichern Sie es und ziehen Sie es in unserer neuen Szene auf die Hauptkamera.

Fast alle fertig, müssen wir unserem Kameraskript eine Funktion hinzufügen, um die Partitur weiterzuleiten, und wir müssen unser Zerstörerskript ändern, in dem wir den Code-Bruch haben, um uns zur GameOver-Szene zu schicken.

Das neue Kameraskript.

 mit UnityEngine; using System.Collections; Pancam der öffentlichen Klasse: MonoBehaviour {float ydir = 0f; öffentlicher GameObject-Spieler; // für unser GUIText-Objekt und unsere Punktzahl public GUIElement gui; float playerScore = 0; // Diese Funktion aktualisiert unser Guitext-Objekt void OnGUI () {gui.guiText.text = "Score:" + ((int) (playerScore * 10)). ToString (); } // Dies ist eine generische Funktion, die wir aufrufen können, um die Punktzahl um einen Betrag zu erhöhen. public void erhöhenScore (int Betrag) {playerScore + = Betrag; } // Die Kamera wird deaktiviert, wenn wir ein Level laden. Setze die Punktzahl in playerprefs void OnDisable () {PlayerPrefs.SetInt ("Score", (int) (playerScore)); } // Update wird einmal pro Frame aufgerufen void Update () {// überprüfe, ob der Player existiert und fahre dann fort. Andernfalls erhalten wir eine Fehlermeldung, wenn der Spieler stirbt, wenn (Spieler) {// wenn der Spieler die x-Position von -1 überschritten hat, dann beginnen Sie, die Kamera mit einer zufälligen Y-Position vorwärts zu bewegen, wenn (player.transform.position.x> -1) {/ / aktualisiere unsere Punktzahl bei jedem Tick der Uhr playerScore + = Time.deltaTime; float randy = 0f; randy = Random.Range (0f, 100f); if (randy 20 & randy 80) {ydir = 0f; } transform.position = neuer Vektor3 (transform.position.x + 0.03f, transform.position.y + ydir, -10); }}}} 

Das feste Destroyer-Skript

 mit UnityEngine; using System.Collections; Zerstörer der öffentlichen Klasse: MonoBehaviour {void OnTriggerEnter2D (Collider2D other) {// wenn das Objekt, das das Ereignis ausgelöst hat, als player markiert ist if (other.tag == "Player") {Application.LoadLevel (1); } if (other.gameObject.transform.parent) {Destroy (other.gameObject.transform.parent.gameObject); } else {Destroy (other.gameObject); }}} 

Erraten Sie, was? Du hast gerade ein Spiel gemacht! Ich tat das auch!! woot für uns!
Ok, es ist nicht das beste Spiel der Welt, aber das ist kaum der Punkt, oder? Zumindest war es nicht für mich. Ich war schockiert darüber, wie einfach alles geworden ist, und ich musste teilen. Ich kann es kaum erwarten, ein paar neue coole Spiele zu spielen!

Schritt 19: Dateien usw.

Ich habe diesen letzten Schritt eingefügt, um den Zugriff auf die Skripte, die wir gerade zusammen geschrieben haben, ein wenig zu vereinfachen.
Hier sind die Skripte, die wir gerade durchlaufen haben.

Vielen Dank für Ihren Besuch. Ich hoffe, es hat Ihnen genauso gut gefallen wie mir.
Teile und genieße.

Oh und ...... Fjordcarver wählen?

Anhänge

  • bomb.zip herunterladen
  • BombSpawner.zip herunterladen
  • BonusPoints.zip herunterladen
  • Destroyer.zip herunterladen
  • GameOver.zip herunterladen
  • pancam.zip herunterladen
  • pencilline.zip herunterladen
  • RobotController.zip herunterladen

Ähnlicher Artikel