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.
Aufgabe
MittelLass 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:
yawgibt an, wie weit die Kamera um den Turm geschwenkt wurde. Der Rechtspfeil erhöht den Wert, der Linkspfeil verringert ihn, und zwar mitturnSpeed(90) Grad pro Sekunde. Bei yaw 0 befindet sich die Kamera auf der -z-Seite des Turms; bei yaw 90 auf der -x-Seite.pitchgibt 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 mittiltSpeed(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.
}
}
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
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand