اللوحة
الدرس 1 من 14 في دورة لعبة الثعبان ثلاثية الأبعاد في Unity على Coddy.
في هذه الدورة، ستبني لعبة Snake ثلاثية الأبعاد: ثعبانًا من المكعبات على لوحة 15 في 15، تُرى من الأعلى. يتحرك خليةً واحدة في كل مرة، وينعطف باستخدام مفاتيح الأسهم أو WASD، ويأكل الطعام، وينمو، ويموت عند اصطدامه بالجدران أو بذيله. يشغّله نصّان برمجيان: Snake على الرأس، وGameManager، الذي يظل فارغًا حتى يظهر الطعام في الفصل التالي.
عرض الخلايا وحدة واحدة، ومراكزها عند أعداد صحيحة: يمتد كل من x وz من -7 إلى 7، وتقع كل خلية عند y 0. لا ينزلق الثعبان أبدًا بين الخلايا. بل يقفز خلية كاملة عند كل نبضة، وهي إيقاع ثابت مثل 0.15 ثانية، ويبقى ساكنًا فيما بين النبضات.
النبضة في Unity هي مؤقّت: أضف Time.deltaTime في كل إطار، وعندما يصل المؤقّت إلى الفاصل الزمني، نفّذ الإجراء واطرح الفاصل الزمني منه. يومض هذا المنار مرة كل ثانية:
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.
اضغط تشغيل وراقب الرأس وهو يتحرك خطوة إلى اليمين. سيخرج من اللوحة مؤقتًا: ستُضاف الجدران في الدرس 4. ثم اضغط تحقّق.
جرّب بنفسك
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // الثواني بين خطوتين
private Vector3 direction = Vector3.right;
void Update()
{
// كل tick ثانية، نفّذ Step() مرة واحدة
}
void Step()
{
// حرّك الرأس خلية واحدة في اتجاه direction
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.