Menu
CoddyTech

Telecamera orbitale

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 46 di 63.

Per ruotare attorno a un punto, mantieni un angolo, ruota un offset fisso usando quell’angolo e aggiungi il risultato al punto. La rotazione per il vettore esegue la rotazione: Quaternion.Euler(0, angle, 0) * offset fa ruotare l’offset attorno all’asse y, mantenendone invariati lunghezza e altezza. Questa telecamera ruota attorno a una statua a 20 gradi al secondo, sempre a 3 unità di altezza e a 6 di distanza:

public Transform statue;
public float speed = 20f;
float angle;

void LateUpdate()
{
    angle += speed * Time.deltaTime;
    Vector3 offset = new Vector3(0, 3, -6);
    transform.position = statue.position + Quaternion.Euler(0, angle, 0) * offset;
    transform.LookAt(statue);
}

Con un angolo di 0, l’offset è (0, 3, -6), quindi la telecamera si trova dietro la statua. Con 90 è (-6, 3, 0), sul lato -x della statua, e con 180 è (0, 3, 6), davanti. Spostare la telecamera non la fa ruotare, quindi LookAt la punta di nuovo verso la statua da ogni nuova posizione.

L’angolo è memorizzato in un tuo campo, come negli angoli di Eulero: può superare 360 o scendere sotto 0 senza salti, e puoi limitarlo o modificarlo dalla tastiera. Eseguire questa operazione in LateUpdate() posiziona la telecamera dopo che la statua, o un giocatore, si è spostato nel frame.

challenge icon

Sfida

Medio

Fai volare il giocatore con la telecamera intorno alla torre, sempre a distance (8) unità dalla posizione della torre e sempre rivolta verso di essa. Lo script mantiene due angoli in yaw e pitch:

  • yaw indica quanto la telecamera ha ruotato intorno alla torre. La freccia destra lo aumenta e la freccia sinistra lo diminuisce, a turnSpeed (90) gradi al secondo. Con yaw 0 la telecamera si trova sul lato -z della torre; con yaw 90 si trova sul lato -x.
  • pitch indica di quanti gradi la telecamera è sollevata rispetto al livello della torre, vista dalla torre. La freccia su lo aumenta e la freccia giù lo diminuisce, a tiltSpeed (45) gradi al secondo, e resta tra 10 e 60.

Parte da yaw 0 e pitch 30, posizione che la colloca 4 unità sopra la posizione della torre e 6.93 unità dietro di essa. Premi Gioca, vola intorno alla torre, poi premi Verifica.

Provalo tu

using UnityEngine;

public class OrbitCamera : MonoBehaviour
{
    public Transform target;
    public float distance = 8f;
    public float turnSpeed = 90f;
    public float tiltSpeed = 45f;
    public float yaw = 0f;
    public float pitch = 30f;

    void Update()
    {
        // Le frecce modificano yaw e pitch.
    }

    void LateUpdate()
    {
        // Posiziona la telecamera attorno a target e orientala verso di esso.
    }
}
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 Fisica e gameplay