Erstellen eines First-Person-Controllers in Unity

Dieses Tutorial führt Sie durch die Erstellung eines einfachen First-Person-Controllers in Unity. Mit dem First-Person-Controller können Spieler eine 3D-Welt mit fließenden Bewegungen und Kamerarotationen erkunden. Wir verwenden grundlegendes C#-Skripting und die in Unity integrierte CharacterController-Komponente.

1. Einrichten der Szene

Beginnen Sie mit der Einrichtung der grundlegenden Szenenumgebung für Ihren First-Person-Controller:

  1. Erstellen Sie in Unity eine neue 3D-Szene.
  2. Gehen Sie zu GameObject > 3D Object > Plane, um eine Bodenfläche zu erstellen.
  3. Passen Sie den Maßstab des Flugzeugs an, damit es groß genug ist, damit der Spieler darin herumlaufen kann.
  4. Gehen Sie zu GameObject > 3D Object > Cube, um Hindernisse oder Wände hinzuzufügen, mit denen Sie interagieren können.

2. Hinzufügen des Player-Objekts

Zur Darstellung des Spielers verwenden wir ein Kapselobjekt:

  • Gehen Sie zu GameObject > 3D Object > Capsule, um der Szene eine Kapsel hinzuzufügen.
  • Positionieren Sie die Kapsel knapp über dem Boden (z. B. Position = (0, 1, 0)).
  • Benennen Sie die Kapsel in Player um.
  • Entfernen Sie die Komponente Capsule Collider, da der CharacterController Kollisionen behandelt.
  • Fügen Sie dem Player-Objekt eine CharacterController-Komponente hinzu, indem Sie den Player auswählen, dann im Inspector auf Komponente hinzufügen klicken und nach CharacterController suchen.

3. Schreiben des First-Person-Controller-Skripts

Erstellen wir nun ein Skript zur Steuerung der Spielerbewegung und Kameradrehung:

  1. Klicken Sie im Projektfenster mit der rechten Maustaste und wählen Sie Erstellen > C#-Skript. Nennen Sie es FirstPersonController.
  2. Fügen Sie das Skript an das Player-Objekt an, indem Sie es aus dem Projektfenster auf den Player in der Hierarchie ziehen.

Öffnen Sie das Skript und ersetzen Sie den Inhalt durch den folgenden Code:

using UnityEngine;

public class FirstPersonController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float mouseSensitivity = 2f;
    public float gravity = -9.81f;

    private CharacterController controller;
    private Vector3 velocity;
    private Transform cameraTransform;

    void Start()
    {
        controller = GetComponent();
        cameraTransform = Camera.main.transform;
        cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
        cameraTransform.parent = transform; // Attach camera to player
    }

    void Update()
    {
        // Player movement
        float moveX = Input.GetAxis("Horizontal") * moveSpeed;
        float moveZ = Input.GetAxis("Vertical") * moveSpeed;
        Vector3 move = transform.right * moveX + transform.forward * moveZ;

        controller.Move(move * Time.deltaTime);

        // Apply gravity
        if (controller.isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        // Camera rotation
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);
        cameraTransform.Rotate(Vector3.left * mouseY);
    }
}

4. Anbringen der Kamera

Für die Egoperspektive muss die Kamera am Spieler befestigt sein:

  • Wählen Sie in der Hierarchie die Hauptkamera aus.
  • Positionieren Sie es leicht über dem Player-Objekt (z. B. Y = 1,5).
  • Ziehen Sie die Kamera auf das Player-Objekt in der Hierarchie, um sie zu einem untergeordneten Objekt des Players zu machen. Dadurch folgt sie den Bewegungen und Drehungen des Players.

5. Konfigurieren von Eingängen

Der Input Manager von Unity verwendet vordefinierte Achsennamen wie „Horizontal“ und „Vertikal“ für die Bewegung sowie „Maus X“ und „Maus Y“ für die Mauseingabe. Diese werden automatisch konfiguriert, aber Sie können die Empfindlichkeit unter Bearbeiten > Projekteinstellungen > Input Manager anpassen.

6. Testen des Controllers

Jetzt, da der First-Person-Controller bereit ist, können Sie ihn mit der Play-Taste testen:

  • Verwenden Sie W, A, S, D, um den Spieler vorwärts, rückwärts und seitwärts zu bewegen.
  • Bewegen Sie die Maus, um die Kamera zu drehen und sich umzusehen.
  • Stellen Sie sicher, dass die Schwerkraft funktioniert, indem Sie von erhöhten Objekten heruntersteigen, um zu sehen, ob der Spieler auf natürliche Weise fällt.

7. Erweiterung des Controllers

Sie können den First-Person-Controller weiter verbessern, indem Sie Folgendes hinzufügen:

  • Sprintfunktionalität durch Erhöhen der Bewegungsgeschwindigkeit bei gedrückter Umschalttaste.
  • Sprunglogik durch Erkennen, wenn der Spieler die Leertaste drückt, und Anwenden einer Aufwärtsgeschwindigkeit.
  • Kletter- oder Hockmechanik für komplexere Interaktionen des Spielers mit der Umgebung.

Abschluss

Mit diesem grundlegenden First-Person-Controller verfügen Sie nun über ein funktionsfähiges Player-Setup zum Erkunden von 3D-Umgebungen. Durch Anpassen und Erweitern des Skripts können Sie weitere Funktionen und Interaktionen hinzufügen, die den Anforderungen Ihres Spiels entsprechen.