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.
Tantangan
SedangBurung 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.
}
}
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