נפילות
שיעור 14 מתוך 19 בקורס Unity: משחק שובר לבנים של Coddy.
לבנה שבורה מפילה לפעמים שדרוג שנופל לעבר המשטח. האם הוא ייפול נקבע בהגרלה: Random.value הוא מספר ממשי אקראי בין 0 ל-1, לכן Random.value < 0.15f מתקיים בערך 15 פעמים מתוך 100. שמירת הסיכוי בשדה מאפשרת לך לכוונן אותו, וגם מאפשרת לבדיקה להגדיר אותו ל-1 כדי שתתרחש נפילה בכל פעם, או ל-0 כדי שלא תהיה נפילה כלל.
איזה שדרוג ייפול נקבע בהגרלה שנייה: בחירת אינדקס אקראי מתוך מערך של קדם-אובייקטים. בשימוש ב-Random.Range עם מספרים שלמים, הערך המרבי אינו נכלל, לכן Random.Range(0, array.Length) יכול לבחור כל איבר. השלל של אויב:
public GameObject[] loot;
public float lootChance = 0.25f;
void DropLoot()
{
if (Random.value >= lootChance) return;
int pick = Random.Range(0, loot.Length);
Instantiate(loot[pick], transform.position, Quaternion.identity);
}שדרוג נופל במהירות קבועה כשהוא מזיז את עצמו בכל פריים, והורס את עצמו ברגע שהוא נמצא מתחת לאזור המשחק, כך ששדרוגים שהוחמצו לא יצטברו. לקדם-האובייקט שלו יש Rigidbody קינמטי וקוליידר טריגר, כך שמערכת הפיזיקה יודעת שהוא זז, והוא יוכל לזהות מתי הוא מגיע למשטח.
אתגר
קשהלבנים שבורות מפילות לפעמים שדרוג.
- ב־
PowerUp, הוסיפוfallSpeed = 3fו־bottomY = -9f; בתוךUpdate(), הפילו במהירות fallSpeed בכל שנייה והשמידו אותו מתחת ל־bottomY. - ב־
GameManager, הוסיפוpublic GameObject[] powerUps;ו־public float dropChance = 0.15f; - ב־BrickBroken, אם
Random.value < dropChance, צרו מופע שלpowerUps[Random.Range(0, powerUps.Length)]במיקום של הלבנה.
לחצו על "שחק" ושברו לבנים: מדי פעם תיפול מהן שדרוג (בשלב הבא נתפוס אותו). לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// הפרק האחרון: חיזוקים שנופלים מלבנים שבורות.
}
כל השיעורים ביחידה Unity: משחק שובר לבנים
תרגלו בעצמכם: Unity אונליין