אוכל
שיעור 5 מתוך 14 בקורס משחק Unity: נחש בתלת־ממד של Coddy.
האוכל נמצא בתא אקראי. התאים הם מספרים שלמים, לכן בוחרים את x ואת z באמצעות גרסת int של Random.Range. כשמשתמשים במספרים שלמים, הערך המרבי אינו נכלל: הקריאה Random.Range(1, 7) מטילה קובייה ומחזירה מספר בין 1 ל־6, לעולם לא 7. כדי לכלול מספר, מבקשים מספר גדול ממנו באחד.
עם ארגומנטים מסוג float, Random.Range מחזירה כל מספר ביניהם, למשל 3.62, שאינו במרכזו של תא, ולכן הנחש לעולם לא יפגוש את האוכל. תיבה על רשת בגודל 10 על 10, עם תאים מ־0 עד 9:
int row = Random.Range(0, 10); // מ-0 עד 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);הלוח מכיל אוכל אחד בכל פעם, לכן המשחק יוצר אותו פעם אחת, ב־Start(), ומזיז אותו בכל פעם שהוא זקוק למיקום חדש. GameManager מנהל את האוכל, וקורא את גודל הלוח מתוך edge של הנחש דרך שדה snake.
אתגר
בינוניהשלם את GameManager. הסצנה מגדירה את snake כ-Snake של הראש ואת foodPrefab ככדור אדום.
- הוסף
public Snake snake;,public GameObject foodPrefab;ו-private Transform food;. - ב-
Start(), צור מופע שלfoodPrefab, שמור את ה-Transform שלו ב-foodוקרא ל-MoveFood(). - כתוב
void MoveFood(): הפונקציה מציבה אתfoodבתא אקראי, כאשר x ו-z הם כל אחד בטווח שבין-snake.edgeל-snake.edge, ו-y הוא 0.
לחץ על Play ומצא את האוכל על הלוח, ואז לחץ על Check.
נסו בעצמכם
using UnityEngine;
public class GameManager : MonoBehaviour
{
// מנהל את המשחק: האוכל, הניקוד וסיום המשחק. פרק 2 משלים את המימוש.
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.