الطوب المتين
الدرس 7 من 16 في دورة لعبة 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[] تضم رقمًا واحدًا لكل صف، بدءًا من الصف العلوي، أن يتحمل الصف العلوي ضربات أكثر من بقية الصفوف.
التحدي
متوسط- في
Brick، أضفpublic int hits = 1وpublic Color[] colors. يملأ المشهدcolorsباللون الأزرق والبرتقالي والأحمر، لما يتبقى من ضربة واحدة وضربتين وثلاث ضربات. - اكتب
public void SetHits(int count): فهي تضبطhitsوتعرض لون الطوبة المناسب له. - غيّر
Hit(): أنقص واحدًا منhits. عند وصوله إلى 0، تنكسر الطوبة وتُضاف نقاطها كما في السابق؛ وإلا فتعرض لونها الجديد فقط. - في
GameManager، أضفpublic int[] rowHits = { 2, 1, 1, 1, 1 };واجعل عدد ضربات كل طوبة جديدةrowHits[row]باستخدامSetHits.
اضغط Play، واصل ضرب طوبة برتقالية في الصف العلوي حتى تضعف، ثم اضغط Check.
جرّب بنفسك
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);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.