כניסה ויציאה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 20 מתוך 71.
טריגר שולח שתי הודעות נוספות. OnTriggerExit(Collider other) פועלת פעם אחת, בשלב הפיזיקה שבו החפיפה מסתיימת, בכל דרך שבה היא מסתיימת. OnTriggerStay(Collider other) פועלת בכל שלב פיזיקה כל עוד החפיפה נמשכת, 50 פעמים בשנייה כברירת מחדל, כמו FixedUpdate(). שלושתן מקבלות את אותו Collider.
זרם האוויר העולה הזה מרים כל דבר שצף בתוכו ומדווח כשהוא יוצא ממנו:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}כוח שייך לשלב פיזיקה, ולכן OnTriggerStay מתאימה לכך: הדחיפה מופעלת פעם אחת בכל שלב כל עוד הכדור נמצא בפנים, ונפסקת ברגע שהוא יוצא. לזרם האוויר העולה אין Rigidbody, ולכן לכל מי שנכנס אליו חייב להיות כזה, ו-attachedRigidbody לעולם אינו null כאן. כדי להחיל כמות לשנייה בתוך OnTriggerStay, יש להכפיל ב-Time.deltaTime, שבמהלך שלב פיזיקה הוא אורך השלב, 0.02. בכל כניסה מופעלים OnTriggerEnter אחד, ובהמשך OnTriggerExit אחד עבור אותו Collider.
אתגר
קלהדליקו את המנורה כשיש משהו באזור הטעינה.
- הוסיפו שדה
int inBay;. בתוךStart(), הגדירוlamp.enabled = false;. - בתוך
OnTriggerEnter, הוסיפו 1 ל־inBayוהגדירוlamp.enabled = true;. - בתוך
OnTriggerExit, הפחיתו 1 מ־inBay, וכבו את המנורה רק כשהערך הוא 0.
לחצו על "שחק" ודחפו את הארגזים פנימה והחוצה: המנורה תישאר דולקת עד שאזור הטעינה יתרוקן. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// המנורה דולקת כל עוד יש משהו באזור הטעינה, וכבויה כשהוא ריק
}
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין