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