Menu
CoddyTech

Spazio locale e spazio mondo

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 26 di 85.

Un oggetto ha le proprie direzioni, oltre a quelle del mondo. transform.forward indica dove punta il muso dell'oggetto (la freccia blu nella vista Scena di Unity), espresso come vettore del mondo lungo un'unità; transform.right e transform.up sono rispettivamente la sua destra e il suo alto. Ruota l'oggetto e ruoteranno anche queste direzioni. Questo aeroplanino di carta è ruotato di 90 gradi intorno all'asse y nella scena, quindi vola lungo l'asse x del mondo, nella direzione in cui punta:

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

transform.Translate(Vector3.forward * speed * Time.deltaTime) fa la stessa cosa, perché Translate interpreta il suo vettore nello spazio locale dell'oggetto: in quello spazio, Vector3.forward indica la direzione in avanti dell'oggetto. Passa Space.World come secondo argomento e userà invece gli assi del mondo, quindi transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) si muove lungo l'asse z del mondo, qualunque sia la direzione in cui punta l'aeroplanino.

Anche transform.Rotate ruota intorno agli assi locali dell'oggetto. Visto dall'alto, un angolo positivo intorno all'asse y ruota un oggetto verticale verso destra, mentre un angolo negativo lo ruota verso sinistra; anche il suo transform.forward ruota insieme all'oggetto.

challenge icon

Sfida

Facile

Assegna al carro armato i comandi tipici dei carri armati: ruota sul posto, avanza nella direzione in cui è rivolto.

  1. In Update(), mentre tieni premuta la freccia destra, transform.Rotate(0, turn * Time.deltaTime, 0);, e usa -turn per la freccia sinistra.
  2. Mentre tieni premuta la freccia su, transform.Translate(Vector3.forward * speed * Time.deltaTime);.

Premi «Gioca», ruota e avanza: il carro armato va dove punta il muso. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // Frecce destra/sinistra: ruota attorno all'asse y. Freccia su: avanza nella direzione in cui è rivolto il carro armato.
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity