Zum Inhalt springen
DasPeTe Tutorials

Sanftes LookAt in Unity

So setzt du eine sanfte LookAt-Funktion in Unity um

Einsteiger5 Min.

Schade, dass die Funktion transform.LookAt() keine Möglichkeit bietet, die Rotation zu animieren.

Also müssen wir diese Funktion selbst bauen.

Dafür brauchen wir eine Variable für die Geschwindigkeit, ich setze sie auf 12, weil ich das für einen passenden Wert halte. Außerdem brauchen wir ein Blickziel.

csharp
    float rotationSpeed = 12f;
    Transform lookTarget;

Als Nächstes brauchen wir eine Rotate-Funktion. Darin ermitteln wir den Richtungsvektor und prüfen dann, ob es überhaupt eine Richtung gibt. Falls nicht, tun wir nichts. Danach erzeugen wir die Blickrotation in diese Richtung. Zum Schluss interpolieren wir die Rotation des Transforms.

csharp
    void Rotate() {
        Vector3 direction = lookTarget.position - transform.position;

        if(direction == Vector3.zero)
            return;

        Quaternion rotation = Quaternion.LookRotation(direction);

        transform.rotation = Quaternion.Slerp(
            transform.rotation,
            rotation,
            rotationSpeed * Time.deltaTime
        );
    }

Jetzt können wir die Rotate-Funktion in der Update-Funktion aufrufen.

csharp
    void Update(){
        Rotate();
    }

Kommentare

Die Kommentare sind GitHub Discussions: Zum Schreiben mit GitHub anmelden.

Die Kommentare kommen über giscus von GitHub. Beim Laden gehen deine IP-Adresse an giscus.app und GitHub.