Lernen Sie, Spiele zu machen, indem Sie Asteroiden mit Godot erstellen | Michael Mcguire | Skillshare

Playback-Geschwindigkeit


1.0x


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

Lernen Sie, Spiele zu machen, indem Sie Asteroiden mit Godot erstellen

teacher avatar Michael Mcguire, Author | Programmer

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.

      Einführung in Skillshare

      0:55

    • 2.

      Was sind Asteroiden

      1:24

    • 3.

      Projekteinrichtung

      1:13

    • 4.

      Erstellen des Players

      9:49

    • 5.

      Erstellen des Projektiles

      7:26

    • 6.

      Die Erschaffung der Asteroiden

      2:49

    • 7.

      Asteroiden-Laichung

      6:09

    • 8.

      Asteroid-Zerstörung

      11:24

    • 9.

      Spawn-Timer und Speicherlecks

      7:14

    • 10.

      Punktzahl aktualisieren

      9:11

    • 11.

      Leben aktualisieren

      16:26

    • 12.

      Spiel beendet und neu gestartet

      7:19

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

33

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Erleben Sie die Geschichte der Arcade-Spiele noch einmal, während Sie echte Fähigkeiten als Dev (oder Entwicklungs-) erwerben – einen Asteroiden nach dem anderen.

In diesem praktischen Kurs stellen Sie das legendäre Arcade-Spiel Asteroids aus dem Jahr 1979 mit der modernen und anfängerfreundlichen Godot Engine nach. Ganz gleich, ob Sie gerade erst anfangen oder Ihre Fähigkeiten verbessern möchten, dieser projektbasierte Kurs führt Sie Schritt für Schritt durch das Design, Programmieren und Ausarbeiten eines kompletten Weltraum-Shooter im Retro-Stil – keine Vorkenntnisse erforderlich.

Am Ende dieses Kurses verfügen Sie über folgende Fähigkeiten:

Triff deine:n Kursleiter:in

Teacher Profile Image

Michael Mcguire

Author | Programmer

