Menu
CoddyTech

المحاور

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

تحوّل 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

التحدي

سهل

اجعل العربة الجوالة تتحرك بسلاسة حادة، من دون تدرّج.

  1. في Update()، اقرأ float h = Input.GetAxisRaw("Horizontal"); وfloat v = Input.GetAxisRaw("Vertical");.
  2. أضف new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime) إلى transform.position.

اضغط على «العب»، وانقر داخل اللعبة وحرّك العربة باستخدام الأسهم أو WASD: ستبدأ العربة وتتوقف فورًا. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

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

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

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

تدرّب بنفسك: Playground لـ Unity