Menu
CoddyTech

Timer Hitung Mundur

Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 4 dari 60.

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, seperti yang ditampilkan 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 memotong 4.99 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 serta detik mengikuti aturan yang sama: bulatkan waktu ke atas menjadi detik utuh terlebih dahulu, lalu format hasilnya.

return di awal membuat BOOM tetap terlihat di layar: tanpanya, frame berikutnya akan menimpa tulisan itu dengan Fuse: 0. Teks juga memiliki warna, dan fuseText.color = Color.red mengubah warnanya menjadi merah.

challenge icon

Tantangan

Mudah

Buat meter parkir menghitung mundur waktu yang sudah dibayar.

  1. Di Update(), kurangi timeLeft dengan Time.deltaTime, jangan sampai kurang dari 0, lalu tampilkan Mathf.CeilToInt(timeLeft) sebagai menit dan detik: 1:15.
  2. Tombol Spasi menambahkan 30 detik, hingga maxTime (2:00).
  3. Pada 0, tampilkan EXPIRED dengan Color.red. Awali Update() dengan if (timeLeft == 0f) return; agar tampilannya tetap begitu.

Tekan tombol “Main” dan masukkan koin: meter berhenti di 2:00. Lalu tekan tombol “Periksa”.

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 nilai timeLeft dan tampilkan dalam menit dan detik; Space menambah 30 detik
    }
}

Semua pelajaran di Membangun Game Sungguhan

Latihan sendiri: Playground Unity