Transkripte
1. Einführung: Hallo und
willkommen zu meinem Kurs über die Entwicklung einer
Zwischenplattform, eines Spiels mit der
Unity Game-Engine. In diesem Kurs werden wir das Spiel, das Sie gerade
sehen, von
Grund auf neu erstellen . Dabei lernst alle Grundlagen des
Spieldesigns und der Spieleentwicklung, einschließlich allem, was du wissen
musst, um ein Spiel wie
dieses selbst zu Dieser Kurs wird in 18 Videos
aufgeteilt, von denen jedes ein
anderes Thema des Spieldesigns und eine neue Phase
unserer Spieleentwicklung Von den ersten Schritten mit dem
Schreiben von Code bis
hin zu Partikelsystemen
und Audiomanagement. Mit diesem kurzen
sechsstündigen Kurs können
Sie in weniger als einem Tag alles
lernen, was Sie wissen
müssen, um mit der
Entwicklung Ihrer
eigenen Spiele und Unity zu beginnen . Weitere Informationen zu
diesem Kurs und seinem Format Sie unten im Trailer zu den anderen
Klassen. Und wir sehen uns in der
ersten Lektion. Prost.
2. 1. Unsere Szene einrichten: Hallo, und willkommen zum
ersten Video dieses Kurses über den Aufbau einer
Zwischenplattform, eines Spiels mit Unity. Bevor ich anfange,
möchte ich mich bei Ihnen ganz herzlich für Ihre Unterstützung
bei der Anmeldung zu
diesem Kurs oder Kurs bedanken für Ihre Unterstützung
bei der Anmeldung zu
diesem Kurs oder Kurs Es ist
diese Unterstützung, die es
mir ermöglicht , weiterhin Kurse zu geben Und ich weiß es wirklich zu schätzen
, dass du meins gewählt hast. Wenn Sie sich
die Roadmap angesehen haben, haben
Sie im Grunde einen
Überblick darüber
gesehen , was dieser Kurs beinhalten wird , und über all
die verschiedenen Videos und Abschnitte, die
wir anbieten werden wirst du auch das
Spiel gesehen haben, das wir Bis zum Abschluss
dieses Kurses wirst du auch das
Spiel gesehen haben, das wir entwickeln
werden. Hoffentlich sieht dieses Spiel
ziemlich cool aus und du freust dich, ein
solches Spiel machen zu können. Wenn es kompliziert aussieht, mach dir keine Sorgen, es ist eigentlich gar nicht
so kompliziert. Und du wirst ziemlich überrascht sein wie fähig du bist, ein solches Spiel zu
machen. Überhaupt nicht so viel Zeit. Davon abgesehen nimmt
die Entwicklung
eines Spiels natürlich etwas
Zeit in
Anspruch und wir können nicht alles in einem Video zusammenfassen. In dieser Lektion
werden
wir lediglich den Unity-Editor vorstellen. Und wir werden unsere Szene
erstellen, um festzulegen, wo wir mit der Entwicklung unseres Spiels
beginnen können. Wenn Sie Unity noch nie
benutzt haben, schlage
ich vor, dass Sie sich
das gesamte Video ansehen. Wenn Sie
Unity ein bisschen benutzt haben und
das Layout des Editors tatsächlich verstehen, können
Sie
zu einem Zeitstempel springen oder direkt
auf dem Bildschirm eine Stelle einblenden, zu der Sie springen können,
denn wenn wir anfangen, Unity tatsächlich zu
verwenden, um unsere Szene zu erstellen Aber wenn Sie Unity noch nie
benutzt haben, empfehle
ich Ihnen, sich
die nächsten Minuten
anzusehen , in denen ich
genau erkläre , was
alles ist und wie der Editor funktioniert.
Lassen Sie uns also anfangen. Bevor wir beginnen,
verwende ich Unity Version 2023, 0.1 0.5 und habe das
Standardlayout aktiviert. Ich empfehle Ihnen, zu
demselben Layout wie ich zu wechseln, damit Sie den Vorgang verfolgen können. Sie tun das, indem Sie ganz nach
oben
gehen , hier auf Fenster klicken, dann zu Layouts gehen und einfach das Standardlayout auswählen. Es sollte deine Szene neu laden
und sie so aussehen lassen. Ich mag dieses kleine
KI-Navigationsfenster nicht. Ich werde das einfach
da runterziehen und es wird verschwinden. Und dann steht uns im Grunde der gesamte Unity-Editor zur
Verfügung. Ich fange hier oben
links von
vorne an . Das ist unsere Szene. Und Sie können sehen, dass wir mit
einer Szene namens Sample Scene beginnen. Dies ist eine Standardszene
, die Unity für uns erstellt hat. Und wenn wir auf
diesen kleinen Pfeil klicken, können
wir sehen, dass alles, was sich in der
Szene gerade befindet, eine Kamera ist. Diese Kamera ist
im Grunde das
, was unser Spiel aufzeichnet, und das werden
im Grunde die Augen unseres Spielers sein. Diese Kamera ist eigentlich ein
sogenanntes Objekt, darauf
komme ich später noch ein. Aber im Grunde kann man eine Szene als eine Art Level in einem Spiel vorstellen und sich das Objekt
als die Dinge im Level vorstellen. Ein Spieler, eine Kugel, eine Münze. Das werden Objekte sein und dann
wäre ein Level eine Szene. Im Moment
haben wir nur eine Ebene und unser einziges Objekt ist
die eigentliche Kamera. Aber ihr werdet sehen, wenn wir unser Spiel entwickeln und uns immer
weiter entwickeln, wir unsere Szene
bevölkern und immer mehr Dinge hinzufügen. Im Grunde genommen handelt es sich um dieses Hierarchiefenster , in dem
ihr Objekte oder Dinge in
eurem Spiel
erstellen werdet Objekte oder Dinge in
eurem Spiel
erstellen , ihr
wollt einen Charakter erstellen Wenn du so ziemlich alles
an deiner Szene
ändern willst , wirst
du
das hier tun, indem du Objekte hinzufügst oder
entfernst Dann hier drüben, in diesem großen
Fenster in der Mitte werden
Sie das Layout
Ihrer Szene
bearbeiten, oder wo die Dinge sind, wie groß sie sind, all
diese Dinge. Dort
wirst du es machen. Hier ist es so, als ob
das deine Palette ist und das ist deine Leinwand, wenn du eine Kunstanalogie verwenden willst Aber da wir den
Unity-Editor immer häufiger verwenden, wird
das für Sie zur
Selbstverständlichkeit werden Wie man diese beiden Dinge benutzt, vor allem aber
auch den Inspektor, worauf ich gleich noch eingehen werde. Bevor ich
zum Inspektor übergehe, möchte ich als letztes dieses Spielfenster
erwähnen. Und das ist im Grunde
nur ein Testraum. Im Moment ist es nur blau , weil wir
nichts in unserer Szene haben. Aber wenn ich etwas
in unsere Szene hier drüben einfügen würde , sagen
wir, ich lege einen
kleinen Block hinein und gehe zum Spielfenster, dann könnte
ich es sehen. Und das werde ich dir später zeigen
, wenn wir anfangen, unser erstes Level,
oder besser gesagt unsere Szene,
einzurichten . wir weitermachen, haben wir
das Inspektorfenster, und
hier sehen Sie sich im Grunde
Informationen zu einem bestimmten Objekt an. Sie können also sehen, ob wir kein Objekt ausgewählt
haben.
Es ist leer, weil wir nichts haben, was wir
hervorheben. Wenn wir jedoch auf ein
Objekt wie unsere Kamera klicken, können
wir alle
Informationen über unser Objekt sehen. Und ich werde das erklären, wenn wir unsere Sachen zu unserer Szene
hinzufügen. Aber im Grunde genommen hat diese
Transformationskomponente hier jedes einzelne Objekt, und es geht im Grunde darum, wie Sie Ihr Objekt
in dieser Szene ausrichten Es hat eine Position,
es hat eine Drehung, es hat eine Skala,
die einer Größe entspricht Und du kannst
all diese Werte ändern. Natürlich werden wir
zwei D-Spiele verwenden, sodass wir die Z-Achse
für die meisten dieser Dinge nicht wirklich
benötigen . Aber es ist praktisch für Rotation, weil die
Z-Achse tatsächlich auf diese Weise gedreht wird. Sie können sehen, wenn wir es so
ändern, können
wir es tatsächlich drehen. Aber unabhängig davon bearbeiten wir bei dieser
Transformation die Position,
unsere Rotation und den Maßstab unserer Objekte. Darunter haben
wir eine Kamera. Und du könntest verwirrt sein,
weil du sagst, okay, nun, das ist eine
Kamera. Was ist das? Das ist eigentlich ein Skript
, das von Unity erstellt wurde. Um all das für uns zu programmieren, ganze Menge
Code in Form
dieser Dinge, die
als Komponenten bezeichnet werden, für
uns vorgeschrieben
hat vereinfacht Unity effektiv den
Spieleentwicklungsprozess, indem es
eine ganze Menge
Code in Form
dieser Dinge, die
als Komponenten bezeichnet werden, für
uns vorgeschrieben in Form
dieser Dinge, die
als Komponenten bezeichnet werden, für
uns . Das
klingt vielleicht nach einer Menge Arbeit,
aber glauben Sie mir, es
wird zur
Selbstverständlichkeit , wenn Sie
es immer häufiger verwenden. Im Grunde ist diese Hauptkamera ein Objekt, das eine Position
und eine Drehung in der Skala hat . Und dann haben sie dieses
vorgefertigte Unity-Skript hinzugefügt das Camera heißt, sowie dieses
Audio-Listener-Skript, über
das Sie sich keine Gedanken machen
müssen, aber es ist im Grunde
Teil der Kamera Und diese beiden Skripte machen
diesen Vorgang so, wie er funktioniert. Und Sie können andere Skripte hinzufügen , die als Komponenten bezeichnet werden. Oder Sie können Ihre eigenen Skripte hinzufügen , die einfach Skripte genannt werden. Und im Grunde
wird das so sein, wie Sie Ihr Spiel in Unity programmieren. Wir werden ein Spielerobjekt erstellen. Nehmen wir dann an, wir möchten
ein Sprite hinzufügen , das wie ein
Bild oder ein Foto aussieht, also im Grunde so, wie wir
unseren Spieler darstellen Wir werden eine
Sprite-Renderer-Komponente hinzufügen , die es uns ermöglicht, unserem Spiel etwas Kunst
hinzuzufügen Wir werden eine
Box-Collider-Komponente hinzufügen, was im Grunde der Art und Weise entspricht, wie
wir Physik hinzufügen werden Im Grunde funktioniert das Ganze in
Unity so , dass es
diese Objekte erstellt und
entweder vorgefertigte Skripte,
die Komponenten sind,
oder unsere eigenen Skripte hinzufügt die Komponenten sind,
oder unsere eigenen Skripte Richtig, im Moment haben
wir die Kamera, sie ist mit
zwei vorgefertigten Skripten vorinstalliert. Aber wir können natürlich auch
andere Skripte hinzufügen, wenn wir wollen. Und wenn wir
unsere eigenen Objekte erstellen, zeige
ich Ihnen, welche Skripte
wir hinzufügen werden. Wenn Ihnen das alles jetzt
etwas
verwirrend erscheint , machen Sie sich darüber
keine Gedanken. Es wird sehr,
sehr einfach werden , je mehr wir Unity
verwenden, aber im Grunde ist das der Kern der Funktionsweise des
Objektinspektors Wenn wir
hier nach unten gehen, ist
das nur das Projektfenster. Es ist im Grunde nur eine
Darstellung des Ordners , in dem dein Programm oder besser gesagt
dein Spiel gespeichert ist. Sie können sehen, dass ich hier einen
Ordner namens Scenes habe, der sich in meinem Assets-Ordner befindet. Aber ich habe Assets
und Pakete, und diese sind tatsächlich auf meinem Computer
gespeichert. Dies ist nur die Art und
Weise, wie Unity es Ihnen zeigt Anstatt den Datei-Explorer zu verwenden, ist
es in Unity selbst. Es ist also genau dasselbe. So
werden wir
im Grunde Dateien in unsere
Spiele importieren oder neue Dateien erstellen. Es ist alles hier gespeichert, und dann
geht das tatsächlich auf deinen Computer. Das
zeigt dir nur, wo es ist. Und zu guter Letzt, das
allerletzte, was wir hier haben,
ist ein Konsolenfenster. Nun, das ist im Moment nicht
besonders wichtig ,
weil wir noch nicht
mit dem Programmieren begonnen Aber es ist sehr nützlich
, weil wir
hier in Lage sein werden, Dinge
auszudrucken Wenn Sie schon einmal programmiert haben, kennen Sie Hello World als das erste Programm, das Sie in einer neuen
Programmiersprache
schreiben. Was im Grunde
auf dem Bildschirm Hello World ausgedruckt wird. Wenn Sie
das in Unity schreiben würden, würden
Sie es hier
ausdrucken lassen. Hier
erhältst du Fehlermeldungen und Warnungen
zu deinem Spiel. Du erhältst Nachrichten, wenn
du Dinge protokollieren möchtest. Wenn du
zum Beispiel ein Spiel
erstellen willst, in dem
Spieler gegeneinander
kämpfen,
und du noch keine Gesundheit programmieren
willst. Du willst nur sehen,
ob der Code, der sagt, okay, dieser Spieler hat den
anderen getroffen, tatsächlich funktioniert. Du würdest es vielleicht auf
dieser Konsole ausdrucken und sagen,
dass der Spieler getroffen wurde. Und so wirst
du das im Grunde verwenden. Es eignet sich sehr gut zum
Debuggen oder für die
Ausgabe von Beweisen dafür, dass Ihr
Code in Ihren Spielen funktioniert Das ist eine ziemlich kurze Zusammenfassung
der Funktionsweise des Unity-Editors Falls Ihnen das ein bisschen
verwirrend vorkam, wie ich schon sagte, sich
darüber
keine Gedanken, denn
Sie werden es als Selbstverständlichkeit
betrachten, da wir es immer häufiger verwenden. Aber hoffentlich hast
du dadurch eine etwas bessere Vorstellung davon bekommen,
wie alles funktioniert. Das Letzte,
was wir in diesem Video tun werden, da wir im Grunde gerade erst die Engine
vorgestellt und über den Kurs
gesprochen haben ,
ist, dass wir anfangen werden, einfach eine sehr einfache
Szene zu machen, damit wir mit
unserem Spieler in der nächsten
Episode beginnen
können , eine Szene zu machen. Gehen wir jetzt hier zu
unserer Hierarchie über. Dieser kleine Stern hier drüben, ich denke, er ist erwähnenswert. Das bedeutet, dass unsere
Szene nicht gespeichert ist. Wenn ich auf Strg S klicke,
kannst du sehen, dass es verschwindet. Wenn Sie den
kleinen Stern dort sehen, Sie einfach weitermachen
und Ihr Programm speichern. Entweder drücken Sie S oder speichern Sie die Datei. Nur damit du sichergehst, dass du keinen deiner Fortschritte
verlierst. Jetzt wollen wir eine Szene machen in der
unser Spieler
leben kann, wenn wir sie machen. Und wir haben unser Stück noch nicht
gemacht. Also müssen wir
zuallererst eine Mini-Karte erstellen. Zuerst werde ich
eine unglaublich einfache erstellen. Ich werde hier mit der rechten
Maustaste klicken , weil ich ein neues Objekt
erstellen möchte. Und ich wähle
zwei D-Objekt-Sprites und ich
wähle ein Quadrat Was das für mich im
Moment tatsächlich ergeben wird , ist nur ein kleines Quadrat Jedes Quadrat ist ein Unity-Objekt. Es hat eine Transformation, also hat
es eine Position und
ihre Rotation und ihren Maßstab,
genau wie wir es erwähnt haben. Und es hat einen
Sprite-Renderer, der es im Grunde
ermöglicht, das quadratische Sprite zu haben , das auf meinem
Bildschirm angezeigt wird Wenn ich darauf klicke, kann ich es
tatsächlich bewegen. Das ist es, was ich
als Plattform nutzen werde , auf der mein
Spieler existieren kann. Also werde ich ein
paar machen. Ich werde hier oben
eine Plattform einrichten. Ich
werde da unten eine bauen. Und ich werde mir hier oben noch
eins ausdenken. Wenn ich meinen Player programmiere, kann
ich Springen hinzufügen und
sehen, dass alles funktioniert. Jetzt müssen wir ein
paar Dinge
tun, um diese Map richtig einzurichten. Zuallererst können wir keine Plattform haben
, die nur ein Quadrat
ist, weil es ziemlich
schwierig ist, darauf zu springen Lassen Sie uns damit beginnen, darauf zu klicken und ziehen, um es zu vergrößern Sie können dies in
diesem Modus hier tun. Das ist im Grunde
wie dein Tools-Menü. Wenn Sie verschiedene Werkzeuge auswählen, können
Sie mit diesen Objekten verschiedene
Dinge tun. Dieser bewegt
es zum Beispiel. Dieser dreht es. Dieser wird es offensichtlich
nach oben und unten skalieren. Dieser hier drüben ist
wie eine Kombination. Es ist so, wie Sie es in einer
Bildbearbeitungssoftware sehen werden, aber Sie können das alles auch
von
diesem
Transformationsfenster hier aus tun . Und genau das werde ich
tun, weil es etwas
genauer ist und ich
im Grunde
genau kontrollieren kann , wie stark das Ding gedreht oder skaliert werden
soll. Also werde ich zuerst
meine Z-Rotation auf Null setzen. Das hier
entscheidet im Grunde, ob wir unsere Skalierung für X und Y
einschränken
wollen. Wenn ich
also darauf klicke, gehen
sie, wenn
ich X und Y und Z erhöhe, alle nach oben oder unten,
skaliert Aber das will ich nicht. Ich werde
sichergehen, dass es eine Linie
hat , und dann
werde ich y verkleinern. Es ist also keine sehr lange
Plattform. Super groß, tut mir leid. Ich werde X
ein bisschen skalieren, ich würde sagen, das ist eine
gute Plattform und ich werde
es einfach nach unten verschieben. Nun, bevor ich
die anderen Plattformen mache, muss
ich eigentlich zuerst diese fertigstellen
. Im Moment ist das alles nur
ein Objekt mit einem Sprite. Also ist es eigentlich noch
nichts. Es ist einfach im Grunde
wie ein Foto. Wenn ich jetzt einen Spieler
hinzufügen möchte, sagt mir nichts, dass ich aufhören soll, mich zu bewegen,
wenn
ich darauf lande , oder ich
sollte überhaupt etwas tun. Es ist eigentlich nur wie ein Foto. Ich werde eine neue Komponente hinzufügen, ein neues Skript handelt
, das von Unity
geschrieben wurde. Und ich werde es
Bid Tut nennen oder besser gesagt,
ich werde suchen, Box Alida, Tout. So
heißt es. Und wenn ich darauf klicke, wirst du sehen,
dass es meinem Objekt
ein neues kleines Skript
hinzufügt . Jetzt hat mein quadratisches
Objekt hier einen Sprite-Renderer
und einen Box Und wenn Sie tatsächlich mit der Schriftrolle hineinzoomen
, können
Sie außerhalb dieses Dings einen schwachen grünen
Umriss sehen Wenn du es auswählst, kannst du es
natürlich nicht
sehen, wenn du es nicht tust, aber vielleicht kannst du
es ein bisschen besser sehen, wenn ich diesen Motor hier aktiviere Ich weiß nicht, ob du es auf meinem Bildschirm
sehen kannst, aber hoffentlich kannst du auf
deinem
einen schwachen grünen Umriss an der
Außenseite deiner Plattform sehen , und das ist der Box Collider Ein Box Collider teilt
Unity
im Grunde mit, dass es sich bei diesem Ding um ein Objekt im Weltraum
handelt Wenn etwas
herunterfällt und es auf den Box Collider trifft, sagt
Unity, okay,
hör auf zu fallen, weil das ein echtes Objekt ist,
es ist ein Ding, In meinem Fall wird Unity meinen Box Collider
automatisch perfekt
auf meiner Plattform
platzieren Aber wenn ich es ändern wollte, könnte
ich dieses
Ding hier drüben anklicken, Edit
Collider steht Und dann kannst du sehen, dass ich dort jetzt
grundsätzlich die Kontrolle haben kann dort jetzt
grundsätzlich die Kontrolle haben Sie können das
grüne Kästchen sehen. Ich habe die Kontrolle darüber, wie groß mein Collider-Kuchen sein
soll Wenn ich wollte, dass es so ist,
würde ein Spieler, der fallen würde, er dort stehen bleiben anstatt
ganz nach unten zu fallen Ich will das eigentlich nicht,
also klicke ich einfach auf Strg Z und
schon ist alles wieder da
, wo es war. Aber so
bearbeiten Sie Ihren Box Collider. Bevor wir weitermachen,
sollte ich noch erwähnen, dass diese und jede andere Art von
Label, die Sie
hier sehen , quasi
Attribute des Skripts sind Sie können
sie sich wie Variablen vorstellen, aber was sie wirklich
sind, sind Attribute
des Skripts, mit denen
Sie im Grunde ändern können, wie es funktioniert. Dieses Skript ist offensichtlich
ein sehr allgemeines Skript, dieses auch. Man kann keinen
Kastengleiter haben, der sagt, okay, baue einen Kastengleiter mit genau
diesen Abmessungen , denn wir wollen ihn individuell anpassen
können Unity ist eigentlich
all das für uns vorgesehen. Allgemein gesagt,
wenn wir diese hinzufügen, werde
ich
Ihnen sagen, was Sie ändern müssen. Gehen Sie also nicht mit
ihnen herum, denn sie ändern es
ziemlich drastisch. Es sei denn,
Sie wissen offensichtlich, was Sie tun, oder Sie möchten
etwas
anderes machen als ich , dann auf jeden Fall. Aber im Moment
hat unser Boxgleiter zum
Beispiel alle Standardeinstellungen, die eigentlich perfekt für uns
sind Dieser zum Beispiel,
das ist Trigger. Wenn ich das wählen würde,
würde das bedeuten, dass dieser Kastengleiter die Physik nicht
wirklich beeinflussen wird Es wird stattdessen
ein Signal senden und sagen,
okay, ich wurde getroffen Wir könnten das für
so etwas wie eine Kugel oder wie einen Feind verwenden . Wo wir wollen, dass
der Spieler sie vielleicht durchqueren kann. Aber wir wollen wissen
können, wann wir sie
für diese Plattform erreicht haben. wollen wir aber definitiv nicht, weil wir wollen,
dass der Spieler
aufhört, wenn er darauf landet. Lassen wir das alles vorerst stehen. Genau wie das Sprite-Rendern eignen sich
diese alle
als Standardeinstellungen Und was ich dann tun
werde, weil ich nicht Lust habe,
all das noch einmal zu tun,
ist, dass ich einfach Control
C und Control V sage und unsere quadratische
Plattform kopiere und nach unten verschiebe Ich sagte, ich würde
einen hier oben haben und
ihn vielleicht etwas
kürzer machen lassen und dann mache ich es noch
einmal und ich werde hierher verschieben,
um es vielleicht ein bisschen nach unten
zu verschieben. Ich werde diesen auch
kürzer machen und
ihn dorthin verschieben . Wir haben hier jetzt drei
Objekte gemacht. Wir haben sie
Square One
und Square Two genannt , was
keine sehr guten Namen sind. Wir werden sie gleich umbenennen, aber im Grunde werden sie der Anfang unseres Spiels sein. Das sind die drei
Objekte, die wir gemacht haben denen wir in der nächsten Lektion
einen Spieler hinzufügen werden. Und wir werden in der Lage sein, auf diese Objekte
zu springen um zu zeigen, dass unsere Bewegung
und alles funktioniert. Aber ich überhole mich selbst. Im Grunde ist dies der
Beginn unseres Spiels. Wir haben drei Plattformen, und sie haben alle Box Collider,
um zu zeigen, dass es sich um
Objekte im Weltraum handelt Als Letztes werde
ich ihnen einen Namen geben. Ich nenne diese Etage eins. Ich nenne dieses eine Etage zwei. Ich nenne das eine Etage drei. Das allerletzte, was ich tun werde, ist,
unsere Szene ein bisschen zu organisieren. Zuerst werde ich speichern, weil ich
die Symbole dort sehen kann. Dann werde ich sagen, okay, ich
möchte eigentlich nicht, dass sich all diese Bilder auf derselben Ebene
wie die Hauptkamera befinden. Ich möchte wie einen Ordner erstellen, du weißt schon, in Windows oder
im Datei-Explorer oder Mac, was auch immer, du würdest
deine Dateien in Ordnern speichern. Sie würden nicht einfach
all Ihre Dateien
am selben Ort haben . Das Gleiche
hier. Ich möchte nicht diese drei Objekte
auf derselben Ebene wie meine Kameras befinden. Ich
klicke mit der rechten Maustaste und sage erstellen, leer, leer. Technisch gesehen ist es
ein leeres Objekt. Es hat offensichtlich eine
Transformation, weil jedes Objekt eine Position
haben muss. Aber Sie können
es wie einen Ordner verwenden, es ist quasi wie ein leerer Ordner, in dem Sie
andere Ordner speichern. So kannst du es dir vorstellen. Ich werde
diesen einen Speicher nennen. Ich lege meine drei
Stockwerke ins Lager,
indem ich die Umschalttaste gedrückt halte, sie
auswähle und sie
dann hineinziehe indem ich die Umschalttaste gedrückt halte sie
auswähle und sie
dann hineinziehe Sie können jetzt sehen, dass sie darin gespeichert
sind. Jetzt habe ich eine etwas
sauberere Szene und sie sieht dadurch
ein bisschen besser aus. Wenn ich sehen möchte,
wo meine Fehler sind, klicke
ich einfach auf diesen
kleinen Pfeil und ich kann sehen, dass alle drei
Fehler vorhanden sind. Hoffentlich war das eine
ziemlich gute
Einführung in diesen Kurs und wie er strukturiert sein
wird. Ich hoffe, ihr
konntet dem
folgen und einfach
drei Level-Plattformen erstellen. Sie müssen nicht exakt identisch
sein, sondern
haben offensichtlich nur drei Plattformen. Und wir werden
im nächsten Video damit beginnen unseren
Spielercharakter
hinzuzufügen. Danke.
3. 2. Unseren Charakter erstellen: Hallo und willkommen zum
zweiten Video meines Kurses. Im letzten
Video haben wir nun
den Unity-Editor vorgestellt und im Grunde erklärt, was all diese
verschiedenen Fenster bewirken. Sobald wir
damit fertig sind, haben wir
diese grundlegende Szene eingerichtet , auf der wir unser Spiel
aufbauen können. Jetzt haben wir in unserer Szene nur noch diese
Hauptkamera und das Speicherobjekt, in dem sich unsere
drei Fehler befinden Aber das ist im Moment eigentlich kein gutes
Spiel, wenn wir es beim letzten Mal nicht gemacht haben Aber ich werde es
dir jetzt zeigen, dass
nicht viel
Aufregendes passiert. Wir haben nur drei Objekte , die eigentlich
nur drei Sprites sind, also sind sie wie drei
Fotos mit Collidern Sie sind also Objekte im Weltraum, aber sie sind nicht viel anderes Wenn wir
ein etwas
interessanteres Spiel machen wollen , was wir tun, müssen
wir ein weiteres Objekt
hinzufügen und tatsächlich eine ganze
Menge mehr Objekte. Aber das erste andere
Objekt, das wir hinzufügen werden
, wird unser Spieler sein. Denn wenn du keinen Spieler
hast, hast du nicht wirklich ein Spiel. Wir werden natürlich unseren Spieler hinzufügen
wollen. Und dann können wir anfangen,
unsere anderen Objekte
und unsere Feinde
und alles andere hinzuzufügen unsere anderen Objekte
und unsere Feinde . Das
macht ein Spiel zu einem Spiel. Aber lassen Sie uns nicht zu sehr überholen. Im Grunde
müssen wir in diesem Video unser Player-Objekt hinzufügen
. Wir werden
unser Spielerobjekt genauso hinzufügen , wie wir diese Bodenobjekte
erstellt haben. Wir klicken mit der rechten
Maustaste hier drüben. Wir werden zwei erstellen,
das Objekt, und wir werden
tatsächlich ein quadratisches Sprite
erstellen Jetzt kannst du hier drüben sehen,
wenn ich mein Sprite erstelle, habe ich diesen weißen Block
, der unser Spieler ist Im Moment ist das natürlich
ein Platzhalter, weil wir unserem Spiel später Sprites
und Grafiken hinzufügen werden Aber vorerst
muss es das tun. Ich mache
weiter und klicke zweimal
darauf und nenne es Player. Er kann das auch tun, indem er auf Umbenennen
klickt. Im Moment habe ich
mein Spielerobjekt, aber es gibt nichts
, was ihn wirklich von
diesen drei Objekten
unterscheidet Tatsächlich sind sie
ziemlich genau gleich. Es sind nur Quadrate, die unterschiedlich skaliert
wurden. Als Erstes
werde ich die Größe meines Players ändern Ich mache
0,65 statt eins, und das macht
ihn ein bisschen kleiner Du wirst später sehen, wenn wir Sprites zu unserem Spiel
hinzufügen, wir werden tatsächlich
genau sehen können , wie groß alles
sein muss, weil ich Pixelkunst verwenden werde Du musst keine Pixelkunst verwenden. Aber wenn du
genau das gleiche Spiel machen
willst wie ich, wirst
du natürlich dieselben Sprites
verwenden Ich werde sie natürlich
in jedem einzelnen Video, in
dem wir sie verwenden, verlinkt verlinken , sodass du
dieselben verwenden kannst wie ich Aber im Grunde bin
ich vorerst mir selbst ein bisschen voraus. Alles was wir haben ist ein Quadrat und so können wir
jede Größe wählen, die wir wollen. Darunter haben wir nun auch eine
Sprite-Render-Komponente Und Sie können sehen, genau wie bei
diesen drei Bodenobjekten,
dass dies das einzige ist
, was zu diesem Objekt hinzugefügt wurde Es ist im Grunde wie
ein leeres Objekt mit einem Sprite mit etwas, das
zeigt, dass das Objekt da ist Das erste, was ich
tun werde, ist, diese Farbe
hier auf Gelb
umzustellen Nur damit ich sehen kann, dass es
anders ist als der
Rest meiner Szene. können wir
tatsächlich sehen. Wir können jetzt sehen, dass unser Boden weiß
und unser Spieler gelb ist. Nur um dem Spieler ein
wenig Differenzierung zu geben Wenn ich jetzt auf „Spielen“ klicke, wird sich
nicht viel von dem unterscheiden, was
wir zuvor gespielt haben. Tatsächlich wird
es
ziemlich gleich aussehen . Nichts
wird sich bewegen. Und dieser Spieler ist überhaupt nicht in der Lage , mit der
Umgebung
zu interagieren, was eines der Dinge ist, die
wir für unser Spiel benötigen. Also werden wir damit
beginnen, ihnen genau dieselbe Komponente hinzuzufügen ,
die
wir verwendet haben, um
sie wissen zu lassen , dass es
sich auch
um ein Objekt
im Weltraum handelt , mit dem ebenfalls kollidiert werden muss Fügen wir noch einen
Box Collider zwei D hinzu. Wie ich schon beim letzten Mal sagte, du kannst sie alle
so lassen wie sie sind Wenn Sie es ändern
möchten, können Sie das natürlich tun. Aber das werde
ich nicht tun. Also werde ich auf Strg
Z klicken und
es wieder so bewegen , wie es richtig war. Jetzt haben wir einen Box Collider. Nun könnte man erwarten, dass, wenn
wir auf Play klicken und
unseren Spieler nach unten bewegen , wo sich
die anderen Blöcke befinden, ich nicht in der
Lage sein werde, daran vorbei zu kommen, aber das ist nicht
wirklich der Fall und das hat zwei Hauptgründe Einer von ihnen, der so etwas
wie der Hauptgrund
ist, ist, dass die
Physik-Engine von Unity nicht wirklich darauf ausgelegt ist,
Kollisionen zu erkennen, wie zum Beispiel
Bewegungen wie diese zu erkennen, wirklich darauf ausgelegt ist,
Kollisionen zu erkennen, wie zum
Beispiel
Bewegungen wie diese zu erkennen,
weil der Spieler dazu
niemals in der Lage wäre. Ich bearbeite gerade meine Szene
und sage,
okay, der Unity-Editor
erkennt jetzt eine Kollision Und obwohl Unity diese Kollision
tatsächlich erkennt, kann
es nicht wirklich
etwas dagegen tun. Weil ich nicht
wirklich die physikalischen Gesetze von
Unity befolgt habe , um
mein Ding so zu platzieren , dass es nicht
wirklich weiß, was es tun soll. Das ist quasi der Hauptgrund. Aber der Hauptgrund,
warum Unity nicht wirklich in der Lage ist, zu zeigen
, dass wir das blockieren oder dass
es zu
einer Kollision kommt, ist, dass wir diesem Spieler keinen so genannten starren Körper hinzugefügt
haben. Und ein starrer Körper ist
im Grunde wie eine eingebaute physikalische
Komponente, die quasi jeden einzelnen Aspekt
der klassischen Physik verallgemeinert , den
man für ein Objekt benötigt Es ermöglicht ihm also,
zu beschleunigen, Schwerkraft
entsprechend zu fallen,
er ermöglicht es ihm, sich zu bewegen Im Moment hat Unity
keine Möglichkeit, dieses Objekt zu
bewegen, auch nicht per Code oder was auch immer. Sie könnten es vielleicht tun, indem Sie die Transformation
verschieben, aber es gibt keine zuverlässige
Möglichkeit für Unity, Physik, Bewegung
und Kräfte tatsächlich auf dieses Objekt
anzuwenden. Um das hinzuzufügen, müssen wir nur noch eine weitere Komponente
hinzufügen, von
der ich bereits erwähnt habe
, dass es sich um einen starren Körper mit zwei D handelt. Das ist,
wie gesagt,
eine allgemeine Komponente , die diesem Objekt im Grunde Physik
verleiht. Das ist eine ziemlich einfache
Art, es auszudrücken, aber genau das tut es. Ich werde
weitermachen und diesen
Winkelwiderstand tatsächlich auf Null setzen. Und ich werde hier auf Einschränkungen klicken
und
die Rotation von Z einfrieren. Das mag
nun
so aussehen,
als und
die Rotation von Z einfrieren. Das hätte ich
eine Menge Dinge getan und es
gerade eingeführt, aber ich werde es näher
erläutern. Und im
weiteren Verlauf des Kurses werden Sie sich mit
diesen Objekten und
ihrer
Funktionsweise, oder besser gesagt mit diesen Komponenten,
besser vertraut diesen Objekten und
ihrer
Funktionsweise, machen. Sie sich also nicht zu viele Gedanken über jedes einzelne
dieser kleinen Dinge, aber im Grunde fügt dieses Objekt
Physik hinzu. Nun, die Art und Weise, wie es funktioniert, ist
nicht von großer Bedeutung, besonders für diesen Kurs, weil es in Unity integriert ist. Dies ist im Grunde ein
sehr kompliziertes Skript , das Unity für uns geschrieben hat. Und das sind all die
Variablen, die wir ändern können. Wir können also
die Gravitationsskala ändern, wir können den Widerstand Ich setze das auf Null, nur weil es nicht
von großer Bedeutung ist, aber Sie müssen das nicht auf Null
ändern. Du kannst es irgendwie behalten, es wird
keinen wirklichen Unterschied machen. Und dann war die einzige
andere Sache, die ich geändert
habe , die Drehung der Z-Achse. Und das
würde bedeuten, wenn ich das nicht geändert
hätte und mein Objekt dort drüben platziert hätte, wenn ich auf das Spiel klicke, würde
es runterfallen. Und dann
wird es sich tatsächlich auf diese Weise drehen, genau wie es im wirklichen Leben der Fall wäre. Was
ich nicht für mein Spiel will. Und ich empfehle
dir wirklich nicht , es für Plattformen oder Spiele zu verwenden denn wenn du
Quadrate nicht benutzt ,
sieht es nicht sehr gut aus. Ich werde Pixelkunst verwenden, also wird es überhaupt nicht gut
aussehen. Aber sobald Sie diese
starre Körperkomponente hinzugefügt und
die Drehung auf der Z-Achse eingefroren haben und den Winkelwiderstand auf
Null
gesetzt haben, wenn Sie möchten Das ist so ziemlich alles
, was wir einrichten müssen. Und jetzt werden
wir ein Objekt in
unserem Spiel haben , das tatsächlich den Gesetzen der Physik
gehorchen kann. Wenn wir auf Play klicken, können wir sehen,
dass unser Objekt
herunterfällt und stoppt, sobald
wir auf einem anderen Collider landen, was genau das ist, was wir wollen Und wir können tatsächlich zurückgehen
und das Ganze wieder nach oben verschieben. Und wir können sehen, dass es
genau so funktioniert , wie wir es erwarten würden. Offensichtlich werden
wir nicht in der Lage sein unser Objekt oder
etwas Ähnliches
zu werfen. Und das hat irgendwie den Nebengrund, den ich bereits erwähnt habe, nämlich dass dies technisch gesehen nicht Physik-Engine von
Unity im Player ist. Ich bearbeite mein Spiel und sage dann, okay
, Unity Takeover. Unity hat also
keine Informationen darüber, wie schnell ich es veröffentlicht habe oder ob
ich so etwas gemacht habe Ich habe meinen Spieler gerade an den unteren Rand der Karte fallen lassen Also werde ich ihn einfach wieder nach
oben bringen. Lassen Sie uns ihn zehn Minuten
lang bewegen. Habe es schon wieder verpasst. Sehen Sie, was jetzt tatsächlich
passiert, ist der Spieler so
schnell bewegt , dass er keine Kollisionen
mehr erkennen kann Was mich tatsächlich zu
einem weiteren wichtigen Punkt bringt. Wenn Sie glauben, dass Sie
eine Plattform mit unglaublich
schnellen Kollisionen haben werden , sollten
Sie das auf kontinuierlich
umstellen Und ich werde im Grunde
veranschaulichen können, was das bewirkt. Wenn ich jetzt genau
das Gleiche mache wie zuvor und den Spieler
herunterfallen lasse und dann schneller wird, und den Spieler
herunterfallen lasse und dann schneller wird,
natürlich weil er immer
schneller
in Richtung Boden beschleunigt . Ich warte eine Weile und ändere das auf fünf. Nein, um das auf Null zu setzen. Sie können sehen, dass ich zu diesem Zeitpunkt tatsächlich aufhören
konnte. Das war also nicht
ganz beabsichtigt. Aber das ist eigentlich ein
guter Moment
, um zu zeigen wie der
starre Körper von Unity funktioniert Es liegt also wirklich an Ihnen , ob
Sie diese Einstellung aktivieren möchten. , es ist etwas
intensiver Ich glaube, es ist etwas
intensiver,
ständig
zu überprüfen. Aber im Allgemeinen ist es etwas, das ich gerne
zu meinen Spielen hinzufüge. Zusammenfassend lässt sich sagen, dass wir im Grunde gerade unser Player-Objekt hinzugefügt haben, wir haben hier ein
Sprite-Rendering Wir haben einen Collider hinzugefügt, um
Unity mitzuteilen, dass es sich um ein Objekt im Weltraum Wir haben hier auch unseren starren
Körper, bei dem wir
den Winkelwiderstand geändert haben Wir haben die
Kollisionserkennung auf
kontinuierlich gestellt , weil wir
versehentlich etwas entdeckt haben, und
wir haben die Z-Rotation eingefroren Und das sind eigentlich alle
Einstellungen, die
wir tun müssen, um mit der Entwicklung unseres Players zu
beginnen Moment haben wir im Grunde
eine Plattform, ein Spiel, aber du kannst
es nicht wirklich spielen, du kannst einfach fallen. In
der nächsten Episode werden
wir also im Grunde unser Bewegungsskript
hinzufügen,
damit unser Spieler springen und
fallen und sich nach links und
rechts bewegen kann fallen und sich nach links und
rechts bewegen und alles
andere, was wir brauchen. Also werden wir in der nächsten Episode
mit dem Programmieren beginnen , aber im Moment
solltest du deine Szene so ziemlich
genau so
einrichten wie meine.
4. 3. Spielerbewegung hinzufügen: Hallo, und willkommen
zurück bei Unity. Das ist nun die dritte
Lektion unseres Kurses. Bisher haben wir
ein Spielerobjekt hinzugefügt, das
herunterfallen und mit
drei Objekten auf dem Boden kollidieren kann herunterfallen und mit
drei Objekten auf dem Boden kollidieren , die wir zuvor
erstellt haben Aber wir
haben noch kein wirkliches Spiel. Was wir tatsächlich haben, ist eine unglaublich einfache
Physikdemonstration. Fällt und bleibt dort stehen. Aber das ist nicht das
Interessanteste. Und um es interessanter zu machen, werden wir
ein Skript hinzufügen , das es dem Spieler
im Grunde
ermöglicht, sich zu bewegen und
unser Spiel zu spielen. Denn ohne ein Drehbuch haben wir
nicht wirklich ein Spiel weil wir nicht
wirklich die Möglichkeit
haben das Ergebnis zu beeinflussen
, und darum geht es ja. Um zu beginnen, gehen wir zuerst zu diesem
Assets-Ordner hier drüben. Und je nachdem, ob
Sie bereits
Dateien portiert haben, sollten Sie, wenn
Sie dem gefolgt
sind, ziemlich genau so aussehen wie meiner mit nur einem
Szenenordner. Und innerhalb der Szene haben wir hier
unsere Szene, die Beispielszene
heißt. Jetzt gehe ich zurück
zum Assets-Ordner und schreibe,
klicke und gehe auf Neuen
Ordner erstellen und nenne ihn Skripte. Und hier werde
ich
jeden einzelnen Code ablegen , den
ich für dieses Projekt schreibe. Du musst
es nicht genau so befolgen wie ich. So ordne ich meine Skripte und meinen
Ordner für mein Spiel am liebsten, also mache ich einen
Doppelklick darauf. Und jetzt fange ich
an, mein allererstes
C Sharp-Skript zu
erstellen. Wenn Sie noch nie in C Sharp
codiert haben, werden
Sie sich natürlich das gesamte Video ansehen
wollen . Wenn Sie Sharp C codiert haben und
nicht so viel Hilfe
benötigen, können Sie weitermachen und
Ihr eigenes Bewegungsskript schreiben. Aber ich werde ein ziemlich
einfaches
schreiben , nur um die Idee
vorzustellen. Und dann könnten wir
es im Laufe der Zeit ändern. Ich werde Click schreiben
und ich werde Create C sharp script und ich werde
es Spielerbewegung nennen. Sobald ich das getan habe, können
wir tatsächlich auf
das Script klicken und
es in einem Vorschaumodus ansehen. Hier drüben können wir jetzt sehen dass
wir eine Klasse haben
, die für
uns gemacht wurde , und wir haben zwei Lücken
, die wie Methoden sind Ich werde das alles erklären.
Sie müssen sich nicht wirklich zu viele
Gedanken über
die Programmierterminologie machen, sondern müssen sich im Grunde einfach daran halten. Und Sie sollten sich mit C Sharp viel besser auskennen, wenn
wir immer mehr programmieren. Aber ich werde
alles erklären, also mach dir keine Sorgen. Machen wir weiter und
doppelklicken wir darauf, um es zu öffnen. Ich werde
Visual Studio als meine IDE verwenden. Was eine IDE ist, ist, dass Sie sie sich
wie einen Code-Editor vorstellen
können, als würden Sie Word oder
Google Docs verwenden, um Aufsätze zu bearbeiten Das haben Sie
verwendet, um Code zu bearbeiten. Sie können verwenden, was
Sie möchten, aber ich empfehle
Visual Studio. Ich verwende eine ziemlich alte Version, aber so ziemlich jede von ihnen wirklich gut,
besonders für Unity. Öffnen Sie es sofort, es mag etwas verwirrend erscheinen, Beispiel, was sind all
diese Wörter und was bedeuten die verschiedenen
Farben? Wie ich schon sagte, mach dir bis jetzt nicht
zu viele Gedanken über
alles. Ich werde all
die wichtigen Dinge
erklären die wir oben haben. Benutzen. Ohne zu sehr auf die Terminologie einzugehen, was das
eigentlich bedeutet, so vor, als würden wir
Unity sagen , welche Teile von
Unity wir verwenden wollen. Wenn wir also etwas verwenden wollten
, das auf der Benutzeroberfläche basiert, müssten
wir
hier eine neue Zeile hinzufügen , die besagt, Unity Engine zu
verwenden. Im Grunde sagt uns das,
okay, das sind die Teile
von Unity, die ich brauche. Diese Standardeinstellungen werden für die meisten unserer Skripte, die
wir schreiben werden, eigentlich
ziemlich
gut sein . Und wenn wir ein anderes
hinzufügen müssen, werde
ich
es dir natürlich sagen, während ich
das Drehbuch schreibe , weil du mit mir zusammen schreiben
wirst, also mach dir
darüber nicht zu viele Gedanken. Darunter befindet sich
unser öffentlicher Unterricht. Auch hier gilt: Mach dir nicht zu
viele Gedanken darüber, was eine
Klasse genau ist. Aber du kannst dir das irgendwie wie
einen Container für unseren gesamten Code
vorstellen . All das ist
Codierungsterminologie . Wenn
Sie das wirklich wollen, können
Sie
im Internet recherchieren und dann irgendwie genau
verstehen, was die Definitionen für all das sind. Aber ich werde in diesem Kurs nicht zu viel Zeit darauf verwenden, weil es für die Entwicklung von Unity wirklich
nicht so
wichtig ist. Worauf wir uns tatsächlich
konzentrieren werden , ist eher die Entwicklung von Spielen. Und Sie
müssen nicht wirklich in der Lage sein diese
verschiedenen Konzepte
zu definieren, Sie müssen nicht nur wissen,
wie man programmieren kann. Je mehr Sie programmieren,
desto mehr werden Sie natürlich entdecken und desto mehr werden Sie über sie
lernen. Aber machen Sie sich vorerst nicht zu
viele Gedanken über sie, denn
es kann ziemlich einschüchternd sein, all
diese Dinge jetzt
auswendig lernen
zu müssen diese Dinge jetzt
auswendig Und es ist wirklich nicht
so wichtig für uns. Davon abgesehen gibt es ein paar Dinge, die noch geklärt werden müssen. Zuallererst ist dies ein Kommentar. Und ein Kommentar ist im Grunde wie ein Code, der eigentlich gar
kein Code ist. Es ist wie eine Zeile, um
jemandem, der den Code liest,
mitzuteilen was er
zuvor mit
diesen beiden Schrägstrichen bezeichnet diesen beiden Schrägstrichen hat. Wenn Sie es so ausdrücken, können Sie schreiben, was
Sie wollen, und die IDE oder der Editor
werden das wissen Das ist kein Code, der ausgeführt
werden muss. Es muss nicht wirklich
entziffert werden. Was bedeutet diese Aussage? Es ist nur ein Kommentar. sind
Kommentare, die von Unity
geschrieben wurden. Damit wir erklären können, was diese
beiden unterschiedlichen Lücken sind, heißt
es, dass Start vor
dem ersten Frame aufgerufen
wird , Update und Update einmal pro Frame aufgerufen Nun, diese beiden Lücken,
das Letzte, was ich erwähnen
möchte , sind Methoden Sie können sich
Methoden wie Abschnitte
unseres Codes vorstellen , die wir zu bestimmten Zeiten
aufrufen können Im Moment haben wir unseren Code
geladen. Das ist unser riesiges Programm.
Dies ist ein Abschnitt unseres Codes, den wir vor dem
ersten Frame-Update
aufrufen werden. Dies ist ein Abschnitt
unseres Codes, den
wir jeden
einzelnen Frame aufrufen werden. Und das
alles erledigt natürlich Unity für uns, wenn wir unsere eigenen Methoden
entwickeln. Später werden wir entscheiden
müssen, wann wir sie aufrufen wollen. Aber das sind die beiden
Methoden, aus denen wir im Grunde unseren
gesamten Code erstellen werden. Offensichtlich wird die
Startmethode in dem Moment ausgeführt, in
dem dieser Code von Unity ausgeführt
wird, bevor der erste Frame abgespielt bevor der erste Frame abgespielt wird.
Wir können hier ein paar
Sachen schreiben und sagen, okay, das, mach das, mach
das, und Unity wird es tun. Und dieser Code hier
wird in
jedem einzelnen Frame ausgeführt, jedem einzelnen Frame. Das
wird aufgerufen werden. Wenn ich sage, drucke eine Zahl, jedes einzelne Bild, es
wird diese Zahl gedruckt. Und wenn ich sage,
eine Zahl drucken zu lassen, wird sie
vor dem Spielstart einmal gedruckt, und dann funktioniert sie nicht
mehr. Das sollte ziemlich schnell und vielleicht ein bisschen
verwirrend für dich sein, aber ich hoffe, dass die grundlegenden
Konzepte Sinn machen. Und wie gesagt,
mach dir nicht zu viele Gedanken über die Einzelheiten
, wenn du weitermachst, du wirst
es immer besser verstehen Und wenn es zunächst etwas
einschüchternd wirkt, sich
keine Sorgen, es wird später
einfacher Aber was den
Einstieg in die eigentliche Codierung angeht, beginnen
wir zunächst damit, hier nach oben zu
gehen und eine sogenannte Variable
zu erstellen Nun ist eine Variable wie ein
Speicherplatz im Code, also werden wir eine Variable
erstellen, nennen
wir sie Bewegungsgeschwindigkeit. Und dann ist das ein
Speicherplatz, in dem ich
jedes Mal, wenn
ich darauf zugreifen möchte ,
wie schnell sich der Spieler bewegen muss ,
wie schnell sich der Spieler bewegen muss, in
dieser Variablen nachschauen und schauen, okay, was hier gespeichert ist. Sie haben verschiedene
Arten von Variablen. Ich werde nur kurz auf
einige davon eingehen
und jetzt werden wir mit der eigentlichen Codierung beginnen
. Aber im Grunde gibt es
ganze Zahlen, die Zahlen sind. Es gibt Zeichenketten, die wie Wörter oder Text
sind. Es gibt auch Zeichen
, die einzelne Buchstaben sind. Und dann haben Sie Boolesche Werte,
die wahr oder falsch sind. Schließlich haben Sie Gleitkommazahlen,
die im Grunde
wie Dezimalzahlen sind, also machen Sie sich auch nicht zu viele Gedanken über Im Moment wird sich das alles, wie
ich
schon sagte, von selbst ergeben Aber ich
wollte Ihnen nur einen grundlegenden Überblick über alle Grundlagen
des Programmierens geben, die Sie für diese Lektion benötigen werden . Zu Beginn erstellen wir
unsere erste Variable
und
nennen sie eine öffentliche Variable, was im Grunde bedeutet, dass
alles in diesem
gesamten Skript-Float auf
sie zugreifen kann . Und wir werden es Spielergeschwindigkeit
nennen. Dann fügen wir am Ende
ein Semikolon hinzu. Diese
Geschwindigkeit für öffentliche Spieler werden wir
verwenden, um zu bestimmen, wie
schnell unser Spieler Wir werden ein neues erstellen. Public Float, noch ein
Public Float, wir werden
es Jump Height nennen. Was wir
der IDE oder besser gesagt Unity gesagt haben ,
ist, dass wir eine Öffentlichkeit wollen die
alles im Skript zugreifen
kann. Sie sich darüber im Moment auch nicht
allzu viele Gedanken, sondern kopieren Sie es einfach mit,
während ich es Float mache, was bedeutet, dass es
eine Dezimalzahl ist
und so heißt sie. Der Grund, warum wir public tatsächlich
verwenden, ist, dass wir in
den Unity-Editoren darauf zugreifen können. Wenn ich dieses
Skript auf ein Objekt ziehe, kann
ich es
im Unity-Editor sehen, weshalb ich public verwende. Aber folgen Sie
vorerst einfach und machen Sie genau das, was ich tue. Und es sollte alles
Sinn machen, denn wie gesagt, auch wenn es auf den ersten
Blick
etwas einschüchternd wirkt , wird es viel
einfacher werden Bevor ich weitermache, muss ich oben noch
ein paar Dinge
hinzufügen ersten vier werden ein Verweis
auf die Komponenten sein, die
wir zu unserem Objekt hinzugefügt haben. Wir haben einen starren Körper hinzugefügt, der
im Grunde sagt, okay, gehorche den Gesetzen der Physik, aber wir müssen
grundsätzlich in der Lage sein,
auf diesen starren
Körper in unseren Codes zuzugreifen. Ich werde einen
öffentlichen starren Körper
zwei D erstellen und ihn RB nennen. Das heißt im Grunde
, okay, jetzt habe ich einen Verweis auf diesen starren Körper, damit
ich ihn beeinflussen kann. Die Art und Weise, wie wir Bewegung
erzeugen
werden, besteht darin , die
Geschwindigkeit meines Körpers zu ändern. Also werde ich sagen, wenn
ich diese Taste nach unten drücke,
lass sie sich so schnell
in diese Richtung bewegen. Dazu
benötigen wir natürlich einen Verweis auf die physikalische
Komponente meines Objekts,
nämlich diesen starren Körper. Sobald ich das getan habe, habe
ich so ziemlich
alles, was ich
brauche, um mit der Programmierung meines
grundlegenden Bewegungsskripts zu beginnen. Ich werde noch
etwas drunter legen, ein öffentliches Goldbarren, was wahr oder falsch
bedeutet Es heißt Bulle in Sharp C, und wir werden es
als geerdet bezeichnen Das wird uns im Grunde
sagen, ob wir vor Ort sind oder nicht? uns im Grunde
sagen, ob wir vor Ort sind oder nicht Sobald Sie
diese vier Variablen und diesen Verweis auf
diese
Komponente hier eingegeben haben diese vier Variablen und diesen , haben
wir alles, was wir brauchen,
um mit der Programmierung unseres Spiels zu beginnen. Das Erste, was ich tun
werde, ist eine neue Leere zu schaffen. Und diese Lücke
wird als festes Update bezeichnet. Nun, das ist tatsächlich
eine weitere Lücke, die von Unity automatisch
für uns
erstellt wurde. Es ist wie ein Update,
es ist einfach behoben. Das Update basiert nicht auf der
Geschwindigkeit Ihres Computers. Update heißt jeder
einzelne Frame, oder? Wenn Sie einen schnellen Computer
haben, wird
das natürlich viel schneller
aufgerufen. Wenn Sie einen langsamen
Computer haben, wird das Update stattdessen in einem sehr,
sehr kurzen Intervall aufgerufen. Also, so viel
Update auch auf den meisten Computern ist, natürlich haben Sie einen
superschnellen Computer, möglicherweise etwas langsamer ist. Wenn Sie einen
superlangsamen Computer haben, ist er möglicherweise etwas schneller. Aber es ist eine gute
Methode, Physik, Logik und
ähnliche Dinge in dein Spiel zu integrieren. Weil du nicht möchtest, dass
jemand, der einen schnelleren Computer hat ,
mehr in deinem Spiel tun kann als jemand, der
einen langsamen Computer hat. Sie
möchten zum Beispiel nicht, dass sie schneller fallen. Wir werden eine
allgemeine Form der Aktualisierung verwenden. Es
heißt immer noch so ziemlich jeder Frame, man kann es sich
wie das Gleiche vorstellen, aber es ist einfach eine gute
Konvention, das zu tun. Jetzt fangen wir an, die eigentliche Bewegung für
unser Spiel in diesem geänderten
Update zu
programmieren . Machen Sie mit, wie ich es mache. Als Erstes
erstelle ich eine neue Variable und nenne sie x. Und das kann
ich einfach tun, indem ich float x eintippe.
Der Unterschied
zwischen der Variablen hier oben
und der Variablen hier
oben
ist,
dass alles im Skript auf diese Variable zugreift kann
ich einfach tun, indem ich float x eintippe.
Der Unterschied
zwischen der Variablen hier oben
und der Variablen hier
oben
ist,
dass Der Unterschied
zwischen der Variablen hier oben
und der Variablen hier
oben . All diese Stellen
, an denen wir
Code aufrufen , können über
diese Variablen sprechen. Aber in einer davon, wenn ich eine Variable erstelle, auf die nur
innerhalb dieser zugegriffen werden
kann. Wenn ich in das Update gehe und
versuche, über X zu sprechen, wird
es nicht wissen,
wovon ich spreche, aber innerhalb eines Fixed-Updates wird es das tun. Und das ist für unsere Zwecke in Ordnung weil wir eigentlich
nur dieses Float X
in einem festen Update brauchen ,
das gleich als Eingabe
geht Achse roh abruft, Klammern öffnet, doppelte Anführungszeichen enthält und dann
das Im Grunde genommen handelt es sich
dabei um ein weiteres
Feature von Unity Es wird uns im Grunde
ermöglichen,
unsere Bewegung um einiges zu vereinfachen ,
denn anstatt zu sagen, okay, wenn der Spieler diese Taste
gedrückt hält, tu das. Wenn sie
diese Taste gedrückt halten, tun Sie das. Was wir hier sagen,
ist eine kreative Variable namens x. Sie ist vom Typ Float. Und wofür diese Variable verwendet
wird, ist zu speichern, ob der Spieler bestimmte Tasten
gedrückt hält. Was diese Linie
hier drüben, die Eingabe, Achse waagerecht stellt,
ist die Aussage zur Einheit. Wenn dieser Code in der Minute ausgeführt wird, hält
der Spieler
entweder die rechte
Pfeiltaste oder die D-Taste für SD gedrückt entweder die rechte
Pfeiltaste oder die D-Taste für SD dann in x den Wert eins ein. Wenn er die A-Taste oder den
Linkspfeil gedrückt hält, er einen Wert von minus eins ein. Und wenn er keine dieser Tasten
gedrückt hält, geben
Sie den Wert Null ein. Sie können also im Grunde sehen,
was das bedeutet jedem einzelnen Frame
gesagt wird,
okay, halten sie die Taste vorwärts gedrückt? Wenn ja, mach diesen. Halten sie
sich zurück? Falls ja, mach das minus eins. Berühren
sie nichts? Okay? Mach das
auf Null. Und Sie können sich vorstellen, wie nützlich das für unser Spiel sein wird, denn so können
wir im Grunde jedem einzelnen Frame überprüfen, ob der Spieler möchte, dass wir uns
bewegen oder ob wir weitermachen
sollen oder ob
wir uns rückwärts bewegen
sollten, usw., und so weiter Dies ist die erste Codezeile
für unser Skript. Und darunter werden
wir
eine weitere Codezeile schreiben , die R B als Referenz für unsere
Kammkörpergeschwindigkeit angeben wird . Also werden wir
im Grunde bearbeiten, wie schnell wir uns
bewegen, entspricht Vektor zwei Nun, das ist nicht
besonders wichtig, es ist im Grunde ein Vektor, zwei ist ein Vektor aus zwei Komponenten Ich sage, okay, ich
will meine Geschwindigkeit, natürlich Geschwindigkeit,
ich werde
eine X-Geschwindigkeit und eine Y-Geschwindigkeit haben eine X-Geschwindigkeit und eine Y-Geschwindigkeit Und ich möchte, dass das so ist, ich werde dem mithilfe von Vektoren Dinge
zuweisen. Wenn ich 1.1 zugewiesen habe, heißt es ,
okay, mach das X eins
und mach das Y eins. Wenn ich es auf 2.1 setze, heißt es, mach
das X zwei und das Y eins. Das ist im Grunde, wie ich
schon sagte, nicht besonders wichtig. Stell es dir wie
einen Lagerraum vor. Wenn Sie wissen, was
ein Vektor ist, dann bin
ich mir sicher, dass er sehr sinnvoll ist. Aber wenn Sie noch nie
auf einen Vektor gestoßen oder sich nicht
viel mit Physik beschäftigt haben,
dann stellen Sie sich das einfach wie einen Speicherplatz für zwei
Zahlen oder zwei Werte vor. Im Moment
sage ich, okay, ich will meine RB-Geschwindigkeit
dieser neue Vektor zwei ist, und ich muss
ein X und ein Y eingeben , weil ich offensichtlich horizontale X-Geschwindigkeit
und eine vertikale Y-Geschwindigkeit
habe. Ich mache
meine x-Geschwindigkeit gleich
x und trenne
sie durch ein Komma und ich mache meine
y-Geschwindigkeit zu RB-Geschwindigkeit Y.
Das ist im Grunde
so, als würde
ich y-Geschwindigkeit zu RB-Geschwindigkeit Y. sagen, okay, nimm die Geschwindigkeit
meines starren Körpers und mache die x-Geschwindigkeit x und mache die
y-Geschwindigkeit zur y-Geschwindigkeit, die y-Geschwindigkeit wird nicht geändert. Wenn ich diesen RB
dazu bringen würde, den Geschwindigkeitspunkt x zu machen, würde
diese Linie
absolut nichts bewirken Weil es ein einfaches Sprichwort ist,
okay, nimm
die Geschwindigkeit des starren Körpers und mache daraus die Geschwindigkeit des starren Körpers, was offensichtlich
keine Auswirkung hat. Und genau das
will ich für die Y-Achse, weil ich nicht möchte, dass der
Spieler mitten in die Luft fällt. Und dann klicke ich auf den
Rechtspfeil und ich fange plötzlich an,
mich
in einer geraden Linie zu bewegen. Und genau das würde passieren,
wenn ich das
zum Beispiel auf Null oder eine
andere Zahl setzen würde. Ich möchte nicht, dass sich das ändert, aber ich möchte, dass sich das ändert,
weil ich beeinflussen
möchte, wo sich der Spieler
nach links und rechts bewegt. Das sind eigentlich so ziemlich die zwei Codezeilen, die wir benötigen , um eine möglichst rudimentäre
Bewegung zu erstellen Wenn ich zurück zu Unity gehe und zu meinem
Spielobjekt hier drüben gehe Sobald das
Neuladen meines Skripts abgeschlossen ist, gehe
ich hier zu meinem
Play-Objekt und ziehe es hierher. Lass es uns
nach unten verschieben. Und ziehen wir es da rüber. Wir können sehen, dass ich mein unglaublich einfaches
Drehbuch habe und ich werde diesen starren Körper hierher
ziehen damit mein Drehbuch weiß, wo sich
der starre Körper befindet. Dann spreche ich darüber,
weil ich
darüber spreche , aber ich habe es nicht
wirklich verlinkt. So werden
wir es in Unity verknüpfen. Das ist eine der einfachsten Möglichkeiten, und ich
muss
diese Variablen eigentlich nicht ändern ,
weil ich sie in meinem Skript überhaupt nicht
verwendet habe . Aber du wirst sehen, ob ich
weitermache und auf Play klicke. Im Moment falle ich wie gewohnt. Aber wenn ich
auf alle Tasten und auch auf
alle Pfeiltasten klicke , kann
ich
mich bewegen, genau wie auf
jeder anderen Plattform. Nochmals, das ist offensichtlich
kein besonders gutes
Bewegungsskript, weil ich nicht springen kann, ich
kann nichts tun. Tatsächlich schaffe ich es nicht
einmal über dieses Ding, ohne in den Abgrund zu
fallen Wenn ich es versuche, werde ich einfach
fallen. Es ist also kein besonders
gutes Bewegungsskript , weil ich mich nicht
schnell genug bewege, ich kann nicht springen. Aber das ist die Grundlage
für mein Bewegungsskript. Ich habe gesagt, okay,
je nachdem, ob ich bestimmte Tasten
gedrückt halte, stelle ich diesen Wert ein und
weise diesen Wert dann der
Geschwindigkeit meines starren Körpers zu. Stellen Sie also sicher, dass ich mich in
die Richtung bewege , in der mich dieser
Wert bewegen sollte. Aber natürlich wollen wir es etwas
interessanter
machen. Also lasst uns damit beginnen,
dies mit der Geschwindigkeit des Spielers zu multiplizieren. Und hier werden wir
anfangen, unsere Variablen zu verwenden. Auf diese
Weise können wir nun
anhand der
Geschwindigkeitsvariablen dieses Spielers bestimmen ,
wie schnell sich der Spieler bewegt . Und ich werde dieses Startboard tatsächlich
löschen , weil ich es momentan nicht wirklich
brauche. Ich könnte es
später hinzufügen,
je nachdem , wie ich das Skript bearbeite. Aber im Moment ist es eigentlich alles in
Ordnung, es so zu haben, wie es jetzt ist. Jetzt gibt es tatsächlich ein paar
Änderungen, die ich vornehmen möchte. Dies dient nur
dazu, zu veranschaulichen, wie wir
unser verschobenes Drehbuch erstellen werden. Ich habe versucht zu
erklären, wie verschiedene Variablen funktionieren und wie es funktioniert, aber wir wollen
das etwas besser machen. Also das Erste, was
wir
tun werden, ist, nach oben zu gehen und
einen neuen öffentlichen Float zu erstellen. Nennen wir es x, also werden wir
uns nicht
nur innerhalb dieser Methode auf eine Variable beziehen. Wir möchten, dass es sich um eine
Variable handelt, auf die überall
im Skript
zugegriffen werden kann . Und dann werden wir
weitermachen und
diesen festen Update-Code tatsächlich in
den Update-Block verschieben . Und das wird
im Grunde genommen, anstatt diesen Wert
auf ein bestimmtes Intervall zu stützen, werden
wir ihn bei jedem einzelnen Frame aktualisieren
wollen Das ist eine viel
bessere Art zu programmieren. Du kannst dir
als allgemeine Regel vorstellen, dass
du jedem
Code folgen musst, der
auf Eingaben basiert oder darauf, was die Spieler tun, aktualisiert werden sollte. Jeder Code, der
auf Physik basiert oder
Dinge bewegt , die darauf basieren,
sollte in einem festen Update enthalten sein. Denn das wird uns im Grunde ermöglichen
zu sagen: Okay, wenn Sie einen schnelleren
Computer haben, sollten Sie natürlich schneller
reagieren können. Aber dann werden Sie in der Lage sein,
dieselbe Geschwindigkeit zu fahren wie jemand mit einem langsameren Computer,
denn das ist fair, es ist
übertrieben, wie sehr sich das auswirkt Weil ich verspreche, dass du
dein gesamtes Ding programmieren und ein
Update aktualisieren könntest dein gesamtes Ding programmieren und ein
Update aktualisieren Du würdest wahrscheinlich keinen großen Unterschied erkennen können ,
aber es ist einfach eine wirklich
gute Programmierkonvention das
zu tun, was ich hier mache. Davon abgesehen müssen wir
unserem Drehbuch noch
ein paar Dinge hinzufügen, nur um es zu einem
etwas besseren Bewegungsskript zu machen . Wir haben das natürlich schon mit der
Spielergeschwindigkeit multipliziert. Aber das Letzte, was wir hinzufügen
werden, ist ein Sprung, damit wir uns tatsächlich bewegen können Und ich werde
eine neue öffentliche Leere schaffen,
das ist so, als ob ich einen neuen
Codeblock haben möchte, den ich aufrufen kann. Zu einem bestimmten Zeitpunkt werde
ich es „
Sprung in diese öffentliche Leere“ nennen . Ich werde
diesen Code hier drüben kopieren. Kopiere ihn und lege ihn wieder da hin. Und ich sage
jetzt, wenn ich springe, will
ich, dass meine RV-Geschwindigkeit, also die Geschwindigkeit meines Spielers ein weiterer neuer Vektor zwei ist. Rb-Geschwindigkeit
x. Diesmal ändern wir
die X-Geschwindigkeit überhaupt nicht. Wir wollen, dass die X-Geschwindigkeit beim Springen gleich
bleibt. Weil
wir natürlich nicht vorwärts oder rückwärts
springen wollen , wir wollen einfach hochspringen, unabhängig der X-Geschwindigkeit,
sie auf das setzen, was sie war Und wir wollen natürlich auch
nicht, dass es so ist , dass es Null sein muss Denn wenn du dich dann
weiterbewegst, versuchst du
zu springen, du springst einfach an der richtigen Stelle und
bleibst bei der Geschwindigkeit, mit der
du dich bewegst. Aber wir wollen hochspringen, also setzen wir die
Y-Geschwindigkeit auf diesen Wert. Sprunghöhe, die wir
natürlich auch ändern können. Das bedeutet, dass wir
jedes Mal, wenn wir das als Leere bezeichnen,
unsere Geschwindigkeit ändern und
sagen,
okay, mach jedes Mal, wenn wir das als Leere bezeichnen, ändern unsere Geschwindigkeit ändern und
sagen,
okay, weiter wie
du es mit x warst, aber springe so weit nach oben, wie es dir
dieser Wert erlaubt. Mit der Y-Geschwindigkeit
wollen wir eigentlich sagen, dass Ihre Geschwindigkeit
auf einen bestimmten Wert
ändern. Das wird also dazu
führen, dass Sie nach oben schießen, und wenn die Schwerkraft kommt, werden
Sie natürlich wieder auf den Boden fallen. Aber das ist es, was das Drehbuch tut. Damit sind wir tatsächlich
fast am
Ende unseres Drehbuchs angelangt.
Es ist unglaublich einfach. Bisher gibt es drei Codezeilen
, und wir
haben eigentlich alles, was wir brauchen, um in Unity zu bewegen
und zu springen. Wenn ich hierher zurückkehre, werde
ich diese Werte jetzt tatsächlich ändern. Lass uns die Sprunghöhe auf
etwa zehn setzen. Lass uns Tempo fünf spielen lassen. Du kannst sehen, wenn ich
weitermache und so weitermache, sollte
ich
mich bewegen und springen können. Aber eins fehlt noch. Wir
rufen diesen Codeblock nie wirklich auf. mir also nicht
sagen, okay, ich möchte diesen
Code dafür aufrufen, wir müssen
einen anderen Eingabebefehl verwenden. Lass uns hier runter gehen. Nehmen wir an, solange diese Bedingung erfüllt
ist, machen Sie den Code darunter,
geben Sie den Punkt ein, drücken Sie die Taste runter,
öffnen Sie Klammern, öffnen Sie Klammern, Leertaste ein oder was auch immer
Sie wollen Ich werde tatsächlich den Keycode
verwenden, weil ich es vorziehe, die
SD-Karte zu springen statt Leertaste,
aber du kannst verwenden, was du willst.
Fühl dich wie ein Spiel Dann setzen wir hier
eine geschweifte Klammer und Visual Studio oder
was auch immer Sie verwenden werden, füllt diese
automatisch aus Sie möchten im Grunde eine C-Klammer dort und eine Co-Klammer dort Und das wird uns
sagen, welcher Code in dieser if-Anweisung enthalten ist,
solange das wahr ist, solange Sie die
Taste drücken oder solange Sie nur
die WK drücken. Dann führe diesen Code Und alles, was ich tun
will, ist das Jump Void zu nennen. Hoffentlich macht das alles
ziemlich viel Sinn. Ich komme ziemlich schnell voran und es gibt hier viele
Konzepte,
vor allem, wenn Sie
noch nie zuvor programmiert haben, was ein
wenig einschüchternd wirken mag Aber im Grunde haben
wir im
Moment nur
diesen Speicherplatz,
wir haben unsere
Variablen, die Dinge wie
Einstellungen speichern Dann legen wir diesen Wert auf der
Grundlage dessen fest, was der
Spieler bewegt. Und wir sagen, wenn
sie die W-Taste drücken, dann rufen Sie diesen Code hier auf. Und dieser Code sagt,
okay, beweg dich in diese Richtung. Und dieser Code hier drüben, jedes einzelne Bild
sagt, bewegt euch in diese Richtung, je nachdem, was der Spieler gerade mit seiner Tastatur
macht. Also, wie ich schon sagte, es mag
im Moment nicht besonders intuitiv
erscheinen, aber hoffentlich macht es ein bisschen Sinn,
was wir versuchen zu tun. Und wenn ich wieder in mein Spiel
zurückkehre, kann ich auf RestWK springen Aber ich möchte noch eine
Änderung Und ich will nur springen
können, solange ich Hausarrest habe Also lass uns hier weitermachen
und
ein doppeltes Und-Zeichen hinzufügen und sagen, ist Und das bedeutet, dass wir diesen Code nur ausführen können, solange wir Hausarrest haben
. Weil ich nicht in der
Lage sein möchte ,
mittendrin zu springen Ich möchte nur vom Boden springen können
. Und wir werden
eine weitere Bedingung hinzufügen, anhand derer wir
feststellen können, ob
wir hier Hausarrest Wir sagen
bei Kollision nichtig, gib zwei D ein, Kollision
heißt das im Grunde, sobald wir die Collider kollidieren,
die wir weiter
oben in der Box hinzugefügt haben, werden
Collider das hier als Leere
bezeichnen Solange du
kollidierst, sind sie okay. Wir sind kollidiert, nenne das Leere. Diese Kollision speichert,
womit wir kollidiert sind. Wir sagen,
wenn die Kollision das Spiel Object Dot
Compare-Tag öffnet und
wir geben Boden ein Dann werden wir sagen, ob geerdet gleich wahr
ist. Wir werden einen
sehr ähnlichen
Code erstellen, um eine Kollision zu beenden Kopieren Sie diesen Code genau, außer dass
Sie Grounded to Force setzen. Das mag viel erscheinen,
es mag ein wenig verwirrend erscheinen besonders im Vergleich zum Rest
des Skripts, aber es ist eigentlich sehr einfach Diese Lücke hier drüben,
genau wie Update und Start von Unity aufgerufen werden,
wird von Unity aufgerufen. Jedes Mal, wenn wir
mit etwas kollidieren, kümmert sich
die Physik-Engine darum, dann kollidieren wir mit
diesem Ding und wir speichern es in dieser
variablen Und im Grunde sagen
wir, okay,
ob Kollision das
Ding ist, mit dem wir kollidiert sind, oder besser gesagt, der
Collider,
mit dem wir kollidiert oder besser gesagt, der
Collider,
mit dem wir kollidiert Wenn das Objekt, an das es
angehängt ist, den Tag ground hat, dann möchte ich
sichergehen, dass ich
diese Variable hier
drüben auf true gesetzt habe , damit Andernfalls, wenn wir eine Kollision
beenden, wenn wir einen Collider verlassen,
wenn der Collider ,
von dem wir ausgestiegen sind, Ground heißt, möchte
ich dasselbe tun,
außer ihn auf Force zu setzen Das Letzte, was wir tun
müssen, bevor wir das tatsächlich testen, ist
zurück in unser Spiel zu gehen, in unseren Speicher zu
gehen, unsere Dinge auf drei Stockwerken auszuwählen und wir wollen
diesen Ground-Tag hinzufügen Klicken Sie hier auf Tag hinzufügen, klicken Sie auf das Plus und
geben Sie Boden ein Nein, ich gehe zurück
zu meinen Stockwerken und werde sicherstellen, dass sie alle mit der
Bodenbeschriftung versehen sind. Diese Tags sind im Grunde eine
Möglichkeit, bestimmte Objekte
oder Objektgruppen zu identifizieren. All diese Objekte sind Teil
des Bodens und ich möchte, dass sie
alle Bodenmarkierungen sind. Und das ermöglicht mir
, diesen Code hier
drüben zu schreiben , der mir sagt, wann
ich den Boden erreicht habe oder nicht. Das ist eigentlich
alles, was wir
brauchen, um unsere Spiele zum Laufen zu bringen. Wenn wir zurück zum
Player gehen, sehen wir
hier drüben , dass wir sie offensichtlich das
letzte Mal im Spielmodus bearbeitet haben. Also lassen Sie uns diese im
normalen Modus ändern, es wird gespeichert, ich muss sechs machen, ich mache die Sprunghöhe fünf. Ich werde natürlich keine von
beiden ändern
wollen , weil sie in meinem Code behandelt werden
. Wir klicken auf Player und klicken, schauen wir uns an, was passiert. Das Wichtigste zuerst:
Wir fallen hin, genau wie wir es getan haben, und
landen auf dem Boden. Wenn ich nach unten scrolle, kann ich
sehen, dass meine Hausarrest hat, stimmt, was
genau das ist, was ich will Und wenn ich auf das WK klicke,
wechselt es von falsch zu
wahr. Und ich kann springen Wenn ich das WK in der
Luft anklicke, funktioniert es nicht. Mein Springen funktioniert also
wirklich super. Und wenn ich mich nach links und rechts bewege,
können wir sehen, dass es ein bisschen schnell ist. Ich möchte aus dieser Bewegung
vier machen, zurück in mein Spiel gehen. Und das sollte eigentlich alles
sein, was wir
für eine grundlegende Bewegung, den
Scripting-Fall, brauchen für eine grundlegende Bewegung, den
Scripting-Fall, Und ich springe und ich kann mich natürlich bewegen,
genau wie ich muss Nun, das sieht vielleicht
ein bisschen albern aus, und natürlich werden
wir es im Laufe der Zeit optimieren. Aber das ist quasi die Grundlage für
unser Spiel. Was ich eigentlich will, basierend auf der Plattform, die ich will, ist eine
etwas schnellere Geschwindigkeit, einen etwas höheren Sprung. Und ich werde diese
Schwerkraft-Skala tatsächlich
auf zwei
ändern wollen . Und ich muss sie vielleicht
etwas höher ändern. Vielleicht muss ich das hier drüben auf acht machen
. Wir können sehen, wie das aussieht. Sieht ein bisschen besser aus. Ich weiß, dass es mit dieser Bewegung ein bisschen
ruckartig aussieht, aber es ist ein
ziemlicher Retro-Stil und leicht zu bewegen, aber falls du das wirklich
nicht willst
und ich mir nicht sicher bin, werde
ich es behalten Ich habe es ursprünglich nur hinzugefügt
, weil es ziemlich einfach war. Es gibt momentan tatsächlich
eine sehr einfache Lösung , um das
anders zu machen. Sie können sehen, dass es
ziemlich ruckartig ist. Wenn du das nicht willst, dann gehst
du in unseren Code und wir
werden einfach dieses Wort roh entfernen Das
wird Unity im Grunde sagen, okay, rundet es nicht auf 10. Machen Sie es schrittweise, je nachdem wie lange sie den Schlüssel schon in der
Hand halten. Wenn wir das verschieben, können wir
sehen, dass das
hier in Aktion etwas reibungsloser abläuft,
je nachdem, wie Sie sich bewegen möchten. Ich habe tatsächlich vergessen, sie wieder zu
ändern, also machen wir weiter
und machen daraus einen 6,8 und ändern die
Glaritätsskala zwei Wenn wir noch einmal spielen können, können
wir sehen, dass wir jetzt eine
etwas gleichmäßigere Bewegung haben und es dadurch viel besser aussieht Der Grund, warum ich
es zuerst zur Regel gemacht habe, war , dass ich dachte, es wäre eine einfachere Art, das Konzept zu
veranschaulichen Aber im Allgemeinen ist es
besser, diese Achse zu verwenden , die das Ding weicher macht , weil es einfach
ein bisschen natürlicher aussieht Vielleicht ändere ich das
wieder. Wir können es
natürlich
im Laufe eines Spiels anpassen natürlich
im Laufe eines Spiels Hoffentlich hast du
mitgemacht und es
geschafft,
dieses sehr einfache
Bewegungsskript zu erstellen , und wir können mitmachen Das ist jetzt das
Ende des Videos. Aber es gibt noch eine letzte
Sache, die ich hinzufügen möchte . Wir haben
gerade Bewegung hinzugefügt und es ist eine unglaublich
einfache Änderung.
Alles, was wir tun wollen, ist, dass
wir hier rausgehen und ein neues
Physikmaterial erstellen
wollen. Wir werden
hier zwei Physikmaterialien herausfinden, zwei D, wir werden
es Player nennen. Und wir werden
die Reibung auf Null setzen. Das wird uns im Grunde
ermöglichen , nicht an den Wänden hängen zu bleiben. Ich weiß nicht, ob du es das letzte Mal
gesehen hast, wir werden es
unserem Box Collider hinzufügen Wenn wir jetzt vorne
gegen die Wand springen , werden wir uns
nicht daran halten Denn was
vorher passiert ist, war, wenn wir gegen die Wand landen
und uns daran halten, sind wir tatsächlich
dort festgefahren, aber jetzt rollen wir gleich wieder durch. Das
ist eigentlich das Ende. Ich weiß, das ist ein
ziemlich langes Video und es war ziemlich
viel passiert, aber es war das
allererste Drehbuch. Es sind also offensichtlich ziemlich
viele neue Konzepte auf einmal. Hoffentlich hast du
mitgemacht und hoffentlich
konntest du dieses Bewegungsskript
genau wie ich erstellen . Es ist unglaublich
einfach, wie ich schon sagte. Und ich habe jetzt den
Zugriff darauf geändert, aber ich könnte
es im Laufe
meines Spiels anpassen, weil ich nicht
sicher bin, wie sehr es mir gefällt,
aber ich werde sehen, dass das im Grunde das Spiel für
den Moment ist und das ist alles, was
wir brauchen Wenn du also
mitgemacht hast, hast
du deine Bewegung
genauso wie meine Toll. Und ich werde
im nächsten Video sehen wo wir anfangen werden
,
immer mehr Konzepte hinzuzufügen , um
unser Spiel zu einer
beeindruckenderen Plattform zu machen . Aber wenn du genau das hast ich momentan habe, ist das großartig.
5. 4. Einführung in Prefabs: Hallo, und willkommen
zurück bei Unity. In der letzten Folge haben
wir einige Dinge getan. Wir haben unseren Spieler hinzugefügt, wir haben unser Bewegungsskript
hinzugefügt. Nun, wir haben unseren Player
so gestaltet, dass wir tatsächlich
herumspringen können , und
unsere erste Codezeile hinzugefügt, unser
gesamtes Skript. Und dann haben wir auch
gleich am Ende
dieses Spielermaterial erstellt . Ich hoffe, ihr
konntet alles verfolgen und so weit
kommen, dass
ich mich in meinem Spiel befinde . Falls nicht, und deins
sieht ein bisschen anders aus, empfehle
ich einfach,
vielleicht noch einmal zurückzugehen und es sich vielleicht ein- oder zweimal
anzusehen, nur damit du
mitmachen kannst und sichergehen kannst, dass du alles so hast,
wie ich es gerade Wie ich schon
sagte,
wird mein Drehbuch natürlich jedem einzelnen Video
beigefügt Und so ziemlich jede einzelne
Datei, die ich zusammen mit diesem Kurs erstelle, wird in den
jeweiligen Videos
angehängt. Sie können es
also herunterladen. Wenn deiner nicht funktioniert, schau
vielleicht, wo dein Code anders ist als meiner oder was du anders
machst. Und natürlich sollte
es mit
meinen Dateien völlig einwandfrei funktionieren. Also mach einfach weiter und lass
dich nicht zu sehr vom Tempo
der Dinge einschüchtern Und Sie könnten sich die Dinge noch einmal ansehen
und die Dateien verwenden sollten in der Lage sein, alles zu
verfolgen und alles in kürzester Zeit zum
Laufen Lassen Sie sich also nicht entmutigen. Spieleentwicklung ist schwierig, aber wenn du alles auf
den Punkt gebracht hast , wie ich
es jetzt mache, tolle Arbeit Weil wir
tatsächlich
eine ziemlich lange, letzte Folge gemacht haben. Wenn du mitbekommst,
wo ich jetzt bin, dann ist das toll. Bevor wir
mit dieser Episode beginnen
, in der es nur um Prefabs gehen wird, werden wir zunächst diesen
Assets-Ordner ein
wenig neu anordnen Lassen Sie uns also weitermachen
und mit der rechten Maustaste klicken. Lassen Sie uns einen neuen Ordner erstellen. Und ich nenne
das Verschiedenes weil es im Projekt immer
zufällige Dateien gibt ,
für
die man eigentlich
keinen
eigenen Ordner braucht keinen
eigenen Ordner , wie dieses Physikmaterial. Wir werden nicht verdammt
viele davon machen. Ich werde das einfach in meinen Misk-Ordner legen
. Und alles andere, was mir in meinem Spiel
einfällt, werde ich in
diesen Misk-Ordner legen, falls es in
keinen
der anderen Ordner passt Davon abgesehen müssen wir auch hier
unten einen neuen Ordner
erstellen, und wir werden ihn Prefabs
nennen Wir werden
in einer Minute genau erklären, was ein Fertighaus ist und wie wir
es herstellen können Aber vorerst erstellen Sie einfach den
Ordner, weil Sie einen Speicherplatz für Ihre Fertighäuser haben
möchten Nun, was genau ist ein Fertighaus? Wir haben erwähnt
, dass die Dinge, die wir hier oben haben, Objekte sind Nun, sie sind die
Bausteine unseres Spiels
, denen wir Logik in
Form von Komponenten zuweisen werden. Und das wird es uns ermöglichen, unser Spiel von Grund auf neu
aufzubauen. Aber wir können
diese Objekte nur erstellen , während wir gerade in Unity
entwickeln. Wenn ich zum Beispiel einen neuen Feind
erschaffen wollte, müsste
ich
hier rüber gehen und
ein neues Objekt wie dieses
für das Objekt-Sprite erstellen , vielleicht ein Dreieck bekommen,
die Farbe ändern und von dort aus Logik hinzufügen Aber bei der
Spieleentwicklung möchte
man generell Objekte zur Laufzeit
erstellen können Das heißt, während
das Spiel läuft, während der Spieler
tatsächlich spielt, möchtest
du Objekte
erstellen und zerstören können. Und um das zu tun,
werden wir Fertighäuser verwenden. Wenn das zunächst etwas
verwirrend ist, warum wir das tun müssen, lassen Sie
mich Ihnen ein Beispiel geben Nehmen wir an, wir haben einen Spieler und er muss in der Lage sein, Dinge
zu schießen. Wenn du auf etwas schießt, willst du eigentlich
ein Kugelobjekt erstellen. Sie möchten
ein neues Objekt erstellen, das mit Ihrer Waffe
schießt, sich
über den Bildschirm bewegt und bestimmte Dinge tut , wenn
es einen Feind trifft. Der einzige Weg, oder eher der einfachste Weg,
dies zu tun, besteht darin, Fertighäuser zu verwenden Denn im Grunde ermöglicht es
Ihnen, zur Laufzeit ein Objekt,
Ihr Bullet,
zu erstellen, es für seine Dauer
existieren zu lassen und es dann zu zerstören Wenn Sie
es nicht mehr benötigen, sagen wir, wenn es auf einen Feind oder eine Wand trifft, können
Sie dieses Objekt zerstören. Es existiert also nur für einen begrenzten
Zeitraum der Spielzeit. Und ich werde in einer Minute
genau erklären, wie sie funktionieren, wie Sie
diese Prefabs erstellen können
und wie Sie sie
verwenden können, um Objekte in Ihre Spiele zu
integrieren Aber im Moment musst du
nur wissen,
dass Prefabs zur Herstellung von Objekten verwendet
werden Wie genau verwenden wir Fertighäuser, um
Objekte herzustellen? Nun, wir fangen es genauso an, wie
wir alles andere auch tun würden. Wir gehen hier zur
Hierarchie und
klicken mit der rechten Maustaste auf Erstellen für das Objekt. Und ich werde machen,
das erste Fertighaus ich machen werde, ist eine Spitze Also hat der Feind etwas, in das
er fallen und an dem Objekt, dem
Sprite-Dreieck, sterben kann Objekt, dem
Sprite-Dreieck, sterben Nur um die
erste Art von Feind im Spiel zu machen, nenne
ich das Spike Mach weiter und
verkleinere es ein bisschen. Sagen wir 0,8 für X und Y,
und ich werde ihre Farbe
auf Rot
ändern , damit wir wissen, dass es ein Feind ist. Jetzt haben wir also unseren ersten Feind. Offensichtlich ist das noch
lange nicht getan. Es gibt noch ein paar andere
Dinge, die wir hinzufügen müssen. Als Erstes
werde ich dieses Etikett ändern, genau
wie ich es mit dem Boden getan habe. Ich werde auf Tag hinzufügen klicken. Und ich werde
es zu einem Feindes-Tag machen. Und wir werden das nicht sofort
benutzen, aber das wird sich
später als nützlich erweisen. Stellen Sie also sicher, dass Sie diesen Schritt vorerst nicht
unterbrechen. Als Nächstes werde
ich eine Art Alida
hinzufügen Wenn ich nach Alida suche, kannst du sehen, dass ich eine ganze
Reihe von Kalidern habe Aber der, der am besten zu diesem
passt, ist ein Polygon Alider,
was offensichtlich
wie vier pro Dreieck aussieht Du kannst sehen, wenn du nach unten scrollst, es gibt
so ziemlich viele Collider für jede Art von Objekt, die du haben
könntest Vermeiden Sie natürlich diejenigen,
die nicht zwei D sind, wie einen Kugelbeschleuniger
, einen Boxbeschleuniger oder einen Kapselbeschleuniger, weil wir die beiden D-Collider verwenden werden Aber dieser Polygon-Collider
hat nur eine Zwei-D-Version,
also mach dir keine Sorgen, es gibt keinen Drei-Dreieck
- oder Pyramiden-Collider, also kannst du Aber was wir jetzt getan haben, ist, dass wir unseren Polygon-Collider
hinzugefügt haben unseren Polygon-Collider
hinzugefügt Und bevor ich es
vergesse, möchte ich das jetzt auch zu einem Auslöser machen Das ist
im Moment nicht besonders wichtig , weil
wir eigentlich nur unsere feindliche
Logik
hinzufügen werden und die Tatsache , dass du sterben kannst, wenn
du sie später triffst. Aber das sind nur einige
Schritte, die du
jetzt machen willst , damit du deinen Feind richtig
einrichten kannst. Also wollen wir
es benennen, wir benennen. Es ist nicht so wichtig,
aber es ist einfach nützlich. Wir wollen sichergehen, dass
wir das Etikett gesetzt haben. Wir wollen einen
Collider hinzufügen und wir wollen einen
Trigger-Collider daraus machen Sie können jetzt sehen,
wenn wir auf Play klicken, wird
offensichtlich nichts
passieren, wenn wir darauf eingehen Aber du solltest sehen können, dass wir tatsächlich in der Lage
sind, hindurchzugehen, was wir wollen, weil
wir nicht wollen, dass dieses Objekt etwas ist wir nicht wollen, dass dieses Objekt , das im Raum existieren
kann, sondern dass eher
ein Signal ist, dass
ich
Schaden erleiden kann oder so etwas, wenn ich es treffe. Du willst natürlich nicht
wirklich nicht in der Lage sein, es hinter dir
zu lassen. Denn wenn du
mitläufst und auf ein Objekt
triffst, willst du es
durchqueren und Schaden nehmen können, aber nicht anhalten und irgendwie nicht hindurchkommen
können. Das ist also alles, was wir
im Moment für unser Objekt
einrichten müssen . Aber stellen Sie sicher, dass
Sie irgendwie mitgemacht haben und
den Polygon-Collider hinzugefügt und ihn in den Feind-Tag
geändert haben den Polygon-Collider hinzugefügt und ihn in den Feind-Tag
geändert Das ist genau das, was
wir verwenden werden, um unser erstes
Fertighaus herzustellen. Also
lass uns das doppelt anklicken Ich werde es
hier übernehmen. Klicken Sie auf das Objekt. Ich ziehe es nach unten
in meinen Assets-Ordner. Und das
wird diese neue Datei erstellen
und sie
wird Spike Prefab
Acid heißen Und Sie können hier drüben sehen,
dass es tatsächlich blau wird. Nun, was dieses Prefab ist, können
Sie es sich
wie eine Objektvorlage vorstellen Was ich
hier also im Grunde mache, ist, dass ich sage, okay, ich habe dieses Objekt, das
ich machen möchte, wie eine Vorlage oder so
etwas wie einen Stempel Und so kann ich Kopien von
diesem Objekt machen und
sie in mein Spiel integrieren. Das ist quasi die Vorlage
für das Objekt, das ich gerade erstelle. Also kann ich dann etwas
Code eingeben und sagen,
okay, spawnen in einer Spitze Und es weiß, dass es in
diesem speziellen Objekt mit
diesem speziellen Sprite und
diesem bestimmten Polygon und
so ziemlich allen anderen Eigenschaften, die ich gerade hinzugefügt habe
, spawnen diesem speziellen Objekt mit
diesem speziellen Sprite und
diesem bestimmten Polygon und so ziemlich allen anderen Eigenschaften, die muss.
Es weiß, dass ich mich darauf
beziehe, wenn ich in einer Spitze spawnen
will Also werde ich weitermachen und das zusätzliche vorerst löschen Und ich
werde das jetzt auch aus meiner Szene löschen. Mach dir keine Sorgen, denn
dadurch wird die Spitze nicht wirklich beseitigt Wir können sehen, dass es immer noch hier
unten in Prefabs ist, und wenn ich darauf doppelklicke,
kann ich das eigentliche Prefab bearbeiten Also hier bearbeite ich die eigentliche
Vorlage für das Prefab. Wenn ich ein Prefab hineinziehe, instanziiert
es dieses Objekt
oder erstellt dieses Objekt Das Erstellen einer Instanz dieses
Prefabs nennt man. Wenn ich hier im Spiel Dinge an diesem
Prefab ändere, achte darauf,
dass es das Prefab nicht wirklich überschreibt Es ändert diese spezielle
Instanz eines Fertighauses. Also ich habe es quasi
schon reingebracht. Ich kann mit diesem machen, was ich
will. Aber das wird nichts
an der Tatsache ändern , dass, wenn ich noch einen spawne, es genau dasselbe sein wird Wenn ich
den eigentlichen Stempel
oder die eigentliche Vorlage ändern möchte,
muss ich das hier tun Denn wenn ich das
zum Beispiel orange mache, kannst
du jetzt
jedes Mal sehen, wenn ich in diesen
Fertighäusern spawne,
sie Beachten Sie auch, dass dieses Prefab, das wir nicht geändert haben, mit der Originaldatei
verknüpft ist Sobald wir
eine Änderung daran vornehmen, ändert sich
der Link, weil
ich diese Farbe geändert habe Wenn ich die Farbe wieder auf Rot ändere
, können
wir sehen, dass Grün und Gelb weiterhin
grün und gelb bleiben. Aber die, die ich nicht
geändert habe, sind rot. Aber andere Mengen, die ich nicht geändert habe,
werden wirksam sein. Wenn
ich zum Beispiel die Skala 0,85 setze, ist das nicht 85, sondern mache
sie etwas größer Wir können sehen, dass all diese Fertighäuser tatsächlich ziemlich größer geworden sind, aber dieses wurde nicht, weil wir dieses bereits geändert hatten Es war 214-41-2616 Und
wenn ich hierher zurückgehe und das wieder auf acht
ändere, können
wir sehen, dass es bei
214-41-2616 bleibt, weil
wir im Grunde genommen, sobald Sie eine bestimmte
Qualität an diesem können
wir sehen, dass es bei
214-41-2616 bleibt, weil
wir Fertighaus ändern, es ein eigenes Fertighaus ist. Und damit Sie
sich nicht von diesem originalen Fertighaus überlisten lassen, das
hier mit dieser kleinen blauen Linie gekennzeichnet ist . Das sind die Dinge, die ich im Fertighaus
geändert habe. Das müssen
Sie nur beachten, es ist nicht besonders wichtig Aber beachten Sie nur, wenn Sie Ihr aktuelles Fertighaus
ändern möchten, müssen
Sie es hier tun. Also werde ich
weitermachen und all diese
Spikes vorerst
löschen Und ich werde
anfangen, bevor
ich anfange , weitere
Fertighäuser herzustellen Lassen Sie mich noch einen einfachen
erstellen, zwei Objekte erstellen und
ich mache einen Kreis Und das wird später
ein weiterer Feind sein , es
wird ein Stachelball sein Du wirst sehen, wenn wir Spikes
und Sprites und so hinzufügen , aber ändern wir auch
das auf Rot Fügen wir einen Circle Collider hinzu. Und stellen wir sicher, dass
es das Schlagwort Enemy hat. Stellen Sie sicher, dass das ein Auslöser ist,
das ist alles, was wir brauchen. Wir können das vielleicht auch
etwas kleiner machen. Das ist eigentlich
alles, was wir brauchen, um unsere neuen Fertighäuser herzustellen Ziehen wir es also noch einmal nach unten. Wir können jetzt sehen, dass wir unsere beiden Fertighäuser
haben. Ich werde das löschen
. Ich werde das tatsächlich in Spike Ball umbenennen Wenn wir jetzt
doppelklicken, können wir sehen dass
wir unseren Spike
und unseren Spike Ball haben, sie sind beide Feinde
und beide rot Und an beiden sind
Collider angebracht, die Auslöser sind Sie werden also nicht so stark
vom Weltraum beeinflusst, aber sie werden
die Game-Engine
wissen lassen , okay, ich habe etwas getroffen Es ist wichtig zu
beachten, dass andere Collider das auch
tun Es ist nur so, dass sie auch die
zusätzliche Funktionalität haben, dass sie auch als Objekt in der Raumzeit
existieren , was die Physik beeinflussen kann Gehen wir zurück zu diesen Fertighäusern
und stellen wir sicher, dass sie alle ziemlich genau so
eingerichtet sind , wie wir sie haben
wollen Denn was wir jetzt tun
werden, ist ein neues Prefab zu erstellen, und das wird unsere Kartenkachel
sein Der Grund, warum wir
diese Prefabs erstellen , ist
, dass wir
tatsächlich mit der Erstellung
unseres Skripts zur Kartengenerierung beginnen Im Moment haben wir
einen Spieler und wir
haben drei Blöcke, aus denen
er springen kann Aber das ist es irgendwie. Wir haben
kein unendliches Spiel. Wir haben nichts, zu dem
wir uns bewegen könnten. Wir haben nur drei Dinge, und das ist quasi
das ganze Spiel. Obwohl ich sie mit allen möglichen
interessanten
Hindernissen gefüllt habe ,
gibt es nur drei davon. Und wir wollen natürlich, dass
das Spiel irgendwie weitergeht und
so viele wie möglich hat. Um das zu tun, müssen
wir mit
diesem Bodenobjekt
ein Prefab erstellen mit
diesem Bodenobjekt
ein Prefab und darauf platzieren,
was wir wollen. Und dann werden wir
Code schreiben
wollen , der
das hineinbringt Jetzt werde ich
anfangen, genau das zu tun,
aber bevor ich das tue, lassen Sie mich kurz einen Haftungsausschluss
sagen Die Art und Weise, wie wir
das machen werden, ist, dass wir eine ganze Reihe
verschiedener Bodenfliesen
erstellen werden. Stell sie dir wie
Plattformen im Spiel vor, und du kannst so
viele erstellen, wie du willst. Darauf kommen wir später zurück, wenn
wir es programmieren. Aber im Grunde wird dies
die vollständige Liste
der möglichen
Kacheln sein , auf denen das Spiel spawnen kann Wenn du nur eines
mit einer einzigen Spitze machst, wird
dein Spiel nur aus einer ganzen Reihe
von Dingen mit einer ganzen
Reihe von Stacheln bestehen.
Das ist es. Aber wenn wir eine mit einer
Spitze machen, eine mit zwei Stacheln, vielleicht eine mit drei Stacheln, eine mit
einer Spitze
und einer Stachelkugel,
eine eine Je mehr du hinzufügst, desto abwechslungsreicher wird dein
Spiel Und du wirst sehen, je mehr Feinde
und aufregendere Dinge
hinzukommen , wir können
vielfältigere Plattformen und ein
interessanteres Spiel entwickeln. Aber ich überhole mich selbst. Ich fange einfach an, indem ich
einen einfachen Boden mache und dir
zeige, wie ich ihn
spawnen kann , um
einen vorgefertigten Boden zu machen Ich werde genau das
Gleiche tun, was ich zuvor getan habe. Ich werde
das etwas größer machen,
aber ich denke, das ist ungefähr eine
gute Größe für eine Plattform. Ich werde es runterziehen und jetzt können wir sehen, dass ich ein
neues Fertighaus namens Floor Two habe Ich werde das Bodenfliese eins nennen. Und das wird
meine grundlegende Bodenfliese sein. Wenn ich jetzt darauf doppelklicke kannst
du sehen, dass ich in meinem Prefab-Editor
darauf zugreifen kann und ich kann es tatsächlich
genau nach Belieben anpassen Wie ich schon sagte, das
ist , dass es die Steine sein werden , die wir jetzt in unserem Spiel
spawnen werden Es ist nur ein einfaches Plättchen,
es gibt keine Feinde, es gibt keine Hindernisse,
es ist nur ein Plättchen Also werden wir es
etwas interessanter machen. Ich werde damit beginnen, eine Spitze
hinzuzufügen. Lassen Sie mich von meinem Präfix
bis zu diesem Prefabittor ziehen. Wir können jetzt sehen, dass wir hinzugefügt haben, dass es sich ein sogenanntes untergeordnetes Objekt
handelt Es ist mit dem
ursprünglichen Objekt verknüpft und wenn ich das ursprüngliche
Objekt verschiebe, bewegt es sich mit. Das haben wir schon früher gesehen,
als wir
all unsere Fehler
im übergeordneten Speicherobjekt gespeichert haben. Sie können es sich
wie das größere Objekt
oder wie das
Ordnerobjekt hier vorstellen . Es wird das übergeordnete Objekt genannt. Und wir fügen eine Spitze
innerhalb unseres übergeordneten Objekts hinzu. Ich werde dort eine
Spitze platzieren. Es ist ziemlich gut zentriert. Es ist nicht so
wichtig es zu schön aussehen zu lassen, weil wir
natürlich später
Sprites und alles
andere hinzufügen später
Sprites und alles
andere Aber das ist ein Platzhalter,
aber ich werde das kopieren und ich werde dort
noch einen platzieren Bewege es leicht nach unten. Das ist so ziemlich
unser erstes
fertiges und erstelltes Objekt . Offensichtlich haben wir keinen Todeseffekt oder
irgendein Gesundheitssystem geschaffen . Es wird jetzt nicht viel bewirken. Aber wenn wir zu unserem Spiel zurückkehren
und unsere Bodenplatte sehen, können
wir sehen, dass sie tatsächlich mit unserem Objekt verknüpft
ist und genau das geschaffen
hat, was wir beim
Spielen
wollten. Wir werden ein Drehbuch schreiben
, in dem es heißt: Okay,
leg eins da hin , und leg eins
da hin und wieder eins da. Wir können sehen, dass wir eine Plattform haben, ein Spiel, das sich allmählich herausbildet. Wenn wir kicken, können
wir uns bewegen und so
tun, als würden wir das Spiel
spielen Wir können über diese Plattform springen
und über diese springen. Offensichtlich wären
wir dort gestorben. Aber du verstehst das Wesentliche. Unser Spiel wird nicht
so schwer sein, mach dir keine Sorgen. Aber so werden
wir
diese Objekte verwenden, um unser Spiel zu spielen und
unsere interessante Karte zu erstellen. Also, was ich mit dem Rest
dieses Videos
machen werde , ist einfach noch
ein paar Fertighäuser zu machen Du musst nicht
genau folgen, was ich mache, du kannst sie
so machen, wie du willst Ich würde empfehlen,
meinem Spike und meinem Spikeball
als unseren Feinden zu folgen , weil
wir später einige
Sprites hinzufügen Und falls du meine Sprites
verwenden möchtest,
ich habe diese Sprites bereits erstellt Wenn du dir also einen
anderen Feind
ausdenkst, musst du entweder deinen eigenen Sprite erschaffen oder dir einen alternativen Plan
einfallen lassen Aber wenn du
das Spiel genau
so machen willst , wie ich es mache, bleib
vielleicht vorerst bei diesen
beiden Wenn du im Kurs
weiter fortgeschritten bist, kannst
du natürlich vielleicht damit beginnen, deine
eigenen Feinde hinzuzufügen und
deine eigenen Spielsteine zu erstellen. Aber vor allem, wenn Sie Unity zum
ersten Mal verwenden, sollten Sie sich so weit wie möglich an diese beiden
Objekte halten. Davon abgesehen können Sie beliebige Kacheln
erstellen, sodass Sie nicht
zwei, sondern drei erstellen können. Machen Sie
sie natürlich alle möglich, denn Sie möchten, dass etwas in
Ihrem Spiel unmöglich ist. Aber du kannst
kreativ werden und so viele
verschiedene Kacheln erstellen ,
wie du willst. Sie können auch so viele Kacheln erstellen,
wie Sie möchten. Je mehr du hast, wie ich schon
sagte, desto besser. Weil das bedeutet, dass
das Spiel abwechslungsreicher sein wird. Natürlich
möchtest du mehr Spielsteine haben, die du eventuell
haben musst, indem du sie
kopierst und einfügst. Und ich nenne
diese Bodenfliese zwei. Ich werde das tatsächlich eine ganze Reihe
von Malen
machen , weil ich
damit beginnen werde , hier
acht Fliesen zu machen. Ich habe acht,
macht im Moment tatsächlich zehn. Sie haben komische Namen und sie sind offensichtlich
alle gleich. Aber ich werde sie jetzt bearbeiten. Also habe ich Bodenfliese
eins, Bodenfliese zwei. Ich mache diese Bodenfliese drei. Das ist natürlich Bodenfliese vier. Und so weiter und so fort, bis zur
zehnten Bodenplatte. Siehst du, jetzt habe ich meine
zehn Bodenfliesen. Jetzt, wo ich
das mache, werde ich mein Spiel
sogar noch ordentlicher gestalten. Ich klicke mit der rechten Maustaste und erstelle einen neuen Ordner. Ich werde das Bodenfliesen nennen
. Ich werde sie
alle hier hineinlegen, sie
hineinziehen und ich werde
auf jedes einzelne doppelklicken. Und wenn ich sie dann bearbeiten
möchte,
muss ich
natürlich, wenn ich Feinde hinzufügen
will, sofort rausgehen, zu den
Prefabs zurückkehren und sie so hinzufügen Aber das bedeutet, dass alle
meine Bodenfliesen hier
aufbewahrt werden , sodass ich den
Überblick behalten kann und weiß,
wo sie sich alle Also werde ich meine Bodenfliesen
so
lassen wie ich sie hatte. Ich finde
das ziemlich gut. Meine zweite Bodenfliese, ich werde
eine ziemlich einfache machen, sie wird nur einen
einzigen Dorn in der Mitte haben Und dann Bodenfliese drei, ich werde gegen Ende eine doppelte
Spitze haben Wie ich schon sagte, du kannst damit machen,
was du willst. Es muss nicht
genau das sein, was ich mache. Lassen Sie mich das etwas nach unten verschieben, aber das sind die ersten drei. Ich mache dort
Bodenfliesen, füge die doppelte Spitze hinzu,
dann Bodenplatte vier, ich fange an,
etwas Interessanteres hinzuzufügen Also nehme
ich den weg und füge dort drüben einen
Stachelball Ich finde, es sieht ziemlich cool aus. Das ist für Fliesen.
Fußboden. Titel fünf. Ich glaube, ich werde am Anfang
einen doppelten Anstieg haben am Anfang
einen doppelten Anstieg Dann fügen wir hier gegen Ende vielleicht einen
Spike-Ball hinzu. Wie ich schon sagte, du kannst
damit wirklich machen, was du willst. Sie können
mitmachen, wenn Sie wollen, aber Sie müssen wirklich nicht
den Boden unter vier Wänden verlegen. Ich glaube, ich werde
einfach Spike Balls essen. Lass mich
das loswerden. Ich nehme einen
Spikeball hier drüben. Vielleicht einen da drüben, also musst du drüber springen Wir werden
das Bewegungsskript
im Laufe des Spiels anpassen ,
um sicherzustellen, dass es
immer möglich ist , da
dies möglicherweise
kein möglicher Sprung im
aktuellen Zustand des Spiels Denke nur daran, dass
du
deine Skripte immer so anpassbar
wie möglich hältst deine Skripte immer so anpassbar
wie , damit du sie anpassen
kannst. Zum Glück haben wir mit unserem
Skript diese
Variablen offensichtlich hier hinzugefügt. Sprunghöhe und Spielgeschwindigkeit. können wir an dem Drehbuch noch etwas ändern, was wir Moment können wir an dem Drehbuch noch etwas ändern, was wir
wollen, aber vielleicht fügen wir später noch
andere Dinge Sie nur daran , dass der Schlüssel zu einer guten
Spieleentwicklung, zumindest einer davon, immer darin besteht, sicherzustellen, dass Sie
Ihr Spiel im Laufe der Zeit anpassen. Lassen Sie sich nicht dabei erwischen, bei etwas zu bleiben, das nicht funktioniert, bevor ich wieder damit beginne
, weitere Reifen zu entwickeln. Ich werde diese drei Fertighäuser tatsächlich
löschen. Und ich werde dieses Fertighaus auch tatsächlich ändern. Was ich tun werde,
ist, das sogenannte
Auspacken eines Fertighauses zu tun ,
was im Grunde
das Spiel bestimmt, im Grunde
das Spiel Ich möchte eigentlich nicht mehr, dass das ein
Fertighaus ist. Ich möchte, dass es ein eigenes Objekt ist. Auch hier klicke ich mit der rechten Maustaste auf Prefab und
wähle Unpacked Completely aus Und dann werde ich weitermachen und diese Stacheln loswerden Jetzt habe ich mein
ursprüngliches Objekt zurück. Im Grunde habe ich Unity
gerade gesagt,
obwohl ich mein gesamtes
Prefab auf diesem Objekt aufgebaut
habe, möchte ich es so machen, dass es
sein ursprüngliches Objekt ist Auch hier möchte ich die
Verbindung zwischen dem Prefab und dem Prefab trennen Ich habe immer noch alle meine Fertighäuser, aber jetzt ist das nur ein Objekt.
Auch hier ist es nicht verlinkt Und Sie können sehen, dass es
von blau zu normal gefärbt wurde. Gehen wir nochmal rüber und machen noch ein paar Bodenfliesen. Ich finde es gut,
vielleicht noch einen mit dem Doppelten zu haben. Schieb das etwas nach unten, dann können wir einen
Spike-Ball direkt drüber haben Das wird dort
ziemlich schwierig werden. Das ist 45 ein bisschen ähnlich, aber ich denke, es ist
vielleicht ein bisschen anders. Also
lass uns das dorthin verschieben. Kann es bewegen, du musst, es ist ein bisschen höher, also ist
es ziemlich einfach, denke ich. Dann Bodenfliese acht. Ich werde es nur ziemlich einfach
machen. Nochmals, dieser wird eigentlich nur ein
Stachelball in der Mitte sein Wir werden
diese natürlich bearbeiten, wenn wir
weitere Dinge hinzufügen , weil das für sich genommen nicht
sehr aufregend Aber sobald wir das Spiel gespielt haben, müssen
wir natürlich
vorbeirennen, um mit der Kamera Schritt zu halten. Sogar
so etwas könnte etwas
interessanter sein , als
es zunächst scheint. Aber wie dem auch sei, weiter
zu Bodenfliese neun. Ich werde am
Anfang einen Spipal nehmen , weil ich
glaube, dass ich das noch nicht gemacht habe Wir müssen
darunter hindurchgehen und
drüber springen und dann Bodenplatte zehn Wir nehmen drei Stacheln. Das sind vorerst alle meine Kacheln. Ich habe vier mit
Stachelkugeln, ohne Stachelkugeln, und ich habe sechs
mit Stachelkugeln und alle haben so
ziemlich Stacheln , außer Das werden die
Bausteine für unsere Karte sein. Und ich meine das wortwörtlich, denn sie sind
das, worin wir spawnen
werden, wenn wir
unser Skript zur Kartengenerierung schreiben Wenn Sie nun
dieser Lektion folgen und eine Reihe von Kacheln
haben, ist
das alles, was Sie tun müssen Was wir getan haben, ist, dass wir hier unsere feindlichen Fertighäuser gebaut haben. Und jetzt haben wir auch eine Reihe
von Fliesenfertigteilen erstellt. In der nächsten Lektion werden wir damit beginnen, ein
Skript zu schreiben, das sagt:
Okay, spawnen Sie in diesen Fertighäusern nach dem Zufallsprinzip, damit wir mit der Generierung unserer Map beginnen können Und nachdem wir
das getan haben, werden
wir tatsächlich ein
Kamera-Pan-Skript hinzufügen Oder vielleicht machen wir
das zuerst. Stellen Sie also sicher, dass die
Kamera ständig schwenkt und der Spieler mit der Kamera Schritt halten muss Und das
wird im Grunde zu unserem Spiel beitragen. Man muss also ständig in Bewegung
sein, um
die gesamte Kamera zu behalten und
diesen Hindernissen auszuweichen Das alles kommt also
im nächsten Video. Aber wenn du alles
mitverfolgst und deine zehn Kacheln hast, ist
das großartig und
wir werden sie im
nächsten Video
verwenden. Danke.
6. 5. Unsere Karte erstellen: Hallo und willkommen
zurück bei Unity. Nun, im letzten Video, haben wir
natürlich all unsere Prefabs und all
unsere verschiedenen Objekte erstellt , in
denen wir
spawnen werden , wenn wir mit der Erstellung unserer Map
beginnen Aber jetzt müssen wir tatsächlich den Code
schreiben, der Unity anweist
, in unseren Objekten zu
spawnen Das mag wie eine ziemlich mühsame und komplizierte Aufgabe erscheinen, aber es ist tatsächlich viel
einfacher, als Sie Und wir werden
es in zwei Teile aufteilen. Das erste, was wir tun
werden, ist ein Drehbuch zu schreiben
, das
die Kamera im Grunde anweist ,
ständig über
den Bildschirm zu schwenken , damit der Spieler etwas
verfolgen kann. Zweitens
werden wir ein
Drehbuch schreiben, das im Grunde festlegt, dass wir Dinge auf der Grundlage der
Kameraposition
erzeugen wollen Dinge auf der Grundlage der
Kameraposition
erzeugen Mit anderen Worten, wenn die Kameras hier
drüben dort etwas hervorbringen und wenn die Kameras
dort
drüben etwas hervorbringen, haben
wir ständig diese Objekte die erscheinen, während
wir uns bewegen Bevor ich mir selbst zuvorkomme, fangen wir einfach damit an, das
Kamera-Pan-Skript zu erstellen Öffnen wir
Scripts, unseren Ordner. Klicken wir mit der rechten Maustaste, um ein
neues C-Sharp-Skript
zu erstellen ,
und wir nennen es Camera Move. Nun, das wird tatsächlich
ein unglaublich einfaches Skript sein . Es wird aus zwei Codezeilen bestehen, oder sogar aus einer. Oder wir werden zuerst diese beiden
Lücken beseitigen und ein festes Update verwenden, weil
wir festes Update verwenden, weil hier einfach eine auf
Physik basierende Ausgabe haben werden,
oder besser gesagt, physikbasierte Berechnungen und Prozesse Und wir werden keine
Eingaben oder irgendetwas
für dieses Skript verwenden Eingaben oder irgendetwas
für dieses Skript Alles, was wir haben werden,
ist diese Leere hier drüben, die offensichtlich
jedes feste Intervall
etwa einen Frame lang sein wird . Und wir werden zwei Variablen
erstellen. Die erste von ihnen
wird
eine öffentliche Einrichtung sein , zwei D, und
wir werden sie RB nennen. Du musst dir keine Gedanken darüber machen , dir unterschiedliche Namen
auszudenken , solange sie in
unterschiedlichen Skripten sind, du kannst dieselben Namen verwenden. Natürlich können Sie nicht zwei
Dinge, R B, in einem Skript benennen, aber wir dürfen hier
denselben R B-Namen verwenden, obwohl wir eigentlich über etwas anderes
sprechen. Wie dem auch sei, die zweite
Sache,
die wir haben werden, ist ein öffentliches
Fahrzeug, und wir werden es Kamerageschwindigkeit
nennen. Der gesamte Code
, den wir hier benötigen, ist dem Code, den
wir für die
Spielerbewegung geschrieben haben, sehr
ähnlich . Wir werden starr sein, der Körper
hat seinen neuen Vektor zwei verloren. Wir werden es auf
Kamerageschwindigkeit und auf Null setzen. Wir müssen das nicht wirklich
auf Null setzen, wir könnten es auch
auf RB do losityty setzen, aber weil wir generell nicht wollen,
dass sich unsere Kamera auf und ab
bewegt, macht das wirklich keinen großen Unterschied Lass uns einfach weitermachen und den Wert auf Null setzen,
das spielt keine Rolle. Du könntest es auch einfach auf blosityy
setzen, denn du wirst sehen, wenn
wir unseren starren Körper aufstellen, wird
es wirklich keinen
Unterschied machen , weil
wir es im Grunde so machen
werden, dass die Kamera
nicht von der Schwerkraft beeinflusst Darauf komme ich in einer Minute zurück. Aber das ist eigentlich der
gesamte Code, wir brauchen, um eine Kamera zu haben, die mitschwenkt wenn
wir unser Spiel immer komplizierter machen. Wir könnten das beheben und vielleicht die
Geschwindigkeit der Kamera mit der Zeit erhöhen. In diesem Fall
werden wir
eine Variable haben , die mit der Entfernung
zunimmt. Und dann werden
wir alle paar, ähm, Meter oder alle paar hundert
Meter oder was auch immer, oder alle paar hundert
Meter oder was auch immer,
die Kamerageschwindigkeit erhöhen. Aber im Moment
wird das ganz gut funktionieren. Gehen wir zurück zu Unity und gehen wir zu unserem
Hauptkameraobjekt. Wir werden unser
Kamerabewegungsskript darauf ziehen. Jetzt haben wir unseren starren Körper
und unsere Kamerageschwindigkeit, aber wir haben dieser Hauptkamera noch keinen
starren Körper hinzugefügt . Wenn wir versuchen, das Skript auszuführen
, erhalten
wir eine Fehlermeldung, die besagt, ich weiß nicht, was
dieser starre Körper ist. Sie versuchen, sich darauf zu
beziehen, indem Sie sagen, oh, stellen Sie uns die Geschwindigkeit so ein, aber ich habe
da nichts , also kann ich es nicht wirklich machen. Wir
müssen unserer Kamera einen starren Körper
hinzufügen und lassen uns die
Komponente Starrkörper
zwei D hinzufügen und auf Abspielen klicken. Sie denken vielleicht, nun, wird das
nicht dazu führen, dass
die Kamera herunterfällt? Und du hättest zu 100% recht. Tatsächlich werden wir, wenn
wir jetzt sehen, dass unsere Kamera tatsächlich
herunterfällt. Es sieht vielleicht so aus, als ob
alles nach oben geht, aber die Kamera fällt
tatsächlich runter. Man kann sehen, wie es da runter geht, was wir wirklich
nicht wollen, aber es ist eigentlich
sehr einfach zu reparieren. Weil
wir nicht
den gleichen starren Körper verwenden werden , den
wir für unseren Spieler verwendet haben. Unser Spieler verwendet einen
sogenannten dynamischen starren Körper. Und das ist im Grunde
ein Ridgid-Körper
, der von
Kräften und der Schwerkraft und
einer ganzen Reihe von Dingen
extern von Unity beeinflusst einer ganzen Reihe von Dingen
extern von Unity Es gibt noch eine andere
Art von starrem Körper
, den sogenannten
kinematischen starren Körper
, der nur durch Kräfte beeinflusst
wird Das ist wie ein normaler,
automatisierter starrer Körper, gewissermaßen als würde er Dinge für dich erledigen. Es fällt in den freien Raum. Es weiß, wann es
aufhören muss und
wann es sich bewegen und rutschen muss. Sie können dem natürlich mehr Bewegung
hinzufügen , so wie wir es
hier gemacht haben, so wie wir es gemacht haben, okay. Wenn Sie auf diese Schaltfläche
klicken, bewegen Sie sich in diese Richtung. Aber es macht natürlich auch eine ganze Menge Dinge für uns, insbesondere das Fallen und
die Bewegung, bevor
wir irgendwelche Kodierungen hinzufügen. Wenn ich jetzt zu meiner Hauptkamera gehe, will
ich das nicht dafür. Ich möchte, dass sich die Kamera nur
bewegt, wenn ich ihr sage, dass sie sich bewegen soll. Konkret, wie in einem Drehbuch, können
wir hier sehen, dass
die Variable R B für
Kamerabewegungen nicht zugewiesen wurde. Es
war der Fehler, der
hier
aufgetaucht ist und wir haben ihn bei
jedem einzelnen Bild bekommen,
was, wie ich
gesagt habe, passieren würde Um das zu beheben,
werden
wir diesen Körpertyp in einen
sogenannten kinematischen Grat umwandeln diesen Körpertyp in einen
sogenannten kinematischen Grat dem
Moment, in dem wir das tun, kann der Körper sehen, dass In dem
Moment, in dem wir das tun, kann der Körper sehen, dass
all diese Variablen auf einer Widerstandskraftskala massenhaft sind, alle sofort verschwinden Weil ein kinematischer starrer Körper nicht durch
Schwerkraft oder irgendetwas anderes beeinflusst wird Er bewegt sich nur, wenn
ich ihm sage, dass er sich bewegen soll. Und wir werden weitermachen
und das in mein Drehbuch aufnehmen. Was ich jetzt habe, ist ein starrer
Körper, der quasi wie ein starrer Körper
ist, der komplett manuell arbeitet,
also muss ich ihm sagen, okay,
ich will, dass also muss ich ihm sagen, okay, seine Geschwindigkeit so ist, wie ich es hier
gemacht habe, okay? Stellen Sie die Geschwindigkeit auf diese
variable Kamerageschwindigkeit ein. Wenn ich diese
variable Kamerageschwindigkeit ändere, ändert sich dadurch auch die Geschwindigkeit. Du siehst hier eine Aktion. Wenn ich auf Play klicke,
wird mein Spiel geladen und momentan ist es auf Null gesetzt. Ich glaube, ich klicke zweimal auf Play.
Klicken wir noch einmal darauf. Klick. Im Moment ist es auf Null gesetzt, sodass es sich überhaupt
nicht bewegt. Aber wenn ich das auf eins setze, können
wir sehen, wie die Kamera
langsam anfängt, sich zu bewegen. Wenn ich minus eins sagen würde, würde
ich mich in
dieselbe Richtung bewegen. Wenn ich so etwas wie fünf einstelle, kannst
du sehen, dass ich viel schneller gehe. Und minus zehn zoome ich zurück. Sie können
das natürlich nach Ihren Wünschen bearbeiten. Ich werde
mit einer grundlegenden Panikgeschwindigkeit
von drei beginnen , weil ich denke, dass das für den Anfang gut sein
wird, besonders während ich
mein Spiel entwickle, wie du gesagt
hast, du kannst natürlich
all diese Dinge anpassen Nun, das
könnte tatsächlich ein bisschen schnell sein. Ich werde diesen 1.8 machen
, der für mich viel besser aussieht. Und du kannst jetzt sehen, dass ich es mit der Kamera
verfolgen kann. Ich schaffe den Sprung offensichtlich noch nicht
, aber im Grunde haben wir jetzt ein
Drehbuch, das der Kamera sagt, okay, mach mit dieser Geschwindigkeit weiter. Das ist alles klasse und so, aber wir haben
keine Karte zum Generieren. Wir
wissen nicht wirklich, wo wir spawnen sollen, und wir wissen nicht wirklich wohin wir springen sollen,
weil wir es nicht können Das Erste, was ich tun möchte, ist, dass ich das da
runterschieben
werde Weil ich nicht wirklich möchte, dass
es eine unmögliche Karte ist,
vor allem, wenn es
das Erste ist das du stößt, wenn
du das Spiel spielst. Ich werde jetzt anfangen, Code zu schreiben, der im Grunde der Kamera oder einem beliebigen
Objekt sagt
, im Grunde der Kamera oder einem beliebigen
Objekt sagt
, dass ich will,
aber ich werde die Kamera benutzen, um in bestimmten Objekten
zu spawnen Sobald ich eine
bestimmte Länge erreicht habe, in einem bestimmten Intervall, möchte
ich in einem Objekt spawnen Und das mache
ich so: Ich schaue mir die
Länge meiner Objekte an, öffne
vorgefertigte Objekte und schaue, wie
weit meine Objekte voneinander entfernt Ich werde damit beginnen
, ein
paar dieser
Bodenreifen auszuräumen , die ich ursprünglich hatte, nicht dauerhaft, aber ich
werde drei davon anklicken und dann auf
das kleine Symbol auf
ihnen klicken Sie sind auf dem Bildschirm versteckt. Ich
muss sie eigentlich nicht auswählen, das
macht keinen Unterschied. Aber ich habe
sie vorerst nur versteckt. Sie sind immer noch da, aber ich
möchte nicht , dass sie auf meinem Bildschirm sind. Sie können
sie mit einem kleinen Symbol ein- oder ausblenden. Sie können sogar
die gesamte Szene ausblenden, wenn Sie möchten, aber das
wollen wir nicht tun. Ich möchte nur meine
drei Bodenobjekte verstecken. Was ich tun werde, ist, neue Objekte hinzuzufügen. Ich will ein Objekt in der Nähe haben. Ich glaube, ich möchte, dass die
Objekte im Abstand ungefähr so groß sind. Mal sehen, ob ich mein erstes Objekt
habe. Ich werde es als
einfachere Position festlegen. Machen wir einen negativen Wert von 6,5 Ich mache mein neues
Objekt zu 1.5. Siehe hier. Jetzt haben wir zwei Objekte, die ziemlich gleichmäßig verteilt
sind Fügen wir
hier ein weiteres hinzu und wir machen 19,5. Danach fügen wir noch eines hinzu Fügen wir Bodenplatte 7 hinzu, und dann vielleicht
Bodenplatte acht davon,
wir können 17,5 machen Wir können 25,5 machen
Wir können sehen, dass wir können 17,5 machen Wir können 25,5 machen
Wir können wir
minus 6,5 haben, dann haben wir 1,5, dann haben wir 9,5, haben 17,5 und wir haben 25,5 Wir können sehen, dass wir wollen diese jeweils etwa acht
Einheiten voneinander entfernt sind, dass
diese jeweils etwa acht
Einheiten voneinander entfernt sind,
also werde ich das im Hinterkopf
behalten. Und ich werde sagen, dass
ich alle acht Einheiten,
in denen sich
die Kamera bewegt, ein neues Objekt erscheinen lassen möchte , weil
das bedeutet , dass ich mich um
eines dieser Dinge bewegt habe. Ich werde das so
machen, dass ich ein neues Drehbuch erstelle Und ich werde
es Kartengenerierung nennen. Sobald das Skript
verstümmelt ist,
doppelklicke
ich, um es zu öffnen Hier werde ich
tatsächlich die Logik für das Spawnen
in meinem anderen Objekt erstellen Spawnen
in meinem anderen Ich werde zunächst damit beginnen, eine neue öffentliche Lücke
zu schaffen. Ich werde
es Spawn Map Piece nennen. Diese Methode
wird im Grunde genommen
eines der zufälligen Kartenstücke,
die wir
zuvor entworfen haben
, nehmen zufälligen Kartenstücke,
die wir
zuvor entworfen haben
, und
es in mein Spiel einbauen Die Art und Weise, wie ich ein zufälliges Kartenstück
erhalte besteht darin, eine
Datenstruktur zu erstellen , die als Array bekannt Das ist ein ziemlich
fortgeschrittenes Codierungskonzept. Es ist eigentlich ziemlich
rudimentär. Aber was das angeht,
was wir
bereits behandelt haben , ist das ein ziemlicher Sprung Ich werde also nicht genau
erklären, wie es funktioniert und welche Verwendungsmöglichkeiten es bietet. Im Grunde kann man
sich das wie eine Liste vorstellen. Ich habe Datentypen, die Sie bereits
gesprochen haben. Als ob ich Zahlen speichern möchte, setze
ich sie in eine Ganzzahl. Wenn ich
viele Dinge speichern möchte, seien es viele
Zahlen oder viele Wörter, füge
ich sie in ein sogenanntes Array oder eine Liste ein. Und die Art und Weise, wie Sie ein
Array deklarieren, ist, dass
Sie an die Öffentlichkeit gehen und den Datentyp eingeben, den Sie in Ihre Liste aufnehmen
möchten. Ich will eigentlich Spielobjekte,
weil Spielobjekte, wie wir bereits erwähnt haben, die
Grundpfeiler unseres Spiels sind Grundpfeiler unseres Spiels Und all die Kacheln
, die wir gemacht haben, sind tatsächlich Beispiele für Objekte,
obwohl es sich um Fertighäuser Sie sind also wie
Objektvorlagen. Sie sind immer noch vom
Datentyp Objekt. Um zu zeigen, dass es eine Liste ist
und nicht nur ein Spiel. füge ich diese Danach füge ich diese
beiden eckigen Klammern hinzu, was Unity sagt, okay, das ist nicht eine Sache,
es ist eine Liste von Dingen Ich werde es Kartenkacheln nennen. Hier
werde ich im Grunde alle
meine Kartenkacheln speichern. Wenn ich zurück zu Unity gehe und
zu meiner Hauptkamera gehe, werde
ich hier drüben nachschauen, ob ich mein
Kartengenerierungsskript hineinziehe, lass es uns über
dem starren Körper platzieren
und lassen wir den
Kammkörper tatsächlich dort drüben nach oben ob ich mein
Kartengenerierungsskript hineinziehe,
lass es uns über
dem starren Körper platzieren
und lassen wir den
Kammkörper tatsächlich dort drüben nach oben bewegen. Ich habe jetzt
diese Kartenkacheln und sie haben momentan nichts
drin. Es heißt, die Liste ist leer. Aber ich werde
anfangen, es zu füllen. Ich werde zehn
Dinge auf meine Liste setzen. Also werde ich
diese Zahl zehn ändern. Ich werde die zehn
Kartenkacheln hinzufügen , die wir zuvor
erstellt haben. Gehen wir zu vorgefertigten
Bodenfliesen und fügen einfach Bodenfliesen ein, Bodenfliesen
zwei, Bodenfliesen drei, Bodenfliesen vier
usw. usw. Bis wir alle
Bodenplatten, die wir gerade erstellt haben,
in
dieser Liste haben, werden
wir sie tatsächlich so zufällig erzeugen Mach dir keine Gedanken darüber, wie ein Strahl
genau funktioniert. Wie ich schon sagte, es gibt
ein paar knifflige Dinge, vor
allem, wenn Sie
schon einmal kodiert haben, zum
Beispiel, dass sie bei Index Null beginnen, das ist eigentlich Element
neun, obwohl das ist eigentlich Element
neun, obwohl Element.
Offensichtlich könnten dieses Spielobjekt, das eigentliche Konzept
der Variablen und all das Zeug etwas verwirrend
erscheinen, besonders wenn Sie
noch nie zuvor codiert haben Aber stell es dir einfach
wie eine Liste von Objekten vor. Wir haben behandelt, was Objekte sind, die Bausteine
sind unsere Spiele und wir haben eine Liste
von Objektvorlagen, in
denen wir spawnen Im Grunde sagen wir, okay,
all diese Dateien, die wir erstellt haben,
fügen Sie sie in die Datenstruktur ein,
die als Array bezeichnet wird Und ich werde
jedes Mal, wenn ich eines spawnen
möchte, zufällig
aus diesem Array auswählen und es in mein Spiel Als Nächstes
muss ich den Code dafür tatsächlich schreiben Gehen wir hier zurück zu
meinem Code. Und ich sage, wähle ein zufälliges Mitglied meines
Arrays aus und spawn es hinein Ich werde das wie folgt
tun. Ich werde
Game Object Tile sagen. Also habe ich eine neue lokale Variable , die wie ein
lokaler Speicherplatz ist. Es ist nur
innerhalb dieser Methode zugänglich. Ich muss es nicht hier einfügen,
aber es ist einfach besser
für die Leistung weil ich nicht brauche, dass
es irgendwo anders zugänglich ist. Ich brauche es nur hier,
sagen wir, es entspricht Kartenkacheln. Um jetzt auf ein bestimmtes Element
des Arrays zuzugreifen , verwende ich
eckige Klammern. Das heißt also, okay,
öffne den ersten. Dieser Code wird
sagen,
okay, nimm das erste
Element in den Kartenkacheln, nämlich
die Bodenkachel, und lege es in die
Speicherplatz-Kacheln. Aber ich
möchte nicht nur der Erste sein, ich möchte ein zufälliger sein. Um das zu tun, werde
ich einen zufälligen Bereich verwenden, ich werde einen zufälligen Bereich wählen. Das wird mir im Grunde
ermöglichen, eine Zufallszahl aus
einem bestimmten Bereich
auszuwählen, wie
Sie wahrscheinlich anhand des Namens erraten
können, der in
Klammern
steht einem bestimmten Bereich
auszuwählen, wie
Sie wahrscheinlich anhand des Namens erraten
können , der in
Klammern Und jetzt brauchen wir ein inklusives
Minimum
und ein inklusives Maximum Jetzt weiß ich nicht genau, warum
sie Maximum inklusive sagen, denn der Zufallsbereich 1-2 eigentlich immer nur die Zahl eins
zurück. Ich
glaube, der Grund, warum sie inklusiv
sagen ,
bezieht sich vielleicht auf Gleitkommazahlen, aber bei ganzen Zahlen ist es nicht wirklich inklusiv für den oberen Wert, nur
für den untersten Wert Gehen wir hier rüber und
setzen wir den unteren Wert auf Null,
was, wie gesagt, das allererste
Element unseres Arrays ist, bei
dem hier um
Floor Tile One handelt Aber wir wollen, dass es
eines dieser Elemente ist. Und wir könnten einfach
von Element Null
zu Element Neun wechseln. Wir könnten einfach so
etwas eingeben. Offensichtlich ist
es, wie ich schon sagte, nicht inklusiv. Da drüben müssten wir
zehn reinstellen. Aber das wird für unsere Zwecke eigentlich
ganz gut funktionieren . Dies muss
eine eckige Klammer sein, keine runde Klammer, da
wir uns auf ein Array beziehen. Und bei einem Array verwenden Sie eckige Klammern, um anzugeben, auf welchen
Index Sie sich beziehen. Wie dem auch sei, das würde für
unsere Zwecke
vollkommen gut funktionieren , da
Sie
jedes Mal
eine Zufallszahl auswählen werden. Wir nennen das
von Null bis Neun. Aber der Grund, warum wir es nicht so codieren
wollen, ist
das
sogenannte Hardcoding, bei dem man exakte Werte eingibt,
anstatt, glaube
ich, dynamische oder
variable Werte. Der Grund, warum wir das nicht tun
wollen, ist, dass wir sagen wir, beschlossen haben, eine
ganze Reihe neuer Reifen hinzuzufügen. Wir fügen sie unserem Array hinzu. Wir müssen zurückgehen und diesen Code
ändern,
anstatt ihn
automatisch so aktualisieren zu lassen, dass er
die gesamte Länge des
Arrays enthält , was wir wollen. Anstatt zehn zu verwenden, werden
wir die Punktlänge der Kartenkacheln verwenden. Punktlänge der Kartenkacheln gibt uns hier tatsächlich die
Zahl Zehn, weil wir sehen können,
dass wir hier zehn verschiedene
Elemente haben. Kartenkacheln haben eine Länge von zehn. Ich denke, das ist vielleicht einer
der Gründe, warum der
Index bei Null beginnt , weil dieser Bereichsbefehl diese obere Grenze
offensichtlich nicht
einschließt. Und wir werden nie
wirklich
versuchen , auf das
zehnte Element zuzugreifen, was uns einen Fehler geben würde weil es
kein zehntes Element
gibt, es gibt nur ein neuntes bis
hinunter zu einem Nullpunkt Es ist zunächst etwas
verwirrend, aber Sie sollten in der Lage sein,
es zu bekommen, je mehr Sie Arrays verwenden Und es ist eine Konvention
in der Informatik, ich glaube, man gewöhnt sich nach einer Weile auch
daran Aber egal, dieser Code hier
drüben wird sagen, okay, gib mir jedes Element
im gesamten Array. Es mag ein
wenig verwirrend erscheinen, aber im Grunde sagen wir nur, okay, wir haben diese Liste von Dingen
und bei dem spezifischen Index, vom kleinsten Index bis
hin zu einem plus
dem größten Index, der
uns bis zum größten Index führt. Gib mir einen Index von dort. Das gibt uns jetzt jedes
Mal
ein zufälliges Plättchen, das ist die Hälfte. Was wir
jetzt tun müssen, alles was wir
tun müssen, ist tatsächlich auf diesem Plättchen zu
spawnen Also sagen wir „Kachel als
Spielobjekt instanziieren“. Diese Codezeile hier drüben ist im Grunde das, was
wir
verwenden werden, um in unserem Prefab zu spawnen Also sagen wir, okay,
ich habe jetzt diesen Krawatten hier
drüben und ich
möchte ihn in mein Aber wir können hier sehen, dass wir
eine Fehlermeldung bekommen ,
die besagt, okay, nur den Zuweisungsaufruf
inkrementieren, ein Gewicht verringern Und neue Objektausdrücke
können in einer Anweisung verwendet werden. Das ist im Grunde so, als würde man sagen, wir haben hier eine halbe Aussage, wir haben gleich fünf, wir
haben nicht die andere Seite Also ich sage, okay, ich möchte es als Spielobjekt
instanziieren, aber was
will ich damit machen? Das müssen wir in einer anderen
Variablen speichern. Nennen wir dieses Spielobjekt Kartenkachel
ist gleich Kachel instanziieren
als Das entspricht nicht unglaublich dem benötigten Code
. Wir brauchten
diese Variable nicht wirklich, weil wir eigentlich einfach
hätten nehmen
und dort einfügen können. Aber ich werde
es so anordnen, nur weil es dadurch ein
bisschen schöner zu lesen Zuerst haben wir dieses
Spielobjekt-Plättchen, das ein zufälliges Plättchen ist Und dann
instanziieren wir diese Kachel und nennen sie Kartenkachel
oder besser Spielkachel Die eigentliche Kachel könnte den Namen durchaus in „
Spawned“ -Kachel ändern. Wir können unterscheiden
zwischen dem, was wir erzeugen
wollten, und nachdem
wir es tatsächlich gespawnt haben, beziehen wir uns
jetzt auf das
tatsächlich erstellte Objekt,
nicht auf das vorgefertigte Objekt . Das ist also
das Fertighaus Das eigentliche Objekt, das es gemacht hat. Und wir müssen ein paar Dinge hinzufügen. Zuallererst müssen wir
ändern, wo es sich befindet. Eigentlich ist das
alles, was wir hinzufügen müssen, denn im Moment
wird es es spawnen, aber wir wissen nicht, wo es erscheinen
wird,
wir wollen ändern,
wo es sich befindet. Wir werden
das tun, indem wir
diese Variable ändern , eine erzeugte Kachel. Lass uns gekachelt spawnen, die
transformierte Position ist gleich. Dann nehmen wir unsere
aktuelle Position unserer Kamera ein Wir können das tun, indem wir ein Spielobjekt in
Kleinbuchstaben verwenden, das heißt, okay, bezieht sich auf das Spielobjekt an
das dieses Skript
gerade angehängt ist, was unsere
Kameratransformationsposition sein wird. Das heißt im Grunde, okay,
setze unseren transformierten
Gegensatz
unseres Spawn-Plättchens genau dort hin,
wo sich die Kamera befindet Wir wollen nicht wirklich, dass es genau dort ist, wo sich die Kamera befindet, wir wollen
etwas anders sein Lassen Sie uns einen neuen Vektor drei erstellen. Das heißt, wir
wollen drei Dinge speichern. Wir werden x, y und z haben. Setzen
wir die
Transformationsposition des Spielobjekts auf unsere aktuelle Position
unserer Kamera plus etwas Offset. Und wir erstellen eine neue Variable, den Offset X im
öffentlichen Raum, Offset X im
öffentlichen Raum und fügen sie unseren Spielern nicht der
aktuellen Position unserer Kamera hinzu. Das wird jetzt reichen, heißt sagen, okay,
spawnen Sie in einer Kachel und platzieren Sie sie an der Stelle, an der sich meine Kamera
befindet, plus eine Position Das sollte also gut genug sein. Aber wir wollen, denken Sie daran, dass
wir es auch nicht wirklich an der
Y-Position unserer Kamera haben
wollen,
weil unsere Kamera
wahrscheinlich eine Y-Position von ungefähr
Null haben wird . Und wir wollen, dass es sich in der
unteren Hälfte des Bildschirms befindet. Wir wollen nicht in
der Mitte des Bildschirms sein, also werden wir
eine neue Position für das
Spawnen in unseren Objekten erstellen , aber wir wollen wissen, wo die Grenzen
liegen sollten Und um das zu tun, springen
wir direkt zurück in den Unity-Editor Wir werden sehen, okay,
wo ungefähr sein sollte. Ich werde mir das ansehen
und ich werde
mir diese Y-Werte ansehen und entscheiden, ob mein Objekt irgendwo zwischen sagen wir
-4,5 liegen
soll. Ich denke, das ist ungefähr der niedrigste Wert, den ich
will, bis hin zu vielleicht -3,5
mag nicht viel sein,
aber es ist eine ziemlich
variable Menge an Platz, besonders für unsere
kleine Sprunghöhe Wir könnten die
Sprunghöhe später ändern, aber ich denke, das ist vorerst gut. Lass uns weitermachen und
das auf minus vier setzen. Ich kann mich nicht mehr
genau erinnern, was es war, aber ich glaube, es lag bei etwa -3,9 Jetzt verwenden wir eine weitere Random-Range-Aussage,
um im Grunde zu sagen ,
okay, irgendwo zwischen
diesen beiden Punkten werde
ich diese Punkte
tatsächlich als Variablen verwenden Nochmals, Public Float
min Y und max. Y, die wir
im Unity-Editor zuweisen werden, zu
dem wir später kommen werden Aber ich werde sagen, okay,
ich möchte, dass meine Y-Position irgendwo in
diesem zufälligen Bereich liegt, genau wie wir es zuvor getan haben. Und ich sage meine bis zur maximalen Y. Schließlich können
wir ihre Position
einfach auf Null setzen, können
wir ihre Position
einfach auf Null setzen weil wir ein Zwei-D-Spiel
verwenden Das wird nun sagen, okay,
jedes Mal, wenn wir
dieses Spawn-Kartenstück nennen, werden
wir
ein neues Kartenstück spawnen Und wir wollen es
überall im Spiel spawnen, wo auch immer wir uns gerade befinden. Dazu ein Offset X,
das wir herausfinden
werden wenn wir das
Spiel experimentell spielen Das werden wir jetzt
herausfinden. Und wir wollen einen zufälligen Bereich von -4,5 -3,5, den wir jetzt
auch hinzufügen werden Das Letzte, was ich tun werde
, bevor ich zu
Unity zurückkehre, ist, dass ich im Grunde genommen
erlaube, das Skript zu testen Ich werde sagen, wenn die Eingabe den Keycode-Leertaste nach unten
bekommt, dann rufe ich mein Spawn-Map-Piece auf. Ich habe den
Code hier nicht wieder hinzugefügt. Das ist dasselbe, weil es nur eine Codezeile ist. Sie benötigen
sie nicht wirklich, aber Sie können sie
aufteilen wenn Sie möchten, und nur
sicherstellen , dass sie sich in diesem Block befinden. Aber nur fürs Protokoll Eine eingerückte Zeile
ist genau das Gleiche Es sieht nur ein bisschen
ordentlicher aus,
wir sagen, okay,
jedes Mal, wenn ich auf die
Leertaste klicke, führe ich diesen Dies wird uns tatsächlich
ermöglichen, unser Map-Spawning-Skript zu testen. Um sicherzugehen, dass es funktioniert,
gehen wir gleich zurück zu Unity. Mal sehen, direkt in
unser Hauptkameraskript. Das erste, was wir tun
wollen, ist diesen Offset
zu konfigurieren. Ich schätze
,
wenn ich hierher gehe und es verschiebe , werde
ich es dort
spawnen wollen Das sind ungefähr 15 Stunden
Kameras bei Null. Also ich schätze,
es wird so sein. Aber ich
werde das natürlich
konfigurieren können, wenn ich weitermache. Ich denke, das war 6,5 Lassen Sie uns weitermachen und
den Offset y auf 15 setzen. Wir wollen, dass unser minimales Y -4,5 ist,
max. Y 3,5 Mal
sehen, ob das funktioniert Ich fange damit an, meine Kamera überhaupt nicht zu
bewegen,
nur damit ich sehen kann, ob sich das Spawnen
tatsächlich dort umschaut, wo
ich es haben möchte, dass tatsächlich dort umschaut, wo es vor
mir ist, zuschlagen werde Wenn ich auf mein Spiel klicke, kannst du sehen, dass
meine drei Stockwerke, die ich zuvor
erreicht habe, tatsächlich immer noch da sind Wir gehen wieder rein und löschen
diese Bodenfliese. Und ich habe es so, wie
ich es schon einmal hatte. Ich werde sie tatsächlich ein bisschen
bewegen. Ich tue es nicht. Es scheint, als
hätten sie sich angepasst. Ich bin mir nicht ganz sicher warum. Interessant. Lassen Sie uns trotzdem
weitermachen und auf Play klicken. Und dann wollen wir sehen, was
passiert, wenn wir auf
die Leertaste klicken . Wir gehen
zurück in unsere Szene Wir können sehen, okay,
wir haben tatsächlich ein zufälliges Ding spawnen lassen,
was großartig ist Wir wollen, wenn wir es wegbewegen erneut auf die Leertaste
klicken, erscheint
etwas anderes Und das sieht für mich eigentlich
ziemlich perfekt aus. Wenn ich ein paar Mal darauf klicke, haben
sie tatsächlich eine
variable Höhe. Einige von ihnen spawnen also etwas höher
als die alten, und wir haben verschiedene
Dinge,
was perfekt ist, das ist
eigentlich genau das, was wir wollen Das Letzte, was wir jetzt tun
müssen, ist
sicherzustellen , dass das automatisch
passiert Solange sich die Kamera alle acht Einheiten
bewegt, wollen
wir eine neue Also die Art und Weise, wie sie
das machen werden,
wird direkt zu unserem Code zurückkehren Und als Erstes
werden wir diesen Testcode
loswerden,
weil Sie nicht jedes Mal, wenn wir diesen Testcode
loswerden die Leertaste kochen, in
unseren Kacheln spawnen
wollen ,
wir wollen jedes Mal, wenn
wir eine bestimmte Entfernung zurücklegen,
hineinspawnen eine bestimmte Entfernung zurücklegen Das erste, was wir tun
werden, ist ein
paar Bewegungsvariablen zu erstellen Lassen Sie uns einen öffentlichen Float erstellen und ihn Spawn Position nennen Dadurch wird genau
nachverfolgt, wo auf
der X-Ebene wir
unser letztes Kartenstück erzeugt haben Dann lasst uns unter unserer
Start-Lücke weitermachen und ein
Kartenstück spawnen Das ist einfach, ich würde sagen, dass Sie gleich zu Beginn des Spiels auf
diese Klammern verweisen, wenn Sie zu Beginn unseres Spiels einen
bestimmten
Codeblock aufrufen ,
bevor Sie
Spawn auf einem Kartenelement spielen Weil wir sehen können,
ob wir zu Unity wechseln, haben
wir eigentlich nichts Wir wollen es in der
Minute machen, in der wir erscheinen. Aber das Letzte, was wir tun
werden, um sicherzustellen, dass
wir wissen, dass wir jedes Mal, wenn wir eine benötigen, in
einer neuen spawnen müssen, wird
es hier runter zur
Variablen Spawnposition gehen und wir werden sie auf unsere
aktuelle Transformationsposition x setzen. Das ist im Grunde
eine Kurzform, um zu sagen, dass Spielobjekt Position X
transformiert.
Wir brauchen
diese Sache mit dem Spielobjekt eigentlich nicht hier drüben, weil sich die Verwendung von Kleinbuchstaben auf
die Transformation bezieht , die an
dieses Spielobjekt angehängt ist , das
Sie hier sehen. Wenn wir mit der Maus darüber fahren,
erklärt es uns das. Das heißt, okay,
setze unsere aktuelle
Spawn-Position auf den übertragenen Oppositionspunkt X
unseres Kameraobjekts Sobald wir
in einem Kartenelement spawnen, behalten Sie im Auge, wo wir es auf der
X-Ebene erzeugt haben Dann fügen wir unsere
if-Anweisung zu unserer leeren Wir sagen meine aktuelle Position
minus meine Spawn-Position. Mit anderen Worten, wenn meine Verschiebung
von der Stelle, an der ich
mich gerade befinde, zu der Stelle, an der ich mein
letztes Feld zuletzt erzeugt habe, größer als acht
ist Mit anderen Worten, wenn ich seit dem
Spawnen eines letzten Plättchens
acht Einheiten bewegt habe , ist
es an der Zeit, ein neues Plättchen zu spawnen Wir müssen schreiben,
ob mein
übertragener gegnerischer Punkt x
minus
Spawnposition größer oder gleich acht ist Mit anderen Worten, wenn wir entweder acht oder mehr
Felder bewegt haben ,
dann wollen wir
unser Spawn-Kartenelement aufrufen wird
unsere Spawnposition natürlich auf meine
aktuelle Transferposition auf X zurückgesetzt unsere Spawnposition natürlich auf meine
aktuelle Transferposition auf X zurückgesetzt Dadurch wird
unsere Spawnposition natürlich auf meine
aktuelle Transferposition auf X zurückgesetzt. Beim nächsten Update
werden es
dann nicht mehr acht sein Wenn hier alles richtig
geschrieben ist, sollte
es in jedem achten
Teil ein neues Kartenstück erscheinen, und
das sollten wir in Aktion sehen Oder du gehst zurück zum Spiel. Lass uns weitermachen und darauf
klicken.
Vergewissere dich, dass alles so
konfiguriert ist, dass wir das wieder auf 1.8 setzen
können Behalten
wir die Variable
für die
Spawnposition im Auge , wenn wir auf Play klicken Lass uns weitermachen und auf Play klicken. sehen, was passiert, wenn wir weitermachen.
Sieht so aus, als ob unser erstes Plättchen perfekt
reingekommen ist. Und wenn wir mitschauen, können
wir sogar sehen, dass es
gerade so spawnt, wie wir es sein mussten wir in die
Szenenansicht gehen, können wir tatsächlich sehen, wie diese Kacheln
entstehen, während wir uns bewegen, genau zur richtigen Zeit Hier erscheint ein neuer
Spawn
genau so, wie wir ihn brauchten, auf die Minute genau, bevor er auf
dem Bildschirm Wir haben unser neues
Plättchen da drüben, und offensichtlich werden die
Spieler hier ein bisschen zurückgelassen Aber wir können tatsächlich
sehen, dass dadurch
eine ziemlich coole Karte entsteht , die automatisch
generiert wird. Und das wird tatsächlich
das Herzstück unserer
Plattform sein , ein Spiel. Wir werden
das natürlich ändern und viele neue coole Dinge
und verschiedene Objekte und verschiedene
Vorlagen
hinzufügen und verschiedene Objekte und verschiedene unseres Spiels viele neue coole Dinge
und verschiedene Objekte und verschiedene
Vorlagen
hinzufügen. Aber das
wird im Grunde die Vorlage
dafür sein , wie wir mit der Entwicklung unseres Spiels beginnen werden und wie
alles funktionieren wird. Im Moment haben wir
tatsächlich
die Grundlage für
ein ziemlich cooles System zum Spawnen in Kacheln und
zum
Erstellen einer automatisch generierten Karte geschaffen die Grundlage für
ein ziemlich cooles System zum Spawnen in Kacheln und
zum Erstellen einer automatisch generierten Karte Das allerletzte, was wir tun
müssen, ist
sicherzustellen, dass wir die Kacheln,
die wir nicht
mehr verwenden,
tatsächlich löschen Kacheln,
die wir nicht
mehr verwenden, Wenn wir weitermachen und auf Play klicken, können
wir sehen, dass wir in
Kacheln großartig spawnen können . Und sie funktionieren
tatsächlich perfekt Wir können da drüben sehen, sie
werden hier erschaffen, aber sie verschwinden nie wirklich. Wenn das so weitergeht und ich die Geschwindigkeit erhöhe, wird
das genauso
gut funktionieren , weil es auf der Position
basiert nichts mit der Zeit zu tun hat. Wir können also tatsächlich sehen,
dass wir immer mehr Kacheln machen, und alles funktioniert perfekt. Aber diese Kacheln sind
da und sie verstopfen
tatsächlich meine Szene Und ich
möchte nicht wirklich, dass sie da sind. Nach einer Weile werde
ich eine weitere Codezeile hinzufügen,
die ich an die Kacheln
anhängen werde. Ich werde auf jeder Kachel
eine kleine
Codezeile haben , die besagt, dass ich mich selbst zerstören
kann,
wenn ich so weit
von der Kamera entfernt bin . Lass uns weitermachen und messen,
was das nicht sein sollte. Ich denke, sobald die
Steine hier sind, sollten
sie wahrscheinlich zerstört
werden. Das ist derzeit in Ausstellung
111.8 Nehmen wir an, es ist 112 und die Kamera ist
um 01:20 Uhr. Nehmen wir an, es sind 130, sagen
wir, sie sind
18 Einheiten hinter der Kamera, dann können sie sich selbst
zerstören Und das ist ein unglaublich
einfach zu schreibendes Drehbuch. Klicken wir mit der rechten Maustaste auf
Create C sharp script, wir nennen es Tile Clear. Ich werde das
zu jeder einzelnen Kachel hinzufügen.
Doppelklicken Sie, um es zu öffnen. Und wir brauchen hier nur
eine Variable, und das wird tatsächlich
ein Verweis auf unsere Hauptkamera sein . Also werde ich
eine öffentliche Transformation erstellen. Das bezieht sich eigentlich
auf ein Spielobjekt, aber ich sage, ich benötige nur die Position, die Drehung und den Maßstab
des Spielobjekts. Ich werde meine
Kamera in dieser Variablen referenzieren, aber ich will nur ihre Position.
Ich brauche nichts anderes. Nenn es. Nun ist es wichtig
zu beachten, dass
wir
diese Transformationen normalerweise
im Unity-Editor zuweisen diese Transformationen normalerweise
im Unity-Editor Wenn wir es auf unser
Fertighaus ziehen und sagen,
okay, ich will die Kamera Aber die Sache ist die, dass Fertighäuser eigentlich
keine
Objekte im Spiel sind, sie sind eigentlich
Dateien in unserem Programm Wir können hier nicht wirklich
dasselbe tun Ich möchte eigentlich
weitermachen und
das Skript auf jedes
einzelne meiner Prefabs ziehen das Skript auf jedes
einzelne meiner Prefabs Also kann ich das tun, indem ich zu jedem einzelnen
meiner Prefabs gehe und
auf Komponenten
hinzufügen klicke
und unseren Namen, wie ich ihn
nenne, Dieses Tile-Clear-Skript
für jedes einzelne von
ihnen . Mach es einfach schnell. Ich glaube, du kannst es tatsächlich mehrmals
machen Wenn du
einmal alle auswählst
und dann Tile Clear hinzufügst, sollte
es zu
jedem einzelnen
davon hinzugefügt werden. Ich glaube, das hat funktioniert. Sie können sehen, dass an jeden einzelnen von ihnen
jetzt dieses Tile-Clear-Skript angehängt
ist, was ziemlich cool ist. Aber das Problem ist, dass
wir diese Kamera nicht wirklich
referenzieren können , weil,
wie gesagt, diese Kamera einem Objekt sucht
und wir
die Kamera nicht hineinziehen können, weil
es sich um ein Dateiobjekt
handelt. Du musst Code schreiben, um das zu finden. Es ist ziemlich einfach. Wir werden sagen, Kamera
entspricht Spielobjekt. Finden Sie, nennen Sie es Hauptkamera ,
weil es so
heißt Und das
heißt, sobald ich ins Spiel komme, sobald anfange zu existieren,
finde ich
die Hauptkamera, die
wir hier haben, und weise sie dieser Variablen zu. Es ist im Grunde so, als hätten wir
es einfach reingezogen, genau wie zuvor. Es ist nur eine andere
Art, es zu tun. Und ich werde weitermachen
und transformieren, weil ich nur die
Transformation des Spielobjekts benötige. Dann ist der letzte Teil
des Codes, von dem wir nur sagen
müssen, dass ich mich
selbst zerstöre ,
wenn ich weit weg bin, sage ich,
wenn meine Position die
Punktposition x abzüglich
der Kameraposition transformiert . Mit anderen Worten, Kameraposition x. Wir sagen, wenn ich mehr
als 18 Einheiten hinterherhinke, wenn meine Position Null ist und
die Kameraposition 18 ist, werde
ich
negativ 18 sein, was bedeutet, dass es kleiner oder gleich
minus 18 ist. Ich könnte
das auch andersherum schreiben und sagen, wenn
7. 6. Sprites hinzufügen: Hallo, und willkommen
zurück bei Unity. In den letzten Lektionen haben
wir das geschaffen, was
quasi die Grundlage einer
Plattform ist , ein Spiel. Wir haben einen
Charakter geschaffen, der sich bewegen kann. Wir haben eine Karte erstellt, die nach dem Zufallsprinzip generiert werden
kann. Und wir haben Hindernisse
, denen wir ausweichen können. Und wir haben eine Kamera,
die ständig schwenkt
, mit der wir Schritt halten müssen Das ist so ziemlich
alles, was wir brauchen, um eine einfache Plattform zu entwickeln, ein Spiel, wie wir es schon
gemacht haben, aber es fehlen ein paar
Dinge Zuallererst kannst du auf die Hindernisse stoßen und
nichts passiert. Zweitens zwingt dich die Kamera nicht wirklich dazu, bei
ihr zu bleiben. Du kannst rausgehen und wieder reinkommen. Dafür gibt es keine Strafe. Drittens und fast
am wichtigsten ist, dass das Spiel nicht gut aussieht. Wir haben ein Quadrat, springen auf andere
Rechtecke und weichen
Dreiecken und Kreisen aus, die gelb, weiß und rot
sind Das ist es. Du kannst
ein Spiel mit Formen machen. Ich habe es in der Vergangenheit schon einige
Male gemacht, aber für diese spezielle Plattform, weil es ein Plattformspiel für
Fortgeschrittene ist, dachte
ich, es wäre gut,
Sprites zu verwenden , und ich werde
Pixelkunst verwenden,
jetzt werden alle Sprites, die ich für
mein Projekt erstellen werde, in diesem Kurs
verlinkt Du findest sie alle als herunterladbare Links, wenn ich
weitermache und neue Dateien importiere Jede Datei, die ich während
des gesamten Projekts verwende, solltest
du auch finden können
. Ich habe eine ganze Reihe
von Sprites für dieses Spiel gemacht. Wenn du dieselben
Sprites verwenden möchtest, die ich verwende, musst
du sie nur von der Beschreibung
dieses Videos herunterladen oder unter dem Kurs findest
du einen Link für die Downloads
dieses Videos Wie ich schon sagte, du musst meine Sprites nicht
verwenden. Sie können Ihre eigenen Sprites verwenden, oder Sie können Quadrate
und Dreiecke verwenden Es macht nicht wirklich einen
Unterschied. Aber wenn du mitmachen
und die Sprites verwenden willst , die ich verwende, dann musst du diese Dateien
natürlich herunterladen Sie können
dieselben verwenden. Davon abgesehen müssen Sie,
wie gesagt, nicht dieselben Sprites verwenden wie ich Es ist jedoch wichtig zu
beachten, dass Sprites in vielerlei Hinsicht bestimmen, wie wir unser Spiel
ausbalancieren werden Wenn wir zum Beispiel die Sprites
hätten, die ich verwenden
werde , wären es kleinere Sprites und Wolken Deshalb werde ich ein paar
Dinge am Spiel
anpassen wollen ein paar
Dinge am Spiel
anpassen Ich werde ihn vielleicht höher springen
lassen. Wir wollen
den Spawn weiter auseinander platzieren, damit er eher wie Wolken
aussieht Und diese Art von Optimierungen können
wir vornehmen, weil wir Variablen in unseren Skripten
haben Variablen in unseren Skripten
haben denen wir
das kontrollieren können Beispiel haben wir hier eine
Sprunghöhe und wir haben eine Spawndistanz für
die Formen Du musst meine exakten Werte offensichtlich nicht kopieren. Aber wenn Sie zum ersten Mal Unity
programmieren
und ein Spiel machen, mit Unity
programmieren
und ein Spiel machen, würde
ich empfehlen, mir zu
folgen, wenn ich Sprites
importiere und
dieselben Sprites verwende, die ich verwende, sowie vielleicht
dieselben Werte Weil es dadurch etwas
einfacher wird ,
dein Spiel mit meinem zu vergleichen Und du wärst
überrascht, wie viele kleine
Anpassungen
dazu führen können, dass sich ein Spiel anders anfühlt Du musst nicht
genau das tun, was ich mache. Du musst nicht
dieselben Sprites verwenden, ich schon. Aber ich würde es empfehlen, wenn du dasselbe Spiel machen
willst. Vielleicht verwende ich
dieselben Sprites und optimiere es vielleicht einfach so wie ich, weil es sich fast genauso anfühlt Als ob du nicht bei einem ähnlichen Spiel
hängen bleiben willst. Das ist nicht wirklich das
, was du wolltest. Nachdem all das gesagt
wurde, wie ich schon sagte, ist das ganz Ihre Entscheidung. Aber ich werde anfangen, meine eigenen Sprites zu
benutzen. Ich gehe hier runter zum Projektordner und klicke mit
der rechten Maustaste Ich werde einen Ordner erstellen und ihn Sprites
nennen Jetzt gibt es ein paar Möglichkeiten, wie du Sprites
in dein Spiel integrieren kannst Sprites
in dein Spiel integrieren Sprites sind eigentlich nur Dateien, sie sind visuelle
Repräsentationen von Objekten, so nenne ich sie
gerne Wir haben tatsächlich ein paar bereit. Wir haben da ein
quadratisches Sprite
und hier unten rechteckige Sprites Nun, es sind eigentlich nur
gestreckte quadratische Sprites. Aber wir wollen
etwas Interessanteres. Wir müssen Dateien in unser Spiel
importieren. Es gibt ein paar Möglichkeiten, wie
du das machen kannst. Sie können auf
den Sprites-Ordner doppelklicken und New Asset importieren Sie können den
Datei-Explorer öffnen und sie in
dieses Fenster hier ziehen. Oder du kannst tatsächlich
in den Datei-Explorer gehen,
herausfinden, wo dein Spiel gespeichert ist, und sie einfach in
diesen speziellen Ordner kopieren , den
du gerade erstellt hast. Das ist nicht der
beste Weg, das zu tun. Ich empfehle Ihnen,
einen der ersten beiden zu wählen. Ich habe
es nur erwähnt, weil
Unity so funktioniert,
dass beim Import einer Datei eine weitere Datei erstellt wird, die
es benötigt, die so genannte Metadatei , Sie importieren für jede einzelne
Datei Nehmen wir an, Sie importieren für jede einzelne
Datei
etwas p vier,
es erzeugt etwas Meta
oder so etwas wie p vier DomtaIch bin mir
nicht sicher, wie es
genau heißt es erzeugt etwas Meta
oder so etwas wie p vier DomtaIch bin mir
nicht sicher, ,
aber es
erstellt im Grunde eine mit importierten Dateien,
ohne zu sehr ins Detail
gehen So funktioniert
Unity Es braucht es, um richtig zu
funktionieren. Und diese Metaphilen werden
automatisch erstellt wenn Sie Ihre
Dateien über Unity importieren Aber wenn Sie Unity nicht
geöffnet haben, oder wenn Sie es tun, und Sie dies direkt
mit dem Datei-Explorer tun, dann wird es diese Dateien nicht für
Sie erstellen Unity macht einen ziemlich
guten Job darin,
sie beim Start automatisch zu erstellen und solche Dinge, aber um jeglichen
Ärger zu vermeiden, empfehle
ich Ihnen, Ihre Dateien
über dieses wichtige neue
Asset-Fenster hier zu
importieren über dieses wichtige neue
Asset-Fenster hier Gehen wir in unseren Ordner.
Gehen wir ein neues Asset importieren. Lassen Sie uns diese
vier Sprite-Assets einfügen , durch
die, wie gesagt, alle offensichtlich unter dem Video
verlinkt sind, sodass Sie sie einfach so
in Ihr Spiel importieren können Es gibt ein paar Dinge, die
wir tun müssen, bevor wir sie in unser Spiel integrieren Ich werde sie alle auswählen. Als Erstes werde ich
diesen Filtermodus auf
Point No Filter ändern ,
weil das eine
Einstellung ist, die Sie
für Pixelate verwenden möchten, und Sie können natürlich
auf Speichern klicken müssen, bevor ich sie Ihnen zeige Sie können aber auch hier auf
Anwenden klicken. Jetzt haben Sie Point No Filter
und klicken auf Anwenden, um diesen hinzuzufügen. Der Grund dafür ist, dass dieser Filtermodus das Sprite tatsächlich
leicht verwischt Und wenn Sie Pixel verwenden,
sieht es nicht sehr gut aus. Ich zeige dir, dass du alle Pixel sehen kannst, wenn ich das Sprite
in mein Spiel
ziehe und nach unten scrolle, sodass ich das Sprite dort sehen
kann Wenn ich den bilinearen
Filter wähle und auf Anwenden klicke, kannst
du sehen, dass er
dadurch sehr unscharf wird, was Ich möchte „Punkt ohne Filter“ wählen ,
damit das
gesamte Sprite Dann werde ich als zweites
die Anzahl der Pixel pro Einheit ändern
, weil ich nicht möchte, dass Sprite so
klein Ich möchte, dass es vielleicht zehn sind. Und je
niedriger diese Zahl ist, desto größer
wird der Sprite sein Ich denke, das ist
eine ziemlich gute Einstellung für mich, momentan zehn Pixel pro Einheit Und ich
werde das natürlich auf alle
hier draußen
ändern wollen ,
sicherstellen, dass all diese Pixel
pro Einheit auf zehn eingestellt sind. Und der Filtermodus ist 0,0
Filter und klicken Sie auf Anwenden. Ich konnte das Sprite
tatsächlich
sehen, indem ich es
direkt in mein Spiel zog Und das macht ein Objekt für mein Sprite
mit einem Sprite-Rendering Es ist also dasselbe,
als würde man mit der rechten Maustaste klicken, neues Objekt wählt ein Dreieck Es ist genau
dasselbe, es wird nur ein Dreieck verwendet
und dadurch wird offensichtlich das Sprite, das ich
hineingezogen habe, als
Standard-Sprite
festgelegt hineingezogen habe, als
Standard-Sprite Aber ich werde
diese löschen, weil ich
eigentlich keine neuen Objekte erstellen
möchte Ich möchte diese Dateien
direkt den
Sprite-Renderern zuweisen , die ich bereits habe, dem Stretch-Quadrat und dem
Dreieck und dem Kreis Das ist eine Menge Terminologie, die ich Ihnen
vorwerfen werde , und es
könnte etwas
verwirrend sein ,
über alles
im Zusammenhang mit der Spieleentwicklung nachzudenken im Zusammenhang mit der Spieleentwicklung Aber sei dir bewusst, dass wir im Moment
nur diese vier Dateien importiert haben , die wir
verwenden werden, um ein bisschen
Lifestyle-Spiel hinzuzufügen. Und wir
haben derzeit
Sprite-Renderer, die quasi
Standard-Sprites rendern Wir werden diese
durch
diese Sprites ersetzen, die diese Sprites Stellen Sie also sicher, dass Sie
die Einstellungen so erhalten wie ich. Und dann fangen wir
zuerst mit dem Player an. Gehen wir zum Player und wir
haben hier eine Sprite-Qualität
, wo wir unser Sprite
hineinziehen werden Lassen Sie uns einen kleinen Teil reinziehen. Wir sehen sofort, es sieht
ein bisschen kränklich aus. Und das liegt daran, dass wir
die Farbe immer noch auf Gelb eingestellt haben die Farbe immer noch auf Gelb eingestellt Lass uns das auf
Weiß setzen, würde ich sagen. Das ist eigentlich eine ziemlich
gute Größe für meinen Spieler. Ich möchte, dass es ein
ziemlich kleiner Player in der Mitte des Bildschirms ist, ich finde das sogar gut. Aber es gibt ein paar
Dinge, die ich ändern muss. Und das
meinte ich, als ich sagte, dass Sprites dein
Spiel ziemlich stark beeinflussen Offensichtlich
dreht sich
Ihr Spiel bei all den Collidern
und Sprunghöhen und jeder anderen
Variablen oder Änderung, die Sie vornehmen müssen, darum, jeder anderen
Variablen oder Änderung, die Sie vornehmen müssen, darum, wie groß die Sprites sind oder besser gesagt, wie die Sprites
aussehen Wenn du meine Sprites verwendest, was ich dir empfehle
, wird
es viel
einfacher sein, genau zu verfolgen, was ich mache, als wenn Aber davon abgesehen kannst du
deine eigenen verwenden, wenn du weißt,
was du tust, weil du nur
ähnliche Anpassungen für dein Spiel vornehmen musst ähnliche Anpassungen für Wie dem auch sei,
lass mich zuerst
diesen Box Glider wechseln , um sicherzugehen,
dass er zu meinem Sprite passt Und du denkst vielleicht
, dass das eigentlich ziemlich gut zu meinem Sprite
passt, aber ich werde es tatsächlich ein bisschen kleiner
machen Und der Grund
dafür ist, wenn wir ein Spiel
spielen und etwas wie eine Kugel oder ein Projektil hier oben auf dem
Bildschirm
getroffen wird. Nehmen wir an, etwas geht
und es trifft dich genau dort. Das
trifft nicht wirklich den Sprite, aber es würde den Collider treffen Und so
würde der Feind, du lieber der Spieler, Schaden nehmen, was ziemlich frustrierend sein kann,
wenn du ein Spiel spielst Im Allgemeinen ist es also
eine gute Idee, den Sprite-Renderer hier
so niedrig
wie möglich zu stellen , damit Sie offensichtlich nicht durch den
Boden fallen Aber dann wollen wir
es ein bisschen kleiner machen, also wollen wir es in etwa
so machen Also, wenn du hier getroffen wirst, stirbst du
technisch gesehen nicht. Aber wenn du da drüben getroffen wirst, irgendwo in diesem Block
, der der Hauptakteur ist, können
wir ihn sogar ein bisschen
kleiner
machen, wie dort drüben. Dann wirst du Schaden erleiden oder vielleicht sogar sterben und
musst das Spiel von vorne beginnen. Aber im Grunde
macht es dem Spieler einfach ein bisschen
mehr Spaß, ein Spiel
zu spielen, bei dem er nicht ständig
dafür
bestraft wird , dass er am oberen rechten
Pixel des Charakters getroffen wird Verfolge das weiter.
Natürlich müssen
Sie bei jedem Spieler
sicherstellen, dass er oder sie in die
Grenzen der Box passt,
aber nicht unbedingt, dass
Sie Leerzeichen haben Ich finde das ziemlich
gut. Vorerst. Ich habe meine Box gewechselt, Clider. Ich muss nichts anderes
ändern. Der Ridge-Körper wird nicht von Sprites
beeinflusst. Die Bewegung des Spielers
sollte in Ordnung sein. Es hat ungefähr die gleiche Größe und
ich habe meine Sprites geändert. Wenn wir weitermachen und auf Play klicken, kannst
du jetzt sehen, dass ich tatsächlich eine Nebenfigur habe und ich sie
bewegen und springen kann Offensichtlich hat es
keine Animation, also sieht es ein bisschen albern Aber das ist eigentlich der Beginn des Hinzufügens
eines Spiels im Sprite-Stil Und Sie können sehen
, dass
dies das Aussehen unseres Spiels erheblich verbessert Ich meine, offensichtlich, wie ich schon
sagte, sieht es jetzt dämlich aus. Aber wenn du einfach
ein Standbild
da drüben nimmst und es dir ansiehst, obwohl es nicht wirklich zum Kunststil
passt, sieht
es viel
schöner aus, wenn du
echte Dinge in deinem
Spiel hast als Wie ich schon
sagte, können Quadrate oft cool sein. Ich habe viele Spiele nur
mit Formen gemacht. Aber in diesem Fall,
bei dieser Art von Spiel, sieht
es etwas
professioneller aus,
echte Sprites zu haben .
Lassen Sie uns also nicht damit aufhören Lassen Sie uns tatsächlich
weitermachen und all
die anderen Sprites, die wir benötigen
, zu unseren anderen Objekten hinzufügen die anderen Sprites, die wir benötigen
, zu unseren anderen Objekten Es gibt ein paar Änderungen, die
wir hier vornehmen müssen. Erstens,
weil wir Clouds
als Plattformen verwenden
werden,
müssen sie natürlich
alle die gleiche Größe weil wir nur
ein Cloud-Sprites haben Sie müssen alle so groß sein. Das ist eigentlich kein Problem für alle unsere Fliesen hier, weil sie alle
die gleiche Größe haben. Aber diese drei
am Anfang haben
unterschiedliche Größen. Also müssen wir diese ein wenig
ändern. Ich werde dazu kommen. Aber
fangen wir einfach damit an, hier in meinen Sprites-Ordner zu gehen
und diese Cloud
hineinzuziehen und diese Cloud
hineinzuziehen Jetzt können wir schon sehen, dass
es ein
bisschen komisch aussieht Wir haben eine unglaublich
lange und flache Wolke, und ich werde das beheben,
indem ich die Skala wieder auf eins setze. Wir haben die
Standardgröße für unsere Cloud. Ich werde
das auch mit den anderen
beiden Bodenobjekten machen . Ich werde mich eigentlich nicht für drei
entscheiden, weil zwei mehr als groß
genug für mein Spiel sind. Ich werde das ein
wenig anpassen , wenn ich in meinem Spiel
weiter vorankomme, aber im Moment ist das als
Ausgangspunkt für mein Spiel in
Ordnung Das Letzte, was ich tun muss, ist natürlich die Collider zu wechseln Weil das nicht die Kollision ist. Ich will, ich möchte, dass es eher
so ist. Lass es uns ein bisschen nach oben ziehen. Da drüben und rüber runter. Wie ich schon sagte, du willst natürlich
nicht, dass der Collider
unbedingt so ist, weil er dann auf nichts stehen kann, aber du
willst auch nicht, dass er hier
ist, weil er auf halbem Weg
durch die Ich würde sagen, irgendwo in der Nähe
wäre ein gutes Gleichgewicht. Du kannst immer noch ein
bisschen hinter die Wolken kommen, aber du kannst dich immer noch selbst sehen, vielleicht ein bisschen nach
oben bewegen, offensichtlich nach unten. Das ist weniger wichtig, weil
du
sie wahrscheinlich nicht von unten springen wirst. Aber das sollte gut sein. Du willst
solche Dinge nicht wirklich mit Projekten machen, so sehr
mit Wolken. Weil du nicht
wirklich
herunterfallen willst, wenn dort Wolken
sind. Aber du kannst es ein bisschen machen, vielleicht so etwas. Wie ich schon sagte, das
muss nicht ganz exakt sein, aber du wirst ein Gefühl dafür
bekommen wenn du dein Spiel spielst
und es optimieren kannst Das sind offensichtlich
deine Collider. Ich werde diesen Fehler tatsächlich
löschen und diesen einfach mitkopieren,
weil ich keine Lust habe, ihn noch einmal zu
ändern Und sie sollten alle die
gleiche Art von Collider haben. Wenn ich jetzt auf Play drücke, können
wir sehen, wie das aussieht. Spring rein und ich kann auf
diese Wolke fallen und mich
an ihr entlang bewegen. Und ich meine, es sieht hübsch aus. Okay. Das einzige Problem ist dass
der Spieler ständig
vor der Cloud steht. Und das ist eigentlich nicht das
, was ich will. Ich hätte lieber, dass der Spieler
hinter der Cloud ist. Um das zu tun, verwende ich
tatsächlich
eine Variable in diesem
Sprite-Renderer-Skript, und sie heißt Order in Layer Ich werde die Wolken in Ebene sechs so ordnen
, dass sie geordnet sind. Ich werde meinen Spieler so einstellen
, dass er in Schicht fünf geordnet ist. Jetzt können wir sehen, wann wir das Spiel spielen.
Wir sollten in der Lage sein zu sehen, wie
der Spieler tatsächlich
hinter die Wolken fällt , nur ein
bisschen mehr als ich wollte. Und ich denke, das
sieht in Bezug auf das
Gameplay-Design ein bisschen besser aus. Jetzt
haben wir
diese Sprites offensichtlich gerade für die
ersten beiden Plattformen hinzugefügt diese Sprites offensichtlich gerade für die
ersten beiden Plattformen Wir haben hier keine
der Bodenfliesen hinzugefügt. Es gibt immer noch das
Standardrechteck, also
müssen wir das korrigieren. Lassen Sie uns damit beginnen, zurück zu
Sprites zu gehen und die
Wolke direkt wieder hinein zu ziehen, die Skala wieder auf eins zu
setzen Und jetzt wird
es ein
bisschen knifflig, weil
wir das genau so
ändern müssen , wie wir es die ganze Zeit versucht
haben Wir müssen zuerst den Box-Glider
ändern und dann müssen wir jedes einzelne
dieser untergeordneten Objekte so
anpassen dieser untergeordneten Objekte so , dass sie die richtige
Größe für das Sprite Das
wird leider
ziemlich viel Arbeit bedeuten , weil
wir jetzt all
unsere Sprites neu gestalten müssen,
oder besser gesagt alle unsere Kacheln, die wir bereits in Bezug auf die neuen Sprites
erstellt haben in Bezug auf die neuen Sprites
erstellt Wenn wir uns mit
jedem einzelnen befassen würden, müssten wir den Box-Glider bearbeiten, wir müssen neue Dinge hinzufügen,
wir müssen Es ist ein bisschen verwirrend und
es ist ziemlich viel Arbeit. Es gibt tatsächlich einen
einfachen Weg, das zu umgehen. Es mag ein
bisschen autointuitiv erscheinen, aber was wir tun werden,
ist, dass wir tatsächlich in den
Rückraum gehen , den wir
genau so haben, wie wir es zuvor hatten. Stellen Sie es so ein, wie es normalerweise war bevor wir das Sprite hinzugefügt haben Und dann werden wir zehn neue Prefabs
erstellen
und diese als
Referenzpunkte verwenden, um unsere neuen
Prefabs mit unseren Sprites zu erstellen unsere neuen
Prefabs mit unseren Sprites Dann werden wir sie einfach danach löschen. Das klingt vielleicht nach
viel mehr Arbeit, aber auf lange Sicht ist es tatsächlich
wesentlich einfacher , dies auf diese
Weise zu tun als
das, was wir zuvor getan haben Das erste, was wir tun
werden, ist die Spike
- und Spikeball-Fertigteile auszutauschen Spike
- und Spikeball-Fertigteile ,
weil das eigentlich
der erste Schritt ist Wir müssen uns daran erinnern, dass
diese Fertighäuser in
unseren Fertighäusern selbst Fertighäuser unseren sind.
Also müssen wir diese ändern Lassen Sie uns damit beginnen,
den Spike durch den Spikes Sprite zu Siehst du, das
sieht eigentlich gar nicht so schlecht aus. Wir müssen die
Skala wieder auf eins umstellen. Es ist sehr wichtig, dass Sie
dieselbe Skala verwenden , wenn
Sie Pixelkunst verwenden. Da Sie nicht festlegen können,
dass ein Pixel kleiner als das
andere ist, sieht das wirklich schlecht aus. Stellen Sie sicher, dass alle Ihre
Skalen auf eins eingestellt sind. Ich muss tatsächlich daran denken, das auch mit dem Spieler zu machen. Bevor ich es vergesse,
muss ich vielleicht die Größe
der Sprites pro Pixeleinheit ändern , die wir ursprünglich
hier eingestellt haben, diese Pixel pro Einheit Aber stellen Sie sicher, dass Sie
alles auf den Maßstab eins einstellen, sonst
wird es nicht gut aussehen Wir haben unsere Wolken auf
eins und unseren Spieler auf eins. Das ist gut. Gehen wir zurück zu unseren Pre-Moden und
zeigen wir, dass unser Spike bei eins ist, und dass wir unseren Spike Ball
auch bei eins haben müssen Wie dem auch sei, lass uns wieder hierher zurückkehren.
Fangen wir damit an, die Farbe zu einer normalen
Farbe zu machen, nämlich Weiß. Also werden wir es in keiner Weise
ändern. Und dann werde ich diesen Polygon-Collider tatsächlich entfernen und
einen einfachen Box-Collider hinzufügen Und Sie denken vielleicht, dass
es sinnvoller vielleicht drei
Polygon-Collider
hinzuzufügen,
aber glauben Sie mir, das ist unglaublich
überkompliziert für
das, überkompliziert für Es muss nur ein
grundlegender
Collider-Fehler sein , den viele neue
Unity-Entwickler machen, wenn sie versuchen, ihre
Collider so genau wie
möglich zu machen , indem sie vielleicht
eine Linie hier, eine Linie hier, eine Zeile
hier hinzufügen eine Linie hier, eine Linie hier, eine Zeile
hier Es ist wirklich keine gute
Nutzung deiner Zeit. Und du kannst so
etwas machen und es wird die Arbeit perfekt
erledigen. Das macht das Spiel sogar
ein bisschen
unterhaltsamer weil
du nicht
sterben willst , wenn du, wie gesagt, genau dort auf
die winzige Spitze
einer Spitze und der Spieler
merkt es nicht einmal , wenn er das Spiel
spielt Du kannst Box
Glides nur für viele Dinge verwenden.
Natürlich werden
wir hier einen Kreis verwenden Aber dafür ist ein Boxgleiter
mehr als ausreichend. Wie dem auch sei, lassen Sie uns
den Spike-Ball öffnen und
hier dasselbe tun Gehen Sie zu Sprites und ziehen Sie
das Spikeball-Sprite hinein.
Ändern Sie es auf Weiß, sodass wir die normale Farbe
haben Und dann können
wir
die
Circ-Lide einfach ein bisschen vergrößern die
Circ-Lide Anstatt
diesen Edit Collider zu verwenden, werde
ich
diesen Radius auf
0,6 setzen . Ich finde, das ist eigentlich schon
ganz gut,
denn wie gesagt, du willst nicht sterben,
wenn du das Ende erreichst. Aber das ist der Großteil
des Sprites, also ist das in Ordnung. Ja, der Skid gerade, wir haben unsere Prefabs für
unsere Wir haben das
Sprite geändert und wir haben die
Collider bearbeitet und wir haben dafür gesorgt,
dass es auf Maßstab eins Wenn wir jetzt
zu unseren Bodenfliesen zurückkehren, können
wir sehen, wie
sie es zu einem Spiel hinzufügen Aber sie
sehen vielleicht nicht so gut aus. Zum Beispiel ist
dieser in der Cloud und sie sind ein bisschen
größer als zuvor. So etwas führt
sie zusammen.
Offensichtlich sind sie
viel weiter unten Das macht den
Sprung etwas schwieriger, weil
sie auch breiter sind Wie ich schon sagte, all
diese Fertighäuser sind jetzt
in gewisser Weise ein bisschen
ruiniert Aber wir werden
tun, was ich
zuvor gesagt habe , und tatsächlich einfach eine ganze Reihe
neuer Fertighäuser
verwenden , weil
ich denke, dass es auf
lange Sicht tatsächlich
einfacher sein wird Sie können so oder so, es wird
wahrscheinlich ungefähr
die gleiche
Zeit in Anspruch nehmen , weil wir
einfach jedes
einzelne dieser Sprites ändern, die Box Clyde
hinzufügen, sie hinzufügen könnten einfach jedes
einzelne dieser Sprites ändern, die Box Clyde
hinzufügen, ,
aber dann müssen wir sie alle nach oben verschieben, um sie an die
neue Größe anzupassen Du Gott, wir müssen
so ziemlich alles ändern , was
wir bereits hinzugefügt haben Und meiner Meinung nach ist es wirklich
nicht viel schneller oder gar nicht
schneller, nicht viel schneller oder gar als einfach neue Fertighäuser
herzustellen Lassen Sie uns also weitermachen und ein neues
Stockwerk herunterziehen. Also haben wir ein neues Fertighaus. Und fangen wir einfach damit an, dieses Fertighaus
auszupacken. Es ist nicht mehr verknüpft. Wir haben
gerade eine Referenz erstellt, jetzt haben wir unser neues Prefab Nennen wir es Bodenfliese, eins A. Ich wollte das zehnmal
kopieren Wir haben Bodenfliese eins A, wir werden
Bodenfliese zwei A Bodenplatte drei Bodenplatte vier A usw. haben, bis wir
alle zehn Bodenfliesen haben, von denen eine
Kopie von ihnen erstellt wurde Sobald Sie das getan haben, können
Sie so ziemlich
einfach
damit beginnen , all Ihre alten Fertighäuser
als neue umzubauen Ich werde das Ganze überspringen,
weil es ein
ziemlich langwieriger Prozess ist und Sie nicht wirklich sehen müssen Aber im Grunde genommen sollten Sie mit
den neuen Sprites
einfach eine ganze
Reihe neuer Prefabs erstellen, einfach eine ganze
Reihe neuer Prefabs erstellen auf den alten
basieren, die Sie hatten Und stellen
Sie sicher, dass Ihre Prefabs, sobald Sie fertig
sind, alle Eigenschaften
haben, die die alten Also deine Kachel, das klare Skript und deine Boxfolie und
all das Zeug Stellen Sie sicher, dass das
alles auf den Fertigobjekten steht. Und wenn Sie das getan haben, können
Sie loslegen. Sobald Sie mit der
Herstellung all Ihrer Fertighäuser fertig sind, sollte
das eigentlich
alles so sein, wie wir es brauchten, aber es gibt noch ein paar
Änderungen, die wir vornehmen müssen Zuallererst
müssen wir all
unsere alten Kacheln
hier löschen , weil wir sie nicht mehr benötigen. Wir haben unsere neuen Kacheln
mit all unseren Sprites. Wir haben ein A auf dem Boden, bis hin zu zehn A. Die andere Sache, die wir allerdings ändern
müssen, ist, dass wir
hier rüber zu dieser Hauptkamera gehen müssen Wir können sehen, dass unsere Kartenkacheln jetzt alle
fehlen. Denn was wir hier gemacht haben, ist ein
Array, das besagt,
okay, benutze diese Kartenkachel, aber die Kartenkachel ist
nicht mehr da. Da steht, ich weiß nicht,
wo die Datei ist. Wir müssen sie alle durch
diese neuen Kacheln ersetzen , die
wir
hier erstellt haben , weil es sich tatsächlich um
neue Objekte handelt , die wir erstellt haben oder besser gesagt, um neue Dateien
, die wir erstellt haben. Das ist eigentlich alles, was
wir tun müssen, um
unser neues Sprite-basiertes Spiel zu erstellen unser neues Sprite-basiertes Spiel Lass uns weitermachen und auf Play klicken. Und wir können jetzt sehen, dass wir
Wolken haben und ein kleines
Springen auf Wolken. Unsere neuen Sprites spawnen genau so, wie
wir es wollten. Wir haben unseren Sprite hier drüben
, der hat zwei Wolken, und
wir haben dort eine Spitze Das einzige Problem ist jedoch, dass Sie feststellen werden,
dass die Sprites tatsächlich
viel zu nahe
beieinander
stehen und die Sprunggrube
nicht Das sind alles Optimierungen, die
wir vornehmen müssen. Wir mussten unser
Spiel testen, um sie zu sehen, aber die Wolken
spawnen tatsächlich übereinander Das ist nicht gut. Das ist eigentlich nicht genau das, was wir wollen. Lass uns weitermachen und
das ein bisschen reparieren. erste Sache
ist glücklicherweise, dass wir alle unsere Skripte
ziemlich dynamisch
erstellt haben. Wir haben hier diese
Offset-Variable, die angibt, wie weit die
Wolken
voneinander entfernt sein sollten , bevor wir
eine neue erzeugen. Wir schauen uns diese an, sie ist negativ 5,55 Diese ist 4,2 Diese sind technisch gesehen
weniger als 15 voneinander entfernt, aber wenn wir tatsächlich anfangen, unser Skript
hinzuzufügen, funktioniert
es nicht
genau so Wir versuchen zu ändern wie häufig sie sind, und
nicht, wie oft sie spawnen Wir gehen zurück zu dem Skript hier
, das unsere Map
generiert können wir tatsächlich, wir haben diesen Wert
hier auf acht
hartcodiert und es ist eigentlich
keine
Variable, die wir verwendet haben. Lass uns das reparieren.
Gehen wir zurück und nennen es Spawn-Frequenz Stellen wir sicher, dass wir das
auf die Variable hier setzen. Offensichtlich gibt Offset wie weit es
vor der Kamera Tut mir leid, das habe ich vergessen. Deshalb haben sich die nicht summiert. Aber wie weit sie voneinander
entfernt erscheinen, ist diese neue Variable, die
wir tatsächlich fest
codiert hatten und die wir behoben haben Gehen wir jetzt zurück
zur Hauptkamera und ändern
wir das auf
etwa 12. Und mal sehen, ob das ein bisschen besser
aussieht. Der Offset ist derzeit 15. Mal sehen, ob wir
in der ersten
da drüben und in der zweiten spawnen da drüben und in der zweiten Okay. 12 ist ein bisschen hoch. Stellen wir es auf
etwa zehn ein. Mal sehen, ob das funktioniert. Zehn
sieht ziemlich vielversprechend aus. Ich denke, das könnte gut sein. Ja. In Ordnung. Ich werde es tatsächlich 11 machen nur weil ich noch ein paar
Dinge daran
ändern möchte . Die zweite Sache, die ich eigentlich tun
möchte, ist damit aufzuhören. Ich möchte das auf 11 ändern. Zweitens
gefällt mir die Tatsache nicht, dass die Wolken direkt
am unteren Rand der Karte erscheinen, also lass mich dieses
Minimum von Y auf minus vier ändern Ich werde das maximale Y tatsächlich auf etwa zwei setzen Es ist ein bisschen einfacher, die Wolken auf und ab zu
bewegen. Dann
muss ich natürlich die
Sprunghöhe meiner Spieler auf etwa
zehn
oder vielleicht sogar auf 12 ändern Sprunghöhe meiner Spieler auf etwa
zehn ,
damit sie richtig
zu den neuen Wolken springen
können. Mal sehen, mit
all diesen Optimierungen haben
wir jetzt ein etwas
anderes Spielgefühl Der Spieler kann viel
höher springen. Vielleicht ist 12 ein bisschen hoch, aber das kann ich natürlich korrigieren. Machen wir vielleicht zehn und
gehen zurück und schauen, wie es aussieht. Jetzt mit der Sprunghöhe von zehn würde
ich sagen, dass das viel besser aussieht. Die Gravitationsskala
könnte etwas niedriger sein. Störche schweben
auf den Boden zu, aber das sieht für mein Spiel eigentlich nach
einer ziemlich guten
Figur Ich kann den Sprung machen, nur vielleicht muss
ich das auch
ein bisschen ändern Ich könnte die
Sprunghöhe etwas höher machen, aber dann auch die
Schwerkraft-Skala. Aber es sieht so aus, als ob all
dies mit dieser
neuen Variablen tatsächlich möglich ist, von dies mit dieser
neuen Variablen tatsächlich möglich ist, ich entschieden habe, dass
sie eigentlich ziemlich gut ist. Und wir können jetzt sehen, dass wir
ein etwas besser
aussehendes Spiel gemacht haben . Alles ist ein bisschen sauberer und alles
sieht viel schöner Die eine Sache, die ich
ändern werde , bevor ich dieses Video beende, ich weiß, dass es
ziemlich lang war,
ist, dass ich
alle Sprites
etwas kleiner machen werde etwas Ich werde eins
machen, sie ein ziemlich
kleines Spiel machen Sagen wir vielleicht zu 12. Ja, ich würde sagen, 12 ist
ziemlich gut, wie ich schon sagte. Denn jetzt habe ich beschlossen,
meine Sprites etwas kleiner zu machen meine Sprites etwas kleiner Ich werde natürlich alle meine Collider und
vielleicht die Spawn-Frequenz der Cloud so
anpassen müssen alle meine Collider und
vielleicht die Spawn-Frequenz der Cloud so
anpassen vielleicht die Spawn-Frequenz der , dass sie
immer noch
den Aber aufgrund der Art und Weise, wie
wir unsere Skripte codiert haben, ist
das eigentlich
ganz einfach Und ich empfehle dir, dein Spiel ständig anzupassen,
während du es entwickelst. Es ist ein ganz normaler Aspekt der Spieleentwicklung,
dein Spiel während der Entwicklung zu ändern. Und es mag
nervig erscheinen, ständig Änderungen an deinem Spiel vorzunehmen
und Dinge reparieren zu müssen. Aber glaub mir, es ist
viel besser als die Alternative
, ein Spiel zu haben, mit
dem du nicht
besonders zufrieden bist weil du nichts ändern
wolltest. Stellen Sie also sicher, dass Sie
Ihr Spiel
ständig so anpassen , dass es
genau das widerspiegelt, was Sie wollen. Ich möchte, dass mein Spiel
etwas kleinere Sprites hat. Ich werde alle meine Kacheln,
meine Prefabs sowie die
Collider auf meinem Feind
anpassen müssen . Vielleicht bei so ziemlich allen meinen Sprites, eigentlich auch
bei meinem Player Und dann muss ich vielleicht
das
Skript zur Kartengenerierung anpassen , wie
oft sie Sport treiben,
weil ich möchte, dass sie
die gleiche Entfernung voneinander haben weil ich möchte, dass sie die gleiche Entfernung voneinander Also
muss ich den Wert auch
etwas kleiner machen Wert auch
etwas kleiner Aber wenn ich das alles gemacht habe, sollte
es nicht zu lange dauern
und ich werde ein Spiel haben, dem ich wahrscheinlich
viel glücklicher sein werde mit
dem ich wahrscheinlich
viel glücklicher sein werde,
weil es
irgendwie das widerspiegelt , was ich mir
vorstelle. Cool. Und dann ist
das Letzte, einfach zu testen. Möglicherweise müssen wir diese Variablen noch
einmal
ändern , bevor
wir das Video beenden, aber lassen Sie mich sehen. Weil ich irgendwie von Wolke zu Wolke
springen wollte . Oh, ich habe vergessen, den Boxgleiter
des Players
einzustellen . Lass uns das schnell
machen Und die eigentliche Cloud selbst sollte
meiner Meinung nach in Ordnung sein,
aber lassen Sie mich nur
sichergehen , dass sie
gut für den Spieler ist. Lass uns die Wolken sehen. Passen Sie die einfach auch an. Sollte in Ordnung sein. Ich werde
diese Komponente kopieren, also muss ich
hier
dasselbe tun und ihre Werte einfügen. Es ist so, als ob Copy-Paste gut sein
sollte. Ich werde das
Gleiche mit allen Fertighäusern machen, nur um sicherzugehen, dass
ich sie nicht wiederholen muss Lassen Sie mich weitermachen und
Komponentenwerte
für all diese einfügen Komponentenwerte
für all Jetzt weiß ich, dass es so aussieht, als hätten wir eine Menge Dinge
gemacht
und sie dann geändert und dann wieder gemacht
und geändert. Es ist eigentlich keine schlechte
Sache. Es bedeutet, dass Sie bestimmten Spiel
folgen
, das Sie im Sinn haben. Und die Tatsache, dass
du Dinge optimierst und veränderst, bedeutet, dass
es
eher einem echten Organismus ähnelt echten Organismus ähnelt als diesem statischen Ding Und genau das
sollte ein Spiel sein, wenn Sie es
entwickeln Aber wie dem auch sei, lass uns sehen, ob das wirklich zu
dem passt, was ich will. Ich habe hohe Sprünge, ich habe von Wolke zu Wolke Meiner Meinung nach sieht das sogar
viel besser aus. Ich finde das eigentlich ganz gut. Das ist wirklich großartig. Wir haben so ziemlich
alles, was ich versuche, um die Szene im Wiedergabemodus zu
speichern, was du nicht tun darfst. Wir haben
so ziemlich alles, was ich zu diesem
Zeitpunkt im Spiel
eigentlich wollte. Du hast Wolken, zu denen
du springen kannst, du hast Hindernisse darin. Das ist eigentlich ziemlich cool. Offensichtlich sieht es nicht
gut aus, weil der Spieler nicht animiert
ist und Bälle spielt Jetzt
bewegen sich die Stacheln oder so. Im nächsten Video werden wir mit der
Animation beginnen. Aber wenn
du mitmachst, hast
du hoffentlich ein etwas
besser aussehendes Spiel. Obwohl wir gerade Sprites
hinzugefügt haben und sonst
nicht
viel geändert haben, wie Sie sehen können, mussten wir
natürlich viele Teile
unseres Spiels
optimieren, weil wir die Sprites
hinzugefügt haben.
Sie können Sprites von Anfang an hinzufügen Aber ich denke, viele
Entwickler ziehen es vor, es zuerst mit
Vorlagen zu erstellen und dann die
Dinge nach und nach anzupassen,
weil es so weil es Du musst nicht die ganze
Kunst machen, bevor du anfängst. Aber das ist eigentlich alles, was
wir heute erledigen wollen. Und ich denke, man kann mit Sicherheit
sagen, dass unser Spiel jetzt viel
besser aussieht als zu Beginn
des Videos. Wir werden
im nächsten Video,
nachdem wir Animationen hinzugefügt haben, sehen , wie das Spiel wirklich zum Leben erweckt wird
. Und wir werden noch
ein paar Änderungen
mit dem Spieler vornehmen ,
damit er in die andere Richtung schaut,
wenn er nach damit er in die andere Richtung schaut, links und rechts abbiegt Das wird das Aussehen
des Spiels erheblich verbessern. Aber im Moment denke ich, dass es
viel besser aussieht als zu Beginn. Und hoffentlich konntest du
mitmachen und
entweder diese oder deine eigenen
Sprites zum Spiel hinzufügen .
8. 7. Unsere Charaktere animieren: Hier und willkommen zurück bei Unity. In der letzten Folge haben wir
all unsere Sprites
zu unseren Spielen hinzugefügt all unsere Sprites
zu unseren Spielen Wir haben ein Minor
für unseren Spieler. Wir haben eine ganze Reihe von
Clouds für die Plattformen. Und wir haben stachelige
Kugeln und Stacheln in den Wolken für die Dinge, denen
wir den Hindernissen ausweichen müssen Offensichtlich mussten wir in
der letzten Folge ziemlich viel Zeit
damit verbringen der letzten Folge ziemlich viel Zeit Dinge zu
optimieren und zu bewegen, damit sie alle an der richtigen Position sind Ich musste es danach auch ein
bisschen machen nur um sicherzugehen, dass sie
wirklich alle genau
dort sind , wo sie Aber das wird für dich subjektiv
sein. Sie wissen offensichtlich, wo
die richtige Position für
Ihr Spiel und auch für
Ihr Projekt ist . Auch wenn du mir
folgst, wird
es nicht
genau so aussehen wie meins. Sie werden sie
in genau derselben Position haben. Solange also alles gut
aussieht und
alles in der richtigen
Position für Ihr Spiel ist , ist das großartig, dass wir mit der Animation
weitermachen können. Denn wenn wir
das Spiel jetzt spielen, können
wir sehen, dass, obwohl all die Sprites und
alles gut aussieht, es jetzt
als Standbild in Ordnung aussieht Aber in dem Moment, in dem wir
anfangen, uns zu bewegen, die Tatsache, dass der Spieler
sich überhaupt nicht bewegt und
einfach nur dahinrutscht und
er ziemlich leblos ist Tatsächlich lässt es
das Spiel ein
bisschen
billig oder überstürzt aussehen ,
und wir wollen natürlich nicht, dass unser Spiel
billig oder überstürzt aussieht, aber wir wollen ein
bisschen mehr wie ein
echtes Spiel aussehen , das man auf Steam oder
in der Arcade oder wo auch immer sehen würde Um das zu tun,
müssen
wir unserem Spiel also tatsächlich Animationen hinzufügen Und die Art und Weise, wie wir
animieren werden, werde
ich Ihnen zeigen, es ist ein ziemlich
komplizierter Prozess, wenn Sie sich darauf einlassen Denn offensichtlich
gibt es ganze Jobs rund
um die Animation Spielen in diesen riesigen Spielen wie
Treble Studios Es unterscheidet sich stark
von dem, was wir heute
tun werden, aber in Unity ist es
zwar
ein ziemlich komplizierter Prozess, es bietet
eine ziemlich einfache Möglichkeit, ihn zu erledigen Und ich werde es
Ihnen zeigen und Sie
werden feststellen, dass
Sie es wahrscheinlich ziemlich schnell verstehen
werden. Bevor ich mir
zu sehr übertreibe, lassen Sie uns kurz vorstellen, was
wir tun werden. Wir werden vorerst
nur den Spieler animieren. Je
weiter wir im Spiel
vorankommen, desto mehr
Dinge müssen wir natürlich animieren Und wir könnten neue
Dinge animieren, wenn wir sie hinzufügen. Aber jetzt fangen wir einfach
an,
den Player zu animieren , denn das ist
der wichtigste Teil Gehen wir zunächst
zu Assets und erstellen einen neuen Ordner
namens Animation Hier
werden wir
alle unsere Animationsdateien speichern . So wie Sprites
Dateien sind, besteht unser Code aus Dateien. Sogar unsere Szenen und unsere Prefabs sind
eigentlich auch Dateien Animationen, die wir erstellen,
werden ebenfalls Dateien sein. Und das ist wichtig für
einige Begriffe hier. Eine Animation oder
ein Animationsclip ist wie ein sich wiederholendes Video
von einer bestimmten Sache Wie eine laufende Animation.
Oder eine springende Animation. Das wird
ein sich wiederholendes Video sein, du kannst es nennen, aber es ist ein sich
wiederholender Wechsel von Sprites Es wird also eine
Bewegung auf eine bestimmte Art und Weise geben. So wird eine
der Animationen heißen. Dann
werden wir
in Unity animieren , indem wir
diese Animationsdateien speichern ,
weil sie als Dateien in diesem Ordner
gespeichert werden Dann werden wir
ein neues Objekt namens Controller erstellen ,
das Unity
mitteilt , welches
Objekt an welchem Punkt verwendet werden soll, und dort
fügen wir unsere Logik Aber bevor ich mir
zu sehr übertreibe, fangen wir einfach mit
den eigentlichen Animationen an. nun
die eigentlichen Sprites angeht, die wir verwenden
werden, habe
ich natürlich
noch ein paar Sprites für die Animationen erstellt noch ein paar Sprites für die Wir werden eine
sogenannte Sprite-basierte Animation machen , bei der Sie eine ganze
Reihe verschiedener Sprites haben Als ob du ein laufendes
Sprite hast, bei dem vielleicht dieses Bein angehoben wird
und dann eins nach unten und dann eins zur Seite
und dann wieder Und ich habe
diese Sprites offensichtlich schon gemacht. Sie werden natürlich durch dieses Video
verlinkt. Im Grunde
wird unsere Animation Unity nur mitteilen, zu
welchem dieser
Sprites zu welchem
Zeitpunkt gewechselt werden soll. Es ist
eigentlich ganz einfach Es gibt eine andere Art
von Animation, bei der Sie im Grunde das gesamte Objekt, das
Sie hier erstellt haben, nehmen und all
diese kleinen Körperteile
zu Unterobjekten machen . Der eine Arm wäre ein Objekt, das eine Bein wäre ein Objekt. Sagen Sie Unity im Grunde, okay, drehen Sie das zu diesem Zeitpunkt und
verschieben Sie es dann zu diesem Zeitpunkt zurück. Und das ist um
einiges komplizierter als das, was wir heute
tun werden. Es ist offensichtlich eine
viel bessere Art,
kompliziertere Dinge zu animieren Zum Beispiel, wenn du
kein Pixelart-Spiel erstellst kein Pixelart-Spiel erstellst So ziemlich wirst du animieren müssen Weil Sie nicht
für jeden einzelnen Frame, den Sie möchten
,
ein anderes Sprite erstellen für jeden einzelnen Frame, den Sie möchten
, Aber für Pilar werden
wir, genau wie
früher, Animationen verwenden, die auf
Sprites Und für den Piloten sieht es meiner Meinung nach sogar viel besser Sie können es nie wirklich
genau so bekommen, wie Sie es wollen,
ohne es für Pix L zu verwenden . Das
werden wir tun Sobald Sie all
diese Sprite-Dateien
heruntergeladen haben, werde
ich natürlich all
diese Sprite-Dateien
heruntergeladen haben, dieselben portieren Das werden die Sprites
sein, die wir für unsere Laufanimation
benötigen Und das sind Sprites
minus zwei bis sechs. Jetzt habe ich
sie tatsächlich einfach an die falsche Stelle gebracht. Lass mich die schneiden und
sie in Sprites packen. Weil es Sprites sind,
gibt es Animationen. Aber wenn
Sie es direkt in
den Sprite-Ordner importieren und wir die beiden Änderungen
vornehmen müssen, die wir beim letzten Mal vorgenommen haben, setzen Sie diesen Wert auf 12 und setzen Sie
dies auf Punkt. Kein Filter Wir können jetzt sehen, dass sie genau
die gleichen sind wie alle
meine anderen Sprites. Wenn ich hier zu Minor übergehe,
können wir sehen, dass es absolut keinen Unterschied zwischen
diesen beiden gibt, außer dem Namen Wenn ich zu meinem Player gehe, kann ich sie
tatsächlich als Sprites
hineinziehen Ich sage dann, okay, ich möchte, dass der
Spieler ein Running Sprite ist. Und wir können jetzt sehen,
dass er einfach da feststeckt. Aber wir
wollen nicht, dass unser Spieler immer in diesem
Running Sprite Wir wollen, dass es sich von
einem Sprite zum anderen ändert. Und dafür benötigen
wir eine neue Komponente namens Animator,
wie wir bereits gesucht haben, wie wir bereits gesucht haben, aber wir müssen
diesen Animator hinzufügen Dieser Animator
ermöglicht es Unity grundsätzlich zu sagen, okay, das ist etwas, das
einen Animationscontroller hat, oder das ist etwas,
das Es wird ein Wechsel zwischen den beiden sein
. Ich erkläre die gesamte
Terminologie, sobald wir dazu kommen, aber diese Komponente
hier ist im Grunde nur ein Hinweis darauf
, dass wir sie animieren Der Hinweis auf die Tatsache
, dass es einen Controller hat. Um nun einen Controller hinzuzufügen, was das
Wichtigste ist, was wir hier brauchen, gehen
wir zur Fensteranimation und dann wieder zur Animation über. Und das öffnet
das zweite Fenster hier drüben. Fensteranimation. Animation.
Oder Sie können auf Steuerung 6 klicken und
dieses Animationsfenster öffnen und es heißt, um den animierten Player
zu starten, animierten Player
zu starten, erstellen Sie einen Animationsclip , der wie
Laufen oder Springen ist. Das ist der eigentliche Clip, über den
wir gesprochen haben. Dadurch wird verfolgt, welches
Objekt wir gerade ausgewählt haben. Wenn wir die
Hauptkamera auswählen, heißt es. Erzeugt einen Animator
und einen Animationsclip. Offensichtlich hieß es nur, einen Animationsclip
erstellen , weil wir bereits
einen Animator für den Player haben Aber ich denke, wenn du hier
auf Erstellen klickst, wird das
Animator-Objekt automatisch für dich
erstellt Animator-Objekt automatisch für dich Es ist einfach gut, sich selbst etwas
zu erschaffen, damit man sich bewusst ist, dass es
Teil des Prozesses Wie dem auch sei, um
einen Animationsclip zu erstellen, klicken
wir einfach auf die
Stelle hier drüben. Wir wollen zur
Assets-Animation übergehen, weil ich
dort meine Clips speichern werde und ich werde es Player Run
nennen. Jetzt habe ich einen sogenannten Clip erstellt, und wir können sehen, dass ein Großteil davon jetzt tatsächlich ausgefüllt
wurde. Wir haben jetzt einen
sogenannten Controller. Wenn wir das schließen
und zu
unserer Animation zurückkehren ,
haben wir zwei Dateien. Wir haben diesen Player gestartet,
das ist mein neuer Clip. Aber ich habe auch dieses neue Objekt
hier, das eher Animator-Controller genannt
wird eher Animator-Controller Das ist das Herz
des Animators. Das wird ihm sagen,
welche Animation er an
welchem Punkt
machen Wenn wir
darauf doppelklicken, können wir tatsächlich sehen, wie sich dieses neue
Fenster hier öffnet. Und das ist mein Controller, das ist mein Player-Animator Das hier ist
mein Animationsclip. Um eine kurze Zusammenfassung etwas
zurückzugeben, ist
dies eine Komponente, die
wir gerade hinzugefügt haben. Das sagt im Grunde nur, okay, dieses Objekt ist etwas
, das einen Controller hat. Dieser Controller ist das, was
ich mir hier ansehe. Das heißt, okay,
in
welcher Animation möchte ich zu welchem Zeitpunkt sein? Und diese Animation ist
dieser Clip hier drüben, das sind die spezifischen Dinge. Ich werde einen laufenden haben, ich werde einen springenden haben, ich werde einen ungenutzten haben. Und dann sagt mein Controller
, okay, sei in diesem, wenn
ich das mache, sei in diesem, wenn ich
das mache, sei in diesem. Wenn ich das mache, kannst du an den Player-Run
denken. Oder die Animationen
wie Videoschleifen, Laufen, Springen
, Fallen usw. Du kannst dir
diesen Player so vorstellen wie das Ding
, das Unity sagt,
okay, welches Video zu welcher Zeit
abgespielt werden soll Und dann sagt dieser
Animator-Controller im Grunde nur
zu dem Objekt, okay, ich habe diesen
Player-Controller angeschlossen Benutze es irgendwie. Also das
ist viel weniger wichtig. Aber es basiert darauf,
einfach zu sagen, okay, das ist etwas,
das einen Controller hat und du musst
den Controller benutzen. Offensichtlich ist es wichtig. Wenn
ich es deaktivieren würde, würde es nicht funktionieren. Aber dieser Controller ist eigentlich
eine Datei in meinem Spiel. Also muss ich einen Link zu
diesem Controller und
diesem speziellen Objekt erstellen , was Unity hier für mich getan
hat. Aber wie dem auch sei, machen
Sie sich keine Sorgen darüber, was jedes
einzelne dieser Dinge bedeutet, Sie
einfach mit, wie ich es mache Offensichtlich haben wir gerade
einen Animator erstellt und dann haben
wir
Fensteranimationen Und wir haben eine neue Datei
für meinen Player namens Player Run erstellt für meinen Player namens Player Run Und das hat automatisch einen Controller
für uns erstellt. Fangen wir also an,
Player-Läufe zu animieren . Lassen Sie uns in meinen Player
hineinzoomen Und ich werde auf die Aufnahmetaste klicken
, die im Grunde besagt, dass ich
gerade Dinge aufnehme. Meine Animation. Im ersten
Teil meiner Animation möchte
ich auf diesem
Sprite hier drüben sein Ich werde hier
minus zwei wählen. Das ist der
allererste Sprite, den ich will. Der Grund, warum ich diese
Aufnahmetaste gedrückt habe , ist, dass sie im Grunde besagt, dass alle Änderungen, die
sie jetzt im
Editor vornehmen , tatsächlich
Teil der Animation sind Wenn ich es
hierher verschiebe, wird
es meine Position als
Teil der Animation ändern. Aber das will ich eigentlich nicht. Ich will nur, dass es der Sprite ist. Ich ändere mein
Sprite auf minus zwei,
bewege mich um eine Viertelsekunde Offensichtlich sind 60 eine Sekunde
in dieser Ansicht hier drüben. Und wenn ich auf Play klicke,
kann ich noch nichts sehen , weil ich nichts getan habe.
Aber ich zeige es dir später. Ich werde auf minus drei
umschalten. Ich will, dass das tatsächlich
um 15 ist. Dann möchte ich mit 30 minus vier
wählen. Dann möchte ich mit 45 minus fünf
wählen. Ich habe die vier Sprites, aus denen du
meine Laufanimation machen wirst Du kannst sehen, wie
wir da zusammenkommen. Ich möchte hier
noch etwas hinzufügen. Es ist eigentlich
egal, was ich hinzufüge, aber solange ich
etwas hier
habe, werde ich es
wieder auf minus zwei bringen. Solange ich
etwas da habe, weiß
die Unity, dass diese Animation
genau 1 Sekunde lang ist. Dieser Frame dauert eigentlich nur einen Frame, und dann geht
es wieder dorthin zurück. Ich habe das
hier nicht, obwohl es technisch gesehen
nicht Teil
der laufenden Animation ist. Unity wird das
überspringen oder besser gesagt es für einen Frame
laufen lassen und dann
direkt zu diesem zurückkehren. Das will ich nicht, lassen Sie mich sichergehen, dass ich etwas dabei
habe. Wenn ich auf Abspielen klicke, können wir
sehen, wie das
zusammenkommt und es sieht okay aus.
Es sieht ziemlich cool aus. Meiner Meinung nach bin ich nicht
der beste Animator, aber das wird
unsere Laufanimation
für unser Spiel sein unsere Laufanimation
für unser Spiel Wir können
die Geschwindigkeit und solche
Dinge in
diesem eigentlichen Controller jederzeit anpassen solche
Dinge in
diesem eigentlichen Wenn wir hier drüben sind,
klicken Sie auf die Animation Wir können die
Wiedergabegeschwindigkeit ändern, wenn wir im Spiel sind, aber im Moment ist es wie
eine einfache Animation Ich würde sagen, es sieht ziemlich
gut zum Laufen aus. Lassen Sie uns weitermachen und
zwei weitere Animationen erstellen. Spieler Idol. Das wird tatsächlich
eine unglaublich einfache Sache sein. Wir
werden nur
sicherstellen, dass Unity
weiß, dass wir bei diesem Sprite mitmachen wollen, also ist es nicht wirklich eine Animation, es ist einfach wie ein Sprite-Setting Aber wir werden es
verwenden, um es Unity mitzuteilen. Okay, stell sicher, dass du
in diesem Sprite bist. Unsere Animation besteht also
nur aus einem einzigen Sprite. Wir machen
genau dasselbe für Sprung,
Spiel einen Sprung , und wir
wählen Sprite minus sechs,
was unsere Sprunganimation ist Schau mal hier drüben
, jetzt springt es raus. Entweder wir werden so
sein, wenn wir weglaufen,
werden wir das tun. Jetzt haben wir also all unsere
Animationen fertiggestellt und repariert. Jetzt müssen
wir nur noch die Logik aufbauen
, die ihm sagt, welche
zu welchem Zeitpunkt zu tun ist. Und als letztes müssen wir nur noch
ein bisschen
Code hinzufügen, der für die Definition dieser Logik entscheidend sein wird . Um diese
Logik zu erstellen, gehen
wir hier zu diesen Parametern über. Und das sind
Bedingungen, die wir festlegen wollen. Also wollen wir
natürlich eine Bedingung haben , um zu wissen, ob wir
laufen oder nicht, , um zu wissen, ob wir
laufen oder nicht, denn
wir müssen wissen ob wir die
laufenden Animationen abspielen sollen. Nennen wir es läuft. Lasst uns eine weitere
Milliarde schaffen, die
wir nennen, sie ist
geerdet, weil wir wissen
wollen, ob wir
springen oder nicht, oder besser gesagt ob wir hier
vor Ort Wenn wir uns diese tatsächlich ansehen,
sind das zwei Milliarden. Sie können entweder wahr oder falsch
sein. Was ich
jetzt tun werde, ist,
eine Logik zu entwickeln, die
im Grunde definiert, dass eine Logik zu entwickeln, die
im Grunde definiert diese drei Animationen
zu
bestimmten Zeiten abgespielt werden
, je nachdem, welche davon wahr
und welche falsch sind. Also, um das zu tun, werde ich hierher in einen beliebigen Staat
gehen. Das ist in Bezug auf den Animator eigentlich sehr, sehr nützlich Und es bedeutet im Grunde, okay, egal welche
Animation abgespielt wird, denn das
sind sogenannte Zustandsknoten Und sie sagen, okay, solange ich in der
Player-Run-Animation bin, bin
ich in diesem Player-Run-Zustand und ich kann mich im
Player-Ruhezustand befinden. Ich kann mich im Player-Jump-Status befinden. Wir erstellen eine sehr
einfache Zustandsmaschine. Aber dieser beliebige Zustandsknoten ermöglicht es uns
im Grunde, zu sagen ,
okay, egal
in welchem Zustand ich mich befinde, von dort zu diesem übergehen. Und die Art und Weise, wie wir von dort
zu dieser
oder besser gesagt zwischen diesen
verschiedenen Animationen übergehen werden, ist die Verwendung von Übergängen. Wenn ich weitermache und
hier drüben lese, kann
ich den Übergang machen, okay? Übergang von dem zu dem. Und innerhalb dieses Übergangs
lege ich meine Logik fest. Nehmen wir an, ich möchte, solange ich nicht renne, ist
Laufen falsch. Ich möchte in den Leerlauf gehen. Solange ich keinen Hausarrest habe, möchte
ich vom Leerlauf zum Sprung übergehen Und solange ich Hausarrest habe, will ich vom Sprung zum Laufen
gehen Das könnte
gut aussehen, als hätten wir hier eine ziemlich einfache rudimentäre
Struktur Aber das ist tatsächlich sehr fehlerhaft, weil wir
zunächst einmal keine Möglichkeit haben, von Lauf zu Sprung zu gelangen Solange wir rennen
und springen, können
wir immer nur in den Leerlauf gehen Wenn wir rennen und nicht
aufhören zu rennen und springen, werden
wir uns nicht
bewegen, wir bleiben in meiner Laufanimation. Obendrein, wenn ich springe
und tatsächlich still bin, werde ich, wenn ich lande, immer noch zum
Laufen zurückkehren und dann werde ich in den Leerlauf
übergehen , weil ich
dieses Ding hier drüben habe. Aber es ist eine sehr
fehlerhafte Maschine weil ich nicht einmal
Staaten habe, die alles definieren Wenn ich das
wirklich abschließen will, müsste
ich dort einen Übergang machen,
einen
Übergang da drüben, genauso wie einen
Übergang da drüben Und dann wäre es
etwas vollständiger. Aber all das ist eine ziemlich
komplizierte Art, es zu tun. Und ich werde
das nicht benutzen. Ich möchte diese löschen. Stattdessen werde ich
diesen Any-State-Modus verwenden, was
diesen Prozess erheblich vereinfachen wird. Zuallererst werde ich von einem beliebigen Bundesstaat aus
gehen, ich werde sagen
, den Übergang genau wie beim letzten Mal durchführen, mit der
rechten Maustaste klicken und klicken. Machen Sie den Übergang in den Leerlauf. Und ich sage,
solange ich nicht renne, solange ich Hausarrest habe, möchte
ich untätig sein, denn
das bedeutet, dass ich hier
still auf dem Boden stehe hier
still auf dem Boden Ich will sagen,
solange ich Hausarrest habe, also ich nicht
in
der Luft bin und renne, dann will ich hier rüber
rennen Ich will sagen, dass
ich jedes Mal springen
will, wenn ich keinen Hausarrest Weil meine Sprunganimation
eigentlich eher einem
Sturz in der Animation ähnelt Du kannst hier sehen,
ob wir ins Spiel gehen
und auf Animation klicken,
du wählst den Spieler aus, wir
schauen uns unsere Sprunganimation an,
wir spielen sie ab und auf Animation klicken, du wählst den Spieler aus, wir
schauen uns unsere Sprunganimation an, , es ist eigentlich
wie eine Fallanimation. Es funktioniert natürlich beim
Springen oder Fallen, aber es wird
ziemlich gut aussehen, wenn wir es benutzen,
weil es jedes Mal abgespielt wird
, wenn wir springen oder auch wenn wir einfach von etwas
herunterfallen, was genau das ist, was wir wollen. Das ist eigentlich so
ziemlich alles, was wir für unsere Logikmaschine
tun müssen. Aber es gibt noch ein paar
Verbesserungen. Lassen Sie uns dies zunächst als Standard festlegen. Klicken Sie mit der
rechten Maustaste, um es als Standardstatus der
Ebene festzulegen Es macht nicht wirklich einen großen Unterschied
,
aber es fühlt sich einfach so an, als ob es sich bei
der Animation im Leerlauf eher um eine Standardanimation als um die laufende Animation handeln
sollte. Es wird automatisch ausgeführt, weil es das
erste ist, das wir erstellt haben. Aber es macht keinen wirklichen Unterschied, es ist
völlig in Ordnung. Zweitens
wollen wir
diesen
Rückgang der Übergangsdauer auf Null setzen . Weil ich finde
, dass
es mit Pixi Lad viel
besser aussieht, wenn es Null ist Manchmal kann man
mit ein bisschen nachbessern,
weil man vielleicht 0,1 0,2 haben
möchte. Ich
setze lieber auf Null, aber vielleicht
ändere ich das auch Ich werde sehen, vorerst werde
ich den Wert auf Null setzen und sicherstellen, dass alle meine
Bedingungen stimmen Solange ich nicht renne und Hausarrest habe ,
will ich untätig sein Solange ich
Hausarrest habe und laufe, werde
ich Jep. Und wenn ich keinen
Hausarrest habe, will ich Perfekt. Also das ist eigentlich so ziemlich alles, was
wir tun müssen. Wenn ich jetzt auf Abspielen klicke siehst
du, dass ich meinen Spieler habe und er bleibt in
der Sprunganimation weil ich keinen Hausarrest hatte Und er ist tatsächlich, wenn wir es uns
nur hier ansehen, wir haben gerade einen
Spieler und er springt Aber basierend auf dem, was
ich wähle,
sagen wir, ich habe Bodenhaftung gesetzt. Jetzt werde ich tatsächlich
untätig sein. Du kannst sehen, dass ich dort bleibe. Wenn ich Running auf True setze,
müsste ich in meinem Running-Status sein, was ich glaube. Sieht so aus, als ob das alles funktioniert. Hier sollte alles gut
funktionieren. Tatsächlich sieht es so aus, als ob unsere Übergänge
ziemlich gut sind. Aber wir wollen
natürlich nicht darauf klicken müssen,
je nachdem , was wir wollen, wenn wir das Spiel tatsächlich spielen. Wir wollen in der Lage sein zu sagen, okay, wenn ich diese
bestimmte Sache mache, stelle diese ein, mache etwas, wenn ich renne,
setze das auf Laufen, anstatt dass ich
komme und dort klicke. Und dafür werden wir Code
verwenden. Gehen wir hier
zu meinen Codeskripten. Und ich werde Player Move
öffnen. Wir werden genau dasselbe Skript verwenden, mit
dem wir angegeben haben, wenn ich
umziehe , um im Grunde zu zeigen ob ich bestimmte Animationen
abspielen werde Und ich werde zunächst einen Verweis auf
diesen Animator erstellen und ihn Anum nennen Obwohl ich mich auf den Animator
beziehe, beziehe
ich mich auf den Animator-Controller Da steht Interface zur Steuerung des Mec Aber ja, ich
beziehe mich im Grunde auf den Controller. Ich werde mich auf
diese Parameter beziehen, die
wir gerade definiert haben. Ich werde hier
rüber gehen, zurück zu meinem Drehbuch, und ich werde unter diesen
Kollisionsdinge schreiben, weil
wir uns dann im Grunde ändern,
das ist Bodenvariabel. Sie können sehen, dass ich
hier tatsächlich schon
eine Variable habe , die
mir sagt, ob sie
am Boden sind Ich muss tatsächlich
sicherstellen, dass es grundsätzlich mit meinem
Animator-Parameter
übereinstimmt Sie greifen also auf den
Animator-Parameter zu, wir verwenden Anambool, öffnen Klammern und Sie
sagen den Namen des wir verwenden Anambool,
öffnen Klammern und Sie
sagen den Namen des Bools, My b is grounded. Dann setze ich ihn auf meine fixierte Variable. Ich werde das eigentlich nur hier machen,
und hier drüben könnte ich
das in jedem Frame machen, wenn ich wollte Der Grund, warum ich das nur
hier mache , ist, dass
dies
die einzigen beiden Punkte
in meinem gesamten Drehbuch sind die einzigen beiden Punkte
in meinem gesamten Drehbuch an denen ich die
Bodenvariable geändert habe. Und es gibt keinen anderen Ort, an dem
es sich ändern könnte. Das ist also das einzige
Mal, dass ich meinen Animator
aktualisieren und sagen muss ,
okay, wenn ich
mit etwas kollidiert bin, ist es wahr Und dann stelle sicher, dass mein
Animator es auf wahr setzt. Wenn ich etwas hinterlasse, ist es falsch. Und stelle sicher, dass mein Animator weiß , dass ich auf Falsch setzen muss Und das ist eigentlich
nur die Grundlage für das, was wir für unser
fundiertes System benötigen Wenn wir
das Spiel jetzt spielen würden,
sollte es eigentlich
ziemlich gut funktionieren Immer wenn wir landen, haben wir
Grounded,
das wird auf true gesetzt und
dann wird die richtige Animation
abgespielt,
egal ob es sich um Leerlauf oder Sprung Aber wir
haben immer noch keine Möglichkeit meine
laufende Animation zu
kontrollieren Also werden wir hier eine
Codezeile hinzufügen. Und diesen Abschnitt,
um ganz einfach zu sein, wir einfach animieren. Setze Bool, genau wie beim letzten Mal. Wir wollen festlegen, dass der
Bulow läuft , wo wir bestimmen werden , ob
wir laufen oder nicht, diesen x-Float verwendet Denken Sie jetzt daran, dass X Float je nachdem, welche Tasten gedrückt
werden,
geändert wird je nachdem, welche Tasten gedrückt
werden,
geändert Solange sie A oder D oder die Vor-
oder Zurück-Pfeile
drücken , heißt
es im Grunde,
okay, setze x auf eine Zahl,
die es uns erlaubt zu sagen, solange x eine
Zahl ist, die wir ausführen. Aber solange x keine
Zahl ist, laufen wir nicht. Und wir müssen uns
keine Gedanken darüber machen, ob wir in der Luft laufen oder nicht. Denn wenn wir uns erinnern,
berücksichtigt unser Animationscontroller nicht wirklich, ob wir in der Luft
laufen oder nicht. Alles, was wir zum Laufen brauchen, ist die Tatsache, dass wir
Hausarrest haben und rennen Und solange
wir keinen Hausarrest haben, wird ,
auch wenn wir laufen es immer noch die richtige Animation abspielen Wir sollten uns Gedanken
darüber machen müssen, ob wir diese
Laufvariable einstellen , je nachdem
, ob wir uns bewegen oder nicht werden wir tun. Wir geben
„läuft“ ein, setzen es auf „x ist nicht
gleich Null“. Das heißt, wenn
x gleich Null ist, wird
das
falsch sein, weil das besagt, dass x nicht gleich Null ist. Solange x nicht Null ist, wird
das wahr sein. Es wird sagen, okay, mach dich auf den
Weg zu dieser Aussage. Diese Aussage gibt
tatsächlich
einen booleschen Wert vom Typ „Wahr“ oder „Falsch“ zurück einen booleschen Wert vom Typ „Wahr“ oder „Falsch“ Wenn x Null ist,
wird falsch zurückgegeben. Und wenn x nicht
Null ist, gibt es wahr zurück. Wir sagen okay,
solange x nicht Null ist. Mit anderen Worten, solange wir uns bewegen, läuft Set auf True. Wenn x Null ist, läuft Set
auf False. Das wird
eigentlich der gesamte Code sein, den wir brauchen, um unseren Animator perfekt
einzurichten Wenn wir zurück zu Unity
gehen, in unsere Szene gehen,
sicherstellen, dass wir einen Verweis
auf den Animator
haben , den wir
gerade hier erstellt haben, ziehen Sie ihn einfach hinein.
Wir drücken auf Play Wir sollten eigentlich sehen, dass
alle Animationen perfekt zum Leben erweckt werden. Wir können sehen, wie wir fallen, wir landen und wir haben unsere
laufende Animation. Oh, es sieht nicht
so aus, als ob es funktioniert. Es sieht so aus, als ob es
nur der erste Frame ist, was
ziemlich interessant ist. Wir haben also etwas, das wir klären
müssen,
aber im Moment
scheint es tatsächlich so, als ob alles
andere gut funktioniert. Wir sollten herausfinden müssen
, warum unsere laufende Animation nur das erste Bild
abspielt? Und das hier drüben
kann zu mir selbst übergehen. Ich habe vergessen zu erwähnen, das kann
einfach zum Selbstzustand werden. Sie müssen tatsächlich daran denken
, keinen beliebigen State-Controller zu
verwenden, wenn Sie diesen verwenden.
Das hab ich vergessen. Aber was
mit diesen beiden Animationen passieren wird, ist, dass
wir es nicht bemerkt haben,
weil diese Animationen nicht
wirklich Animationen sind. Es sind quasi
nur einzelne Frames, auf die wir ständig
umgestellt haben. Aber wir haben keinen Unterschied bemerkt , weil es
sich nur um einen Frame handelt Aber wir konnten sehen
,
dass der Spieler gerade erst zum Anfang der Animation Wenn wir das Häkchen
entfernen,
können wir das
im Grunde genommen nicht ständig aktualisieren Wir sagen, gehen Sie nur
einmal darauf zu und bewegen Sie sich nicht
weiter darauf Du kannst darin bleiben,
solange du nicht
zum anderen wechselst. Solange wir das abstellen, wird
es tatsächlich alles reparieren und es wird
dafür sorgen, dass es nicht
ständig aktualisiert seinen Übergang zu diesem Ding Es geht nur einmal über. Und wenn es dann versucht, an andere Orte
überzugehen, tut es das auch Aber es muss nicht weiter auf sich selbst
zugehen,
was gut ist Und wenn wir das Problem behoben
haben, sollte
das eigentlich
alles sein, was wir
tun müssen, um ein funktionierendes
Animationssystem zu haben. Jetzt können wir sehen, dass wir wie
gewohnt laufen, genau wie wir wollten. Offensichtlich
drehen wir uns noch nicht um, was das Letzte ist,
was ich hinzufügen werde, bevor wir dieses Video schließen. Aber wir rennen und springen,
genau wie wir wollten. Zuerst werde ich es nur ein bisschen
schneller
machen, weil ich denke, dass
man etwas langsam ist. Und hoffentlich sollte das alles
sein, was wir brauchen,
um unser Spiel ein
bisschen lebensechter aussehen Ja, wir können es jetzt sehen.
Ja, jetzt
sieht es ganz gut , wir haben
alles am Laufen und wir haben einen Sprung. Und alles sieht
tatsächlich viel besser aus als zuvor. Aber es gibt eine Sache, die
wir ändern müssen, und das ist die Tatsache, dass der Spieler immer
nach vorne schaut. Und das ist eigentlich
eine sehr einfache Änderung. Alles, was wir tun werden, ist
, hier rüber zu dieser festen
Aktualisierungsanweisung zu
gehen . Und wir werden sagen, wenn RB, Geschwindigkeit x kleiner als Null ist. Mit anderen Worten, wenn
wir uns rückwärts bewegen,
dann lassen Sie den Spieler seine Rotation
transformieren Wir werden
Quaternion Euler schreiben. Nur eine ausgefallene Art
, Winkel zu sagen. Mach dir darüber nicht zu viele Gedanken. Wir setzen
es auf unser X Null, unser Y auf 180 und unser X00 Wenn wir in unser Spiel gehen,
können wir tatsächlich sehen
, was das bewirken wird Öffne mein Plattformspiel
hier, gehe zum Player. Wir können sehen, dass wir
sie auf Null gesetzt haben. Wenn ich ein Y auf 180 setze, es
meinen Player um, was genau das ist, was ich will. Und solange ich den Wert auf Null
gesetzt habe, ist das nicht der Fall. Und das wird all unsere
Animationen einfach
so für uns
aktualisieren . Weil wir das Objekt selbst
drehen, was eigentlich sehr nützlich ist. Wir werden hier einfach eine weitere Codezeile
hinzufügen , die etwas anderes sagt,
wenn die R-Geschwindigkeit x
größer als Null ist, anderen
Worten, wenn
wir uns vorwärts bewegen, dann wollen wir
eine normale Rotation haben Das wird sich natürlich, wie
ich schon sagte,
um die gesamte Animation kümmern ,
eigentlich sollte
alles automatisch
erledigt werden Wenn ich auf Play drücke, können wir sehen dass
dieser neue Code es uns
ermöglicht, rückwärts zu schauen, was in unserem Spiel tatsächlich viel besser
aussehen wird.
Hoffentlich können Sie jetzt sehen, wie
alles zum Leben erweckt wird, und unser Spiel sieht viel
besser aus als zuvor Und wir haben all meine Animationen
und alles funktioniert ziemlich reibungslos.
Das ist ziemlich cool. Hoffentlich konntest du
mitmachen und hast ein ziemlich ähnlich
aussehendes Spiel und es sieht viel besser aus
als ursprünglich. Und du bekommst
ein Gefühl dafür, wie wir
den Rest dieses Spiels machen werden. Aber solange es vorerst so ist, alles so funktioniert
wie
bei mir, ist das großartig. Und ich hoffe, dass
du verfolgen konntest, was
wir gemacht haben, und dass du deinen
eigenen Spieler
genauso animieren konntest wie ich Im nächsten Video werden
wir Feinde und eine ganze Reihe
neuer interessanter Gegner hinzufügen Feinde und eine ganze Reihe
neuer interessanter Gegner Und wir werden noch
ein paar Reifen mit
diesen Feinden bauen , nur um unser
Spiel etwas abwechslungsreicher zu gestalten. Und von da an werden wir mit all den letzten
Dingen
anfangen , die du tun musst, was natürlich die
Treffererkennung ist, und Audio und Sound,
alles andere danach. Sowie ein paar letzte
Feinarbeiten , damit es besser aussieht. Und natürlich auch ein Game-Loop. Aber im Moment haben wir
die Bausteine unseres Spiels irgendwie fertiggestellt. Und wir haben Sprites hinzugefügt,
damit es viel besser aussieht. Das ist also alles
für dieses Video. Und im nächsten
Video werden
wir, wie gesagt, einige
weitere interessante Feinde hinzufügen. Aber im Moment ist das großartig, wenn bei
dir alles so
funktioniert wie bei mir. Und im nächsten Video werden wir mit einigen
neuen Entwicklungen beginnen . Danke.
9. 8. Füge weitere interessante Feinde hinzu: Hallo und willkommen
zurück bei Unity. In dieser Episode werden
wir unserem Spiel nun ein paar
weitere interessante
Gegner hinzufügen . Denn im Moment haben wir nur
Stacheln und stachelige Eier. Auch wenn diese bei allen Reifen, die wir haben, etwas
unterschiedlich sind , sind
sie nicht die
interessantesten Feindtypen und sie sind eigentlich
nur Hindernisse Wir werden
zwei neue Feindtypen hinzufügen, für die ich natürlich schon
Spikes gebaut habe Einer von ihnen wird ein patrouillierender Feind
sein, und der andere wird wie ein
zeitbegrenzter Feind sein Hin und wieder ist
es gefährlich, aber dann geht es aus und
dann ist es nicht Und zu Beginn
importieren wir
zuerst alle
Sprites, die der Ball benötigt Ich
klicke mit der rechten Maustaste auf Neue Säure importieren. Und das sind eigentlich all
die neuen Sprites, die
wir für unseren Feind brauchen Wir haben also vier Roboter-Sprites,
zwei Sprites für diesen
schockierenden Feind und dann ein zusätzliches Sprite Der Grund, warum wir diesen zusätzlichen
Spikeball-Sprite haben, ist, dass
wir unseren Spikeball tatsächlich ein bisschen
animieren werden animieren Und damit
werde ich eigentlich zuerst beginnen
und sicherstellen, dass
all diese Einstellungen natürlich auf die richtigen Einstellungen
eingestellt sind die richtigen Einstellungen
eingestellt Und mache das tatsächlich, indem du einfach jedes einzelne Sprite
auswählst Es wird sie überschreiben, aber es ist in Ordnung, solange
sie alle gleich sind Filtern Sie mit 12 Punkten und klicken
Sie auf Anwenden und alles, was wir
jetzt wissen, ist dasselbe Und so
kannst du auch überprüfen, ob du alle deine
Sprites gleich hast Solange diese
ausgefüllt sind, geht es dir gut. Wir werden Fertighäuser kaufen. Wir werden ein
paar neue Fertighäuser bauen. Ich werde dieses öffnen
und ich werde sie eigentlich einfach rüberkopieren, damit die Tags gleich
bleiben Dieser wird
unser Roboter sein, und dieser wird
wie eine Batterie sein. Bevor ich das mache, repariere ich zuerst meinen Spikeball mit Animate und dann mit
Fensteranimation, Animation All das zusätzliche Zeug, das
wir gemacht haben, in Bezug auf Phasen und Zustände und all das
Zeug, das ist Animation Und es ist ziemlich einfach, aber wir können noch
einfachere Animationen haben wenn wir nur eine Animation haben. Wenn wir eine kontinuierliche
Animation wollen , die die ganze Zeit
abgespielt wird, was ich
bei einem
Spikeball will, muss ich nur etwas erstellen, in meine Assets
gehen, Animation starten und es Spike Ball Spikeball will, muss ich nur etwas erstellen, in meine Assets
gehen, in meine Assets
gehen nennen Dann werde ich jede halbe
Sekunde zum zweiten Spikeball-Sprite wechseln
wollen, das ist das, was Kopiere das rüber und geh da hin. Sie können das hier in Aktion sehen. Das wird unsere
Spikeball-Animation sein. Dadurch sieht das Spiel nur
ein bisschen interessanter aus. Das ist eigentlich alles,
was wir tun müssen, denn wenn wir unsere Animation
öffnen,
können wir zur Animation übergehen. Wir können unseren Spike-Ball öffnen. Siehst du, ich habe einen Staat. Sicher. Aber ich
brauche keine Parameter oder Transit oder so, weil das der einzige Zustand ist, in dem ich jemals sein
möchte, wenn ich zurückgehe, solange ich
natürlich ein Spike Ball bin , was dieses Objekt auch ist Solange ich wieder
in mein Spiel zurückkehre und sehen
kann, in welcher Minute
ich einen Spikeball bekomme, sehe ich, dass die Animation
tatsächlich
perfekt läuft und das
Spiel dadurch viel schöner aussieht Ich muss sie vielleicht ein bisschen verschieben,
weil sie immer noch
ziemlich nah dran
sind weil sie immer noch
ziemlich nah Alles ist immer noch ziemlich groß, aber im Moment sieht es eigentlich
ziemlich gut aus. Und die Spuckbälle
animieren genau so, wie
wir sie brauchen. Das ist die Zeit der
Animation, die wir auch für den Rest
unserer Feinde haben werden Gehen wir zurück zu unserem Roboter und fangen wir an, indem wir
zunächst diesen Roboter
animieren Ich werde den
Circle Collider löschen und ihn Roboter-Sprite
ändern Dann ist genau das
Gleiche vorher. Es wird
einen Animator für mich machen, ich gehe zu
Assets-Animation Nennen wir es Roboteranimation. Dann habe ich, glaube ich, vier
verschiedene Roboter-Sprites. Und sie werden einfach dafür sorgen
, dass sich das Rad dreht. Und die Augen
verfärben sich leicht. Da sind wir. Wir können sehen, dass sich
das Rad hier in
Aktion offensichtlich drehen
wird. Und die Augen, und
wenn du es sehen kannst, ändern
sie leicht ihre
Farbe und gehen zurück. Das wird die
gesamte Animation sein, die wir für unseren Roboter benötigen. Jetzt haben wir unseren
Roboter in Ordnung gebracht. Machen wir genau
dasselbe mit unserem letzten
, der unsere Batterie
sein wird. Und dieser wird
etwas komplizierter sein. Lass uns zuerst gehen. Ich habe Schocker
in den Akten entdeckt, ich bin mir nicht sicher warum, aber das
wird der Anfang
für unsere Batterie sein Wir haben diese
Batterie hier drüben. Die Art und Weise, wie diese Animation
funktionieren
wird, wird
etwas anders sein. Ja, der Grund, warum ich es
zum Schluss sage, ist ziemlich spezifisch. Wir werden
immer noch nur eine Animation haben, aber es wird eine
Animation mit ein bisschen Logik sein, auf eine andere
Art als zuvor. Nennen wir es Battery Dot. Wir
wollen es im Grunde nicht animieren wollen. Sagen wir eine gute Weile, sagen
wir 3 Sekunden. Wir wollen nicht, dass in den ersten 3 Sekunden etwas
passiert, wir wollen einfach bei
diesem Sprite bleiben, wir sind gerade auf Schocker eins
eingestellt, wir
bleiben da drüben Dann sind die Minuten 3
Sekunden um vier. In den nächsten 2 Sekunden
wollen wir die
Schockanimation haben Ich habe
Sprites hier drüben. Achte nur darauf, dass
es 3 Sekunden sind. Für die nächsten 2 Sekunden
werden wir das tun, und dann werden wir zu unserem normalen Ding
zurückkehren. Wir müssen es nicht wirklich
hinterher legen , weil es das für uns erledigen
wird Aber für die nächste
halbe Sekunde hier drüben sind
Minute 3 Sekunden um, denen wir
diese kleinen Dinge verwenden können , um zur nächsten Sache zu
springen Einen Frame später wollen
wir
zu dieser neuen Animation von
hier wechseln , was schockierend ist, zwei. Und wir können sehen, ob wir dort
anfangen, die Animation zu ändern. Und das von 1 Sekunde
oder besser gesagt einem Frame nach 3 Sekunden
bis hin zu 20 Frames danach. Wir werden in das gehen
wollen, wir werden
es ändern wollen und dann mit 40 zu
diesem zurückkehren und es
dann wieder ändern. Wir können uns vorstellen, dass
das so aussehen wird. Ich denke, wir sollten
es noch einmal haben. Schalte hoch. Ich denke, das
ist der Rahmen, den wir wollen. Das ist falsch,
tut mir leid, ich habe
dasselbe zweimal kopiert . Lass es
mich da hinstellen. Dann werden wir
hier drüben die Animation beenden wollen. Also wird es
3 Sekunden lang still sein und dann
wird es aktiv sein, und dann wird
es wieder aufhören. Und dann, 3 Sekunden später
, wird es sich bewegen. Und das wird der
Kern unseres Geistes hier drüben sein. Und so wird
der Feind eigentlich auch arbeiten. Und wir müssen dieser Animation
ein bisschen Logik
hinzufügen , denn wir haben es
endlich geschafft, dass es gut funktioniert. Aber wir brauchen
etwas, das
dem Spiel mitteilt , wann es sich in diesem
Zustand befindet und wann nicht. Wir werden
hier das verwenden, was man Events nennt. wir also sicher, dass wir nach 3 Sekunden genau einen Frame haben. Fügen wir hier ein Ereignis hinzu. Und auch gleich am Ende
unserer Animation hier drüben. Oder besser gesagt,
ich werde
es an den Anfang des neuen Films stellen ,
nur damit wir es gleich zu Beginn
unseres Frames
hier drüben haben, um
noch ein Event hier drüben zu haben. Und ich werde
erklären, wie diese funktionieren, aber im Grunde
gibt es Möglichkeiten, auf
den Code zuzugreifen, der an
diese Batterie angehängt ist, um
zu sagen ,
okay, ja, das muss jetzt aktiv sein und müssen Sie an dieser Stelle
tun. Ich werde damit beginnen
, meine Collider hinzuzufügen. Erklären Sie jetzt, wie wir diese Batterie zum Laufen bringen werden, aber es wird eigentlich ganz
einfach sein Lassen Sie uns damit beginnen,
den Collider hinzuzufügen. Lassen Sie uns tatsächlich
einen Box Collider hinzufügen. Das sind all die
Teile, die wir in dem Moment sein
wollen , in dem das
schockierende Ding aktiv ist Du willst nichts davon anfassen können
,
diesen ganzen Teil hier drüben, genauso wie das hier drüben, was die
eigentliche Batterie selbst sein wird Perfekt. Ich werde nur
sichergehen, dass ich diese beiden Auslöser
gesetzt habe. Wenn das ein eigenständiger
Feind wie dieser wäre, wäre
es natürlich völlig
unmöglich auszuweichen, denn es gibt keine Möglichkeit, irgendetwas von diesem Ding
anzufassen. Aber genau hier
werden sich die Ereignisse als nützlich erweisen. Wir werden diese Boxgleiter nur für diesen Zeitraum
aktiv
haben , weil
sie beide Auslöser sind, also
werden wir es natürlich trotzdem durchgehen Aber für diesen Zeitraum werden
sie aktiv
sein und wenn
dieser Zeitraum vorbei ist, werden
sie nicht wieder aktiv sein Lassen Sie uns das eigentlich schnell
programmieren. Lassen Sie uns ein neues Skript erstellen. Wir nennen es Battery Script.
Wir werden es einladen. Und wir werden auch
ein Drehbuch für einen anderen
Feind,
den Roboter, erstellen ein Drehbuch für einen anderen
Feind,
den Roboter, müssen, worauf ich gleich
zurückkomme. Aber lassen Sie uns zuerst
dieses Batterie-Skript erstellen. Und wir werden
tatsächlich zwei einfache Lücken haben. Wir werden eine öffentliche Lücke haben, sagen wir die Batterie aus Ich werde eine weitere
darunter erstellen und
sie Batterie einschalten. Wir werden einen Verweis
auf unsere beiden Kastengleiter erstellen. Öffentliche Box, Folie zwei D, wir werden Box
eins haben und sie Box zwei nennen Alles, was diese Jungs sagen werden
, ist, wenn die Batterie aktiviert ist, ist Box eins aktiviert gleich falsch, Feld zwei ist falsch,
dann werden wir genau
das Gleiche tun, wenn die
Batterie eingeschaltet dann werden wir genau
das Gleiche tun, wenn die ist, nur dass sie auf „Wahr“
gesetzt Was sagen wird, ist, dass in
dem Moment, in dem ich das hier Leere nenne
, die
Batterie eingeschaltet ist , diese beiden
Kastengleiter aktiviert Aber sobald ich diese Leere
hier drüben
nenne , schalten sie sie Wir werden tatsächlich auch
damit beginnen, dass sie deaktiviert sind. Das bedeutet, dass in dem Moment, in dem dieses Objekt
erscheint, nichts mehr aktiv Aber in dem Moment, in dem die schockierende
Animation abgespielt wird, wollen
wir, dass sie aktiv ist
und dass sie aktiv Und weil es ein Feindsymbol ist, werden wir logischerweise
einprogrammieren,
okay, du musst Schaden nehmen Aber wenn das vorbei ist,
wollen wir, dass das wieder aus ist. Wir gehen zurück zu
unserer Animation hier drüben. Wir gehen zurück zu
unserer Veranstaltung hier drüben. Und wir können hier einfach eine Funktion
auswählen, die aufgerufen werden soll, aber es muss eine Funktion
eines angehängten Skripts sein. Also werden wir unser Batterieskript
in die Länge ziehen. Gehen wir nach
unten und legen es dort drüben ab. Und wir können hier sehen, dass wir
unser Batterie-Skript genau dort haben . Wir haben hier das Batterie-Skript, das dort aufgeschrieben ist, und wir haben unser eigentliches Drehbuch. Ich habe festgestellt, dass manchmal, wenn
Sie Dinge
mit Namen wie
Batterieskript oder
so etwas wie Script hinzufügen , ein Fehler angezeigt wird, der besagt, oh, wir können das Skript nicht finden. Stellen Sie sicher, dass die Klasse existiert. Und das könnte
daran liegen, dass Sie
Ihrem Skript oder Ihrem reservierten Wort einen Namen gegeben haben . Ich möchte zum Beispiel
versuchen, meine einzige Skriptkamera anzurufen. Und ich habe immer wieder einen Fehler bekommen und
ich weiß nicht, was es ist. Das liegt daran, dass Sie das Wort Kamera nicht
wirklich verwenden können. Die Art und Weise, wie Sie das lösen,
besteht darin dieses Wort hier
und dieses Wort hier zu
ändern. Und so
benennst du dein Skript um. Wenn ich mir darüber Sorgen machen würde, weil ich in der Vergangenheit
einige Fehler hatte, dachte
ich, ich hätte es gerade erwähnt. Ich nenne es Batterie. Dann wird es mir hier eine Fehlermeldung
geben weil es jetzt nicht
wirklich weiß, was Batterie ist oder
nicht, aber es sollte. Dann gehe ich auch
hier rüber zu Batterie und ich werde es in Batterie
umbenennen. Und stellen Sie sicher, dass Sie beide
umbenennen. Stellen Sie sicher, dass Sie den
Namen der Datei und
den tatsächlichen Namen der
Klasse in der Datei umbenennen . Und dann solltest du das Problem gelöst
haben. Wenn Sie
während der gesamten Zeit, in der wir entwickeln, auf Probleme stoßen , beheben Sie diese auf diese Weise. Aber wie dem auch sei, das sollte alles
sein, was wir brauchen. Und lassen Sie uns genau dort unsere
Kastengleiter hinzufügen. Gehen wir zurück zu unserer Animation, die wir hier geöffnet haben. Gehen wir zu unserer
Veranstaltung und wählen Batteriemethoden für
diese Veranstaltung. Und dann wählen wir für den Anfang den Akku
aus. Nur hier
wählen wir Batterie ein, Batterie dort an und
Batterie aus dort drüben. Das sollte eigentlich einwandfrei
funktionieren. Wir haben jetzt hier ein Prefab
mit unserem Skript erstellt. Solange diese
Animation abgespielt wird, sobald sie
diesen Punkt hier erreicht, wird
sie diese Leere nennen und diese Collider aktivieren Und du wirst
es hier nicht sehen, aber du wirst es
sehen, wenn wir das Spiel tatsächlich
spielen Dann kannst du sehen, dass es
eigentlich
einwandfrei funktionieren sollte , was wirklich, wirklich cool
ist. Gehen wir wieder raus und
gehen wir zurück zu unseren Fertighäusern. Wir haben hier noch ein
weiteres Fertighaus, das sind Roboter-Fertigteile, die
wir noch nicht fertiggestellt haben Fügen wir einen Box Collider zwei D hinzu. Lassen Sie uns die Größe hier
ein wenig Denken Sie daran, dass
er hier
nicht wirklich fallen kann usw. Es wird
dort sein, wo sich die Hitbox befindet. Machen wir es ein
bisschen kleiner als. Üblich, so wie wir
die ganze Zeit haben, aber nicht zu klein, weil wir wollen, dass
es zuschlagen kann, besonders bei diesen
kleinen roten Dingern. Lassen Sie uns das tatsächlich ein bisschen nach
draußen und nach unten verschieben. Das sollte vorerst gut sein. Stellen wir sicher, dass wir es auf Trigger
einstellen. Stellen Sie nur sicher, dass alle
anderen auch auf Auslöser gesetzt
sind nur für den Fall, dass wir
etwas vergessen haben, was sie tatsächlich sind, was cool ist, wir haben unsere Animatoren auf diesen beiden und wir haben gerade unseren
Animator hier drüben Wir haben unsere drei
animierten Gegner und unseren
Spike, den
einzigen, den wir
nicht animiert haben Das ist eigentlich so ziemlich
alles, was wir tun müssen, außer etwas Logik
für unseren patrouillierenden Roboter hinzuzufügen,
denn das ist ein
patrouillierender denn das ist ein
patrouillierender Bevor wir das tun, lassen Sie uns
schnell ein paar weitere Reifen bauen , um
vor diesen neuen Feinden zu Ich werde nicht
zu viele machen, aber du kannst natürlich noch
ein paar mehr hinzufügen. Und nur der Zeit halber werde
ich
zwischen diesem und dem nächsten Video noch etwas mehr hinzufügen . Aber richtig. Ich werde nur drei
machen, nur um diese neuen Feinde zu präsentieren. Und sie werden
sehr langweilig sein. Sie werden alle
entweder nur einen Roboter haben
oder einen Roboter und das Schockierende. Also diese hier drüben, ich werde
eigentlich nur eine einzige
dieser Batterien
verwenden Stell es da drüben hin. Jetzt ist
mein Batteriefeind offensichtlich
ziemlich schwer zu erkennen. Wenn ich es so ausdrücken würde, dass ich so
etwas
normalerweise gerne hätte, dann wirst du
den Draht nicht wirklich
sehen können , was es ziemlich schwierig
macht. Also werde ich das in
den Vordergrund stellen, ich werde sagen, Reihenfolge in
Schicht bis sechs oder besser gesagt sieben. Und ich werde es so
machen, dass
es vor allem
anderen in der Cloud steht. Sieht ein bisschen komisch aus, aber wir können das nach und nach anpassen Macht es nur so, dass es ein
bisschen einfacher zu sehen ist. Lass es uns nach oben verschieben. Ich denke
, das sollte in Ordnung sein. Natürlich
können wir es, wie ich schon sagte, im Laufe der Zeit anpassen, aber im Moment sollte das als
Feind im Spiel
ziemlich gut Ich glaube, das ist unsere
Bodenfliese 11. Stellen wir sicher, dass wir zu Bodenfliese 12
gehen. Und lassen Sie uns einfach einen einzigen
Roboter da drüben hinzufügen. Hätte ein bisschen nach unten
gehen sollen weil wir ohne das natürlich
sehen können, wir sicherstellen, dass
er immer
auf dem Boden reitet . Ja,
das sollte gut sein. Dann
werden wir zu guter Letzt
sagen wir, einen Roboter und einen Spike haben sagen wir, einen Roboter und einen Spike Nur um zu zeigen, dass Sie natürlich mehrere pro Ding
verwenden können. Das sollte alles sein, was
wir tun müssen. Das Letzte, was wir tun
müssen, ist, einfach unsere Logik
einzuprogrammieren , damit der Roboter hin und
her patrouilliert Wir werden hier
eine ziemlich einfache Sache verwenden. Wir werden
hier nur eine Variable
haben , die die Grenzen festlegt. Patrouille zwei dort und
Patrouille zwei dort. Und dann
werden wir einen Code
haben, der sagt, okay, solange ich mich bewege,
solange ich schlank bin, solange ich in diese Richtung schlank bin, solange weniger als das, bewege ich mich in
diese Richtung. Und ich werde dir genau zeigen,
wie man den Code schreibt. Aber bevor wir
das tun,
müssen wir tatsächlich einen starren Körper hinzufügen, unseren Roboter, damit er sich bewegen kann. Aber wir wollen
sichergehen, dass wir ihm einen kinematischen, starren Körper ,
damit er nicht
durch die Wolke fällt Weil er keinen echten Collider
an sich hat, bewegt
er sich einfach
gemäß dem Code weiter Dann gehen wir zu Skripten
und lassen Sie uns schnell unser sehr
einfaches Roboter-Skript
schreiben Nennen wir es Robot Move. Machen wir weiter und
doppelklicken wir darauf, um es zu öffnen. Dann müssen
wir nur noch,
wie ich schon sagte ,
festlegen wie
schnell er fährt. Dann werden wir zwei Floats
haben. Wir nennen es min x und max x, das sind im Grunde die beiden Positionen denen aus er gehen kann Dann
haben wir einfach unseren Fehler behoben aktualisieren ihn hier drüben. Wir werden
in unserem starren Körper programmieren. Wir werden an die
Öffentlichkeit gehen, Richard, Körper zwei, D, nennen es R B. Dann sagen wir RB, Geschwindigkeit ist gleich Vektor
drei, Vektor zwei Wir werden unsere Geschwindigkeit
hier
auf einige X-Werte setzen wollen hier
auf einige X-Werte Lassen Sie uns eine weitere
Variable erstellen, nennen wir sie X. Dann wollen wir, dass unsere RV Y-Geschwindigkeit zwei B Null ist, weil wir uns nicht mit einem Roboter auf
und ab bewegen werden. Dann
ist das Letzte, was
wir tun müssen, hier drüben in
diesem Update-Frame. Wir müssen sagen, ob die
Transformationsposition x kleiner als unser
minimaler X-Wert ist. Mit anderen Worten, wenn wir unseren minimalen X-Wert
überschritten haben, müssen wir zwei Dinge tun. Zuallererst
müssen wir sicherstellen, dass wir in die richtige
Richtung schauen, und wir werden den Roboter drehen, genau wie
wir es getan haben,
die
Trans-Stop-Rotation des Spielers ist quaternion.u0 0.0 Als zweites werden wir
unser X auf unseren positiven Wert
für Geschwindigkeit setzen unser X auf unseren Andernfalls schreiben wir einen L s-Kurs
und sagen ob die Transformationspunktposition x größer als unser Maximum x ist. Mit anderen
Worten, wenn wir nicht
kleiner als unser minimales x sind, aber wir nicht größer als unser
maximales x sind, weil wir
auch nicht zu groß sein
wollen. Zu weit, oder? Mit anderen Worten,
wir werden genau
dieses Ding
hierher kopieren und
diesen Wert dort auf 180 und
dann auf negative Geschwindigkeit ändern . Dieser Code wird
sagen, dass jedem einzelnen Frame-Check ich bei
jedem einzelnen Frame-Check diese
Mindestgrenze nicht unterschreite. Wenn ja, dann dreh mich um. Wenn ich
diese Höchstgrenze überschreite, mit anderen
Worten, wenn
ich die
Mindestgrenze
nicht überschreite, ist das großartig. Aber das bedeutet, dass ich
die Mindestgrenzen überschritten habe. Ich könnte mich nach
rechts bewegen. Wenn ich größer als die
bestimmte andere Grenze bin, dann dreh mich in die andere Richtung. Das sollte eigentlich der
gesamte Code sein, den wir brauchen , um unsere Roboterlogik zu schreiben. Lass uns zum Roboter gehen. Lass uns das Skript
hier drüben hinzufügen
. Roboter bewegen sich. Stellen wir sicher, dass wir
den starren Körper dort drüben zuordnen. Ich möchte eine
Startgeschwindigkeit von etwa fünf wählen, dann diese Mindestgeschwindigkeit von X, Y, ich werde
tatsächlich
auf der Grundlage der Kachel für diese erste Kachel wählen . Ich glaube, ich möchte, dass mein
Minimum x -2,9 ist. Gehen wir hier hin. Es liegt bei mindestens x -2,9 Ich gehe davon aus, dass mein Maximum x ziemlich nahe bei 2,9 liegen wird Ja, ich werde 2,8
machen. Tatsächlich ist
hier mein Maximum x 2,8.
Sie können hier sehen, dass das fett gedruckt ist, weil das Werte
sind, die ich für
dieses spezielle Beispiel der Vorlage
bearbeite dieses spezielle Beispiel der , die
spezifische Instanz Aber das ist eigentlich in Ordnung,
das ist eigentlich das, was du willst. Diese x-Variable
wird offensichtlich von den Geschwindigkeiten abhängen. Wir werden sehen, wie sich das im Laufe der Zeit ändert. Aber das Letzte, was ich tun kann, um diese Roboter in Aktion zu
sehen, dass
ich dieses Map Tower-Skript schnell
ändern werde . Ich werde dafür sorgen, dass es
nur zwei Elemente enthält, damit ich sie testen kann. Ich werde zuerst meinen
mit dem Roboter hier drüben einbauen . Schlepptau, ich werde tatsächlich beide Rob und jetzt
einsetzen, weil ich
nur so getestet habe.
Nur um sicherzugehen, dass es funktioniert, drücke
ich auf Play. Mal sehen, ob ich auf Fehler stoße. Es könnte etwas passieren
, wo sie sind.
Ich dachte, das könnte passieren. Die Straßen fliegen
derzeit also tatsächlich aus den Wolken, und das
liegt daran, dass wir uns
hier
auf eine bestimmte Position bezogen haben, als wir den Code geschrieben haben. Und wir legen es in dieses Prefab, wir sehen, dass wir hier diese Werte
haben, die sagen, okay, solange du nicht weniger
als das und weniger als das bist,
aber was wir vergessen
ist, dass es sich tatsächlich um
ein untergeordnetes Objekt dieses
größeren übergeordneten Objekts handelt ein untergeordnetes Objekt dieses
größeren übergeordneten Objekts Das ist also die Wahl
eines Punktes im Raum, keine Punktreferenz
auf diese Um das zu beheben, müssen wir nur das ändern,
um lokale Position zu
transformieren.
Ändern Sie dies, um die
lokale Position do x zu transformieren. Dann habe ich tatsächlich gemerkt, dass
ich diese vertauscht habe Das sollte also 180 sein, das sollte Null sein, weil wir uns hier vorwärts
bewegen, und hier bewegen
wir uns rückwärts Dann ist das Letzte, was wir tun
wollen, wir wollen hier
rüber gehen und wir wollen
eigentlich unsere
Startlöcher wieder hinzufügen unsere
Startlöcher wieder hinzufügen Wir wollen damit beginnen,
x gleich Geschwindigkeit zu setzen, weil diese x-Variable angibt,
ob wir uns bewegen und sie wird nur zugewiesen wenn wir eine
der Grenzen überschreiten Wir wollen es auch
am Anfang setzen. All diese Änderungen, die wir
gerade vorgenommen haben, haben Sinn gemacht. Machen Sie sich nicht zu viele Gedanken über
die lokalen Positionen. Aber im Grunde hat es nicht
funktioniert, weil wir uns auf globale
Positionen
bezogen , obwohl wir eigentlich
lokale Positionen wollten. Und wir haben gerade diesen Tweak hinzugefügt. Also bewegen wir uns zunächst auch
und haben dafür gesorgt, dass wir in die richtige Richtung
abbiegen, denn das war tatsächlich
ein Problem, das wir hatten Ähm, also lass uns
weitermachen und zurück zu unserem Spiel gehen
und schauen, ob das jetzt funktioniert. Hoffentlich sollte alles gut sein. Du kannst hier drüben sehen, dass
wir einen Roboter haben. Annie geht dem Ende entgegen. Annie
dreht sich tatsächlich um, was perfekt ist. Wenn ich aufholen kann, weiß ich nicht, ob ich
es schaffen
werde . Also lass uns
einfach nochmal von vorne anfangen. Wir sollten jetzt unser
Spiel mit unseren Animationen sehen können und alles kann mitlaufen und wir können auf diese Roboter stoßen
, und natürlich
müssen wir versuchen, ihnen auszuweichen. Aber das ist irgendwie cool. Es ist ein großartiger neuer Feind
in unseren Spielen. Und sie
patrouillieren quasi nebenan. Offensichtlich
werden sie nicht so aussehen, weil sie jetzt alle
irgendwie synchron sind, was es viel schwieriger macht Aber wenn wir
verschiedene Kacheln und Dinge hinzufügen und verschiedene Positionen festlegen, wird
das alles gut sein. Lass uns weitermachen und dieses neue
öffnen. Und es wird
tatsächlich etwas anders sein. Ich möchte, dass
dieser hier aufhört, was -1,17 ist. Ich
werde das
maximale Y auf 2,72 0,8 setzen Davon abgesehen
sollte das alles gut sein. Das Letzte, was wir testen müssen, ist diese Batteriekachel hier drüben. Gehen wir also zurück zu
unserem Spiel und stellen wir sicher, dass wir die Batterie-Kachel
11 A hinzufügen
und schauen, ob sie einwandfrei
funktioniert. Wir werden testen, ob wir
das Spiel einfach pausieren und uns
die Tags ansehen , um sicherzustellen, dass alles wie nötig funktioniert. Aktuell
müssen wir also einen Roboter starten und danach einen Roboter. Hoffentlich haben wir
bald eine Batterie. Es sieht so aus, als hätten wir eine Batterie, also sieht die Stoßdämpfermechanik
derzeit so aus, als ob sie funktioniert Aber wir müssen einen gründlicheren Test durchführen. Wir werden
es jetzt unterbrechen, weil die Collider
jetzt aktiv sein
sollten Wir werden
hier rüber zu diesem Bodenreifen fahren. Wir gehen zur
Batterie. Und lass uns nachsehen. Okay, beide Collider sind aktiv. Genau das wollen wir, denn jetzt ist es die Sache mit dem
Feind Lass es uns pausieren und warten,
bis es aufgehört hat. Und wir können sehen, dass beide deaktiviert
sind. Das ist also eigentlich
alles, was wir jetzt
für unsere neuen Feinde
benötigen Wie ich schon sagte, natürlich kann
man eine ganze Reihe neuer Reifen herstellen. Ich habe gerade ein paar gemacht, aber
ich werde für
das nächste Video noch ein paar mehr machen , damit wir
ein etwas abwechslungsreicheres Spiel haben . Du kannst so
viele machen, wie du willst, vor allem mit diesen neuen
Feinden, die wir hinzugefügt haben, jetzt sollte es eine ganze Menge
zusätzlicher Dinge geben, die du machen kannst. Und wir könnten
bei diesen neuen
Feinden auf ein oder zwei Bugs stoßen Feinden auf ein oder zwei Bugs , wenn wir uns nähern. Da es sich um brandneue
Ergänzungen zu unseren Spielen handelt, werden
wir sehen, wie wir sie anpassen
müssen. Aber hoffentlich ist es momentan in einem ziemlich
stabilen Zustand. Ich habe nichts gefunden
, wodurch es nicht funktioniert. Und so ist
im Moment hoffentlich
alles gut und dein Spiel läuft
genauso gut wie minus. In den späteren Videos werden wir mit dem
Hinzufügen von Treffererkennung
sowie einem echten Gesundheitssystem beginnen Hinzufügen von Treffererkennung
sowie . Wir haben also ein Spiel, bei dem man tatsächlich verlieren und neu starten
kann. Und dann müssen
wir einfach all
die zusätzlichen Dinge hinzufügen ,
wie die Nachbearbeitung und das Reparieren des Himmels und all diese Dinge,
damit das Spiel
ein bisschen besser aussieht als jetzt. Aber hoffentlich hast du die Grundlage für eine
ziemlich coole Plattform, ein in Unity geschriebenes Spiel. Bisher haben wir derzeit
12 oder 13 verschiedene Kacheln. Und ich werde jetzt
noch ein paar hinzufügen, wie ich schon sagte, und das sollte
es dir ermöglichen, wieder
eine ziemlich abwechslungsreiche und
coole Plattform zu erstellen . Es
war also ziemlich schwierig, dieses Video gut zu überstehen, vor allem
einige neue Konzepte. Und wir haben einen
patrouillierenden Feind und einen Feind, der nur zu bestimmten Zeiten
aktiv ist Aber hoffentlich
konntest du mir folgen. Und wir sehen uns im nächsten Video, in dem
wir mit dem Hinzufügen von
Hit Detection
beginnen werden. Danke.
10. 9. Einführung in die Treffererkennung: Hallo und willkommen
zurück bei Unity. In der letzten Episode
haben wir nun eine ganze
Reihe neuer Gegner hinzugefügt und einige Gegner animiert
, einige Gegner animiert wir dem Spiel bereits
hinzugefügt hatten Und dann
haben wir im Grunde eine ganze Reihe neuer Kacheln erstellt, um diese zu
testen und sicherzustellen, dass sie
alle perfekt funktionieren Ich habe dir gesagt, wenn du mehr Kacheln hinzufügen
möchtest, kannst du das tun. Und wie gesagt, ich habe zwischen dem
letzten Video und diesem noch
ein paar Kacheln gemacht . Ich habe jetzt die volle Kachel, 13 A, und habe sie dann noch nicht
benannt, aber 141-516-1718 19,20 Also das erste, was wir tun müssen, ist
unseren Spawnstreifen so
zu reparieren, dass er wieder aus allem spawnt Denn das Letzte,
was wir geändert haben, war, dass wir nur
die neuen getestet haben, aber jetzt wollen wir wieder alle Und wie ich schon sagte,
ich habe jetzt 20. Lassen Sie uns also schnell all
diese zu dieser Liste hinzufügen. Sobald wir alles
zu dieser Kartenkachel-Liste hinzugefügt haben, sollten
wir in der Lage sein, auf Play
zu klicken und
unser gesamtes Spiel mit all
den neuen hinzugefügten Kacheln zu sehen . Ich habe ein paar gebaut, zum Beispiel
einen mit zwei Robotern, einen mit zwei dieser
Batterie-Dinge. Da
müsstest du natürlich springen. Das wäre sehr schwer. Möglicherweise müssen wir die Länge
dieser Animation
anpassen , da
sie ziemlich regelmäßig ist Oder ich muss vielleicht
den eigentlichen Block selbst ändern. Aber momentan
sieht das bisher ziemlich gut aus. Meiner Meinung nach haben wir auch
diese 12 Roboter. Ja, es ist offensichtlich
ziemlich schwer, ihnen auszuweichen, aber das wird
die Grundlage
für die Blöcke sein , die
wir in meinem Spiel haben werden. Was ich jetzt tatsächlich
hinzufügen muss , ist ein Treffererkennungssystem. Denn derzeit
ist das alles schön und gut. Aber du kannst nicht sterben. Du
kannst nicht einmal das Spiel verlieren. Tatsächlich können Sie nicht verlieren, selbst wenn Sie von
der gesamten Karte springen . In
diesem Video werde ich damit beginnen , die
Treffererkennung zum Laufen zu bringen. Und dann das nächste
Video, wir werden mit einem
Gesundheitssystem beginnen und wir werden ein Gesundheitssystem
und die Fähigkeit schaffen , tatsächlich zu sterben. Aber in dieser Episode
werden wir nur Treffer erkennen, was eigentlich ganz einfach ist. Also müssen wir nur ein neues Drehbuch erstellen. Ich nenne
es Player Health. Lass es uns öffnen. fügen
wir hier nur
eine Lücke hinzu ,
damit wir wissen, wann
wir Schaden erleiden. Wir werden später mit
all den anderen
Gesundheitskram anfangen . Im Moment brauchen wir nur eine
öffentliche Lücke, nehmen Sie Schaden. Wir werden einen
sogenannten Parameter verwenden, der wie ein Wert ist
, den man in eine Leere übergeben
kann. Wie ich schon sagte, eine
Leere ist eine Methode, es ist ein Codeblock
, den Sie aufrufen können. Dieser Parameter ist ein Wert, den
Sie in diesen Block eingeben können. Wenn du es nennst, sage
ich in Schaden. Dann kann ich jedes Mal, wenn
ich
diesen Codeblock aufrufe, wählen, wie viel
Schaden ich anrichten möchte. Mit anderen Worten, ich
kann wählen, wie dieser Wert aussehen soll. Ich werde das
loswerden. Ich werde einfach Print Player schreiben. Dann werde ich
meinem variablen
Schaden ein Ende setzen . Füge dort ein Leerzeichen und ich werde sicherstellen, dass
hier zwei Zeichenketten stehen, also ist es der richtige
Variablentyp. Nun, hier werden
ein paar Dinge verwendet , die wir noch nicht
behandelt haben. Wie ich schon sagte, Parameter
und zwei String-Methoden, aber das ist nicht so wichtig. Im Grunde ist
eine Methode, wie ich schon sagte, etwas, das man zu einem
bestimmten Zeitpunkt aufrufen kann und der Code darin wird
all diese ganzen Zahlen hier
ausführen , was bedeutet, dass ich, wenn
ich sie aufrufe , auch einen Wert wählen kann. Also kann ich jetzt
verschiedene Dinge wählen, kann unterschiedlich
viel Schaden anrichten. Zum Beispiel
kann ein Roboter vielleicht zwei Schaden anrichten, aber ein Spike verursacht nur einen Wenn ich das anrufe, sage
ich nur, dass
ich es auf dem Bildschirm ausdrucke Ich sage, dieser Spieler hat genommen und dann gebe
ich den Schaden an, den
ich erlitten habe. Also habe ich Schaden geschrieben. Und weil es eine Ganzzahl ist, muss
ich sie in eine Zeichenfolge ändern. Wenn ich es
in einer gedruckten Erklärung verwenden möchte, dann sage ich Schaden. Jetzt muss ich eigentlich nur noch eine neue Lücke schaffen. Ich nenne es Leere bei Trigger zwei D und es ist
dem auf Kollisions-Leere,
das
wir zuvor benutzt haben, sehr ähnlich , außer
dass es nur vier Collider sind
, die
ausgelöst wurden, und das sind
all die, die wir gegen unsere Feinde
eingesetzt haben Wir werden sagen, ob das Objekt im
Kollisionsspiel ein Punktvergleichs-Tag ist, genau wie wir es zuvor getan haben Wenn es sich diesmal um
einen Gegner vom Typ Tag
handelt, wollen wir
jetzt herausfinden , wie viel
Schaden wir anrichten müssen. Um das zu tun,
müssen wir ein anderes Skript schreiben. Gehen wir hierher und
lassen Sie uns ein neues Skript erstellen, nennen wir es Enemy Info. Innerhalb des Skripts werden
wir eine Reihe von Variablen erstellen. Das ist wie eine
Statistikspalte für den Feind. Also werden wir
ein öffentliches T erstellen, dann werden wir es Spielerschäden
nennen. Wir werden das Drehbuch
jedem einzelnen unserer Feinde hinzufügen . Und jedes Mal, wenn wir mit einem Feind
kollidieren, schauen
wir uns
das Drehbuch mit dem jeweiligen Feind an , mit dem
Sie kollidiert Und von dort werden
wir
unsere Schadensvariable bekommen unsere Schadensvariable Das mag
etwas verwirrend erscheinen, aber haben Sie Geduld mit mir. Wenn wir mit
etwas kollidiert sind, das ein Feind ist, sagen
wir: Kollisionspunkt,
Spielobjekt, Punkt, Komponente Mit anderen Worten, fügen Sie dem, womit wir
gerade kollidiert sind, eine Komponente womit wir
gerade kollidiert sind, Collision ist der Collider, mit dem
wir gerade kollidiert sind. Wenn das Spielobjekt, an
das es angehängt ist, also unser
Feind, ein Feind ist, dann geh und füge diesem Feind ein weiteres Skript
hinzu, das als Feindinfo bezeichnet wird Danach
Klammern. und dann geht es um Spielerschaden Wir können jetzt explizit auf die
Variable zugreifen. Das heißt im Grunde, diese Aussage
eigentlich gar nichts bewirkt, aber sie besagt, dass wir
Spielerschaden durch das bekommen , womit
wir kollidiert sind Jetzt müssen
wir das nur noch als unseren
Parameter Damage angeben Also schreiben wir, um
Schaden zu nehmen und Block zu öffnen und wir werden
diesen Code hier reinschreiben. Wie ich schon sagte,
obwohl dies
technisch gesehen nur zwei Codezeilen sind, mag
es
etwas verwirrend erscheinen, aber so schlimm ist es eigentlich nicht. Wir haben nur
diesen Code hier oben definiert , der
besagt, okay, wenn ich das nenne, habe ich will
spielen so viel Schaden genommen. Natürlich werden wir das später
konkretisieren. Aber im Moment
heißt es nur, okay, ein
Spieler hat Schaden erlitten,
aber wie viel Schaden
wir erleiden, hängt von dieser Leere hier
drüben beim Auslösen zwei D sagen, jedes Mal, wenn
wir einen Trigger-Collider
betreten,
wenn dieser Collider an einem Feind
befestigt ist,
dann nennen wir das Take Damage Mit anderen Worten, führe diesen Code aus
und setze den Schaden, den ich
nehmen möchte , auf den Schaden
, der in dieser Spalte mit den
Feindinformationen gespeichert ist, die wir
zuweisen, wenn wir jedem
einzelnen unserer Feinde
hinzufügen. Gehen wir wieder raus.
Geht in unsere Fertighäuser Hier drüben sind all
meine Feinde aufbewahrt. Und ich werde zu jedem einzelnen von
ihnen
Feindinformationen hinzufügen . Informationen zum richtigen Feind. Lassen wir
die Batterie abnehmen, um sie zu beschädigen. Ich denke, der Roboter sollte
nur einen Schaden anrichten. Spike sollte meiner Meinung nach
auch nur einen Schaden anrichten. Und dann lasse ich
den
Spike-Ball auch einen Schaden anrichten Eigentlich ist es nur die Batterie. lassen wir einen
Spike-Ball zwei Schaden anrichten. Mach die Dinge einfach ein
bisschen interessanter. Nun, an jedes einzelne
dieser Dinge ist dieses Skript angehängt
, das speichert
, wie viel
Schaden es anrichtet. Das Letzte, was wir
tun werden, ist sicherzustellen, dass sie alle bereit sind, Feinde zu markieren. Es sieht so aus, als ob sie
es sind. Jetzt müssen wir nur noch zu unserem Spieler
zurückkehren. Fügen wir dieses neue Skript hinzu, das wir gerade Player Health genannt haben. Platziere es unter
der Bewegung des Spielers. Wir müssen hier eigentlich nichts
zuweisen , weil wir hier
keine Variablen haben. Wir haben nur eine Lücke
, in der steht, dass du Schaden nehmen musst. Wir haben eine Veranstaltung. Immer wenn wir mit dem
Collider kollidieren, erleiden wir
so viel Schaden Was sollte nun
passieren, wenn wir die Konsole löschen
und auf Play klicken Wir können sehen, dass jetzt nichts gedruckt
ist, aber wenn wir
weiterlaufen, wollen wir mit dem Spipal
interagieren
und sehen, was passiert Und wir können dort sehen, dass der Spieler zwei Schaden erlitten
hat. Ich mache es noch einmal, es
läuft wieder. Hier hat der
Spieler einen Schaden erlitten. Hier hat der Spieler einen Schaden erlitten.
Und lass uns versuchen, das zu tun. Der Spieler hat zwei
Schaden erlitten, zwei Schaden, weil beide Spieler zwei Schaden
erlitten haben, Spieler hat einen Schaden erlitten, einen Schaden, einen Schaden. Perfekt. Das
funktioniert wirklich sehr, sehr gut. Das Letzte, was
ich hinzufügen
möchte, damit das nächste
Video nicht zu lang
wird, ist eine Zeit damit das nächste
Video nicht zu lang
wird, der Unbesiegbarkeit Das ist eigentlich auch ziemlich
einfach zu machen, weil wir dieses Skript für die Gesundheit unserer Spieler
verwenden werden für die Gesundheit unserer Spieler
verwenden Ich fange
jetzt einfach an, es zu
konkretisieren, aber im Grunde
müssen wir unser Void-Update
zurückholen.
Also jedes einzelne Bild Und dann lass uns
hier oben schwimmen. Nennen wir es Max Invincibility Time. Dann werden wir einen weiteren Float
haben , der Unbesiegbarkeitszeit
genannt wird Alles, was wir tun werden, ist
innerhalb dieses Void-Updates zu sagen, wenn die
Unbesiegbarkeitszeit größer als Null
ist, dann werden wir die Unbesiegbarkeitszeit um
die Zeit verringern Zeitdelta-Zeit seit
dem letzten Frame vergangen ist, die Es
wird jedes einzelne Bild angezeigt, wenn
dieser Wert nicht Null ist, mit anderen
Worten, wenn
es fünf ist, abzüglich Zeit
, die
seit dem letzten Frame vergangen ist. Mit anderen Worten,
im Grunde genommen runterzählen. Nun, das funktioniert eigentlich nur
als Zeit, aber wir sagen, wenn
es mehr als fünf ist, dann zählen wir runter bis Null. Und dann
werden wir nichts weiter tun, als den
Schaden zu beseitigen. Wir werden hier
oben eine weitere
Bedingung für die IF-Anweisung hinzufügen . Wir werden sagen, ob
wir mit einem Feind kollidiert sind und unsere Unbesiegbarkeitszeit
kleiner oder gleich Null ist Mit anderen Worten, wenn wir uns
gerade nicht in einer Zeit befinden, in der wir
unbesiegbar fügen wir dort noch ein paar
Klammern hinzu
und nehmen erst dann Schaden Das Letzte, was ich
tatsächlich
tun werde , ist,
dieses Wort Enter zu entfernen und es in ein Wort bleiben zu
ändern Der Grund, warum wir das jetzt
tun können, ist, dass dieses Trigger-Ereignis
hier tatsächlich einmal pro
Frame aufgerufen wird , und zwar für jede Kollision, bei der Sie
sich berühren Mit anderen Worten, wenn ich
mit
etwas kollidiere und ich
dort bleibe, würde ich
jedes einzelne Bild kontinuierlich beschädigen Aber weil wir
diese Zeit der Unbesiegbarkeit hinzugefügt haben, können
wir
den Code jetzt so schreiben und eine Zeit festlegen, zu der wir
keinen Schaden nehmen können Denn der Grund, warum ich
das ursprünglich nicht gemacht habe , war, dass wir hätten jedes Mal, wenn wir etwas berühren, 100.000
Nachrichten
erhalten Weil es jeden Frame ausführen wird
. Weil wir jetzt nur noch jedes
Mal Schaden
nehmen, wenn wir können. Mit anderen Worten, nur in jedem festgelegten Intervall, das
wir hier festlegen, können
wir nicht
ständig Schaden nehmen. Ich kann diesen
Code jetzt so schreiben. Und das ist tatsächlich viel besser, weil es
bedeutet, dass wir, wenn wir auf Spikes oder
so
bleiben, ständig
Schaden erleiden werden , solange
wir auf den Spikes sind Und
genau das wollen wir. Bevor wir zu meinem Spiel
zurückkehren, gibt es noch eine letzte
Sache, die ich tun muss. Ich muss
sicherstellen, dass ich meine Unbesiegbarkeitszeit
hier immer auf meine maximale
Unbesiegbarkeitszeit
setze auf meine maximale
Unbesiegbarkeitszeit solange ich gerade Schaden erlitten habe Sobald ich Schaden erleide,
setze ich diese Zeit zurück. Im Grunde ist das
so ziemlich der gesamte Code, den wir schreiben müssen , um ein grundlegendes
System zu haben, mit dem wir Schaden nehmen können. Gehen wir zurück zu Unity. Lass uns mein Maximum,
meine Zeit, auf 1,5 Sekunden setzen. Lassen Sie uns das in
Aktion sehen. Wenn ich weitermache und auf Play drücke, kann ich mitlaufen. Und wir werden uns diese beiden Variablen tatsächlich
ansehen. So können wir sehen, ob es funktioniert. Schau dir diesen an. Alle zwei
Sekunden
werde ich Schaden nehmen. Du kannst dort drüben sehen, der
Spieler hat einen Schaden erlitten, Spiel hat einen Schaden erlitten, das Spiel
hat einen bereitgestellten Schaden erlitten. Ich bleibe auf diesen Collidern, ich erleide sogar jedes
Mal
Schaden, wenn ich auf einem bin, was genau das ist, was ich will Jetzt gibt es noch eine
Änderung, die ich vornehmen möchte, solange ich damit beschäftigt bin, Dinge in meinem Spiel
zu Und es wird
eine Animation zur Treffererkennung hinzufügen . Wir werden tatsächlich
zu
meinem Spieler übergehen und ihn so animieren, dass
jedes Mal,
wenn er Schaden erleidet, ein bestimmter Effekt
abgespielt wird usw. Und das schreiben wir in das
Animationsfenster hier drüben. Das wird die Sache ziemlich
kompliziert
machen , weil
wir schon all
diese Animationen hier
drüben haben und eine verletzte Animation
hinzugefügt haben. Dann müssen wir uns verletzen, wenn wir untätig sind, beim Laufen
verletzen usw. Stattdessen
verwenden wir einen einfachen Effekt, dem es sich um einen roten
Block handelt, der so aussieht Wenn ich Schaden erleide und
dann zurücktausche. Ich blinke kurz
rot. Und dann werde ich aufhören. Die Art und Weise, wie wir das
tatsächlich tun werden , besteht darin, ausschließlich Codes zu verwenden. Wir werden hier
in meinem Spielergesundheitsskript weitermachen, wir werden eine sogenannte Co-Routine schreiben. Also werden wir
Zähler schreiben und Schaden nehmen. Auf diese Weise können
wir programmieren, als würden Timer tatsächlich auf diese Anzahl von Sekunden
warten Ich werde
Folgendes schreiben. Ich werde hier
oben sagen, ich einen
öffentlichen Verweis auf
meinen Sprite Renderer haben werde ,
nenne ihn Sprite Ich werde es in
meinem Take Damage Void sagen. Lass dich
davon nicht verwirren. Das ist im Grunde genommen, stell es dir wie eine Leere vor. Aber ich kann Befehle verwenden , die es mir ermöglichen, eine
bestimmte Anzahl von Sekunden zu warten. Das ist nicht genau das,
was es ist, aber genau dafür
werden wir es verwenden. Stell es dir einfach
wie eine Leere mit einer zusätzlichen Fähigkeit vor, natürlich. Benutze das nicht anstelle von Lücken. Benutze es nur so
, wie ich es jetzt benutze, aber mach dir
darüber nicht zu viele Gedanken Sie werden sekundenlang sagen, dass
Rendite wieder Gewicht ergibt. Dann geben wir eine
bestimmte Anzahl von Sekunden ein. Ich werde Invariable verwenden um zu entscheiden, was
ich sagen werde Zeit für den Farbwechsel im öffentlichen Raum. dieser Zeitvariable
für den Farbwechsel werden wir Anhand dieser Zeitvariable
für den Farbwechsel werden wir bestimmen, wie lange wir warten
sollten, bevor wir die Farben
ändern. Zuerst gehe ich davon aus, dass
Sprite-Farbe gleich Farbe Weiß ist. Dann werde ich
weitermachen und warten lange meine
Farbwechselzeit Dann werde ich von hier aus wechseln, ich werde
Rot an den Anfang setzen. Ich werde ursprünglich rot, warte einige
Sekunden, dann werde ich weiß. Und das ist eigentlich so ziemlich alles,
was wir tun müssen. Wir werden die Farbe
des Sprites in der Minute, in der wir wollen, auf Rot setzen , und wenn wir
keinen Schaden mehr erlitten
haben, werden wir
sie wieder auf Weiß setzen Und natürlich nennen
wir das
jedes Mal, wenn
wir Schaden nehmen , Co-Routine Und jetzt zwei Dinge. Zuallererst wird
das eigentlich genauso benannt
wie Voids Ich werde es stattdessen Take
Damage Effect nennen , es ist ein
etwas besserer Name Und zweitens müssen
wir das jedes
Mal
aufrufen, wenn ich dahinter wieder
start co routine schreibe Mach dir über
diese Sache nicht zu viele Gedanken. Es ist wirklich nicht so
wichtig und ich möchte
nicht
zu viel Zeit damit verbringen, mich damit zu befassen. Aber stellen Sie sich
das im Grunde wie eine Leere vor, die es uns ermöglicht, eine
gewisse Zeit zu warten. Dann
nennen wir diese spezielle Leere hier
drüben, die es
uns ermöglicht, Schaden zu nehmen. Und das bedeutet, dass wir
jedes Mal , wenn wir
Schaden erleiden,
auf Rot umschalten. Und so
lange wir rot sein wollen, wir es behalten. Und dann werden wir wieder
zu Weiß zurückkehren. Das ist so ziemlich
alles, was wir tun müssen, um einen Trefferindikator zu
haben. Gehen wir zurück zu Unity. Geh gleich zurück zum Spielen. Stellen wir Zeit für
den Farbwechsel auf 0,2 Sekunden ein. Wenn jetzt alles so
funktioniert, wie es sollte, sollten
wir in der Lage sein, so
weiterzumachen , wie wir es normalerweise getan haben. Wie immer,
wenn wir Schaden nehmen, sollten
wir auf Rot umschalten. Wir haben Sprite nicht zugewiesen, stellen
wir sicher, dass wir das tun. Zieh das hier runter. Weist die Sprite-Variable dem Sprite-Ding
zu. Versuchen wir es noch einmal,
rennen weiter.
Wenn wir Schaden nehmen, blinken wir rot, was genau
das ist, was wir wollen Und das ist meiner Meinung nach sogar ziemlich
gut. Sie können deutlich sehen, wann
Sie Schaden erleiden, und Sie können
natürlich sehen, dass Sie kontinuierlich Schaden erleiden, wenn
Sie drinnen
bleiben kontinuierlich Schaden erleiden, wenn
Sie Das ist ziemlich gut. Das einzig Letzte ist, wie
lange wir unbesiegbar sind
und dafür werden wir auch eine weitere
Co-Routine
schreiben dafür werden wir auch eine weitere
Co-Routine Gehen wir einfach runter und nehmen die
Zählerliste, nennen wir es Unbesiegbarkeitszeit Wir werden sagen,
solange, mit anderen Worten,
mach das so lange, bis diese Sache nicht mehr wahr
ist Die Unbesiegbarkeitszeit ist
größer als Null. Mit anderen Worten, solange wir
derzeit unbesiegbar sind. Lass uns weitermachen und
in den Bildschirm ein- und ausblitzen. Wir werden das
Gleiche tun wie mit Farbe. Gehen wir davon aus, dass Sprite-Farbe
gleich neuer Farbe ist. Wir
werden
diese neue Farbe
so einstellen, dass sie ziemlich genau dem entspricht, was wir bei Weiß haben, außer mit einem etwas
weniger offensichtlichen Sie wird
etwas transparent sein. Setzen Sie dies auf 111, was der Maximalwert ist, und dann setzen wir Alpha. Lassen Sie uns auch
dafür eine Variable verwenden. Transparenz im öffentlichen Verkehr. Lassen Sie uns das
kopieren und dort drüben ablegen. Das ist eigentlich
so ziemlich genau das, was wir wollen. Diese
Zeit der Unsichtbarkeit hält an, wir
werden uns zu etwas Durchsichtigem verändern Und dann werden wir eine neue Renditeerklärung
schreiben , um Sekunden zu warten. Ich werde hier eine andere
Variable verwenden. Ich werde das
Unbesiegbarkeitsverzögerung nennen. Mit anderen Worten, wie lang
die Zeit zwischen den Blitzen sein soll die Zeit zwischen den Blitzen Lass uns Invincibility
Delay da drüben schreiben. Lass uns weitermachen
und unser Ding
wieder hier drüben hinstellen , normale Ich werde
diesen Vorgang tatsächlich ein paar Mal wiederholen diesen Vorgang tatsächlich ein paar Mal Mit anderen Worten, wir werden die transparente Farbe
ändern, zur normalen Farbe zurückkehren und dann weitere
Sekunden warten. Danach
werden wir transparent. Wir warten, wir werden
normal, wir warten. Und wenn wir dann
immer noch unbesiegbar sind, werden
wir wieder transparent Warte, das wird
sich immer weiter wiederholen, bis es nicht mehr wahr ist
und dann wird es aufhören Es ist wichtig zu beachten,
dass,
weil wir diesen Code so geschrieben haben, er niemals aufhören wird,
wenn Sie transparent sind. Da es nur
überprüft, ob Unbesiegbarkeitszeit am
Ende dieses Codes größer als Null ist, kann
es nicht in der Mitte des Codes
aufhören Es wird sofort ausgeführt und dann sagen,
okay, muss ich es noch
einmal machen? Du musst dir Sorgen machen, dass du halb durchsichtig
feststeckst. Nun, bevor wir zu Unity zurückkehren, müssen
wir tatsächlich eine Sache
tun. Wir müssen sicherstellen, dass wir das
auch wirklich Cotine nennen. Sonst
wird es nie seine Wirkung entfalten und wir werden
es nicht sehen können. Gehen wir hier nach oben. Denken Sie daran,
in Start Corotine
Invincibility Time zu schreiben ,
einfach Das wird uns tatsächlich
ermöglichen, Corotin zu nennen. Achten Sie darauf, am Ende ein
Semikolon zu setzen. Wenn wir jetzt zu Unity zurückkehren, können
wir sicherstellen, dass wir
diese Werte in unserem Player bearbeiten Lassen Sie uns diese
Unbesiegbarkeitsverzögerung um 0,2 Sekunden verlängern. Machen wir für meine Transparenz 0,5 muss ein Wert von 0-1 sein.
Behalte das Das sollte eigentlich
alles sein , was wir brauchen, um einen gut funktionierenden
Unbesiegbarkeitseffekt Mal sehen, ob es funktioniert.
Wenn ich mein Spiel hochlade, hat offensichtlich der rote
Damage-Effekt funktioniert. Aber lass uns testen, ob dieser
auch funktioniert. Sie können sehen, dass es tatsächlich einwandfrei
funktioniert. Es ist nur so, als hätten wir unsere schädigende Wirkung
verloren. Und der Grund dafür ist
, dass wir unsere Farbe
tatsächlich außer Kraft Gehen wir zurück und nehmen
schnell eine kleine Lösung vor. Wir werden es nicht ändern
wollen. Was wir gerade tun, ist, dass
wir es auf Rot umstellen. Aber dieser Code hier drüben
macht es wieder weiß. Anstatt zu sagen, okay,
ändere es auf Weiß, werde
ich sagen, ändere es auf das, was es vorher war.
Sprite-Punktfarbe Sprite-Farbe. Sprite Dot cooler Hund. Und für rotes, grünes und blaues C sollte
das viel besser funktionieren Jetzt werden wir keinen der
tatsächlichen Aspekte der Farbe mehr ändern , mit Ausnahme
des Alphakanals, der genau das
ist, was wir wollen. Gehen wir zurück und schauen, ob
das ein bisschen besser funktioniert. Und ich denke, es
sollte darauf achten, diese
Zeitvariable für die Intervabilität zu beobachten Wenn wir Schaden nehmen, können wir sehen dass er tatsächlich
einwandfrei funktioniert Solange wir zur Spirit Time
herunterzählen, blinken
wir und sobald wir aufhören,
hören wir auf. Das gibt uns einen ziemlich
guten Hinweis darauf unser Spiel und das Schadenssystem
funktionieren, was großartig ist. Das ist so ziemlich alles, was wir in diesem Video erledigen
müssen. Offensichtlich können wir jetzt sehen, dass wir
tatsächlich Schaden nehmen können und alles, womit wir jetzt anfangen
müssen,
ist unser Gesundheitssystem, ähm, das uns helfen sollte,
dieses Spiel viel
lustiger zu machen und tatsächlich, naja, mehr wie ein Spiel zu machen,
als es jetzt ist. Ich hoffe also, dass dein Spiel im Moment genauso gut
funktioniert wie
Minus. Natürlich
müssen wir das anpassen und sicherstellen, dass alles
wie
minus funktioniert , bevor Sie mit
dem nächsten Video fortfahren, in dem
wir mit
unserem Gesundheitssystem beginnen werden.
11. 10. Spielergesundheit hinzufügen: Hallo, und willkommen
zurück bei Unity. In der letzten Episode haben wir die Treffererkennung hinzugefügt
, sodass unser Spieler
zeigen konnte, wann er
Schaden erlitten hat und wie lange er
unbesiegbar ist , bevor
er Schaden erleiden kann Auch hier können wir all
das in Aktion sehen, mit dem
erlittenen Schaden und
dem Blinken, während
du sehen kannst, wo du gerade aufgehört hast,
Schaden zu nehmen, und
du jetzt unbesiegbar bist Und wenn es dann auch
nachlässt, ist
das alles schön und gut, aber wir haben immer noch kein System das tatsächlich anzeigt, okay, wie viel Gesundheit ich habe und
wie lange es dauert, bis ich wie lange es dauert, bis ich Und das Spiel ist vorbei, weil der Spieler nicht unendlich
viele Lebenspunkte hat. Es wäre kein sehr
interessantes Spiel wenn du niemals sterben könntest. Was wir
in dieser Episode hinzufügen müssen ist ein Gesundheitssystem
, das zeigt, okay, der Spieler hat noch
so viel Lebenspunkte übrig, und wenn der Spieler
diese Gesundheit erreicht, stirbt er. Und um das zu tun, werden
wir genau dasselbe Skript verwenden ,
das wir die ganze
Zeit benutzt haben, dieses Skript für die Spielergesundheit. Gehen wir also zu den Skripten und doppelklicken wir auf
Spielergesundheit, um es zu öffnen. In Visual Studio
sollten wir alles
sehen können, was wir beim letzten Mal codiert haben. Gleich hier drüben.
Perfekt. Jetzt fügen wir nur noch eine öffentliche Information
hinzu,
nennen wir sie Max Health. Das ist etwas, das Sie
nicht wirklich zu
einer Variablen hinzufügen müssen , weil das
aussagt , wie viel Gesundheit wir maximal haben
sollten. Mit anderen Worten,
wie viel Gesundheit möchte
ich haben, wenn ich bei voller Gesundheit bin? Und du denkst vielleicht, oh, das ist gut, das als Variable zu
haben. Aber weil ich
die Sprites und so schon gemacht habe, weiß
ich, wie viel maximale
Gesundheit ich haben werde Es werden sechs sein, aber du kannst das
hinzufügen, wenn du willst Es ist trotzdem auch gute
Programmpraxis. Aber wir werden
es dabei belassen und auch eine neue Öffentlichkeit
in die aktuelle Gesundheit aufnehmen eine neue Öffentlichkeit
in , die man „
aktuelle Gesundheit“ nennen
wird.
Er nennt es „aktuelle Gesundheit“. Cool. Dann
werden wir nur noch hierher
gehen, um meinen Schaden zu
nehmen. Und ich werde sagen, aktuelle
Gesundheit minus ist gleich. Mit anderen Worten, die aktuelle
Gesundheit
entspricht der aktuellen Gesundheit minus Und dann sagen wir
Schaden, mit anderen
Worten, die
aktuelle Gesundheit wird um die
Höhe des Schadens verringert . Ich werde tatsächlich
diese gedruckte Erklärung hier entfernen ,
in der
steht, wie viel Schaden ich erlitten
habe , weil das
nur zum Testen war. Dann muss ich
hier nur
noch eine weitere Lücke darunter haben
, die ich als noch eine weitere Lücke darunter schecktot
bezeichnen werde. Ich nenne es Leere,
sobald ich Schaden erleide, noch
bevor ich
irgendwelche Effekte oder Unbesiegbarkeitszeit
oder so etwas Ich werde sagen, wenn meine aktuelle Gesundheit kleiner oder gleich
Null
ist, dann bin ich tot Ich muss eine weitere Lücke beschwören. Ich werde hier
drunter schreiben, Tod. Lass uns weitermachen und das da
hinzufügen. Schaden nichtig, wenn ich
meine aktuelle Gesundheit um den Schaden
verringere , den ich erlitten habe. Ich habe meinen Scheck für
ungültig erklärt und sage, okay, wenn meine aktuelle Gesundheit
weniger als Null ist, nenne das so. Und ich habe hier mein
Todesloch, das besagt, okay, wenn ich tot bin,
was ich machen will, also fange ich
an, das einzuprogrammieren. Und dann füge ich hier
oben noch
etwas hinzu, das besagt,
okay, setze meine aktuelle Gesundheit am Anfang
auf die maximale Gesundheit. Eigentlich mache ich das jetzt einfach. Lassen Sie uns weitermachen und
sagen, dass die
aktuelle Gesundheit beim Start bei Nichtigkeit der maximalen Gesundheit
entspricht. Mit anderen Worten, alles
ist gut und schön. Wir fangen wieder an und
haben meine aktuelle Gesundheit
auf das Maximum gebracht. Dann,
in meiner Todeshöhle, werden
wir sagen, okay, was möchte
ich, dass passiert, wenn ich sterbe? Nun, das Erste, was
ich will, ist,
dass der Spieler sich nicht mehr bewegen
kann. Ich werde das tun, indem
ich tatsächlich auf das Spielobjekt
zugreife , an das das gerade
angehängt ist, nämlich den Spieler. Ich gehe zu Spielobjekt und dann suche ich
ein anderes Skript dazu. Mit anderen Worten, das
Get-Bewegungsskript. Ich gehe zum Player, um die Bewegung des
Komponentenspielers abzurufen. Ich werde sagen,
aktiviert ist gleich Kraft. Mit anderen Worten, ich werde
verhindern, dass dieses Skript
derzeit aktiviert Ich werde sagen,
okay, es ist weg. Das wird mir im Grunde ermöglichen, mir im Grunde ermöglichen die Bewegung
zu deaktivieren,
solange Glary tot ist Ich möchte auch nicht, dass
mein starrer Körper Schwerkraft beeinflusst wird.
Ich
will nicht mehr fallen. Ich würde sagen, besorgen Sie sich die
Komponente Starrkörper zwei der Schwerkraftskala D. Ich werde
das gleich Null setzen. Mit anderen Worten, ich möchte
nicht fallen, ich bleibe in der Mitte
der Luft und kann mich
momentan nicht bewegen. Dann gibt es noch ein paar
Dinge, die ich tun möchte. Ich möchte
den Animator, der sich gerade auf meiner Komponente und meinem Objekt
befindet,
tatsächlich deaktivieren den Animator, der sich gerade auf meiner Komponente und meinem Objekt
befindet, gerade auf meiner Komponente und meinem Objekt Jetzt kann ich die Animation nicht ändern. Zu guter Letzt möchte
ich
meinen Sprite in einen
bestimmten Todesgeist ändern , den ich hier einfügen werde
. Ich sage Public
Sprite, nenne es tot. Ich sage Get Component
Sprite Renderer Sprite
Equals und dann Equals Diese vier Codezeilen hier sagen im Grunde: Okay,
sobald ich sterbe, deaktiviere
meine Bewegungsskripte Jetzt kann ich mich nicht mehr bewegen
, weil das Spiel vorbei ist, oder? Ich
möchte auch nicht fallen können,
also setze meine Schwerkraft auf Null. Ich schwebe einfach
in der Mitte
der Luft und bewege mich nicht nach rechts. Ich werde noch
eine Sache hinzufügen, bevor ich das tue , ist, dass ich sagen werde
: Spielobjekt, Komponente, starrer Körper zwei D, Geschwindigkeit ist
gleich Vektor 20. Mit anderen Worten, halte mich
in der Luft an, denn so wie
das momentan funktioniert, würde
ich sterben und dann all diese Dinge machen, würde
ich mich weiter auf dem Bildschirm
bewegen, was ich nicht will Also will ich
es zuerst so machen, dass ich mich nicht bewegen kann. Ich möchte mich in der Luft aufhalten
und meine Schwerkraft ausschalten. Ich stehe also in der
Mitte des Bildschirms. Und lieber genau in
der Mitte des Bildschirms möchte
ich meinen Animator deaktivieren Also habe ich
keines der Dinge mehr, okay, ob ich Hausarrest habe oder nicht,
egal ob ich falle, ich deaktiviere das einfach komplett Und dann stelle ich meine Sprite Renderer-Komponente
ein,
die mir sagt,
welche Sprites gerade für dieses spezielle
Sprite hier drüben
angezeigt werden,
was ich auch hinzufügen werde Sprite Renderer-Komponente
ein,
die mir sagt, welche Sprites gerade für dieses spezielle
Sprite hier drüben
angezeigt werden, was Das ist so ziemlich der
gesamte Code, den wir benötigen
sollten, um ein Gesundheitssystem zu erstellen Ich werde zu Beginn
des Spiels sagen,
setze meine Gesundheit auf die maximale Gesundheit. Und jedes Mal, wenn ich
Schaden abzüglich davon und sobald ich tot bin, dann nenne ich diesen Spoid hier drüben, was im Grunde
ziemlich deutlich macht, dass ich gestorben bin Öffnen wir Unity und
gehen wir zum Player. Mal sehen, welche
davon wir hinzufügen müssen. Lass uns meine maximale Gesundheit auf
sechs setzen und wir müssen diese toten Sprites hinzufügen Ich gehe zu
Sprites, klicke mit der rechten Maustaste und importiere mit der
rechten Maustaste ein neues Asset
und es ist minus sieben Es sollte unter
diesem Video verlinkt sein , genau wie alle
anderen. Ich werde diese aktualisieren,
solange ich hinzugefügt werde. Ich werde auch
diese Herzsprites importieren, die wir in Kürze für unser
Gesundheitssystem verwenden werden. Machen wir weiter und
machen sie auch zu 12 und Point No
Filter und Perfect Wir werden es überprüfen,
wie wir es beim letzten Mal getan haben, und
sicherstellen, dass beide ausgefüllt sind. Perfekt.
Scrollen wir hier runter und stellen
wir sicher,
dass meine Minus-Sprites auf minus sieben
gesetzt Mal sehen, ob das alles so funktioniert,
wie wir es beabsichtigt haben. Wir haben unser letztes Sprite
hinzugefügt, alles andere. Wenn wir zu meinem Spieler gehen, können
wir sehen, dass
ich momentan sechs Lebenspunkte und eine maximale Gesundheit von sechs Jetzt ist meine Gesundheit bei vier,
weil ich gerade
Schaden erlitten habe . Meine Gesundheit ist jetzt bei drei. Und wenn ich dadurch zwei Schaden erleide, ist meine Gesundheit
bei eins. Und was sollte passieren, wenn
ich auf den Sprite treffe? Ich sollte Miller aufhalten und in einen Grabstein
verwandeln
, der perfekt ist Ich habe immer noch den
Taubheits-Effekt, den ich korrigieren muss. Aber Sie können sehen, offensichtlich haben wir nicht alle
deaktiviert, die Skripte sind nicht vollständig tot, aber dieser Tombstone
scheint zu funktionieren Ich habe hier einen Grabstein, und das ist Ich möchte noch ein paar Änderungen daran vornehmen,
bevor ich anfange, mein Herzsystem hinzuzufügen Der erste, ich denke,
der Grabstein sollte
etwas höher in der
Luft sein als zu dem Zeitpunkt, an dem Fangen wir damit an,
hier drüben zu sagen , wo der ganze
Rest dieses Codes ist Lassen Sie uns auch weitermachen und sagen, dass Transformationsposition dem neuen Vektor drei
entspricht Transformiere Position x, transformierter Oppositionspunkt
y übertragene Opposition Offensichtlich hat diese Aussage noch
nichts bewirkt. Ich sage nur,
transformierte Opposition gleichbedeutend mit verwandelter Opposition Aber dann gehen wir hier nach oben und
fügen
den Y-Offset hinzu , wenn wir sterben Kopieren wir das da unten und fügen es dann hier
hinzu. Und ich denke,
mit zwei oder drei
sieht das viel besser aus. Nachdem wir
das getan haben,
wollen wir als letztes eine neue Variable hinzufügen sie
als tot bezeichnen. Und so können
wir nachverfolgen, wann wir tatsächlich am Leben
sind und nicht hier zu
Beginn des Spiels. Wir wollen, dass Set absolut gleich falsch ist
, weil wir nicht
hier drüben sind, wenn wir sterben. Wir wollen, dass der Wert
absolut gleich wahr ist. Der Grund, warum
wir das tun ist, dass wir uns um all die Dinge
kümmern werden, die wir vorher gemacht haben,
wo es immer noch
Schaden genommen hat und die Unsichtbarkeitszeit
immer noch wirksam
wurde die Unsichtbarkeitszeit
immer noch wirksam Und der Ort,
an dem wir das einbauen werden, ist, dass wir das Drehbuch
tatsächlich hierher verschieben Schauen wir uns
mein Scheckschulden-Skript
hier an und sagen wir, ob aktuelle Gesundheitszustand weniger
als Null Tod entspricht. Und dann,
bevor wir die anderen Sachen nennen, sagen
wir, wenn nicht tot ist, mit anderen
Worten, wenn
ich noch am Leben bin, dann kannst du all
diese anderen Sachen machen. Dann kannst du die Startzeit festlegen, du kannst die
Schadens-Sachen aufrufen Aber wenn wir gerade gestorben sind, wollen wir nicht wirklich
, dass das passiert Wir könnten das eigentlich auch als L-Statement
formulieren. Man könnte es anders sagen, mit anderen
Worten, wenn mein aktueller Gesundheitszustand nicht
stimmt, was ich tun werde, um Bezirke etwas zu verbessern, aber das
macht wirklich keinen Unterschied Tatsächlich
wird diese tote Variable hier nicht zu 100% benötigt,
weil wir einfach etwas anderes
schreiben und sie dann überhaupt
nicht verwenden könnten anderes
schreiben und sie dann überhaupt
nicht verwenden Aber ich denke, es ist trotzdem eine
gute Sache, einfach den Überblick darüber
behalten zu müssen , ob der
Spieler am Leben ist oder nicht. Gehen wir zurück zum Spieler und lassen meinen Y-Wert um etwa zwei verschieben und schauen, ob all diese
Änderungen funktionieren. Lass uns auf Play klicken und schauen,
ob ich ständig Schaden erleide. Das sind zwei, das sind
vier, das sind fünf. Bei der sechsten
können wir da drüben sehen, zwei sind vielleicht etwas hoch, setzen
wir es auf vielleicht eins. Aber es hat tatsächlich
ziemlich perfekt funktioniert. Bei uns
funktioniert alles gut. Wenn wir vor so
etwas wie einem Stachel sterben, werden
wir vor dem Stachel sterben,
aber wir werden nicht weiter Schaden
erleiden oder uns Schaden zeigen lassen Lassen wir uns vom Roboter
töten. Fast. Das sind vier. Also, wenn
wir hier sterben, sind wir da. Wir sollten da drüben nachschauen, da drüben
haben wir unseren Todeseffekt. Und wir wollen auch, dass
die Kamera stoppt. Aber das werden wir jetzt
hinzufügen. Lass uns rüber zu meiner Kamera gehen. Gehen wir herausfinden, wo
es hier ist. Kamerageschwindigkeit unter dem Drehbuch für die
Kamerabewegung, unter dieser toten
Leere hier drüben. Ich werde Game
Object Dot Find sagen. Mit anderen Worten,
geh in die Szene, meine Hauptkamera, finde sie. Dann sagen wir Komponente holen suchen darauf mein
Kamerabewegungsskript, das meine Geschwindigkeit festlegt, Kamerageschwindigkeit gleich Null. Das ist eigentlich
alles, was wir brauchen. Sobald ich sterbe, sollte
ich meine
Kamerageschwindigkeit auf Null stellen und alles sollte einwandfrei
funktionieren. Gehen wir zurück zu meinem Spiel. Ich werde meinen Y-Offset
tatsächlich auf etwa 0,5
einstellen wollen tatsächlich auf etwa 0,5 glaube, einer war immer noch
ein bisschen hoch. Mal sehen, ob das
alles so funktioniert, wie
wir es im Laufe der Zeit erwartet hatten. Um des Testens willen,
werde
ich eigentlich nur meine Gesundheit auf eins einstellen, muss das weiter
testen. Stellen wir den aktuellen
Gesundheitszustand ein. Gehen Sie zu einem und schauen Sie, ob wir
auf die Spitze stoßen Wir können sehen, dass wir tatsächlich sterben und die Kamera stoppt,
was großartig ist Es ist genau das, was wir
wollen. Das ist so ziemlich alles
, was wir tun
müssen, um zu zeigen
, dass wir sterben. Aber wir brauchen immer noch eine
Möglichkeit, damit der Spieler
sehen kann, wie viel Lebenspunkte
er noch hat. Um
damit zu beginnen, müssen wir mit unserer Benutzeroberfläche
beginnen . Klicken wir mit der rechten Maustaste und wählen Erstellen. Ich werde ein Bild
erstellen wollen. Sie können sehen, dass es eine
riesige Leinwand bildet und das ist tatsächlich viel größer als das Da unten ist unser Spiel. Das sieht vielleicht
etwas verwirrend aus. Dies ist ein Screen Space-Overlay. Ich bevorzuge es sehr, den
Screen Space-Kameramodus zu verwenden. Und du kannst deine Kamera
direkt hineinziehen und dann kannst
du deine Benutzeroberfläche
vor deinem Spiel sehen. Es gibt keinen großen
Unterschied, es ist nur eine Frage der Präferenz. Aber im Allgemeinen bevorzuge ich es,
den Bildschirmbereich und den Kameramodus zu verwenden . Ich denke, es gibt einige
deutliche Vorteile, aber ich habe sie nie wirklich ausführlich
untersucht weil ich nie ein
Problem mit dem Kameramodus hatte Lass uns weitermachen und die Kamera
in diesem Bild hier benutzen . Lassen Sie uns zuerst
unsere Leinwand in UI umbenennen. Diese Leinwand ist wie ein Baustein für alle
UI-Komponenten. Und dieses Eventsystem ermöglicht es
uns, dass die Schaltflächen funktionieren. All dies
wird
automatisch erstellt, wenn Sie ein neues Bild
erstellen, genauso wie der Animator bei der Erstellung
erstellt wurde,
oder besser gesagt, der
Controller wurde erstellt als Sie eine Animation erstellt haben Lass sie alle.
Lösche sie nicht. Lassen Sie das
Event-System dort, wo es ist, und lassen Sie die Benutzeroberfläche
unverändert. Ohne die Leinwand
wird natürlich keines dieser
Bilder wirklich funktionieren und sie werden auch
nicht auftauchen. Wenn wir es aus der Leinwand entfernen, können
wir sehen, dass es nicht mehr auf unserem Bildschirm
gerendert wird. Lassen wir das einfach alles
so wie es ist. Ändern wir das in Herz, dann lassen Sie uns weitermachen
und unser Herz einziehen. Für das Quellbild klicken
wir auf „Native Größe
festlegen“ , damit wir genau
sehen können, wie es funktioniert. Es scheint nur
einen bestimmten Teil
meines Herzgeistes zu rendern . Ich denke, der Grund dafür ist, dass
wir, wenn wir uns diese
Pfeile hier ansehen, sehen, dass es drei Dinge
gibt, die
auftauchen, im Gegensatz zu
allem anderen, das nur eines hat Aus irgendeinem Grund
denkt
Unity automatisch, dass es
clever ist und versucht, diese in
drei verschiedene Sprites aufzuteilen obwohl ich eigentlich nur
möchte, dass es eins ist Ich werde
all diese auswählen.
Stellen Sie sicher, dass ich den
Sprite-Modus auf Single Head Apply setze Wenn ich dann wieder hierher gehe und versuche, mein Sprite hineinzuziehen, funktioniert
alles viel besser Mir war nicht bewusst,
dass das ein Problem sein würde, aber stellen
Sie sicher, dass Sie das tun, besonders wenn Sie meine Sprites verwenden Jetzt denke ich, dass viele von
ihnen standardmäßig auf
mehrere eingestellt sind . Aber
es ist nicht einmal ein Problem. Zum Beispiel gibt es bei diesem Nebenfach mehrere, aber es ist nur eins. Tatsächlich denke ich, dass
jeder einzelne
meiner anderen Sprites
tatsächlich eins ist, obwohl sie
alle auf mehrere eingestellt sind Es macht also nicht wirklich einen
allzu großen Unterschied. Sie können sie dort lassen,
stellen Sie nur sicher, dass dieser auf Single eingestellt
ist, da
Unity sonst versuchen wir, ihn für Sie in verschiedene
Sprites
aufzuteilen Das ist offensichtlich nicht das,
was ich für mein Spiel will. Gehen wir jetzt zurück
zu meinem Herzen hier drüben. Wir benötigen jetzt einen Klick, der die native Größe
festlegt, um sicherzustellen, dass sie
zu allem anderen passen. Dann müssen wir sie, jetzt
natürlich,
verkleinern , sodass sie
das gleiche Verhältnis haben. Lassen Sie uns weitermachen und
das ziehen , bis die Pixel
die gleiche Größe haben. Sie können sehen, dass
sie noch nicht da sind. Ziehen wir es ein bisschen weiter. Wir sind tatsächlich fast da. Lass uns einfach etwas
größer werden, bis es hineinpasst. Es muss nicht exakt sein,
aber je näher du es kommst, desto besser
wird dein Spiel aussehen. Zu diesem Zeitpunkt macht es keinen wirklichen
Unterschied. Ich denke, das ist ziemlich
genau. Das sollte gut sein. Das wird
ganz gut so aussehen. Aber lassen Sie uns das an
den oberen Bildschirmrand verschieben. Jetzt können wir sehen, dass diese
Herzen
da sein werden , während ich das
Spiel spiele, was perfekt ist. Das ist genau das, was ich
eigentlich will. Jetzt müssen wir nur noch diese Herzen
mit dem Code hier drüben verknüpfen , der
im Grunde meine Gesundheit festlegt. Ich werde
das tun, indem ich zu meinem
Gesundheitsskript hier drüben übergehe , das sich unter dem Skript befindet, ich
werde auf Spielergesundheit klicken. Ich erinnere mich, dass ich gleich zu
Beginn des Kurses diese drei
Dinge oben erwähnt
habe. Wenn Sie
verschiedene Dinge in Unity verwenden müssen müssen Sie zum
Beispiel eine Zeile hinzufügen . Und genau das werden
wir hier tun. Wir werden sagen, die Benutzeroberfläche der
Unity Engine verwenden. Das ist nur, damit wir
über Dinge wie Bilder sprechen können. Wir werden hier drüben
unter all dem ein
öffentliches Sprite-Array erstellen, mit anderen
Worten, eine
Liste von Sprites, und wir werden es Herzen nennen Wir wollen, dass diese Herzen von Null bis
fünf reichen Weil es
sechs verschiedene Arten von
Herzausgaben dafür geben wird , wie viel Gesundheit
Sie haben, darunter. Wir werden einen Verweis
auf mein Bild
erstellen und das
würde nicht angezeigt werden, aber wir haben keine Benutzeroberflächen eingegeben. Um
sicherzugehen , dass Sie es oben haben
, nennen
wir
es Herzsymbol Hier drüben haben wir unser
Herzsymbol und wir haben unser Herz Lassen Sie mich das
in die Ikone des Herzens ändern. Diese beiden Dinge
werden dem Spieler
zeigen können, wie viel
Lebenspunkte er noch hat. Lass uns hier rüber in meine Leere
gehen wo ich Schaden erleide. Und ich will sichergehen
, dass ich meinen Schaden, oder besser gesagt, meinen neuartigen Geist
hier drüben auf das
Herzsymbol setze Ich werde es tatsächlich zusammen mit all meinen anderen Dingen
hierher stellen zusammen mit all meinen anderen Dingen
hierher weil ich mir nicht wirklich die
Mühe machen möchte, sie zu aktualisieren Wenn ich tot bin, kann ich es einfach auf die Standardeinstellung
setzen, die natürlich die niedrigste
ist. Und das werde
ich tatsächlich auch tun. Aber bevor ich mir selbst zu
weit voraus bin, möchte ich mich darauf konzentrieren, es hier zu
ändern. Ich werde sagen, dass ich
auf einer Skala von 0 bis 6 natürlich
mein Herzsymbol setzen möchte, Sprite entspricht
Herzen Und dann
haben wir die verbleibende Gesundheit, die
aktuelle Lebenspunkte minus eins, denn offensichtlich beginnt
ein Strahl bei Null Wenn wir eine Gesundheit haben, brauchst
du das Das ist eigentlich so ziemlich der
gesamte Code, den wir benötigen. Das Letzte, was ich tun möchte, ist unter meinem Depoid hier drüben, ich werde den unteren Teil schreiben und
sicherstellen, dass ich
mein Ding auf Null setze ist gerade in den Sinn gekommen Mir ist gerade in den Sinn gekommen, dass wir auch ein anderes Herz
zeigen müssen, wenn wir absolut keine
Gesundheit haben Lassen Sie uns das also auf den aktuellen Gesundheitszustand setzen ,
denn das ist der richtige Wert. Für eine Gesundheit, die wir haben wollen. Zweitens, aktueller Gesundheitszustand hier
drüben und Null da drüben. Gehen wir zurück zur Einheit.
Das Letzte, was wir tun müssen,
ist, zuerst eine Referenz auf diesen Herzzyklon
zu
erstellen
, den wir
einfach da hineinziehen werden Und zweitens benötigen
wir tatsächlich
sieben Elemente in diesem Array, sieben Elemente in diesem Array weil es sechs
verschiedene Herzen gibt, Gesundheit kannst du haben,
und dann eins mit Null Gehen wir zurück zu Sprites
und ziehen sie alle hinein. Wir haben Herzen, sieben Herzen, sechs Herzen, fünf Herzen, 432.1 Das sollte eigentlich so ziemlich
alles
sein, was wir
tun müssen , damit dieses System funktioniert Wenn wir weitermachen und auf Play klicken, können
wir sehen, dass wir drei Herzen haben Und je nachdem,
wie viel Schaden wir erleiden, sollten diese Herzen dann sinken.
Also fangen wir an, wir nehmen einen. Da drüben können wir sehen, dass es ein
halbes Herz hat , dann noch eine Hälfte. Und je mehr Schaden
wir erleiden,
desto weniger Lebenspunkte haben wir
, bis wir alle Herzen erreicht haben, und dann
verwandeln wir uns in diesen kleinen Grabstein Das ist alles, was wir
tun müssen, um unser Gesundheitssystem aufzubauen Unser Spiel funktioniert jetzt eigentlich
ziemlich perfekt. Wir können sogar sterben und verlieren. natürlich Wir müssen natürlich
noch ein paar letzte Handgriffe vornehmen. Wir müssen eine Spielschleife hinzufügen. Wir müssen
die Grafik und
natürlich all die Audio-Sachen verbessern , aber das ist tatsächlich
ein ordentlicher Teil unseres
Spiels, der bereits für uns erledigt wurde Es sieht vielleicht noch nicht
so aus, als ob es fertig ist, aber wir haben tatsächlich viele
der grundlegenden Mechaniken hinter Und was danach
noch übrig ist, sind viel mehr Ergänzungen
und lustigeres Zeug Wir haben die meisten
Bausteine gebaut. Ich hoffe, Sie haben es
mitgemacht und es
geschafft, ein hartes System wie ich zum
Laufen zu bringen, ebenso wie die Gesundheit und
alle Schadensindikatoren. In der nächsten Folge werden
wir
anfangen, Währungen hinzuzufügen. Wir werden Diamanten hinzufügen, und jede einzelne Wolke
wird
eine ziemlich geringe Chance haben, in einem Diamanten zu spawnen Wir werden
in der nächsten Folge damit beginnen, aber ich hoffe, dass du es bis jetzt
verfolgen konntest und dass dein Spiel sich
weiterentwickelt. Danke.
12. 11. Edelsteine vorstellen: Hey, willkommen zurück bei Unity. Jetzt haben wir
unser Gesundheitssystem für Spieler bereits hinzugefügt. Und so ziemlich
alles andere , was ein
Plattformspiel
bisher benötigen würde. Bis auf eine
Punktemechanik oder Münzen oder
Edelsteine oder so etwas, das
du einsammeln kannst,
um zu zeigen, dass du im
Spiel vorankommst Das werden wir in dieser Episode
hinzufügen und wir
werden Diamanten verwenden Jetzt fangen wir an, lassen Sie uns
unseren Diamanten-Sprite importieren , denn den habe
ich schon gemacht Importiere Diamond Dong, der offensichtlich in diesem
Ordner des Videos verlinkt Stellen Sie dann diese
Bildeinheit auf alles andere ein und stellen Sie
den Filtermodus auf Jetzt haben wir einen
Diamanten, den wir
natürlich in unserem
Spiel sammeln können , was ziemlich cool ist Nun, dieser Diamant, genau
wie die Herzen, habe einem Umriss versehen, nur
um etwas klarer zu machen , dass es Herzen und Punktemechaniken
gibt , dass es Herzen und Punktemechaniken
gibt Ich werde ihn vielleicht
später im Spiel entfernen, aber im Moment finde ich, dass er
einfach nur
umreißt .
Ich werde ihn vielleicht
später im Spiel entfernen,
aber im Moment finde ich, dass er
einfach nur
umreißt, dass er sich von allem
anderen unterscheidet Ich werde
auch
eine höhere Reihenfolge und Ebene
als den Rest des Spiels festlegen wollen , damit es nicht zwischen den Wolken
versteckt wird. Aber ich werde gleich
zu all dem kommen. Lassen Sie mich zunächst damit beginnen es auf den
Bildschirm zu
ziehen, wie ich es gerade getan Und das ist im Grunde
eine Kurzform, um Objekt mit
einem
Sprite-Renderer zu erstellen Bei diesem speziellen Sprite werde
ich
keine Zeit damit verschwenden, daraus ein Fertighaus namens Diamond zu
machen zu
machen Dann lösche
ich das
hier drüben und öffne
mein Diamanten-Fertighaus Nun, dieses Diamanten-Fertighaus werden
wir
natürlich verwenden, um einen Großteil der Logik einzuprogrammieren ,
die wir
für meinen Diamanten wollen Und bevor ich
mit dem eigentlichen Schreiben von Code
anfange, müssen wir im Grunde entscheiden wie das System funktionieren soll Das System, für das ich mich
entschieden habe, sieht vor, dass
jede einzelne Wolke
eine bestimmte Wahrscheinlichkeit hat , wir können es zu einer
von 31 von vier machen, was auch immer wir wollen wenn der Spieler auf der Cloud
landet Und wenn du auf eine Wolke springst, besteht
die Möglichkeit, dass die Wolke einen Diamanten
aus
einer Position herausschießt und
du musst diesen Diamanten
fangen,
bevor er landet Ich denke, ich fange damit an, dass er einfach direkt nach oben
schießt,
damit du ihn sehen kannst. Aber die Diamanten werden
nicht Teil der Cloud sein. Sie werden hochspringen
und dann durchfallen. Sie müssen es
also entweder in der Luft oder
wenn es wieder herunterfällt, greifen
können . Aber es wird nicht lange dort
bleiben, es wird hochspringen
und dann wieder herunterfallen. Also wollen wir natürlich
keinen normalen
Kastengleiter haben , wir
wollen einen Auslöser haben Also lass uns anfangen. Ich
werde einen Kreisgleiter hinzufügen Eigentlich kein Kastengleiter, nur weil ich auch
ein Polygon hinzufügen könnte Aber in diesem Fall ist es
nicht das
Schlimmste auf der Welt, einen Kreis zu
haben , weil
du
mit Power-Ups
etwas nachsichtiger sein willst als mit als Weil sich niemand darüber ärgern
wird, dass er etwas
gesammelt hat Machen Sie es natürlich nicht lächerlich. Und ich werde den
Offset auf Null setzen, oder? Lassen Sie mich das bei 0,1 0,05 belassen. Machen wir
drei draus. Da haben wir's. Wie ich schon sagte,
niemand wird darüber ärgern, dass sie so
etwas gesammelt haben, aber du
willst es natürlich nicht lächerlich machen, es einfach in der Größe machen Und ich würde sagen, das ist
wahrscheinlich gut. Stellen Sie dann sicher, dass Sie es als Auslöser
festlegen und wir
müssen ein neues Tag erstellen. Wir werden es Diamant nennen. Bevor wir anfangen, lassen Sie uns das natürlich
dort zuordnen,
bevor ich es vergesse, bevor wir damit beginnen, die gesamte Logik
hinzuzufügen wie das Punkten und
Nachverfolgen von Diamanten und das Sammeln von Diamanten pro Lauf, all das Ding funktionieren
wird. Lassen Sie uns zunächst mit
der Logik
fertig werden,
die Diamanten tatsächlich zu spawnen ,
wenn wir wollen, dass sie spawnen, und dann können wir später all
die anderen Dinge hinzufügen Um das zu tun,
müssen wir in
meine Clouds gehen und dann gehen wir zurück
in meine Fertighäuser hier drüben Und ich werde jedem einzelnen
dieser Fertighäuser
ein Skript hinzufügen
wollen , das besagt,
okay, Sie haben
so viele Chancen, in einem Diamanten zu
spawnen Lass uns mit dem Drehbuch hier
anfangen. Ich werde
ein C-Sharp-Skript erstellen. Ich werde
es Diamond Spawn nennen. Ich werde
doppelklicken, um
das in Visual Studio zu öffnen das in Visual Studio zu Ich möchte, dass das
Skript funktioniert. Ich will damit sagen, dass jedes Mal, wenn
ein Spieler auf mich springt, die
Chance eins zu drei berechnet wird ob ich in einem Diamanten
spawnen möchte Aber das ist etwas verwirrend , weil es ziemlich
schwer zu Okay. Ist das das erste Mal, dass
die Spieler zu mir springen Weil ich natürlich nicht möchte, dass der Spieler so
oft springen kann, wie er möchte, und
irgendwann in einem Diamanten spawnen kann Ich möchte, dass entschieden wird, bevor
er überhaupt darauf gesprungen ist, ob er einen Diamanten
spawnen wird Ich werde hier eine etwas seltsame Codierungsmethode verwenden , aber meiner Meinung nach ist es tatsächlich eine
der besten Möglichkeiten, dies zu tun Ich werde
unter meiner ursprünglichen Leere anfangen. Ich werde sagen, lass eine Ganzzahl
x einem zufälligen Bereich entsprechen. Denken Sie daran, dass wir
entschieden haben, dass der Bereich im Minimum
enthalten ist,
aber nicht im Maximum. Ich denke, wenn Sie
Gleitkommazahlen verwenden, ist es inklusiv, aber bei ganzen Zahlen nicht Und wir setzen hier öffentliche Ganzzahl ein und wir
werden die Chance haben,
das ist die, mit
wie vielen Ich gehe von eins zu
meiner Zufallsvariablen plus eins über. Mit anderen Worten, wenn
ich 1.2 mache, wird es 1-3 sein, was mir entweder eine Eins oder zwei geben wird
. Dann werde ich sagen, ob
x dem Zufall entspricht,
weil das
wahrscheinlich die beste
Art ist weil das
wahrscheinlich die beste
Art , es zu kodieren Wenn wir
zum Beispiel gleich
der Maximalzahl sind , wenn diese Zahl drei ist, wählt
sie 1-3 und
wenn sie gleich drei ist, wissen
wir, dass es immer
so viele Chancen gibt, es zu wissen
wir, dass es immer
so viele Chancen gibt bekommen. So ziemlich alles funktioniert
tatsächlich. Man könnte sagen, Chance
minus eins oder sogar 001, aber das ist eine gute Methode zu wissen, ob es im Bereich
sein wird. Lassen Sie uns diese if-Anweisung mit
runden Klammern umgeben. Und dann, in diesem
Code hier drüben, werden wir sagen, was passiert, wenn wir
die Gelegenheit dazu haben. Nun, das ist eigentlich
nicht das, was
wir wollen, wir wollen sagen, wenn wir
nicht die Gelegenheit haben, wenn ich etwas anderes
als die Nummer bekomme ,
die ich haben möchte, werde
ich dieses eigentliche Skript, das an meinen Code
angehängt ist, zerstören oder
löschen wollen . Ich sage
Gameobject, Get Component. Mit anderen Worten, finde
auf meinem Spielobjekt etwas namens Diamond Spawn , das ist dieses aktuelle Skript Und dann lösche es. Das mag
etwas verwirrend erscheinen, aber im Grunde
gehe ich , okay, starte das Spiel. Wähle eine Zufallszahl von
eins bis sagen wir drei. Und wenn du etwas
anderes als drei hast, dann zerstöre das Drehbuch. Was das bewirken wird, bedeutet, dass im Durchschnitt nur eines von drei dieser eigentlichen Skripte auf meinem Spielobjekt verbleibt. , wenn ich das Spiel Wie viele Wolken
werden erscheinen
, wenn ich das Spiel habe? Es besteht eine Wahrscheinlichkeit
von eins zu drei, dass dieses Drehbuch überlebt. Und dann schreibe ich einen
Code darunter, der
besagt, okay, wenn ich mit dem Spieler interagiere, spawne ich im Diamanten Und dann werde ich
auch das Skript tatsächlich löschen weil sie
nicht wollen, dass
mehr Diamanten erscheinen, nachdem
ich einen erzeugt habe Bevor ich mich selbst übertreibe, lassen Sie uns
noch ein paar Variablen erstellen, public gameobject,
diamond, und ich
werde auch eine Referenz
auf einen starren Körper
erstellen auf einen starren Körper Dann werde ich
in meine Update-Leere gehen. Ich lösche es und
ersetze es durch ein Leerzeichen
bei Kollision, gib
zwei D ein. Ich werde sagen
, ob es sich beim
Kollisionsspiel um einen Spieler handelt. Mit anderen Worten, wenn ich gerade mit dem Spieler
kollidiert bin. Und dieser Code wird natürlich nur überprüft, wenn
ich die Chance von 13 erreicht habe Wenn ich mit dem Spieler kollidiere, will
ich mein Ding spawnen. Ich werde sagen,
Spielobjekt D ist Diamant
als Spielobjekt instanziieren Ich werde die Position
meines neuen Spielobjekts „Urkunde der
transformierten Opposition“ gleich
meiner aktuellen
Position auf der Wolke setzen meines neuen Spielobjekts „Urkunde der
transformierten Opposition“ gleich meiner aktuellen
Position auf der Wolke , die
Transformationsposition sein wird Ich werde das vielleicht nicht
starten, um
genau an der gleichen
Position wie die Wolken zu spawnen genau an der gleichen
Position wie die Wolken Ich werde
einen neuen Vektor erstellen. Drittens: Transformierte
Opposition, mache X, transformierte Opposition Y plus einen Offset,
dem ich jetzt vorziehe. Und dann transformierte Position Ich erstelle einen neuen Float,
nenne Und so
kann ich wählen,
wo über den Wolken
ich spawnen möchte Das Letzte, was ich tun werde, ist
, RB zu setzen, was meine Referenz auf
einen starren Körper ist, der D entspricht, was mein neu
geschaffener Diamant ist Holen Sie sich die Komponente
Starrkörper zwei D. Ich füge meinem Diamanten einen starren Körper
hinzu und so
lasse ich ihn in die Luft springen. Ich nehme Rb,
Geschwindigkeit ist neuer Vektor zwei, setze ihn auf Null und
ich setze, ich werde hier oben einen
neuen Float erstellen, meine
Diamantstartgeschwindigkeit sein wird. Also nenne ich es einfach Launch. Das wird
ziemlich genau angeben, wie hoch Diamant
in der Luft nach oben fallen
wird Dann werde ich
tatsächlich
ein separates Skript auf meinem Diamanten erstellen ein separates Skript auf , das sagt, wenn ich
mit dem Spieler live gehe, mach das, andernfalls
werde ich mich selbst löschen wollen, ich diese
Art von Position erreiche Weil
es so funktionieren
wird, dass jedes Mal, wenn ich auf einer Wolke lande, ein Diamant
hochschießt. Dann wird es fallen. Wenn
der Spieler es nicht trifft, wollen
wir nicht für immer
fallen. Das wird dem Spiel
eine Menge
Berechnungen und
Rechenleistung abnehmen, auch wenn es nicht einmal auf dem Bildschirm
passiert. Also lass uns weitermachen und das für den Moment
belassen. Im Grunde
sagen
wir, solange
wir noch existieren, der
Spieler auf uns landet dann in einem Diamanten spawnt Setze seine Position auf etwas über uns und schieß
ihn in den Himmel Bevor wir also tatsächlich in die Brust , müssen wir ein
paar Dinge erledigen,
wenn das funktioniert. Zuerst müssen wir sicherstellen, dass der Spieler ein Tag-Spieler ist. Lassen Sie uns also weitermachen und ihn als Spieler
kennzeichnen, was wir vorher
nicht getan hatten. Das zweite, was
wir tun müssen, ist in mein Fertighaus zu gehen Und ich muss gehen und
sicherstellen, dass ich
das Skript zu jedem
einzelnen von ihnen hinzufüge das Skript zu jedem
einzelnen von ihnen Lassen Sie uns weitermachen und
meine Drehbuchpoesie eintippen , die
wir gerade hier geschrieben haben. Lassen Sie uns die Chance
auf 1,3 setzen. Gehen
wir vorerst zu Fertighäusern
und setzen unseren Diamanten so ein, dass
die vorgefertigten starren Körper zugewiesen werden,
wenn wir Und dann setzen wir vorerst den
Offset auf etwa 0,5 und den Start auf
etwa fünf Wir können das natürlich später
anpassen,
aber stellen Sie einfach sicher, dass es
offensichtlich jedes
einzelne dieser
Prefabs bearbeitet , das meins Und wir können diese natürlich nach
Bedarf ändern. Aber das Letzte, was wir jetzt tun
müssen, ist, dass
das tatsächlich ziemlich gut funktionieren wird
. Wir werden
in unserem Diamanten spawnen. Und es wird alles funktionieren,
bis auf den starren Körper , weil wir noch keinen starren
Körper an unserem
Diamanten
haben noch keinen starren
Körper an unserem
Diamanten Lassen Sie uns das beheben, indem wir
einem starren Körper zwei D hinzufügen. Das ist
so ziemlich alles
, was wir tun müssen. Ich werde
die Z-Drehung einfrieren, auch wenn das keinen
wirklichen Unterschied macht. Ich werde sicherstellen
, dass der Collider ein Auslöser
ist, was
ich wollte Das ist eigentlich
alles, was wir
tun müssen, wenn wir unser Skript
erstellen Wir haben dieses Drehbuch
hier oben, das sagen wird,
okay, spawnen in unserem Diamanten Es sollte so sein, dass jede
dritte Wolke einen Diamanten hervorbringt.
Lass uns testen, ob das funktioniert Lass uns auf Play drücken und
sehen, wie wir weiterlaufen. Wir haben eine Laichwolke. Wir werden sehen, ob es ein Drehbuch gab.
Das Drehbuch steht nicht drauf. Ich schätze, das war nicht
jeder dritte. Mal sehen, ob es danach noch
einen gibt. Der hat es auch
nicht an. Dieser wurde
offensichtlich zerstört. Mein Gott, das ist schwer.
Mein Gott, da drüben, das war die Wahrscheinlichkeit, dass wir
den Diamanten spawnen
sehen, bei uns zu drüben Diamanten spawnen
sehen, bei uns zu drüben Das Problem ist, dass wir das Drehbuch nicht wirklich
zerstört
haben, also wird das jedes Mal
passieren Aber ich finde, es
sieht ziemlich cool aus. Es funktioniert eigentlich ganz gut, und wir haben einen
Diamanten, der darin laicht Ich möchte ein paar Änderungen vornehmen. Zuallererst möchte ich
die Startgeschwindigkeit
auf etwa
6,8 ändern , nur damit wir jetzt eine etwas , nur damit wir jetzt bessere
Spawn-Chance
haben. Es wird ein bisschen einfacher sein Diamanten
zu fangen, wenn er steigt Ich werde es
sogar eher auf etwa
acht machen und sehen, ob das
ein bisschen lächerlich ist, aber es könnte ganz gut funktionieren. Lassen Sie mich das natürlich einfach testen. Und dann möchte
ich natürlich auch bei
meinem Spieler seine Geschwindigkeit etwas verringern und die
Sprunghöhe etwas höher machen. Ich könnte sogar
die Schwerkraft-Skala ein
bisschen erhöhen . Das sind nur irgendwelche Änderungen,
die ich vornehme. Also ändere ich
meine Schwerkraft-Skala, mache sie auf 2,5, ich
mache die
Sprunghöhe 12 und ich werde die Geschwindigkeit
fünf Und schauen wir uns an, wie sich das
Spiel spielt, denn es fühlt sich im Moment ein bisschen
schwebend an. Das ist tatsächlich viel
besser als ich erwartet hatte. Das ist viel besser und entspricht
viel mehr dem, was
ich dir jetzt zeigen möchte. Es ist viel einfacher, diese Diamanten zu
fangen. Offensichtlich
laichen sie immer noch unendlich, aber das sollte vorerst gut sein Also lasst uns schnell den
Tweet machen, den wir machen müssen. In dem Moment, in dem wir
einen Diamanten spawnen, wollen
wir natürlich
unser Skript löschen , weil wir nicht in mehreren spawnen
wollen Also lass uns das einfach rüberkopieren. Danach müssen wir nur noch
dem Diamanten
selbst
ein Skript hinzufügen, das besagt, dass, wenn ich mit dem Spieler
kollidiere, diese
Variable für den Spieler erhöht
wird Und ich werde hier ein
neues Drehbuch haben. Ich werde
zwei neue Drehbücher haben. Eines davon
wird dem Player hinzugefügt, der nachverfolgt
,
wie viele Diamanten
der Spieler hat Und einer von ihnen
wird zu den Diamanten hinzugefügt, die verfolgen, wann der Spieler mit dem Diamanten
kollidiert Lassen Sie uns weitermachen und ein C-Sharp-Skript
erstellen, das Spielerdiamanten
nennen Das wird
eigentlich kein richtiges Skript sein , es
wird nur eine Ganzzahl sein, was
öffentliche Int-Diamanten bedeuten wird. Wir
werden tatsächlich auch öffentliche
Int-Highscore-Diamanten haben . Es wird den
Diamond geben, den aktuellen Lauf und es wird
unsere High School geben. kommen wir
später zurück, aber
das sind die einzigen, die wir momentan brauchen. Danach werden
wir nur noch
ein neues Drehbuch erstellen. Hier werde ich
ein Shop-Skript erstellen und es
Diamond on the Script nennen . Alles, was ich habe, ist ein einziges Ereignis, das beim
Trigger ungültig ist, zwei D eingeben, wenn Kollisions-Spielobjekt mit Tag Player
verglichen
wird, dann lassen wir
das Ding, mit dem ich kollidiert bin , kollidieren und finden eine Komponente
namens Spielerdiamanten Lassen Sie uns weitermachen und hier tatsächlich geschweifte Klammern setzen, damit wir das Ganze in
die Anweisung aufnehmen und
eine Variable finden
können die Anweisung aufnehmen und
eine Variable finden , die
als Diamanten bezeichnet und um eins erhöht Mit anderen Worten, wenn
ich mit dem
Spieler kollidiere, werden die Diamanten um eins erhöht Und dann müssen wir die Instanz dieses
Prefabs tatsächlich löschen Lassen Sie uns also weitermachen und das Spielobjekt
zerstören, wodurch dieser aktuelle Diamant im Grunde
gelöscht wird Das Letzte, was
wir tun werden, ist eine Bedingung
hinzuzufügen, falls wir mit dem
unteren Rand der Karte kollidieren .
Wir wollen genau das Gleiche
tun, mich selbst
zerstören und es dieses Mal
nicht erhöhen Um das zu tun, werden wir
tatsächlich
einen Collider an der Unterseite
der Hauptkamera hinzufügen , weil dort das
Gameplay stattfinden wird Und wir werden
einen Edge-Collider zwei D hinzufügen, wir werden ihn uns da drüben
ansehen Das wird verwendet
werden, um
im Grunde zu verfolgen, ob wir das Ende
der Karte erreicht haben oder nicht Ich werde den Offset
des Y nach unten verschieben , bis es ungefähr da ist. Wir können es ein
bisschen unter dem Bildschirm haben, das
macht nicht wirklich einen Unterschied. Dann setzen wir die
Punkte auf minus fünf, oder besser gesagt auf minus
zehn, vielleicht sogar. Eigentlich wollen wir
größer sein als der Bildschirm. Sagen wir negativ 12,12 Nun, das wird auch ein
Trigger-Collider sein Dann werden
wir hier nur eine kleine Codezeile haben , in
der steht, ob ein Kollisionsspiel
ein
Punktvergleichs-Tag Wenn ich auf die Hauptkamera
treffe, möchte ich trotzdem
die Instanz dieses Prefabs löschen Das sollte eigentlich ziemlich
gut funktionieren , wenn wir
mit dem Spieler kollidieren Wir wollen
das Spielobjekt löschen, es aber auch dem Inventar des
Spielers hinzufügen Wenn wir mit
der Hauptkamera kollidieren, wollen
wir auch einfach aufhören
zu existieren Mal sehen, ob das funktioniert.
Ich werde zuerst versuchen, überhaupt keinen Diamanten hinzuzufügen. Bevor ich das tatsächlich
teste, muss ich natürlich mein
Spieler-Diamanten-Skript hinzufügen, was ich vergessen habe, und nachverfolgen, wie viele
Diamanten wir haben. Ich habe tatsächlich auch vergessen , das
Diamanten-Skript zum Diamanten hinzuzufügen. Gehen wir hierher und fügen
das Diamanten-Skript hinzu. Und ich denke, das ist alles. Weil
wir den Diamanten-Spawn bereits hinzugefügt haben. Lass uns auf Play klicken und genau testen
, ob das funktioniert oder nicht. Wir müssen testen
, ob Diamanten spawnen
oder ob noch keine Diamanten gespawnt sind Wir müssen natürlich mit der
Kamera
Schritt halten,
um zu sehen, ob wir
dort eine verpassen Diamond ist erschienen. Es sieht so aus, als ob das Tag Main
Camera nicht definiert ist Oh, wir haben es falsch geschrieben. Das ist eine sehr einfache Lösung.
Lassen Sie uns einfach das Leerzeichen
entfernen
und es erneut testen, weil wir derzeit Fehler
bekommen, die sagen, okay, ich weiß nicht, was die
Hauptkamera ist, aber das ist nur die Hauptkamera. Ein Wort. Lass uns das nochmal versuchen. Es sollte jetzt funktionieren. Nein, dieses Spiel ist
besorgniserregend schwer, aber ich werde es in einer Minute schaffen Offensichtlich hängt die Optimierung des Spiels
im Allgemeinen
davon ab, wie
schwer Sie diese von Ihnen geschaffenen Gegner machen Ich werde ein bisschen schummeln und
meine Gesundheit wieder auf Max übertragen,
weil ich Setzen wir die aktuelle Gesundheit auf sechs. Das ist eines der coolen Dinge
an der Entwicklung des Spiels. Das ist auch unmöglich,
was ich so wie es ist beheben muss. Da haben wir's. Da haben
wir einen Diamanten und es sieht so aus, als ob er
aufgetaucht ist, was großartig ist Lassen Sie uns diesmal meine Gesundheit
wieder auf zehn setzen. Wir werden einige
Fehler bekommen, weil wir
eigentlich nicht dafür gedacht sind , eine Gesundheit
über zehn zu haben. Aber es ist in Ordnung. Es wird das Spiel
nicht ruinieren. Ich werde versuchen,
einen Diamanten zu sammeln und es sah so aus, als ob er perfekt
funktioniert hat.
Ich sammle einen Diamanten. Wenn wir zu meinem Spieler gehen, können
wir sehen, dass ich
Diamanten als einen habe. So ziemlich alles
hat wirklich , wirklich gut funktioniert. Jetzt müssen wir nur noch
einen Zähler hinzufügen damit wir wissen, wie viele
Diamanten wir gesammelt haben. Gehen wir in meine
Benutzeroberfläche hier oben,
unter den Herzen, wir werden ein neues Bild erstellen
wollen. Ich werde das
vorerst einfach kopieren und etwas nach unten verschieben. Ich möchte, dass dieses
Bild ein Diamant ist. Ich werde die native Größe
einstellen. Ich werde es nur
natürlich verkleinern wollen ,
genau wie ich es bei dem anderen getan habe, um sicherzustellen, dass die
Pixel die gleiche Größe haben, es ist ein bisschen größer. Siehst du, das sieht für mich
ungefähr gut aus. Offensichtlich muss es, wie gesagt, nicht absolut exakt sein, aber es muss ziemlich genau
sein. Wenn du willst, dass ein Spiel gut aussieht ,
dann
müssen wir es
eigentlich nur verschieben. Anstatt
direkt darunter, werde
ich
das auf der anderen Seite haben, also so. Jetzt werde ich die
Partitur links davon haben, was für manche Leute vielleicht etwas
komisch aussieht, aber du kannst wählen,
was du machen willst. Ich könnte das später
ändern,
aber im Moment denke ich, dass
es ganz gut funktionieren wird. Lassen Sie uns das
nach unten verschieben, es ist in der Reihe, dann nennen wir
es tatsächlich Diamant. Dann müssen wir
nur noch in
meine Benutzeroberfläche gehen und
eine weitere Objekt-Benutzeroberfläche erstellen, sie Text
nennen, und Sie müssen einen Text Mesh Pro
erstellen. Du
wirst dieses Pop-up bekommen. Klicken Sie einfach auf Importieren und
es werden alle
Dateien importiert , die für
dieses spezielle Paket benötigt werden. Sie
benötigen die Beispiele
in den Extras nicht wirklich , also
werde ich sie nicht importieren. Dann nehme ich
mein neues Textfeld und setze es als
untergeordnetes Objekt dieses Diamanten ein Ich werde
es darunter ziehen,
genau wie wir es gleich zu Beginn des
Spiels mit dem Speicher gemacht haben Beginn des
Spiels mit dem Speicher Ich werde die
Position X auf
etwa -100 einstellen , Position Y auf Null Es ist in der Mitte.
Ich werde den Rest
dieser Box einfach so
anpassen, wie ich es für richtig halte. Ich denke, das ist wahrscheinlich gut. Dann bewege es auf und ab. Ich werde nur sichergehen, dass
ich das richtige Gespür habe. Ich möchte, dass es richtig ausgerichtet ist. Ich glaube, wenn die PIN aktiviert ist, werde
ich jetzt ph behalten,
weil ich
mir eigentlich keinen Fall vorstellen kann , in dem
Sie das Ganze verbrauchen würden. Du müsstest
eine Menge Diamanten sammeln. Aber nur um sicher zu gehen,
werde ich es so verschieben und Wrapin tatsächlich Das tut es nicht. Da
haben wir's, viel besser. Es wird sich jetzt so weit
wie möglich erstrecken, von oben nach hinten. Dann werde ich wählen
müssen, wie viel davon ich
natürlich anzeigen möchte. Lassen Sie uns einen Standardwert
von 540 testen , der
nicht sehr gut aussieht. Sie
müssen natürlich
eine andere Schriftart und
alles andere wählen . Mal sehen, wir haben
eine Schlagschattenschrift. Sieht nicht gut aus. Eine
Konturschrift könnte okay aussehen. Sie können
sie nicht wirklich sehen, da Ihnen nicht unglaublich viele Schriftarten gerade
unglaublich viele Schriftarten
zur Verfügung stehen,
die nur in Unity
integriert sind. Deshalb habe ich tatsächlich eine andere Schriftart
hinzugefügt,
die dieselbe Schriftart ist , die ich
verwenden werde und die ich im
Internet gefunden habe. Sie können eine ganze
Reihe von Schriftarten
kostenlos auf verschiedenen Websites finden . Stellen Sie sicher, dass sie
die richtige Lizenz haben. Aber wenn du
eine dieser Schriftarten findest, dann kannst du eine
Schrift finden, die ziemlich gut zu
deinem Spielstil passen sollte .
Ich werde den benutzen. Gehen wir
zu Verschiedenes und klicken Sie auf Wichtiges neues Asset. Hier ist es, Bloopf. Hier haben wir eine Schriftgröße. Ich würde nicht zu viel
damit herumspielen. Wir können sie ausprobieren, sobald
wir die Schrift hinzugefügt haben, aber sie einfach so lassen, wie sie sind. Um nun eine zusätzliche Schrift zu verwenden, können
wir
diese Textmaschenprosa eigentlich nicht verwenden Wir
müssen das löschen und eine neue Benutzeroberfläche
erstellen Wir werden nur einen normalen Text
wollen. Ich muss unter
Legacy gehen und auf Text klicken. Lassen Sie uns diesen Zähler benennen. Dann werde ich
genauso schleppen, wie ich es beim letzten Mal getan habe. Ich werde den horizontalen
Überlauf auf Überlauf setzen. Und ich werde es richtig
ausrichten. Beweg es so. Ich möchte, dass es in der Mitte
zentriert ist. Ich will, dass es Font
Bloop ist, siehst du da. Es sieht in Ordnung aus. Es ist allerdings
sehr verschwommen Und so wie wir das beheben, werden
wir die Schriftgröße tatsächlich vergrößern das Ding so
groß wie möglich verschieben Sie können es auf
maximal 300 setzen. Und ich finde, das
ist im Allgemeinen das, was man tun muss, damit die Pixel richtig
gerendert werden, dann muss
man nur die Skala
ganz nach unten reduzieren. Lassen Sie uns das herunterskalieren. Klicken wir darauf und skalieren proportional
bis zu dem, was wir wollen. Ich denke, wir brauchen
etwas kleineres als das. Versuchen wir es mit
0,12. Das könnte in Ordnung sein. Versuchen wir, die Farbe so zu ändern, wie wir sie
eigentlich haben wollen, nämlich Weiß Es ist mittig ausgerichtet, aber es sieht nicht so aus, als ob
es in der Mitte wäre. Also werde ich es so einstellen,
dass es unten ausgerichtet ist. Und lass uns 150 versuchen.
Das sieht okay aus. Ich bin vielleicht nicht Ihre
Lieblingsschrift, aber es ist die, die ich
für
diese Demonstration verwenden
werde . Sie können natürlich online eine
andere Schriftart finden ,
wenn Sie möchten, aber ich denke, im Moment funktioniert sie
tatsächlich ziemlich gut. Machen wir es
etwas dunkler, damit es nicht hellweiß ist, aber das sollte als
Basisschrift funktionieren , um den Überblick darüber zu behalten, wie
viele Edelsteine wir haben. Jetzt müssen
wir natürlich nur noch den Code schreiben, der sagt, okay, zeige hier die
richtige Zahl an. Und das alles wird
in unserem
Player-Diamond-Skript hier drüben erledigt . Wir werden in Unity einen
Verweis auf Eyes erstellen. Wir werden an die Öffentlichkeit gehen und den Update-Text für
ungültig erklären. Und darin, darüber hinaus, werden wir
tatsächlich
einen Verweis auf unseren Zähler erstellen . Wir werden sagen, Zähltext entspricht Diamanten, zwei Zeichenketten Mit anderen Worten, legen Sie
die Textvariable fest, was wir
in dieses kleine Feld hier schreiben Als wir darauf geklickt haben, was diesem kleinen Feld drin ist , das
festlegt, dass , das
festlegt, dass mein aktueller
Diamantenwert als Zeichenfolge als Ganzzahl gespeichert
wird Wir müssen
es in das Textformat konvertieren. Bevor wir das tun können,
werden wir
diesen Update-Text natürlich
jedes Mal, wenn wir den Text erhöhen, als ungültig bezeichnen diesen Update-Text natürlich
jedes Mal, wenn wir den Text erhöhen, als ungültig jedes Mal, wenn wir den Text erhöhen Gehen wir zur Kollision, holen Diamanten der
Komponenten und aktualisieren den Text Das sollte eigentlich ziemlich gut
funktionieren. Alles, was wir tun müssen, ist
zu Unity zurückzukehren und sicherzustellen, dass wir auch diese
beiden Variablen zugewiesen haben. Gehen wir zum Zähler hier
drüben und ziehen ihn rein. Fangen wir mit
einem Wert von Null an, also fangen wir nicht mit einer
zufälligen Anzahl an Diamanten an und schauen dann
, ob das tatsächlich funktioniert. Wenn wir jetzt auf „Spielen“ klicken, wird unser Diamantenzähler
auf der rechten Seite angezeigt. Wir haben unser
Herz auf der linken Seite. Mal sehen, ob wir sammeln
und das Spiel einfacher machen können. Mal sehen, ob wir Diamanten
sammeln können. Ich könnte
sogar die
Sprunghöhe noch ein bisschen erhöhen . Ich werde es aus 12 machen, ich werde 14 daraus machen. Mal sehen, ob das ein bisschen besser
funktioniert. Es könnte ein bisschen hoch sein. Lass es uns bei 12 belassen, aber vielleicht die
Geschwindigkeit ein wenig erhöhen. Machen wir Tempo sechs. Ich weiß, dass es ursprünglich sechs war, aber ich denke, es
hat tatsächlich ein bisschen besser funktioniert. Ja, das ist etwas
einfacher zu durchqueren. Das sollte gut sein. Wir müssen
natürlich nur auf einen schwachen Spawn warten, um zu sehen, ob wir unsere Diamantensammlung
testen können unsere Diamantensammlung
testen Ich glaube nicht, dass ich den sowieso
bekommen hätte. Nein, kein Diamant da drüben. Da ist einer. Da
haben wir's. Und Sie können sehen, dass es
wirklich, wirklich gut funktioniert. Wir haben jetzt einen Diamanten
und wir haben ihn gesammelt, und hoffentlich ist er da. Es gibt zwei Diamanten.
Das ist so ziemlich die Grundlage für unser
Diamantensammelsystem. Natürlich
werden wir
mit dem letzten
Feinschliff unseres Spiels beginnen . Aber wir haben alle Grundlagen
verstanden, bevor wir es bauen können. Wir müssen die
Nachbearbeitung hinzufügen, damit es viel besser aussieht, Audio und Musik und
alles andere Und wir müssen auch Einsparungen
hinzufügen, damit wir sicherstellen
können, wie
viele Diamanten wir haben, zu sparen Aber ich denke, wir sind bis jetzt ziemlich weit
gekommen und wir haben tatsächlich einen ordentlichen Teil
des Spiels
gemacht, wenn du
mitgemacht hast und
dein Spiel
so des Spiels
gemacht, wenn du
mitgemacht hast und ist
wie meins gerade, ein guter Job, weil du schon
so ziemlich ein Plattformspiel hast . Wie alles andere, was
wir
jetzt hinzufügen werden, wird
es viel besser machen. Aber das sind alle Grundlagen. Wir haben Feinde, wir
haben ein Gesundheitssystem und wir haben Mechaniker
und wir zählen
auch, und wir zählen
auch wie viele Diamanten
du sammelst. Alles
funktioniert so ziemlich genau so, wie wir es brauchten. Im nächsten Video werden
wir eine Spielschleife hinzufügen
, sodass
wir das Spiel kontinuierlich
spielen können, ohne dass wir klicken und klicken müssen , um es neu zu starten. Aber sobald wir das getan
haben, werdet ihr das Spiel mit
all seinen Grundkomponenten so gut wie
fertig haben, das Spiel
keineswegs beenden. Weil du immer noch
die Musik und
all die anderen
Dinge zur Nachbearbeitung hinzufügen all die anderen
Dinge zur Nachbearbeitung musst, damit es besser aussieht Aber du wirst die Grundlagen
des Spiels beenden , sollte ich
sagen Wie dem auch sei, das ist alles
im nächsten Video. Und wenn du mir bis
jetzt folgst, tolle Arbeit. Danke.
13. 12. Erstelle eine Spiel-Loop: Hallo, und willkommen
zurück bei Unity. Es gibt noch eine
Sache, die wir hinzufügen
müssen , damit dieses Spiel
so ziemlich alle Grundlagen eines Spiels bietet, das wir spielen können
sollten.
Und das ist ein Game-Loop. Mit anderen Worten, wir
können
das Spiel so lange spielen , wie wir wollen, denn wenn wir jetzt von der Karte
springen oder sterben, wenn etwas passiert, dann ist das alles. Bei uns passiert wirklich
nichts anderes. Und wir können nicht einmal wirklich auf
diese Weise sterben . Das ist das Erste
, was wir reparieren müssen. Aber wir können das Spiel offensichtlich nicht
weiterspielen, was zuerst das Problem ist. Fügen wir die Mechanik hinzu, die
besagt, dass wir sterben, wenn wir
die Rückseite des Bildschirms berühren oder wenn wir in
den Boden fallen Fangen wir damit an, das hier ein
wenig nach oben zu
bewegen , sodass es fast genau
am unteren Bildschirmrand erscheint Wenn du
das berührst, wirst du natürlich nicht mehr in
der
Lage sein , wieder nach oben zu kommen, so wie du zurückfliegen kannst. Das ist in Ordnung. Lassen Sie uns dieses Mal tatsächlich
einen weiteren Edge Collider hinzufügen dieses Mal tatsächlich
einen weiteren Edge Collider Wir werden ihn an den Seiten
der Bildschirme anbringen. Ich werde auf
Edit Collider klicken. Und ich werde den da rüber ziehen
. Ich denke, das ist
tatsächlich ein bisschen zu nah dran. Ich werde es
direkt hinter den Bildschirm ziehen. Und den zweiten
werde ich hier runterziehen. Und dann werde ich sie einfach so
anpassen, dass der Abstand genau
gleich ist. Ich werde es für beide -10,8
machen Ich werde das Y-Element auf
fünf und negativ auf fünf setzen. Das sollte eigentlich
so ziemlich alles sein, was wir brauchen. Alles, was wir
jetzt tun müssen, ist meiner Hauptkamera, meinem Player ein Skript
hinzuzufügen
, das besagt, dass ich auch sterben muss, wenn ich die Hauptkamera
berühre. Gehen wir zurück zu den Drehbüchern. Öffne die Spielergesundheit
hier drüben unter meinem Auslöser,
bleib drei D-Sache. Ich
werde sagen, wenn ich
mit einem Feind kollidiere und Unsichtbarkeitszeit
diese ist, dann tu das Andernfalls, wenn es kein Feind ist, wenn ich mit
der Hauptkamera kollidiere, also den
Grenzen der Karte,
dann ist es egal, wie
viel Unsichtbarkeitszeit Bei allem anderen muss
ich sofort sterben. Anstatt
das Take Damage als nichtig zu bezeichnen, werde ich einfach eine bestimmte Menge
Schaden anrichten und nachschauen, ob ich
tot bin und ob ich tot bin,
dann nenne ich Death Void. Andernfalls rufen Sie
dort an, wo es tot ist. Ich werde einfach selbst Death Void anrufen und sagen, okay, dann muss ich natürlich sterben und das
Spiel muss aufhören. Das ist eigentlich
so ziemlich der gesamte Code, den wir brauchen , um sicherzustellen, dass es sich um
ein zusätzliches Feature handelt. Jetzt gibt es noch eine Sache, an die wir uns erinnern
müssen. Ich habe vergessen,
diese beiden Auslöser zu
definieren, welcher oder besser gesagt
dieser ein Auslöser
, der untere Auslöser, aber
dieser sollte es auch sein. Lass uns auf „
Test starten“ klicken, ob das funktioniert. Wenn wir
mitrennen und gegen die Wand
springen , sterben
wir sofort. Wir können sehen, dass wir tatsächlich dorthin
geflogen sind. hebt
etwas anderes hervor, von dem ich dachte, dass es
ein Problem sein könnte, weil ich mich erinnere,
es ein- oder zweimal gesehen zu haben, aber ich war mir nicht sicher, warum der Grabstein
höher gestiegen ist, als er Das macht
es tatsächlich viel klarer. Was passiert ist, dass
wir, weil es
sich um ein Trigger-Stay-Event handelt, es
sich um ein Trigger-Stay-Event handelt, das Death
Void mehrfach ausrufen. Ich werde dafür
sorgen müssen, dass wir den Tod nur dann nennen,
solange wir nicht tot sind. Wenn mein aktueller Gesundheitszustand gut
und gleich Null ist, bin ich nicht tot. Mit anderen Worten, ich kann nicht
zweimal sterben. Ich kann nur einmal sterben. Denn was hier passiert ist, dass jedes Mal,
wenn wir sterben, all
diese Dinge wieder gemacht werden. Und es ist, als ob ich nur ein bisschen nach
oben gerückt bin, was eigentlich erklärt,
warum ich manchmal gestorben bin.
Es sah so aus, als ob ich auch
aufgestiegen wäre. Ich bin froh, dass wir
das so rausgekriegt haben . Ich habe
mich gefragt, was es ist. Wir müssen
hier die Klausel „Nicht
tot“ hinzufügen , die besagt,
okay, töte mich nur, wenn
ich nicht schon tot bin. Ich muss genau das
Gleiche hier drüben hinzufügen, ist tot. Stellen wir einfach sicher,
dass das sowohl hier als auch hier ist. Mit anderen Worten, wir können
die Todesklausel nicht nennen , wenn wir die
Todesklausel
schon einmal aufgerufen haben. Das sind die einzigen beiden Stellen
im gesamten Drehbuch, an denen
ich Todesklausel genannt habe. Alles sollte gut
sein. Lass uns zurückgehen und sehen, ob es jetzt funktioniert. Da sollte es einen Sprung machen. Man kann sehen, dass ich sofort sterbe, und das ist genau das, was ich
will. Und es sollte auch funktionieren. Wenn ich vom
unteren Rand der Karte falle, sollte
ich auch sterben,
was großartig ist. Das war alles so
geregelt, wie ich es brauchte. Jetzt muss ich natürlich meine Spielschleife
hinzufügen,
denn im Moment sterbe ich
einfach und es gibt keine Möglichkeit,
das Spiel noch einmal zu spielen. Ich werde hier ein bisschen
Code hinzufügen, der sagt, wenn ich sterbe, höre ich für eine Minute auf, dann
wird es schwarz. Und dann wird es aus Schwarz
verblassen, nachdem es in einer
neuen Art von Szene Und so wie ich das tatsächlich machen
werde, werde
ich die Szene selbst
neu setzen Anstatt also zu versuchen alles
wieder auf den ursprünglichen Zustand
zurückzusetzen,
anstatt zu versuchen, okay all diese Skripte wieder zu
aktivieren
und sie wieder einzufügen, werde
ich die Szene einfach
neu laden,
was im zu
aktivieren
und sie wieder einzufügen, werde
ich die Szene einfach
neu laden, Grunde dasselbe ist als
würde ich erneut auf diese Schaltfläche klicken, so weitermachen und
dann okay, mach es noch einmal Was für mich tatsächlich
sehr,
sehr gut funktionieren wird , weil ich einen
ausgeblendeten schwarzen Bildschirm haben
werde Ich sollte in der Lage sein,
es erneut zu laden und es dann zu tun. Und es wird
tatsächlich auch gut sein weil ich nichts von
dem zusätzlichen Zeug einprogrammieren muss
,
um es wieder in den Zustand zu versetzen , in dem ich
sein möchte, nämlich diesen. Also werde ich
ein neues To-D-Objekt erstellen. Ich werde ein Quadrat erstellen
und es Vorhang nennen, und es Vorhang nennen weil es
eigentlich kein Vorhang ist. Es wird sich
wie ein Vorhang verhalten. Es wird größer werden als mein ganzes Spiel ungefähr so groß. Lass mich das Alpha leiser stellen
, damit ich sehen kann, wo es ist. Sag, das ist ungefähr gut. Und
natürlich mit einem Offset von Null, dann werde ich die Alpa hochfahren Ich werde es
komplett schwarz machen. Ich werde
es ordnen und
100 schichten , so dass es vor
allem ist. Dieser Vorhang. Den Großteil des Spiels werde ich nicht existieren
müssen. Aber in dem Moment, in dem
ich es wollte, werde ich es einspawnen und es wird schwarz werden, und dann wird es existieren In dem Moment, in dem ich anfange,
werde ich von
Schwarz zu Durchsichtig übergehen wollen und mich
dann selbst deaktivieren Ich werde das alles mit Animationen
machen. Zuerst werde ich ein neues Skript
erstellen. Ich werde
es Curtain Script nennen. Bevor ich tatsächlich
programmiere. Zu diesem Zeitpunkt werde
ich es zu
meinen Vorhangobjekten hinzufügen. Ich gehe hier hin
und füge meinem
Curtain-Objekt ein
Curtain-Skript hinzu. So wie es ist. Sobald ich das gemacht habe, werde
ich das
Curtain Script öffnen und eine neue öffentliche Leere schaffen. Nenn es deaktivieren. Das heißt nur, dass Game
Object Set Active, False ist. Mit anderen Worten, hör auf zu existieren. Wir müssen
dieses Objekt erneut
von einem anderen Skript aus aktivieren . Was für
unsere Zwecke eigentlich in Ordnung sein
wird , denn diesem Death-Skript
werden wir
das Objekt wieder aktivieren und eine bestimmte Leere aufrufen. Wir sagen okay, zu
Schwarz verblassen, nicht zu Schwarz verblassen. Aber jetzt
brauchen wir diese Leere
hier drüben , die sagt,
okay, hör auf zu existieren. Ich werde das in
der Animation verwenden, um zu sagen, okay, ja, das ist alles gut. Dann werde ich hier drüben
eine neue Leere haben und sie Fade Two nennen. In dieser Leere wird
sich mein ganzer
Animationscode befinden . Ich gehe zum öffentlichen Animator, ziehe es heraus und ich werde sagen ein festgelegtes Bild wird ausgeblendet und ich
werde es auf Wahrheit setzen Das wird
einen Bullen haben , der es
mir ermöglicht, zu kontrollieren, okay, ich muss es jetzt ausblenden
und dann werde ich
den Rest machen , indem ich diese
Ereignisse im Animator verwende Aber ich brauche noch eine
Lücke und es wird die Leere
sein, um die Szene neu zu laden Und die Art und Weise, wie
wir das codieren werden, gehen wir
bis zum Anfang und
verwenden stattdessen Unity Engine, Scene Manager oder Scene
Management,
dieser Code wird Scene Manager,
Szene laden, Klammern
öffnen, Scene Manager, aktiven Szenennamen abrufen lauten Dadurch wird im Grunde genommen der Name der aktiven Szene
geladen,
die ich habe,
was meine einzige Szene ist Wenn ich zurück zu Unity gehe, habe
ich die Sable-Szene Lass uns das umbenennen
, weil das nicht der beste Name ist. Ich nenne
es einfach Hauptszene, weil es die einzige Szene ist,
die wir für dieses Spiel verwenden werden. Wir werden
alles darin bauen. Und wir werden diesen
Code hier haben, der sagt,
okay, wenn diese Leere aufgerufen wird, die
von der Animation aufgerufen wird, die
in einem Event benutzt wird, dann deaktiviere mich. Wenn dieser Code dann hier aufgerufen
wird, Fade Two, was vom
Player-Health-Skript
aufgerufen wird . Ich setze mein Fade-Out auf True und ich werde Fade-Out einschalten. Und in dem Moment, in
dem dieser Code, der auch von der Animation
aufgerufen wird, lade
ich
die Szene komplett neu und sie startet
genau dort, wo ich sein möchte Gehen wir zurück zu
Unity und erstellen eine neue Animation. Klar,
wir werden zwei brauchen. Die erste Animation wird Curtain Fade In heißen. Und wir wollen natürlich
aus vollem Schwarz ins Nichts übergehen. Und wir werden hier einen Puffer
hinzufügen. Es wird die Animation
durcheinander bringen, aber lassen Sie uns das einfach da drüben
auf Null setzen. Und dann stellen Sie sicher, dass wir auch das Set 20
haben. Jetzt habe ich ein Fade-In
und dann bleibt es hier. Und der Grund, warum ich das
hinzufüge, ist dass
ich hier ein
Ereignis hinzufügen werde Manchmal fügt man ein Ereignis
direkt am Ende eines Frames hinzu. Es gibt einige
Probleme, weil es in
diesem Frame nicht wirklich lange existiert. Wenn es das Ereignis technisch gesehen nicht
aufruft, geht es
manchmal zum
Anfang, ohne es aufzurufen, dann wiederholt es sich zweimal,
nur um all das zu speichern .
Ich werde ihm genügend
Zeit geben, dieses Ereignis aufzurufen. Und glauben Sie mir, eine
Drittelsekunde ist mehr als genug. Ich nehme das Curtain Script und sage „Deaktivieren“. Sobald ich eingeblendet bin,
wird es sich von selbst deaktivieren. Stellen wir einfach sicher, dass,
wenn wir den Vorhang öffnen, das die Standardeinstellung
ist, denn das ist es, was ich zuerst tun
möchte Sobald ich das Spiel starte, wird
es das tun. Dann werde ich ein neues Drehbuch
erstellen. Nennen wir es Curtain Fade Out. Dieses Skript, oder besser gesagt,
diese Animation,
wird leider nur
aufgerufen, solange ein Parameter vom Typ
Fadeout wahr ist. Ich glaube, so haben wir
es genannt, wenn wir wieder hierher zurückkehren. Ja, wir haben es Fade-Out genannt. Nur wenn Fade-Out wahr ist. Wir werden hier
keinen Staat verwenden, weil dies die
einfachste Zustandsmaschine der Welt ist. Aber wir werden die Zeit X
einstellen, wir werden die
Übergangsdauer auf Null setzen. Wir werden
die Bedingungen dafür festlegen. Fade-Out ist gleich True Solange Fader true ist, nennen
wir das
Fade-Out-Animation Das würde bedeuten,
okay, aus dem Nichts werden
wir das Ausblenden
auf Schwarz machen wollen Was wir danach hier
machen,
nachdem wir schwarz geworden sind, wollen
wir ein neues Ereignis
ausrufen . Wir werden hier
genau das Gleiche tun. Wir werden hier in 1 Sekunde
einen Puffer hinzufügen. Wir werden
dieses neue Ereignis, das Reload-Szene sein
wird, nennen Reload-Szene sein
wird, Das ist
so ziemlich alles, was wir tun
müssen, denn im
Moment
haben wir den gesamten Code, der
ausgeblendet wird, sobald wir beginnen, oder er wird eingeblendet, und zwar in
dem Moment wir die Szene starten und wieder ausblenden Aber wir brauchen immer noch etwas
, um diese Skripte aufzurufen. Mit anderen Worten, sobald
wir sterben, nachdem wir vielleicht ein oder zwei Sekunden gewartet haben, wollen wir dieses Skript aufrufen. Lassen Sie uns hier in mein Skript zur
Spielergesundheit gehen. Lassen Sie uns zunächst
einen neuen I-Zähler erstellen. Nennen wir es Reload, Delay. Es
wird sehr einfach sein Wir
sagen einfach Rendite, Rückkehr, Warten auf Sekunden, und wir
werden 2 Sekunden warten. Dann werden wir zwei Dinge tun
wollen. Zuallererst wollen
wir das Spielobjekt Curtain
aktivieren. Lassen Sie uns einen Verweis
darauf erstellen. Gehen wir zum öffentlichen Spielobjekt,
nennen wir es Curtain. Wir werden das
Gardinenset aktivieren. Mit anderen Worten,
aktivieren Sie den Vorhang erneut. Dann werden wir das Fade
to Void nennen wollen. Wir werden sofort Curtain, Komponente,
Curtain, Script und Fade Two machen . Ich glaube, so nennt man
die Leere. Ja, Fade Two. Mit anderen Worten, wenn wir
sterben, warte 2 Sekunden. Aktiviere den Vorhang und lass ihn verblassen. Oder
lassen Sie es ausblenden. Alles, was wir hier
am Ende des Todes tun müssen ist diese Verzögerung beim Nachladen als ungültig zu bezeichnen Ich denke, das sollte natürlich
alles sein , was wir
zum Arbeiten brauchen Lassen Sie uns das überprüfen, weil es
oft Fehler gibt , wenn
wir das tun. Aber lassen Sie uns sicherstellen, dass
alles so ist, wie wir es brauchen. Wir haben offensichtlich nur dieses
Curtain-Skript hier geändert. Und sehen Sie, wir haben den Animator nicht
aktiviert, aber abgesehen davon denke ich, dass
alles in Ordnung sein sollte Oh, wir hätten fast vergessen, die
Gardinen zuzuordnen. Gehen wir hierher, um mit unserer
Gesundheit zu spielen und sicherzugehen, dass wir den Vorhang richtig
zugewiesen haben .
Lass uns sehen, ob das funktioniert. Wenn wir spielen könnten, könnten wir
hineinschauen, wie wir wollen, was toll ist, wenn wir sterben. Lass es uns dort versuchen. Wir warten 2 Sekunden, was etwas lang sein kann. Dann können wir sehen, dass der Vorhang nicht so
aussieht, als ob er tatsächlich aktiviert
wird. Könnte hier ein Problem haben. Gehen wir einfach zurück
und schauen uns unseren Code an. Wie lange warten wir 2 Sekunden und setzen
Curtain Active auf True. Stellen wir sicher, dass diese
Reload-Verzögerung
aufgerufen wird, indem wir hier eine
Print-Anweisung setzen. So
musst du das testen. So muss man es nicht machen, so
mache ich es gern. Lass es uns nochmal versuchen. Und wir können sehen, dass die gedruckte Erklärung
eindeutig nicht funktioniert. Dieses Corotin wird also
nicht genannt. Und das liegt daran, dass wir Start Corotin nicht
geschrieben haben. Siehst du, es ist eine knifflige Sache. Manchmal habe ich es damals vergessen. Aber schreiben wir Start Corotine, Reload Delay und hoffentlich sollte
alles funktionieren Gehen wir jetzt zurück zu meinem Spiel. Klicken Sie also auf Play und
sehen Sie, ob wir funktionieren. Wenn wir sterben, fallen wir hin. Da haben wir's. Jetzt
müssen wir 2 Sekunden warten. Lassen Sie uns das Spiel ausblenden und wir kehren
zurück ins Spiel. Das
funktioniert eigentlich ziemlich gut. Die letzte Sache ist offensichtlich, dass
das Einblenden keine
wirkliche Wirkung hat, da
es nur an einer bestimmten
Stelle des Bildschirms erfolgt, was wir
überhaupt nicht wollen , um genau dort zu sein, wo sich
die Hauptkamera befindet. Ich werde nur noch ein
kleines bisschen Code schreiben. Zuallererst werden wir den Vorhang etwas
größer
machen , weil sich die
Kamera zunächst bewegt. Das
wird sich tatsächlich ändern, wenn wir unseren Startknotenpunkt hinzufügen. Aber lassen Sie uns es vorerst einfach
etwas größer machen , um
auf Nummer sicher zu gehen. Lassen Sie uns diese Skala
ein wenig erhöhen, nur damit wir nicht schon
aus ihr herausfallen. Als Letztes werden
wir
hier weitermachen, wo wir sagen werden, dass die Position der
Transformation dem Spielobjekt
entspricht .
Finden Sie in unserer Szene eine Hauptkamera. Die Position der
Hauptkamera ist die Position, an der ich sein möchte. Mal sehen, ob das funktioniert. Es
sollte einwandfrei funktionieren. Wir drücken jetzt die Play-Taste. Wir können sehen, dass wir eine
perfekte Einblendanimation haben nahtlos
funktioniert, wenn wir
sterben. Wir warten 2 Sekunden, was vielleicht ein
bisschen lang ist, aber ich werde sehen, dass es nicht
so aussieht, als ob es funktioniert. Ich denke, was das
Problem ist, es könnte die
Änderung der
Z-Position sein. Es ist knifflig Solche Dinge sind
die meiste Zeit. Lass uns spielen, Objekt Punkt,
finde die Hauptkameraposition. Und dann lassen Sie uns weitermachen und sicherstellen, dass wir
diese Position auf der Z-Achse tatsächlich auf
Null ändern , und das könnte unser Problem tatsächlich
lösen. Mal sehen, ob es
das tut. Da haben wir's. Es ist immer komisch, solche
Dinge. Die Hauptkamera befindet sich
etwas hinter der Szene
, weshalb sie uns ein
bisschen glitchy aussehen lässt Aber das ist alles
, was wir tun müssen. Wir haben dafür gesorgt, dass die
Position dieselbe ist. Jetzt können wir das
Spiel unendlich spielen. Wir haben einen
sogenannten Game-Loop,
was wirklich, wirklich cool ist, weil das die Grundlage ist, die
wir für unser Spiel brauchen Wir haben alles gemacht, was
wir jetzt brauchen, außer all den zusätzlichen Dingen wie Audio
und Musik und all dem. Lassen Sie uns einfach das Testskript löschen
, das wir
hier bereitgestellt haben und Testskript löschen
, das wir
hier bereitgestellt das das
Drucken des Skripts war. Wir haben die Position
jetzt offensichtlich
geändert , da
die Nullposition zurückgesetzt wird Aber alles andere
sollte in Ordnung sein. Wir haben jetzt tatsächlich
nicht nur ein Spiel, diese Verblassung der Animation,
um das Spiel,
glaube ich,
etwas professioneller aussehen glaube ich,
etwas professioneller Das ist also die Grundlage
dieser Episode, abgeschlossen ist als auch
die Grundlage unseres Spiels So ziemlich fertig,
was ziemlich cool ist. Im nächsten Video
werden wir mit dem Speichern beginnen, sodass wir speichern können, wie viele
Diamanten wir tatsächlich behalten. Und wir haben eine High
School, die auch nach dem Ende
des Spiels
weitergeht , damit wir nicht jedes Mal unseren
Fortschritt verlieren. Aber das ist so ziemlich
alles für dieses Video. Und wenn du
mitgemacht hast und alles genauso
funktioniert wie meins,
ist das großartig. Und hoffentlich funktioniert dein Game Loop
genau so. Und du hast es
geschafft, so ziemlich
die gesamte Basis
einer Plattform, eines Spiels, aufzubauen . Herzlichen Glückwunsch
, dass Sie es bis hierher geschafft haben. Und wenn alles genauso
läuft wie bei mir, ist das
großartig. Danke.
14. 13. Unser Spiel speichern: Hallo, und willkommen
zurück bei Unity. Nun, das wird wahrscheinlich die kürzeste Episode
des gesamten Kurses
sein , weil
wir in dieser Episode nur das Speichern
hinzufügen werden. Das scheint ziemlich
kompliziert zu sein. Wenn wir bestimmte
Speichermethoden verwenden würden, wäre
das sogar viel
schwieriger als das, was
wir tun werden. Aber wir werden die einfachste und grundlegendste Methode verwenden,
die Unity Ihnen ermöglicht,
in seiner Spiel-Engine zu speichern, die als Spielereinstellungen bezeichnet wird. Jetzt nur als Haftungsausschluss, falls Sie planen, dieses Spiel zu
veröffentlichen, und vielleicht vor allem, wenn es sich ein Multiplayer-Spiel oder
etwas Ähnliches handelt Ich meine, ich
weiß nicht genau, wie du von dieser Plattform
zu einem Multiplayer-Spiel
springen wirst . Aber weißt du, wenn du
das als Sprungbrett benutzt, um
mit der Spieleentwicklung zu beginnen, und du planst, eine richtige,
kommerziell tragfähige
Version zu veröffentlichen , dann wirst du dich wahrscheinlich dafür entscheiden müssen deine Spiele auf
eine andere Art
zu speichern Denn die Art und Weise, wie ich meine Spiele speichern werde
, besteht darin bestimmte
Dateien auf dem Computer zu speichern Und ich speichere sie
einfach
nicht auf die
verschlüsselteste oder irgendwie schwer zu knackende nicht auf die
verschlüsselteste oder irgendwie Art und Weise. Wenn ich also mein
ganzes Spiel auf diese Weise speichern würde, würde
es niemanden schwer machen ,
diese Dateien zu bearbeiten und sich selbst
eine Menge zusätzlicher
Fähigkeiten oder Münzen zu geben . Nun, das ist nicht das größte
Problem, denn ich meine, wenn jemand das wirklich für
ein Einzelspieler-Spiel machen
will , kann
er das irgendwie Und sowieso manipulieren
nicht viele
Leute, die
Videospiele spielen manipulieren
nicht viele
Leute, die
Videospiele Aber wenn du vorhast, so
etwas wie ein
Multiplayer-Spiel zu machen , ist
das natürlich eine
unglaublich schlechte Sache Weil man nicht zulassen kann, dass
einige Spieler in der Lage sind,
sich selbst eine
Menge Dinge zu geben und andere Spieler sowieso nicht . Wenn dieser
Haftungsausschluss geklärt
ist, speichern wird es meiner Meinung nach
ziemlich in Ordnung sein, für die meisten grundlegenden
Indie-Plattformen zu Manche Leute sind vielleicht anderer Meinung, aber es ist ziemlich einfach, es
zu manipulieren Aber das ist bei solchen Indie-Spielen nicht wirklich ein Problem
, weil der Spielspaß vom Spieler
bestimmt wird, und wenn er es
vermasseln will, kann er das tun Aber ich denke, das gilt für
jedes Spiel im Allgemeinen. Fangen wir mit
dem Speicherskript an,
denn es wird nicht lange
dauern. Alles was wir tun müssen, ist
hier rüber zu unserem
Diamanten-Skript hier drüben zu gehen . Kein Diamanten-Skript. Ich spiele hier drüben
ein Diamantenskript. Ich werde darauf
doppelklicken. Und wir werden eine neue Leere
haben. Ich werde es öffentliche Leere nennen. Bewahren Sie Diamanten in diesem Block auf, um
zu
sagen, ob Diamanten mehr sind
als Highschool-Diamanten. Mit anderen Worten, wenn wir
unsere High School hinter uns haben, dann wollen wir die
Spielerpräferenzen in Diamanten setzen, wir wollen sie auf Diamanten setzen Diese kurze
Codezeile hier wird im Grunde
nur sagen,
okay, nimm, was auch immer
ich eingeben möchte,
was meine Diamantenvariable ist, was meine Diamantenvariable ist, und füge es in diese Ganzzahl
in Playerprefs namens Diamanten ein,
was im Grunde bedeutet, es in einer Datei zu
speichern Wenn ich das
später haben will, kann ich unter Playerprefs Ich werde
das tatsächlich ganz oben
in meiner Startlösche Ich werde Void Start sagen. Und ich werde sagen, dass
Highschool-Diamanten das Gleiche sind, wie Spielerpräfs Diamanten bekommen. Das wird eigentlich erst
funktionieren, wenn wir
das Spiel mindestens einmal gespielt haben, denn bis dahin werden wir
hier keinen Wert haben Lassen Sie uns einfach eine
kurze Wenn-Aussage hinzufügen, ob die
Spielereinstellungen wichtige Diamanten haben, anderen
Worten, wenn wir
bereits etwas in diesem
Diamanten-Ding gespeichert haben , dann holen wir es raus Dieser Code wird offensichtlich nicht ausgeführt
, wenn
wir das Spiel zum ersten Mal spielen Highschool-Diamanten
werden auf Null gesetzt. Wir können
diesen Wert
dort tatsächlich als Standardwert festlegen ,
was auch eine gute
Programmierkonvention ist Weil Unity
diese Werte
standardmäßig alle auf Null setzt , weil wir sie in der Luft
zugewiesen haben. Wenn Sie jedoch
eine andere Engine
oder eine andere
Programmiersprache verwenden , ist dies möglicherweise nicht der Fall. Also lass uns einfach
weitermachen und das tun. Und dann sagen wir, ein Start ist ungültig. Und wenn wir etwas in Diamanten
gespeichert haben, dann bring es raus und verstaue
es in Highschool-Diamanten. Dann sind die gespeicherten
Diamanten hier ungültig. Wenn unser aktueller Punktestand besser
ist, wollen wir ihn ersetzen. Alles, was wir darunter
tun werden, ist,
auf Spielereinstellungen und Speichern zu klicken Lassen Sie uns weitermachen und all
das in die Erklärung aufnehmen. Das wird
so ziemlich der gesamte Code sein, den wir benötigen
, um unser Spiel zu speichern und die Dinge zwischen den Sessions zum
Laufen zu bringen. Jetzt müssen wir das nur noch
als Leere bezeichnen. Gehen wir zurück zur Spielergesundheit. Sobald wir sterben, hängt
das auch von unserem Spieler ab. Los geht's, Spielobjekt, hol dir Diamanten von
Component Player, spare Diamanten. Lass uns das testen.
Wenn wir zurück in unser Spiel gehen, klicken wir auf meinen Spieler. Wir können sehen, dass alle
unsere Standardwerte hier sein werden. Lass uns auf Play klicken. Mal sehen, ob wir Diamanten Null
haben und
Highschool-Diamanten Null sind. Und das wird sich nicht ändern.
Wir werden keinen Fehler haben, weil wir das
verwendet haben, was wichtig ist. Mal sehen, ob wir
versuchen können, einen Diamanten zu bekommen. Bisher sieht es nicht
nach Glück aus. Sobald wir einen haben, werde
ich diesen
ersten Code testen . Ich habe einen Diamanten, jetzt ist der
aktuelle Diamant auf einen gesetzt. Ich werde sterben.
Mal sehen, ob es funktioniert. Derzeit
werden wir es zurücksetzen. Lassen Sie uns das jetzt schnell unterbrechen und wenn wir zu meinem Player zurückkehren, sollten
wir sehen können
, dass wir
die Highschool-Diamanten tatsächlich auf eins gesetzt haben. ich das nächste Mal sterbe, werde
ich nicht
mehr als einen Diamanten haben. Also werde ich
mein Spiel erneut starten. Mal sehen, ob alles so funktioniert wie wir es
erwartet haben. Wir haben immer noch
Highschool-Diamanten auf eins gesetzt, und das funktioniert tatsächlich,
egal wie oft
man das Spiel spielt, wie oft
man es schließt oder was auch immer. Das Speichersystem wird funktionieren
, weil wir den Wert in unserem
Spiel
jetzt in einer separaten Datei speichern. Das ist alles, was
wir tun müssen,
damit das Speichern in meinem Spiel funktioniert. Ich werde natürlich später einen Startbereich
hinzufügen, in dem ich
den Highscore des Spielers sowie
den
Titel und alles andere anzeigen kann . Aber im Moment können wir wissen, dass alles so funktioniert,
wie es sollte. Das ist wirklich die
allerletzte Mechanik
, die wir unserem Spiel hinzufügen müssen. Danach werden wir die Grafik
verbessern und den Startknotenpunkt
und all die anderen zusätzlichen Dinge,
Audio- und Grafikverbesserungen
hinzufügen Audio- und Grafikverbesserungen Aber im Moment ist das quasi
der letzte Schritt bei der Entwicklung
unseres Spiels Und wir haben bisher
alles gemacht. Eine großartige Arbeit, wenn Sie mir bis zu dem Punkt
folgen würden, an dem ich jetzt bin. Jetzt müssen wir natürlich noch
einige Änderungen an diesen vornehmen noch
einige Änderungen an diesen da einige davon unmöglich
sind Und vielleicht ein
bisschen debuggen, um
sicherzustellen, dass unser Spiel etwas flüssiger
aussieht Aber bis jetzt
funktioniert
eigentlich alles so , wie
man es erwarten würde Und wir scheinen Moment keine großen
Probleme zu
haben. Unser Spiel ist also in einem
ziemlich guten Zustand und wir haben alle grundlegenden Mechaniken, wie ich schon sagte, wenn du mitmachen konntest und dein Spiel so
ist wie meins im
Moment, tolle Arbeit. Denn das ist eigentlich ein ziemlich beeindruckendes
Spiel,
vor allem, wenn Sie in der Vergangenheit noch keine
Unity-Spiele gemacht haben vor allem, wenn Sie in der Vergangenheit noch keine
Unity-Spiele gemacht . Tolle Arbeit, dieses
Video bis zum Ende zu verfolgen. Vergewissere dich, dass du mit
diesem Video
auf dem Laufenden bist, bevor du
dir das nächste ansiehst, denn dann werden
wir dem Spiel den letzten
Schliff geben. Und du willst an diesen
Punkt kommen, bevor du weitermachst. Aber hoffentlich funktioniert
alles in deinem Computer genauso
wie in meinem. Im nächsten Video beginnen
wir mit dem Hinzufügen unserer visuellen
Verbesserungen. Danke.
15. 14. Visuelle Elemente verbessern: Hallo, und willkommen
zurück bei Unity. Nun habe ich im
letzten Video erwähnt, dass wir so
gut wie alle
Grundlagen unseres Spiels fertiggestellt haben. Und ich weiß
, dass ich das schon einige Male gesagt habe, aber es ist eigentlich
so ziemlich völlig richtig. Jetzt haben wir alles getan
, was Sie für
eine Basisplattform benötigen. Auch hier haben wir eine zufällige
unendliche Kartengenerierung. Wir haben eine Spielschleife,
du kannst sterben und neu starten. Wir haben ein
Punktesystem mit Speichern, und wir haben eine ganze Reihe von Feinden und verschiedene Hindernisse
und alles andere Und natürlich kann man, wie ich
schon sagte, sterben und
wieder erscheinen und alles wird gerettet Und es
funktioniert alles so, wie wir es brauchten. Aber es gibt ein paar Dinge, die
wir nicht hinzugefügt haben. Zuallererst ist einer von
ihnen ein Startknotenpunkt
, auf den wir
etwas später im Kurs eingehen werden, sodass Sie nicht
sofort zum Spiel zurückkehren müssen . Du kannst dich ein bisschen entspannen. Zweitens haben wir
keine Möglichkeit
, deine Highscores anzuzeigen, obwohl sie gespeichert sind, sind
sie nicht wirklich da. Und wir werden dich auch
in den Startknotenpunkt bringen. Aber am wichtigsten ist, dass das Spiel immer noch nicht sehr gut aussieht. Wenn ich diesen Vorhang
deaktiviere, wenn du könntest, genau wie ich, kannst
du ihn einfach deaktivieren,
wann immer du willst denn es wird die
Einblendanimation deaktivieren. Wir
deaktivieren das tatsächlich und aktivieren
es dann später per Code wieder. Das Ausblenden wird
immer noch funktionieren, aber wenn du
Dinge in deinem Spiel sehen willst,
ohne es deaktivieren
und verschieben zu müssen, dann deaktiviere es vorerst einfach. Ich werde das machen. Das
Spiel sieht nicht gut aus. Wir haben diesen riesigen,
großen, dunkelblauen Hintergrund. Wir haben nichts
im Hintergrund vor sich. Wir
haben immer noch keine wirklichen Auswirkungen darauf , wann wir sterben
oder Münzen sammeln. Wir
ändern sie einfach alle sofort. Wir werden das alles
in diesem Video ändern und mit einem visuellen
Upgrade des Spiels
beginnen Aber bevor ich
damit anfange, wollte
ich nur erwähnen , dass ich zwischen
diesem und dem letzten Video einige
dieser Bodenfliesen geändert habe. Nun, das ist
überhaupt nicht wichtig, weil ich mir
fast sicher bin , dass Sie nicht genau
die gleichen
Bodenfliesen haben wie ich. Aber einige meiner Bodenfliesen waren unmöglich zu durchdringen. Ich dachte nur, ich würde
erwähnen, falls jemand bemerkt, dass sie etwas anders aussehen, ich habe ein paar
Dinge verschoben. Ich habe zum Beispiel
das leicht nach oben und das nach unten verschoben , ich glaube, das war früher
unmöglich, also habe ich das auch nach oben verschoben.
Und diesen habe ich nach unten verschoben. Sie sind so ziemlich
genau wie früher nur mit ein paar
geringfügigen Änderungen. Aber wie ich schon sagte, das
ist überhaupt nicht wichtig. Ich dachte nur, ich hätte es
erwähnt, falls jemand verwirrt ist und
einen Unterschied bemerkt. Aber egal,
wir werden damit
beginnen, das
Bildmaterial dieses Projekts zu aktualisieren Lassen Sie uns zu Sprites und wichtigen neuen Assets
übergehen, so
wie wir es immer tun Diese zehn Sprite-Assets hier
drüben werden natürlich immer unter
dem Video verlinkt sein und sie befinden sich auch
unter diesem Lass uns weitermachen und
alle zehn neuen Sprites auswählen , die wir
gerade dort gesammelt Und dann setzen wir einfach
all diese Einstellungen auf Single 12 und stellen keinen Filter Wenn Ihre Pixel pro
Einheit unterschiedlich sind,
verwenden Sie natürlich Ihren eigenen Wert. Sie sollten dies jedoch so einstellen,
dass Sie Pixelkunst verwenden. Und ich werde die Single nur zur Sicherheit
setzen , weil wir auf einige Probleme
mit dem Herzen
gestoßen sind, aber es ist kein großes Geschäft. Wie dem auch sei, lassen Sie uns damit beginnen diesen
Hintergrund in unser Spiel zu ziehen Wir haben noch nie
ein solches Objekt erstellt, aber es erstellt einfach
automatisch ein Sprite-Objekt, wenn dieses
aktuelle Sprite Ich glaube, wir haben es einmal gemacht und
ich werde es einfach wieder tun, weil
es der
einfachste Weg ist, ein Sprite zu erstellen Dann werde ich es
nur so unter meine
Hauptkamera
ziehen
und sicherstellen, dass es jetzt ein untergeordnetes Objekt
der Hauptkamera ist , und ich
werde seine Position auf Null setzen Das wird mir tatsächlich
ermöglichen, dass es sich immer
mit der Hauptkamera bewegt. Wenn ich die
Hauptkamera so bewege, können
Sie sehen, wie sich der Hintergrund mit der Hauptkamera
bewegt. Du kannst dir vorstellen, dass
es
ungefähr so aussehen wird, während
wir das Spiel spielen . Das wird immer im Hintergrund
sein, was so ziemlich
genau
das ist, was wir uns für ein
Hintergrundobjekt wie dieses
wünschen. Lassen Sie uns einfach
weitermachen und sicherstellen, dass es sich um ein solches
untergeordnetes Objekt handelt, und wir haben seine
Position auf Null gesetzt. Wenn wir dann weitermachen
und auf Play klicken, können
wir tatsächlich
sehen, welchen Unterschied
das für unser Spiel macht. Wir haben jetzt ein viel
besser aussehendes Spiel. Wir haben keine
zufälligen blauen Dinge
im Hintergrund. Jetzt sehen wir so aus, als
ob es wirklich gut aussieht. Spiel. Aber es
gibt ein paar Probleme. Zuallererst sind unsere
Herzen weg. Ich scheine zufällig
Schaden an diesem Ding zu nehmen. Und es sieht nicht so aus, als ob es überhaupt Feinde
gibt. Aber ich erleide aus
irgendeinem Grund immer noch Schaden außer diesen. Der Grund dafür
hat eigentlich mit
der Reihenfolge und Ebene
unserer Sprites zu tun der Reihenfolge und Ebene
unserer Sprites Die meisten meiner Sprites sind
auf Reihenfolge und Ebene Null eingestellt ,
weil das die Standardeinstellung ist und das keine Probleme
verursacht Aber jetzt, wo wir einen Hintergrund
hinzugefügt haben auch
die Reihenfolge
und die Ebene Null hat, er einfach zufällig
Vorrang vor diesen Sprites, sodass wir nichts mehr sehen
können Setzen wir das auf
etwa minus fünf. Es spielt keine Rolle,
wie Sie es einstellen, solange es weniger ist als
der Rest Ihres Spiels. Lassen Sie uns auch weitermachen
und
meine Hauptkamera zurücksetzen , weil ich
es nicht wirklich bemerkt habe. Aber ich habe sie
leicht nach links verschoben, weshalb die erste
Wolke etwas daneben war. Wenn wir jetzt spielen müssten, müssten
wir
sehen können , ob diese Probleme gelöst
wurden, wir unser Herz und
unseren kleinen Gegenspieler haben und wir jetzt normale
Spawning-Dinge mit Diamanten haben Und wir können sehen,
dass das Spiel dadurch schon viel besser
aussieht Wir hatten eine
massive Verbesserung, aber wir haben nicht wirklich
etwas anderes im Hintergrund. Wir haben einfach diesen Himmel und wir lassen diese
Wolken sprießen, die den Vordergrund
und das Spiel bilden Aber wir haben
keine interessanten Dinge
im Hintergrund Und ich habe sowohl
diese
Wolken im Hintergrund als auch diesen Adler erstellt . Es
wird ziemlich
interessant sein
, . Es
wird ziemlich
interessant sein
, sie durch unser Spiel
fliegen zu lassen, aber wir haben sie noch nicht hinzugefügt. Um das zu tun,
müssen wir ein Drehbuch schreiben. Bevor ich jedoch mein Drehbuch schreibe, werde
ich für all diese Dinge ein
Pre-Fab machen. Denn wenn du es erraten hast, werden
wir sie ziemlich
genau so spawnen , wie wir
den Rest unserer Map spawnen, nur dass sie im Hintergrund
sein werden, also sie nicht wirklich wichtig
sein, es werden nur Sprites
sein, die sich bewegen
, um hereinzuholen Ich werde genau das machen, was ich mit dem Hintergrund gemacht
habe. Ziehe sie einfach da rein, als ob du
sie jetzt alle auf dem Bildschirm siehst,
sie sehen ziemlich cool aus. Vielleicht muss ich das sogar
offen ändern , etwas weniger So kannst du sehen, dass
sie nicht Teil des Spiels und
Teil des Hintergrunds sind Aber darüber
mache ich mir gleich Gedanken. Lassen Sie mich zuerst einfach meine
Fertighäuser machen. Ich gehe zu
Fertighäusern und rufe an,
ich werde sie tatsächlich als Hintergrundwolke
12.3 benennen. Ich denke, das fasst
sie 12.3 benennen. Ich denke, das fasst
sie Jetzt werde ich
diese Objekte aus meiner Szene löschen. Jetzt habe ich meine drei Fertighäuser mit meinen
Hintergrundwolken hier drüben Bevor ich
mit etwas anderem anfange, füge
ich einen starren Körper hinzu was vielleicht
etwas verwirrend erscheint, aber es wird damit zu
tun haben, wie ich möchte meine Wolken
durch die Luft bewegen Ich werde starre Körper
verwenden , um die Wolken
durch den Himmel zu bewegen. Lassen Sie uns weitermachen und drei
starre Körper mit zwei D drauf haben . Wählen Sie alle aus und stellen
Sie sicher, dass sie alle auf kinematisch eingestellt Jetzt, wo ich es habe, muss ich
das manuell machen. Es ist ein bisschen schade. Da haben wir's. Den
muss ich verpasst haben. Ordnung, jetzt habe ich drei kinematische starre Körper zu meinen
Wolken hinzugefügt Und das ist eigentlich
alles, was ich für sie brauche. Aber das Ego ist etwas
komplizierter , weil der
Adler offensichtlich animiert ist. Anstatt
das zu animieren, wie wir es getan haben, werde
ich dir einen Trick zeigen Wenn Sie vier
Sprites auswählen und sie hineinziehen, erstellt
Unity bereits eine
Animation für Sie,
quasi automatisch, weil dies die einzige Animation
ist, die
wir haben möchten Es wird
tatsächlich perfekt funktionieren. Ich werde diesem Adler einen Namen wir
tatsächlich für uns geschaffen haben. Wir haben diesen Adler,
einen Sprite hier drüben, wir haben einen Eagle-Controller Und wenn wir den Animator
öffnen, können
wir sehen, dass wir bereits
diese Adler-Animation haben Wenn wir darauf doppelklicken oder
sie lieber so öffnen, können
wir sehen, dass wir eine Ego-Animation
haben, die sich
von allen vier meiner Sprites unterscheiden wird Wenn ich zu meinem Adler gehe
und auf Play klicke, sollten
wir sehen können, dass das ziemlich
perfekt
funktioniert, was großartig ist Das ist eigentlich so ziemlich alles,
was ich tun müsste, aber wenn ich es für mich getan habe,
glaube ich nicht,
dass Flattern unbedingt
die beste Geschwindigkeit ist Ich mache weiter und
ändere das auf eine Wiedergabegeschwindigkeit von 0,5 und wenn ich dann auf Play drücke, kann
ich
das in der Aktion sehen Und lass mich sehen, ob ich mich entscheide Ich denke, das ist viel
besser für einen Adler. Aber so ziemlich das,
was wir hier gemacht haben, kann
man nicht manuell machen. Wir sind zu einer Animation gegangen und haben einen neuen Animationsclip
erstellt eine Animator-Komponente
hinzugefügt Und als
wir unseren Clip erstellten, wurde natürlich ein
Controller für uns erstellt
, und dann haben wir unseren Clip
zur Standardanimation gemacht Aber offensichtlich hat
Unity das alles für uns erledigt. Wenn Sie es
manuell machen möchten, können Sie das auch tun. Folgen Sie einfach genau dem gleichen
Prozess, den wir zuvor gemacht haben. Aber wenn Sie
schnell ein Objekt und eine Animation
erstellen möchten und
nur eine Animation benötigen, oder wenn Sie
so etwas haben möchten , bei dem
es sich um eine Animation
handelt, wird sie immer abgespielt. Das ist ein ziemlich
einfacher Weg. Und dann können Sie einfach die Wiedergabegeschwindigkeit
ändern, was Ihnen gefällt. Das ist mein Eagle Done. Lass mich weitermachen und das auch
in Fertighäuser ziehen Ich werde das in Eagle und nicht in
Eagle One umbenennen. Dann öffne ich nur
das und
gehe zurück
zu meiner Szene und
füge einen starren Körper hinzu ,
genau wie ich es bei
den anderen gemacht habe, außer
dass ich diesen kinematisch mache Jetzt werde
ich ein paar kurze Drehbücher schreiben Ich werde
im Grunde ein Skript haben
, das in einem Adler
spawnen wird,
und ein anderes Drehbuch, das in den Wolken spawnen
wird Und ich lasse sie über die Geschwindigkeit
fahren, mit zufälliger
Geschwindigkeit über den Bildschirm Mit zufälligen Geschwindigkeiten, ähm, aus einem bestimmten Bereich. Und sobald sie auf
der anderen Seite
etwas Bestimmtes erreichen , werden
sie deaktiviert. Jetzt werde ich keine Grenze auf
der rechten
Seite des Bildschirms verwenden . Ich werde nicht sagen, dass man hier eine
Grenze setzt und sagt,
okay, wenn der Adler da drüber fährt. Weil ich nicht möchte, dass der
Spieler an Grenzen
stößt und auf
dieser Seite des Bildschirms stirbt. Ich denke, es muss
nur auf der linken Seite sein. Du solltest in der Lage sein,
dem Spiel einen Schritt voraus zu sein. Ich muss manuell
codieren. Ich muss sagen, sobald diese Position eine bestimmte Position überschritten hat, müssen Sie Feierabend machen. Ich werde das
eigentlich etwas
leichtfertig machen, aber es wird viel besser
funktionieren. Ich werde hier ein
Grenzobjekt haben, und ich werde es so
bewegen. Und dann werde ich nur noch versuchen, ständig zu berechnen,
okay, wo beziehe ich mich
auf die Hauptkamera? Wie weit ist meine tatsächliche Position
und meine relative Position? Ich würde sagen, sobald
ich dieses Grenzobjekt hinter mir
habe, werde ich es tatsächlich auf die andere Seite
legen weil Dinge von beiden Seiten
hereinspawnen werden von beiden Seiten
hereinspawnen Also lass es mich eins
da drüben und eins drüben bewegen. Nehmen wir an, sobald ich eines dieser
Grenzobjekte
hinter mir habe, kann ich Feierabend machen
und alles ist erledigt. Das E wird von rechts nach
links
fliegen und die Wolken
werden von links nach rechts fliegen. Also muss ich nur sicherstellen, dass ich Überblick darüber
behalte,
welcher welcher ist. Aber das wird ziemlich gut
funktionieren. Ich nenne diese eine
Grenze links. Ich nenne das
hier drüben, Boundary rechts. Diese werden
es mir ermöglichen, den Überblick zu
behalten , was wo ist. Ich ändere das
auf -11,5 und mache daraus 111,5. Sobald
mein Objekt diesen Punkt überschritten habe, werde
ich einen Spawn haben Ich werde das tatsächlich ein bisschen
so verschieben , weil die
Wolken ziemlich groß sind und ich nicht möchte, dass sie außerhalb
des Bildschirms erscheinen, sondern auf dem Bildschirm nicht möchte, dass sie außerhalb
des Bildschirms erscheinen, sondern auf dem Bildschirm.
Lass uns daraus 14 machen Die Adler sind ziemlich klein, also denke ich, dass 12 hier gut
sein sollten Das ist so ziemlich alles, was wir tun
müssen, um unsere Szene einzurichten Jetzt müssen wir nur noch das
Drehbuch für dieses Spawnen schreiben. Ich werde die Eagles aufhalten, lassen Sie uns ein C-Sharp-Skript erstellen
und es Eagle Spawn nennen Doppelklicken wir darauf, um
es zu öffnen. Jetzt müssen wir nur
noch einen Code schreiben, der besagt, okay, jedes zufällige Intervall
spawnt in einem neuen Adler Lassen Sie uns einen, nennen
wir ihn Float, erstellen. Wir nennen das Minimum
Y und Maximum Y, und das ist die Stelle,
an der wir auf der Y-Achse spawnen wollen auf der Y-Achse spawnen Dann erstellen wir
einen weiteren öffentlichen Float, nennen ihn Min-Time
und Maximum-Time So lange wollen wir zwischen
den Adlern warten. Dann müssen wir nur noch einen Verweis
auf mein vorgefertigtes öffentliches
Eagle-Spielobjekt Eagle erstellen mein vorgefertigtes öffentliches
Eagle-Spielobjekt Eagle Bevor ich anfange, werde
ich
dieses ungültige Update löschen und eine neue Routine
erstellen Ich zähle, nenne
es Spawn Delay. Dann sage ich hier nur Ertrag und gebe für
Sekunden neues Gewicht
zurück, für
Sekunden neues Gewicht
zurück von
der Minimalzeit bis zur Maximalzeit Ich werde dort auf eine
Zufallszahl warten. Ich habe tatsächlich meinen
zufälligen Punktbereich vergessen. Lassen Sie mich einen zufälligen Bereich
von der Mindestzeit
bis zur Maximalzeit schreiben . Es wird eine
Zufallszahl innerhalb
dieses Intervalls auswählen und dann auf die
lange
Minute warten , die fertig ist. Ich möchte eine neue Leere schaffen. Nenn es Spawn Eagle. Gehen wir wieder hoch und
nennen meinen Spawn Eagle Void. wir das getan haben,
müssen wir nur noch das eigentliche
Ding hier
drüben programmieren , bestimmt, was zu tun
ist wenn wir einen Adler spawnen wollen Das Erste, genau
wie ich es zuvor getan habe,
ist, dass
Spielobjekt für Adler der
Instantiierung von Adler als Spielobjekt entspricht Instantiierung Mit anderen Worten, erstelle eine Instanz dieses
Prefabs Jetzt möchte ich, dass meine S-Position hinter der Hauptkamera liegt. Und dieses Skript
wird tatsächlich an
die Hauptkamera angehängt. Lassen Sie mich sagen, transformierte
Opposition entspricht dem neuen Vektor drei Lassen Sie mich hier oben eine
Offset-Variable erstellen, so
wie wir es
die ganze Zeit gemacht haben Lass uns gehen, meine verwandelte
Opposition. Rechnen Sie die Kamera plus diesen Offset und es wird
ein negativer Wert sein. Weil ich im Rückstand sein will. Dann werde ich
eine Zufallszahl zwischen meinem
minimalen Y und meinem maximalen Y wählen wollen . Gehen wir zum zufälligen Bereich
zwischen min Y und Mai Dann setze ich einfach mein Z
auf Null, weil
es ein Zwei-D-Spiel ist, das macht nicht wirklich
einen Unterschied Dann
muss ich jetzt nur
noch ein weiteres Skript erstellen , das an den Eagle angehängt wird
. Und ich werde sagen, okay, reise so lange. Und dann, sobald ich hinter
dieser Grenze bin , dann löschen. Ich werde dasselbe Drehbuch für
The
Eagle and the Cloud schreiben . Ich werde es Himmelsobjekt nennen. Das wird es etwas
komplizierter machen, aber es wird auch eine etwas
bessere Art sein , es zu codieren. Lassen Sie uns den Inhalt des
Skripts verdoppeln. Wir werden
eine öffentliche Transformation wollen. Wir werden es Grenze nennen. Dieses Ding,
auf das wir achten werden. Wir werden einen öffentlichen
booleschen Wert haben und
ihn „richtig reisen“ nennen , weil der Adler
natürlich richtig
reisen wird Die Wolken werden sich nach links
bewegen. Also werden wir es verwenden, um
festzustellen, in welche Richtung wir gehen. Dann ist
das Letzte, was wir darunter brauchen, ein
Hinweis auf einen starren Körper. Ich werde das natürlich einfach
reinziehen, wenn
ich meine Objekte in meinem Spiel
erstellt habe. Ich werde
es auf die Fertighäuser legen. Das Letzte, was ich will, ist ein
öffentliches Fahrzeug namens Velocity. Alles, was ich
innerhalb von Fixed Update tun werde,
ist, dass ich bei
jedem einzelnen Frame
sicherstelle, dass meine Geschwindigkeit
meines starren Körpers
gleich einem neuen Vektor zwei ist gleich einem neuen Vektor zwei und was auch immer meine
Geschwindigkeit sein sollte, sowie Null, weil ich nicht möchte, dass sie
sich auf und ab bewegen. Jetzt gehe ich zu jedem Bild und stelle
sicher, dass ich
auf diese Weise reise. Dann auch unter jedem
einzelnen Rahmen. Ich werde sagen, wenn ich dann richtig
reise, weiß
ich, dass ich hinter der Grenze
sein muss. Wenn ich der Grenze voraus bin, möchte
ich sicherstellen, dass
diese Instanziierung
der Objekte zerstört diese Instanziierung
der Ich werde sagen, ob
Reisen richtig ist. Und dann werde
ich sagen, wenn die
Transformationsposition x größer
als die Grenzposition x ist, dann möchte ich sicherstellen diese Instanz
meines Spielobjekts
zerstört wird. Mit anderen Worten, lösche
das Objekt , an das es angehängt ist. Wenn ich nicht nach rechts reise,
heißt das, dass ich nach links reise. Lassen Sie mich also genau diesen Code kopieren. Sag einfach, wenn meine
Reiseposition x kleiner als meine Grenze ist, dann möchte ich diese
Instanz des Spielobjekts zerstören. Das ist eigentlich der gesamte Code, den
wir benötigen, um sicherzustellen, dass sich
unsere Objekte in der richtigen Richtung bewegen. Aber wir müssen dem natürlich Werte
zuweisen,
denn im Moment hat das absolut keinen Wert für Grenzlinien,
Rechtsverkehr oder Geschwindigkeit. Es hat nur einen Wert für einen starren Körper. Gehen wir zurück zu Eagle Spawn und erstellen wir ein paar neue Variablen Public Float,
Minimalgeschwindigkeit sowie Höchstgeschwindigkeit und
so werden wir
die Geschwindigkeit unserer Adler wählen Wir holen uns die Komponente und suchen das Himmelsobjekt-Skript
auf unserem Eagle Wir werden sagen, dass die
Geschwindigkeit dem
zufälligen Bereich zwischen
unserer Minimalgeschwindigkeit
und unserer Höchstgeschwindigkeit entspricht zufälligen Bereich zwischen
unserer Minimalgeschwindigkeit . Jetzt haben wir diese Geschwindigkeit
abgehakt und wir haben
offensichtlich schon den Firstkörper , der sie hineinziehen wird. Jetzt brauchen wir diese Variable, die sich
nach rechts bewegt. Und wir wissen
, dass das für einen Adler wahr sein wird. Lassen Sie uns weitermachen und diese gesamte Codezeile
kopieren , die
bis hierher führt, und einfach sagen, dass nach rechts reisen gleich
wahr ist , weil es sich von links nach rechts bewegen wird. Zu guter Letzt benötigen
wir diese Grenze und
wir werden
einen Verweis auf die Grenze
für die Transformation der Adler hier oben erstellen , sie Adlergrenze
nennen Dann lassen Sie uns den Code erneut kopieren. Und darunter sagen Sie einfach, dass Pfeilgrenze
gleich der Grenze des Adlers ist Wir werden
diese Routine von Beginn unseres Spiels an aufrufen , sobald wir anfangen ,
unser Spiel beginnt Bei diesem Verhalten
warten Sie einige Sekunden und beginnen
dann, in einem Adler zu spawnen,
was so ziemlich
alles ist, was wir tun müssen Jetzt müssen wir nur noch all
diese Dinge im Editor zuweisen und testen, ob es funktioniert Ich denke, das sollte es.
Das einzig Letzte, was wir
unter all dem hinzufügen müssen,
ist natürlich noch einmal Corotin aufzurufen
, damit wir sagen können, ob wir spawnen
wollen Das wird natürlich auch dann
weitergespielt wenn der Spieler tot ist.
Aber das ist in Ordnung. Sie können Wolken vorbeiziehen lassen und Adler vorbeifliegen lassen, nachdem
der Spieler tot ist Es ist kein allzu großes Problem. Und offensichtlich ist der
Spieler sowieso nur für etwa 2 Sekunden
tot. Es macht also nicht wirklich
einen Unterschied. Aber das ist
der ganze Code, den wir brauchen. Wir beginnen unsere
Kotin am Anfang. Wir sagen, okay,
warte ein paar Sekunden. Dann spawnen Sie diesen Adler, setzen Sie seine Position
auf hinter uns und dann auf eine zufällige Y-Position und stellen Sie
dann sicher, dass seine Geschwindigkeit
dieser Zufallszahl entspricht. Die Tatsache, dass er richtig
reist, ist wahr und setzt diesem Ding diese
Grenze Und dann haben
wir im Eagle all diese Werte
hier und jedem
einzelnen Frame zugewiesen . Wir stellen sicher, wir mit
der richtigen Geschwindigkeit reisen und stellen sicher der richtigen Geschwindigkeit reisen und wir nicht
an dem Punkt sind, an
dem wir sein sollten. Lassen Sie uns Unity öffnen, zurück
zu unseren Prefabs gehen und wir werden dieses
Object-Sky-Objektskript zu unserem Eagle hinzufügen Das Einzige, was wir unterschreiben werden
, ist der starre Körper. Alles andere wird
für uns erledigt. Eigentlich werden
wir es nur aus
Gründen der Effizienz auch
zu den Clouds hinzufügen. Vorerst, nur damit wir es nicht später machen
müssen, gehen
wir von Himmelsobjekt hier drüben zu
diesem Wolkenhimmelobjekt
hier drüben zu dieser Wolke und Himmelsobjekt
hier drüben zu dieser Wolke. Und stellen Sie sicher, dass wir unsere starren Körper mit reinziehen
. Sie müssen das jetzt nicht
tun, aber ich werde einfach gehen und dann gehen
wir zur Hauptkamera und
lassen Sie uns neue Komponenten hinzufügen. Und wir werden
meinen Eagle Spawner hier drüben hinzufügen. Ich setze
das minimale Y auf 0,6 und dann
das maximale Y auf, sagen
wir mal 2,5 negativ 0,6 und
2,5 . Lassen Sie uns das hier drüben
negativ 0,62 0,5
zuweisen. Ich würde sagen,
ich möchte, dass die Mindestzeit
zwischen den Adlern
mindestens 10 Sekunden und die
maximale Zeit irgendwo bei 14 liegt negativ 0,62 0,5
zuweisen. Ich würde sagen,
ich möchte, dass die Mindestzeit zwischen den Adlern
mindestens 10 Sekunden und die maximale Zeit Ich werde
diesen Adler hier drüben zuweisen. Ich glaube, der Offset.
Lass es uns einfach testen. Aber es sollte wahrscheinlich eine, ich würde sagen, vielleicht negative 12 sein. Wenn wir uns die
Hauptkamera an Position Null ansehen, ist
der Spieler
derzeit negativ 12. Das ist ungefähr der Ort, an dem ich möchte, dass
die Eagles spawnen. Stellen wir das auch ein. Fahren Sie hier fort und fahren Sie auf minus 12, dann auf Mindestgeschwindigkeit. Ich
fange einfach bei drei an und stelle die Höchstgeschwindigkeit auf vier ein. Denken Sie daran, dass sich die
Kamera
derzeit mit 1,8 bewegt . Sie wird
schneller als die Kamera sein, aber sie ist möglicherweise nicht
viel schneller, was gut ist. Lassen Sie uns das auf 2,5
und 3,5 setzen. Als letztes , in Richtung
Adler,
werden wir hier die rechte
Grenze einstellen . Mal sehen, ob
das alles tatsächlich funktioniert. Wenn ich auf die
Play-Taste drücke, stelle sicher, dass wir nichts vergessen
haben
oder auf Fehler gestoßen sind. Mal sehen, hier drüben, wir spielen das Spiel
gerade. Sobald wir
ihn spawnen, sollten wir
diesen Adler haben , der hinter uns
auftaucht Schauen wir mal, ob wir da drüben
aufpassen. Oh, das war ein Diamant. Hoppla Es wird mindestens 10
Sekunden dauern, bis wir einen sehen. Ah,
da ist einer. Wir haben einen Adler. Das sieht ein bisschen nach einem Feind
aus. Ich werde nicht lügen. Also
müssen wir es ein
bisschen höher anheben , nur weil ich nicht weiß, ob es genau dort sein
sollte, wo es ist. Ich werde die Grenze tatsächlich etwas
festlegen und ich werde auch
sicherstellen , dass die Zeit ein
bisschen anders ist ,
weil wir nicht wirklich so viele Adler wollen Lassen Sie uns ein paar Anpassungen vornehmen. Lassen Sie uns das
minimale y auf eins und das maximale y auf drei setzen. Lassen Sie uns die Mindestzeit
auf 10 Sekunden und die Höchstzeit auf
etwa 20 Sekunden festlegen. Dann machen wir die
Minimalgeschwindigkeit zur Maximalgeschwindigkeit. Ich denke, die sind beide gut. Lassen Sie uns
den Adler vielleicht etwas
transparenter machen , damit er nicht aussieht, als ob er so sehr
Teil des Spiels ist. Machen wir 180 draus. Das mag eine seltsame
Designentscheidung sein, aber glauben Sie mir, es wird
es ein
bisschen besser unterscheiden lassen ,
sodass er nicht wirklich
Teil des Spiels ist Wir können
das natürlich nach Bedarf anpassen, aber lassen Sie uns zunächst testen, wie
das funktioniert Natürlich müssen wir eine
Weile warten, bis das Ding erscheint, aber es
sollte herauskommen Da drüben ist ein Adler.
Und da haben wir ihn. Sie können sehen, dass es aussieht, als wäre es von den Wolken
verdeckt. Aber das sieht meiner Meinung nach ziemlich
cool aus. Natürlich müssen wir noch ein paar Wolken
hinzufügen damit
es viel besser aussieht. Aber im Moment denke ich, dass
die Eagles
ein Erfolg sind . Das wollte
ich nicht tun Wir können sehen, dass wir
einige davon haben. Wir müssen
diese Zeit vielleicht sogar ein bisschen verlängern. Aber lass uns das einfach schnell
ändern. Ich will das tatsächlich 30 Sekunden und zehn machen
, und dann werde ich sie
vielleicht auch ein
bisschen schneller machen, damit
sie vorbeifliegen können. Aber das ist
so ziemlich das gesamte
Eagles-Spawn-Skript , das wir bisher brauchen Jetzt müssen wir mit den
Wolken anfangen. Das Cloud-Skript
wird dem
Eagle-Skript tatsächlich so ähnlich
sein. Ich werde
das Ganze kopieren und ein neues Skript
erstellen, es Cloud Spawn
nennen Ich werde tatsächlich das Ganze
einfügen. Jetzt gibt es ein paar Dinge, die
ich beachten muss. Zuallererst wird
es mir eine ganze Reihe
von Fehlern geben , weil ich hier
dieselbe Klasse habe hier
dieselbe Klasse ohne zu
viel zu erklären, was eine Klasse ist. Im Grunde ist es so, wie Einheit sagt, oder besser gesagt,
scharf sagt Einheit. Was für eine Art von Code. Die Tatsache, dass sie
jetzt denselben Namen
haben , ist ein Problem. Lassen Sie uns weitermachen und
das in Cloud-Spawn ändern. Es muss genau derselbe
Name sein, den du hier hast. Und das sollte eigentlich jeden einzelnen
unserer Fehler beseitigen . Jetzt können Sie
dieselben Variablennamen verwenden, nichts von diesem Abschnittsproblem, aber wir müssen natürlich einige davon
ändern. Lass uns das zuerst in Spawn-Cloud
ändern, dann
müssen wir auch das aktualisieren Dann ändern wir das
auf Cloud-to-Cloud-gebunden. Es könnte so aussehen, als
hätten wir das
in einem Skript machen können, und das hätten wir
ehrlich gesagt tun können. Ich dachte, es wäre besser, zwei zu machen, nur weil
wir ein paar Unterschiede
und Änderungen
vornehmen Und es wird ein bisschen leichter
zu verstehen sein, wenn wir
zwei verschiedene Skripte haben,
anstatt
zu versuchen, sie zu
einem zu gruppieren und Adler und
Wolken gleichzeitig Ja, wir hätten
das in einem Skript machen können, aber ich werde einfach zwei verwenden Der Effizienz
oder eher der Einfachheit halber kann
ich dieses Minimum Y
und das Maximum Y beibehalten , weil
ich das immer noch brauche. Ich will natürlich immer noch meine Zeit haben. Ich habe meine Game Object Cloud. Ich will meinen Offset
so haben wie er war. Es wird jetzt offensichtlich ein positiver Wert
sein. Und ich habe meine Mindest
- und Höchstgeschwindigkeit , die
unterschiedlich sein werden, und meine Transformation, so
ziemlich alles andere können wir
eigentlich beibehalten. Wir haben die Spawn-Verzögerung. Wir werden eine Cloud
instanziieren. Wir spawnen an einer Position, wir sagen es mit
zufälliger Geschwindigkeit Wir werden das Reisen hier in
Ordnung bringen
und sicherstellen, dass wir die richtige Grenze
haben Das sollte
so ziemlich alles sein, was wir für unsere Clouds brauchen. Gehen wir zurück zu meinem Spiel. Geh zu meiner Hauptkamera. Ich werde jetzt dieses
Cloud-Spawn-Skript
darunter hinzufügen Cloud-Spawn-Skript
darunter Und offensichtlich können Sie sehen,
dass es
dem Eagle-Skript sehr ähnlich sieht , weil es so
ziemlich dasselbe Skript Wir können so ziemlich
genau dasselbe verwenden, aber wir haben ein
kleines Problem. Wir haben hier nur ein
Objekt für eine Wolke, weil wir
nur einen Adler hatten. Aber für die Wolken müssen wir aus einer zufälligen Auswahl von drei
auswählen. Das ist eigentlich ganz
einfach zu machen. Alles was wir tun müssen, ist
daraus ein Array zu machen. Anstatt Cloud als Objekt
instanziieren zu sagen, sagen
wir dann Instanziieren
offener eckiger Klammern, zufälliger Bereich von Null
bis zur Länge der Also nehmen wir die Wolkenpunktlänge
und schließen dann die Klammer und Schließt die eckige Klammer. Und das sollte alles sein, was
wir jetzt tun müssen Wir wählen im Grunde nur ein zufälliges Ding aus dieser Reihe aus. Gehen wir stattdessen
zurück zu Unity. Wenn wir nach unten scrollen, können
wir sehen, dass
wir jetzt ein Cloud-Array haben,
was wir brauchen. Ziehen wir alle drei
Objekte hierher. Lassen Sie uns das minimale Y
auf Null und das
maximale Y auf drei setzen. So können Sie Wolken spawnen lassen. Ich werde dieses minimale Y tatsächlich
negativ zwei und das
maximale Y drei
machen , ich werde
die Mindestzeit auf
2 Sekunden und die maximale
Zeit auf 4 Sekunden setzen 2 Sekunden und die maximale
Zeit auf 4 Sekunden Ich werde die
Mindestgeschwindigkeit auf minus eins und die
Höchstgeschwindigkeit auf Null setzen. Minus 0,5 ist der Offset, ich mache 12, weil
es andersherum heißt. Das sollte offensichtlich so ziemlich alles sein, was wir
bisher brauchen. Stellen Sie nur sicher, dass wir
unsere Grenze auf der linken Seite haben. Ich hätte fast auf die
falsche geklickt, die Grenze ist links, als unsere Wolke begrenzt ist. Gehen wir runter und überprüfen das. Lass uns sehen, ob das funktioniert. Wenn wir jetzt auf Play klicken, sollten wir des
Spiels sehen
können, wie die Wolke von rechts bald nach Beginn des
Spiels sehen
können, wie die Wolke von rechts
auftaucht Lass uns weitermachen und
sehen, ob es funktioniert. Und da haben wir eine
Wolke, die gerade laicht. Aber das
sieht ganz offensichtlich nach einem Teil des Spiels Das ist ein kleines Problem für uns, weil wir es
offensichtlich wollen. Wir können
sie auch darin laichen sehen, was auch ein kleines Problem ist Wir müssen
diesen Offset eindeutig etwas erhöhen, und wir müssen sie
etwas transparenter machen Lassen Sie uns den Offset
auf etwa 20 erhöhen. Dann lass uns zu jeder
einzelnen Wolke weitermachen und
das Alpha vielleicht auf
180 statt 255 setzen. Das mag ein bisschen drastisch sein, aber wir können es nach und nach
anpassen Ich denke, es
sollte vorerst in Ordnung sein. Gehen wir zurück zu meinem Spiel, und ich denke, die Wolken können sich auch
etwas schneller
am Spieler vorbeibewegen . Gehen wir zurück zur Hauptkamera und stellen die
Mindestgeschwindigkeit auf negativ ein. Und die
Höchstgeschwindigkeit ist minus 0,5. Sie
bewegen sich eigentlich immer. Mal sehen, ob das ein bisschen besser
aussieht. Wenn wir im Spiel spawnen, sollten
wir in der Lage sein, Wolken beim Spawnen zu
sehen dann kommen sie von der Seite, da haben wir eine
Wolke, die
das Spiel natürlich viel
schöner aussehen lässt das Spiel natürlich viel
schöner aussehen Jetzt gibt es am Anfang
eine kleine Verzögerung, da
wir
keine Cloud haben , um die Einfachheit
etwas zu vereinfachen Ich werde einfach ein paar vom Anfang des Spiels herausholen, einfach so, und das Spiel von Anfang an etwas
lebendiger aussehen
lassen . Ich werde
diese Geschwindigkeitswerte natürlich
selbst festlegen
müssen , weil es sich dabei um Sonderfälle
handelt, denen keine Medien zugewiesen sind. Formgebung werde ich
die Geschwindigkeit auf minus
0,5 stellen . Ich
werde auch diese
ändern und sicherstellen, dass ich die Grenze auf
die linke Seite setze. Dann lass mich
weitermachen, ich
werde die Geschwindigkeit nur vorerst
auf Null setzen. Sie werden erst zerstört,
wenn wir an ihnen vorbei sind. Lass uns weitermachen und sehen
, ob das ein bisschen besser aussieht. Vielleicht kann dieser sehr
spezielle
eine Geschwindigkeit von minus 0,2 haben und dieser kann negativ
sein. Nur um ihm
ein bisschen Einzigartigkeit zu verleihen .
Wenn wir
jetzt auf Play klicken, können wir tatsächlich sehen sowohl unsere Wolken als auch unsere
Adler jetzt in unserem Spiel sind Und das lässt es
meiner Meinung nach viel besser aussehen. Es gibt immer noch diese kleine
seltsame Lücke hier drüben. Also werde ich dort
drüben
vielleicht noch eine Wolke hinzufügen , damit
es ein bisschen besser aussieht. Aber ich denke, das ist eigentlich
ein ziemlich cooler Start für die visuellen Updates unserer Projekte. Und wir haben bisher tatsächlich
ziemlich viel getan. Wir haben natürlich den Hintergrund
und die Adler und die Wolken
hinzugefügt , und meiner Meinung nach sieht
es
viel schöner aus als zuvor Aber es gibt noch zwei weitere
Dinge, die wir hinzufügen müssen. Und sie sind ziemlich einfach hinzuzufügen, sie sind nicht besonders kompliziert. Das
fügt tatsächlich auch einen schönen Effekt bei dem die Spiekugeln versteckt sind, was ein Spiel vielleicht ein
bisschen schwieriger macht Aber ich denke, dass das Spiel
dadurch
insgesamt viel schöner und lebendiger aussieht insgesamt viel schöner und lebendiger da man quasi
durch Wolken springt,
anstatt einfach durch diese blaue Masse zu wandern Und wir können sehen,
dass die Wolken zerstört werden ,
so wie sie es sein sollten Die Adler lassen
sich Zeit. Aber ich bin da, wir sind
da, da ist unser erster. Ich finde, das Spiel sieht dadurch
viel schöner aus, was ziemlich cool ist Aber wie gesagt,
es gibt keinen Partikeleffekt, nicht nur, wenn du einen Diamanten
sammelst,
sondern auch, wenn du stirbst Und ich denke,
wenn Sie Ihrem Spiel
diese kleinen
Dinge hinzufügen , wird es auf lange Sicht viel
beeindruckender aussehen. Vor allem für
jemanden, der nicht unbedingt weiß
, wie einfach sie sind. Durch das Hinzufügen sieht
das Spiel viel
beeindruckender als die Menge an Arbeit
, die das Hinzufügen erfordert. Also werde ich dir jetzt
genau zeigen, wie das geht. Wir werden zu
meinem Diamond Sprite gehen. Ich werde eine Komponente hinzufügen, die als Partikelsystem
bezeichnet wird. Nun, das ist wohl eine
der kompliziertesten Komponenten
in Unity ehrlich zu sein, verstehe ich nicht einmal ganz,
wie es funktioniert, aber ich habe einen Weg gefunden,
damit zu
arbeiten, der normalerweise für die meisten meiner Spiele
funktioniert Und ich denke, es ist auch ein ziemlich
einfacher Weg, das zu tun. Also werde ich es dir jetzt zeigen ohne
zu sehr ins Detail zu gehen. Offensichtlich basiert dieses
Partikelsystem auf einer ganzen Reihe
verschiedener Dinge , die Sie hier aufgelistet sehen
können. Wir haben die Geschwindigkeit eines
Lebens, Form, Emission, all diese ziemlich
überkomplizierten Dinge, aber über die meisten
brauchen wir uns vorerst
keine Gedanken zu machen Ich werde Ihnen sogar zeigen, welche das ermöglichen, wir brauchen Emission
und wir brauchen Form Wir brauchen keins von denen. Wir werden
Farbe im Laufe unseres Lebens brauchen und wir werden
Größe im Laufe unseres Lebens brauchen. Dann
sollte keiner der anderen so notwendig sein. , was wir tun möchten, müssen wir möglicherweise die
Textblattanimation aktivieren Je nachdem, was wir tun möchten, müssen wir möglicherweise die
Textblattanimation aktivieren. Aber lass es uns vorerst einfach
so versuchen. Sobald Sie
diese fünf verschiedenen Menüs aktiviert haben , öffnen Sie den Renderer
und stellen Sie sicher, dass Sie
dieses Material als
Sprites-Standardmaterial festlegen dieses Material als
Sprites-Standardmaterial Jetzt spawnen wir
in zufälligen Sprites. Es gibt noch eine
weitere kranke Sache. Wir müssen diesen
Text hinzufügen, eine Blattanimation. Wir werden
das auswählen. Wir werden den Modus
„Sprites“ auswählen Und wir machen weiter
und das ist für unseren Diamanten, wir wollen in unseren Diamanten spawnen,
16. 15. Einen Start-Hub erstellen: Hierher. Und willkommen
zurück bei Unity In dieser Episode werden
wir nun
einen Startpunkt für
unsere Plattform schaffen , ein Spiel. Wir
werden ihm auch einen Namen geben. Ein Name,
auf den ich gekommen bin, ist Sky Miner, was furchtbar ist Aber zum Glück wird dieses
Spiel für niemanden
veröffentlicht Es ist nur für euch, zu
lernen, wie man Plattformen erstellt. Ich habe mich für Sky
Miner entschieden und werde einen
Startpunkt für dieses Spiel einrichten mach es
so, dass du das Spiel nicht automatisch spielst.
In dem Moment, in dem wir auf Play klicken. Im Moment sind wir
direkt im Spiel. Und so will ich nicht sein.
Ich möchte, dass es so ist, dass du wählen kannst, wann du anfängst. Ich werde erklären, wie ich das alles machen werde, aber im Grunde
werde ich
wie einen Startknotenpunkt
am Original bauen , sodass es ziemlich dramatisch klingt, es ist nur eine große Wolke. Ich werde den
Titel auch ganz oben haben. Dann werde ich es
so machen, dass das Spiel beginnt,
sobald Sie einen bestimmten Punkt überschreiten. Nicht in der Minute, in der du das Spiel
startest, der Minute, in der du
einen bestimmten Punkt überschritten hast, bevor ich mir selbst einen Schritt voraus bin. Lassen Sie mich weitermachen und
all meine verschiedenen Vermögenswerte importieren. Ich gehe mit der rechten Maustaste. Neues Asset importieren,
wie immer. Dann importiere ich
diese beiden von mir
erstellten Assets namens
Start und Titel. Lassen Sie uns sie einfach auf 12 setzen, Einzelpunkt, kein Filter. Und dann gehe ich tatsächlich zu dieser Wolke hier drüben. Und ich werde
es löschen , weil ich
es ersetzen werde. Ich werde auch zu diesen vorgefertigten
Clouds
gehen und sie
einlagern , weil mir die Tatsache nicht
gefällt, dass sie einfach
darunter liegen Meiner Meinung nach sieht
das sehr gut aus. Dann ziehe ich
diese Startwolke rein. Sie können sehen, wie es aussieht. So habe ich mir das
für den Start des Spiels vorgestellt. Du fängst mit diesem riesigen Ding an, offensichtlich nicht so, es
muss ungefähr da sein Du fängst mit dieser großen Wolke in der Mitte an und ich
werde sie tatsächlich nach unten verschieben wollen nicht so viel
vom Bildschirm
einnehmen, aber
wir wollen auch nicht so wenig. Ich denke, das ist
wahrscheinlich gut. Ich könnte das im Laufe der Zeit anpassen, aber ich glaube, ich werde es noch ein bisschen
nach oben verschieben. Eigentlich wollen wir mal sehen. Wir können
das natürlich ändern, wenn wir weitermachen, aber ich denke, das ist eigentlich
ziemlich gut, um jetzt damit anzufangen. Ich werde den
Titel in der Mitte
des Bildschirms haben , damit ich
alles sehen kann, was vor sich geht. Ich werde auf diese Symbole klicken. Ich kann all
diese zusätzlichen Dinge ausblenden, aber ich könnte mich auch dafür entscheiden, einige dieser Wolken zu
verschieben ,
jetzt, wo ich
diesen neuen Hub-Bereich erstelle, aber darauf komme ich später zurück. Lassen Sie mich zunächst einfach diese Clouds
deaktivieren. Ich werde auch meinen Titel
hineinziehen, und Sie können meinen Titel
dort in der Mitte
des Bildschirms sehen . Ich denke, es ist ein ziemlich anständiger
Titel. Zumindest vorerst. Ich werde
sie tatsächlich deaktivieren, nur weil das Ausblenden nur im Editor
funktioniert und ich sie in
der Mitte des Bildschirms sehen möchte. Dann gehe ich zu
meinem Titel
, den ich als Sprite eigentlich behalten
möchte Ich möchte kein UI-Objekt sein, es auf Null zentrieren und
es dann hier ganz oben platzieren es dann hier ganz oben Ich werde diese
Benutzeroberfläche auch vorerst deaktivieren, weil ich auch nicht möchte, dass sie zu
Beginn meines Spiels auftaucht. Ich werde das alles natürlich korrigieren , wenn ich mein Spiel
erstelle. Aber haben Sie einen Moment Geduld mit
mir. Zuallererst werde ich das gleich hier
haben. Sky Miner. Eigentlich möchte
ich als Erstes eine Titelanimation erstellen Lass uns eine neue Animation erstellen. Dann nenne ich
es den Titel. Ich werde es einfach
langsam rauf und runter gehen lassen. Lass uns die ersten
30 Sekunden bewegen, sagen
wir von 2,6 auf
2,4. Du gehst so, und dann möchte ich bei 2,4
bleiben und den nächsten
30 Sekunden
leicht nach unten gehen, bis vielleicht 2,3. Also gehen wir, dann wollen wir wieder
auf 2,4 hochgehen . Etwas schneller. Dann kehren wir zu dem zurück, was wir
ursprünglich hier oben hatten, das war, glaube ich, 2,6 Ja. Mal sehen, wie das aussieht. Mal sehen, ob wir zu dem Spiel gehen
, das ein bisschen schnell ist, aber ich denke, es
erledigt den Job. Sieht hübsch aus. Ordnung, als subtile
Loop-Animation machen
wir das Tempo 0,3 Mal sehen, ob wir auf
Play drücken, wie das aussieht. Also müssen wir sehen, wie
sich die Kamera
bewegt , und wir werden in Son sterben, weil
es keine Dinge gibt. Aber ich denke, das macht
einen ziemlich guten Job. Es bewegt sich sehr langsam
durch das Ding. Das bringt mich zu
der nächsten Sache, die ich tun möchte, nämlich anfangen ,
diesen Startbereich zu bauen nicht nur ein Quadrat zu haben. Fügen wir einen Box Collider zwei D hinzu. Wir müssen das
natürlich als Boden kennzeichnen Lassen Sie uns
weitermachen und sicherstellen, dass
dies die richtigen Abmessungen sind Es könnte ziemlich schwierig sein, das zu erkennen
, wenn Sie all
die Dinge haben, die ich mache. Also werde ich jetzt auch
den Hintergrund deaktivieren. Ich werde es
sehen können. Lassen Sie uns das jetzt ungefähr dorthin
verschieben. Es
muss hier nicht viel
höher sein, weil du nicht wirklich durchfallen
solltest. Das sollte alles sein, was da drüben
gemacht wurde. Lass uns jetzt testen, ob wir das Spiel spielen
können. Ich habe meinen
Hintergrund im Editor immer deaktiviert. Es wird sich hier zeigen
, dass das ziemlich gut aussieht. Ich werde das sogar etwas kleiner machen
. Ich werde es auf ungefähr da
runterbringen. Das ist so ziemlich das. Mir wurde gerade klar, dass dies ein kleines Problem
sein wird. Lass uns das vielleicht
ein bisschen und ein bisschen weiter nach unten verschieben. Ich denke, das ist wahrscheinlich gut, jetzt können
Sie
am Ende der Cloud stehen, aber das ist kein
allzu großes Problem. Das wird die Grundlage für
meinen
Startblock hier sein. Und ich habe meinen Titel, der sich auf und
ab bewegen
wird. Der Titel. Ich möchte eigentlich nie umziehen. Ich möchte es die ganze Zeit
hier behalten. Ich muss damit
nichts anfangen. Gleiche gilt für den Anfang. Das
sind feste Positionen. Aber was ich tun möchte, ist, dass die Dinge der Kamera
folgen
wie die Benutzeroberfläche oder erst aktiviert werden, wenn wir das
durchgemacht haben. Und ich möchte
auch nur das Spiel starten. Sobald wir
diesen imaginären Punkt hier in der
Mitte des Starts passiert haben, werde
ich
ein neues leeres Objekt erstellen Und ich werde es Grenze
nennen, genau wie wir es zuvor getan haben Hier an dieser Grenze werde
ich einen Collider bauen Ich werde
daraus einen Edge Collider machen , weil es eine Grenze
sein wird Ich mache 0,0 —
0,5 und minus fünf, das
ist eine lange Grenze Es wird ein Auslöser sein
und vom Typ Startzone sein . Was die Tags angeht, werde ich den Tag
zur
Startzone machen und ich habe diesen
großen Trigger-Collider Und ich werde
sagen, sobald der Spieler das geschafft hat,
möchte ich das Spiel starten Sie können also
sehen, dass wir weitermachen können. Ich werde es tatsächlich nur ein bisschen
länger machen , weil es
sonst durchfallen kann
. Je nachdem, wie
seltsam das aussieht, mache
ich das vielleicht zu einem Box Collider und dann noch eine
Kollision unter der Erde, aber das scheint ein bisschen
zusätzliche Arbeit für eine kleine
Änderung zu sein, Aber im Moment
konzentrieren wir uns nur darauf, diese Grenze zu Und wir wollen sagen,
okay, sobald
der Spieler diese Grenze
überschreitet, wollen wir das Spiel beginnen. Wir haben dieses
Tag als Startzone bezeichnet. Aber wir werden
das Ding
tatsächlich selbst programmieren. Wir werden sagen, wenn ich mit dem Spieler
kollidiere, wir uns keine Sorgen machen, dass der Spieler damit kollidiert Das ist nur eine Formalität. Ich werde den
Speicher wieder aktivieren, damit ich all
die Dinge sehen kann , die ich habe, und ich
werde anfangen, das anzupassen Ich will diese
Cloud dort nicht mehr wirklich haben. Ich will
diese Wolke nicht wirklich hier haben. Hoppla, ich wollte
nicht die gesamte Benutzeroberfläche löschen. Ich will diese Wolke oder
diese Wolke eigentlich nicht hier haben, weil unser Spiel nur mit dem Himmel gut aussieht Da wir jetzt die anderen Sachen hinzugefügt
haben, will
ich diese Cloud nicht einmal wirklich. Aber ich werde diese
Cloud hier drüben platzieren, nur damit ich etwas habe, zu dem ich springen
kann, wenn das Spiel beginnt. Verschiebe diese Wolke etwas nach
oben. Wir haben eine Cloud
für den Anfang. So wird das
Spiel aussehen, wenn du anfängst. Sobald Sie diesen Punkt
überschritten
haben, wollen wir natürlich , dass das Spiel beginnt. Lass uns weitermachen und ein neues Skript
schreiben und wir werden es Start Game nennen. Die Art und Weise, wie das Drehbuch
funktionieren wird, ist, dass wir viele
dieser leeren Starts ersetzen werden, die wir
haben und die beginnen, wenn
das Spiel startet. Zwei Lücken werden wir nennen. Die einzigen, mit denen wir uns
wirklich befassen
werden, sind das Kamerabewegungsskript und
das Skript zur Kartengenerierung Wenn wir hierher gehen, können wir
sehen, wie sich die Kamera bewegt. Wir werden uns
mit diesem Thema befassen
wollen und
wir wollen uns auch mit diesem Skript zur Kartengenerierung hier
befassen . Dies sind die beiden, die
Sie hier sehen können. Wir müssen ein Stück spawnen, aber wir wollen das
ändern, um mit dem
Spiel zu beginnen , und wir werden es zu einer öffentlichen Leere
machen Wir
müssen diese Lücke eigentlich nicht einmal schließen. Wir könnten uns einfach
auf den Weg machen und ein Mappiece spawnen. Aber aus Gründen der Konvention werde
ich einfach dieses Ding hier
drüben haben , wo wir
erst anfangen, wenn wir dieses Ding hier
drüben haben, wo wir
erst anfangen, wenn wir
das Spiel für ungültig erklären. Dieses Update wird
nicht wirklich
ein Problem sein , weil wir die Kamera nicht bewegen werden, sodass wir uns auch
keine Gedanken darüber machen müssen,
noch mehr Kartenstücke zu spawnen auch
keine Gedanken darüber machen müssen,
noch mehr Kartenstücke Gehen wir zurück zu meinem
Spiel und erstellen wir eine Kollision beim Auslöseereignis Geben Sie beim Auslösen zwei D Collision Game
Object Dot Compare-Tag ein. So wie wir es die
ganze Zeit gemacht haben, ist unser Spieler. Mit anderen Worten, wenn der
Spieler gerade auf
uns zugekommen ist, dann wollen wir das Spiel
starten. Wir werden einen
Verweis auf diese beiden Skripte erstellen. Kamerabeweg, wir werden
es Kamerabeweg nennen. Wir werden auch
einen Verweis auf
unser
Kartengenerierungsskript erstellen . Nennen wir es Karte. Wir werden sagen, Karte beginnt mit dem Spiel. Mit anderen Worten, starte das Spiel. Wir sagen Kamera, Kamera bewegen.
Kamerageschwindigkeit ist gleich. Und dann
haben wir hier bei unserer
Kamerabewegung diesen Standardwert , das ist genau das, was
wir uns für die Geschwindigkeit wünschen Ich werde
das tatsächlich ändern. Ich werde dafür sorgen, dass die Kamerageschwindigkeit der
Öffentlichkeit schwankt. Dann werden wir einen
öffentlichen Schwebekörper darunter haben
, den ich Geschwindigkeit nenne. Die Geschwindigkeit hier drüben werde ich auf die Variable setzen
, die sie bewegt. Und dann
ist die Kamerageschwindigkeit wie die Einstellung, die
ich will, ich werde sie im Spiel einstellen
, aber sie wird nur von der Geschwindigkeit beeinflusst. Und ich werde
sagen, dass die Kamerageschwindigkeit der Kamerageschwindigkeit entspricht. Mit anderen Worten, ich habe
diese Einstellung hier,
Kamerabeweg , Kamerageschwindigkeit, ich habe die Einstellung hier, die mir sagt, wie schnell
ich mich bewegen sollte. Dann habe ich die
Geschwindigkeitsvariable, die offensichtlich bei Null beginnen wird
. Sobald ich
mein Spiel starte und sage, okay, stelle die Geschwindigkeit auf
die Kamerageschwindigkeit ein, dann
ändert es sich auf das, was ich hier
eingegeben habe , und ich fange
an, uns weiterzubewegen. Das ist so ziemlich der gesamte
Code, den wir eigentlich
benötigen sollten , um unser Spiel manuell zu starten. Die Art und Weise, wie wir testen können, ist, dass wir hier an unsere Grenzen
gehen können . Also lass uns weitermachen und das Spiel
per Drag-In starten. Und dann ziehen Sie unser
Kamerabewegungsskript von unserer Kamera und unser
Skript zur Kartengenerierung von unserer Kamera. Damit wir sehen können, sobald
ich einen Spieler berühre, sollte
ich diesen Code starten.
Ich sollte anfangen mich zu bewegen. Gehen wir zurück zu meiner Hauptkamera. Lass uns meine Kamerageschwindigkeit auf
einen Punkt einstellen. Meine Geschwindigkeit ist Null. Sie jetzt auf Play.
Ich sollte das Spiel erst starten, wenn ich dort
weitermache . Mal
sehen, ob das funktioniert. Es bewegt sich gerade,
aber es ist noch nichts erschienen. Offensichtlich laichen
die Wolken immer noch, was ich will, aber sonst
nichts Aber sobald ich
diese Grenze hier drüben überquere, fängt
das Spiel an.
Schau mal hier drüben. Jetzt kann ich anfangen,
das Spiel zu spielen , was
genau das ist, was ich will. Offensichtlich
ist diese erste Wolke ein bisschen komisch, weil sie über
einer anderen Ich müsste vielleicht nur
diesen anfänglichen Offset anpassen und
ihn etwas weiter vorne beginnen lassen , aber ich denke, das wäre in Ordnung Das können wir ein bisschen ändern. Konzentrieren wir uns einfach
darauf, das zu bewegen. Vielleicht musst du nicht einmal zur ersten Wolke
springen, es ist nur eine Wolke
in eine andere Wolke. Dann
sollte die erste Wolke darüber spawnen,
damit sie viel besser
aussieht Nun, das
hat eigentlich ganz gut funktioniert. Ich werde diese Grenze
ein wenig an
die Seite von hier verschieben . In dem Moment, in dem man eine bestimmte
Sache passiert, ist sie tatsächlich vorbei. Aber es gibt noch zwei weitere
Dinge, die ich tun möchte. Zuallererst möchte ich
sichergehen, dass auf dem Schild deine
Highschool-Diamantenschule steht. Das ist eigentlich auch
ganz einfach zu machen. Alles was Sie tun müssen,
ist in
meine Benutzeroberfläche zu gehen und ich werde hier einen neuen Text
erstellen. Lass uns Legacy Text gehen, weil wir den Text me nicht verwenden wollen
. Lasst uns das Diamanten nennen. Ich
werde es hierher bringen. Ich werde der
Einfachheit halber
einfach
diesen Diamantenzähler kopieren, einfach
diesen Diamantenzähler kopieren den
ich hier habe. Und schieb es hierher. Dann werde ich einen
Testwert von etwa 300 festlegen. Es scheint, als würde sich
nichts zeigen. Versuchen wir, die Größe zu ändern
. Es steckt dahinter Ich werde
tatsächlich
die Reihenfolge dieser Leinwand ändern müssen . Ich werde die Reihenfolge der
Leinwand in Ebene zwei statt in einer oder
sogar in fünf Ebenen festlegen, weil wir so ziemlich alles von
vorne haben wollen . Also lass mich einfach zehn draus machen, um zu sehen, ob das unser Problem behoben hat. Wenn wir wieder hierher gehen. Ja,
jetzt können wir sehen, dass das vor uns auftaucht,
was genau das ist, was wir wollen. Ich werde
das leicht drehen, weil das Schild selbst ein
bisschen schief ist Ich werde die Größe wieder auf das ändern, was es sein sollte,
was eher so war Ich werde das darauf einstellen. Ich werde
es etwas mehr rotieren lassen. Ich denke, das ist wahrscheinlich gut. Hätte vielleicht ein bisschen viel gedreht. Drehen wir es ein bisschen zurück. Da können wir jetzt sehen, dass wir
eine kleine Markierung haben, die
uns zeigt, wie
viele Diamanten wir in einem Lauf gesammelt haben. Jetzt müssen wir das natürlich
so programmieren , dass der Highscore tatsächlich
angezeigt wird. Das ist eigentlich unglaublich einfach. Alles, was wir tun müssen, ist eigentlich egal,
welches Drehbuch wir wählen. Wir können jeden auswählen,
aber ich werde dieses
Player-Diamond-Drehbuch hier
auswählen. Weil das hier bereits eine Benutzeroberfläche
hat und es bereits einen
Verweis auf ein Textobjekt hat. Lass uns einen neuen erstellen, öffentlichen
Text, nenne ihn High School. Dann muss ich nur noch unter
der Start-Lücke sagen, dass Highschool-Punkt-Text gleich
Highschool-Diamanten
Punkt zwei Zeichenketten ist . Das heißt
im Grunde okay, wenn ich das Spiel starte, stelle
sicher, dass du diesen
Text oder was auch immer
mein bestes Ergebnis gesetzt hast,
wenn wir zurück in mein Spiel gehen, lass uns jetzt zu meinem Spieler gehen und schauen,
ob das funktioniert. Finden wir heraus, dass
wir hier eine High School haben. Stellen Sie es auf diesen Zähler. Ich werde das in Highscore Count umbenennen. Wenn wir dann spielen müssten,
sollten wir das außer Kraft setzen. Zu Beginn des Spiels
mit unserer High School, was sie anscheinend getan hat, sollte
unsere High School nicht Null
sein, sondern eins. Wir scheinen einen kleinen Fehler zu haben, aber ich glaube, das
einzige
Problem ist die Tatsache dass wir ihn schon einmal zugewiesen Wir haben die Variable
hier zugewiesen , und das ist
genau das, was sie ist Gehen wir einfach zurück
und legen es darunter. Und dann sollte es einwandfrei
funktionieren. Wenn wir zu unserem Spiel zurückkehren, drücken
wir auf Play. Wir sollten sehen,
jetzt sollte sich das in dem Moment, in dem wir das Spiel
starten, auf
eins ändern . Und es sieht so
aus. Das ist perfekt. Jetzt haben wir einen
Highschool-Schalter. Wir haben dieses Ding, mit dem
wir das Spiel starten können ,
indem wir es durchgehen. Und wir haben alles andere
so, wie es sollte, was ziemlich cool ist. Alles, was wir jetzt tun müssen, das allerletzte, was wir tatsächlich sicherstellen
müssen, ist sicherzustellen, dass
wir keine Störungen
bekommen, wenn wir wieder anfangen keine Störungen
bekommen Anstatt
diese Wolke zu verschieben,
mache ich es einfach so, dass die erste Wolke ein
bisschen weiter Und dann werde ich
das tun, ich werde
in mein Skript zur Kartengenerierung gehen in mein Skript zur Kartengenerierung Ich werde Goldbarren als Startblock
hier haben. Mit anderen Worten, wenn es
das allererste ist, setze ich hier auf
Falsch,
aber hier drüben muss es
immer
wahr sein , und zwar der allererste Block Und das ermöglicht uns
im Grunde, wenn wir dieses Objekt aufrufen, diese Methode aufzurufen, wir können hier einen Wert eingeben,
wenn wir es von hier aus aufrufen, wir können unterscheiden,
wo wir es von hier aus aufrufen. Dann müssen wir nur noch eine kleine
Wenn-Aussage am Ende hinzufügen. Wir müssen sagen, anfangen. Mit anderen Worten, wenn es
den allerersten gibt, dann möchte ich ihn nur
ein bisschen zur Seite verschieben. Ich würde sagen, dass der Stein gespawnt wurde
, der Gegner übertragen wurde. Fügen wir einen Start-Offset hinzu. Gehen wir also zum Public
Float-Start-Offset und
wir werden ihn
etwas größer machen als den
, den wir hier haben. Leg das einfach da drüben hin. Und wir
werden im Grunde sagen,
okay, lass uns die Kachel da hinlegen. Aber wenn es ein allererstes Plättchen ist, möchte
ich
es eigentlich woanders platzieren. Also lass es mich da hinlegen. Es wird es
an einem anderen Ort spawnen, aber es macht wirklich keinen
Unterschied Gehen wir zurück und gehen
wir zurück zu
unserer Hauptkamera Und lassen Sie uns den
Start-Offset auf 18 statt auf 15 setzen
und schauen, ob das funktioniert. Wir verschieben das jetzt ein wenig, mal sehen, ob das in Bezug auf den Abstand
etwas besser funktioniert . Lassen Sie uns dann
diese dauerhafte Form testen
, nämlich schauen, ob der Rest
des Spiels reibungslos läuft. Es sieht so aus, als ob 18 tatsächlich ziemlich gut
funktioniert. Wir haben
hier ein Problem mit dem, das Sie beheben müssen,
es wird nicht verschwinden. Wir haben tatsächlich auch
ein Problem mit der Benutzeroberfläche, das ich auch beheben
möchte, damit es nicht so bleibt, wenn du das Spiel
nicht spielst. Aber lass uns einfach zuerst das andere Ding
testen,
sterben, dann bewegt sich die Kamera immer noch. Das ist ein weiteres Problem, das
wir lösen müssen. Gehen wir zurück und alles
scheint gut zu funktionieren. Gehen wir weiter und schauen
uns schnell an, was
wir reparieren müssen. Zuallererst ist der Grund,
warum sich die Kamera immer noch bewegt, darin, dass dieses
Originalskript hier drüben, das die
Kamerageschwindigkeit bearbeitet hat, wenn du stirbst, die
Kamerageschwindigkeit
geändert hat. Wir wollen
die Geschwindigkeitsvariable ändern , weil wir die Funktionsweise des Skripts geändert
haben. Deshalb wollen wir, dass
es die Geschwindigkeit ändert, nicht die Kamerageschwindigkeit.
Das ist das Erste. Das zweite, was wir tun
wollen, ist sicherzustellen, dass sich dieser Text hier, den wir haben,
nicht weiterbewegt, während sich
die Kamera bewegt. Ich werde das so machen, dass ich tatsächlich
eine neue Benutzeroberfläche erstelle und diese
dort abspeichere und
dafür sorge, dass sie sich nicht bewegt. Und dann habe ich diese
Benutzeroberfläche, die ich bearbeiten
und in der ich spawnen kann , wenn ich das Spiel starten
möchte Wir haben schon
ziemlich viele Folgen gemacht,
ich weiß, es ist eine Weile her,
aber wir sind fast fertig Also haben Sie Geduld mit mir, wenn wir die letzten beiden Dinge
beenden. Zuerst gehe ich zum Startpunkt und
erstelle eine neue Leinwand. Ich werde das zwei nennen. Dann kopiere ich mein
Highschool-Konto und lege es in zwei Teile, anstatt
dort, wo es ursprünglich war. Und ich
ändere die zweite Benutzeroberfläche auf Bildschirm Space Camera und
ziehe meine Kamera hinein, dann doppelklicke ich darauf
und lass uns sehen, wo sie ist, nicht wo sie sein sollte, aber
lass uns sie einfach wieder nach oben verschieben. Wir werden
diese Reihenfolge ändern und die Ebene
ebenfalls auf zehn ändern, genau
wie die andere. Dann verschieben wir es dorthin. Ich glaube, dort war es
ungefähr. Wir können
es natürlich anpassen, während wir das Spiel spielen, aber ich denke, das ist vorerst
ziemlich gut. Sobald
ich die Orientierung gefunden habe, gehe
ich zurück
und
ändere es in den Weltraum. Mit anderen Worten, es wird
sich nicht mit der Kamera bewegen. Sobald ich
es perfekt positioniert habe, sollte
das eigentlich perfekt
funktionieren. Und jetzt haben wir diese Benutzeroberfläche , die sich nicht an
den Rest der Welt anpassen wird. Wenn wir jetzt auf Play klicken
und sehen, ob das funktioniert, bleibt
diese Benutzeroberfläche
genau dort, wo sie ist. Und wenn wir weitermachen, folgt es uns
nicht,
was perfekt ist. Offensichtlich ist diese Benutzeroberfläche immer noch da, was ein
kleines Problem darstellt. Lassen Sie uns dafür sorgen, dass diese Benutzeroberfläche
nur aktiviert wird. Sobald wir auf dieser
Startposition hier landen, werden
wir
eine kleine Animation
haben damit es
ein bisschen besser aussieht. Gehen wir zur Fensteranimation. Geh zu meinem U hier drüben und
lass uns zwei Animationen erstellen. Gehen wir eigentlich
zur Assets-Animation. Und der erste wird
ein Einblassen der Animation sein. Dann wird die zweite Animation, die
wir haben werden , das sein, was wir
einfach eine statische Animation nennen werden. Und das heißt nur
, okay, behalte die Positionen
genau da, wo sie sind. Setzen wir Herzen auf diese
Position hier drüben, 498,5 und setzen wir Diamanten
auf diese Position
hier drüben , 52,94 59,8 Entschuldigung Ähm, und das sollten jetzt Zustände sein, wenn wir sie als
Animation abspielen, Mal sehen, wie meine verblasste
Animation funktioniert. Ich möchte, dass das von hier
aus ungefähr 2 Sekunden weitergeht. Ich möchte, dass es
dort verschwindet, wo es war, nämlich Position 400. Und was war die Position? Ich glaube, es waren 459. Gehen wir zu unserer anderen
Animation, nur um sie zu sehen. 502,9 für die Diamanten
und dann 459,8 Kopieren wir die Position dieser
Herzen. Geh zurück hierher
und dann hierher. An diesem Punkt möchte ich, dass die
Herzen an dieser Position sind. Ändern wir es auf 459,8 und dann
möchte ich so ziemlich genau dasselbe machen,
mit
dem Diamanten, der von hier
aus verschwindet Dann, 2 Sekunden später, möchte ich, dass er an der anderen Position ist
, also nehmen wir
52,9 hier drüben Zu diesem Zeitpunkt möchte ich, dass die
Diamanten auch da sind. Siehst du, jetzt werden
sie so verblassen und dann fängt
das Spiel an. Alles was wir tun müssen,
müssen, richtig? Oh, lass uns auch noch
eine Animation , wo sie nicht sichtbar sind. Lass uns eine neue erstellen und
wir nennen sie außer Sichtweite. Das
wird eigentlich nur dann der Fall sein, wenn diese beiden irgendwie
aus dem Off sind. Es spielt keine Rolle, wo sie sind, solange sie getroffen werden. Und wir könnten sie auch
irgendwie deaktivieren lassen Aber ich werde es vorerst einfach
so machen , weil es ein bisschen einfacher ist, da wir nur ihre Positionen ändern Das wird eigentlich die Standardanimation
sein. Wir werden
mit diesen oder aus dem Blickfeld
geratenen Dingen beginnen . Lassen Sie uns die Benutzeroberfläche
öffnen. Lassen Sie uns das auf
den Standardstatus setzen. Dann wollen wir
sichergehen, dass wir in der Minute in der
wir eingeblendet sind,
direkt zur Statik übergehen Dann machen wir den
Übergang hier drüben. Dies wird uns
ein neues Konzept vorstellen , das wie
automatische Übergänge funktioniert. Wir werden
beide auf Null setzen, aber dann werden wir beibehalten, das hat
sich geändert, Ausgangszeit
hat sich geändert. Das heißt, in der
Minute, in der das erledigt ist, auf statisch
umgestellt
und die Ausgangszeit auf
Null gesetzt, bedeutet, dass die Animation
abgeschlossen ist
und dann hierher verschoben wird . Was ziemlich cool
aussehen wird. Jetzt brauchen wir nur noch einen Trigger, der ebenfalls ein neuer
Parametertyp ist. Es ist einem Booleschen Wert sehr ähnlich. Stellen Sie sich das wie einen Knopf
statt wie einen Hebel vor. Wir nennen
es einfach Start. Wir werden
hierher gehen und diese
Übergangsbedingung machen. Fangen Sie damit auf Null an, stellen Sie sicher, dass es
keine zusätzliche Zeit gibt und die Übergangsdauer ebenfalls
auf Null gesetzt wird. Das funktioniert im Grunde
so, dass sobald
wir das hier drüben anklicken, es ausgeblendet wird
und dann dort bleibt. Das ist alles, was wir
programmieren müssen, um sicherzustellen, dass unsere Benutzeroberfläche nicht startet
, wenn wir das Spiel starten. Jetzt müssen wir hier
einen weiteren Parameter
zu unserem
Startspielcode hinzufügen . werden einen
öffentlichen Animator erstellen
, der unser Anum sein wird Dann lass uns hier
drunter gehen und sagen ich habe einen Trigger gesetzt,
ich glaube, wir haben es Start genannt Diese drei Dinge zusammen ermöglichen es
uns im Grunde
, das Spiel
manuell von diesem Event aus zu starten. Und dieser hier
wird dafür sorgen, dass wir
sicherstellen, dass unsere Benutzeroberfläche erst startet,
wenn wir das Spiel starten. Gehen wir zurück zu
meinem Startskript. Hier drüben, Grenze,
es war hier. Lassen Sie uns den UI-Animator hineinziehen und sehen, ob alles so funktioniert,
wie wir es wollten Lass uns spielen und lass uns sehen. Wir beginnen mit der Benutzeroberfläche außerhalb des Bildschirms, genau wie bei einem oder zwei. Wir beginnen mit einer Punktzahl
von eins, sonst nichts. In dem Moment, in dem ich dieses Spiel starte, können
wir sehen, wie meine Benutzeroberfläche verblasst. Und das sieht wirklich,
wirklich cool aus. Jetzt kann ich wie gewohnt anfangen,
mein Spiel zu spielen. Das ist die letzte große
Änderung, wenn Sie an unseren Spielen noch Audio und Sound
hinzufügen müssen. Ich weiß, ich sage, dass
so ziemlich jede einzelne Episode, aber ich finde, das ist
eine ziemlich coole Änderung wir bisher an unserem Spiel vorgenommen haben. Und wir haben es so gemacht, dass
es viel schöner aussieht, vor allem mit
der zusätzlichen Grafik Und jetzt mit all dem anderen
Zeug. Und jetzt müssen wir
auch in Hubs anfangen. Wenn wir also sterben und
das Spiel verlieren, sehen
wir, wie alles verschwindet, dann fangen wir von vorne an und fangen wieder von
vorne an, genau wie dort, wo wir
mit einem neuen Highscore waren weil wir damals viel
mehr Groschen hatten,
was wirklich, wirklich cool ist Das ist also alles
für diese Episode. In der
nächsten Folge werden wir natürlich
unser Audio und unsere Musik hinzufügen , und dann sollten wir ein paar letzte
Feinschliffe
vornehmen und wir sind mit unserem Spiel
fertig. Du bist also fast fertig mit dem
gesamten Kurs, was wirklich toll und
toll ist , wenn du
bis jetzt alles
mitverfolgen konntest und
dein Spiel so aussieht wie meins. Wenn du ein paar Dinge hast,
die anders sind, geh
vielleicht einfach zurück und sieh dir
ein paar Videos an und lade
die Ressourcen herunter , um zu sehen, wo sich
deine von meinen unterscheiden. Weil du in der Lage
sein solltest,
mein genaues Spiel zu erstellen , indem du die Dateien und die Aussparungen
verwendest, die ich unter all den Videos zur Verfügung stelle. Stellen Sie also sicher, dass Sie alles gleich
haben. Und ich habe sogar meinen Code
angehängt , falls Sie das auch
überprüfen möchten. Hoffentlich
hast du dein Spiel in genau
dem Zustand
, in dem sich meins jetzt befindet. Und du konntest alles
in diesem Video verfolgen . Tolle Arbeit, um es so weit zu schaffen. Und wir werden in
der nächsten Folge
damit beginnen,
Audio und Musik hinzuzufügen . Danke.
17. 16. Soundeffekte und Musik hinzufügen: Hallo und willkommen
zurück bei Unity. Jetzt ist
es an der Zeit,
dass unser Spiel endlich ein Audio hinzufügt, denn obwohl wir so ziemlich
alles andere
gemacht haben , ist
unser Spiel immer noch
völlig geräuschlos. Das Hinzufügen eines Audios ist nur eines der anderen
Dinge, die dafür sorgen, dass dein Spiel für den Spieler viel
reaktionsschneller und lebendiger
anfühlt . Um ein Audio hinzuzufügen, folgen wir einem ziemlich
einfachen Prozess. Wir
erstellen zunächst ein neues Objekt namens Audio-Manager Hier behalten
wir den Überblick alle zentralen Audiodaten,
z. B. ob
Audio aktiviert
oder deaktiviert ist und
was wann abgespielt werden soll. Dann bearbeiten wir
all unsere Skripte und sagen an dieser Stelle, spiele
einen Sound ab. Lassen Sie uns zunächst ein neues Objekt
erstellen, das Audio Manager
nennen. Ich werde es einfach aus
keinem anderen Grund als Präferenz auf Null
setzen . Dann werde ich ein
neues Skript erstellen und ihm den gleichen
Namen Audio-Manager
geben. Dann werde
ich in meinem
Audiomanager-Skript einen Verweis
auf jede einzelne Audioquelle haben , von der aus
wir das
Audio im Spiel abspielen werden. Und dann werde ich
für jede einzelne Version unterschiedliche Leerräume
haben , die sagen: Spiel das, spiel das, spiel das, usw. Ich werde
es sogar vereinfachen. Ich werde eine Lücke haben und ich werde sagen, spiel den Ton ab. Aber ich werde mir selbst zuvorkommen. Lassen Sie mich zuerst einfach
eine öffentliche Audioquelle schreiben. Ich muss
für jede einzelne
Audiodatei, die ich habe, eine davon
erstellen . Bevor ich das erstelle, möchte ich zunächst meine Audiodateien
importieren. Ich gehe und erstelle einen neuen
Ordner, nenne ihn Audio, und dann
werde ich darin
jede einzelne von, ich glaube,
es gibt sieben
Audiodateien, die ich bisher habe, ablegen wollen . Lassen Sie uns also weitermachen und all diese
importieren. Ich habe sie alle hier und werde all
diese Einstellungen vorerst belassen. Das sind im Grunde nur eine
ganze Reihe von Audiodateien. Das ist zum Sammeln von Diamanten, das ist für die Batterien. Mach einen Zap. Sound Das
kann ein Spiel mit einem Sound Das sind Take Damage,
Sound, ein Sprung, die Musik des Spiels und dann auch Soundeffekte
für den Roboter. Ich werde jetzt auf all das eingehen, aber lassen Sie
mich vorerst einfach eine Audioquelle hinzufügen, oder ich werde diesem Audio-Manager-Skript sieben Audioquellen
hinzufügen diesem Audio-Manager-Skript sieben Audioquellen und dann werde ich
eine Referenz für alle erstellen. Lassen Sie mich also weitermachen und die Audioquelle
eingeben. Ich werde sieben
davon hinzufügen, sieben gleich hier. Und der Miner, ich habe
das gemacht, ich werde jetzt damit
beginnen , im Grunde mein Audio zu
mischen Lassen Sie mich also weitermachen und all diese
deaktivieren. Und das sind alles unterschiedliche
Geräusche und einige von ihnen sind viel lauter,
als ich möchte Aufgrund der
Aufnahmesoftware, die ich verwende, kannst du den Ton
meines Spiels möglicherweise nicht direkt
über das Video
hören meines Spiels möglicherweise nicht direkt
über das Video Wenn das der Fall ist,
solltest du
den Prozess natürlich
einfach verfolgen. Ansicht wird genau dieselbe sein
und Sie möchten nur
die Lautstärke jedes Audioclips anpassen die Lautstärke jedes Audioclips wenn Sie
ihn zu Ihrem Spiel hinzugefügt haben. Lassen Sie mich also zuerst
mit der Musik beginnen. Ich werde den Clip
in diese Audioclip-Eigenschaft ziehen. Ich setze Play auf Wake True und Loop auf True
für die Musik. Und jetzt möchte ich nur noch die Lautstärke
ändern. Ich kann schon erkennen, dass einer viel zu laut sein
wird, also lass mich
zuerst 0,2 versuchen und schauen, wie ich ihn anpassen
muss. Ich denke, 0,1 ist etwas netter, nur damit es eher wie
Hintergrundmusik Lass uns vielleicht 0,15 setzen
ist wahrscheinlich eine gute Zwischenlösung, dann werde ich mit
jedem anderen genau das Gleiche
machen jedem anderen Anstatt es zu ändern, schalte
ich einfach den darüber liegenden Ton stumm und
lasse dann
das Sprunggeräusch in einem
Wake-and-Loop-Modus abspielen Damit ich auch dafür eine gute
Lautstärke einstellen kann. Offensichtlich ist das
ein bisschen zu laut. Machen wir 0,20 0,2
ist immer noch zu laut. 0,10 0,05 Ich denke, 0,1 ist wahrscheinlich
eine gute Machen wir 0,1. Ich werde
diesen Vorgang einfach immer wieder wiederholen bis wir
alles erledigt haben. Dann werde ich im Grunde all diese
deaktivieren,
was ich nicht möchte, dass sie
auf wach gestellt werden , wenn du
schon lange verfolgt hast, hoffentlich ähnliche Audios
wie ich hast, ich habe diese Werke gefunden Du kannst
sie natürlich an dein Spiel anpassen. Ich ändere sie vielleicht im Laufe der Zeit,
aber auf diese Weise werde ich mein gesamtes Audio mischen und
dann mache ich einfach
weiter und deaktiviere für so
ziemlich jeden
einzelnen die Option
Play on awake sowie
Mute und Loop, weil
ich nicht möchte, dass irgendwas weiter und deaktiviere für so
ziemlich jeden
einzelnen die Option
Play on awake sowie Mute und Loop, weil
ich nicht möchte, dass irgendwas davon wiederholt oder im Wake-Modus
abgespielt Das Gleiche gilt für den Hit, ich will also nicht, dass
das Spiel vorbei ist, weder wegen irgendeines dieser
Dinge noch wegen des Und dann werde ich das Gleiche
für den Sprung hier drüben einstellen
, den wir auch starten werden. Die Musik werde ich einfach
weiterspielen, nur weil du die
Musik natürlich abspielen
willst , wenn sie läuft. Bevor ich weitermache, werde
ich mit dem Hinzufügen
eines Mute- und eines Sound-Off-Brötchens
beginnen eines Mute- und eines Sound-Off-Brötchens Was diese im Grunde so
programmieren wird, dass sie sagen, okay, deaktiviere all diese
und speichere sie alle Ich werde das tun
, indem ich ein öffentliches
Audioquellen-Array
erstelle. Dies wird
der Soundeffekt sein , um eine weitere
öffentliche Audioquelle zu erzeugen. Und dieser wird
für die Musik sein. Dann werde ich ein paar Lücken
schaffen. Die erste Leere wird
eine Leere für stumme Musik sein, wodurch die Musik stummgeschaltet wird Entspricht wahr. Ich könnte hier sogar eine weitere
Lücke schaffen , in der steht: Stummschalten aufheben Musik Aber ich
kombiniere sie tatsächlich zu einer Leere. Ich nenne es aus, stumm. Stumm. Musik Hier drüben wird es
ein Goldbarren geben, das man dann „stumm schalten“ nennen
wird Es wird ursprünglich
auf „Falsch“ gesetzt sein. Dann setze ich muted einfach gleich stummgeschaltet. Mit anderen Worten, ändere,
was auch immer stummgeschaltet war. Und ich werde das hier auch
auf stumm stellen. Nicht stummgeschaltet. Wenn ich das erste
Mal darauf klicke, wird
es sagen,
okay, stummgeschaltet ist falsch Stellen Sie Stummschalten auf nicht
stummgeschaltet ein, was wahr ist. Und dann muted gleich
nicht stummgeschaltet setzen, stummgeschaltet ist falsch. Setzen Sie muted daher auf true. Beim zweiten Mal heißt
es dann set
muted auf not stummgeschaltet,
stummgeschaltet, das ist nicht wahr Also wird es auf False gesetzt. Im Grunde wird sich das jedes
Mal dort
abwechseln, wenn wir es aufrufen. Ich werde genau
die gleiche Lücke
für die Soundeffekte schreiben ,
stumm schalten, Soundeffekte stummschalten. Wir werden
für jede Audioquelle schreiben DA ich es so eingeben muss, weil AS in SFX ein
reserviertes Wort ist Mit anderen Worten, jede
einzelne Audioquelle die
wir diesem Objekt S,
S zuweisen , kann die erste
sein, dann die zweite für
jede einzelne hier drin. Das ist ein sogenannter
Vier-Loop-Modus. Es ist eigentlich eine für jeden Loop, aber man kann sich das so vorstellen,
als würde man Code O wiederholen.
Das bedeutet, dass
es für
jedes einzelne S ein bisschen für
uns geschrieben wurde,
aber stellen Das bedeutet, dass
es für
jedes einzelne S ein bisschen für
uns geschrieben wurde, Sie sich das einfach so vor, als ob es für jede einzelne Audioquelle
in diesem Ding ist. Setze den
Stummschaltungswert nicht auf den Wert
meiner Stummschaltung Für SX ist dies stummgeschaltet. Musik Das wird
stummgeschaltetes SFX sein. Lass mich das dann schnell ändern. Kopiere das einfach
hier, hier drüben. Ich sage gedämpfte Effekte. Mit anderen Worten, aktualisiere jedes einzelne Ding,
damit es dasselbe ist Stellen Sie dann die stummgeschalteten Soundeffekte auf den Wert ein
, der zuvor nicht aktiviert war. Mit anderen Worten, alternativ
Dieser Code hier
ermöglicht es uns zu aktivieren oder zu deaktivieren jede einzelne Audioquelle, die
wir in unserem Spiel haben Jetzt müssen wir Codes für das
Abspielen der spezifischen
Audioquellen schreiben , aber ich werde
das zu einer einzigen Lücke kombinieren Ich nenne es
Public Void, nenne es Play. Sound Als Eingabe werden
wir im Grunde eine Audioquelle
eingeben. Wir werden die Audioquelle
SO
eingeben , dass die gesamte Leere wie ein Spiel sein
wird. Mit anderen Worten,
wir werden
eine Audioquelle abspielen , aus der wir
hier auswählen. Dann
nenne ich das Leere. Ich werde in
einer Reihe anderer Skripte,
in
denen ich Voids aufrufen muss, einen Verweis auf
dieses Audio-Manager-Skript erstellen dieses Audio-Manager-Skript Reihe anderer Skripte,
in
denen ich Voids aufrufen muss, einen Verweis auf Nenne das konkret Leere und ich gebe den Sound weiter,
den ich will Fangen wir mit dem
Ausfüllen aller Sounds an. Zuallererst haben wir unseren Game
Over-Sound sowie
unsere Schadensgeräusche. Gehen wir zu Player Health über. Lassen Sie uns einen Verweis auf
meinen Audiomanager erstellen .
Nennen wir es AM. Dann hier drüben in
meinem Take Damage Void hier
drüben werde
ich AM Fx schreiben. Jetzt muss ich den
Index auswählen, den ich haben werde. Lassen Sie mich damit beginnen, die Indizes dafür tatsächlich
zuzuweisen. Bevor ich den
Rest hier mache, ziehen
wir mein Audio-Manager-Skript hier
nach unten Ich minimiere das alles einfach , weil ich die Einstellungen nicht mehr
bearbeiten muss Jetzt werde ich
Music This Source
hier oben haben und all die anderen Quellen Es sollte
sechs weitere Quellen ich einfach so
reinziehen werde. Und Sie können sehen, dass es uns tatsächlich ein kleines Problem bereitet. Jetzt haben wir diese
, die nicht hier sind. Also werde ich
diese einfach löschen, indem ich mit der rechten Maustaste klicke und sage Array-Element löschen. Und dann habe ich meine sechs
Audioquellen und dann springe ich, dann Roboter, dann ist das Spiel vorbei. Dann drück, dann elektrisch und dann sammle
den Diamanten , auf den ich mich hier beziehen
möchte. Hit ist der vierte. Es ist Element drei hier drüben. Und das kannst du
hier sehen, das ist Element drei. Treffer. Gehen wir zurück zu meinem Code und sagen wir, Bin Element drei. Und ich werde
das an AM, Play Sound weitergeben. Lass uns weitermachen, mach so. Das heißt im Grunde
, okay, spiel einen Sound ab und spiele Audioquelle
ab, in der
du sie gespeichert hast. Die dritte Sache, die
wir gerade gemacht haben, ich werde diesen
Vorgang so ziemlich überall wiederholen, wo wir einen Sound haben, den wir
abspielen wollen, lass uns in den Tod gehen. Im Death One wollen wir das Spiel
zu Ende spielen. Ton Welches ist, also glaube ich,
es ist der vorletzte. Es ist tatsächlich, es ist
der dritte, glaube ich. Ja, es ist der dritte
, der Element zwei ist. Lass uns hier rüber gehen und hier Element zwei
spielen. Jetzt haben wir zwei
davon sortiert. Wir müssen noch die Sprunggeräusche hinzufügen
. Gehen wir zum Bewegungsskript. Ich glaube, es ist
hier drüben. Bewegung des Spielers. Wir werden
einen weiteren Verweis
auf meinen Audiomanager erstellen , nennen wir ihn AM. Gehen wir hier rüber zu meinem
Jump Void und sagen AM Play. Sound Und wir
müssen jetzt das Sprunggeräusch finden. Ich kann mich ehrlich gesagt nicht erinnern
, weil ich sie nicht
auswendig gelernt habe . Aber ich
möchte sagen, dass es das erste ist Ja, es ist der erste.
Lass uns rüber gehen und den allerersten Sound spielen. Jetzt haben wir drei davon gemacht. Es sind nur noch
drei übrig. Wir brauchen natürlich den Sound für
den Strom, genauso wie den Sound
für den Roboter. Und wir brauchen den Sound für
die Diamond Collection. Gehen wir zuerst zur
Diamond-Kollektion. Eins. Wir werden auf
dieser Veranstaltung hier drüben die Sounds
spielen müssen . Lassen Sie uns den Public
Audio Manager AM unter das Partikelsystem stellen. Lass uns AM gehen, um Sound abzuspielen. Ich glaube, Diamond Collect
ist der allerletzte Sound. Lassen Sie uns das einfach bestätigen. Ja, ist es. Das ist Element fünf hier drüben. Lass uns da hingehen und den letzten
spielen. Jetzt haben wir zwei weitere Sounds. Wir haben den Robotersound
, den wir immer dann abspielen müssen, wenn ein Roboter auf Bildschirmen zu sehen ist
, der ein bisschen anders ist. Das wird tatsächlich etwas kniffliger. Also werde ich ändern,
was ich hier mache. Anstatt
diesen Sound zu einem Teil des Arrays
zu machen, auf das ich mich unbedingt konzentrieren werde, lasse ich den Sound im Wachmodus
abspielen und werde geloopt Stattdessen werde ich
ihn stummschalten. Und jedes Mal, wenn
ein Roboter in mir spawnt, stelle ich einfach
sicher, dass ich dieses Ding so
einstelle,
dass es stummgeschaltet ist Und jedes Mal, wenn
ein Roboter stirbt, stelle
ich
ihn so ein, dass er nicht mehr stummgeschaltet ist Das wird
größtenteils
funktionieren , was sie uns geben könnten, wenn ein Roboter
spawnt und dann stirbt, während noch
ein anderer auf dem Bildschirm Es mag ein
Roboter ohne Sound sein, aber für unsere Zeit wird
es eine
ziemlich perfekte Lösung sein Gehen wir rüber in
meine Leere hier drüben. Lass uns in meinem Drehbuch sehen, wenn ich als Roboter anfange, werde
ich meine Audioquelle
einstellen wollen, die ich
als Referenz zum
Audiomanager erstellen werde . Nochmals, M hier drüben, ich werde nur AM von X sagen. Ich werde mich darauf beziehen, dass es das erste Element
ist. Ich glaube, es ist zweitens
das zweite, aber es ist Element
eins im Array. Stumm ist gleich falsch. Mit anderen Worten, spiele den Roboter. Sound Sobald
dieser Roboter stirbt,
sobald er nicht mehr auf dem Bildschirm zu sehen
ist, werden
wir
die Stummschaltung wieder auf True setzen wollen. Sie werden das
tun, indem sie das Skript
bearbeiten, das sich über
dem befindet und das festlegt, was gelöscht werden soll. Wir werden
hier auf das Skript
eingehen, das Tile Clear heißt. Dies ist das Skript
, das die Kacheln
zerstören wird .
Das ist der Moment da. Ich füge eine neue Variable hinzu, nenne sie Roboter, an Bord. Und es wird vom Typ Bullion
sein. Und wenn ich mein Spielobjekt
zerstöre, füge
ich einfach eine weitere
Linie direkt darunter hinzu Und ich werde sagen, wenn
ein Roboter an Bord war, dann möchte ich sichergehen, dass mein Audiomanager keinen Sound
mehr abspielt. Ich werde hier keine Referenz
erstellen , wie ich es nicht
weiß. Ich werde Game Object
Find Audio Manager verwenden , weil das für eine
vorgefertigte Get-Komponente
viel einfacher sein wird . Dann werde ich ein
Audio-Manager-Skript finden , das
daran angehängt ist. Ich werde X sagen, Element zwei
anhängen oder
war es Element eins? Ich glaube, es könnte Element eins
gewesen sein. Eigentlich, ja, es
war stumm gleich wahr. Alles, was ich in
diesem Roboterskript
von hier tun muss , ist, sobald ich es stummgeschaltet habe, muss
ich es anhängen, zu
meinen übergeordneten Objekten gehen und das übergeordnete Objekt
transformieren Dann
sage ich „
Bauteilkachel löschen“ und ich sage „ Roboter an
Bord“ entspricht „Wahr“ Das ist vielleicht ein bisschen komisch,
ehrlich gesagt, wenn Sie diesen Robotersound wirklich
nicht hinzufügen
wollen , ist das
nicht das Ende der Welt Im Grunde sage ich nur, okay, dieses spezielle Element
des Arrays braucht es nicht
wirklich im Array. Ich bewahre es nur als Andenken dort
auf. Und ich sage, okay, stumm. Es setzt die Stummschaltung in
der Minute,
in der ich spawne, auf falsch und stellt sicher, dass ich meinem Kachel mitteile, dass hier
ein Roboter ,
und
sobald mein Kachel
dann zerstört wird , muss
es sicherstellen, dass
diese Stummschaltung auf wahr gesetzt ist Wir könnten es auch einfach jedes Mal auf true
setzen wir eine Kachel zerstören, was nicht
annähernd so gut funktionieren
würde, weil dann jede
Kachel stummgeschaltet würde Die Roboter hier existieren
für einen Moment nicht. Das wird also hoffentlich den größten Teil der Lebensdauer des
Roboters
überleben Und es wird vorerst
gut funktionieren. Wenn wir zu
meinem Audiomanager zurückkehren, habe
ich bereits
mein Musikskript einprogrammiert und
ich habe den Sprung gemacht, ich habe jetzt den Roboter
gemacht, das Spiel gemacht
und ich habe auch den
Hit gemacht, aber die Elektrizität.
Ich glaube, ich habe den Diamanten auch gemacht. Gehen wir zum
Elektrizitäts-Sound, der im
Batterie-Skript hier drüben stehen wird. Lass uns mein Batterieskript suchen, es ist tatsächlich im Unity Store,
es wurde nicht geöffnet. Dann werden wir die
Batterie hier leer machen. Wir werden einen
Verweis auf meinen Audiomanager haben. Auch diesen muss ich per
Code
zuweisen, da es sich um ein
fertiges Objekt handeln wird. Ich werde sagen, M steht für
Game Object Dot Find Audio Manager Jetzt werde ich ein
Audio-Manager-Skript dafür finden. Ich werde sicherstellen, dass ich das richtig
zugewiesen habe. Und dann werde ich nur
diesen Code sagen, so wie ich es bei allen anderen
gesagt habe, wie Player Health
hier drüben, er ist hier AM. Sound abspielen Und dann
wähle ich ein Array-Element. Ich werde den Sound abspielen
, wenn der Akku eingeschaltet ist. Ich glaube, es ist das fünfte Geräusch. Lassen Sie mich sicherheitshalber nachsehen
, ob wir Element fünf spielen wollen. Das
wird jetzt so funktionieren wir
unseren Audio-Manager erstellt haben, in
dem jeder einzelne
Sound gespeichert ist, sowie das Skript, das uns
hoffentlich erlaubt, die Musik
stummzuschalten und nicht Und das haben wir noch nicht
programmiert. Aber das werden wir in dem Moment
hinzufügen, dem alle
Sounds funktionieren. Dann
waren wir hoffentlich in der Lage,
jeden einzelnen Sound
aus jedem Skript entsprechend aufzurufen , sodass wir
die Sounds abspielen können, wenn wir sie benötigen. Erinnern wir uns an all
die Sounds, die wir zuerst gemacht
haben: Music Which hatte keine Programmierung. Der Sprung wurde
im
Sound des Players referenziert . Stellen wir sicher, dass wir
den Audiomanager hier zuweisen . Einfach so. Gehen wir zurück und schauen uns an, was
wir sonst noch gemacht haben. Der Roboter wird vom Roboter
zugewiesen. Und stellen Sie einfach
fest, dass wir keinen Verweis
auf dieses
Audio-Manager-Skript erstellt
haben in Start keinen Verweis
auf dieses
Audio-Manager-Skript erstellt
haben. Was wir wahrscheinlich tun sollten , weil dies ein weiteres Prefab ist Schreiben wir also genau den
gleichen Code, den wir für
die Batterie in
diesem anderen Fertighaus geschrieben haben die Batterie in
diesem anderen Fertighaus Der Grund, warum wir das für Fertighäuser
tun, ist wir im Allgemeinen, wenn wir Objekte
haben, sagen können, okay, füge das in dieses Objekt ein, aber weil diese Objekte
noch nicht erstellt wurden, sind sie wie
Roboter Wir müssen
Code einschreiben, der das für uns erledigt, weil wir nicht da sind, um
ihn in sie hineinzuziehen und
das Spiel zu Deshalb mussten
wir vier,
ein paar davon,
diesen Code hier drüben schreiben. Wie dem auch sei,
das sollte der Code sein, den wir dem Roboter
zuweisen müssen . Also
schauen wir mal, was wir sonst noch haben. Der Roboter ist fertig,
der Sprung ist geschafft, Game Over und Hit werden
beide auf die Spielergesundheit gesetzt
, die jetzt zugewiesen sind. Beim Sammeln von Diamanten
wird es auch um Diamanten gehen. Und ich glaube, Diamanten, ich kann
mich nicht erinnern, ob wir uns daran erinnern es per Code
zuzuweisen,
aber ich glaube nicht, dass wir es getan haben. Lassen Sie uns also genau das
Gleiche tun, was wir dort getan haben. Stellen Sie nur sicher, dass wir es per Code
zuweisen. Das haben wir auch für
die Batterie gemacht. Das bedeutet, dass der
letzte, den wir haben, nur
für den Spieler ist , der
Schaden erleidet und stirbt. Gehen wir also zum Audio-Manager, gehen wir zum Player und stellen
sicher, dass wir
das Player-Health-Skript
diesem
Audio-Manager-Skript hier zuweisen das Player-Health-Skript . Lass uns jetzt weitermachen
und Player drücken. Möglicherweise gibt es einige Probleme, aber wir werden
sie im Laufe der Zeit beheben. Aber hoffentlich haben wir
alles getan , damit wir
keine Bugs haben. Und wir können die Musik hören und auf Play klicken und schauen,
ob alles funktioniert. Es sieht so aus, als ob das Springen funktioniert. Wir haben unser Audio, wir
haben das Sprunggeräusch. Wir werden
jeden einzelnen testen.
Natürlich werde
ich die Musik
stummschalten damit ich
alles andere hören kann. Es sieht nicht
so aus, als würde mein Herzsound meine Batterie belasten. Der Ton scheint nicht zu
sein. Aber lass uns testen. Herz
arbeitet offenbar an meinem Sprung, mein Spiel scheint vorbei zu
sein, was großartig ist. Das sind eigentlich die meisten von ihnen. Mal sehen, welche noch übrig
sind. Ich werde weitermachen und die Musik wieder
stummschalten, der Sprung klingt funktionierend. Ich muss den Roboter testen und das Gameover
funktioniert. Hits funktionieren Ich muss die Elektrizität testen. Scheint nicht zu funktionieren. Diamantensammler, ich
habe es noch nicht getestet. Und ich glaube, der Roboter
funktioniert auch nicht .
Lass uns einfach weitermachen. Wir haben
hier einen Fehler, der besagt, dass die Objektreferenz nicht
auf die Instanz eines Objekts gesetzt ist. Ja, es scheint, als ob unser
Code nicht genau funktioniert. Und ich denke, der Grund dafür ist wir
den
Audiomanager hier falsch sortiert haben. Lass uns einfach weitermachen
und das reparieren. Wir haben dort einen Platz eingerichtet, wo
er nicht hätte sein sollen. Wir müssen gehen, ich glaube,
wir haben das in
diesen drei Codezeilen
hier geschrieben diesen drei Codezeilen und wir haben
es auch in Tile Clear geschrieben. Stellen wir sicher, dass wir das Richtige
für den richtigen Zeitpunkt tun. Richtig. Lass uns weitermachen
und das nochmal versuchen. Ich sehe, dass all diese Fehler beim Versuch, Sounds abzuspielen,
aber sie konnten nicht weil sie kein Audiomanager-Objekt
mit einem Leerzeichen finden
konnten ,
das absolut Sinn macht. Versuchen wir es noch einmal.
Ich werde den Sprung etwas leiser machen
, weil er ziemlich laut ist. Lass uns das
nochmal versuchen. Ich werde die Musik wieder
stummschalten, damit
ich alles hören kann. Mal sehen, Jumping
scheint zu funktionieren. Wir haben einen Diamanten. Es scheint, als würde der Diamond
Sound hier spielen. Wenigstens wird etwas abgespielt, aber wir haben den
falschen Sound. Lass uns einfach testen. Wir haben
noch andere Fehler gemacht. Der Diamantensound
wird auch abgespielt, wenn wir einen Diamanten einsammeln. Interessant, dass
wir ihn
wahrscheinlich tatsächlich falsch
im Array zugewiesen haben, aber lassen Sie uns das versuchen. Der Robotersound
funktioniert auch, was großartig ist. Gehen wir zurück zu meinem Array.
Gehen wir hier rüber. Electricity Sound
sollte der fünfte sein. Lassen Sie uns das hineinziehen und schauen
, weil ich glaube, dass
es nicht
richtig zugewiesen wurde , das war
wahrscheinlich das Problem. Gehen wir einfach zu meiner
Batterie und überprüfen, ob wir das Richtige
anrufen und
wir Element fünf anrufen, wir rufen tatsächlich
die falschen an. Lass uns das auf vier ändern. Wir haben hier noch einen Fehler bekommen, der besagt
, dass die
Objektreferenz nicht auf die Instanz eines Objekts gesetzt ist und es heißt, dass sich der Skriptroboter bewegt. Lassen Sie uns weitermachen und sehen, was
genau das Problem hier ist, indem einen Audiomanager
finden und wir sollten in der Lage sein,
diesen Code auch zum Laufen zu bringen. Es sieht so aus, als ob das
Problem
hier vorbei sein könnte , wenn die
Komponentenkachel gelöscht wurde. Natürlich
sollten alle unsere Kacheln das
Skript haben, das sicherstellt
, dass sie
sich selbst löschen , sobald sie eine bestimmte Höhe
erreicht haben. Ich habe ein paar neue Kacheln gemacht. Irgendwann
hätte ich sie vielleicht hinzugefügt. Stellen wir einfach sicher, dass es
nicht auf allen meinen Kacheln ist. Lass uns einfach nachschauen,
welche es nicht haben. Die alle tun es, die alle tun, was einer tut
, der andere nicht. Diese beiden
haben also keine freien Fliesen. Mach weiter und füge das zu ihnen hinzu. Wir müssen natürlich
nichts einstellen. Und dann zu den anderen. Ja, das tun sie, es sind
nur die beiden. Wenn wir jetzt wieder
ins Spiel zurückkehren, sollte
alles ziemlich gut
funktionieren und all unsere Sounds und
alles sollte großartig sein. Drücken Sie einfach auf
Play und sehen Sie, ob
alles perfekt funktioniert. Also läuft meine Musik. Sobald ich anfange zu spielen, läuft
alles rein, sieht es so aus, als ob es auch
funktioniert Scheint ein kleines Problem zu haben, bei dem zwei komplett übereinander
spawnen dem zwei komplett übereinander
spawnen
.
Klar, was das ist Aber es sieht cool aus. Hoppla. Man kann
alles hören, was vor sich geht, man kann das
Zappen hören, und man kann den Roboter so listig
hören Wenn du stirbst, fangen
wir natürlich alles wieder von vorne an,
was wirklich cool ist Das ist
so ziemlich das gesamte
Audio-Setup , das
wir für unser Spiel benötigen. Das allerletzte ist, dass
wir jetzt
etwas hinzufügen müssen , das es uns ermöglicht, den Ton und den Sound
stummzuschalten, weil wir das
gleich zu Beginn codiert haben. Lass uns in meine Benutzeroberfläche gehen. Ich gehe
zu dieser Benutzeroberfläche hier drüben. Dieses Camas, das ich gemacht habe, ich
werde einen Button erstellen. Ich werde zwei Knöpfe haben. Lass uns ein Vermächtnis werden. Ich brauche keine Schaltfläche
mit Text mir. Ich werde das einfach
hier runterbringen. Und ich werde die
Textkomponente löschen und sie einfach in Fx umbenennen und die
darunter liegende Komponente in Music umbenennen. Ich werde
sie dort hinstellen. Ich glaube, ich möchte
in meiner Cloud die Musik so stummschalten können. Offensichtlich werde ich hier
echte Sprites verwenden. Ich werde diese Positionen festlegen. Negativ 4,445
negativ 445, cool. Dann gehen wir zu
meinen Sprites und
holen uns diese beiden Sprites, die ich speziell
für das Folgende
gemacht habe speziell
für das Folgende
gemacht Musik Und ich glaube,
der andere hieß Sound. Da ist es.
Importieren wir die beiden. Stellen Sie sicher, dass wir
beide ausgewählt haben und das Normale
tun, was wir
tun, wenn wir neue Sprites hinzufügen Gehen wir einfach hier rüber in das Quellbild und stellen
sicher, dass wir unser Sound-Sprite auf das X ziehen,
also klicken wir auf native Größe festlegen Dann
müssen wir das
entsprechend dem
Rest des Spiels skalieren entsprechend dem
Rest des Spiels Aber bevor wir das tun, fügen
wir Pixel hinzu. Fügen wir Musik hinzu, damit wir
dasselbe gleichzeitig tun können. Dann schauen wir uns einfach an, wie
wir das ändern müssen. Das ist offensichtlich ein Pixel. Es muss ein, es ist ein
bisschen groß nach unten. Nochmals, das sollte in Ordnung sein. Perfekt. Ich denke
, das ist gut genug. Vielleicht ist es manchmal kleiner. Ja. Jetzt müssen wir nur noch einmal zu
dem Plan hier drüben zurückkehren. wir einfach
sicher, dass wir
ein Veranstaltungssystem haben ,
denn das brauchen
wir, damit diese
Tasten funktionieren. Machen wir weiter und
ziehen das hier hoch und das hier runter, bis sie so aussehen, vielleicht ein bisschen zur Seite. Eigentlich werde ich
beide unten haben wollen. Ich denke so. Lass uns zur
Musik übergehen und sie bewegen. Wir haben unsere Knöpfe
dort. Ich werde beide tatsächlich auch
ein bisschen nach oben bewegen. Ich denke, das sieht vorerst in
Ordnung aus. Jetzt muss ich nur noch sicherstellen, dass der
Code, den ich erstellt habe, ausgeführt wird,
wenn ich diese Schaltflächen verwende. Also lass uns weitermachen und sie auswählen. Und dann
ziehe ich beim Klicken dieses
Audiomanager-Objekt hinein und wähle Audio
Manager stummschalten S von X. Und dann ändere
ich das für Musik auf Musik
stummschalten.
Mal
sehen, ob diese funktionieren. Was passieren sollte
, ist das Letzte, was ich tun werde bevor ich damit fertig bin
, dass ich zurück
zum Audio-Manager gehe. Ich werde nur auf diese beiden Schaltflächen hinweisen. Lass uns Unity Engine verwenden. Lassen Sie uns einen Verweis
auf meine beiden Buttons erstellen, Public Button X und der andere ist
Musik mit einem Großbuchstaben. Diesmal
werde ich nur sagen, okay,
wenn ich tatsächlich ein paar Farben
kreieren werde, werde
ich eine Farbe namens Grade out erstellen. Alles, was ich tun werde, ist
zu sagen, okay, wenn du die Musik jetzt stummgeschaltet hast und
dann Musik ausgraut. Du
kannst die Änderung sehen Lassen Sie uns
hier weitermachen und
sagen wir, ob Musik stummgeschaltet ist . Mit anderen
Worten, wenn wir das
Mikrofon jetzt stummgeschaltet haben, wird auf „true“
gesetzt Musik“ auf „true“
gesetzt. Mit anderen Worten,
wenn wir es stummgeschaltet haben, setzen
wir die Farbe meines Musikbilds Dann schreibe
ich darunter L. Die Farbe Musikbildes
entspricht der Farbe Weiß Ich werde ziemlich genau
den gleichen Code
unter die
Soundeffekte hier drüben schreiben . Sagen wir, wenn X stummgeschaltet ist, dann ist die Punktfarbe des
X-Punkts grau Andernfalls stellen Sie es auf Weiß ein. Gehen wir dann zurück zu meinem Spiel. Unter meinem
Audio-Manager-Skript hier drüben muss
ich nur einen
Verweis auf diese beiden erstellen. Ziehen wir X da rein
und lassen Sie uns Musik
hineinziehen also lassen wir die
Erstellungsfarbe ungefähr so aussehen. Und schauen wir, ob wir das in
Aktion sehen können, während wir das Spiel spielen. Lass uns weitermachen und auf Play klicken. Und teste einfach diese beiden
Tasten, um zu sehen, ob sie funktionieren. Es sieht so aus. Mal sehen, ob wir auf
den Sound klicken. Wir sollten
überhaupt keine Geräusche haben. Lassen Sie uns also
beide stummschalten, während ich spreche, nur um zu testen, ob etwas
nicht funktioniert. Es scheint, als ob Roboter
immer noch ein Problem sind. Und der Grund dafür ist
, dass wir Stummschaltung
tatsächlich manuell aufheben Was ich
stattdessen tun werde, ist die Lautstärke einstellen
statt stummschalten
zu sagen Und stellen Sie dann die Lautstärke zurück. Was eigentlich ziemlich cool ist. Daran habe ich eigentlich nicht gedacht. Aber lassen Sie uns diese Änderung einfach schnell
vornehmen. Anstatt zu sagen, dass Stummschalten falsch ist, werde
ich sagen, dass die
Lautstärke gleich ist. Und was ist dann die Lautstärke , die mein Roboter
normalerweise haben soll, sie ist normalerweise auf 0,01. Also
werde ich die Lautstärke auf
0,01 einstellen . Geben Sie danach einfach ein. Das müssen Sie
tun. Was dann vorgegeben
wird,
wenn das wieder ausgeschaltet ist, ist,
dass mein Plättchen gelöscht
wird, wenn ich es getan habe. Also lasst uns loslegen Anstatt Stumm zu sagen, sage
ich, dass die Lautstärke gleich Null
ist. Die letzte
Änderung, die Sie
danach vornehmen müssen, ist, dass Sie
wieder in mein Spiel zurückkehren müssen. Ich muss zu diesem
Skript hier gehen. Und ich muss das zu Beginn
des Spiels
tatsächlich auf
Null setzen . Und nicht einfach so stummgeschaltet. Wenn ich jetzt mein Spiel spiele, sollte
ich
keine Robotergeräusche Wenn ich anfange,
sowohl Ton als auch Audio stummschalten, sollte
das
kein Problem
mehr sein , wo wir testen können Eigentlich sollte es
immer noch auf 0,01 steigen , wenn ich es abspiele, weil es stummgeschaltet ist,
wenn ich es höre Wir sollten jetzt einen Roboter auf dem
Bildschirm haben, was perfekt ist. Sie können sehen, dass er
tatsächlich funktioniert. dem Moment, in dem
dieser Roboter tatsächlich von der Wolke zerstört
wird, werden keine Soundeffekte abgespielt. Es wird nichts abgespielt, und das
ist genau das, was wir wollen. dem Moment, in dem dieser Roboter
tatsächlich zerstört wird, sollten
wir ihn wieder auf Null
fallen lassen, was anscheinend gerade passiert ist. Was großartig ist. Das ist
eigentlich der ganze Sound,
den wir für unser Spiel
machen müssen. Und jetzt kannst du das natürlich ändern , wann immer du im Spiel
spawnst Sie können das auswählen, ob
Sie es ein- oder ausschalten möchten. Es wird natürlich
standardmäßig aktiviert sein. Aber dann kannst du es
einfach ausschalten wenn du es willst,
was ziemlich cool ist. Das ist eigentlich das Letzte. Um unser Spiel zu vervollständigen, ist
das Letzte, was wir jetzt noch
brauchen, der letzte Schliff. Aber danach haben
wir unser Spiel so gut wie fertig gemacht, was wirklich, wirklich cool
ist. Natürlich werden
wir, wie ich
im nächsten Video sagte, einige letzte
Feinarbeiten vornehmen
, damit alles ein bisschen besser
aussieht. Aber wir haben so ziemlich viel getan Wenn du
also mitmachst und
ein Spiel hast, das so
aussieht, ist das
wirklich, wirklich cool. Weil es offensichtlich ein
ziemlich beeindruckendes
Spiel ist , wenn man Unity
noch nie so oft benutzt hat. Also gute Arbeit beim Mitmachen. Und hoffentlich bist du von deinem
Spiel ziemlich beeindruckt und im Moment ziemlich
stolz darauf. Und wie ich
im nächsten Video erwähnt habe, werden
wir
nur einige letzte Feinheiten vornehmen
, damit unser Spiel
ein bisschen besser aussieht. Aber hoffentlich bist du, wie
ich schon sagte,
zufrieden damit, wie es
bisher
ist und alles funktioniert auch in deinem Spiel gut, genau wie
in meinem. Wir werden diesen
Kurs in
den nächsten beiden Videos
abschließen und im nächsten werden
wir nur einige letzte Feinheiten
hinzufügen. Und dann zeige ich dir,
wie du
dieses Spiel baust und exportierst und schließe
diesen Kurs ab. Danke.
18. 17. Letzter Schliff: Hallo, und willkommen
zurück bei Unity für die letzte Lektion, in wir dieses Spiel
entwickeln werden. In dieser Lektion werden
wir nur noch einige
letzte Feinheiten
hinzufügen. Wir werden zwei Dinge
hinzufügen. Zuallererst werden
wir die Geschwindigkeit
der Kamera im Laufe der Zeit erhöhen. Dann werden wir auch die Nachbearbeitung
hinzufügen,
was wie visuelle Effekte im Vollbildmodus ist, die das Spiel nur ein bisschen besser
aussehen lassen. Es ist ziemlich schwer zu erklären, aber du wirst sehen, sobald
wir es hinzugefügt haben, angefangen mit dem Original
, bevor ich das mache, werde
ich
diesen Vorhang einfach aktivieren , weil
ich ihn vor
einigen Folgen deaktiviert habe und
bevor ich ihn vergesse,
wenn ich versuche, mein Spiel zu bauen, finde
ich, dass es mit dieser Einblendung viel
cooler aussieht. Lass uns einfach
nachschauen, ob das alles funktioniert. Also haben wir unseren
Fade-In und unser Audio und Sound funktionieren offensichtlich genauso wie
zuvor. Fangen wir damit
an. Geschwindigkeit der Kamera erhöhen. Ich gehe zu den Drehbüchern und werde ein neues erstellen. Ich nenne
es Camera Speed Up, die Art und Weise, wie das Drehbuch
tatsächlich funktionieren wird. Es gibt einige Möglichkeiten, wie
Sie das tun können, aber die Art, die ich wählen werde, gibt dem Spieler ziemlich viel Kontrolle über an bestimmten Punkten
ziemlich viel Kontrolle über
die Kamerageschwindigkeit. Ich werde
hier
eine Variable haben , die verstrichene Zeit heißt Bei jedem einzelnen Frame
werde ich die
verstrichene Zeit um die Time Delta Time erhöhen verstrichene Zeit um die Time Delta Mit anderen Worten, die verstrichene Zeit
wird zunehmen, sie
wird im Grunde genommen ein Zähler Und wenn wir das auf ein Objekt
setzen, werde
ich es zum Beispiel auf die
Hauptkamera legen Lassen Sie uns weitermachen und mein Skript hier drüben
, das als Camera Speed
Up bezeichnet wurde, ganz nach unten hinzufügen . Da hast du's. Wie dem auch sei, wenn wir nur zusehen, wie die Zeit
abläuft, schalte ich die Musik stumm damit ich sprechen kann,
während sie läuft Scrollen wir nach unten und
schauen wir uns
hier an , dass dieser Wert hoch und rauf und rauf
zählt Wir haben gleich
am Anfang
einen Fehler, der besagt,
dass der Wert nicht Null sein darf, was sich
vermutlich auf die verstrichene Zeit bezieht was sich
vermutlich auf die verstrichene Zeit bezieht, weil wir ihn
noch nicht initialisiert haben, worauf ich gleich
zurückkommen werde Aber im Grunde ist es nur ein Timer. Ich möchte
dir nur zeigen, was es ist. Lassen Sie uns ursprünglich damit beginnen
, dies auf Null zu setzen, und es ist jetzt ein Timer. Was wir bei jedem einzelnen Frame
tun ist, dass wir sagen, wenn die
verstrichene Zeit größer als ein Wert ist, was
im Grunde bedeutet, ein Level nach oben zu gehen, dann werden wir das Level dieses
Levels Kamerageschwindigkeit, wir werden hier oben eine Reihe
haben. Public Float Array, es
werden Kamerageschwindigkeiten sein. Dann werden wir
ein Array daneben haben, was mal sein wird. Was wir
im Grunde sagen werden, ist die Minute, in der ich
größer als eine Zeit bin, dann musst du die
Kamerageschwindigkeit um diesen Betrag erhöhen. Diese Zeitvariable werden
wir
in einem anderen Float
namens Current Time speichern . In der Minute, in der wir das Spiel starten, in
der Minute, in der es beginnt, werden
wir die aktuelle Zeit so einstellen , dass sie dem allerersten
Mal unserer Zeit
entspricht. Es wird mal Null sein. Offensichtlich wird auch die
Kamerageschwindigkeit auf Null gesetzt. Wir müssen
hier einen Verweis
auf meine Kamerageschwindigkeit erstellen . Gehen wir an die öffentliche Kamera, bewegen wir uns, nennen wir es Kamerageschwindigkeit. Lieber Kamera-Skript. Dann
sagen wir Kameraskript. Die Kamerageschwindigkeit
entspricht der Kamerageschwindigkeit Null. Auf diese
Weise können
wir im Grunde genommen die Geschwindigkeit
der Kamera ändern. Das macht die
Änderung, die wir zuvor vorgenommen haben, bei wir die
Kamerageschwindigkeit von der aktuellen Geschwindigkeit getrennt haben, wirklich nützlich, denn
jetzt können wir die Geschwindigkeit ändern ohne uns Gedanken darüber machen zu müssen, wie schnell sich die
Kamera tatsächlich bewegt. So schnell
sollte sie sich bewegen, oder? Aber das heißt nicht, dass es anfängt, sich zu bewegen, wenn eine
bestimmte Zeit
vergeht , während wir tot sind oder
so Was momentan wirklich,
wirklich cool ist. Wir haben hier
oben ein Skript, das besagt
, die aktuelle Zeit
auf Null zu setzen und das Kameraskript auf
diese Kamerageschwindigkeit zu weil wir hier
dieselbe Variable verwenden. Ich werde das tatsächlich
auf
eine andere Variable setzen , sie Index nennen. Zu Beginn setzen wir
den Index auf Null und wir werden diesen Wert einfach auf Index
setzen. Und jedes
Mal, wenn wir Zeit verstreichen, werden
wir die verstrichene Zeit
erhöhen Und wir werden sagen, ob die verstrichene
Zeit größer ist als die Zeit Mit anderen Worten, wenn
wir aufgestiegen sind, wenn wir jetzt genug
Zeit verstrichen haben, um zum nächsten Level zu gelangen, dann werden
wir als Erstes den Index
erhöhen Wir werden den Index plus plus, anderen
Worten, den Index um eins
erhöhen Dann sagen
wir darunter , eigentlich davor. Wir werden eher Kameraskript
sagen, Kamerageschwindigkeit entspricht dem
Kamerageschwindigkeitsindex. Und das werden wir tatsächlich
nach unten verschieben. Im Grunde werden wir
die
Kamerageschwindigkeit um diesen Betrag
erhöhen Nun, das wird
es ermöglichen, so zu machen dieser Code
funktionieren wird, wie ich es erklärt habe Wir werden
einen Zeitrafferbereich haben dem von Null
aufwärts gezählt wird Wir werden eine
Liste der Kamerageschwindigkeiten
und eine Liste der jeweiligen Zeiten haben und eine Liste der jeweiligen Zeiten Und wir werden eine aktuelle Uhrzeit
und eine Kamerageschwindigkeit
und einen aktuellen Index
haben . Diese aktuelle Zeitvariable brauchen
wir eigentlich nicht. Ich weiß nicht, warum ich es erstellt
habe, ich kann
beide hier tatsächlich entfernen. Im Grunde
müssen wir nur diesen Float hier drüben
haben, auf dem
die verstrichene Zeit, Kamerageschwindigkeit und die Uhrzeiten stehen,
sowie ein Verweis
auf das Skript und ein Index am
Startindex ist auf Null gesetzt Wir setzen unsere Kamerageschwindigkeit
auf die ursprüngliche Geschwindigkeit. Solange die
verstrichene Zeit größer
als alles andere ist, ist
der Index größer als eins In dem Moment, in dem uns die Gehaltserhöhung
ausgeht,
wird es natürlich zu einem Ich werde einen kleinen
Code darunter hinzufügen, der besagt, solange wir nicht den maximalen Index erreicht haben und sobald wir
den maximalen Index erreicht haben, werde
ich das Skript einfach komplett
zerstören Aber bis dahin werde ich mein Ding jedes
Mal
erhöhen , wenn die verstrichene Zeit
tatsächlich größer ist als die,
die als nächstes Sie werden den Index erhöhen
und dann werde ich
die Kamerageschwindigkeit auf den Wert einstellen , der
sich hier drüben
darunter befindet Ich werde sagen, wenn der Index
der Kamerageschwindigkeit und der
Länge entspricht , mit anderen Worten,
wenn wir
das Maximum erreicht haben , funktioniert der Index,
solange er eins weniger ist. Aber sobald es noch eins ist, mit anderen
Worten, wir
haben das Maximum erreicht, werde
ich
dieses Skript löschen. Das wird kein
Problem sein, denn wenn wir die Szene
neu laden, wird
sie wieder da sein Aber im Grunde nur für den Moment weil ich
nicht mehr brauche, sage
ich, zerstöre das Spielobjekt,
lass die Komponentenkamera beschleunigen Oder besser gesagt
statt Destroyer würde ich
sagen, dass Game Object Dot Get Component Camera
Speed Up aktiviert Weil ich denke, dass Destroy
das Spielobjekt
selbst loswerden
könnte , ist das gleich falsch. Im Grunde deaktiviere ich mich in dem
Moment, in dem mir das Zeug ausgeht deaktiviere ich mich in dem
Moment, in dem mir das Zeug Und natürlich werden sie wieder aktiviert, wenn wir die Szene
starten Aber das sollte eigentlich ziemlich gut
funktionieren es uns sagt, wie schnell die
Kamerageschwindigkeit sein sollte Gehen wir zur Hauptkamera,
notieren sie auf die Unterseite und stellen wir meine Kamerageschwindigkeit ein. Ich werde zunächst
vier einstellen, ich werde einstellen. Das
muss natürlich die gleiche Länge haben, sagen wir nach 2 Sekunden, nach 4 Sekunden,
nach 6 Sekunden, nach 8 Sekunden, ich
werde es
123,4 schaffen , damit wir
im Grunde alles sehen können Sie werden
mein Drehbuch für die Kamerabewegung auswählen. Ich werde
weitermachen und auf Play klicken. Und lassen Sie uns genau sehen,
wie das funktioniert. Wir
benötigen diese Kameravariable jetzt nicht mehr. Wir haben hier die
Kamerageschwindigkeit, der wir dort zuweisen müssen. Das wird keinen Unterschied
machen. Lass uns weitermachen und einfach Null machen. Das ist nicht wirklich wichtig. Dann lass uns weitermachen
und auf Play klicken. Und bevor wir tatsächlich auf Play klicken, mir gerade klar, dass uns
die Kamerageschwindigkeit zugewiesen
wird , bevor tatsächlich
etwas anfängt. Wir wollen nur, dass diese Lücke
aufgerufen wird, wenn wir das Spiel tatsächlich
starten. Gehen wir an die Öffentlichkeit, Leere beginnt. Und es wird
tatsächlich von dem Start-Manager-Skript aufgerufen , das
wir vor einiger Zeit erstellt haben. Gehen wir zurück
und lassen Sie uns
eine öffentliche Kamera einrichten , die die Geschwindigkeit beschleunigt. Gehen wir hierher
und sagen, dass die Geschwindigkeit der Kamera beginnt. Andernfalls bewegt sich
die Kamera,
bevor wir das Spiel starten.
Lass uns wieder hierher gehen. Gehen wir zu meinem Startskript hier
drüben bis zur Grenze. Stellen wir sicher, dass wir dort mein Skript zur Beschleunigung der
Kamera hinzufügen. Lass uns sehen, ob es funktioniert. Was nun passieren sollte, ist, dass
wir 4 Sekunden haben sollten, die erste Sekunde, oder
besser gesagt 8 Sekunden, und vier verschiedene Geschwindigkeiten,
je nachdem, wie lange wir das T spielen,
wir starten
das Spiel , wir sollten die Kamera trotzdem bewegen lassen, was
hoffentlich passieren wird. Großartig, ich werde das stummschalten,
damit ich es erklären kann. Sobald ich
anfange, mich zu bewegen, gehe
ich um eine,
zwei Sekunden zurück. Dann sollte ich um zwei Uhr umziehen. Dann steht da, dass der Index außerhalb der Grenzen
liegt, der Strahl Schauen wir uns einfach an,
was das Problem ist. Offenbar liegt der Index
außerhalb des Grenzstrahls, was bedeutet, dass wir
versuchen, auf
etwas zu verweisen , das hier nicht
existiert. Schauen wir uns einfach an, wie
wir das hier codiert haben. Das ist eigentlich so gemeint
, entspricht Kameralänge minus eins. Der Index ist tatsächlich eins kleiner als die Kameralänge, wenn
die Kameralänge drei ist. Wenn der Index zwei ist, wird
es hier
kein drittes Element geben.
Das muss minus eins sein. Mir ist gerade erst
klar geworden, dass wir auch, glaube
ich, nirgends
die Tatsache codiert haben , dass das
Kameraskript
eigentlich die Geschwindigkeit haben sollte , die
wir hier programmiert haben. Wir gehen davon aus
, dass in dem Moment, in
dem wir anfangen
, alles gut signiert wird. Aber jedes
Mal, wenn wir das tun, wollen
wir sichergehen,
dass wir verstreichen,
wir stellen sicher, dass die Kamerageschwindigkeit tatsächlich der maximalen
Kamerageschwindigkeit entspricht Müssen wir das tatsächlich mit dem Tod rechnen Lassen Sie uns einen Verweis auf
meine öffentliche
Spielergesundheit erstellen , nennen wir ihn Player. Dann lassen Sie uns einfach hier
drüben sagen, dass all dieser Code hier
drüben nur ausgeführt wird , wenn der Spieler
nicht tot ist gleich falsch Lass uns wieder hier rüber gehen. Gehen wir dann zu meiner
Kamerageschwindigkeit und sagen, dass die Geschwindigkeit des Kameraskripts der Kamerageschwindigkeit
entspricht. Damit sollte eigentlich alles
einwandfrei funktionieren. Jetzt werden wir es erneut testen,
offensichtlich, weil Sie jedes
Mal, wenn Sie ein Spiel entwickeln, auf solche Bugs
stoßen jedes
Mal, wenn Sie ein Spiel entwickeln, auf solche Bugs
stoßen . Offensichtlich haben wir jetzt hoffentlich alles
repariert. Lass uns zurückgehen. Lassen Sie uns einfach sehen, die Art und Weise, wie wir das
kodiert haben ,
berücksichtigt , dass wir hier keine Zeit
brauchen , weil wir uns nie wirklich
auf diese Zeit beziehen. Wir beziehen uns nur darauf,
solange so viele Sekunden vergangen sind. Lassen Sie uns also
weitermachen und tatsächlich noch eine Änderung vornehmen. Bevor wir das tun,
wollen wir nur die Zeit berücksichtigen, also die Minute
, in der das Spiel tatsächlich angefangen
hat zu spielen Lassen Sie uns weitermachen und
sagen, wenn wir
noch einen Goldbarren brauchen , nennen wir es begonnen Nehmen wir an, wenn wir angefangen haben, mit anderen
Worten, wenn wir tatsächlich das Spiel
spielen , das begonnen hat, wird
sich erst hier bewahrheitet. Lassen Sie uns weitermachen
und uns den neuen Code ansehen. Es gab hier
tatsächlich einige Fehler , die
wir beheben müssen, aber sie sollten alle behoben werden. Gehen wir jetzt zurück zu unserem Spiel. Schauen wir uns all die
verschiedenen Dinge an, die wir hier in unserem neuen Drehbuch
haben. Wir sollten diesen Zeitraffer
Null haben , bis das Spiel beginnt Und dann sollten wir sehen können
, wie die Kamera schneller wird. Ich hätte fast vergessen, den Spielern die Gesundheit
zuzuweisen. Gehen wir zurück und
weisen das meinem Spieler zu, den Doppelklick oder
besser gesagt den Einzelklick. Mal sehen, ob jetzt alles
funktioniert. Begun ist auf False gesetzt,
genau wie es sein sollte. Lassen Sie uns das deaktivieren. Ton. Mal sehen, ob wir nicht
in der
Minute, durch die wir gehen, Zeit verstreichen lassen.
Die Zeit fängt an zu zählen Perfekt, wir haben derzeit 1 Minute, 4 Sekunden sind vergangen. Wir sollten jetzt auf zwei beschleunigen. Es sieht nicht so aus, als würden
wir wieder schneller werden. Gehen wir einfach zurück zum Drehbuch. Die Kamerageschwindigkeit ist
derzeit auf eins eingestellt. Jetzt wird die Kamerageschwindigkeit nicht aktualisiert, vielleicht
ist die tote Variable das Problem. Lassen Sie uns weitermachen und nachsehen
, denn ich glaube nicht, dass unser Index tatsächlich
aktualisiert wird. Ja, ist es nicht. Unser Index bleibt bei Null. Gehen wir zurück und schauen,
ob wir das beheben können. dritte Mal ist der Reiz. Ich denke, tot ist eigentlich nicht alles. Ja, tot ist das Goldbarren. Lass uns weitermachen und
ändern, dass das tot ist. Ich glaube, das ist tatsächlich ein Sprite. Ja, das ist eindeutig der Grund,
warum es nicht funktioniert hat. Wenn wir jetzt wieder zu
meinem Spiel zurückkehren, sollten
wir
sehen können, wie die Kamera im Laufe der Zeit
schneller wird. Lass uns weitermachen und auf Play klicken, um zu testen, ob es tatsächlich funktioniert. Wir sollten mit einer abgelaufenen
Zeit von Null beginnen. Die Zeit sollte
eigentlich nicht
herunterzählen , bis wir anfangen zu spielen, was wir haben Lass uns weitermachen
und ins Spiel gehen. Und jetzt fangen wir
mit einer Geschwindigkeit von eins an. Und es sieht so aus, als ob das bei eins bleiben
wird, vielleicht ist es eine Eigenerhöhung von zwei, nicht eine Erhöhung von drei und
eine Erhöhung auf vier. Offensichtlich können wir sehen, dass
das Spiel
ziemlich drastisch beschleunigt wird,
was ziemlich cool ist. Wenn wir die
Kamera beschleunigen, entfernen
sich diese Dinge immer weiter voneinander. Eigentlich entfernen sie
sich nicht weiter voneinander, aber sie werden immer häufiger. Aber hoffentlich
sieht das Spiel
dadurch etwas skalierbarer aus. Offensichtlich ist es ein bisschen
schwieriger, mit der Kamera Schritt zu halten, und wenn Sie das nicht tun, sterben
Sie offensichtlich. Was Sie
tatsächlich tun müssen, ist die Art und Weise zu bearbeiten, wie Sie sie haben
möchten. Ich werde es
am Anfang auf 1,8 setzen , so
wie wir es hatten. Dann denke ich, ich
möchte es auf 2.2
0.4 setzen . Dann
werde ich das im Grunde genommen ziemlich stark erhöhen Ich werde zehn von ihnen
sagen lassen, dass wir von 2,4 auf
2,6 und dann auf 2,62 0,82 0,83 gehen und dann werden wir
3,23 Punkte,
4,3 0,6 erreichen und ich denke, dass es maximal 3,6 sein
sollte wenn du eine
ganze Weile gespielt
hast Lassen Sie uns also die verstrichene Zeit festlegen. Es sollte sich erst nach etwa 20 Sekunden,
30 Sekunden, 40 Sekunden, 50
Sekunden davon ändern 30 Sekunden, 40 Sekunden, 50
Sekunden Und ich werde
sagen, dass Sie die
Höchstgeschwindigkeit erreichen , nachdem Sie etwa 100 Sekunden
lang gespielt haben. Und ich meine, du musst diese exakten Werte nicht verwenden. Das können einfach die sein,
die ich verwenden werde,
aber ich denke, sie
sollten ziemlich
gut für die Art und Weise funktionieren , wie wir das Spiel bisher
gespielt haben. Schauen wir uns also an, ob
das tatsächlich funktioniert und sich
für den Anfang natürlich anfühlt. Lassen Sie uns zumindest den Sound
deaktivieren. Schau einfach, wir haben
die gleiche Geschwindigkeit ,
an die wir uns immer gewöhnt haben. Und dann nach 20 Sekunden
sollten wir die Geschwindigkeit immer weiter erhöhen lassen, was cool ist. Das ist also der erste Schritt
, den wir machen müssen , um den letzten Schwung für unser Spiel
zu erzielen Die zweite Sache ist das Posting. Hoffentlich ist es glücklicherweise
viel weniger Art der Codierung
und viel einfacher Lassen Sie uns zunächst mit der Erstellung
eines Nachbearbeitungsobjekts beginnen. Und wir gehen jetzt zum Window
Package Manager. Wir werden
dieses Postpcing-Paket finden. Was Sie tun müssen, ist
, in
Pakete zu wechseln, die Sie möglicherweise in der
Projektliste haben Gehen wir also zur
Unity-Registrierung und suchen wir dieses
Nachbearbeitungsobjekt. Dann klicken Sie
auf Installieren. Dadurch wird dieser Stack
oder dieses Paket in Ihrem Projekt
installiert . Es wird „Installieren“ heißen.
Es kann eine Weile dauern, je nachdem, wie schnell Ihr
Computer und/oder WLAN ist. Aber danach ist die Installation
abgeschlossen. Sie können sehen, dass
dieses Popup hier erscheint, dann sollte alles geladen werden. Nun, was dieser
Postpsing-Stack ermöglicht, werde
ich tatsächlich
den Vorhang im Editor loswerden den Vorhang im Editor Wir benutzen diesen
Button. Es wird das
Spiel nicht beeinflussen, was cool ist. Das hätte ich früher machen sollen. Aber wie dem auch sei, was uns das tatsächlich
ermöglichen wird,
ist , unseren Spielen visuelle
Effekte hinzuzufügen. Gehen wir zuerst zu diesem nachträglichen Objekt, das
wir hier haben. Als erstes müssen
wir zu meiner Kamera gehen und eine
Nachbearbeitungsebene hinzufügen Lass uns Beiträge schreiben, wir können sehen, ob du all
diese neuen Dinge hast. Es kann eine Weile dauern,
bis sie alle geladen sind, aber wir haben ein Debugging , mit
dem wir uns nicht
befassen Wir haben eine Ebene,
wir haben ein Volumen. Warte einfach, bis das neu geladen ist. Und dann gehen wir wieder runter und fügen der Kamera eine Ebene hinzu Jetzt können Sie so
ziemlich alle
diese Einstellungen unverändert lassen ,
außer dass Sie natürlich
eine Ebene auswählen
müssen , auf die sich die Verschiebung
auswirken soll,
was unseren
Spezialeffekten ähnelt Ich werde darüber hinweggehen
und
eine neue Ebene erstellen , das ist ein Tag Ich werde eine neue Ebene erstellen, ich werde
sie Post-Process nennen. Gehe zu meiner Nachbearbeitung und
vergewissere dich, dass sie sich auf dieser Ebene befindet. Ich gehe zu meiner
Hauptkamera und stelle meine Hauptkamera so ein, dass sie die Nachbearbeitungsebene ist
, auf dass sie die Nachbearbeitungsebene der
alles funktionieren sollte Ich werde den
Rest vorerst so lassen, wie er ist. Jetzt gehe ich zu meinem
Nachbearbeitungsobjekt hier
drüben und
füge ein Nachbearbeitungsvolumen hinzu. Dadurch kann ich
mein Spiel grundsätzlich bearbeiten. Ich werde das jetzt tatsächlich deaktivieren
, damit ich es sehen kann, weil du im Spiel nur die
Nachbearbeitung sehen kannst Ich werde in der Lage sein,
eine ganze Reihe von wirklich
coolen Spezialeffekten hinzuzufügen , du kannst damit herumspielen. Ich bin nicht der Beste darin, das zu
benutzen, um ehrlich zu sein. Das ist im Grunde die
Bearbeitung seines Kerns. Sie werden
eine ganze Reihe
verschiedener Einstellungen haben ,
und je besser Sie in
der Fotobearbeitung
und Nachbearbeitung sind
,
ich denke, je besser Sie in
der Videobearbeitung sind, all das hängt natürlich je besser Sie in
der Fotobearbeitung
und Nachbearbeitung sind ,
ich denke, je besser Sie in
der Videobearbeitung sind, all auch damit zusammen Ich habe ein paar Tricks
, die ich für meine Spiele verwende, aber ich bin nicht der
erfahrenste darin Wie dem auch sei, es ist ziemlich
einfach zu erlernen, genau wie bei den Partikelsystemen müssen
Sie zunächst ein neues Profil
erstellen. Dann können Sie anfangen, Effekte
hinzuzufügen. Gehen wir zu Unity und fügen
wir Bloom hinzu. Das ist der
Lieblingseffekt der meisten Menschen. Nun, bevor wir die Wirkung sehen
können, müssen
wir das Kästchen „Das ist global“ ankreuzen. Dann können Sie sehen,
wie Sie die Intensität
der Blüte erhöhen werden. Man kann sehen, dass das Spiel hell
wird Natürlich wollen wir nicht, dass
es so wird. Aber du kannst sehen, ob
du etwas
wie Null hast oder ob du etwas
wie 0,30 oder sogar 0,5 hast wie 0,30 oder sogar 0,5 Dadurch sieht das Spiel
nur ein bisschen schöner aus. In der Videoqualität ist es vielleicht nicht so einfach
zu erkennen, aber wenn du auf 0,7 oder 0,8
gehst, kannst
du natürlich sehen, wie das Spiel ein bisschen
zum Leben erweckt Ich möchte meinen Wert auf 20,8 setzen,
was ziemlich hoch ist, aber ich werde
ihn vorerst dabei belassen Ich werde
den Schwellenwert nur
ein wenig senken oder besser gesagt den Schwellenwert
erhöhen Du kannst dort sehen, dass, wenn ich die Intensität
erhöhe, einige Dinge betroffen sind,
aber ich finde,
das sieht erstmal ziemlich cool aus. Ein ziemlich hoher Schwellenwert.
Aber dann werde ich auch einen
anständig hohen Bloom haben Lass es uns tatsächlich auf zwei setzen, nur um zu testen, ob es tatsächlich etwas tut. Sie können
das ein- und ausschalten. Mein Schwellenwert
ist möglicherweise etwas hoch und
liegt bei 1,2. Sie können
jetzt sehen, liegt bei 1,2. Sie können
jetzt sehen dass Sie einen
kleinen Unterschied feststellen können. Ich werde
es vorerst dabei belassen. Ich werde einen neuen Effekt hinzufügen. Das nächste, was ich
hinzufügen werde, wird
eine Vignette oder eine Vinette sein eine Vignette oder eine Vinette Ich bin mir nicht sicher, das ist nur eine Schwärzung an
den Rändern. Also werde ich ein
kleines bisschen an den Seiten hinzufügen, mein
Spiel etwas gerahmter zu machen Danach werde ich etwas Farbkorrektur
hinzufügen. Das ist unglaublich
kompliziert. Normalerweise verwende ich das in meinen Spielen nicht
allzu oft, aber ich werde den Bereich mit
niedriger Auflösung einstellen , weil er das zu bevorzugen
scheint Dann mache ich einfach
weiter und ich kann natürlich meine Temperatur ändern, was ich nicht
wirklich tun werde Lass das vorerst so sein. Ich könnte es auf -0,1 setzen ,
nur um zu sehen, ob es überhaupt
einen Unterschied macht Sie können einen kleinen
Unterschied erkennen, aber ich werde
es auf 0,2 setzen. Und dann kann ich natürlich einen
Farbfilter hinzufügen, wenn ich dazu neigen würde Um ehrlich zu sein, möchte ich das nicht wirklich
tun. Aber wenn ich wollte, könnte ich einen Filter
hinzufügen, um ein Spiel
vielleicht etwas
dunkler zu machen, wenn ich wollte, aber
das lasse ich vorerst weg. Dann können Sie auch
Dinge wie die Helligkeit ändern, natürlich können Sie das, wie ich
bereits erwähnt habe. Ich werde das erste Spiel
heller machen und ich
werde den Kontrast
ändern, nur ein
bisschen von meinem Spiel. Mach es negativ zwei
oder minus drei. Nur um die Dinge klarer zu machen sollten
negative fünf gut sein. Dies sind die drei Effekte
, die ich bisher verwendet habe. Hier gibt es tatsächlich eine
ganze Reihe, die du verwenden
kannst, je nachdem, was
du für dein Spiel möchtest. Du könntest zum Beispiel
Getreide hinzufügen. Vielleicht kannst du sehen,
was das bewirkt. Das ist natürlich nicht der
Effekt, den ich anstrebe,
aber wenn du willst , könntest du. Ich denke, sehr große Körner könnten cool
aussehen, je nachdem für
welchen Stil du dich wenn du ein Retro-Spiel machst. Aber ich werde nichts
anderes tun als das, was ich bisher gemacht habe. Sie sollten sehen können, dass das wirksam wird, Sie können den Unterschied
sehen. Und lass das Spiel meiner
Meinung nach einfach
ein bisschen besser aussehen . Ich werde
die Blüte tatsächlich nur geringfügig erhöhen. Ich werde meine
Farbkorrektur etwas reduzieren. Ich
möchte nicht wirklich, dass meine Helligkeit so effektiv ist wie früher Ähm, ich bin mir nicht sicher, ob die
Farbkorrektur überhaupt eine gute Abwechslung ist Ich könnte das sogar komplett
löschen. Aber wie gesagt, du kannst damit
herumspielen ,
so oft du willst. Und du kannst jetzt sehen,
wenn ich weitermache und meinen Vorhang
wieder einschalte
und mein Spiel spiele, kann
ich jetzt sehen, was mein
fertiges Sky Miner-Spiel ist Und das ist die Plattform für
Fortgeschrittene, die wir in
den letzten Wochen entwickelt haben oder wie lange Sie den
Kurs auch immer weitergeführt haben Wir können sehen, offensichtlich
sieht jetzt alles ein bisschen besser Und wenn wir dann reinspringen
, rutschen die Dinge rein. Und wir können sehen, dass dieses Spiel in
voller Entwicklung abgeschlossen ist, was ziemlich cool ist,
vor allem, wenn es
eines der ersten Spiele ist du in Unity gemacht hast. Ich scheine gestorben zu sein. Dies ist eines der ersten Spiele, die
Sie jemals in Unity gemacht haben. Es ist ziemlich beeindruckend , all das
machen zu können. Wenn du
alles gemacht hast und alles wie Minus funktioniert, dann ist das wirklich
toll und ein guter Job einfach so
mitmachen zu können. Im nächsten Video werden
wir dieses Spiel
erstellen und
exportieren. Und das ist nicht einmal
wirklich ein Video. Ich zeige
dir nur, wie man
es zu einem Projekt zusammenbaut , damit man es richtig abspielen
kann. Aber im Moment haben wir so ziemlich alles
für dieses Spiel
fertiggestellt. Wenn du mir folgst
und alles wie
minus
funktioniert, hoffe ich, dass es so ist. Und ich hoffe, du
konntest
bei der Entwicklung dieses Spiels eine Menge lernen . Und vielleicht kannst du
es sogar in ein Spiel verwandeln, das du auf Handy oder
PC oder so etwas veröffentlichen möchtest Aber vorerst habe ich gute Arbeit geleistet
, um den gesamten Kurs
zu überstehen Und herzlichen
Glückwunsch, dass du dein Spiel gemacht hast. Danke.
19. 18. Bauen und Exportieren: Hallo, und willkommen
zurück bei Unity. Jetzt sind wir so gut wie fertig. Nun, eigentlich haben wir
unser
Sky-Miner-Intermedia-Plattformspiel
komplett fertiggestellt unser
Sky-Miner-Intermedia-Plattformspiel In der letzten Zeit haben wir unzählige
Stunden oder Minuten,
je nachdem, wie schnell Sie
alle Videos durchgehen
konnten,
damit verbracht je nachdem, wie schnell Sie
alle Videos durchgehen
konnten , das
aufzubauen, was wir vor uns
haben, was
wirklich, wirklich cool ist, dass wir ein Spiel wie dieses in,
vermutlich nicht wirklich
viel Zeit,
machen konnten vermutlich nicht wirklich
viel Wie ich im letzten Video schon sagte,
herzlichen Glückwunsch, dass du es bis hierher geschafft hast. Und wenn du es so
bis zum Ende
des
Kurses geschafft hast und dein Spiel genauso funktioniert wie meins, dann tolle Arbeit. Und das ist eigentlich
ziemlich beeindruckend, besonders wenn dies eines
deiner ersten Spiele ist , in dem du Unity spielst. Aber selbst wenn es nicht darum geht, ein Spiel
zu Unity zu machen, ist
jedes Spiel im Allgemeinen
eine Auszeichnung für sich, aber besonders eines mit
Sprites und Musik und Skalierung,
Schwierigkeitsgrad und zufälliger All das ist eine ziemlich
coole Leistung. So gut gemacht. Jetzt müssen
wir immer noch in der Lage sein,
das Spiel zu bauen , weil wir nicht einfach sagen
können, oh ja, schau dir mein
Spiel an und dann jedes Mal Unity laden , wenn wir es jemandem zeigen
wollen. Also müssen wir in der Lage sein, dieses Spiel in
eine Datei
zu exportieren , damit wir es nicht im Editor spielen müssen
. Das wird der
Zweck dieses Videos sein. Ich werde dir nur
schnell zeigen, wie du dein Spiel
exportierst und es in einem riesigen
Vollbildmodus
spielst. Und dann beende ich den
Kurs Während ich das
Spiel im Hintergrund spiele, gehen
wir hier nach
oben und klicken auf File Build Settings. Und hier werden
Sie
den gesamten
Bauaspekt des Spiels bearbeiten . Ich werde jetzt nicht zu detailliert auf
jedes einzelne
davon
eingehen , denn wenn du auf „Sets spielen“
klickst, kannst du sehen, wie
viele es wirklich sind. Es gibt all diese.
Es gibt voreingestelltes Management. Das
sollten wir eigentlich nicht vergessen. Es gibt ein Symbol, das
du hier ändern kannst, es gibt die Auflösung,
es gibt ein Begrüßungsbild, das quasi
zu Beginn des Spiels abgespielt wird. Dann gibt es noch eine ganze
Reihe anderer Einstellungen , mit denen du wirklich nicht zu viel
herumspielen solltest, besonders wenn du nicht wirklich
weißt, was du tust Weil, nun ja, sie
können das Spiel kaputt machen. Aber im Moment werden
wir sie eigentlich nur Standard belassen. Das ist die Plattform
hier drüben , für die
wir bauen werden. Wenn du das auf ein Andro-Spiel
umstellen willst, installierst
du einfach das Modul und klickst auf „Plattform wechseln“. Und es macht eine
Menge Sachen für dich. Aber wir werden
unser Spiel für einen Computer entwickeln. Wir
werden uns vorerst keine Sorgen um die Szenen dieser Spieler machen. Aber Sie können natürlich all dies
ändern. Diese werden
in die Anwendung integriert. So können Sie Ihren
Firmennamen und den Produktnamen ändern. Ich kann zu Sky
Miner wechseln, wenn ich möchte. Und ich kann das Symbol,
den Cursor und
so ziemlich alles andere hier ändern den Cursor und
so ziemlich alles andere hier Wie gesagt, filtern Sie nicht
zu sehr mit diesen anderen Einstellungen, es sei denn Sie wissen, was Sie
tun, oder haben es gegoogelt Aber die hier
drüben, du kannst
quasi machen, was du willst Sie können das Symbol ändern. Sie
können die Auflösung ändern. Und Sie können auch
das Begrüßungsbild ändern Wie gesagt, wenn wir auf Vorschau klicken,
können wir es tatsächlich sehen. Es ist ein Bild, das
Unity anzeigt wenn Sie ein Spiel wie dieses starten, womit ich eigentlich zufrieden bin. Ich denke, das ist vorerst alles gut. Also werde ich
diese Standardeinstellungen beibehalten und einfach
damit beginnen, mein Spiel zu erstellen. Wir bauen es für 64 Bit und
ich werde auf Build klicken. Bill wird den Datei-Explorer
öffnen. Ich kann wählen, wo ich mein Spiel platzieren
möchte. Jetzt ist das der Ordner,
in dem sich mein gesamtes Projekt befindet, also werde ich
in diesem Aufruf, den es erstellt, einen neuen Ordner
erstellen . Und ich werde darauf
doppelklicken
und es als Ordner verwenden,
um mein Spiel zu erstellen. Und das wird diesen Prozess
vollständig
starten, um mein gesamtes Spiel aufzubauen. Nun, das dauert einige Zeit, besonders abhängig davon,
wie schnell Ihr Computer ist. Aber im Allgemeinen ist dies ein
ziemlich intensiver Prozess. Warten Sie einfach, es sollte 1-2 Minuten
dauern,
je nachdem, wie groß
Ihr Projekt ist. Für mich wird es vielleicht nicht
allzu lange dauern , weil es
kein sehr großes Spiel ist. Aber je nachdem, wie
gesagt, von deinem Projekt und allem anderen und auch von all unseren Postpressings, die wir hinzugefügt haben, kann die Kompilierung eine
Weile dauern. Sitzen Sie einfach hier und
berühren
Sie Ihren Computer nicht zu
sehr ,
weil er gerade einige Prozesse ausführt . Jetzt, nach einer Weile, brauchte der
Verstand 65 Sekunden. Sie sollten diese
Datei hier haben, die mit
dem Namen Ihres Projekts erstellt wird. Und das ist eigentlich die ausführbare Datei
, mit der du dein Spiel ausführen kannst , wenn du hierher
gehst, um es zu bauen. Wenn wir auf diese Datei doppelklicken, laden
wir
tatsächlich unser Spiel. Bevor ich das mache, möchte
ich nur
einen Hinweis darauf geben , dass es
beim ersten Laden des Spiels Problemen mit dem
Seitenverhältnis kommen könnte. Wenn
ich das zum Beispiel jetzt laden würde, bin
ich
mir fast
sicher, dass ich es einfach testen lassen würde . Weil das das Letzte ist
, was wir
für unser Spiel reparieren müssen . Und tatsächlich
, bitteschön. Wir haben ein paar Dinge
, die nicht wirklich genau dort sind, wo sie sein sollten.
Lass uns ins Spiel gehen. Und die Art und Weise, wie wir sie
beheben werden, besteht darin,
hier
einen Aspekt auszuwählen , 1920 mal 1080. Und ich werde
meinen Vorhang abnehmen , nur
damit ich Dinge sehen kann. Auf diese Weise kann ich die Größe von allem ändern und es verschieben, sodass es genau die
Ausrichtung haben sollte, die ich möchte Ich werde sie so
zur Seite verschieben. Das sollte gut sein. Ich werde diese Wolke dorthin verschieben. Ich glaube sogar, dass
ich den Spawn
rechtzeitig vor dem Start
erhöhen muss den Spawn
rechtzeitig vor dem Start
erhöhen Ich werde stattdessen 20
daraus machen. Jetzt muss ich natürlich auch die Größe
dieser
erhöhen. Die Herzen und die
Diamanten haben
jetzt beide pixelweise die falsche Größe. Lassen Sie uns weitermachen und
diese ein wenig vergrößern. Lass uns einfach sehen, wo
wir sie haben. Abhängig von deinem
Computer und davon, wie viel du verfolgt hast,
genau das, was ich getan habe. Möglicherweise
haben Sie dieses Problem oder auch nicht, ich habe nur zufällig Ihren Computer vielleicht nicht. Es kommt wirklich darauf an. Aber wie gesagt, wenn
du zum Spiel gehst und diese
Einstellung hier
änderst, kannst
du das Spiel mit vier
verschiedenen Auflösungen erstellen. Ich baue es momentan für 1920
mal 1080. Lassen Sie mich nur
sichergehen, dass ich das
richtig rezitiere , nur um einen Überblick zu bekommen Es ist nicht einmal annähernd. Lassen Sie uns das
etwas unterbrechen. Lass uns sehen. Ich würde sagen, das ist ziemlich gut. Lass uns weitermachen und das wieder da
hinstellen, wo es oben war. Leg das auch hier hin. Und dann lass uns zu meinem Tresen gehen. Verschieben Sie es dorthin und
vergrößern Sie es auch ein wenig. Das sollte gut sein. Jetzt. Wir
müssen natürlich auch
unsere UI-Animationen testen,
da wir sie verschoben haben. Schauen wir uns also an, wie diese aussehen. Einblenden, ja, es sind
jetzt offensichtlich die falschen Positionen, also
müssen wir einfach
die Startpositionen
da draußen und da draußen festlegen . Und dann müssen die
Einblendpositionen jetzt
hier drüben sein. Und hier drüben
sollte es vorerst gut sein. Stellen wir einfach sicher, dass wir dieselben Einstellungen
haben, 880 und minus 772
für die statische Version. Das sollten wir sehen können
, wenn wir es jetzt spielen Und dann
ist es nicht wirklich wichtig, aber sie müssen natürlich
außer Sichtweite sein Lassen Sie uns
weitermachen und auch diese verschieben. Nun, dieser Prozess der Skalierung des
Spiels dauert einige Zeit. Es besteht die Möglichkeit, dass wir hier fertig sind, aber es besteht die
Möglichkeit, dass wir nicht fertig sind. Aber wir können das nur tun
, wenn wir es erstellen und
erneut ausführen und testen, ob wir noch andere
Probleme haben oder etwas
anderes beheben müssen. Mal sehen, jetzt laden wir es hoch. Bisher sieht es sogar
ziemlich gut aus. Wir können auf diese Schaltflächen klicken und alles scheint
zu funktionieren. Mein Grafiktreiber
denkt, es ist ein Spiel, und ich glaube, das ist es auch.
Da drüben kannst du es sehen. Eigentlich
scheint alles gut zu funktionieren. In meinem Fall war das
einzige, was ich ändern
muss , diese eine Einstellung, und der Rest meines
Spiels
funktioniert wirklich hervorragend, was ziemlich cool
ist. Wie ich schon sagte, Sie könnten
unterschiedlich sein, je nachdem, wie stark Sie Ihr Seitenverhältnis geändert haben und wie sehr Sie sich daran gehalten haben. Aber es ist ziemlich cool
, dass
sich diese Art von Spiel so einfach
zusammenstellen lässt Ich meine, offensichtlich ist es nicht einfach und je mehr Code
man programmiert, desto schwieriger, desto einfacher wird es Aber
so etwas machen zu können, ohne ein
allzu erfahrener Entwickler zu sein , ist meiner Meinung nach
ziemlich cool. Ich möchte nur ein großes Wort sagen. Vielen Dank an Sie, dass Sie meinen Kurs
unterstützt ihn gekauft und
dieses Spiel entwickelt haben. Und ich hoffe, dass du mit dem, was du machen
konntest, wirklich zufrieden und dass du
während des gesamten Prozesses eine Menge gelernt hast . Wenn du jederzeit Hilfe bei Fehlern oder
Problemen
mit
deinem Spiel
benötigst Fehlern oder
Problemen
mit , kannst
du jede Art
von Diskussion auf
dieser Kursseite nutzen oder sie in einer Bewertung
hinterlassen, was auch immer du tun möchtest. Nochmals vielen Dank für den Kauf dieses Kurses und ich hoffe
, dass Sie mit dem, was Sie machen
konnten, wirklich zufrieden sind. Und es gibt kein nächstes Video, also kann ich
dir nicht sagen, was wir als Nächstes tun, aber ich hoffe, dass du, wenn du dich
dazu entscheidest,
Spiele als Hobby oder
sogar als Karriere zu entwickeln , etwas
wirklich, wirklich Cooles machen
kannst. Nochmals vielen Dank, dass Sie diesen Kurs
gekauft haben, und ich hoffe wirklich, dass er Ihnen
nicht gefallen hat. Prost.