Menu
CoddyTech

العدّاء

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

يبني هذا الفصل لعبة صغيرة بعنوان «تجنّب الكتل». تقود عدّاءً على طول مسار بينما تسقط الكتل من السماء، وتنهي لمسة واحدة الجولة. تتكوّن اللعبة كلها من نص برمجي واحد، Runner، يكتسب ميزة في كل درس: التوجيه، والكتل الساقطة، وإزالتها، والاصطدام، والنتيجة.

الميزة الأولى هي التوجيه الذي يبقيك على المسار، باستخدام Mathf.Clamp(value, min, max) من لعبة «التقط النجمة»: فهي تُرجع min عندما تكون القيمة أقل من النطاق، وmax عندما تكون أعلى منه، والقيمة نفسها فيما عدا ذلك. موضع استخدام التقييد مهم. يمتلئ مقياس الشحن هذا أثناء الضغط على مفتاح المسافة، ويفرغ عند عدم الضغط عليه، ولا يخرج أبدًا عن النطاق من 0 إلى 10:

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

يأتي التقييد بعد التغيير. فإذا قيّدت القيمة أولًا، فقد تنتهي الإطار متجاوزةً الحد بخطوة واحدة، وسيُرسم الشريط انطلاقًا من تلك القيمة. كذلك تُرجع Mathf.Clamp رقمًا جديدًا بدلًا من تغيير المتغير الذي تمرّره إليها، لذا أسند النتيجة إلى المتغير مجددًا.

challenge icon

التحدي

متوسط

ابدأ لعبة Dodge the Blocks: وجّه العداء على طول مساره.

  1. في Update()، انسخ transform.position إلى Vector3 p، وأضف Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime إلى p.x. يحرك المحور الخام العداء بالسرعة القصوى فورًا.
  2. عيّن p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);، ثم transform.position = p;.

اضغط على «العب»، ثم انقر على اللعبة واركض إلى كلا الطرفين: سيتوقف العداء عند الحافتين. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // تحرّك على طول المحور x باستخدام مفاتيح الأسهم، ثم أبقِ x داخل المسار
    }
}

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

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