הפעלה חוזרת, ביטול הפעלה
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 22 מתוך 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) קוראת ל־Blink בפעם הראשונה אחרי 0.5 שניות, ואז שוב כל 0.5 שניות, עד שהיא מבוטלת. המספר הראשון הוא ההשהיה לפני הקריאה הראשונה, והשני הוא הזמן בין הקריאות. CancelInvoke(nameof(Blink)) עוצרת אותה, ו־CancelInvoke() ללא שם עוצרת כל Invoke שהסקריפט קבע.
נורת האזהרה הזו מהבהבת עד שלוחצים על Space, ואז נשארת דולקת:
Light lamp;
void Start()
{
lamp = GetComponent<Light>();
InvokeRepeating(nameof(Blink), 0.5f, 0.5f);
}
void Blink()
{
lamp.enabled = !lamp.enabled;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
CancelInvoke(nameof(Blink));
lamp.enabled = true;
}
}הטיימר מפרק הזימון היה עושה את אותה העבודה בעזרת שדה float ובדיקה בתוך Update(). עם InvokeRepeating, Unity מנהלת את הזמן ומבצעת את הקריאות. הקריאה ל־InvokeRepeating נמצאת בתוך Start(): אם היא הייתה בתוך Update(), היא הייתה קובעת קריאה חוזרת נוספת בכל פריים.
אתגר
קלהגייזר Geyser משליך לאוויר את הכדור שנמצא מעליו. בסקריפט שלו יש את ball, את power ומונה eruptions. תכנתו אותו להתפרץ לפי לוח זמנים:
- ההתפרצות הראשונה מתרחשת שנייה אחת לאחר הלחיצה על Play, ולאחר מכן התפרצות אחת בכל 2 שניות.
- התפרצות היא מתודה בשם
Erupt: היא מוסיפה 1 ל-eruptions, דוחפת את הכדור כלפי מעלה באמצעותball.AddForce(Vector3.up * power, ForceMode.Impulse)ומתעדתEruption 1,Eruption 2וכן הלאה. - לאחר ההתפרצות השלישית הגייזר מפסיק לתמיד.
לחצו על Play וצפו בכדור, ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// התפרץ 1 שנייה אחרי Play, ואז כל 2 שניות
}
// Erupt(): ספור, דחוף את ball כלפי מעלה, כתוב ליומן; עצור אחרי הפעם השלישית
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור4קורוטינות
הפעלההפעלה חוזרת, ביטול הפעלההקורוטינה הראשונה שלךלולאות בקורוטינותעצירת קורוטינותסיכום: ספירה לאחור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוף