Menu
CoddyTech

Menghadap ke Arah Gerakmu

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

transform.LookAt membutuhkan titik untuk dilihat. Sering kali, yang kamu miliki justru arah: kecepatan, angin, atau arah gerak sesuatu. Quaternion.LookRotation(direction) mengembalikan rotasi yang membuat arah depan (panah z biru) menunjuk ke arah tersebut, dengan arah atas object tetap mengarah ke atas dunia. Panah yang ditembakkan ke udara awalnya menunjuk ke atas, lalu miring saat jatuh, karena kecepatannya berubah seperti itu:

Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void Update()
{
    if (rb.linearVelocity != Vector3.zero)
    {
        transform.rotation = Quaternion.LookRotation(rb.linearVelocity);
    }
}

Yang diperhitungkan hanya arahnya, bukan panjangnya: (1, 0, 2) dan (3, 0, 6) menghasilkan rotasi yang sama. Vektor nol tidak memiliki arah, jadi LookRotation(Vector3.zero) mencatat Look rotation viewing vector is zero dan mengembalikan Quaternion.identity, yang membuat object langsung menghadap +z. Itulah sebabnya panah memeriksa kondisinya terlebih dahulu: setelah berhenti, arahnya tetap seperti sebelumnya. LookAt(target.position) menghasilkan rotasi yang sama dengan LookRotation(target.position - transform.position).

Bagian arah yang menunjuk ke atas atau ke bawah membuat arah depan ikut miring ke atas atau ke bawah. Untuk sesuatu yang harus tetap tegak, seperti pejalan yang naik lereng, atur y pada arah menjadi 0 terlebih dahulu, agar object hanya berputar pada sumbu y. Argumen kedua, LookRotation(direction, Vector3.up), menentukan arah atas; Vector3.up adalah nilai yang digunakan jika argumen itu tidak diberikan.

challenge icon

Tantangan

Sedang

Lebah terbang dari satu bunga ke bunga lainnya. Skrip Mover yang sudah tersedia menerbangkannya dalam garis lurus, naik atau menukik di sepanjang jalan, dan membuatnya beristirahat selama 1 detik di setiap bunga; biarkan Mover apa adanya. Tulis FaceMotion agar lebah menghadap ke arah terbangnya:

  • Lebah menghadap ke arah geraknya sejak frame terakhir, dilihat dari atas.
  • Lebah tetap tegak: hidungnya tidak mengarah ke atas atau ke bawah saat naik atau menukik.
  • Saat beristirahat, lebah tetap menghadap ke arah yang sama, dan tidak ada apa pun yang dicatat.

Kode ditulis di LateUpdate(), jadi Mover sudah menggerakkan lebah untuk frame ini. Tekan Play, lalu Check.

Coba sendiri

using UnityEngine;

public class FaceMotion : MonoBehaviour
{
    Vector3 lastPosition;

    void Start()
    {
        lastPosition = transform.position;
    }

    void LateUpdate()
    {
        // Hadapkan ke arah pergerakan lebah sejak frame terakhir.
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay