Physics.Raycast
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 33 מתוך 63.
קרן בדיקה (raycast) יורה קו בלתי נראה מנקודה בכיוון מסוים ומדווחת אם פגעה בקוליידר. Physics.Raycast(origin, direction, maxDistance) מחזירה true כאשר קוליידר נמצא על הקו במרחק של עד maxDistance יחידות, ו-false אחרת. המכונית הזאת בולמת כשיש משהו במרחק קטן מ-2 יחידות לפני החרטום שלה:
public float brakeDistance = 2f;
void Update()
{
if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
{
Debug.Log("Brake!");
}
}transform.forward מסתובב יחד עם המכונית, כך שהקרן תמיד פונה קדימה מהחרטום שלה; Vector3.forward היה מצביע תמיד לאורך ציר ה-z של העולם. הקרן מתחילה במרכז המכונית, בתוך הקוליידר שלה, וקרן לעולם אינה מדווחת על קוליידר שהיא מתחילה בתוכו, לכן המכונית אינה רואה את עצמה. השמטת maxDistance גורמת לקרן להמשיך לנצח: המכונית הייתה בולמת בגלל קיר שנמצא בצד השני של המפה.
קרניים מזהות קוליידרים, לא את מה שמצויר: אובייקט שיש לו Renderer ואין לו קוליידר אינו נראה להן, וקוליידר מסוג trigger נחשב לפגיעה. בזמן הבדיקה, Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) מציירת את הקרן בחלון Scene של Unity.
אתגר
בינוניהפוך את דלת החנות לאוטומטית. הסקריפט DoorSensor נמצא על החיישן שמעל לפתח, בגובה 3.5 יחידות מעל הקרקע. בחלון Inspector משייכים לו את door ואת reach בערך 3.
- בכל פריים, שגר קרן מהחיישן ישר כלפי מטה, באורך של
reachיחידות. - כל עוד הקרן פוגעת במשהו, הדלת פתוחה: הסתר אותה באמצעות
SetActive(false). כשהקרן לא פוגעת בכלום, הצג שוב את הדלת.
הקרקע מחוץ לטווח הקרן, לכן הדלת נשארת סגורה עד שמישהו עומד מתחת לחיישן. לחץ על Play והולך את המבקר מתחתיו בעזרת החצים, ואז לחץ על Check.
נסו בעצמכם
using UnityEngine;
public class DoorSensor : MonoBehaviour
{
public GameObject door;
public float reach = 3f;
void Update()
{
// פתח את הדלת כל עוד הקרן היורדת מה-Sensor פוגעת במשהו.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף