وجّه
الدرس 2 من 14 في دورة لعبة الثعبان ثلاثية الأبعاد في Unity على Coddy.
تنعطف الأفعى باستخدام مفاتيح الأسهم أو WASD. تنظر الكاميرا إلى اللوحة من الحافة الأمامية، لذا يكون الاتجاه إلى أعلى الشاشة بمحاذاة +z، Vector3.forward، ويكون الاتجاه إلى أسفلها هو Vector3.back. يشير Vector3.up إلى السماء: فالرأس إذا تحرك بهذا الاتجاه سيرتفع عن اللوحة.
يحدث الانعطاف مرة واحدة عند كل ضغطة، لذا اقرأ المفاتيح باستخدام wasPressedThisFrame من نظام الإدخال. تغيّر الضغطة direction فقط. تظل Step() تحرّك الرأس في النبضة التالية، فتحافظ الأفعى على إيقاعها. روبوت متجول يتجه نحو يمين الشاشة عند الضغط على D:
Keyboard keyboard = Keyboard.current;
if (keyboard != null && keyboard.dKey.wasPressedThisFrame)
{
heading = Vector3.right;
}لا يحتوي نظام الإدخال على محاور للوحة المفاتيح: فمفتاح السهم ومفتاح الحرف مفتاحان منفصلان، ويربط بينهما ||. تكون Keyboard.current بقيمة null على جهاز لا يحتوي على لوحة مفاتيح، لذا اقرأها مرة واحدة في البداية وتحقق منها.
التحدي
سهل- أضف
using UnityEngine.InputSystem;إلىSnake. - في أعلى
Update()، اقرأKeyboard.current. يؤدي الضغط على السهم لأعلى أو W إلى تعيينdirectionإلىVector3.forward؛ والسهم لأسفل أو S إلىVector3.back؛ والسهم لليسار أو A إلىVector3.left؛ والسهم لليمين أو D إلىVector3.right. - اترك
Step()كما هو: يتغير اتجاه الرأس عند الخطوة التالية.
اضغط على Play، وانقر على اللعبة ووجّهها، ثم اضغط على Check.
جرّب بنفسك
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;
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.