Menu
CoddyTech

اكسر

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

لا تحتوي الطوب على مكوّن Rigidbody، لكن الكرة تحتوي عليه، ويرسل Unity رسالة OnCollisionEnter إلى كلا الجسمين عند حدوث تصادم. لذا يمكن للطوبة أن تلاحظ الاصطدام بنفسها. في سكربت الطوبة، يشير gameObject إلى الطوبة، بينما يشير collision.gameObject إلى الجسم الذي اصطدم بها.

تعود النقاط إلى GameManager، والطوب نسخ من أصل جاهز (prefab). الأصل الجاهز هو مورد خارج المشهد، لذا لا يمكن لحقوله الإشارة إلى GameManager الموجود في المشهد عبر Inspector. يعيّن GameManager القيمة الثابتة GameManager.Instance لنفسه في Awake()، وبذلك يمكن لأي سكربت الوصول إليه، بما في ذلك نسخ الأصل الجاهز.

مزهرية تتحطم عندما يصطدم بها اللاعب أثناء الركض:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player")) Shatter();
}

public void Shatter()
{
    Destroy(gameObject);
}

تزيل Destroy(gameObject) المزهرية. أما Destroy(collision.gameObject) فستزيل اللاعب، وDestroy(this) تزيل السكربت فقط، وتترك المزهرية قائمة. إن إبقاء عملية التحطيم في دالتها العامة الخاصة يعني أن الشيفرات الأخرى، مثل قنبلة أو تعزيز قوة، يمكنها تحطيم المزهرية أيضًا.

challenge icon

التحدي

متوسط

تحطم الكرة الطوب وتضيف نقاطه إلى النتيجة.

  1. في GameManager، أضف int score; وpublic void BrickBroken(Brick brick)، التي تضيف brick.points إلى النتيجة.
  2. في Brick، اكتب public void Hit(): GameManager.Instance.BrickBroken(this);، ثم Destroy(gameObject);
  3. في OnCollisionEnter الخاص بـ Brick، استدعِ Hit() عندما يكون وسم الكائن هو Ball.

اضغط «العب» وأطلق الكرة: يختفي كل طوبة تصطدم بها الكرة. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

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

    // التالي: تكسر الكرة لبنة وتُضاف نقاطها إلى الرصيد.
}

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

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