Menu
CoddyTech

הרץ

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

בפרק הזה נבנה משחק קטן, Dodge the Blocks. תנווטו רץ לאורך נתיב בזמן שבלוקים נופלים מהשמיים, ומגע אחד מסיים את הריצה. כל המשחק נמצא בסקריפט אחד, Runner, שמקבל תכונה בכל שיעור: ניווט, בלוקים נופלים, ניקוי שלהם, פגיעה וניקוד.

התכונה הראשונה היא ניווט שנשאר בנתיב, בעזרת Mathf.Clamp(value, min, max) מתוך Catch the Star: היא מחזירה את min כשהערך נמוך מהטווח, את max כשהוא גבוה ממנו, ואת הערך עצמו בכל מקרה אחר. חשוב היכן מציבים את פעולת ההגבלה. מד הטעינה הזה מתמלא כל עוד מקש הרווח לחוץ, מתרוקן כשהוא אינו לחוץ, ונשאר תמיד בטווח שבין 0 ל-10:

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

פעולת ההגבלה מתבצעת אחרי השינוי. אם היינו מגבילים קודם, הערך היה עלול לסיים את הפריים כשהוא חורג מהגבול בצעד אחד, והמד היה מצויר לפי הערך הזה. Mathf.Clamp גם מחזירה מספר חדש במקום לשנות את המשתנה שמעבירים לה, לכן יש להציב את התוצאה בחזרה במשתנה.

challenge icon

אתגר

בינוני

התחל את Dodge the Blocks עם הרץ. בחלון Inspector מוגדרים לסקריפט Runner הערכים speed (6) ו-laneEdge (4).

  • החצים שמאלה וימינה מזיזים את הרץ לאורך ציר x במהירות של speed יחידות לשנייה.
  • ערך x שלו לעולם אינו יורד מתחת ל--laneEdge או עולה מעל laneEdge, כך שהוא נשאר במסלול.

לחץ על Play, לחץ על המשחק ורוץ לשני קצות המסלול, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // הזז לאורך ציר x בעזרת החצים, ואז השאר את x בתוך המסלול
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות התכנות ב-Unity