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.
التحدي
سهلتمر المركبات عبر بوابة الرسوم 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)
{
// تدفع السيارات رسوم المرور؛ وأي شيء آخر يمر مجانًا
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق