קו ראייה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 39 מתוך 71.
קרבה לשומר אינה זהה לכך שהוא רואה אותך: קיר ביניכם חוסם את שדה הראייה. כדי לבדוק קו ראייה, יש לירות קרן מהעין לכיוון המטרה ולבדוק שהדבר הראשון שהיא פוגעת בו הוא המטרה עצמה. הכיוון הוא המיקום של המטרה פחות המיקום שלך, וקרן באורך הזה מגיעה למטרה:
public Transform target;
bool CanSee()
{
Vector3 toTarget = target.position - transform.position;
if (Physics.Raycast(transform.position, toTarget, out RaycastHit hit, toTarget.magnitude))
{
return hit.transform == target;
}
return false;
}מצלמת אבטחה על עמוד מתעדת I see you כאשר CanSee() מחזירה true. כשהמטרה בשטח פתוח, הפגיעה הראשונה של הקרן היא במטרה. כשהמטרה מאחורי ארגז, הקרן פוגעת תחילה בארגז, hit.transform הוא של הארגז, והתשובה היא false. גם Physics.Raycast לבדה מחזירה true עבור הארגז, ולכן משווים את הפגיעה למטרה.
למטרה דרוש קוליידר כדי שהקרן תוכל למצוא אותה. הקרן אינה זקוקה לכיוון מנורמל, מכיוון שהאורך שלה נקבע לפי maxDistance. Physics.Linecast(from, to) שואלת את השאלה בכיוון ההפוך: האם יש קוליידר כלשהו בין שתי נקודות. !Physics.Linecast(eye, target.position, wallMask) פירושו שאין קיר בדרך.
אתגר
בינוניצבעו את הזקיף באדום כשהוא יכול לראות את השחקן, ובירוק אחרת.
- כתבו
bool CanSee(): עםVector3 toPlayer = player.position - transform.position;, החזירוfalseכאשרtoPlayer.magnitude > range. - לאחר מכן, בצעו הטלת קרן באמצעות
Physics.Raycast(transform.position, toPlayer, out RaycastHit hit, range)והחזירוhit.transform == player; אם הקרן לא פוגעת, החזירוfalse. - ב-
Update(), הגדירו את צבע המגדל ל-Color.redאו ל-Color.greenבהתאם לתוצאה שלCanSee().
לחצו על "שחק" ולכו מאחורי הקיר. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class Sentry : MonoBehaviour
{
public Transform player;
public float range = 8f;
void Update()
{
// אדום כשהזקיף יכול לראות את השחקן, ירוק אחרת.
}
}
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין