Menu
CoddyTech

Kamera Orbit

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 48 dari 71.

Untuk mengitari sebuah titik, pertahankan sebuah sudut, putar offset tetap sebesar sudut itu, lalu tambahkan hasilnya ke titik tersebut. Perkalian rotasi dengan vektor akan memutarnya: Quaternion.Euler(0, angle, 0) * offset mengayunkan offset mengitari sumbu y, sementara panjang dan tingginya tetap sama. Kamera ini mengitari patung dengan kecepatan 20 derajat per detik, selalu berada 3 unit di atas dan 6 unit dari patung:

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

Pada sudut 0, offset-nya adalah (0, 3, -6), jadi kamera berada di belakang patung. Pada sudut 90, offset-nya adalah (-6, 3, 0), di sisi -x patung, dan pada sudut 180, offset-nya adalah (0, 3, 6), di depan patung. Menggerakkan kamera tidak memutarnya, jadi LookAt mengarahkannya kembali ke patung dari setiap posisi baru.

Sudut kedua akan menaikkan kamera: Quaternion.Euler(pitch, yaw, 0) * new Vector3(0, 0, -distance) memutar arah belakang ke atas sebesar pitch (putaran positif mengitari sumbu x memiringkan (0, 0, -1) ke atas), lalu memutarnya mengitari sumbu dengan yaw, sehingga kamera tetap berjarak distance pada sudut apa pun.

Sudutnya disimpan di field milikmu sendiri, seperti pada Sudut Euler: nilainya bisa bertambah melewati 360 atau turun di bawah 0 tanpa lompatan, dan kamu bisa membatasinya atau mengubahnya dari keyboard. Melakukan ini di LateUpdate() menempatkan kamera setelah patung atau pemain bergerak pada frame tersebut.

challenge icon

Tantangan

Sedang

Biarkan pemain menerbangkan kamera mengelilingi menara.

  1. Di Update(), panah kanan dan kiri mengubah yaw dengan turnSpeed, sedangkan panah atas dan bawah mengubah pitch dengan tiltSpeed, dikalikan Time.deltaTime.
  2. Lalu, pertahankan pitch = Mathf.Clamp(pitch, 10f, 60f);.
  3. Di LateUpdate(), atur transform.position = target.position + Quaternion.Euler(pitch, yaw, 0) * new Vector3(0, 0, -distance);, lalu transform.LookAt(target);.

Tekan tombol “Main” dan terbang mengelilingi menara. Lalu tekan tombol “Periksa”.

Coba sendiri

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()
    {
        // Tombol panah mengubah yaw dan pitch.
    }

    void LateUpdate()
    {
        // Tempatkan kamera di sekitar target dan arahkan kamera ke target.
    }
}

Semua pelajaran di Fisika dan Gameplay

Latihan sendiri: Playground Unity