Menu
CoddyTech

Orbit-Kamera

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 46 von 63.

Um einen Punkt zu kreisen, behältst du einen Winkel bei, drehst einen festen Offset um diesen Winkel und addierst das Ergebnis zum Punkt. Die Rotation mal Vektor führt die Drehung aus: Quaternion.Euler(0, angle, 0) * offset schwenkt den Offset um die y-Achse, wobei seine Länge und Höhe gleich bleiben. Diese Kamera kreist mit 20 Grad pro Sekunde um eine Statue, immer 3 Einheiten nach oben und 6 nach außen:

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

Bei einem Winkel von 0 beträgt der Offset (0, 3, -6), die Kamera befindet sich also hinter der Statue. Bei 90 beträgt er (-6, 3, 0), auf der -x-Seite der Statue, und bei 180 beträgt er (0, 3, 6), davor. Die Kamera zu bewegen, dreht sie nicht, daher richtet LookAt sie von jeder neuen Position aus wieder auf die Statue aus.

Der Winkel wird in deinem eigenen Feld gespeichert, wie bei Euler-Winkeln: Er kann über 360 hinauswachsen oder unter 0 fallen, ohne dass es zu einem Sprung kommt, und du kannst ihn begrenzen oder über die Tastatur ändern. Wenn du das in LateUpdate() machst, wird die Kamera platziert, nachdem sich die Statue oder ein Spieler im Frame bewegt hat.

challenge icon

Aufgabe

Mittel

Lass den Spieler die Kamera um den Turm herumfliegen, immer distance (8) Einheiten von der Position des Turms entfernt und stets auf ihn gerichtet. Das Skript speichert zwei Winkel in yaw und pitch:

  • yaw gibt an, wie weit die Kamera um den Turm geschwenkt wurde. Der Rechtspfeil erhöht den Wert, der Linkspfeil verringert ihn, und zwar mit turnSpeed (90) Grad pro Sekunde. Bei yaw 0 befindet sich die Kamera auf der -z-Seite des Turms; bei yaw 90 auf der -x-Seite.
  • pitch gibt an, um wie viele Grad die Kamera über die Höhe des Turms angehoben ist, vom Turm aus gesehen. Der Aufwärtspfeil erhöht den Wert, der Abwärtspfeil verringert ihn, und zwar mit tiltSpeed (45) Grad pro Sekunde. Der Wert bleibt zwischen 10 und 60.

Die Kamera startet bei yaw 0 und pitch 30. Dadurch befindet sie sich 4 Einheiten über der Position des Turms und 6.93 Einheiten dahinter. Drücke Spielen, fliege herum und klicke dann auf Überprüfen.

Probier es selbst

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()
    {
        // Die Pfeiltasten ändern yaw und pitch.
    }

    void LateUpdate()
    {
        // Positioniere die Kamera um target herum und richte sie darauf aus.
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Physik und Gameplay