Osservare gli oggetti
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 34 di 85.
transform.LookAt(point) ruota un oggetto in modo che il suo asse in avanti, la freccia blu z, punti verso una posizione nel mondo. Ruota l’oggetto senza spostarlo. Questo faro si trova su una torre in (0, 6, 0) e punta verso il cancello in (4, 0, 10):
void Start()
{
transform.LookAt(new Vector3(4, 0, 10));
}Il cancello è più in basso rispetto alla luce, quindi il faro si inclina verso il basso oltre a ruotare: LookAt punta direttamente verso il punto, anche verso l’alto o verso il basso. Dopodiché, transform.forward punta dalla luce verso il cancello.
Se viene chiamato in Start(), LookAt punta una sola volta. Se viene chiamato in Update(), punta di nuovo a ogni fotogramma, così l’oggetto continua a essere rivolto verso il punto mentre l’oggetto o il punto si spostano. Il suo argomento è sempre una posizione: LookAt(Vector3.forward) punta verso il punto del mondo (0, 0, 1), un punto vicino al centro del mondo, ovunque si trovi l’oggetto.
Sfida
MedioFai in modo che il rover sia rivolto nella direzione in cui si muove.
- Sotto il commento in
Update(), scriviif (move != Vector3.zero), così il rover mantiene il suo orientamento quando è fermo. - Al suo interno, chiama
transform.LookAt(transform.position + move);.
Premi «Gioca» e guida: il rover gira la parte anteriore verso la direzione in cui si muove. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 3f;
void Update()
{
Vector3 move = Vector3.zero;
if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
move = move.normalized;
transform.position += move * speed * Time.deltaTime;
// Ruota il rover in modo che sia rivolto nella direzione in cui si muove
}
}
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