Genitori e figli
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 31 di 85.
Nella Gerarchia, un oggetto trascinato su un altro diventa il suo figlio e viene mostrato rientrato sotto il suo genitore. Un figlio si muove, ruota e cambia scala insieme al genitore: sposta il genitore e tutti i figli lo seguiranno, senza bisogno di codice sui figli.
Unity memorizza la posizione di un figlio rispetto al suo genitore. transform.localPosition è questo offset, misurato dal genitore; transform.position è la posizione nel mondo. Questo Cavaliere è figlio di un Cavallo, e il suo script lo posiziona 1 unità sopra il centro del cavallo e mezzo unità indietro, ovunque si trovi il cavallo:
void Start()
{
transform.localPosition = new Vector3(0, 1, -0.5f);
}Con il cavallo in (4, 0.5, 2), position del cavaliere corrisponde a (4, 1.5, 1.5), mentre la sua localPosition resta (0, 1, -0.5). Quando il cavallo prosegue, position cambia e localPosition no. L'offset viene misurato lungo gli assi del genitore stesso, quindi quando il genitore ruota o cambia scala, anche l'offset ruota e cambia scala con lui. Per un oggetto senza genitore, localPosition e position sono uguali.
Sfida
MedioPosiziona la bandiera ai piedi dell'albero, misurando le coordinate rispetto alla nave.
- In
Start(), i numeri (0.6, 1, 0) sono misurati rispetto alla nave, il genitore della bandiera. - In quella riga, cambia
transform.positionintransform.localPosition.
Premi «Gioca»: la bandiera si trova ai piedi dell'albero, sulla nave. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Hoist : MonoBehaviour
{
public float climb = 1f;
void Start()
{
// La base dell'albero: 0.6 a destra e 1 in alto rispetto a Ship
transform.position = new Vector3(0.6f, 1, 0);
}
void Update()
{
// Finché la freccia su è premuta, sali fino a raggiungere un'altezza di 4 rispetto a Ship
}
}
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