Gerak Lambat
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 34 dari 56.
Nilai Time.timeScale antara 0 dan 1 menghasilkan gerakan lambat. Pada 0.25, Time.deltaTime adalah seperempat dari waktu frame sebenarnya, jadi mobil yang bergerak dengan speed * Time.deltaTime menempuh seperempat jaraknya setiap detik sebenarnya, Rigidbody bergerak dan jatuh dengan seperempat kecepatannya, dan WaitForSeconds(1f) berlangsung selama 4 detik sebenarnya. Di atas 1, game berjalan cepat: 2 berarti kecepatan ganda.
Fisika memerlukan satu baris lagi. Setiap langkah fisika tetap memajukan game sebesar Time.fixedDeltaTime, yaitu 0.02 detik waktu game, dan pada 0.25, durasi itu setara dengan 0.08 detik sebenarnya: FixedUpdate() hanya berjalan 12.5 kali per detik sebenarnya, jadi benda bergerak satu frame dari setiap lima frame dan gerakannya tersendat. Perkecil durasi langkah dengan faktor yang sama, lalu kembalikan kedua nilai setelahnya, karena Unity tidak pernah mengatur ulang fixedDeltaTime sendiri. Skrip ini memperlambat game selama Space ditekan:
float normalStep;
void Awake()
{
normalStep = Time.fixedDeltaTime; // 0.02 dalam proyek baru
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Time.timeScale = 0.25f;
Time.fixedDeltaTime = normalStep * Time.timeScale;
}
if (Input.GetKeyUp(KeyCode.Space))
{
Time.timeScale = 1f;
Time.fixedDeltaTime = normalStep;
}
}Dengan durasi langkah yang lebih singkat, fisika tetap berjalan 50 kali per detik sebenarnya dan setiap langkah mencakup seperempat waktu game, sehingga gerakan lambat tetap mulus. Durasi langkah dinyatakan dalam detik game, jadi kode di FixedUpdate() yang menggunakan Time.deltaTime tetap berfungsi tanpa perubahan.
Tantangan
SedangSebuah komet melintasi langit, dan Space meluncurkannya dari kiri (Launcher.cs, sudah siap). Dalam perjalanannya, komet itu terbang melewati SlowZone, sebuah kotak pemicu, dan bagian penerbangannya itu harus berlangsung dalam gerak lambat. Tulis SlowZone.cs:
- Saat sesuatu memasuki zona, waktu permainan berjalan pada
slowScale(0.4 di Inspector), dan langkah fisika diperkecil dengan faktor yang sama dari 0.02, sehingga komet tetap bergerak dengan lancar. - Saat komet keluar dari zona, waktu kembali berjalan dengan kecepatan normal, dan langkah fisika kembali ke 0.02.
Tekan Mainkan, tekan Space dan amati komet melintas, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class SlowZone : MonoBehaviour
{
public float slowScale = 0.4f;
// Gerakan melambat saat ada sesuatu di dalam zona
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank