Menu
CoddyTech

Drehe ihn jede Sekunde

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 11 von 85.

transform.Rotate(x, y, z) dreht ein GameObject um so viele Grad um jede seiner Achsen. Wird die Methode in Update() aufgerufen, dreht sich das Objekt bei jedem Frame ein wenig weiter und dreht sich somit ständig.

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 ist Time.deltaTime: die Sekunden, die seit dem letzten Frame vergangen sind. Multiplizierst du eine Geschwindigkeit damit, gilt sie auf jedem Gerät pro Sekunde.

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

public float speed = 45f;

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

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

challenge icon

Aufgabe

Einfach

Lass den Würfel mit einer Geschwindigkeit von speed Grad pro Sekunde um seine y-Achse drehen.

  1. Rufe in Update() transform.Rotate(x, y, z) auf.
  2. Setze speed * Time.deltaTime in die mittlere Zahl für y und 0 für x und z. Das Rad oben drehte sich um z; dieser Würfel dreht sich um y.

Drücke auf „Spielen“: Der Würfel dreht sich jede Sekunde um eine Vierteldrehung. Drücke 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
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground