נווטו
שיעור 2 מתוך 14 בקורס משחק Unity: נחש בתלת־ממד של Coddy.
הנחש פונה באמצעות מקשי החצים או WASD. המצלמה מביטה מטה אל הלוח מהקצה הקדמי, ולכן למעלה במסך הוא בכיוון +z, Vector3.forward, ולמטה הוא Vector3.back. Vector3.up מצביע אל השמיים: ראש שהיה נע באמצעותו היה מתרומם מעל הלוח.
פנייה מתבצעת פעם אחת בכל לחיצה, לכן קוראים את המקשים באמצעות wasPressedThisFrame מתוך Input System. הלחיצה משנה רק את direction. Step() עדיין מזיזה את הראש, בתיקתוק הבא, כך שהנחש שומר על הקצב שלו. רובר שנע לכיוון הצד הימני של המסך כשלוחצים על D:
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
heading = Vector3.right;
}ל־Input System אין צירים במקלדת: חץ והאות שלו הם שני מקשים, שמחוברים באמצעות ||. Keyboard.current הוא null במכשיר ללא מקלדת, לכן קוראים אותו פעם אחת בראש הקטע ובודקים אותו.
אתגר
קל- הוסף את
using UnityEngine.InputSystem;אלSnake. - בתחילת
Update(), קרא אתKeyboard.current. לחיצה על החץ למעלה או על W מגדירה אתdirectionל־Vector3.forward; החץ למטה או S מגדירים אותו ל־Vector3.back; החץ שמאלה או A מגדירים אותו ל־Vector3.left; החץ ימינה או D מגדירים אותו ל־Vector3.right. - השאר את
Step()כפי שהוא: הראש מסתובב בטיק הבא.
לחץ על הפעלה, לחץ על המשחק ונווט, ואז לחץ על בדיקה.
נסו בעצמכם
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // שניות בין שני צעדים
private float timer;
private Vector3 direction = Vector3.right;
void Update()
{
timer += Time.deltaTime;
if (timer >= tick)
{
timer -= tick;
Step();
}
}
void Step()
{
transform.position += direction;
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.