So erstellen Sie ein einfaches Spiel in Unity 3D

Unity 3D ist eine leistungsstarke, benutzerfreundliche und vor allem kostenlose Download-Engine! (Es gibt eine leistungsstärkere kostenpflichtige Version, aber mit der kostenlosen Version können Sie viel anfangen.)

Trotz seines Namens kann Unity sowohl für 2D- als auch für 3D-Spiele verwendet werden. Sie können in C #, Java oder Boo programmieren, einer Sprache ähnlich wie Python. In diesem Tutorial werde ich Sie durch die Unity-Umgebung führen und Ihnen zeigen, wie Sie ein einfaches Spiel in Unity erstellen.

Sie benötigen keine Programmiererfahrung, um diesem Instructable zu folgen. Es wird jedoch empfohlen, da es für Sie möglicherweise einfacher ist, Ihren Code auf Fehler zu prüfen, wenn Sie Hintergrundinformationen zu einer Codierungssprache haben.

Dieses Instructable basiert auf dem RollaBall-Tutorial auf der Unity-Website. Es gibt eine große Anzahl kostenloser Tutorials, die auf der Unity-Tutorial-Webseite zu finden sind. Ich habe dieses Instructable hauptsächlich für meine eigene Praxis mit Unity erstellt, aber auch, um die Video-Tutorials mit einer Reihe von schrittweisen schriftlichen Anweisungen zu ergänzen.

Schritt 1: Erstellen Sie ein neues Projekt

Öffnen Sie Unity3D

Schließen Sie das Fenster "Willkommen bei Unity", das beim Öffnen von Unity standardmäßig angezeigt wird.

Klicken Sie auf Datei - Neues Projekt

Wählen Sie den Ort für Ihr Projekt. Ich verwende gerne einen dedizierten Ordner, um alle meine Unity-Projekte zu speichern.

Geben Sie den Namen für Ihr Projekt ein. Im Screenshot heißt das neue Projekt "

Sehen Sie sich den Screenshot an, wie dies aussehen soll, bevor Sie auf die Schaltfläche Erstellen klicken.

Klicken Sie auf "Erstellen".

Schritt 2: Passen Sie das Layout an

Als erstes möchten Sie möglicherweise das Layout anpassen. Jedes Fenster kann angeklickt und in Position gezogen werden. Alternativ können Sie die mit Unity bereitgestellten Standardlayouts verwenden, indem Sie oben links auf dem Bildschirm auf die Dropdown-Leiste unter Layout klicken. Ich mag das Tall-Layout, finde es jedoch hilfreich, die Spielansicht unter die Szenenansicht zu setzen.

Es gibt fünf Hauptfenster, die Sie die meiste Zeit mit Unity verwenden. Dies sind die Fenster Szene, Spiel, Hierarchie, Projekt und Inspektor . In den fünf Bildern oben im Schritt finden Sie Bilder der einzelnen Fenster.

Szene - hier findet das Spiel statt. Es zeigt, welche Elemente Sie in Ihrem Spiel haben und wo sie relativ zueinander sind. In der oberen rechten Ecke befindet sich ein Block, der die räumliche Ausrichtung der Szene anzeigt.

Spiel - Zeigt die Ansicht an, die die Hauptkamera sieht, wenn das Spiel läuft. Sie können Ihr Spiel in diesem Fenster testen, indem Sie oben in der Mitte des Bildschirms auf die Schaltfläche "Abspielen" klicken.

Hierarchie - listet alle Elemente auf, die Sie der Szene hinzugefügt haben. Dies ist standardmäßig die Hauptkamera. Sie können neue Elemente erstellen, indem Sie auf Erstellen klicken und den gewünschten Objekttyp auswählen. Dies kann auch über das Dropdown-Menü GameObject oben auf dem Bildschirm erfolgen.

Projekt - Zeigt die Dateien an, die für das Spiel verwendet werden. Sie können Ordner, Skripte usw. erstellen, indem Sie im Projektfenster auf Erstellen klicken.

Inspektor - Hier können Sie Aspekte jedes Elements in der Szene anpassen. Wählen Sie einfach ein Objekt im Hierarchiefenster aus oder doppelklicken Sie auf ein Objekt im Szenenfenster, um dessen Attribute im Inspektorfenster anzuzeigen.

Schritt 3: Speichern Sie die Szene und richten Sie den Build ein

Klicken Sie auf Datei - Szene speichern. Speichern Sie die Szene unter dem Ordner [Projektname] - Assets. Assets ist ein vorgefertigter Ordner, in dem Sie Ihre Szenen und Skripte speichern möchten. Möglicherweise möchten Sie einen Ordner mit dem Namen "Szenen" in Assets erstellen, da der Ordner "Assets" unordentlich werden kann.

Speichern Sie die Szene als Szene oder Main oder so ähnlich.

Klicken Sie auf Datei - Build-Einstellungen.

Fügen Sie die zu erstellende aktuelle Szene hinzu.

Wählen Sie die gewünschte Plattform. Es gibt viele Optionen, einschließlich Computer, Spielesysteme und Smartphones. Wenn Sie jedoch zum ersten Mal Projekte erstellen, sollten Sie höchstwahrscheinlich Web Player oder PC / Mac / Linux Standalone auswählen.

Klicken Sie unten im Fenster Build-Einstellungen auf Player-Einstellungen. Dadurch werden die Optionen für die Player-Einstellungen im Inspektor geöffnet. Hier können Sie den Firmennamen, den Produkt- (Spiel-) Namen, das Standardsymbol usw. ändern.

Schließen Sie das Fenster "Build-Einstellungen". Sie werden darauf zurückkommen, wenn Sie bereit sind, Ihr Spiel zu beenden.

Schritt 4: Erstellen Sie die Bühne

Der einfachste Weg, eine Bühne in Unity zu erstellen, ist das Hinzufügen von Cubes.

Gehen Sie dazu zu Spielobjekt - Andere erstellen - Würfel oder verwenden Sie das Menü Erstellen im Hierarchiefenster. Füge einen Würfel hinzu.

Setzen Sie die Transformation des Würfels zurück, indem Sie im Inspektorfenster mit der rechten Maustaste auf „Transformieren“ klicken. Es wird empfohlen, dies immer dann zu tun, wenn Sie ein neues Spielobjekt erstellen.

Wählen Sie den Würfel in der Hierarchie aus. Benennen Sie es in "Wand" um, indem Sie in der Hierarchie auf den Namen doppelklicken oder das Inspektorfenster verwenden.

Skalieren Sie den Würfel in X-Richtung, um ihn lang und wandartig zu machen.

Klicken Sie im Hierarchiebedienfeld mit der rechten Maustaste auf „Wand“ und duplizieren Sie sie dreimal, sodass Sie vier Wände haben. Es sieht so aus, als hätten Sie nur eine Wand, weil sie identisch sind und daher denselben Punkt im Raum einnehmen. Ziehen Sie sie in Position und / oder verwenden Sie die Transformationsoptionen für jeden Würfel, um eine Anordnung zu erstellen, die wie eine Arena aussieht.

Hinweis: Um sich in der Szenenansicht umzusehen, klicken Sie mit der mittleren Maustaste, um zu schwenken und zu scrollen, um hinein- und herauszuzoomen. Klicken und ziehen Sie, während Sie die ALT-Taste gedrückt halten, um die Ansicht zu drehen.

Erstellen Sie ein leeres Spielobjekt mithilfe der Dropdown-Liste Spielobjekt (Leer erstellen) oben auf dem Bildschirm. Nennen Sie es "Bühne". Setzen Sie die Transformation zurück.

Wählen Sie alle vier „Wände“ aus und ziehen Sie sie unter das Spielobjekt „Bühne“.

Fügen Sie ein ebenes Spielobjekt hinzu, indem Sie im Hierarchiebedienfeld die Option „Erstellen“ auswählen und es für den Boden verwenden. Benennen Sie es in "Etage" um und ziehen Sie es unter "Bühne" in der Hierarchie.

Hinweis: Sie müssen nach dem Umbenennen die Eingabetaste drücken, da die Änderung sonst möglicherweise nicht wirksam wird.

Geben Sie dem Boden eine Transformation von -0, 5 in Y-Richtung, um sicherzustellen, dass er genau zu den vier Wänden passt.

Stellen Sie die Skala des Bodens in X-, Y- und Z-Richtung 1/10 der Skala ein, mit der Sie die Wände dimensioniert haben.

