Menu
CoddyTech

OverlapSphere ו-SphereCast

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

קרן בודקת קו. 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

אתגר

בינוני

תן לתותח אלומה רחבה באמצעות Physics.SphereCast.

  1. בלחיצה על מקש הרווח, סרוק באמצעות כדור: Physics.SphereCast(transform.position, radius, transform.forward, out RaycastHit hit, range).
  2. אם יש פגיעה, רשום ביומן "Hit " + hit.collider.name (הירייה הראשונה רושמת ביומן Hit Pole) והשמד את האובייקט הזה.
  3. אם אין פגיעה, רשום ביומן Miss.

לחץ על „שחק” וירה שלוש פעמים: ה-Pole נעלם, אחריו ה-Crate, ואז Miss. לאחר מכן לחץ על „בדיקה”.

נסו בעצמכם

using UnityEngine;

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

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

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

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