Transkripte
1. EINFÜHRUNG: Möchten Sie Rennspiel mit Unity entwickeln? Hallo, mein Name ist Donald, und heute werden wir entdecken, wie man Rennspiele mit Unity 3D erstellt. Wir lernen wirklich, wie man Auto-Controller entwickelt und wie man es in einem echten Spiel umsetzt. Rennspiele sind super beliebt. Warum sollten wir uns nicht beredt machen? In dieser Klasse werden wir drei Hauptthemen abdecken. Wirklich lernen, wie man das Auto steuert die Menschheit einrichtet, wie man Code dafür schreibt und wie man dem Spiel eine Benutzeroberfläche hinzufügt. Mit diesem Wissen werden Sie in der Lage sein, Ihre eigenen Spiele zu entwickeln. Sie können auch meinem Discord Server beitreten, um sich mit anderen Schülern zu verbinden und Ihre Arbeit zu teilen. Also, wenn Sie bereit sind, Unity Grundlagen zu lernen und Spiel Entwicklung Reise beginnen. Willkommen in meiner Klasse.
2. Spieler: Hallo und willkommen in meiner Klasse. Heute machen wir Rennspiel-Einheit. Lassen Sie uns ein neues Projekt erstellen und es so etwas wie ein Rennspiel nennen. Während Einheit bereitet ein neues Projekt, Ich möchte Ihnen zeigen, was wir heute in dieser Klasse tun, werden
wir einfache Auto-Controller von Grund auf neu zu entwickeln, und wir werden es in realen Spiel verwenden. Sie können Fahrzeug und Track aus Unity Asset Store herunterladen. Ich werde Links in der Beschreibung zur Verfügung stellen. Das Ziel dieses einfachen Spiels wird es sein, die Strecke so schnell wie möglich zu vervollständigen. Wir werden auch einen Timer erstellen, damit wir mit unseren Freunden und Familie konkurrieren können. Später können Sie verwerfen Controller aktualisieren und es in
Ihrem Spiel verwenden , da es Ihnen eine Menge Freiheit bietet, wenn es darum geht, zu ändern. Also projizieren israelisch, und zuerst möchte
ich die Fenster neu anordnen. Ich bevorzuge eine Spalte, die das Projektfenster anzeigt. Und auch wir brauchen jetzt kein Konsolenfenster. Alles, was wir am Anfang der Sample-Szene haben, unsere Hauptkamera und gerichtetes Licht. Später werden wir mehr seit 104 Hauptmenü und so weiter erstellen. Fügen wir dem Szenenwürfel ein neues 3D-Objekt hinzu und benennen Sie es Boden. Unser Fahrzeug fährt auf diesem Würfel, also müssen wir ihn skalieren. Ich werde X und Z auf 256 setzen. Wir werden dieses Bodenobjekt nutzen, um einen Prototyp unserer Autosteuerung zu entwickeln. Damit es funktioniert, müssen
wir neue Bodenschicht erstellen und wir werden unseren Würfel zu dieser Schicht hinzufügen. Sie können einen beliebigen leeren Steckplatz verwenden. Ich werde Slot 8 verwenden. Dann müssen wir auf Bodenobjekt zurückgehen und seine Schicht auf Boden setzen. Jetzt sind wir bereit, den Player hinzuzufügen,
ein neues leeres Objekt zu erstellen und es Spieler zu nennen. Für die Grafik besuchen wir den Unity Asset Store, wo Sie Tausende von kostenlosen und Premium-Assets finden können. Wir sind auf der Suche nach einem Vertrag Fahrzeug, das in R Again verwendet werden kann, können
Sie so ziemlich jede Säurevakuole wie verwenden. Aber wenn Sie diesem Tutorial folgen und genau das gleiche Spiel machen wollen, werde ich Links zu den Säuren bereitstellen, die ich verwende. Ich werde dieses kostenlose Paket herunterladen, weil es viele verschiedene und anpassbare Autos hat. Sobald Sie die Assets heruntergeladen
haben, müssen wir sie immer noch in das Projekt selbst importieren. Um dies zu tun, müssen wir Package Manager öffnen, der unter Window Package Manager zu finden ist. Öffnen Sie dann meine Assets und Sie werden
jedes einzelne Asset wieder sehen , das Sie aus dem Unity Asset Store heruntergeladen haben. Suchen Sie das Paket mit Fahrzeugen und importieren Sie es in das Projekt. Danach können wir sie finden, verwenden die Grafiken aus importiertem Paket, öffnen Sie es, finden Ordner genannt Beispiele, und verwenden Sie eines der Fahrzeuge aus dem Ordner. Ich werde Bundle verwenden, es in die Szene
ziehen und es innerhalb des Playerobjekts platzieren. Wie Sie sehen können, muss
ich meinen Spieler neu positionieren. Also wähle ich das Spielerobjekt aus und passe die Position davon an. Also haben wir Grafiken, und jetzt ist es Zeit, unseren Player einzurichten, Spielerobjekt
auszuwählen und neues 3D-Element hinzuzufügen. Dieses Mal werden wir Sphäre verwenden. In der Tat wird unser Autocontroller
diese Sphäre bewegen und der Körper wird ihr folgen. Ich werde den Radius des Kugelkolliders auf eins erhöhen. So können wir Kollisionen mit anderen Objekten erkennen. Wir können auch Mesh Collider deaktivieren, um unsere Kugel unsichtbar zu machen. Um Kugel und Spieler herum zu bewegen, müssen
wir einen starren Körper darauf befestigen, der den Objekten einige körperliche Fähigkeiten verleiht. Ich werde die Masse auf 70 ändern, ziehen und eckigen Jack auf vier. Setzen Sie die Interpolation zu extrapolieren. Dies wird die Bewegung der gesamten Spielerobjekte Mörtel machen und die Kollisionserkennung in kontinuierliche ändern. Wir müssen dem Spieler noch ein leeres Objekt hinzufügen. Wir werden dieses Objekt verwenden, um zu erkennen, auf welcher Ebene wirklich fahren. Ich werde es Bodenscheck nennen. Spielt dieses Objekt in der unteren Hälfte des Spielers ab. Wenn Sie später Probleme mit der Erkennung von Ausreißern haben,
versuchen Sie, dieses Objekt neu zu positionieren, da es derzeit möglicherweise nicht korrekt platziert wird. Es hängt wirklich von Ihrer Grafik und Kugelgröße ab. Für mich sollte das funktionieren. Ich hoffe. Schließlich können wir mit dem Programmieren beginnen, wählen Sie unseren Player und fügen Sie neues Skript namens Auto-Controller, und doppelklicken Sie auf neue Komponente, um das Skript in Visual Studio zu öffnen, werden
wir Code im nächsten Video schreiben. Und danach haben Sie einen voll funktionsfähigen Auto-Controller, der in einem echten Spiel verwendet werden kann. So sehen wir uns im nächsten Video.
3. Controller: Wir sind zurück und es ist Zeit, unsere Auto-Controller zu programmieren. In dem Skript, das wir zuvor erstellt haben, müssen
wir einige Variablen deklarieren. Der erste wird öffentlicher starrer Körper sein. Ich werde meinen RB nennen. Dadurch wird eine Verbindung mit einem starren Körper der Kugel mit dem Skript hergestellt. Dann brauchen wir eine Reihe von öffentlichen Float-Variablen vorwärts und die umgekehrte Geschwindigkeit. Ich werde Werte auf 105 setzen. Und natürlich können Sie diese Werte jederzeit ändern. Nächster Begriff, Strang, oder wie hart unser Auto in den Ecken drehen kann. Schwerkraft ist ziemlich selbsterklärend. Jack Radius, und der Luftwiderstand wird unser Auto abhängig von der Oberfläche beeinflussen. Und schließlich dreht sich Max, um die Vorderräder unseres Autos zu drehen. Danach, Lassen Sie uns private Floats deklariert, Geschwindigkeit Eingabe und Turn-Eingabe. Wir werden Benutzereingaben in diesen Variablen und anderen privaten Variablen speichern. Dieses Mal brauchen wir Boolean, um zu überprüfen, ob der Rivalen geerdet ist oder in der Mitte des Sprungs, dann müssen wir unserem Skript sagen, welche Schicht im Spiel Boden darstellt. Deshalb machen wir diese Wearable öffentlich. Schließlich drei öffentliche Transformationsvariablen. Boden, überprüfen Sie links, Vorderrad, und schreiben Sie Vorderrad, um zu verbinden. Wir sind ClipArt mit Descript. Und das ist es für die Variablen. Wir können zur Startmethode übergehen, wo wir nur eine Codezeile benötigen, werden
wir das Elternteil unseres starren Körpers zu beachten setzen,
was der zweite Teil ist, um die Bewegung des gesamten Spielerobjekts
glatter zu machen , bevor wir bereits die Interpolation auf Hochrechnung gesetzt haben. Lassen Sie uns nun zur Update-Funktion wechseln. Haben Sie hier noch viel mehr Codierung zu tun. Zuerst werden
wir mit jedem Update die Geschwindigkeitseingänge auf 0 zurücksetzen. Und dann werden wir überprüfen, ob der Benutzer eine der Auf- und Abwärtstasten drückt. In der ersten if-Anweisung wenden
wir Vorwärtsgeschwindigkeit multipliziert mit 1000 an. Das ist in dem Fall, wenn der Benutzer vorwärts gehen möchte. Wenn der Benutzer die Taste nach unten drückt, müssen
wir eine Rückwärtsgeschwindigkeit erneut anwenden, multipliziert mit 1000. Wie ich bereits sagte, können
Sie diese Werte immer nach Ihren Wünschen ändern. Also haben wir Spuckeingabe, aber wir werden es später in einer anderen Funktion auf das Fahrzeug anwenden. Lassen Sie uns nun unser Fahrzeug in der Lage machen,
echte Store-Benutzereingaben von linken und rechten Tasten drehen , um Eingangsvariable zu drehen. Und sofort können wir unser Wiederauftreten drehen. Aber ich möchte sicherstellen, dass wir Achilles geerdet haben, wenn wir versuchen, es zu drehen. Deshalb werden wir eine andere if-Anweisung verwenden, um zu
überprüfen, ob wir Hausarrest haben. Und wenn wir tatsächlich geerdet sind, können
wir das Auto irritieren. Wir müssen hier unsere Matte benutzen. Wie Sie sehen können, multipliziere ich hier alles mit vertikaler Eingabe. Sie fragen sich vielleicht, warum ist keine vertikale Eingabe für Geschwindigkeit? Und du hast recht? Aber wir wollen sicherstellen, dass wir Curl auf irritierend ist, wenn wir vorwärts oder rückwärts
bewegen und nicht, wenn wir still stehen. Und das ist die einfachste Lösung. Das Drehen der Räder ist ziemlich ähnlich, aber anstelle der Rotation ändern
wir die lokale Rotation. Zuerst drehen wir das linke Vorderrad. Und dann können wir diese Zeile kopieren und das linke Vorderrad durch das rechte Vorderrad ersetzen. Schließlich setzen wir die Position des Spielers, um gleich der Position des starren Körpers zu sein. Das ist es für die Update-Funktion, der Rest wird in ihrer festen Update-Funktion geschrieben. Was ist der Unterschied zwischen Update- und Fixed-Update-Funktionen? Update-Funktion wird einmal pro Frame aufgerufen und fixierte Aktualisierung wird genau 50 Mal pro Sekunde aufgerufen. Wenn wir also einige schwere Physik auf die Objekte anwenden möchten, empfiehlt
es sich, ein festes Update zu verwenden. Zuerst werden wir eine Re-Guss h02 essbar namens Wärme deklarieren. In dieser Variablen können wir Informationen über Objekte speichern, die wir mit Ihnen kollidieren. Wir werden sehen, warum das praktisch ist. Dann werden wir unsichtbare Array von unserem Gelände schießen, überprüfen Sie in Richtung unten. Und wenn Sie etwas treffen, speichern
wir Informationen über dieses Objekt in Heat-Wearables. Wir müssen sagen, wie weit unsere Rate gehen soll. Und genau dafür haben
wir Check Radius Variable. Und schließlich müssen wir angeben, nach welcher Schicht wir suchen. Also, kurz gesagt, wenn wir Boden Spieler getroffen ist geerdet, werden
wir unseren Wert von wahr haben. Wenn nicht wird geerdet für uns sein. Ich möchte auch, dass mein Fahrzeug dieselbe Rotation hat wie Bodenschicht unter dem Fahrzeug. Und das ist, wo wir die Wärme nutzen können, wo immer
wir die Drehung des Spielers einstellen, um die gleiche wie die Rotation der Bodenschicht zu sein. Dann mit der letzten if-Anweisung, werden
wir überprüfen, ob wir geerdet sind. Wenn ja, und wenn wir versuchen, Vorwärts- oder Rückwärtsgeschwindigkeit anzuwenden, können
wir endlich Spuckeingabe aus der Update-Funktion verwenden. Wenn Sie nicht geerdet sind, müssen wir dem Arbeiter Schwerkraft hinzufügen, um es nach unten zu ziehen. Und das ist es schließlich für Cart-Controller-Skript. Ich hoffe wirklich, du bist immer noch bei mir, weil all das harte Zeug erledigt ist. Und jetzt ist es an der Zeit, den Cart-Controller in Aktion zu sehen. Stellen Sie sicher, dass Sie das Skript speichern und zu Unity zurückkehren. In der Einheit müssen wir das Skript immer noch mit einigen Autokomponenten verbinden. Ziehen Sie zuerst in der Kugel auf dem ersten leeren Schlitz, wo wir auf den starren Körper verweisen müssen. Dann müssen wir sagen, welche Schicht Boden darstellt. Und aus diesem Grund haben
wir früher Bodenschicht erstellt. Als nächstes ziehen Sie den Ground Wagenheber. Und schließlich verbinden Vorderräder mit dem Skript. Finden Sie, welche Freigabe vorne links und welche vorne rechts ist. Ziehen Sie sie dann auf die letzten leeren Schlitze hinein. Und das war's. Der Cart-Controller sollte jetzt funktionieren. Wir können es natürlich testen. Sie werden sehen, dass die Kamera derzeit nicht dem Spieler folgt, und wir werden das in Kürze beheben. Aber Controller scheinen zu funktionieren und Räder drehen sich auch, wie Sie sehen können. Also Controller ist bereit, wenn Sie irgendwelche Probleme haben,
versuchen Sie, den Leser zu überprüfen oder senden Sie mir eine Frage. Im nächsten Video werden
wir eine Kamera folgen dem Spieler machen. So sehen wir uns dann.
4. Camera und Mini: Willkommen zurück. Es ist Zeit zu entdecken, wie man die Kamera dem Spieler folgen lässt. Im Moment ist die Hauptkamera an einem Ort fixiert. Aber ich wollte dem Aquarell folgen, wenn wir fahren. Und das ist wirklich einfach zu tun. Wir werden eingebautes Paket namens Cinema Maschine verwenden. Auch hier müssen wir Package Manager öffnen. Sie finden es unter Window Package Manager. Zeigen Sie dann alle Pakete in Unity Registry an und suchen Sie nach Kinomaschine. Klicken Sie auf Installieren und warten Sie, bis Pakete bereit sind. Danach finden Sie Kinobogen in der oberen Symbolleiste. Wählen Sie die erste Option, die virtuelle Kamera erstellen. Diese neue virtuelle Kamera wird Anweisungen zu nehmen, was zu folgen und wie sie zu folgen. Dann schließlich Ihr Kameraobjekt in der Hierarchie. Ich werde meine in virtuelle Kamera umbenennen. Dann müssen wir angeben, welches Objekt wir mit der Kamera folgen wollen. Um dies zu tun, ziehen Sie einfach das Spielerobjekt auf zwei leere Slots, wo wir erkennen können, welches Objekt wir folgen wollen und welches Objekt wir betrachten möchten. Danach hatten wir viele Möglichkeiten, die Kamera zu modifizieren. Wir werden den Standpunkt leicht ändern, um ein besseres Aussehen auf Auto und LKW zu haben. Gehen Sie unter den Körper und passen Sie den Versatz an. Sie müssen mit zwei Werten spielen, um die beste Sicht für Ihr Spiel zu finden. Ich denke, dass für mich, Warum kann zwischen 34 und z um Damm oder 12? Und das war's für die Kamera. Jetzt geh und teste es aus. Wie Sie sehen können, folgt meine Kamera dem Spieler und ich kann endlich um diesen langweiligen Würfel fahren. Aber wir werden bald ein richtiges Traktorrennen haben, keine Sorge. Sie können auch sehen, dass die Bewegung nicht so glatt ist, wie wir es wollen. Zum Glück gibt es eine einfache Lösung für dieses Problem. Im Projektfenster. Erstellen Sie neues Physikmaterial, und benennen Sie es wie gewünscht. Ich werde es einfach so lassen, wie es ist. Stellen Sie dann die Reibung auf 0 ein. Und jetzt können wir dieses Material auf Box Collider des Bodenobjekts anwenden. Mit diesem Cent sollte die Bewegung des Autos glatt sein. Getestet. Und Wallah Auto Container funktioniert perfekt. Wir haben eine reibungslose Autobewegung und können es endlich auf der Schiene verwenden. Aber bevor wir weitermachen, möchte
ich noch ein Feature in diesem Auto-Controller testen. Wenn Sie sich erinnern, hat unser Controller die Möglichkeit Winkel des Fahrzeugs auf den Winkel der Oberfläche einzustellen. Also lassen Sie uns Mini sprang zum Spiel hinzufügen, um herauszufinden, ob es funktioniert. Wir können 3D-Würfel verwenden. Wieder. Ich werde meinen umbenennen, um zu springen. Dann müssen wir es skalieren. Ich werde X und Z auf 10 setzen. Wir müssen auch die zusätzliche Rotation ändern, und natürlich müssen wir die Position anpassen. Und genau so haben
wir einen Sprung getestet und es scheint, dass alles gut funktioniert. Jetzt werde ich dieses Sprungobjekt entfernen und
einen weiteren Lauf am größeren Ende mit benutzerdefiniertem Material machen . So wird es sichtbarer sein. Erstellen Sie einfach neues Material, setzen Sie benutzerdefinierte Farbe und angewendet auf den Sprung. Sie werden sehen, dass ich vergessen habe, Schicht des Sprungobjekts zu Boden zu setzen. Deshalb verliere ich beim Sprung an Geschwindigkeit. Legen Sie einfach die Schicht der Junk-Objekte fest, die gemahlen werden und alles wird perfekt funktionieren. Schließlich haben wir voll funktionsfähige Auto-Controller bereit, und es ist Zeit, es in einem echten Spiel zu verwenden. Und das ist genau das, was wir im nächsten Video machen werden. So sehen wir uns dann.
5. Einfache Hauptmenü, die: Wichtiger Teil eines Spiels ist das Hauptmenü, und ich werde Ihnen zeigen, wie man eine macht. Natürlich wird dieses Menü mit nur zwei Tasten sehr einfach sein. Aber nach diesem Kapitel werden
Sie in der Lage sein, auch komplexere Menüs zu erstellen. Also lasst uns an die Arbeit gehen. Sofort. Wir sind in der Standardeinstellung schien auch Sample-Szene für das Hauptmenü genannt. Tolles neues Senior Projekt Fenster und nennen es Handbuch. Doppelklicken Sie darauf. Und wir können neue leere Szene sehen, genau wie zuvor. Wechseln Sie die Ansicht auf 2D, weil das Menü
zweidimensional sein wird und wir beginnen können, Elemente auf dem Bildschirm hinzuzufügen. Sie finden auf unnötigen Elementen unter User Interface oder kurze UI. Zuerst müssen wir Canvas hinzufügen, die als Basis für andere Elemente wie Hintergrund und die Schaltflächen dienen wird. Sie können es umbenennen oder einfach als Zeichenfläche belassen. Es spielt keine Rolle. Nächstes Element, das wir auf Canvas hinzufügen werden, ist Bild. Das wird unser Hintergrund sein. Sie können die Farbe des Hintergrunds auf eine beliebige Farbe einstellen. Für mich wird dieses Dunkelgrau den Job erledigen. Wir müssen auch unser Bild dehnen, um den gesamten Bildschirm zu bedecken. Das ist für den Hintergrund. Sie können natürlich Ihr eigenes benutzerdefiniertes Bild für den Hintergrund
hinzufügen oder mit Farben spielen. Jetzt brauchen wir ein paar Knöpfe. Gehen Sie wieder unter UI und finden Sie Element namens Schaltfläche. Mein Menü wird zwei Tasten haben, spielen und beenden. Dies wird mein Play-Button sein. Ich möchte das Quellbild entfernen, aber es ist nicht notwendig. Du kannst es lassen, wenn du willst. Ich möchte auch eine andere hervorgehobene
Farbe haben , wenn der Benutzer mit der Maus über die Schaltfläche schwebt. Lassen Sie uns mit Bedrohung gehen und die Navigation der Schaltfläche nicht drücken Play. Und mal sehen, ob der Knopf rot wird, wenn wir unsere RET Mars gehen. Und in der Tat tut es das. Großartig. Im Moment ist diese Schaltfläche etwas klein und ich möchte sie in der Größe ändern. Lassen Sie uns zu 200 oder 300 und Höhe 200 twittern. Okay, wir müssen immer noch den Text unten ändern. Wenn Sie die Schaltfläche erweitern, können
Sie sehen, dass Text ein getrenntes Element ist. Und wenn wir darauf klicken, sind
wir in der Lage, alles von Farbe zu Größe und Schriftart zu ändern. Mit dieser Schaltfläche wird einfacher Text angezeigt, der abspielen sagt. Font-Stil wird kahl und Schriftgröße sein, sagen wir 50. Ich möchte die zentrierte Ausrichtung auf beiden Achsen haben und die Farbe des Textes wird die gleiche wie die Farbe des Hintergrunds sein. Um die zweite Taste zu erhalten, können
wir einfach duplizieren Play-Schaltfläche, mit der rechten Maustaste und wählen Sie Duplizieren oder drücken Sie Befehl Plus D auf der Tastatur. Stellen Sie dann die Position der zweiten Taste ein. Natürlich müssen wir es umbenennen und wir müssen den Text ändern, um zu beenden oder zu beenden. Genau so haben wir zwei Tasten und wir sind bereit, ihnen Funktionalität hinzuzufügen,
was bedeutet, dass wir codieren werden. Wieder. Wir werden ein neues Skript namens Menu Manager erstellen. Wir können ein neues leeres Objekt erstellen, das als Menü-Manager dienen wird. Sie können das Skript auch an ein beliebiges Objekt in der Hierarchie anhängen. Ich bevorzuge die erste Option. Sobald wir Menu Manager-Skript haben, können
wir mit dem Codieren beginnen. Wann immer wir mit Szenen arbeiten wollen, müssen
wir Unity Engine Dot sin Management importieren. Dies ermöglicht es uns, zwei verschiedene scheint aus dem Skript zu laden. Wir können beide Standardmethoden entfernen, da wir sie jetzt nicht brauchen. Dann werden wir neue öffentliche Methode namens Play-Taste gedrückt erstellen. Es muss öffentlich sein, damit wir es später innerhalb des Unity Editors verwenden können. Wenn der Benutzer die Play-Taste drücken wird, wird
diese Methode aufgerufen und es wird unser Spielbildschirm oder Beispielszene laden. Wir werden sehen, wenn Scene Manager Punktladeszene verwenden, können
wir am besten exakten Namen der Szene, die wir laden möchten, zum Beispiel Beispiel-Szene. Und es muss in Anführungszeichen eingewickelt werden. Anstelle des Namens können
wir Index verwenden
, den ich Ihnen später zeigen werde, wie Sie den Index jeder Szene herausfinden können. Aber ich werde nichts davon verwenden. Stattdessen werde ich den Index der aktiven Sünde bekommen, der manuell ist. Und in diesem Fall werde
ich einfach die nächste Szene in der Hierarchiemethode laden, die aufgerufen wird, wenn der Benutzer die Exit-Taste drückt, ist noch einfacher. Auch hier muss es öffentlich sein. Mine heißt Beenden Taste gedrückt. Und die einzige Codezeile geht wie diese Anwendung, nicht beenden. Und das war's. Aber diese funktionieren nicht innerhalb des Unity-Editors. Es funktioniert nur, wenn wir das Spiel exportieren. Deshalb füge ich Debug-Punktprotokoll hinzu, um zu sehen, ob die Schaltfläche funktioniert, speichere das Skript und gehe zurück zu Unity. Wir müssen diese beiden Tasten mit Funktionen verbinden, die wir nur Welt wählen Play-Taste und fügen Sie neue onclick Ereignis auf der Liste. Ziehen Sie dann das Objekt mit dem Menü-Manager-Skript. In meinem Fall ist das Menü-Manager-Objekt und finden Play-Taste gedrückt Methode. Wiederholen Sie den Vorgang mit der Schaltfläche Beenden. Aber natürlich wählen Sie dieses Mal Beenden Taste gedrückt Methode. Wir sind fast fertig. Ich muss Ihnen immer noch zeigen, wie Sie Szenen zum endgültigen
Bau hinzufügen und wie Sie den Index jeder Szene erhalten. Zu diesem Zweck werde ich neue Spiele erstellen scheinen Ihnen zu zeigen, wie man mit mehreren Szenen zu arbeiten. Später werden wir diese exakte Szene nicht verwenden. Sie können mir diesen Prozess demonstrieren. Gehen Sie unter Dateierstellungseinstellungen. Und Sie werden sehen, dass unsere Liste der Szenen im Build derzeit leer ist. Ich werde Menü und Spiel zu dieser Liste hinzufügen. Wie Sie auf der rechten Seite sehen können, verfügt
jede Szene über einen eigenen Index, der bei 0 beginnt. Also, wenn ich laden möchte, sagen wir Menü, ich kann einfach 0 in Scene Manager eingeben und Menü wird geladen. Wir können es jetzt versuchen, wenn alles funktioniert. Also schließen Sie das Fenster, wir kommen später wieder. Drücken Sie „Play“ und sehen Sie, was passiert, wenn ich auf „Beenden“ klicke. Beenden Taste gedrückt Nachricht, was bedeutet, dass Exit Taste funktioniert. Und wenn ich Play drücke, GameScene ist geladen und großartig. Mainmenu arbeitet mit, dass getan, es ist endlich Zeit, Staffel-Rennstrecke, um das Spiel hinzuzufügen. Und das werden wir im nächsten Kapitel tun. Wir sehen uns dann.
6. Race: Endlich ist es an der Zeit, dem Spiel eine echte Rennstrecke hinzuzufügen. Bisher haben wir einen voll funktionsfähigen Cart-Controller entwickelt. Und es wäre schön, wenn wir es auf einer Rennstrecke testen könnten. Deshalb werden wir den Unity Asset Store noch einmal besuchen und versuchen, eine Rennstrecke oder eine Fahrbahn für unser Spiel zu finden. Ich werde Paket namens Rennstrecken verwenden, die mit zwei Karten kommt. Und ich mag es wirklich. Aber natürlich können Sie jedes Paket verwenden, das Sie wollen. Sie keine Angst, alle verfügbaren Assets im Unity Asset Store zu erkunden. Vielleicht findest du etwas für dein zukünftiges Spiel. Sobald du deinen Track ausgewählt hast, vergiss nicht, ihn herunterzuladen. Dann können wir zurück zu Unity gehen. Nach wie vor müssen wir den Paketmanager verwenden, um eine Rennstrecke in das Projekt zu importieren. Öffnen Sie Window Package Manager, meine Assets. Finden Sie Ihr Paket und importiert meine Paketkosten, die bereits vorbereitete Szenen tun, und ich werde eine von ihnen für mein Spiel verwenden. Die Szene, die ich verwenden werde, heißt Frühlingspur. Diese Karte ist riesig und ich nehme an, dass es
Spieler drei bis vier Minuten von Anfang bis Ende dauern wird. Ich plane auch, einen Timer hinzuzufügen, damit wir mit unseren Freunden konkurrieren können, aber wir werden dies später tun. Zuerst werden wir den Build-Einstellungen aktuellen scheinen hinzufügen. Gleichzeitig können
wir Spielszene aus der Liste entfernen, da wir sie nicht verwenden werden. Wir müssen auch alle gesehenen Objekte auf Bodenspieler hinzufügen. So funktioniert unser Autocontroller. Schließlich Zeit, um die Szene hinzuzufügen. Wir haben Spieler vor, in der
Probe Sünde erstellt und wir können es wiederverwenden. Wir müssen nicht von Grund auf neue erstellen. Gehen Sie einfach zum Beispiel sin, wählen Sie Player aus und ziehen Sie ihn in den Ordner Assets. Auf diese Weise werden wir erstellen prefab ist ein Objekt, das so oft wiederverwendet werden kann, wie wir wollen. Gehen Sie dann zurück zu unserem ausgewählten Track und fügen Sie einfach Player-Prefab zur Szene hinzu. Einfach so, setzen Sie die Drehung ein. Und wir sind fast fertig. Wir müssen noch virtuelle Kamera hinzufügen, wie wir es in der ersten Szene mit Cinema Maschine getan haben. Wir wissen bereits, wie man es einrichtet. Also lasst es uns tun. Wir wollen dem Spieler folgen und dieselben Offsetwerte verwenden, wie Sie es zuvor getan haben. Und jetzt, Moment der Wahrheit, wird es funktionieren? Drücken Sie „Play“. Und nach ein paar Sekunden können
wir sehen, dass unsere Autosteuerungen auf einer echten Rennstrecke richtig funktionieren. Großartig. Auch hier ist die Bewegung des Fahrzeugs nicht glatt, wie es sein sollte, da wir immer noch einige Reibung von der Straße bekommen. Aber eine gute Nachricht ist, dass
wir physisches Material verwenden können, das wir zu Beginn der Klasse geschaffen haben. Schlechte Nachricht ist, dass wir Physikmaterial auf
Bereich und jedes Szenenobjekt anwenden müssen , das irgendeine Art von Collider hat, und das kann einige Zeit dauern. Also werde ich diesen Teil schnell vorwärts bringen. Okay, wir sind bereit, es erneut zu versuchen. Diesmal sollte alles richtig funktionieren. Drücken Sie Play, und wir haben endlich voll funktionsfähige Auto-Controller mit glatter Bewegung. Vielleicht sieht es auf der Kamera nicht so aus, aber das liegt daran, dass ich Bildschirmaufzeichnung mache und mein Computer nicht wirklich so mächtig ist. Ich hoffe, Sie sind Controller arbeitet auch. Wenn nicht versucht, die vorherigen Schritte zu wiederholen oder mir eine Frage zu senden, werden
wir gemeinsam eine Lösung finden. Im nächsten Kapitel werden
wir einen Timer zum Spiel hinzufügen, und ich freue mich schon darauf. Meer.
7. Anfang, Ende und Timer: Wenn wir grundlegende Mechanik bereit haben, ist
es an der Zeit, einige Benutzerschnittstelle in das Spiel hinzuzufügen. Wir werden mit einem Timer beginnen. Wann immer wir mit der Benutzeroberfläche arbeiten, müssen
wir die Szenenansicht auf 2D umschalten, genauso wie wir es mit dem Menü getan haben. Wir müssen Basis für unsere Verwendung eine Schnittstelle haben. Und dafür werden wir Canvas verwenden. Ich werde meine Leinwand zu dir umbenennen, aber es ist nicht notwendig. Sie können es so lassen, wie es ist. Dann werden wir auf Canvas Takes hinzufügen, die Zeit anzeigen. Ich werde meinen Timer SMS oben links verschieben. Und natürlich, passen Sie das Aussehen von jedem nach Ihren Wünschen an. Mein Text wird in weißer Farbe sein. Schriftart wird gekauft. Schriftgröße 32 und Ausrichtung auf Mitte eingestellt. Ich möchte auch einen zweiten Text haben, der eine Aufzeichnung des Tracks anzeigt. Um dies zu tun, werde ich einfach Timer-Text duplizieren und dann den Aufnahmetext unten verschieben. Vergessen Sie nicht, den zweiten Text umzubenennen und vielleicht eine andere Farbe zu wählen. Ich möchte, dass meine Rekordtexte in roter Farbe sind, aber das liegt ganz an Ihnen. Jetzt müssen wir ein leeres Objekt erstellen, das als Spiele-Manager oder Spiele-Handler dient. Du kannst es benennen, was immer du willst. Wir werden das Game Handler-Skript schreiben, das sich um das Timing kümmert und unsere Rekordzeiten speichert. Erstellen Sie also ein neues Skript und öffnen Sie es. Erster. Wenn wir mit der Benutzeroberfläche arbeiten wollen, müssen
wir Unity Engine wi importieren. Zweitens müssen wir einige Variablen deklarieren. Wir werden mit zwei öffentlichen Text Wearables beginnen, Timer, Text, Eintrag Datensatz Texte. Diese werden Text speichern, den wir in einem Spiel anzeigen möchten. In diesem Spiel, Vergangenheit, geben Sie Rekordzeit. Dann müssen wir private Float-Variablen, Timer und Record deklarieren. Diese werden die tatsächlichen Zeitwerte im Float-Forum speichern. Der Standardwert des Zeitgebers ist auf 0 festgelegt. Und letzte Variable wird private boolesche namens Timer laufen sein. Diese Variable wird verwendet werden, um Timer zu starten
und zu stoppen, und wir haben einen Standardwert von Kraft. Das sind alles, was wir brauchen. Und wir können mit der Startmethode fortfahren. Die Startmethode, werden wir den
Mauszeiger auf den Spielbildschirm sperren , um zu verhindern, dass es aus dem Bildschirm geht. Wir können das mit einer einfachen Codezeile tun,
indem Sie den Pointer Lock-Status auf gesperrt setzen. Dann etwas etwas komplizierter, aber ich werde versuchen, alles auf dem Weg zu erklären. Wenn GameStart, wir wollen überprüfen, ob wir einen gespeicherten Wert für Rekordzeit haben. Denn wenn wir es haben, können
wir es auf dem Bildschirm anzeigen und der Spieler wird wissen, wann er oder sie schlagen muss. Wenn nicht, werden wir die Datensätze gesetzt waren in der Lage 0, weil wir mit einfachen Daten arbeiten. Wir haben nur einen Fluss zu essbaren. Eigentlich können wir Unschärfe verwenden, um sie zu speichern. Wir können verschiedene Werte unter bestimmten Schlüsseln speichern, die wir angeben müssen. Und weil wir Rekordzeit sparen, werde ich meinen Tinky Rekord nennen. Du kannst es benennen, was immer du willst. Seien Sie vorsichtig bei der Rechtschreibung. Und wenn Sie mehrmals auf den Sampler-Prefs-Schlüssel zugreifen müssen, wäre
es empfehlenswert, private Zeichenfolge mit dem
Schlüsselnamen vergleichbar zu deklarieren und dann diese Variable zu verwenden, anstatt den Schlüsselnamen immer wieder einzugeben. In der ersten if-Anweisung überprüfen
wir, ob wir vorhandenen Datensatzschlüssel haben, und wenn wir dies tun, wenden
wir ihren Wert auf die Variable aufnehmen. Wenn nicht, setzen wir einfach Zeichen auf Ackerwert auf 0. Bevor wir in die Update-Methode springen, möchte
ich eine neue Methode namens Anzeigezeit deklarieren, die auch fehlerhafte Parameter namens Time benötigt, um anzuzeigen. Bei dieser Methode werden wir Float Wearable mit unserer aktuellen Zeit nehmen und wir werden es in einem bestimmten Format mit unserem Timer-Text anzeigen. Wir teilen die Zeit auf, um überall in Minuten, Sekunden und Millisekunden anzuzeigen. Um Minuten zu erhalten, müssen wir die Zeit teilen, um wo wl durch 16 anzuzeigen, weil es 60 Sekunden in einer Minute natürlich gibt. Dann, um Sekunden zu erhalten, müssen
wir modulo Operator verwenden. Auch hier teilen wir die Zeit, um Variable durch 60 anzuzeigen, aber dieses Mal bekommen wir den Rest dieser Operation, und dies stellt unsere Sekunden dar. Um Millisekunden zu erhalten, müssen wir die
Zeit multiplizieren , um mit 1000 anzuzeigen und sie dann durch 1000 dividieren. Und der Rest dieser Operation stellt unsere Millisekunden dar. Wir sind wieder mit modulo Operator. Nun, um diese Werte auf dem Bildschirm anzuzeigen, müssen
wir das Format des Timer-Textes angeben. Auf dem ersten Platz wird
es Minuten geben. Der zweite Platz ist vier Sekunden und der dritte Platz vier Millisekunden. Zwischen Minuten und Sekunden wird
es Doppelpunkt geben, und zwischen Sekunden und Millisekunden wird es Punkt sein. In der Update-Methode. Wir werden if Anweisung verwenden, um zu überprüfen, ob Timer läuft. Wenn ja, werden wir Zeit zu Zeit hinzufügen sind verfügbar und zeigen eine neue Zeit. Wenn nicht, werden wir einfach die Zeit auf dem Bildschirm anzeigen. Natürlich brauchen wir noch eine Möglichkeit, Timer zu starten und zu stoppen. Deshalb werden wir zwei öffentliche Methoden erstellen. Einer, um einen Timer zu starten und Timer zu stoppen. In der ersten werden
wir die Timer-Laufvariable auf true setzen. In der zweiten werden
wir einen Timer setzen, der wertvoll läuft, um zu erzwingen und sicherzustellen, dass beide Methoden öffentlich sind, so dass wir sie von anderen Skripten aufrufen können. Wir werden auch private Methode erstellen, um eine Rekordzeit auf dem Bildschirm anzuzeigen. Mine wird der Anzeigedatensatz aufgerufen werden, und es wird Float-Parameter genannt ihren Datensatz nehmen. Transformieren eines Datensatzparameters in Sekunden, Minuten und Millisekunden Wir können Code aus angezeigten Farbstoff Methode kopieren. Stellen Sie einfach sicher, dass Sie alle Variablennamen ersetzen. Anstelle der Zeit, um anzuzeigen, verwenden Sie einen Datensatz und anstelle von Timer-Text, müssen
wir die Datensätze txt verwenden. Dann gehen Sie zurück zur Startmethode und unten, wenn Anweisung aufgerufen eine Datensatzmethode mit der Datensatzvariablen als Parameter anzeigen. Also, wenn GameStart Rekordzeit wird auf dem
Bildschirm angezeigt und wir werden wissen, welche Zeit wir zu schlagen haben, wenn wir das Rennen beenden. Wir wollen überprüfen, ob wir neue Rekorde aufgestellt haben. Wir können Stop-Diamant-Methode dafür verwenden, weil diese Methode genau aufgerufen wird, wenn wir die Ziellinie übergeben. Mit jeder Aussage überprüfen wir, ob unsere Zeit besser ist als die Rekordzeit. Wenn ja, sparen wir unsere Zeit als neuer Rekord. Wir werden auch unsere Zeit sparen, wenn ich aufnehme, als wir zum ersten Mal versucht haben, diesen Track zu erhöhen und unser aktueller Rekord ist 0. Nach der IF-Anweisung, stellen Sie sicher, dass Sie Anzeigedatensätze Funktion erneut aufrufen, Dan speichern Descript und kehrte zur Einheit zurück. Wie Sie sehen können, haben wir zwei neue leere Slots im Game-Handler, einen für Timer-Text und einen für Record-Text. Stellen Sie sicher, dass Sie beide UI-Elemente mit den richtigen Steckplätzen verbinden. Okay, also ist unser Timer erledigt. Das einzige, was fehlt, ist ein Trigger, der den Timer startet und stoppt. Grundsätzlich brauchen wir eine Art Start- und Ziellinie. Dafür können wir einen einfachen 3D-Würfel verwenden, ihn nach oben
skalieren und die Drehung anpassen. Ich werde x auf 22 y 210 setzen. Diese Gruppe hat bereits einen Box-Collider, was bedeutet, dass wir erkennen können, wenn wir kalt sind Pass ein Star Client. Stellen Sie sicher, dass der Collider ausgelöst wird, damit Fahrzeug durch dieses Objekt gehen kann, um es unsichtbar zu machen. Ich schalte den Netz-Renderer aus. Als Teil des Startobjekts, Ich werde zwei Säulen auf jeder Seite der Straße hinzufügen, so dass Spieler wissen, wo neu starten. Ich werde den 3D-Würfel wieder verwenden, aber dieses Mal muss ich ihn herunterskalieren. Ich werde den X-Wert auf 0,1 setzen. Bewegen Sie die erste Milliarde auf seiner Position. Dann können wir es duplizieren und wir haben unsere zweite Säule, vier andere Straßenseite. Bitte buchen Sie Säulen auf der richtigen Position und benennen Sie sie um, wenn Sie ein Projekt organisieren möchten. Jetzt ist es an der Zeit, Funktionalität hinzuzufügen , Startobjekt
auszuwählen und ein neues Skript namens Start oder so etwas zu erstellen. Dann mach es auf. Löschen Sie beide Standardmethoden, da wir sie nicht verwenden werden. Dieses Skript hat nur einen Job, um den Timer zu starten. Und um den Timer zu starten, müssen
wir die Start-Timer-Methode innerhalb des Spiele-Handler-Skripts aufrufen, was bedeutet, dass wir einen öffentlichen Verweis auf das Skript benötigen. Das ist, warum wir öffentliche Spiel übergeben Variable erklärt. Sie können es erneut benennen, wie Sie wollen. Meiner wird der Spiel-Handler genannt. Wenn Sie sich erinnern, Box Collider auf diesem Objekt ist Trigger, was bedeutet, dass, wenn wir mit
Startobjekt On Trigger Enter Methode kollidieren aufgerufen wird. Und dort können wir Start-Timer-Methode mit unserer Game-Handler-Referenz aufrufen. Das ist alles für das Startskript, speichern Sie es und kehrte zur Einheit zurück. Wir haben einen neuen leeren Slot und wir müssen das Objekt mit Spiel-Handler-Skript ziehen. In meinem Fall ist das Game Manager-Objekt. Genau so haben wir Game-Handler verbunden, die Startlinie, und wir haben unser Gewicht, um unseren Timer zu starten. Apropos Game-Manager, ich werde es in Game Handler umbenennen, um Verwirrung zu vermeiden. Um Timer zu stoppen, werden alle Schritte wiederholt. Aber anstelle des Start-Timers werden
wir eine Stop-Timer-Methode aufrufen, Startobjekt
duplizieren und neu positionieren. Nicht zu weit, weil wir den Timer testen müssen, wenn alles funktioniert, wie es sollte. Benennen Sie das Objekt um, um es zu beenden und das Startskript zu entfernen. Wir werden ein neues Skript namens Finish erstellen. Coat wird dem Startskript sehr ähnlich sein. Nur Unterschiede. Wir rufen Stop-Timer-Methode auf. Das war's. Speichern Sie das Skript und gehen Sie zurück zu Unity. Stellen Sie sicher, dass Sie das fertige Skript mit dem Gaming-Handler verbinden. Und wir Schulden Dimer sollte in die Arbeit getan werden. Natürlich gibt es nur einen Weg, um herauszufinden, drücken Sie Play. Und wir werden sehen, ja, es scheint, dass unser Timer großartig funktioniert. Und Zeit aufzuzeichnen funktioniert auch, wie es sollte. Natürlich mag ich momentan keine Textelemente fast in der Mitte des Bildschirms. Also lasst uns sie bewegen. Wir können Timer nimmt an der oberen linken Ecke anhängen und nimmt nimmt in der oberen rechten Ecke aufzunehmen. Moment können Sie dieses Layout an Ihr Spiel anpassen, aber im Moment wird dies großartig sein. Nun, was wir dieses Rennen ein bisschen länger machen können. Lassen Sie uns die Ziellinie weiter unten bewegen. Sie können es bis zum Ende der Spur verschieben. Aber für mich, um es auszuprobieren, reicht das. Andernfalls wird dieses Kapitel zu lang sein. Da wir dieses Rennen länger gemacht
haben, müssen wir auch Spieler ein löschen,
vielleicht, weil die aktuelle Erfolgsbilanz
auf viel kürzere Strecke gesetzt wurde und es unmöglich wäre, zu brechen. Um Player-Prefs zu löschen, gehen Sie zu Bearbeiten Alle Player-Prefs löschen und drücken Sie Ja, um zu bestätigen. Und das war's. Wir haben einfaches Spiel mit grundlegenden Car Control gemacht, auf dem Sie auf eine andere Aufgabe bauen können. Aber ich glaube, alles funktioniert so, wie es sein sollte. Mein Spiel ist derzeit ein wenig verzögert. Aber das nur, weil mein Computer
harte Zeit hat und Community-Engine und Bildschirmaufzeichnung zur gleichen Zeit. Ich hoffe, dass alles in deinem Spiel funktioniert. Wenn nicht, versuchen Sie, die Schritte in diesem Kapitel durchgeführt zu wiederholen, können
Sie mir jederzeit eine Frage senden. Ich helfe immer gerne.
8. KURSPROJEKT: Zusammen haben wir Mini-Rennspiel mit unserem Auto-Controller erstellt. Für das Spiel haben wir verwendet gewinnen aus importiertem Paket,
versucht, ein anderes Mini-Spiel mit dem zweiten Titel aus
importiertem Paket zu machen oder völlig neues Paket aus Unity Asset Store zu importieren. Wir haben auch ein wirklich einfaches Hauptmenü mit nur zwei Tasten erstellt. versucht, weitere Schaltflächen hinzuzufügen. Zum Beispiel, Taste für Spur 1, zweite Taste für Spur zwei. Wir haben Symbol-Auto-Controller mit Grundmechanik entwickelt. Versucht, diesen Auto-Controller mit fortgeschrittener Mechanik zu aktualisieren und mit verschiedenen Werten zu experimentieren oder zwei Variablen zu deklarieren. Wenn Sie Fragen oder Probleme haben, fragen Sie mich hier, sind die Zwietracht verbunden. Und das war's für diese Klasse. An diesem Punkt lade ich Sie ein, meine anderen Klassen zu überprüfen. Ich habe Tutorials erstellt, wie man Jump'n'Run, First-Person-Shooter und Third-Person-Spiel macht. Link zu meiner Meisterklasse ist unten. Danke, dass du mein Klassensiegel im nächsten Mal beobachtet hast.