Timer Hitung Mundur
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 4 dari 56.
Hitung mundur menyimpan sisa waktu dalam float dan menguranginya dengan Time.deltaTime setiap frame. Frame terakhir jarang sekali tepat mencapai 0, jadi Mathf.Max menghentikannya di sana, dan kejadian akhir harus berlangsung satu kali. Sumbu ini memberi pemain waktu 5 detik untuk menjinakkan bom:
public TMP_Text fuseText;
public float fuse = 5f;
private bool exploded;
void Update()
{
if (exploded)
{
return;
}
fuse = Mathf.Max(fuse - Time.deltaTime, 0f);
fuseText.text = "Fuse: " + Mathf.CeilToInt(fuse);
if (fuse == 0f)
{
exploded = true;
fuseText.text = "BOOM";
fuseText.color = Color.red;
}
}Mathf.CeilToInt membulatkan ke atas, sesuai dengan tampilan hitung mundur: 5 selama satu detik penuh pertama (4.99 dibulatkan ke atas menjadi 5), 1 selama detik terakhir, dan 0 hanya saat waktunya habis. (int)fuse akan membulatkan 4.99 ke bawah menjadi 4 dan menampilkan 0 selama satu detik penuh terakhir saat bom masih berdetak; Mathf.RoundToInt akan menampilkan 0 selama setengah detik terakhir. Hitung mundur yang lebih panjang dan ditampilkan dalam menit dan detik mengikuti aturan yang sama: bulatkan waktu ke atas menjadi detik utuh terlebih dahulu, lalu format hasilnya.
return di awal membuat BOOM tetap di layar: tanpa itu, frame berikutnya akan menimpanya dengan Fuse: 0. Teks juga memiliki warna, dan fuseText.color = Color.red mengubah warnanya menjadi merah.
Tantangan
MudahMeter parkir menghitung mundur waktu yang sudah dibayar. Tulis Update()-nya di ParkingMeter.cs (scene menghubungkan meterText):
timeLeftdimulai dari 75 detik (diatur di Inspector) dan berkurang setiap frame, tidak pernah kurang dari 0.meterTextmenampilkan waktu yang tersisa dalam menit dan detik, dibulatkan ke atas hingga detik penuh: dari 75 hingga 74.01, tampilannya1:15, dan saat tersisa 0.4 detik, tampilannya0:01.- Tombol Space memasukkan koin: menambah 30 detik, tetapi tidak pernah melebihi
maxTime(120, yang ditampilkan sebagai2:00). - Saat mencapai 0, teksnya menjadi
EXPIRED, berwarna merah (Color.red). Setelah itu, meter tetap di 0 dan koin tidak lagi bisa dimasukkan.
Tekan Play, masukkan beberapa koin, lalu tekan Check.
Coba sendiri
using UnityEngine;
using TMPro;
public class ParkingMeter : MonoBehaviour
{
public TMP_Text meterText;
public float timeLeft = 60f;
public float maxTime = 120f;
void Update()
{
// Kurangi timeLeft dan tampilkan dalam menit dan detik; Space menambahkan 30 detik
}
}
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