Menu
CoddyTech

Caméra orbitale

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 46 sur 63.

Pour tourner autour d’un point, conserve un angle, fais pivoter un décalage fixe de cet angle et ajoute le résultat au point. La multiplication d’un vecteur par une rotation effectue cette rotation : Quaternion.Euler(0, angle, 0) * offset fait pivoter le décalage autour de l’axe y, tandis que sa longueur et sa hauteur restent identiques. Cette caméra tourne autour d’une statue à 20 degrés par seconde, toujours à 3 unités de hauteur et à 6 unités de distance :

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);
}

À l’angle 0, le décalage est (0, 3, -6), la caméra se trouve donc derrière la statue. À 90, il est (-6, 3, 0), du côté -x de la statue, et à 180, il est (0, 3, 6), devant. Déplacer la caméra ne la fait pas pivoter : LookAt la dirige donc vers la statue depuis chaque nouvelle position.

L’angle est stocké dans votre propre champ, comme dans les angles d’Euler : il peut dépasser 360 ou descendre en dessous de 0 sans saut, et vous pouvez le limiter ou le modifier depuis le clavier. Effectuer cela dans LateUpdate() place la caméra après le déplacement de la statue ou du joueur pendant la frame.

challenge icon

Défi

Moyen

Laisse le joueur faire voler la caméra autour de la tour, toujours à distance (8) unités de la position de la tour et toujours tournée vers elle. Le script conserve deux angles dans yaw et pitch :

  • yaw indique de combien la caméra a pivoté autour de la tour. La flèche droite l’augmente et la flèche gauche la diminue, à raison de turnSpeed (90) degrés par seconde. À yaw 0, la caméra se trouve du côté -z de la tour ; à yaw 90, elle se trouve du côté -x.
  • pitch indique de combien de degrés la caméra est élevée au-dessus du niveau de la tour, vue depuis celle-ci. La flèche vers le haut l’augmente et la flèche vers le bas la diminue, à raison de tiltSpeed (45) degrés par seconde, et elle reste comprise entre 10 et 60.

Elle commence à yaw 0 et pitch 30, ce qui la place à 4 unités au-dessus de la position de la tour et à 6.93 unités derrière celle-ci. Appuie sur Play, fais-la voler autour de la tour, puis appuie sur Check.

Essayez vous-même

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()
    {
        // Les touches fléchées modifient yaw et pitch.
    }

    void LateUpdate()
    {
        // Place la caméra autour de target et oriente-la vers lui.
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay