Menu
CoddyTech

קוליידרים מסוג Trigger

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

מתנגש שמסומנת בו התיבה Is Trigger אינו מוצק עוד: גופים קשיחים עוברים דרכו, ובמקום זאת Unity מדווחת על החפיפה באמצעות קריאה ל־OnTriggerEnter בסקריפטים של שני האובייקטים. קווי סיום, פריטים לאיסוף ואזורי סכנה הם טריגרים. בקוד, התיבה היא המאפיין isTrigger של המתנגש.

אזור האזעקה בכספת הזו משנה את המתנגש שלו לטריגר כשהמשחק מתחיל — כמו סימון התיבה — ומשמיע את האזעקה כששומר נכנס אליו:

void Start()
{
    GetComponent<Collider>().isTrigger = true;
}

void OnTriggerEnter(Collider other)
{
    Debug.Log("Alarm!");
}

טריגרים פועלים לפי אותו כלל כמו התנגשויות: Unity בודקת זוג רק אם לאחד משני האובייקטים לפחות יש Rigidbody. שני אובייקטים שאין להם Rigidbody אף פעם לא מדווחים זה על זה, בין שהם טריגרים ובין שלא. השומרים מפטרלים באמצעות סקריפט, לכן לכל שומר יש Rigidbody קינמטי (Add Component, Rigidbody, Is Kinematic מסומן): כוח הכבידה ודחיפות אינם משפיעים עליו, והוא עדיין נחשב ל־Rigidbody. ללא רכיבי ה־Rigidbody של השומרים, שומר עובר דרך האזור וה־Console נשאר ריק. ללא isTrigger, האזור הוא תיבה מוצקה, וגוף קינמטי אף פעם לא נוגע במתנגש שאין לו Rigidbody, ולכן שוב לא נרשם דבר. מספיק Rigidbody אחד בזוג, בכל אחד משני האובייקטים. בשיעור הבא נבחן את other, המתנגש שנכנס.

challenge icon

אתגר

קל

הDrone אמור לעוף במסלול דרך שלוש טבעות, וכל Ring אמורה לרשום את שמה ואת passed כשהרחפן עובר דרכה, לדוגמה Ring1 passed. שום דבר עדיין לא עובד: הסקריפט של הרחפן מטיס אותו באמצעות MovePosition, אבל אין בסצנה שום Rigidbody, והטבעות מוצקות.

  • ב־Drone.cs, הוסף לרחפן Rigidbody עם תחילת המשחק ושמור אותו ב־body. הרחפן חייב לעוף בגובה אחיד לאורך המסלול שלו. גוף אחד על הרחפן מספיק לכל שלוש הטבעות.
  • ב־Ring.cs, הגדר את הקוליידר של כל טבעת כ־trigger עם תחילת המשחק.

לחץ על Play וצפה ב־Console, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Ring : MonoBehaviour
{
    void Start()
    {
        // הפוך את ה-collider של הטבעת הזו ל-trigger
    }

    void OnTriggerEnter(Collider other)
    {
        Debug.Log(name + " passed");
    }
}
quiz iconבחנו את עצמכם

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

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