Menu
CoddyTech

Scala

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

transform.localScale moltiplica le dimensioni di un oggetto lungo ciascuno dei suoi assi. Un cubo predefinito misura 1 unità per 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 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 minore dei due numeri, quindi size cresce fino a raggiungere 3 e 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 verso l'alto e di 1.5 verso il basso rispetto al centro, 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 globale ed è di sola lettura; localScale è la proprietà che imposti.

challenge icon

Sfida

Medio

Il cubetto di ghiaccio si sta sciogliendo. Dall'inizio del gioco si rimpicciolisce su ogni asse di melt (0.2) al secondo, dalla dimensione iniziale di 1 fino a 0.4, dopodiché mantiene quella dimensione.

Se si rimpicciolisse attorno al suo centro, resterebbe sospeso in aria, quindi mantieni la parte inferiore appoggiata al suolo (a y = 0) per tutto il tempo. Le sue coordinate x e z non cambiano.

Premi Play per guardarlo sciogliersi, poi Check.

Provalo tu

using UnityEngine;

public class Melt : MonoBehaviour
{
    public float melt = 0.2f;

    void Update()
    {
        // Riduci le dimensioni di melt ogni secondo, fino a 0.4, mantenendo la base a terra
    }
}
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