Menu
CoddyTech

הפעלה

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 22 מתוך 71.

Invoke("Explode", 3f) קוראת למתודה של הסקריפט עצמו Explode פעם אחת, בעוד 3 שניות, והקוד שאחריה ממשיך מיד. Unity מאתרת את המתודה לפי שמה, שניתן כמחרוזת, והמתודה אינה מקבלת פרמטרים. הפצצה הזאת מתפוצצת 3 שניות לאחר שהמשחק מתחיל:

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

מכיוון שהשם הוא מחרוזת, המהדר אינו יכול לבדוק אותו. Invoke("Explod", 3f) מתקמפל, וכעבור 3 שניות Unity מציגה ביומן את Trying to Invoke method: Bomb.Explod couldn't be called. במקום שהפצצה תתפוצץ. nameof של C# פותר זאת: nameof(Explode) היא המחרוזת "Explode", שנוצרת על ידי המהדר מתוך שם שהוא בדק, כך ששגיאת כתיב בתוכה תגרום לשגיאת קומפילציה שתופיע לפני שהמשחק יפעל. כתבו Invoke(nameof(Explode), 3f);.

challenge icon

אתגר

קל

גרום לפלטפורמה להתפורר רגע אחרי שהשחקן נוחת עליה.

  1. ב־OnCollisionEnter, כאשר collision.gameObject.CompareTag("Player"), קרא ל־Invoke(nameof(Fall), delay);.
  2. הוסף את void Fall(): הגדר את body.isKinematic = false; והצג ביומן את Crumble!.

לחץ על „שחק” והלך אל הפלטפורמה: כעבור שנייה היא צונחת. לאחר מכן לחץ על „בדיקה”.

נסו בעצמכם

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // כשהשחקן נוחת: גרמו לפלטפורמה ליפול כעבור delay שניות
    }

    // Fall(): הפעילו את הפיזיקה של הפלטפורמה ורשמו ביומן Crumble!
}

כל השיעורים ביחידה פיזיקה ומשחקיות

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