Menu
CoddyTech

Geri Sayım Zamanlayıcısı

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 4 / 56.

Geri sayım, kalan süreyi bir float içinde tutar ve her karede bundan Time.deltaTime çıkarır. Son kare nadiren tam olarak 0'a denk gelir; bu yüzden Mathf.Max değeri orada durdurur ve bitiş yalnızca bir kez gerçekleşmelidir. Bu fitil, oyuncuya bir bombayı etkisiz hâle getirmesi için 5 saniye verir:

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 yukarı yuvarlar; geri sayımda istenen de budur: ilk saniyenin tamamında 5 gösterir (4.99, 5'e yuvarlanır), son saniye boyunca 1 gösterir ve yalnızca süre dolduğunda 0 gösterir. (int)fuse, 4.99'u 4'e yuvarlayıp bomba hâlâ işlerken son saniyenin tamamında 0 gösterirdi; Mathf.RoundToInt ise son yarım saniyede 0 gösterirdi. Dakika ve saniye olarak gösterilen daha uzun bir geri sayımda da aynı kural geçerlidir: önce süreyi tam saniyelere yukarı yuvarla, sonra bunları biçimlendir.

Erken return, ekranda BOOM yazısının kalmasını sağlar: bu olmazsa sonraki karede üzerine Fuse: 0 yazılır. Metnin ayrıca bir rengi vardır ve fuseText.color = Color.red onu kırmızıya çevirir.

challenge icon

Görev

Kolay

Parkmetre, ödenen süreyi geri sayar. ParkingMeter.cs içindeki Update() metodunu yaz (sahne meterText bağlantısını yapar):

  • timeLeft 75 saniyeden başlar (Inspector'da ayarlanır) ve her karede azalır; asla 0'ın altına düşmez.
  • meterText, kalan süreyi dakika ve saniye olarak, saniyeye yukarı yuvarlayarak gösterir: 75'ten 74.01'e kadar 1:15 gösterir; 0.4 saniye kaldığında ise 0:01 gösterir.
  • Space tuşu bir jeton ekler: 30 saniye daha, ancak maxTime değerini (120, 2:00 olarak gösterilir) asla aşmaz.
  • Süre 0 olduğunda metinde kırmızı renkte (Color.red) EXPIRED yazar. Bundan sonra sayaç 0'da kalır ve artık jeton eklenemez.

Play'e bas, birkaç jeton ekle, ardından Check'e bas.

Kendin dene

using UnityEngine;
using TMPro;

public class ParkingMeter : MonoBehaviour
{
    public TMP_Text meterText;
    public float timeLeft = 60f;
    public float maxTime = 120f;

    void Update()
    {
        // timeLeft değerini geri say ve dakika ile saniye olarak göster; Space 30 saniye ekler
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler