Kamera Orbit
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 46 dari 63.
Untuk mengitari sebuah titik, pertahankan sudut, putar offset tetap sebesar sudut tersebut, lalu tambahkan hasilnya ke titik itu. Perkalian rotasi dengan vektor melakukan pemutaran: Quaternion.Euler(0, angle, 0) * offset mengayunkan offset mengelilingi 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 menjauh:
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), sehingga kamera berada di belakang patung. Pada sudut 90, offset-nya menjadi (-6, 3, 0), di sisi -x patung, dan pada sudut 180, offset-nya menjadi (0, 3, 6), di depan. Menggerakkan kamera tidak memutarnya, jadi LookAt mengarahkannya kembali ke patung dari setiap posisi baru.
Sudut disimpan di field-mu sendiri, seperti pada Sudut Euler: nilainya dapat bertambah melewati 360 atau turun di bawah 0 tanpa lompatan, dan kamu dapat membatasinya atau mengubahnya dari keyboard. Melakukan ini di LateUpdate() menempatkan kamera setelah patung atau pemain bergerak pada frame tersebut.
Tantangan
SedangBiarkan pemain menerbangkan kamera mengitari menara, selalu berjarak distance (8) satuan dari posisi menara dan selalu mengarah ke menara. Skrip menyimpan dua sudut dalam yaw dan pitch:
yawadalah seberapa jauh kamera berputar mengitari menara. Panah kanan menaikkan nilainya dan panah kiri menurunkannya, dengan kecepatanturnSpeed(90) derajat per detik. Pada yaw 0, kamera berada di sisi -z menara; pada yaw 90, kamera berada di sisi -x.pitchadalah berapa derajat kamera dinaikkan di atas ketinggian menara, dilihat dari menara. Panah atas menaikkan nilainya dan panah bawah menurunkannya, dengan kecepatantiltSpeed(45) derajat per detik, dan nilainya tetap di antara 10 dan 60.
Kamera mulai pada yaw 0 dan pitch 30, sehingga posisinya 4 satuan di atas posisi menara dan 6.93 satuan di belakangnya. Tekan Play, terbang mengitari menara, lalu tekan Check.
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 ke target.
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur