Menu
CoddyTech

Lihat ke Depan

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

Kamera yang diarahkan ke target yang bergerak menampilkan bagian yang sama banyaknya dari tempat target sebelumnya berada dan tempat target akan menuju. Alih-alih, arahkan kamera ke titik di depan target: posisi target ditambah kecepatannya dikalikan waktu antisipasi dalam detik. Kamera pada penyangga di samping lintasan balap ini berputar mengikuti mobil dan mengarah ke titik setengah detik di depannya:

public Rigidbody car;
public float lead = 0.5f;

void LateUpdate()
{
    Vector3 aim = car.position + car.linearVelocity * lead;
    transform.LookAt(aim);
}

Pada kecepatan 20 unit per detik, titik bidik berada 10 unit di depan mobil. Pada kecepatan 4 unit per detik, jaraknya 2 unit, dan jika mobil berhenti, kamera langsung mengarah ke mobil. Kecepatan tersebut menunjukkan gerakan nyata mobil, jadi titiknya berada di tempat yang tepat saat mobil tergelincir atau mundur. transform.forward tidak demikian: arah depan mobil yang mundur menunjuk menjauhi arah geraknya, sedangkan arah depan bola yang menggelinding berputar bersamanya.

Kamera yang mengikuti target juga bisa mengantisipasi gerakannya: kamera membingkai titik di depan target, bukan target itu sendiri. Jika titik tersebut dapat berpindah ke sisi sebaliknya, seperti saat pemain berbalik arah, ubah jarak antisipasi sedikit demi sedikit setiap frame. Jika tidak, seluruh tampilan akan langsung meloncat.

challenge icon

Tantangan

Sedang

Tampilan samping ini mengikuti runner sepanjang x (panah menggerakkannya ke kiri dan kanan). Buat kamera menampilkan lebih banyak area di depan runner:

  • Kamera berada ahead (3) unit di depan runner sepanjang x, di sisi yang terakhir dituju runner. Sebelum runner bergerak untuk pertama kalinya, kamera berada tepat di tengahnya.
  • Saat runner berbalik arah, posisi kamera bergeser ke sisi lain dengan kecepatan shiftSpeed (4) unit per detik, bukan berpindah seketika.
  • Saat runner berhenti, kamera tetap berada di posisi tersebut.
  • Posisi y dan z kamera tetap seperti semula.

Tekan Mainkan, gerakkan runner ke kedua arah, lalu tekan Periksa.

Coba sendiri

using UnityEngine;

public class LookAheadCamera : MonoBehaviour
{
    public Transform player;
    public float ahead = 3f;
    public float shiftSpeed = 4f;

    void LateUpdate()
    {
        // Posisikan kamera ahead unit di depan player sesuai arah gerakan terakhirnya, lalu geser dengan kecepatan shiftSpeed.
        transform.position = new Vector3(player.position.x, transform.position.y, transform.position.z);
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay