Menu
CoddyTech

Berputar dengan Halus

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

Mengatur transform.rotation langsung ke rotasi baru akan memutar object dalam satu frame. Quaternion.RotateTowards(current, goal, maxDegrees) mengembalikan current yang diputar ke arah goal paling banyak sebesar maxDegrees, dan tidak pernah melewati goal. Dengan turnSpeed * Time.deltaTime sebagai langkahnya, object berputar dengan laju tetap dan berhenti tepat pada goal-nya, seperti yang dilakukan MoveTowards untuk posisi. Bunga matahari ini mengikuti matahari dengan kecepatan 30 derajat per detik:

public Transform sun;
public float turnSpeed = 30f;

void Update()
{
    Quaternion goal = Quaternion.LookRotation(sun.position - transform.position);
    transform.rotation = Quaternion.RotateTowards(transform.rotation, goal, turnSpeed * Time.deltaTime);
}

Matahari yang berjarak 90 derajat membuat bunga matahari berputar selama 3 detik, masing-masing 30 derajat. Bunga matahari berputar melalui arah terpendek, dan goal dihitung ulang pada setiap frame, sehingga matahari yang bergerak tetap diikuti.

Quaternion.Slerp(a, b, t) adalah rotasi sejauh pecahan t dari a ke b, seperti Vector3.Lerp untuk titik. Jika ditulis sebagai Slerp(transform.rotation, goal, 5f * Time.deltaTime) di dalam Update(), rotasi menempuh sebagian dari sudut yang tersisa pada setiap frame: cepat pada awalnya, lalu makin lambat saat mendekati goal, tidak pernah dengan kecepatan tetap dan tidak pernah benar-benar mencapainya. Gerakan yang melambat seperti ini cocok untuk kamera atau kepala yang berputar. Jika laju putaran merupakan aturan dalam game, misalnya meriam yang berputar 60 derajat per detik, gunakan RotateTowards.

challenge icon

Tantangan

Sedang

Burung hantu berputar untuk melihat ke arah yang kamu tunjuk. Setiap tombol panah memberinya arah baru untuk menghadap: atas +z, kanan +x, bawah -z, kiri -x. Saat tombol ditekan, burung hantu mulai berputar ke arah tersebut dengan kecepatan turnSpeed (180) derajat per detik, dengan laju tetap. Burung hantu menyelesaikan putarannya meskipun tombol dilepas, lalu berhenti tepat menghadap ke arah baru.

Tekan Play, tekan tombol panah, lalu Periksa.

Coba sendiri

using UnityEngine;

public class Owl : MonoBehaviour
{
    public float turnSpeed = 180f;

    void Update()
    {
        // Atas, kanan, bawah, kiri: putar agar menghadap +z, +x, -z, -x dengan kecepatan turnSpeed derajat per detik.
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay