טיימר ספירה לאחור
חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 4 מתוך 56.
ספירה לאחור שומרת את הזמן שנותר ב-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 צובע אותו באדום.
אתגר
קלמד החניה סופר לאחור את הזמן ששולם. כתבו את Update() שלו בקובץ ParkingMeter.cs (הסצנה מקשרת אל meterText):
timeLeftמתחיל ב־75 שניות (מוגדר ב־Inspector) ויורד בכל פריים, אך לעולם לא מתחת ל־0.meterTextמציג את הזמן שנותר בדקות ובשניות, בעיגול כלפי מעלה לשניות שלמות: מ־75 ועד 74.01 הוא מציג1:15, וכשנותרו 0.4 שניות הוא מציג0:01.- לחיצה על Space מוסיפה מטבע: עוד 30 שניות, אך לעולם לא יותר מ־
maxTime(120, שמוצג כ־2:00). - ב־0 הטקסט מציג
EXPIRED, באדום (Color.red). מכאן ואילך המד נשאר על 0, ואי אפשר להוסיף עוד מטבעות.
לחצו על Play, הוסיפו כמה מטבעות ואז לחצו על Check.
נסו בעצמכם
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 שניות
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה בונים משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעות