Menu
CoddyTech

Drehe dich jede Sekunde

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 4 von 67.

transform.Rotate(x, y, z) dreht ein GameObject um die angegebene Anzahl von Grad um jede seiner Achsen. Wird die Methode in Update() aufgerufen, dreht sich das Objekt bei jedem Frame ein wenig weiter und hört daher nicht auf, sich zu drehen.

Aber wie viele Frames hat eine Sekunde? Auf einem schnellen Computer vielleicht 120, auf einem Smartphone vielleicht 30. Ein einfaches transform.Rotate(0, 0, 5) würde sich auf dem schnellen Gerät viermal so schnell drehen. Unitys Lösung heißt Time.deltaTime: die Sekunden, die seit dem letzten Frame vergangen sind. Multipliziere eine Geschwindigkeit damit, und sie gilt für jede Sekunde und auf jedem Gerät.

Hier dreht sich ein Rad um seine z-Achse, 45 Grad pro Sekunde:

public float speed = 45f;

void Update()
{
    transform.Rotate(0, 0, speed * Time.deltaTime);
}

Bei 60 Frames pro Sekunde beträgt Time.deltaTime ungefähr 0.0167, sodass sich das Rad bei jedem Frame um 45 * 0.0167 dreht, also ungefähr 0.75 Grad. 60 solcher Schritte ergeben 45. Bei 30 Frames pro Sekunde dreht es sich bei jedem Frame doppelt so weit, und nach einer Sekunde sind es immer noch 45 Grad.

challenge icon

Aufgabe

Einfach

Der Würfel hat ein Spinner-Skript mit einer speed von 90. Lass den Würfel in Update() auf jedem Gerät jede Sekunde um speed Grad um seine y-Achse drehen.

Drücke auf Wiedergabe, um es anzusehen, und dann auf Prüfen.

Probier es selbst

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // Drehe den Würfel hier um seine y-Achse
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen des Scripting in Unity