Menu
CoddyTech

שבירה

שיעור 6 מתוך 16 בקורס משחק Unity: שובר לבנים של Coddy.

לבנים אין Rigidbody, אבל לכדור יש אחד, ו-Unity שולחת את OnCollisionEnter לשני האובייקטים בהתנגשות. לכן לבנה יכולה לזהות בעצמה את הפגיעה. בסקריפט של הלבנה, gameObject הוא הלבנה ו-collision.gameObject הוא הדבר שפגע בה.

הניקוד שייך ל-GameManager, והלבנים הן עותקים של prefab. prefab הוא נכס מחוץ לסצנה, ולכן השדות שלו לא יכולים להצביע על ה-GameManager שבסצנה דרך ה-Inspector. ה-GameManager מגדיר את GameManager.Instance הסטטי כך שיצביע על עצמו בתוך Awake(), ולכן כל סקריפט יכול לגשת אליו, גם עותקים של prefab.

אגרטל שמתנפץ כשהשחקן נתקל בו:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player")) Shatter();
}

public void Shatter()
{
    Destroy(gameObject);
}

Destroy(gameObject) מסיר את האגרטל. Destroy(collision.gameObject) היה מסיר את השחקן, ואילו Destroy(this) מסיר רק את הסקריפט ומשאיר את האגרטל עומד. שמירת פעולת השבירה בשיטה ציבורית משלה מאפשרת גם לקוד אחר, כמו פצצה או שדרוג, לשבור את האגרטל.

challenge icon

אתגר

בינוני
  1. ב-GameManager, הוסף int score ואת public void BrickBroken(Brick brick), שמוסיפה את points של הלבנה ל-score.
  2. ב-Brick, כתוב public void Hit(): היא מודיעה ל-GameManager.Instance שהלבנה הזאת נשברה, ואז משמידה את הלבנה.
  3. הוסף את OnCollisionEnter ל-Brick: כאשר אובייקט שמתויג בתור Ball פוגע בו, קרא ל-Hit().

לחץ על Play, שבור כמה לבנים, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    // השלב הבא: הכדור שובר לבנה וצובר את הנקודות שלה.
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה משחק Unity: שובר לבנים