Schritt 5: Erstellen Sie den Player

Sie können Charaktere von verschiedenen Orten online herunterladen, beispielsweise vom Unity Store. In diesem Tutorial verwenden wir jedoch nur eines der integrierten Spielobjekte für den Spieler.

Gehe zu Spielobjekte - Andere erstellen - Kugel.

Wählen Sie die Kugel in der Hierarchie aus und benennen Sie sie in "Player" um. Setzen Sie die Transformation zurück.

Jetzt brauchen wir Physik. Machen Sie den Player den Gesetzen der Physik unterworfen, indem Sie unten im Inspektorfenster mit dem ausgewählten Player auf Komponente hinzufügen klicken. Physik hinzufügen - Rigidbody. Behalten Sie alle Standardeinstellungen bei.

Sie werden feststellen, dass jedem Objekt eine Vielzahl von „Komponenten“ hinzugefügt wurden, die Sie im Inspektor sehen können. Jeder Würfel, jede Kugel usw. hat eine Komponente, die als "Kollider" bezeichnet wird. Dies ist der physische Bereich des Bildschirms, in dem dieses Objekt Platz beansprucht. Wenn Sie einen Collider ausschalten, wird das Objekt wie ein Geist, der andere Objekte passieren kann. (Im Video erfahren Sie, was passiert, wenn Sie die Collider-Komponente des Players ausschalten.) Sie können Komponenten ein- und ausschalten, indem Sie das Kontrollkästchen neben dem Namen der Komponente aktivieren und deaktivieren.

Schritt 6: Den Spieler bewegen

Wählen Sie den Player in der Hierarchie aus.

Minimieren Sie Komponenten, die im Inspektor nicht geöffnet werden sollen, indem Sie auf die Abwärtspfeile links neben dem Namen jeder Komponente klicken. Dadurch wird Ihr Arbeitsbereich ein wenig aufgeräumt.

Klicken Sie unten im Inspektorfenster auf Komponente hinzufügen. Wählen Sie Neues Skript, benennen Sie das Skript "PlayerController" und wählen Sie eine Programmiersprache. Ich benutze CSharp. Klicken Sie auf Erstellen und Hinzufügen.

Öffnen Sie den Ordner "Assets" im Projektfenster und erstellen Sie einen Ordner mit dem Namen "Skripte", um die Organisation der Dateien zu gewährleisten. Legen Sie Ihr neues Skript in diesen Ordner.

Um das Skript zur Bearbeitung zu öffnen, doppelklicken Sie im Inspektor auf den Namen des Skripts oder öffnen Sie es im Projektfenster. Dies öffnet eine Programmierumgebung namens MonoDevelop.

Hinweis: Wenn Sie zum ersten Mal codieren, sollten Sie wissen, dass es sehr pingelig sein kann. Stellen Sie sicher, dass Sie mit Rechtschreibung, Groß- und Kleinschreibung und öffnenden und schließenden Klammern, Klammern, geschweiften Klammern, Anführungszeichen usw. übereinstimmen. Achten Sie auch auf Fehler, die darauf zurückzuführen sind, dass am Ende einer Codezeile kein Semikolon steht.

Ihr Code sollte standardmäßig bereits zwei Abschnitte enthalten: void Start () und void Update (). Start wird ausgeführt, sobald das Objekt ins Spiel kommt, und das Update wird kontinuierlich ausgeführt, während sich das Objekt im Spiel befindet. Wir werden ein drittes hinzufügen, FixedUpdate genannt, um physikbezogene Protokolle zu verarbeiten. Es sollte so aussehen:

 void FixedUpdate () {} 

Bevor wir Befehle eingeben können, müssen wir Variablen deklarieren. Dies erfolgt oben auf der Seite in den geschweiften Klammern nach Public Class PlayerController (oder ähnlichem): Monobehaviour, jedoch vor der Funktion void Start (). Für die Bewegung verwenden wir eine Variable namens "Geschwindigkeit", die wir anpassen können, um die Geschwindigkeit zu bestimmen, mit der sich unser Charakter in der Arena bewegt. Deklarieren Sie den Variablentyp (float) und den Namen (speed) wie folgt:

 öffentliche Schwimmgeschwindigkeit; 

Das Semikolon teilt dem Programm mit, dass dies das Ende der Codezeile ist. Sie erhalten eine Fehlermeldung, wenn Sie vergessen, ein Semikolon am Ende jeder / der meisten Codezeilen einzufügen. Lassen Sie es also nicht aus!

Deklarieren Sie unter FixedUpdate zwei weitere Floats, moveHorizontal und moveVertical. Diese nehmen abhängig von den Tastaturbefehlen des Benutzers Werte an, und FixedUpdate aktualisiert sie bei jedem Frame.

 float moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis ("Vertikal"); 

Fallangelegenheiten.

Erstellen Sie in FixedUpdate einen neuen Vector3, einen Variablentyp mit drei Dimensionen, der zum Verschieben von Objekten im 3D-Raum nützlich ist. Dies nimmt den Wert der Benutzereingabe für horizontale und vertikale Bewegung an und ist in Aufwärts- / Abwärtsrichtung Null, da sich der Spieler in diesem Spiel nur in zwei Dimensionen bewegen kann.

 Vector3-Bewegung = neuer Vector3 (moveHorizontal, 0.0f, moveVertical); 

Geben Sie abschließend eine Kraft auf den Spieler ein, um ihn mithilfe von Rigidbody zu bewegen. AddForce, ein Protokoll, das in die Starrkörperkomponente des Spielers integriert ist.

 Rigidbody.AddForce (Bewegung * Geschwindigkeit * Time.deltaTime); 

Time.deltaTime wird verwendet, um die Bewegung reibungsloser zu gestalten. Wir werden die Geschwindigkeitsvariable später im Unity-Editor anpassen.

Speichern Sie die CSharp-Datei und wechseln Sie zurück zu Unity.

Gehen Sie zum Inspektorfenster für den Player und sehen Sie sich das gerade erstellte Bewegungsskript an. Es sollte ein Feld für Ihre öffentliche Variable Geschwindigkeit geben. Sie können den Wert öffentlicher Variablen mit dem Inspektor ändern.

Stellen Sie die Geschwindigkeit vorerst auf eine Zahl zwischen 100 und 1000 ein und klicken Sie auf die Wiedergabetaste oben in der Mitte des Bildschirms. Sie sollten in der Lage sein, den Ball mit den Standardbewegungstasten von Unity, entweder ASWD oder den Pfeiltasten, zu bewegen.

Klicken Sie erneut auf die Wiedergabetaste, um den Testmodus zu verlassen.

Schritt 7: Beleuchtung hinzufügen

Erstellen Sie ein leeres Spielobjekt und nennen Sie es "Lichter". Klicken Sie dazu in der oberen Symbolleiste auf GameObject und wählen Sie "Leer erstellen".

Erstellen Sie ein Richtungslicht, indem Sie die Option in der Symbolleiste "Erstellen" im Hierarchiebedienfeld auswählen. Nennen Sie es "Hauptlicht". Machen Sie es zu einem untergeordneten Objekt von Lights, indem Sie es in der Hierarchie auf das Lights-Spielobjekt ziehen. Dies ist ein ähnliches Konzept wie das Ablegen einer Datei in einem Ordner.

Wenn Hauptlicht ausgewählt ist, ändern Sie die Lichteinstellungen im Inspektorfenster, indem Sie den Schattentyp auf „Weiche Schatten“ und die Auflösung auf „Sehr hohe Auflösung“ ändern.

Ändern Sie im Inspektorfenster die Drehung des Hauptlichts, um es über der Arena nach unten zu neigen. Ich habe 30X, 60Y, 0Z verwendet.

Klicken Sie im Hierarchiefenster mit der rechten Maustaste auf das Hauptlicht, um es zu duplizieren. Nennen Sie das Duplikat "Licht füllen" und unterschreiben Sie es unter "Lichter".

Dämpfen Sie die Intensität des Fülllichts, indem Sie die Farbe in einen hellblauen Farbton ändern und das Intensitätsfeld auf 0, 1 reduzieren (im Inspektor).

Ändern Sie die Schatten in "Keine Schatten".

Richten Sie das Fülllicht in die entgegengesetzte Richtung des Hauptlichts. Für mich war das (330, 300, 0).

Schritt 8: Feineinstellung des Kamerawinkels

Wir möchten, dass die Kamera über die Arena abgewinkelt ist. Wählen Sie daher die Hauptkamera in der Hierarchie aus und passen Sie ihre Transformation an, bis das Bild in der Kameravorschau (unten rechts im Szenenbedienfeld mit ausgewählter Kamera) gut aussieht.

Ich habe (0, 10, 5, -10) für die Position und (45, 0, 0) für die Drehung verwendet.

Sie können die Kamera auch in der Szenenansicht ziehen, um sie zu positionieren, wenn Sie dies wünschen.

Schritt 9: Lassen Sie die Kamera dem Player folgen

Wir möchten, dass die Kamera dem Player auf dem Bildschirm folgt, während er sich bewegt. Erstellen Sie zu diesem Zweck ein Skript mit dem Namen "cameraMovement", indem Sie der Hauptkamera im Inspektorfenster eine neue Skriptkomponente hinzufügen. Doppelklicken Sie auf das Skript, um es in MonoDevelop zu öffnen.

Dieses Skript greift auf ein anderes Spielobjekt zu, den Spieler. Sie müssen dies also vor der Start () - Funktion des Skripts durch Schreiben deklarieren

 öffentlicher GameObject-Spieler; 

Erstellen Sie einen Vektor3 mit dem Namen "Offset", indem Sie schreiben

 privater Vector3-Offset; 

Weisen Sie unter der Funktion Start () den Wert des Offsets zu

 offset = transform.position; 

Dies ist die (x, y, z) Position der Kamera.

Definieren Sie unter einer Funktion namens LateUpdate () die Position der Kamera als Position des Players plus etwas Versatz:

 void LateUpdate () {transform.position = player.transform.position + offset;} 

Speichern Sie das Skript und kehren Sie zu Unity zurück.

Wir müssen dem „Spieler“, den wir im cameraMovement-Skript definiert haben, ein Spielobjekt zuweisen. Wählen Sie die Hauptkamera aus und sehen Sie sich das Inspektorfenster an. Unter dem Skript cameraMovement sollte sich ein Feld mit dem Namen "Player" befinden. Es ist derzeit None (GameObject) zugewiesen. Ziehen Sie den Player aus der Hierarchie in dieses Feld, um das Player-Spielobjekt dem cameraMovement-Skript zuzuweisen.

Stellen Sie sicher, dass Sie das neue Skript in den Skriptordner (im Projektfenster) ziehen, den Sie unter Assets erstellt haben.

Probieren Sie das Spiel aus, indem Sie oben in der Mitte des Bildschirms auf die Wiedergabetaste klicken. Sie sollten in der Lage sein, den Player mit den Pfeiltasten zu bewegen, und die Kamera sollte Ihrer Bewegung folgen.

Speichern Sie die Szene und speichern Sie das Projekt.

Schritt 10: Gegenstände herstellen

Erstelle ein neues Spielobjekt. Es kann eine Kugel, ein Würfel, eine Kapsel oder ein Zylinder sein. Ich habe einen Würfel benutzt.

Nennen Sie es "Gegenstand".

Kennzeichnen Sie den Gegenstand als "Gegenstand", indem Sie Tags auswählen und ein neues Tag mit dem Namen "Gegenstand" erstellen. Kehren Sie dann zu den Tags für dieses Spielobjekt zurück und wählen Sie den neuen Tag "Gegenstand" aus, den Sie erstellt haben. Kennzeichnen Sie alle Ihre Artikel als Artikel. Stellen Sie sicher, dass Rechtschreibung und Großschreibung genau übereinstimmen.

Platziere den Gegenstand in einem leeren Spielobjekt namens "Gegenstände".

Setzen Sie ihre Transformationen zurück.

Fügen Sie dem Gegenstand einen starren Körper hinzu.

Dupliziere den Gegenstand einige Male und platziere die Kopien in der Arena.

Schritt 11: Lassen Sie den Spieler die Gegenstände sammeln und die Punktzahl anzeigen

Öffnen Sie das Spielerbewegungsskript im Inspektorfenster mit dem ausgewählten Spieler-Spielobjekt und ändern Sie das Skript, damit der Spieler die gesammelten Gegenstände sammeln und verfolgen kann.

Geben Sie zwei Erklärungen ab: Eine ist eine Variable, die Ihre Punktzahl verfolgt, und die andere ist ein GUI-Text, der Ihre Punktzahl in der Szenenansicht anzeigt.

 private int count; public GUIText countText; 

Initialisieren Sie unter der Funktion void Start () count und CountText, eine Funktion, die wir später schreiben werden.

 count = 0; CountText (); 

Schreiben Sie eine neue Funktion für das, was passiert, wenn der Player mit den Gegenständen kollidiert. Dies sollte ein eigener Abschnitt sein, genau wie die Abschnitte void Start () und void Update.

 void OnTriggerEnter (Collider other) {if (other.gameObject.tag == “item”) 
 {other.gameObject.SetActive (false); 
 count = count + 1; 
 CountText ();} 
 }} 

Schreiben Sie die CountText-Funktion, mit der die Punktzahl auf der GUI-Anzeige aktualisiert wird.

 Void CountText () {countText.text = "Count:" + count.ToString (); 
 }} 

Speichern Sie den Code und wechseln Sie zurück zu Unity.

Wählen Sie alle Ihre Elemente aus, stellen Sie sicher, dass sie als Elemente gekennzeichnet sind, und aktivieren Sie die Schaltfläche "Wird ausgelöst" in der Box Collider-Komponente des Inspektors.

Überprüfen Sie auch die Schaltfläche "Ist kinematisch" unter dem starren Körper. Dies verhindert, dass Ihre Gegenstände durch den Boden fallen, im Wesentlichen durch Ausschalten der Schwerkraft.

Erstellen Sie für den countText einen neuen GUI-Text (grafische Benutzeroberfläche) mit der Option Erstellen unter Hierarchie.

Setzen Sie die Transformation des GUI-Textes auf (0, 1, 0) und geben Sie ihm in der GUIText-Komponente im Inspektorfenster einen Pixelversatz von (10, -10).

Ziehen Sie den GUI-Text mit ausgewähltem Player in das Feld Anzahl Text im Inspektor.

Schritt 12: Machen Sie Gefahren

Diese schwer sichtbaren Felder bringen den Spieler in die Luft und möglicherweise über den Rand der Arena. In diesem Fall ist das Spiel vorbei. Das Herstellen von Gefahren ist ein ähnlicher Vorgang wie das Herstellen von Gegenständen.

Erstellen Sie ein neues leeres Spielobjekt mit dem Namen "Gefahren".

Erstellen Sie ein neues Quad und nennen Sie es "Gefahr".

Kennzeichnen Sie es als Gefahr und aktivieren Sie "Ist Auslöser".

Ändern Sie die Farbe, damit Sie sie sehen können, indem Sie im Inspektor Mesh Renderer mit der ausgewählten Gefahr auswählen und das Material ändern. Klicken Sie auf das Dropdown-Menü "Materialien" und verwenden Sie den kleinen grauen Kreis rechts neben dem Feld, um ein anderes Material als das standardmäßige graue für die Gefahr auszuwählen. Ich hatte ein weißes Material vorinstalliert, also habe ich das verwendet.

Ändern Sie die Drehung der Gefahr um die X-Achse auf 90 und senken Sie die Y-Höhe auf -0, 4, sodass ein kleines weißes Quadrat direkt über dem Boden der Arena liegt.

Bearbeiten Sie das Player-Skript unter der Funktion OnTriggerEnter (), sodass die Möglichkeit berücksichtigt wird, dass das Objekt, auf das der Player stößt, eine Gefahr und kein Element darstellt. Sagen Sie dem Spieler, er soll springen, wenn er die Gefahr trifft.

 void OnTriggerEnter (Collider other) {if (other.gameObject.tag == "item") {other.gameObject.SetActive (false); count = count + 1; CountText (); } if (other.gameObject.tag == "Hazard") {other.gameObject.SetActive (false); Vector3-Sprung = neuer Vector3 (0.0f, 30, 0.0f); Rigidbody.AddForce (Sprung * Geschwindigkeit * Time.deltaTime); }} 

Speichern Sie den Code, kehren Sie zum Unity-Editor zurück und duplizieren Sie die Gefahr einige Male.

Positionieren Sie die Gefahren in der Arena und probieren Sie das Spiel aus!

Ähnlicher Artikel