Menu
CoddyTech
flag Ar iconالعربيةdown icon

المحاور

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 13 من 67.

Input.GetAxis("Horizontal") يحوّل السهمين الأيسر والأيمن (وA وD) إلى رقم واحد من -1 إلى 1: -1 لليسار، و1 لليمين، و0 عند عدم الضغط على أيٍّ منهما. ويؤدي Input.GetAxis("Vertical") الأمر نفسه للسهمين السفلي والعلوي (S وW). استدعاء واحد يحل محل عبارتي if، كما أن عصا التحكم في يد الألعاب تحرّك المحاور نفسها دون الحاجة إلى كتابة شيفرة إضافية.

لا يقفز الرقم مباشرةً إلى القيمة المطلوبة. في إعدادات Unity الافتراضية، يتحرك نحو هدفه بمعدل 3 في الثانية، لذا يستغرق الوصول إلى 1 ثلث ثانية بعد الضغط، ثم يستغرق الرجوع إلى 0 ثلث ثانية أخرى بعد تحرير الزر. يجعل هذا التدرج مركبة التحويم هذه تزداد سرعةً بسلاسة وتنزلق حتى تتوقف:

public float speed = 5f;

void Update()
{
    float h = Input.GetAxis("Horizontal");
    transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}

يتخطى Input.GetAxisRaw("Horizontal") التدرج: إذ تكون قيمته بالضبط -1 أو 0 أو 1 في كل إطار، فتبدأ الحركة وتتوقف فورًا. استخدم GetAxis للأشياء التي يُفترض أن يكون إحساسها ثقيلًا، وGetAxisRaw للتحكم السريع والدقيق. عند الضغط على السهمين معًا، تعطي كلتا الدالتين 0، لأن الاتجاهين يلغي أحدهما الآخر. (في مشروع Unity 6، ينطبق إعداد Active Input Handling المذكور في «التوجيه باستخدام المفاتيح» على المحاور أيضًا.)

challenge icon

التحدي

سهل

ينبغي أن يستجيب الروبوت بسرعة وبلا تدرّج: تحرّكه مفاتيح الأسهم (أو WASD) بسرعة speed وحدة في الثانية، يمينًا ويسارًا على طول المحور x، وأعلى وأسفل على طول المحور z. يتحرك بأقصى سرعة منذ لحظة الضغط على المفتاح، ويتوقف لحظة تحريره.

اضغط على Play، ثم انقر داخل اللعبة وقد الروبوت، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // يتحكم Horizontal في الحركة على المحور x، وVertical على المحور z، دون تدرّج في الحركة.
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس أساسيات البرمجة النصية في Unity