Menu
CoddyTech

במה פגעתי?

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

ה־Collision ש־Unity מעבירה אל OnCollisionEnter מתאר את הצד השני של המגע. collision.gameObject הוא האובייקט שנתקלת בו, לכן collision.gameObject.name הוא השם שלו, ו־collision.gameObject.CompareTag("Hazard") בודק את התג שלו. (collision.collider הוא הקוליידר המדויק שבו נגעת, כאשר לאובייקט יש כמה קוליידרים.)

מכונית המתנגשים הזו מתעדת כל דבר שהיא מתנגשת בו ומתריעה על סכנות:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Bumped into " + collision.gameObject.name);
    if (collision.gameObject.CompareTag("Hazard"))
    {
        Debug.Log("Ouch!");
    }
}

השורה הראשונה שהיא מתעדת היא Bumped into Floor, ברגע שהמשחק מתחיל: גם הרצפה שעליה היא עומדת היא התנגשות. לכן סקריפט שמגיב לפגיעות תמיד בודק קודם במה הוא פגע. שים לב איזה אובייקט את מציינת: CompareTag("Hazard") בפני עצמו בודק את התג של האובייקט שלך, ו־Destroy(gameObject) משמיד את האובייקט שלך, ואילו Destroy(collision.gameObject) מסיר את האובייקט שפגעת בו.

challenge icon

אתגר

קל

נהג/י במפלסת השלג באמצעות החצים (כבר נכתבו) ותן/י לה עבודה. לשני הגושים הלבנים מוצמד התג Snow.

  • כשהמפלסת נתקלת באובייקט עם התג Snow, השמד/י את הגוש הזה, הוסף/י 1 למונה ורשום/י זאת ביומן: Cleared 1, Cleared 2.
  • כל דבר אחר שהמפלסת נוגעת בו, כולל הקרקע והקיר, נשאר במקומו.

לחץ/י על Play ופנה/י את הדרך, ואז לחץ/י על Check.

נסו בעצמכם

using UnityEngine;

public class Plow : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;
    private int cleared;

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

    void FixedUpdate()
    {
        float h = Input.GetAxisRaw("Horizontal");
        rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
    }

    // שלג שהמפלסת נתקלת בו: להשמיד אותו, לספור אותו ולרשום את הספירה ביומן
}
quiz iconבחנו את עצמכם

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

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