اكسر
الدرس 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) تزيل السكربت فقط، وتترك المزهرية قائمة. إن إبقاء عملية التحطيم في دالتها العامة الخاصة يعني أن الشيفرات الأخرى، مثل قنبلة أو تعزيز قوة، يمكنها تحطيم المزهرية أيضًا.
التحدي
متوسطتحطم الكرة الطوب وتضيف نقاطه إلى النتيجة.
- في
GameManager، أضفint score;وpublic void BrickBroken(Brick brick)، التي تضيفbrick.pointsإلى النتيجة. - في
Brick، اكتبpublic void Hit():GameManager.Instance.BrickBroken(this);، ثمDestroy(gameObject); - في
OnCollisionEnterالخاص بـ Brick، استدعِHit()عندما يكون وسم الكائن هوBall.
اضغط «العب» وأطلق الكرة: يختفي كل طوبة تصطدم بها الكرة. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
// التالي: تكسر الكرة لبنة وتُضاف نقاطها إلى الرصيد.
}
جميع دروس لعبة Unity: كاسر الطوب
تدرّب بنفسك: Playground لـ Unity