Kursleiter:in
Level: Beginner

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. Einführung in Skillshare: Stimmt, in diesem Kurs werden wir weitermachen und lernen, es uns leichter zu machen, indem wir einen Spieleklassiker aus dem Jahr 1979 entwickeln: Asteroids Bei Asteroiden gibt es ein kleines Schiff, das kleine Projektile abfeuern und auf dem Bildschirm herumfliegen kann und auf dem Bildschirm herumfliegen Und was passiert, ist, dass man diese Asteroiden abschießt , die herumschweben die herumschweben Die großen erzeugen mittlere, du zerstörst die mittleren, sie spawnen kleinere, kleinere bewegen sich schneller als Und für jeden, den du zerstörst, erhältst du einige Punkte deine Gesamtpunktzahl. In Ordnung. Das ist ein einfaches Spiel, aber es ist wichtig sowohl für die Geschichte der Spiele als auch ein nettes kleines Anfängerprojekt, bei dem du ein echtes Spiel neu gestalten kannst, mit dem du Spaß haben kannst und das du immer erweitern und dein eigenes erstellen In Ordnung, lass uns anfangen. 2. Was sind Asteroiden?: Ordnung. Heute werden wir weitermachen und das klassische Spiel Asteroids entwickeln, wie du es hier auf dem Bildschirm in diesem YouTube-Video siehst in diesem YouTube-Video Was wir daraus sehen können, ist, dass Asteroiden, abgesehen davon, dass es sich um ein wirklich altes und klassisches Spiel Es sollte für uns ziemlich einfach sein, aber ein weiterer Schritt nach oben, weil wir jetzt Spielerbewegungen haben, wie Sie bei unserem kleinen Spieler hier in der Mitte sehen können Er rotiert, er bewegt sich, er schießt. Bei uns schweben diese Asteroiden herum, und jedes Mal, wenn sie abgeschossen werden, brechen sie in zusätzliche Teile ab Und wir können sehen, dass wir diesen kleinen Alien-Grill haben , in dem hin und wieder etwas auftaucht Und was die Benutzeroberfläche angeht, wir haben Punkte und Lebenspunkte hier oben Und effektiv geht dieses Spiel einfach weiter, bis du entweder, nun ja, ich würde auch nicht sagen, bis du. Es geht weiter, bis ihr all euer Leben verliert. Und was auch immer Sie haben, das ist Ihr Highscore. Und wie Sie dort sehen können, verschwand der Asteroid vom Bildschirm und dann tauchte er wieder auf der anderen Seite auf und ging und dann tauchte er wieder auf der anderen Seite auf und weiter in die gleiche Richtung, in die er sich bewegte Aber kurz gesagt, das sind Asteroiden. Das werden wir hier schaffen. Im nächsten Abschnitt werden wir also weitermachen und mit der Einrichtung eines Projekts beginnen, das für uns nicht zu viel sein sollte 3. Projekteinrichtung: Lassen Sie uns weitermachen und unser Projekt einrichten. Wir können runterkommen. Wenn Sie das separat in einem eigenen Projekt erstellen, natürlich weiter und erstellen Sie ein neues Projekt, nennen Sie es Asteroiden Wenn Sie innerhalb eines bestehenden Projekts erstellen, gehen Sie einfach in Ihr Dateisystem, klicken Sie mit der rechten Maustaste, erstellen Sie ein neues, erstellen Sie einen Ordner und nennen Sie ihn Asteroiden, und wir können weitermachen und eine Toti-Szene Ich werde meinen Namen in Main umbenennen. Wir werden eine Leinwandebene für unseren Kerl hinzufügen, die ich natürlich in Guy umbenennen werde. Und was wir brauchen werden, ist ein Etikett für den oberen Teil, und das wird unsere Darstellung unserer Partitur sein. Ich werde das umbenennen, sodass es Score-Label heißt. Ordnung. Und ich werde das in meinem Asteroiden-Ordner speichern und speichern Und das ist wirklich alles, was wir wirklich brauchen, um unser Projekt auf die Beine zu stellen Die meiste Arbeit wird sich im Spieler und in den Asteroiden abspielen 4. Den Spieler erstellen: Lassen Sie uns also weitermachen und unseren Spieler erstellen und die Bewegung einrichten. Also kommst du einfach nach oben, klickst auf einen neuen Tab, um eine neue Szene zu erstellen, und klickst auf einen anderen Knoten. Suche nach einem Charakterkörper zwei D und wähle ihn aus. Jetzt habe ich dieses Setup schon hier drüben. Das ist nur ein Charakterkörper zwei D. Ich benenne ihn in Spieler um und drücke Strg S und speichere ihn in meinem Asteroiden-Ordner Nun, da ich keine Sprites habe, die ich dir dafür geben könnte, werden wir unser Spieler-Sprite erstellen weil es für uns sowieso so einfach ist, und wir werden es mit einer Linie zwei D erstellen , da es meistens nur ein Dreieck ist, aus dem eine kleine Kerbe herausgenommen wurde. In Ordnung. Also Zahlen, die ich dafür verwenden werde Also, wenn du online gehen und dich umschauen willst, ich bin mir sicher, dass du die Sprites finden kannst, wenn du es so machen willst Ich gehe zur Linie zwei D und zu Immobilien. Ich werde geschlossen ankreuzen, das einschalten. Und ich öffne die Punkte, indem ich auf das gepackte Vektor-2-Array klicke. Und ich füge hinzu, bis wir eine Größe von fünf haben. Mein erster Punkt wird bei Zehn und Null liegen. Mein zweiter Punkt wird bei minus fünf und minus sechs liegen. Index zwei wird Null auf dem X sein , minus zwei auf dem Y. Die Drei wird Null auf dem X und positive zwei auf dem Y sein . Und unser vierter Index hier wird negativ fünf auf dem X und sechs auf dem Y sein . Nun, das sieht nicht wie der Sprite aus, den Das liegt daran, dass die Breite zu groß ist. Nun, da ich die Standardgröße verwende, die ich auch hier wieder die Standardgröße verwende, die ich auch hier verwendet habe, öffne ich sie und zeige sie dir hier. Ah, wo ist das? Schaufenster , das 335 mal 255 groß ist. Nun, wenn Sie dafür eine authentische Größe verwenden möchten , glaube ich, dass 640 x 800 die authentische Größe dafür ist. In diesem Fall wirst du damit durchkommen , dein Schiff ein bisschen größer zu machen, oder? Du könntest also zum Beispiel die Größe XL vielleicht auf 20 statt auf zehn ziehen . Und auch hier können Sie einfach die feste Zahl erhöhen. Also statt minus fünf kannst du auch minus zehn machen. Sie können also damit herumspielen und mit einer breiteren Linie umgehen. Aber da ich diesen kleineren Bildschirm verwende, werde ich die Breite meiner Linie auf eins reduzieren, und wir können es hier sehen. Jetzt fragst du dich vielleicht, was ist mit zwei? Nun, wir könnten zwei machen, aber wir werden einen kleineren leeren Raum in der Mitte haben einen kleineren leeren Raum . Und vielleicht ist das etwas, das du magst. Mach weiter und spiel das. Wir können es hier im Moment nicht wirklich sehen. Ich mache weiter und ziehe es einfach in Ansicht und spiele es ab und du kannst es dort sehen, wie es auf dem Bildschirm aussieht. Also vielleicht gefällt es dir so. Aber ich werde weitermachen und meine Breite auf eins ändern. Ich bevorzuge mehr davon. Für mich fühlt es sich etwas authentischer an, aber das liegt an dir. Und auch hier können Sie diese Punkte jederzeit ändern. Wenn du es größer machen willst, dann kannst du eine breitere Linienbreite haben, oder du kannst immer online gehen und googeln, und ich bin mir sicher, dass du die Sprites irgendwo finden wirst , wo du sie in die Finger bekommen kannst. In Ordnung. Nun, Sie werden vielleicht feststellen, dass wir hier eine kleine Warnung bekommen, und das liegt daran, dass wir eine Kollisionsform für uns selbst benötigen eine Kollisionsform für , nach der es fragt Also können wir weitermachen und eine Kollisionsform erstellen. Wir können reinkommen, wir können uns eine Form aussuchen. Wir können einen Kreis machen. Wir können ein Rechteck machen. Wir können eine der Polygonformen machen Wirklich, es spielt keine große Rolle. Und wenn du noch genauer sein willst, was wahrscheinlich etwas weniger authentisch wäre, ist ein Kollisionspolygon Und dann ist es hier das gleiche Setup , wo man einfach die Punkte setzen kann Also würdest du sie einfach so setzen, wie du es mit den Spielern gemacht hast , zum Beispiel zehn, hier, minus fünf, minus sechs, und du kannst sehen, wie es anfängt, sich zu reihen. Mit unserem Setup. Also muss ich hier nur noch ein paar hinzufügen. Und es wäre Null, minus zwei, und eins ist Null positiv zwei, dann minus fünf und sechs. Und dann hätten wir unsere Form für uns vorbereitet. Ordnung, also wenn du diesen Weg gehen willst, kannst du, und du kannst jederzeit reinkommen und hier mit deinen Punkten spielen Nein, erstellen, aber wenn du zuschlagen willst, klicke auf Punkte bearbeiten, und dann kannst du einfach darauf klicken und es herumziehen Also wenn du es auf diese Weise bearbeiten möchtest. Wenn Sie die Punkte nicht eingeben möchten, klicken Sie hier oben auf das Plus oder die Schaltfläche Punkte hinzufügen. Und du kannst einfach reinkommen und solche Punkte sammeln. Sie haben also Optionen. Ich habe mich einfach für den Inspector entschieden, weil ich finde, dass es einfacher ist, weil Sie Ihre Punkte einfach direkt übersetzen können . Und nochmal, wenn du diesen Weg gehen willst, kannst du das bestimmt. Es ist ein bisschen genauer. Allerdings werde ich weniger herunterziehen, ein bisschen weniger, wahrscheinlich weniger genau auf die eigentliche Sache im Großen und Ganzen. In Ordnung. Also, wie Sie das machen wollen, liegt ganz bei Ihnen, ob Sie ein Polygon oder eine Form verwenden wollen ein Polygon oder eine Form Kommen wir zur eigentlichen Bewegung unseres Spielers. Lassen Sie uns also weitermachen. Klicken Sie auf Player, klicken Sie auf AdScript, fügen Sie es hinzu und stellen Sie sicher, dass Sie es zu unserem Asteroiden-Ordner hinzufügen zu unserem Asteroiden-Ordner Und wir werden einen physikalischen Prozess erstellen. Und wir werden hier ein paar Variablen für uns haben. Wir werden eine Geschwindigkeitsvariable dafür haben , wie schnell wir uns bewegen. Wir werden eine Umdrehungsgeschwindigkeit haben die angibt, wie schnell wir uns bewegen, drehen und dann unsere Drehrichtung. Und bevor wir zu diesem nächsten Teil übergehen, stellen Sie sicher, dass Sie zu den Projekteinstellungen gehen, Map eingeben und Ihre Steuerung einrichten. Ich werde einfach das verwenden, was ich im letzten Jahr verwendet habe. Ich werde einfach oben, unten, links und rechts verwenden , da ich dieses Setup bereits für WASD habe Das sind die, die ich verwenden werde. Ordnung, lassen Sie uns weitermachen und sagen, dass die Drehrichtung der G-Achse des Eingabepunkts entspricht Jetzt müssen wir die negativen Maßnahmen ergreifen und dann die positiven Maßnahmen Diese werden in Form der Stringnamen vorliegen. Das wird also übrig bleiben. Und dann rechts. Denn links gibt uns unsere negative Richtung und rechts gibt uns unsere positive Richtung für die Rotation. Und dann werden wir die Geschwindigkeit so ändern , dass sie den Punkt X mal transformiert, dann genau das, was wir hier gemacht haben, Eingabepunkt, Achse und dasselbe. Wir geben unser Negativ und Positiv ein, also wird es runter sein, gefolgt von oben. Und dann multiplizieren wir das mit unserer Geschwindigkeit. Jetzt sind wir fast fertig. Wir müssen eine Rotation durchführen. Plus entspricht Drehrichtung mal Drehzahl mal Delta Ordnung. Und an diesem Punkt solltest du an die Idee gewöhnt sein. Wir müssen entweder Moving Collide oder Moving Slide verwenden. In diesem Fall verwende ich Move und Slide. Und wenn wir weitermachen und das ausführen, sollten wir jetzt in der Lage sein, unseren Spieler zu bewegen. Wenn ich also nur W gedrückt halte, geht es vorwärts. Wenn ich S gedrückt halte, geht es rückwärts. Wenn ich A gedrückt halte, dreht es sich nach links. Ich halte D gedrückt, es dreht sich nach rechts und jetzt haben wir etwas , das dem, was wir im Inneren von Asteroiden gesehen haben, sehr ähnlich Jetzt können Sie weitermachen und diese Zahlen anpassen. Sie können also die Geschwindigkeit anpassen, wenn Sie möchten sich Ihr Schiff schneller oder langsamer bewegt Ich verwende standardmäßig 100. Die Umdrehungsgeschwindigkeit verwendet 1,5. Sie können den Wert erhöhen , um schneller zu drehen oder ihn verringern, um langsamer zu drehen. Das liegt ganz bei dir. Aber egal, wofür du dich entscheidest, das ist nur eines der kleinen Dinge, für die du dich entscheiden wirst , damit sich dein Spiel für dich persönlicher anfühlt . Stimmt das? Und für einen Spieler ist das wirklich alles, was wir brauchen, um uns auf die Beine zu stellen, bis wir anfangen müssen zu schießen. Ordnung. Also sehen wir uns im nächsten Teil 5. Erstellen des Projektiles: Ordnung, also lasst uns weitermachen und unser Projektil für unseren Spieler erstellen In meiner Spielerszene hier habe ich einen Marker zwei D hinzugefügt, und das ist nur, damit wir einen bestimmten Ort haben , an dem wir unser Projektil spawnen , der nur ein bisschen vor unserem Schiff sein wird bisschen vor Und das Einzige, was Marker zwei D tut, ist, uns eine Position irgendwo auf der Welt zu geben eine Position irgendwo auf der Welt zu Das ist sein ganzer Zweck. Ordnung, Sie können also weitermachen, eine neue Szene erstellen , einen anderen Knoten treffen und den Bereich zwei D auswählen. Und auf Erstellen klicken, das wird unser Projektil sein Und hier habe ich eine Kollisionsform erstellt, die nur aus einem Rechteck und einem Sprite zwei D besteht . Für die Textur habe ich von der Drop-down-Liste aus die neue Verlaufstextur zwei D verwendet. Und wenn Sie das tun, öffnen Sie das Erste. Sie werden diesen großen Abschnitt sehen. Sie finden den Gradienten im Inspektor, öffnen Sie ihn und Sie haben zwei Punkte wie diesen. Ein Punkt ist standardmäßig schwarz. Es wird also ungefähr so aussehen. Machen Sie einfach weiter und klicken Sie mit der rechten Maustaste auf den schwarzen Punkt , um ihn loszuwerden, und jetzt ist alles weiß. Richtig. Das ist alles, was du tun musst, und dann hast du ein Projektil. Das richte ich ein. Mach weiter und speichere diese Szene als ihre eigene, damit wir sie verwenden können. Machen Sie weiter und geben Sie dem Gebiet zwei D. Ich habe meinem Projektil den Namen Drehbuch Und hier werden wir zwei Funktionen und eine Variable haben zwei Funktionen und eine Variable Ordnung. Die erste Variable, die wir hier haben werden, ist, dass wir dafür eine Geschwindigkeit erstellen werden. Es ist ein Vektor zwei, und natürlich wird er standardmäßig auf Vektor 20 gesetzt. Wir werden dafür eine Funktion namens set velocity erstellen . Sie wird ein Argument eines Vektors zwei haben. Es gibt nichts zurück, also vermeide es. Und alles, was wir tun, ist, die Geschwindigkeit auf V einzustellen , richtig? Das Argument, das wir weitergeben. Und als letztes brauchen wir die tatsächliche Bewegung unseres Projektils In unserem physikalischen Prozess machen wir also weiter und machen Position plus gleich unserer Geschwindigkeit mal Delta Und unser Projektil selbst ist fertig. Wir müssen jetzt zum Spieler gehen. Und falls Sie noch kein Eingabe-Mapping-Setup haben, gehen Sie zu unserer Eingabe-Map für die Projekteinstellungen und erstellen Sie eine Schaltfläche, mit der Sie fotografieren können. Ich selbst habe meine Leertaste eingerichtet. Und bevor wir weitermachen, erstelle ich als Erstes eine neue Variable namens Projektil Es wird also eine vollgepackte Szene sein , die wir reinbringen können. Und auf diese Weise können wir es laden, wenn wir es brauchen , oder eine Instanz davon erstellen , wenn wir es brauchen, sollte ich sagen. Und das entspricht dem Laden und einfach die Szene suchen und hineinziehen. Da haben wir's. Also werden wir die Szene laden. Sie wird als Pack-Szene geladen und in der Variablen namens projectile gespeichert Ordnung. Lassen Sie uns also weitermachen und die Eingabefunktion erstellen. Für unseren Spieler. Das ist nur Funk-Underscore-Eingabe. Das hat ein Argument namens Event. Es ist ein Eingabe-Ereignistyp. Es gibt nichts so Leeres zurück. Und wir werden nur überprüfen, ob es sich bei der Eingabe um eine Aktion handelt. Drücken Sie einfach, damit wir die Taste jetzt nicht gedrückt halten können. Wir müssen es jedes Mal drücken, wenn wir wollen. Und die Action, nach der wir suchen, ist Shooting. Also, wann immer wir den Schießknopf drücken, was werden wir tun? Nun, wir werden eine Instanz unseres Projektils erstellen Also PI für ein Projektil, es ist eine Fläche von zwei D. Das entspricht der Projektilpunkt-Instantiierung es ist eine Fläche von zwei D. Das entspricht der Projektilpunkt-Instantiierung Jetzt müssen wir hier diesen Marker zwei D für uns verwenden. globale Position von PI entspricht also dem Dollarzeichen Markierung zwei D. Also bekommen wir nur die Markierung zwei D nein, die wir zu unserer globalen Position mit dem Spielerpunkt hinzugefügt haben . Also richten wir das ein. Und wenn wir uns das einfach so ansehen, wie es ist, wenn wir herumlaufen und schießen. Nun, wir können es vielleicht nicht wirklich sehen, aber wenn wir uns umdrehen und weggehen, äh, nun, wir können sehen, dass wir eigentlich gar nichts bekommen. Warum ist das so? Weil wir es der Szene noch nicht hinzugefügt haben. Es existiert jedoch, und wir werden das in nur einer Sekunde überprüfen. Was ich tun werde, ist, die Rotation festzulegen . Ich stelle die Rotation jetzt basierend auf unserem Schiff ein. Die Drehung des PI-Punkts entspricht also der Rotation. Und ich werde Get Parent Ad Child PI verwenden. Also verwende ich Get parent. Auf diese Weise bleibt das Projektil nicht an uns haften, denn wenn wir einfach AdCild verwenden, bleibt es an uns haften, und wenn wir unser Schiff weiter drehen, es sich weiter Das wäre nützlich für so etwas wie einen Laserstrahl, aber nicht für Also verwenden wir Get Parent, damit wir es auf das Spiel übertragen können und nicht auf den Spieler selbst. Richtig? Also wenn wir reinkommen und schießen, kannst du sehen, dass es jetzt im Spiel erscheint, es bewegt sich einfach nirgendwohin Und das passiert jedes Mal, wenn wir den Schießknopf drücken. Also, wenn dir das passiert ist, dann herzlichen Glückwunsch. Ihr Projektil funktioniert. Wir müssen es nur dafür sorgen, dass es sich jetzt tatsächlich für uns bewegt. In Ordnung. Also überprüfe, ob es so ist, oder um es in Bewegung zu bringen , werden wir einen kurzen Ich-Check hier machen. Wir werden sagen, wenn PI Methoden hat, die Geschwindigkeit festlegen, und davon könnten wir getrost ausgehen. Aber wir werden sichergehen, dass es diese Funktion hat , nur um sicher zu gehen. Und wir werden unsere Richtung speichern. Aber wir gehen hier eine neue Richtung ein. Entspricht dem Vektor. Zwei Punkte nach rechts, Punkt gedreht und Durchgang in der Drehung. Das bringt uns also in die richtige Richtung, die auf dem positiven X liegt, je nachdem, wie stark es effektiv gedreht wird, richtig? Auf diese Weise haben wir also immer eine bestimmte Richtung, in die es sich bewegt. Hoppla. Hoppla, hoppla, hoppla. Wir geben ihm Geschwindigkeiten, eine Var-Geschwindigkeit entspricht 200 Sie können das später immer noch anpassen, wenn Sie möchten. Und jetzt müssen wir nur die Funktion aufrufen, nach der wir hier suchen. Also Pi-Punkt stellt Geschwindigkeit ein, Richtung mal Geschwindigkeit. Und damit bewegt sich unser Projektil jetzt in die Richtung, in die wir schießen Einfach so? Auch wenn wir ganz aufhören, uns zu bewegen. Großartig. Jetzt funktioniert unser Projektil mit unserem Schiff. Jetzt müssen wir nur noch ein paar Asteroiden abschießen und ein paar Punkte sammeln Ordnung. Wir sehen uns im nächsten 6. Erstellen der Asteroiden: Lassen Sie uns also weitermachen und unsere drei Asteroiden erschaffen. Wir werden einen großen, einen mittleren und einen kleinen erstellen mittleren und einen kleinen Diese werden alle auf die gleiche Weise erstellt. Der einzige Unterschied wird in der Größe der Kollisionsform und den tatsächlichen Punktzahlen bestehen, denn sie werden natürlich groß beginnen und dann immer kleiner werden. All dies wird durch einen Charakterkörper mit zwei D, eine Linie mit zwei D und eine Kollisionsform erzeugt einen Charakterkörper mit zwei D, eine . Also gebe ich dir einfach die Punkte für Zeile zwei D. Also mach weiter und mach eine Pause und wenn du das eingerichtet hast, können wir weitermachen und weitermachen. Ich werde jetzt weitermachen und damit beginnen die Punkte für die Linie zwei D auf dem großen Asteroiden vorzulesen . Denken Sie daran, Ihre Szenen zu speichern Geschlossen, sollten wir einschalten. Und die Breite, die ich für diese verwende, ist zwei. All diese haben acht Punkte. Und diese beginnen mit dem großen Asteroiden hier, 40, Null, 30, minus 25, zehn minus 35, minus 15, minus 30, minus 35, minus zehn, minus 30, 20, minus zehn, minus zehn, minus zehn, 35, 25 und 30. Kommen wir zum Medienmastoid. Ich habe wieder acht Punkte auf der Liste, 25, Null, 20, Minus 15, Fünf Minus 22, Minus Zehn, Minus 18, Minus 20, Minus 5, Minus 18, 12, Minus 5, 22, 15, Weiter zu den Punkten für den kleinen Asteroiden, 15, Null, 12, Minus Acht, Drei, Minus 13, Minus Sieben, Minus Zehn, Minus 13, Minus Zwei, Minus 12, Sieben, Minus Drei, 13 und 1010. Das sind die Punkte, die wir für all diese Punkte verwenden. Und wenn Sie alle drei eingerichtet haben, stellen Sie sicher, dass Sie alle drei Szenen gespeichert haben , damit Ihre Asteroiden eingerichtet und einsatzbereit sind Und das Einzige, was ihnen fehlen wird, ist ihre Rotation. Natürlich müssen sie auf dem kleineren Asteroiden spawnen , wenn sie zerstört werden spawnen kleineren Asteroiden spawnen , wenn sie Die großen werden also mittlere spawnen und die mittleren werden kleine 7. Asteroiden-Spawnung: Also lasst uns weitermachen und unseren Asteroiden erlauben, außerhalb des Bildschirms zu erscheinen, ins Sichtfeld Sie werden unterschiedliche Geschwindigkeiten haben können , und wir werden dasselbe Skript für alle drei Größen verwenden alle drei Also mach weiter und erstelle ein Skript, und du kannst es an alle drei Asteroiden anhängen, den großen, den mittleren und den kleinen, und das Skript öffnen Und das Erste, was wir tun werden , ist, eine Rotationsgeschwindigkeit zu erstellen und ich werde eine Geschwindigkeit von X vier erstellen Ich werde weitermachen und das sofort speichern. Wenn ich also auf meinen kleinen Asteroiden klicke, werden Sie sehen, dass wir hier im Inspektor Geschwindigkeit haben . Ich lasse den Wert für klein bei 100 Für mittel reduziere ich es auf 50 und für groß mache ich 20. Jetzt können Sie jederzeit zurückkommen und diese Zahlen später anpassen , oder? Das ist immer möglich. Ich mache einfach weiter und stelle das vorerst ein. Jetzt, in unserer Bereitschaftsfunktion, werden wir, um außerhalb des Bildschirms zu erscheinen , die Bildschirmgröße aus Get vPortRC dot SHE die Bildschirmgröße aus Get vPortRC Und wir werden eine Kreditvariable für Spawn Edge bekommen. Jeder hat Randy-Prozent vier, also bekommen wir entweder Null, Eins , Zwei oder Drei dieser Grundlage werden wir entscheiden, ob wir jede Zahl oder jede Zahl so zuordnen jede Zahl oder jede Zahl sie oben, unten, links und rechts steht Also werden wir etwas verwenden, das als Match-Statement bezeichnet wird. Und alles, was Sie tun, ist Match einzugeben. Das, was du zuordnen möchtest, wäre in diesem Fall Spawn Edge Doppelpunkt runterkommt, sagen wir Null , weil das eine Option ist Fügen Sie einen Doppelpunkt hinzu und Sie haben einen Textblock. Dann können Sie es mit einer Eins und einem Textblock, zwei und einem Textblock usw. abgleichen Eins und einem Textblock, zwei . So funktioniert Match-Statement. Also sagen wir im Grunde: Okay, wir passen das an. Also wenn das hier passt , mach das, es passt zu diesem, wir machen diesen Block, wenn es damit übereinstimmt, machen wir diesen Block und so weiter. Also, was wir damit machen werden, ich werde einfach weitermachen und das natürlich kopieren. Aber wir machen das alles, wir werden Spawn-Edge machen Wenn es Null ist, nehmen wir an seine Position gleich einem Vektor zwei ist, und dieser Vektor zwei dass seine Position gleich einem Vektor zwei ist, und dieser Vektor zwei ist ein zufälliger Gleitkommabereich, also randiere F auf einen quadratischen Bereich zwischen Null und dem Punkt X auf der Bildschirmgröße, und dann ist Y negativ 50. Da es also negativ ist, können Sie hier davon ausgehen, dass die Position hier, dass die Übereinstimmung von Null oben oder oben auf dem Bildschirm liegt . Wenn wir also über unserem Bildschirm erscheinen, platzieren wir hier unseren Asteroiden Und dann wird unsere Geschwindigkeit Vektor 20 auf dem X sein, und dann wird unser Y einfach unsere Geschwindigkeit sein, richtig? Da das also eine positive Zahl ist, bedeutet das, dass wir uns nach unten bewegen und dieses Muster bis zum Ende fortsetzen werden. Wenn es also eine Eins ist, ist die Position ein Vektor Zwei mit der Bildschirmgröße Punkt X plus 50. Das heißt, wir spawnen hier auf der rechten Seite unseres Bildschirms, Rand F unterstreicht den Bereich, und das gibt uns einen Wert zwischen Null und Punkt Y auf der Bildschirmgröße. Wir spawnen also an jedem Punkt der Vertikalen auf der rechten Seite , solange wir uns auf der rechten Seite Dann wird unsere Geschwindigkeit ein Vektor zwei sein. Es hat eine Null auf dem Y und eine negative Geschwindigkeit auf dem X, also bewegt es sich nach links. In Ordnung. Und wenn wir mit einer Zwei übereinstimmen, machen wir im Grunde das Gleiche, was wir hier mit Null gemacht haben. Unsere Position ist also ein Vektor zwei, Rand F auf dem quadratischen Bereich, Null, Bildschirmgröße X. Also befinden wir uns jetzt ganz links Bildschirmgröße Y plus 50. Seit wir es hinzufügen, erscheinen wir unten, rechts, unten auf rechts, unten Vektor zwei X ist Null für unsere Geschwindigkeit und er ist negativ , was bedeutet, unser Asteroid nach oben bewegen wird Und zu guter Letzt haben wir ein Match für drei. Vektor zwei wird ein Minus von 50 sein weil minus 50 sowieso schon außerhalb des Bildschirms sein wird, also geht es nach links. Zufälliger F-Bereich von Null und natürlich Punkt Y auf der Bildschirmgröße, irgendwo auf der linken Seite, und die Geschwindigkeit wird positiv sein, wenn sie sich nach rechts bewegt, und Null auf Y. Alles klar. Wenn Sie das haben, müssen wir noch etwas tun, weil wir uns nicht bewegen können, und Sie haben vielleicht bemerkt , dass wir in unseren physikalischen Prozess gehen müssen und Move und Slide aufrufen müssen Und ich werde auch Rotation plus hinzufügen, was unserer Umdrehungsgeschwindigkeit mal Delta entspricht Wenn wir das testen, bist du auf meinem kleinen Asteroiden. Nun, da haben wir's. Wir haben es ganz oben gesehen. Ich lasse es noch einmal laufen. Nein, ich bin dieses Mal von der rechten Seite gekommen. Ich versuche es nochmal. Ich kam wieder von der rechten Seite. Wir können also sehen, dass es immer völlig zufällig , von unten kommt und durchweg funktioniert. Und wenn wir rüberfahren und sagen, meinen großen Asteroiden, auf dem ich die Geschwindigkeit 20 erreicht habe , teste ich ihn erneut, dann rotiert er Er kommt aus einer zufälligen Richtung und bewegt sich nur langsamer, weil wir die Geschwindigkeit anpassen Ordnung, damit es jetzt einwandfrei für uns Unsere Asteroiden können spawnen und rotieren, und sie haben alle unterschiedliche Geschwindigkeiten Wir müssen jetzt zum Schieß- und Zerstörungsbereich gehen , damit sie kleinere Teile davon spawnen können 8. Zerstörung eines Asteroids: Lassen Sie uns weitermachen und unser Projektil so aufstellen , dass es unsere Asteroiden zerstören kann, sodass daraus ein kleinerer Asteroid entstehen kann. Die großen werden also mittlere spawnen, die mittleren werden kleine spawnen . Als erstes müssen wir also zu unserer Projektilszene gehen, unser Projektil auswählen, den Bereich zwei D, nach dem Kollisions-Bereich unter Kollisionsobjekt zwei D suchen und die Maske auf zwei setzen unserer Projektilszene gehen, unser Projektil auswählen, den Bereich zwei D, dem Kollisions-Bereich unter Kollisionsobjekt zwei D suchen und die Maske auf zwei Ebene ist also die Ebene , auf der sich das Objekt befindet, und Maske ist im Grunde die Ebene, mit der es interagieren kann Also setzen wir die Maske auf zwei und dann gehen wir zu jedem unserer Asteroiden Und wähle es aus und setze unsere Ebene auf dem Asteroiden auf zwei und unsere Maske auf eins Auf diese Weise kann die Maske, da sie auf dem Asteroiden eins ist, mit unserem Projektil interagieren und dass es sich auf Und die zweite Maske ist nicht ausgewählt. Die Asteroiden sollten nicht miteinander interagieren, also sollten sie sich gegenseitig durchdringen und sich nicht gegenseitig schlagen . In Ordnung Und du kannst dasselbe mit dem mittleren und dem kleinen Asteroiden machen. In Ordnung. In meiner Hauptszene habe ich einfach meinen Spieler reingezogen und zwei mittelgroße Asteroiden dazu geholt, damit wir sie zwei mittelgroße Asteroiden hier testen können Und wenn wir es spielen würden, spawnen wir Asteroiden, sie kommen aus In diesem Fall kamen sie beide von rechts. Und da hatten wir einen von rechts, einen von unten. Oh, und Sie können sehen, dass wir da nicht irgendwie reingeklatscht haben, was in Ordnung ist, denn wenn es später darum geht, wird das am Ende unseren Spieler töten Es spielt also keine Rolle, dass wir jetzt damit interagieren können jetzt damit interagieren Also gut, wie bringen wir unsere Asteroiden zum Laufen? Nun, lassen Sie uns zuerst zu unserem Projektil gehen. Schauen wir uns die Signale im Knoten-Tab an. Und wir wählen den eingegebenen Körper aus. Und wir verbinden das Signal, doppelklicken es einfach und stellen die Verbindung zum Projektil Das wird jedes Mal ausgelöst, wenn ein Physikkörper unseren Asteroiden berührt, weil es ein Charakterkörper mit zwei D ist, der in unseren Projektilbereich eindringt Der Körper wird also das repräsentieren, was in diesen Bereich eingedrungen ist Was wir also leicht tun können, ist zu sagen, ich bin Asteroid. Wow, das habe ich echt vermasselt. Ich benenne Asteroid und Körper. Denn denken Sie daran, meine sind alle große Asteroiden, mittelgroße Asteroiden, kleine Asteroiden Also, wenn Asteroid im Namen des Körperpunktes steht, dann müssen wir Ich werde Body Dot D Asteroid machen, die benutzerdefinierte Funktion wir hier gleich erstellen Und dann mache ich Self.q3. Auf diese Weise kann sich mein Projektil selbst zerstören . Ordnung. Nun, wenn wir es jetzt ausführen würden, würde das natürlich nicht funktionieren Wir werden auf einen Fehler stoßen und jemand wie, Hey, Destroy existiert nicht. Bum. Da haben wir's. Oh, und ich habe das noch nicht herausgezogen. Also ich denke, das ist eine gute Sache. Also, ich werde zum Asteroiden-Skript gehen und hier eine Variable namens New Spawn erstellen Das wird ein Bulle sein, was wahr oder falsch ist Und standardmäßig werde ich das auf „Wahr“ setzen. Ich gehe runter zu dem Match-Statement, das wir hatten, und direkt darüber sage ich, neuer Spawn, und dann hole ich mir den gesamten Match-Statement also von Zeile 13 bis 25 Markieren Sie also von Zeile 13 bis 25 alle und drücken Sie die Tabulatortaste, um sie einzufügen Und abgesehen von dieser if-Aussage werde ich se sagen. Und was ich tun werde, ist , diese Match-Anweisung auszuwählen und sie in meine se einzufügen. Aber was ich tun werde, ist, die Positionsänderungen zu löschen. Also ich ändere in diesen Spielen nur die Geschwindigkeit , weil wir die Position nicht ändern wollen. Wir wollen nur, dass es eine zufällige Richtung hat , in die es sich bewegt. Ordnung. Nun zu der Zerstörungsfunktion. Nun zu dieser Zerstörungsfunktion : In diesem Fall habe ich eine Variable namens ST, und ich lade in diesem Fall meinen kleinen Asteroiden, weil wir gerade mit dem mittleren testen Und ich möchte zwei davon spawnen, also lasse ich eine Viererschleife laufen Also vier ich im Bereich von zwei, richtig? Also werden wir das zweimal durchgehen. Ordnung. Wenn wir also auf diese Vorderschleife stoßen, werden wir eine Instanz unseres kleinen Asteroiden erstellen Wir werden die globale Position unseres instanzierten Asteroiden auf die globale Position unseres aktuellen Asteroiden setzen unseres instanzierten Asteroiden auf unseres aktuellen Asteroiden Wir werden New Spawn auf False setzen. Auf diese Weise stoßen wir nicht auf unser Match-Statement , um die Position zu ändern Wir stoßen nur darauf , um die Geschwindigkeit einzustellen. Und wir haben GParentTad Child aufgerufen , um es der Szene hinzuzufügen. Und wenn wir das zweimal durchgemacht haben, wird unser großer Asteroid von selbst anfangen Wenn wir das jetzt testen, bumm, können wir sehen, dass es hier einwandfrei funktioniert Und falls Sie neugierig auf all die roten Fehler da unten im Debugger sind, sagt uns das nur, dass wir Call Deferred hier während unserer On-Body-Eingabe für das, was wir Body Dot Destroy nennen , verwenden sollten Call Deferred hier während unserer On-Body-Eingabe für das, was wir Body Dot Destroy nennen , verwenden während unserer On-Body-Eingabe für das, was wir Body Dot Destroy nennen Also statt Body Dot Destroy machen wir Body Call Deferred und übergeben Und wenn Sie das jetzt ausführen, werden Sie sehen, dass all diese Debugger In Ordnung. Jetzt zerstören und spawnen wir es. Die mittleren, tut mir leid, die mittleren zerstören und spawnen diese kleinen Jetzt brauchen wir also eine Möglichkeit, damit unser Asteroid weiß, was er spawnen sollte oder welche Version er spawnen sollte und was es ist Wenn er also mittelgroß ist, sollte er klein spawnen, und wenn er klein ist, sollte er sich einfach Wenn es groß ist, sollte es bis mittel spawnen. Also, wie können wir das machen? Also, geh nach oben. Lassen Sie uns eine neue Variable erstellen. Nun, zunächst erstellen wir eine Aufzählung namens Augen, und diese wird groß, mittel klein sein Wir werden einen Export haben, damit wir das ändern können. Also Export in unserer Größe. Und der Typ hier wird die Größe unseres Enums sein , also alles in Kappengröße Und das können wir einfach leer lassen. Wenn wir auf einen unserer Asteroiden und im Inspektor stoßen, sollten wir ihn sehen Stellen Sie also sicher, dass groß auf groß eingestellt ist. Medium ist auf Mittel eingestellt, und Klein ist auf Klein eingestellt. Wenn ich in meiner Hauptszene nachschaue, sollten diese automatisch eingestellt sein, aber sie sind es nicht, also werde ich sie einfach löschen und auch die mittlere Szene hinzufügen. Wahrscheinlich, weil ich sie einfach nicht gespeichert habe. Naja, kein Problem. Ich bringe sowieso nur zwei mittelgroße mit. Alles klar? Aus unserem Asteroiden-Skript können wir jetzt runterkommen Und innerhalb unserer Zerstörung können wir weitermachen und ein Spiel machen, oder? Wir können also Match Size sagen. Es wird eine Nummer größer sein. Bitteschön. Wir werden eine Größe Dot Medium haben und natürlich eine Größe Dot Small. Also das werden wir mit all diesen machen. Jetzt können wir natürlich einfach alles, was wir hier haben, kopieren, ausschneiden und im Grunde genommen in unser Medium einfügen. Weil das unser ganzer Code dafür ist. Ja. Also, wenn wir das hier mit unserem mittelgroßen Asteroiden testen würden, müsste es genauso funktionieren Fantastisch. Wir haben allerdings nur zwei davon gespawnt Es tut mir leid, eins, was hier interessant ist. Nein, da haben wir's. Da sind zwei. Und ich werde es noch einmal testen. Da sind zwei und zwei. Okay, es funktioniert also, oder? Also das funktioniert perfekt. Jetzt werde ich das kopieren und in mein großes einfügen. Es ist nur offensichtlich, dass ich, anstatt die kleine Asteroiden-Szene zu laden, die kleine Asteroiden-Szene zu laden, meine mittlere Asteroiden-Szene hineinziehen werde Wenn wir also einen großen zerstören, sollte er ein Medium erzeugen, und wir zerstören das Medium Es sollte ein kleines hervorbringen. Also lass uns weitermachen und einen Blick darauf werfen. Ich lösche beide aus meiner Szene und ziehe einen großen Asteroiden hinein Und lass es uns testen. Es gibt einen großen Mittelweg, er ist gegangen, als er zu uns kommen musste In Ordnung. Zeit hier, stell das Große auf. Wir besorgen ein Medium, speichern das Medium, wir haben ein kleines. In Ordnung, das funktioniert also einwandfrei. Fantastisch. Nun zu den Kleinen, ja, wir müssen eigentlich nichts tun , außer sie einfach weiterzugeben , weil das sich nur selbst zerstören muss. Letzten Endes müssen wir nichts anderes spawnen Aber vorerst können wir es so lassen, weil wir das später für die Aktualisierung unserer Punkte verwenden werden später für die Aktualisierung unserer Punkte Wir müssen also immer noch unseren kleinen Abschnitt hier haben. Jetzt haben wir also unsere Asteroiden , die nicht nur in verschiedene Richtungen spawnen, sondern wir können sie auch zerstören, sodass sie die nächsten kleineren Oberschenkel hervorbringen Jetzt wäre ein guter Zeitpunkt, um es zu testen und zu entscheiden, ob Sie die Geschwindigkeitszahlen vielleicht ein wenig erhöhen möchten Geschwindigkeitszahlen vielleicht ein wenig erhöhen , weil sie sich für Ihren Geschmack vielleicht etwas zu schnell bewegen Da haben wir's. Wir haben unser Asteroiden-Zerstörungsset 9. Spawn-Timer und Speicherlecks: Lassen Sie uns das vollständige Spawnen einrichten denn jetzt, wo die Zerstörung funktioniert, spawnen unsere Asteroiden korrekt aus dem Bildschirmbereich heraus Lassen Sie es uns also so einrichten, dass es kontinuierlich für uns spawnt Also werde ich hier zu meiner Hauptszene gehen Ich werde Plus machen oder einen Knoten hinzufügen. Ich werde einen Timer hinzufügen. Ich möchte das Spawn-Timer nennen. Okay. Und dieser Spawner wird eine Wartezeit von m haben. Klar. Lass uns 2 Sekunden machen. Vielleicht ändern wir es. Wir können es später jederzeit wieder anpassen. Das wird automatisch starten. Und ich werde weitermachen und meiner Hauptnotiz hier ein Skript hinzufügen . Und ich werde ein Signal anschließen, also klicke ich auf meinen Timer, gehe zur Registerkarte Knoten und doppelklicke auf Timeout Vergewissern Sie sich, dass Mina ausgewählt ist, und klicken Sie auf Verbinden. Und wenn es eine Verbindung herstellt, erhalten wir eine Zufallszahl, genau wie wir es mit unseren Seiten gemacht haben. Wir erstellen eine Variable namens Asteroid gleich Randy und Prozent drei, also bekommen wir Null, eins oder zwei und wir können Asteroid 01 und zwei zuordnen Asteroid Und was wir tun werden, ist ich hier einfach in mein Asteroiden-Skript klicke , weil wir tatsächlich einen Teil davon nehmen können Und es wird dieses lange Set sein, das wir hier haben. Davon ausgehend werden wir entweder den kleinen Asteroiden hervorbringen , ob groß oder mittelgroß Also für Null setze ich das auf meinen großen Wert. Da ist es. Eins wird also mein Medium sein und drei können mein kleines sein. Dann füge ich nur noch Child hinzu und mache Last Dot Instanziate Und das sollte auf all diesen Zeilen funktionieren. In Ordnung. Also werde ich im Grunde eine Zufallszahl wählen, um einen zufälligen Asteroiden zu erzeugen, und dann entweder unseren großen, mittleren oder kleinen laden und ihn dann der Szene hinzufügen Ordnung. Lass uns mal nachschauen, ob das alle 2 Sekunden funktioniert. Bum, bum. Nun, oh, los geht's. Warum kann nicht zerstört werden. Das ist merkwürdig. Okay, bei den kleinen sieht es so aus, als hätten wir einen Fehler, einige davon. Das Problem dabei ist, wenn wir das ausführen würden und wenn wir auf die Registerkarte „ Fernsteuerung“ klicken, dann kannst du alle Asteroiden sehen, die kommen, und wir schauen uns um, und wir sehen, dass kommen, und wir schauen uns um, einige von ihnen einfach zugewiesen werden, wie zum Beispiel Charakter 2 D. Es läuft also nicht immer , weil sie offensichtlich keinen Asteroiden in ihrem Namen haben , wenn ihnen ein generischer Name wie dieser neu zugewiesen wird, wie du hier sehen kannst Also, was wir eigentlich tun müssen, ist, in unser Skript einzudringen Gehen wir zu unserem Projektil. Anstatt den Namen des Asteroiden und des Körperpunktes zu verwenden. Machen wir I Body Dot hat die Methode Destroy. Nun, wenn es die zerstörte Methode hat, dann werden wir sie aufrufen. Und diese eine Änderung sollte das für uns vollständig beheben . In Ordnung. Da haben wir's. Im Moment haben wir damit keine Probleme. Oh, Erkennung. Nein, es geht. Es geht. Nun, Sie können sehen , dass wir hier eine unbegrenzte Anzahl von Asteroiden haben, also verursachen wir ein kleines Speicherleck Also müssen wir das auch bereinigen. also in unseren Asteroiden-Szenen Lassen Sie uns also in unseren Asteroiden-Szenen zu allen dreien übergehen und einen auf dem Bildschirm sichtbaren Notifier hinzufügen , der zwei Wir gehen rüber und wir erhalten TreeNeited-Signal Und wir können das mit unserem Asteroiden-Skript verbinden, Asteroiden-Skript Und alles, was wir dabei tun werden, ist Selfcute kostenlos zu machen und es zu speichern und wir können wieder zu Medium übergehen Der Bildschirm wurde verlassen, verbinden. Ich sollte standardmäßig den gleichen Namen haben, also sollten wir eine Funktion haben, die alle drei Funktionen abdeckt und klein am Knoten, Bildschirm verlassen, verbinden Das heißt also, wenn der Asteroid vom Bildschirm verschwindet , dann zerstört er ihn. In Ordnung Wenn wir uns das jetzt ansehen würden, würde ich auf Remote klicken, damit wir es sehen können Wer lässt uns eigentlich zur Hauptszene gehen, um sie abzuspielen und auf Fernbedienung zu klicken. Du kannst einen Blick darauf werfen. Und wir können sehen, dass sie automatisch zerstört werden, wenn sie vom Bildschirm verschwinden , also verursachen wir dieses unendliche Speicherleck nicht für uns selbst. Ordnung, du kannst also sehen, dass das Spiel hinter sich her aufräumt, okay. In Ordnung, fantastisch. Also, was wir hier sehen, ist wir ein ähnliches Problem haben, oder? Wir sehen all diese zwei Ds in der Gegend. Das sind unsere Projektile. Also sollten wir wahrscheinlich auch die aufräumen. Also können wir etwas Ähnliches tun, oder? Wir können zu unserem Projektil gehen, einen auf dem Bildschirm sichtbaren Notifier zwei D hinzufügen , den Bildschirm verlassen, eine Verbindung zu unserem Projektilskript herstellen und einfach Qqare aufrufen und Wenn wir also nichts abschießen und verpassen, wenn unser Projektil vom Bildschirm verschwindet , Gehen wir zur Fernbedienung und schauen wir uns das an. Und wir sollten sehen all diese Projektile von selbst löschen Also haben wir alles sauber und sauber gemacht. Alles löscht sich ständig von selbst. Alles klar. Fantastisch. Jetzt müssen wir nur noch unseren Punktestand aktualisieren und uns jedes Mal, wenn wir einen Asteroiden zerstören, ein paar Punkte einheimsen. Alles klar. Und dann müssen wir uns natürlich den Tod unseres Spielers ansehen , oder? Wir verlieren unser Leben für den Spieler. Ordnung. Also können wir das nächste Mal in Angriff nehmen. 10. Punktzahl aktualisieren: Lassen Sie uns weitermachen und unseren Punktestand aktualisieren , wann immer wir unsere Asteroiden zerstören Nun, wir könnten Dinge wie Get Parent und Get Child verwenden dann Methoden dafür aufrufen, aber ein besserer Weg, das zu tun ist tatsächlich Signale zu verwenden, oder Also diese Dinge hier, die wir nebenbei haben, nur werden wir unser eigenes benutzerdefiniertes Signal erstellen und es an den Kerl schicken , damit er ihm sagt, dass er den Punktestand für uns aktualisieren soll, und wir sagen ihm, wie viele Punkte es gibt. Stellen Sie jetzt zunächst sicher, dass Ihr Typ ein Drehbuch drauf hat. Meins ist komplett leer. Und dann können wir zu unserem Asteroiden-Skript übergehen und eine neue exportierte Variable erstellen, übergehen und eine neue exportierte Variable erstellen weil wir eine neue benötigen . Jeder Asteroid hat eine andere Anzahl von Punkten, und zufällig stimmen diese tatsächlich mit der Geschwindigkeit überein, die ich eingerichtet habe Wenn wir also einfach die großen Asteroiden im Spiel durchgehen , geben wir meiner Meinung nach 20 Punkte, die mittleren 50 und die kleinen 100 Zufälligerweise sind es genau die gleichen Zahlen, die ich all diese Punkte für meine Geschwindigkeit angegeben habe Und die nächste Variable wir hier brauchen werden, wird tatsächlich ein Signal sein Also geben wir das Wort Signal und dann den Namen des Signals ein. Also sage ich zerstört. Und ich werde offene und geschlossene Klammern genau wie eine Funktion verwenden und geschlossene Klammern genau wie , weil ich einen Parameter hinzufügen möchte Ich werde das PTS nennen und es als Int umwandeln. Wenn wir uns jetzt unseren Asteroiden ansehen und uns die Signale ansehen würden , wir unseren benutzerdefinierten Asteroiden hier namens destroyed sehen und er hat ein Argument namens points site PTS, das ist eine Ganzzahl, die zusammen mit dem Signal übergeben wird Für uns bedeutet das, dass wir jedes Mal, wenn wir dieses Signal senden, auch die Punktvariable mitschicken Also zuerst müssen wir unser Signal tatsächlich verbinden, also werde ich für eine Sekunde zu meiner Hauptszene hier gehen und mein Asteroiden-Skript laden Also machen wir Destroyed , weil das der Name des Signals ist Stellen Sie sicher, dass Sie hier das mit dem Signalsymbol erhalten, das wie ein Wi-Fi-Symbol aussieht. Ich verbinde mich nicht. Jetzt braucht es ein Callable, und das sagt nur wem wir uns verbinden und welche Funktion wir aufrufen Wir können also einfach aufrufbare offene und schließende Klammern sagen. Das erste Argument ist das, woran wir es anhängen wollen. Das ist also unser Elternteil doch das Kind, und der Pass-In-Index ist Null, wenn wir ein Kind bekommen. Komma ist der Name der Funktion , die Sie aufrufen möchten. Also für mich nenne ich es einfach Update SCORE. Und falls Sie sich nicht sicher sind, wie wir zu Get Parent und Get Child Zero gekommen sind, wenn wir einen Blick darauf werfen, haben wir hier einen Asteroiden als Beispiel in unserer Szene Wenn wir dieser Linie folgen, bekommen wir Eltern. Das bringt uns einen Ast nach oben. Also eins rauf und höher führt uns das nach Maine. Und wir wollen zu Guy von Main. Und dafür brauchen wir ein Kind, und das wird das erste Kind sein, richtig? Es ist der erste Zweig da oben. Also lassen wir vom großen Asteroiden die Eltern hochgehen und dann das Kind dazu, wieder runter zu kommen Also stellen wir eine Verbindung zu dem Typen her. Und wenn dieses Signal ausgesendet wird, suchen wir nach einer Funktion namens „Punktestand aktualisieren“ In Ordnung. Also, ich werde die gesamte Zeile kopieren, weil wir hier unten etwas Ähnliches machen werden hier unten etwas Ähnliches wenn wir zu unserer Zerstörungsfunktion kommen. Nur statt Connect rufe ich Disconnect auf. Richtig? Das einzige, was ich ändern würde ist, dass wir einfach drei weitere Buchstaben hinzufügen, oder? Also trennen Sie innerhalb unserer Zerstörungsfunktion die Verbindung, anstatt eine Verbindung herzustellen. Auf diese Weise können wir das Signal einfach irgendwie bereinigen. Das sollten wir nicht müssen, und es wird dir wahrscheinlich gut gehen, wenn du das nicht tust , aber nur zur besseren Übung werde ich weitermachen und es einfach da reinwerfen. Wenn es zerstört wird, müssen wir auch unser Signal aussenden , weil wir das noch nicht getan haben. Bevor wir das Signal trennen, machen wir Destroyed, Emit und wir müssen das Argument übergeben , was in unserem Fall erwartet, dass eine Zahl übergeben wird. Also werden wir unsere Punktevariable übergeben . In Ordnung, mach weiter und speichere das. Also, wenn wir zu unserer GUI übergehen, wissen Sie, lassen Sie uns zuerst weitermachen und Sie werden sehen, dass wir ein Problem haben werden. Stimmt das? Nun, es sieht so aus, als würde sich unser Problem nicht wirklich zeigen, was ein bisschen interessant ist, aber es wird nichts passieren, weil diese Funktion nicht existiert. Leider wird hier keine Funktion aufgerufen. Wenn wir also zu unserem Guy gehen und diese Funktion erstellen, dann glaube ich, ich habe einen solchen Update-Score aufgerufen und wir haben ein Argument, oder? Punkte, also werde ich einfach auf PTS setzen, und das ist eine Ganzzahl. Und wir können weitermachen und einfach das PTS ausdrucken, dass es weitergegeben wurde. Und wenn wir das machen, sollten wir dafür sorgen, dass jedes Mal, wenn wir einen vernichten, all unsere Punkte ausgedruckt werden. Da haben wir's. Da haben wir 100 Punkte. 20, 50, 100, 50 richtig, es sieht also so aus, als ob das alles gut funktioniert. Wir müssen es nur visuell aktualisieren. Aber jetzt, wo wir wissen, dass das funktioniert, müssen wir unsere Punkte im Auge behalten und das tatsächliche Etikett aktualisieren. Also werde ich hier in unserem Guy eine Variable erstellen. Das wird unser Ergebnis sein. Das wird natürlich eine Ganzzahl sein und bei Null beginnen. Also das Erste, was wir tun werden, ist Punktezahl plus gleich PTS Deshalb können wir die Punkte zu unserer Punktzahl hinzufügen. Und dann müssen wir das Etikett selbst aktualisieren. Also lass uns weitermachen und wir können hier unser Dollarzeichen verwenden und unser Punkteetikett bekommen. Punkttext. Und wir können das einer Zeichenfolge unserer Punktzahl gleichsetzen. Also, das wird ein bisschen komisch aussehen. Wenn Sie einen Blick auf unsere Punkte oben links werfen. Komm schon, dreh dich ein bisschen Hippie um. Und Sie sehen, all diese Nullen sind verschwunden, und die Zahlen ändern sich natürlich von selbst, aber Sie sehen, dass sie ständig wachsen, richtig Also, wenn wir bei 1.000 sind, werden wir hier einfach eine weitere zufällige haben hier einfach eine weitere zufällige Soll ich das nehmen? Da haben wir's. Also sind wir um eine zusätzliche Zahl gewachsen. Und das könnte dir gefallen. Ich nicht, besonders wenn ich ein klassisches Spiel wie dieses mache. Also, was ich am Ende eigentlich tun werde . Also, wenn wir diese Punktzahl in eine Zeichenfolge umwandeln, mache ich Nullen im Punktfeld und füge dort eine Zahl ein Wenn ich jetzt zum Beispiel neun eingeben würde, schauen wir uns das an Wir können weitermachen und den Punktestand aktualisieren. Hey, mach weiter und verarsch mich. Das war unhöflich. Bum, du kannst sehen, dass wir all diese Nullen von Deva haben Und jedes Mal, wenn wir es aktualisieren, sieht es ein bisschen besser aus, besonders auf einem Retro-System, vor allem, wenn Sie auch eine maximale Punktzahl haben , die erreicht werden könnte Ordnung. Nun, ich bin mir nicht hundertprozentig sicher, was die maximale Punktzahl ist, aber das sieht immer besser aus, wenn man die Null ausfüllt Also habe ich einfach nachgesehen, und die maximale Punktzahl ist 99.990, also das gibt uns eins, zwei, drei, vier, fünf, also das gibt uns fünf Slots Also lass uns weitermachen und das leiser stellen, und wir werden das überprüfen Überprüfe diese Zahlen noch einmal. Wenn wir es mit fünf füllen , war das schnell. Wir müssen hier nur etwas auf die Tafel bringen . Da haben wir's. Und das würde uns ein mögliches Maximum von 99.990 geben. In Ordnung, also los geht's. Also, wenn du authentisch sein willst, fülle es mit fünf Nullen Da haben wir's. Und da ist unsere kleine Punktzahl. Wenig auf Anhieb. Guck, guck. Und Bank, das wäre ein verlorenes Leben für uns gewesen , aber los geht's Hoppla. Halte immer noch die A-Taste gedrückt Aber da haben wir's. Unser Punktestand wird jedes Mal aktualisiert, wenn wir unsere Asteroiden zerstören 11. Leben aktualisieren: Früh. Also werden wir uns das Hinzufügen von Gesundheit ansehen, oder? Also werden wir hier Spielerleben zu unserem Spiel hinzufügen. Ich weiß. Und da wir hier keine Sprites haben, wir unseren Spielercharakter entworfen Wir müssen die Dinge ein bisschen anders machen , aber das ist in Ordnung Es wird nicht allzu schwierig für uns sein. Das Erste, was ich tun möchte, ist hier in meinem Goey. Weil sich die Dinge ein bisschen ändern werden. Ich werde in mein Guy-Skript gehen. Ich werde einen Export erstellen, und das wird meine Score-Label-Variable sein. Das wird ein Typlabel sein. Und ich werde das einfach in meinem Code ersetzen, damit ich mir diese Variable nicht schnappen muss. Also kann ich auf Guy klicken und in meinem Inspektor sehe ich die Punktebezeichnung. Klicke darauf und ich kann ihm meinen Punkte-Label-Knoten zuweisen. Ordnung. Also, ich habe das getan weil ich glaube, dass ich das ein bisschen verschieben werde , wenn wir unser Leben einrichten es also auf diese Weise machen, sollten wir es nicht in unserem Code aktualisieren müssen. In Ordnung, also gehe ich zu meinem Kauf. Ich werde einen VBox-Container hinzufügen. Mit einer VBox können wir verschiedene Dinge einfach vertikal stapeln Wenn ich also zum Beispiel ein Label hinzufüge, füge irgendeinen beliebigen Text hinzu, und du wirst sehen, ob ich das immer wieder dupliziere Sie werden sehen, dass alles vertikal perfekt verteilt sein wird , alles nett und ordentlich für uns, oder Und alles gleichmäßig verteilt. Also eine VBox ist wirklich nett. Ordnung, also werde ich weitermachen und das Notenetikett nehmen und es in die VBox kleben In Ordnung. Und wenn wir uns den Kerl ansehen, können wir sehen, dass das Notenlabel immer noch festgelegt ist. Und deshalb müssen wir unseren Code nicht bearbeiten. Und wenn wir es testen, können wir das selbst sehen. Da unten ist einer, und wir können unseren Punktestand sehen und alles funktioniert immer noch einwandfrei. Wir müssen nichts aktualisieren. Es ist also nett, manchmal solche Exporte zu verwenden, besonders wenn Sie nicht wissen, ob Sie beim Entwerfen Ihres Ich wie dieses Dinge verschieben werden . Ordnung. Als Nächstes muss ich in meiner VBox eine H-Box erstellen Jetzt funktioniert eine HBox genauso, ein HBox-Container, nur dass sie für Dinge gedacht ist, die horizontal, Seite zu Seite statt vertikal auf und ab laufen Seite zu Seite statt vertikal auf und ab Und innerhalb dieser HBox werde ich ein Steuerelement hinzufügen Eigentlich werde ich das Steuerelement noch nicht hinzufügen , weil ich Ihnen zeigen werde , warum Also werde ich auf meinen Player klicken. Ich nehme die Linie zwei D wo wir unser Raumschiff zeichnen Ich werde C kontrollieren und das kopieren. Geh zurück zu meiner Hauptszene und in den Sage-Box-Container. Ich drücke Strg V, um es hineinzukopieren. Und du wirst Whoops bemerken. Wenn wir nur ein paar davon haben, wird nichts horizontal organisiert, wie Sie es bei der V-Box gesehen haben Und das liegt daran, dass es ein Kontrolltyp sein muss, oder? Es muss also ein grüner Knoten sein. Deshalb werden wir in die Ace-Box rein und hinein kommen , wir werden ein reguläres Steuerelement hinzufügen, und ich gebe dem Steuerelement hier einfach eine Größe, eine untere H-Box braucht tatsächlich auch eine. Aber meine Kontrolle, ich werde weitermachen und das benutzerdefinierte Minimum hier auf 15 mal 20 einstellen das benutzerdefinierte Minimum hier . Ich weiß es nicht. Das könnte ein kleiner Knabberei sein. Ich nehme hier meine Linie zwei D und ziehe sie runter und überlasse sie der Kontrolle Doppelt. In Ordnung. Also, nur damit ich die Dinge etwas klarer sehen kann, wähle ich meine Steuerung. Ich werde die Clip-Inhalte im Inspektor einschalten und jetzt meine zweite Zeile D auswählen Dadurch kann ich sie etwas besser verschieben und herausfinden, wo diese Grenzen liegen. Und ich gehe runter zu meiner Drehung und stelle -90 Grad ein, nur damit ich es nach oben drehen kann, und ich sehe, dass ich es weiter nach unten bewegen muss Hoppla, genau da unten. Ordnung. Jetzt kann ich die Clip-Inhalte hier ausschalten. Und ich kann sehen, dass mein Y etwas zu viel ist, also vielleicht auch 15. Das ist vielleicht ein bisschen kurz. 16. Sobald ich damit zufrieden bin. Bevor ich es einfüge, kann ich mir mein H-Feld ansehen, und wenn ich dieses Steuerelement jetzt einfach kopiere, wähle ich es aus und mache Control D. Wir können jetzt sehen, weil es sich innerhalb eines Steuerelements befindet, dass sie alle schön gleichmäßig verteilt sind Also, wenn wir weitermachen und es spielen, können wir sehen, dass es da oben gut aussieht, oder? So wie unser Schiff und es ist Teil unserer Benutzeroberfläche. Da wir also kein Sprite hatten, um dorthin zu fahren, nutzen wir nur die Linie zwei D, mit der wir bereits unser Schiff gezeichnet Und jetzt, wo unser Schiff funktioniert und Sie sehen, wird es hier vor uns liegen, genau wie der Rest der Benutzeroberfläche, nur als Schuh Und jetzt müssen die wirklichen Leben funktionieren. Also müssen wir Leben abziehen , wenn wir von einem dieser Asteroiden getroffen werden , anstatt ihn so herumschieben zu können Dafür braucht unser Spieler Live. Gehen wir also zu meinem Spielerskript. Und willst du unser Leben dort platzieren? Nein, weißt du, ich glaube, ich werde es meinem Gui geben. Und ich werde auch einen weiteren Export für meine HBox erstellen. Ich sage Export unseres Lives-Containers, und das wird eine HBox sein Und ich werde hier eine weitere Variable für Lives erstellen, die natürlich eine Ganzzahl sein wird, und der Startbetrag hier ist drei Und wir werden weitermachen und eine weitere Funktion namens Update Lives erstellen . In Ordnung, und wir werden vorerst einfach bestehen. Ordnung. Die Frage ist also, wie erkennen wir, wenn wir dem Spieler begegnen oder wenn der Spieler auf einen Asteroiden trifft Um die Kollision durchzuführen, um unser Leben zu beeinträchtigen und unsere Signale weiterzuleiten, gehen wir zu unserem Asteroiden und in unseren physikalischen Prozess Wir werden überprüfen, ob unser Asteroid mit irgendwas kollidiert Sagen wir, die Anzahl der Balkenkollisionen entspricht der Folie, die Anzahl der Kollisionen. Ordnung? Also werden wir sehen, ob wir mit irgendwas kollidieren, und wenn ja, richtig Also sagen wir, ob Kollisionen zählen, was bedeutet, dass wir mit mindestens einem Objekt kollidieren , damit das stimmt, oder? Das ist dasselbe wie zu sagen, wenn die Kollisionszahl größer als Null ist, oder? Es ist dasselbe, weniger Worte. Wenn also Kollisionen zählen, dann bekommen wir die Kollision und weisen sie der Slide Collision zu , und wir geben Index Null ein, damit wir das erste Objekt bekommen, mit dem wir kollidieren Dann holen wir uns den Collider selbst. Bisher entspricht Collider Collision Dot et Collider. Und wenn wir das einfach ausdrucken würden, um zu sehen, was wir haben, los geht's. Lassen Sie uns das überprüfen und wir werden sehen, wann unsere Asteroiden auftauchen, wenn wir mit unserem Schiff darauf stoßen Wir können sehen, dass der Körper eines Charakters zwei D getroffen wird und er den Namen Spieler trägt Wir erkennen also definitiv , wann der Spieler von den Asteroiden getroffen wird In Ordnung. So weit so gut. Wir wissen, dass wir etwas treffen und dieses Etwas ist unser Spieler. In diesem Fall muss es also der Spieler sein. Es gibt keine Möglichkeit, dass es nicht so ist. Aber um auf Nummer sicher zu gehen, könnten wir sagen, dass der Name des Collider-Punkts den Spielern entspricht Also, wenn wir das noch einmal überprüfen wollen , könnten wir so etwas machen Und wir haben bereits überprüft, ob es die Spieler trifft. Was wir hier machen können, ist selbstpunktfrei, oder? Wir können den Asteroiden also zerstören, wenn wir auf ihn stoßen. Und wir können das funktionierend testen. Testen Sie immer Ihren Code. B, p, p, p, bumm. In Ordnung, so weit, so gut. Jedes Mal, wenn wir von einem Asteroiden getroffen werden, wird der Asteroid zerstört Bum. Und wir können sie immer noch erschießen und zerstören. All das funktioniert immer noch. Aber Bum, Bum. In Ordnung. Also, was wir hier auch tun wollen, ist, dass wir hier ein Signal aussenden müssen , oder? Weil wir dieses Signal brauchen, um unser Leben durch den Spieler und den Asteroiden auf den neuesten unser Leben durch den Spieler und den Asteroiden auf den Also brauchen wir hier ein neues Signal von unserem Asteroiden. Also sagen wir Signal, Asteroideneinschlag. Und dafür müssen wir keine Argumente vorbringen. Wir müssen nur wissen, dass der Asteroid getroffen wurde. Wir nehmen das, kommen runter. Und sobald wir uns mit dem Spieler verbinden , bevor wir uns befreien, werden wir dieses Signal aussenden. Also, Asteroideneinschlag emittiert. Und dann können wir die Verbindung trennen. Der Asteroid hat die Verbindung unterbrochen. Mir ist bewusst, dass wir es noch nicht angeschlossen haben, aber wir werden es hier tun. Und das wird unserem Connect tatsächlich sehr ähnlich sein . Also werde ich einfach weitermachen und das Argument dort aus dem Callable kopieren das Argument dort aus dem Callable Also stellen wir eine Verbindung zur GUI her und übergeben diese Funktion, von der aus die Verbindung getrennt werden soll Und in diesem Fall heißt meins Update Lives. In Ordnung, also gebe ich das weiter. Nun, es sieht so aus, als würde mir hier eine Klammer fehlen. Lass uns sehen. Du bist Teil dieses Sets, du bist Teil dieses Sets. Und ich habe einen zu viel. Da haben wir's. In Ordnung. Also kopiere ich die ganze Zeile. Ich gehe zu meiner Ready-Funktion über. Und genau wie das zerstörte Signal verbinde ich dieses. Also verbinden statt trennen. Da haben wir's. Dann haben wir zwei Signale, die wir verbinden und bereit sind, und eines, das wir aussenden und trennen, wenn wir zerstört werden, und eines, das wir aussenden und trennen, wenn wir den Spieler treffen. Okay, jetzt brauchen wir diese Funktion um tatsächlich etwas zu tun In unserem Gooey-Skript können wir uns das ansehen und unser Leben aktualisieren Also können wir Leben ohne Sequals eins machen. Und dann müssen wir unser Lives-Label aktualisieren. Muss ich das aktualisieren? Weil ich den Namen geändert habe? Das tue ich. Geh, weil ich da einen Tippfehler hatte. Also nehme ich meinen Lives Container Dot Get Children oder Get Child Count Womit wollen wir weitermachen? Ich werde das im Grunde mit dem einstellen, was wir entfernen wollen. Wir machen es bis zu zwei. Also werde ich Lives Container Dot, Get Child machen. Ich werde hier unsere Lebenszählung weitergeben. Also wird es um drei Uhr beginnen, und wenn wir getroffen werden, werden daraus zwei. Also zwei schnappen sich unser neuestes, unser neuestes hier, letztes Leben, weil wir nur drei haben, und es kommt auf Index 01, zwei, und ich nenne Dot Hyde Wir würden Hyde deswegen anrufen? Nein, wahrscheinlich, weil es an dieser Steuerung liegt Also, was wir stattdessen tun, nur weil es nicht weiß, was ein Kind ist, sagen wir, dass Punkt sichtbar gleich falsch Sachen, wenn wir versuchen, dass wir unser Leben sehen sollten. Wir sehen, wie der erste hier ganz rechts verschwindet, sobald wir von einem Asteroiden getroffen werden Bum, da haben wir's. Und es sieht so aus, als ob wir irgendwie von einem zweiten getroffen wurden. Stimmt das? Alles scheint zu funktionieren. Ich bin mir nicht sicher , was das war. Vielleicht ist einer entstanden, als ich weggeschaut habe Aber da haben wir's. Wir haben das natürlich am Laufen, das wird jetzt ausgestrahlt. Oder zumindest sollte es, tut es aber nicht. Ein bisschen neugierig sollte uns sagen , dass das wegen des Index nicht funktioniert. Das ist irgendwie merkwürdig. Ich schätze, wir werden negativ, vielleicht kommt es wieder. Wie dem auch sei, ich komme hier durch. Also verschwinden unsere Leben. Unser Leben wird aktualisiert. Und auf dieser Grundlage bräuchten wir ein Leben, um ein Spiel zu beenden oder nicht. Aber zuerst möchte ich hier eine Mindestzahl oder eine Höchstzahl festlegen , damit wir in unserem Leben nicht unter Null fallen können. Ich werde also sagen , dass Leben gleich sind. Und wir wollen, dass die maximale Zahl zwischen Leben minus eins und dem zweiten Argument Null ist. Auch wenn wir das nicht brauchen sollten, werde ich es nur für den Fall einsetzen, um sicherzustellen, dass dort kein Bug passiert. Unser Leben sollte also niemals unter Null fallen. Und da haben wir es. Wir haben dieses Problem und alles, was wir jetzt tun würden, ist , das Spiel für beendet wenn wir Null erreichen und die Szene neu starten. In Ordnung. Jetzt machen wir es hier , weil wir nur die Leben auf den neuesten Stand bringen wollen . Das haben wir gemacht. Und beim nächsten Mal werden wir das Spiel neu einrichten und neu starten. 12. Spiel neu starten und neu starten: Bevor das Spiel vorbei ist, gehe ich zu meinem Typ über. Ich werde hier noch eine Anmerkung hinzufügen . Ich werde ein Etikett hinzufügen. Das wird mein Game over Label sein. In diesem Text heißt es einfach Game Over. Ich werde es hier oben verankern. Ich werde es in den Absender des Bildschirms einfügen , um zu sagen, dass das Spiel vorbei ist, wenn wir verlieren. Wir können in unseren Code gehen und mit unseren Update-Lives eine neue Funktion erstellen. Das Spiel ist vorbei und wir werden es einfach überprüfen, nachdem wir den Bildschirm aktualisiert haben. Ich sage, mein Leben ist gleich Null, dann nennen wir unsere Game Over-Funktion Und die Game-Over-Funktion Nun, ich brauche das nicht, um es zu zeigen Ich lege den Ausweis wieder rein. Ich werde hier einen Export für mein Spielelabel, das GameOver-Label, erstellen mein Spielelabel, das GameOver-Label, Ich werde das und den Inspektor hier ganz schnell zuweisen. GameOver-Label. Also was tun GameOver-Label Punkt Vsb ist gleich Crew Wir können den Baum pausieren Es ist also ein G-Baum. Und dieses Mal werde ich den Baum tatsächlich nicht pausieren. Ich glaube, wir wollen den Spieler von den Goey holen. Ich denke, der Spieler kann mit der zweiten umgehen. Richtig. Wie will ich das machen? Ordnung, also werde ich hier in meinem Hauptmenü auf meinen Player klicken hier in meinem Hauptmenü auf meinen Player Ich klicke mit der linken Maustaste darauf und ziehe es hinein. Und ich werde veröffentlichen, und das sollte mir den Pfad zu meinem Player zeigen. Also werde ich einfach Dot Qu Free sagen, um meinen Player zu löschen. Sobald dir die Leben ausgehen und du zu einem Spiel übergehst, sage ich, ich warte Hol dir Tree, erstelle einen Timer. So können wir weitermachen und 3 Sekunden warten oder so. Du kannst weitermachen und mit diesem Timer spielen und sehen, was dir gefällt. Punkt TO, richtig? Das haben wir schon einmal gemacht. Und dann sagen wir einfach Get Dot. Aktuelle Szene neu laden. Schauen wir uns also an , wenn ein Spiel vorbei ist. Zu tun. Wir können reingehen. Wir können spielen. Wir können schießen, Punkte sammeln. Aber, aber, bah. Es ist alles in Ordnung Bum, wir wurden getroffen, wir haben ein Leben verloren. Bum, wir haben zwei Leben verloren. War unser kleines Schiff. Das gibt es, und wir werden unser letztes Leben verlieren. Bum, das Spiel ist vorbei. Warte 3 Sekunden. Das Spiel wird neu geladen und wir können weiterspielen. Ordnung. Also da haben wir es Wir haben unser Spiel hinter uns , einfach eingestellt. Und wir sind bereit, hier einfach mit unserem Spiel zu beginnen. Wenn du willst, dass es ein bisschen authentischer ist, um den schwarzen Bildschirm zu haben, kannst du entweder in deine Projekteinstellungen gehen und ich suche einfach nach dem Wort Farbe und gehe in eine Renderumgebung. Standardfarbe. Du kannst hier reinkommen und diese Farbe ändern, wenn du willst. Das ist die Standardfarbe des Hintergrunds. Sie können das tun, wenn Sie möchten. Aber da ich es normalerweise vorziehe , hier die Standardfarbe beizubehalten, können Sie stattdessen einfach reinkommen und ein Farbwrack anrichten und Ihre Anker so einstellen, dass sie voll Nun, es sieht so aus, als ob das nicht der Fall sein wird , weil wir nicht die Kontrolle haben Ich verstehe. In Ordnung. Also müssen wir einfach reingehen und das selbst einrichten Also kannst du die Größe einfach so einstellen, wie du willst. Solange es groß genug ist, den blauen Bereich abzudecken, sollte es dir gut gehen. Und komm rein und ändere es auf Schwarz. Und da wir nur zeigen werden, was im blauen Bereich ist, es egal , ob es größer ist. Also machen wir weiter und spielen Oh, und ich muss die Reihenfolge ändern. Also muss ich mir die Farbe zurückziehen und sie tatsächlich ganz nach oben , so dass mein Spieler oben drauf ist, damit wir sehen können. Und da hast du's. Wir haben etwas , das durch den schwarzen Hintergrund dem Original noch näher kommt. Aber auch das ist nur eine persönliche Entscheidung, ob Sie das haben möchten. B, Bum, aber p, p, p. Und es sieht tatsächlich aus wie ein Unser-Spiel. Oh, und falls du dich fragst warum das Scoring nicht funktioniert. Wahrscheinlich nur, weil ich Color Rect als erstes Kind entwickelt habe. Also Index Null, ich versuche, meine Signale mit Color Rect statt mit der GUI zu verbinden . Also wenn ich es einfach runterziehe, so dass die GUI kommt, dann verschwinde da raus. Da haben wir's. Damit der Typ zuerst dran ist, dann sollte das unser Problem hier lösen. Siehst du, Bum, Leben verbindet sich jetzt und unser Ergebnis. Das ist also nur eine ordnende Ebene in der Szenenhierarchie. Das ist also nur etwas, das Sie im Hinterkopf behalten sollten, wenn Sie es natürlich auf diese Weise tun würden es natürlich auf diese Weise tun und nicht Ihre Projekteinstellungen vornehmen würden. In Ordnung, bitteschön. Wir haben unsere Punkte Wir haben Leben. Wir haben GameOver Wir müssen neu starten. Und wir haben wieder einmal ein vollständiges Spiel gemacht, ohne Ressourcen zu benötigen Wir haben alles aus der Engine heraus gemacht. Alles klar, das reicht. Wir haben jetzt Asteroiden. Und wenn du noch einen Schritt weiter gehen willst, kannst du immer wieder weitermachen, du kannst Sprites online finden, oder du kannst die Linie zwei D benutzen und die Raumschiffe erstellen , die du gesehen hast, und ihnen Punkte zuweisen Und dasselbe, gib ihnen ein Signal, verbinde es mit deiner GUI, sende die Punkte damit, genau wie wir es mit den Asteroiden tun