Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Ein Charakter-Controller kann Ihnen helfen, einfache Bewegungsphysik in Ihr Spiel zu implementieren.

Sie können Unity3D-Charaktercontroller aus verschiedenen Blickwinkeln angehen. Wenn Sie eine Bibliothek mit leistungsstarken Klassen und Funktionen verwenden, kann das Erstellen einer physikbasierten Charaktersteuerung ein unterhaltsamer Ausgangspunkt für Ihre Spieleentwicklung sein.

Schritt 1: Erstellen Sie eine Szene mit Spieler- und Geländeobjekten

Sobald Unity geöffnet ist und Sie ein neues Projekt erstellt haben, können Sie beginnen, indem Sie Ihrer Szene ein paar Objekte hinzufügen. Sie können diese Objekte in beliebiger Reihenfolge erstellen, aber achten Sie darauf, dass Sie die richtigen Einstellungen verwenden. Während dieses Projekt einfach ist, ist es eine großartige Möglichkeit Beginnen Sie mit Unity.

Ein 3D-Ebenenobjekt für Gelände

instagram viewer

Das erste Objekt, das Sie Ihrer Szene hinzufügen, ist ein Flugzeug. Klicken Sie mit der rechten Maustaste in das Hierarchiefenster und bewegen Sie den Mauszeiger darüber 3D-Objekt, und wählen Sie aus Ebene von der Liste. Sie können die Größe des Flugzeugs anpassen, um einen größeren Testbereich bereitzustellen, aber Sie müssen nichts weiter daran ändern.

Ein Cube-Object-Player-Modell

Als nächstes ist es an der Zeit, der Szene einen Würfel hinzuzufügen, der als Spielermodell fungiert. Klicken Sie mit der rechten Maustaste in das Hierarchiefenster und bewegen Sie den Mauszeiger darüber 3D-Objekt, und wählen Sie aus Würfel aus dem Dropdown-Menü. Positionieren Sie den neuen Würfel so, dass er sich über der Ebene befindet, die Sie ebenfalls hinzugefügt haben. Sie müssen auch eine Starrkörperkomponente hinzufügen, um den Würfel in ein Physikobjekt zu verwandeln.

Wählen Sie den Würfel aus und gehen Sie zum Inspektor. Klicke auf Komponente hinzufügen Suchen Sie am unteren Rand des Bereichs nach Starrkörper, und wählen Sie aus Starrer Körper aus der Liste, wenn es erscheint. Kreuzen Sie an Verwenden Sie die Schwerkraft ankreuzen und die restlichen Einstellungen unverändert lassen.

Sie können finden kostenlose Unity-Assets online um Ihr Projekt aufzupeppen.

Eine Third-Person-Kamera

Ihre Szene sollte bereits über eine Kamera verfügen, die Sie als Third-Person-Kamera verwenden können. Positionieren Sie die Kamera so, dass sie in einer bequemen Third-Person-Position über Ihrem Cube sitzt. Wechseln Sie zum Hierarchiebereich, bevor Sie die Kamera per Drag & Drop auf den Würfel ziehen, um eine Eltern-Kind-Beziehung zu erstellen. Die Kamera folgt dabei automatisch Ihrem Würfel.

Ein Schnelltest

Während Ihre Szene noch keinen Code hat, können Sie Ihre bisherige Arbeit testen. Drücke den Spielen Schaltfläche oben auf dem Bildschirm, um Ihr Spiel zu laden. Sie sollten sehen, wie der Würfel fällt und auf dem Flugzeug landet, und die Kamera sollte dem Würfel folgen, während er fällt.

Schritt 2: Richten Sie eine C#-Datei ein

Jetzt ist es an der Zeit, eine C#-Datei zu erstellen, damit Sie anfangen können, Bewegungen zu programmieren. Gehen Sie zum Abschnitt Projekt, klicken Sie mit der rechten Maustaste, bewegen Sie den Mauszeiger über Erstellen und wählen Sie Ordner aus der Liste aus. Benennen Sie den Ordner Skripte oder etwas Ähnliches.

Navigieren Sie in Ihrem neuen Ordner und wiederholen Sie den Vorgang, aber wählen Sie C#-Skript aus der Liste aus. Sie können dieser Datei einen beliebigen Namen geben, aber dies ist auch der Name der darin enthaltenen Hauptfunktion. Stellen Sie sicher, dass Ihr neues C# so aussieht.

verwenden System. Sammlungen;
verwenden System. Sammlungen. Generisch;
verwenden UnityEngine;

öffentlichKlasseCharacter_Control: MonoBehaviour {
LeereStart() {
}

LeereAktualisieren() {
}
}

Schritt 3: Verwenden Sie C#, um Vorwärts- und Rückwärtsbewegungen mit Geschwindigkeit zu erstellen

Bevor Sie die Funktionen in Ihrer Skriptdatei hinzufügen, deklarieren Sie einige öffentliche Variablen. An erster Stelle steht ein Rigidbody, um das Spielermodell zu speichern. Deklarieren Sie auch einen Schwimmer, um die Bewegungsgeschwindigkeit im Auge zu behalten. Diese Variablen gehören in die Hauptklasse, außerhalb von Funktionen.

öffentlich Starrkörper Starrkörper;
öffentlichschweben Geschwindigkeit;

Als nächstes ist es an der Zeit, der Start-Funktion eine einzelne Codezeile hinzuzufügen. Dies verwendet eine GetComponent-Deklaration, um die Rigidbody-Komponente des Cubes der von Ihnen erstellten Rigidbody-Variablen zuzuweisen.

LeereStart() {
Rigidbody = GetComponent < Rigidbody > ();
}

Jetzt können Sie Code hinzufügen, der Ihr Player-Modell in Bewegung versetzt. Dieser Code ist schön und einfach; Sie brauchen nur zwei if-Anweisungen, eine für die Vorwärtsbewegung und eine für die Rückwärtsbewegung. Sie können Eingabe verwenden. GetKey, um festzustellen, wann eine Taste gedrückt wird. In diesem Fall suchen Sie nach Drücken der Tasten W und S.

Durch Drücken einer dieser Tasten wird dem Würfel-Starrkörper mithilfe von Starrkörper eine Kraft hinzugefügt. AddForce. Sie können die Richtung und Geschwindigkeit der hinzugefügten Kraft berechnen, indem Sie ihre Position auf der Z-Achse (transform.forward) mit der Geschwindigkeitsvariablen multiplizieren. Es gibt keine transform.backward-Klasse, die Sie für die Rückwärtsbewegung verwenden können, aber dies kann erreicht werden, indem Sie transform.forward mit -1 multiplizieren.

Wenn (Eingang. GetKey("w")) {
starrer Körper. AddForce (transform.forward * speed);
}

Wenn (Eingang. GetKey("S")) {
starrer Körper. AddForce((transform.forward * -1) * Geschwindigkeit);
}

Speichern Sie die C#-Datei und navigieren Sie zurück zu Unity. Suchen Sie das Skript im Projektfenster und ziehen Sie es per Drag-and-Drop auf den Charaktermodell-Würfel innerhalb der Hierarchie, um das Skript diesem Objekt zuzuweisen. Wenn Sie den Cube auswählen, sollten Sie das Skript als Komponente im Inspector-Bereich sehen. Klicken Sie in das Variablenfeld Starrkörper und wählen Sie den Starrkörper Ihres Würfels aus.

Sie können jetzt die Play-Schaltfläche verwenden, um das Spiel zu starten und Ihren Code zu testen. Aber warte! Es gibt ein Problem; Ihr Würfel wird rollen, anstatt sich geradeaus zu bewegen. Gehen Sie zurück zum Inspektor des Würfels, suchen Sie die Rigidbody-Komponente und markieren Sie die Kästchen, um Rotation auf der X- und Z-Achse einzufrieren, bevor Sie das Spiel erneut starten. Jetzt sollte es funktionieren.

Schritt 4: Verwenden Sie C#, um Links- und Rechtsdrehungen mit Drehmoment zu erstellen

Im Gegensatz zur Vorwärts- und Rückwärtsbewegung erfordert das Drehen Ihres Cube-Player-Modells eine Kraft, die als Drehmoment bezeichnet wird. Dazu benötigen Sie eine weitere Variable: einen öffentlichen Float, um einen Drehmomentwert zuzuweisen.

öffentlichschweben Drehmoment;

Der Code zum Links- und Rechtsdrehen in diesem Skript ist sehr ähnlich dem, der auch zum Vorwärts- und Rückwärtsfahren verwendet wird. Dort ist ein Wenn -Anweisung für jede Richtung, die nach dem Drücken der Taste D (Rechtskurve) oder der A-Taste (Linkskurve) sucht.

Der erste Schritt in jeder if-Anweisung besteht darin, die Richtung der Wende mithilfe der Eingabe zu bestimmen. GetAxis-Methode und weisen Sie das Ergebnis einer Float-Variablen zu. Verwenden Sie anschließend Rigidbody. AddTorque, um eine Rotationskraft auf das Cube-Charaktermodell anzuwenden, indem das Drehmoment, die Drehung und die Z-Achse des Würfels multipliziert werden.

