Menu
CoddyTech
flag Ar iconالعربيةdown icon

OnTriggerEnter

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 16 من 63.

يُنفَّذ void OnTriggerEnter(Collider other) مرة واحدة، في خطوة الفيزياء التي يبدأ فيها مُصادِم آخر بالتداخل مع مُحفِّز. يمثّل other ذلك المُصادِم، لذا فإن other.name وother.gameObject وother.CompareTag("Player") تخبرك بما دخل. تستدعيه Unity في النصوص البرمجية الخاصة بكلا الكائنين: على المحفّز، يكون other هو الزائر، وعلى الزائر، يكون other هو المحفّز.

يتفاعل خط النهاية هذا مع اللاعب وحده، ولا يتفاعل مع أي شيء آخر، لذا فإن الكرة التي تتدحرج عبره لا تسجّل شيئًا:

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log(other.name + " crossed the finish line");
    }
}

يجب أن تكون المعلمة من النوع Collider. إذا كُتبت بالشكل void OnTriggerEnter(Collision collision)، فسيظل النص البرمجي يُجمَّع، لأن C# تعدّها طريقة عادية. تتحقق Unity من المعلمة نفسها، وتسجّل Script error: OnTriggerEnter مع الرسالة This message parameter has to be of type: Collider، ولا تستدعي الطريقة مطلقًا. ينتمي Collision إلى OnCollisionEnter، حيث يلتقي جسمان صلبان عند نقطة تماس. لا يوجد للمحفّز تماس ليبلّغ عنه؛ بل يوجد المُصادِم فقط، لذا يحصل على Collider.

challenge icon

التحدي

سهل

تمر المركبات عبر بوابة الرسوم Gate، وهي مُشغِّل. يحركها البرنامج النصي Driver، وهو مكتمل. اكتب البرنامج النصي TollGate الخاص بالبوابة:

  • تدفع كل مركبة تحمل الوسم Car رسومًا مقدارها toll (3): أضِفها إلى collected وسجّل المجموع، Toll: 3 للسيارة الأولى، ثم Toll: 6.
  • أي شيء آخر، مثل Cyclist، يمر مجانًا ولا يسجل شيئًا.

اضغط على Play أولًا: تعرض وحدة التحكم بالفعل خطأً في البرنامج النصي يتعلق بالطريقة كما هي مكتوبة. أصلح الخطأ، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class TollGate : MonoBehaviour
{
    public int toll = 3;
    int collected;

    void OnTriggerEnter(Collision collision)
    {
        // تدفع السيارات رسوم المرور؛ وأي شيء آخر يمر مجانًا
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الفيزياء وأسلوب اللعب