Sind Sie neu bei Unity? Möchten Sie lernen, wie Sie Eingaben von Spielern entgegennehmen und Charaktere auf dem Bildschirm bewegen können? Wir haben diesen Leitfaden erstellt, um drei verschiedene Möglichkeiten aufzuzeigen, wie Sie die Spielerbewegung in Unity steuern können.
Egal, ob Sie neu im Programmieren sind oder bereits etwas Erfahrung gesammelt haben, dieses C#-Tutorial bringt Sie auf die Beine und Ihre Charaktere auf die Beine.
Lass uns anfangen.
Spielerbewegung in Unity: Inputs sammeln
Das Wichtigste zuerst: Sie müssen wissen, wie Sie Eingaben des Benutzers erfassen und in Bewegung im Spiel umwandeln. Unity macht das ziemlich einfach, solange Sie wissen, wo Sie suchen müssen.
Klicken Sie bei geöffnetem Unity auf Bearbeiten in der oberen Symbolleiste. Wählen Sie nun aus Projekt Einstellungen. Wählen Sie aus der linken Liste aus Input-Manager. Auswählen Achsen, Füllen der Liste der Eingabewerte. Sie werden sehen wollen Horizontal und Vertikal für Grundbewegungen.
Sie werden diese Achsen zusammen mit verwenden Eingang. GetAxisRaw(); für grundlegende Bewegung im nächsten Abschnitt.
Spielerbewegung in Einheit mit einem Rigidbody und einem Collider
Jetzt, da Sie die Namen der Äxte kennen, können Sie sie verwenden, um die Spielerbewegung zu steuern.
In Ihrem Unity-Projekt Hierarchie anzeigen, mit der rechten Maustaste klicken und auswählen 3D-Objekt > Kapsel um zu erschaffen, was du in Bewegung versetzen wirst. Stellen Sie sicher, dass Sie die gleiche Taktik anwenden, um einen Boden zu schaffen Ebene damit Ihre Kapsel darauf stehen kann.
Stellen Sie sicher, dass Sie die zurücksetzen Verwandeln Wert beider Objekte und bewege deine Kapsel so, dass sie auf dem Flugzeug steht. Benennen Sie Ihre Kapsel zur einfachen Identifizierung in etwas wie "Player" um.
Verwandt: Die 5 Unity-Spieleentwicklungssprachen: Welche sollten Sie lernen?
Klicken Sie auf die Spieler Objekt und in der Inspektor anzeigen, scrollen Sie nach unten zu Komponente hinzufügen. Füge hinzu ein Starrer Körper, und fügen Sie dann eine weitere Komponente als a hinzu Kapsel Collider diesmal. Sie benötigen diese Komponenten, um Ihrer Physik Physik und damit Bewegung hinzuzufügen Spieler.
Klicken Sie dann mit der rechten Maustaste in Ihre Skripte Ordner und Schaffen ein neues C#-Skript. Benennen Sie dieses Skript nach dem Vorbild von "PlayerMovement". Wenn Sie vorhaben, mehrere Bewegungstypen für verschiedene Charaktere oder Controller-Typen hinzuzufügen, sollten Sie viele verschiedene Skripte für jeden Bewegungstyp erstellen. Im Moment konzentrieren wir uns auf die Grundlagen und verwenden ein Skript.
Siehe auch: Was ist modulare Programmierung in Unity und warum ist sie wichtig?
Doppelklicken Sie auf Ihr Skript, um es zu öffnen. Sie werden mit einem Standard-Unity-Skript konfrontiert:
mit System. Sammlungen;
mit System. Sammlungen. Generisch;
mit UnityEngine;
öffentliche Klasse PlayerMovement: MonoBehaviour
{
// Start wird vor dem ersten Frame-Update aufgerufen
ungültig Start ()
{}
// Update wird einmal pro Frame aufgerufen
ungültige Aktualisierung ()
{
}
}
Sie können löschen mit System. Sammlungen; und verwendenSystem. Sammlungen. Generisch; da sie für dieses Skript nicht benötigt werden.
Wenn das aus dem Weg ist, konzentrieren Sie sich auf
öffentliche Klasse PlayerMovement: MonoBehaviour {
zur Zeit. Erstellen Sie innerhalb der öffnenden geschweiften Klammer a öffentlicher Float Variable benannt Geschwindigkeit oder etwas ähnliches. Dies Geschwindigkeit Variable ist ein Multiplikator, der steuert, wie schnell unsere Spieler bewegt sich nach etwas mehr Programmierung. Vorerst eingestellt Geschwindigkeit gleich etwas wie 10f.
Sie müssen Unity auch mitteilen, dass in diesem Skript ein Rigidbody zu manipulieren ist. Dies geschieht mit dem Schlüsselwort Starrer Körper und einen Variablennamen – wir wählen ihn aus rb.
öffentliche Klasse PlayerMovement: MonoBehaviour
{
Börsenganggeschwindigkeit = 10f; // Steuert den Geschwindigkeitsmultiplikator
Starrkörper rb; // Sagt dem Skript, dass es einen Starrkörper gibt, wir können die Variable rb verwenden, um in weiteren Skripten darauf zu verweisen
Das ist alles, was Sie in diesem Abschnitt hinzufügen müssen. Gehen Sie jetzt weiter zu ungültig Start (). Beim Starten des Spiels müssen Sie die einstellen rb Variable gleich der Starrer Körper auf der Spieler so:
ungültig Start ()
{
rb = GetComponent(); //rb entspricht dem Rigidbody auf dem Player
}
Werfen Sie nun einen Blick auf die ungültige Aktualisierung () Funktion. Dies ist die Funktion, die Sie verwenden, um ständig Eingaben von den Tastaturen, Controllern usw. der Spieler zu erfassen. Denken Sie daran, wann Sie die überprüft haben Projekt Einstellungen zum Eingangsachsen? Sie werden sie hier verwenden.
ungültige Aktualisierung ()
{
float xMove = Eingabe. GetAxisRaw("Horizontal"); // d-Taste ändert den Wert auf 1, eine Taste ändert den Wert auf -1
float zMove = Eingabe. GetAxisRaw("Vertikal"); // Die w-Taste ändert den Wert auf 1, die s-Taste ändert den Wert auf -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * speed; // Erzeugt Geschwindigkeit in Richtung des Wertes gleich dem Tastendruck (WASD). rb.velocity.y befasst sich mit dem Fallen + Springen, indem die Geschwindigkeit auf y gesetzt wird.
}
Machen Sie sich keine Sorgen, wenn Sie sich beim Einsprung in den Code überfordert fühlen; wir erklären es Schritt für Schritt. Erstellen Sie zunächst eine schweben Variable mit einem Namen wie xBewegen, und setzen Sie es gleich Eingang. GetAxisRaw("Horizontal");
Eingang. GetAxisRaw(); ist Unitys Methode zum Aufzeichnen von Player-Eingaben von der Achsen Sie fanden in der Projekt Einstellungen. Mehr darüber kannst du in nachlesen Die offizielle Dokumentation von Unity. "Horizontal" kommt von Horizontale Achse Namen in Einheit. Diese Achse steuert die linke und rechte Bewegung mit den Tasten "a" und "d".
Wie Sie wahrscheinlich schon erahnen können, float zMove = Eingabe. GetAxisRaw("Vertikal");
macht dasselbe, aber für die Tasten "w" und "s".
Verwandt: Die besten Unity 3D-Tutorials für Anfänger
Als Nächstes setzen Sie das ein Geschwindigkeit Variable, die Sie erstellt haben, ins Spiel bringen und das letzte Puzzleteil für die Spielerbewegung in Unity vervollständigen.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * speed; // Erzeugt Geschwindigkeit in Richtung des Wertes gleich dem Tastendruck (WASD). rb.velocity.y befasst sich mit dem Fallen + Springen, indem die Geschwindigkeit auf y gesetzt wird.
Gehen Sie zurück in Unity's Inspektor Ansicht für die Spieler Objekt. Werfen Sie einen Blick auf die Starrer Körper-unter Die Info, sehen Sie einen Wert Geschwindigkeit. Dies ist der Wert, mit dem Sie zielen rb.Geschwindigkeit.
new Vector3(xMove, rb.velocity.y, zMove) * Geschwindigkeit, erstellt einen neuen Vektor mit den bereitgestellten x-, y- und z-Werten und multipliziert dann den Wert des Vektors mit Geschwindigkeit.
Achten Sie darauf, die zu ziehen Spielerbewegung Skript auf die Spieler Objekt in Unity, und das war's! Insgesamt haben Sie ein funktionierendes C#-Skript, das Eingaben vom Spieler entgegennimmt und sie in Unity in Charakterbewegungen umwandelt.
Hier ist der fertige Code:
mit UnityEngine;
öffentliche Klasse PlayerMovement: MonoBehaviour
{
Börsenganggeschwindigkeit = 10f; // Steuert den Geschwindigkeitsmultiplikator
Starrkörper rb; // Sagt dem Skript, dass es einen Starrkörper gibt, wir können die Variable rb verwenden, um in weiteren Skripten darauf zu verweisen// Start wird vor dem ersten Frame-Update aufgerufen
ungültig Start ()
{
rb = GetComponent(); //rb entspricht dem Rigidbody auf dem Player
}// Update wird einmal pro Frame aufgerufen
ungültige Aktualisierung ()
{
float xMove = Eingabe. GetAxisRaw("Horizontal"); // d-Taste ändert den Wert auf 1, eine Taste ändert den Wert auf -1
float zMove = Eingabe. GetAxisRaw("Vertikal"); // Die w-Taste ändert den Wert auf 1, die s-Taste ändert den Wert auf -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * speed; // Erzeugt Geschwindigkeit in Richtung des Wertes gleich dem Tastendruck (WASD). rb.velocity.y befasst sich mit dem Fallen + Springen, indem die Geschwindigkeit auf y gesetzt wird.
}
}
Notiz: Wenn Sie feststellen, dass Ihr Charakter mehr herumfliegt als alles andere, vergewissern Sie sich, dass Sie die Drehung des Spielers in der sperren Inspektor.
Lernen und machen Sie mehr in Unity
Jetzt, da Sie wissen, wie man Spielerbewegungen in Unity mit Rigidbody- und Collider-Komponenten programmiert, was werden Sie als Nächstes lernen? Vielleicht würde es sich als unterhaltsam und ansprechend erweisen, Ihren Bewegungscontroller zu erweitern, um Dinge wie Gleiten, Doppelspringen und mehr hinzuzufügen.
Unity Learn ist randvoll mit interessanten Themen, um Ihre Spielentwicklungsfähigkeiten zu verbessern. Wir glauben, dass einer der wichtigsten Faktoren bei der Erweiterung Ihrer Programmierkenntnisse darin besteht, jeden Tag etwas Neues zu lernen. Bleiben Sie neugierig und frohes Hacken!
Möchten Sie anfangen, Ihre eigenen Spiele zu entwickeln? Unity Learn ist der beste und einfachste Weg, um zu lernen und zu beherrschen, was Sie wissen müssen.
Lesen Sie weiter
- Programmierung
- Spielentwicklung
- Einheit
- Programmierung
Marcus ist freiberuflicher Tech-Journalist und Junior Editor für Programmierung bei MUO. Er ist ein lebenslanger Lerner, Hobby-Front-End-Entwickler und Kurzgeschichtenschreiber mit mehr als 3 Jahren Erfahrung in der Entwicklung von Prosa, die die Leser auf dem Laufenden hält.
Abonniere unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um sich anzumelden