Menu
CoddyTech

Ikuti dengan Halus

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 45 dari 63.

Kamera yang menyalin posisi pemain ditambah offset di LateUpdate() membuat setiap sentakan pemain menjadi sentakan pada tampilan. Vector3.SmoothDamp(current, target, ref velocity, smoothTime) mengembalikan posisi yang bergerak menuju target seperti gerakan pegas teredam: kecepatannya bertambah, melambat saat mendekati target, lalu tiba tanpa melewatinya. Kamera ini mengikuti pemain dari posisi 3 unit lebih tinggi dan 6 unit di belakang, dengan sedikit jeda:

public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
public float smoothTime = 0.3f;
Vector3 velocity;

void LateUpdate()
{
    Vector3 target = player.position + offset;
    transform.position = Vector3.SmoothDamp(transform.position, target, ref velocity, smoothTime);
}

ref memberikan variabel itu sendiri kepada SmoothDamp, bukan salinannya, sehingga method dapat mengubahnya. SmoothDamp menyimpan kecepatan kamera saat ini pada ketiga sumbu di velocity dan memerlukannya kembali pada frame berikutnya. Karena itu, variabel tersebut harus menjadi field. Jika dideklarasikan di dalam LateUpdate(), nilainya akan kembali menjadi nol pada setiap frame dan kamera akan bergerak sangat lambat, sekitar setengah persen dari jarak yang harus ditempuh per frame. Untuk satu angka, seperti zoom kamera, Mathf.SmoothDamp bekerja dengan cara yang sama menggunakan kecepatan float.

smoothTime menentukan seberapa jauh kamera tertinggal: dengan nilai 0.3, kamera menempuh sekitar 60% dari perubahan mendadak dalam 0.3 detik dan hampir sampai setelah 1 detik. Nilai yang lebih kecil membuat kamera mengikuti dengan lebih rapat. SmoothDamp membaca Time.deltaTime sendiri, jadi tidak ada nilai dalam pemanggilan fungsi yang dikalikan dengannya.

challenge icon

Tantangan

Sedang

Kamera melihat pemain dari atas dengan ketinggian tetap. Buat kamera mengikuti pemain dengan mulus menggunakan Vector3.SmoothDamp dan smoothTime (0.25), bergerak perlahan menuju posisi ini:

  • x: x pemain;
  • z: back (5) unit di belakang pemain, ke arah -z;
  • y: selalu height (12), berapa pun ketinggian pemain. Tombol Space membuat pemain melompat, dan tampilan tidak boleh ikut bergoyang.

Tekan Mainkan, berlari dan melompat, lalu tekan Periksa.

Coba sendiri

using UnityEngine;

public class TopDownCamera : MonoBehaviour
{
    public Transform player;
    public float height = 12f;
    public float back = 5f;
    public float smoothTime = 0.25f;

    void LateUpdate()
    {
        // Gerakkan kamera perlahan ke titik di atas player (x), sejauh back unit di belakangnya (z), pada ketinggian tetap.
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Fisika dan Gameplay