RaycastHit
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 34 מתוך 63.
Physics.Raycast יכול גם לספר לך במה הוא פגע. הוסף out RaycastHit hit אחרי הכיוון: כשהמתודה מחזירה true, היא מילאה את hit בפרטים. out היא הדרך שבה מתודת C# מחזירה ערך נוסף באמצעות משתנה שאתה נותן לה. מד הטווח הזה רושם במה הוא מצביע, ומה המרחק אליו, כשלוחצים על Space:
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
{
Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
}
}
}כשמצביעים על קיר שחזיתו נמצאת 12 יחידות קדימה, מתקבל הרישום Wall is 12 units away. שאר השדות: hit.point היא הנקודה בעולם שבה הקרן נגעה במשטח, hit.normal הוא הכיוון שאליו המשטח פונה בנקודה הזאת ((0, 1, 0) על קרקע ישרה), ו־hit.transform הוא ה־Transform של האובייקט שנפגע. דרך hit.collider.gameObject אפשר להגיע לכל דבר אחר שקשור אליו, כמו התג שלו.
קרא את hit רק בתוך ה־if. כשהקרן מחטיאה, Raycast מחזירה false ו־hit לא מכיל שום דבר שימושי: ה־collider שלו הוא null.
אתגר
בינוניהוסיפו לאקדח כוונת לייזר. הסקריפט LaserSight נמצא על האקדח, והחלון Inspector נותן לו את הנקודה האדומה dot (מסוג Transform) ואת range באורך 15. החצים שמאלה וימינה מסובבים את האקדח.
- בכל פריים, שגרו קרן מהאקדח בכיוון קדימה שלו, באורך
rangeיחידות. - כשהקרן פוגעת, הציגו את הנקודה והציבו אותה בדיוק במקום שבו הקרן נגעה במשטח.
- כשהקרן לא פוגעת בכלום, הסתירו את הנקודה באמצעות
SetActive(false).
הנקודה נמצאת בשכבה Ignore Raycast, כך שהקרן עוברת דרך הנקודה עצמה. לחצו על Play וסרקו עם הלייזר את הקיר, הארגז והחבית, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class LaserSight : MonoBehaviour
{
public Transform dot;
public float range = 15f;
void Update()
{
// מקמו את הנקודה במקום שבו הלייזר פוגע במשטח; הסתירו אותה כשהלייזר לא פוגע בדבר.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף