Menu
CoddyTech

طوب متين

الدرس 7 من 19 في دورة لعبة Unity: كاسر الطوب على Coddy.

تحتاج بعض الطوب إلى أكثر من ضربة واحدة. يحتفظ كل طوب بعدد الضربات المتبقية له: فالضربة تنقص العدد بمقدار واحد، والضربة التي تجعله يصل إلى 0 فقط هي التي تكسر الطوب وتُسجّل النقاط. وحتى ذلك الحين، يتغير لون الطوب، كي يتمكن اللاعب من معرفة مدى صلابته المتبقية.

تربط مصفوفة ألوان تُملأ في Inspector العددَ بلون. العنصر 0 هو لون الطوب عند تبقّي ضربة واحدة، والعنصر 1 عند تبقّي ضربتين، لذا فإن لون العدد n هو لون العنصر n - 1. ويعمل الدرع ذو الشحنات بالطريقة نفسها:

public Color[] chargeColors;   // العنصر 0: تبقّت شحنة واحدة

void ShowCharges(int charges)
{
    GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}

تمنح قراءة material هذا المُصيّر نسخته الخاصة من المادة في المرة الأولى، لذا يتغير لون درع واحد، أو طوبة واحدة، من دون إعادة تلوين كل نسخة من الـ prefab. يحدد GameManager مدى صلابة كل طوبة جديدة: تتيح مصفوفة int[] تضم رقمًا واحدًا لكل صف، بدءًا من الصف العلوي، أن يتحمل الصف العلوي ضربات أكثر من بقية الصفوف.

challenge icon

التحدي

متوسط

تحتاج قوالب الصف العلوي إلى ضربتين.

  1. في Brick، أضف public int hits = 1; وpublic Color[] colors; (يُعيّن المشهد الألوان الأزرق والبرتقالي والأحمر) وSetHits(int count): عيّن عدد الضربات واللون colors[hits - 1].
  2. تُنقص Hit() عدد الضربات بمقدار واحد: عند وصوله إلى 0، ينكسر القالب وتُضاف نقاطه؛ وإلا، يُظهر اللون الجديد.
  3. في GameManager، أضف public int[] rowHits = { 2, 1, 1, 1, 1 }; واستدعِ brick.SetHits(rowHits[row]) لكل قالب جديد.

اضغط «العب»: يكون الصف العلوي برتقاليًا ويتحول إلى الأزرق عند ضربه. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball")) Hit();
    }

    public void Hit()
    {
        GameManager.Instance.BrickBroken(this);
        Destroy(gameObject);
    }
}

جميع دروس لعبة Unity: كاسر الطوب

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