Wenn (Eingang. GetKey("D")) {
schweben drehen = Eingabe. GetAxis("Horizontal");
starrer Körper. AddTorque (transform.up * Drehmoment * Umdrehung);
}

Wenn (Eingang. GetKey("A")) {
schweben drehen = Eingabe. GetAxis("Horizontal");
starrer Körper. AddTorque (transform.up * Drehmoment * Umdrehung);
}

Speichern Sie Ihren Code und gehen Sie zurück zu Unity, um ihn zu testen. Sie können die Geschwindigkeit und die Hochlaufzeit Ihrer Spielermodellrotation anpassen, indem Sie den Würfel auswählen und die Massen-, Widerstands- und Drehmomentvariablen des Starrkörpers in Ihrem Skript bearbeiten. Dieses Beispielprojekt setzt auf 1 Masse, 1 Widerstand und 2 Drehmoment.

Schritt 5: Verwenden Sie C#, um Jumping zu programmieren

Als letztes Element dieses Unity-Charaktercontrollers ist es an der Zeit, Ihren Sprung zu erstellen. Das Erstellen eines Sprungs ist komplexer als die anderen grundlegenden Steuerelemente, an denen Sie gearbeitet haben, da ein Sprung eine begrenzte Höhe haben muss. Beginnen Sie damit, eine private boolesche Variable hinzuzufügen, um zu verfolgen, ob der Spieler springt oder nicht.

Privatgeländebool ist Springen = FALSCH;

Diese Variable macht nichts ohne eine Anweisung, sie zu testen. In diesem Fall reicht eine einfache if-Anweisung aus, um zu prüfen, ob die Variable falsch ist. Das Hinzufügen derselben Bedingung zu den anderen Bewegungs-If-Anweisungen hindert den Spieler daran, sich während Sprüngen zu bewegen.

Wenn (! springt) {
}

Das Hinzufügen derselben Bedingung zu den anderen Bewegungs-If-Anweisungen hindert den Spieler daran, sich während Sprüngen zu bewegen.

Wenn (Eingang. GetKey("w") && !springt) {
starrer Körper. AddForce (transform.forward * speed);
}

Innerhalb der !isJumping if-Anweisung benötigen Sie eine weitere if-Anweisung, diesmal um zu prüfen, ob die Sprungtaste gedrückt wurde. Das erste, was Sie in dieser if-Anweisung tun müssen, ist die isJumping-Variable auf true zu setzen, gefolgt von einer rigidbody.angularVelocity-Deklaration, um die aktuell auf den Würfel ausgeübten Kräfte zu entfernen.

Jetzt können Sie den Starrkörper verwenden. AddForce-Deklaration, um dem Würfel auf seiner Z-Achse Kraft hinzuzufügen und die Aufwärtsbewegung eines Sprungs zu erzeugen. Schließlich ist es an der Zeit, eine Invoke-Deklaration zu verwenden, um nach 0,8 Sekunden eine andere Funktion aufzurufen.

Wenn (! springt) {
Wenn (Eingang. GetKeyDown("Raum")) {
ist Springen = WAHR;
starrer Körper. AddForce (transform.up * Geschwindigkeit * 120);
rigidbody.angularVelocity = Vector3.zero;
Aufrufen("Move_Setter", 0.8 F);
}
}

Diese Funktion setzt die isJumping-Variable wieder auf false, sodass Bewegung/Springen wieder möglich ist, und die 0,8-Sekunden-Verzögerung verhindert, dass sie zu früh ausgelöst wird.

LeereMove_Setter() {
ist Springen = FALSCH;
}

Schritt 6: Testen Sie Ihren Charakter-Controller-Code

Speichern Sie Ihre Datei und gehen Sie zurück zu Unity, um den von Ihnen geschriebenen Code zu testen. Wie die meisten Compiler stellt Unity Informationen zu Fehlern und anderen Problemen mit Ihrem Code bereit, damit Sie leichter erkennen können, was Sie möglicherweise ändern müssen. Sie können den vollständigen Code für dieses Projekt auf unserer einsehen GitHub Buchseite.

Erstellen von Unity-Zeichencontrollern

Beim Erstellen eines Charaktercontrollers in Unity können Sie aus einer Vielzahl unterschiedlicher Ansätze wählen. Die Verwendung von Physik ist eine Option, aber Sie können auch das integrierte Charaktersteuerungssystem verwenden, wenn Sie möchten.

Das Erkunden verschiedener Optionen wie dieser ist eine großartige Möglichkeit, sich mit Tools wie Unity vertraut zu machen.