Menu
CoddyTech

הילוך איטי

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

ערך Time.timeScale שבין 0 ל-1 יוצר הילוך איטי. בערך 0.25, הערך של Time.deltaTime הוא רבע מזמן הפריים במציאות, ולכן מכונית שמתקדמת באמצעות speed * Time.deltaTime עוברת בכל שנייה במציאות רבע מהמרחק שלה, גופים קשיחים עפים ונופלים ברבע מהמהירות שלהם, ו-WaitForSeconds(1f) נמשך 4 שניות במציאות. מעל 1 המשחק רץ מהר: 2 פירושו מהירות כפולה.

הפיזיקה דורשת שורה נוספת. כל צעד פיזיקה עדיין מקדם את המשחק ב-Time.fixedDeltaTime, כלומר ב-0.02 שניות של זמן משחק, ובערך 0.25 חולפות 0.08 שניות במציאות בין הצעדים האלה: FixedUpdate() פועלת רק 12.5 פעמים בשנייה במציאות, כך שגופים זזים פעם אחת בכל חמישה פריימים והתנועה מקרטעת. הקטן את משך הצעד באותו גורם, והחזר את שני הערכים לאחר מכן, מכיוון ש-Unity לעולם לא מאפסת את fixedDeltaTime בעצמה. הסקריפט הזה מאט את המשחק כל עוד מקש הרווח לחוץ:

float normalStep;

void Awake()
{
    normalStep = Time.fixedDeltaTime;   // 0.02 בפרויקט חדש
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Time.timeScale = 0.25f;
        Time.fixedDeltaTime = normalStep * Time.timeScale;
    }
    if (Input.GetKeyUp(KeyCode.Space))
    {
        Time.timeScale = 1f;
        Time.fixedDeltaTime = normalStep;
    }
}

עם הצעד הקטן יותר, הפיזיקה עדיין מתקדמת 50 פעמים בשנייה במציאות, וכל צעד מכסה רבע מזמן המשחק, כך שההילוך האיטי נשאר חלק. משך הצעד נמדד בשניות משחק, ולכן קוד ב-FixedUpdate() שמשתמש ב-Time.deltaTime ממשיך לפעול ללא שינוי.

challenge icon

אתגר

בינוני

שחקו בתעופת השביט דרך SlowZone בהילוך איטי.

  1. ב־SlowZone.cs, כתבו void OnTriggerEnter(Collider other): הגדירו את Time.timeScale ל־slowScale ואת Time.fixedDeltaTime ל־0.02f * slowScale.
  2. כתבו void OnTriggerExit(Collider other): החזירו אותם ל־1f ול־0.02f.

לחצו על "שחק" ועל מקש הרווח: השביט גולש דרך האזור במהירות 0.4. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class SlowZone : MonoBehaviour
{
    public float slowScale = 0.4f;

    // הילוך איטי כל עוד משהו נמצא בתוך האזור
}

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

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