הפעלה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 22 מתוך 71.
Invoke("Explode", 3f) קוראת למתודה של הסקריפט עצמו Explode פעם אחת, בעוד 3 שניות, והקוד שאחריה ממשיך מיד. Unity מאתרת את המתודה לפי שמה, שניתן כמחרוזת, והמתודה אינה מקבלת פרמטרים. הפצצה הזאת מתפוצצת 3 שניות לאחר שהמשחק מתחיל:
void Start()
{
Invoke("Explode", 3f);
}
void Explode()
{
Debug.Log("Boom");
Destroy(gameObject);
}מכיוון שהשם הוא מחרוזת, המהדר אינו יכול לבדוק אותו. Invoke("Explod", 3f) מתקמפל, וכעבור 3 שניות Unity מציגה ביומן את Trying to Invoke method: Bomb.Explod couldn't be called. במקום שהפצצה תתפוצץ. nameof של C# פותר זאת: nameof(Explode) היא המחרוזת "Explode", שנוצרת על ידי המהדר מתוך שם שהוא בדק, כך ששגיאת כתיב בתוכה תגרום לשגיאת קומפילציה שתופיע לפני שהמשחק יפעל. כתבו Invoke(nameof(Explode), 3f);.
אתגר
קלגרום לפלטפורמה להתפורר רגע אחרי שהשחקן נוחת עליה.
- ב־
OnCollisionEnter, כאשרcollision.gameObject.CompareTag("Player"), קרא ל־Invoke(nameof(Fall), delay);. - הוסף את
void Fall(): הגדר אתbody.isKinematic = false;והצג ביומן אתCrumble!.
לחץ על „שחק” והלך אל הפלטפורמה: כעבור שנייה היא צונחת. לאחר מכן לחץ על „בדיקה”.
נסו בעצמכם
using UnityEngine;
public class Crumble : MonoBehaviour
{
public float delay = 1f;
Rigidbody body;
void Start()
{
body = GetComponent<Rigidbody>();
}
void OnCollisionEnter(Collision collision)
{
// כשהשחקן נוחת: גרמו לפלטפורמה ליפול כעבור delay שניות
}
// Fall(): הפעילו את הפיזיקה של הפלטפורמה ורשמו ביומן Crumble!
}
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין