Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Meter parkir menghitung mundur waktu yang sudah dibayar. Tulis Update()-nya di ParkingMeter.cs (scene menghubungkan meterText):

  • timeLeft dimulai dari 75 detik (diatur di Inspector) dan berkurang setiap frame, tidak pernah kurang dari 0.
  • meterText menampilkan waktu yang tersisa dalam menit dan detik, dibulatkan ke atas hingga detik penuh: dari 75 hingga 74.01, tampilannya 1:15, dan saat tersisa 0.4 detik, tampilannya 0:01.
  • Tombol Space memasukkan koin: menambah 30 detik, tetapi tidak pernah melebihi maxTime (120, yang ditampilkan sebagai 2: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
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan