OnTriggerEnter
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 16 من 71.
تُنفَّذ 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.
التحدي
سهلأصلح دالة بوابة تحصيل الرسوم، ثم حصّل الرسوم من السيارات.
- اضغط على «العب»: تعرض وحدة التحكم خطأً متعلقًا بالدالة. غيّرها إلى
void OnTriggerEnter(Collider other). - داخلها، عندما يكون
other.CompareTag("Car")صحيحًا، أضفtollإلىcollectedوسجّل"Toll: " + collected. يمرّ راكب الدراجة مجانًا.
اضغط على «العب»: تعرض وحدة التحكم Toll: 3، ثم Toll: 6. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// تدفع السيارات رسوم المرور؛ وأي شيء آخر يمر مجانًا
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity