Menu
CoddyTech

Ruota ogni secondo

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 4 di 67.

transform.Rotate(x, y, z) ruota un GameObject di altrettanti gradi attorno a ciascuno dei suoi assi. Chiamato in Update(), lo ruota un po' a ogni frame, quindi l'oggetto continua a ruotare.

Ma quanti frame ci sono in un secondo? Su un computer veloce magari 120, su un telefono magari 30. Un semplice transform.Rotate(0, 0, 5) ruoterebbe quattro volte più velocemente su quello veloce. La risposta di Unity è Time.deltaTime: i secondi trascorsi dall'ultimo frame. Moltiplicando una velocità per questo valore, la velocità è espressa al secondo, su qualsiasi dispositivo.

Qui una ruota ruota attorno al suo asse z, di 45 gradi al secondo:

public float speed = 45f;

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

A 60 frame al secondo, Time.deltaTime è circa 0.0167, quindi a ogni frame ruota di 45 * 0.0167, cioè circa 0.75 gradi, e 60 di questi fanno 45. A 30 frame al secondo, a ogni frame ruota il doppio, e un secondo continua comunque a totalizzare 45.

challenge icon

Sfida

Facile

Il cubo ha uno script Spinner con una speed di 90. In Update(), fai ruotare il cubo attorno al suo asse y di speed gradi al secondo, su qualsiasi dispositivo.

Premi Play per guardarlo, poi Check.

Provalo tu

using UnityEngine;

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

    void Update()
    {
        // Ruota qui il cubo attorno al suo asse y
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity