So erstellen Sie eine sanfte Mausbewegung in Unity

Eine flüssige Mausbewegung ist ein wesentlicher Aspekt der Spieleentwicklung, der dazu beiträgt, das allgemeine Benutzererlebnis zu verbessern. Durch die Implementierung einer flüssigen Mausbewegung können Sie die Kamera- oder Spielersteuerung Ihres Spiels flüssiger und reaktionsschneller gestalten, was zu einem ausgefeilten und immersiven Spielerlebnis führt. In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie eine flüssige Mausbewegung in Unity einrichten, mit Codebeispielen in C#. Wir besprechen auch die möglichen Gründe, warum Sie diese Funktion in Ihren Spielen implementieren möchten.

Warum sanfte Mausbewegungen implementieren?

Hier sind einige Gründe, warum flüssige Mausbewegungen in Spielen wichtig sind:

  • Verbessertes Benutzererlebnis: Durch die reibungslose Steuerung hat der Spieler das Gefühl, seine Aktionen besser unter Kontrolle zu haben, was insbesondere bei Spielen aus der Ego- oder Third-Person-Perspektive für das Eintauchen in die Spielwelt unerlässlich ist.
  • Verbesserte Präzision: Durch die Feinabstimmung der Mausbewegung sind präzisere Kamerasteuerungen möglich, was bei Shooter-Spielen oder allen Spielen, bei denen sorgfältiges Zielen erforderlich ist, von entscheidender Bedeutung ist.
  • Edles Erscheinungsbild: Das Spiel wirkt dadurch professioneller und ausgefeilter, was entscheidend dazu beiträgt, die Spieler zu halten und ihr Interesse wach zu halten.
  • Reduziert Reisekrankheit: Zitternde oder zu empfindliche Kamerabewegungen können bei Spielern Unbehagen oder Reisekrankheit verursachen. Eine sanfte Mausbewegung kann helfen, dieses Risiko zu reduzieren.

Einrichten einer sanften Mausbewegung in Unity

Lassen Sie uns die Schritte durchgehen, um eine flüssige Mausbewegung in Unity zu erstellen.

Schritt 1: Ein neues Skript erstellen

Erstellen Sie zunächst ein neues C#-Skript, das die Mausbewegung steuert. Sie können dieses Skript etwa wie folgt benennen: MouseLook.

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;

    void Start()
    {
        // Lock the cursor in the middle of the screen
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get mouse movement input
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Invert the Y-axis for a more natural control feel
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Rotate the camera around the X-axis (up and down)
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        // Rotate the player object around the Y-axis (left and right)
        playerBody.Rotate(Vector3.up * mouseX);
    }
}

In diesem Code:

  • mouseSensitivity steuert, wie empfindlich die Mauseingabe ist.
  • playerBody stellt die Transformation des Spielers dar, die sich für die horizontale Mausbewegung entlang der Y-Achse dreht.
  • Die Variable xRotation speichert die aktuelle vertikale Drehung (nach oben und unten) und ist zwischen -90 und 90 Grad begrenzt, um eine Überdrehung zu verhindern.
  • Wir fixieren den Mauszeiger in der Bildschirmmitte, um zu verhindern, dass er aus dem Spielfenster herausrutscht.

Schritt 2: Das Skript an die Kamera anhängen

Nachdem das Skript nun fertig ist, gehen Sie zu Ihrer Unity-Szene und hängen Sie das Skript MouseLook an Ihre Kamera an (z. B. das Objekt Hauptkamera).

Weisen Sie dann das Feld playerBody zu, indem Sie das Spielerobjekt (normalerweise den Charakter-Controller oder ein leeres Spielobjekt, das den Spieler darstellt) in das Feld Player Body des Skripts im Inspector ziehen.

Schritt 3: Mausempfindlichkeit optimieren

Sie können mit dem Wert mouseSensitivity experimentieren, um das gewünschte Maß an Kontrolle zu erreichen. Ein guter Ausgangspunkt ist 100, Sie können ihn jedoch je nach gewünschter Präzision höher oder niedriger einstellen.

Schritt 4: Handhabung der Eingabeglätte

Für noch flüssigere Bewegungen können Sie die Mauseingabewerte interpolieren. Dadurch wird sichergestellt, dass die Kamera zwischen den einzelnen Bildern fließend wechselt, anstatt von einer Position zur nächsten zu springen. Hier ist ein Beispiel für die Implementierung:

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;
    private Vector2 smoothInputVelocity;
    public float smoothTime = 0.1f;
    private Vector2 currentMouseDelta;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get raw mouse input
        Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * mouseSensitivity;

        // Smooth the mouse input
        currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref smoothInputVelocity, smoothTime);

        xRotation -= currentMouseDelta.y * Time.deltaTime;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * currentMouseDelta.x * Time.deltaTime);
    }
}

Diese aktualisierte Version führt die Glättung mit Vector2.SmoothDamp ein. Die Variable smoothTime steuert, wie glatt der Übergang sein soll. Niedrigere Werte machen die Bewegung reaktionsschneller, während höhere Werte sie langsamer und allmählicher machen.

Schritt 5: Testen und Feinabstimmung

Sobald Sie das Skript installiert haben, testen Sie das Spiel und passen Sie die Empfindlichkeits- und Glättungswerte an, je nachdem, wie flüssig die Mausbewegung sein soll. Sie können auch den Klemmwinkel anpassen, um mehr oder weniger Bewegungsfreiheit für die Kamera zu ermöglichen.

Abschluss

Durch die Implementierung flüssiger Mausbewegungen in Ihr Unity-Projekt können Sie das Spielerlebnis durch präzise und flüssige Kamerasteuerung deutlich verbessern. Dieses Tutorial hat Sie durch die Einrichtung eines grundlegenden Mausbewegungssystems und dessen Verbesserung mit Glättungstechniken geführt.