Menu
CoddyTech

טיימר ספירה לאחור

חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 4 מתוך 60.

ספירה לאחור שומרת את הזמן שנותר בתוך float ומחסרת ממנו את Time.deltaTime בכל פריים. הפריים האחרון כמעט אף פעם לא מגיע בדיוק ל־0, ולכן Mathf.Max עוצרת אותו שם, והסיום חייב להתרחש פעם אחת בלבד. הפתיל הזה נותן לשחקן 5 שניות לנטרל פצצה:

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 מעגל כלפי מעלה, וכך ספירה לאחור אמורה להציג: 5 במשך כל השנייה הראשונה (4.99 מתעגל כלפי מעלה ל־5), 1 במהלך השנייה האחרונה, ו־0 רק כשנגמר הזמן. (int)fuse היה מוריד את 4.99 ל־4 ומציג 0 במשך כל השנייה האחרונה בזמן שהפצצה עדיין מתקתקת; Mathf.RoundToInt היה מציג 0 במשך חצי השנייה האחרונה. ספירה לאחור ארוכה יותר, שמוצגת בדקות ובשניות, פועלת לפי אותו כלל: קודם מעגלים את הזמן כלפי מעלה לשניות שלמות, ואז מעצבים אותן.

הפקודה המוקדמת return משאירה את BOOM על המסך: בלעדיה, הפריים הבא היה כותב Fuse: 0 מעליו. גם לטקסט יש צבע, ו־fuseText.color = Color.red הופך אותו לאדום.

challenge icon

אתגר

קל

גרמו למדחן לספור לאחור את הזמן ששולם.

  1. ב־Update(), החסירו את Time.deltaTime מ־timeLeft, בלי לרדת מתחת ל־0, והציגו את Mathf.CeilToInt(timeLeft) בדקות ובשניות: 1:15.
  2. מקש הרווח מוסיף 30 שניות, עד maxTime (2:00).
  3. כשהזמן מגיע ל־0, הציגו EXPIRED בצבע Color.red. התחילו את Update() עם if (timeLeft == 0f) return; כדי שהמצב יישאר כך.

לחצו על "שחק" והכניסו לו מטבעות: הוא נעצר ב־2:00. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;
using TMPro;

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

    void Update()
    {
        // הפחת את timeLeft והצג אותו בדקות ובשניות; Space מוסיף 30 שניות
    }
}

כל השיעורים ביחידה בניית משחקים אמיתיים

תרגלו בעצמכם: Unity אונליין