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