Menu
CoddyTech

OverlapSphere ו-SphereCast

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

קרן שואלת על קו. Physics.OverlapSphere(center, radius) שואלת על אזור בצורת כדור: היא מחזירה מערך של כל הקוליידרים שנוגעים בכדור שמרכזו ב־center, ללא כיוון וללא מרחק. הפצצה הזאת משמידה כל ארגז שנמצא בטווח של 3 יחידות כשהיא מתפוצצת:

void Explode()
{
    Collider[] hits = Physics.OverlapSphere(transform.position, 3f);
    foreach (Collider c in hits)
    {
        if (c.CompareTag("Crate"))
        {
            Destroy(c.gameObject);
        }
    }
    Destroy(gameObject);
}

המערך מכיל את כל מה שנמצא בטווח: את הרצפה, את הקירות ואת הקוליידר של הפצצה עצמה, כי בדיקות חפיפה אינן מדלגות על הקוליידר שבתוכו הן מתחילות. לכן הלולאה בודקת את התג לפני שהיא פועלת. ה־attachedRigidbody של כל קוליידר הוא ה־Rigidbody שאליו הוא שייך, או null עבור עצמים סטטיים כמו הרצפה.

Physics.SphereCast(origin, radius, direction, out hit, maxDistance) היא קרן עבה: היא מעבירה כדור לאורך הקו ומדווחת על הקוליידר הראשון שהכדור היה נתקל בו. סלע ברדיוס 1 שמתגלגל לעבר רווח ברוחב 1.5 בין שני עמודים שואל אותה אם הוא יכול לעבור: קרן דקה לאורך מרכז הרווח לא פוגעת בכלום, ואילו הטלת כדור פוגעת בעמוד. כמו קרן, הטלת כדור מדלגת על קוליידרים שהיא כבר נוגעת בהם בנקודת ההתחלה שלה.

challenge icon

אתגר

בינוני

חמשו את התותח בקרן רחבה. הסקריפט Beam נמצא על התותח, וה-Inspector נותן לו radius של 0.5 ו-range של 12. החצים שמאלה וימינה מסובבים את התותח.

  • כשלוחצים על Space, סרקו קדימה מהתותח כדור ברדיוס radius ובאורך range יחידות.
  • אם הוא פוגע במשהו, רשמו Hit Pole יחד עם השם של מה שהוא פגע בו, והשמידו את אותו אובייקט.
  • אם הוא לא פוגע בכלום, רשמו Miss.

המוט הדק עומד מעט לצד קו האמצע של התותח. לחצו על Play וירו, ואז לחצו על Check.

נסו בעצמכם

using UnityEngine;

public class Beam : MonoBehaviour
{
    public float radius = 0.5f;
    public float range = 12f;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // העבר כדור ברדיוס radius קדימה: השמד את העצם הראשון שהוא פוגע בו.
        }
    }
}
quiz iconבחנו את עצמכם

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

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