הלוח
שיעור 1 מתוך 14 בקורס משחק Unity: נחש תלת־ממדי של Coddy.
בקורס הזה תבנו את Snake בתלת־ממד: נחש מקוביות על לוח בגודל 15 על 15, שנראה מלמעלה. הוא נע תא אחד בכל פעם, פונה באמצעות החצים או WASD, אוכל, גדל ומת על הקירות או על הזנב של עצמו. Snake מפעיל את הראש; GameManager נשאר ריק עד שהאוכל מגיע. הכפתור "שחק" מפעיל את המשחק; הכפתור "בדיקה" בודק את הקוד.
רוחב כל תא הוא יחידה אחת, והמיקומים הם מספרים שלמים מ־-7 עד 7. הנחש לעולם אינו מחליק: הוא קופץ תא שלם בכל פעימה, כלומר בקצב קבוע, ונשאר במקום בין פעימה לפעימה. הפעימה מתוזמנת באמצעות טיימר: מוסיפים את Time.deltaTime בכל פריים, וכשהוא מגיע למשך הפעימה, פועלים ומחסרים ממנו את משך הפעימה:
timer += Time.deltaTime;
if (timer >= 0.5f)
{
timer -= 0.5f;
Step();
}חיסור משך הפעימה, במקום איפוס הטיימר ל־0, שומר את החלק של הפריים שחרג ממנה, כך שהפעימה לא תסטה ותאחר. השתמשו בשדה tick, ולא במספר.
אתגר
קלגרום לראש להתקדם תא אחד בכל פעימת זמן.
- ב־
Snake, הוסףprivate float timer; - ב־
Update(), הוסף אתTime.deltaTimeל־timer; כאשרtimer >= tick, הפחת ממנו את tick וקרא ל־Step(). - ב־
Step(), הוסף אתdirectionל־transform.position.
לחץ על "שחק": הראש מתקדם ימינה, תא אחר תא, ולפי שעה יוצא מהלוח. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // שניות בין שני צעדים
private Vector3 direction = Vector3.right;
void Update()
{
// כל tick שניות, בצע Step() פעם אחת
}
void Step()
{
// הזז את הראש תא אחד בכיוון direction
}
}
כל השיעורים ביחידה משחק Unity: נחש תלת־ממדי
תרגלו בעצמכם: Unity אונליין