Scala
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 33 di 85.
transform.localScale moltiplica le dimensioni di un oggetto lungo ciascuno dei suoi assi. Un cubo predefinito misura 1 unità su ogni lato, quindi un cubo con localScale (4, 1, 0.5) è largo 4 unità, alto 1 unità e profondo mezzo unità. Per ottenere dimensioni uniformi, moltiplica Vector3.one, che è (1, 1, 1). Questa bolla di sapone cresce di 0.3 unità al secondo finché non raggiunge 3 unità di larghezza:
public float size = 1f;
void Update()
{
size = Mathf.Min(size + 0.3f * Time.deltaTime, 3f);
transform.localScale = Vector3.one * size;
}Mathf.Min(a, b) restituisce il più piccolo dei due numeri, quindi size cresce finché non raggiunge 3, poi rimane a 3.
La scala agisce attorno al pivot dell'oggetto, che per le forme integrate di Unity si trova al centro. Un cubo di 1 unità appoggiato a terra ha il centro a y = 0.5. Se lo porti a 3 unità di altezza, si estende di 1.5 unità verso l'alto e di 1.5 verso il basso a partire da quel punto, quindi metà del cubo sprofonda nel terreno. Per appoggiarlo a terra, il suo centro deve trovarsi a metà della sua altezza: y = 1.5.
Le dimensioni di un oggetto figlio vengono moltiplicate per quelle del genitore: un figlio con localScale (1, 1, 1) sotto un genitore con scala 2 viene disegnato con dimensioni doppie. transform.lossyScale legge le dimensioni finali nello spazio del mondo ed è di sola lettura; localScale è il valore che imposti.
Sfida
MedioFai sciogliere il cubetto di ghiaccio fino a 0.4, mantenendolo a terra.
- Aggiungi un campo
float size = 1f;. InUpdate(), impostasize = Mathf.Max(size - melt * Time.deltaTime, 0.4f);. - Imposta
transform.localScale = Vector3.one * size;. - Mantieni la base a y = 0: imposta y della posizione su
size / 2, mantenendo x e z.
Premi «Gioca»: il cubo si rimpicciolisce e rimane a terra. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Melt : MonoBehaviour
{
public float melt = 0.2f;
void Update()
{
// Riduci le dimensioni di melt al secondo, fino a 0.4, mantenendo la base a terra
}
}
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