Ruotalo ogni secondo
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 11 di 85.
transform.Rotate(x, y, z) ruota un GameObject di altrettanti gradi attorno a ciascuno dei suoi assi. Se viene chiamato in Update(), lo ruota un po' a ogni fotogramma, quindi l'oggetto continua a girare.
Ma quanti fotogrammi 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 sul computer più veloce. La risposta di Unity è Time.deltaTime: i secondi trascorsi dall'ultimo fotogramma. Moltiplica una velocità per questo valore e la velocità sarà espressa al secondo, su qualsiasi dispositivo.
Qui una ruota gira 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 fotogrammi al secondo, Time.deltaTime è circa 0.0167, quindi a ogni fotogramma la ruota gira di 45 * 0.0167, cioè circa 0.75 gradi, e 60 rotazioni di questo tipo fanno 45. A 30 fotogrammi al secondo, la ruota gira il doppio a ogni fotogramma, ma in un secondo il totale è sempre 45.
Sfida
FacileFai ruotare il cubo attorno al suo asse y a speed gradi al secondo.
- In
Update(), chiamatransform.Rotate(x, y, z). - Inserisci
speed * Time.deltaTimenel numero centrale, per y, e0per x e z. La ruota qui sopra ruotava attorno a z; questo cubo ruota attorno a y.
Premi «Gioca»: il cubo compie un quarto di giro ogni secondo. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Spinner : MonoBehaviour
{
public float speed = 90f;
void Update()
{
// Ruota qui il cubo attorno al suo asse y
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity