Unity Development – Erstelle dein erstes Jump’n’Run-Spiel! | Tirion Learning | Skillshare
Suchen

Playback-Geschwindigkeit


1.0x


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

Unity Development – Erstelle dein erstes Jump’n’Run-Spiel!

teacher avatar Tirion Learning, Software Engineer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Trailer zum Kurs

      0:46

    • 2.

      Lektion 1 – Einrichten unserer Szene

      15:24

    • 3.

      Lektion 2 – Unsere Figur erstellen

      8:00

    • 4.

      Lektion 3 – Hinzufügen von Spielerbewegung

      24:28

    • 5.

      Lektion 4 – Einführung von Prefabs

      20:10

    • 6.

      Lektion 5 – Generieren unserer Karte

      32:06

    • 7.

      Lektion 6 – Hinzufügen von Sprites

      24:52

    • 8.

      Lektion 7 – Unsere Charaktere animieren

      22:04

    • 9.

      Lektion 8 – Hinzufügen von interessanteren Gegnern

      21:30

    • 10.

      Lektion 9 – Einführung in die Treffererkennung

      19:14

    • 11.

      Lektion 10 – Hinzufügen der Spielergesundheit

      18:11

    • 12.

      Lektion 11 – Einführung in die Edelsteine

      25:11

    • 13.

      Lektion 12 – Erstellen einer Spielschleife

      16:05

    • 14.

      Lektion 13 – Unser Spiel speichern

      6:42

    • 15.

      Lektion 14 – Verbessere die Visualisierung

      41:09

    • 16.

      Lektion 15 – Erstellen eines Startschwerpunkts

      22:16

    • 17.

      Lektion 16 – Hinzufügen von Soundeffekten und Musik

      28:45

    • 18.

      Lektion 17 – Der letzte Schliff

      20:47

    • 19.

      Lektion 18 – Erstellen und Exportieren

      7:51

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

282

Teilnehmer:innen

6

Projekte

Über diesen Kurs

Hallo, und willkommen zu meinem Kurs über die Erstellung deines eigenen Jump’n’Run-Spiels in Unity!

In diesem Kurs entwickeln wir ein Jump’n’Run-Spiel für Fortgeschrittene von Grund auf und lernen dabei alle Grundlagen der Spieleerstellung! Wir verwenden Unity und C#, um unser Spiel zu entwickeln. Wir behandeln alles, was du über die ersten Schritte in der Spieleentwicklung wissen musst, von den Grundlagen des Programmierens bis hin zu allen Besonderheiten unserer Spiele-Engine.

In den letzten Jahren habe ich mehrere Spiele für mobile, Webanwendungen und PC-Plattformen erstellt und veröffentlicht, die ich vollständig selbst erstellt habe. Jetzt habe ich diesen Kurs als einen von mehreren, vollständigen Kursen erstellt, in denen die Grundlagen des Spieldesigns behandelt werden, in der Hoffnung, dass du leicht selbst in die Welt der Spieleentwicklung einsteigen kannst, indem du einen dieser Kurse besuchst!

Meiner Erfahrung nach kann die Spieleentwicklung für Anfänger ziemlich einschüchternd sein, und wenn du auf Probleme kommst, dann kann es ein wenig demotivierend sein, wenn du Stunden oder manchmal sogar Tage im Internet nach einfachen Möglichkeiten suchst, sie zu überwinden. Daher habe ich diesen Kurs erstellt, der alles abdeckt, was ich gerne gewusst hätte, als ich mit der Spieleentwicklung begann, sodass der Prozess für dich viel weniger mühsam ist, unabhängig von deinen vorherigen Erfahrungen.

Nach Abschluss dieses Kurses hast du alle Unity- und C#-Kenntnisse erworben, die du brauchst, um deine eigenen Spiele und Apps selbst zu erstellen! Darüber hinaus erlernst du mehrere fortgeschrittenere Konzepte des Spieldesigns, wie die Kartengenerierung, Audio-Management, Sprite-Animation und vieles mehr!

Dieser Kurs behandelt alles, was du wissen musst, um deine eigenen Spiele in der Unity-Engine zu erstellen, sei es für Mobilgeräte, PC oder eine beliebige Plattform!

Wenn du dich für die Anmeldung entscheidest, erlernst du eine wertvolle und gefragte Fähigkeit und hast Spaß dabei. Ich hoffe, ich habe das Privileg, dich unterrichten zu dürfen.

Habt einen tollen Tag! :)

Triff deine:n Kursleiter:in

Teacher Profile Image

Tirion Learning

Software Engineer

Kursleiter:in
Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: 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.